Blog ·

Casio + Raspberry Pico = Delay

It’s all about experimenting, right?

Bits of history and memories

In the past, I’ve played around with several Casio PT series keyboards. The PT is a series that came out in the early 80s, and it was aimed at ‘assisted learning’ back at the time. Many of the boards in this series shared a slot for a cartridge that would store songs in its ROM. Several attempts to reverse-engineer those cartridges had been made over time, but with little luck and results far from what I would consider useful for my scope.

Don’t get me wrong: having those pins out easily accessible is tempting, and I’ve tried my best to use them to circuit bend it (pointless once I stopped thinking of it). I also tried to register their values by connecting it to an Arduino, hoping to read some useful values via the analog pins. Terrible idea. Electronics doesn’t work like that, no matter how much AI is there to help you!

But these keyboards have cool features: chords key on the side, one-key play and one-key chords, cool retro drum patterns (not modifiable), and it’s possible to transpose notes, record, and playback sequence. Not too shabby for a keyboard that can be found for 10€ on Vinted. Downside? It’s monophonic and it has a 7.5V power supply.

Ok, in the past I went crazy with contact points and then I fried it. One of the risks of the job, but I made it bloody cool. One of the ideas I had was to use a protoboard and connect the contact points to the base of the protoboard, and use it as a modular interface to connect jumpers and create crazy sounds. Here’s a taste.

Present time

This was 5 years ago. Now I’m a bit more cautious, and I also changed country. The abundance of cheap keyboards that I would find in the UK is different from what I can find today in the Netherlands, and I have to be more careful nowadays.

I changed approach. Lately, I’ve been working quite a lot with the Raspberry Pi Pico 2, a small and very cheap (4.83€) microcontroller with more-than-decent specs and a crappy, but good enough, on-board ADC. Not one, but two!

The idea I had is simple: why do open-chip surgery on this keyboard (I already done enough in the past and it’s not so interesting as others), if I could use a couple of external components to create cool sounds?

The first version sounded like this. The process was fairly easy (not true. It took me months!): from the audio out of the keyboard — the cables that go to the speaker — I added 2 more wires and connected them to the ADC pins of the Pico 2 (left and right channel). I decided to connect also a module (1.99€) with a 1.3” OLED, a back and confirm button and a digital encoder with push button, and a PCM5102A DAC (2.84€). I also added a 3.5mm jack for the line out and a 100k potentiometer on the back to adjust the pitch (this wasn’t even a mod because a potentiometer with this function is already present at the bottom of the keyboard). Of course there was the coding part but for that I relied on Perplexity, vibe coding is the circuit bending of programmers.

But what to do with it? Well, first of all, the good thing is that I directly power the keyboard with the 5V output of the Pico. This saves me batteries, cables, and other hassle. I just take my phone charger and I’m ready to play. I managed to maintain the original sounds and functions, if I use the speaker of the keyboard, it will sound as a non-modded one, and I have a full dedicated interface to change parameters.

Let’s dive a bit more into this project:

3 options are better than 1

Effects: The CasioWZE (cool name, of course) has on-board effects (Reverb, Bitcrush, Delay, Phaser, Overdrive) with 3 parameters each, and can be combined up to 3 at a time (only two delays though, to stay within the RAM constraints). The effects nicely match the sounds of the keyboard and allow me to expand them to my taste: more dreamy, fuzzy, and spacey. I also decided to add 3 options at a time to avoid unnecessary deep menu diving, and keep consistency across the interface.

Capture: This function is basically a looper. The memory is enough that I’m able to record a phrase and loop it back. The cool thing is that the Pico automatically splits the part in steps and presents it as a sequence. I’m able to change the type of sequence (linear, ping pong, reverse, and random) and pause it. One thing missing (note to myself): I need to implement the ability to erase the current sequence and record another one.

Setup: This is the setting options. From here, it’s possible to change the global volume, the BPM for the sequence, and ADSR values on the sequence that’s playing.

I have a few more options that I’m implementing, such as the ‘space’ feature. This one will just present an animation on screen, and using the rotary encoder and the button will be possible to act more naturally and visually on elements such as tempo, randomisation, and effect values. It’s not a precise science, it’s more to go with the flow.

I am happy to share it if I get enough request to build up a page with all the detailed info, let me know!

Originally published on Substack.