I last updated this blog in December 2015. In 2016 my time was rather swamped by work and fatherhood, but I tinkered away now and then and undertook some major work toward the end of last year. The result of this is Concrète Mixer 2.0, and this post outlines what’s changed.
The audio is much the same
Firstly, the least impressive bit: the audio rendering is much the same as before. Some new processing has been added to playSound, and some tweaks to playFx have been made here and there, but there’s not too much different. I have other ideas but most of the effort has been aimed at refactoring the app to make it more stable and (frankly) sane.
No more Perl
The biggest change to the codebase is that there’s no Perl wrapper for the app. Instead, the functionality formerly implemented in Perl has been rewritten in ChucK.
This change was facilitated by my discovery that ChucK has FileIO and regular expression libraries which I can read and parse the config file. I’m a bit rueful I didn’t discover these libs earlier, although to be fair neither of them is documented on the ChucK website.
Hello Python - Soundcloud support
Even as I dispensed with Perl, I had an idea to add SoundCloud support, and decided use the Python Soundcloud library.
For a while I’d thought that Soundcloud support for users might be handy.
How it works
- Make a playlist in Soundcloud, making all the files downloadable
- Put the playlist URL(s) into the concrete.conf file.
- Concrete Mixer will progressively download the files from the playlist and play them when needed.
There’s support for most sound codecs via the lib-avconc library (aka ffmpeg). Soundcloud support makes evaluation of the app easier, and the default
concrete.conf.sample points to some demo playlists.
Concrète Mixer in Docker
I’ve decided to remove the compiled binary and selected chugins from the CM distribution - it wasn’t really appropriate to sling binaries in a github repo, and it’s certainly easier to get users to compile ChucK themselves. However this means that a prospective user now needs to:
- compile ChucK
- compile chugins
- install the supporting Python libs for Soundcloud support
…which is a bit messy. As a response to this, I’ve built a Docker image which installs all these prerequisites and kicks off CM execution. This image is built with Raspbian to run on a Raspberry Pi.
Concrète Mixer as an internet radio station
Finally, I’ve made another Docker image which augments Concrète Mixer with Darkice and Icecast to create a Concrète Mixer radio station. Despite the extra processing required, this setup runs pretty well on a Pi3. You can hear the result here.
Things to come
The development of 2.0 has tidied up a lot of ugliness in the original build and suggest a way forward for the future.
Near term - Radio Concrète
I’ve always had a question mark in my head over how punters would use Concrète Mixer, who they would be and why they would want to use it. As an occasional sound recordist who likes mashing up audio, the use case seems obvious to me, and I guess there are others who might be keen, but whether they’d want little boxes to do it or not is still unknown to me.
Instead, Concrète Mixer as an internet radio station seems like a good focus to the project. The way forward seems to me to be to get more sounds, and refine the effects/playback system.
There’s still a lot that could be done on the audio front:
- The effects chain is still mono (hidden with a bit of delay on a randomly selected channel
- I have some more sound mashing ideas on playback that I haven’t explored yet. Some of these ideas (eg stereo reverb) will have to wait until more powerful Raspberry Pis are available.