Rather than directing your breathing like a typical meditation app, Breath Player aimed to create a mindful breathing tool which followed the natural cadence of your own breathing to immerse you in the moment.
The app needed to track breaths in and out, and make beautiful sound and music that swells smoothly along with your breathing–essentially turning your breath into an instrument.
We created three input methods to allow users to input their breaths and control the audio experience in the way that felt most natural to them. Two of these input methods are visual and respond to touching or sliding a breath visualization officially known as "Io," (but we affectionately call it Blob Marley).
Io is a gently animated button with organic moving edges which grow as you breath in, and shrink as you breath out–closely following the physical sensation of filling up and emptying your lungs.
As we were building, we found that the CPU would become overloaded while trying to manage both the real-time changes to the audio mix and the real-time visualization with Io. This resulted in lags, stutters, and frame drops that detracted from the experience by making it feel unnatural and inorganic.
Moving Io's animations off of the CPU and onto the GPU made effective use of the hardware resources, allowing the Breath Player experience to feel great–even on older and less powerful devices.
The third input mechanism uses yet more device hardware capabilities to follow the user's breath automatically by tracking movement on the user's belly. This mode involves placing the phone on your lap and gently pressing the screen against your belly as you breathe.
We used the ambient light sensor to detect when the screen was pressed against your belly to both disable the screen (preventing errant taps) and to begin the experience. Accelerometers track the orientation of the device and control the experience as you breath in and out.