From: Martin T. <m.t...@zo...> - 2011-09-12 09:27:53
|
I don't know much about the internals of JSynthLib. But I have a feeling SysEx bank/patch recognition can be improved. Am I right if I think this happens? : When importing a SysEx bank file JSynthLib reads the first bytes to identify the Manufacturer and Device, and then automatically selects the appropriate synth driver for this file. I have noticed this procedure fails in many cases. I have tried some files with the Yamaha DX100 (a synth that I own). There are some things JSynthLib does not seem to consider: - SysEx files do not always start with F0. Yes, they should, but several programs exist(ed) that produce files with an extra header before the real SysEx data start. - Files that can contain DX100 SysEx data do not always start with DX100 SysEx data. It is possible to concatenate several different SysEx dumps and save them in one file. This is also true for SysEx in MIDI files. - Files can contain more than one block of DX100 banks. For example a Yamaha YS200 or V50 file contains 4 banks of DX100 (more or less) compatible SysEx bank dumps, and the first usable sysex block does NOT start at the first byte. (There is a block identification sysex block first) What could be improved: JsynthLib should scan a file it wants to import to find the SysEx header(s) it is looking for, read the sysex data from there (Offset for FO can be byte nr 0, but can also be elsewhere in the file), and continue to find more data, if any, until the complete file has been scanned. This way more files with great sounds that can be found on the internet can be imported directly in JSynthLib without extra conversions. Maybe someone is interested to look into the JSynthjLib code to see waht can be done about this. If I would be a Java programmer I would take a look at it myself. But I have succesfully used tricks like these in my own projects like YSEDITOR (Atari) and DXconvert (Python script). -- MT |