From: Brian <br...@ov...> - 2005-03-10 15:07:03
|
> > >> There's one question though: Is the JSL driver set strong enough to >> make this automatic? Can they create a patch from a random set of >> sysexs? Or would we need a [Save as Patch] button so the user could >> tell JSL when one complete patch has been sent? > > > I think that it might be. I don't know enough about it to be sure, but > I was thinking the same kind of thing. I was thinking that JSL could > have an "auto-receive" switch on a library window. Then, any sysex > that came in would be checked to see if any driver recognized it and, > if so, automatically put into the library. That way, you could just > turn it on and walk around the room sending stuff from all of your > synths. > > Or maybe a "semi-auto-receive", where it prompted the user first: "JSL > has just received a Kawai K4 Bank. Would you like to discard it or add > it to the current library?". > I haven't looked at the recieve code in a while, but there is an issue that needs to be resolved first. We need to resolve this anyway since I want to allow automated reception of patches for the SynthExplorer window I'm working on. Originally, JSynthLib didn't track MidiIn ports for each device. Only the recieve window even dealt with MidiIn. So when you did a patch receive you would give the port you wanted to receive on, and then would always have to do the dump manually from the synth. You would see bytes received and when you knew the dump was done, hit OK. At that point JSynthLib would look for a matching driver. This was improved upon greatly several versions back by having JSynthLib track a MidiIn for each synth and to request patch dumps by selecting a Driver rather than a port. Now we know in advance what type of patch we are getting. So the question then, can we figure a way to let the driver say, "This is enough, this patch is complete" So we don't have to count on the user to tell us? My idea is this. *Most* synths have a single F0 .. F7 pair in their sysex, and many have a constant known size. Maybe drivers could have a function like isFullPatch(Arry of Bytes), that the receive would call every so often. The base Driver class would be set to just check for an F7. This way 95% of the drivers would remain the same. The remaining drivers would have to override this method. Anyone willing to take a look into this. We also need to make sure to divorce the receive dialog from the actual recieve logic. We need to be able to call a Get function from anywhere, not just the dialog. Something lke doGetPatch (Driver , PatchNum) or doGetPatch (Driver, BankNum , PatchNum) Brian |