Synth Forum

Notifications
Clear all

Two Acoustic Bass Performances?

9 Posts
3 Users
0 Likes
1,562 Views
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

In a Performance I clicked on the + in an empty Part. I tapped category Bass and subcategory Acoustic. In the list of Performances that appeared, "Acoustic Bass" appeared twice. It seems to be the same Performance.

I checked, and I don't have a Performance with that name in my User area. What's going on?

 
Posted : 07/11/2016 8:05 pm
Bad Mister
Posts: 12304
 

Have you installed any Library banks?

If you recall them as Single Performances you can see where they come from.
Recall each one separately and query it for its location:
From HOME
Touch the Performance name to see the pop-in menu
Touch "Property"
This will tell you from where the Performance is being recalled.

ALTERNATE
But since you're "Merging" Performances, you can view the data you're searching through by using the Bank/Attribute/Source refining parameters.
When using [CATEGORY SEARCH] > Performance Merge, you can set the BANK - this way you can view just a specific location. The default is "All", but you can search just "Preset", just "User", or just any one of your installed Library banks.

Actually, there could be several reasons it appears multiple times, but you can determine exactly where a Part is coming from by using the BANK, ATTRIBUTE, and SOURCE functions when available.

See "Using Montage Category Search"

 
Posted : 07/11/2016 8:31 pm
Jason
Posts: 7910
Illustrious Member
 

I see the multiples as well - have never installed a library. The suggestion to click on "property" is useful. When I saw this, I internally assigned a meaning (which may not be true) that these were listed twice because one was the general-midi version and the other was the "standard" version. Although they sound the same. I also know there are multi-part vs. single-part versions of the same parts which have a different range in MSB/LSB but pull up the same name. i didn't think you could "pull up" the single-vs-multi part using category search - but I could be wrong.

Since it was an idle curiosity - I may go and "property" my duplicates and post here once I get the board set back up from bringing it "on the road".

Aside: Too bad I can't plug Montage into the car lighter (I've got a power inverter) - and Wifi into Montage using VNC/RDP/etc. That'd also allow for using a tablet as a touchscreen.

 
Posted : 07/11/2016 9:08 pm
Bad Mister
Posts: 12304
 

i didn't think you could "pull up" the single-vs-multi part using category search - but I could be wrong.

Please see "Using Montage Category Search"

 
Posted : 07/11/2016 9:14 pm
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

Have you installed any Library banks?

Yes, but I checked and there is no Performance named "Acoustic Bass" in either of my two installed libraries.

I played around with it some more and discovered something interesting. The problem appears when adding a Part to an empty slot that's between between two pre-existing Parts. The situation where I first observed it had a drum Part in slot 1 and a piano Part in slot 8. Tapping on the + in slot 2 and selecting Bass and Acoustic led to the situation where I saw two copies of "Acoustic Bass." I have since seen the duplicates with other configurations, like pre-existing Parts in slots 1 and 3, tapping the + in slot 2.

The duplicate Performance situation seems to be caused by tapping a + when there's an occupied Part slot somewhere to the right of the tapped slot. When that isn't the case, I don't see the duplicate Performances.

My guess is that this will turn out to be a bug of some sort in the software. If so, I'm hoping a report about it will get sent to the Montage software team. I'll be happy to provide any information they might require.

 
Posted : 07/11/2016 10:48 pm
Jason
Posts: 7910
Illustrious Member
 

I'll have to fire up the Montage from being "down" from the gig. My comment about not being sure if the multi/single parts can be loaded from category search is because "All" does not display both versions. -- let me kind of back up here -- I think perhaps maybe this is where the "Sort" of "Default" may have gotten me on the wrong track. If they are in the same list - then a sort of "Name" would show the duplicate multi/single part side-by-side. I still have to go to the Montage to sort this out - perhaps a premature response - but informative for Yamaha's usability analysis.

The data list shows that any performance (even multi part ones) has a single-part version of the same multi-part performance which lives in a different range. It shares the same name. So there should be (at least) two of every performance in the list if it displayed single and multi-part versions of every performance.

What I'm referring to is MSB 63/ LSB 0 + PC 0-127 through MSB 63/ LSB 15 + PC 0-127 for the single-part versions of MSB 63 / LSB 64 + PC 0-127 through MSB 63 / LSB 79 + PC 0-127

I did have some doubt since I didn't run through all the combinations to see if there is a duplicate set of performances for the entire set of 8,192.

Also, looking at the fact that I stick with "default" and not "name" as the sort - maybe both copies are in category search all along. I just thought there were other instances where I narrow the field down and do not see two copies for every performance.

These comments are for performance cat. search - and would be different for the part-level cat search.

 
Posted : 08/11/2016 12:48 am
Jason
Posts: 7910
Illustrious Member
 

OK - I have my Montage back online. Wasn't really "ready" to dig in without having it here to double check. The "single part" reference I was making was to what the datalist calls single part. Now that I have the Montage in front of me, I see this is just the part-level category search entries and not a single-part version of the multi-part performance. Decimal 63/(00-15)+PC(0-127) is not a performance at all. At least, it doesn't change the performance name. It's a single part within a performance. So those should not interfere with what's listed in the performance list (it's a different beast). Sorry for the noise - was going by memory.

One quick aside on the "properties" of a performance: unlike MSB and LSB (which are decimal zero-based values) - the Program No. elected to use 1-based values. This matches the 1..128 nomenclature given in parenthesis on page 175 of the data list. However, page 178 shows the values for Program No. as zero-based (0-127). It's a little lopsided to have MSB/LSB as zero based then Program No. as one-based. It would be easier to document if the "properties" stuck with zero-based for Program No. Or, not as ideal, show the 1-based numbering everywhere (including page 178, etc) with an asterisk - "Values in parenthesis are one-based. The Montage user interface uses one-based while MIDI protocol uses zero-based." Or something to that effect.

Now - trying to find my own duplicates. I wasn't able to find them today. I have seen them - and perhaps you're on to something. I did try to "force" the duplicates by adding a part between two existing parts. That did show the duplicates. Kind of strange not all parts show duplicates.

At any rate - this is PART level category search (not Performance). So throw out all this business about "properties" and performance-level stuff. Thanks for helping to nail down a case to reproduce this as I just ignored the problem.

Unlike performances - PARTs do not self-identify. Although they could (since parts have an MSB/LSB+Program No.) - there isn't a "Properties" for PARTs like for performances. Therefore, I cannot present what the second Acoustic Bass is compared to the first one.

I have, however, added both "Acoustic Bass" PARTs (the two versions) in a performance and can do a bulk dump to see if anything is different between the two (dump of the performance edit buffer).

addr 31 5X (09, 0A, and 0B) should hold the PART MSB/LSB + Program No. (go figure, the specification shows the range of 1-128 here, but the actual range is 0-127. The "description" is a bit sloppy and should stick to values that are valid as programmable ranges vs. trying to match the UI unless both are listed and a note is added to describe the context - there are other cases where the "description" does not fully describe what the values are - so some trial and error is needed to use some - a very small minority - of the parameters).

... no, addr 31 5x 09-0B are for zone control. There's really no ability to trace where PARTs came from as far as I can tell unless there's reserved data. I searched for the part MSB/LSB in the bulk dump - but didn't find this pattern. It looks like loading a PART "fills in" defaults for text and categories - then populates the elements with the information for that PART. The elements have waveform # (and wave select, etc) to uniquely enter the sound - this is for AWM2. There do not seem to be "breadcrumbs" to show where it came from other than at the element level - but no tracking why there are two category list entries for the PARTs.

Just to flesh this out, I'm going to show the element bulk dumps for both parts (Part 2 = Acoustic Bass [first of two duplicate entries in cat search], Part 3 = Acoustic Bass [second of two duplicate entries in cat search])

Part 2 Element 1: F0 43 00 7F 1C 00 6B 02 41 01 00 01 00 00 06 34 01 01 00 40 00 40 40 00 00 7F 60 7F 00 00 00 00 00 00 01 00 00 00 03 7F 7F 00 00 00 00 00 00 07 0B 00 00 7F 4A 00 02 00 00 5E 40 32 34 00 7F 00 00 00 04 40 4E 3C 24 30 3C 48 01 00 01 00 01 00 01 00 40 40 40 40 40 00 00 60 3C 40 00 28 40 40 40 01 00 01 00 01 00 01 00 01 00 54 04 40 40 02 40 3C 76 F7
Part 3 Element 1: F0 43 00 7F 1C 00 6B 02 41 02 00 01 00 00 06 34 01 01 00 40 00 40 40 00 00 7F 60 7F 00 00 00 00 00 00 01 00 00 00 03 7F 7F 00 00 00 00 00 00 07 0B 00 00 7F 4A 00 02 00 00 5E 40 32 34 00 7F 00 00 00 04 40 4E 3C 24 30 3C 48 01 00 01 00 01 00 01 00 40 40 40 40 40 00 00 60 3C 40 00 28 40 40 40 01 00 01 00 01 00 01 00 01 00 54 04 40 40 02 40 3C 75 F7
Part 2 Element 2: F0 43 00 7F 1C 00 6B 02 41 11 00 01 00 00 06 33 01 01 00 40 00 40 40 00 00 7F 01 5F 00 00 00 00 00 00 01 00 00 00 03 7F 7F 00 00 00 00 00 00 07 0B 00 00 7F 4A 00 02 00 00 5E 40 32 34 00 7F 00 00 00 04 40 4E 3C 24 30 3C 48 01 00 01 00 01 00 01 00 40 40 40 40 40 00 00 60 3C 40 00 28 40 40 40 01 00 01 00 01 00 01 00 01 00 54 04 40 40 02 40 3C 66 F7
Part 3 Element 2: F0 43 00 7F 1C 00 6B 02 41 12 00 01 00 00 06 33 01 01 00 40 00 40 40 00 00 7F 01 5F 00 00 00 00 00 00 01 00 00 00 03 7F 7F 00 00 00 00 00 00 07 0B 00 00 7F 4A 00 02 00 00 5E 40 32 34 00 7F 00 00 00 04 40 4E 3C 24 30 3C 48 01 00 01 00 01 00 01 00 40 40 40 40 40 00 00 60 3C 40 00 28 40 40 40 01 00 01 00 01 00 01 00 01 00 54 04 40 40 02 40 3C 65 F7

I didn't find anything that was a difference. PARTs do not really leave breadcrumbs around unless there is something undocumented. See attachment for a less messy view of the above and side-by-side comparison. Be sure to set (if viewing in an editor) your font to a fixed font so each byte can be visually compared.

More "fun facts" on the two versions of the PART presets after you can get these to list:

1) Both versions of the duplicate-name-PART are contained within the "Preset" bank. Filtering on "user" shows no matches (I typed "Acoustic" as the name in the hourglass/search filter) and filtering on "preset" shows the duplicates.
2) The two versions are shown as different dates. When I sort on date - there is an entry (using above filter) between the two "Acoustic Bass" parts in the list. If I sort by name - they show up side-by-side. By date - and there is an "Acoustic Snares" between the two "Acoustic Bass"es.

There's no real way I can see to extract the date. Searching on "date" doesn't turn up anything in the data list. Searching on "time" hits too many things although I didn't see anything that would match from a quick glance of the search "hit" summaries.

Now that my PART list has two "Acoustic Bass" entries - I am seeing that it retains past a power-off/on and does not require placing a PART between two existing PARTs anymore. I can just add a part to the end of any preset PERFORMANCE and see there are two "Acoustic Bass" entries in the PART category search.

That's about all I can offer at the moment.

Attached files

Two_Acoustic_Bass_Analysis.zip (940 B) 

 
Posted : 08/11/2016 6:25 am
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

How are you dumping the hex data? Where are you getting it from? That's pretty cool…

 
Posted : 11/11/2016 2:08 am
Jason
Posts: 7910
Illustrious Member
 

Michael,

The tool I use for this is MIDI-OX, a Windows based piece of free software with an optional donation. The MAC also has a similar piece of software in about the same price bracket. Unlike MIDI-OX, which has source code from a very early version - it looks like Snoize for MAC is open-source for the most current versions.

You can also get the same data by dumping an .X7B file through "front door" tools and then extracting the data from the .X7B with a hex editor. As the data will be the same except .X7B has an extra header and footer around the SysEx data.

SysEx (System Exclusive) data has the format F0 ... F7 with data bytes between the start and end of SysEx messages (F0=start AKA "SOX", F7=end AKA "EOX"). The Montage data list has multiple tables documenting the address and data of all public parameters and structures along with most of the "decoder ring" information also in the same tables. This is how I knew "F0 43 00 7F 1C 00 6B 02 41 01 00 ... " was associated with part 2, element 1. You'll notice the SysEx in the datalist page 175 shows (for Bulk Dump) "F0H 43H 0nH 7FH 1CH bhH blH 02H ahH amH alH ddH ..ddH ccH F7H". Page 176 (3-5-4 BULK DUMP) also has the same summary shown in a different way. This summary spells out each piece in a more clear manner.

You see what I show in the dump extraction for part 2, element 1 has the following

3rd byte = 00, matches documentation 0nH where n=0 (note: "H" just means hex in the documentation)
6th-7th byte = 00 6B, so bh=00 and bl=6B. Page 174 defines b as byte count . bh=high byte, bl=low byte. So if I change this to decimal, this is 107 data bytes returned for this SysEx command
9th-11th byte = 41 01 00. ah (address high)=41, am (address middle)=01, al (address low)=00 This is where you look at the following pages for the address decode which tells you which parameters are being returned. Note that the 1st data byte will be at the same address as this "ah, am, al" group - and subsequent bytes will be at the next offset (ah, am, al + 1 for second byte, +2 for 3rd byte, and so on).

So when I look for 41/01/00 - you can see on page 204 address "41 ep 00" is given. Here, 41 (hex) = ah, "ep" = am, and 00 = al. "ep" is defined as 0-7 for the "e" part which is the element number and "0-F" for the "p" part which is the part number. Basically, the upper nibble (upper 4 bits) are the element # and lower nibble (lower 4 bits) are the part number. These are zero based so p=0=part1, p=1=part2, e=0=element1, e=1=element2 and so on.

For 41/01/00, the ep as 01, this means this is element=0=element1 and p=1=part2. This is how I knew this information was associated with the "Normal Part Element" and was Part 2, Element 1.

I won't decode the entire stream - but will say there is an extra byte at the end before the EOX (F7) which is documented as "ccH". Again, back to page 174 - "ccH ... indicates check sums". Therefore, we get one byte of a checksum. Between the F0 and F7 all data, including the checksum, must be 7-bit. Therefore, the checksum is a 7-bit checksum. Page 176 shows "The Check sum is the value that results in a value of 0 for the lower 7 bits when the Byte Count, Start Address,
Data and Check sum itself are added." This line tells you how the checksum is calculated.

(bhH + blH + ahH + amH +alH + ddH + .. ddH (all data returned) + ccH) & 0x0000007F = 0

This is why the last byte before EOX for related parts is only off by one value. It's because all data is the same except one byte which is the part number - and this makes the sum only different by one. Therefore, the checksum will also be different by one.

It's not so important to use the checksum since you should just trust the data you're getting is fine. This is really there for software to double-check for corruption. It is important to realize the byte before the F7 (EOX) is not part of the data returned.

I realize I answered more than your question - and I've likely summarized similar information elsewhere. It's a fairly complete view of how to use the data list for interpreting a dump request. See page 176 "3-5-5 DUMP REQUEST" for the command which I use to make Montage dump this information (or use the .X7B mechanism). The "n" in 2n is documented as the "Device Number". It's fine to use "0" here. There's documentation which shows the device receives in "omni" - so any value for "n" (0-F) should work.

 
Posted : 11/11/2016 8:34 am
Share:

© 2024 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us