Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcel-licence/ml_synthtools
ML_SynthTools
https://github.com/marcel-licence/ml_synthtools
arduino audio dsp esp32 esp8266 pipico rp2040 rp2350 stm32 synthesizer teensy
Last synced: about 5 hours ago
JSON representation
ML_SynthTools
- Host: GitHub
- URL: https://github.com/marcel-licence/ml_synthtools
- Owner: marcel-licence
- License: gpl-3.0
- Created: 2021-11-12T22:46:27.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-05T23:19:35.000Z (1 day ago)
- Last Synced: 2024-11-06T00:22:25.829Z (1 day ago)
- Topics: arduino, audio, dsp, esp32, esp8266, pipico, rp2040, rp2350, stm32, synthesizer, teensy
- Language: C
- Homepage:
- Size: 3.02 MB
- Stars: 159
- Watchers: 6
- Forks: 26
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ML_SynthTools
An Arduino synthesizer library
# Introduction
This library is made to be used for synthesizer projects. It contains modules to create sound, to drive an audio codec and create some audio effects.
In this documentation you will find:
- information about supported platforms
- information about the supported modules of this libraryThere are some references to the organ project because this was the first which supports the highest count of platforms/boards.
The installation manual can be found here: Installation manual
# Platform support
This library supports different platforms:
- ESP32, ESP32S2, ESP32S3
- ESP8266
- Seeedstudio XIAO (samd21 - cortex-m0plus)
- Teensy 4.1 (imxrt1062)
- Daisy Seed (cortex-m7)
- Raspberry Pi Pico (rp2040)
- Raspberry Pi Pico 2 (rp2350/cortex-m33)
- STM32F3* (cortex-m3)
- STM32F407 (cortex-m4)The organ example can be found here: https://github.com/marcel-licence/ml_synth_organ_example
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-NDCQnSDV0More information will be available in future
# Modules of this library
The library contains the following modules:
- midi module more details
- arpeggiator more details
- board pinout definitions more details
- a simple delay more details
- a simple reverb [more details](extras/ml_reverb.md)
- organ sound generator more details
- saw/square pulse width modulated oscillator more details
- vu meter (helper) more details
- oled scope more details
- midi file stream player more details
- mod tracker module more details# Board definitions
There are a lot of audio boards available on the market (for example ESP32-Audio-Kit).
For that reason you can use some of the existing board includes to get all defines
required to set up your board, codec etc.
-> please look here for more information more details# Examples
There are some "multi-platform" examples available (click the link for more details):
- ml_epiano_example
is a full-polyphone e-Piano like sounding synth
- ml_synth_basic_example
- ml_synth_multi_saw_example
creates stereo multi saw (like supersaw etc.) sounds
- ml_synth_organ_example
is a full-polyphone organ implementation trying to work like a real tonewheel organ
- ml_synth_pwm_osc_examples
A synthesizer module sounding a bit like the Alpha Juno.
It's strength is the pulse sound with a modulated pulse-width.
- ml_mod_tracker
A MOD file player. It is a tracker implementation reminding of the Amiga game music. It plays back music of some DOS games too.# PlatformIO integration
please see PlatformIO integration readme
# Compiling note
In some cases the following error might occur:
The platform does not support 'compiler.libraries.ldflags' for precompiled libraries.
To fix this you can look for platform.txtAdd the following line:
compiler.libraries.ldflags=
Ref: https://youtu.be/c7TL8jcrnzs?t=419
If you get a lot of "undefined reference to" errors the library couldn't be found by Arduino.To support new platforms I need the information in which folder Arduino was looking for the library.
Example:Compiling libraries...
Compiling library "ML_SynthTools"
Library ML_SynthTools has been declared precompiled:
Precompiled library in "C:\Users\...\Documents\Arduino\libraries\ML_SynthTools\src\cortex-m4\fpv4-sp-d16-hard" not found
Precompiled library in "C:\Users\...\Documents\Arduino\libraries\ML_SynthTools\src\cortex-m4" not found## Compiling RP2040 (v1.13.1)
Some changes in the toolchain cause that the linker searches the lib in the cortex-m0plus instead of the rp2040 path. Please copy the ML_SynthTools.a from src/rp2040 to src/cortex-m0plus and replace the existing file in case you want to use the lib with the RP2040
---
Please feel free to share your experience and ideas.
## 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!