Skip to content

Juno60 DCO Requirements

Andy Harman edited this page May 14, 2019 · 3 revisions

Juno 60 > DCO > Requirements

Aliasing

Aliasing refers to the distortion or artifact that results when the signal reconstructed from samples is different from the original continuous signal. It is particularly evident in trivial waveforms (like a square wave that only has the values +1 and -1). Example of the sound can be found here.

It is important that our implementation keeps aliasing to a minimum. Normal Web Audio API oscillators (which we are not using in our design) are band-limited. Other techniques include BLEP and BLIT.

Sawtooth

The Juno creates its sawtooth waveform by charging a capacitor at a frequency-specific rate, and using a very accurate timing chip to discharge the capacity at the end of each duty-cycle.

TODO - picture.

This leads to a distinctive curve to the waveform. An unfiltered sawtooth wave sounds "brass-ey".

Pulse

The pulse wave is implemented by a waveshaper that compares the output of the sawtooth waveform with a value that is determined primarily by the position of the pulse-width slider.

When the slider is at zero then the output is a square-wave. TODO - how does this sound?

TODO - picture.

As the slider's value increase then the width of the +1 portion of the waveform shrinks, and the width of the -1 portion increases. TODO - how does this sound?

TODO - picture.

The pulse-width can also be modulated by the LFO. TODO - how does this sound?

Sub oscillator

The Juno 60's sub oscillator runs at half of the sawtooth oscillator's frequency.

TODO - picture of sub-oscillator and square wave at the same time.

Noise

This is probably pink noise. I remember reading a blog that suggested the electronics imply low-pass-filtering at 5kHz. Unfiltered pink noise sounds similar to a waterfall. It is often used for percussive sounds.

Starting phase

There is a general guideline in audio development that the output of oscillators should start at a value of zero (so a sawtooth wave should normally start at the zero-crossing point). The aim to eliminate the "pop" that starting at different point would normally case.

However, if you imagine the following (for a sample rate of 44.1kHz):

  • A note of 110Hz being played using the sawtooth wave (this would take 200 samples to reach from 0 to +1).
  • With the attack phase of the ADSR envelope set to 0.001 seconds (this would take 44 samples to get to peak amplitude).

So that ADSR's attack would be pretty useless (the attack would be complete before the sawtooth gets 1/4 of the way to full volume. The Juno 60 is renowned for having a very "punchy" attack. Analysis indicates that it's sawtooth does NOT start at zero.

TODO - picture

My assumption is that the output of the oscillator (before the ADSR gets it) starts at a value of approximately 0.5. No pop is audible because the ADSR masks it.

Modulation

The Juno's DCO is modulated by:

  • The LFO (TODO - by how much - up to a maximum of +/- X octaves).
  • The bend-wheel (TODO - by how much - up to a maximum of +/- X octaves).

This blog post indicates that the frequency of the Juno 106's DCO only changes at the end of each duty-cycle.