Jeffrey Cross
Jeffrey Cross

Predvajanje MIDI datotek na Arduino na srcih in sintetičnih bitih littleBits

Odkar sem pred nekaj tedni igral z njim na dogodku RadioShack / littleBits v New Yorku, sem postal obseden z glasbenim predvajalnikom Mannyja Alvearja iz techSpecsov RadioShack-a in sem imel neskončno zabavno igranje Carol of the Bells med prazniki. Prebral sem nekaj synth modulov, ki so bili všeč malim bitsom, da bi bili bolj trippy: filter, ovojnica in zakasnitev.

Ampak še vedno, ena pesem mi ni bila dovolj, vendar ne berem glasbe, zato verjetno ne bom kmalu prepisoval glasbe v hertz. To ni bilo, dokler nisem gledal Wikipedijeve strani za Coventry Carol in opazil, da sem lahko prenesel datoteko MIDI. Obstaja nekaj veliko programske opreme za razčlenjevanje MIDI datotek. Zgrabil sem midicsv, ki pretvori datoteke MIDI v vrednosti, ločene z vejicami, kot je ta:

2, 192, opomba_on_c, 0, 62, 110 2, 192, opomba_on_c, 0, 67, 110 2, 384, opomba_on_c, 0, 62, 0 2, 384, opomba_on_c, 0, 67, 0 2, 384, opomba_on_c, 0, 62, 110 2, 384, opomba_on_c, 0, 66, 110 2, 576, opomba_on_c, 0, 62, 0 2, 576, opomba_on_c, 0, 66, 0

Spoznal sem, da imam rešitev, ki jo iščem ... skoraj.

To je veliko n-fony!

Pogledal sem datoteko v odlični (in svobodni) Aria Maestosa in spoznal, da to ni stvar prevajanja melodije. Očitno je glasba narejena iz akordov! Torej sem se malo sprehajal po divjini svojega uma, dokler nisem spoznal, da bi lahko v arpeggiosih zavil akorde. Dawsonsov članek „Kaj je arpeggiator“ mi je odprl misel. Nisem mogel najti arpeggiatorja, ki bi ga razumel, še manj pa se priključil mojemu delovnemu toku v ukazni vrstici.

Toda preden sem prišel do te točke, sem poskusil brutalno silo: uporabil sem Aria Maestosa, da je pesem (ali tudi izbrisal naključno) izbril v enoglasno besedilo in sestavil preprost program, ki bi lahko pretvoril CSV v zapiske in trajanje. potreben Mannyjev program. Toda to je zvenelo narobe (ni presenetljivo, kajne?); Resnično sem potreboval, da sem igral druge beležke. Toda način, na katerega sem oblikoval svoj program, ni bil primeren za razbijanje akordov v ločenih zapisih v vsakem časovnem obdobju. Zato sem ga ponovno napisal za shranjevanje nizov zapisov, ki naj bi se slišali v določenem časovnem koraku:

192: 62, 67 384: 62, 66

Če pogledamo podatke na ta način, mi je bilo preprosto pretvoriti predstavitev MIDI v obliko, ki jo zahteva Mannyjev program. Moral sem uporabiti konverzijo, da bi številko MIDI note pretvoril v Hz, nato pa je bilo enostavno dobiti izhod kot je ta:

int melody [] = {392, 294, 392, ...} int noteDurations [] = {96, 96, ...}

Svojo skripto za konverzijo sem postavil v Github in vključuje spremenjeno različico Mannyjeve skice. Samo spustite izhodno skripto v to skico (zamenjajte definicije melodija [], noteDurations [], in štetje). Tukaj je, kako zagnati program na mojem računalniku Mac, ki je povezal izhodne podatke midicsv na skript midi2littleBits_arp.pl:

midicsv coventry_carol.mid | ./midi2littleBits_arp.pl 2

Številka 2 označuje številko posnetka v datoteki CSV, ki jo želim izvleči, zato se prepričajte, da si boste ogledali izhodne podatke midicsv, preden boste izbrali skladbo. Po mojih izkušnjah je bila številka dve ali višja.

Prenesite spremenjeno skico na malo Bits Arduino na bit srca, in predvajanje glasbe! Preden preizkusite to spremenjeno različico, najprej preglejte Mannyjevo vadnico, da se prepričate, da deluje.

Arpeggi so resnično surovi in ​​se motijo, vendar je še vedno prijetno. Stavim, da obstajajo še nekateri ljudje, ki imajo ideje za izboljšanje tega.

Delež

Pustite Komentar