Zprovoznění přehrávání MIDI

Jedním z problémů, když jsem přecházel na GNU/Linux, které jsem z Windows neznal, byla nutnost manuálního zprovoznění přehrávání MIDI hudebních souborů. MIDI se mi jakoby přehrávaly v programu KMid, ale zvuk nebyl slyšel. Nastavení hlasitosti kanálu Synth samozřejmě vůbec nepomohlo. Po nějaké době jsem na internetu našel, že MIDI lze v Linuxu softwarově přehrávat pomocí programu TiMidity. Tento program jsem zprovoznil, nicméně s kvalitou vzorků zvuku jsem spokojen vůbec nebyl. Hledal jsem tedy dále a našel jsem způsob jak zprovoznit přehrávání MIDI souborů hardwarově v programu KMid. Oba návody dávám k dispozici.

Softwarové přehrávání MIDI

Nejdříve musíme nainstalovat balíček TiMidity. Chybí-li po instalaci v nabídce KDE zástupce na TiMidity nebo chci-li v Ovládacím centru KDE s TiMidity asociovat soubory *.mid, je nutno zástupce na TiMidity vytvořit následujícím příkazem s parametry:

/usr/bin/timidity -iat

Přehrávání pomocí programu TiMidity je jednoduché, bezproblémové, nenáročné, nicméně kvalita zvuku je nevalná.

Hardwarové přehrávání MIDI

Tento návod se týká zvukové karty SoundBlaster od společnosti Creative používané v distribuci openSUSE. Ovšem předpokládám, že u zvukových karet ostatních výrobců a u dalších distribucí jistě existuje analogie.

Základní zprovoznění provedeme dle následujícího postupu:

  1. V řídícím středisku YaST2 v sekci Hardware / Zvuk označit příslušnou zvukovou kartu.
  2. Rozbalit tlačítko Ostatní a zvolit položku Instalovat soundfont...
  3. Vložit do mechaniky a následně vybrat z roletky CD s ovladači od zvukové karty (nejlépe originál CD od Creativu, přičemž soubory s fonty *.sf2 budou nahrány do /usr/share/sfbank/creative/).
  4. Opět rozbalit tlačítko Ostatní a zvolit položku Spustit sekvencer a potvrdit.
  5. Dále je nutno kromě aplikace KMid nainstalovat Fluidsynth, a pro možnost jeho pohodlného ovládání i příslušné grafické rozhraní QSynth (QSynth je pro Fluidsynth něco jako QJackCtl pro Jack).

Program KMid můžeme používat dvojím způsobem. A to s realtimeovým serverem Jack nebo teoreticky i bez něj. To záleží na nastavení aplikace QSynth. To jak zprovoznit Jack popisuji na svých stránkách věnovaných audiu na Linuxu (odkaz pod textem).

Ve výchozím nastavení aplikace QSynth používá jako zvukový systém Jack. Musíme tedy nejdříve spustit QJackCtl a poté teprve spustit QSynth. Grafické rozhraní QJackCtl slouží, jak bylo řečeno, k ovládání realtimeového (nízkolatenčního) serveru Jack a ten zas slouží k synchronnímu propojování vstupů a výstupů zvukové karty a jednotlivých audio aplikací. Chceme-li MIDI pouze přehrávat a nic víc, je možno rozhraní QSynth používat s Alsou. Klikneme v levém dolním rohu okna aplikace na tlačítko Setup a v nově otevřeném konfiguračním dialogu přejdeme na kartu Audio, kde přenastavíme volbu AudioDriver z Jack na Alsa. Od této chvíle nemusíme před spuštěním QSynth spouštět QJackCtl. Ovšem v tomto režimu dochází k chybám přehrávání, proces není stabilní a ve zvuku praská (praskání můžeme omezit zvýšením hodnoty Buffer Count na 64). Z těchto všech důvodů doporučuji používat Jack. A jelikož Jack používá vzorkovací frekvenci 48 kHz, a zde je ve výchozím nastavení tato hodnota nastavena 44,1 kHz, nastavte dále hodnotu Sample Rate na 48000 (případně v nastavení QJackCtl nastavte tuto hodnotu na 44100), aby se vzorkovací frekvence nehádaly.

Ať už Jack používáme nebo ne, musíme dále v konfiguračním dialogu QSynthu přejít na kartu Soundfonts a nahrát požadovanou banku *.sf2. Připomínám, že banky se nacházejí v umístění /usr/share/sfbank/creative/.

Tím jsme provedli základní nutná nastavení, ale dále je vhodné provést i další volby:

Kvůli možnosti využití všech kanálů (a tedy reálnějšímu zvuku) je dobré na kartě MIDI zvýšit hodnotu MIDI Channels na 128.

Kanály lze dokonce editovat. Zobrazení okna kanálů provedeme kliknutím na tlačítko Channels v hlavním okně aplikace QSynth. Nejzajímavější je asi kanál 10, což jsou bicí. Po dvojkliku na tento kanál lze zvolit typ bicí sady.

Nyní již by mělo fungovat relativně bezproblémové hardwarové přehrávání MIDI souborů např. v programu KMid (musí zároveň běžet QJackCtl a QSynth).

V programu KMid se musí ještě nastavit MIDI zařízení na FLUID Synth. To provedeme použitím nabídky Nastavení a dále zvolením položky Nastavení MIDI. Dále je potřeba nastavit požadovanou MIDI mapu. Soubory *.map jsou pro aplikaci KMid uloženy v /opt/kde3/share/apps/kmid/maps/.

Poznámky:

Po instalaci openSUSE jsou MIDI soubory defaultně asociovány s programem KMid.
Kvůli chrčení (limitaci) zvuku je třeba v hlavním okně aplikace QSynth snížit Gain.
Občas se zvuk v KMid přehrává divně - pomůže restartovat přehrávací engine tlačítkem Restart v QSynth.

Článek i s obrázky a zvukovými ukázkami naleznete na [?:http://audiolinux.czweb.org http://audiolinux.czweb.org]

Autor: Aidamos

Komentáře

komarek odpověděl -

Jen je potřeba doinstalovat patřičné vzorky nebo kvalitní soundfont a provést malou úpravu konfigurace. Návod jak na to najdete v nějaké staré příručce k SUSE Linuxu.

Aidamos odpověděl -

Aha, tak to jsem o Timidity vůbec netušil, a na internetu ani nenašel. Timidity totiž nikde v okně programu nemá žádné menu s volbami nastavení. Ale zkusím se po tom nastavení pídit. Dík za tip.

http://audiolinux.czweb.org

Aidamos odpověděl -

Pídil jsem se a našel jsem.
Stačí v souboru: /usr/share/timidity/timidity.cfg najít následující dva řádky:

source piano+guitar.cfg
source drums.cfg

a za ně jako root (su) doplnit tento řádek:

soundfont /usr/share/sfbank/creative/CT4MGM.SF2

(případně jinou cestu k jinému soundfontu *.sf2)
Dále doporučuji zapsat další řádek, který defaultně vypne nepřirozený reverb:

opt EFreverb=d #disable reverb

Případně lze vypnout i další efekty, což je chorus a delay těmito volbami:

opt EFchorus=d #disable chorus
opt EFdelay=d #disable delay

Text za znakem # psát není nutné, znak # uvozuje jen komentář.

randy odpověděl -

radsej vacsie, ako mensie ...
odobne pouzivam zo stranky hsittp://www.sf2midi.com/
piano CelvianoGrand2.sf2 (120 MB) a vsetko ostatne SGM180v1.5.sf2 (180 MB)
tohle nastavenie v /etc/timidity.cfg by malo stacit

dir /usr/share/sounds/sf2
soundfont SGM180v1.5.sf2
soundfont CelvianoGrand2.sf2 order=0