Sunday, February 22, 2009

Gymnopedie #1

I've done a synth version of this well-known classical piece.  It's for a ballroom dance routine that my wife and I are doing in a showcase event on February 28.  Read more about it at the Source Code Web site.  

Wednesday, February 18, 2009

How many poles does the TB-303 filter have?

The VCF in the Roland TB-303 is nearly always described as being a 3-pole (18 dB/octave) filter. Many 303 aficianados claim that this is one of the things that gives the 303 its unique sound. However, Tim Stinchome says it's a 4-pole filter. And he's got the math and the SPICE simulations to prove it.

Wednesday, February 11, 2009

Matrix 1000 vs. Matrix 6 DCOs

A point of contention among Oberheim fans is what the differences, if any, are between the Matrix-1000 and the Matrix-6/6r.  Here is an interesting web site from an unnamed Matrix-1000 owner who has done some excellent analysis of the circuitry on the 1000 and several other synths.  Both the Matrix-1000 and the Matrix-6 are based on the CEM 3396 synth-on-a-chip, one of the last and most highly integrated of the Curtis synthesizer building-block IC designs.  Basically, a 3396 is a complete monosynth, or single voice of a polysynth, needing only control voltage sources and some support circuitry.  Among other things, the 3396 has onboard two digitally-controlled oscillators (DCOs); they derive their output from a high-frequency (well above audio range) master clock that must be supplied by external circuitry.  

The author of the Web site linked above writes that the Matrix-6 uses three high-frequency driving oscillators for the six 3396s in the synth.  It's a rather strange grouping: HF oscillator 1 drives VCO 1 of all six voices.  HF osc 2 drives VCO 2 for voices 1 and 2; HF osc 3 drives VCO 2 for the other four voices.  Why this particular division?  I can't think of any explanation.  However, it does assure that for all six voices, VCO 1 and VCO 2 are clocked to separate HF oscillators.  And since the HF oscillators in the Matrix-6 are basically Hartley LC circuits, they are subject to drift caused by temperature, electromagnetic interference, component aging, and a host of other factors.  So for any given voice, VCO 1 and VCO 2 are almost certain to not be precisely in tune to each other.  There is an onboard auto-tune routine for the HF oscillators, but on my Matrix-6r, it doesn't seem to make much difference.

The Matrix-100o goes with a simpler scheme: the HF source for all twelve VCOs is a divide-down of the 6809 CPU master clock.  This is a crystal-derived clock, so it can be expected to not drift much.  However, the point is that all of the VCOs are referenced to the same clock, so the differentials that exist between VCO 1 and VCO 2 in a voice of the 6/6r do not exist on the 1000.  There does appear to be some other source of injected phase variation, since the 1000 in unison mode doesn't suffer from the "phase lock" problem that, say, the Roland Juno-106 exhibits when in unison.  But the tuning drifts that are often credited as being the "sound" of analog VCOs are not present in the 1000.  Take that for what it's worth.  Actually, I think that there's very little difference in sound between the 6/6r and the 1000.  

Incidentally, the Web site linked to in the first paragraph is worth visiting for other reasons.  Among other things, the author of the site appears to have access to the Matrix-1000 firmware source code, and he points out a couple of bugs.  When I was writing M1000X, there were some funny things going on with the envelope settings that I never tracked down, and it bugged the heck out of me because I couldn't find anything wrong with my code or the MIDI data it was sending.  This page explains it: due to a firmware bug, you can't change the sustain level of envelope 1 using the parameter edit sysex.  Attempting to do so changes the initial level of envelope 2 instead.  Sigh.  At least now I know how to work around it.