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

Also check out the Facebook Group.

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

MIDI Designer
Design your perfect MIDI controller for iPad, iPhone and iPod touch.
Lexicon PCM 81 SysEx Variable Bits - MIDI Designer Q&A

Lexicon PCM 81 SysEx Variable Bits

0 votes
asked Feb 17, 2019 in Advanced by ctreitzell (240 points)
edited Feb 17, 2019 by ctreitzell
Okay let's see here... reading, reading... okay, that's not what MD does at all with that many bytes. You need a LOT of ticks to get more detail (or named ticks, which would help here). Let me know if this makes sense.

Basically we've never seen a MIDI target that uses multi-byte sysex values that isn't covered by our implementation, and it's been a long time.

Thanks!
Dan
Hi Dan,
thanks for the quick response.

What I understand you to say is that MDP2 should be able to handle the multi-byte sysex I describe natively (without a plugin to translate midi messages). This means I just just don't yet have MDP2 set up correctly for my purposes, which is good news.

Thanks I will work with Named Ticks.
Wthout using Named Ticks you can give it a go by just increasing the Number of Ticks. Usually the Display Min/Max should be changed too. The Display Min Max is usually 0 - Number of Ticks - 1 (so a one-byte control usually has 128 ticks and goes from 0 to 127). Thanks.

Let’s also reserve the outside possibility that you’ll need StreamByter or something, but I doubt it.
Hi Dan,
thanks for that...yeah, I expect something might arise where Streambyter may be required.

I did try to just give it a whirl without named ticks, yet there just seemed to be large ranges in the 298 million possibilities with 4 V bytes. I will be coming back to this in a few days as I am travelling at the moment.

Thanks for the quick help =-D
Hey there, just had a look. MD will handle the 4 bytes with no problem. The UI doesn’t fit it too well, but note two important things: 1) the “renum” button at the top of the MIDI column, which will get you the perfect values for the number of ticks you have going from the MIN to the MAX (which is what happens with non-named ticks) 2) You can export and import the ticks using the text box “edit text” (quite awkwardly placed as a column heading).

Let’s say I’m 99% sure that you won’t need StreamByter now. Good luck!
Thanks, Dan :-)

I'll get busy with named ticks when I get back to testing the midi functionality and ask questions when I hit a road block:-)

_todd
Hi Dan,
I've come back to this after a couple months hiatus.

I've been working on Named Ticks and am still not getting the right messages out of MDP2.
The PCM81 has many parameters with well over 100 ticks.

Currently I am trying to discover recipe for setting the LFO Rate. This control has 2500 Ticks (0.00 Hz-25.00Hz in 0.01Hz increments)
Single Variable bits messages work fine so far.
The SysEx for this control uses 3 variable bits.

The MDP2 control I am using is a fader.

Could the DISPLAY VALUE limitation of -99 to 999 this issue here?
The next thing I was intending to try is a hyphen for every DISPLAY VALUE
I have tried several different scenarios.
including and not including the DISPLAY VALUE
I have tried lower res as well: 250 Ticks and still I haven't cracked it.
So far, I am unable to send the SysEx V bits as the PCM is designed to receive them.

I do need to create a MDP2 stepper control to slow down my midi control for better midi listening than a normal or long throw fader.

Also, the PCM81 Delay Time parameters have an enormous amount of ticks; the highest is nearly 48,000 Ticks!

I realize you may need more info from me.

Any hints to help me along the path with this limited info greatly appreciated.
The MIDI values that go out are affected by the ticks (and directly specified in named ticks, otherwise the math is done for you). You've seen this, I suppose?

https://mididesigner.com/qa/1999/more-than-1000-ticks-and-display-values-needed

The display value limitation is not actually a limit on what MD can send via Named Ticks, but you'd have to work with the values to get exactly what you want. Also Google MIDI byte calculator, it's an online tool that we made (and yes, it should be built in to the product but it's not not yet).

Thanks!
Regarding the enormous numbers of ticks, it's theoretically possible, but who needs all of those? You could use every tenth or whatever to cut down the number for 48K to 4.8K, which sounds a lot more reasonable. MD is brilliantly programmed on a brilliant platform, but you might want to look for ways to ease the burden. It'll be really hard for you to tell the different between 46999 and 47006 anyway, right?
On the other front, this stuff gets pretty tweaky... you might want to create some buttons to actually send values as you calc them and see if you can do the same from an MD knob. It's extremely unlikely that the device uses a different multi-byte calc than we do, but if so, we'd need a way to prove that and learn how to provide theirs. I'm not betting on that.
Hi Dan,
thanks for the instantaneous response. I had not seen that post about the 2157 Tick NRPN scenario.
I can't say I understand what the dashes in the named ticks are doing other than displaying the inputted text. Is it because the DISPLAY VALUES in your example reset to 0 every 99 Ticks? I guess I'd have to try it and see what happens.

My situation is SysEx. I have set up a stepper to confirm what MDP2 is sending and compare to what the Lexicon PCM is doing.

The enormous number of Ticks I will figure out. I know there are PCM users that are extremely OCD when it comes to miniscule differences. There's a reason why Lexicon was top of the heap as far as audio quality and why they programmed to such ultra high resolution. I am thinking a series of steppers for fine detail here (maybe 1000s, 25s, 1s...I'll have to experiment)...once I get the sysex figured out. I'll investigate if there are discrepancies and post back my findings.

Thanks for the buttons suggestions...that way I can at least confirm the sysex sent from MDP2 functions as expected...I am cool with getting very tweaky :-D
I'm not saying 47K ticks isn't possible, but you should probably mail your layout to yourself every once in a while just in case... it's not possible.
Thanks Dan,
I have several back up plans in place :-)
OK, confirmed
Lexicon is counting V bits different to MDP2
My MDP2 remote is sending V1 where is counts continuously up to 127 in column V1;
Lexicon ticks column V1 up to 0F; then starts over at 00 and V2 ticks 00 to 0F.

to clarify:
MDP2
V1  V2  V3  V4
00  00  00  00
01  00  00  00
02  00  00  00
03  00  00  00
thru to
0F  00  00  00
10  00  00  00
11  00  00  00
next 16:
0F  00  00  00
20  00  00  00
21  00  00  00
22  00  00  00
23  00  00  00
and so on

Lexicon counts like this:
V1  V2  V3  V4
0F  00  00  00
00  01  00  00
01  01  00  00
02  01  00  00
03  01  00  00
04  01  00  00
05  01  00  00
thru to
0F  01  00  00
01  02  00  00
02  02  00  00
03  02  00  00
04  02  00  00
05  02  00  00

etc

:-)
I'm not so great with math, but: Are you sure that's not LSB? Probably not. Right number of bytes? Probably so. Anyway, there is nothing that you cannot do with Named Ticks, but the fuck of it is that -- if the math is wrong -- you'd have to put in the MD values needed to get the Lexicon values to spit out. This is kind of what Excel was designed for. If you look at that post I send I show you an example of a text file that would work. Fun stuff!
Thanks for entertaining my questions, Dan :-)

Let me try to clarify further:

My Named Ticks settings are currently:
MIDI Value  DISPLAY Value  Named Ticks
0                0                     \00.00Hz
1                1                     \00.01Hz
2                2                     \00.02Hz
3                3                     \00.03Hz
all the way to
2500           2500                \25.00Hz

obviously I need to experiment with that.

LSB in this case is sending out of MDP2:
V1  V2  V3  V4
00  00  00  00
00  00  00  01
00  00  00  02
00  00  00  03
00  00  00  04
00  00  00  05
etc

which is what I would expect

Looks like I just need to figure out how the 3 columns for Named Ticks actually works and experiment.

Alternatively, I need to trick it with supercontrollers...

cheers, for the help
_todd
If you Google Named Ticks and MIDI Designer you should find our manual entry and another explanation page. However, the proof is in the pudding (the actual use and what the MIDI log shows, so "I need to experiment" is perfect): one of the values is what's sent out -- which is squished through our own byte calculations to produce a multi-byte MIDI message -- and the other two values are just for display and don't affect the output. Supercontrols cannot help here, generally speaking, except that with sequential subcontrols you could possibly achieve some realities that you cannot with one single control for your many-ticks case... but even in that case, a supercontrol cannot get a sub to send out a value that's not one or another of the subcontrol's "ticks."

Hope this helps orient.
Thanks Dan,
so far looks like you know what you are talking about =-D
PCM8x is LSB first and the values are checking out so far
in excel...I'll see what happens when I get some of these into MDP2 a little later.

Deffo tedious work. I am using your MIDI Byte Calculator :-)
Yep!
Thanks Dan!
That's cracked it!
Also, anyone getting confused by what I posted above re: variable bits
my syntax and sysex messages are correct, but
you have to go way beyond the low numbers to arrive at some kind of an understanding of what LSB first means.

In the case of the PCM8x Mod Row LFO Rate there are 3 variable bits.
I only know that from using a midi listener (MIDI-OX) to see how many bits were changing when I turned the ADJUST encoder knob on the PCM81.

Then I used the MIDI listener to verify exact SysEx values using the PCM81 encoder;
then input the SysEx values into the MIDI Byte Calculator.
In MS Excel: I input three values (ie 128, 129, 130) used the select>drag function to input the ascending numbers;
then went back to the top number cell (i e 128) and used my keyboard down arrow to count 16 cells
Then onto the next 16:
turn the PCM encoder to verify the sysex
input into BYTE CALCULATOR
input the value
and repeat all the steps.

I'm sure there is an easier way, but this is working.
I got up to 512 ticks so far. Doing 47000+ is probably insane.
Sorry man, let me share the formula from the midi byte calculator with you tomorrow. You can make it in Excel and skip the extra step.
Hi Dan,
you are too kind. The system I have is OK...just not fast.
There are a couple other nice folks helping me too and possibly there is a better method using softwares other than excel. Further, I am sure these values exist somewhere in spreadsheet form and I will try to track that down before diving too deep into my current method....which is fine...it's just slow
Hi Dan,
is there any chance you could share formula for Midi Byte Calculator?

Thanks again for all your help...the remote is coming along...it's great to be able to send the exact values and set up named ticks syntax to match the unit.

Cheers,
_todd
Yes will do in the next 72 hours (hopefully today). The issue is that -- at least the way I did it -- it's some code. While you could translate that code from PHP to anything else, I think the better way to go is to MODIFY the page (or make another one) that will run through a bunch of values with the parameters you specify and produce output. Batching -- processing a set of values -- is kind of what you need right?
Okay sent, let's continue the conversation on email. Thanks!
Hi Dan,
thanks so much for all the help. Looks like my friend's python script was able to handle the sysex to midi conversions so I didn't use your Midi Byte Calc.

I have understood a lot ore about the PCM's SysEx response....there are parameters well beyond what the Lexicon Midi Implementation Details outline, which is great.

So, I guess my question has been answered!
All the values I need to use can be done natively in MDP2 =-D
That's awesome. If your friend wants some PHP work, let us know... glad you're sorted, rock on!
Hi Dan,
I will talk to my friend about sharing the python script. It is specific to my use case for Lexicon specific LSB sysex.
Currently, I haven't had the chance to double check his results by testing the PCM with MDP2. Sadly, I've been snowed under working on a bucketload of non-musical related projects :-/
I will happily share the excel with anyone who wants it...it is a work in progress, tho...

thanks,
_todd
...