Sysex data request for Temporary Tone Part Name
Re: Sysex data request for Temporary Tone Part Name
Request
F0 41 10 00 00 64 11 - 18 00 20 06 - 00 00 00 02 - 40 F7
This will return the MSB / LSB to select the tone of part 1 which is different for each tone/drum type.
SN-A User returns 89 00
SN-A Preset returns 89 64
SN-S User returns 95 00
SN-S Preset returns 95 64
SN-D User returns 88 00
SN-D Preset return 88 64
PCM-S User returns 87 00
PCM-S Preset returns 87 64
Now I have a request to, does anyone of you know how to retreive a list of all user patch names?
If anyone is interested in getting the right master tune frequency values I can show it to you in C# code.
Took me 2 days to figure it out.
F0 41 10 00 00 64 11 - 18 00 20 06 - 00 00 00 02 - 40 F7
This will return the MSB / LSB to select the tone of part 1 which is different for each tone/drum type.
SN-A User returns 89 00
SN-A Preset returns 89 64
SN-S User returns 95 00
SN-S Preset returns 95 64
SN-D User returns 88 00
SN-D Preset return 88 64
PCM-S User returns 87 00
PCM-S Preset returns 87 64
Now I have a request to, does anyone of you know how to retreive a list of all user patch names?
If anyone is interested in getting the right master tune frequency values I can show it to you in C# code.
Took me 2 days to figure it out.
Re: Sysex data request for Temporary Tone Part Name
Hi XLars,
I included a text file with sysex messages you can use to retrieve all tone/kit/set names on the Integra, both user and preset. Btw, I think patch = tone?
As for the master tune, in my programs I use -100.0 ~ +100.0 cent, so no exact frequency values, but I would love to see your code and learn from it.
I included a text file with sysex messages you can use to retrieve all tone/kit/set names on the Integra, both user and preset. Btw, I think patch = tone?
As for the master tune, in my programs I use -100.0 ~ +100.0 cent, so no exact frequency values, but I would love to see your code and learn from it.
- Attachments
-
- Roland integra - get names.txt
- (8.02 KiB) Downloaded 313 times
Re: Sysex data request for Temporary Tone Part Name
Thanks! Wonderer.
You saved me a lot of guessing, excellent.
Now below the code to get the Master Tune in herz.
The request:
F0 41 10 00 00 64 11 - 02 00 00 00 - 00 00 00 2F - 4F F7
Returns the System Common data, where the first 4 bytes present the Master Tune.
I put the first 4 received bytes of the Master Tune in in a byte array called 'data' in this example.
Values in the example are hard coded.
Now we only need the lower nibble from each byte following the MIDI implementation guide.
To extract these, i mask the bytes with 0x0F.
Now the new 'nibbles' have to be converted to 'Cents' which is NOT percents.
Now the 'Cents' can be converted to the frequency in herz where 440[Hz] equals 0 'Cents'.
And to put it in the same format as on the INTEGRA-7;
That's it, hope it helps, took me some time to get it but i'm no professional programmer.
You saved me a lot of guessing, excellent.
Now below the code to get the Master Tune in herz.
The request:
F0 41 10 00 00 64 11 - 02 00 00 00 - 00 00 00 2F - 4F F7
Returns the System Common data, where the first 4 bytes present the Master Tune.
I put the first 4 received bytes of the Master Tune in in a byte array called 'data' in this example.
Values in the example are hard coded.
Code: Select all
// Example data, must be replaced by the received bytes.
data[0] = 0x00
data[1] = 0x04
data[2] = 0x0F
data[3] = 0x0F
To extract these, i mask the bytes with 0x0F.
Code: Select all
// Example:
// 0x00 0x04 0x0F 0x0F
// | | | |
// & & & &
// 0x0F 0x0F 0x0F 0x0F
// | | | |
// 0 4 F F => 0x04 0xFF
// Actual C# code
int nibbles = ((data[0] & 0x0F) << 12 | (data[1] & 0x0F) << 8 | (data[2] & 0x0F) << 4 | (data[3] & 0x0F));
Code: Select all
// Actual C# code
double cents = ((double)nibbles - 1024) / 1000;
Code: Select all
// Actual c# code
herz = Math.Pow(2, (cents / 12)) * 440;
Code: Select all
Console.WriteLine(herz.ToString("0.0") + "[Hz]");
Code: Select all
// Has to be filled with the actual received data!
byte data = new byte[4]
int nibbles = ((data[0] & 0x0F) << 12 | (data[1] & 0x0F) << 8 | (data[2] & 0x0F) << 4 | (data[3] & 0x0F));
double cents = ((double)nibbles - 1024) / 1000;
herz = Math.Pow(2, (cents / 12)) * 440;
Console.WriteLine(herz.ToString("0.0") + "[Hz]");
Re: Sysex data request for Temporary Tone Part Name
Thanks XLars.
I converted your code to python to fit my Integra editor and it works perfectly.
Keep in mind that editing:
- on the hardware results in 509 steps to go from 415.3 to 466.2 Herz.
- through MIDI there are 2000 steps available for the same range.
So using MIDI is more precise, but then you'll need to round to hundredths or you'll end up with a lot of double numbers.
Btw, I'm no professional programmer either, I just do it for fun.
I converted your code to python to fit my Integra editor and it works perfectly.
Keep in mind that editing:
- on the hardware results in 509 steps to go from 415.3 to 466.2 Herz.
- through MIDI there are 2000 steps available for the same range.
So using MIDI is more precise, but then you'll need to round to hundredths or you'll end up with a lot of double numbers.
Btw, I'm no professional programmer either, I just do it for fun.
Re: Sysex data request for Temporary Tone Part Name
Can anyone explain the address part of this system exclusive.
It requests the preset PCM Tone Names 0..63 I got it from the list Wonderer posted, working like a charm by the way.
From the MIDI implementation I don't get how address is obtained [0F 00 04 02] to retreive the tone names.
F0 41 10 00 00 64 11 [ 0F 00 04 02 ] 57 40 00 40 7F F7
I get the last part where 57 is the PCM Tones, 40 is the preset range and the last 40 is the number of names to retreive.
What i'm trying to do is get the tone category as well.
Any help is welcome.
It requests the preset PCM Tone Names 0..63 I got it from the list Wonderer posted, working like a charm by the way.
From the MIDI implementation I don't get how address is obtained [0F 00 04 02] to retreive the tone names.
F0 41 10 00 00 64 11 [ 0F 00 04 02 ] 57 40 00 40 7F F7
I get the last part where 57 is the PCM Tones, 40 is the preset range and the last 40 is the number of names to retreive.
What i'm trying to do is get the tone category as well.
Any help is welcome.
Re: Sysex data request for Temporary Tone Part Name
Last year I attempted to find all undocumented sysex messages available on the Integra.
I made software to scan all the addresses possible and this is part of the results I found.
That's how the addresses are obtained.
Now for the tone category:
AFAIK, the category is included in the response from the Integra when using the sysex's in the list I posted before, although the numbers seem to be off. It seems that Roland simplified the category list some day and the Integra uses both the old and new lists.
* I included a text file with a list of old and new categories side by side.
With sysex's, the Integra mostly uses the OLD list, but when we use the '0F 00 XX XX' it uses the NEW list.
Take this as example:
F0 41 10 00 00 64 11 0F 00 04 02 57 40 3D 01 7F F7
Integra responds with:
0F 00 04 02 57 40 3D [ 19 ] 00 50 6F 6C 79 20 4B 65 79 20 20 20 20 20 20 20 20 11 F7
The number 0x19 in the response is the category in the NEW list. This equals 0x26 in the OLD list.
Hope this helps.
I made software to scan all the addresses possible and this is part of the results I found.
That's how the addresses are obtained.
Now for the tone category:
AFAIK, the category is included in the response from the Integra when using the sysex's in the list I posted before, although the numbers seem to be off. It seems that Roland simplified the category list some day and the Integra uses both the old and new lists.
* I included a text file with a list of old and new categories side by side.
With sysex's, the Integra mostly uses the OLD list, but when we use the '0F 00 XX XX' it uses the NEW list.
Take this as example:
F0 41 10 00 00 64 11 0F 00 04 02 57 40 3D 01 7F F7
Integra responds with:
0F 00 04 02 57 40 3D [ 19 ] 00 50 6F 6C 79 20 4B 65 79 20 20 20 20 20 20 20 20 11 F7
The number 0x19 in the response is the category in the NEW list. This equals 0x26 in the OLD list.
Hope this helps.
- Attachments
-
- Integra category list.txt
- (1.95 KiB) Downloaded 321 times
Re: Sysex data request for Temporary Tone Part Name
Yes this helped a lot, so I could never have found it using the provided MIDI implementation.
Quite impressive that you wrote a program to scan all addresses.
I think it's even possible to write to the LCD screen.
I also have a SoundCanvas 88-Pro, in early days a friend of my neighbour made a program to draw on it's LCD screen. He made a paint program which updated the LCD screen in realtime, pretty funny.
Thanks again for your reply.
Quite impressive that you wrote a program to scan all addresses.
I think it's even possible to write to the LCD screen.
I also have a SoundCanvas 88-Pro, in early days a friend of my neighbour made a program to draw on it's LCD screen. He made a paint program which updated the LCD screen in realtime, pretty funny.
Thanks again for your reply.
Re: Sysex data request for Temporary Tone Part Name
You're welcome.
Most MIDI implementations are limited to the stuff you can use in a sequencer. The stuff you would need for creating your own editor/library-software is mostly undocumented. AFAIK, this goes for most manufacturers.
There are other undocumented sysex's that deal with:
Most MIDI implementations are limited to the stuff you can use in a sequencer. The stuff you would need for creating your own editor/library-software is mostly undocumented. AFAIK, this goes for most manufacturers.
There are other undocumented sysex's that deal with:
- - expansions
- stored user tones/kits/sets
- preview tone
- storing edit buffer
- ?
Re: Sysex data request for Temporary Tone Part Name
Yes, i'm really interested in those, your posts are a big help to me trying to make a librarian as well.
It's really a downer that Roland only supplies the editor for Apple devices and not Android devices. Also the Windows version is bound to Cakewalk, which I like as MIDI editor though, but I don't like the Integra plugin.
But that said, it's also fun trying to write your own.
It's really a downer that Roland only supplies the editor for Apple devices and not Android devices. Also the Windows version is bound to Cakewalk, which I like as MIDI editor though, but I don't like the Integra plugin.
But that said, it's also fun trying to write your own.
Re: Sysex data request for Temporary Tone Part Name
I agree, that's very much fun to do.But that said, it's also fun trying to write your own.
Documentation:
Things to keep in mind about the Integra (and most likely all Roland hardware):
- When doing a data request, it doesn't care about the value of the checksum.
- It allows you to ask for all used parameters in a given address range.
Example:
Code: Select all
address length
F0 41 10 00 00 64 11 01 00 00 00 00 00 00 38 7F F7 - get setup with proper length
F0 41 10 00 00 64 11 01 00 00 00 01 00 00 00 7F F7 - get setup until system
F0 41 10 00 00 64 11 02 00 00 00 01 00 00 00 7F F7 - get system
F0 41 10 00 00 64 11 01 00 00 00 02 00 00 00 7F F7 - get setup and system
The second line uses the range from setup until system.
Both result in the same answer from the Integra.
The third line uses the range from system until far beyond the end of system.
The fourth line results in the Integra sending both setup and system parameters.
This shows that the Integra will only send the used parameters in a range, and this range can be huge. It always sends in the format and lengths given in the MIDI implementation.
Another example:
Code: Select all
address length
F0 41 10 00 00 64 11 18 00 00 00 01 00 00 00 7F F7 - get temporary studio set
F0 41 10 00 00 64 11 19 00 00 00 04 00 00 00 7F F7 - get all tones in studio set
F0 41 10 00 00 64 11 18 00 00 00 05 00 00 00 7F F7 - get temporary studio set + all tones
viewtopic.php?f=54&t=55023#p310467
That's it for today, the rest will follow soon.
Re: Sysex data request for Temporary Tone Part Name
Thanks!!
This should keep me busy for a while.
By the way, I don't know if you noticed that the GM2 tone request is missing the last tone variations.
You probably never gonna use them, Laser Gun nor Explosion, just for consistency I got them by the following request:
F0 41 10 00 00 64 11 0F 00 04 02 79 02 7F 02 7F F7
This should keep me busy for a while.
By the way, I don't know if you noticed that the GM2 tone request is missing the last tone variations.
You probably never gonna use them, Laser Gun nor Explosion, just for consistency I got them by the following request:
F0 41 10 00 00 64 11 0F 00 04 02 79 02 7F 02 7F F7
Re: Sysex data request for Temporary Tone Part Name
Thanks for informing me about this. It's a nice example of how a messy documentation can lead to errors. I already fixed this in the past, but forgot to delete the faulty part.By the way, I don't know if you noticed that the GM2 tone request is missing the last tone variations.
My solution at the time was to split it into 4 sysex messages and I put that in the newly attached text file, but your solution also works perfectly.
- Attachments
-
- Roland integra - get names.txt
- (8.29 KiB) Downloaded 272 times
Re: Sysex data request for Temporary Tone Part Name
Here is something that's very nice to use in your own software. It imitates pressing the volume button on the Integra to hear a preview of a part.
I put the correct checksums in this time, although I don't think the Integra cares about the values in these messages.
When switching preview parts, always send an "off" message in between, otherwise it doesn't work properly.
I put the correct checksums in this time, although I don't think the Integra cares about the values in these messages.
When switching preview parts, always send an "off" message in between, otherwise it doesn't work properly.
Code: Select all
Preview off F0 41 10 00 00 64 12 0F 00 20 00 00 51 F7
Preview part 1 F0 41 10 00 00 64 12 0F 00 20 00 01 50 F7
Preview part 2 F0 41 10 00 00 64 12 0F 00 20 00 02 4F F7
Preview part 3 F0 41 10 00 00 64 12 0F 00 20 00 03 4E F7
Preview part 4 F0 41 10 00 00 64 12 0F 00 20 00 04 4D F7
Preview part 5 F0 41 10 00 00 64 12 0F 00 20 00 05 4C F7
Preview part 6 F0 41 10 00 00 64 12 0F 00 20 00 06 4B F7
Preview part 7 F0 41 10 00 00 64 12 0F 00 20 00 07 4A F7
Preview part 8 F0 41 10 00 00 64 12 0F 00 20 00 08 49 F7
Preview part 9 F0 41 10 00 00 64 12 0F 00 20 00 09 48 F7
Preview part 10 F0 41 10 00 00 64 12 0F 00 20 00 0A 47 F7
Preview part 11 F0 41 10 00 00 64 12 0F 00 20 00 0B 46 F7
Preview part 12 F0 41 10 00 00 64 12 0F 00 20 00 0C 45 F7
Preview part 13 F0 41 10 00 00 64 12 0F 00 20 00 0D 44 F7
Preview part 14 F0 41 10 00 00 64 12 0F 00 20 00 0E 43 F7
Preview part 15 F0 41 10 00 00 64 12 0F 00 20 00 0F 42 F7
Preview part 16 F0 41 10 00 00 64 12 0F 00 20 00 10 41 F7
Re: Sysex data request for Temporary Tone Part Name
That's realy great, getting the first sounds from my librarian, THANKS!
I attached an image with the overall layout of my librarian, just functional, not styled yet.
Also attached an image of my Pitch envelope control which binds to the envelop time 1-4 & envelop level 0-4.
If you like I can send you the code of the pitch envelope control, to give some in return to all your help, although it is build in C# as WPF custom control and not Pyton.
I attached an image with the overall layout of my librarian, just functional, not styled yet.
Also attached an image of my Pitch envelope control which binds to the envelop time 1-4 & envelop level 0-4.
If you like I can send you the code of the pitch envelope control, to give some in return to all your help, although it is build in C# as WPF custom control and not Pyton.
- Attachments
-
- Pitch envelope control with draggable points.
- PitchEnvelopeControl.jpg (36.83 KiB) Viewed 6284 times
-
- Overall librarian layout in WPF, MDI style windows, not styled yet.
- Layout.jpg (470.63 KiB) Viewed 6284 times
Re: Sysex data request for Temporary Tone Part Name
As I said before; I would love to read your code. Even if I can't use it, I can learn from it.If you like I can send you the code of the pitch envelope control, to give some in return to all your help, although it is build in C# as WPF custom control and not Pyton.
My platform is Linux. Sometimes I use C++ for programs that need more speed than python can provide, but I prefer python. I use wxWidgets as GUI with a lot of custom controls.
My project is a mixer/editor/librarian for the Integra but at the moment it's a sleeping project. At some time I will pick it up again but I doubt if I will ever finish it. ;-)
Here's a screenshot of what the main screen looks like at the moment.
- Attachments
-
- Integra.jpg (327.43 KiB) Viewed 6278 times