Оглавление:

Драм-машина Raspberry Pi: 5 шагов
Драм-машина Raspberry Pi: 5 шагов

Видео: Драм-машина Raspberry Pi: 5 шагов

Видео: Драм-машина Raspberry Pi: 5 шагов
Видео: Собираем сетевое хранилище из Raspberry Pi 4! 2024, Июль
Anonim
Драм-машина Raspberry Pi
Драм-машина Raspberry Pi

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

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

Я написал сценарий таким образом, что он полностью совместим с любым MIDI-контроллером и звуками. Я использую 18 различных звуковых банков, по 16 сэмплов в каждом, однако добавлять или вычитать банки и сэмплы легко и не требуется много изменений. Если у вас возникнут проблемы, напишите мне по электронной почте: [email protected]

Найдите код на GitHub по адресу:

Пожалуйста, дайте мне знать, если вы его используете, и особенно, если вы снимаете с ним видео!

Шаг 1. Зависимости

Для этой программы требуются следующие (не встроенные) модули Python:

мидо

Pygame

тупой

Однако Mido создает некоторые сложности, поскольку сама Mido требует некоторых зависимостей. Чтобы убедиться, что все они установлены, просто введите следующие команды в терминал вашего Raspberry Pi (опуская «$»), и все будет хорошо. Остальные модули можно установить в обычном режиме.

$ sudo apt-get update

$ sudo apt-get install build-essential

$ 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 install 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 работает правильно, но у вас проблемы с вашими собственными образцами, решение, скорее всего, будет заключаться в изменении частоты дискретизации файлов в соответствии с частотой дискретизации PyGame 22, 050 кГц и битовой глубиной 16. Вы можете сделать это в Audacity или любое другое программное обеспечение для редактирования аудио. Они должны отлично работать оттуда!

Шаг 5: Ссылка на цифровую клавиатуру

Хорошо, в секвенсоре происходит много вещей, больше, чем я изначально предполагал, поэтому я втиснул немало в цифровую клавиатуру, чтобы соответствовать возросшей функциональности. Это в виду, Звездочка * и точка. оба работают как функциональные клавиши.

ССЫЛКА

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

[8] - Включение и выключение метронома

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

[Enter] - последовательность воспроизведения / паузы

[0] - Удалить текущую ноту по порядку

[Num Lock и *] - Завершение работы

[MIDI Note и.] - Не преобразовывать в четные числа

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

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

[-] - Курс замедления BPM

[+ и *] - быстрое ускорение BPM

[- и *] - быстрое замедление BPM

[+ и.] - точное ускорение BPM

[- и.] - Fine Slow Down BPM

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

[1-6] Вызов последовательности 1-6

[1-6 и.] Сохранить последовательность 1-6

[0 и.] Очистить текущую последовательность

ИЗМЕНЕНИЕ ПАПКИ ОБРАЗЦА

[1–9 и *] - заменить на пакет образцов в папках 1–9

[1-9 и * и.] - Перейти к образцу в папках 10-18

ПОСЛЕДОВАТЕЛЬНОСТЬ СОВЕТОВ:

-Очистите текущую последовательность [0 и.] И сохраните ее в любых последовательностях, которые вы хотите очистить из памяти.

-Позвоните последовательность и сохраните ее под другим номером, чтобы скопировать ее.

Рекомендуемые: