modulating the SAA1099 external clock frequency
click on a photo/picture to enlarge
the story
The SAA1099p soundchip normally runs with an 8MHz external clock. I wondered what would happen if I changed the frequency of that clock (would it crash? change the pitch? - circuit bending!).
Initially I wanted to use a Si5351 clock generator chip, but after some googling I found that you can easily produce a fast enough clock-pulse using a timer on the Arduino! (please read the notes at the bottom of this page about that 8 MHz)
results
The results are beyond what I expected: the chip doesn't crash nor burn when I slowly the change clock frequency (using a potentiometer) nor does it fail when I use a control voltage (which changes quickly) from a eurorack modular synthesizer!
This flac-file (audio-file, mp3) lets you hear what happens when I change the clock manually when it is playing some tune - the tweaking starts after 3 seconds.
This flac-file (mp3) lets you hear the effects you get when quickly change the clock using all kinds of VCOs (A-147, A-145 and the Behringer 112). Note that I did not transformed negative voltages (using an opamp) but used clamping by 2 diodes instead.
This (mp3) is one frequency on 1 channel with the clock being clocked to fairly low and back up again.
Strangely the beats hardly change.
pictures or it didn't happen
The two connectors at the top are audio out left/right.
oscilloscope
one frequency on 1 channel
almost 0 V via the ADC
one frequency on 1 channel
almost 0 V via the ADC
4.24 V via the ADC
multiple frequencies (6 channels)
almost 0 V via the ADC
2.89 V via the ADC
how to
This table shows what pins of the SAA1099p to connect to the Arduino Nano (the table is from wikipedia, I added the Arduino pin-numbers):
D13 is pin 13, and data-bus 0...7 are to be connected to D2...D9. You also need to pull-up (using 1k ohm resistors) the two audio-out pins to signal-level you require: I fed it to an amp in my eurorack and thus used the 5 V voltage from the arduino. Pin A0 of the Arduino is used to control the frequency - connect a potentionmeter to it or so.
source code
saa1099p-test.ino - the code
schematics
Please note: this schematic may contain bugs and is not complete (e.g. no "line-level" output)
bugs
2023-10-16: A few days after I created the above I noticed (measured with an oscilloscope) that the fastest frequency I fed to the sound-chip was in fact (almost) 2 MHz, not the 8 I was expecting. I've changed the Arduino script to do 4 MHz (looks like this is the maximum).
VERSION 2
2024-06-21: The new version uses an SI5351 clock generator. This allows greater/more accurate control. Source code: saa1099p-v2-SI5351.zip.
Listen to a MIDI file of a song by Abba circuit/clock-bended. Especially after 30 seconds into the song, it becomes real digital mayhem :-)