Innholdsfortegnelse:

Arduino MIDI Rhythm Section Sequencer: 8 trinn (med bilder)
Arduino MIDI Rhythm Section Sequencer: 8 trinn (med bilder)

Video: Arduino MIDI Rhythm Section Sequencer: 8 trinn (med bilder)

Video: Arduino MIDI Rhythm Section Sequencer: 8 trinn (med bilder)
Video: Arduino 64 Steps Sequencer with minimum hardware, adapted from the Drum Sequencer 2024, November
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

Å ha en god programvaretrommelmaskin er enkelt og billig i dag, men å bruke mus dreper moroa for meg. Dette er grunnen til at jeg innså hva som opprinnelig var ment som en ren 64 -trinns MIDI -trommesekvensering av maskinvare som var i stand til å utløse opptil 12 forskjellige trommelelementer (deler), men deretter utviklet seg til en rytmeseksjonssekvensering …

… der går vi!

Trinn 1: Slik fungerer det

Denne maskinvaren kan ikke generere lyder alene, men bare sekvensere ekstern maskinvare via MIDI. Dette betyr at du trenger en lydgenerator for trommelydene dine (en sampler eller en trommesynteser eller en PC med din favoritt trommelprogramvare eller hva du foretrekker) som kan utløses av MIDI-notater.

Den består hovedsakelig av en matrise på 4 x 4 knapper (med lysdioder), en for hvert trinn i en stolpe. Hele 64 trinns sekvensen består av 16 trinn multiplisert med 4 barer. Hvert trinn er 1/16 av et notat.

Det er to driftsmåter: live -modus og redigeringsmodus.

I redigeringsmodus kan du faktisk redigere sekvensen din trinn for trinn ved å definere hvilken tromme som skal spilles i hvert trinn.

Det eksterne maskinvareinstrumentet ("trommelen") utløses ved å sende en MIDI "note on" melding for forskjellige "MIDI note numbers" på kanalnummer "10". Som standard er disse notatnumrene

trommel #1 (dvs. spark) -> MIDI -notatnummer "60"

trommel #2 (dvs. snare) -> MIDI -notatnummer "62"

trommel #3 (dvs. klapp) -> MIDI -notatnummer "64"

trommel #4 (dvs. Hihat) -> MIDI -notatnummer "65"

trommel #5 -> MIDI notatnummer "67"

trommel #6 -> MIDI -notatnummer "69"

trommel #7 -> MIDI -notatnummer "71"

trommel #8 -> MIDI -notatnummer "72"

trommel #9 -> MIDI notatnummer "74"

trommel #10 -> MIDI -notatnummer "76"

trommel #11 -> MIDI -notatnummer "77"

trommel #12 -> MIDI -notatnummer "79"

Du kan endre disse verdiene (og MIDI -kanalen) i skissen hvis du foretrekker det.

I live -modus ved å trykke på trinnknappene kan du spille live -trommer knyttet til hvert trinn ved å sende MIDI -meldinger gjennom seriell. Du kan spille inn knappetrykk og/eller innkommende MIDI -meldinger.

Både i direktemodus og redigeringsmodus kan du dempe (eller slå på dempingen) av en tromme, "rulle spille" den nåværende aktive trommelen og "svinge" sekvensen din.

Rytmeseksjon?

De fleste trommesekvensere er utelukkende MIDI -trommedelsutløsere, med et fast MIDI -notenummer for hver trommelyd. I dette tilfellet har vi en "rhythm section sequencer" mer enn en ren "drum sequencer" fordi du til og med kan sekvensere synthesizere.

Les QUICK START GUIDE for flere detaljer og en fullstendig liste over funksjoner.

Trinn 2: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare

Dette prosjektet realiseres rundt et Arduino DUE -bord. Jeg prøvde å holde maskinvaren så enkel som mulig, dvs. ved å unngå bruk av LED -drivere. Arduino DUE er sannsynligvis ikke det mest passende brettet for å håndtere en haug med lysdioder uten en LED -driver på grunn av utgangsstrømgrensene (fra 5 mA til 15 mA, avhengig av pinnen), men det er den raskeste Arduino og timingen er alt når du skal håndtere med sekvenser. Så husk at DENNE maskinvarekonfigurasjonen sannsynligvis presser Arduino PÅ sine grenser og kan skade den på lang sikt.

Når det er sagt, er maskinvaren hovedsakelig en 16 knapper, 16 lysdioder (en for hvert trinn) sequencer med 5 ekstra knapper for funksjoner og 3 potensiometre. Jeg la også til en rød LED etter å ha lagt til en liveopptaksfunksjon.

Her er materialregningen:

- 1x Arduino DUE

- 16x øyeblikkelige, ikke -låsende trykknapper med integrerte lysdioder (du kan bruke eksterne lysdioder hvis du foretrekker det, men husk å bruke lysdioder med lav effekt!)

- 1x rød LED (lav strøm!)

- 5x øyeblikkelige, ikke -låsende trykknapper

- 3x 10K enkeltsving, lineære, potensiometre

- 3x 6,5 mm panelmontert monokontakt hunn

- 1x plastkasse (jeg brukte et 190x140x70 mm etui)

- 2x 5-pinners DIN-hunkontakt med panelmontering (MIDI)

- 1x dobbeltsidig 70x90 mm perf bord

- 2x 40 -pins mannlig enkelt rad pin header strip (2,54 mm), bedre hvis gullbelagt

- 1x H11L1 optokobler

- 1x 1N4148 diode

- 23x 1000 ohm motstander

- 3x 220 ohm motstander

- 2x BC547 pnp -transistorer

… loddetråd, noen kabler, loddestasjon, et boreverktøy … og fritid:)

Vær oppmerksom på at knappene på bildene har blitt erstattet med en annen type (enda billigere …) trykknapper på grunn av den skandaløse spretten …

Tid som kreves for å fullføre prosjektet: 8 - 10 timer

ADVARSEL: Bruk ALLTID beskyttelsesbriller og hansker mens du borer! Varmt materialskall kan projiseres i øynene eller komme i kontakt med huden din og forårsake brannskader eller enda mer alvorlig skade på deg eller mennesker rundt deg

Trinn 3: Kablinger

Kablinger
Kablinger
Kablinger
Kablinger
Kablinger
Kablinger

Trinnknappene er direkte koblet til Arduino -pinner fra 22 (trinn 1) til 37 (trinn 16). Knapper bakken er daisy lenket og koblet til Arduino DUE bakken. Det er ikke behov for pullup- eller pulldown -motstander fordi Arduino integrerte pullup -motstander er programvareaktiverte (se skissen).

Det samme gjelder de ytterligere 5 knappene (Arduino pins 2, 3, 4, 5 og 6), som brukes til andre funksjoner enn trinn. Jeg plasserte også en 6,5 mm hunkontakt parallelt med "start" -knappen for å kunne spille og stoppe sekvensene mine eksternt.

Lysdioder er koblet til jord (daisy chain) og Arduino DUE pins fra 38 (trinn #1) til 53 (trinn #16) i serie med en 1K ohm motstand hver for å begrense strømavløpet og bevare mikrokontrolleren.

Potensiometre er tilkoblet som vist på vedlagte bilde. Legg merke til at referansespenningen er 3,3V, ikke 5V. Innganger som brukes er A0, A1 og A2.

Jeg implementerte også to triggerutganger for arpeggiosignaler, som de som kreves for å arpegiere gamle 80 -talls synth som Korg Polysix og Roland Juno 6/60. De er koblet til pinne A3 og A4, men du kan bruke digitale pinner hvis du foretrekker å være digitale signaler. Hvis du skal sekvensere en synth som er kompatibel med V-Trig (spenningstrigger) signaler, vil en 1k ohm serie motstand for å redusere strømavløpet være tilstrekkelig; i tilfelle av en S-Trig (switch trigger) synth, trenger du en enkel pnp switch circuit (se vedlagte opplegg).

MIDI IN og OUT kretser er skjematisk i de vedlagte bildene. Legg merke til at, i motsetning til de fleste arduinos, brukes Rx1 og Tx1 som standard på DUE -plater i stedet for Rx0 og Tx0. Dette er flott fordi du kan laste opp skissen din uten å måtte koble fra Rx hver gang. Legg også merke til at jeg har brukt en H11L1 optokobler fordi jeg ikke klarte å kjøre som den skulle en vanlig 6N138 innenfor Arduino DUE 3.3V grensen.

Trinn 4: Programvare

Skissen er skrevet i Arduino IDE og må lastes opp til Arduino DUE -kortet. Jeg vil ikke gå inn på detaljer om hvordan du laster opp skissen til din arduino DUE. Hvis dette er din første opplevelse med Arduino DUE, les dette. Hvis dette er din første erfaring med arduino IDE, kan du lese dette også.

Du kan laste ned den oppdaterte firmwareHERE (github -lenken).

Skissen er avhengig av det utmerkede FortySevenEffects MIDI -biblioteket. Du må installere biblioteket i din arduino IDE.

MIDI out -notater tilordnet hver trommel er definert av drumNote [STEPS_NUM] -variabelen i skissen. Du kan endre dem etter eget ønske.

MIDI out -kanalnummer for trommer er som standard satt til "10".

Jeg er ikke en koder i det virkelige liv, og det er sikkert bedre måter å kode det vi trenger her. Hvis du er en koder med forslag, er du velkommen! Send meg en variant som kan øke kodens effektivitet/effektivitet, og jeg vil inkludere den i hovedskissen (siterer selvfølgelig bidragsyteren!).

Trinn 5: Hurtigstartguide

DRUMMER: TRINN-FOR-TRINN SEKVENSERING

Så snart du slår på sequencer (eller tilbakestiller den), vil en tom sekvens lastes inn. Sekvenseren starter opp i redigeringsmodus, med den første linjen holdt/låst og den første trommelen (dvs. spark) valgt. Dette betyr at ved å trykke på en hvilken som helst trinnknapp, vil du umiddelbart tildele "spark" til disse trinnene. Volumet trommelen vil utløses, stilles inn av posisjonen til "volum" potensiometeret når trommelen tilordnes trinnet. Ved å trykke på en tidligere tilordnet trinnknapp, vil du tilordne den nåværende trommelen på det trinnet.

Hvis du trykker på "start" -knappen, ser du lysdiodene dine gå fra venstre til høyre, topp til bunn, og spiller "spark" når et kick -trinn krysses.

Ved å holde inne "shift" -knappen, ser du 1. trinns LED på 1. rad slått på (betyr at den første trommelen er valgt) og første trinn LED på den fjerde raden (betyr at du er låst til den første linjen). Du kan nå endre trommelen du vil sekvensere ved å trykke på en annen trinnknapp mens du holder "shift" inne. Etter å ha valgt den nye trommelen, slipp "shift". Alle lysdioder slås av (fordi du ikke har tilordnet den nye trommelen til noen trinn), og du kan begynne å tilordne den nye trommelen til trinn. Gjenta for alle trommene du trenger (opptil 12).

Nå som du har laget et fint mønster, holder du inne "shift" og slår av det høylytte trinnet på den nederste raden (det bør være det første trinnet i den fjerde raden hvis du har brukt det samme oppsettet som jeg brukte): du har bare " låst opp "sekvensen som nå vil løpe over alle de fire stolpene. De nederste rå LED -ene begynner å "bevege seg", og indikerer hvilken stolpe som spilles for øyeblikket (linjeprogresjon). Du vil legge merke til at bare i den første linjen vil en sekvens spilles, og alle de andre 3 stolpene genererer ingen lyder. Dette er fordi du bare har tilordnet trommer til den første linjen, mens de andre står tomme. Du kan fylle dem for hånd (velg en ny stolpe ved å trykke på en av de siste 4 trinnsknappene mens du holder "shift" inne, velg en av trommene, fyll trinnene etc. etc.) eller kopier og lim inn linjesekvensen du opprettet til alle stolpene ved å gå inn i redigeringsmodus (lås på nytt til første stolpe) og trykk på "post" (som nå forutsetter "lim inn" -funksjonen) mens du holder inne "skift". Lettere gjort enn sagt.

DRUM: LIVE PLAY MODE

Ved oppstart er sequencer i redigeringsmodus. For å gå ut av redigeringsmodus må du holde inne "shift" og trykke på stolpeknappen for øyeblikket holdt/låst (trinnknappen på 4. rad slått på). Dette vil slå av LED -en til den tidligere låste linjen og låse opp sekvensen. Du er nå i live play -modus.

I live play -modus vil trommelen som er knyttet til den knappen bli utløst ved å trykke på en trinnknapp.

Hvis du vil spille inn sekvensen din live, starter du sekvensen ved å trykke "play", og deretter trykker du på "record" -knappen (bare i live play -modus). En rød LED tennes. Spillet ditt på trommel-sequencer-kontrollpanelmatrisen eller en innkommende MIDI-notatmelding (dvs. fra et eksternt MIDI-tastatur) blir spilt inn.

Andre funksjoner

Ved å trykke på "rull" -knappen, vil den nåværende aktive trommelen spilles på hvert trinn (i et kast). Dette fungerer i både "trinn-for-trinn" og "live-play" moduser.

Ved å trykke på en hvilken som helst trinnknapp mens du holder inne "demp" -knappen, vil trommelen som er knyttet til det trinnet dempes (eller ikke dempes). Dette fungerer i både "trinn-for-trinn" og "live-play" moduser.

Du kan slette en bestemt trommesekvens ved å trykke på den relative trinnknappen mens du holder inne "REC" -knappen.

Du kan slette hele sekvensen (myk tilbakestilling) ved å holde "start" -knappen inne i mer enn 3 sekunder.

Du kan "svinge" sekvensen din ved å dreie "sving" potensiometeret.

Du kan deaktivere/aktivere MIDI -ekko ved å trykke på "mute" -knappen mens du holder "shift" -knappen inne. Når MIDI -ekko er aktivert (standard), vil all informasjon som er tilstede i MIDI INPUT -kontakten bli sendt til MIDI OUTPUT -kontakten (bare MIDI -notat på, notat av, pitch bend, aftertouch og kontrollendring ekko).

Både MIDI -klokkeinngang og -utgang er implementert og aktivert som standard. Hvis ingen klokkeinngang mottas, settes tempoet med det dedikerte potensiometeret. Hvis en MIDI -klokkeinngang mottas, beregnes tempoet ut fra det, og tempo -potensiometeret reagerer ikke. MIDI -klokke sendes alltid til MIDI -utgangen.

Trinn 6: Rytmeseksjon

Den opprinnelige ideen var en "ren" 64 trinns MIDI trommesekvenser for å sekvensere opptil 12 uavhengige trommeldeler. Etter noen tester la jeg merke til at det også hadde vært fint å kontrollere en basslinje, og jeg tildelte funksjonen til en variabel tonehøyde per trinn bare til den siste trommelen. Etter det endret jeg koden igjen slik at jeg kunne endre tonehøyden i hver tromme og kontrollere opptil 12 synthesizere. En revisjon senere la jeg til polyfoni (polyfoni per synth begrenset til 3 som standard).

Å oppsummere:

- mens LIVE-opptak er aktivert og sekvensen er startet i LIVE-modus, kan du spille inn innkommende MIDI-notater, polyfonisk. Informasjon om tonehøyde og volum vil bli lagret. Informasjon om stigningsbøyning og ettersporing går tapt. MIDI Control Change -meldinger lagres. Husk at du bare har ett CC -spor per kanal, per trinn.

- Hvis sekvensen stoppes, kan du registrere opptil 3 tonehøydeverdier (akkord) til et bestemt trinn i en bestemt stolpe ved å holde inne destinasjonstrinnknappen og trykke (samtidig eller en etter en) de ønskede tastene på tastaturet koblet til MIDI IN -porten.

Legg merke til det:

- lappen som utløses på et trinn blir "drept" på det neste trinnet. For å øke notatlengden, må du handle på "release" VCA -parameteren til din synthesizer.

- i motsetning til trommer, kan noter ikke spilles i et kast ved å trykke på "rull" -knappen.

- Når du tar opp LIVE, blir de innkommende MIDI -kanaldataene lagret i det relative "trommelen" -trinnet (MIDI -kanal #1 -> "trommelen" #1 og så videre).

Du kan slette en bestemt synth -sekvens ved å trykke på den relative "trommelen" -knappen mens du holder inne "REC" -knappen. Trykk på den igjen for å slette trommesekvensen. Hvis en CC -sekvens ble spilt inn, vil det være den første som blir slettet, deretter etter ordren CC -> Synth -> Trommel

Trinn 7: Arpeggio utløser

Tidlig på 80-tallet pre-MIDI-synths er ofte utstyrt med en noen ganger kalt "arpeggio trigger input". Ved å sende et 2,5 til 5,0 V triggsignal (V-trig eller "spenningsutløser") eller ved å jorde arpeggioutløserinngangen (S-Trig eller "switch trigger") kan du fortelle synthesizeren å gå et trinn videre på en arpeggiosekvens. Dette kan være vanskelig å håndtere med en sequencer uten en dedikert trigger out (noen ganger "rimshot" -lyder fra en dedikert out hvor/brukes som en hensiktsmessig for V-trig-synths), men med et mikrokontrollerbord kan du enkelt administrere slike signaler og kontroller din synth -arpeggio slik den var ment for fabrikken.

Denne rytmeseksjonen sequencer inkluderer muligheten til å utløse arpeggiatoren til to forskjellige synthesizere, uavhengig av hverandre.

Bruken er veldig enkel: velg trommel 11 eller 12 (trykk på trinn 11 eller 12 mens du trykker på "shift") og aktiver trinnene du vil at arpeggiatoren skal flytte i ett trinn. På denne måten kan du "programmere" veldig stramme 1/16 av en notatlengde vanlige arpeggioer ved å aktivere alle trinnene, eller 1/8 ved å aktivere hvert annet trinn. I tillegg kan du programmere mer komplekse arpeggioer ved å aktivere trinn som følger en ikke-vanlig bane.

Avhengig av triggersignaltypen som støttes av synthen du vil kontrollere, trenger du en enkel maskinvaremodifikasjon: i tilfelle V-trig (dvs. Roland-synths) plasserer du en 1 Kohm-motstand i serie med arduino-triggerutgang. I tilfelle av en S-trig (dvs. Korg-synths) bruker du den sjematiske som er festet til "kabling" -trinnet for en sikker bryterutløser.

Trinn 8: Hvis ting ikke fungerer …

Selv et relativt enkelt prosjekt som dette vil mest sannsynlig ikke fungere 100% første gang du slår det på. Her, i eksempel, er korrespondansen mellom knapper og lysdioder avgjørende, og en ubeskyttet ledning vil gjøre sekvenseren ubrukelig.

For å teste alle de forskjellige komponentene som utgjør trinnfølgeren, skrev jeg en enkel testskisse (se vedlegg).

Du kan laste ned den nyeste testfastvaren HER (GitHub -lenke).

Testskissen fungerer som følger:

- trykk på en trinnknapp: den tilhørende LED-lampen skal slås på og en MIDI-notat på kanal 10 vil bli sendt til MIDI-utgangen.

- trykk på en funksjonsknapp: en av de første 5 lysdiodene tennes.

-vri et potensiometer: Lysdioder vil lyse tilsvarende (første gryte -> første LED -rad, andre pott -> andre LED -rad, tredje pott -> tredje LED -rad).

- hvis en MIDI -notat er mottatt, blinker første LED.

Husk at MIDI -ekko er aktivert som standard. Dette betyr at hvis du har en MIDI-sløyfe mellom en synth og MRSS, kan dette forårsake problemer (jeg opplevde en forutsigbar dobbelnote som utløste de fleste ganger, men også svært lave toner utløst og et generelt ikke-reagerende innebygd tastatur med synths med MIDI ut som MIDI Throu … det avhenger av synthen). Hvis dette er tilfelle, deaktiver du MIDI -ekko ved å trykke på "mute" -knappen mens du holder inne "shift" -knappen.

Anbefalt: