Model Definition question

4 posts / 0 new
Last post
PedroV
PedroV's picture
Model Definition question

Hello.
First I would like to thank you Mark for creating the great BC Manager and documentation which I have been using a lot lately.
I am creating model definition files for my synths (and some others) which I have posted on substantial.epizy.com and I have a question about the Yamaha TX81Z.
The Performance Edit Parameters PCED table on manual p.73 has the following parameters:
1 - Voice Number MSB  - - - 0-1
2 - Voice Number - I01-D32 - 0-127
and range 0-159 on the right side of these parameters. If it's a 2 byte value range 00 00 - 01 20 which parameter number should be sent, 1 or 2?
Also, does a checksum must be sent too?

Cheers.

Mark van den Berg
Mark van den Berg's picture

The Performance Edit Parameters PCED table on manual p.73 has the following parameters:
1 - Voice Number MSB  - - - 0-1
2 - Voice Number - I01-D32 - 0-127
and range 0-159 on the right side of these parameters. If it's a 2 byte value range 00 00 - 01 20 which parameter number should be sent, 1 or 2?

The TX81Z has 160 voices, so two MIDI data bytes are needed to address the full range (0-159).
However, at least in my understanding, the "Parameter Change Message" (described on p. 67 of the TX81Z manual) only accepts a single parameter. If I'm right about this, you'll have to send a "complete" Voice Number via two SysEx messages.
Fortunately it is easy to make a B-Control encoder send these messages:

.minmax 0 159 [cf. Value 1 and 2 on BC Manager's "Custom output" tab]
.tx $F0 $43 <Basic receive channel> <Group/Subgroup number> $01 val7.13 $F7
.tx $F0 $43 <Basic receive channel> <Group/Subgroup number> $02 val0.6 $F7
(I'm not sure what "Group/Subgroup number" should be. The TX81Z manual on p. 67 gives the same value for ACED and PCED, which can't be correct.)

However, unfortunately BC Manager's SysEx model definition file format doesn't provide for this: it only generates one SysEx message definition per parameter.
This single SysEx message definition can contain multiple data byte specifiers, so if the TX81Z's Parameter Change Message does accept 2 data bytes, you can use a parameter definition like "01 | 00 00 - 01 1F | val7.13 val0.6 ;Voice Number". This may be worth a try, but I very much doubt it will work.
If it doesn't, you'll have to define Voice Number MSB and LSB via two parameter definition lines:
01 | 00 - 01 | val7.13 ;Voice Number MSB
02 | 00 - 7F | val0.6 ;Voice Number LSB
The "end user" will then have to merge these into one encoder definition "manually".

Also, does a checksum must be sent too?

A Parameter Change Message does not require a checksum.

Hope this helps,
   Mark.

PedroV
PedroV's picture

Thanks Mark.
Yes, the "two message" was my second option but I forgot to mention it. And it's "1Fh" not "20h", sorry for my conversions :)
You are right about the "Group/Subgroup number" but the Japanese manual states:
PCED
ggggg = 00100 (4)
hh = 00 (0)
Daniel Forró told me that Yamaha manuals are a bit messy on the Sysex tables so I always get the Japanese versions too.
About the checksum, I got confused because there's no mention of it in the manual nor in a Ctrlr panel I used for comparison but I read something about it in a previous forum thread.
I will update the file to reflect the changes in the voice number parameters.

I first started by creating .bcr presets but then I struggled to correspond parameters to an ideal BCR layout and I read about the model definitions so instead I decided to create model definitions and leave the correspondence to the end user.
For some models I had to split the parameters into two files because of different AddressLength byte numbers.
For synths that only accept Control Change or NRPN (that I know of) like the Oberheim OB-12 and the Novation Supernova 2 (although the Midi Implementation Chart states: System Exclusive - Voice & User Pattern Parameters, Write & Dump requests) I have created an excel spreadsheet to automate the process and I just copy the result into a .bcr preset. I use this mainly for menu only parameters like Effects, OSC tuning, etc, because I don't like menu diving at all. For example, effects on the Virus A were added on later OS versions so there are no specific knobs for those parameters on the panel.

Thanks for you help.
Cheers.

Mark van den Berg
Mark van den Berg's picture

You are right about the "Group/Subgroup number" but the Japanese manual states:
PCED
ggggg = 00100 (4)
hh = 00 (0)
Daniel Forró told me that Yamaha manuals are a bit messy on the Sysex tables so I always get the Japanese versions too.

OK, so the proper Group/Subgroup number was "Lost in Translation", to make a gratuitous reference to one of my favorite films smiley.
Unfortunately, my Japanese is "a bit rusty", but I'll keep it in mind if I ever come across another Yamaha manual.

About the checksum, I got confused because there's no mention of it in the manual nor in a Ctrlr panel I used for comparison but I read something about it in a previous forum thread.

Well, the TX81Z's Bulk Data messages use a checksum...
(By the way, I think you'd need the B-Control's "cks-1" for this. However, many of the specific Bulk Data message types are too long for implementation on a B-Control.)

For some models I had to split the parameters into two files because of different AddressLength byte numbers.

Yes, that's another limitation of BC Manager's SysEx model definition format.
In theory I could (and maybe should) expand the format in several ways, but this would take a lot of time. And the format is complicated as it is, so I'm hesitant about making the "learning curve" for aspiring users even steeper.

   Mark.