From: Frankie F. <jsy...@te...> - 2011-09-26 23:01:03
|
I am improving the TX81z driver so that you can request individual patches, banks and performances. This is using the midi remote control button presses to simulate the user selecting the patch/performance. To get a performance out, I think its unavoidable that some sysex that I don't need gets transmitted on the way. What do you reckon is the best way to discard sysex? The way patch reception works is that the SysexGetDialog clears the sysex input queue then fires off the midi sysex message(s) that the driver creates. When the user clicks accept, it then pastes any received data into the patch array, which on the way calls createPatches which can be overridden by the driver. So my two options are: * clear the sysex input queue within the driver after I have triggered the extraneous sysex however I think this may introduce a race condition as to whether the sysex gets picked up into the input queue or not. Also the function to clearthe input queue is not visible outside the package (although this could of course be changed). * the alternative could be to override createPatches and write something to discard the extraneous sysex there. any thoughts? frankie |
From: Martin T. <m.t...@zo...> - 2011-09-26 23:36:31
Attachments:
4op_info.txt
|
On Tue, 27 Sep 2011, Frankie Fisher wrote: > I am improving the TX81z driver so that you can request individual > patches, banks and performances. This is using the midi remote control > button presses to simulate the user selecting the patch/performance. Why are you use remote control button presses to request a dump ? IMO this is an ugly method. Those messages are not invented for this purpose. Why don't you use real dump request messages ? Don't tell me you don't know these ? They are much easier to use. And for example the request message for a 32-patch bankdump is the same for the DX100/27/21, DX11, and TX81Z. I'm attaching a little doc that I wrote long ago, when I developed YSEDITOR PLUS for Atari computers ( http://yseditor.atari.org ). It's about SysEx messages for the Yamaha 4-op FM synths. -- MT |
From: Frankie F. <jsy...@te...> - 2011-09-27 00:10:58
|
On 27/09/2011 00:36, Martin Tarenskeen wrote: > > > On Tue, 27 Sep 2011, Frankie Fisher wrote: > >> I am improving the TX81z driver so that you can request individual >> patches, banks and performances. This is using the midi remote control >> button presses to simulate the user selecting the patch/performance. > > Why are you use remote control button presses to request a dump ? IMO > this is an ugly method. Those messages are not invented for this > purpose. Why don't you use real dump request messages ? Don't tell me > you don't know these ? They are much easier to use. And for example > the request message for a 32-patch bankdump is the same for the > DX100/27/21, DX11, and TX81Z. > > I'm attaching a little doc that I wrote long ago, when I developed > YSEDITOR PLUS for Atari computers ( http://yseditor.atari.org ). It's > about SysEx messages for the Yamaha 4-op FM synths. > Thanks for the doc - seems to be basically the same as the tx81z manual. The "usability" problems with the tx81z driver that I am solving are all to do with allowing the user to dump/request one patch/performance at a time without having to get request an entire bank: 1) not possible to request individual patches without front panel interaction (i.e. switching to patch to trigger the VCED dump) 2) not possible to request a specific bank I/A/B/C/D without front panel interaction (i.e. Voice Trans function in util menu) 3) current driver doesn't support performances at all. I haven't done anything about 1) yet, but I don't believe there is a way to request individual patches without remote control functionality. I intend to solve this by updating the programme change table so that it includes the patch I am after, doing a programme change to that patch, then remote controling the play/perform button to make it transmit the VCED data. Also I'm not convinced that the single patch store functionality in the TX81z driver is correct so if it turns out to be wrong after I do some testing on it I intend to make this operate similarly. 2) When you send the 32-patch VMEM dump message (F0,43,2n,04,F7) I presume it sends in return bank I. But there are a total of 160 patches including the factory banks A-D, and some users might want to dump banks A-D themselves. So I have implemented remote control functionality which accesses the bank Voice Trans function from the utility menu to dump any of the banks. This is in SVN at the moment. 3) PMEM request dumps (and presumably stores) all performances, but there is no remote method to request or store an individual performance apart from using remote control functionality. so tonight I have been working on the remote control functionality to do this. If there are any methods to carry out these operations without resorting to the remote control commands it would be great if you let me know! thanks, frankie |
From: Frankie F. <jsy...@te...> - 2011-09-28 23:51:36
|
On 27/09/2011 00:00, Frankie Fisher wrote: > I am improving the TX81z driver so that you can request individual > patches, banks and performances. This is using the midi remote control > button presses to simulate the user selecting the patch/performance. > > To get a performance out, I think its unavoidable that some sysex that I > don't need gets transmitted on the way. What do you reckon is the best > way to discard sysex? > > The way patch reception works is that the SysexGetDialog clears the > sysex input queue then fires off the midi sysex message(s) that the > driver creates. When the user clicks accept, it then pastes any received > data into the patch array, which on the way calls createPatches which > can be overridden by the driver. > > So my two options are: > * clear the sysex input queue within the driver after I have triggered > the extraneous sysex however I think this may introduce a race condition > as to whether the sysex gets picked up into the input queue or not. Also > the function to clearthe input queue is not visible outside the package > (although this could of course be changed). > * the alternative could be to override createPatches and write something > to discard the extraneous sysex there. > > I had a better idea: I'll create a method in the driver base class "TrimReceivedPatch" or something like that that accepts some sysex and is called by the patch get dialogue before pasting the patch into the library. Normally it will return its input but the TX81z performance driver can override this and skip over the sysex message we don't want. frankie |