Having acquired a Raspberry Pi around the middle of last year, I started looking around for a project to get my teeth into – one which would motivate me to sustain my efforts yet be flexible enough to tackle piecemeal, whenever I had some spare time available. Given the popularity of this new affordable hardware platform, there were a lot of Pi projects starting up across the web; so how to choose?
Late in the autumn, I came across the Piana project (http://raspberrypisynthesizer.blogspot.co.uk/) – and that really inspired me to start creating my own software synthesiser. Such a project would bring together a whole heap of interests from my life and career, and would open up new areas of learning for me too. And if that doesn’t motivate me to keep going…
One final cherry on the cake was a tenuous personal connection from a long time ago – the gentleman behind Piana and I both worked at the same firm back in 1988, where he was a star of the R&D department and I was a lowly placement student between school and university. We never really met – I was stagestruck by his awesome demonstrations of hacker skills back then. He’s obviously still got his mojo working 25 years later…
Progress so far
I started working on the Pithesiser at the end of October 2012, progressing the software through increasing levels of capability to where it is today:
- Basic audio mixing and output via ALSA.
- Simple wavetable driven signal generation supporting interpolation and band limited waveforms.
- Basic procedural waveform generation to compare with wavetables
- 8 note polyphony with one oscillator per voice.
- MIDI controller and note input.
- ADSR amplitude envelopes.
- OpenVG user interface rendering framework.
- Basic oscilloscope display.
There’s still lots to do before being ready for public exposure, and before coming anywhere near what Piana can do.
- Model B Raspberry Pi.
- Pluscom 7-port USB hub powered from the Pi.
- Akai LPK25 laptop MIDI keyboard plugged into the Pi via the hub.
- Korg nanoKontrol plugged into the Pi via the hub.
- Afunta USB sound card plugged direct into the Pi.
The Pi is a 512Mb model, though the memory footprint is nowhere near that.
The USB sound card gives better quality output than the onboard audio, and also works much more smoothly with ALSA. Not to mention it might be saving my bacon over latency (http://raspberrypisynthesizer.blogspot.co.uk/2012/09/usb-audio-saves-day.html).
I’ve not experienced problems with USB MIDI as reported by Piana (http://raspberrypisynthesizer.blogspot.co.uk/2012/08/usb-midi-problems.html) but from profiling Pithesiser’s feature set, I’m not yet driving the Pi anything like as hard.
Note that the Xbox 360 in the background of the picture is not part of the Pithesiser!
I’m using Eclipse with the Linaro Pi GCC toolchain provided by the Pi Foundation on my 64-bit Ubuntu 12.04 desktop PC. The Pi is running Raspbian, currently on kernel 3.2.27+.
I’ve got a “to-do” list for Pithesiser list that’s big and ever growing. Here’s some likely highlights:
- Finish off ADSR envelopes: still need to implement the release stage, and add a UI and controller input for editing.
- Enrich waveform generation: add more waveform types, add a second oscillator per voice, improve overall audio quality.
- Noise generation.
My plan is to blog irregularly about what I find interesting about this project, both on details of what’s already been done and what comes next. Plus answering any sensible and interesting questions that I may be lucky enough to receive.
(c) 2013 Nicholas Tuckett.