8 voice Dual DCO (was A Bit More.... Sort of)

8 voice Dual DCO board starting to take shape, I’m considering making it Bi-timbral and calling this synth “A Bit more…”.

8 Likes

That’s the DCOs done, just a bit of wiring to do and connectors, bi-timbral is a pain in the arse, but possible. I’m missing 5* mcp4822 DACs, but these are not so important when testing the waveforms. I also have 4 spare dual opamps to operate the polymod section if need be. Just need a decent, not too complex filter design that is fully voltage controlled with a small component count for the filters and VCA.

9 Likes

You just can’t stop can you :slight_smile: I still have my original Poly to fix LOL…

1 Like

I would get more done if it wasn’t for the constant power outages, we get around 6-8 hours a day of power if we are lucky.

Looks interesting ! Why did you go for the RP2040, just curious ? Will there be any coordination necessary via an mpu between the RPs or will things be hardwired? It would be interesting to hear how you go about designing a device like this. Can you elaborate a bit (or maybe better, elaborate a lot)?

Hi Jos, I used the RP2040 waveshare zero, cheap enough at less than 4 euros and plenty of pins compared to other tiny RP2040. Each DCO receives note information on its own MIDI channel, whereas as pitchbend, cc messages etc are common between all. I wanted to put as much information over this private MIDI bus as possible so to reduce wiring so I made use of CC messages that all the RP2040s will interpret for octave switch etc. I added portamento to them and an extra modulation input for polymod from DCO2 output, it might sound awful but it’s like the prophet polymod. They also create CV voltages from the note data for keytrack and velocity with a DAC, could have used PWM I guess, it doesn’t need to be accurate. They also create a gate and trigger out for triggering the filter/amp envelopes.

There will be a Teensy 4.1 controlling note assignment and patch data, it will receive MIDI and translate it to the individual channels etc and send it on a private MIDI bus to all the rp2040 boards. it’s how I controlled the last RP2040 project based on the Hagiwo $9 VCO.

2 Likes

Nice! Will you be able to sync the DCOs? I guess this will not work via midi, but maybe via a HW interrupt of the RP2040?

A few things I’m working on currently are Sync 2>1 which I think we can do by resetting the counter pin of the first counter from DCO2. Polymod, using a spare VCA to feed DCO2 back into the FM input of DCO1

Just finished adding the sub oscillator as an output of the Waveshare rather than taking it from the sawtooth into a 4013, I will send the 3.3v signal into a spare gate of the 4049 to uplift it to 5V so its the same level as the saw etc. So I can now remove 4x 4013 from the board and maybe add a quad opamp for something I forgot. Oops

1 Like

Started adding the filter/VCA/ADSR sections.

3 Likes

Managed nearly a whole 12 hours without power loss today, so a lot of progress, I just need to put in the pole mixing resistors around the 16 opamps and then it will be ready for wiring up. Pole mixing filters are complicated to hand wire, but this time it’s even more cramped.

2 Likes

To prevent latency when playing multiple notes at once I take it the internal midi bus will run at a higher speed than is used for “normal midi” ?

No, it won’t and there is no latency. It’s a private bus, only traffic will be 8 notes and the odd CC message and pitchbend,

I was thinking about the time it would take if you want to start 8 notes at exactly the same time. Then there is a difference between when the 1st note message and when the last one arrives at the synths via the serial line. I’ve once read that logic (the sequencer originally published by Emagic) would compensate for this difference by sending the data serially to a UNITOR 8 or AMT8 (midi hardware designed for this by Emagic) and then synchronously (so in parallell) outputting them to various outputs, thus minimizing latency.

So you think 8 notes being played will cause a noticable delay, wow, so 16 channels of midi with multiple notes, bend, cc messages, aftertouch etc flying down them from a sequencer must be terrible.

This was mainly a percussion thing I remember now. Especially in techno people wanted things not to shift in time so to prevent flanging of kicks and hihats etc.

‘problems’ with “16 channels of midi with multiple notes, bend, cc messages” were prevented by this special “serial-to-parallel-approach” Emagic claimed.

I’m not 100% convinced by any of the arguments, MIDI is serial, If you serial to parallel it first and then send you have an overhead.If you use individual cables and from a MIDI box attached to a PC then I can understand it, if you really want to be pedantic, then you have 16 instruments on 16 seperate cables that each respond to their own channel and nothing else and from the PC you send only to one output for each synth, but you still have to send upto 8 notes serial down the MIDI cable to that one synth, if latency was such an issue with polysynths they wouldn’t sell them. Imagine I have a 16 channel sequencer sending drums, notes etc over one cable to multiple synths, if I have a midi thru for each one then last syn in the chain gets its info well after the first, especially with 16 synths in the chain. So yes, use a thru box and they all receive together, but it doesn’t negate a chord being played, time to filter out anything that’s not for you to bother with on a differnet channel and then produce the notes required.

Correct, the overhead can be handled by the sequencer, it can send notes in advance to a buffer so to speak and then trigger them all at once. But as I said, the advertisement talked about sequencing percussive instruments. This will work when you connect one percussive instrument per midi port (so not one percussive instrument per midi channel on one port).
For chords this makes not a lot of sense, unless you spread them over multiple ports.

Like I said, thats being really pedantic about midi and timing, if you can dedicate 16 outputs of a sequencer (PC or MAC) to 16 percussion instruments just to send one note then you have more money than sense. MIDI is fast enough to handle 16 channels of data on the same cable, that was its spec and beside MIDI 2.0 it hasn’t changed in the last 40 years or so.

The good thing about this DCO is using stackmode to generate multiple outputs on different pins.

I used the stack to create a sub oscillator from DCO1 at half the frequency.
A pulse output copy of DCO2 for the sync of DCO1.
Another copy of DCO1 but this time the PW1 duty cycle can be modified by a CC and the PWM LFO can be read by the ADC and the depth controlled by another CC. Thus I have a PWM output of DCO1
Another copy of DCO2 but this time the PW2 duty cycle can be modified by a CC and the PWM LFO can be read by the ADC and the depth controlled by another CC. Thus I have a PWM output of DCO2.

This allow me to reduce the component count as I no longer need a comparator for the PWM outputs and the resolution is better than the staircase sawtooth being converted to square for a much smoother PWM experience. The 4013 is no longer required to create a sub oscillator. I also reduce the control lines needed the PWM CV’s are no longer required and are replaced by CC messages.

2 Likes

Completed wiring of all 8 voices in bi-timbral upper and lower 4 voices. Now I need to look at building a pair of effects processors.

11 Likes