[HN Gopher] MusicXML and Percussion Notation
___________________________________________________________________
MusicXML and Percussion Notation
Author : pcr910303
Score : 75 points
Date : 2021-08-08 13:17 UTC (9 hours ago)
(HTM) web link (v5.chriskrycho.com)
(TXT) w3m dump (v5.chriskrycho.com)
| specialist wrote:
| Gah. Data translation, between almost matching schemas
| (ontologies), has been 1/2 of my professional career. Probably.
|
| I don't know if this applies: S-notation for turntablism (DJing)
| represents pitch. But I couldn't quickly find any XML schemas for
| S-notation.
| capableweb wrote:
| > S-notation for turntablism (DJing) represents pitch. But I
| couldn't quickly find any XML schemas for S-notation.
|
| As a lisp hacker and musician, I quickly got confused what you
| meant and first read
| "S-expressions"(https://en.wikipedia.org/wiki/S-expression).
|
| For others (as HN has quite a few people with the same profile
| as me), S-notation here refers to "transcription method which
| uses an own repertoire of notational symbols to describe the
| techniques of a turntablist", see
| http://www.alexandersonnenfeld.com/fileadmin/user_upload/S-N...
| specialist wrote:
| Gah. You're right. I should have provided cites. Thanks.
| chriskrycho wrote:
| The worst part about it is: same schema/ontology, but
| _different (legitimate!) choices within it_! Cue sobbing emoji.
| jacquesm wrote:
| I've looked at MusicXML as an intermediary format to convert to
| from MIDI but found it to be overly complex and ended up just
| using the MIDI data in JSON form directly. This worked well
| except of course for the fact that MIDI is quite lossy (rests
| aren't in there, slurs are implicit, there are no 'beat' markers
| and so on).
|
| Music formats are tricky, some are more suitable for performance,
| some more for archival storage or composition. It's enough to
| drive you bonkers at times, especially if you want exact
| representation and slowly you realize you are just not going to
| get it perfect no matter how hard you try.
| gnulinux wrote:
| The reality is MIDI is a terrible abstraction for anything
| other than keyboard (piano, organ, harpsichord, celeste
| etc...). If you have some really good soundfont files you can
| produce very realistic sounding piano performances if you tweak
| each note hard enough. At the end of the day the input into
| acoustic piano device and MIDI are the same (in fact in
| MIDINyou determine the velocity while turning a note off, which
| wouldn't have an acoustic effect on a piano)
|
| But for all other instuments especially those without "frets"
| e.g. violin, cello etc MIDI will sound nothing even close to a
| real insturment. Even if you buy thousands of $ worth
| soundfonts, it'll sound like MIDI. When I say this to my
| musician friends they keep saying "well duh computer just can't
| play a piece like human". Well, that may be the case but that's
| an entirely different topic. As a violinist and a software
| engineer the abstraction I would use for my own insturment
| would be:
|
| 4 on/off signals each for a string A global state about how far
| on the board each finger is (if it's pressing down, otherwise
| null). For each on signal: (1) Contact position of the bow, (2)
| velocity of the bow.
|
| And this doesn't even account for artificial harmonics, pizz
| etc many different timbres you can produce from an acoustic
| violin.
|
| The reason I'm writing all this is because I'm trying to make
| the case that MIDI is useful for the opposite of what you're
| doing. Going from MIDI to MusicXML is not useful since MusicXML
| is a format meant for composers to express music for all
| insturments (well, in MuseScore, Dorico etc, and they
| eventually generate Music XML)
|
| So in order to use MusicXML to its full potential, try
| generating MIDI from MusicXML. This way you can generate very
| realistic sounding music even for insturments like violin (but
| it won't look like a generic Midi as you need multiple channels
| for each insturment).
|
| This is how I compose music myself. I write it in MuseScore3
| with heavily notated notation (including human readable notes
| like "slower" etc) and then generate wav from musicXML file.
| Try it!
| chriskrycho wrote:
| Honestly it's astounding just how good the representations
| from top notch virtual instrument libraries can be given the
| very real limitations of MIDI. The combination of key-
| switched articulations with velocity-driven patch variation
| plus clever legato programming means that a well-practiced
| DAW programmer can get performances out of libraries that
| blow my mind. Do they sound like a live performance? Not
| quite (and less so for solos or small chamber ensembles than
| for larger ensembles). They sound far better than it would
| seem they have any right to, though. And the upside to the
| MIDI encoding is that while you're absolutely right that it
| isn't a natural fit for e.g. violins (where your suggested
| approach could be a much closer representation), they are
| _universal_ and therefore much more transferable.
|
| All of that mixed praise of MIDI notwithstanding, I basically
| agree with the take here. I (self)-published [1] a fanfare I
| wrote last year taking the path from a score authored in
| Dorico to MIDI to Logic Pro and the result came out
| surprisingly well out of the gate, and with much tweaking
| ended up in something that if I didn't love, I also didn't
| _absolutely loathe_ , which had been my previous experience
| of these sorts of things.
|
| In any case, the thought of trying to transfer between tools
| like MuseScore, Dorico, StaffPad, etc. with MIDI just gives
| me the shudders: it's absolutely the wrong tool for the job,
| where (something like) MusicXML is the _right_ tool for the
| job, because it's designed from the start to represent
| notation rather than to represent _sound_.
|
| [1]: https://songwhip.com/chriskrycho/fanfare-for-a-new-era-
| of-am...
| gnulinux wrote:
| Oh I think my post is possibly misunderstood? I don't
| generate wav within MuseScore. I use MuseScore to generate
| Music XML. Then from that data I have a script that creates
| relatively more realistic sound using many soundfonts (I
| created a soundfonts for each of my violin strings, and for
| each articulation etc). So although the last operation is
| MIDI->wav I don't use the standard midi rendering. This way
| I can implement special logic for stuff like triple stops,
| quadruple stops, expressiveness etc.
|
| EDIT: I use midi only to get samples from my sf2 files by
| using fluidSynth etc.
| chriskrycho wrote:
| Ah, no, sorry: I took your meaning; I was just talking on
| a related bunch of things your comment brought to mind!
|
| That's a very interesting approach, though: doing it via
| script rather than hand-editing in a DAW.
| jraph wrote:
| > I've looked at MusicXML as an intermediary format to convert
| to from MIDI
|
| To do what? I'm curious.
| jacquesm wrote:
| To power pianojacq.com
|
| In essence it allows you to upload a two-handed midi file (or
| a single track if you trust the splitter ;) ), and then to
| use the UI to practice the piece. It's slowly building up a
| following of people that use it for daily practice, and I've
| built up a small repertoire of suitable files (basically at
| the speed that I practice the pieces myself).
| jraph wrote:
| This looks really good. I happen to be learning piano since
| October and I have a MIDI keyboard. At a first glance, it
| matches an idea I had. Thanks for building this and for
| sharing. I might adopt this.
|
| And I fully understand why you wanted to use MusicXML now.
| It makes me think about the feature in MuseScore that plays
| the score.
|
| (Frere Jacques as a default, nice touch)
| jacquesm wrote:
| > Frere Jacques as a default, nice touch
|
| Out of I don't know how many users you're the first one
| that spotted that :)
|
| Enjoy, if something doesn't work as it should or if I can
| help out with fixing midi files jam@modularcompany.com
| em3rgent0rdr wrote:
| to be clear: MusicXML is a format representing musical
| _notation_. MIDI is a format representing musical
| _performance_.
|
| MIDI doesn't do a good job in communicating to a human reader,
| for which musical notation is much more useful.
| encryptluks2 wrote:
| I usually find XML to be too verbose. I would love to see more
| music notation markup formats.
| [deleted]
| tannhaeuser wrote:
| I guess the difficult part is development of the actual
| music/audio software and layout into sheet music/conventional
| notation, with the representation format only a secondary
| concern. No idea if MusicXML is widely used, but I'd imagine as
| long as it does its job of exchanging scores across apps,
| nobody will be too enthusiastic to reinvent new ones all the
| time just because.
|
| However, you might find of interest that Charles Goldfarb, the
| father of SGML (and thus HTML and XML), also being a Jazz
| musician and lawyer, authored SMDL [1], a format that would
| later generalize to HyTime. Though knowing just a bit of
| HyTime, I think you'll be thoroughly disappointed when looking
| for non-verboseness ;), HyTime describing everything in markup
| (SGML/XML) and being regarded so impossibly complex a
| multimedia description format that only a single, and
| necessarily incomplete implementation was ever started (by
| Fujitsu).
|
| Parts of HyTime are fascinating, though. Among other things, it
| generalizes the concept of a hyperlink into having a time
| dimension.
|
| [1]: http://www.sgmlsource.com/history/hthist.htm
| chriskrycho wrote:
| MusicXML is indeed widely used, and it is basically _the_
| standard interchange format for music notation apps. Every
| major app I can think of supports it--certainly the "big
| four" of Dorico, Sibelius, Finale, and MuseScore, as well as
| other apps like Notion, StaffPad, etc.
|
| I was thinking of what would make the interchange format
| _better_ would be after writing up this post, and my honest
| conclusion was that MusicXML itself is pretty good. There are
| standardization choices you could make within the format
| itself (as alluded to in the post) which would help with
| interchange, but the definition is reasonable throughout. The
| thing that is hard is simply that _XML_ is hard: lots of
| tools out there support subsets of it, but nearly everything
| XML-oriented ends up being either Java or some kind of libxml
| wrapper. (To my surprise, there really isn't a ton even in
| the Rust space which would seem to be well-suited to this
| kind of thing. DTD support took ages to show up anywhere, for
| example.) While switching to some kind of JSON schema would
| mitigate the XML problem, getting all the vendors to adopt it
| would be quite a battle, I expect.
| tannhaeuser wrote:
| That makes sense. But isn't Rust able to just link against
| libxml2, Xerces C++, or expat?
| steveklabnik wrote:
| Yes, Rust can link against libxml2, at least.
| chriskrycho wrote:
| Yep, and it totally gets the job done. (Hey, Steve!) I'm
| just perpetually surprised that 6 years past 1.0 we don't
| have a Rust native implementation of the equivalent. What
| I've slowly concluded is: we as an industry more broadly
| _just don't do that much XML anymore_ , so the incentives
| aren't there. (And here I mean XML _as XML_. Obviously we
| have XML-related stuff everywhere in the form of HTML,
| but it's a bit of a different world.) And the other piece
| is that for the XML we _do_ have, the Rust
| implementations and the binding to libxml are _good
| enough_.
| steveklabnik wrote:
| Hey hey! :)
|
| I would agree with this post, for sure. The surprise, and
| the analysis both. There is of course always a bit of
| chicken and egg with this kind of thing; people don't use
| tons of XML with Rust because there aren't good
| libraries, and good libraries don't exist because people
| don't use a ton of XML with Rust. Normally this stalemate
| is broken by _something_ being useful enough for someone
| to go through and implement a library, but I guess that
| hasn 't come up yet, or that the bindings are indeed good
| enough.
___________________________________________________________________
(page generated 2021-08-08 23:01 UTC)