私はこの単純なコードを持っています。私は配列の配列を保持しようとしています。これはFFTオーディオデータだけです。私はこれがjavascriptの問題だと思うが、何が間違っているのか分からない。 fft.analyze()は数値の配列を返します。配列を配列スペクトルにプッシュした後、スペクトル内のすべての値は実際の値ではなく0です。 array.splice(0)を使用するとディープコピーとみなされます。誰でもここで間違っていることを教えてもらえますか?javascript/p5jsで配列をコピーすると、すべての値が0になりますか?
var fft,mic;
function setup(){
var myCanvas = createCanvas(800,800);
fft = new p5.FFT();
ellipse(400,400,50,50)
colorMode(HSB,100)
spectrums=[]
mic = new p5.AudioIn();
mic.start();
fft = new p5.FFT();
fft.setInput(mic);
}
function draw() {
background(255)
s = fft.analyze(16)
for(si=0;si<s.length;si++){
fill(s[si]%100,100,100)
rect(si*10,0,si*10,s[si])
}
spectrums.push(s.splice(0))
if(spectrums.length > 5){
spectrums.splice(-1,1)
}
console.log(spectrums[0][0]) //this prints 0 always
for(si=0;si<spectrums[0].length;si++){
fill(spectrums[0][si]%100,100,100)
rect(si*10,400,si*10,spectrums[0][si])
}
}
あなたがゼロに配列のすべての値を変えたい場合は、arr.mapを行うことができ、あなたが投稿した場合(C => 0) – user93
あなたはより良い運を持っていますこのコードの代わりに[mcve]を使用します。これはハードウェア入力に依存し、実行するのが非常に難しくなります。ハードコーディングされた配列を使って、実行しようとしていることを正確に示す小さなサンプルプログラムを作成してみてください。 –
'splice'!=' slice' – WilomGfx