[sdiy] [synth-diy] numerically controlled superoscillator without hard sync
rsdio at sounds.wa.com
rsdio at sounds.wa.com
Sun Feb 9 21:54:19 CET 2014
On Feb 9, 2014, at 12:13, Declare Update wrote:
> I have recently been pondering this same idea! I was thinking you'd
> have a pin change trigger an ISR, which just increments the index
> to a wave table. So you're driving vco would have to be the size of
> your array * desired frequency. Clocking the actual micro is an
> option i guess, but as Tom points out, that's pretty fast!
Instead of an ISR, this external pin could trigger a DMA transfer.
You'll be able to handle more voices this way because they require no
instructions to be executed. The DMA automatically increments the
index, and can even wrap around. Instead of an interrupt per sample,
you just get an interrupt when the wave table ends, or you can even
have complex bidirectional loops in the middle of the wave table by
linking DMA transfers back-to-back.
The TMS320 C5500 family has 6 channels of DMA, so it might actually
be able to handle 6 voices in one chip (12 voice in two chips!). With
only 3 serial ports, it might be difficult to have 6 DAC chips
attached, but you do have the option of parallel DAC interfaces
instead of serial. I suppose it's possible to share a pair of DAC
chips on each of the 3 serial ports, but I haven't tried that. Other
processors would have a different number of DMA channels, serial
ports, and I/O configuration options.
On Feb 9, 2014, at 12:32, Mattias Rickardsson wrote:
> On 9 February 2014 18:08, cheater00 . <cheater00 at gmail.com> wrote:
>> The variable sample rate oscillator could also contain things like
>> filters and other stuff. A whole VA could be implemented, and
>> aliasing
>> is not an issue at all.
>
> Multiple oscillators per voice is nice, at least so I've heard. ;-)
> Could this be incorporated without having to duplicate everything?
See above. Using multiple external oscillators and multiple DMA
channels, you can handle multiple voices. Also, the DSP clock speed
can remain at it's maximum, allowing for more processing, while only
individual DMA channels slow down to alter the sample rate of their
voices.
> And how about other behaviours that makes oscillators have tricky
> frequencies... like PWM, where the oscillator is still but the
> percieved pitch varies due to the modulation. How does the harmonic
> aliasing behave there? Is all still well?
The problem with PWM is that it's even worse than a square wave.
When you generate a square wave as a wave table by just plugging in
values, the discontinuity when it jumps from the bottom to the top,
and from the top to the bottom, creates an infinite series of
harmonics. But the harmonics above Nyquist can't really be reproduced
at their actual frequency, so they are reproduced as aliased
frequencies that aren't part of the real square wave. That's why a
(poorly implemented) digital square wave sample sounds "digital"
compared to an actual analog square wave circuit. But this can be
fixed in the digital version by summing sines instead of naively
filling in the sample values with discontinuities.
PWM has the same problem with discontinuities in the digital domain,
but it's worse because the aliased frequencies are shifting all
around. I don't know of a simple way to create a PWM waveform by sum
of sines, because of the changing pulse width, so I don't know how to
avoid the aliases. Does the David Jaffe article on band-limited
waveform generation cover this topic?
The problem I describe assumes you're generating samples and sending
them to a DAC at some sample rate (it doesn't really matter whether
the sample rate is fixed or variable). But many CPU chips can
generate PWM directly, without a DAC or traditional sampling. If
you're willing to treat the PWM outputs as separate from the sampled
outputs that go through a DAC, then I think you can avoid aliasing on
the PWM oscillators. You'd then need a mixer to combine the different
types of oscillator outputs - but you'd need a mixer for any multi-
oscillator system anyway.
Brian Willoughby
Sound Consulting
More information about the Synth-diy
mailing list