- From: James Ingram <j.ingram@netcologne.de>
- Date: Fri, 31 Mar 2017 17:01:52 +0200
- To: public-music-notation-contrib@w3.org, Glenn Linderman <v+smufl@g.nevcal.com>, Jeremy Sawruk <jeremy.sawruk@gmail.com>, Joe Berkovitz <joe@noteflight.com>
- Cc: Chris Lilley <chris@w3.org>
- Message-ID: <a271c4a7-a45c-d944-c71a-989bf516d341@netcologne.de>
Hi Joe, Chris, Jeremy, Glenn etc.! First, I'd like to say how glad I am that Joe has been talking to Chris Lilley, and that they have been looking at alternative strategies for using SVG in music notation. It would be really great if Chris could get involved at this early stage! @Jeremy and @Glenn: Please accept my apologies for not replying to your points directly here. This posting is long enough already with my reply to Joe. Joe said: > Let me say first that I see at least two potential uses for SVG in our > community group, and they seem to harmonize perfectly: > > 1. SVG (with some relationship to sound) can represent musical scores > with arbitrary visual and sonic content. Thanks to James Ingram for > highlighting this particular case to the group. I've only been talking about embedding MIDI data. The problem of synchronizing scores with audio files is covered in B and C below. Meanwhile, I'm defending my MIDI corner! :-) Joe: > 2. SVG (with some relationship to sound) can serve as an intermediate > format that represents *a specific rendering* of semantic music > notation markup such as MNX, MusicXML, MEI, or anything else. I've partly replied to this (#2) today in the "Re: MNX Proposal now Available [via Music Notation Community Group]" thread. Here's a more technical idea: Score rendering applications could convert MNX element names (e.g. <tuplet>) directly into class names in the exported SVG (<g class="tuplet" ...>...</g>). That would mean that the SVG+MIDI client application could identify the class of a graphic object so as to use it meaningfully. For example, a <g class="staff" ...>... </g> could be manipulated graphically (e.g. turned a different colour, made transparent etc.) to indicate that it is disabled. That's true for all the graphical element types (e.g. "slur"). Joe: > Relative to SVG, then, the key question is: What's the best way to > augment an SVG document with information on sonic performance? There > are multiple ways to do it. Chris and I discussed several very > high-level approaches: > > A. Intersperse performance data (e.g. individual MIDI or note events) > throughout an SVG file. James's proposed approach follows this > pattern: MIDI codes are sprinkled directly into the file and attached > to graphical elements. One could also use a different means to specify > events, say like the way that MNX proposes. I think you are referring to ยง7 Interpretation. Could it be that such CSS-type transformations should be available in both the MNX (the/input /to a score editor) and in the score editor's /output/ (SVG+MIDI)? As I pointed out in the other thread, temporal data can be manipulated, independently of the graphics, by an SVG+MIDI client, so it might be appropriate to put the CSS there as well. I'm not sure what interpretation data would mean as /input/ to a score editor... But it could be there anyway... The score editor could just pass the data on to its output. My proposed <score:midi> element could indeed contain something more like your MIDI definitions. Do your MIDI definitions in any way restrict the kinds of MIDI message that can be sent? Should there be a hybrid version, in which arbitrary MIDI messages can be sent if necessary? That's very interesting. Needs thinking about. Joe: > B. Intersperse *references* to a separate performance file (e.g. a > Standard MIDI file, MP3 audio file) throughout an SVG file. In this > approach, SVG elements are tagged with simpler data that "points to" > some time or time range within a separate document. MEI uses this > technique in places. > Example: > <measure sound-ref="ThisPiece.midi" sound-start="1:22" > sound-end="1:24">... As I understand it, this approach has its snags. There's a problem because the audio thread can't be synchronised exactly with the graphics display. (Joe, can you throw any light on that? I think there's a Web Audio threading issue.) As I pointed out in the other thread, an SVG+MIDI client application can easily manipulate the playback (change speed arbitrarily etc.) while remaining synchronous. That would be very difficult to do if the score is linked to fixed recordings (SMFs or audio files). I think this approach (B) would be most useful (if the snags can be overcome) if one happens to have a particular audio file with which one wants to synchronize. Joe: > C. Create a completely separate mapping file that identifies a > correspondence between SVG and a performance file. Such a file might > contain entries like this: > <measure-mapping graphics-ref="ThisPiece.svg#m21" > sound-ref="ThisPiece.midi" sound-start="1:22" sound-end="1:24"/> Such an approach would mostly have the same advantages and disadvantages as B, so I have no real preference for one over the other. Why not allow them both? Joe: > [...] most of the good stuff in standards groups, happens on email and > Github over time, not in large in-person meetings! Agreed. But in-person meetings are very important too! :-) All the best, James
Received on Friday, 31 March 2017 15:02:28 UTC