Simulating Cassio keyboards (PT-10)

Hi all,

recently my youtube have been flooded with videos about old Cassio keyboards (especially those related to Teenage Engineering OP-1). Is there any guide/emulation about how to achieve those sounds with SC?

Here they say this keyboard was based on combining pulse waves. How to synthesize this? Any suggestion about how to achieve the crappy sound provided by the small speaker + minimal cabinet size? Convolution?

All the best!

I’ve done some surface-level research into toy Casio keyboards. (With apologies for plugging my own music, the ending to my track “Trickster Deity” is an imitation of the Casio VL-Tone drawing from these investigations, but it’s not meant to be an exact emulation.)

For these super-super cheap keyboards, 95% of the sound is static wavetable synthesis with vibrato and an ADSR envelope. Once you have a single-cycle waveform, you’ve basically emulated the whole thing. I like to make rich single-cycle waveforms without actually using a wavetable buffer by using 8 partials of additive synthesis, randomly typing in amplitudes and phases, and then running it through a wavefolder of some kind to get a bunch of upper harmonics.

When emulating an old hardware synthesizer it’s often useful to track down the owner’s manual, and the service manual if there is one. I was able to find both in this case. The synthesis behavior is locked up in a uC, which isn’t too helpful, but the service manual has a few useful diagrams. Here is the percussion:

This suggests that the percussion envelopes might have some weird stairstepping/quantization going on.

Here is the whole schematic:

The waveform to the right is put into an envelope follower. Its envelope is smoothed and then multiplied by a distorted, 1-bit version of itself, probably because the actual output from the DAC had really bad stairstepping. I don’t think it’s super useful to emulate this process, just use an ordinary ADSR envelope, but it does tell us that the single-cycle waveforms in question have to be 1-bit.

A simple way to simulate reduced sample rate would be lowpass filter at 8 kHz (antialiasing filter) → sample-and-hold at 16 kHz → lowpass filter again at 8 kHz (reconstruction filter). That said, I couldn’t find sample rate info in the service manual, I’d have to look at some audio samples to see if there’s detectable alias. (It’s also possible the uC is bitbanging the oscillators and there isn’t a real sample rate to speak of.)

Speaker cabinet emulation I’d tune by ear with an RHPF, a few parallel comb filters, a bunch of random peaking filters for “box tone,” and some saturation distortion sandwiched between those stages.


Thanks a lot!

Bit reducing the envelope seems to be a nice trick to produce sound artifacts! I will try some stuff and post some analytic wavetable formulas as soon as I get them.

Faust has the CZ oscillators in its library.

Source is here if you want to pick that apart. Or just compile to SC Plugin.

Apparently, these are an implementation of this pd patch.


The CZ’s phase distortion is a great example of some of the weird algos Casio invented to get around Yamaha’s FM patents, the same synth also had a “fake resonance” algorithm based on a hard-synced sine oscillator with windowing. I wrote this little explainer for an algorithm that may have been used in the CTK-1000:

The VZ series is also interesting, haven’t really figured out what it’s doing but the manuals are out there.

1 Like

BTW, would it be legal if I sample some old Cassio keyboard, analyze, create a synthesis recipe of it and then publish a quark?