Sommario:

Drum Machine Raspberry Pi: 5 passaggi
Drum Machine Raspberry Pi: 5 passaggi

Video: Drum Machine Raspberry Pi: 5 passaggi

Video: Drum Machine Raspberry Pi: 5 passaggi
Video: Racking up a Raspberry Pi cluster! 2024, Dicembre
Anonim
Drum Machine Raspberry Pi
Drum Machine Raspberry Pi

Sequencer di esempio, tramite un Raspberry Pi + Python.

Il sequencer ha 4 polifonie e consente all'utente di memorizzare e selezionare 6 diverse sequenze che possono alternare in tempo reale e supporta la possibilità di cambiare tra diversi campioni.

Ho scritto lo script in un modo totalmente utilizzabile con qualsiasi controller MIDI e suoni. Uso 18 diversi banchi di suoni, 16 campioni ciascuno, tuttavia aggiungere o sottrarre banchi e campioni è facile e non richiede molte modifiche. Se hai problemi mandami una mail: [email protected]

Trova il codice su GitHub all'indirizzo:

Per favore fatemi sapere se lo usate, e soprattutto se ci fate un video!

Passaggio 1: dipendenze

Questo programma richiede i seguenti moduli Python (non integrati):

medio

pygame

insensibile

Tuttavia, Mido genera alcune complicazioni poiché Mido stesso richiede alcune dipendenze. Per assicurarti che vengano installati tutti, digita i seguenti comandi nel terminale del tuo Raspberry Pi (omettendo "$") e tutto andrà bene. Gli altri moduli possono essere installati normalmente.

$ sudo apt-get update

$ sudo apt-get install build-essential

$ sudo apt-get install libasound-dev o libasound2-dev

$ sudo apt-get install libjack0

$ sudo apt-get install libjack-dev

$ sudo apt-get install python-pip

$ sudo apt-get install python-dev

$ sudo pip install python-rtmidi

$ sudo pip install mid

Passaggio 2: configurare i valori di input MIDI

Configura i valori di input MIDI
Configura i valori di input MIDI

All'interno dello script Python principale esiste un array chiamato noteList che comprende 16 interi (riga 165). Questi sono i valori delle note MIDI che il nostro controller invia al Pi per attivare i suoni. Ogni controller midi è diverso, quindi, a meno che tu non abbia anche un Akai LPD8, molto probabilmente dovrai modificare questi valori in modo che corrispondano al tuo dispositivo.

Il repository Github include anche un altro script chiamato "midihelp.py" creato appositamente per questo scopo! Tutto ciò che fa è stampare i valori di input dal primo controller MIDI che il computer riconosce sulla console. Tutto quello che dovrai fare è sostituire questi valori nell'array se differiscono da quelli inclusi in noteList.

L'ordine delle note è anche correlato a quale effetto sonoro viene riprodotto per cartella, quindi tienilo a mente.

Passaggio 3: aggiungi cartelle aggiuntive con campioni

I kit di esempio all'interno dello script vengono archiviati tramite cartelle nella stessa directory, imposta esattamente come si trova il kit 808 all'interno del file GitHub. In questo modo posso avere tutti i tipi di set di campioni diversi archiviati in cartelle che possono essere facilmente organizzate e sostituite.

L'unica cosa da cambiare nello script stesso è la variabile foldNum che dice allo script quante cartelle di campioni ci sono. Attualmente lo script ha foldNum impostato su uno perché c'è solo una sottocartella nella stessa directory (il kit 808). Il numero massimo di cartelle che lo script può gestire al momento è 18, che è il numero che sto usando, tuttavia è abbastanza banale modifica questo, fammi sapere se hai bisogno di aiuto.

I nomi delle cartelle non hanno molta importanza (purché siano tutti diversi) poiché lo script legge semplicemente la quantità di cartelle nella stessa directory e acquisisce i percorsi in quel modo. Tuttavia, i nomi dei file stessi sono importanti, ne parleremo più nel prossimo passaggio.

Passaggio 4: aggiungere e configurare campioni aggiuntivi all'interno di nuove cartelle

Aggiungi e configura campioni aggiuntivi all'interno di nuove cartelle
Aggiungi e configura campioni aggiuntivi all'interno di nuove cartelle

I suoni vengono caricati nel campionatore tramite cartelle nella stessa directory contenenti file.wav con nomi numerati tra 0-15. Vedere la cartella 808 inclusa per un esempio. OGNI sottocartella con i campioni dovrebbe apparire identica l'una all'altra.

L'indice degli ingressi MIDI nell'array noteList corrisponde esattamente al nome del file.wav.

Per esempio:

  • quando si attiva la nota MIDI memorizzata in noteList[0] viene riprodotto il file wav 0.wav.
  • quando si attiva la nota MIDI memorizzata in noteList[8] viene riprodotto il file wav 8.wav.

L'ho fatto in parte in modo che ogni singolo controller MIDI potesse essere configurato facilmente per lavorare con lo script, e anche in modo da poter estendere o limitare facilmente il campione e il numero di input, nonché organizzare i file e lo script in modo che la cassa i suoni, per esempio, verrebbero sempre salvati come 0.wav e verrebbero attivati dalla prima nota MIDI.

Ho scelto 16 valori in modo un po' arbitrario per corrispondere ai 16 ingressi sul mio controller, quindi se preferisci creare un sequencer con solo 1 campione, o con molti di più, tutto ciò che dovresti fare è numerare i file audio di conseguenza e sottrarre o aggiungere i numeri memorizzati all'interno dell'array noteList da abbinare.

Se il kit 808 incluso funziona correttamente ma hai problemi con i tuoi campioni, molto probabilmente la soluzione sarebbe alterare la frequenza di campionamento dei file in modo che corrisponda alla frequenza di campionamento di 22, 050 kHz di PyGame e alla profondità di bit di 16. Puoi farlo in Audacity o qualsiasi altro software di editing audio. Dovrebbero funzionare perfettamente da lì!

Passaggio 5: riferimento al tastierino numerico

Ok, ci sono molte cose che accadono all'interno del sequencer, più di quanto inizialmente avessi in mente, quindi ho stipato un bel po' su un tastierino numerico per abbinare la maggiore funzionalità. Questo in mente, l'asterisco * e il punto. entrambi funzionano come tasti funzione.

RIFERIMENTO

FUNZIONI PRINCIPALI

[8] - Attiva e disattiva il metronomo

[9] - Attiva e disattiva la modalità di registrazione

[Invio] - Sequenza di riproduzione/pausa

[0] - Elimina nota corrente in sequenza

[Bloc Num e *] - Spegnimento

[Nota MIDI e.] - Non quantizzare ai numeri pari

FUNZIONI TEMPO

[+] - Accelerazione del corso BPM

[-] - BPM di rallentamento della rotta

[+ e *] - Accelera rapidamente i BPM

[- e *] - Rallenta rapidamente i BPM

[+ e.] - Velocità fine BPM

[- e.] - BPM di rallentamento fine

FUNZIONI SEQUENZA

[1-6] Richiamo sequenza 1-6

[1-6 e.] Sequenza di memorizzazione 1-6

[0 e.] Cancella sequenza corrente

MODIFICA DELLE CARTELLE DEI CAMPIONI

[1-9 e *] - Passa a Pacchetto campioni nelle cartelle 1-9

[1-9 e * e.] - Passa al pacchetto campione nelle cartelle 10-18

SUGGERIMENTI SULLA SEQUENZA:

-Cancella la sequenza corrente [0 e.] e salvala in tutte le sequenze che vuoi cancellare dalla memoria.

-Richiamare una sequenza e memorizzarla su un numero diverso per copiarla.

Consigliato: