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