Как создать музыкальный синтезатор — библиотека 'AMY' невероятно мощная, она меняет правила игры.
Darrens Bench
0:00 / 0:00
Как создать музыкальный синтезатор — библиотека 'AMY' невероятно мощная, она меняет правила игры.
6 719 просмотров · 11 месяцев назад
Darrens Bench
317 подписчиков
6 719 просмотров · 11 месяцев назад
Можно ли создать музыкальный синтезатор всего из 12 строк кода на ESP32? 🎹🔧
В этом видео мы рассмотрим библиотеку синтезаторов Amy, работающую на микроконтроллере ESP32, и покажем, как превратить всего несколько строк кода в полнофункциональный полифонический синтезатор! 🎶 Узнайте, как установить Amy, настроить выходы ЦАП I²S и воспроизвести узнаваемую мелодию (Tubular Bells!) с помощью MIDI-последовательностей нот и циклической смены тембров. Независимо от того, являетесь ли вы мейкером, программистом или энтузиастом синтезаторов, это пошаговое руководство для начинающих станет вашим первым шагом в мир самостоятельного создания встроенного синтезатора звука.
Но... Может ли он воспроизводить Doom? Нет, но он может воспроизводить Tubular Bells.
✅ Идеально подходит для поклонников Arduino и ESP32
✅ Включена демонстрация реального звука
✅ Проект с открытым исходным кодом и возможностью расширения
📚 Изучите библиотеку Amy, экспериментируйте со звуком и погрузитесь в создание встроенной музыки!
#ESP32 #Синтезатор #Arduino #AmySynth #МузыкаСделайСам #MIDI #ВстроенныйАудио #СинтезаторСОткрытымИсточником
Примечание: Если компиляция завершается с ошибками, связанными с I2S, возможно, вам потребуется откатить версию ядра ESP32 до 3.1.1. Библиотека AMY использовала вызовы нескольких функций, которые были изменены после версии 3.1.1. Попробуйте сначала откатить версию, так как проблемы, возможно, уже решены.
Код:
Обратите внимание: YouTube не разрешает использование угловых скобок (двух клавиш между "M" и "/") из-за риска внедрения HTML-кода. Я использовал "*(*" и "*)*" в качестве упрощенного способа их обозначения. Вам нужно будет найти и заменить их, прежде чем код скомпилируется.
#include (*AMY-Arduino.h*)
int n,v;
String Msg;
char buf[20];
int notes[30]={ 69,64,71,64,67,69,64,72,64,74,64,71,72,64,69,64,71,64,67,69,64,72,64,74,64,71,72,64,71,64};
void setup() {
amy_config_t amy_config = amy_default_config();
amy_config.features.startup_bleep = 1;
amy_config.i2s_bclk = 4;
amy_config.i2s_lrc = 6;
amy_config.i2s_dout = 5;
amy_start(amy_config);
amy_live_start();
delay(1000);
amy_add_message("r0,1,2K160Z");
v=0;
}
void loop() {
for(n=0;n*(*30;n++)
{
Msg="r"+(String)v + "n"+(String)notes[n] + "l1Z";
Msg.toCharArray(buf,20);
amy_add_message(buf);
delay(200);
v++;
if(v*)*2)
v=0;
}
}
Главы
00:32 Библиотека AMY от Shorepine software
00:40 Код Arduino
02:21 Код для игры на трубчатых колокольчиках
04:12 Игра на трубчатых колокольчиках