Student Innovation: One Man Ceilidh Band
The One Man Ceilidh Band project is a University of Glasgow MEng project which aims to allow an accordion player to produce the sound of a full Ceilidh band, by generating the accompanying instruments in real-time from the accordion player's key changes.
How is this done?
The system uses magnetic sensors built into the left-hand side of the accordion to understand what buttons are being pressed and when. These sensors generate a Musical Instrument Digital Interface signal (MIDI), Which wich is then sent through a USB cable to a Raspberry Pi 3B+.
The One Man Ceilidh Band program, running on the Pi, can then work out which chords have been played and adapt each of the supporting instruments to play in the correct key. The idea is that the system should be able to adapt to the person playing as they perform - rather than just be a predefined backing track.
The backing band is made up of four instruments: piano, bass guitar, drumkit and a second accordion. Each of these instruments has an arrangement designed for different ceilidh dances and is made to intertwine with other instruments to create the impression of a coherent band. These arrangements are updated in real-time as the user plays in order to represent the current key of the music and synchronise all the instruments.
The project has used three open-source tools to implement this functionality, these tools are RtMidi, FluidSynth and Qt.
- RtMidi is a tool which allows us to interface and process the MIDI signal received from the accordion.
- Fluidsynth is the synthesizer we have used to produce our sound. It works by loading a custom SoundFont file containing the waveforms of the instruments that make up the band. This allows the sound of instruments to be recreated.
- Qt was used to produce the systems front end through which a user controls the system.
The program was heavily affected by the Covid-19 outbreak, the loss of access to the university labs meant that the pedals that were being constructed to control the system had to be cancelled. This meant the project needed to pivot to being purely software. However, thanks to tools like Git and Zoom the team were able to reorganize and produce a product that we are all very happy with
In order to keep latency as low as possible, which is essential in this project to keep the band sounding musical, the programming has been done in C++. While this language was new to the team, the tough learning curve has proven to have been well worth it, with the high performance of the language making the system feel and sound very responsive when played.
Here's an example of the system playing Strip the Willow:
The project has been run with a focus on being as open-source as possible. The system currently supports two songs which are available to everyone through our GitHub page, and all tools that have been used are completely open-source and free. The project comes with a wiki to help people gain an understanding of the source code and the project development process has been fully documented on our twitter page. Links to these resources are provided below.
Finally, the project has also popped up in an article by the Daily Record:
Thanks for your time,
We've really enjoyed working on this project and are very happy to be able to share it.
The One Man Ceilidh Team.