-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Save MIDI messages as numeric data in SVG files #2
Comments
1. Control value shunting is assumed, so Study 1 only sets the patch in the very first MidiChordDef. 2. Only COARSE (=semitones) PitchWheel deviaton messages are used. 3. Implemented CarryMsgs.Count for consistency. Both Study 1 and Tombeau 1 compile. Hidden Staves, Input Staves, Rests still need testing. There are bugs in the Palette code that were introduced while programming Tombeau 1.
Last Change: 13.02.2017
This problem has two parts that should be kept conceptually separate:
The solution to part 1 should be useful in SVG file formats that are intended for other purposes. The Assistant Performer is not the only scenario that requires graphic and temporal information to be synchronized. For example: synchronization is the key to creating an interface between score editors (like Dorico) and DAWs (like Cubase). If such formats are properly documented, and sufficiently compatible, it may well be possible to write scripts for converting one format to another. Such scripts will be easier to write if the underlying MIDI format is identical. Part 2 (the format required by the Assistant Performer) is defined below in the The
|
See Moritz' issue #2. Also, a bug fix in SvgSystem: null argument missing in w.WriteAttributeString(...). And some minor refactoring (mm -> msg).
All test scores now compile, and create <score:midi> elements having the form documented in Moritz issue #2. Final bug fixes: InputVoices must contain InputRestDefs, not MidiRestDefs. This error corrected in both Study3Sketch2Algorithm.cs and Block.cs.
New PitchWheelDeviation message. svgScoreExtensions.html references changed to svgScoreNamespace.html. Attribute hasMidi added to systems, system, staff, hiddenOutputStaff and outputVoice containers. Attribute alignmentX renamed alignment. Added <leftToRight> element inside svgSystem.
<msg> elements now have only one attribute (m) that defines a message as a space-separated string of 8-bit bytes. This makes 2- and 3- byte (including 2-message pitchWheelDeviation) and systemExclusive messages easy to implement.
Added a hasMidi="false" attribute to inputStaff and inputVoice elements. This conforms with the current Moritz issue #2 version.
Verovio now includes more class info in their SVG. I think all SVG authoring programs should do this. Not only is this useful for applying CSS styling, it makes it possible for client apps to identify the elements they want to use. For example, my Assistant Performer turns staves and their contents grey when they are disabled. If we had standard names for at least the more common objects, such apps could be written to take input coming from different sources... |
I am closing this issue temporarily so that the W3C Music Notation CG doesn't get confused. |
Completed chord classes and the following chord components: stem, inputStem flag, inputFlag
Following discussions with the programmers of other music notation applications, I've decided that it would be better to save low level MIDI messages in SVG scores, rather than using the current, high level MIDI-XML. This has the following advantages:
I'd welcome any further discussion, should anyone have constructive suggestions that would improve the model described below. Ideally, my Assistant Performer should be able to play scores created by any third-party software.
At rism-digital/verovio#379, I said:
The text was updated successfully, but these errors were encountered: