cSounds.com - тъюториалы – Тъюториал по дизайну инструментов Тъюториал 9: Глобальная стерео-реверберация В предыдущем примере Вы, возможно, заметили, что полученный посредством soundin сигнал "обрубается" на конце каждой ноты, поскольку генератор reverb помещен непосредственно внутрь инструмента. Лучше было бы создать сопутствующий инструмент, осуществляющий глобальную реверберацию, и передать ему исходный сигнал. Давайте также используем в нашем примере эффект стерео.
Переменные являются именованными ячейками памяти, в которых хранятся числа. В Csound'е переменные могут быть или локальными или глобальными, доступны постоянно и могут изменяться с одной из четырех частот – установочной, i-частотой, k-частотой или a-частотой.
Локальные переменные (начинающиеся с букв p, i, k или a) доступны лишь внутри конкретного инструмента. Любой другой инструмент не может прочитать или изменить их.
Глобальные переменные доступны для всех инструментов. Для этих переменных допустимы три из четырех типов переменных (i, k и a), но этим буквам должна предшествовать буква "g", означающая, что переменная "глобальная". Глобальные переменные используются для "трансляции" общих значений, для коммуникации между инструментами и для передачи звука от одного инструмента к другому.
Осуществляющий реверберацию instr 99 (приведенный ниже), получает входной сигнал от instr 9 через глобальную переменную a-типа garvbsig. Так как instr 9 добавляет свой сигнал к тому, что уже содержится в глобальной переменной, несколько копий instr 9 могут пересылать данные без их потери. При таком аккумулировании сигналов необходимо очищать переменную garvbsig перед началом каждого k-частотного прохода в любом активном инструменте. Это достигается вначале с помощью команды init в заголовке оркестра, затем инструменту, осуществляющему реверберацию, присваивается номер больший, чем у любого другого (проход компилятора по инструментам осуществляется в порядке возрастания их номеров) и, наконец, очисткой (обнулением) переменной garvbsig внутри instr 99 как только данные этой переменной помещены в ревербератор.
|
|
|
В партитуре мы включаем глобальную реверберацию во время 0 и оставляем ее, пока не пройдет irvbtime после последней ноты. |
|