digital modular system

From circuitbending to homebrew stompboxes & synths, keep the DIY spirit alive!
olafhochherz
Learning to Wiggle
Posts: 14
Joined: Fri Jul 03, 2015 12:40 pm

digital modular system

Post by olafhochherz »

Hey i just started to brainstorm about the idea of a digital modular system which is integrating well with a euro rack system.
I collect my ideas here:
https://github.com/olafklingt/digitalmodular

This project aims to outline a standard for a digitalmodular synthesizer in eurorack format.

Each module would be only an interface to a grogram running on a computer. But the patching would be done in with real cables. In the context of analog modules the possibility to mix analog and digital connections as if they would be the same would be an ideal dream.

When highquality ADDA would be endlessly cheap, than each control element, like a poti or a input, would be connected to a AD converter and send to a laptop. The outputs would be connected to a DA converter. Beside the price is such a strategy making unnecessary ADDA conversion, which will produce a lot of latency.

So this means a lot of problems have to be solved.

I am curious if other people think that such a system is interesting.
User avatar
SmartBits
Veteran Wiggler
Posts: 599
Joined: Tue Jul 16, 2013 3:46 am
Location: Nijmegen, The Netherlands

Post by SmartBits »

Nice idea! My first thought was that it would be nice to include tiny displays that you could label in software. So that you could still see what´s what (jacks, knobs, etc).
jhulk
Ultra Wiggler
Posts: 817
Joined: Thu Jan 30, 2014 6:36 am

Post by jhulk »

you can do that with the bc modular for the sharc dsps
User avatar
guest
Super Deluxe Wiggler
Posts: 8243
Joined: Mon Aug 19, 2013 11:49 am

Post by guest »

ive given this topic a lot of thought, and started laying out a module, but ended up working on other projects instead. here are a few of the ideas i had for data transfer (cables could be coax video cables, which are pretty cheap, although usually RCA jack):

1. SPI over the cable, with all modules plugged into a clock/gate signal delivered by the powersupply. SPI is very robust, but it would make it hard to plug into another case of modules without a daisychain of the clock signal.

2. UART transmission. there are microcontrollers with close to a dozen UARTS on them, and you wouldnt need the master clock or worry about external modules.

3. sigma-delta modulated single bit transmission. the nice thing about this, is that you can plug the signal into an analog module, and it will come out as audio. conceptually, this is my favorite option, but i was having trouble developing and efficient SD algorithm to run on a microcontroller. something like an FPGA would be fine, but thats added cost and complexity that really moves it out of the DIY world.

4. cheap ADDAC. this sort of takes the fun out of it, but maybe makes the most sense. you can get a stereo codec for 1.5$. right now i have a board up and running with a 6 in, 8 out CS42448 which is 9$ @100. AKM makes a 6$ 6 in, 12 out version. not sure its feasible to have a microcontroller talk to something like that, though.

5. PWM going to counters. bit depth sucks on this one.
openmusiclabs.com
User avatar
widdly
Super Deluxe Wiggler
Posts: 1096
Joined: Wed Jan 21, 2009 1:31 am
Location: australia

Post by widdly »

I'd treat the patchpoints kinda like a switch matrix. Set one socket as an output and all the others as inputs. Put the output high and read all the inputs. Then set the next socket as an output and repeat. This runs continously as a loop so you have a constantly updated map of all the connections in the cpu. This would mean each socket is just a uc digital io pin. The update rate doesn't need to be that fast since patching a cable is a relatively slow process.

Use a different socket/plug type from the analog gear but include a format converter module. That module would include the adc dac. These would run at audio rate regardless of it is a clock, modulation or audio signal going in/out.

Each module could be implemented with a cheap microcontroller. it just reads the pots values via adc, handles the digital io for the sockets and maybe runs some leds or lcd displays. All the modules hang off an i2c bus. the pots and io pins are mapped to ic2 address and can be read/write by the main cpu.

The format converter modules would have an additional spi bus for the adc dacs.

Another idea would be to make the front panels out of white board material so you can label them however you feel. Since the functionality would be totally morphable.
User avatar
Timmy
Super Deluxe Wiggler
Posts: 1236
Joined: Fri May 06, 2016 7:08 pm
Location: Sydney, Australia

Post by Timmy »

Have you seen the Mungo State Zero? Rare, expensive and well ahead of its time:

http://mungo.com.au/zero.html

http://mungo.com.au/zeroPatch.html

http://mungo.com.au/zeroModules.html
Marizu
Common Wiggler
Posts: 133
Joined: Tue Sep 27, 2016 5:12 pm

Post by Marizu »

This is a great idea. I had thought of doing something similar (although more along widdly's lines) for patching some visualising software that I am writing.

The problem that I had was that whilst I could dynamically and flexibly re-configure the modules in the software, I couldn't figure an intuitive scheme for relating the current software configuration to the patch panel.

Different modules can have different numbers of ins and outs, so even deciding on a meaningful array layout remained elusive for me.

Writing on a white panel is probably the best idea.

I'm interested in seeing how you move forward with this.
User avatar
BloodyCactus
Learning to Wiggle
Posts: 9
Joined: Sat Dec 03, 2016 8:34 am
Location: Lexington VA

Post by BloodyCactus »

Id say, dont use spi, use rs485 instead. You also dont want to be propagating clock signals unless its super super slow. clock signals need SHORT runs or you start hitting ringing and you need to learn about nasty complex stuff like how your clock signal turns into a transmission line and active termination and such.

I would also not use i2c, you need chip selects and stuff for that and run into addressing problems, also makes it difficult to do entire system wide broadcasts over the bus that you want all chips to see.

The other thing to think about is voltage. digital likes 3.3v but now there is big movement to 1.8 and lots of 3.3v is slowly going away, just like when we transitioned from 5v to 3.3v.. plan for the future when 3.3v tolerant io is as rare as getting 5v tolerant io pins on 3.3v microcontrollers these days!
User avatar
mskala
Super Deluxe Wiggler
Posts: 2750
Joined: Thu Mar 27, 2014 7:33 am
Location: Toronto
Contact:

Post by mskala »

Forget 3.3V, if you're putting a jack on a module and selling that module to a wiggler, then the circuit attached to that jack had better be +-12V tolerant, because you know that's what someone is going to plug into it some day.
North Coast Synthesis Ltd.
Twitch stream (Mondays, 3pm Eastern)

If you tell me that your goal is systemic change toward radical acceptance, and I see that you treat those you perceive as lesser-than with the same kind of scorn and derision that pushed me toward this insular little subculture where I feel comfortable [. . .] then you’ve successfully convinced me that your acceptance is not radical and the change you want not systemic. - "When Nerds Collide"
User avatar
BloodyCactus
Learning to Wiggle
Posts: 9
Joined: Sat Dec 03, 2016 8:34 am
Location: Lexington VA

Post by BloodyCactus »

mskala wrote:Forget 3.3V, if you're putting a jack on a module and selling that module to a wiggler, then the circuit attached to that jack had better be +-12V tolerant, because you know that's what someone is going to plug into it some day.
I was talking digital logic chip voltage, not the actual signal per se.
User avatar
mskala
Super Deluxe Wiggler
Posts: 2750
Joined: Thu Mar 27, 2014 7:33 am
Location: Toronto
Contact:

Post by mskala »

Then it doesn't need to be planned for in the design of the communication between modules.
North Coast Synthesis Ltd.
Twitch stream (Mondays, 3pm Eastern)

If you tell me that your goal is systemic change toward radical acceptance, and I see that you treat those you perceive as lesser-than with the same kind of scorn and derision that pushed me toward this insular little subculture where I feel comfortable [. . .] then you’ve successfully convinced me that your acceptance is not radical and the change you want not systemic. - "When Nerds Collide"
User avatar
BloodyCactus
Learning to Wiggle
Posts: 9
Joined: Sat Dec 03, 2016 8:34 am
Location: Lexington VA

Post by BloodyCactus »

mskala wrote:Then it doesn't need to be planned for in the design of the communication between modules.
Since it was brought up about SPI for data comms, a 5v SPI cant talk to 3.3v SPI directly etc. When designing a standard, the less ambiguities the better. Saying lets all communicate over SPI and one module is 5v and one is 3.3v... or 1.8v, both sides need to be the same level.

So I disagree with you. It should be planned into the design something like what would be the intermodule digital communication channel (spi,i2c,uart,etc) at what voltage level.
User avatar
av500
Super Deluxe Wiggler
Posts: 1896
Joined: Mon Feb 02, 2015 8:11 am
Contact:

Post by av500 »

my money is on RS232 and baudrate and parity jumpers on the back of the module ..
User avatar
Timmy
Super Deluxe Wiggler
Posts: 1236
Joined: Fri May 06, 2016 7:08 pm
Location: Sydney, Australia

Post by Timmy »

There's also the forthcoming Artisan modules, which use CAN bus, I believe. CAN bus, as used in your car, seems like a good candidate for the basis of a modular synth digital bus standard.

Watch this one from the 4:00 mark:

[video][/video]

And this one from the 4:41 mark:

[video][/video]
basicbasic
Super Deluxe Wiggler
Posts: 1098
Joined: Wed Aug 06, 2014 6:35 pm
Location: Sydney, Australia

Post by basicbasic »

Timmy wrote:There's also the forthcoming Artisan modules, which use CAN bus, I believe. CAN bus, as used in your car, seems like a good candidate for the basis of a modular synth digital bus standard.
I feel like I just saw the future of Euro right there.
User avatar
mskala
Super Deluxe Wiggler
Posts: 2750
Joined: Thu Mar 27, 2014 7:33 am
Location: Toronto
Contact:

Post by mskala »

BloodyCactus wrote:
mskala wrote:Then it doesn't need to be planned for in the design of the communication between modules.
Since it was brought up about SPI for data comms, a 5v SPI cant talk to 3.3v SPI directly etc. When designing a standard, the less ambiguities the better. Saying lets all communicate over SPI and one module is 5v and one is 3.3v... or 1.8v, both sides need to be the same level.

So I disagree with you. It should be planned into the design something like what would be the intermodule digital communication channel (spi,i2c,uart,etc) at what voltage level.
I think we're talking about different things. If it's the intermodule digital communication channel, then someone will plug 12V into it, it has to withstand that, and that was my point. You're talking about the normal voltage level, not what it can withstand, and that's a very different question.

Y'know what would be really cool, though? Future-proof, and basically idiot-proof? Fiber optics!
North Coast Synthesis Ltd.
Twitch stream (Mondays, 3pm Eastern)

If you tell me that your goal is systemic change toward radical acceptance, and I see that you treat those you perceive as lesser-than with the same kind of scorn and derision that pushed me toward this insular little subculture where I feel comfortable [. . .] then you’ve successfully convinced me that your acceptance is not radical and the change you want not systemic. - "When Nerds Collide"
olafhochherz
Learning to Wiggle
Posts: 14
Joined: Fri Jul 03, 2015 12:40 pm

Post by olafhochherz »

Wow so many posts already. I will comment on some of them.
But i start with a question.
When all the controllers, or poti’s would be connected to one central device where they would be translated into digital would i have to be careful that they are stable like not influenced from each others because of long cables or the digital stuff around them?

PANNEL DESIGN
Marizu wrote:The problem that I had was that whilst I could dynamically and flexibly re-configure the modules in the software, I couldn't figure an intuitive scheme for relating the current software configuration to the patch panel.
My idea was that the panels would look like modules which have a clear function. just like a modular synth.
But i can also imagine a sub-modular grid for controllers… But overall it is the stability which makes this approach different from other digital instruments … when you want to control changing programs than get just get a tablet
Marizu wrote:Writing on a white panel is probably the best idea.
SmartBits wrote: it would be nice to include tiny displays...

Yes, This could be possible with what i described as smart-modules maybe

PATCHED CONNECTION RECOGNITION
widdly wrote:I'd treat the patchpoints kinda like a switch matrix … The update rate doesn't need to be that fast since patching a cable is a relatively slow process.
yes thats the way to go when there would be only what i called stupid modules controlled by a single connector module. But how would this work with modules which are connected over a i2c bus?
guest wrote:ive given this topic a lot of thought
cool thanks for the information about some options.

I imagined for the smart-modules that each digital output would describe itself in a message it sends. This sounds like UART or RS-485 transmission to me.

BUSSES:
widdly wrote:
Each module could be implemented with a cheap microcontroller. it just reads the pots values via adc, handles the digital io for the sockets and maybe runs some leds or lcd displays. All the modules hang off an i2c bus. the pots and io pins are mapped to ic2 address and can be read/write by the main cpu.
widdly wrote:
The format converter modules would have an additional spi bus for the adc dacs.
BloodyCactus wrote:dont use spi, use rs485 instead.
av500 wrote:RS232 and baudrate and parity jumpers on the back of the module ..
hm … will look into this … uh so many choices

AUDIO
widdly wrote: Use a different socket/plug type from the analog gear but include a format converter module. That module would include the adc dac. These would run at audio rate regardless of it is a clock, modulation or audio signal going in/out.
yes, i think the way to go basically this is easy to do with the expert sleepers modules. and another module just which “outputs” the audio into the patch and vice versa.

INTERNALS
BloodyCactus wrote:The other thing to think about is voltage.
good point

ALTERNATIVES
Timmy wrote:Mungo State Zero?
yeah thats exactly what i mean i guess … just more open - and hopefully cheap :-P
Timmy wrote:There's also the forthcoming Artisan modules, which use CAN bus
Yeah thats analog with digital control of cable-free patching …
olafhochherz
Learning to Wiggle
Posts: 14
Joined: Fri Jul 03, 2015 12:40 pm

Busses and Patches

Post by olafhochherz »

I just started to read a bit more about Busses ... i2c, RS485, UART, ...

I think independently from how I connect Modules on a Bus I have to decide how I can encode the message send over a patch cable. I have to send a message when each module has it's own micro controller.

What could be a cheap and reliable option?

I guess in the end the output would just send a particular encoded message all the time which is then read by the inputs. The most simple bus system seems to me is the 1-wire connection. but even this has much more functionality than I need.
User avatar
av500
Super Deluxe Wiggler
Posts: 1896
Joined: Mon Feb 02, 2015 8:11 am
Contact:

Post by av500 »

in fact you don't have to send any message at all, the only information you need is which jack is connected to whicj other jack. so if you use switches inside the jacks you can detect that two switches have been closed or opened one right after the other, this indicated that a cable has been plugged or unplugged - and yes, this fails if you just plug one end of a cable in :)
olafhochherz
Learning to Wiggle
Posts: 14
Joined: Fri Jul 03, 2015 12:40 pm

Post by olafhochherz »

av500 wrote:in fact you don't have to send any message at all, the only information you need is which jack is connected to with other jack. so if you use switches inside the jacks you can detect that two switches have been closed or opened one right after the other, this indicated that a cable has been plugged or unplugged - and yes, this fails if you just plug one end of a cable in
Is this also possible when the two modules are connected via a digital bus (at the back)?

or do you suggest to identify connections just by the timing? - thats too error prone.
User avatar
av500
Super Deluxe Wiggler
Posts: 1896
Joined: Mon Feb 02, 2015 8:11 am
Contact:

Post by av500 »

olafhochherz wrote:
av500 wrote:in fact you don't have to send any message at all, the only information you need is which jack is connected to with other jack. so if you use switches inside the jacks you can detect that two switches have been closed or opened one right after the other, this indicated that a cable has been plugged or unplugged - and yes, this fails if you just plug one end of a cable in
Is this also possible when the two modules are connected via a digital bus (at the back)?

or do you suggest to identify connections just by the timing? - thats too error prone.
as you said all modules are just an interface to a program on a computer, so they just need to report jack connects/disconnects to that software.

and yes it is error prone :) but also simple :)

if you want to leave out cables and jacks, just put a button in place of each jack, then connecting means to push two buttons at the same time :)
olafhochherz
Learning to Wiggle
Posts: 14
Joined: Fri Jul 03, 2015 12:40 pm

Post by olafhochherz »

as you said all modules are just an interface to a program on a computer, so they just need to report jack connects/disconnects to that software.

and yes it is error prone :) but also simple :)

if you want to leave out cables and jacks, just put a button in place of each jack, then connecting means to push two buttons at the same time :)
Sounds a little bit like the physical equivalent to the programming language whitespace.
User avatar
pld
Super Deluxe Wiggler
Posts: 1165
Joined: Thu Mar 05, 2015 5:15 am
Location: Germany
Contact:

Post by pld »

av500 wrote:if you want to leave out cables and jacks, just put a button in place of each jack, then connecting means to push two buttons at the same time :)
Add an LED to each button and you can signal existing connections and compatible end-points via blinkenlights...

Generally I'd try and build on something scalable with commodity hardware, e.g. TCP as a transport, or CAN as has been mentioned (MOST?). Eventually you probably need addressing (rack.module.port) and integrity information like checksums or sequence numbers, which they already have. Vaguely thinking along those lines, the "patch" cables could just be a really simple transmission of address from the output to the input module, and all the actual data messages then run internally through the high-speed interconnect.
User avatar
av500
Super Deluxe Wiggler
Posts: 1896
Joined: Mon Feb 02, 2015 8:11 am
Contact:

Post by av500 »

pld wrote: the "patch" cables could just be a really simple transmission of address from the output to the input module, and all the actual data messages then run internally through the high-speed interconnect.
if I understood the original plan correctly, the modules are just UI, all the processing would be offloaded (to a PC)

another option is of course to have standalone digital modules, then of course a high speed backplane interconnect is one way to do it compared to transmitting the CV/audio over the actual cables. but then you need to make sure it will scale properly.
Puzzler
Common Wiggler
Posts: 165
Joined: Sun Oct 26, 2014 12:17 pm

Post by Puzzler »

Why does digital always want to copy analog world instead of being progressive?
Why do you want to patch with cables while you just can route the "signals" via software internally?

"ahead of its time" :roll:
Post Reply

Return to “Music Tech DIY”