Sommario:

Sequencer sezione ritmica Arduino MIDI: 8 passaggi (con immagini)
Sequencer sezione ritmica Arduino MIDI: 8 passaggi (con immagini)

Video: Sequencer sezione ritmica Arduino MIDI: 8 passaggi (con immagini)

Video: Sequencer sezione ritmica Arduino MIDI: 8 passaggi (con immagini)
Video: Arduino 64 Step Sequencer с минимальным аппаратным обеспечением, адаптированный из Drum Sequencer 2024, Luglio
Anonim
Sequencer sezione ritmi MIDI Arduino
Sequencer sezione ritmi MIDI Arduino
Sequencer sezione ritmi MIDI Arduino
Sequencer sezione ritmi MIDI Arduino
Sequencer sezione ritmi MIDI Arduino
Sequencer sezione ritmi MIDI Arduino

Avere una buona drum machine software è facile ed economico oggi, ma usare un mouse uccide il divertimento per me. Questo è il motivo per cui ho realizzato quello che inizialmente era inteso come un sequencer di batteria MIDI hardware a 64 passi puro in grado di attivare fino a 12 diversi elementi di batteria (parti), ma poi si è evoluto in un sequencer di sezioni ritmiche…

… ci siamo!

Passaggio 1: come funziona

Questo hardware non può generare suoni da solo, ma solo l'hardware esterno in sequenza via MIDI. Ciò significa che avrai bisogno di un generatore di suoni dei tuoi suoni di batteria (un campionatore o un sintetizzatore di batteria o un PC con il tuo software di batteria preferito o quello che preferisci) in grado di essere attivato da messaggi MIDI di nota.

È composto principalmente da una matrice di 4 x 4 pulsanti (con LED), uno per ogni passo di una barra. L'intera sequenza di 64 passi è composta da 16 passi moltiplicati per 4 battute. Ogni passo è 1/16 di nota.

Ci sono due modalità di funzionamento: modalità live e modalità di modifica.

In modalità di modifica puoi effettivamente modificare passo passo la tua sequenza definendo quale batteria suonerà in ogni passaggio.

Il tuo strumento hardware esterno ("batteria") viene attivato inviando un messaggio MIDI "note on" per diversi "numeri di nota MIDI" sul numero di canale "10". Per impostazione predefinita, questi numeri di nota sono

batteria n. 1 (cioè cassa) -> numero nota MIDI "60"

drum #2 (cioè rullante) -> numero di nota MIDI "62"

tamburo #3 (cioè clap) -> numero di nota MIDI "64"

batteria #4 (cioè Hihat) -> numero nota MIDI "65"

tamburo #5 -> numero nota MIDI "67"

tamburo #6 -> nota MIDI numero "69"

batteria #7 -> nota MIDI numero "71"

tamburo #8 -> nota MIDI numero "72"

batteria #9 -> nota MIDI numero "74"

batteria #10 -> numero nota MIDI "76"

batteria #11 -> nota MIDI numero "77"

batteria #12 -> Numero nota MIDI "79"

Se preferisci, puoi modificare questi valori (e il canale MIDI) nello schizzo.

In modalità live premendo i pulsanti step è possibile suonare dal vivo la batteria associata ad ogni step inviando messaggi MIDI via seriale. Puoi registrare dal vivo la pressione dei pulsanti e/oi messaggi MIDI in arrivo.

Sia in modalità live che in modalità modifica è possibile disattivare (o riattivare) una batteria, "suonare" la batteria attualmente attiva e "swing" la sequenza.

Sezione ritmica?

La maggior parte dei drum sequencer sono trigger di parti di batteria puramente MIDI, con un numero di nota MIDI fisso per ogni suono di batteria. In questo caso, abbiamo un "sequenziatore di sezioni ritmiche" più di un puro "sequenziatore di batteria" perché puoi persino sequenziare i sintetizzatori.

Leggi la GUIDA RAPIDA per maggiori dettagli e un elenco completo delle funzionalità.

Passaggio 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Questo progetto è realizzato attorno a una scheda Arduino DUE. Ho cercato di mantenere l'hardware il più semplice possibile, ovvero evitando l'uso di driver LED. Arduino DUE probabilmente non è la scheda più appropriata per gestire un mucchio di LED senza un driver LED a causa dei suoi limiti di corrente di uscita (da 5 mA a 15 mA, a seconda del pin), ma è l'Arduino più veloce e il tempismo è tutto quando si tratta con sequenziatori. Quindi, tieni presente che QUESTA configurazione hardware sta probabilmente spingendo il tuo Arduino DOVUTO ai suoi limiti e potrebbe danneggiarlo a lungo termine.

Detto questo, l'hardware è principalmente un sequencer a 16 pulsanti, 16 LED (uno per ogni passo) con 5 pulsanti aggiuntivi per le funzioni e 3 potenziometri. Ho anche aggiunto un LED rosso dopo aver aggiunto una funzione di registrazione dal vivo.

Ecco la distinta base:

- 1x Arduino DUE

- 16 pulsanti momentanei, non autobloccanti con LED integrati (puoi utilizzare LED esterni se preferisci, ma ricordati di utilizzare LED a bassa potenza!!)

- 1x LED rosso (bassa potenza!)

- 5 pulsanti momentanei, non bloccabili

- 3x 10K a giro singolo, lineari, potenziometri

- 3 jack mono femmina da 6,5 mm per montaggio a pannello

- 1x custodia in plastica (ho usato una custodia 190x140x70 mm)

- Connettore femmina per montaggio a pannello 2x 5 pin DIN (MIDI)

- 1x pannello perforato a doppia faccia 70x90 mm

- 2 connettori maschio a fila singola da 40 pin (2,54 mm), meglio se placcati in oro

- 1x fotoaccoppiatore H11L1

- 1x diodo 1N4148

- 23 resistenze da 1000 ohm

- 3 resistenze da 220 ohm

- 2x transistor BC547 pnp

… filo di saldatura, alcuni cavi, stazione di saldatura, uno strumento di perforazione… e tempo libero:)

Si prega di notare che i pulsanti nelle immagini sono stati sostituiti con un altro tipo di pulsanti (anche più economici…) a causa dell'oltraggioso rimbalzo…

Tempo necessario per completare il progetto: 8 - 10 ore

ATTENZIONE: Indossare SEMPRE occhiali e guanti protettivi durante la perforazione! Scaglie di materiale caldo possono essere proiettate sugli occhi o venire a contatto con la pelle e causare ustioni o danni ancora più gravi a te o alle persone intorno a te

Passaggio 3: cablaggi

cablaggi
cablaggi
cablaggi
cablaggi
cablaggi
cablaggi

I pulsanti Step sono direttamente collegati ai pin Arduino da 22 (step 1) a 37 (step16). La massa dei pulsanti è collegata a margherita e collegata alla massa DUE di Arduino. Non c'è bisogno di resistori pullup o pulldown poiché i resistori pullup integrati Arduino sono abilitati dal software (vedi lo schizzo).

Lo stesso vale per i 5 pulsanti aggiuntivi (pin 2, 3, 4, 5 e 6 di Arduino), utilizzati per funzioni diverse dai passaggi. Ho anche posizionato un connettore jack femmina da 6,5 mm in parallelo al pulsante "start" per poter riprodurre e interrompere le mie sequenze da remoto.

I LED sono collegati ai pin di massa (daisy chain) e Arduino DUE da 38 (passo #1) a 53 (passo #16) in serie con un resistore da 1K ohm ciascuno per limitare il consumo di corrente e preservare il microcontrollore.

I potenziometri sono collegati come mostrato nell'immagine allegata. Notare che la tensione di riferimento è 3,3 V, non 5 V. Gli ingressi utilizzati sono A0, A1 e A2.

Ho anche implementato due uscite trigger per segnali di arpeggio, come quelle necessarie per arpeggiare vecchi synth anni '80 come il Korg Polysix e il Roland Juno 6/60. Sono collegati ai pin A3 e A4, ma puoi usare i pin digitali se preferisci essere segnali digitali. Nel caso in cui si voglia sequenziare un synth compatibile con i segnali V-Trig (trigger di tensione), sarà sufficiente un resistore in serie da 1k ohm per ridurre il consumo di corrente; nel caso di un synth S-Trig (switch trigger), sarà necessario un semplice circuito switch pnp (vedi schema allegato).

I circuiti MIDI IN e OUT sono schematizzati nelle immagini allegate. Nota che, contrariamente alla maggior parte degli arduino, Rx1 e Tx1 sono usati di default sulle schede DUE invece di Rx0 e Tx0. Questo è fantastico perché puoi caricare il tuo schizzo senza la necessità di scollegare Rx ogni volta. Notare anche che ho usato un fotoaccoppiatore H11L1 perché non ero in grado di eseguire come dovrebbe un comune 6N138 entro il limite Arduino DUE 3.3V.

Passaggio 4: software

Lo schizzo è stato scritto all'interno dell'IDE Arduino e deve essere caricato sulla scheda Arduino DUE. Non entrerò nei dettagli su come caricare lo schizzo sul tuo arduino DUE. Se questa è la tua prima esperienza con Arduino DUE leggi questo. Se questa è la tua prima esperienza con Arduino IDE, leggi anche questo.

Puoi scaricare il firmware aggiornato QUI (link github).

Lo schizzo si basa sull'eccellente libreria MIDI FortySevenEffects. Dovrai installare la libreria nel tuo IDE arduino.

Le note MIDI out assegnate a ciascuna batteria sono definite dalla variabile drumNote[STEPS_NUM] nello sketch. Puoi cambiarli a tuo piacimento.

Il numero del canale di uscita MIDI per la batteria è impostato su "10" per impostazione predefinita.

Non sono un programmatore nella vita reale e sicuramente ci sono modi migliori per codificare ciò di cui abbiamo bisogno qui. Se sei un programmatore con qualche suggerimento, sei il benvenuto! Vi prego di inviarmi qualsiasi variazione che possa aumentare l'efficienza/efficacia del codice e la includerò nello sketch principale (citando ovviamente il Contributor!).

Passaggio 5: guida rapida

BATTERIA: SEQUENZIAMENTO PASSO-PASSO

Non appena accendi il tuo sequencer (o lo resetti), verrà caricata una sequenza vuota. Il sequencer si avvia in modalità di modifica, con la prima misura tenuta/bloccata e la prima batteria (cioè cassa) selezionata. Ciò significa che premendo qualsiasi pulsante di passaggio, assegnerai immediatamente "calcio" a tali passaggi. Il volume che verrà attivato il tamburo è impostato dalla posizione del potenziometro "volume" quando si assegna il tamburo allo step. Premendo nuovamente un pulsante dello step assegnato in precedenza, annullerai l'assegnazione della batteria corrente su quello step.

Se premi il pulsante "start", vedrai i LED andare da sinistra a destra, dall'alto verso il basso, suonando "kick" ogni volta che viene superato un passo di kick.

Tenendo premuto il tasto "shift" si vedrà acceso il led 1° step sulla 1° fila (significa che il primo tamburo è selezionato) e il led primo step sulla quarta fila (significa che si è agganciati alla prima battuta). Ora puoi cambiare il tamburo che vuoi mettere in sequenza premendo un altro pulsante step mentre tieni premuto "shift". Dopo aver selezionato il nuovo tamburo, rilasciare "shift". Tutti i LED si spegneranno (perché non hai assegnato la nuova batteria a nessuno step) e potrai iniziare ad assegnare la nuova batteria agli step. Ripeti per tutti i tamburi di cui hai bisogno (fino a 12).

Ora che hai creato un bel pattern, tieni premuto "shift" e disattiva lo step evidenziato sulla riga in basso (dovrebbe essere il 1° step della 4° riga se hai adottato lo stesso layout che ho usato io): hai appena " sbloccato" la sequenza che ora verrà eseguita su tutte e 4 le barre. I LED grezzi inferiori inizieranno a "spostarsi", indicando quale barra è attualmente in riproduzione (progressione della barra). Noterai che solo quando nella prima battuta suonerà una sequenza, con tutte le altre 3 battute che non generano suoni. Questo perché hai assegnato la batteria solo alla prima battuta, le altre sono rimaste vuote. Puoi riempirli a mano (selezionare una nuova battuta premendo uno degli ultimi 4 pulsanti step tenendo premuto "shift", selezionare una delle percussioni, riempire gli step ecc. ecc.) o copiare e incollare la sequenza di battute che hai creato a tutte le battute entrando in modalità di modifica (riblocca alla prima battuta) e premendo "record" (che ora assume la funzione "incolla") tenendo premuto "shift". Più facile a farsi che a dirsi.

BATTERIA: MODALITÀ LIVE PLAY

All'avvio il sequencer è in modalità di modifica. Per uscire dalla modalità di modifica è necessario tenere premuto "shift" e premere il pulsante della barra attualmente tenuto/bloccato (il pulsante del passo sulla 4a riga è attivato). Questo spegnerà il LED della barra precedentemente bloccata e sbloccherà la sequenza. Ora sei in modalità di gioco dal vivo.

In modalità live play, premendo un qualsiasi pulsante step verrà attivata la batteria associata a quel pulsante.

Se vuoi registrare la tua sequenza dal vivo, avvia la sequenza premendo "play", quindi premi il pulsante "record" (solo in modalità di riproduzione live). Si accenderà un LED rosso. Verrà registrato l'esecuzione sulla matrice del pannello di controllo del drum sequencer o qualsiasi messaggio MIDI note-on in arrivo (ad esempio da una tastiera MIDI esterna).

Altre funzioni

Premendo il pulsante "roll", la batteria attualmente attiva verrà suonata ad ogni passo (in un roll). Funziona sia in modalità "passo-passo" che in modalità "live-play".

Premendo qualsiasi pulsante dello step mentre si tiene premuto il pulsante "mute" la batteria associata a quello step verrà silenziata (o riattivata). Funziona sia in modalità "passo-passo" che in modalità "live-play".

È possibile cancellare una specifica sequenza di batteria premendo il relativo pulsante step mentre si tiene premuto il pulsante "REC".

È possibile cancellare l'intera sequenza (soft reset) tenendo premuto il pulsante "start" per più di 3 secondi.

Puoi "oscillare" la tua sequenza ruotando il potenziometro "oscillazione".

Puoi disabilitare/abilitare l'eco MIDI premendo il pulsante "mute" mentre tieni premuto il pulsante "shift". Quando l'eco MIDI è abilitato (impostazione predefinita), qualsiasi informazione presente al jack MIDI INPUT verrà inviata al jack MIDI OUTPUT (vengono echeggiati solo MIDI note on, note off, pitch bend, aftertouch e control change).

Sia l'ingresso che l'uscita del clock MIDI sono implementati e abilitati per impostazione predefinita. Nel caso in cui non venga ricevuto alcun ingresso di clock, il tempo viene impostato con il potenziometro dedicato. Nel caso in cui venga ricevuto un input di clock MIDI, il tempo viene calcolato da quello e il potenziometro del tempo non risponderà. Il clock MIDI viene sempre inviato all'uscita MIDI.

Passaggio 6: sezione ritmica

L'idea originale era un sequencer di batteria MIDI "puro" a 64 passi per sequenziare fino a 12 parti di batteria indipendenti. Dopo alcune prove, ho notato che sarebbe stato bello controllare anche una linea di basso, e ho assegnato la funzione di pitch-per-step variabile solo alla batteria più recente. Successivamente, ho modificato di nuovo il codice in modo da poter cambiare l'intonazione in ogni batteria e controllare fino a 12 sintetizzatori. Una revisione successiva ho aggiunto la polifonia (polifonia per synth limitata a 3 per impostazione predefinita).

Per riassumere:

- in modalità LIVE, se la registrazione LIVE è attiva e la sequenza avviata, è possibile registrare i messaggi MIDI note-on in arrivo, in modo polifonico. Le informazioni sul tono e sul volume verranno memorizzate. Le informazioni sul pitch bend e sull'aftertoutch vengono perse. I messaggi MIDI Control Change verranno memorizzati. Tieni presente che hai solo uno slot CC per canale, per passaggio.

- Se la sequenza è ferma, è possibile registrare fino a 3 valori di intonazione (accordo) su uno specifico step di una specifica misura tenendo premuto il pulsante dello step di destinazione e premendo (contemporaneamente o uno ad uno) i tasti desiderati sul tastiera collegata alla porta MIDI IN.

Notare che:

- la nota attivata su un passaggio viene "uccisa" nel passaggio successivo. Per aumentare la lunghezza della nota, agisci sul parametro "release" VCA del tuo sintetizzatore.

- contrariamente alla batteria, le note non possono essere suonate in un rullo premendo il pulsante "roll".

- Durante la registrazione LIVE, i dati del canale MIDI in ingresso vengono memorizzati nel relativo step "drum" (canale MIDI #1 -> "drum" #1 e così via).

È possibile cancellare una specifica sequenza di synth premendo il relativo pulsante dello step "drum" mantenendo premuto il pulsante "REC". Premendolo di nuovo si cancellerà anche la sequenza di batteria. Se è stata registrata una sequenza CC, questa sarà la prima ad essere cancellata, quindi seguendo l'ordine CC -> Synth -> Drum

Passaggio 7: trigger di arpeggio

I sintetizzatori pre-MIDI dei primi anni '80 sono spesso dotati di un "ingresso trigger arpeggio" a volte chiamato. Inviando un segnale di trigger da 2,5 a 5,0 V (V-trig o "trigger di tensione") o collegando a massa l'ingresso del trigger di arpeggio (S-Trig o "trigger di commutazione") è possibile dire al sintetizzatore di avanzare di un passo su una sequenza di arpeggio. Questo potrebbe essere difficile da gestire con un sequencer senza un trigger out dedicato (a volte suoni "rimshot" da un'uscita dedicata dove/vengono usati come espediente per i synth V-trig) ma con una scheda microcontrollore è possibile gestire facilmente tale segnale e controllo il tuo arpeggio synth come era inteso dalla fabbrica.

Questo sequencer della sezione ritmica include la possibilità di attivare l'arpeggiatore di due diversi sintetizzatori, indipendentemente.

L'uso è molto semplice: seleziona la batteria 11 o 12 (premi il passo 11 o 12 mentre tieni premuto "shift") e attiva i passi che vuoi che l'arpeggiatore muova di un passo. In questo modo è possibile "programmare" 1/16 di nota molto stretti arpeggi regolari attivando tutti gli step, o 1/8 attivando ogni altro step. Inoltre, puoi programmare arpeggi più complessi attivando passi che seguono un percorso non regolare.

A seconda del tipo di segnale di trigger supportato dal synth che si desidera controllare, sarà necessaria una semplice modifica hardware: in caso di V-trig (cioè synth Roland) posizionare una resistenza da 1 Kohm in serie con l'uscita trigger di arduino. In caso di un S-trig (cioè sintetizzatori Korg) utilizzare lo shematic attaccato al passaggio "cablaggio" per un trigger di commutazione sicuro.

Passaggio 8: se le cose non funzionano…

Anche un progetto relativamente semplice come questo molto probabilmente non funzionerà al 100% la prima volta che lo accendi. Qui, ad esempio, la corrispondenza tra pulsanti e LED è cruciale, e un cablaggio non abbinato renderà inutile il sequencer.

Per testare tutti i diversi componenti che compongono lo step sequencer, ho scritto un semplice schizzo di prova (vedi allegato).

Puoi scaricare l'ultimo firmware di prova QUI (link GitHub).

Lo schizzo di prova funziona come segue:

- premere un pulsante step: il LED corrispondente dovrebbe accendersi e un MIDI note-on sul canale 10 verrà inviato all'uscita MIDI.

- premere un tasto funzione: si accenderà uno dei primi 5 led.

- ruotare un potenziometro: i led si accenderanno di conseguenza (primo potenziometro -> prima fila di led, secondo potenziometro -> seconda fila di led, terzo potenziometro -> terza fila di led).

- se viene ricevuta una nota MIDI on, il primo LED lampeggerà.

Tieni presente che l'eco MIDI è abilitato per impostazione predefinita. Ciò significa che se si dispone di un loop MIDI tra un sintetizzatore e MRSS, ciò potrebbe causare problemi (ho sperimentato un prevedibile attivazione di una doppia nota la maggior parte delle volte, ma anche l'attivazione di note molto basse e una tastiera integrata generalmente non reattiva con sintetizzatori con MIDI come MIDI Throu… dipende dal synth). In tal caso, disabilitare l'eco MIDI premendo il pulsante "mute" mentre si tiene premuto il pulsante "shift".

Consigliato: