Projekt prezentuje budowę instrumentu muzycznego na bazie układu ESP32 w dwóch odsłonach: od prostego pianina na klawiaturze numerycznej, po zaawansowany syntezator sterowany przez MIDI. W głównej części zrealizowaliśmy obsługę polifonii oraz zaprogramowaliśmy efekty takie jak Robot, Synthwave i Flanger, zmieniające barwę w czasie rzeczywistym. Całość uzupełnia obsługa pokręteł, które pozwalają na płynne sterowanie efektami oraz regulację głośności instrumentu.
Do części pierwszej:
- ESP32,
- breadboard,
- przewody połączeniowe,
- klawiatura membranowa 4x4,
- buzzer,
- MAX98357A I2S Amp,
- kabel microUSB
Do części drugiej:
- ESP32,
- breadboard,
- przewody połączeniowe,
- kabel USB B,
- kabel MIDI,
- moduł wejścia MIDI,
- pianino MIDI
Komputer z Thonny
Projekt polegał na zbudowaniu własnego instrumentu muzycznego opartego na mikrokontrolerze ESP32. Całość zrealizowaliśmy w dwóch etapach, aby zaprezentować różne metody generowania dźwięku.
Projekt składał się z 2 części:
Pianino na klawiaturze numerycznej: W tym etapie wykorzystaliśmy klawiaturę membranową 4x4 (typu kalkulator/zamek kodowy). Mikrokontroler odczytuje wciśnięte klawisze numeryczne i przypisuje im konkretne częstotliwości dźwięku. W efekcie powstał prosty instrument, który pozwala na wygrywanie melodii pojedynczymi dźwiękami, co pozwoliło nam zrozumieć podstawy obsługi wejść cyfrowych.
Syntezator MIDI: To główna część projektu, w której podłączyliśmy zewnętrzną klawiaturę MIDI przez dedykowany adapter. Mikrokontroler generuje tutaj dźwięk w czasie rzeczywistym metodą syntezy Wavetable. Kluczową funkcją, którą zaprogramowaliśmy, jest polifonia, która pozwala na odtwarzanie kilku dźwięków jednocześnie. W syntezatorze oprogramowaliśmy obsługę pokręteł, które pozwalają na zmianę charakterystyki dźwięku w trakcie gry. Dostępne tryby to:
- Zwykły: Czyste brzmienie podstawowe.
- Robot: Barwa ostra i metaliczna (fala piłokształtna).
- Synthwave: Barwa stylizowana na lata 80. (fala prostokątna).
- Flanger: Efekt modulacyjny dodający głębię dźwięku.
Dodatkowo jedno z pokręteł (CC 7) zaprogramowaliśmy jako główny regulator głośności, co pozwala na płynne ściszanie i podgłaśnianie instrumentu bez potrzeby ingerencji w kod czy wzmacniacz.
kod poniżej