我已經花了數小時與我的新手處理知識嘗試將處理程序變成在線等同物的學生。我在尋求羣衆的幫助!操作聲音p5.js或processing.js
最大的問題是processing.js或p5.js中沒有Minim庫。換句話說,我希望下面的程序在OpenProcessing.org上工作。音頻處理程序允許學生
我覺得我已經通過http://processingjs.org/reference/和https://p5js.org/reference/#/libraries/p5.sound廣泛梳理無濟於事。
大事情發生在myEffect
類。函數將樣本數組讀入內存,並一次一個地處理它們中的每一個。我想在openprocessing.org中複製這個功能。該學生改變該生產線是
newSamp[j] = samp[j];
喜歡的東西
newSamp[j] = samp[j] * 2;
,然後解釋它是如何改變的聲音。
這裏是程序在原加工形式:
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
Minim minim;
AudioPlayer song;
float[] oldSamp;
String songFileName = "BasicDrum.mp3";
final int BUFFERSIZE = 4096;
void setup()
{
size(640,200);
stroke(255);
textSize(32);
minim = new Minim(this);
song = minim.loadFile(songFileName, BUFFERSIZE);
song.addEffect(new MyEffect());
oldSamp = new float[song.bufferSize()];
song.play();
}
void draw()
{
/* Draw the Visualizer */
background(0);
fill(#BBBB00);
text("Mono Channel", 50, 50);
for (int i = 0; i < song.bufferSize() - 1; i++)
{
line(i, 100 + song.left.get(i)*100, i+1, 100 +song.left.get(i+1)*100);
}
}
class MyEffect implements AudioEffect
{
void process(float[] samp)
{
float[] newSamp = samp.clone(); //create a copy to alter
int j = 0;
while (j < newSamp.length)
{
newSamp[j] = samp[j]; /* HERE is where we alter each sample */
j = j + 1;
}
oldSamp = samp.clone(); //save a copy of this for later
// we have to copy the values back into samp for this to work
arrayCopy(newSamp, samp);
}
void process(float[] left, float[] right)
//stereo has left and right channels
{
float[] average = left;
for (int i = 0; i < left.length; i++)
{
average[i] = (left[i] + right[i])/2.0;
}
process(average);
}
}
感謝您能提供任何指導!
。從[p5.js聲音示例]開始(https://p5js.org/examples/)。注意p5的聲音有一個'buffer'屬性,它是一個[AudioBuffer](https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer)實例,可以用來操縱這些樣本,類似於Processing AudioEffect的功能如何。 –
我在參考中找不到'buffer'屬性。我只能找到'reverseBuffer'(https://p5js.org/reference/#/p5.SoundFile/reverseBuffer)。你能指出我在哪裏找到'buffer'屬性嗎? –
它可能不在文檔中,但您應該在瀏覽器中使用JS控制檯。例如,鍵入p5.SoundFile實例的名稱並查看它的屬性。'buffer'應該在那裏,你應該能夠擴展它的屬性。 –