BUG UPDATE 24/10/2016
TL;DR: iOS 10 messed my app, now it’s fixed. I have a post-mortem here.
How I made an artsy app based on science
At the end of 2015, I was spending a lot of time between London, where my girlfriend was working and living, and my hometown in Italy, where I used to work and live until early 2012. In September, I had just handed in my PhD thesis, and, besides enjoying the little money I had and applying for jobs, I didn’t have much else I could do. If I were to avoid madness, I knew I had to do something. Anything.
At the time, I had been toying around the idea of apps and games for young children: simple, highly interactive stuff that does cute things. I was walking around the shop downstairs at the Wellcome Collection when I ended up in front of the children’s books section. This one caught my attention.
As I turned the pages, lots of brain things went up and down inside my head, and now I have a closet full of half developed ideas that are cute but unrefined. It all clicked together in a few seconds. I picked a random one, and worked on it.
I went for circles. I liked the idea of bright colours bumping into each others, and I had been dying to make a musical toy for quite a while. During my first year as a PhD student, I encountered the work of Jeanne Bamberger , though I never had the chance to speak with her. Among other things, she worked with Montessori bells on how young children develop their sense for melody, and their ability to record and perform melodies using some form of notation. Circles, colours, melodies… quickly enough, I ended up with this.
I uploaded the app at the beginning of December, and it was approved the day before my PhD examination. I wanted people to play with it, so I published it for free, and a few people downloaded it. My girlfriend had lots of ideas on how to improve it — most of which stemmed from the fact that she’s a proper musician and mostly misunderstood the purpose of the app, but hey, she had some points, and she also helped me making this cool demo.
I launched the app with three instruments: tone bells, vibraphone, and marimba. I got the audio samples from Freesound.org, which is an amazing resource that I discovered in 2007, just before I ended up in Barcelona, sharing an office with one of its co-creators.
For the technically-minded among you, here is a brief explanation. If you are not technically minded, feel free to skip to the next part. I won’t be offended, I promise :)
The app is iOS only for now. At the time, not only Android’s audio latency was still lagging, but Cinder was not particularly well supported either — and I didn’t have an Android device to test the app with anyway.
I have been using Cinder for a while, at least since the beginning of my PhD’s experimental work in 2013. I favour it over OpenFrameworks because of its lean approach to dependencies. Both libraries are geared towards C++, so I decided to refresh my skills with the upcoming 11 and 14 releases. It’s been great. I can’t speak highly enough of the work that the C++ design committee has done to update this venerable language to modern times. C++ integrates nicely with Objective-C so, despite the fact that Swift was already sailing strong toward wider adoption, I preferred to stick to the old faithful, particularly because there really wasn’t much that I needed to write with it.
The audio part is handled by an AudioUnit sampler. I briefly considered going for a libPD patch, but a polyphonic sampler was too much work for my liking, so I preferred figuring out an obscure file format and technology instead.
I wanted the app to be free, but I don’t despise money either, so I set up iAds. Sadly, that didn’t work out very well. First, iAd banners don’t produce any revenue on impressions. You need to tap on the banner and open it to turn an impression into a handful of coins. Not very likely to happen. Second, Apple decided to terminate the iAd platform because of reasons, so I had the choice of either moving to a different platform, or just try my luck and make people pay a tiny fee for the app. I settled for this, and I priced the app at the lowest tier: $0.99 — not very much, I thought, and yet the number of downloads went from a few a month to zero. (cheapskates 😒). I have been considering having in-app purchases for more instruments — lots of them, in fact — as well as setting up an online service to share presets — that is, how you arrange the bells on screen — but I haven’t had much time lately, and my tiny VPS is probably not going to hold much more traffic than the meagre amounts it faces now. The app is back to being free anyway.
Regardless of the results, this has been a great experience, I loved making the app, and I love the app itself. It made me face challenges that I had barely scratched before, because I could get away with being stupid when writing research software, but not when producing and deploying solid software at a large scale. I had to do most of the testing on my own, which makes it hard to spot bugs before going to production, but also forced me to think really hard before writing any single line of code, to make sure my design was solid and as little bug-prone as possible. In fact, in nearly one year out in the wild, I had exactly one reported crash. I don’t have big numbers either, but hey.
Update 21/10/2016 I’ve been getting a number of crash reports. The best I can figure is that the app isn’t keeping the pace with lots of taps at the same time. I’m not sure why, but I’m working on it. Also, the app seems to crash on launch. Not sure why, but keep trying and get in touch if you can’t get it to work, I’d like to know more about this.
This wasn’t the first time I wrote largely deployed software — in fact I do it professionally, but that means you are working with a team of developers and testers who continuously breathe on your neck and check your work. This was however the first time that I entirely produced, developed, and deployed an app without external prompt, and that made me realise just how much I love making art with computers.
Now I just have to figure out a way to make a career out of it.
Get Circular Bells on the App Store, and have fun! :) And if you feel generous, you can always throw some coins at me, I won’t complain!
Turns out that, since posting this yesterday, I got 11 more downloads. So… thank you, and spread the word! :)
I got 73 more yesterday! Oh joy!
- Bamberger, J., & Schön, D. A. (1983). Learning as Reflective Conversation with Materials: Notes from Work in Progress. Art Education, 36(2), 68–73. http://doi.org/10.2307/3192667