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 как только данные этой переменной помещены в ревербератор.


 
Навигация

[индекс] [предыдущая] [следующая]


cSounds.com

[+] На главную

Руководство по Csound

[+] init

Прослушать

[+] Toot09.mp3 89k

 
Toot09.orc

sr        =         44100kr        =         4410ksmps     =         10nchnls    =         2                        ; стерео выходgarvbsig  init      0                        ; инициализируем значением 0 глобальную переменную a-типа          instr 9idur      =         p3iamp      =         p4iskiptime =         p5iattack   =         p6irelease  =         p7ibalance  =         p8                       ; 1 = слева, .5 = центр, 0 = справаirvbgain  =         p9kamp      linen     iamp, iattack, idur, ireleaseasig      soundin   "hellorcb.aif", iskiptimearampsig  =         kamp * asig          outs      arampsig * ibalance, arampsig * (1 - ibalance)garvbsig  =         garvbsig + arampsig * irvbgain          endin          instr 99irvbtime  =         p4asig      reverb    garvbsig,  irvbtime      ; помещаем глобальные сигнал в ревербератор          outs      asig, asiggarvbsig  =         0                        ; затем очищаем его          endin


 
В партитуре мы включаем глобальную реверберацию во время 0 и оставляем ее, пока не пройдет irvbtime после последней ноты.
 
Toot09.sco

;инстр нач длит врревi99  0    10   2.2;инс нач длит  амп проп атк фил бал(0-1)     ревмножi9   0    1.2  .5   0    .02  .1   1              .2i9   2    1.4  .5   0    .03  .1   0              .3i9   3.5  2.28 .5   0    .9   .1   .5             .1i9   4.5  2.28 .5   0    1.2  .1   0              .2i9   5    2.28 .5   0    .2   .1   1              .3i9   9    2.28 .7   0    .1   .1   .5             .03

Рисунок 9: Глобальная стерео реверберация

[+]Какие-либо вопросы, комментарии или предложения? Пожалуйста, дайте нам знать:
support@csounds.com