INHOUDSOPGAWE:

Arduino MIDI Rhythm Section Sequencer: 8 stappe (met foto's)
Arduino MIDI Rhythm Section Sequencer: 8 stappe (met foto's)

Video: Arduino MIDI Rhythm Section Sequencer: 8 stappe (met foto's)

Video: Arduino MIDI Rhythm Section Sequencer: 8 stappe (met foto's)
Video: Arduino 64 Steps Sequencer with minimum hardware, adapted from the Drum Sequencer 2024, Julie
Anonim
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer

Dit is vandag maklik en goedkoop om 'n goeie sagteware -dromasjien te hê, maar die gebruik van 'n muis maak my baie opgewonde. Dit is die rede waarom ek besef het wat aanvanklik bedoel was as 'n suiwer 64 -stappe hardeware MIDI drum sequencer wat tot 12 verskillende trommelelemente (dele) kan aktiveer, maar toe ontwikkel in 'n ritmeseks sequencer …

… daar gaan ons!

Stap 1: Hoe dit werk

Hierdie hardeware kan nie self klanke genereer nie, maar slegs eksterne hardeware via MIDI. Dit beteken dat u 'n klankgenerator van u trommelgeluide benodig ('n sampler of 'n drumsintetiseerder of 'n rekenaar met u gunsteling drumsagteware of wat u ook al verkies) wat deur MIDI-notaboodskappe geaktiveer kan word.

Dit bestaan hoofsaaklik uit 'n matriks van 4 x 4 knoppies (met LED's), een vir elke stap van 'n balk. Die hele volgorde van 64 stappe bestaan uit 16 stappe vermenigvuldig met 4 mate. Elke stap is 1/16 van 'n noot.

Daar is twee werkswyses: lewendige modus en bewerkingsmodus.

In die bewerkingsmodus kan u u volgorde stap-vir-stap wysig deur te bepaal watter trom in elke stap sal speel.

U eksterne hardeware -instrument ("drom") word geaktiveer deur 'n MIDI "noot op" boodskap te stuur vir verskillende "MIDI nootnommers" op kanaal nommer "10". Hierdie nootnommers is standaard

trom #1 (d.w.s. skop) -> MIDI nootnommer "60"

trom #2 (dws strik) -> MIDI noot nommer "62"

trom #3 (d.w.s. klap) -> MIDI nootnommer "64"

trom #4 (d.i. Hihat) -> MIDI nootnommer "65"

trommel #5 -> MIDI nootnommer "67"

trommel #6 -> MIDI noot nommer "69"

trommel #7 -> MIDI noot nommer "71"

trommel #8 -> MIDI noot nommer "72"

trommel #9 -> MIDI nootnommer "74"

trommel #10 -> MIDI noot nommer "76"

trommel #11 -> MIDI nootnommer "77"

trommel #12 -> MIDI nootnommer "79"

U kan hierdie waardes (en die MIDI -kanaal) in die skets verander as u dit verkies.

In die lewendige modus deur op die knoppies te druk, kan u dromme speel wat verband hou met elke stap deur MIDI -boodskappe deur middel van die reeks te stuur. U kan u knoppies druk en/of inkomende MIDI -boodskappe regstreeks opneem.

Beide in die lewendige modus en die bewerkingsmodus, kan u 'n trom demp (of demp), die huidige trom "rol speel" en u volgorde 'swaai'.

Ritme -afdeling?

Die meeste trommelopvolgers is suiwer MIDI -trommeldele -snellers, met 'n vaste MIDI -nootnommer vir elke tromgeluid. In hierdie geval het ons 'n 'ritme -afdeling sequencer' meer as 'n suiwer 'drum sequencer', want u kan selfs synthesizers volgorde gee.

Lees die QUICK START GUIDE vir meer besonderhede en 'n volledige lys funksies.

Stap 2: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware

Hierdie projek word uitgevoer rondom 'n Arduino DUE -bord. Ek het probeer om die hardeware so eenvoudig as moontlik te hou, dit wil sê deur die gebruik van LED -bestuurders te vermy. Arduino DUE is waarskynlik nie die mees geskikte bord om 'n klomp LED's sonder 'n LED -bestuurder te hanteer nie, vanweë die uitsetstroomgrense (van 5 mA tot 15 mA, afhangende van die pen), maar dit is die vinnigste Arduino en tydsberekening is alles by die hantering met opeenvolgers. Hou dus in gedagte dat HIERDIE hardeware -opset u Arduino waarskynlik tot sy perke sal verskuif en dit op lang termyn kan beskadig.

Dit gesê, die hardeware is hoofsaaklik 'n 16 knoppies, 16 LED's (een vir elke stap) sequencer met 5 ekstra knoppies vir funksies en 3 potensiometers. Ek het ook 'n rooi LED bygevoeg nadat ek 'n regstreekse opnamefunksie bygevoeg het.

Hier is die materiaalbrief:

- 1x Arduino DUE

- 16x kortstondige, nie -vergrendelbare drukknoppies met geïntegreerde LED's (u kan eksterne LED's gebruik as u wil, maar onthou om LED's met 'n lae krag te gebruik!)

- 1x rooi LED (lae krag!)

- 5x kortstondige, nie -grendel -drukknoppies

- 3x 10K enkeldraai, lineêre, potensiometers

- 3x 6,5 mm mono -jack -wyfie met paneelmontering

- 1x plastiekkas (ek het 'n 190x140x70 mm -omhulsel gebruik)

- 2x 5-pins DIN-aansluiting vir vroulike paneelhouers (MIDI)

- 1x dubbelzijdige 70x90 mm perf board

- 2x 40 -pen -enkelpan -kopstrook (2,54 mm), beter as verguld

- 1x H11L1 optokoppelaar

- 1x 1N4148 diode

- Weerstands van 23 x 1000 ohm

- 3x 220 ohm weerstande

- 2x BC547 pnp transistors

… soldeerdraad, 'n paar kabels, soldeerstasie, 'n boorgereedskap … en vrye tyd:)

Let asseblief daarop dat die knoppies op die foto's vervang is met 'n ander soort (selfs goedkoper …) drukknoppies as gevolg van die verregaande weerkaatsing …

Tyd benodig om die projek te voltooi: 8 - 10 uur

WAARSKUWING: Dra altyd 'n beskermende bril en handskoene terwyl u boor! Warm materiaal kan op u oë uitsteek of met u vel in aanraking kom en brandwonde of selfs ernstiger skade aan u of mense om u veroorsaak

Stap 3: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Stapknoppies is direk gekoppel aan Arduino -penne van 22 (stap 1) tot 37 (stap 16). Die knoppies se grond is vasgeketting en gekoppel aan die Arduino DUE -grond. Daar is geen behoefte aan pullup- of pulldown -weerstande nie, omdat die Arduino -geïntegreerde pullup -weerstande sagteware aangeskakel is (sien die skets).

Dieselfde geld vir die ekstra 5 knoppies (Arduino -penne 2, 3, 4, 5 en 6), wat gebruik word vir ander funksies as stappe. Ek het ook 'n 6,5 mm vroulike domkragaansluiting parallel met die "begin" -knoppie geplaas om my reeks op afstand te kan speel en te stop.

LED's is in serie gekoppel aan die grond (daisy chain) en Arduino DUE -penne van 38 (stap #1) tot 53 (stap #16) met elk 'n 1K ohm -weerstand om die stroomafvoer te beperk en die mikrobeheerder te bewaar.

Potensiometers word verbind soos getoon in die aangehegte prentjie. Let op dat die verwysingspanning 3.3V is, nie 5V nie. Insette wat gebruik word, is A0, A1 en A2.

Ek het ook twee snelleruitsette vir arpeggio -seine geïmplementeer, soos dié wat nodig is om ou 80's -synth soos die Korg Polysix en Roland Juno 6/60 te gebruik. Hulle is verbind met penne A3 en A4, maar u kan digitale penne gebruik as u digitale seine verkies. As u 'n synth wat verenigbaar is met V-Trig (spanning sneller) seine gaan volg, is 'n 1k ohm reeks weerstand om die stroomafvoer te verminder voldoende; in die geval van 'n S-Trig (switch trigger) synth, benodig u 'n eenvoudige pnp switch circuit (sien aangehegte skema).

Die MIDI IN- en OUT -stroombane is in die aangehegte foto's geskematies. Let daarop dat, in teenstelling met die meeste arduino's, Rx1 en Tx1 standaard op DUE -borde gebruik word in plaas van Rx0 en Tx0. Dit is wonderlik, want u kan u skets oplaai sonder om Rx elke keer te ontkoppel. Let ook daarop dat ek 'n H11L1 -optokoppelaar gebruik het omdat ek nie 'n gewone 6N138 binne die Arduino DUE 3.3V -limiet kon uitvoer nie.

Stap 4: sagteware

Die skets is in die Arduino IDE geskryf en moet na u Arduino DUE -bord opgelaai word. Ek gaan nie in op die besonderhede oor hoe u die skets na u arduino DUE kan oplaai nie. Lees dit as dit u eerste ervaring met Arduino is. As dit u eerste ervaring met arduino IDE is, moet u dit ook lees.

U kan die opgedateerde firmwareHERE (github -skakel) aflaai.

Die skets maak staat op die uitstekende FortySevenEffects MIDI -biblioteek. U moet die biblioteek in u arduino IDE installeer.

MIDI out -note wat aan elke trommel toegeken is, word gedefinieer deur die drumNote [STEPS_NUM] veranderlike in die skets. U kan dit na u wil verander.

MIDI out -kanaalnommer vir tromme is standaard op "10" gestel.

Ek is nie 'n kodeerder in die regte lewe nie en daar is beslis beter maniere om te kodeer wat ons hier nodig het. As u 'n kodeerder is met enige voorstel, is u welkom! Stuur vir my enige variasie wat die kode se doeltreffendheid/doeltreffendheid kan verhoog, en ek sal dit by die hoofskets insluit (natuurlik met vermelding van die bydraer!).

Stap 5: Gids vir vinnige aanvang

DRUMS: STAP-BY-STAP SEEKVENSIE

Sodra u die sequencer aanskakel (of terugstel), word 'n leë volgorde gelaai. Die sequencer begin in die bewerkingsmodus, met die eerste balk vasgehou/gesluit en die eerste trommel (dit wil sê skop) gekies. Dit beteken dat deur op enige stapknoppie te druk, u dadelik 'skop' aan die stappe sal toewys. Die volume wat die drom geaktiveer word, word bepaal deur die posisie van die "volume" potensiometer wanneer die trommel aan die trap toegeken word. Deur weer op 'n voorheen toegewysde stapknoppie te druk, sal u die huidige trommel op daardie stap ontkoppel.

As u op die "start" -knoppie druk, sien u dat u LED's van links na regs, van bo na onder, loop, terwyl hulle 'skop' speel, 'skop'.

Deur die "shift" -knoppie ingedruk te hou, sien u die eerste stap -LED op die eerste ry aangeskakel (wat beteken dat die eerste trommel gekies is) en die eerste stap -LED op die vierde ry (wat beteken dat u aan die eerste balk vasgemaak is). U kan nou die trommel wat u wil volg, verander deur op 'n ander stapknoppie te druk terwyl die "shift" ingedruk gehou word. Nadat u die nuwe trommel gekies het, laat u die "shift" los. Alle LED's sal afskakel (omdat u die nuwe trommel nie aan 'n stap toegewys het nie) en u kan die nuwe trommel aan stappe toewys. Herhaal vir al die tromme wat u benodig (tot 12).

Noudat u 'n mooi patroon geskep het, hou die "shift" -knoppie ingedruk en skakel die hoë stap in die onderste ry uit (dit behoort die eerste stap van die vierde ry te wees as u dieselfde uitleg gebruik het as wat ek gebruik het): u het net " ontsluit "die volgorde wat nou oor al die 4 balke sal loop. Onderste rou LED's sal begin "beweeg", wat aandui watter balk tans gespeel word (staafprogressie). U sal agterkom dat slegs 'n reeks in die eerste balk 'n volgorde speel, terwyl al die ander 3 balke geen geluide oplewer nie. Dit is omdat u slegs dromme aan die eerste balk toegewys het, terwyl die ander leeg is. U kan dit met die hand invul (kies 'n nuwe balk deur op een van die laaste 4 stapknoppies te druk terwyl u "shift" ingedruk hou, een van die tromme te kies, die stappe ens te vul, ens.) na alle strepe deur in die bewerkingsmodus te gaan (sluit weer na die eerste balk) en druk op "rekord" (wat nou die "plak" -funksie veronderstel) terwyl u op "shift" ingedruk hou. Makliker gedoen as gesê.

DRUMS: LEEFSPEELMODUS

By die aanvang is die sequencer in die wysigingsmodus. Om die wysigingsmodus te verlaat, moet u die "shift" -knoppie ingedruk hou en op die staafknoppie druk wat tans gehou/gesluit is (die stapknoppie op die 4de ry is aangeskakel). Dit sal die LED van die voorheen gesluit balk uitskakel en die volgorde ontsluit. U is nou in lewendige speelmodus.

In die lewendige speelmodus word die drom wat verband hou met die knoppie geaktiveer deur op enige stapknoppie te druk.

As u die reeks wil opneem, begin die volgorde deur op "speel" te druk, en druk dan op die "opneem" -knoppie (slegs in die lewendige afspeelmodus). 'N Rooi LED sal aanskakel. U speel op die matriks van die drum sequencer-bedieningspaneel of enige inkomende MIDI-notaboodskap (dit wil sê vanaf 'n eksterne MIDI-sleutelbord) word opgeneem.

Ander funksies

Deur op die "rol" -knoppie te druk, word die huidige aktiewe trom by elke stap gespeel (in 'n rol). Dit werk in beide 'stap-vir-stap' en 'live-play' modes.

Deur op enige stapknoppie te druk terwyl u die "demp" -knoppie ingedruk hou, word die trom wat verband hou met die stap gedemp (of gedemp). Dit werk in beide 'stap-vir-stap' en 'live-play' modes.

U kan 'n spesifieke trommelvolgorde uitvee deur op die relatiewe stapknoppie te druk terwyl u die "REC" -knoppie ingedruk hou.

U kan die hele volgorde skoonmaak (sagte reset) deur die "start" -knoppie langer as 3 sekondes ingedrukt te hou.

U kan u volgorde 'swaai' deur aan die 'swaai' potensiometer te draai.

U kan die MIDI -eggo deaktiveer/aktiveer deur op die "mute" -knoppie te druk terwyl u die "shift" -knoppie ingedruk hou. As MIDI -echo geaktiveer is (standaard), word alle inligting wat by die MIDI INPUT -aansluiting teenwoordig is, na die MIDI OUTPUT -aansluiting gestuur (slegs MIDI -aantekening aan, noot af, toonhoogte, buiging, na -aanraking en kontroleverandering word weergegee).

Beide die invoer en uitvoer van die MIDI -klok word standaard geïmplementeer en geaktiveer. As daar geen klokinvoer ontvang word nie, word die tempo bepaal met die toegewyde potensiometer. As 'n MIDI -klokinvoer ontvang word, word die tempo hieruit bereken en die tempo -potensiometer reageer nie. Die MIDI -horlosie word altyd na die MIDI gestuur.

Stap 6: Ritme -afdeling

Die oorspronklike idee was 'n "suiwer" 64 -stappe MIDI -trommelvolgordekenaar om tot 12 onafhanklike trommeldele op te volg. Na 'n paar toetse het ek opgemerk dat dit ook lekker sou gewees het om 'n baslyn te beheer, en ek het die funksie van 'n veranderlike toonhoogte-per-stap slegs aan die nuutste trommel toegeken. Daarna het ek die kode weer aangepas sodat ek die toonhoogte in elke trom kon verander en tot 12 sintetiseerders kon beheer. 'N Hersiening later het ek polifonie bygevoeg (polifonie per synth is standaard beperk tot 3).

Om op te som:

- as u in LIVE-modus in LIVE-opname besig is en die volgorde begin is, kan u inkomende MIDI-notaboodskappe polifonies opneem. Pitch en volume -inligting sal gestoor word. Pitch bend en info -outtch -inligting gaan verlore. MIDI Control Change -boodskappe word gestoor. Hou in gedagte dat u slegs een CC -gleuf per kanaal per stap het.

- As die volgorde gestaak word, kan u tot 3 toonhoogtes (akkoord) tot 'n spesifieke stap van 'n spesifieke staaf opneem deur die bestemmingstapknoppie ingedruk te hou en (terselfdertyd of een vir een) op die gewenste sleutels te druk sleutelbord gekoppel aan die MIDI IN -poort.

Neem waar dat:

- die noot wat op 'n trap geaktiveer word, word op die volgende stap 'doodgemaak'. Om die nootlengte te verhoog, moet u die VCA -parameter van u sintetiseerder "vrystel".

- in teenstelling met tromme, kan note nie in 'n rol gespeel word deur op die "rol" -knoppie te druk nie.

- As u LIVE opneem, word die inkomende MIDI -kanaaldata gestoor in die relatiewe "drom" -stap (MIDI -kanaal #1 -> "drom" #1 ensovoorts).

U kan 'n spesifieke synth -volgorde uitvee deur op die relatiewe "drom" -knoppie te druk terwyl u die "REC" -knoppie ingedruk hou. Deur weer daarop te druk, word die trommelvolgorde ook gewis. As 'n CC -reeks aangeteken is, sal dit die eerste wees wat uitgevee word, en volg dan die volgorde CC -> Synth -> Drum

Stap 7: Arpeggio Triggers

Pre-MIDI-synths van die vroeë 80's is dikwels toegerus met 'n 'arpeggio trigger input'. Deur 'n 2,5 tot 5,0 V trig sein (V-trig of "spanning sneller") te stuur of deur die ingang van die arpeggio sneller (S-Trig of "switch trigger") te grond, kan u die sintetiseerder vertel om 'n stap op 'n arpeggio volgorde te gaan. Dit kan moeilik wees om te bestuur met 'n sequencer sonder 'n spesiale trigger out (soms 'rimshot'-geluide van 'n toegewyde out waar/word dit as 'n hulpmiddel vir V-trig synths gebruik), maar met 'n mikrokontrollerbord kan u so 'n sein en beheer maklik bestuur u synth -arpeggio soos bedoel met die fabriek.

Hierdie volgorde van ritmesnit bevat die moontlikheid om die arpeggiator van twee verskillende sintetiseerders onafhanklik te aktiveer.

Die gebruik is baie maklik: kies drom 11 of 12 (druk stap 11 of 12 terwyl u op "shift" druk) en aktiveer die stappe wat u wil hê dat die arpeggiator van een stap moet beweeg. Op hierdie manier kan u 'n baie streng 1/16 van 'n nootlengte van gereelde arpeggio's "programmeer" deur alle stappe te aktiveer, of 1/8 van elke tweede stap. Boonop kan u meer komplekse arpeggio's programmeer deur stappe na 'n onreëlmatige pad te aktiveer.

Afhangende van die tipe snellersignaal wat ondersteun word deur die synth wat u wil beheer, benodig u 'n eenvoudige hardeware-aanpassing: in die geval van V-trig (dit wil sê Roland synths) plaas 'n 1 Kohm-weerstand in serie met arduino-snelleruitset. In die geval van 'n S-trig (dit wil sê Korg synths), gebruik die skematiese aan die "bedrading" stap vir 'n veilige skakelaar sneller.

Stap 8: As dinge nie werk nie …

Selfs 'n relatief eenvoudige projek soos hierdie werk heel waarskynlik nie 100% die eerste keer dat u dit aanskakel nie. Hier is die korrespondensie tussen knoppies en LED's byvoorbeeld van kardinale belang, en 'n onbeduidende bedrading sal die volgorde onbruikbaar maak.

Om al die verskillende komponente uit die stap -volgorde te toets, het ek 'n eenvoudige toetsskets geskryf (sien aanhangsel).

U kan die nuutste toetsfirmware HIER aflaai (GitHub -skakel).

Die toetsskets werk soos volg:

- druk op 'n stapknoppie: die ooreenstemmende LED moet aanskakel en 'n MIDI-aantekening op kanaal 10 sal na die MIDI-uitset gestuur word.

- druk op 'n funksieknoppie: een van die eerste 5 LED's sal aanskakel.

-draai 'n potensiometer: LED's sal dienooreenkomstig brand (eerste pot -> eerste LED's ry, tweede pot -> tweede LED's ry, derde pot -> derde LED's ry).

- as 'n MIDI -aantekening ontvang word, sal die eerste LED knipper.

Hou in gedagte dat MIDI -echo standaard geaktiveer is. Dit beteken dat as u 'n MIDI-lus tussen 'n synth en MRSS het, dit probleme kan veroorsaak (ek het 'n voorspelbare dubbele noot ervaar wat die meeste kere veroorsaak het, maar ook baie lae note wat geaktiveer is en 'n ingeboude sleutelbord wat gewoonlik nie reageer nie, met synths met MIDI om op te tree as MIDI Throu … dit hang af van die synth). As dit die geval is, skakel die MIDI -echo uit deur op die "mute" -knoppie te druk terwyl u die "shift" -knoppie ingedruk hou.

Aanbeveel: