PRIMOVA MIDX-20 Dual Roland USB MIDI Converter / Ctrl Interface

Started by CodeSmart, March 05, 2016, 05:20:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

CodeSmart



http://www.primovasound.com/midx_20.html

MIDX-20 owners manual
http://www.primovasound.com/pdf/MIDX20_Manual.pdf

----------

I have now developed a new MIDX board which will be sent to production.

Using the same physical board, a MIDX-10 or MIDX-20 can be realized
- The MIDX-10 is as before, a Roland/Boss compatible single USB to MIDI bidirectional converter. Nothing more/nothing less.
- The MIDX-20 is a further enhanced version with an extra processor and a special two-jack interface board (and yes a bit more expensive due to more hardware and more things to assemble/test).

The MIDX-20 has two processors each operating as a Standard USB or Roland/Boss compatible USB Host and the processors communicate over a high speed serial link, bringing them together as two tight work horses.

The MIDX-20 has two USB connectors  + 5-pin MIDI IN/MIDI OUT + two extra EXPR/CTRL jacks  :o

There primary USB port is still intended for bidirectional USB/MIDI translation to a Standard/Boss/Roland synth unit
however, there are now also four modes for how the secondary USB will operate
(this is easily configured using a push button on the back of the box with LED'S telling you which mode you are in):
Secondary USB:
1. Synth USB - out only
2. Synth USB - bidirectional
3. Foot controller USB - in only
4. Foot controller USB - bidirectional

The great thing here is that now, a USB foot controller can now be directly connected to one of the USB ports and the other USB to a Roland thingy.

The MIDX-10 MIDI MERGE mode is still available, forwarding incoming 5-pin MIDI IN to 5-PIN MIDI OUT (if enabled). And still you can power the thing using a phone charger or a +9V pedal supply.

FURTHERMORE: There are two stereo input jacks on the MIDX-20
Each jack allow you to connect a EV-5 expression pedal or a FS-6/FS-7 dual footswitch.

If Jack 1 is connected to a EV-5 it will transmitt CC#80 channel 0 with analog value 0 to 127, according to pedal position.
If Jack 1 is connected to a FS-6/FS-7 it will transmitt CC#78 and CC#79 on channel 0 with digital value 0 or 127 according to foot switch state.
If Jack 2 is connected to a EV-5 it will transmitt CC#76 channel 0 (analog value 0-127, according to pedal position.
If Jack 2 is connected to a FS-6/FS-7 it will transmitt CC#74 and CC#75 on channel 0 with digital value 0 or 127 according to foot switch state.

This means that just with a MIDX-20 and one or two standard EV-5/FS-6/FS-7 you have a the possibility to add further controls to ANY Roland/Boss Equipment (or even two of them!!!).


Here you can see the dual USB connector and the dual stereo jacks.


I still got some additional software to write, but the hardware works ok!!!
Any input appreciated, as always.

Cheers
/Codesmart
But I got more gear than I need...and I like it!

sixeight


gumbo

Amazing stuff !   :o

...have you started on the one that controls the coffee machine with an FS-6 ?    8)
Read slower!!!   ....I'm typing as fast as I can...

GuitarBuilder

Can you include the ability to update the firmware via USB?
"There's no-one left alive, it must be a draw"  Peter Gabriel 1973

GuitarBuilder

Also, will the foot controller USB be able to deliver enough current to power a typical foot controller?  For example, my Softstep 2 draws about 150 mA.

Along the same thought, would it be possible to supply power to a foot controller with DIN connectors by converting the MIDI In DIN connector to 7-pin?

Keep up the great work!
"There's no-one left alive, it must be a draw"  Peter Gabriel 1973

CodeSmart

Quote from: GuitarBuilder on March 06, 2016, 08:29:30 AM
Can you include the ability to update the firmware via USB?
Firmware can only be updated using MIDI serial connectors. The chips are too tiny to have a USB stack in the boot loader.

Quote from: GuitarBuilder on March 06, 2016, 08:39:16 AM
Also, will the foot controller USB be able to deliver enough current to power a typical foot controller?  For example, my Softstep 2 draws about 150 mA.

Along the same thought, would it be possible to supply power to a foot controller with DIN connectors by converting the MIDI In DIN connector to 7-pin?

There's a 7805 onboard. Plenty of USB power, it's rated 1.5A

7-pin MIDI I haven't looked at (yet)
But I got more gear than I need...and I like it!

CodeSmart

Still waiting for the MIDX-20 boards (there's been some screw-up in Asia, as usual).
And I guess the MIDX-10 is obsolete with this post. I have to move on as I have an urge to complicate things. It's in my genes.

I'm really looking forward to complete the software. However The War Department dictates a house repaint very soon :P

The unit may look like this (same small enclosure as MIDX-10), colorful and nice or just painfully ugly. Hm...not sure yet.
(if you have better artistic ideas, please let me know)


* The unit has two Roland compatible (& Standard) USB Host microcontrollers booting at no time and a EEPROM for storing your settings.
* The two controllers intercommunicate at a speed 10 times faster than regular MIDI traffic allowing instant processing of incoming and outgoing USB and 5-pin MIDI.
* The second (upper) USB connector can be configured in various ways to allow direct USB connection to a USB foot controller or a second synth unit.
* Two Roland EV-5 / FS-6 / FS-7 compatible stereo jacks make it possible to add controls to your synth device via assigns.
* The 5-pin MIDI connectors has an optional THRU mode for MIDI Merge.

If you e-mail me (sound@primova.se) I can put you on the a waiting list but I'm not sure about price or when it can be available.
I only make limited runs of my stuff as I'm not a factory. I do this off regular daytime working hours.
People already on the waiting list for a MIDX-10 goes first of course. I'll contact you when available.

THANKS ELANTRIC FOR THIS FORUM MAKING IT POSSIBLE TO INTERACT WITH OTHER V-GUITAR NERDS LIKE MYSELF!

The following images shows some scenarios that will be possible with the MIDX-20.
(I hope you find the possibilities interesting for a future pedal board)

Two Roland USB devices controlled by a MIDI controller and/or Roland EV-5/FS-6/7

Just a GP-10 with more control

A GT-001 and GR-55 with more external controls and in-between connection

A Roland unit controlled by a USB MIDI foot Control + optional EV-5 and/or FS-6/7




But I got more gear than I need...and I like it!

Elantric

I want one!!!!!

sign me up!

Here is my application


Quote
THANKS ELANTRIC FOR THIS FORUM MAKING IT POSSIBLE TO INTERACT WITH OTHER V-GUITAR NERDS LIKE MYSELF!

You are welcome

an old quote from a late 80's movie comes to mind:

http://www.imdb.com/title/tt0097351/
QuoteIf you build it, they will come . . . . .

CodeSmart

These are the four modes in which the MIDX-20 is intended to operate. I hope it will cover most real-world configurations.
I hope to get some time for actual coding soon.

// MIDI DATA FLOW
//==============================================================================
// There are 4 modes in which the two USB controllers cooperate.
// (+) Indicates a point of clever MIDI merge.
//
// Mode 0 - Two USB synth units, unit B is only receiving
//   SYNTH B               SYNTH A              MIDI CONTROLLER
//   USB B                 USB A                MIDI
//   [OUT]  [IN]           [OUT]  [IN]          [OUT]          [IN]
//    ^                      ^      v             ^             v
//    |                      |      |             |             |
// (mb_usbt)             (mb_usbt)  |          (mb_u2t)      (mb_u2r)
//    |                      |      |             |             |
//    |                      |  (mb_usbr)         |             |
//    |                      |      |             |             v
//    |                      |      |             |            (+)<---(mb_expctrl)
//    |                      |      |             |             |
// (mb_u1r)                  |      |___________>(+)<_(mb_thru)_|
//    |                      |                                  |
//    |__<uart1<___(mb_u1t)__|__________________________________|
//
// In this mode any command sent from the MIDI controller is received by
// both USB A & B. Any command sent by SYNTH A is sent to MIDI OUT.
// If the merge/thru switch is ON the controller transmission is also
// available on MIDI OUT. The optional expression MIDI commands from the two
// input stereo jacks is merged with the input stream from MIDI IN.
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Mode 1 - Two USB synth units, both A and B is receiving and sending
//   SYNTH B               SYNTH A                    MIDI CONTROLLER
//   USB B                 USB A                      MIDI
//   [OUT]  [IN]           [OUT]        [IN]          [OUT]          [IN]
//    ^       v              ^            v             ^             v
//    |       |              |            |             |             |
//(mb_usbt)   |         (mb_usbt)         |          (mb_u2t)     (mb_u2r)
//    |       |              |            |             |             |
//    |   (mb_usbr)          |        (mb_usbr)         |             v
//    |       |              |            |             |            (+)<---(mb_expctrl)
//    |       |              |            v             |             |
//    |       |__>uart1 >___ | (mb_u1r)_>(+)__(mb_sum)>(+)<_(mb_thru)_|
//    |                      |                                        |
//    |__<uart1<__(mb_u1t)___|________________________________________|
//
// This mode operates like 0 but now also any command sent by SYNTH B is
// merged to the MIDI OUT stream.
//------------------------------------------------------------------------------
// Mode 2 - Controller on USB B only sending
//   CONTROLLER B                   SYNTH A              MIDI SYNTH
//   USB B                          USB A                MIDI
//   [OUT]  [IN]                    [OUT]  [IN]          [OUT]          [IN]
//           v                        ^      v             ^             v
//           |                        |      |             |             |
//           |                   (mb_usbt)   |          (mb_u2t)     (mb_u2r)
//           |                        |      |             |             |
//       (mb_usbin)                   |   (mb_usbr)        |             |
//           |                        |      |             |             |
//           |                        |      |            (+)<_(mb_thru)_|
//           |                        |      |             ^         
//           |                        |      |             |         
//           |                        |      |         (mb_sum)         
//           |                        |      |             |         
//           |                        |      ------------>(+)         
//           |                        |                    ^         
//           |__>uart1>_(mb_u1r)>(+)__|____(mb_tmp1)_______|
//                                ^
//                                |
//                                 ---(mb_expctrl)
//
// In this mode the optional expression MIDI commands from the two input stereo
// jacks is merged with the commands received from CONTROLLER at USB B.
// The merged stream is sent to SYNTH at USB A and MIDI OUT jack.
// If the merge/thru switch is ON the MIDI in stream is merged with the data
// going to MIDI OUT.
//------------------------------------------------------------------------------
// Mode 3 - Controller on USB B with full send and receive
//   CONTROLLER B                   SYNTH A              MIDI SYNTH
//   USB B                          USB A                MIDI
//   [OUT]  [IN]                    [OUT]  [IN]          [OUT]         [IN]
//    ^      v                       ^     v              ^             v________
//    |      |                       |     |              |             |       |
//    |      |                       |     |           (mb_u2t)     (mb_u2r)    |
//(mb_usbout)|                 (mb_usbt)   |              |             |       |(by hardware)
//    |      |                       |     |             (+)<_(mb_thru)_|       |
//    | (mb_usbin)                   | (mb_usbr)          ^             |       |
//    |      |                       |     |              |             |       |
//    |      |                       |     |         (mb_sum)           |       |
//    |      |                       |     |              |             |       |
//    |      |                       |     ------------->(+)            |       |
//    |      |                       |                    ^             |       |
//    |      |                      (+)<-(mb_tmp2)----------------------|       |
//    |      |                       ^                    |                     |
//    |      |                  (mb_tmp3)                 |                     |
//    |      |                       |                    |                     |
//    -----------<uart2<--------------------------------------------------------|
//           |                       |                    |         
//           |_>uart1>_(mb_u1r)_(+)__|____(mb_tmp1)_______|         
//                               ^                                       
//                               |                                       
//                               |---(mb_expctrl)
//
// This mode operates like mode 2 but also allows any incoming data on MIDI IN
// to be sent to USB A and USB B. Furthermore, any data sent by USB A will be
// merged with data sent by USB B into MIDI OUT.
//------------------------------------------------------------------------------
But I got more gear than I need...and I like it!

Jim Williams

I agree with E.....  I want one too. Sign me up as soon as you have them ready to ship.
Skype: (upon Request)

Everything from modeling to the real deal, my house looks like a music store.

carlb

I can DEFINITELY use this little box. Perfect for how I need to use the GP-10.

Need "kickstarter" funds? Whatever would help firm this up and make it available soon.

Shoot me message, Robert. Thanks!

ES Les Paul, internal Roland GK
Boss SY-1000, Valeton Coral Amp pedal
Morningstar MC8 & MC6
QSC CP8 powered speaker

CodeSmart

Quote from: carlb on April 28, 2016, 03:13:20 PM
Shoot me message, Robert. Thanks!
I've just updated the data flow in my previous post with the fifo circular buffers needed for the MIDI data in the four modes.
Thinking is essential before coding in embedded projects as memory and debugging possibilities is limited.
On the hardware side the first fifty boards are finally on their way now. I can produce enclosures as the board arrives.
However coding and testing will take many more nights...and I got daytime job and a household to attend to also.

But I got more gear than I need...and I like it!

CodeSmart

Got the boards a few days ago. There are random problems with soldering on crystals and some resistor nets, but they work after fixing the flaws, so the design and components are ok. Today I did a prototype enclosure to be handed over to the Pro with a milling machine next week. They've did perfect job on the GKFX-21 and MIDX-10 enclosures. On the coding side I've done some work but have a huge pile of work left  :P


From left: Almost hidden button for programming the unit (it can be pressed by a finger but cannot be pressed unintentionally),
MIDI IN, MIDI OUT, 2xUSB and DC Power (Standard 9Volts 2.1mm jack and (5V) Micro USB)....And yes, I'ts pretty ugly drilled and filed but it IS a prototype  ;)


Here you see the two jacks for expression pedal Roland EV-5 or Dual switches FS-6/FS-7. They will be polled rapidly and will generate MIDI CC# for Assigns in the synth units.


The LEDS will be used to show USB status, MIDI traffic and operating modes and will also assist when programming the unit using the 'magic' push button.


The internal stuff. It's a bit crowded when closing the box but fits as planned. The two processors shares the same software but will identify which one they are at startup by checking surrounding hardware. The primary processor reads the expression jacks, operates 5-pin MIDI and has an external EEPROM for storing the setup, while the secondary has a more relaxed life. Each of the processors is connected to their own USB connector. The flow of MIDI data between the two USB connectors, 5-Pin MIDI jacks and internally generated CC# commands is determined by the operating mode selected by the user.
But I got more gear than I need...and I like it!

sixeight


CodeSmart

Should be digging the garden and painting the house but managed to sneak away to order additional components (100 stereo jacks, 50 DC jacks, 50+50 cable assemblies and 250 LEDs from Reichelt in Germany), same wise today I managed to disappear for a while from the working site and hand over 48 enclosures for hole making.

The reason there's only 48 enclosures is:
1. The one I did is pretty unsellable.
2. I stole one enclosure and made a FS-6/FS-7 clone as gift to our lead singer/bass player as he went 50 last week. It will be professionally printed and clear coated etc. and called 'PH-50 Dual Footswitch Patrik's Pedal' (PH is the initials of the guy)  ;D
But I got more gear than I need...and I like it!

whippinpost91850


CodeSmart

Worked Non-stop from 10:00 - 03:00 today (15 hours, luckily I had a few beers to keep going).
Really manage to get a whole lotta MIDX-20 firmware done today.

- Both USB ports with a GP-10 plugged in works with the Gummie GP-10 floorboard (this proves bidirectional SysEx works etc.) without buffer overflows.

- MIDI Merge is toggled with the push button (single clicks).

- MIDX four different operation modes is selected by pressing one 'looong' time on the push button.

- Four-step Setup Wizard for the two Stereo Control Jacks by quickly pressing 5 times or more on the push button.
  The Wizard allows to setup individual MIDI channel (1-16) and CC# (1-8 banks) for each stereo jack using the push button and the LEDS as user interface, works ok.
  The 8 CC# banks are:
  1 - If EV-5 connected it will transmitt on CC#01, if dual footswitch FS-6/FS-7 it will transmitt on CC#02 & #03
  2 - If EV-5 connected it will transmitt on CC#05, if dual footswitch FS-6/FS-7 it will transmitt on CC#06 & #07
  3 - If EV-5 connected it will transmitt on CC#10, if dual footswitch FS-6/FS-7 it will transmitt on CC#11 & #12
  4 - If EV-5 connected it will transmitt on CC#70, if dual footswitch FS-6/FS-7 it will transmitt on CC#71 & #72
  5 - If EV-5 connected it will transmitt on CC#75, if dual footswitch FS-6/FS-7 it will transmitt on CC#76 & #77
  6 - If EV-5 connected it will transmitt on CC#80, if dual footswitch FS-6/FS-7 it will transmitt on  CC#81 & #82
  7 - If EV-5 connected it will transmitt on CC#85, if dual footswitch FS-6/FS-7 it will transmitt on CC#86 & #87
  8 - If EV-5 connected it will transmitt on CC#90, if dual footswitch FS-6/FS-7 it will transmitt on CC#91 & #92

- The MIDI commands generated by the CTRL jacks are available in all three nodes (2x USB and 5-pin MIDI).

- Merge code is completely rewritten using my new circular MIDI buffers with MIDI parsing both in the
  head and tail to cover all syncronisation and problem fixing scenarios. There are actually 12 MIDI buffers
  running in parallel to controll the flow and merging in real-time to make all MIDX modes possible.

- Inter-processor serial communication at 10 times normal MIDI speed works great.

Got to test the remaining modes and figure out a few remaining things but this looks really promising.
Also got to re-write the bootloader so both controllers can be updated from a PC (via MIDI).
The share the same code so they will flash in parallel as new hex code is given to them.

But I got more gear than I need...and I like it!

CodeSmart

Enclosures milled and handed over to painting guy for white paint.
Next stop printing and clear coat.
But I got more gear than I need...and I like it!

CodeSmart

Ok, the painting guy has painted the units white so I made an attempt to produce a print with whatever capabilities I have following the 'touch' of the GKFX-21.
(I have no clue what the X stands for but a 'M' for MIDI looked way uncool)
This is the print me and Misses concluded:

OPTION A:

However and option occurred which is also nice but I little bit crowded.
We though that the upper was better. Your people agree?  A or B?
(I'm planning to hand over the stuff for production tomorrow).
OPTION B:




But I got more gear than I need...and I like it!

gumtown

I like option B:
The X aligns with the 2 leds nicely.  :)
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

Yohanes

Option B, but please remove the "X". You can arrange the "MIDX-20 Dual USB Host" logo in the middle of blank space for balanced appearance.
Keep it Simple.

(Pardon me if sound too directive).
Yamaha Pacifica 510V
Roland G-707
Godin Freeway SA
Boss GP-10
Roland GR-50

GuitarBuilder

I'm afraid I was a bigger fan of the yellow, Robert!  I still love the way it matches the GP-10....... :-\
"There's no-one left alive, it must be a draw"  Peter Gabriel 1973

CodeSmart

I hate to keep nagging about this but it's freakin' difficult. I'm an engineer not a painter.
Now please hit me!!! If you read this thread, well please kindly tell me your vote!!!
...or your voice will never be heard.

I need to get them to the printing guy tomorrow. See below.

Quote from: GuitarBuilder on June 01, 2016, 06:18:41 AM
I'm afraid I was a bigger fan of the yellow, Robert!  I still love the way it matches the GP-10....... :-\
No way, I'm feed up with yellow...

A) Is still kind of nice. According to a me and a guy at EHX.


Quote from: Yohanes on May 31, 2016, 10:43:47 PM
Option B, but please remove the "X". You can arrange the "MIDX-20 Dual USB Host" logo in the middle of blank space for balanced appearance. Keep it Simple.
Yohanes - I quote a fellow Swede: How can less be more, more is always more!!!
However this is option B a' la' Yohanes:
It's very uncomfortable my wife also like this...


C) And then with 'M' as in MIDI...


D) And X in middle, still kind of nice (Gumtown)


But I got more gear than I need...and I like it!

Ol55

I also prefer option "B". BTW, I love my MIDX-10!
GR-300, GR-1, VG-8EX x2, VG-99, GP-10, BK-10, MIDX-10, V-Bass, TAG Crowdster+GK, Fender GC-1, Godin LGX-SA, Roland G-505, CPS Space Station III                           
"Hair is the first thing. And teeth the second. Hair and teeth. A man got those two things he's got it all." James Brown

Yohanes

My vote: option B, obviously, but you are the judge.  :D

Ah, almost forget to say thanks for considering my input
Yamaha Pacifica 510V
Roland G-707
Godin Freeway SA
Boss GP-10
Roland GR-50