0

我正在阅读 Mark Owen 的“实用信号处理”,第二章中的一个练习说“创建一个向量,其中包含 32kHz 的 400Hz 正弦波的几秒样本。”(问题 2.3

由于这本书不认可任何一种技术,我试图在 Supercollider 中做到这一点:

“Pbind(\freq, Pseq([400,400,400,400,400,400,400,400,400,400,]), \dur, 0.15;).play;"

但是我有两个问题:如何在模式播放期间消除音符之间的间隙以及如何以特定的采样率生成模式中的音调?

谢谢!

4

1 回答 1

2

听起来你在“错误”的水平上工作。使用 Pbind 是非常高级的,指定音乐事件的模式,而作者可能希望您考虑生成单个音频数据样本所涉及的数学。

由于这是给读者的练习,我不会给出完整的答案,但是:SuperCollidersin()和许多其他语言一样有一个运算符。您可以生成一个值列表,然后sin()通过例如应用

     sin([0,1,2,3,4,5])

或者

     sin((0..100))

这些都是简单的例子;他们没有得到您指定的频率或采样率或持续时间。

该问题似乎并没有要求您播放结果,但如果您想这样做,您可以通过将计算的音频加载到缓冲区来做到这一点:

 x = sin((0..1000));
 b = Buffer.sendCollection(s, x);
 b.play
于 2016-10-03T20:25:27.260 回答