Inhoudsopgave:
- Stap 1: Afhankelijkheden
- Stap 2: Configureer Midi-invoerwaarden
- Stap 3: Voeg extra mappen toe met voorbeelden
- Stap 4: Voeg extra voorbeelden toe en configureer ze in nieuwe mappen
- Stap 5: Nummerblokreferentie
Video: Raspberry Pi-drummachine - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Sample Sequencer, via een Raspberry Pi + Python.
De sequencer heeft 4 polyfonen en stelt de gebruiker in staat om 6 verschillende sequenties op te slaan en op te zetten waartussen ze in realtime kunnen afwisselen, en ondersteunt de mogelijkheid om tussen verschillende samples te wisselen.
Ik schreef het script op een manier die volledig bruikbaar is met echt elke MIDI-controller en geluiden. Ik gebruik 18 verschillende geluidsbanken, elk 16 samples, maar het optellen of aftrekken van banken en samples is eenvoudig en vereist niet veel aanpassingen. Als je problemen hebt, stuur me dan een e-mail: [email protected]
Vind de code op GitHub op:
Laat het me weten als je het gebruikt, en vooral als je er een video mee maakt!
Stap 1: Afhankelijkheden
Dit programma vereist de volgende (niet ingebouwde) Python-modules:
mido
pygame
numpy
Mido geeft echter enkele complicaties, omdat Mido zelf een paar afhankelijkheden vereist. Om ervoor te zorgen dat ze allemaal worden geïnstalleerd, typt u gewoon de volgende opdrachten in de terminal van uw Raspberry Pi (laat de '$' weg) en alles komt goed. De andere modules kunnen normaal worden geïnstalleerd.
$ sudo apt-get update
$ sudo apt-get install build-essentieel
$ sudo apt-get install libasound-dev of 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 mido
Stap 2: Configureer Midi-invoerwaarden
Binnen het Python-hoofdscript bestaat een array met de naam noteList die bestaat uit 16 gehele getallen (regel 165.) Dit zijn de MIDI-nootwaarden die onze controller naar de Pi stuurt om de geluiden te activeren. Elke midi-controller is echter anders, dus tenzij je ook een Akai LPD8 hebt, moet je deze waarden waarschijnlijk aanpassen aan je apparaat.
De Github-repo bevat ook een ander script genaamd "midihelp.py" dat speciaal voor dit doel is gemaakt! Het enige dat het doet, is de invoerwaarden van de eerste MIDI-controller die de computer herkent naar de console afdrukken. Het enige dat u hoeft te doen, is deze waarden in de array te vervangen als ze verschillen van de waarden in noteList.
De volgorde van de noten hangt ook samen met welk geluidseffect per map wordt gespeeld, dus houd daar ook rekening mee.
Stap 3: Voeg extra mappen toe met voorbeelden
Voorbeeldkits in het script worden opgeslagen via mappen in dezelfde map, precies ingesteld zoals de 808-kit zich in het GitHub-bestand bevindt. Op deze manier kan ik allerlei verschillende samplesets opslaan in mappen die gemakkelijk kunnen worden georganiseerd en vervangen.
Het enige dat in het script zelf moet worden gewijzigd, is de variabele foldNum die het script vertelt hoeveel mappen met voorbeelden er zijn. Momenteel heeft het script foldNum ingesteld op één omdat er slechts één submap in dezelfde map is (de 808-kit.) Het maximale aantal mappen dat het script op dit moment aankan, is 18, en dat is hoeveel ik gebruik, maar het is vrij triviaal om verander dit, laat het me weten als je hulp nodig hebt.
De namen van de mappen doen er niet echt toe (zolang ze allemaal verschillend zijn), omdat het script alleen het aantal mappen in dezelfde map leest en de paden op die manier pakt. De namen van de bestanden zelf zijn echter belangrijk, daarover meer in de volgende stap.
Stap 4: Voeg extra voorbeelden toe en configureer ze in nieuwe mappen
Geluiden worden in de sampler geladen via mappen in dezelfde map die.wav-bestanden bevatten met namen genummerd tussen 0-15. Zie de meegeleverde 808-map voor een voorbeeld hiervan. ELKE submap met voorbeelden moet er identiek uitzien.
De index van MIDI-ingangen in de array noteList komt exact overeen met de.wav-bestandsnaam.
Bijvoorbeeld:
- wanneer je de MIDI-noot activeert die is opgeslagen in noteList[0], zou het wav-bestand 0.wav worden afgespeeld.
- wanneer je de MIDI-noot activeert die is opgeslagen in noteList[8], zou het wav-bestand 8.wav worden afgespeeld.
Ik deed dit gedeeltelijk zodat elke afzonderlijke MIDI-controller gemakkelijk kon worden ingesteld om met het script te werken, en ook zodat ik het sample en het invoernummer gemakkelijk kon uitbreiden of beperken, en de bestanden en het script zo kon ordenen dat de kickdrum geluiden zouden bijvoorbeeld altijd worden opgeslagen als 0.wav en worden getriggerd door de eerste MIDI-noot.
Ik heb 16 waarden enigszins willekeurig gekozen om overeen te komen met de 16 ingangen op mijn controller, dus als je liever een sequencer maakt met slechts 1 sample, of met veel meer, hoef je alleen maar de audiobestanden dienovereenkomstig te nummeren en trek de getallen die zijn opgeslagen in de noteList-array af of voeg ze toe om overeen te komen.
Als de meegeleverde 808-kit goed werkt, maar je problemen hebt met je eigen samples, is de oplossing waarschijnlijk om de samplefrequentie van de bestanden aan te passen aan PyGame's 22, 050khz samplefrequentie en bitdiepte van 16. Je kunt dit doen in Audacity of andere audiobewerkingssoftware. Vanaf daar zouden ze perfect moeten werken!
Stap 5: Nummerblokreferentie
Oké, er gebeurt veel in de sequencer, meer dan ik aanvankelijk in gedachten had, dus ik propte nogal wat op een numeriek toetsenblok om de toegenomen functionaliteit te evenaren. Dit in gedachten, de Asterisk * en de Periode. beide werken als functietoetsen.
VERWIJZING
HOOFDFUNCTIES
[8] - Metronoom in- en uitschakelen
[9] - Opnamemodus in- en uitschakelen
[Enter] - Afspelen/pauzeren
[0] - Huidige noot in volgorde verwijderen
[Num Lock en *] - Afsluiten
[MIDI Note en.] - Kwantiseer niet naar even getallen
TEMPO FUNCTIES
[+] - Koers versnellen BPM
[-] - Koers vertragen BPM
[+ en *] - Versnel BPM snel
[- en *] - BPM snel vertragen
[+ en.] - Fine Speed Up BPM
[- en.] - Fijn vertragen BPM
SEQUENTIE FUNCTIES
[1-6] Oproepvolgorde 1-6
[1-6 en.] Opslaanvolgorde 1-6
[0 en.] Huidige reeks wissen
MONSTERMAPPEN WIJZIGEN
[1-9 en *] - Wijzig naar proefpakket in mappen 1-9
[1-9 en * en.] - Wijzig naar proefpakket in mappen 10-18
VOLGORDE TIPS:
-Wis de huidige reeks [0 en.] en sla deze op in elke reeks die u uit het geheugen wilt wissen.
- Roep een reeks op en sla deze op onder een ander nummer om deze te kopiëren.
Aanbevolen:
DIY Raspberry Pi-downloadbox: 4 stappen
DIY Raspberry Pi Downloadbox: Ben je vaak bezig met het downloaden van grote bestanden zoals films, torrents, cursussen, tv-series, etc dan ben je hier aan het juiste adres. In deze Instructable zouden we onze Raspberry Pi zero in een downloadmachine veranderen. Die elke
Raspberry Pi-scorebord: 4 stappen
Raspberry Pi-scorebord: Vandaag zal ik uitleggen hoe ik dit scorebord heb gemaakt dat wordt bestuurd door een Raspberry Pi en wordt aangedreven door een 5V-voeding. Het gebruikt een combinatie van ws2811- en ws2812b-leds voor de verlichting en de structuur is gemaakt van multiplex en rood eiken. Voor een besch
Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)
Smart Home van Raspberry Pi: er zijn al verschillende producten die uw flat slimmer maken, maar de meeste zijn eigen oplossingen. Maar waarom heb je een internetverbinding nodig om een lamp te schakelen met je smartphone? Dat was voor mij een reden om mijn eigen Smar te bouwen
LED-knipper met Raspberry Pi - Hoe GPIO-pinnen op Raspberry Pi te gebruiken: 4 stappen
LED-knipper met Raspberry Pi | Hoe GPIO-pinnen op Raspberry Pi te gebruiken: Hallo allemaal, in deze instructables zullen we leren hoe we GPIO's van Raspberry Pi kunnen gebruiken. Als je ooit Arduino hebt gebruikt, weet je waarschijnlijk dat we een LED-schakelaar enz. op de pinnen kunnen aansluiten en het zo kunnen laten werken. laat de LED knipperen of krijg input van de schakelaar zodat
Raspbian installeren in Raspberry Pi 3 B zonder HDMI - Aan de slag met Raspberry Pi 3B - Uw Raspberry Pi instellen 3: 6 stappen
Raspbian installeren in Raspberry Pi 3 B zonder HDMI | Aan de slag met Raspberry Pi 3B | Je Raspberry Pi 3 instellen: Zoals sommigen van jullie weten, zijn Raspberry Pi-computers best geweldig en kun je de hele computer op een klein bordje krijgen. De Raspberry Pi 3 Model B heeft een quad-core 64-bit ARM Cortex A53 geklokt op 1,2 GHz. Dit zet de Pi 3 ongeveer 50