Labas, šiandien grosime MIDI failus terminale!
Aš nutariau pažvelgti į savo magistro darbą šviežiomis ausimis ir akimis. Jau po daugelio metų – daugiau nei septynių! Jau kaip patyręs programuotojas. Tuo metu kūriau muziką su rekursiniais neuroniniais tinklais – aido neuroniniais tinklais. Džiaugiuosi tuometine savo ambicija ir drąsa. Tačiau šiandien ne apie tai. Šiandien apie MIDI failų sugrojimą!
Tam mes naudojame FluidSynth programą.
Kas yra FluidSynth?
FluidSynth yra programinis sintezatorius (angl. software synthesizer), kuris skaito MIDI failus ir paverčia juos garsu naudodamas SoundFont (.sf2) garso bankus. SoundFont — tai failas, kuriame saugomi tikrų instrumentų garso pavyzdžiai (angl. samples). Kai FluidSynth gauna MIDI instrukciją, pavyzdžiui, “pagrok man do natą fortepijonu”, jis paima atitinkamą įrašytą do natos skambesį iš Soundfont failo ir mums sugroja.
Kaip įsidiegti FluidSynth?
Kadangi aš naudoju macOS operacinę sistemą, tad įsidiegiu FluidSynth naudojant Homebrew programą. Kaip įsidiegti kitose operacinėse sistemose, žiūrėkite FluidSynth čia.
brew install fluid-synth
Tikrinu ar sėkmingai
fluidsynth --version
Turėtume matyti kažką panašaus į tai
FluidSynth runtime version 2.5.3
Kaip parsisiųsti SoundFont garso banką?
Dabar mums trūksta tik SoundFont garso banko failo. Be jo FluidSynth neturės ką sugroti, nes jis tik groja, o pačių skambesių įrašų neturi.
Populiariausias nemokamas SoundFont yra FluidR3 GM, kuriame yra 128 standartiniai instrumentai: fortepijonas, gitara, smuikas, trimitai ir kiti.
Žemiau galime rasti rašmeną, kur parsiunčia mums SoundFont failą
mkdir -p ~/soundfonts # Sukuria soundfonts aplanką vartotojo namų direktorijoje
curl -L -o ~/soundfonts/FluidR3_GM.zip "https://keymusician01.s3.amazonaws.com/FluidR3_GM.zip" # Parsisiunčia archyvuotą SoundFont failą
unzip ~/soundfonts/FluidR3_GM.zip -d ~/soundfonts # Išarchyvuoja SoundFont failą iš archyvo
Tikrinam ar failas teisingas
file ~/soundfonts/FluidR3_GM.sf2
Matome, kad failas yra SoundFont/Bank formatas, todėl viskas gerai
FluidR3_GM.sf2: RIFF (little-endian) data, SoundFont/Bank
Grojimas
Štai ir viskas, ką reikėjo paruošti! Dabar paleisk savo MIDI failą:
fluidsynth -a coreaudio -ni ~/soundfonts/FluidR3_GM.sf2 tavo_failas.mid
Ką reiškia šie Fluidsynth parametrai?
-a coreaudio— naudoti macOS garso sistemą (angl. audio driver)-ni— neinteraktyvus režimas (angl. non-interactive), t.y. programa gros failą ir baigs darbą- pirmas failas — SoundFont garso bankas
- antras failas — tavo MIDI failas
Jeigu tiek ir reikėjo, tuomet sveikinu! Gali uždaryti šį puslapį ir mėgautis muzika. O jei nori sužinoti daugiau, skaityk toliau.
Papildomi parametrai
Garso stiprumas
Jei per tyliai arba per garsiai, naudok -g parametrą:
fluidsynth -a coreaudio -ni -g 2.0 ~/soundfonts/FluidR3_GM.sf2 tavo_failas.mid
Reikšmė 1.0 yra numatytoji, 2.0 yra dvigubai garsiau, o 0.5 yra dvigubai tyliau.
Interaktyvus režimas
Jei nori valdyti grojimą rankiniu būdu, paleisk be -ni:
fluidsynth -a coreaudio ~/soundfonts/FluidR3_GM.sf2 tavo_failas.mid
Tada galėsi naudoti FluidSynth konsolę su komandomis kaip player_stop, player_cont, quit ir kitomis.
Įrašymas į WAV failą
Nori konvertuoti MIDI į garso failą?
fluidsynth -ni -F rezultatas.wav ~/soundfonts/FluidR3_GM.sf2 tavo_failas.mid
Parametras -F nurodo išvesties failą. Taip gausi WAV formatą, kurį galėsi klausytis bet kuriame grotuve arba konvertuoti į MP3.
Jeigu nepavyko
Jeigu kažkas nesigauna ir gauname tokius rezultatus
command not found: fluidsynth
Reiškia FluidSynth neįdiegtas. Įsitikrink, kad fluidsynth --version grąžina versiją, o ne klaidą. Pabandyk įdiegti Fluidsynth dar kartą brew install fluid-synth.
expected RIFF chunk id
SoundFont failas sugadintas arba tai ne SF2 failas. Tikrinam su file ~/soundfonts/FluidR3_GM.sf2
- Negirdėti garso
Patikrink garso stiprumą sistemoje ir bandyk pagarsintu su -g 2.0.
Štai ir viskas, dabar galėsime groti MIDI failus iš terminalo iki kol kaimynai užpyks. Smagaus rokenrolo!
MIDI formato pradžia siekia 1983-uosius metus, kai Dave Smith ir Ikutaro Kakehashi sukūrė standartą, leidžiantį skirtingiems muzikos instrumentams „kalbėtis" tarpusavyje. Už šį darbą jie abu gavo techninį Grammy apdovanojimą 2013-aisiais. Įdomu, kad standartas beveik nepasikeitė per 40 metų — MIDI failai, sukurti praėjusio amžiaus devintajame dešimtmetyje, puikiai veikia ir šiandien.
Šaltiniai
- FluidSynth oficiali svetainė https://www.fluidsynth.org/
- FluidR3 GM SoundFont garso bankas https://member.keymusician.com/Member/FluidR3_GM/
- FluidSynth dokumentacija https://github.com/FluidSynth/fluidsynth/wiki