The Beatsqueezer (STM32 sampler)
Всем привет. Меня зовут Илья, и я хочу поделится с вами информацией о моем проекте, над которым я работаю уже около года.
The Beatsqueezer — это аудио сэмплер основанный на STM32F407 168MHz микроконтроллере. Так-же были использованы CS4334 ЦАП, AD8532 операционный усилитель, Samsung K9F1G08U0M 1 Гбит NAND Flash память (с возможностью замены на K9F8G08U0M 8 Гбит).
Устройство воспроизводит стерео звук с частотой дискретизации 44100 Hz 16 bit. Максимальная полифония 16 звуков.
На борту располагаются 4 ручки (переменные резисторы), один энкодер с кнопкой, 3 светодиода, 16x2 символьный дисплей, DIN5 MDI вход, 3.5 stereo jack для вывода аудио сигнала, слот для micro SD карты, и mini USB разъем для питания устройства и коммуникации с компьютером или другим устройством (например планшет) по USB-MIDI протоколу.
Используется простая и интуитивно понятная навигация по меню при помощи единственного энкодера.
Устройство имеет встроенный bootloader, что позволяет загружать новые версии прошивок с SD карты.
Для ручек реализован «smart knobs» режим, при котором значение фильтра изменяется только тогда, когда положение ручки будет соответствовать эго значению. Обусловлено тем, что каждая ручка может управлять различными свойствами различных фильтров, в соответствии с выбранным шаблоном.
Сэмплы собираются в банки (файлы специального формата) при помощи редактора банков, где каждой из 128 нот соответствует один сэмпл. Сэмплы хранятся в моно 44100 Hz 16 bit PCM. Для каждого сэмпла может быть назначена точка зацикливания (для бесконечного проигрывания звука). Группа, в которой только один сэмпл будет звучать одновременно, останавливая другие сэмплы. Динамическая или фиксированная громкость сэмпла. Игнорирование Note Off сообщения для звуков ударных, эффектов и т.п. Стерео панорама. При установленной точке зацикливания и игнорировании сообщения Note Off сэмпл переходит в «Live looping» режим, при котором первым нажатием клавиши (или пэда) миди контроллера, он начинает играет в бесконечном цикле, а при повторном нажатии — прекращает воспроизведение.
Так-же Beatsqueezer имеет ряд фильтров и эффектов, таких как: Low Pass Resonant фильтр, Ring Modulation, Flanger, Stereo Rotary Vibrato, Limiter, Bitcrusher, Granular Glitch, Delay с Low Pass и High Pass фильтрами, ADSR огибающая для амплитуды и ADSR для Low Pass фильтра. Имеется возможность настроить значения по умолчанию для свойств фильтров в банке.
Основные фичи:
- CD качество звука 44100Hz 16 bit стерео
- 16-ти голосная полифония
- 128 сэмплов на банк
- до 64 банков (можно и больше, но нужно ли?)
- 3 светодиода для индикации MIDI сообщений Note On, Control Change и воспроизведение сэмплов
- 4 ручки
- 1 поворотный энкодер с кнопкой
- 16x2 символьный LCD дисплей
- питание через mini USB разъем
- MIDI через DIN5 MDI вход и по USB-MIDI одновременно
- загрузка банков с SD карты
- от 128Mbytes до 1GByte flash памяти для пользовательских банков
- встроенный bootloader для обновления прошивки
- интуитивная и простая навигация по меню, используя только один поворотный энкодер
- точка зацикливания для каждого сэмпла
- cut группа
- динамическая или фиксированная громкость сэмпла
- игнорирование Note Off сообщения
- стерео панорама
- возможность назначить значения по умолчанию свойств фильтров для банка
- «Smart knobs» режим
- «Live looping» режим
- изменяемый MIDI канал (1-16)
- минимальная MIDI velocity (0-127)
- стаккато или легато атака для LP ADSR фильтра
Фильтры и эффекты:
- Low Pass Resonant фильтр
- Ring Modulation
- Flanger
- Stereo Rotary Vibrato
- Limiter
- Bitcrusher
- Granular Glitch
- Delay с Low Pass и High Pass фильтрами
- ADSR огибающая для амплитуды
- ADSR огибающая для Low Pass фильтра
Зачения ручек:
- 40 — Low Pass Cut Off
- 41 — Low Pass Resonance
- 42 — Ring modulation frequency
- 43 — Ring modulation value
- 44 — Flanger frequency
- 45 — Flanger value
- 46 — Rotary Vibrato frequency
- 47 — Rotary Vibrato value
- 48 — Limiter value
- 49 — Bitcrusher value
- 50 — Granular Glitch Shift
- 51 — Granular Glitch Length
- 52 — Delay High Pass filter value
- 53 — Delay Low Pass filter value
- 54 — Delay value
- 55 — Delay time
- 56 — Amplitude Attack value
- 57 — Amplitude Decay value
- 58 — Amplitude Sustain value
- 59 — Amplitude Release value
- 60 — Low Pass filter Attack value
- 61 — Low Pass filter Decay value
- 62 — Low Pass filter Sustain value
- 63 — Low Pass filter Release value
Настройки устройства:
- channel (1-16)
- velocity (0-127)
- mixing volume(0% — 100%)
- LP envelope (staccato or legato)
- smart knobs mode (enable disable)
- reset knobs on bank change (yes no)
- show pressed note info (yes no)
- show switched knob info (yes no)
- banks information: количество занятых банков на максимум (64) и количество занятой памяти на максимум
- информация про прошивку
Навигация по меню при помощи поворотного энкодера:
- поворот энкодера для навигации по элементам меню, изменения параметров, поиска файлов и т.п.
- нажатие кнопки энкодера (кнопка вниз и вверх) для выбора элемента меню, навигации по папкам, подтверждения выбора в диалогах и т.п.
- удержание кнопки энкодера для выхода в предыдущее меню
- удержание кнопки энкодера и поворот для быстрой навигации через элементы главного меню, с переходом в подменю после отжатия кнопки (quick mode)
Страничка устройства
Видеообзор и демонстрация работы устройства:
«Семплированная» Флейта:
21 комментарий
Как-бы я и сам музыкант, и в первую очередь это для меня :)
24-Bit, 96 kHz!!!
И опять-же это увеличит размер сэмплов в четыре раза, и собственно уменьшит полифонию в два :)
Но вот для аудиоплеера это было бы круто.
Вообще есть более эффективные методы и алгоритмы для лимитеров и компрессоров, чем тот что я использовал, но я ими не распологаю :)
Очень интересный проект — желаю энтузиазма развивать его дальше.