/ml_synth_organ_example

ESP32, ESP8266 based MIDI Organ using the ML_SynthTools library (little example arduino project)

Primary LanguageC++GNU General Public License v3.0GPL-3.0

ml_synth_organ_example

MIDI Organ using the ML_SynthTools library (little example arduino project)

project picture
link to the video

This project is an example supporting different platforms:

  • ESP32
  • ESP8266
  • Seeedstudio XIAO (samd21 - cortex-m0plus)
  • Teensy 4.1 (imxrt1062)
  • Daisy Seed (cortex-m7)
  • Raspberry Pi Pico (rp2040)

The required library can be found here: https://github.com/marcel-licence/ML_SynthTools

All platforms are tested. Actually the sound quality might be a bit limited. The organ supports full polyphony (you can play all 64 notes of the upper manual at the same time). You can modify the sound using 9 drawbars. Percussion is supported (2nd, 3rd). A simple rotary implementation creates a simple (noisy) leslie like sound.

Demo using ESP32, ESP8266: https://youtu.be/c7TL8jcrnzs Demo using the XIAO: https://youtu.be/2wT8nByoUNw Demo using the Teensy4.1: https://youtu.be/H-NDCQnSDV0

More information will be available in future

Compileable build configurations

Below you will find a list of some possible build configurations. They should all work without any modification of the code.


Core: ESP32 Arduino (2.0.4)
Version: 2.0.4
Board: WEMOS D1 MINI ESP32

Flash Frequency: 80MHz
Partition Scheme: Default
CPU Frequency: 240MHz (WiFi/BT)
Upload Speed: 921600
Core Debug Level: None

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
WiFi 2.0.0 https://github.com/espressif/arduino-esp32.git True

Core: ESP32 Arduino
Version: 1.0.6
Board: ESP32 Dev Module

PSRAM: Disabled
Partition Scheme: No OTA (2MB APP/2MB SPIFFS)
CPU Frequency: 240MHz (WiFi/BT)
Flash Mode: QIO
Flash Frequency: 80MHz
Flash Size: 4MB (32Mb)
Upload Speed: 921600
Core Debug Level: None

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
WiFi 1.0 True

Core: ESP32 Arduino (2.0.5)
Version: 2.0.5
Board: WEMOS D1 MINI ESP32

Flash Frequency: 80MHz
Partition Scheme: Default
CPU Frequency: 240MHz (WiFi/BT)
Upload Speed: 921600
Core Debug Level: None

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
WiFi 2.0.0 https://github.com/espressif/arduino-esp32.git True

Core: ESP32 Arduino (2.0.0)
Version: 2.0.0
Board: ESP32 Dev Module

PSRAM: Disabled
Partition Scheme: Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
CPU Frequency: 240MHz (WiFi/BT)
Flash Mode: QIO
Flash Frequency: 80MHz
Flash Size: 4MB (32Mb)
Upload Speed: 921600
Arduino Runs On: Core 1
Events Run On: Core 1
Core Debug Level: None

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
WiFi 2.0.0 True

Core: Raspberry Pi RP2040 Boards(1.13.1)
Version: 1.13.1
Board: Generic RP2040

Flash Size: 2MB (no FS)
CPU Speed: 125 MHz
Optimize: Small (-Os) (standard)
RTTI: Disabled
Debug Port: Serial
Debug Level: None
USB Stack: Pico SDK
Boot Stage 2: W25Q080 QSPI /4

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
I2S 1.0 http://www.arduino.cc/en/Reference/I2S True

Core: Raspberry Pi RP2040 Boards(1.13.1)
Version: 1.13.1
Board: Raspberry Pi Pico

Flash Size: 2MB (no FS)
CPU Speed: 125 MHz
Debug Port: Disabled
Debug Level: None
USB Stack: Pico SDK

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
I2S 1.0 http://www.arduino.cc/en/Reference/I2S True

Core: Teensyduino
Version: 1.8.5
Board: Teensy 4.1

USB Type: Serial + MIDI + Audio
CPU Speed: 600 MHz
Optimize: Faster
Keyboard Layout: US English

Used libraries:
Name Version Url Git Core library
Audio 1.3 http://www.pjrc.com/teensy/td_libs_Audio.html True
SPI 1.0 http://www.arduino.cc/en/Reference/SPI True
SD 2.0.0 https://github.com/PaulStoffregen/SD True
SerialFlash 0.5 https://github.com/PaulStoffregen/SerialFlash True
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
Wire 1.0 http://www.arduino.cc/en/Reference/Wire True

Core: STM32GENERIC for STM32 boards
Version: 1.0.0
Board: BLACK F407VG/VE/ZE/ZG boards

USB: Serial [Virtual COM port, PA11/PA12 pins]
Serial communication: SerialUSB

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
I2S 1.0 http://www.arduino.cc/en/Reference/I2S https://github.com/marcel-licence/STM32GENERIC.git True
DMA 1.0 https://github.com/marcel-licence/STM32GENERIC.git True

Core: STM32GENERIC for STM32 boards
Version: 1.0.0
Board: Discovery F407VG

USB: Serial [Virtual COM port]
Serial communication: SerialUSB

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
Wire 1.0 http://www.arduino.cc/en/Reference/Wire https://github.com/marcel-licence/STM32GENERIC.git True
I2S 1.0 http://www.arduino.cc/en/Reference/I2S https://github.com/marcel-licence/STM32GENERIC.git True
DMA 1.0 https://github.com/marcel-licence/STM32GENERIC.git True

Core: STM32 boards groups (Board to be selected from Tools submenu 'Board part number')
Version: 2.1.0
Board: Generic STM32H7 Series

Board part number: Daisy Seed
Upload method: STM32CubeProgrammer (DFU)
U(S)ART support: Enabled (generic 'Serial')
USB support (if available): CDC (generic 'Serial' supersede U(S)ART)
USB speed (if available): Low/Full Speed
Optimize: Smallest (-Os default)
Debug symbols: None
C Runtime Library: Newlib Nano (default)

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
DaisyDuino 1.4.0 https://github.com/electro-smith/DaisyDuino https://github.com/marcel-licence/DaisyDuino.git False
Wire 1.0 http://www.arduino.cc/en/Reference/Wire True
Source Wrapper 1.0.1 True

Core: ESP8266 Boards (3.0.2)
Version: 3.0.2
Board: LOLIN(WEMOS) D1 R2 & mini

CPU Frequency: 160 MHz
VTables: Flash
C++ Exceptions: Disabled (new aborts on oom)
Stack Protection: Disabled
SSL Support: All SSL ciphers (most compatible)
MMU: 32KB cache + 32KB IRAM (balanced)
Non-32-Bit Access: Use pgm_read macros for IRAM/PROGMEM
Flash Size: 4MB (FS:2MB OTA:~1019KB)
lwIP Variant: v2 Lower Memory
Debug port: Disabled
Debug Level: None
Erase Flash: Only Sketch
Upload Speed: 921600

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
ESP8266WiFi 1.0 True
I2S 1.0 http://www.arduino.cc/en/Reference/I2S True

Core: Seeed SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards
Version: 1.8.2
Board: Seeeduino XIAO

USB Stack: Arduino
Debug: Off

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False

Core: STM32GENERIC for STM32 boards
Version: 1.0.0
Board: BLUE F103VE/ZE/ZG boards

USB: Serial [Virtual COM port, PA11/PA12 pins]
Serial communication: SerialUSB

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
I2S 1.0 http://www.arduino.cc/en/Reference/I2S https://github.com/marcel-licence/STM32GENERIC.git True
DMA 1.0 https://github.com/marcel-licence/STM32GENERIC.git True

Core: STM32GENERIC for STM32 boards
Version: 1.0.0
Board: BluePill F103CB

USB: Serial [Virtual COM port, PA11/PA12 pins]
Serial communication: SerialUSB

Used libraries:
Name Version Url Git Core library
ML SynthTools 1.0.1 https://github.com/marcel-licence/ML_SynthTools https://github.com/marcel-licence/ML_SynthTools.git False
I2S 1.0 http://www.arduino.cc/en/Reference/I2S https://github.com/marcel-licence/STM32GENERIC.git True
DMA 1.0 https://github.com/marcel-licence/STM32GENERIC.git True