Midi router neboli způsob, jak si o řád zvýšit kvalitu hudebních kláves

PhDr. Mgr. Jeroným Klimeš, Ph.D. 2018-02-15

Jak nás Yamaha odrbává a pije nám krev

Když si koupíte třeba klavír Yamaha Arius YDP-142 zjistíte časem, že je to opravdu hodně a hodně okuchaná verze pořádného klavíru. Yamaha umí vyrobit dobré nástroje, ale ty stojí okolo 100 000 Kč. Prodává proto uměle zhoršené nástroje, aby lidi donutila kupovat jejich dražší nástroje.

Se zvukem se většinou nic moc neudělá. Prostě když si koupíte něco, co má zvuk plechovky, tak posloucháte plechovku. Ale dají se dohnat ty vlastnosti keyboardu, které jsou otázkou MIDI. Například jednou ze základních funkcí kláves je split - levá ruka hraje basu a pravá klavír nebo vibrafon, nebo klavír s pomalými houslemi. To znamená, že při trochu cviku v rychlých partiích či krátkých notách hraje basa s klavírem a v dlouhých notách se naopak rozeznějí housle.

Například u Ariusu máme klavír i housle, ale není basová kytara, takže by se hodilo místo basy použít nějaký z rejstríků, co zbyly, například el. piano či jazz organ. Jenže to si musíte napsat program, který split udělá za Yamahu, která vás o něj cíleně připravila. Tedy z Yamahy vysílate MIDI signály do počítače. Ten je trochu upraví a pošle je zpět.

Podobně v kapele občas potřebujeme exotický doprovodný nástroj jen pro ozdobu, který by hrála dcera na pomocné midi klávesy, které ale nemají pořádný zvuk, nebo nevydávají vůbec žádný zvuk, protože je to tzv. master keyboard. Tady narazíte u Yamahy na další problém. Své lépe znějící rejstříky má schované do různých bank a ne všechny keyboardy umějí vysílat MSB a LSB tak, aby zapnuly příslušnou banku a pak vybraly potřebný rejstřík či program. I zde je třeba mezi pomocné klávesy a Yamahu vložit počítač, který potřebné kódy upraví a přepošle do Yamahy. Schéma je asi následující:

Master Keyboard --> PC --> Yamaha

Yamaha (s vypnutým zvukem čili function Local off) --> PC (úprava v routeru a zpět do) -- > Yamaha

Chvála Linuxu

Tolik obecný a universální úvod a nyní vám popíši, jak jsem to vyřešil u sebe v Linuxu (Lubuntu či Ubuntu core). Výhoda Linuxu je, že může běžet na starém, okuchaném počítači či vyřazeném notebooku jen v textovém režimu, takže bleskově nabíhá a když ho máte dobře nastavený, tak nepotřebujete na pódiu ani monitor. Prostě ho zapnete a strčíte jeden USB kabel do jedné díry a druhý keyboard do druhé USB zdířky a o víc se nestaráte. Stejně tak si koupíte malé Raspberry a to funguje jako plnohodnotný linuxový počítač.

Konvertor z pětikolíku DIN na USB

Staré klávesy mají na MIDI ještě pětikolíkové zdířky. K těm je třeba si koupit na www.ebay.com MIDI konvertor. Stojí asi 100 Kč a s většinou nástrojů funguje dobře.

Problém jsem měl u varhanní pedálnice - , kde naopak pořádně nefungoval. Tak jsem si koupil od Miditech tzv. Midiface II asi za 700 Kč, který s varhanní pedálnicí výborně komunikuje a bez problémů se hlásí jako midizařízení v počítači.

Jak se v Linuxu propojují dva fyzické MIDI nástroje

Když zastrčíte klávesy do USB zdířky, je třeba se podívat, na jaký port se připojily. Takže je třeba si pustit terminal (CTRL+ALT+T) a zadat příklad.

aconnect -l

Parametr -l je zkratka anglického slova list čili výpis.

Pokud nemáte tento či jiný zde zmiňovaný program nainstalovaný, pak jej v Linuxu/Ubuntu nainstalujete pomocí příkazu:

sudo apt install jmenoprogramu

Každopádně tento příkaz by vám měl vygenerovat něco jako:

Client 0: 'System' [Typ=Kernel]

  0 'Timer     '

  1 'Announce    '

Client 14: 'Midi Through' [Typ=Kernel]

  0 'Midi Through Port-0'

Client 24: 'MK-249C USB MIDI keyboard' [Typ=Kernel]

  0 'MK-249C USB MIDI keyboard MIDI '

Client 28: 'Portable Grand' [Typ=Kernel]

  0 'Portable Grand MIDI 1'

Tyto dva nástroje pak propojíme příkazem:

aconnect -x; aconnect 24:0 28:0; aconnect -l

To je pro počítač příkaz: Posílej midi signaly z portu 24:0 na port 28:0, tzn. signály z masterkeyboardu MK-249 se posílají do Yamahy na portu 28:0.

Propojení dvou virtuálních nástrojů

1) Instalace

Je podobné jako propojení dvou fyzických nástrojů, rozdíl je jen v tom, že je musíte nainstalovat:

sudo apt install vmpk

Toto je virtuální midi piano keyboard, takže můžete hrát pomocí myši či klávesnice

sudo apt install fluidsynth

Toto je softwarový syntezátor, který vyrábí zvuky pomocí souboru zvukových fontů, který mají koncovku *.sf2

2) spuštění

Po instalaci oba tyto virtuální nástroje pustíme:

vmpk

fluidsynth --audio-driver=alsa --midi-driver=alsa_seq /usr/share/sounds/sf2/FluidR3_GM.sf2

Každopádně zkontrolujte, zda máte správně cestu k souboru se zvuky nástrojů *.sf2

3) Propojení

Příkaz:

aconnect -l

vypíše například:

Client 0: 'System' [Typ=Kernel]

  0 'Timer     '

  1 'Announce    '

Client 14: 'Midi Through' [Typ=Kernel]

  0 'Midi Through Port-0'

Client 128: 'VMPK Output' [Typ=User]

  0 'VMPK Output   '

Client 129: 'VMPK Input' [Typ=User]

  0 'VMPK Input   '

Client 130: 'FLUID Synth (19748)' [Typ=User]

  0 'Synth input port (19748:0)'

Tyto dva virtuální midi nástroje tedy můžete propojit:

aconnect -x; aconnect 128:0 130:0; aconnect -l

Toto odstraní strará propojení, pak propojí nové nástroje a vypíše konečný stav:

Client 0: 'System' [Typ=Kernel]

  0 'Timer     '

  1 'Announce    '

Client 14: 'Midi Through' [Typ=Kernel]

  0 'Midi Through Port-0'

Client 128: 'VMPK Output' [Typ=User]

  0 'VMPK Output   '

verbunden zu: 130:0

Client 129: 'VMPK Input' [Typ=User]

  0 'VMPK Input   '

Client 130: 'FLUID Synth (19748)' [Typ=User]

  0 'Synth input port (19748:0)'

verbunden von: 128:0

Mně to píše německy, protože mám nainstalovanou německou lokalizaci, abych naučil německy. Ale piše to tady, že porty jsou propojeny (verbunden) tak, jak jsem chtěl, tzn. 128 --> 130. Každopádně když klikám myší na klávesnici, tak počítač vydává tóny klavíru. Ostatní se dá nastavit z programu VMPK.

Automatizované propojení reálných či virtuálních nástrojů

devicename1="VMPK Output:0"

devicename2="FLUID Synth:0"

aconnect -x; aconnect "$devicename1" "$devicename2" ; aconnect -l

nebo

aconnect -x; aconnect "VMPK Output:0" "FLUID Synth:0"; aconnect -l

Tento skript může buď vložit do nějakého souboru s příponou sh (napr. propojeni.sh), nastavit práva ke spuštění a pouštět z příkazové řádky.

Výhody MIDI routeru

Mezi takto dva propojené nástroje můžeme ještě vsunout MIDI router. Ten může s notami udělat to, co samotný masterkeyboard neumí, což je většinou split, zdvojení tónů či přidání nějakého intervalu, zapnutí exotického rejstříku ze zapomenuté banky ap.

Zprvu jsem pro tyto účely používal program Midish, ale musel jsem ho opustit, protože má nedostatečnou dokumentaci a nějak jsem se v ní ztrácel. Nyní používám Mididings, které má mnohem přívětivější manuál.

Automatické propojení dvou nástrojů s midi routerem

# napřed si musíte definovat jednotlivá zařízení (devices), tak jak je vidíte z výstupu příkazu 'aconnect -l'

devicename1="MK-249C USB MIDI keyboard:0"

devicename2in="Mididings Router:0"

devicename2out="Mididings Router:1"

devicename3="Portable Grand:0"

devicemonitor="Mididings Monitor:0"

# Zamýšlené propojení je přímočaré: [device1] --> [device2in - device2out] --> [device3] & [Monitor]

# pak spustíme midirouter a monitor

lxterminal --title "MIDI router"  --command='mididings -c "Mididings Router" "Pass() // Transpose(7) // Transpose(12)"'

#lxterminal --title "MIDI router"  --command='mididings -c "Mididings Router" -f "soubor_se_skriptem.py" # u větších souborů se vyplatí vložit skript routeru do externího souboru.

lxterminal --title "MIDI monitor" --command='mididings -c "Mididings Monitor" "~Filter(SYSRT_SENSING) >> ~Filter(SYSRT_CLOCK) >> Print()"'

sleep 5 # počkáme pět sekund, aby vše naskočilo

#propojime porty

aconnect -x; aconnect "$devicename1" "$devicename2in"; aconnect "devicename2out" "devicename3"; acconect "$devicename2out" $devicemonitor; aconnect -l

Tento jednoduchý router nám vytvoří něco, čemu se u varhan říká třířadá mixtura, tedy když se zmáčkne jedna klávesa C, tak zazní tři tóny, například: C - G - c

Tento skript můžete spouštět tak, že jej zkopírujeme a vložíme do okna terminálu (CTRL+C a pak CTRL+SHIP+V v terminálu). To je dobré tak na vyzkoušejí. Lépe je vložit tento skript do souboru a ten spouštět.

Viz tato ukázka s odkazem na MP3 soubor:

Řešení s Raspberry

Raspberry je malý počítač asi jako mobil, který se hodí, kdykoli se nechcete vláčet s notebookem. Stojí do 1000 Kč. Napájím ho z powerbanky, na kterou vydrží běžet celý den, takže koncert i se zkouškou není žádný problém.

Raspberry běží v tzv. bezhlavém modu ("headless"), tzn. nebootuje do uživatelského rozhraní, neloginuje, ale skončí tak, že spustí soubor: /etc/rc.local, který zapne mididings router.

Kromě routeru zapíná ještě svou wifinu v režimu hotspot, takže pokud chci, mohu se k Raspberry připojit z notebooku přes wifinu. Tentokrát naloguji do terminálu (ssh pi@192.168.30.1). Windows X tam vůbec nemám. K čemu taky? V terminálu mohu mididings script testovat v interaktivním modu, aniž bych musel restartovat Raspberry.

Spuštění je vcelku bezproblémové: Do Raspberry se zasunou USB kabely ze dvou keyboardů. Napřed se zapnou keyboardy, pak se zapne Raspberry. Po nabootovaní, signály z masterkeyboardu tečou do Yamahy, ze které se využívají jak samply, tak reprobedny.

Podobnou konfiguraci využívám se starým masterkeyboardem Fatar, který přes Raspberry a Mididings ovládá laciný Yamaha keyboard z Liedlu (YPT-230 za 2500 Kč). Opět Mididings dokáže přidat split a další funkce, které YPT-230 nemá a díky Fataru je navíc k dispozici dotyková citlivost (touch sensitivity), kterou YPT-230 nemá.

  

Fatar dole a YPT-230 nahoře jsou připojeny přes Raspberry a zmíněný Ebay konvertor USB/DIN

Problémy

Někdy mě na Raspberry zlobí vysící klávesy, u notebooku jsem to nezaregistroval. Na výpisu je vidět, že počítač vyšle NoteOn, ale už nevyšle NoteOff. Řeším to provizorně tím, že zjednodušil kód a při zapnutí nástroje Mididings automaticky vygeneruje Panic() povel. Takže stačí v pauze zmáčknout klávesu třeba houslí a okamžitě vysící klávesy přestanou hrát. Teď nemám čas se tím zabývat víc do detailu. Kdybyste měli nějaké řešení, tak napište.

Pár funkčních skriptů ke stažení a upravení pro vlastní potřeby

Zabalil jsem do zipu pár skriptů, které mi fungovaly. Takže by asi neměl být problém je trochu upravit pro Vaše účely.