Innholdsfortegnelse:

Raspberry Pi trommemaskin: 5 trinn
Raspberry Pi trommemaskin: 5 trinn

Video: Raspberry Pi trommemaskin: 5 trinn

Video: Raspberry Pi trommemaskin: 5 trinn
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, November
Anonim
Raspberry Pi trommemaskin
Raspberry Pi trommemaskin

Prøve Sequencer, via en Raspberry Pi + Python.

Sekvenseren har 4 polyfoni og lar brukeren lagre og cue opp 6 forskjellige sekvenser som de kan veksle mellom i sanntid, og støtter muligheten til å skifte mellom forskjellige prøver.

Jeg skrev manuset på en måte som er fullstendig brukbar med egentlig hvilken som helst MIDI -kontroller og lyder. Jeg bruker 18 forskjellige lydbanker, 16 prøver hver, men å legge til eller trekke fra banker og prøver er enkelt og krever ikke mange modifikasjoner. Hvis du har problemer, send meg en e -post: [email protected]

Finn koden på GitHub på:

Gi meg beskjed hvis du bruker den, og spesielt hvis du lager en video med den!

Trinn 1: Avhengigheter

Dette programmet krever følgende (ikke innebygde) Python -moduler:

mido

pygame

numpy

Mido kaster imidlertid noen komplikasjoner ettersom Mido selv krever noen få avhengigheter. For å være sikker på at de alle blir installert, bare skriv inn følgende kommandoer i terminalen til din Raspberry Pi (utelater '$'), og alt vil gå bra. De andre modulene kan installeres normalt.

$ sudo apt-get oppdatering

$ sudo apt-get install build-essential

$ sudo apt-get install libasound-dev eller 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 installer python-rtmidi

$ sudo pip installer mido

Trinn 2: Konfigurer Midi Input Verdier

Konfigurer Midi Input Verdier
Konfigurer Midi Input Verdier

Innenfor Python Script finnes det en array kalt noteList som består av 16 heltall (linje 165.) Dette er MIDI -notatverdiene som kontrolleren sender til Pi for å utløse lydene. Hver midi -kontroller er forskjellig, så med mindre du også har en Akai LPD8, må du mest sannsynlig endre disse verdiene for å matche enheten din.

Github -repoen inneholder også et annet skript kalt "midihelp.py" som er laget spesielt for dette formålet! Alt det gjør er å skrive ut inngangsverdiene fra den første MIDI -kontrolleren datamaskinen gjenkjenner til konsollen. Alt du trenger å gjøre er å erstatte disse verdiene i matrisen hvis de er forskjellige fra de som er inkludert i noteList.

Rekkefølgen til notene korrelerer også med hvilken lydeffekt per mappe spilles, så husk det også.

Trinn 3: Legg til flere mapper med prøver

Eksempelsett i skriptet lagres via mapper i samme katalog, og konfigurer nøyaktig hvordan 808 -settet er i GitHub -filen. På denne måten kan jeg ha alle slags forskjellige prøvesett lagret i mapper som enkelt kan organiseres og byttes ut.

Det eneste som skal endres i selve skriptet er variabelen foldNum som bare forteller skriptet hvor mange mapper med prøver det er. For øyeblikket har skriptet foldNum satt til en fordi det bare er en undermappe i samme katalog (808 -settet.) Maksimum mapper skriptet kan håndtere for øyeblikket er 18, som er hvor mange jeg bruker, men det er ganske trivielt å endre dette, gi meg beskjed hvis du trenger hjelp.

Navnene på mappene spiller egentlig ingen rolle (så lenge de alle er forskjellige) ettersom skriptet bare leser mengden mapper i den samme katalogen og tar tak i banene på den måten. Navnene på selve filene er imidlertid viktige, mer om det i neste trinn.

Trinn 4: Legg til og konfigurer flere prøver i nye mapper

Legg til og konfigurer flere prøver i nye mapper
Legg til og konfigurer flere prøver i nye mapper

Lyder lastes inn i prøvetakeren via mapper i den samme katalogen som inneholder.wav-filer med navn nummerert mellom 0-15. Se den medfølgende 808 -mappen for et eksempel på dette. HVER undermappe med prøver skal se identiske ut.

Indeksen for MIDI -innganger i array noteList tilsvarer nøyaktig.wav -filnavnet.

For eksempel:

  • når du utløser MIDI -notatet som er lagret i noteList [0], vil wav -filen 0.wav spilles av.
  • når du utløser MIDI -notatet som er lagret i noteList [8], vil wav -filen 8.wav spilles av.

Jeg gjorde dette delvis slik at hver enkelt MIDI -kontroller enkelt kunne settes opp for å fungere med skriptet, og også slik at jeg enkelt kunne forlenge eller begrense prøve- og inndatatallet, samt organisere filene og skriptet slik at trommelen ble sparket lyder, for eksempel, vil alltid bli lagret som 0.wav og ville bli utløst av det første MIDI -notatet.

Jeg har valgt 16 verdier noe vilkårlig for å svare til de 16 inngangene på kontrolleren min, så hvis du foretrekker å lage en sequencer med bare 1 prøve, eller med mange flere, er det bare å nummerere lydfilene deretter og trekke fra eller legge til tallene som er lagret i noteList -matrisen for å matche.

Hvis det medfølgende 808 -settet fungerer som det skal, men du har problemer med dine egne prøver, vil løsningen mest sannsynlig være å endre samplingshastigheten til filene slik at de samsvarer med PyGames 22, 050 khz samplingsfrekvens og bitdybde på 16. Du kan gjøre dette i Audacity eller annen lydredigeringsprogramvare. De burde fungere perfekt derfra!

Trinn 5: Nummerblokkreferanse

Ok, det er mange ting som skjer i sequencer, mer enn jeg først hadde tenkt på, så jeg stappet ganske mye på en talltastatur for å matche den økte funksjonaliteten. Dette i tankene, stjernen * og perioden. begge fungerer som funksjonstaster.

HENVISNING

VEDLIKEHOLD

[8] - Slå Metronome av og på

[9] - Slå opptaksmodus av og på

[Enter] - Spill/Pause -sekvens

[0] - Slett gjeldende notat i rekkefølge

[Num Lock og *] - Slå av

[MIDI Note and.] - Ikke kvantiser til partall

TEMPO -FUNKSJONER

[+] - Kurs fremskynde BPM

[-] - Kurs Sakte BPM

[+ og *] - Rask hastighet på BPM

[- og *] - Rask hastighet på BPM

[+ og.] - Finhastighet på BPM

[- og.] - Fin sakte BPM

SEKVENSFUNKSJONER

[1-6] Tilbakekall sekvens 1-6

[1-6 og.] Lagringsrekkefølge 1-6

[0 og.] Fjern nåværende sekvens

ENDRE PRØVEMAPPER

[1-9 og *]-Bytt til prøvepakke i mapper 1-9

[1-9 og * og.]-Bytt til prøvepakke i mapper 10-18

SEKVENSSTIPS:

-Tøm gjeldende sekvens [0 og.] Og lagre den i alle sekvenser du vil slette fra minnet.

-Hent en sekvens og lagre den til et annet nummer for å kopiere den.

Anbefalt: