More CV! :-)

I just stumbled upon Zynthian yesterday evening, but saw possibilities for something I am looking into to make.

I want to make a polyphonic supercontroller for eurorack: a central ‘brain’ that flexibly transforms MIDI into CV, can make envelopes and do LFO’s, do sequencing (all things that often are digital eurorack modules in the end anyway) but leaves the core sound production to analog circuits. So VCO’s, filters, ring modulation, VCA and so forth should be analog, but the steering and modulation can be digital. I am aware that takes some investment in (at least) 4xVCO, 4x filter etc…

The ‘brain’ should be fast enough to calibrate itself to the VCO’s (if you feed them back it should be able to make a volt-frequency curve and use that to produce the right notes; so a stable, tuned, but not fully linear VCO should still produce the right notes).

Furthermore I’d like to implement some analog matrix (like the MatrixBrute and other fixed poly synths have) to route audio connections from A to B (and not with cables), so you can store and recall them…

That all asks for a distributed architecture I think: you cannot put everything on one spot, or you can, but then all cables go to and come from one big patchbay. That would be a mess.
If CV-ins and outs can be on small panels anywhere in the rack, close to the modules they are steering or reading out, that would be much cleaner.

I first thought of using a teensy 4.1 and SPI (daisychained) to connect all these modules via the back, but wasn’t sure if I would not be asking too much of the teensy. Also, putting a bigger screen, keyboard etc. on a teensy is not trivial and memory is not limitless. That’s why I looked into RP.

First version could be a central RP with it’s hooks into the rack. But that needs more than 4 CV’s in and 4 out. So I’d like to create a Zynaptic extender+++ basically + some software to set and map and so forth.

But many things are rather new to me. I can program (did C#, java and C++), I did develop a module for eurorack (design, pcb making, soldering), can use basic KiCad, and still have some knowledge from years ago when I studied electrotechnical engineering for a year. I work in IT since 25 years now. Currently more in functional analysis, but often closely software related.

But, I understand the extra DAC and ADC of the Zynaptik-3 Extended are linked to the RP via I2C. So they listen on a certain reserved address for them. So, am I correct if you implement any I2C chip (+ circuit around it) you should be able to ‘talk’ to it via I2C if the address is free? Would SPI be possible in the same way, or is the software aimed at I2C?

I did not look into the software yet. Can you advise where to look first on github? Is there a software design model, picture of the architecture or something, from where I can go and understand what happens when MIDI comes in and how it’s mapped to the DACs (and vice versa?).

Did people make other extenders and how did they communicate with the RP?

Any help or suggestion is welcome!

Thanks and cheers,
Mark
(The Netherlands)

1 Like

Here i present you with the zynface :- a zynthian interface for CV and triggers :-

https://shop.zynthian.org/shop/product/zynface-kit-416

all configurable from the web interface

Hi MrBroccoli,
Yes, I have seen this one, but I need more (really more) than 4 cv in and 4 cv out. Pref. also in higher resolution than 12 bits (MCP4728 is DAC is 12 bits).

I can imagine that more than one DAC (so analog out) can be put on the same I2C line, provided that you can assign them different addresses. (One master, multiple slaves.)

The other way round is a bit more complicated (CV listeners would need to wait on each other, sending data), I guess, but possible.

Do you or does anybody know how long I2C connection-wires may be?

Keep in mind Midi1.0 is 7 bits for notes and key pressures and 14 bits for pitch bend so when going from midi to CV 12 bit should be enough for most use cases. . With MIDI 2.0 Higher resolutions are possible but it will be awhile for instruments to support that.

MIDI 1.0 does support 14-bit CC but Zynthian currently doesn’t (fully). I like the idea of distributed analogue. I haven’t looked to see if anyone has implemented a protocol for audio control CV over IP. Maybe we become trail blazers???

The CV interface on Zynthian is relatively new so still in its infancy. I hope / expect things to improve as we get more people using it. I haven’t yet used it in anger, partly due to time constraints and partly because I haven’t bought / built any 3.5mm patch cables!

7 bits (128 values) in MIDI is of course only to describe which the note (12 notes per octave so a bit more than 10 octaves). In CV you need to ‘tell’ the VCO which frequency. Some say 12 bits is sufficient for that but a quick calculation shows:
10 V spanning 10 octaves (1V/oct) in 12 bit means 10/4096 = 400 steps per octave / 12 = 33 steps per note-interval (semitone). That feels like big steps to me. 14 bits will improve that with a factor 4 = 136. I would take the extra 2 bits to 16 bits to have sufficient precision anyway.

For polyphonic use or when playing 2 VCO’s with a slight detuning, the ‘slightness’ is very important.

hi Riban,

CV over IP (network cable you mean?) would be cool indeed. That would be nice for transferring data from the Zynthian to the eurorack case(s), in case there would be more cases connected. For one case, the Zynthian should maybe be inside the case in some way. Or with a breakout cable partly inside.

Basically I need a protocol to get digiCV (I tend to call the data like that) over a (serial) line from one place to another. From the Brain (B) to the nerve-centres (NC) so to say. The nerve-centres distribute it to the organs (O).

So

  • B - NC = digiCV,
  • NC - O = analog CV, so simply voltage,
  • O - NC = analog CV, idem,
  • NC - B = digiCV

Easiest would be a kind of broadcast - receive mechanism, but I am not sure if that would work. It works for the power supply, but if it would work for rather fast digital signals, I don’t know.

Other option would be a serial daisy chained something. SPI can be daisychained, MIDI in fact also works like that. i2c can also be daisychained (A user's guide to i2c - Monome - lines).
Daisychaining means that wires can be shorter.
SPI and MIDI chain with a controller inbetween (receiving the signal, reading it and sending it through). With SPI I think there usually is a bitshift process going on, so the next in line receives the signal 1 bit later. With MIDI I don’t know how that works, I think MIDI thru is directly sent through, but with some buffering inbetween. MIDI is not a voltage-connection, but a current-loop, as I’ve always understood, which makes that you cannot simply split a MIDI-cable to 2 receivers. (What you can do with for example a headphone output or with CV voltages.)

Third option I see is a star-architecture: one master communicating with each slave separately. Could probably also be done, but is less flexible and more wires inside the case, but maybe no problem.