MUFF WIGGLER Forum Index
 FAQ & Terms of UseFAQ & Terms Of Use   Wiggler RadioMW Radio   Muff Wiggler TwitterTwitter   Support the site @ PatreonPatreon 
 SearchSearch   RegisterSign up   Log inLog in 
WIGGLING 'LITE' IN GUEST MODE

[PROJECT] 8x8 (16x16) MIDI control true summing matrix mixer
MUFF WIGGLER Forum Index -> Music Tech DIY Goto page 1, 2, 3  Next [all]
Author [PROJECT] 8x8 (16x16) MIDI control true summing matrix mixer
av500
UPDATE: 8x8 mixer PCBs finished and working, see more details on page 2







Hi there,

inspired by the pin matrix in EMS Synthis, I'm working on a MIDI controlled matrix mixer. Unlike the (unmodified) EMS matrix, this one is fully buffered and true summing, meaning that audio signals and CVs are added up correctly. Also this is not just a crosspoint switch as in some existing devices, here one can route any input signal to any output at the same time.

I have a first set of 8x10cm PCBs that hold the mixing fabric and which allow for a 16x16 matrix when fully populated. currently I soldered the components for a 4x4 matrix and this seems to work so far. I also have the PCB layout ready for a 5x5cm sized 8x8 matrix which I have not fabbed yet. a second PCB will hold the digital part with MIDI in and whatever other UI functions. currently this is just a small STM32 dev board wired in.

The 16x16 matrix could even fit inside an EMS Synthi right behind the real matrix or it could be wired in via the Prestopatch connector for a MIDI-fied Synthi - though I am sure that's pretty close to heresy smile

The switch fabric PCB is all SMT with SO and TSSOP components and resistors down to 0402, it can be soldered by hand though I had help from a stereo microscope to do so.

my current test setup looks like this:



and here is an example of summing the first four fourier components of a square wave - 4th input signal not shown as I don't have a 5-channel scope smile



besides the 8 input and 8 output jacks I want to put an LED push buttons for each input and output. Holding down one input button would light up the LEDs on the output side, showing to which output channel this input is routed to. Pressing an output button while still holding down the input button would them toggle this connection, allowing to change the routing. same for holding down an output button, it would show what inputs are routed to that output and allow to toggle each state.

input and output channels could also be muted by a double click on the respective button and blinking the LED to indicate muted state.

I have not decided yet on what control signals I will put, MIDI, USB host/device and or RS232 control, currently I am switching manually through the debug UART on the CPU board.

Regards,

Vladimir
emeb
Nice project - looking forward to seeing the rest of the panel working.
daverj
When you say "true summing", you mean unity gain mixing? ie: if two inputs are at +5v the output is at +10v?

If so, the problem is that you will be clipping signals that are in the +/-5v input range once you go past two inputs mixed together, since your mixed outputs can't go beyond the power rails. (at least when mixing signals that are asynchronous to each other, rather than phased harmonics like in your scope pic)

Other than that, sounds like a cool project. And I really like the button/LED idea. That's a great way to show status and make changes.
av500
daverj wrote:
When you say "true summing", you mean unity gain mixing? ie: if two inputs are at +5v the output is at +10v?
If so, the problem is that you will be clipping signals that are in the +/-5v input range once you go past two inputs mixed together, since your mixed outputs can't go beyond the power rails. (at least when mixing signals that are asynchronous to each other, rather than phased harmonics like in your scope pic)

correct, 5+5=10 smile

I could add a row of input attenuators in the inputs, but yes there are limitations.

daverj wrote:


Other than that, sounds like a cool project. And I really like the button/LED idea. That's a great way to show status and make changes.


thanks
old gregg
very interesting project !

how do you plan to use midi to control the matrix ?
av500
old gregg wrote:
very interesting project !

how do you plan to use midi to control the matrix ?


actually, I have no idea, I'm a bassist smile

I am pretty new to the modular synth scene and I don't even have a system to plug this into right now. I am open to suggestions how to handle the MIDI side besides SYSEX save/recall of the matrix state.

I will put an RS232 serial connection as well, so it can be used for any kind of "automation" purposes
Dave Kendall
Very interesting project ! smile

daverj makes a good point, but wasn't the danger of overload present in the original EMS matrix anyway ?
There ought to be a way to avoid the opamps risking latch-up when approaching rail voltages - voltage limiting with zeners maybe? perhaps in combination with rail-to-rail opamps, although the latter may add significantly to the build cost. . .

For real-time editing over MIDI, an easy way would be to use four unassigned regular MIDI CCs on a chosen (user-selectable) channel - eg #28, #29, #30, #31. Values for each controller would control each of the 256 matrix points' ON or OFF status, so for example;

CC#28 VALUE = O = MATRIX POINT no. 0 = OFF
CC#28 VALUE = 1 = MATRIX POINT no. 0 = ON
CC#28 VALUE = 2 = MATRIX POINT no. 1 = OFF
. . . . . . .

CC#29 VALUE = O = MATRIX POINT no. 64 = OFF

and so on up to. . .

CC#31 VALUE = 127 = MATRIX POINT no. 255 = ON

This way, the total byte count when sending a *single* message to set a matrix point's status would be less than using SYS-EX - only 3 bytes, so enabling/disabling a matrix point *whilst a track is running* is more efficient with MIDI bandwidth. For bulk dumps/loads, if running status is implemented, the byte count would be about the same as SYS-EX, but more if running status is not implemented. But bulk dumps are usually offline processes, so not a worry.

But using regular MIDI CCs means that most control surfaces, sequencers and even some workstation keyboards could be set up to control it. Not all MIDI controllers have the ability to send SYS-EX or even NRPNs, particularly older devices, and likely some newer ones can't do that either.

If there was also a way to save the entire matrix state to 127 onboard memories and recall them with MIDI PGM changes, that would be awesome.
Add dedicated RECALL and STORE buttons and a way of selecting memory locations, and I'd marry it and have its babies smile

cheers,
Dave
Jack Gull
* edit because i totally misunderstood the previous post *
av500
Dave Kendall wrote:
Very interesting project ! smile

thanks smile

Quote:

daverj makes a good point, but wasn't the danger of overload present in the original EMS matrix anyway ?

No because the EMS matrix is averaging and not true summing

Quote:

There ought to be a way to avoid the opamps risking latch-up when approaching rail voltages - voltage limiting with zeners maybe? perhaps in combination with rail-to-rail opamps, although the latter may add significantly to the build cost. . .

I'm not so much afraid about latch-up, the opamps should just saturate at some voltage close to the rails. It's the standard 14-pin quad opamp package so there is a wide variety of opamps to chose from.

Quote:

For real-time editing over MIDI, an easy way would be to use four unassigned regular MIDI CCs on a chosen (user-selectable) channel - eg #28, #29, #30, #31. Values for each controller would control each of the 256 matrix points' ON or OFF status, so for example;

CC#28 VALUE = O = MATRIX POINT no. 0 = OFF
CC#28 VALUE = 1 = MATRIX POINT no. 0 = ON
CC#28 VALUE = 2 = MATRIX POINT no. 1 = OFF
. . . . . . .

CC#29 VALUE = O = MATRIX POINT no. 64 = OFF

and so on up to. . .

CC#31 VALUE = 127 = MATRIX POINT no. 255 = ON

This way, the total byte count when sending a *single* message to set a matrix point's status would be less than using SYS-EX - only 3 bytes, so enabling/disabling a matrix point *whilst a track is running* is more efficient with MIDI bandwidth. For bulk dumps/loads, if running status is implemented, the byte count would be about the same as SYS-EX, but more if running status is not implemented. But bulk dumps are usually offline processes, so not a worry.

But using regular MIDI CCs means that most control surfaces, sequencers and even some workstation keyboards could be set up to control it. Not all MIDI controllers have the ability to send SYS-EX or even NRPNs, particularly older devices, and likely some newer ones can't do that either.

here I'm basically open to anything, the people that do actually stuff with MIDI control need to tell me how they like to control this thing. Running status is not a problem, I have that already working for my MIDI2CV module Also, it's "just" software, so it can be flexible smile

Quote:

If there was also a way to save the entire matrix state to 127 onboard memories and recall them with MIDI PGM changes, that would be awesome.

sounds doable

Quote:

Add dedicated RECALL and STORE buttons and a way of selecting memory locations, and I'd marry it and have its babies smile

cheers,
Dave


Ah, didn't think of that, but yes. one easy way would be to add a SAVE and a RECALL button and use the 8+8 buttons as the memory locations. if more than 16 locations are needed we need to come up with some other mechanism.
Jack Gull
now that i've re-read everything more carefully...
just a couple of thoughts...
1) very nice. grin i've been toying with a simillar idea for some time (about the same time the ericasynth matrix mix came out, then i paused everything)
2) to me the simplest approach would be using midi notes for editing... if i undestood it correctly you basically have a 8x8 "pin" matrix like in the EMS synths, so you would need 8x8=64 "pins" to connect every input to every output.
press note 0 to connect in 1 to out 1. press note 0 again to disconnect it
note 1 to in 1, out 2
note 2 to in 1, out 3
and so on.
av500
Jack Gull wrote:
now that i've re-read everything more carefully...
just a couple of thoughts...
1) very nice. grin i've been toying with a simillar idea for some time (about the same time the ericasynth matrix mix came out, then i paused everything)


thanks smile

yes, the Erica uses very similar technology.

Quote:

2) to me the simplest approach would be using midi notes for editing... if i undestood it correctly you basically have a 8x8 "pin" matrix like in the EMS synths, so you would need 8x8=64 "pins" to connect every input to every output.
press note 0 to connect in 1 to out 1. press note 0 again to disconnect it
note 1 to in 1, out 2
note 2 to in 1, out 3
and so on.


the EMS has a 16x16 matrix so 256 possible pins. in that case using notes would not be enough. for a 8x8 matrix this doable of course, but I cannot judge how practical it is
Jack Gull
well i was just describing the principle.
to me this is the easiest approach.

maybe because ALL grids control surfaces send note on/offs wink
av500
Jack Gull wrote:
well i was just describing the principle.
to me this is the easiest approach.

maybe because ALL grids control surfaces send note on/offs wink


since this module has no real notes to play anyway, I'm happy to add note on/off
av500
double post
Jack Gull
my point was that
- you only need to switch on or off that particular channel
- if you look at what most popular control surfaces do, at least all akais and novations use this convention (note on-off) to describe the pushbutton element.
i also find that pressing a note to activate this or that out is much more immediate than calculate a specific number for a cc... or using 64 different CCs smile
av500
Jack Gull wrote:
my point was that
- you only need to switch on or off that particular channel
- if you look at what most popular control surfaces do, at least all akais and novations use this convention (note on-off) to describe the pushbutton element.
i also find that pressing a note to activate this or that out is much more immediate than calculate a specific number for a cc... or using 64 different CCs smile


Got your point. as said above I am pretty new to all this, so pardon my ignorance seriously, i just don't get it
Dave Kendall
Quote:
No because the EMS matrix is averaging and not true summing
Sorry - my bad there.

There's a danger in using MIDI notes to switch the matrix points on and off. As well as precluding using NOTE ON and OFF from a keyboard to play something like a synthi using the matrix (which would be a very useful option), you could easily screw things up when inadvertently sending the matrix MIDI NOTE info intended for another device on the same MIDI cable.
IMO, it's best to leave NOTES for what they're intended in the MIDI spec.

Many CCs are undefined - they'd be ideal, as they are unlikely to interfere with other units using several CCs. Most control surfaces can specify CCs' behaviours I believe. Looking at MIDI mode in my ageing Yamaha 03/D, it would be easy to set up 8 x 8 matrix control using all 4 User Def locations. In a software controller, it should be dead easy.

You only need 4 CCs to switch all 256 points in a 16 x 16 matrix. If you omit CC's #32-63 which are the LSBs for CCs #0-31, you still have well over 80 CCs available, as well as NOTE ON/OFF, AFTERTOUCH and PITCH BEND on the same MIDI channel, so with a bit of juggling and multiple DACs and extra hardware, a single MIDI channel could probably control all parameters of something like a synthi smile

cheers,
Dave
av500
both CC and note ON/OFF control can be implemented in parallel and selected by a jumper if needed smile
av500
and here is a version with LOAD/SAVE buttons added.



button samples arrived from China today, so I made a little board to mount them:



av500
and after drilling some holes a day later:

daverj
Those are interesting buttons. Do you have a part number/manufacturer, or a data sheet?
Jack Gull
+1

also a photo of the illuminated buttons?
av500
daverj wrote:
Those are interesting buttons. Do you have a part number/manufacturer, or a data sheet?


here you go: http://www.khan.cn/product_read.asp?id=579
av500
Jack Gull wrote:
+1

also a photo of the illuminated buttons?


not yet wired up, hopefully tomorrow.
Jack Gull
where did you get those? directly from them or by a supplier (mouser/digikey/...)
i'm on the phone right now and thore are surely not mobole friendly websites hihi
MUFF WIGGLER Forum Index -> Music Tech DIY Goto page 1, 2, 3  Next [all]
Page 1 of 3
Powered by phpBB © phpBB Group