Monday, June 29, 2020

A tiny bit of future proofing

I am trying to create a small buffer of parts for my synths, in particular the JP-8. This beast has around 50 BA662 chips in it, each of which costs 50-60 USD to replace.

I stumled upon someone selling pulled 80017A chips from serviced Juno 106's, and bought 18 of them. Status is unknown but they weren't specifically replaced because they failed, more because they WILL fail.

In each 80017A there are two BA662 and one IR3109, both of which go for around 50 USD. I had to pay quite a lot, but if I am able to rescue at the chips from at least TWO of the 18 I will turn a profit (or rather, save money if I ever need the chips).


Saturday, June 20, 2020

Waveshaper current consumption and possible changes

The waveshaper op amps run fairly warm. Thus, I wanted to check the current consumption in case it was off the charts.

On the breadboard, the waveshaper current consumption is:

+15v: 26.5mA
-15v: 27mA
5v: 3.1mA (inc pulse VCA CV)

Of this, the waveshaper part (8 op amps) uses
+15v: 17.7mA
-15v: 18.1mA

Meaning the sub oscillator (10 op amps) uses
+15v: 8.8mA
-15v: 8.9mA

The JLCPCB circuit uses

+15v: 24.7mA
-15v: 24.2mA
5v: 0.5mA

In comparison, the Yusynth VCO (10 op amps + 1 comparator) uses

+15v: 27mA
-15v: 28mA

so I guess the current consumption is not that bad after all.

I am unsure what actually draws the power. I tried swapping 10k and 20k resistors for 100k and 200k around IC1B (pulse output) and the 27k DCO input resistors for 100k ones but that didn't change anything (or actually made it worse).

The sine wave amplitude is too low. Sine amplitude gain is done with a 15k negative feedback resistor and a 1.5k resistor from negative pole to gnd. Gain is 1+15k/1.5k = 11. By replacing the 1.5k resistor we can increase gain.


The VS-1 compared to old and new analogs. Technical details

I just watched an amazing video from Abstract Instruments, the makers of the VS-1: https://www.youtube.com/watch?v=4WwXlRYw_S0&feature=youtu.be.

It compares implementation details of the OB-X, JP8, Prophet 5, Rhodes Chroma and OB-6 and gives tons of useful information. I've tried to summarise it here:

Autotune

Autotune can only do so much for high frequencies, so a good initial trim is essential (for all synths)

JP-4:
Has no autotune, relies solely on the trimmers

OB-X:

  • Measures C5 (around 1kHz), does not adjust scaling, only initial tune offset.
  • Measures each oscillator twice: Once to measure frequency, second to
  • confirm the adjustment. Measures up to six times, if that fails it disables the voice.
  • Autotune takes < 2 sec


DAC:
  • 0 to 5.333V
  • 5.333V / 64 notes = 83.3mV step over 5 octaves, 1V/octave
  • 10 bit but only needs 6 bits to represent 5 octaves
  • In addition: Common VCO frequency CV, 4 octave and 1 octave from left hand control panel for a total of 10 octaves
  • Oscillator bias CV runs through 10M resistor (on a 100k for 1V/oct style summer)


P5 DAC:

  • 7bits, 10.666V reference = 10 octaves, 83.3mV, 1V/octave
  • 7bits fine tune for a total resolution of 14 bits


Rhodes Chroma

  • 12 bit main DAC for CVs, 3 cents resolution (reasonable for the time)
  • 8 bit that sets reference voltage for main DAC, skews tracking, corrects scaling errors in 0.1% intervals
  • Measures the periods at 6 octave intervals for each oscillator [error, should be 6 something else??]
  • Calculates scaling bias (done in 8 bit dac). Also calculates initial tune offset added to main DAC


Prophet 5

  • Rev 1 & 2:
  • Four checks: C3, C4, C5, C6
  • Bias CV resolution is about 1 cent with 128 possible values, about 1 semitone range
  • 7 bit bias CV dac mixed through a 10M resistor (on a 100k for 1V/oct style summer)
  • 40 autotune measurements (4 points x 10 CVs). Takes a long time. ( > 10 secs)
    • Bias CV 1 is used for bottom up to 1/2 oct above C3
    • Bias CV 2 C4 +/- 0.5 octave
    • Bias CV 3 C5 +/- 0.5 octave
    • Bias CV 4 C6 - 0.5 octave and up


Rev 3:

  • 7 checks per osc: C3-C9
  • 14 bits bias CV added as parts of Key CV, resolution is 650uV or 0.8 cents
  • Bias for C0 to C2 is calculated from the others as it takes too long to measure ( > 60 secs)


Jupiter 8

  • 10V output, 3cents/step for 12 bit, < 0.8 cents for 14 bit
  • Measures C3 and C8, uses a formula to calculate a bias CV for each key


Sequential OB-6

  • samples several points and deriving a high resolution correction curve
  • temp sensor, saves temp profiles
  • can recall profiles, does not do any real time calibration per se
  • has "slop" settings to introduce variation



Analog voices

OB-6:

  • No trimmers, everything is done through CV
  • Sub osc on VCO1
  • Can mix waveforms using 2164 VCA
  • Taps all poles of HP/BP/LP filter, mixable using 2164
  • 2164 for resonance control
  • 2164 for panning
  • Splits after voice mix to dry and fx which is mixed afterwards

VS-1:

  • 2164 panners
  • Bi-timbral
  • 4 input analog chorus
  • Analog polyphonic glide

Digital control


  • OB-X: 2.5MHz MCU
  • OB-6: 32bit PIC at 200MHz
  • VS-1: 32bit ARM at 600MHz


Reading/updating CV:

Loop times:

  • OB-X: 14-19ms
  • P5: 9-11ms
  • JP8: 3-6ms


OB-X

  • Pots are scanned using a DAC and a comparator (successive approximation)
  • 10bit CVs, 10 iterations per pot
  • 1-6ms to scan pots (19 on OB-X)
  • Scans pots then updates CVs, thus updating CVs less frequently when loop time is long
  • More complex sample and hold circuit for pitch CV (check, possibly just shifting voltages?). Low leakage polystyrene caps for pitch CV assures stability between updates.


OB-6

  • 12bit ADC over SPI to scan pots and external CV input, pitch and mod wheels. Scanned 256 times per second.
  • Updates CVs at 24kHz - must be fast to update software LFOs and envelopes fast enough
  • 24kHz gives sub 1-ms attack times for 0 to 5v envelopes (looks like 2.5v to me in oscilloscope pics)
  • Smooth LFO rates up to 500Hz
  • Looking at the oscilloscope screenshots, a full attack takes around 0.4ms-0.5ms (each grid line is 0.2ms), at approx 5 samples per 0.2ms (= 24kHz), giving 10-13 samples for attack.
  • Uses pair of 8ch 16 bit dacs for 120 CVs
  • Uses independent CVs per voice instead of common CVs, to be able to add offset biases on a per voices basis, it has NO trimmers!
  • 4051 multiplexers for sample & hold
  • S&H caps on mainboard, S&H opamps on voice cards
  • Separate microcontroller for CV updating, tables in memory for calibration
  • Core logic runs at 1.2V
  • Samples VCO and filter waveforms using 24bit ADCs, AKM 24bit stereo codecs


VS-1

  • CVs updated at 48kHz
  • Single 8 ch DAC
  • 85 CVs
  • Single ADC to scan the endless pots, scan rate is 1kHz

Tuesday, June 16, 2020

Waveshaper bug

I finally got around to testing the waveshaper boards last week. Most of it work flawlessly though I get some clicking when doing large frequency jumps for some of the waveforms. Also, saw and sine waves are not as loud as the others at the same amplitude (which is to be expected I guess, I just need to consider if its ok).

For some reason though, two of the TL074 op amps got really hot and the sub oscillator didn't work. After some probing I found that the -2.5v source output 13.5v instead. I had my wife solder a second board but the same happened there.

I couldn't figure out what was going on, but it suddenly dawned on me when I tried to fall asleep yesterday - I have mixed up the op amp inputs when trying to make a voltage buffer :(

The fix is very easy in CAD, but on the boards I have to cut two lines and solder a new wire:

Cutting the input, it goes to the negative terminal of the op amp instead of the positive. I've also scraped away the solder mask to be able to add a new wire to the positive terminal instead. I will see if I can find a wire tiny enough to fit in the via (which is 0.3mm...). I also have to add a solder blob between the negative terminal and the output.

Cutting the feedback loop between the positive terminal and output. It should of course have been between the negative input and the output.


The board is smaller than it appears btw, here is my finger for reference.
UPDATE:
My wife managed to solder this just fine, after that the filter works flawlessly! The tiny diagonal wire is a single copper strand from a networking cable!


Tuesday, June 9, 2020

DCO v1.3 tested, v1.4 ordered

I'm done testing the DCO that I got from JLCPCB. It worked flawlessly - after fixing a few firmware bugs that is.

I had to change the function of Data Ready to SPI Chip Select, that fixed some startup problems when the DCO had started before the main MCU powered up. Amplitude tuning works incredibly well and sync hard-syncs like it should.

I did however realise a few things:

The current setup with a 56k charge-voltage-to-current converter resistor and a 1nF integrator cap means we cannot reach 20kHz with an amplitude 0-10V. Also, the MCU draws a lot of current, around 150mA it seems. The current firmware allows 8Hz to 8kHz approx.

In addition, the circuit has both an MCU and a DAC, so if we could tap the DAC directly we could make a wavetable oscillator of sorts.

For version 1.4 I did a lot of improvements:

- Exposing the DAC output and changing the buffer resistors from 47k to 22k. The DAC can only drive 60k load, so by reducing the load for the internal buffer we can hopefully connect a second, external buffer that can be used as a digital audio output.

- I've also exposed the buffered dac output. The cap is already exposed in both ends. This makes it possible to connect a resistor in parallell with the charge resistor, to increase the current to the cap.

- All DAC SPI pins have been exposed

- Three utility pins on the MCU has been exposed, to make debugging easier (connecting leds etc)

- To reduce current consumption, it should also be possible to run the device at 3.3v, and reducing the crystal frequency from 32MHz to 16MHz. This requires a rewrite of the DCO firmware, but nothing too complicated.




I've ordered 40 of these from JLCPCB, fingers crossed :-D