Back to Projects
ReleasedMobile App Family

Band Mate Easy Perc

Band Mate

A percussion app you play by tapping the screen or moving your device. Play one instrument right away, or a kit that combines several.

Platforms
iOS · Android
Built with
Swift / SwiftUI · C audio mixer · CoreMotion
Pricing
Free · no ads · offline
Languages
English · 한국어 · 日本語

Hand percussion is one of the quickest ways to add feel to a song, yet few people have a cowbell, a pair of congas and a tambourine within reach. Easy Perc puts ten instruments on the phone and lets you play them the way you would play the real thing: tapping with several fingers, or striking and shaking the device itself. You can start on one instrument at once, or combine several into a kit.

What it does

Design choices

Strength changes the sound

Each of the ten instruments has several recorded layers, and the one that plays depends on how hard you hit. A soft tap and a strong hit are different samples, not the same sound at two volumes, which is what makes a shaker or a hi-hat feel played.

Motion play with knobs, not guesswork

Motion sensing differs by hand and by phone, so instead of hiding a fixed threshold the app exposes it. Each instrument has knobs for motion sensitivity, and the tambourine adds a soft and strong threshold, the bongo and conga a low and high one.

Shake and touch together

In the tambourine's shake mode the screen still accepts touches. Motion plays the shake sample and a touch plays the pad sample, and neither cuts the other off. Touch haptics are switched off during motion so the phone's own buzz is not read as another hit.

Kits you shape by hand

A kit combines instruments into pads. Each pad has its own volume, and a long-press opens the layout so you can drag the dividers to resize pads. A built-in metronome with tactile knobs keeps time, and saved kits stay on the device.

How it's built

A C mixer tested under sanitizers

The audio engine is a portable C mixer with no allocation or locks on the render thread. The test script compiles it with warnings as errors under AddressSanitizer and UndefinedBehaviorSanitizer, and exercises simultaneous hits, voice limits, choke, metronome and output stability.

Telling a wrist arc from a strike

CoreMotion is sampled at 100 Hz. A wrist swing is detected from angular velocity, and while rotation is active the linear stop detector is reset, because the acceleration of an arc would otherwise create a second, delayed hit. After a gap of more than 0.25 s the detector state restarts.

Samples checked as files

At the 1.1.3 baseline the app ships 149 WAV samples per platform. An asset script checks their references and format, and a separate test checks that the sample dynamics behave as designed. The audio session asks for a 5 ms I/O buffer to keep touch-to-sound delay short.

Native on both platforms

iOS is Swift and SwiftUI with CoreMotion; Android is a separate native project with a C++ AAudio bridge, built with the NDK. Saved kits are protected by tests for restore, duplicate, cancelled delete, corrupt source preservation and rejection of invalid data.

More Band Mate apps

All Projects Contact