4 ms·
The reality is MIDI is a terrible abstraction for anything other than keyboard (piano, organ, harpsichord, celeste etc...). If you have some really good soundfo
by gnulinux 5y ago
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 5y agoHonestly 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-american-spaceflight https://songwhip.com/chriskrycho/fanfare-for-a-new-era-of-am...
- gnulinux 5y agoOh 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 5y agoAh, 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.