2010-07-31 40 views
3

好吧,这个可能会离开左边的区域,但我要试试。以编程方式创建Pad的声音

垫是一种环境电子声音,这种'嗡嗡'。类似 this

如何在代码中生成此代码?使用Processing,OpenFrameworks,C,Objective-C或C++。请记住,我没有编程这么久。

如果这会导致答案,我将非常感动!

好的...走吧!

回答

5

我从来没有听说过在这里应用的术语“衬垫”,但它听起来像合成器官的声音,演奏主要和弦。作为一个开始,为了表示单个音符,您可以在音符的基本频率(比如440Hz,如果我们正在谈论一个A专业)生成正弦波,并且接下来的几个倍数(880,1760) ,3520)并将它们与一些(递减的)权重相加。然后添加以相同方式渲染的和弦(C#和E)的其他音符。

如果这听起来对您有用至今,我可以根据需要进行扩展。编辑:通过“一些(递减)权重”,我的意思是增加倍音倍数,例如,

F = 440; // Hz 
tone[t] = A * sin(t/F) + B * sin(t/(2*F)) + C * sin(t/(3*F)); // + etc, perhaps 

哪里,或许,

A = 1.0; 
B = 1.0/2.0; 
C = 1.0/3.0; 

或一些这样的事情。对于ADSR滤波器(看起来如此),您将在您选择的“攻击”期间将生成的波形乘以从0增加到1的放大倍数,然后在“衰减”期间下降到某个数值你选择(也许是0.7),然后当你“释放”持续音符时线性下降到0。

对于回声/混响,您可以稍微延迟地将波形加回到自身中。

D = 4410; // 10 msec at 44.1 kHz., as an example value 
tone[t] += 0.5 * tone[t-D]; 
+0

是的,这是非常有用的。我已经在处理中实施它,并且它开始听起来不错。一些事情:1.你的意思是“一些减重”? 2.我听说长时间的攻击,释放阶段和大声的延迟也会有所帮助,但不知道从哪里开始编程。有什么建议? – 2010-07-31 16:29:16

2

我不能帮你出具体的代码示例,但我会说一些类似于你这个声音样本可以与FM(调频)合成来完成。在你编写任何代码之前,你可能想要从互联网上下载任何软件FM合成器(有许多免费的,有些作为独立的应用程序,有些作为VST插件)并且做一点实验,如果你可以的话产生你想要的声音,写出相应的代码。 (到那个时候,你很可能会知道你需要什么样的振荡器,频率等组合)。

2

如果你在声音编程方面没有完成,你应该看看java的声音,因为它很容易学习和使用。我知道你已经标记了C *,但我不知道是否有这样简单的API等。

创建一个声音基本上是grumdrig说的,你“只是”必须以这样一种方式结合不同的波,你喜欢这种声音。;-)