asb2m10 / dexed

DX7 FM multi plaform/multi format plugin
GNU General Public License v3.0
2.76k stars 240 forks source link

Support for patch request sysex #141

Open eclab opened 6 years ago

eclab commented 6 years ago

I know this is an esoteric need, but it would be nice for Dexed to respond to DUMP REQUEST, at least for for "1 voice data" (a single patch). The DX7 has no such sysex I believe, but the TX816 definitely does.

This would allow Dexed to work better with various DX7 patch editors, such as Edisyn, which have a number of exploratory patch capabilities that Dexed doesn't have on its own. It would also let Dexed work better with librarian tools. And it's a very simple sysex string.

While I have you: I am confused why the sysex input device is under the Options button, but the sysex output device is under the PARM button.

asb2m10 commented 6 years ago

Sure no problem, I'll added this to the next commit. Since I cannot test this (TX816 are a pretty rare), please built it on your side to confirm it works. Thanks.

asb2m10 commented 6 years ago

While I have you: I am confused why the sysex input device is under the Options button, but the sysex output device is under the PARM button.

The options button in the standalone application is based on the JUCE Framework. The PARM button is pure dexed.

The best would be to customized the JUCE "Options" window, but I didn't want to put too much effort since technically, JUCE should also offer the "MidiOut" on the Options button if the synth is configured to output midi data. It does not, so I need to ask the JUCE guys why it doesn't... It will be fixed once this is sortout...

eclab commented 6 years ago

I'd be happy to test, assuming I can get a binary from the commit (I'm not set up to build on my Mac). But if you wanted to beat me to it, an easy way to test it would be to hook Dexed up with Edisyn (https://github.com/eclab/edisyn/), whose DX7 patch editor was really written with the TX816 in mind. You'd need two MIDI loopback devices to hook Dexed to Edisyn. Then you just instruct Edisyn to request a patch and see if Dexed responds.

FWIW, the command for requesting a dump of the current voice patch is:

0xF0 0x43 0x2N 0x00 0xF7    [N=channel 0...15]

That's the most relevant one I guess. Others are

0xF0 0x43 0x2N 0x01 0xF7    [current performance bulk data]
0xF0 0x43 0x2N 0x02 0xF7    [64 performance bulk data]
0xF0 0x43 0x2N 0x09 0xF7    [32 voice bulk data]
0xF0 0x43 0x2N 0x7D 0xF7    [acknowledge]

On May 9, 2018, at 10:41 PM, Pascal Gauthier notifications@github.com wrote:

Sure no problem, I'll added this to the next commit. Since I cannot test this (TX816 are a pretty rare), please built it on your side to confirm it works. Thanks.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

papwalker commented 6 years ago

@asb2m10 Frresh JUCE delivered yesterday as it happens. screen shot 2018-05-10 at 5 47 42 pm screen shot 2018-05-10 at 5 43 17 pm cheers

rickyackel commented 6 years ago

The TX7 also stores 64 performance bulk data. 32 are for the ones in the TX7 and the other 32 are for the use of the DX7 so you can have it for each patch. This can get pretty confusing if you start loading other banks. I have a harmonica patch with EG Bias set to 100 to allow the breath controller to completely control the envelope of the carriers. Switch banks and that patch position might be unresponsive if it’s carriers have amp sensitivity set to full 3. Storing/sending patches in TX format is offered on the E! And they may be compatible with the classic DX7 when loaded one patch at a time. I don’t know how the DX7 deals with the 32 performances it would get from a bank dump, probably end up with performance 32. If the DX7 is hooked up to dexed, could it get the relevant performance data as it called up a patch? It would be nice to get key range involved in this so we could get real split keyboard features.

eclab commented 4 years ago

This request is over a year old, and it's an easy one. But so far as I can tell it hasn't been implemented. Could I encourage the Dexed developers to add it?

SamuelSHrk commented 4 years ago

Don't waste your time trying

SeanLuke commented 1 year ago

I'm going to try again. This request is now four years old, and it's pretty simple to implement. Dexed still does not support MIDI request sysex messages such as are found in the TX7 and TX216/816.

At the very least, could you find it in your heart to implement responses to:

F0 43 20 00 F7 "Request Current Patch" F0 43 20 09 F7 "Request Bank"

asb2m10 commented 1 week ago

I was expecting to get my hands on a TX to test this but it didn't happen. If someone with a real TX can test this, I'll be more than happy to provide a test build to confirm that it work.

probonopd commented 1 week ago

@diyelectromusic do you think we could support this on and test this with MiniDexed?

diyelectromusic commented 1 week ago

@diyelectromusic do you think we could support this on and test this with MiniDexed?

Yes I think so. I guess we have a choice. Wait for Dexed, and then wait for Synth_Dexed to catch up, and then add the remaining "glue" for it... or we could probably just spot the message ourselves and use the existing APIs in Synth_Dexed to do it too...

Of course, if someone would like to buy me a TX816 too, to ensure full compatibility... ;)

(Aside, this might mean we could drop that weird "dump SysEx on voice change" option for good...)

Kevin

eclab commented 1 week ago

One option is to try it with Edisyn, which has support for patch request sysex. Edisyn's DX7 editor was developed with a TX216.

On Jul 11, 2024, at 7:59 PM, Kevin @.***> wrote:

@diyelectromusic do you think we could support this on and test this with MiniDexed?

Yes I think so. I guess we have a choice. Wait for Dexed, and then wait for Synth_Dexed to catch up, and then add the remaining "glue" for it... or we could probably just spot the message ourselves and use the existing APIs in Synth_Dexed to do it too...

Of course, if someone would like to buy me a TX816 too, to ensure full compatibility... ;)

Kevin

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.

rickyackel commented 1 week ago

The other consideration is that the performance patche’s ranges have been adjusted in the TX. The comment about having a eg bias setting of 100 for breath control is an issue because 0 to 7 is the range for some settings and maybe there is a 0 to 31 range but I can’t remember as it’s been a few years since my TX802 passed away. That thing sounded amazing! I imagine they were trying to keep the size of a bulk dump consistent. I never ran across a performance setting issue with the lower granularity of performance settings, and I did worry about it too. The smaller granularity of the patch settings for the DX27 4 op synths really crippled them far more than the 2 missing operators.

rickyackel commented 4 days ago

Hmm. My E! expansion on my DX7 allows me to store this format so I may be able to test something. It’s a poorly written manual so it might take a while to figure out, but if I have a patch or bank to load, I can see how that goes.