Съдържание:

Raspberry Pi Drum Machine: 5 стъпки
Raspberry Pi Drum Machine: 5 стъпки

Видео: Raspberry Pi Drum Machine: 5 стъпки

Видео: Raspberry Pi Drum Machine: 5 стъпки
Видео: Arduino Drum Sequencer: 8 tracks, 16 steps per measure, 8 measures per pattern 2024, Декември
Anonim
Машина за барабани Raspberry Pi
Машина за барабани Raspberry Pi

Примерен секвенсор чрез Raspberry Pi + Python.

Секвенсорът има 4 полифонии и позволява на потребителя да съхранява и подрежда 6 различни последователности, които могат да редуват в реално време, и поддържа възможността за промяна между различни проби.

Написах сценария по начин, който е напълно работещ с наистина всеки MIDI контролер и звуци. Използвам 18 различни звукови банки, по 16 проби всяка, но добавянето или изваждането на банки и семпли е лесно и не изисква много модификации. Ако имате проблеми, изпратете ми имейл: [email protected]

Намерете кода в GitHub на:

Моля, уведомете ме, ако го използвате, и особено ако правите видеоклип с него!

Стъпка 1: Зависимости

Тази програма изисква следните (не вградени) Python модули:

mido

pygame

буца

Въпреки това, Mido хвърля някои усложнения, тъй като самият Mido изисква няколко зависимости. За да сте сигурни, че всички те ще бъдат инсталирани, просто въведете следните команди в терминала на вашия Raspberry Pi (като пропуснете „$“) и всичко ще бъде наред. Другите модули могат да бъдат инсталирани нормално.

$ sudo apt-get update

$ sudo apt-get install build-съществено

$ sudo apt-get install libasound-dev или 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 инсталирайте python-rtmidi

$ sudo pip инсталирайте mido

Стъпка 2: Конфигурирайте входните стойности на midi

Конфигурирайте Midi входни стойности
Конфигурирайте Midi входни стойности

В рамките на основния скрипт на Python съществува масив, наречен noteList, който се състои от 16 цели числа (ред 165.) Това са нотните стойности на MIDI, които нашият контролер изпраща на Pi, за да задейства звуците. Всеки midi контролер е различен, така че ако нямате и Akai LPD8, най -вероятно ще трябва да промените тези стойности, за да съответстват на вашето устройство.

Репото на Github включва и друг скрипт, наречен "midihelp.py", който е направен специално за тази цел! Всичко, което прави, е да отпечата входните стойности от първия MIDI контролер, който компютърът разпознава, към конзолата. Всичко, което трябва да направите, е да замените тези стойности в масива, ако те се различават от тези, включени в noteList.

Редът на нотите също корелира с това кой звуков ефект от всяка папка се възпроизвежда, така че имайте това предвид.

Стъпка 3: Добавете допълнителни папки с проби

Примерните комплекти в скрипта се съхраняват чрез папки в една и съща директория, задайте точно как комплектът 808 е в GitHub файла. По този начин мога да съхранявам в папки всякакви различни примерни набори, които лесно се организират и заменят.

Единственото нещо, което трябва да се промени в самия скрипт, е променливата foldNum, която просто казва на скрипта колко папки с проби има. В момента скриптът е foldNum зададен на един, защото има само една подпапка в същата директория (комплект 808.) Максималните папки, които скриптът може да обработва в момента, са 18, което е колко много използвам, но това е доста тривиално променете това, уведомете ме, ако имате нужда от помощ.

Имената на папките всъщност нямат значение (стига всички да са различни), тъй като скриптът просто чете количеството папки в същата директория и хваща пътищата по този начин. Имената на самите файлове обаче са важни, повече за това в следващата стъпка.

Стъпка 4: Добавете и конфигурирайте допълнителни проби в нови папки

Добавяне и конфигуриране на допълнителни проби в нови папки
Добавяне и конфигуриране на допълнителни проби в нови папки

Звуците се зареждат в семплера чрез папки в същата директория, съдържащи.wav файлове с имена, номерирани между 0-15. Вижте включената папка 808 за пример за това. ВСЯКА подпапка с мостри трябва да изглежда идентична една с друга.

Индексът на MIDI входовете в масива noteList съответства точно на.wav името на файла.

Например:

  • когато задействате MIDI бележката, съхранена в noteList [0], wav файлът 0.wav ще се възпроизведе.
  • когато задействате MIDI бележката, съхранена в noteList [8], wav файлът 8.wav ще се възпроизведе.

Направих това отчасти, така че всеки един MIDI контролер да може лесно да бъде настроен да работи със скрипта, а също така и да улесня разширяването или ограничаването на пробата и входния номер, както и да организирам файловете и скрипта така, че да е ударният барабан звуците, например, винаги ще бъдат записани като 0.wav и ще се задействат от първата MIDI бележка.

Избрах 16 стойности донякъде произволно, за да съответстват на 16 входа на моя контролер, така че ако предпочитате да направите секвенсор само с 1 проба или с много повече, всичко, което трябва да направите, е да номерирате аудио файловете съответно и изважда или добавя числата, съхранени в масива noteList, за да съвпадат.

Ако включеният комплект 808 работи правилно, но имате проблеми със собствените си проби, решението най -вероятно ще бъде да промените честотата на дискретизация на файловете, така че да съответства на 22, 050 kHz честота на дискретизация на PyGame и битова дълбочина 16. Можете да направите това в Audacity или всеки друг софтуер за редактиране на аудио. Те трябва да работят перфектно от там!

Стъпка 5: Референтен номер на клавиатурата

Добре, има много неща, които се случват в секвенсора, повече, отколкото първоначално имах предвид, така че се натъпках доста на Number Pad, за да съответства на увеличената функционалност. Имайте предвид това, Звездичката * и Периодът. и двете работят като функционални клавиши.

РЕФЕРЕНЦИЯ

ОСНОВНИ ФУНКЦИИ

[8] - Включване и изключване на Metronome

[9] - Включване и изключване на режима на запис

[Enter] - Възпроизвеждане/пауза

[0] - Изтриване на текуща бележка в последователност

[Num Lock и *] - Изключете

[MIDI бележка и.] - Не квантувайте до четни числа

ТЕМПО ФУНКЦИИ

[+] - Ускоряване на курса BPM

[-] - Забавяне на курса BPM

[+ и *] - Бързо ускоряване на BPM

[- и *] - Бързо забавяне на BPM

[+ и.] - Фино ускоряване на BPM

[- и.] - Фино забавяне на BPM

ФУНКЦИИ НА ПОСЛЕДОВАТЕЛНОСТТА

[1-6] Извикване на последователност 1-6

[1-6 и.] Последователност на съхранение 1-6

[0 и.] Изчистване на текущата последователност

ПРОМЯНА НА ПРОБНИ ПАПКИ

[1-9 и *]-Промяна на Примерен пакет в папки 1-9

[1-9 и * и.]-Промяна в Примерен пакет в папки 10-18

СЪВЕТИ НА ПОСЛЕДОВАТЕЛНОСТТА:

-Изчистете текущата последователност [0 и.] И я запазете във всички последователности, които искате да бъдат изчистени от паметта.

-Извикайте последователност и я съхранявайте на различен номер, за да я копирате.

Препоръчано: