Sysex data request for Temporary Tone Part Name
Re: Sysex data request for Temporary Tone Part Name
Wow, looking great!
Indeed there are so many options inside the Integra that it consumes lots of time and sometimes you just have to take a brake from a project.
I attached the files for the Pitch Envelope control, hope you can make any sense out of it. :)
Indeed there are so many options inside the Integra that it consumes lots of time and sometimes you just have to take a brake from a project.
I attached the files for the Pitch Envelope control, hope you can make any sense out of it. :)
- Attachments
-
- MainWindow.xaml.txt
- The main test window, how to use the control in a project. (values are not bound, just test values)
- (1.22 KiB) Downloaded 262 times
-
- LimitedPoint.cs.txt
- From the control libray, used to define a point with min & max values for drawing.
- (1003 Bytes) Downloaded 253 times
-
- Generic.xaml.txt
- From the control library, the generic style, WPF automatically reads the generic.xaml file for a control library.
- (1.89 KiB) Downloaded 241 times
-
- PitchEnvelopeControl.cs.txt
- From the control library, the actual control code.
- (23.47 KiB) Downloaded 252 times
Re: Sysex data request for Temporary Tone Part Name
I've been looking at your files and I noticed they are very structured and readable.
One thing I like a lot is that you use the width of present monitors (more than 80 columns for text), something I hardly ever see. Very nice.
Here is a captured sysex that came up when writing set/tone/kit.
One thing I like a lot is that you use the width of present monitors (more than 80 columns for text), something I hardly ever see. Very nice.
Here is a captured sysex that came up when writing set/tone/kit.
Code: Select all
F0 41 10 00 00 64 11 0F 00 10 00 mm ll pp nn cc F7 - Write Set/Tone/Kit
mm = 55 = Studio set
mm = 56 = PCM drumkit
mm = 57 = PCM-synth tone
mm = 58 = SN drumkit
mm = 59 = SN-acoustic tone
mm = 5F = SN-synth tone
ll pp = Number of user memory
nn = Part number - 1 for tones/kits, 7F for studio sets
cc = checksum
The Integra responds with:
F0 41 10 00 00 64 12 0F 00 10 01 00 00 00 mm ll pp nn cc F7
Then when writing studio set:
F0 41 10 00 00 64 12 01 00 00 04 mm ll pp cc F7
Or when writing tone/kit
F0 41 10 00 00 64 12 18 00 2x 06 mm ll pp cc F7
x = part number
Last response:
F0 41 10 00 00 64 12 0F 00 10 02 00 00 00 mm ll pp nn cc F7
Re: Sysex data request for Temporary Tone Part Name
I try to comment my code as much as possible and use long descriptive variable names which is tedious when writing, sometimes commenting takes more time than writing code. But I can leave my code for a week and jump right back in. Also in visual studio the <summary> tags are automatically exported to create a documentation file.
I posted some code attachments that I use to obtain and handle tone banks from the Integra.
For now I use static tone banks, but probably gonna convert this to use a backend database.
By the way, I use midi-dot-net from github for my MIDI interaction.
I have one question about the 'pp' when using PCM / SNA / SNS the range of user tones exceeds 127 aka 7F.
So for PCM usertone range 128 - 255 the request will be 12 pp ?
I posted some code attachments that I use to obtain and handle tone banks from the Integra.
For now I use static tone banks, but probably gonna convert this to use a backend database.
By the way, I use midi-dot-net from github for my MIDI interaction.
I have one question about the 'pp' when using PCM / SNA / SNS the range of user tones exceeds 127 aka 7F.
So for PCM usertone range 128 - 255 the request will be 12 pp ?
- Attachments
-
- ApplicationUsage.txt
- Partial code how to use it in an application.
- (1.47 KiB) Downloaded 253 times
-
- IntegraSystemExclusive.cs.txt
- System exclusive structure.
- (7.78 KiB) Downloaded 262 times
-
- IntegraToneLists.cs.txt
- Stores tones for use in the application.
- (3.27 KiB) Downloaded 249 times
-
- IntegraBaseStructure.cs.txt
- Base for IntegraToneLists.
- (4.82 KiB) Downloaded 262 times
Re: Sysex data request for Temporary Tone Part Name
Same here, but I try to find as short as possible variable names that are still descriptive. Doesn't always work well though. Also I try to write code as simple as possible.XLars wrote:I try to comment my code as much as possible and use long descriptive variable names which is tedious when writing, sometimes commenting takes more time than writing code. But I can leave my code for a week and jump right back in.
I will definitely have a look at the code in 2 weeks, for now I'm busy preparing for my holidays that start next week :-)XLars wrote:I posted some code attachments that I use to obtain and handle tone banks from the Integra.
For now I use static tone banks, but probably gonna convert this to use a backend database.
I'm using a slightly altered version of pyportmidi, a wrapper for portmidi.XLars wrote: By the way, I use midi-dot-net from github for my MIDI interaction.
ll = lower case LL.XLars wrote:I have one question about the 'pp' when using PCM / SNA / SNS the range of user tones exceeds 127 aka 7F.
So for PCM usertone range 128 - 255 the request will be 12 pp ?
The request is 00 pp, 01 pp, 02 pp, 03 pp to get a range of 512.
Re: Sysex data request for Temporary Tone Part Name
Not the first time I mess up 1's and l's with with that font type. :)
Thanks and enjoy your holliday.
Thanks and enjoy your holliday.
Re: Sysex data request for Temporary Tone Part Name
In addition to my earlier post, how to get the frequency for the master tune, I found a way to convert the frequency value back to the system exclusive data part.
Using the result:
F0 41 10 00 00 64 11 - 02 00 00 00 - aa bb cc dd - checksum F7
Earlier post, getting the frequency:
https://forums.rolandclan.com/viewtopic ... 15#p314245
Code: Select all
// Bytes to store the result.
byte aa, bb, cc, dd;
// Replace with the frequency from your UI.
double frequency = 440.0;
// Gets the cents from the frequency (divided by 100!)
var cents = 12 * (Math.Log(frequency / 440) / Math.Log(2));
// Converts the cents to the MIDI range 24..2024
int midiValue= (int)((cents * 1000) + 1024);
// Limit the midiValue to be in range, because max 466.2 Hz and min 415.3 Hz are just outside the MIDI bounds.
midiValue= Math.Min(midiValue, 2024);
midiValue= Math.Max(midiValue, 24);
// Store the midi value in the byte array, the reversed process of my earlier post.
aa = (byte)((midi >> 12) & 0x0F);
bb = (byte)((midi >> 8) & 0x0F);
cc = (byte)((midi >> 4) & 0x0F);
dd = (byte)(midi & 0x0F);
F0 41 10 00 00 64 11 - 02 00 00 00 - aa bb cc dd - checksum F7
Earlier post, getting the frequency:
https://forums.rolandclan.com/viewtopic ... 15#p314245
Re: Sysex data request for Temporary Tone Part Name
I have a question, I'm struggling with the Studio Set Common Chorus.
The parameters 1 to 20 are shared based on the chorus types (Off, Chorus, Delay, GM2 Chorus).
In my application I read the complete range as described in the MIDI implementation and for example, the chorus type is currently set to 'Delay'.
Now I change the 'Delay Left' paramater to for example 1000[msec].
The 'Delay Left' parameter is parameter # 2.
The problem is, when I switch the chorus type in my application to 'Chorus' and reread the parameters from the Integra, parameter #2 is out of range because it is bound to the 'Cutoff Freq' and it's range way smaller than the 'Delay Left'.
If I do the same steps on the Integra itself, there is no problem, e.g. the numbers are stored in between changes of the chorus type.
Any idea?
The parameters 1 to 20 are shared based on the chorus types (Off, Chorus, Delay, GM2 Chorus).
In my application I read the complete range as described in the MIDI implementation and for example, the chorus type is currently set to 'Delay'.
Now I change the 'Delay Left' paramater to for example 1000[msec].
The 'Delay Left' parameter is parameter # 2.
The problem is, when I switch the chorus type in my application to 'Chorus' and reread the parameters from the Integra, parameter #2 is out of range because it is bound to the 'Cutoff Freq' and it's range way smaller than the 'Delay Left'.
If I do the same steps on the Integra itself, there is no problem, e.g. the numbers are stored in between changes of the chorus type.
Any idea?
Re: Sysex data request for Temporary Tone Part Name
Hi, I'm back again. :-)
I had the same problem with common chorus, reverb and multiFX. My present solution is to store the data in my program, keep it updated and read it from there when needed.
It's not the most elegant way, but it works.
I had the same problem with common chorus, reverb and multiFX. My present solution is to store the data in my program, keep it updated and read it from there when needed.
It's not the most elegant way, but it works.
Re: Sysex data request for Temporary Tone Part Name
Welcome back and thanks for your answer.
I'll have to do as you described (I thought so alread), for chorus and reverb it's ok, but for the MFX it's less pretty, never mind.
I was able to implement the loading of expansions you posted, working great.
Is it possible to request which expansion boards are currently loaded?
Also is it possible to get the tone names of the expansions which are not loaded?
Currently I am able to get the tone names of the expansions if they are loaded, but on the Integra in the expansion window you are able to get the tones when clicking on the 'INOF/LIST' button even if they are not loaded.
I'll have to do as you described (I thought so alread), for chorus and reverb it's ok, but for the MFX it's less pretty, never mind.
I was able to implement the loading of expansions you posted, working great.
Is it possible to request which expansion boards are currently loaded?
Also is it possible to get the tone names of the expansions which are not loaded?
Currently I am able to get the tone names of the expansions if they are loaded, but on the Integra in the expansion window you are able to get the tones when clicking on the 'INOF/LIST' button even if they are not loaded.
Re: Sysex data request for Temporary Tone Part Name
Yes, that's possible. Here are all the sysex's (AFAIK) you can use with expansions in 1 list.XLars wrote:I was able to implement the loading of expansions you posted, working great.
Is it possible to request which expansion boards are currently loaded?
Code: Select all
Get loaded exp : F0 41 10 00 00 64 11 0F 00 00 10 00 00 00 00 7E F7
From Integra : F0 41 10 00 00 64 12 0F 00 00 10 aa bb cc dd 61 F7
Load exp : F0 41 10 00 00 64 11 0F 00 30 00 aa bb cc dd ss F7
From Integra : F0 41 10 00 00 64 12 0F 00 30 01 00 00 00 00 40 F7 start loading
From Integra : F0 41 10 00 00 64 12 0F 00 30 02 00 00 00 00 3F F7 finished loading
Get startup exp : F0 41 10 00 00 64 11 0F 00 00 11 00 00 00 00 60 F7
From Integra : F0 41 10 00 00 64 12 0F 00 00 11 aa bb cc dd ss F7
Set startup exp : F0 41 10 00 00 64 12 0F 00 00 11 aa bb cc dd ss F7
aa = expansion virtual slot A
bb = expansion virtual slot B
cc = expansion virtual slot C
dd = expansion virtual slot D
ss = checksum
aa, bb, cc, dd value:
00 = OFF
01 = SRX-01
02 = SRX-02
03 = SRX-03
04 = SRX-04
05 = SRX-05
06 = SRX-06
07 = SRX-07
08 = SRX-08
09 = SRX-09
0A = SRX-10
0B = SRX-11
0C = SRX-12
0D = ExSN1
0E = ExSN2
0F = ExSN3
10 = ExSN4
11 = ExSN5
12 = ExSN6
13 = ExPCM
That's weird, I didn't even know about that option. LOL.XLars wrote: Also is it possible to get the tone names of the expansions which are not loaded?
Currently I am able to get the tone names of the expansions if they are loaded, but on the Integra in the expansion window you are able to get the tones when clicking on the 'INOF/LIST' button even if they are not loaded.
I never found a list of those names when scanning the Integra, so I guess it's not there.
BTW. The "get names.txt" I posted before is not complete, it doesn't hold sysex's that read the names of the SRX expansions (when loaded). You might have noticed that and already added them, otherwise I can complete it, I just didn't get to it yet.
Re: Sysex data request for Temporary Tone Part Name
Great, my loading of expansions is now fully implemented and I implemented a keyboard control (which I attached as text file.)
But that's not working. :(
Sometimes I think I get the logic, but Integra says no. LOL
I also noticed all these neat functions are in the 0F range, I get it that you can request a full range of data but figuring out what they mean is quite difficult.
btw. I found a good freeware hex editor for viewing ranges of data.
https://mh-nexus.de/en/hxd/
Maybe it's useful for you, but propably already got one.
I noticed the SRX are missing, my guess range was, referencing the list you posted:BTW. The "get names.txt" I posted before is not complete, it doesn't hold sysex's that read the names of the SRX expansions (when loaded). You might have noticed that and already added them, otherwise I can complete it, I just didn't get to it yet.
Code: Select all
0F 00 04 02 57 60 .. ..
Sometimes I think I get the logic, but Integra says no. LOL
I also noticed all these neat functions are in the 0F range, I get it that you can request a full range of data but figuring out what they mean is quite difficult.
btw. I found a good freeware hex editor for viewing ranges of data.
https://mh-nexus.de/en/hxd/
Maybe it's useful for you, but propably already got one.
- Attachments
-
- KeyboardControlWPF.txt
- WPF Keyboard control implementation.
- (10.46 KiB) Downloaded 251 times
Re: Sysex data request for Temporary Tone Part Name
Keep on going :-)XLars wrote:Great, my loading of expansions is now fully implemented and I implemented a keyboard control (which I attached as text file.)
There is some logic in it but you have to be aware that the functions in the 0F range don't seem to follow the standard protocol of requesting "address ranges".XLars wrote:Sometimes I think I get the logic, but Integra says no. LOL
If you look closely to the "address range", you'll find that, in this case, the second part represents the "Bank select MSB/LSB" and "Program change" values.
0F = Special functions
00 = ??
04 = ?? tone
02 = ?? get names
57 = BS MSB
00 = BS LSB
00 = PC start point
40 = nr of names to get
I added an updated "get names.txt" file, hope it's complete now.
Yes, all the functions are in the 0F ranges.XLars wrote:I also noticed all these neat functions are in the 0F range, I get it that you can request a full range of data but figuring out what they mean is quite difficult.
No, you can't request a full range in this case.
I assume these functions were added for communication between the Integra and the software editor.
There are other functions that seem to do someting, but I didn't figure them out completely yet. Some have to do with used and/or unused "user memory" places.
Thanks for sharing, but I only use Linux and Mac, Windows software won't run on my systems. Others might find it very useful though.XLars wrote:btw. I found a good freeware hex editor for viewing ranges of data.
https://mh-nexus.de/en/hxd/
Maybe it's useful for you, but propably already got one.
- Attachments
-
- Roland integra - get names.txt
- (14.38 KiB) Downloaded 251 times
Re: Sysex data request for Temporary Tone Part Name
Yes, the list is complete thanks.I added an updated "get names.txt" file, hope it's complete now.
There is one little mistake in the list for ExSN6:
F0 41 10 00 00 64 11 0F 00 04 02 59 65 00 07 7F F7
Which should be:
F0 41 10 00 00 64 11 0F 00 04 02 58 65 00 07 7F F7
No complaint, just for consistency :). LOL
When setting the default startup expansions, they get set on the Integra but on power down and up again they are lost.
Probably have to send a system write message?
Re: Sysex data request for Temporary Tone Part Name
Thanks for letting me know, it's so easy to make mistakes when dealing with a lot of numbers.XLars wrote: There is one little mistake in the list for ExSN6:
F0 41 10 00 00 64 11 0F 00 04 02 59 65 00 07 7F F7
Which should be:
F0 41 10 00 00 64 11 0F 00 04 02 58 65 00 07 7F F7
No complaint, just for consistency :). LOL
The file has been updated.
I'm still trying to find the system write message. The official software has no option for even setting the startup expansions so it might not be there at all. For now just have to do a manual system write.XLars wrote: When setting the default startup expansions, they get set on the Integra but on power down and up again they are lost.
Probably have to send a system write message?
Re: Sysex data request for Temporary Tone Part Name
That's ok, probably not gonna use it much anyway.
I probably store it in my librarian to auto load when I switch studio sets.
I post my project as a zip file, you are probably not be able to run it, but you can view the .cs code files.
I probably store it in my librarian to auto load when I switch studio sets.
I post my project as a zip file, you are probably not be able to run it, but you can view the .cs code files.
- Attachments
-
- Integra.zip
- Integra Librarian
- (4.5 MiB) Downloaded 260 times