Software
M1D1
Two-oscillator polyphonic iOS synthesiser in Swift/AudioKit with MIDI output.
Background
M1D1 is a polyphonic software synthesiser for iOS built in Swift using the AudioKit framework. It was developed as part of my MSc coursework and demonstrates real-time audio synthesis and MIDI output on a mobile platform.
The name is a nod to MIDI — the protocol at the heart of the project. The goal was to prove that a capable, low-latency synthesiser could be built on iOS using Swift and AudioKit without dropping to C++ for the DSP layer.
Features
- Two oscillators per voice (sine, square, sawtooth, triangle waveforms)
- Polyphonic — up to 8 simultaneous voices
- ADSR envelope per voice
- Filter section with cutoff and resonance controls
- MIDI output: plays notes to any connected MIDI device or DAW via Core MIDI
- On-screen keyboard with velocity sensitivity
Limitations
- Audio latency is higher than a dedicated hardware synth — iOS audio session adds ~10 ms
- No preset saving at v1; state resets on close
- Oscillator detuning is not implemented — both oscillators share the same pitch
- Only tested on iPhone 13 and iPhone 14; iPad layout not optimised
What I learned
AudioKit abstracts a lot of Core Audio complexity, but getting MIDI output to behave consistently across iOS versions required working directly with Core MIDI. This was my first Swift project of meaningful scope and my introduction to mobile audio programming.