Indholdsfortegnelse:

Arduino MIDI Rhythm Section Sequencer: 8 trin (med billeder)
Arduino MIDI Rhythm Section Sequencer: 8 trin (med billeder)

Video: Arduino MIDI Rhythm Section Sequencer: 8 trin (med billeder)

Video: Arduino MIDI Rhythm Section Sequencer: 8 trin (med billeder)
Video: Arduino Drum Sequencer: 8 tracks, 16 steps per measure, 8 measures per pattern 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

At have en god software -trommemaskine er let og billigt i dag, men ved hjælp af en mus dræber det sjovt for mig. Det er derfor, jeg indså, hvad der oprindeligt var tænkt som en ren 64 -trins hardware MIDI -trommesekvens, der var i stand til at udløse op til 12 forskellige tromleelementer (dele), men derefter udviklede sig til en rytmesektion -sekvens …

… sådan der!

Trin 1: Sådan fungerer det

Denne hardware kan ikke generere lyde alene, men kun sekvensere ekstern hardware via MIDI. Det betyder, at du skal bruge en lydgenerator til dine trommelyde (en sampler eller en trommesynthesizer eller en pc med din foretrukne trommesoftware eller hvad du nu foretrækker), der kan udløses af MIDI-noter.

Den består hovedsageligt af en matrix på 4 x 4 knapper (med lysdioder), en for hvert trin i en bar. Hele 64 trins sekvens består af 16 trin multipliceret med 4 søjler. Hvert trin er 1/16 af en note.

Der er to funktionsmåder: live -tilstand og redigeringstilstand.

I redigeringstilstand kan du faktisk trin-for-trin redigere din sekvens ved at definere, hvilken tromme der skal spilles i hvert trin.

Dit eksterne hardwareinstrument ("tromme") udløses ved at sende en MIDI "note on" meddelelse for forskellige "MIDI note numre" på kanalnummer "10". Disse notenumre er som standard

tromme #1 (dvs. spark) -> MIDI -note nummer "60"

tromme #2 (dvs. snare) -> MIDI note nummer "62"

tromme #3 (dvs. klap) -> MIDI -note nummer "64"

tromme #4 (dvs. Hihat) -> MIDI note nummer "65"

tromme #5 -> MIDI note nummer "67"

tromme #6 -> MIDI note nummer "69"

tromme #7 -> MIDI note nummer "71"

tromme #8 -> MIDI note nummer "72"

tromme #9 -> MIDI note nummer "74"

tromme #10 -> MIDI note nummer "76"

tromme #11 -> MIDI note nummer "77"

tromme #12 -> MIDI note nummer "79"

Du kan ændre disse værdier (og MIDI -kanalen) i skitsen, hvis du foretrækker det.

I live -tilstand ved at trykke på trinknapper kan du live play -trommer, der er knyttet til hvert trin, ved at sende MIDI -meddelelser gennem seriel. Du kan live optage dine knaptryk og/eller indgående MIDI -meddelelser.

Både i live -tilstand og redigeringstilstand kan du slå en tromme fra (eller deaktivere), "rulle" den aktuelt aktive tromme og "svinge" din sekvens.

Rytmesektion?

De fleste af trommesekvenserne er udelukkende MIDI -trommedele -udløsere, med et fast MIDI -notenummer for hver trommelyd. I dette tilfælde har vi en "rhythm section sequencer" mere end en ren "drum sequencer", fordi du endda kan sekvensere synthesizere.

Læs QUICK START GUIDE for flere detaljer og en komplet liste over funktioner.

Trin 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Dette projekt realiseres omkring et Arduino DUE -bord. Jeg forsøgte at holde hardwaren så enkel som muligt, dvs. ved at undgå at bruge LED -drivere. Arduino DUE er sandsynligvis ikke det mest passende bord til at håndtere en flok lysdioder uden en LED -driver på grund af dets udgangsstrømgrænser (fra 5 mA til 15 mA, afhængigt af stiften), men det er den hurtigste Arduino og timing er alt, når man handler med sekventer. Så husk på, at DENNE hardwarekonfiguration sandsynligvis skubber din Arduino PÅ sine grænser og kan beskadige den på lang sigt.

Når det er sagt, er hardwaren hovedsageligt en 16 knapper, 16 LED'er (en for hvert trin) sequencer med 5 ekstra knapper til funktioner og 3 potentiometre. Jeg tilføjede også en rød LED efter tilføjelse af en live optagefunktion.

Her er styklisten:

- 1x Arduino DUE

- 16x øjeblikkelige, ikke -låsende trykknapper med integrerede LED'er (du kan bruge eksterne LED'er, hvis du foretrækker det, men husk at bruge LED'er med lav effekt !!)

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

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

- 3x 10K enkelt omdrejning, lineære, potentiometre

- 3x 6,5 mm panelmonteret mono jack hun

- 1x plastikhus (jeg brugte et 190x140x70 mm etui)

- 2x 5-polet DIN hun-panelmonteret stikdåse (MIDI)

- 1x dobbeltsidet 70x90 mm perf bord

- 2x 40 pin han -enkelt række pin header strip (2,54 mm), bedre hvis forgyldt

- 1x H11L1 optokobler

- 1x 1N4148 diode

- 23x 1000 ohm modstande

- 3x 220 ohm modstande

- 2x BC547 pnp -transistorer

… loddetråd, nogle kabler, loddestation, et boreværktøj … og fritid:)

Bemærk, at knapperne på billederne er blevet erstattet med en anden type (endnu billigere …) trykknapper på grund af det skandaløse studs …

Tid, der kræves for at fuldføre projektet: 8-10 timer

ADVARSEL: Brug ALTID beskyttelsesbriller og handsker under boring! Varme materialeflakker kan projiceres til dine øjne eller komme i kontakt med din hud og forårsage forbrændinger eller endnu mere alvorlig skade på dig eller mennesker omkring dig

Trin 3: Ledninger

Wirings
Wirings
Wirings
Wirings
Wirings
Wirings

Trinknapper er direkte forbundet til Arduino -ben fra 22 (trin 1) til 37 (trin16). Knapper jorden er daisy lænket og forbundet til Arduino DUE jorden. Der er ikke behov for pullup- eller pulldown -modstande, da Arduino integrerede pullup -modstande er software aktiveret (se skitsen).

Det samme er tilfældet med de yderligere 5 knapper (Arduino pins 2, 3, 4, 5 og 6), der bruges til andre funktioner end trin. Jeg placerede også et 6,5 mm hunstik stik parallelt med "start" -knappen for at kunne afspille og stoppe mine sekvenser eksternt.

Lysdioder er forbundet til jord (daisy chain) og Arduino DUE pins fra 38 (trin #1) til 53 (trin #16) i serie med en 1K ohm modstand hver for at begrænse det aktuelle afløb og bevare mikrokontrolleren.

Potentiometre tilsluttes som vist på det vedhæftede billede. Bemærk, at referencespændingen er 3,3V, ikke 5V. De anvendte input er A0, A1 og A2.

Jeg implementerede også to trigger -udgange til arpeggiosignaler, som dem, der kræves for at arpegiere gamle 80'ers synth som Korg Polysix og Roland Juno 6/60. De er forbundet til ben A3 og A4, men du kan bruge digitale ben, hvis du foretrækker at være digitale signaler. Hvis du vil sekvensere en synth, der er kompatibel med V-Trig (spændingsudløser) signaler, vil en 1k ohm seriemodstand være tilstrækkelig; i tilfælde af en S-Trig (switch trigger) synth, skal du bruge et simpelt pnp switch kredsløb (se vedhæftede skema).

MIDI IN og OUT kredsløb er skematiseret i de vedhæftede billeder. Bemærk, at i modsætning til de fleste arduinos bruges Rx1 og Tx1 som standard på DUE -kort i stedet for Rx0 og Tx0. Dette er fantastisk, fordi du kan uploade din skitse uden at skulle afbryde Rx hver gang. Bemærk også, at jeg har brugt en H11L1 optokobler, fordi jeg ikke var i stand til at køre, som den skulle en fælles 6N138 inden for Arduino DUE 3.3V -grænsen.

Trin 4: Software

Skitsen er skrevet i Arduino IDE og skal uploades til dit Arduino DUE -kort. Jeg vil ikke gå i detaljer om, hvordan du uploader skitsen til din arduino DUE. Hvis dette er din første oplevelse med Arduino DUE, kan du læse dette. Hvis dette er din første oplevelse med arduino IDE, kan du også læse dette.

Du kan downloade den opdaterede firmwareHERE (github -link).

Skitsen er baseret på det fremragende FortySevenEffects MIDI -bibliotek. Du skal installere biblioteket i din arduino IDE.

MIDI out -noter, der er tildelt hver tromme, defineres af drumNote [STEPS_NUM] -variablen i skitsen. Du kan ændre dem efter eget ønske.

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

Jeg er ikke en koder i det virkelige liv, og der er helt sikkert bedre måder at kode, hvad vi har brug for her. Hvis du er en koder med forslag, er du velkommen! Send mig venligst enhver variation, der kan øge kodens effektivitet/effektivitet, og jeg vil medtage den til hovedskitsen (med angivelse af bidragyder naturligvis!).

Trin 5: Hurtig startguide

DRUMS: TRIN-FOR-TRIN SEKVENSERING

Så snart du tænder for din sequencer (eller nulstiller den), indlæses en tom sekvens. Sequenceren starter op i redigeringstilstand, med den første bar holdt/låst og den første tromle (dvs. spark) valgt. Det betyder, at ved at trykke på en vilkårlig trinknap, vil du straks tildele "spark" til disse trin. Den volumen, tromlen vil blive udløst, indstilles af positionen af "volumen" potentiometeret, når tromlen tildeles trinet. Ved at trykke på en tidligere tildelt trinknap igen vil du tildele den aktuelle tromle på det trin.

Hvis du trykker på "start" -knappen, ser du dine lysdioder kører fra venstre mod højre, top til bund, og spiller "spark", når et kick -trin krydses.

Ved at holde knappen "skift" nede, vil du se 1. trin -LED'en på 1. række tændt (hvilket betyder, at den første tromle er valgt) og første trin -LED på den fjerde række (hvilket betyder, at du er låst til den første bjælke). Du kan nu ændre tromlen, du vil sekvensere, ved at trykke på en anden trinknap, mens "shift" holdes nede. Efter valg af den nye tromle, slip "skift". Alle lysdioder slukker (fordi du ikke har tildelt den nye tromle til noget trin), og du kan begynde at tildele den nye tromle til trin. Gentag for alle de trommer, du har brug for (op til 12).

Nu hvor du har oprettet et flot mønster, skal du trykke på "skift" og slukke for det højligt markerede trin på nederste række (det skulle være det første trin i den 4. række, hvis du har taget det samme layout, som jeg brugte): du har bare " låst op "sekvensen, der nu vil køre over alle de 4 søjler. Nederste rå LED'er begynder at "bevæge sig", hvilket angiver hvilken bjælke der aktuelt afspilles (bjælkeforløb). Du vil bemærke, at kun når der i den første bjælke spilles en sekvens, hvor alle de andre 3 søjler ikke genererer lyde. Dette skyldes, at du kun har tildelt trommer til den første bjælke, de andre bliver efterladt tomme. Du kan fylde dem med hånden (vælg en ny bjælke ved at trykke på en af de sidste 4 trin -knapper, mens du holder "shift" nede, vælg en af tromlerne, udfyld trinene osv. Osv.) Eller kopier og indsæt den bjælkesekvens, du har oprettet til alle søjler ved at gå ind i redigeringstilstand (genlås til første bjælke) og trykke på "optag" (som nu antager "indsæt" -funktionen), mens du holder "shift" nede. Lettere gjort end sagt.

DRUMS: LIVE PLAY MODE

Ved opstart er sequencer i redigeringstilstand. For at forlade redigeringsfunktionen skal du holde "shift" nede og trykke på bar -knappen, der aktuelt holdes/låses (trinknappen på 4. række tændt). Dette vil slukke LED'en for den tidligere låste bjælke og låse sekvensen op. Du er nu i live play -tilstand.

I live afspilningstilstand udløses tromlen, der er knyttet til den knap, ved at trykke på en vilkårlig trinknap.

Hvis du vil live optage din sekvens, skal du starte sekvensen ved at trykke på "afspil" og derefter trykke på knappen "optag" (kun i live afspilningstilstand). En rød LED tændes. Dit spil på trommesekvensens kontrolpanel matrix eller en indgående MIDI note-on besked (dvs. fra et eksternt MIDI keyboard) vil blive optaget.

Andre funktioner

Ved at trykke på "rulle" -knappen afspilles den aktuelt aktive tromme ved hvert trin (i en rulle). Dette fungerer i både "trin-for-trin" og "live-play" -tilstande.

Ved at trykke på en vilkårlig trinknap, mens du holder knappen "mute" nede, vil tromlen, der er knyttet til dette trin, blive slået fra (eller ikke slået fra). Dette fungerer i både "trin-for-trin" og "live-play" -tilstande.

Du kan slette en bestemt trommesekvens ved at trykke på den relative trinknap, mens du holder knappen "REC" nede.

Du kan slette hele sekvensen (blød nulstilling) ved at holde "start" -knappen inde i mere end 3 sekunder.

Du kan "svinge" din sekvens ved at dreje på "sving" potentiometeret.

Du kan deaktivere/aktivere MIDI -ekko ved at trykke på "mute" -knappen, mens du holder "shift" -knappen nede. Når MIDI -ekko er aktiveret (standard), vil enhver information, der er til stede i MIDI INPUT -stikket, blive sendt til MIDI OUTPUT -stikket (kun MIDI -note på, note off, pitch bend, aftertouch og kontrolændring ekko).

Både MIDI -urindgang og -udgang er implementeret og aktiveret som standard. Hvis der ikke modtages noget urindgang, indstilles tempoet med det dedikerede potentiometer. Hvis der modtages et MIDI -urindgang, beregnes tempoet ud fra det, og tempo -potentiometeret reagerer ikke. MIDI ur sendes altid til MIDI ud.

Trin 6: Rytmesektion

Den oprindelige idé var en "ren" 64 trin MIDI trommesekvens til sekvensering af op til 12 uafhængige tromledele. Efter nogle test bemærkede jeg, at det også ville have været rart at styre en baslinje, og jeg tildelte kun den nyeste tromle funktionen med en variabel pitch-per-step. Derefter ændrede jeg koden igen, så jeg kunne ændre tonehøjden i hver tromme og styre op til 12 synthesizere. En revision senere tilføjede jeg polyfoni (polyfoni pr. Synth begrænset til 3 som standard).

For at opsummere:

- i LIVE-tilstand, hvis LIVE-optagelse er aktiveret, og sekvensen er startet, kan du optage indgående MIDI-notatmeddelelser polyfonisk. Oplysninger om pitch og lydstyrke gemmes. Bøjning af bøjning og efterfølgende oplysninger går tabt. MIDI Control Change -meddelelser gemmes. Husk, at du kun har én CC -slot pr. Kanal pr. Trin.

- Hvis sekvensen stoppes, kan du optage op til 3 tonehøjdeværdier (akkord) til et bestemt trin i en bestemt søjle ved at holde knappen til destinationstrin nede og trykke på (samtidigt eller en efter en) de ønskede taster på tastatur tilsluttet MIDI IN -porten.

Læg mærke til det:

- sedlen udløst på et trin "dræbes" på det næste trin. For at øge notelængden skal du handle på "release" VCA -parameteren i din synthesizer.

- i modsætning til trommer kan noter ikke spilles i en rulle ved at trykke på knappen "rul".

- Ved optagelse af LIVE gemmes de indgående MIDI -kanaldata i det relative "tromle" trin (MIDI kanal #1 -> "tromme" #1 og så videre).

Du kan slette en bestemt synthsekvens ved at trykke på den relative "tromle" trin -knap, mens du holder knappen "REC" nede. Hvis du trykker på den igen, slettes trommesekvensen også. Hvis en CC -sekvens blev registreret, vil det være den første, der skal slettes, derefter efter ordren CC -> Synth -> Tromme

Trin 7: Arpeggio -udløsere

Tidlige 80'ere før MIDI-synths er ofte udstyret med en undertiden kaldet "arpeggio trigger input". Ved at sende et 2,5 til 5,0 V trig-signal (V-trig eller "spændingsudløser") eller ved at jorde arpeggiotriggerindgangen (S-Trig eller "switch trigger") kan du fortælle synthesizeren at gå et skridt videre på en arpeggiosekvens. Dette kan være svært at klare med en sequencer uden en dedikeret trigger-out (nogle gange lyder "rimshot" -lyde fra en dedikeret out, hvor/bruges som hjælpemiddel til V-trig-synths), men med et microcontroller-kort kan du nemt styre sådan signal og kontrol din synth -arpeggio, som den var beregnet til fra fabrikken.

Denne rytmesektions sequencer indeholder mulighed for at udløse arpeggiatoren for to forskellige synthesizere uafhængigt.

Brugen er meget let: Vælg tromle 11 eller 12 (tryk på trin 11 eller 12, mens du trykker på "skift"), og aktiver de trin, du vil have arpeggiatoren til at flytte et trin. På denne måde kan du "programmere" meget stramme 1/16 af en note, der længder regelmæssige arpeggioer ved at aktivere alle trin, eller 1/8th ved at aktivere hvert andet trin. Derudover kan du programmere mere komplekse arpeggioer ved at aktivere trin efter en ikke-regelmæssig sti.

Afhængigt af triggersignaltypen, der understøttes af den synth, du vil styre, skal du bruge en simpel hardwareændring: i tilfælde af V-trig (dvs. Roland-synths) placeres en 1 Kohm-modstand i serie med arduino-udgangsudgang. I tilfælde af en S-trig (dvs. Korg-synths) skal du bruge den skematiske, der er knyttet til "ledningsføring" -trinnet for at få en sikker switch-trigger.

Trin 8: Hvis tingene ikke virker …

Selv et relativt enkelt projekt som dette vil sandsynligvis ikke fungere 100% første gang du tænder det. Her, i eksempel, er korrespondensen mellem knapper og lysdioder afgørende, og en ubeskyttet ledning vil gøre sequencer ubrugelig.

For at teste alle de forskellige komponenter, der udgør trin -sequencer, skrev jeg en simpel testskitse (se vedhæftet fil).

Du kan downloade den nyeste test firmware HER (GitHub link).

Testskitsen fungerer som følger:

- tryk på en trinknap: den tilsvarende LED skal tænde, og en MIDI-note-on på kanal 10 sendes til MIDI-udgangen.

- tryk på en funktionsknap: en af de første 5 lysdioder tændes.

-drej et potentiometer: LED'er lyser i overensstemmelse hermed (første gryde -> første lysdioderække, anden gryde -> anden lysdioderække, tredje gryde -> tredje lysdioderække).

- hvis der modtages en MIDI -note på, blinker den første LED.

Husk, at MIDI -ekko er aktiveret som standard. Dette betyder, at hvis du har en MIDI-loop mellem en synth og MRSS, kan dette forårsage problemer (jeg oplevede en forudsigelig dobbeltnote, der udløste de fleste gange, men også meget lave toner udløst og et generelt ikke-reageret indbygget keyboard med synths med MIDI ud fungerer som MIDI Throu … det afhænger af synth). Hvis dette er tilfældet, skal du deaktivere MIDI -ekko ved at trykke på "mute" -knappen, mens du holder "shift" -knappen nede.

Anbefalede: