我花了几个小时的时间来学习我的新手处理知识,试图将处理程序变成学生的在线同等程序。我正在寻求群众的帮助!
最大的问题是processing.js或p5.js中没有Minim库。换句话说,我希望下面的程序能够在 OpenProcessing.org 中运行。音频处理程序允许学生
我感觉我已经广泛梳理了http://processingjs.org/reference/和 https://p5js.org/reference/#/libraries/p5.sound无济于事。
重要的事情发生在 myEffect
类中。 process()
函数将一组样本读入内存并一次处理每个样本。我想在 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);
}
}
感谢您提供的任何指导!
最佳答案
您将无法直接将这一行从Processing 逐行转换为Processing.js 或P5.js,就像您发现Minim 没有JavaScript 版本一样。 (嗯,有,但是已经很旧了。)
(退一步讲,您永远不应该尝试通过逐行将代码从一种语言翻译为另一种语言。)
相反,您需要做的是代码的作用,然后弄清楚如何用您的目标语言(在您的例子中是 JavaScript)来做到这一点。
我首先会在谷歌上搜索“p5.js sound”或“processing.js sound”或“JavaScript sound”。同样,您的目标是弄清楚如何在 JavaScript 中播放声音,而不是逐行重新创建 Minim。
另请参阅:
关于javascript - 操作声音 p5.js 或processing.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759549/