我是泛音/超级对撞机的新手。我知道声音是如何物理形成的。但是,我不了解泛音的声音生成功能内部的魔力。
假设我有一个基本的声音:
(definst sin-wave [freq 440 attack 0.01 sustain 0.4 release 0.1 vol 0.4]
(* (env-gen (lin-env attack sustain release) 1 1 0 1 FREE)
(+ (sin-osc freq)
(sin-osc (* freq 2))
(sin-osc (* freq 4)))
vol))
我在这里了解了声音包络,正弦波,频率,音量的ASR周期。它们描述了声音随时间变化的幅度。我不明白的是时间。由于此处所有功能的输入中都没有时间,因此如何控制诸如回声之类的东西以及其他很酷的效果?
如果要编写自己的sin-osc函数,如何在特定时间点指定声音的幅度?假设我的sin-osc必须设置为在周期的1/4时输出达到幅度为1.0的峰值,我可以使用什么接口进行控制?
不知道这一点,所有泛音合成器对我来说都没有意义,它们看起来像是具有未知副作用的奇怪功能。
最佳答案
泛音不会随时间指定每个信号的单独样本或形状,它实际上只是超级对撞机服务器的接口(定义了交互协议,其中超级对撞机语言是该服务器的规范客户端,泛音是另一种)。因此,所有在后台执行的泛音都在向超级对撞机服务器发送有关如何构造合成图的信号。超级对撞机服务器实际上是根据在任何给定时间播放的合成器的定义来计算将哪些样本发送到dac的东西。这就是为什么给您提供原始合成器元素(如正弦振荡器,方波和滤波器)的原因:在服务器上调用这些元素以实际计算样本。
关于clojure - Clojure泛音生成器中的副作用界面的深入说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17353781/