The first question people ask is “Why is it called Cyril?” It usually comes as a surprise when I tell them it’s named after an octopus.
Actually, a mind-reading octopus.
It all started in 2013 when I was working on an installation for the London Burning Man Decompression party. The idea was to put an EEG headset inside an octopus hat and project visuals based on people’s brain activity. The octopus was made of papier-mâché and bubble wrap, and acquired the name Cyril.
I met Davide Della Casa and Guy John at MozFest 2013. I fell in love with their LiveCodeLab project straight away. I hacked around on it for a bit, and contributed code for a simple harmonic motion function. Davide suggested renaming it wave(), a convention I eventually took over into Cyril.
I was using a Raspberry Pi for the octopus project, so I couldn’t use LiveCodeLab. Instead, I created some simple visualisations of the EEG data using openFrameworks. The installation had to be portable, so the Raspberry Pi was chosen as it could fit into the octopus hat. I couldn’t get cross-compiling to work, so I had to compile the code on the Pi. This was really slow. And, I had to recompile the code every time I wanted to tweak the visuals. To get around this, I created a simple script that could be loaded in at run time to configure the visualisations.
I soon realised I was having more fun playing with the script for the visuals than hacking around with the EEG reader. So I moved away from the hacked hardware, Arduinos, and Raspberry Pi, and back to the Mac. Here I developed a parser for the language using Yacc, and turned it into a full programming language. I added FFT support to create audio-reactive visuals, and a text editor overlay based on an openGL editor addon for openFrameworks.
In November 2013 I open-sourced it, and uploaded Cyril to GitHub. It got a mention on TOPLAP and a few people tried it out.
One of these people was Dan Hett…
Dan created a tumblr to help people learn the language. He’s blogged about it, talked about it, and used it at Algoraves and festivals.
It was from Dan’s contributions that ofxPostProcessing got added, and Cyril gained nice special effects like the kaleidoscope.
In 2014 I was involved in building a stage for Global Gathering, a big commercial dance festival in the UK. Cyril provided the audio-reactive elements for the projections, on a custom mapped surface. This was when I added Syphon support for the first time, so that the output from Cyril could be passed into the VJ software we were using.
In 2015, I visited Amsterdam for the Fiber festival. The Creative Coding Amsterdam group held a workshop on the Friday, and invited me to talk about Cyril. I gave a short demo, and a few people asked me to help them get started with Cyril afterwards.
Most recently, Resonate 2016, Dan Hett gave a lecture about live coding and demoed Cyril on the big screen.
Hopefully that gives you a bit of background about how and why Cyril has developed over the years.
One More Thing…
Cyril’s main focus has been on creating live visuals. Originally, live visuals were for EEG readings of brain waves, but mainly it’s been focused on music. There is one other thing it may be good for: Education.
A couple of years ago, as part of a BIMA digital day, I took Cyril into a school. I got to see how a group of 14–16 year olds could use it. The head of IT for the school gave really positive feedback. He explained how the usual programming lessons were not that engaging for the kids, and something like this could be a really useful tool.
So that’s how we got here. What do we do now?
The latest release is Cyril Beta 6. It works, has loads of nice features, and it easy to get going (if you’re on Mac). But, it does have issues.
There hasn’t been much committed to the public repo. Dan is using a heavily customised fork. I have different versions depending on what I’m doing with it. Now and again other people get in touch to say they’ve had to hack it a bit to make it work for them.
My first priority is to get a cross-platform build. I’ve moved away from Xcode and started using CLion. It’s based on CMake, so much easier to get a cross-platform build-system working.
It’s early days. If you’ve used Cyril, please get in touch and let me know how you would like to see it develop further.