16:47
Obsługa MIDI w Linuksie
Obsługa dźwięku w formacie MIDI (Musical Instrument Digital Interface) nie jest dostępna domyślnie w systemie Linux. Oprócz standardowej obsługi dźwięku przez system należy wybrać dodatkowe oprogramowanie, które będzie potrafiło obsłużyć ten format. Najpopularniejszym rozwiązaniem jest program Timidity. Przedstawione tutaj rozwiązanie przeznaczone jest dla sterowników ALSA.
Przygotowanie jądra
Przed przystąpieniem do kompilacji oprogramowania należy wcześniej przygotować odpowiednio jądro systemu. Należy tutaj zadbać by dźwięk w systemie działał w oparciu o sterowniki ALSA (nie testowałem tego rozwiązania na OSS, ale też powinno działać). Do poprawnego działania wymagane jest urządzenie /dev/snd/seq. Jeżeli znajduje się takie w naszym systemie, to prawdopodobnie można ominąć ten krok.
W przypadku, gdy nie posiadamy urządzenia snd/seq wpisujemy w katalogu ze źródłami jądra (np: /usr/src/linux) polecenie
make menuconfig
a następnie przechodzimy do 'Device Drivers -> Sound -> Advanced Linux Sound Architecture' i zaznaczamy jako moduł, albo całkiem wkompilowywujemy 'Sequencer support'.

Następnie kompilujemy jądro i kopiujemy je do miejsca docelowego:
make && make modules_install cp arch/i386/boot/bzimage /boot/vmlinuz[/c]
jeżeli wybraliśmy opcję jako moduł, każemy go załadować:
modprobe snd-seq
oraz dopisujemy do pliku z automatycznie ładowanymi modułami (np. /etc/sysconfig/modules) linijkę:
snd-seq
co spowoduje załadowanie modułu przy każdym uruchomieniu systemu.
Kompilacja Timidity
Program Timidity można pobrać z oficjalnej strony: http://timidity.sourceforge.net/ (ok. 1,4MB). Rozpakowujemy archiwum, a następnie przechodzimy do kompilacji. Do konfiguracji użyłem parametrów:
./configure --prefix=/usr --enable-audio=alsa --enable-dynamic --enable-server --enable-alsaseq make make install
Parametry konfiguracji można oczyłiście dobrać sobie ręcznie uprzednio zapoznając się z dołączoną dokumentacją, ważna jest natomiast opcja --enable-server, która pozwoli uruchomić Timidity jako serwer dźwięku MIDI.
Konfiguracja Timidity
Jeżeli kompilacja przebiegła pomyślnie, należy wybrać odpowiedni schemat dźwiękowy dla programu. Ja zdecydowałem się na shompatches. Pobrać można go z http://www.i.h.kyoto-u.ac.jp/~shom/timidity/shominst/shominst-0409.zip (ok. 10MB). Po pobraniu pliku przechodzimy do katalogu /usr/share/timidity. Jeżeli nie istnieje należy go utworzyć. Następnie rozpakowujemy tutaj pobrane wcześniej archiwum. Aby sprawdzić, czy pliki rozpakowały się poprawnie wydajemy polecenie:
ls /usr/share/timidity
i powinniśmy otrzymać podobną listę plików:
default.cfg gsdrum.cfg mt32.cfg sfx.cfg timidity.cfg gsdrum25.cfg inst power.cfg shominst-0409.zip
Następnie otwieramy plik /usr/share/timidity/timidity.cfg i poprawiamy w nim odpowiednio ścieżki:
dir /usr/share/timidity/inst/GUS dir /usr/share/timidity/inst dir /usr/share/timidity/inst/test
Aby przetestować, czy wszystko działa poprawnie uruchamiamy serwer:
timidity -iA
oraz ewentualnie wybrany plik midi:
timidity m4129.mid
Skrypt startowy
Aby nie trzebabyło uruchamiać za każdym razem serwera ręcznie warto utworzyć skrypt startowy, który załaduje go automatycznie przy starcie systemu. Nie mogę tutaj podać konkretnej treści pliku, bo różne dystrybucje używają różnych lokalizacji tych plików oraz różnych sposobów uruchamiania. Najczęściej pliki startowe znajdują się w katalogu /etc/init.d/ lub /etc/rc.d/init.d/. Polecam skopiować pod inną nazwą działający skrypt, a następnie zmodyfikować go podając jako parametr uruchomienia komendę:
/usr/bin/timidity -iA > /dev/null &
oraz jako polecenie na przerwanie skryptu:
killall timidity
Następnie utworzyć dowiązania symboliczne do odpowiednich poziomów uruchamiania (rc5.d, rc6.d). Aby przetestować, czy skrypt działa poprawnie, polecam ponownie uruchomić komputer. Jeżeli nie udało się uruchomić serwera przy starcie należy sprawdzić, czy prawidłowo został dopisany wiersz z modułem snd-seq, bo często to jest źródłem problemu dla startu serwera.
Poniżej jeszcze zdjęcie pokazujące, że serwer Timidity poprawnie jest rozpoznawany przez Wine:


Dodaj komentarz:

English
Nazywam się Tomasz Chudyk i witam na mojej stronie. Z zawodu jestem programistą. Moje zainteresowania krążą głównie wokół open-source, Linuksa i technologi internetowych.
