Spisu treści:

Automat perkusyjny Raspberry Pi: 5 kroków
Automat perkusyjny Raspberry Pi: 5 kroków

Wideo: Automat perkusyjny Raspberry Pi: 5 kroków

Wideo: Automat perkusyjny Raspberry Pi: 5 kroków
Wideo: DIY Raspberry Pi Touchscreen Drum Machine with Pure Data 2024, Listopad
Anonim
Automat perkusyjny Raspberry Pi
Automat perkusyjny Raspberry Pi

Przykładowy sekwencer, za pośrednictwem Raspberry Pi + Pythona.

Sekwencer ma 4 polifonię i umożliwia użytkownikowi przechowywanie i podsłuchiwanie 6 różnych sekwencji, które mogą zmieniać w czasie rzeczywistym, oraz obsługuje możliwość zmiany między różnymi samplami.

Skrypt napisałem w sposób, który jest całkowicie obsługiwany z naprawdę każdym kontrolerem MIDI i dźwiękami. Używam 18 różnych banków dźwięków, po 16 próbek każdy, jednak dodawanie lub odejmowanie banków i próbek jest łatwe i nie wymaga wielu modyfikacji. Jeśli masz jakieś problemy, napisz do mnie e-mail: [email protected]

Znajdź kod na GitHub pod adresem:

Daj mi znać, jeśli go używasz, a zwłaszcza jeśli zrobisz z nim film!

Krok 1: Zależności

Ten program wymaga następujących (nie wbudowanych) modułów Pythona:

mido

pygame

numpy

Jednak Mido rzuca pewne komplikacje, ponieważ samo Mido wymaga kilku zależności. Aby upewnić się, że wszystkie zostaną zainstalowane, po prostu wpisz następujące polecenia w terminalu swojego Raspberry Pi (pomijając „$”) i wszystko będzie dobrze. Pozostałe moduły można zainstalować normalnie.

$ sudo apt-get update

$ sudo apt-get install build-essential

$ sudo apt-get zainstaluj libasound-dev lub libasound2-dev

$ sudo apt-get zainstaluj libjack0

$ sudo apt-get zainstaluj libjack-dev

$ sudo apt-get install python-pip

$ sudo apt-get install python-dev

$ sudo pip zainstaluj python-rtmidi

$ sudo pip zainstaluj mido

Krok 2: Skonfiguruj wartości wejściowe Midi

Skonfiguruj wartości wejściowe Midi
Skonfiguruj wartości wejściowe Midi

W głównym skrypcie Pythona istnieje tablica o nazwie noteList, która składa się z 16 liczb całkowitych (wiersz 165). Są to wartości nut MIDI, które nasz kontroler wysyła do Pi w celu wyzwalania dźwięków. Każdy kontroler midi jest jednak inny, więc jeśli nie masz również Akai LPD8, najprawdopodobniej będziesz musiał zmienić te wartości, aby pasowały do twojego urządzenia.

Repozytorium Github zawiera również inny skrypt o nazwie "midihelp.py", który został stworzony specjalnie do tego celu! Wszystko, co robi, to drukowanie na konsoli wartości wejściowych z pierwszego kontrolera MIDI rozpoznanego przez komputer. Wszystko, co musisz zrobić, to zastąpić te wartości w tablicy, jeśli różnią się od wartości zawartych w noteList.

Kolejność nut koreluje również z tym, który efekt dźwiękowy jest odtwarzany w folderze, więc miej to również na uwadze.

Krok 3: Dodaj dodatkowe foldery z próbkami

Przykładowe zestawy w skrypcie są przechowywane w folderach w tym samym katalogu, dokładnie tak, jak zestaw 808 znajduje się w pliku GitHub. W ten sposób mogę przechowywać różne zestawy próbek w folderach, które można łatwo uporządkować i zastąpić.

Jedyną rzeczą, którą można zmienić w samym skrypcie, jest zmienna foldNum, która po prostu informuje skrypt, ile jest folderów z próbkami. Obecnie skrypt ma wartość foldNum ustawioną na jeden, ponieważ w tym samym katalogu (zestaw 808) znajduje się tylko jeden podfolder (zestaw 808). Maksymalna liczba folderów, które skrypt może w tej chwili obsłużyć, to 18, czyli tyle, ile używam, jednak jest to dość trywialne zmień to, daj mi znać, jeśli potrzebujesz pomocy.

Nazwy folderów tak naprawdę nie mają znaczenia (o ile są różne), ponieważ Skrypt po prostu odczytuje ilość folderów w tym samym katalogu i pobiera w ten sposób ścieżki. Ważne są jednak same nazwy plików, o czym w następnym kroku.

Krok 4: Dodaj i skonfiguruj dodatkowe próbki w nowych folderach

Dodaj i skonfiguruj dodatkowe próbki w nowych folderach
Dodaj i skonfiguruj dodatkowe próbki w nowych folderach

Dźwięki są ładowane do samplera poprzez foldery w tym samym katalogu zawierające pliki.wav o nazwach ponumerowanych od 0 do 15. Zobacz dołączony folder 808 na przykład. KAŻDY podfolder z próbkami powinien wyglądać identycznie.

Indeks wejść MIDI w tablicy noteList odpowiada dokładnie nazwie pliku.wav.

Na przykład:

  • kiedy uruchomisz nutę MIDI zapisaną w noteList[0], odtworzy się plik wav 0.wav.
  • kiedy uruchomisz nutę MIDI zapisaną w noteList[8], odtworzy się plik wav 8.wav.

Zrobiłem to po części po to, aby każdy pojedynczy kontroler MIDI mógł być łatwo skonfigurowany do pracy ze skryptem, a także abym mógł łatwo rozszerzyć lub ograniczyć liczbę sampli i wejść, a także zorganizować pliki i skrypt tak, aby Na przykład dźwięki byłyby zawsze zapisywane jako 0.wav i były wyzwalane przez pierwszą nutę MIDI.

Wybrałem 16 wartości nieco arbitralnie, aby odpowiadały 16 wejściom na moim kontrolerze, więc jeśli wolisz stworzyć sekwencer z tylko 1 próbką lub z większą liczbą, wystarczy, że ponumerujesz odpowiednio pliki audio i odejmij lub dodaj liczby przechowywane w tablicy noteList, aby dopasować.

Jeśli dołączony zestaw 808 działa poprawnie, ale masz problemy z własnymi próbkami, rozwiązaniem najprawdopodobniej będzie zmiana częstotliwości próbkowania plików, aby dopasować częstotliwość próbkowania PyGame 22, 050 kHz i głębię bitową wynoszącą 16. Możesz to zrobić w Audacity lub dowolne inne oprogramowanie do edycji dźwięku. Stamtąd powinny działać idealnie!

Krok 5: Odniesienie do klawiatury numerycznej

Ok, w sekwencerze dzieje się wiele rzeczy, więcej niż początkowo miałem na myśli, więc wcisnąłem trochę w klawiaturę numeryczną, aby dopasować się do zwiększonej funkcjonalności. Mając to na uwadze, gwiazdka * i okres. oba działają jako klawisze funkcyjne.

REFERENCJA

GŁÓWNE FUNKCJE

[8] - Włącz i wyłącz metronom

[9] - Włącz i wyłącz tryb nagrywania

[Enter] - Sekwencja odtwarzania/pauzy

[0] - Usuń bieżącą notatkę w sekwencji

[Num Lock i *] – wyłącz

[MIDI Note and.] - Nie kwantyzuj do parzystych liczb

FUNKCJE TEMPO

[+] - Przyspieszenie kursu BPM

[-] - Kurs spowolnienia BPM

[+ i *] - Szybkie przyspieszenie BPM

[- i *] - Szybko zwolnij BPM

[+ i.] - Precyzyjne przyspieszenie BPM

[- i.] - Precyzyjne spowolnienie BPM

FUNKCJE SEKWENCJI

[1-6] Sekwencja przywołania 1-6

[1-6 i.] Sekwencja przechowywania 1-6

[0 i.] Wyczyść bieżącą sekwencję

ZMIANA FOLDERÓW PRZYKŁADOWYCH

[1-9 i *] - Zmień na pakiet próbek w folderach 1-9

[1-9 i * i.] - Zmień na pakiet próbek w folderach 10-18

WSKAZÓWKI DOTYCZĄCE SEKWENCJI:

-Wyczyść bieżącą sekwencję [0 i.] i zapisz ją w dowolnych sekwencjach, które chcesz usunąć z pamięci.

-Przywołaj sekwencję i zapisz ją pod innym numerem, aby ją skopiować.

Zalecana: