Meebleeps / MeeBleeps-Freaq-FM-Synth

Other
109 stars 14 forks source link

Meebleeps / Wirehead Freaq FM Synth

Arduino Synth with Dual-voice 2-OP FM | Generative 2-track Polymetric Sequencer | Mozzi SDK

NOTE This code is an open-source prototype and is not compatible with the Wirehead Instruments version of Freaq FM hardware

An evolution of my first Mozzi synth build, this one features dual independent 2-operator FM voices paired with a 2-track generative sequencer.

Each voice has independent carrier & modulator waveforms, FM ratio, modulation envelope & LFO.

Both tracks share the a single pattern (inspired by the Intellijel Metropolix) and can be stacked in unison or have different polymetric step-counts. Track 1 can be offset 0-3 octaves above track 2 for separate bass & lead.

It started simple... but ended up cramming the 32K flash to the brim with features and wavetables, maxxing out the interface with obscure button combinations, and pushing the 16Mhz Arduino Nano to the edge! Upside is it makes lots of funky noises now!

Source Code: https://github.com/Meebleeps/MeeBleeps-Freaq-FM-Synth

Youtube Demo: https://www.youtube.com/watch?v=KD6IrcmMkoA

Youtube Channel: https://www.youtube.com/channel/UC4I1ExnOpH_GjNtm7ZdWeWA

Source released under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Copyright (C) 2022 Meebleeps


Important build-notes


Voices

Sequencer

Hardware

Pins

These are the defaults defined for the faceplate controls:

Pin Function Name in MutantFMSynth.ino
A0 Mutation ANALOG_INPUT_MUTATION
A1 Wobble ANALOG_INPUT_LFO
A2 Population ANALOG_INPUT_STEPCOUNT
A3 Attack ANALOG_INPUT_MOD_ENVELOPE2
A4 Lifespan ANALOG_INPUT_DECAY
A5 Decay ANALOG_INPUT_MOD_ENVELOPE1
A6 Ratio ANALOG_INPUT_MOD_RATIO
A7 Depth ANALOG_INPUT_MOD_AMOUNT
D3 Start BUTTON_INPUT_START
D4 Voice BUTTON_INPUT_VOICE
D5 Rec BUTTON_INPUT_REC
D6 Scales BUTTON_INPUT_SCALE
D10 Func BUTTON_INPUT_FUNC
D12 Tonic BUTTON_INPUT_TONIC

User Guide

Buttons

Rotary Inputs

Issues / Limitations

Compiling on the Arduino IDE

If you have issues with the compiled size not fitting in the Nano, this may be due to different compiler (I use VSCode & PlatformIO) or different bootloader in the Arduino (not sure which I have, but am compiling to Elegoo brand arduino nano).

Compiling in VSCode / PlatformIO

Thanks