Dźwięk i muzyka w Linuksie
www.linux-muzyka.ixion.pl

Pliki SoundFont w Linuksie



Pliki SoundFont to wirtualne instrumenty obsługiwane przeważnie przy pomocy komunikatów MIDI. Pozwalają one na odtworzenie skomponowanej melodii z wykorzystaniem wybranego brzmienia. Format SF2 jest multiplatformowy, wspierany zarówno przez oprogramowanie, jak i sprzęt.

Instrukcja prezentuje podstawy tworzenia plików SoundFont w edytorze Smurf, a także przykładowy sposób wykorzystania SoundFontów w pracy z dźwiękiem w Linuksie.



W trakcie pracy lub zabawy z dźwiękiem nieuchronnie gromadzi się coraz większą liczbę plików SoundFont (*.sf2) - wirtualnych instrumentów obsługiwanych przeważnie przy pomocy komunikatów MIDI. Dzięki plikom SF2 możliwe jest odtworzenie skomponowanej melodii z wykorzystaniem wybranego brzmienia. Niekiedy imituje ono wiernie istniejące instrumenty, ale równie często stanowi nową barwę, opracowaną przez twórcę pliku. SoundFonty są szczególnie przydatne podczas pracy z sekwencerami MIDI i z programami typu tracker.

Rozpoczynając pracę z Linuksem nie musimy rezygnować z posiadanej kolekcji SoundFontów. Wręcz przeciwnie, będziemy mogli je edytować i wykorzystywać jako wirtualne instrumenty grające taką melodię, jaką im przekażemy. Dzięki programom Smurf, MusE i Qsynth pliki SF2 staną się równie potężnym narzędziem, jak w przypadku innych systemów operacyjnych.

Na samym początku zajrzyjmy do wnętrza SoundFontów i spróbujmy zmodyfikować ich zawartość. Posłuży nam do tego program Smurf - edytor plików SF2. Wchodzi on w skład niektórych dystrybucji, dostępne są ponadto pakiety binarne. Smurf nie był w ostatnim czasie aktualizowany, stąd też łatwo zdobędziemy jego najnowszą wersję. Warto również przyjrzeć się następcy Smurfa - aplikacji Swami (swami.sourceforge.net).

Edycja plików SoundFont

Smurf jest edytorem plików SF2 wzorowanym na programie Vienna SF Studio. Podobieństwo obu aplikacji sprawia, że użytkownicy systemu Windows mający doświadczenie w budowaniu SoundFontów bez problemu odnajdą się w Smurfie. Jedynie niektóre funkcje zrealizowane są w odmienny sposób. W artykule tym opiszę zatem tylko podstawy tworzenia plików SF2 oraz te elementy programu Smurf, które odbiegają od standardu wyznaczonego przez Vienna SF Studio. Użytkownicy zainteresowani szczegółami powinni zapoznać się z podręcznikiem The Art of SoundFont: A Step-by-Step Guide.

Interfejs Smurfa - edytora plików SF2.

Interfejs Smurfa - edytora plików SF2. Zobacz powiększenie.

Po uruchomieniu programu Smurf stajemy przed wyborem - możemy otworzyć istniejący plik SF2 (polecenie File→Open) lub utworzyć nowy (File→New). Jeżeli zdecydujemy się na zbudowanie naszego własnego SoundFonta, to powinniśmy wykonać następujące czynności:

  1. W pierwszej kolejności powinniśmy wybrać sample, które wejdą w skład pliku SF2. Rozwińmy drzewo katalogów widoczne w lewej górnej części okna Smurfa. W podkatalogu Samples→User klikamy prawym klawiszem myszy. Z podręcznego menu wybierzmy New Sample. Zaznaczmy potrzebne pliki WAVE, po każdym z nich klikając OK. Teraz zamknijmy okno wyboru sampli. Wszystkie wybrane pliki pojawiły się w podkatalogu Samples→User.
  2. Kolejnym krokiem powinno być utworzenie instrumentów. Kliknijmy prawym klawiszem myszy na katalogu Instruments i z podręcznego menu wybierzmy New Instrument. Po wpisaniu nazwy utworzony zostanie podkatalog nowego instrumentu.
  3. Przypiszmy teraz załadowane uprzednio sample do instrumentu. Zaznaczmy lewym klawiszem myszy odpowiedni plik WAVE z podkatalogu Samples, a następnie wywołajmy menu podręczne instrumentu (prawym klawiszem myszki). Wybierzmy z niego polecenie Paste.
  4. Jeżeli do jednego instrumentu przypisaliśmy kilka sampli (co jest wskazane), to powinniśmy jeszcze określić zakresy klawiatury obsługiwane przez poszczególne pliki WAVE. Jeśli instrument powstanie na bazie wielu próbek, to uzyskamy lepszą jakość dźwięku. Nie będzie bowiem konieczne interpolowanie poszczególnych sampli na sąsiednie klawisze, a to zawsze wpływa niekorzystnie na jakość SoundFonta.
    Aby przypisać sample do konkretnych klawiszy, zaznaczmy próbkę w podkatalogu Instruments. Poniżej klawiatury widocznej w prawej górnej części okna programu pojawi się podświetlenie. Na jego tle zobaczymy poziomą linię zakończoną prostokątami. Ta kreska obrazuje zakres klawiatury "obsługiwany" przez zaznaczoną próbkę. Lewym klawiszem myszy możemy dowolnie przesuwać ograniczające go prostokąty.
  5. Zanim przejdziemy do modyfikacji zasięgu następnej próbki, zwróćmy jeszcze uwagę na trójkąt widoczny powyżej klawiatury. Wskazuje on na nutę bazową danego sampla. Jej poprawne zdefiniowanie jest niezmiernie ważne. Jeśli próbka zawiera brzmienie nuty C, to trójkąt powinien znaleźć się ponad tą nutą. W przeciwnym wypadku instrument nie będzie współbrzmiał z innymi SoundFontami i pojawią się irytujące dysonanse.
    Jeżeli nie wiemy, jaką nutę bazową reprezentuje nasza próbka, to warto sięgnąć do zbiorów predefiniowanych brzmień, które znaleźć można w Internecie lub zakupić na płytach CD. Osoby korzystające z programów Magix Music Maker bądź z kolekcji Sound Pool z pewnością zauważyły, że w nazwach sampli często znajduje się również wysokość dźwięku. Jest to właśnie nuta bazowa, którą powinniśmy zaznaczyć w programie Smurf. Jeśli dopiero zaczynamy pracę z SoundFontami, to dla ułatwienia warto skorzystać z takich gotowych kolekcji sampli. Przed przystąpieniem do działania zapoznajmy się jeszcze z warunkami licencji, na której są one rozpowszechniane.
  6. Teraz ustalimy parametry obwiedni sampli, a także określimy efekty, które zmodyfikują brzmienie SoundFonta. W tym celu wybierzmy z głównego menu polecenie View→Generator Control. Na 4 zakładkach, które pojawią się w dolnej części okna Smurfa, można teraz dokonać niezbędnych modyfikacji obwiedni i wybrać potrzebne efekty. Wszystkie poprawki wykonujemy za pomocą suwaków.
  7. Jeżeli chcemy zdefiniować jeden komplet parametrów dla wszystkich sampli wchodzących w skład instrumentu, to kliknijmy prawym klawiszem myszy na katalogu z nazwą instrumentu i wybierzmy Global Zone. Zmiana parametrów utworzonego obiektu zaowocuje przepisaniem poprawek na wszystkie instrumenty wchodzące w skład danego SoundFonta.
  8. Ostatnim ważnym krokiem jest tworzenie presetów, które złożą przygotowane wcześniej instrumenty w pełny bank SF2. Prawym klawiszem myszy klikamy podkatalog Presets→Melodic (lub Presets→Percussion w przypadku banków perkusyjnych) i wybieramy polecenie New Preset. Podajmy nazwę presetu (pozostałe wartości pozostawmy domyślne). Możliwa jest jeszcze modyfikacja parametrów - w tym celu dodajmy Global Zone w ten sam sposób, jak wcześniej w podkatalogu Instruments.
  9. Teraz przypiszemy instrumenty do presetów. Lewym klawiszem myszy zaznaczmy nazwę instrumentu w podkatalogu Instruments i wywołajmy menu podręczne utworzonego presetu. Klikamy Paste i... gotowe.

Nasz nowy SoundFont jest już gotowy. Pozostaje nam tylko zapisanie zmian. Z menu File wybierzmy Save i podajmy nazwę pliku SF2.

Nasze pierwsze SoundFonty nie będą zapewne brzmieć rewelacyjnie. Nie zrażajmy się tym. Dzięki programowi Smurf możliwe jest stworzenie plików SF2 doskonałej jakości - konieczne jest jednak przynajmniej minimalne doświadczenie.

Jeśli nie zamierzamy tworzyć własnych SoundFontów, ale jedynie korzystać z sampli zawartych w plikach SF2, to również pomoże nam Smurf. Po otwarciu SoundFonta rozwińmy podkatalog Samples i prawym klawiszem myszy kliknijmy wybraną próbkę. Z podręcznego menu należy wybrać Export i podać nazwę pliku WAVE, AU lub AIFF.

Wykorzystanie plików SoundFont

Kolejnym etapem pracy powinno być wykorzystanie plików SF2 w tworzonych nagraniach. Najlepiej wykorzystać w tym celu syntezator Fluidsynth. Jest to program działający z linii poleceń, zatem korzystnie będzie zainstalować również graficzną nakładkę opartą na bibliotekach Qt - Qsynth.

Ze zdobyciem syntezatora Fluidsynth nie powinniśmy mieć żadnych problemów. To popularna aplikacja, standardowo wchodząca w skład multimedialnych dystrybucji. Dostępne są również pakiety binarne.

W przypadku programu Qsynth nie unikniemy zapewne samodzielnej kompilacji źródeł, chociaż w Internecie można znaleźć również pakiety RPM z aplikacją. Ręczna kompilacja nie jest trudna, sprowadza się do wykonania
./configure
make
make install

i z reguły nie powoduje żadnych problemów. Wymagana jest obecność bibliotek Qt i syntezatora Fluidsynth.

Oprócz syntezatora wykorzystującego SoundFonty (Fluidsynth) potrzebny będzie jeszcze program wysyłający komunikaty MIDI sterujące plikami SF2. Dzięki niemu tandem Fluidsynth + Qsynth zagra dokładnie taką melodię, jaką zechcemy. W opisywanym przeze mnie przykładzie wykorzystam sekwencer MusE, ale możliwe jest użycie innych aplikacji.

Dźwięk generowany przez syntezator Fluidsynth popłynie do karty dźwiękowej i głośników komputera. Jeśli zechcemy zapisać go do pliku WAVE, to najrozsądniejszym wyjściem będzie skorzystanie z serwera dźwięku JACK, który przekaże dane audio do aplikacji rejestrującej (na przykład do programu Ardour). JACK przyda się również z innego powodu - dzięki niemu możliwe jest znaczące obniżenie opóźnień. Da to w efekcie szybszą reakcję poszczególnych programów i lepszą jakość dźwięku. Ma to ogromne znacznie, zwłaszcza podczas występów na żywo.

Krokiem poprzedzającym korzystanie z plików SoundFont powinno być uruchomienie serwera dźwięku JACK. Jeśli wystarcza nam system ALSA, to możemy pominąć ten etap.

Konfiguracja sekwencera MusE.

Konfiguracja sekwencera MusE. Komunikaty MIDI przesyłane będą do programu Qsynth. Zobacz powiększenie.

Teraz należy uruchomić programy MusE i Qsynth (w dowolnej kolejności). W sekwencerze MIDI nagrajmy prostą melodię - na początku niech nie będzie ona polifoniczna. Teraz skonfigurujemy opcję wysyłania komunikatów MIDI z programu MusE. Z menu Config wybierzmy Midi Ports / Soft Synth. Do portu pierwszego (przy górnej krawędzi nowo otwartego okna) przypiszmy Synth input port (numer). Jeżeli teraz klikniemy przycisk odtwarzania znajdujący się w głównym oknie MusE, to dioda komunikatów MIDI widoczna w lewym dolnym narożu okienka Qsynth zacznie migotać. Nie usłyszymy jednak żadnego dźwięku - nie wybraliśmy bowiem jeszcze pliku SoundFont, który ma odegrać sekwencję MIDI.

Wybór plików SF2 w programie Qsynth.

Wybór plików SF2 w programie Qsynth. Zobacz powiększenie.

Kliknijmy przycisk Setup... w oknie Qsynth. Można tutaj zmodyfikować parametry podsystemu dźwięku i MIDI. Domyślne ustawienia są z reguły poprawne, zwłaszcza jeśli program pobiera je z serwera JACK. Najważniejsza dla nas okaże się zakładka Soundfonts. Po kliknięciu klawisza Open... będziemy mogli wybrać plik SF2, który będzie wykorzystany w celu odtworzenia sekwencji MIDI.

Jeśli wybraliśmy już potrzebny SoundFont, to kliknijmy OK, a następnie Yes - Qsynth zrestartuje syntezator Fluidsynth i rozpocznie korzystanie z wybranego pliku SF2. Pozostało nam jeszcze ponowne zaglądnięcie do okienka Midi Ports / Soft Synth sekwencera MusE. Po raz drugi wybierzmy Synth input port (numer) - nie zważajmy na to, że Qsynth jest już poprawnie przypisany do odpowiedniego portu. Taką procedurę powinniśmy powtarzać po każdej zmianie wykorzystywanego pliku SoundFont.

Teraz wszystko powinno już działać poprawnie. W razie problemów warto sprawdzić ustawienia serwera JACK - najlepiej w programie Qjackctl. Upewnijmy się, że na karcie Audio wyjście qsynth przypisane jest do karty dźwiękowej (alsa_pcm). Z kolei na zakładce MIDI wyjście sekwencera MusE powinno być połączone z syntezatorem Fluidsynth.

Poprawna konfiguracja serwera JACK w oknie programu Qjackctl.

Poprawna konfiguracja serwera JACK widoczna w oknie programu Qjackctl. Zobacz powiększenie.

Niektóre pliki SF2 mogą być niepoprawnie odtwarzane przez Fluidsynth. Problemy pojawiają się w przypadku polifonicznych ścieżek MIDI. Przyczyny mogą być bardzo różne - zła konfiguracja serwera JACK, przeciążenie procesora, czy błędy w plikach SF2. Na szczęście tego typu kłopoty są dosyć rzadkie - podczas przygotowywania tego tekstu nie napotkałem ich ani razu.

Na pewno niejednokrotnie będziemy chcieli skorzystać z kilku plików SoundFont jednocześnie lub naprzemiennie. W takiej sytuacji kliknijmy prawym klawiszem myszy w dolnej części okna Qsynth. Z menu podręcznego wybierzmy New.... Pojawi się jeszcze jedno okno Setup.... Możemy tutaj wybrać kolejne pliki SF2. Po zatwierdzeniu zmian zajrzyjmy do sekwencera MusE (polecenie ConfigMidi Ports / Soft Synth). Znajdziemy tam jeszcze jedno urządzenie odbierające komunikaty MIDI (Synth input port (qsynth2)). Po jego wybraniu sekwencja odtworzona zostanie przy pomocy drugiego z wybranych SoundFontów.

Pozostaje jeszcze tylko skorzystać z efektów, które dostępne są z poziomu programu Qsynth. Pogłos i chorus pozwoli nam na wzbogacenie brzmienia plików SoundFont. Jeżeli eksperymenty okażą się niebezpieczne dla głośników i uszu, to wystarczy kliknąć Reset i Panic.

Opisana przeze mnie metoda korzystania z plików SF2 w systemie Linux jest tylko jednym z wielu możliwych sposobów. Warto poszukać programów, które z powodzeniem zastąpią wykorzystane przeze mnie aplikacje. Wygenerowane brzmienia można ponadto dowolnie modyfikować w innych programach obsługujących serwer JACK. Ze swojej strony proponuję wykorzystanie wtyczek LADSPA. Życzę też wszystkim Czytelnikom dobrej zabawy i efektywnej pracy z SoundFontami w Linuksie.



12.07.2004

Zobacz więcej na tej witrynie

Komentarze

+ Dodaj własny komentarz

Twórca witryny nie ponosi odpowiedzialności za treść zamieszczonych komentarzy.





SZUKAJ


SPONSOR


SEKCJE

Strona główna

• Programy

• Sprzęt i sterowniki

• Artykuły

• Blog

• Forum

• Linki

• Mapa serwisu

• Kontakt

• Przyjaciele