You are here

MIDI Designer Pro

For fans of synths, pianos or keyboard instruments of any sort.

Moderator: Moderators

MIDI Designer Pro

Postby The Elf » Mon Feb 24, 2020 12:28 pm

I've mentioned this software a few times over the past couple of weeks, so thought I should start a separate thread for anyone interested.

Firstly, I will state that I have no affilliation with this software, other than being a happy user!

I've just completed a set of Layouts, some based on existing Layouts, that not only enable me to edit a few favourite synths, and also reflect any editing I do on the synths themselves - but also will update the Layout when I change patches. The latter is a huge deal for me. Having such as the PG-800 for my MKS-70, and the new Retroaktiv MPG-70 to control my V4/PWM MKS-70 are dandy, but these programmers do not reflect the state of the current patch. Now my MDP Layout shows me exactly what I need to know and guides my hand for editing. This is a huge time-saver for me.

To achieve this I had to purchase and install the Stream Byter plug-in for MDP. This utility enables me to parse a bulk dump from a synth and pick out the individual parameters to send to each MDP knob, button and slider. From my MKS-70 I now simply switch to a new patch and the MDP Layout immediately updates to reflect the settings. On my reface CS I press a 'Get' button, the bulk-dump initiates and the Layout updates.

I'm very happy with the results. As long as you have some familiarity with MIDI you can create a simple MDP controller panel. If you are equally familiar with Hexadecimal then Sys-Ex strings are simple to create. To use Stream Byter requires a very basic understanding of procedural programming (IF, A=B, ELSE...); if you've used BASIC you'll be fine.

Where MDP stumbles is in really being dedicated to one synth at a time. Although you *can* have more than one synth in the current 'Layout' I find it very clunky to achieve, and when storing a preset it saves *everything* for all synths at once, which is clumsy and wasteful. Switching between Layouts is a few screen-taps, and the buttons are tiny - I wish there was a way to flip between them more easily. The two-page L/R split and Bank designations are very clumsy to my way of thinking - if you *do* try to append a second device to a Layout the Bank numbers go crazy and you have a heck of a job to get everything back to normal. If I could change one thing about MDP it would be to ditch the two-page concept and simplify things.

But, as I said, I'm generally very happy with the results. For such as the reface series of synths it gives me a way of storing presets outside of the questionable SoundMondo web page.

Just thought I'd share... :geek:
User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Re: MIDI Designer Pro

Postby Hugh Robjohns » Mon Feb 24, 2020 12:37 pm

:clap: :thumbup: Nice one Elf.
User avatar
Hugh Robjohns
Moderator
Posts: 30640
Joined: Fri Jul 25, 2003 12:00 am
Location: Worcestershire, UK
Technical Editor, Sound On Sound
In my world, things get less strange when I read the manual... 

Re: MIDI Designer Pro

Postby The Elf » Mon Feb 24, 2020 3:16 pm

User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Re: MIDI Designer Pro

Postby n o i s e f l e ur » Mon Feb 24, 2020 3:25 pm

MY EYES! MY EYES!!! :D
n o i s e f l e ur
Regular
Posts: 297
Joined: Sat Aug 04, 2018 6:20 am

Re: MIDI Designer Pro

Postby n o i s e f l e ur » Mon Feb 24, 2020 3:32 pm

Good info there The Elf (Elf? Paul? ).

So, does the app save presets in the same way Lemur does, as a monolithic template, or can each teplate save presets within that don't have to be saved as a template before you close the app?

To explain, for anyone not familiar with Lemur. Lemur doesn't have any built-in preset system, you build your template and that's that . . . however, you can build your own preset system into any template - the catch of course is you have then have to remember to save the template itself (containing all your saved presets) before closing the app or lose those saved presets.
n o i s e f l e ur
Regular
Posts: 297
Joined: Sat Aug 04, 2018 6:20 am

Re: MIDI Designer Pro

Postby The Elf » Mon Feb 24, 2020 3:37 pm

Presets are stored with the Layout. So you have to save the Layout to retain the Presets you've created while it was loaded. I wish it wasn't so, but... :frown:
User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Re: MIDI Designer Pro

Postby n o i s e f l e ur » Mon Feb 24, 2020 4:31 pm

Ah right, so it's basically the same deal for both apps.

You can build custom presetting systems that would span multiple device on Lemur, but I'm guessing that would be significantly more complex than working in MDP.
n o i s e f l e ur
Regular
Posts: 297
Joined: Sat Aug 04, 2018 6:20 am

Re: MIDI Designer Pro

Postby Zukan » Mon Feb 24, 2020 5:00 pm

Very cool Paul.
User avatar
Zukan
Moderator
Posts: 9343
Joined: Fri Sep 12, 2003 12:00 am

Re: MIDI Designer Pro

Postby BillB » Mon Feb 24, 2020 5:35 pm

Thanks Elf, saved for review. I also have TB MIDI Stuff app, which can do much the same. Still wondering if there is an Android app, as I have a couple of of old phones lying around. Minor issue there is that a USB Host > MIDI would probably be required... whereas IOS has many MIDI options, such as iRig MIDI etc.
BillB
Frequent Poster
Posts: 1194
Joined: Mon Apr 07, 2003 12:00 am
Location: East Yorkshire

Re: MIDI Designer Pro

Postby The Elf » Mon Feb 24, 2020 5:53 pm

I use rtpMIDI which transmits MIDI over wireless. Your iPad and DAW have to be on the same wireless network, and then it just works - no fuss, no complications.

I actually have my iPad sitting on an old Behringer iPad interface, but all that does is provide power to the iPad via an old iPad/Lightning converter.
User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Re: MIDI Designer Pro

Postby BillB » Mon Mar 08, 2021 10:32 am

Hi folks, I have been having a PM discussion with Elf about MDP and its use with the Ensoniq SQ80 (ESQ1).

Initially, however, I needed to check that the SQ80 editing template, contributed by a user, worked well with the SQ80, which has a particular way of mimicking its front panel button presses with MIDI NRPC and CC. Too much data overloads the MIDI buffer and can crash the (E)SQ.

The answer was that it worked beautifully, very smooth in terms of how the data was received at the SQ80, so the programmer has a spot-on combination of Sysex and NRPN. There may be some data throttling happening to make it smoother, although I don’t see it being used per parameter, maybe just a subtle overall amount in the Config dialogue. Anyway, it seems to be perfectly judged.

So this got me wondering about Stream Byter and parsing a patch dump. I have purchased Stream Byter via IAP, had a look around the website/forum. I get the principle and know that I will need to figure out what bytes in the dump go where, but as to how to code overall and assign them to particular parameters, no clue!

Elf said he would be willing to share an/some examples of the Stream Byter code and agreed that if it is done here, it will be easier to access, a more permanent record than PM, and others get the benefit.

I have subsequently noticed that there are a couple of examples of MDP editor templates which include Sysex parsing (e.g. Yamaha Reface CS) so can look at those too and maybe compare a few models.
BillB
Frequent Poster
Posts: 1194
Joined: Mon Apr 07, 2003 12:00 am
Location: East Yorkshire

Re: MIDI Designer Pro

Postby The Elf » Mon Mar 08, 2021 12:58 pm

Here you go, Bill.

This Stream Byter example is parsing the bulk Patch Sys-Ex from a V4 Roland MKS-70 and converting the contents to individual parameters to update the MDP Layout controls to represent the current state of the synth.

TBH this code is a bit of a kludge, but it was my first attempt and is relatively easy to understand in this naive form.

You can see that I am picking out bytes from within the bulk data and building a new individual Sys-Ex message for each item of data. When these individual parameters hit MDP they will address each control separately and each on-screen control will update itself.

Unfortunately my text indentations aren't being shown in the text below*, but hopefully it's still clear - there are two nesting 'IF' lines, with two corresponding 'END' lines.

Code: Select all
# Patch bulk dump - Convert APR to IPR
IF M00 == F0 41 38
  IF M04 == 24 30

    # Patch Common
    SND F0 41 39 M03 24 30 01 12 M19 F7
    SND F0 41 39 M03 24 30 01 13 M1A F7
    SND F0 41 39 M03 24 30 01 14 M1B F7
    SND F0 41 39 M03 24 30 01 15 M1C F7
    SND F0 41 39 M03 24 30 01 16 M1D F7
    SND F0 41 39 M03 24 30 01 17 M1E F7
    SND F0 41 39 M03 24 30 01 18 M1F F7 # Key Mode Dual/Split/Whole U&L
    SND F0 41 39 M03 24 30 01 19 M20 F7
    SND F0 41 39 M03 24 30 01 1A M21 F7
    SND F0 41 39 M03 24 30 01 1B M22 F7
    SND F0 41 39 M03 24 30 01 1C M23 F7

    # Patch Upper
    SND F0 41 39 M03 24 30 01 1D M24 F7
    SND F0 41 39 M03 24 30 01 1E M25 F7
    SND F0 41 39 M03 24 30 01 1F M26 F7
    SND F0 41 39 M03 24 30 01 20 M27 F7
    SND F0 41 39 M03 24 30 01 21 M28 F7
    SND F0 41 39 M03 24 30 01 22 M29 F7
    SND F0 41 39 M03 24 30 01 23 M2A F7
    SND F0 41 39 M03 24 30 01 24 M2B F7
    # 25 does not exist

    # Patch Lower
    SND F0 41 39 M03 24 30 01 26 M2D F7
    SND F0 41 39 M03 24 30 01 27 M2E F7
    SND F0 41 39 M03 24 30 01 28 M2F F7
    SND F0 41 39 M03 24 30 01 29 M30 F7
    SND F0 41 39 M03 24 30 01 2A M31 F7
    SND F0 41 39 M03 24 30 01 2B M32 F7
    SND F0 41 39 M03 24 30 01 2C M33 F7
    SND F0 41 39 M03 24 30 01 2D M34 F7
    # 2E does not exist

    # Chase
    SND F0 41 39 M03 24 30 01 2F M36 F7
    SND F0 41 39 M03 24 30 01 30 M37 F7
    SND F0 41 39 M03 24 30 01 31 M38 F7
    SND F0 41 39 M03 24 30 01 32 M39 F7

    # Key Mode X-Fade/T-Voice
    SND F0 41 39 M03 24 30 01 33 M3A F7

    # Bend range octave
    SND F0 41 39 M03 24 30 01 34 M3B F7

  END
END


* Tweaked it for you Elf --ED.
User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Re: MIDI Designer Pro

Postby desmond » Mon Mar 08, 2021 1:00 pm

I do love a bit of dirty hex... :lol:
User avatar
desmond
Jedi Poster
Posts: 11436
Joined: Tue Jan 10, 2006 1:00 am
mu:zines | music magazine archive | difficultAudio

Re: MIDI Designer Pro

Postby BillB » Mon Mar 08, 2021 2:26 pm

Thanks Elf. So just a quick bit of interpretation without troubling myself by looking at the manual...

# I get the commenting!

The first 2 lines check that 'This is the Sysex that you are looking for' - Manufacturer/device ID etc. If it is, carry on...

Most of the Sysex string is giving the address of the wanted data byte.

What is the significance of M03?

And is M19, M1A, M1B etc the part that actually assigns the value at that point in the string to the MDP specific control?

I will RTFM, but a few pointers specific to MDP would help me along.

Thank you!
BillB
Frequent Poster
Posts: 1194
Joined: Mon Apr 07, 2003 12:00 am
Location: East Yorkshire

Re: MIDI Designer Pro

Postby The Elf » Mon Mar 08, 2021 2:49 pm

M03 is the byte containing the MIDI channel.

M19, M1A... are the bytes containing the parameter value, which I am embedding into an individual Sys-Ex string for output. When the corresponding MPD control sees its designated parameter coming in it will pick up the new value.

I suggest just trying something simple at first, maybe intercepting a pitch bend message and converting it to a parameter, so you can see a Layout control move in the Layout, for example. Once you have something basic working you can then begin to move forward.
User avatar
The Elf
Jedi Poster
Posts: 16558
Joined: Tue Aug 14, 2001 12:00 am
Location: Sheffield, UK
An Eagle for an Emperor, A Kestrel for a Knave.

Next