muse-sequencer / muse

MusE is a digital audio workstation with support for both Audio and MIDI
https://muse-sequencer.github.io/
Other
634 stars 67 forks source link

Fixed and enhanced Edirol SD-90 IDF #1262

Closed jkl1337 closed 5 months ago

jkl1337 commented 5 months ago

Current SD-90 IDF does not have LSB set for bank select for any of the patches, so selection among variation does not work.

This version also reorganizes the patch groups so that it is more ergonomic and consistent with other GM2 derived instruments. Patches are grouped by instrument type and then variations from all 4 sets are included in that group sorted by PC and then set (Classic, Contemporary, Solo, Enhanced). This keeps the related variations close together.

The drum sets are added per IDF 2.1 format. Controller definitions updated.

jkl1337 commented 5 months ago

Hello. Thank you for the revised IDF file. However, some changes are required to the file before it can be accepted.

Our IDF files are actually XML files. Certain characters are not allowed directly and must be replaced with XML codes.

There are no XML syntax issues with this file.

& Must be replaced with &amp; < Must be replaced with &lt; > Must be replaced with &gt; ' Must be replaced with &apos; " Must be replaced with &quot;

This is not correct. See https://www.w3.org/TR/REC-xml/#syntax. It isn't that they must be used in all contexts. They can. > only needs to be escaped in one context, &apos; and &quot; are both only necessary in the case of ambiguity in an attribute value.

This file was not produced by hand, it was generated with a python script using its very mature built-in ElementTree XML implementation and it was both tested with the MusE program and an XML validator (xmllint) where there were no issues. If the characters were actually incorrect than one would expect the file not to work in the application.

jkl1337 commented 5 months ago

Caveat

I hear you, though one reason I did ignore that is because I took the whitespace lead from the existing gm2.idf which puts the drum entries on one line (and I do think that is more readable). When you resave in the application this formatting is busted too.

terminator356 commented 5 months ago

Likely mostly my fault. Searching "xml substitutions" and then verbosely enforcing them in the code. Sigh. Rules... Next time I'm in there I will try to remember to change the saving code. One hurdle, I call things like QString::replace('\'', "&apos;"); on every string saved. Seems I may have to watch for context there and do things different, for ex. if not inside a single quote already, if I read those rules correctly.

jkl1337 commented 5 months ago

Not a criticism, making the in app save look exactly like the curated distribution files doesn't seem to me a pressing issue. I didn't look at the code, but you're probably OK with that replacement as the character entity replacement is always allowed except in places where it would not be interpreted like a CDATA section or the actual markup tokens of course.

terminator356 commented 5 months ago

Got it. Thanks.