Live musicians and worship teams, 2026

Multitrack player for musicians

A multitrack playback app for live musicians, built in Flutter with a native C++ audio engine that mixes tracks on the audio thread and generates a sample-accurate metronome.

Stack: Flutter, C++, Oboe, Dart FFI, Android

The problem

Bands that play with backing tracks need several stems (drums, bass, guides, click) playing in perfect sync on a phone, with individual volume control. Solutions built on generic players lag, drift out of sync and suffer from an irregular metronome.

What we built

  • Playback of up to 16 long tracks per song, with mixing and per-track volume;
  • A metronome synthesized inside the engine, aligned to the music;
  • A Flutter interface connected to the native engine through FFI.

The engineering decisions that matter

  • Streaming from disk, never loading everything into memory: each track is read in chunks into a ring buffer.
  • Mixing on the audio thread: the callback sums every track and the metronome with no allocation, no I/O and no locks on the hot path.
  • Sample-accurate metronome: generated at the exact audio frame, with none of the jitter of UI timers.
  • The hardware rate is the source of truth: everything is resampled to the device's native rate.
LayerTechnology
InterfaceFlutter
BridgeDart FFI, C API
EngineC++ with Oboe

See how we approach mobile apps.

Request an assessment