← Work

Software

M1D1

Two-oscillator polyphonic iOS synthesiser in Swift/AudioKit with MIDI output.

Swift AudioKit iOS Synthesis MIDI
M1D1

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.