Innehållsförteckning:

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

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

Video: Arduino MIDI Rhythm Section Sequencer: 8 steg (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

Att ha en bra mjukvarutrummaskin är enkelt och billigt idag, men att använda en mus dödar det roliga för mig. Det är därför jag insåg vad som ursprungligen var tänkt som en ren 64 -stegs MIDI -trummesekvenserare för maskinvara som kan utlösa upp till 12 olika trumelement (delar), men utvecklades sedan i en rytmsektionssekvens …

… där går vi!

Steg 1: Hur det fungerar

Denna hårdvara kan inte generera ljud på egen hand, utan bara sekvensera extern hårdvara via MIDI. Det betyder att du kommer att behöva en ljudgenerator för dina trumljud (en sampler eller en trumsynthesizer eller en dator med din favorittrumprogramvara eller vad du än föredrar) som kan triggas av MIDI-anteckningsmeddelanden.

Den består huvudsakligen av en matris på 4 x 4 knappar (med lysdioder), en för varje steg i en stapel. Hela 64 -stegssekvensen består av 16 steg multiplicerade med 4 staplar. Varje steg är 1/16 av en lapp.

Det finns två driftsätt: live -läge och redigeringsläge.

I redigeringsläge kan du faktiskt steg-för-steg redigera din sekvens genom att definiera vilken trumma som ska spelas i varje steg.

Ditt externa hårdvaruinstrument ("trumma") utlöses genom att en MIDI "note on" meddelande skickas för olika "MIDI note numbers" på kanalnummer "10". Som standard är dessa notnummer

trumma #1 (dvs. kick) -> MIDI -notnummer "60"

trumma 2 (dvs. snare) -> MIDI -notnummer "62"

trumma #3 (dvs. klappa) -> MIDI -notnummer "64"

trumma #4 (dvs. Hihat) -> MIDI -notnummer "65"

trumma #5 -> MIDI -notnummer "67"

trumma #6 -> MIDI -notnummer "69"

trumma #7 -> MIDI -notnummer "71"

trumma #8 -> MIDI -notnummer "72"

trumma #9 -> MIDI -notnummer "74"

trumma #10 -> MIDI -notnummer "76"

trumma #11 -> MIDI -notnummer "77"

trumma #12 -> MIDI -notnummer "79"

Du kan ändra dessa värden (och MIDI -kanalen) i skissen om du föredrar det.

I live -läge genom att trycka på stegknappar kan du spela upp trummor som är associerade till varje steg genom att skicka MIDI -meddelanden via serie. Du kan spela in dina knapptryckningar och/eller inkommande MIDI -meddelanden live.

Både i live -läge och redigeringsläge kan du stänga av (eller slå på) en trumma, "rulla upp" den för närvarande aktiva trumman och "svänga" din sekvens.

Rytmavsnitt?

De flesta trumsekvenserare är enbart MIDI -trummedelstrigger, med ett fast MIDI -notnummer för varje trumljud. I det här fallet har vi en "rhythm section sequencer" mer än en ren "drum sequencer" eftersom du till och med kan sekvensera synthesizers.

Läs QUICK START GUIDE för mer information och en fullständig lista med funktioner.

Steg 2: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara

Detta projekt förverkligas kring en Arduino DUE -bräda. Jag försökte hålla hårdvaran så enkel som möjligt, det vill säga genom att undvika att använda LED -drivrutiner. Arduino DUE är sannolikt inte den mest lämpliga brädan för att hantera ett gäng lysdioder utan en LED -drivrutin på grund av dess utgångsströmgränser (från 5 mA till 15 mA, beroende på stiftet), men det är den snabbaste Arduino och timing är allt när man handlar med sekvenserare. Så kom ihåg att DENNA hårdvarukonfiguration troligen kommer att driva din Arduino PÅ dess gränser och kan skada den på lång sikt.

Med detta sagt är hårdvaran huvudsakligen en 16 knappar, 16 lysdioder (en för varje steg) sequencer med 5 extra knappar för funktioner och 3 potentiometrar. Jag lade också till en röd lysdiod efter att ha lagt till en liveinspelningsfunktion.

Här är materialförslaget:

- 1x Arduino DUE

- 16x tillfälliga, icke -låsbara tryckknappar med integrerade lysdioder (du kan använda externa lysdioder om du föredrar det, men kom ihåg att använda lysdioder med låg effekt !!)

- 1x röd LED (låg effekt!)

- 5x korta, icke -låsbara tryckknappar

- 3x 10K enkelvarv, linjära, potentiometrar

- 3x 6,5 mm panelmonterad mono jack hona

- 1x plastfodral (jag använde ett 190x140x70 mm fodral)

- 2x 5-polig DIN hona panelmonterad kontaktdon (MIDI)

- 1x dubbelsidig 70x90 mm perf kartong

- 2x 40 -stifts hanrad med enkel radstift (2,54 mm), bättre om den är guldpläterad

- 1x H11L1 optokopplare

- 1x 1N4148 diod

- 23x 1000 ohm motstånd

- 3x 220 ohm motstånd

- 2x BC547 pnp -transistorer

… lödtråd, några kablar, lödstation, ett borrverktyg … och fritid:)

Observera att knapparna på bilderna har ersatts med en annan typ av (ännu billigare …) tryckknappar på grund av den upprörande studsningen …

Tid som krävs för att slutföra projektet: 8-10 timmar

VARNING: Bär ALLTID skyddsglasögon och handskar vid borrning! Heta materialfläckar kan projiceras i dina ögon eller komma i kontakt med din hud och orsaka brännskador eller ännu allvarligare skador på dig eller människor i din omgivning

Steg 3: Trådar

Trådar
Trådar
Trådar
Trådar
Trådar
Trådar

Stegknapparna är direkt anslutna till Arduino -stiften från 22 (steg 1) till 37 (steg 16). Knapparnas jord är daisy -kedjad och ansluten till Arduino DUE -marken. Det finns inget behov av pullup- eller pulldown -motstånd eftersom Arduino integrerade pullup -motstånd är programvaruaktiverade (se skissen).

Detsamma gäller de ytterligare 5 knapparna (Arduino -stift 2, 3, 4, 5 och 6), som används för andra funktioner än steg. Jag placerade också en 6,5 mm honkontakt parallellt med "start" -knappen för att kunna spela och stoppa mina sekvenser på distans.

Lysdioder är anslutna till jord (daisy chain) och Arduino DUE -stift från 38 (steg #1) till 53 (steg #16) i serie med ett 1K ohm -motstånd vardera för att begränsa strömavloppet och bevara mikrokontrollern.

Potentiometrar är anslutna enligt bilden. Observera att referensspänningen är 3,3V, inte 5V. Ingångar som används är A0, A1 och A2.

Jag implementerade också två triggerutgångar för arpeggiosignaler, som de som krävs för att arpegiera gamla 80 -tals synth som Korg Polysix och Roland Juno 6/60. De är anslutna till stiften A3 och A4, men du kan använda digitala stift om du föredrar att vara digitala signaler. Om du ska sekvensera en synth som är kompatibel med V-Trig (spänningsutlösare) signaler, räcker det med ett 1k ohm seriemotstånd för att minska strömavloppet; i fallet med en S-Trig (switch trigger) synth, behöver du en enkel pnp switch krets (se bifogat schema).

MIDI IN- och OUT -kretsarna schematiseras i de bifogade bilderna. Observera att, till skillnad från de flesta arduinos, används Rx1 och Tx1 som standard på DUE -kort i stället för Rx0 och Tx0. Det här är bra eftersom du kan ladda upp din skiss utan att behöva koppla bort Rx varje gång. Lägg också märke till att jag har använt en H11L1 optokopplare eftersom jag inte kunde köra som den borde en vanlig 6N138 inom Arduino DUE 3.3V -gränsen.

Steg 4: Programvara

Skissen har skrivits inom Arduino IDE och måste laddas upp till ditt Arduino DUE -kort. Jag kommer inte att gå in på detaljer om hur du laddar upp skissen till din arduino DUE. Om detta är din första erfarenhet av Arduino DUE läs detta. Om detta är din första erfarenhet av arduino IDE, läs också detta.

Du kan ladda ner den uppdaterade firmwareHERE (github -länk).

Skissen bygger på det utmärkta FortySevenEffects MIDI -biblioteket. Du måste installera biblioteket i din arduino IDE.

MIDI out -anteckningar som tilldelats varje trumma definieras av variabeln drumNote [STEPS_NUM] i skissen. Du kan ändra dem efter din vilja.

MIDI out -kanalnummer för trummor är som standard inställt på "10".

Jag är inte en kodare i verkligheten och det finns säkert bättre sätt att koda vad vi behöver här. Om du är en kodare med något förslag är du välkommen! Skicka mig en variant som kan öka kodens effektivitet/effektivitet så tar jag med den till huvudskissen (med hänvisning till bidragsgivaren självklart!).

Steg 5: Snabbstartguide

DRUM: STEG-FÖR-STEG-SEKVENSERING

Så snart du sätter på din sequencer (eller återställer den) laddas en tom sekvens. Sequencern startar upp i redigeringsläge, med den första baren kvar/låst och den första trumman (dvs. kick) vald. Detta innebär att genom att trycka på valfri stegknapp, kommer du omedelbart att tilldela "kick" till dessa steg. Volymen som trumman kommer att utlösas ställs in av positionen för "volym" -potentiometern när trumman tilldelas steget. Genom att trycka på en tidigare tilldelad stegknapp kommer du att tilldela den aktuella trumman på det steget.

Om du trycker på "start" -knappen ser du dina lysdioder som går från vänster till höger, uppifrån och ner, och spelar "kick" varje gång ett sparksteg korsas.

Genom att hålla ned "shift" -knappen ser du första stegets lysdiod på första raden tänd (vilket betyder att den första trumman är vald) och första stegets lysdiod på den fjärde raden (vilket betyder att du är låst till den första raden). Du kan nu byta trumma som du vill sekvensera genom att trycka på en annan stegknapp samtidigt som du håller "shift" intryckt. Efter att du valt den nya trumman, släpp "skift". Alla lysdioder släcks (eftersom du inte har tilldelat den nya trumman till något steg) och du kan börja tilldela den nya trumman till steg. Upprepa för alla trummor du behöver (upp till 12).

Nu när du har skapat ett snyggt mönster, håll "shift" intryckt och stäng av det högt ställda steget på den nedre raden (det borde vara det första steget i den fjärde raden om du har använt samma layout som jag använde): du har bara " upplåst "sekvensen som nu körs över alla fyra staplarna. De nedre råa lysdioderna börjar "flytta", vilket indikerar vilken stapel som spelas för närvarande (stapelprogression). Du kommer att märka att endast i den första stapeln kommer en sekvens att spelas, där alla andra tre staplar inte ger några ljud. Detta beror på att du bara har tilldelat trummor till den första stapeln, de andra lämnas tomma. Du kan fylla dem för hand (välj en ny stapel genom att trycka på en av de sista fyra stegsknapparna medan du håller ned "shift", välj en av trummorna, fyll i stegen etc. etc.) eller kopiera och klistra in stapelföljden du skapade till alla staplar genom att gå in i redigeringsläge (låsa om till första stapeln) och tryck på "spela in" (som nu antar "klistra in" -funktionen) medan du håller ned "skift". Lättare gjort än sagt.

DRUMS: LIVE PLAY MODE

Vid start är sequencer i redigeringsläge. För att lämna redigeringsläget måste du hålla ned "shift" och trycka på bar -knappen som för närvarande hålls/låses (stegknappen på fjärde raden är aktiverad). Detta kommer att stänga av lysdioden på den tidigare låsta stapeln och låsa upp sekvensen. Du är nu i live play -läge.

I live -uppspelningsläge aktiveras trumman som är kopplad till den knappen genom att trycka på valfri stegknapp.

Om du vill spela in din sekvens live, starta sekvensen genom att trycka på "play", tryck sedan på "record" -knappen (endast i live play -läge). En röd lysdiod tänds. Din spelning på trumsekvensens kontrollpanelsmatris eller något inkommande MIDI-meddelande (dvs. från ett externt MIDI-tangentbord) kommer att spelas in.

Andra funktioner

Genom att trycka på "rulla" -knappen spelas den för närvarande aktiva trumman vid varje steg (i en rulle). Detta fungerar i både "steg-för-steg" och "live-play" lägen.

Genom att trycka på valfri stegknapp medan du håller knappen "mute" intryckt kommer trumman som är kopplad till det steget att stängas av (eller avstängas). Detta fungerar i både "steg-för-steg" och "live-play" lägen.

Du kan rensa en specifik trumsekvens genom att trycka på den relativa stegknappen medan du håller ned "REC" -knappen.

Du kan rensa hela sekvensen (mjuk återställning) genom att hålla "start" -knappen intryckt i mer än 3 sekunder.

Du kan "svänga" din sekvens genom att vrida på "sväng" -potentiometern.

Du kan inaktivera/aktivera MIDI -eko genom att trycka på "mute" -knappen medan du håller ned "shift" -knappen. När MIDI -eko är aktiverat (standard) kommer all information som finns i MIDI INPUT -uttaget att skickas till MIDI OUTPUT -uttaget (endast MIDI -anteckning på, anteckning av, tonböjning, efterberöring och kontrolländring ekas).

Både MIDI -klocksignal och -utgång är implementerade och aktiverade som standard. Om ingen klockinmatning tas emot, ställs tempot in med den dedikerade potentiometern. Om en MIDI -klocksignal tas emot beräknas tempot från detta och tempotentiometern svarar inte. MIDI -klockan skickas alltid till MIDI -utgången.

Steg 6: Rytmavsnitt

Den ursprungliga idén var en "ren" 64 -stegs MIDI -trumföljare för att ordna upp till 12 oberoende trumdelar. Efter några tester märkte jag att det också hade varit trevligt att styra en baslinje, och jag tilldelade bara den senaste trumman funktionen med en variabel tonhöjd per steg. Efter det ändrade jag koden igen så att jag kunde ändra tonhöjden i varje trumma och styra upp till 12 synt. En översyn senare lade jag till polyfoni (polyfoni per synt begränsad till 3 som standard).

För att sammanfatta:

- i LIVE-läge, om LIVE-inspelning är aktiverad och sekvensen startat, kan du spela in inkommande MIDI-anteckningsmeddelanden polyfoniskt. Pitch och volyminformation kommer att lagras. Höjdböjning och information om efterkörning förloras. MIDI Control Change -meddelanden lagras. Tänk på att du bara har en CC -plats per kanal, per steg.

- Om sekvensen stoppas kan du spela in upp till 3 tonvärden (ackord) till ett specifikt steg i en specifik stapel genom att hålla ned destinationsstegsknappen och trycka (samtidigt eller en efter en) på önskade tangenter på tangentbordet anslutet till MIDI IN -porten.

Lägg märke till att:

- lappen som utlöses på ett steg "dödas" i nästa steg. För att öka notlängden, handla på "release" VCA -parametern för din synthesizer.

- i motsats till trummor kan noter inte spelas i en rulle genom att trycka på knappen "rulla".

- Vid inspelning LIVE lagras inkommande MIDI -kanaldata i det relativa "trumman" -steget (MIDI -kanal #1 -> "trumma" #1 och så vidare).

Du kan rensa en specifik syntsekvens genom att trycka på den relativa "trumman" -knappen medan du håller ned "REC" -knappen. Om du trycker på den igen rensas trumsekvensen också. Om en CC -sekvens spelades in kommer det att bli det första som raderas, sedan efter ordningen CC -> Synth -> Trumma

Steg 7: Arpeggio Triggers

Tidiga 80-talets pre-MIDI-synthar är ofta utrustade med en ibland kallad "arpeggio trigger input". Genom att skicka en 2,5 till 5,0 V triggsignal (V-trig eller "spänningsutlösare") eller genom att jorda arpeggiotriggeringången (S-Trig eller "switch trigger") kan du säga synthesizern att gå ett steg framåt på en arpeggiosekvens. Detta kan vara svårt att hantera med en sequencer utan en dedikerad trigger out (ibland "rimshot" -ljud från en dedikerad ut där/används som ett ändamål för V-trig-synt) men med ett mikrokontrollerkort kan du enkelt hantera sådan signal och styrning din synth arpeggio som den var tänkt av fabriken.

Denna sekvens för rytmsektionen inkluderar möjligheten att aktivera arpeggiatorn för två olika synthesizers, oberoende av varandra.

Användningen är mycket enkel: välj trumma 11 eller 12 (tryck på steg 11 eller 12 medan du trycker på "skift") och aktivera de steg du vill att arpeggiatorn ska flytta i ett steg. På så sätt kan du "programmera" mycket snäva 1/16 av en tonlängd regelbundna arpeggior genom att aktivera alla steg, eller 1/8 av att aktivera vartannat steg. Dessutom kan du programmera mer komplexa arpeggior genom att aktivera steg efter en oregelbunden sökväg.

Beroende på vilken triggersignaltyp som stöds av den synth du vill styra, behöver du en enkel hårdvarumodifiering: i fallet med V-trig (dvs. Roland-synt) placerar du ett 1 Kohm-motstånd i serie med arduino-utgångsutgång. I fallet med en S-trig (dvs Korg-synt) använder du den schematiska som är fäst vid "ledningssteget" för en säker omkopplare.

Steg 8: Om saker inte fungerar …

Även ett relativt enkelt projekt som det här kommer sannolikt inte att fungera 100% första gången du slår på det. Här, till exempel, är överensstämmelsen mellan knappar och lysdioder avgörande, och en oförstörd ledning kommer att göra sequencern oanvändbar.

För att testa alla de olika komponenterna som består av stegsekvenseraren skrev jag en enkel testskiss (se bilaga).

Du kan ladda ner den senaste testprogramvaran HÄR (GitHub -länk).

Testskissen fungerar enligt följande:

- tryck på en stegknapp: motsvarande lysdiod ska tändas och en MIDI-anteckning på kanal 10 skickas till MIDI-utgången.

- tryck på en funktionsknapp: en av de första 5 lysdioderna tänds.

-vrid en potentiometer: Lysdioder tänds i enlighet därmed (första kruka -> första lysdioderad, andra kruka -> andra lysdioderad, tredje kruka -> tredje lysdioderad).

- om en MIDI -anteckning tas emot blinkar den första lysdioden.

Tänk på att MIDI -eko är aktiverat som standard. Det betyder att om du har en MIDI-loop mellan en synth och MRSS, kan detta orsaka problem (jag upplevde en förutsägbar dubbelnot som utlöste de flesta gånger, men också mycket låga toner utlöstes och ett generellt inte reagerat inbyggt tangentbord med synthar med MIDI ut fungerar som MIDI Throu … det beror på synten). Om så är fallet, inaktivera MIDI -eko genom att trycka på "mute" -knappen medan du håller ned "shift" -knappen.

Rekommenderad: