[sdiy] Variable rate waveform playback in NED synclavier

Tom Wiltshire tom at electricdruid.net
Sat Sep 1 12:27:38 CEST 2012


On 1 Sep 2012, at 06:56, Scott Nordlund wrote:

> 
> I figured it out. There's no PLL. The M/N notation is explained in patent 4108035, and extended a little in 4345500. It basically looks like a phase accumulator that puts out a clock pulse every time it wraps around. The way they implemented it (M being the "counter increment" and N being the "divisor") just seems to save a few 74xx chips. M and N are fiddled with (and I guess tabularized) to get good pitch resolution and minimal jitter. Basically you put in a high frequency clock and get out a variable rate clock with high frequency resolution and a little bit of jitter, i.e. pretty standard stuff, but it's implemented in an unusual way. Its frequency range should span a little more than an octave (to permit modulation). The third 8 bit bus that goes to the phase register is the phase increment, BUT to avoid (inharmonic) aliasing it's restricted to powers of 2 (as described in patent 4279185). So it's controlling the octave and reducing wavetable resolution by powers of 2 fo
> r higher octaves. The wave RAM is 256 bytes, but the waveform can only have 24 harmonics, so you can downsample it by 4 without changing the spectrum. This lowers the image frequencies, but they'd be inaudible at high pitches anyway. And the resolution of the phase modulation isn't reduced either.
> 
> Still reading the patents...

Excellent digging, Scott.

Let me check that I understand this right...
The "Sample Rate Generator" consists of a accumulator with an increment N feeding a divider set to M. This produces a sample rate clock which is then fed to the "Phase Angle Incrementer" which is another simple accumulator to control the octave.
Since they've got a minimum of 48 samples (24 harmonics), they could use wavelengths of 256, 128, or 64. E.g. this octave shifted step only has a range of three octaves. So most of the work has to be done by the S.R.G. Is that how you understand it?

I've taken the BASIC program they give in the patent for finding values for N and M and converted it to PHP. It's still not entirely clear what it outputs, but some things come up in the code;

1) It tests clock periods between 155ns (6.45MHz) and 156ns (6.41MHz)
2) The "per channel sample rate" is regarded as 1/16th of this rate - e.g. around 400KHz.
3) For a given frequency f1, the required sample rate is f1*128. This implies that NED regarded their waveforms as 128 samples long, and oversampled by a factor of two for the lower octaves.

I'll post more if I discover anything else.

Tom





More information about the Synth-diy mailing list