minimum effort ESP32-MIDI-Synth

what is it

The ESP32-MIDI-synth is a minimum effort synthesizer. It consists of only 11 resistors, a 6N318 optocoupler, an ESP32 and some sockets.

All of this is enough to make an 8 channel MIDI synthesizer.

The tones are produced by letting the ESP32 produce PWM signals. The API of the ESP32 has functions for PWM of LEDs and this is also made usable for audio.

Letting the ESP32 produce a frequency x is only 3 steps:

  1. ledcSetup(channel, pwm_frequency, resolution)
  2. ledcAttachPin(output_pin, channel)
  3. ledcWriteTone(channel, frequency)


(one resistor is on the back)

1 note played

3 notes played

make it yourself


You may want to add an opamp voltage follower before the audio-jack and a voltage divider to bring the signal to line level.

what does it sound like

The audio is quite loud (3.3V while line voltage is around 1.5V). Because of that the recording sounds distorted.


license of the source code and schematics

All of this is, of course, released in the public domain.


mediocresaw - a "supersaw" implemented using a couple of arduinos

regular e-mail:

if you insist, you can send PGP/GPG encoded messages to, key id: F8B37B3AB85D0E5E00354AD7B599B4451C386E70

to leave a voice-mail, call: +31-85-3012914

I'm on (only) LinkedIn (not on instagram etc).

Via GitHub you can sponsor me and my work: