From: Joe E. <jo...@em...> - 2005-05-15 04:58:49
|
Rib Rdb wrote: >On 5/14/05, Joe Emenaker <jo...@em...> wrote: > > >>Also, what does everyone else think about JSL being able to receive a >>patch even when the SysexGetDialog isn't open? For example, if JSL is >>just sitting there, and you dump a patch from a synth, it could pop up a >>message saying "JSL just received a patch dump which looks like a Alesis >>DM5 Bank. Would you like to save it in your current library or discard >>it?". Then, all the SysexGetDialog class would need to do is arrange to >>send out dump requests (and notify the receiving mechanism that a >>certain type of patch is expected). >> >> > >Would it even need to do the notification? We'd just need to make sure >the incoming messages were routed correctly, wouldn't we. > > I've thought about it some more... and here's another idea of how the sysex input queues could work: 1 - A message comes into a given MIDI interface. 2 - The queue manager would get a list of all of the synthdrivers using that interface as the input (unless the user has selected to not use mutliple MIDI interfaces, in which case it gets a list of all of the synthdrivers). 3 - It checks to see if any of those synthdrivers recognize the patch *taking into account* the input interface and channel/deviceID of the patch versus that of the synthdriver. 4 - If it finds a perfect match, then it adds it to the current library. If it doesn't then it checks all of the synthdrivers to see if they recognize the patch *without* taking into account the input interface and channel/deviceID. If it *does* find a match this time, then there are a few possible reasons, which the user might want to choose between: A - This is a one-time patch dump from some device. Accept it and do nothing else. B - This is a dump from one of the hardware devices in the synthdriver list, but it has changed interfaces and/or channel/deviceID without that data being updated in JSL. Accept the patch *and* change the interface/channel/deviceID of the matching synthdriver to match that of the incoming patch. C - This is a dump from a new device. Accept the patch, and add a new device to the list of synthdrivers. D - Discard the patch entirely. The nice thing is that "B" would be handy for handling problems where a misconfiguration is preventing any communication between JSL and the hardware device. "C" would make it *super* easy to add new instruments to the list of synthdrivers *provided* that JSL could somehow go through all of the available drivers... not just the ones in the users list of configured ones. If it did this, imagine how easy this would be for new users. Basically, they could run JSL, plug their MIDI interface into something, do a patch dump from it, and JSL would magically configure the driver for it. It would make it pretty difficult to *not* have success with JSL. Just a thought. - Joe |