Native Instruments Reaktor синтез на трионообразни, квадратни, триъгълни и синусоидални вълни

Статията е посветена на синтеза на четири основни звукови вълни: трион (трион), квадрат (квадрат), триъгълник (триъгълник) и синусоидална (синус). За да работите, ще ви трябва софтуерната среда за обработка на звукReaktorот Native Instruments. Демо версията може да бъде изтеглена от официалния уебсайт на Native Instruments (времето е 30 минути, запазването на проекта е деактивирано). Информацията ще бъде полезна не само за собствениците на този софтуер, но и за тези, които се интересуват от програмиране и обработка на звук като цяло. Превъртане прилично екранни снимки, бъдете внимателни, трафик!

Предполага се, че преди да започнете, сте се запознали с ръководството, основните модули и интерфейса на Reaktor. В програмата са възможни две нива на работа:Primary Level(основно) иCore Level(вътрешно). Разликите говорят сами за себе си – на ниво Primary всички решения вече са готови (генератори на вълни, обвивки на амплитудата, ефекти и т.н.), докато на ниво Core е възможно да създадете всичко сами. Core Level е собствен език за програмиране, създаден от NI. Той съдържа същите оператори, цикли и променливи, както в други среди за програмиране.

Знаем, че цифровото аудио е различно от аналоговото. Аналоговият сигнал е непрекъснат, за разлика от цифровия сигнал, така че за преобразуване на първия във втория се използва такава концепция като честотата на дискретизацияSR.R(Sample Rate). Честотата на дискретизация (или честота на дискретизация) е броят на пробите в секунда, необходими за преобразуване на непрекъснат сигнал в дискретен. Съответно, колкото по-висока е честотата на дискретизация, толкова по-богат е спектърът на дискретния сигнал. INReaktor'e за удобство на работа има и такова нещо като събитие за честота на дискретизацияSR.C(Частота на дискретизация): SR.C = 1/SR.R.

Ако имаме стандартна честота на дискретизация от 44100 Hz, това означава, че събитието за честота на дискретизация се случва 44100 пъти за 1 секунда. По този начин Reaktor разпознава две нива на сигнали - звуков сигнал (Audio) и сигнал за събитие (Event). С първия всичко е ясно, а вторият тип сигнал може да се сравни със светкавица, която се появява при стартиране на фойерверк. Сигналът за събитието не звучи по никакъв начин - това е просто цифра със стойност в определен период от време, следователно SR.C е събитие със стойност 0.

трионна вълна

Синтезът в Reaktor е най-лесно да се започне с трионна вълна (трион). Факт е, че нейната фаза е основна за конструирането на фазите на всички останали вълни.

От фигурата става ясно какво е най-общо звуковата вълна и се характеризира с два основни показателя -фазаиамплитуда. Това е функция с повтарящ се цикъл (фаза с определена честота), която в този случай приема стойности от 0 до 1 (амплитуда). Фазовата честота може да бъде изразена както в херци, така и в височина. Височината се измерва в тонове и приема стойности от 0 до 127. Например нотата C (до) на 3-та октава съответства на тон 48, който е приблизително равен на 130,8137 Hz. Амплитудата може също да бъде представена като числова стойност (1) или в децибели (0 dB). На практика трябва да получим някаква стойност от 0 до 1 всеки път, когато възникне събитие за честота на дискретизация, в съответствие с функцията, показана на фигурата. Използването на готови решения в Реактор се наказва строго по неписани правила.

* —за работа използвах новата версия на Reaktor, откакто станахсобственик на нова лицензирана бета версия след закупуване на старата, но по отношение на интерфейса на нивата Core и Primary не се различава от предишната.

Като начало трябва да създадем нов проект (Файл - Нов ансамбъл). Екранните снимки са представени в съответствие с дълбочината на отвореното ниво на проекта. Първата екранна снимка показва основния инструмент, свързан към изходите на аудио картата (изглежда малко по-различно в старата версия). Втората екранна снимка вече показва вътрешността на основния инструмент (първично ниво). Всички модули могат да бъдат извикани с десен бутон на мишката. Модулите Note Pitch и Gate, разположени в секцията Built-in Module - MIDI In, отговарят за получаването на MIDI сигнал от клавиатурата или MIDI контролера, т.е. Забележка Pitch приема стойности от 0 до 127 и отговаря за височината на звука, а Gate - от 0 до 1 и отговаря за амплитудата на звука (обикновено от 0 до 0,6299 на клавиатурата). Вътре в модула Saw Waveform има непрекъсната фаза на зъбната вълна, така че ние използваме модула Multiply (умножаване) във връзка с модула Gate, така че сигналът да е под контрола на MIDI устройството и да не звучи непрекъснато. Третият скрийншот е най-интересен. тук се реализира фазата на вълната. Първата част от структурата е преобразуването на височината във фазовата честота. Изчислението се извършва по следната формула:

Помислете за структурата на конкретен пример. При стъпка 48 нашият цикъл, който започва със събитието SR.C за честота на дискретизация, получава следните данни: F = 130,8128, 2/SR.R = 0,000045351 (при стандартна честота на дискретизация от 441000 Hz) - честота на Найкуист (честота, равна на половината от честотата на дискретизация), F * честота на Найкуист = 0,0059325.

Ако стойността, влизаща в модула за сума (+), надвишава единица, тя се изпраща към модула за разлика, където се изважда от негомерна единица. По този начин нашата функция приема строг диапазон от 0 до 1. След това стойността се съхранява в модула памет (Write) и отново влиза в модула за четене на паметта (Read), където при следващото събитие на честотата на дискретизация се добавя към предишната стойност. Ако свържем осцилоскоп (модул Micro Scope) към изхода на модула Core (Phase), ще получим точно същата функция като в графиката на трионообразна вълна. Със следващия цикъл имаме: 0,0059325 + 0,0059325 = 0,011865, 0,011865 + 0,0059325 = 0,0177975 и т.н.

* —важна забележка: статията пропуска въпроса за антиалиасинг (изглаждане на звука), т.к. това е тема за отделни дискусии

квадратна вълна

За разлика от трионообразната вълна, квадратната вълна приема само стойности, равни на 0 или 1. Не е трудно да се познае как да се синтезира тази вълна, като се използва фазата на предишната: ако фазовата стойност на трионообразната вълна е по-голяма от 0,5, тогава фазовата стойност на квадратната вълна е 1, ако е по-малка, 0.

триъгълна вълна

За да преобразувате фазата на зъбна вълна в триъгълна, е необходимо да трансформирате първата, така че да приеме отрицателни стойности, и след това да вземете нейния модул. Всичко е съвсем просто - изваждаме 0,5 от фазовите стойности на зъбната вълна, получавайки диапазон от стойности от -0,5 до 0,5, вземаме абсолютната стойност на този диапазон и умножаваме по 2, връщайки се към диапазона от стойности от 0 до 1. Трансформациите се извършват вътре в същия модул Core Square.

синусоида

Със синтеза на синусоида нещата са малко по-сложни. Факт е, че функцията синус е непрекъсната и периодична с основен период от 2π, за разлика от други функции. Едно решение е да се разшири синусовата функция с помощта на серията Тейлър, т.е. превръщането му в безкраен сбор от степенни функции.Изглежда така:

Преобразувайки фазата на зъбната вълна в 2π и премествайки функцията към трансформация, получаваме следната картина в Reaktor:

В тази схема сумите 6, 120, 5040 и 362880 са факториели на числата 3!, 5!, 7! и 9! съответно x е шината Quick Bus, използвана за удобство (добавена чрез извикване на допълнително меню), а числовите преобразувания в края на формулата са преобразуване във функции в обичайния диапазон от 0 до 1.

Използвани ресурси

Други ресурси (включително моите проекти) - на английски:

Моите теми в официалния форум на Reaktor: