A Raspberry Pi Pico conducts this lo-fi orchestra
This lo-fi orchestra found modest fame on Twitter playing an 8-bit synthesised rendition of Mike Oldfield’s Tubular Bells. It was created by Kevin (aka @diyelectromusic). We are trained to ignite when we see a herd of boards and wires, so we dove a little deeper and saw that Raspberry Pi had indeed weaselled its way into the band.
Full orchestral composition
This musical menagerie started life as a smaller Arduino-only lo-fi orchestra. As the band grew, and Kevin wanted it to be able to play more musical styles, he added more hardware. Raspberry Pi was recruited to play timpani and tubular bells alongside our Arduino bandmates.
- On brass: Arduino Multi MIDI Tone Module
- On high wind: Arduino MIDI R2R Digital Audio and Arduino PWM MIDI Synthesis with Mozzi
- On medium/low wind and occasional horn: Arduino Multi-pot Mozzi FM Synthesis
- On strings: Arduino Multi Mozzi String Synth
- On guitar and bass: Arduino MIDI VS1003 or VS1053 Synth
- On glock: Adafruit Feather MIDI, Music and LEDs
- On cymbals, tambourine, and bass drum: Arduino MIDI Relay Servo Drumkit
- On timpani and tubular bells: Raspberry Pi, Clumsy MIDI and MT32-Pi
- Orchestration software: MuseScore3
Kevin went into a lot of detail on how each individual part of the orchestra works in this post back in February. But since then, the orchestra has grown.
Raspberry Pi Pico takes over as conductor
As if we weren’t thrilled enough to be the chosen one powering the actual tubular bells sounds in an orchestra famed for its rendition of Mike Oldfield’s Tubular Bells, we got a promotion…
The answer to the question “Does Raspberry Pi Pico wield enough power to electronically conduct an entire lo-fi orchestra?” is “Yes“.
Pico should simplify things as it can do the routing and filtering “all in one”. An old PC used to play conductor. Kevin recently updated his project pages with this detailed walkthrough sharing how he made the Raspberry Pi Pico MIDI Splitter which now conducts the orchestra.
Synthing the night away
Listen to the orchestra’s full repertoire via this YouTube playlist, which contains every recorded performance of the lo-fi orchestra. Plug in, press play, and synth a couple of hours away.
Kevin has grouped the performances if you’d prefer to jump straight to your favourite musical genre. You can choose between:
Show us your synths
Drop a link in the comments if you’ve made or seen a cool digital musical instrument. Our (incredibly biased) choice of favourite synthesiser is this Raspberry Pi/Commodore 64 mash-up built by our own lovely Simon Martin.
I actually made my own synthesizer using a Pi Pico and a bunch of cheap PIC microcontrollers a few months ago. It has up to 16 channel polyphony with the choice of square, sine, triangle, sawtooth, and noise waves for each channel. My prototype only had four channels wired up, but I’m currently in the process of building a complete circuit board for all 16 channels. (It’s currently on its way in the mail!)
I go into detail on the architecture of the board in my blog post, but for a simpler explanation, it works by sending wave type, frequency, and volume change messages over a USB connection to a Raspberry Pi Pico. The Pico then parses the commands read, and converts that into a message to send to a single PIC chip, which is selected by sending an interrupt using a shift register. The data is sent using an 8-bit parallel data connection over the Pico’s GPIO, with all of the input pins tied together.
I hooked it up to my Lua-based fantasy computer platform, CraftOS-PC, through a C++ plugin over serial, which exposes it with a simple API to set wave type, frequency, and volume for each channel. Then I made a tracker program that can play XM and S3M tracker modules through the API, and I also added sound functionality to Game Boy and NES emulators. It sounded great on the prototype (even with only 4 channels), and I can’t wait to hear what the 16-channel version will be like.
Besides being built on a PCB, version 1.1 switches to using MIDI commands using the MIDI support in TinyUSB, which is included in the Pico SDK (thank you!!!). This means it can act as a full synthesizer, and I can’t wait to hook it up to my MIDI keyboard. It also adds support for adjustable clock frequencies, allowing any of the 16 channels to act as an LFO.
I’m real excited to test out the new version, and I love how adaptable the Pico is – I would have had much more trouble if I’d used any other microcontroller, whether for capability or cost. I’ll be updating my blog within the next two weeks once I can test it out!
(in case the URL field doesn’t show up: https://mcjack123.github.io/PSG/)
Comments are closed