Showing posts with label OB-6. Show all posts
Showing posts with label OB-6. Show all posts

Saturday, March 13, 2021

OB-6 CV generation revisited

After getting the closeups of the OB-6 it's time to put together what I've learned so far.

Hardware

1) The DAC used is AD5668, an 8 channel 16bit DAC with built in voltage reference (2.5 x 2 = 5V). The chip used by Sequential is the AD5668-3 that resets to midscale (2.5V). 

2) The multiplexers are TI CD74HCT4051

3) The op amp buffers are most likely TL06x as that's about the only thing found on the voice card

4) There is no DAC output buffering op amp as that is built into the DAC.

5) I'm not sure what size of sample and hold caps they are using


Timing/performance

Brian from Abstrakt Instruments has a great breakdown of how the refresh is done here:

https://youtu.be/4WwXlRYw_S0?t=1937

Each DAC channel updates 8 cv channels at 24kHz meaning

  • DAC channels are updated at 192kHz
  • There is about 5.2uS available for refreshing a single CV, this includes time to set the DAC, cap charging and any propagation delays/slew through the mux.
  • From the oscilloscope output, a full rail to rail change takes around 3uS

DAC performance

  • The DAC has a max SPI speed of 50MHz, meaning one bit takes 20nS to transfer. Each update is 32bits long, meaning updating 8 channels takes at least 32 * 8 * 20nS = 5120nS = 5.12uS.
  • Settling time is typically 2.5uS, but can be as bad as 7uS. (But it is stated that this is 1/4 to 3/4 settling so that means that it is only a change of 2.5V?)
  • Slew rate is 1.2V/uS

Multiplexer performance

  • On resistance is 90-180Ohm (?)
  • Propagation delay from in to out is 4nS, higher with higher capacitive load but still in the nS range
  • Switch delay is around 20nS
  • Charge injection: does not say.

What does this mean in practice: 


Well, we've got 5.2uS to update a single CV. First of all, if updating all channel takes 5.1uS, this cannot be done during that period. We want to update all channels at once, if we didn't we would need separate address lines for all the multiplexers which is infeasible. 

Luckily the DAC has a LDAC pin. This means we can write data to all channels, and when ready, flip the LDAC and load channels at the same time. By writing the next update while the current one charges the capacitors, we have just enough time to do a full 8ch update. We will also have to use hardware "fire and forget" SPI, writing the necessary 32 bytes of data in the background. If we use blocking SPI, we will have no time left between updates to calculate the next bytes!

Next, we still have to let the dac settle before we turn on the multiplexer output, or we would see an error in the voltage. Settle time is, from both the oscilloscope photo and the datasheet, around 3uS, but it could be as bad as 7uS. I would also think that the slew rate of 1.2V/uS also means that it would take around 6uS for a 5V change.

The multiplexer propagation delay is negligible. That leaves 2uS for charging the cap and turning off the mux again. 

Now, as I've noted in earlier posts, I could charge a 10nF cap rail to rail at 40kHz from a TL072, meaning charge times are around 25uS.  2uS means we need to use a cap at least 1/10th that size, or less than 1nF. 

I did some tests with the DAC8830 and a DG408 multiplexer. Using a 1nF cap did NOT let us fully charge the cap rail to rail in the 5.2uS window.  I got close but not close enough. The AD5668 may be able to deliver more current but that remains to be tested. 

So what do I make of all this? 


I suspect that Sequential is "cheating" here. They haven't spec'ed their system for charging rail to rail in <5uS, as they don't have to! The fastest moving signals would be the envelope attacks, and those NEED intermediate steps to sound good (?). 

I have ordered both the AD5668, CD74HCT4051 and TL072. It will be exciting to see the results of using those parts. Will I still have the charge injection issues? Does the AD5668 charge the caps faster? I will definitely post the results!


OB-6 - closeups

I got some incredibly nice closeup pics of the OB-6 voice card (and parts of the mainboard) from a friend of a friend. They make it really easy to figure out what is going on. You can clearly see the thermistor in the VCO expo converter for example, as well as laugh a little about the fact that they use coolaudio chips (Behringer, remember?). 

Pro tip: Use http://www.smdmark.com to figure out what chips are used from their markings!

Here they are:

Coolaudio V2164 quad expo VCAs. Great little chip.



TL064 all the way!

Top left - the green chip with '33' on it is the thermistor, the K4A is a dual 3904 transistor used as an expo converter

DACs, those are AD5668 8 channel 16 bit dacs

Voice card slots. Notice the HCT4051 CV multiplexers in between.




Saturday, June 20, 2020

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