Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Check out our Facebook Group.

Of course, if you want to send us an email, feel free.

Open problem reports

Summary of user requests

MIDI Designer
Design your perfect MIDI controller for iPad, iPhone, and Mac
LAYOUT: Korg TR Rack-Trinity - MIDI Designer Q&A

Rating: PlatinumLAYOUT: Korg TR Rack-Trinity
by
thedood

+3 votes
Rating: Platinum
Platinum
asked Oct 31, 2018 in Community Shares by thedood (950 points)
edited Oct 31, 2018 by thedood
Wow excellent layout Dood,  this is a upgrade to last TR layout! One question in regards to effects selection and sysEx,  have you considered using stream byter to handle the sysEx messages and change the display in MD?  Thanks for this one Brett!  Cheers,  
Mitch
This is amazing, massive and good looking. We're excited to see when it comes out of Beta (and now, of course). Big up!
Hey mate, ah yeah...ok... thats a bloody cool idea Mitch. So if I detect a high from a sent message, for example, insert 1 Fx's 4 stage button, capture this condition and signal Insert 2 and Insert 3 to switch off? Dude thats brilliant! (if I read you right haha)
Ive been so flat out gathering the Sysex commands (hardest part I find) and doing the design for the last few weeks in my spare time, and I've been developing an iOS app using MonoC# for a small contract gig also, so Ive been glued to ipad screens for the last 3 weeks straight hah. Ive been meaning to give the sysex dump parsing you designed a try also. Ill have a bit of a break this weekend, I need an "analog with cables" fix/hit ;)
Cheers
Thanks Brett, several things going on here. One is that we're updating this Q&A site so it actually says which team member is talking to you (right now Mitch and I look the same). Second thing: Stream Byter is part of Midi Fire that Audeonic has allowed us to build in to MD. It's pretty powerful for parsing. It's a pure C library that we talk to through Obj-C.... it's great fun. Third thing is that while there are MANY iOS users who know StreamByter, Mitch (who is responding here sometimes, and also is here -- http://mididesigner.com/mitch) is one of the few MIDI Designer users who has done sysex parsing with StreamByter inside MD.

Personally, I think it's going to add bidirectionality to all of our layouts eventually.

Thanks Brett and thanks Mitch for doing your thing!
Dan
I use Sysex receive to match MD controls to RD2000 settings in several layouts.  I use the L value to set zone, MD pulls out V and updates the control appropriately.  The L value has to match, and then it will pull and display the V value.
Hey Jk, gday mate, my midi instructor! Dude youve got no idea how much time and effort you saved me by "banging into my head" how midi works (14bit...never read the spec first) lol Ive got lists working like a charm now ;)  thankyou again.
So can I first ask, as I havent attempted anything yet, nor read the api for Streambyter, so forgive my many questions (time constrained at present) with the RD2000, how does the "matching" occur/work?  Do you basically assign a control to a "channel" (L has to match) and say that any packet on that channel is destined to that control? And are the RD2000 controls constantly updating/transmitting their values or do you have to request them?

What Im unsure of how to do is "match" many sysex controls in a panel to a dump with many parameters, (all my old synths only dump on request and nearly always with many parameters, rarely can I get individual control messages, per control) if I have a control that is of type midi Sysex, how do I match parameters in the dumps to many controls of this type?  If I were coding it, we essentially need to build a matching table and assign addresses in the sysex transmitted stream (array) to each individual sysex control object in the panel, so I could easily then update each value, or am I over thinking again lol I need to read up on Streambyters API first.

Cheers
Brett
Hey Dan, all cool mate , I worked out who was who ;) Mitch was helping me on another thread re sysex/streambyter.
Streambyter seems perfect for the task and it will save some dev time.
I need to learn the streambyter api, but Im still uncertain how I match parts of dumps to individual controls values.
Massive thanks for MD2, you help make 90s synths "bearable"! ;)
Cheers
Matching Sysex Controls

Short answer: once the control is configured, it is always watching for a matching message, and updates when it sees one.  With the RD-2000, you have to request the data, so my tabs have a “Load” button.

Long answer:  here is how many of my tabs work:

I have a master “zone” selector to choose zone being edited — using the “channel” selector as a “zone” selector.

There are a number of sub zone selectors that provide pointers for parameters (since a zone goes from x0 xx to x6 xx, plus other offsets for effects, etc.)

For example, zone x tone character sysex is 41 10 00 00 75 12 10 00 L 3E V
    where 41 10 00 00 75 is the Roland Identifier
         12 is Data Transmission   
        10 00 L 3E is the address of tone character in zone x
        V is the single byte value

Other control settings
    Tone character display is -5 to +5 for Midi of 59d to 69d
    Assign the sub zone selector that has the +6 offset as super control
    Midi Receive On

This control now monitors continuously for a matching sysex (zone has to match the super control selection) and updates the control with v.

With the RD2000, you can request precise Sysex packets, i.e, a single desired parameter.

To read data and match controls, the tab has a “Load” super control.  This has a number of hidden sub controls that each send a sysex request.  The request matching above is: 41 10 00 00 75 11 10 00 L 3E 00 00 00 01
         11 is Data Request   
        10 00 L 3E is the address of tone character in zone x
        00 00 00 01 says I want a single byte

The ability to request precise data has let me avoid parsing a long sysex with streambyter.

But, nothing is easy.  The RD2000 will only accept eight sysex at once.  I can get up to 16 parameters with a single control by using both on and off values of a sub control.  Example, in above request, replace the 3E with V, and set the midi on/off values to 3E & 3F, ensure send ON ONLY is not selected either for the control or super control.  

I have an idea, not yet tested, to use the Roland portion of the Sysex to tell streambyter how long to delay an outgoing request, and replace that data with the std Roland header, allowing time to process the first 8+8 requests.

And I also need to post a hint on how to keep pushbutton selectors synchronized.
Hey Brett.  Mapping out dumps to determine what individual control values do can be a little tricky.  If you're lucky then the product has a SysEx map or key you can use.  How I did mine was I had a 36 byte message and knew what the first 5 or 6 bytes were.  Then I opened up the MD log, turned the first knob to 0 and sent a SysEx dump, changed the knob to 127 and sent a second sysEx dump and compared the two to determine what bytes the knob changed.  The rest of my knobs were in logical order in the sysEx dump so it didn't take too much work.  I only had about 16 parameters to map so it didn't take me too long, I'm not sure this would be a reasonable strategy for massive amounts of knobs. - Mitch
Great reply Jkhiser/Mitch very much appreciated.
Ok so the sysex controls "will" receive transmitted sysex matching the headers.
So basically RD is a very "tunable" device, and you can bend (very innovatively!) MDs parameters enough to make an interface.
I have no choice but to script with all my old beasts. I need to rip apart these streams "per" control.
I gave the streambyter documentation a read tonight and I just need to workout how to "generate" a Sysex packet to "match" the controls input, so it updates the Sysex control types V. It (streambyter) looks way cool, you can do so freaky stuff to midi (midi fx etc).
Many thanks.
Cheers
Congrats, huge work!
Platinum, congrats!
...