Я новичок в обертонах/суперколлайдерах. Я знаю, как звук формируется физически. Однако я не понимаю волшебства внутри звукогенерирующих функций обертонов.
Допустим, у меня есть базовый звук:
(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, какой интерфейс я могу использовать для управления им?
Не зная этого, все звуковые синтезаторные генераторы в обертонах для меня не имеют смысла, и они выглядят как странные функции с неизвестными побочными эффектами.