A modular synthesis library for the Arduino.

Akshay 78b291a402 fixed formatting for markdown headings in README.md 11 months ago
examples 96c62c4850 Fixed bugs in examples 4 years ago
MSynth.h 62f926f0e2 Major fixes in MSynth. Interrupt works. 2 Examples. 4 years ago
README.md 78b291a402 fixed formatting for markdown headings in README.md 11 months ago
TimerOne.cpp 9493e93fa1 Made MSynth.h as an interface 4 years ago
TimerOne.h 62f926f0e2 Major fixes in MSynth. Interrupt works. 2 Examples. 4 years ago
keywords.txt 96c62c4850 Fixed bugs in examples 4 years ago
synth.cpp 9dd00bea4d MSynth header. Fix-Saw,square. Squarewave Optimizations 4 years ago
synth.h 9dd00bea4d MSynth header. Fix-Saw,square. Squarewave Optimizations 4 years ago
table.cpp 0e781208b6 Fixed squarewave. Works with and without table. 4 years ago
table.h 9bf0732064 Changed sample type to char (which is 8-bit in AVR GCC) 4 years ago
ugens.cpp 0e781208b6 Fixed squarewave. Works with and without table. 4 years ago
ugens.h 0e781208b6 Fixed squarewave. Works with and without table. 4 years ago

README.md

MSynth

A modular synthesis library for Arduino.

Author: Akshay Cadambi

MSynth was designed to make modular synthesis on the arduino simple and easy to use. It tries to combine the idea of SynthDefs as seen in SuperCollider with Gamma's simple syntax that is a result of it's per-sample processing architecture.

The intent of this project was to make the sketch code as decluttered as possible, and yet, have the ability to work with powerful modular-synthesis tools.

Therefore, the design of the syntax focuses on ease of programming and ease of use: connect modules together, create synths, and have fun with it.

Please see examples for a step-by-step instructions of how to use MSynth.

Hardware Specs:
  • Tested on Arduino Uno.
  • Uses Pin 9 as audio output pin (PWM based).
Features (at the moment)
  • Wavetable based oscillators: Sine, Triangle, Saw, Reverse-Saw, Square
  • Amplitude and Frequency modulation.
  • Custom synth definitions to connect oscillators in any manner.
  • Audio Rate ISR for per-sample processing at 16kHz.
  • 8-bit dynamic range.
  • Uses the TimerOne library (included in the source).
Caveats:
  • Uses Timer1. You can no longer use the Servo Library or any other library that makes use of Timer1.
Features (future)
  • Control Rate ISR system.
  • Envelopes: Linear, exponential.
  • Control Rate Amplitude and frequency modulation.
  • Filters, effects, etc.

This project was conceived as a part of the 240B: Audio Synthesis and Processing course at the Media, Arts and Technology Program, UC Santa Barbara.

Contact: akshay19.92@gmail.com