I’d like to share a project that @quilime and I released this week.
Seaquence is a music app for iOS that enables you to compose sounds with collections of organic creatures, each with their own synth voice. It’s a full C++ rewrite of a Flash website that I co-created with Gabe Dunne and Dan Massey some years ago. More info here.
Obligatory App Store download link (It’s free)
Synth / Pure Data
Audio in Seaquence is synthesized in real time using Pure Data (via libpd) and piped into Cinder’s audio graph via a custom Node. I designed the initial sequencer implementation in Pd but the current synth is mostly @quilime’s work. My knowledge of synthesis has improved a lot since starting this project but Gabe really took the lead in designing the key features.
Pd always looks pretty messy, but I think our patch is actually fairly clean. You can see here our clock implementation, wavetables, sequencer, tone allocation, and fx chain.
Layout / Debug GUI
Over time our “Debug GUI” grew into a fairly flexible layout editor. The ability to move UI components around, change colors, test different screen sizes, and inspect values while the app is running became integral to our workflow. I think on future apps I would actually go deeper into building custom tooling. The time invested comes back in terms of quality and productivity.
If you haven’t used a performance visualizer on your code I highly suggest doing so. Visualizers allow you to see a timeline of code execution across all threads of your application. They make it much easier to track down performance problems that are not apparent in a traditional profiler, such as lock contention and graphics pipeline stalls.
Microprofile runs a web server in your app which connects over a WebSocket to a browser. The detailed timeline view looks like this:
I looked at many many different frameworks, game engines and languages before deciding to start work with C++, Cinder and Pure Data. I’m really happy that we ended up using this stack. Kudos to the Cinder team for making such a robust and portable framework \(^__^)/
I’m happy to answer any questions about Seaquence, how we used Cinder, our process, iOS dev, or any of the other tools we used.