Indholdsfortegnelse:

Raspberry Pi trommemaskine: 5 trin
Raspberry Pi trommemaskine: 5 trin

Video: Raspberry Pi trommemaskine: 5 trin

Video: Raspberry Pi trommemaskine: 5 trin
Video: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024, November
Anonim
Raspberry Pi trommemaskine
Raspberry Pi trommemaskine

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

Sequenceren har 4 polyfoni og giver brugeren mulighed for at gemme og cue op til 6 forskellige sekvenser, som de kan skifte imellem i realtid, og understøtter evnen til at skifte mellem forskellige prøver.

Jeg skrev scriptet på en måde, der er fuldstændig betjenbar med virkelig enhver MIDI -controller og lyde. Jeg bruger 18 forskellige lydbanker, hver med 16 sampler, men tilføjelse eller fradrag af banker og prøver er let og kræver ikke mange ændringer. Hvis du har problemer, send mig en e -mail: [email protected]

Find koden på GitHub på:

Lad mig vide, hvis du bruger det, og især hvis du laver en video med det!

Trin 1: afhængigheder

Dette program kræver følgende (ikke indbyggede) Python -moduler:

mido

pygame

numpy

Mido kaster dog nogle komplikationer, da Mido selv kræver et par afhængigheder. For at sikre, at de alle bliver installeret, skal du bare indtaste følgende kommandoer i terminalen på din Raspberry Pi (udelader '$'), og alt vil være godt. De andre moduler kan installeres normalt.

$ sudo apt-get opdatering

$ 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

Trin 2: Konfigurer Midi -inputværdier

Konfigurer Midi -inputværdier
Konfigurer Midi -inputværdier

Inden for hoved Python Script eksisterer der en matrix kaldet noteList, der består af 16 heltal (linje 165.) Disse er de MIDI note værdier, som vores controller sender til Pi for at udløse lydene. Hver midi -controller er dog forskellig, så medmindre du også har en Akai LPD8, skal du højst sandsynligt ændre disse værdier for at matche din enhed.

Github -repoen indeholder også et andet script kaldet "midihelp.py", der er lavet specielt til dette formål! Alt det gør er at udskrive inputværdierne fra den første MIDI -controller, computeren genkender til konsollen. Alt du skal gøre er at erstatte disse værdier i arrayet, hvis de adskiller sig fra dem, der er inkluderet i noteList.

Rækkefølgen til noterne korrelerer også med hvilken lydeffekt pr. Mappe afspilles, så husk det også.

Trin 3: Tilføj yderligere mapper med prøver

Prøvesæt i scriptet gemmes via mapper i det samme bibliotek, og konfigurer nøjagtigt, hvordan 808 -kittet er i GitHub -filen. På denne måde kan jeg have alle mulige forskellige prøvesæt gemt i mapper, der let kan organiseres og udskiftes.

Det eneste, der skal ændres i selve scriptet, er variablen foldNum, der bare fortæller scriptet, hvor mange mapper med prøver, der er. I øjeblikket har scriptet foldNum sat til en, fordi der kun er en undermappe i den samme mappe (808 -kittet.) De maksimale mapper, scriptet kan håndtere i øjeblikket, er 18, hvilket er hvor mange jeg bruger, men det er ret trivielt at ændre dette, lad mig vide, hvis du har brug for hjælp.

Navnene på mapperne er ikke ligegyldige (så længe de alle er forskellige), da scriptet bare læser mængden af mapper i det samme bibliotek og griber stierne på den måde. Navnene på selve filerne er dog vigtige, mere om det i det næste trin.

Trin 4: Tilføj og konfigurer yderligere prøver inden for nye mapper

Tilføj og konfigurer yderligere prøver inden for nye mapper
Tilføj og konfigurer yderligere prøver inden for nye mapper

Lyde indlæses i sampleren via mapper i det samme bibliotek, der indeholder.wav-filer med navne nummereret mellem 0-15. Se den medfølgende 808 mappe for et eksempel på dette. HVER undermappe med prøver skal se identiske ud.

Indekset over MIDI -input i arraynoteListen svarer nøjagtigt til.wav -filnavnet.

For eksempel:

  • når du udløser den MIDI -note, der er gemt i noteList [0], vil wav -filen 0.wav afspille.
  • når du udløser den MIDI -note, der er gemt i noteList [8], vil wav -filen 8.wav afspilles.

Jeg gjorde dette delvist, så hver enkelt MIDI -controller let kunne konfigureres til at fungere med scriptet, og også så jeg let kunne forlænge eller begrænse prøve- og inputnummeret samt organisere filerne og scriptet, så kicktrommen lyde, for eksempel, ville altid blive gemt som 0.wav og ville blive udløst af den første MIDI -note.

Jeg har valgt 16 værdier noget vilkårligt for at svare til de 16 indgange på min controller, så hvis du foretrækker at lave en sequencer med kun 1 sample, eller med mange flere, skal du bare nummerere lydfilerne i overensstemmelse hermed og trække fra eller tilføje de numre, der er gemt i noteList -arrayet, der matcher.

Hvis det medfølgende 808 -kit fungerer korrekt, men du har problemer med dine egne prøver, ville løsningen højst sandsynligt være at ændre prøvehastigheden for filerne til at matche PyGames 22, 050 khz -prøvehastighed og bitdybde på 16. Du kan gøre dette i Audacity eller enhver anden lydredigeringssoftware. De burde fungere perfekt derfra!

Trin 5: Nummerblokreference

Okay, der er mange ting i gang i sequencer, mere end jeg oprindeligt havde i tankerne, så jeg proppede en hel del på et numerisk tastatur for at matche den øgede funktionalitet. Dette i tankerne, stjernen * og perioden. begge fungerer som funktionstaster.

REFERENCE

VEDLIGEHOLDELSER

[8] - Slå Metronome til og fra

[9] - Slå optagelsestilstand til og fra

[Enter] - Afspil/pause sekvens

[0] - Slet aktuel note i rækkefølge

[Num Lock og *] - Luk ned

[MIDI Note og.] - Må ikke kvantificeres til lige tal

TEMPO FUNKTIONER

[+] - Kursus Fremskynde BPM

[-] - Kursus Sænk BPM

[+ og *] - Hurtigt hurtigere BPM

[- og *] - Hurtigt sænker BPM

[+ og.] - Fin fremskynde BPM

[- og.] - Fin sænk BPM

SEKVENSFUNKTIONER

[1-6] Genkald sekvens 1-6

[1-6 og.] Opbevar sekvens 1-6

[0 og.] Ryd aktuel sekvens

ÆNDRING AF PRØVEMAPPER

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

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

TEKST TIPS:

-Ryd den aktuelle sekvens [0 og.], Og gem den i alle sekvenser, du vil have fjernet fra hukommelsen.

-Hent en sekvens, og gem den til et andet nummer for at kopiere den.

Anbefalede: