Stwórz swoją wtyczkę z programem HISE
Dzięki tej bezpłatnej aplikacji typu open-source możesz samodzielnie budować własne instrumenty wirtualne.
Dzięki tej bezpłatnej aplikacji typu open-source możesz samodzielnie budować własne instrumenty wirtualne.
Wtyczki to podstawa współczesnego systemu produkcji muzyki, dlatego cieszą się tak dużym powodzeniem. Większość z nas codziennie sprawdza dostępne źródła w poszukiwaniu coraz to nowszych efektów i instrumentów, które najlepiej będą pasować do stylu naszych kompozycji oraz ich brzmienia.
Tak, to jest w pewnym sensie obsesja, ale można nad nią zapanować na przykład poprzez... tworzenie własnych wtyczek. Umiejętności programistyczne? Niewątpliwie są one przydatne, ale w tym akurat przypadku niekoniecznie. Stworzona przez Cristopha Harta aplikacja HISE daje możliwość kreowania instrumentów bazujących na samplach lub na samplach i syntezie, nadawania im własnego interfejsu graficznego oraz eksportu całości jako wtyczki Audio Unit, VST lub AAX dla komputerów Windows, Mac i Linux, nie wspominając już o kreowaniu samodzielnych aplikacji oraz tworzeniu ich dla iOS!
HISE udostępnia wszystko czego potrzebujesz, by stworzyć dowolny instrument. Choć został sprofilowany głównie do kreowania odtwarzaczy sampli, to równie dobrze może funkcjonować jako syntezator, któremu nie są potrzebne próbki. Udostępnia filtry, źródła modulacji i efekty, które można w dowolny sposób łączyć. Parametry mogą być modulowane wewnętrznie lub przypisywane do gałek, suwaków i innych manipulatorów.
W przeciwieństwie do innych środowisk służących do kreowania wtyczek, HISE wygląda jak instrument, a nie narzędzie do programowania, będąc czymś w rodzaju alternatywy dla takich samplerów jak Kontakt czy HALion, i mogąc pracować także jako wtyczka VST lub AU. Aplikacja dostępna jest na licencji GPLv3. Można ją pobrać i użytkować za darmo, a nawet udostępniać efekty pracy innym, pod warunkiem, że dokonuje się tego także zgodnie z licencją GPLv3.
W naszym artykule przedstawimy proces tworzenia w ramach HISE oraz eksportu do postaci wtyczki instrumentu bazującego na samplach ARP 2600. Warto pamiętać, że środowisko HISE cały czas się rozwija, a zatem prezentowane techniki mogą w kolejnych wersjach aplikacji ulec zmianie.
Na wstępie należy zainstalować odpowiednie oprogramowanie, które w całości jest bezpłatne. Na stronie http://hise.audio/download.php znajdziesz instalator programu HISE, ale należy też pobrać kod źródłowy. Po wejściu na stronę http://github.com/christophhart/hise kliknij zielony przycisk Clone or Download i zapamiętaj lokalizację, do której pobierzesz plik – po rozpakowaniu utworzy on folder Hise-master.
Użytkownicy komputerów Windows muszą pobrać bezpłatną wersję Visual Studio ze strony http://visualstudio.com, a także ASIO SDK w wersji samodzielnej (standalone) ze strony steinberg.net/sdk_downloads/asiosdk2.3.zip.
Istotne jest zachowanie odpowiedniej lokalizacji różnych pakietów SDK (Software Developer Kit), które współpracują z HISE.
Użytkownicy komputerów Mac powinni pobrać i zainstalować narzędzie Xcode, które można znaleźć w Mac App Store lub na stronie http://developer.apple.com/support/xcode. W chwili pisania tego tekstu istnieje też potrzeba instalacji elementu o nazwie XCPretty, który dostępny jest na stronie http://github.com/supermarin/xcpretty. Można też wpisać odpowiednią komendę w Terminalu: sudo gem install xcpretty (‘sudo’ wpisujemy, jeśli instalujemy jako administrator, co należy potem zatwierdzić hasłem administratora). Twórcy HISE zamierzają w przyszłości usunąć tę zależność, więc ostatni krok może się okazać niepotrzebny w chwili, gdy czytacie ten tekst. Jeśli zamierzacie zapisać swoją wtyczkę jako VST, wówczas potrzebny będzie też VST SDK, który znajdziecie na stronie http://steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip.
Warto także zainstalować bibliotekę Intel Performance Primitives, która może się okazać szczególnie przydatna, gdy korzystając z HISE zamierzacie stworzyć pogłosy splotowe (convolution). W tym celu należy aktywować konto na stronie http://software.intel.com/en-us/intel-ipp.
Zanim zaczniemy, należy przenieść wcześniej pobrane i rozpakowane foldery VST SDK oraz, w przypadku Windows, ASIO SDK, do katalogu Tools > SDK w folderze Hise-master z oryginalnej instalacji.
1.
Możesz otworzyć HISE jako projekt w programie DAW, ale zalecamy, by tworzyć wtyczki w ramach projektu w wersji samodzielnej, tak jak tu. Przy pierwszym uruchomieniu HISE może zapytać czy stworzyć nowy projekt, co, oczywiście, potwierdzamy klikając OK. Zaraz po tym pojawi się okno przeglądarki.
2.
Przejdź do lokalizacji, w której chcesz umieścić swój projekt i stwórz nowy folder; w naszym przypadku nosi on nazwę 2600Pulse, ponieważ będziemy tworzyć instrument wytwarzający brzmienia klasycznego syntezatora ARP 2600. Po wpisaniu nazwy kliknij Create. By otworzyć właściwości projektu kliknij Open.
3.
Musimy teraz wprowadzić dane w oknie Project Properties. Nasz projekt domyślnie ma już nazwę, a my możemy dodać opis. Teraz należy nadać Bundle Identifier, najlepiej poprzez zmianę środkowego słowa w domyślnym oznaczeniu. W naszym przypadku jest to com.TEGArp.product, ale możesz tu użyć dowolnej nazwy.
4.
Wprowadzamy 4-znakowy identyfikator ID, z pierwszą dużą literą, a następnie trzema małymi. Nasz identyfikator to Arpp, ponieważ opisuje nasz projekt. Zauważ, że możesz osadzić pliki audio w swojej wtyczce, ale w tym momencie zostawimy tę sekcję z domyślnym ustawieniem No, ponieważ nie odnosi się ona do sampli.
5.
Aby zacząć pracę nad projektem, kliknij OK. Pierwszą rzeczą będzie rozszerzenie okna HISE, by uzyskać dostęp do wszystkich jego funkcji, domyślnie niewidocznych. Po zwiększeniu wymiarów interfejsu graficznego mamy możliwość skorzystania z paneli po lewej i prawej stronie, a także umieszczonego na środku panelu Master Chain Container.
6.
Należy sprawdzić, czy sygnał z HISE jest dostępny na wyjściu interfejsu audio. Klikamy umieszczony w prawym górnym rogu przycisk Show Audio Settings. Teraz można już wskazać właściwe porty w urządzeniu audio, porty MIDI, wybrać częstotliwość próbkowania oraz wielkość bufora. Od tego momentu możemy zacząć właściwą pracę.
HISE bazuje na strukturze drzewa, przypominając strukturę plików XML lub bardziej znaną komputerowym muzykom strukturę raków w Native Instruments Kontakt, z gałęziami szeregowymi lub równoległymi. Gałęzie te – lub łańcuchy Chains – mają szereg modułów (Processor), które mogą znaleźć zastosowanie w naszym instrumencie.
Najważniejszymi procesorami są moduły Sound Generator, które mogą być wszystkim – od prostego generatora fali sinusoidalnej do wszechstronnego samplera. Niektóre z nich nie produkują jednak dźwięku – dla przykładu, Container jest rodzajem folderu, w którym funkcjonuje szereg „mniejszych” syntezatorów.
Inne procesory obsługują takie funkcje jak MIDI, modulacja, efekty i skrypty.
Każdy Sound Generator zawiera co najmniej cztery łańcuchy procesorów – MIDI Processor Chain, Gain Modulation Chain, Pitch Modulation Chain oraz Effect Chain. Są też moduły Sound Generator wyposażone w większą liczbę łańcuchów, a takie elementy jak moduły Modulator mają własne tory Chain.
Do dyspozycji jest szereg różnych opcji, na których opis nie ma tu miejsca. Wystarczy powiedzieć, że projekt HISE może być bardzo rozbudowany (i skomplikowany), jeśli akurat pracujesz nad zaawansowaną strukturą.
1.
Z ARP 2600 pobraliśmy szereg surowych próbek dźwiękowych będących falami kwadratowymi. Z poziomu menadżera plików naszego komputera przechodzimy do folderu naszego projektu, w którym znalazły się podfoldery wygenerowane przez HISE. Pliki audio umieszczamy w katalogu Samples.
2.
W lewym panelu HISE można zobaczyć panele Empty. Kliknij na jednym prawym klawiszem myszy i wybierz FileBrowser. Kliknięcie gwiazdki daje dostęp do napędów komputera, pozwalając przechodzić w głąb ich struktury. Odnajdujemy katalog z naszym projektem, a w nim klikamy strzałkę z lewej strony folderu Samples, aby go otworzyć.
3.
Tworzenie naszego instrumentu zaczynamy klikając przycisk + w nagłówku Master Chain Container. Pojawia się menu, którego górna część przeznaczona jest do stworzenia nowych procesorów. Wybieramy znajdujący się na początku listy Sampler, co spowoduje pojawienie się okna Sampler Container. Jeśli nie otworzy się Map Editor, kliknij, aby go aktywować.
4.
Możemy teraz przenosić do tego obszaru pliki z folderu Samples, umieszczając je nad klawiszami oznaczanymi nazwą plików. Pojawia się okno Wave File Import Settings, gdzie przy domyślnych ustawieniach ręcznie pozycjonujemy przeciąganą próbkę względem klawiatury i klikamy OK. Tak samo postępujemy z kolejnymi próbkami.
1.
Sample po zaimportowaniu grają tylko po wyzwoleniu nut, do których są przypisane. Musimy teraz rozszerzyć zakresy ich mapowania, by pokryły całą klawiaturę. Zaznacz wszystkie nuty w obszarze Map i kliknij przycisk oznaczony jako <–>. Wszystkie przerwy pomiędzy próbkami zostaną automatycznie wypełnione odstrojonymi samplami.
2.
Chcąc rozszerzyć zakres w dół zaznaczamy najniższą próbkę i w edytorze mapowania poniżej klawiatury odszukujemy parametr LoKey. Klikamy znak – do momentu, aż pokaże się C0. Teraz wybieramy najwyższą próbkę, dla której ustawiamy HiKey na C6. Nie ma potrzeby ustawiania szerszego zakresu, ponieważ zależy nam na zachowaniu autentycznego brzmienia.
3.
Bywa, że HISE niezbyt dokładnie odczyta wszystkie zapętlenia i ich punkty końcowe. W takim przypadku należy kliknąć przycisk Sample Editor, wybrać w nim nasze sample i kliknąć przycisk –>, aby zobaczyć kształt pętli. Teraz należy precyzyjnie ustawić punkty LoopStart i LoopEnd tak, by próbka płynnie się zapętlała.
1.
Zanim przejdziemy dalej, należy zapisać naszą pracę wybierając File > Save As, a następnie wpisując nazwę projektu Preset 2600PulseWave. Dzięki temu możemy wrócić do niego w takim stanie, w jakim jest obecnie. Zrobimy teraz trochę miejsca, zamykając okna Map Editor oraz Sample Editor, klikając przyciski oznaczone ich nazwami.
2.
Nie mamy tu miejsca na pokazanie całego procesu, ale zaprezentujemy podstawowe działania, które pozwolą Wam zrozumieć jak to wszystko funkcjonuje. Wiedza ta przyda się w trakcie tworzenia własnych projektów. Po kliknięciu przycisku Gain w Sampler Container pokazuje się moduł Simple Envelope.
3.
Simple Envelope to dwustopniowy moduł z regulacją czasów Attack i Release. Parametry te określają, jak długo dźwięk narasta po wciśnięciu klawisza i wybrzmiewa po jego zwolnieniu. Moduł ten jest źródłem modulacji i sam może jej podlegać. Po kliknięciu zakładki Attack Time Modulation widzimy, że do tego parametru nie jest przypisany żaden modulator.
4.
Zamiast dodawania źródła modulacji do elementu Simple Envelope, dodamy całkiem nowy moduł do łańcucha Samplera. Zamykamy Attack Time Modulation, ale zostawiamy widok Envelope – wkrótce będzie nam potrzebny. Klikamy przycisk FX w module Sampler, co otworzy puste okno FX Chain.
5.
Po kliknięciu znaku + w łańcuchu FX możemy dodać do ścieżki sygnałowej nowy moduł. Z rozwijanego menu dostępnych opcji wybieramy Polyphonic Filter. W łańcuchu FX powinien się pojawić moduł filtru polifonicznego. By posłuchać domyślnego ustawienia Biquad LP wciśnij kilka klawiszy na klawiaturze i zacznij kręcić kontrolką Frequency.
6.
W tym trybie nie mamy funkcji rezonansu (Q), zatem z listy dostępnych filtrów wybieramy Moog LP, bazujący na legendarnym filtrze rezonansowym czwartego rzędu z syntezatorów Moog, charakteryzującym się wszystkimi cechami, za które pokochał go cały świat. Aby filtr nie działał statycznie, klikamy zakładkę Frequency Modulation.
7.
Źródło modulacji dla naszego filtru dodajemy klikając przycisk + w module Freq Modulation. W ramach menu możemy wybrać podkategorię Envelopes, a w niej tryb AHDSR. To spowoduje pojawienie się nowego modułu w łańcuchu, dającego o wiele więcej możliwości niż regulacja Gain w Samplerze.
8.
Ustaw kontrolkę Frequency w filtrze na maksimum i przejdź do konfiguracji parametrów nowej obwiedni AHDSR. Zaczynamy regulować ustawieniami Attack, Decay, Sustain i Release tak, aby uzyskać oczekiwany efekt. Nie musimy jednak definiować ich zbyt precyzyjnie – chodzi tylko o to, aby posłuchać ich wpływu na parametr Frequency.
9.
Możemy już zamknąć FX Chain i przejść do implementacji efektu dla całego instrumentu. W tym celu klikamy zakładkę FX w naszym Master Container (po zapisaniu presetu noszącym już nazwę 2600PulseWave). Klikając + w nowym FX Chain wybieramy procesor – w naszym przypadku Delay. W ten sposób stworzyliśmy podstawową strukturę instrumentu.
W środowisku twórców wtyczek bazujących na HISE panuje nieco zamieszania związanego głównie z tym, że HISE udostępniany jest na licencji GPLv3. To, że jest on bezpłatny i open-source’owy może sugerować, że można z nim robić praktycznie wszystko. I jest to prawda, ale pod jednym warunkiem – efekty jego wykorzystania pozostają bezpłatne. To oznacza, że nie można sprzedawać stworzonych w nim wtyczek, znajdujących się w nim sampli, a ich udostępniania dokonuje się w ramach licencji GPLv3. W związku z tym wykorzystane sample muszą być naszego autorstwa lub, jeśli korzystamy z już stworzonych, dostępne są na zasadach licencji GPL. Na szczęście można znaleźć całą gamę tego typu próbek, zatem będzie z czego korzystać w sytuacji, gdy sami nie możemy lub nie chcemy tworzyć własnych.
HISE i JUCE są bezpłatne i pozwalają na dzielenie się efektami ich pracy tak długo, jak nie zamierzamy czerpać z tego korzyści materialnych.
Wszystko to wydaje się oczywiste, ale rzeczy zaczynają się komplikować, jeśli chcesz udostępnić swój produkt komercyjnie. Każda tego typu rzecz stworzona w oparciu o HISE powiązana jest wówczas z opłatą licencyjną. Wprawdzie twórca HISE nie poinformował jeszcze o jaką opłatę chodzi, ale takiej informacji należy spodziewać się już wkrótce. Celem jest tu stworzenie wielopoziomowej struktury licencji, która pozwoli zarówno na publikacje w pełni funkcjonalnych produktów, jak i takich o mniejszej funkcjonalności i zasięgu, działających w oparciu o HISE Player. Komercyjnie działający deweloperzy powinni więc zaglądać na stronę i forum HISE, by uzyskać odpowiednie informacje.
Opłaty licencyjne za wykorzystanie HISE to nie jedyny koszt, jakiego mogą się spodziewać twórcy instrumentów. Aplikacja bazuje na strukturze JUCE – ukierunkowanej na audio międzyplatformowej bibliotece C++, której autorem jest Jules Storer (obecnie pracujący dla ROLI). JUCE to także open-source z licencją GPL, a zatem bezpłatny, gdy nie zamierzasz zarabiać pieniędzy na rzeczach, które za pomocą JUCE wykreujesz. Jeśli jednak Twoje produkty mają być komercyjne, to trzeba się liczyć z kosztami licencji dostępnej w ramach subskrypcji lub jednorazowej opłaty.
1.
Mając już podstawową strukturę instrumentu, należy zająć się jego interfejsem graficznym. Jest to dużo łatwiejsze niż można się tego spodziewać i wymaga jedynie napisania kilku krótkich linijek kodu. Zamknij FX Chain kliknięciem zakładki FX, a następnie kliknij zakładkę MIDI w Master Container, co otworzy MIDI Processor Chain.
2.
Po kliknięciu w MIDI Processor znaku + wybierz Script Processor, który otworzy się w ramach MIDI Processor Chain. W oknie Script Processor kliknij na pustym obszarze w kolorze węgla drzewnego. Zdefiniuj wielkość interfejsu wpisując Content.makeFrontInterface (500, 300); (nie zapomnij o średniku) i wciskając Return. Kliknij Compile.
3.
Powinieneś zobaczyć większy obszar, a jeśli tak nie jest, kliknij przycisk Interface. Tutaj dodajemy kontrolki, które pojawią się w interfejsie wtyczki. Aby zacząć, kliknij przycisk kłódki w górnym prawym rogu. Na siatce, która się pojawi, kliknij prawym klawiszem w dolnym lewym rogu, wybierz Add New Slider i nazwij go Attack.
4.
Mamy regulator Attack, ale teraz należy go przypisać do konkretnego parametru. Po prawym kliknięciu na kontrolce wybierz Connect to Module Parameter, a następnie DefaultEnvelope z menu Module i Attack z menu Parameter. W ten sposób przypisałeś gałkę Attack do parametru Attack w obwiedni dla Sampler Amplitude. Kliknij OK.
5.
Mając zaznaczoną gałkę zablokuj Interface kłódką. Przewiń widok, aby zobaczyć obie już stworzone kontrolki w Interface i jedną w Simple Envelope. Poruszając nową gałką widać reakcję gałek w module, ale nie obejmuje ona całego zakresu. Przewiń znajdujący się po prawej Interface Property Editor, aby dotrzeć do sekcji Component Specific Properties.
6.
Jako nasz tryb Mode wybierzemy Time. Ponieważ maksymalny czas ataku naszego modułu to 20000 ms, należy tę wartość wpisać tu jako Max. W środkowej pozycji czas wynosi 1094 ms, co również wpisujemy. Teraz już ruchy kontrolki Attack w Interface i takiej samej w Simple Envelope powinny już być w pełni zsynchronizowane.
1.
Gdy wiemy już jak stworzyć gałki w naszym interfejsie graficznym i połączyć je z parametrami modułu, przejdźmy dalej. Dodamy kontrolkę Release dla tego samego parametru w Simple Envelope, używając takich samych wartości Component Specific Properties jak poprzednio i umieszczając ją po prawej stronie interfejsu.
2.
Wprowadzimy też kilka dodatków, jak przycisk Linear Mode dla Simple Envelope, a także elementy sterowania obwiednią AHDSR nazwane tak, aby wskazać ich przypisanie do filtru. Tak jak w poprzednich przypadkach, należy dopracować kwestię dopasowania ruchów gałek w Interface do ich odpowiedników w module.
3.
Dobrze jest też mieć dostęp do parametrów efektu Delay, zatem tych samych czynności należy też dokonać w odniesieniu do sterowania zmiennych Delay Module za pomocą kontrolek na panelu graficznym interfejsu. Pracując z instrumentem usłyszeliśmy kliknięcia obwiedni, więc wydłużyliśmy nieco minimalne czasy, które są do nich przypisane.
4.
Możesz dodać dowolnie wiele parametrów i swobodnie je aranżować graficznie. Po kliknięciu ikony domku możesz zobaczyć podgląd panelu wtyczki. Jeśli jego obszar okaże się za mały, należy wrócić do pierwszej linijki w module Script Processor i tam ustawić takie wymiary GUI, jakie będą Ci odpowiadać.
5.
Nasz interfejs jest zbyt przeładowany i trochę nieczytelny. Odblokujmy go więc i po prawym kliknięciu wybierzmy Add New Panel. Można go rozszerzać i przemieszczać tak, by dodać kolejne elementy – w tym przypadku gałki obwiedni AHDSR dla filtru. Prawym kliknięciem można dodać opis (Label), np. Filter.
6.
Zaznaczając Label i wybierając Component Specific Properties można zmienić czcionkę i jej wielkość. Jeśli teraz klikniemy przycisk Preview to okaże się, że kontrolki nie działają. Należy więc wybrać Panel, przejść do Basic Properties i wybrać Enabled > No. Tym sposobem można dodawać szereg kolejnych paneli oraz opisów.
7.
Klikamy File > Settings > User Settings i wpisujemy nazwę firmy (Company Name), 4-literowy Company Code (duża litera pierwsza) i Company Website. Klikamy File > Settings > Compiler Settings, jako HISE Path wskazując folder HISE-Master pobrany z Github i wybierając zainstalowaną wersję VisualStudio. Nie potrzebujemy IPP, więc ustawiamy No.
8.
Klikamy File > Export > Export as Instrument (VSTi/AUi) plugin. Pojawi się informacja o walidacji odniesień do sampli, więc klikamy OK. Z rozwijanego menu wybieramy format naszej wtyczki, np. VSTi, i klikamy OK. Teraz musimy chwilę poczekać. Pojawi się okno terminala z informacjami o postępie i ewentualnych błędach.
9.
Jeśli wszystko się powiedzie, wtyczka znajdzie się w folderze Twojego projektu: Binaries > Builds > OS > build > Release. Możemy ją teraz skopiować do naszego folderu z wtyczkami VST. Po uruchomieniu programu DAW powinna być ona dostępna, choć może zaistnieć konieczność wskazania lokalizacji sampli. Gratulacje! Właśnie zostałeś twórcą wtyczek!