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        =         44100

kr        =         4410

ksmps     =         10

nchnls    =         2                        ; стерео выход



garvbsig  init      0                        ; инициализируем значением 0 глобальную переменную a-типа



          instr 9

idur      =         p3

iamp      =         p4

iskiptime =         p5

iattack   =         p6

irelease  =         p7

ibalance  =         p8                       ; 1 = слева, .5 = центр, 0 = справа

irvbgain  =         p9



kamp      linen     iamp, iattack, idur, irelease

asig      soundin   "hellorcb.aif", iskiptime

arampsig  =         kamp * asig

          outs      arampsig * ibalance, arampsig * (1 - ibalance)

garvbsig  =         garvbsig + arampsig * irvbgain

          endin





          instr 99

irvbtime  =         p4

asig      reverb    garvbsig,  irvbtime      ; помещаем глобальные сигнал в ревербератор

          outs      asig, asig

garvbsig  =         0                        ; затем очищаем его

          endin


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

;инстр нач длит вррев

i99  0    10   2.2



;инс нач длит  амп проп атк фил бал(0-1)     ревмнож

i9   0    1.2  .5   0    .02  .1   1              .2

i9   2    1.4  .5   0    .03  .1   0              .3

i9   3.5  2.28 .5   0    .9   .1   .5             .1

i9   4.5  2.28 .5   0    1.2  .1   0              .2

i9   5    2.28 .5   0    .2   .1   1              .3

i9   9    2.28 .7   0    .1   .1   .5             .03

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

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