Как сделать синтезатор из миди-клавиатуры

Обновлено: 21.11.2024

Ждете, пока стихнут басы? Не ждите больше! Сегодня мы делаем собственный синтезатор на базе Raspberry Pi, управляемый с помощью MIDI-клавиатуры. Этот проект позволит нам создавать собственные звуки и воспроизводить их, нажимая клавиши на клавиатуре. Я буду использовать клавиатуру Yamaha с портом USB MIDI для взаимодействия с Raspberry Pi 3 B+, ​​но этот проект должен работать с любой клавиатурой Raspberry Pi и клавиатурой с выходом MIDI.

Короткое демонстрационное видео

Посмотрите видео:

Мы создадим нашу систему синтезатора с помощью программы Pure Data (сокращенно PD). ПД был создан Миллером Пакеттом в конце 90-х. Инструмент используется профессионально и даже работает на разных операционных системах, что делает его идеальным для нашего проекта. PD использует файлы, известные как патчи, которые можно создать на одном компьютере и легко перенести на другой. Следите за нашими инструкциями по установке, настройке и использованию Pure Data на Raspberry Pi для работы с MIDI-клавиатурой.

PD можно использовать для множества различных проектов. Сегодня мы используем его для создания синтезатора с MIDI-управлением, но его возможности намного шире. Вы можете создать вокодер, автоматически настраивать входящие аудиопотоки и даже использовать его для создания педалей для электрогитар.

Howchoo поддерживается читателями. Как партнер Amazon, мы можем бесплатно получать небольшую партнерскую комиссию, когда вы покупаете по нашим ссылкам.

Установите и обновите ОС Raspberry Pi

Начнем с новой ОС. Для этого проекта я использую Stretch. Последняя версия называется Raspberry Pi OS, но все инструменты, которые мы используем в этом проекте, могут с ней не работать. Ознакомьтесь с нашим руководством по установке Raspbian Stretch, чтобы сделать то, что сделал я.

Обычно достаточно запустить следующий код:

Выполните приятную перезагрузку после обновления.

Установить чистые данные

Pure Data — это прекрасное программное обеспечение с открытым исходным кодом. Вы можете найти все виды расширений и дополнений, чтобы действительно максимально использовать ваши синтезаторные проекты. Но сегодня мы упростим задачу, используя ванильный PD. Чтобы установить базовый пакет PD, запустите следующий код:

Следуйте инструкциям, чтобы убедиться, что пакет установлен. Как правило, я перезагружаю свой Raspberry Pi после установки нового программного обеспечения.

Установите инструменты ALSA и aconnectGUI

Нам нужно установить звуковые инструменты, чтобы подключить нашу MIDI-клавиатуру к Pure Data. В инструментах ALSA есть все необходимое для создания соединения. AconnectGUI предоставит нам красивый пользовательский интерфейс для работы. Если вы не хотите использовать графический интерфейс, операции можно выполнять через командную строку.

Выполните следующую команду, чтобы установить инструменты ALSA и aconnectGUI.

Следуйте инструкциям, чтобы завершить установку и перезапустить Raspberry Pi.

Открыть чистые данные

Я запускаю Pure Data на Raspberry Pi с экраном. PD можно запускать без головы, полный список функций командной строки Pure Data можно найти здесь. Есть несколько способов запустить Pure Data. Его можно найти в папке «Звук и видео» в меню «Пуск».

Однако я буду запускать PD через командную строку, чтобы он запускался с правами администратора. Я также включаю тег -alsamidi, поэтому Pure Data запускается с ALSA, установленным по умолчанию. Выполните следующую команду, чтобы запустить Pure Data из терминала.

Настройка параметров MIDI

Далее нам нужно открыть виртуальные порты в Pure Data. Мы будем использовать эти порты для подключения нашей MIDI-клавиатуры. ALSA следует установить по умолчанию, если вы открыли PD через терминал на последнем шаге. Чтобы быть уверенным, откройте Media из верхнего меню окна PD. Следует выбрать ALSA-MIDI. Если это не так, щелкните левой кнопкой мыши, чтобы выбрать его.

Откройте Media еще раз и выберите настройки MIDI. из выпадающего меню. Появится небольшое окно с текстовыми полями рядом с In Ports: и Out Ports:. Каждое из этих текстовых полей должно быть установлено на 1 . Нажмите «ОК». Это активирует нужные нам MIDI-порты Pure Data.

Подключить клавиатуру к Pure Data

Подключите MIDI-клавиатуру к порту USB на Raspberry Pi и включите клавиатуру. Я буду использовать aconnectGUI для завершения соединения. Вы можете найти графический интерфейс aconnect в папке «Звук и видео» меню «Пуск». Приложение отобразит ALSA Sequencer в верхней части окна.

В верхней части окна есть две кнопки: ножницы и кабель. Нажмите кнопку кабеля, чтобы включить режим подключения. Найдите свою MIDI-клавиатуру в списке, затем перетащите стрелки, чтобы подключить ее к открытым портам Pure Data.

Откройте патч (или создайте свой собственный!)

А теперь самое интересное! Pure Data использует файлы, называемые патчами. Чтобы начать свое путешествие с синтезатором PD, потребуется всего полдня. По пути я нашел несколько полезных ресурсов и хочу передать их вам, чтобы помочь вам начать работу.

Если вы готовы джемовать прямо сейчас, загрузите созданный мной MIDI-патч и немедленно начинайте играть. Примечание. Файлы исправлений создаются на основе существующих файлов исправлений.Ссылка на github содержит заархивированную папку с 8 файлами патчей. Чтобы запустить модуль управления MIDI, разархивируйте папку и откройте файл MIDI_synth.pd.

Этот патч был создан с помощью учебных пособий LWM Music по LWM Music. У доктора Лоуренса В. Мура также есть серия видеороликов, доступных на YouTube. Серия очень динамична и подробно описывает основы Pure Data. Если вы хотите создать прочную основу, это отличное место для начала.

Я рекомендую изучить различные функции PD, чтобы внедрить их в собственные патчи. Например, аддитивный синтез — это способ объединения двух волновых форм для создания уникальных волновых паттернов.

Поздравляем! Ваш Raspberry Pi теперь представляет собой современный синтезатор с MIDI-управлением.

Хотите управлять синтезатором DIY с помощью MIDI?

Воспроизвести его с помощью клавиатуры или создать последовательность в вашем любимом программном обеспечении для редактирования аудио?

Шаг 1. Что вам нужно

Оборудование

  • 1 набор синтезаторов "Сделай сам".
  • 1x Ардуино Уно
  • 1 USB-кабель
  • 1 резистор 10 кОм
  • 1 конденсатор 0,1 мкФ (полиэстер, керамика, тантал и т. д.)
  • 5 перемычек

Программное обеспечение

  • Программа Hairless Midi (для Windows или OSX)
  • Цифровая звуковая рабочая станция (Ableton/Logic/Cubase/и т. д.)
  • USB-миди-клавиатура (дополнительно)

Шаг 2. Загрузите программное обеспечение

Загрузите миди-файл Hairless с их веб-сайта. Вот как наша цифровая звуковая рабочая станция сможет взаимодействовать с нашим Arduino. Это связано с тем, что это программное обеспечение ловко преобразует сообщения Midi (то, что использует DAW) в последовательную связь (то, что использует Arduino).

Теперь перейдите к настройкам и убедитесь, что настройки такие же, как на картинке, и убедитесь, что скорость передачи установлена ​​на 115200 .

На этом этапе Serial -> Midi Bridge не следует выбирать.

Шаг 3. Настройте Midi Bridge

Теперь нам нужно настроить Midi-мост между Hairless Midi и вашей цифровой звуковой рабочей станцией

В OS X

Возможно, вам потребуется включить виртуальный MIDI-порт «IAC». Это создает «канал», который может соединить их вместе:

Откройте встроенное в OS X приложение Audio MIDI Setup (в разделе Приложения->Утилиты).

Выберите «Показать окно MIDI» в меню «Окно».

Дважды щелкните «IAC Driver» в окне MIDI.

Установите флажок "Устройство подключено к сети" в появившемся диалоговом окне.

Вернитесь к Hairless MIDI Serial, и в раскрывающемся списке должна появиться новая опция «Шина IAC».

Другая MIDI-программа также должна видеть опцию шины IAC.…

В Windows

Вам необходимо создать виртуальный порт loopMIDI (ссылка есть в разделе «Системные требования»), чтобы создать «канал», соединяющий их вместе.

После установки loopMIDI запустите его и нажмите кнопку «+», чтобы создать новый виртуальный MIDI-порт с указанным именем.

И Hairless Bridge, и ваша аудиопрограмма должны подключиться к этому порту.

Шаг 4. Загрузите программу Arduino

Загрузите отсюда программу Arduino и загрузите ее в Arduino.

Убедитесь, что мост Hairless Midi Serial не подключен, иначе Arduino IDE не сможет подключиться к Arduino Uno.

В коде используется библиотека TimerOne. Скачал отсюда. Его нужно поместить в папку Arduino Library в Documents > Arduino > Libraries, как показано на рисунке

Шаг 5. Оборудование

Оборудование довольно простое. Он использует фильтр нижних частот 1-го порядка, чтобы сгладить сигнал ШИМ, чтобы он стал аналоговым напряжением. (См. рис. 1 и 2: до RC-фильтра и после RC-фильтра).

Это добавление к вашему синтезатору (Dub Siren, Stutter или Atari) сделает его управляемым вашей DAW.

RC-фильтр (резистор + емкостной фильтр) подключается к контакту 9 платы Arduino и контакту 11 таймера 556 (синтезатора).

Контакт 5 платы Arduino подключен к контакту 3 таймера 556 (синтеза)

Контакт 5 В Arduino подключен к красной шине питания, а заземление к синей шине. Это означает, что нам не нужно 9 В для питания нашего синтезатора, так как его запитает Arduino!

Шаг 6. Начинайте играть!

Включите миди-последовательный интерфейс для волос для волос -> миди-мост.

Откройте цифровую звуковую рабочую станцию ​​(Ableton, Logic, Cubase и т. д.)

Создать внешний трек Midi

Выберите свой Midi-бридж в качестве MIDI-выхода

Убедитесь, что Midi Bridge выбран как Midi в Hairless Midi

Введите Notes, и вы должны увидеть, как светодиод Pin 13 на Arduino мигает, а синтезатор издает звуковой сигнал

Шаг 7. Далее

Вы можете заметить, что ноты не настроены на ноты миди-клавиатуры.

Изменение значений в этой строке приведет к изменению вывода. Играйте!

Кроме того, подключение RC-фильтра к разным контактам таймера 556 будет управлять разными вещами!

Если это так, это легко — просто подключите USB-кабель от одного устройства к другому и убедитесь, что они оба подключены к одному и тому же MIDI-каналу. Если это не так (что более вероятно), вам придется подключить их оба к ноутбуку, а затем использовать какое-либо программное обеспечение, чтобы связать потоки MIDI вместе.

Является ли MIDI-клавиатура синтезатором?

Самое основное объяснение разницы между синтезаторами и MIDI-клавиатурами заключается в том, что синтезаторы имеют встроенные звуки, а MIDI-клавиатуры не имеют встроенных звуков. MIDI-клавиатуры — это аппаратные средства, которые продюсеры часто используют для создания музыки в DAW.

Как управлять синтезатором с помощью MIDI?

<р>1. Использование аппаратного обеспечения в качестве MIDI-контроллера Подключите порт MIDI-выхода синтезатора к порту MIDI-входа на вашем MIDI-интерфейсе. Или используйте USB-кабель, если он поддерживается. Включите кнопку Track для входного MIDI-порта. Включите кнопку Remote, если вы хотите сопоставить ручки и циферблаты вашего синтезатора с элементами управления в Live.

В чем разница между клавиатурой и синтезатором?

Разница в двух словах Клавиатуры предназначены для людей, которые хотят играть с большим количеством звуков и сэмплов и автоматическим аккомпанементом во всех мыслимых стилях. Синтезаторы больше подходят для музыкантов, которые хотят создавать собственные звуки или детально настраивать существующие сэмплы.

Нужно ли вам знать фортепиано, чтобы играть на синтезаторе?

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

Можно ли подключить MIDI-контроллер к синтезатору?

Так что да, практически все синтезаторы можно использовать в качестве MIDI-контроллеров, если они могут выводить MIDI-сигнал, будь то через USB или традиционный 5-контактный выходной MIDI-кабель.

Как отправить MIDI на синтезатор?

Сначала подключите MIDI-выход аудиоинтерфейса к MIDI-входу аппаратного синтезатора. Затем подключите аудиовыход синтезатора к аудиоинтерфейсу. Затем в подключаемом модуле внешнего инструмента выберите свой аудио-миди-интерфейс для отправки MIDI-выход.

Как подключить MIDI-клавиатуру к аудиоинтерфейсу?

Этапы просты. Подключите интерфейс к компьютеру и убедитесь, что он распознан. Возможно, потребуется водитель. Установите его на MIDI-вход DAW. Подключите MIDI-выход клавиатуры к MIDI-входу аудиоинтерфейса. Загрузите инструмент, способный использовать этот MIDI-сигнал.

Нужен ли моей MIDI-клавиатуре аудиоинтерфейс?

Большинство MIDI-клавиатур поставляются с разъемом USB, что означает, что они предназначены для прямого подключения к компьютеру через соединение USB. Строго говоря, вам не нужен аудиоинтерфейс, чтобы MIDI работал хорошо. Но у вас могут возникнуть проблемы с задержкой при подключении через USB.

Как мне записать с клавиатуры Yamaha на компьютер?

Чтобы записать музыку, вам нужно будет нажать «Отслеживать» в верхней части строки меню. Затем нажмите «Новая MIDI-дорожка» или «Новая аудиодорожка». Начнется запись, и будет записываться звук, производимый вашей клавиатурой. Эту запись можно сохранить как аудиофайл.

В чем разница между MIDI-клавиатурой и клавиатурой?

С помощью MIDI-контроллера вы можете создавать MIDI-данные и запускать звук аппаратного сэмплера или синтезатора. С другой стороны, клавиатура — это просто инструмент сам по себе или часть инструмента, и вам не нужно дополнительное оборудование, чтобы заставить его работать.

Есть ли у синтезаторов MIDI?

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

Является ли синтезатор инструментом?

Что такое синтезатор? Синтезатор — это электронный инструмент, который использует некоторую форму цифровой или аналоговой обработки для создания слышимого звука. Как следует из их названия, большинство синтезаторов стремятся искусственно воспроизвести (или синтезировать) звуки акустических инструментов, подобных перечисленным выше.

Как работает синтезатор MIDI?

Как вы используете MIDI?

Помните: вы можете настроить каждое устройство на отдельный канал и использовать один поток MIDI для управления ими всеми. MIDI THRU — это то, как вы устанавливаете это соединение. Просто подключите MIDI Thru первого устройства к MIDI IN следующего устройства в цепочке, чтобы дублировать MIDI-данные и отправить их вниз по течению.

Какова цель синтезатора?

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

В чем разница между цифровым пианино и синтезатором?

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

Почему он называется синтезатором?

Термин "синтезатор" впервые был использован для описания инструмента в 1956 году, когда речь шла об электронном музыкальном синтезаторе RCA Mark I. Он был разработан американцами Гарри Ф. Олсоном и Гербертом Беларом и генерировал звук с помощью 12 камертонов, возбуждаемых электромагнитным полем.

Трудно ли играть на синтезаторе?

Как и на любом другом музыкальном инструменте, научиться играть на синтезаторе гораздо проще, если вы весело проводите время. Однако это может сильно разочаровать людей, которые хотели бы сочинять или играть музыку, но испытывают трудности с аппаратным или программным обеспечением.

Должен ли я изучать клавиатуру или синтезатор?

Выбирая между клавиатурой и синтезатором, вам просто нужно подумать, как вы планируете его использовать. Если вы хотите научиться игре на фортепиано и вам не нужна масса дополнительных функций, клавиатура отлично подойдет. Если вы ищете полезный инструмент для своей домашней студии, лучше всего подойдет синтезатор.

Примечание. Вы должны быть знакомы с обработкой ввода MIDI в JUCE и с созданием синусоидальной волны. См. Учебное пособие. Обработка событий MIDI и Учебное пособие. Создание синусоидального синтезатора.

В демонстрационном проекте представлена ​​экранная клавиатура, которую можно использовать для игры на простом синусоидальном синтезаторе.

С помощью клавиш на клавиатуре компьютера можно управлять экранной клавиатурой (используя клавиши A, S, D, F и т. д. для управления музыкальными нотами C, D, E, F и т. д.). Это позволяет вам играть на синтезаторе полифонически.

  • SynthAudioSource : реализует пользовательский класс AudioSource с именем SynthAudioSource , который содержит сам класс Synthesizer. Это выводит весь звук из синтезатора.
  • SineWaveVoice : это пользовательский класс SynthesiserVoice, который называется SineWaveVoice . Голосовой класс визуализирует один из голосов синтезатора, смешивая его с другими звучащими голосами в объекте Synthesizer. Один экземпляр класса voice воспроизводит один голос.
  • SineWaveSound : содержит пользовательский класс SynthesiserSound с именем SineWaveSound . Звуковой класс фактически является описанием звука, который может быть создан как голос. Например, он может содержать данные семпла для голоса сэмплера или данные волновой таблицы для синтезатора с волновой таблицей.

Настройка клавиатуры

Наш класс MainContentComponent содержит следующие элементы данных.

Члены synthAudioSource и keyboardComponent инициализируются в конструкторе MainContentComponent.

Чтобы мы могли начать играть на клавиатуре с клавиатуры компьютера, мы перехватываем фокус клавиатуры сразу после запуска приложения. Для этого мы используем простой таймер, который срабатывает через 400 мс:

Функции AudioAppComponent

Приложение использует AudioAppComponent для настройки простого аудиоприложения (см. Учебное пособие. Создание генератора белого шума для самого простого приложения). Три необходимые чистые виртуальные функции просто вызывают соответствующие функции в нашем пользовательском классе AudioSource:

Класс SynthAudioSource

Класс SynthAudioSource выполняет немного больше работы:

  • [1] : Мы добавляем несколько голосов в наш синтезатор. Это количество добавленных голосов определяет полифонию синтезатора.
  • [2]: мы добавляем звук, чтобы синтезатор знал, какие звуки он может воспроизводить.
  • [3] : синтезатору необходимо знать частоту дискретизации выходного аудио.
  • [4]: в функции getNextAudioBlock() мы извлекаем буферы MIDI-данных из объекта MidiKeyboardState.
  • [5] : Эти буферы MIDI передаются синтезатору, который будет использоваться для воспроизведения голосов с использованием временных меток сообщений note-on и note-off (и других голосовых сообщений MIDI-канала).

При желании объекты SynthesiserSound могут использоваться совместно объектами Synthesizer. Класс SynthesiserSound является типом класса ReferenceCountedObject, поэтому время жизни объектов SynthesiserSound обрабатывается автоматически.

Примечание. Если вам нужно сохранить указатель на объект SynthesiserSound, вы должны сохранить его в переменной YourSoundClass::Ptr, чтобы это управление памятью работало.

Класс SineWaveSound

Наш звуковой класс очень прост, ему даже не нужно содержать никаких данных. Ему просто нужно сообщить, должен ли этот звук воспроизводиться на определенных MIDI-каналах и определенных нотах или диапазонах нот на этом канале. В нашем простом случае он просто возвращает true как для функций applyToNote(), так и для ApplyToChannel(). Как упоминалось выше, класс звука может хранить данные, необходимые для создания звука (например, волновую таблицу).

Голосовое состояние синусоидальной волны

Класс SineWaveVoice немного сложнее. Он должен поддерживать состояние одного из голосов синтезатора. Для нашей синусоиды нам нужны следующие элементы данных:

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

Проверка того, какой звук можно воспроизвести

Функция SynthesiserVoice::canPlaySound() должна быть переопределена, чтобы возвращать информацию о том, может ли голос воспроизводить звук. В этом случае мы могли бы просто вернуть true, но наш пример показывает, как использовать dynamic_cast для проверки типа передаваемого звукового класса.

Запуск голоса

Голос запускается синтезатором-владельцем путем вызова нашей функции SynthesiserVoice::startNote(), которую мы должны переопределить:

Читайте также: