Skip to content

marcel-licence/esp32_basic_synth

Repository files navigation

esp32_basic_synth

ESP32 based DIY polyphonic MIDI synthesizer module Arduino project

project picture
link to the video

More infos: - little quick start guide to get started with arduino synthesizer / music projects: https://youtu.be/ZNxGCB-d68g

⚠️ Note: This project might be outdated and is no longer actively maintained. Development has continued in a new repository, which covers the ESP32 and other boards as well. Please check out the latest version of the project here: ml_synth_basic_example


The project has been tested on

  • ESP32 Audio Kit V2.2 (using ESP32-A1S)
  • ESP32 DEVKIT - DOIT (actually only supporting esp32\1.0.4 library)

ESP32 Audio Kit V2.2

To compile set board to: ESP32 Dev Module Ensure "#define ESP32_AUDIO_KIT" is set in config.h IO22 will be used for MIDI in.

The ADC multiplexer can be used (other wise please remove #define ADC_TO_MIDI_ENABLED from config.h) Connection of the ADC multiplexer:

  • EN -> Ground
  • S0 -> IO23
  • S1 -> IO18
  • S2 -> IO14
  • S3 -> Ground
  • Sig -> IO12

ESP32 DEVKIT - DOIT

To compile set the board to: DOIT ESP32 DEVKIT V1 Ensure that "#define ESP32_AUDIO_KIT" has been removed from config.h

Using a DAC

An external audio DAC is recommended for this setup:

  • BCLK -> IO25
  • WLCK -> IO27
  • DOUT -> IO26

Using no DAC

You can also get a sound without a DAC. Add '#define I2S_NODAC' to config.h

The default output pin is IO22. Add a capacitor in series of the audio line (10µF for example)

Using an ADC multiplexer

Connection of the ADC multiplexer:

ADC Mapping

The adc module has been only tested with the ESP32 Audio Kit V2.2. In z_config.ino you can define your own mapping. Actually only 8 channels are read from the multiplexer. The adc lookup is used to define a channel and cc per analog input (C0..C7). By changing adc values a MIDI messages will generated internally. It should be also mapped int the MIDI mapping.

MIDI Mapping

A controller mapping can be found in z_config.ino. You can define your own controller mapping if your controller does support CC messages.

MIDI via USB

MIDI can be received via USB activating the MACRO "MIDI_VIA_USB_ENABLED" in config.h.

Default PIN Mapping is:

  • CS: IO5
  • INT: IO17 (not used)
  • SCK: IO18
  • MISO: IO19
  • MOSI: IO23

For more information refer to the MIDI related project: https://github.com/marcel-licence/esp32_usb_midi Using USB can be seen here: https://youtu.be/Mt3rT-SVZww


If you have questions or ideas please feel free to use the discussion area!

Derived projects

MichaelPNolan added a phyicial interface, knobs etc. to make it standalone: https://github.com/MichaelPNolan/StandAloneSynth37key/tree/main/esp32_alone_synth

Support & Donations

If you appreciate the work done on this project and would like to support its development, I would be more than happy to accept donations!

For more information on how to donate, please send an email to:

📧 [email protected]

Thank you for your support!

Releases

No releases published

Packages

No packages published