Prisipažinsiu, prieš keletą savaičių menkai nutuokiau kas per išmislas yra MIDI ir kaip panaudojant kompiuterį galima pilnavertiškai muzikuoti. Metas tai išsiaiškinti.

Mokyklos laikais esu bandęs tokias programas kaip „Dance eJay“ ir man artimesnį „Hip-hop eJay“, tačiau jas nelabai teisinga vadinti grojimo priemonėmis – veikiau viso labo pasikartojančių garsų (angl. loops) dėliojimo įrankiais. Tebeturiu porą diegimo diskų:

Hip-hop eJay CDs

Teko matyti ir kažkurią „Fruity Loops“ versiją, kurioje pavydzinis kūrinys buvo Faithless „God is a DJ“. Čia jau buvo galima įvesti natas, bet kadangi neturėjau jokios specialios įrangos, tą galėjau padaryti tik pelės žymekliu baksnodamas ekrane atvaizduotą pianino klaviatūrą. Svarbu paminėti, kad natų tuomet visai nepažinau, todėl smarkiau neužsikabinau.

Tačiau 2014-iesiems besibaigiant pajutau stiprų muzikos poreikį ir šių metų sausį pradėjau mokytis dainavimo. Šiam smagiam procesui neabejotinai reikalinga teorija, tad kažkaip reikėjo perprasti skirtumus tarp natų, įsiklausyti kaip skamba akordai ir pagaliau perprasti gamą. Nusprendžiau, kad neapsieisiu be MIDI klaviatūros, taigi apie viską iš eilės.

Kas tai yra MIDI

MIDI (angl. Musical Instrument Digital Interface) yra techninis standartas, aprašantis protokolą, skaitmeninę sąsają (angl. interface) ir jungtis, kurie kartu įgalina daugybę elektroninių muzikos instrumentų, kompiuterių ir kitų susijusių įrenginių jungtis ir komunikuoti vienas su kitu. Viena MIDI jungtimi galima perduoti 16 kanalų informacijos, kurių kiekvienas gali būti nukreiptas į atskirą įrenginį ar instrumentą.

Per MIDI sąsają perduodami pranešimai, kuriuose apibrėžiami:

  • notacija;
  • aukštis ir greitis;
  • kontrolės signalai parametrams, kurie nustato ir sinchronizuoja tempą tarp keleto įrenginių, tokiems kaip:
    • garsumas;
    • vibrato (pulsuojantis aukščio kitimas – video: balsinis vibrato);
    • garso panoramavimas (angl. audio panning – nežinau, ar teisingai išverčiau sąvoką – „Wikipedia“ apibrėžia tai kaip garso signalų paskirstymas į daugiau kanalų);
    • ženklai (atlikti veiksmą, angl. cue);
    • laikmačio signalai.

Arba mano žodžiais tariant, rinkinys savybių, aprašiančių muziką. Šie pranešimai siunčiami į įrenginį, gebantį generuoti garsą arba šį procesą valdyti. Duomenys, esantys tokiuose pranešimuose, gali būti perduoti techniniam arba programiniam įrašančiam įrenginiui, vadinamam sekvenceriu, kuris panaudojamas šių duomenų koregavimui ar atkūrimui realiuoju arba kitu laiku.

Techninė įranga

Įprasta kompiuterio klaviatūra arba, dar blogiau, pelė – visiškai nepatogūs įrankiai MIDI informacijai įvesti, taigi pradėjau dairytis specialių įtaisų. Didžiosiose elektronikos parduotuvėse galima rasti net keletą variantų klavišinių sintezatorių, daugiausia – pažymėtų „LiveStar“ prekės ženklu, pvz.: „ARK-2173“, „ARK-2176“ ar pan. Kainos prasideda nuo mažiau nei 100 eurų. Tokie sintezatoriai turi integruotas kolonėles, tad nuspaudę klavišą, nustatyto instrumento atitinkamą natą išgirsite tučtuojau. Pigesni modeliai dažniausiai turi tik garso išvestį, o brangesni – ir USB ar MIDI. Specializuotose parduotuvėse, natūralu, pasirinkimas gerokai turtingesnis.

Svarbu pažymėti, kad tokie muzikos instrumentai turi tokias bendrąsias dalis:

  1. klaviatūrą (dviejų, trijų ar daugiau oktavų);
  2. sintezatorių, kuris klaviatūros paspaudimus transformuoja į aukščiau aprašytus MIDI pranešimus;
  3. garso konverterį, kuris šiuos pranešimus transformuoja į analoginį ar skaitmeninį signalą;
  4. stiprintuvą, garso signalą perduodantį integruotoms kolonėlėms arba garso išėjimą.

Mano tikslas – groti kompiuteriu, todėl 2-3 dalis pastarasis ir pakeis. Seno stalinio kompiuterio garso plokštė turėjo geltoną 15 kontaktų jungtį žaidimų pultui ar MIDI įvesčiai – netgi radau dėžutę:

Trust SC-5100 garso plokštės dėžutė

Ant jos, be kita ko, buvo nurodyta, jog plokštė suderinama su „MPU-401“ MIDI sąsaja. Šiaip ar taip, dabartinio kompiuterio prievadų arsenalas – daugybė vienodų USB, tad belieka susirasti klaviatūrą, jungiamą šiuo prievadu.

Rūpestingai išnarčiau „AliExpress“ ir „eBay“ – pasirodo, pasirinkimas ne toks jau ir didelis, jei nenoriu perteklinių 2-4 dalių. Ieškojau pagal frazę „USB MIDI Keyboard Controller“ ir jos variantus.

Išsirinkau „Midiplus GarageKey 37 key MIDI keyboard (F37)“. Gamintojo svetainė anaiptol neatrodė įspūdingai, be to, iš pasirinkto pardavėjo iki manęs vos vienas pirkėjas buvo įsigijęs šį modelį. Bet būdamas ramus dėl „AliExpress“ teikiamų garantijų, įrenginį kaipmat užsisakiau. Laukiau su nekantrumu ir turiu pasakyti, kad naujuoju žaislu nenusivyliau – klaviatūra pagaminta tiksliai ir kokybiškai, klavišai reaguoja į paspaudimo greitį (staigiai nuspaudus – garsiau).

Midiplus GarageKey 37 key MIDI klaviatūra

Pereikime prie programinės dalies, nes ši klaviatūra pati iš savęs jokio girdimo garso išleisti nesugeba.

Programinė įranga

Pirmiausia reikia įsitikinti, kad kompiuteris draugaus su jam neįprasta 37-ių mygtukų klaviatūra. Asmeniniame kompiuteryje naudoju „Linux Mint“, tad programinės įrangos dalį aprašysiu būtent šiai operacinei sistemai. Viskas žodis į žodį tinka ir „Ubuntu“, na, o kitose „Linux“ distribucijose reikėtų pasitikrinti ar programų paketai pavadinti taip pat.

Patikrinkime, ar USB prievadu prijungta klaviatūra atpažinta kaip MIDI įrenginys. Tai patogu dayti aconnect priemone, esančia alsa-utils pakete. Įsitikinkite, kad jis įdiegtas pasinaudoję grafine paketų vadymo priemone „Software Manager“ arba terminale įvykdę:

apt-cache show alsa-utils

Gražintame tekste turėtumėte matyti (pateiktas fragmentas):

Package: alsa-utils
Priority: optional
Section: sound
Installed-Size: 2156
Description-en: Utilities for configuring and using ALSA
 Included tools:
  - alsactl: advanced controls for ALSA sound drivers
  - alsaloop: create loopbacks between PCM capture and playback devices
  - alsamixer: curses mixer
  - alsaucm: alsa use case manager
  - amixer: command line mixer
  - amidi: read from and write to ALSA RawMIDI ports
  - aplay, arecord: command line playback and recording
  - aplaymidi, arecordmidi: command line MIDI playback and recording
  - aconnect, aseqnet, aseqdump: command line MIDI sequencer control
  - iecset: set or dump IEC958 status bits
  - speaker-test: speaker test tone generator
 .
 ALSA is the Advanced Linux Sound Architecture.

Jei paketas neįdiegtas, reikia įvykdyti:

sudo apt-get install alsa-utils

Tuomet terminale reikėtų įvykdyti:

aconnect -i

Ir atsakyme ieškoti kažko panašaus į:

client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 24: 'F37' [type=kernel]
    0 'F37 MIDI 1      '

Mano atveju klaviatūra atpažinta – jos įrenginio pavadinimas ir yra „F37“. Galima tęsti ir įdiegti sintezatorių. Mano pasirinkimas – „ZynAddSubFX“ – diegiamas taip:

sudo apt-get install zynaddsubfx

Teisingai perdavus signalą (apie tai – žemiau) šis sintezatorius veikė iškart, todėl jį ir rinkausi. Tiesa, norėjau pamėginti ir kitus „Ubuntu“ forume rekomenduojamus sintezatorius, bet abu neveikė: „Qsynth“ pakibdavo vos išsaugojus konfigūraciją, o „amSynth“ niekaip nepagaudavo iš klaviatūros transliuojamo signalo. Gal jums geriau pavyks? Parašykite komentaruose.

Jau turime tris komponentus:

  1. garso plokštę kompiuteryje;
  2. MIDI klaviatūrą, prie kompiuterio prijungta USB sąsaja;
  3. programinį sintezatorių.

Juos reikia tarpusavyje sujungti. Tam „Linux“ aplinkose dažniausiai naudojamas „JACK Audio Connection Kit“ arba sutrumpintai – „JACK“. Tai yra programinis garso serveris, leidžiantis realiuoju laiku ir žema delsa (angl. latency) tarpusavyje sujungti garso įrenginius su MIDI duomenų srautais, kai jungiami komponentai suderinami su „JACK“ programavimo aplinka (angl. API). Šis serveris veikia komandiniame režime, tad patogiam darbui reikalinga grafinė sąsaja, pvz.: „QjackCtl“, leidžianti keisti nustatymus ir deramai juos išsaugoti.

„JACK“ serveris ir „QjackCtl“ įdiegiami šios komandos pagalba:

sudo apt-get install jackd jackd2 qjackctl

Pradedame groti

Metas išsidėlioti žaislus ir pradėti groti.

Sintezatoriaus užtenka kai norima groti realiuoju laiku. Norint rašyti natas, nustatyti instrumentus ir kitus MIDI parametrus, reikės specializuotos programinės įrangos, pvz.: atvirojo kodo „Rosegarden“. Aš dar nepribrendau šiam paketui, tad mokytis klavišinių instrumentų paslapčių pradėjau programėle (savaime suprantama, atvirojo kodo) „Piano Booster“, kuria atidarius MIDI failą penklinėje bus išdėliotos natos ir pasiūlyta groti paskui paleidus muziką. Programa atvaizduos nuspaustų klavišų natas ir rodys jūsų tikslumą.

„Piano Booster“ diegiama komandiniame lange surinkus:

sudo apt-get install pianobooster

Galime pradėti linksmintis. Programines priemones reikėtų paleisti tokia seka:

  1. sintezatorius (Menu > Sound & Video > ZynAddSubFX Software Synthesizer)
    „ZynAddSubFX“ programinis sintezatorius
  2. grojimo programa (Menu > Sound & Video > Piano Booster)
    „Piano Booster“ grojimo mokymosi programa
  3. „JACK“ serverio grafinė sąsaja (Menu > Sound & Video > QjackCtl)
    „JACK“ garso serverio grafinė sąsaja

Kai visos trys programinės priemonės paleistos, „JACK Audio Connection Kit“ lange reikėtų spustelėti „Start“ – tuomet bus paleistas „JACK“ serveris. Tuomet mygtuku „Connect“ iškvieskite jungimo valdymo langą:

„JACK“ sujungimų valdymas: garso išvestis

Ryšys tarp įrenginių (čia jie vadinami „klientais“ (angl. clients), mat šie gali būti tiek techniniai, tiek virtualūs – programiniai) nustatomas kairėje ir dešineje pusėse pasirinkus (spragtelėjus pele) norimus įrenginius ir spaudžiant mygtuką „Connect“. Tarp  jų turėtų būti atvaizduota linija.

„Audio“ kortelėje sintezatorių sujungiame su sistemos išvestimi. Kortelėje „ALSA“ nustatysime signalo perdavimą iš MIDI klaviatūros į programinį sintezatorių ir grojimo programą:

„JACK“ sujungimų valdymas: įvesties įrenginiai

Mano atveju klaviatūra jungiama su sintezatoriumi („0:F37 MIDI 1“ > „0:ZynAddSubFX“) ir grojimo programa „Piano Booster“ („0:F37 MIDI 1“ > „0:RtMidi“). Jei pageidaujate galimybės per „Piano Booster“ atidarytą MIDI failą perklausyti, nustatykite ir ryšį tarp „Piano Booster“ išvesties ir sintezatoriaus („0:RtMidi“ > „0:ZynAddSubFX““).

Dabar jau galima pasinerti į muzikos pasaulį 🙂

Papildoma informacija (anglų kalba):