W przypadku skokowej modulacji losowej wybieraj nową wartość w regularnych odstępach czasu i utrzymuj ją do kolejnej aktualizacji. Ten sposób pracy w REAPER wykorzystuje syntetyczny ton i niewielki, niestandardowy efekt JSFX wzmocnienia, aby tworzyć losowe skoki głośności o określonym czasie trwania i zakresie.

Zakres zadania jest celowo wąski: sprawić, by poziom jednego podtrzymywanego tonu zmieniał się nieprzewidywalnie, bez ciągłego przechodzenia między poziomami. Metoda automatyczna wymaga jednorazowego skopiowania kompletnego programu efektu. W dalszej części opisano, jak utworzyć edytowalną, powtarzalną schodkową zmianę za pomocą natywnych obwiedni automatyzacji REAPER.

Co sprawia, że modulacja losowa jest skokowa?

O wyniku decydują trzy rzeczy: kiedy zmienia się wartość, jaka nowa wartość zostaje wybrana i w jaki sposób efekt przechodzi do tej wartości. W tym przypadku zmiany następują regularnie, poziom jest pseudolosowy, a przejście jest natychmiastowe. Między aktualizacjami wzmocnienie pozostaje stałe.

Przykładowa sekwencja może utrzymywać poziom −15 dB przez 250 milisekund, przeskoczyć do −9 dB na kolejne 250 milisekund, a następnie do −18 dB. Te liczby ilustrują działanie; nie są pomiarami ani gwarantowaną sekwencją wyjściową.

System modulacji parametrów REAPER udostępnia LFO z elementami sterującymi Speed, Strength, Phase i kierunkiem. System automatyzacji osobno udostępnia punkty obwiedni Square. To różne narzędzia: szybkość LFO steruje tempem modulacji, a odcinki obwiedni o kształcie prostokątnym określają wartości utrzymywane między punktami. Zobacz rozdziały 18 i 19 w Up and Running: A REAPER User Guide.

Poniższy niestandardowy efekt jawnie określa w kodzie sposób utrzymywania wartości. Przetwarza bezpośrednio wzmocnienie stereo; nie konfiguruje uniwersalnego źródła skokowych wartości losowych dla każdego innego parametru wtyczki.

Przygotuj podtrzymywany syntetyczny ton

Zacznij od pustego projektu REAPER z jedną ścieżką. Dodaj ReaSynth do łańcucha FX tej ścieżki. Z dokumentacji REAPER wynika, że ReaSynth to syntezator, na którym można grać za pomocą elementów MIDI, więc nagranie ani zewnętrzny plik dźwiękowy nie są potrzebne. Jego elementy sterujące obejmują głośność wyjściową, podtrzymanie i miksowanie przebiegów. The REAPER Cockos Effects Summary Guide, ReaSynth.

Użyj następujących prostych ustawień źródła:

  1. Ustaw tempo projektu na 120 BPM i wybierz czterotaktowy odcinek w metrum 4/4.
  2. Zaznacz ścieżkę i utwórz zaznaczenie czasu obejmujące te cztery takty.
  3. Wybierz Insert → New MIDI Item.
  4. Kliknij dwukrotnie element MIDI, aby otworzyć edytor MIDI. Narysuj jedną nutę i przeciągnij jej prawą krawędź na całą długość elementu.
  5. W ReaSynth ustaw początkową wartość Volume na około −12 dB, a Sustain na 0 dB. Pozostaw Square mix, Sawtooth mix i Triangle mix na zerze, aby uzyskać prosty ton.

Tworzenie i edytowanie elementów MIDI opisano w rozdziale 13 REAPER User Guide. Podane tu tempo, czas trwania i poziomy to przykładowe ustawienia, a nie wymagania aplikacji.

Odtwórz ten fragment przed dodaniem modulacji. Upewnij się, że ścieżka wytwarza podtrzymywany ton. Jeśli dźwięk urywa się zbyt wcześnie, sprawdź długość nuty i ustawienie podtrzymania. Zmiany wzmocnienia łatwiej będzie ocenić, gdy samo źródło utrzymuje stały poziom.

Dodaj efekt, który utrzymuje każdy losowy poziom

JSFX to wbudowany w REAPER system efektów zapisanych w postaci programów tekstowych. REAPER kompiluje je podczas wczytywania; ten przykład nie wymaga zewnętrznej biblioteki programistycznej. Jego struktura jest zgodna z oficjalnym JSFX Programming reference.

Otwórz View → FX Browser. W menu FX przeglądarki wybierz Create new JS FX i nadaj efektowi odrębną nazwę, na przykład Stepped Random Gain. Otwórz jego kod źródłowy za pomocą Edit JS FX, zastąp początkową zawartość całym poniższym programem i zapisz go. Opis tych poleceń tworzenia i edycji znajduje się w sekcji 16.16 REAPER User Guide.

desc:Stepped Random Gain
slider1:250<20,2000,1>Step duration (ms)
slider2:-18<-60,0,0.1>Level endpoint A (dB)
slider3:-6<-60,0,0.1>Level endpoint B (dB)
in_pin:Left
in_pin:Right
out_pin:Left
out_pin:Right

@init
remaining = 0;
gain = 1;

@slider
interval_samples = max(1, floor(srate * slider1 / 1000 + 0.5));
low_db = min(slider2, slider3);
high_db = max(slider2, slider3);
remaining = 0;

@sample
remaining <= 0 ? (
  level_db = low_db + rand(1) * (high_db - low_db);
  gain = 10 ^ (level_db / 20);
  remaining = interval_samples;
);

spl0 *= gain;
spl1 *= gain;
remaining -= 1;

To kompletny stereofoniczny efekt audio, a nie fragment kodu. Dodaj go za ReaSynth w łańcuchu FX ścieżki. Jeśli nazwa efektu nie jest widoczna, wyczyść filtr wyszukiwania w przeglądarce FX.

Program używa rand(1), aby uzyskać wartość pseudolosową, a następnie mapuje ją na zakres między dwoma punktami końcowymi w dB. Składnia warunkowa tego języka, operator potęgowania i funkcja losowa są opisane w JSFX Programming Reference — Language Essentials.

Licznik korzysta z srate, czyli bieżącej częstotliwości próbkowania REAPER. Każda próbka przechodzi przez to samo zapisane wzmocnienie do chwili wyzerowania licznika. Oba kanały otrzymują to samo wzmocnienie, więc efekt nie losuje ich poziomów niezależnie. REAPER opisuje srate, spl0 i spl1 w JSFX Programming Reference — Special Variables.

Program sprawdzono pod kątem zgodności z tymi materiałami. Obliczenia licznika zweryfikowano również osobno dla częstotliwości 44,1 i 48 kHz; na potrzeby tego artykułu nie uruchomiono JSFX w REAPER.

Ustaw czas trwania skoku i zakres poziomu

Zacznij od ustawienia Step duration (ms) na 250, Level endpoint A (dB) na −18, a Level endpoint B (dB) na −6. Te ustawienia wybierają nową wartość tłumienia cztery razy na sekundę. Każda wybrana wartość utrzymuje się przez cały interwał, chyba że zmienisz ustawienie.

Punkty końcowe określają wzmocnienie stosowane za syntezatorem. Nie są to docelowe odczyty miernika wyjściowego. Na przykład −6 dB odpowiada mnożnikowi próbki około 0,501, a −18 dB — około 0,126. Sygnał źródłowy i dalsze przetwarzanie ścieżki nadal wpływają na poziom wyjściowy.

Oczekiwane działanie Przykładowe ustawienie Co się zmienia
Wolne, wyraźne poziomy 1,000 ms Jeden nowy poziom na sekundę
Umiarkowane skoki 250 ms Cztery nowe poziomy na sekundę
Szybsze skoki 125 ms Osiem nowych poziomów na sekundę
Mniejsze różnice poziomów Punkty końcowe −9 i −6 dB Węższy zakres wyboru
Stałe tłumienie do porównania Oba punkty końcowe ustawione na −6 dB Każdy wybór daje to samo wzmocnienie

Przy tempie 120 BPM ósemka trwa 250 milisekund: 60 sekund podzielone przez 120 uderzeń, a następnie przez dwa. To przykładowe obliczenie czasu. Dostarczony efekt używa milisekund, nie uwzględnia zmian tempa ani nie synchronizuje skoków z siatką muzyczną projektu.

Punkty końcowe można wprowadzić w dowolnej kolejności, ponieważ program sam je sortuje. Zmiana dowolnego suwaka rozpoczyna nowy interwał przy następnej przetwarzanej próbce. Poziom losowy jest utrzymywany bez interpolacji, choć dwa kolejne wybory mogą przypadkiem być do siebie zbliżone.

Zamiast tego utwórz edytowalną, powtarzalną schodkową zmianę

Użyj obwiedni automatyzacji, jeśli chcesz uzyskać dokładne wartości w dokładnych pozycjach osi czasu. To również natywna, obsługiwana metoda wprowadzania skokowych zmian do udostępnionego parametru efektu. Obwiednie parametrów i kształt punktu Square opisano w rozdziale 18 User Guide REAPER.

Aby utworzyć stały wzorzec głośności, najpierw wyłącz niestandardowy JSFX. Otwórz elementy sterujące obwiednią ścieżki i wyświetl obwiednię Volume. Podczas ręcznej edycji pozostaw ścieżkę w trybie Trim/Read.

Dodaj punkty co 250 milisekund, klikając z wciśniętym klawiszem Shift, a następnie przesuń je na nieregularne poziomy. Kliknij punkt prawym przyciskiem myszy i wybierz Set Point Shape → Square. Ustaw ten kształt dla każdego punktu, którego następny odcinek ma utrzymywać jego wartość. Na obwiedni powinny być widoczne poziome poziomy, po których następują pionowe zmiany.

W przypadku parametru innego efektu dotknij odpowiedniego elementu sterującego i wybierz Param → Show track envelope. Zamiast tego dodaj punkty i ustaw ich kształt na tej obwiedni. Sposób pracy z menu parametrów opisano w The REAPER Cockos Effects Summary Guide.

Ręczne rozmieszczenie nieregularnych wartości tworzy stały wzorzec; nie generuje nowych wartości losowych przy każdym odtworzeniu. Aby ponownie go wykorzystać, zaznacz zakres czasu, kliknij obwiednię prawym przyciskiem myszy i wybierz Automation items → Insert new automation item. REAPER obsługuje zapętlane elementy automatyzacji i ich współdzielone kopie, w których edycje są przekazywane do pozostałych kopii. REAPER User Guide, Automation Items.

Rozwiązywanie problemów: płynne zmiany, brak zmian i powtarzalność

Jeśli obwiednia nadal tworzy nachylenia, sprawdź kształt punktu wyjściowego. Linear tworzy narastanie lub opadanie; Square tworzy wymagany tu odcinek utrzymujący wartość. Prostokątne LFO i ręcznie narysowana, wielopoziomowa schodkowa zmiana również służą różnym celom: naprzemienne przełączanie dwóch poziomów nie tworzy dowolnej sekwencji poziomów.

Jeśli niestandardowy efekt nie daje wyraźnych zmian, upewnij się, że znajduje się za ReaSynth, jest włączony i ma różne wartości punktów końcowych. Spróbuj skoków co 1 000 milisekund i punktów końcowych −24 oraz −6 dB, aby łatwiej ocenić działanie. Następnie wróć do zakresu odpowiedniego dla projektu.

Nagłe zmiany wzmocnienia mogą powodować trzaski, ponieważ mnożnik próbki zmienia się natychmiast. Ten program celowo nie stosuje wygładzania. Mniejsze różnice poziomów mogą ograniczyć skalę tych nieciągłości, ale nie gwarantują braku trzasków. Dodanie narastania zmieniłoby zachowanie natychmiastowych skoków.

Efekt zaprojektowano dla ścieżki stereo i modyfikuje tylko jej pierwsze dwa kanały audio. Nie zapisuje punktów automatyzacji, nie zachowuje wybranej sekwencji losowej, nie kwantyzuje wartości do niewielkiego zestawu poziomów ani nie zapewnia synchronizacji z tempem. REAPER zwykle uruchamia sekcję JSFX @init przy rozpoczęciu odtwarzania; ten program resetuje w niej licznik. Nie należy zakładać, że po ponownym uruchomieniu zostanie odtworzona ta sama sekwencja losowa. JSFX code-section reference.

Użyj niestandardowego efektu wzmocnienia, gdy chcesz automatycznie generować utrzymywane poziomy. Użyj obwiedni Square, gdy chcesz edytować, powtarzać i zachowywać konkretne zmiany. Obie metody pozwalają uzyskać wyraźne poziomy w syntetycznym tonie; wybór zależy od tego, czy ważniejsze są nowe wartości, czy dokładny wzorzec na osi czasu.

Źródła