Casio CZ-1 Spelunking

Photo of a Casio CZ-1

Casio CZ-1

I was in the process of making a program that would let me edit Casio CZ-1 sysex dumps. A Casio CZ-1 is a synthesizer. I wanted the program to also be able to take advantage of any known easter eggs in the CZ-1, which I learned about from the Sealed web pages. Those web pages were the starting point for this study.

However, those pages left me with a lot of questions, so I started doing bit-by-bit analyses of my CZ-1. I wanted to do a really systematic study of those easter eggs, and to document them better so that they will be more usable. I was originally just doing this for my own interest, but I've wasted so much time on it now that I figure I ought to make it available to everyone.

The easter eggs I'm working on concern the waveform types, the "window function", and the modulation type. For example: There are more basic waveforms than the Casio documentation admits to. The "resonant" waves are created by passing a certain waveform through a window function, and if you manipulate the window function separately you can create all sorts of new waves. Also, if you program the CZ-1 from the front panel you can only combine certain waves. But when you use sysex you can combine any wave with any other wave and run it through any of the windows. And lastly, there are more types of modulation available than Casio has documented. All of these things were written up on the Sealed website, and I just wanted to do more thorough documentation and samples of those things.

General Notes

The following notes apply to all the pages in this section.

  1. To distinguish hex characters from other numbers, all hex data will be prefixed with "0x". So, for example, the hex number F0 would be written 0xF0, and that equals 240 in decimal.
  2. All bits and bytes are numbered STARTING WITH ZERO. That's the method of numbering that makes the most sense for this project. So the first byte of a sysex file is byte 0, the second is byte 1, and so on.
  3. Where binary data is shown, I'm using a period "." to represent a data position that doesn't concern the current discussion. For example, if I'm concerned only with byte 3, 4, and 5 of 8-bit data, I would replace everything else with periods: ...010..
  4. For consistency, all audio samples on this page are of the same frequency, A at 220 Hz. All notes are played at the same volume level (no envelopes, no velocity) so their relative amplitudes are comparable. All images were taken at the same zoom level relative to each other so the visualizations of the waves would be comparable.