Respectfully, my statement is absolutely correct, but please try to read carefully to understand what I’m saying. Stating that MIDI is a “data transfer protocol” is true, but not germane. Despite working with, and writing about, computerized electronic music for nearly 50 years (who remembers the DEC PDP-8?), I can’t think of one instance when rendering the same MIDI data twice using the same soundbanks/virtual instruments/synthesizer, on the same hardware/software computer platform would produce different audio. See, e.g., Dorico’s native Halion sound bank.
A virtual instrument like NP that apparently produces different audio from the same MIDI data – even when all other elements in the workflow are held constant – is a problem for those whose final work is the audio output. NotePerformer’s “AI-based” methodology (and the “AI” element may be a bit of hand-waving, but that’s a topic for another day) promised to produce human-sounding MIDI performances out-of-the-box, rather than the lifeless, mechanical recitations we’re used to. And to its credit, NP goes a long way toward achieving that goal. It’s a brilliant piece of software.
However, this approach casts the resulting audio rendering in a more important role, making it a more worthy end in itself. That’s why compromising the integrity of such a rendering, by removing guarantees that the same MIDI data will be interpreted by the virtual instrument in a consistent, predictable manner, is such a problem.
To understand a little better what I’m saying, consider my use case, where my rendered audio output is my musical work product. Here, NotePerformer is not merely a “receiving instrument,” analogous to a live peformer, from the perspective of the composer.
The difference is that a MIDI score and a printed score hold different parameters constant. The latter specifies pitches and general durations, dynamics, articulations, etc. It’s designed to simply guide a performer through a piece and, hopefully, tell the performer enough about what the composer was trying to say to allow the performer to interpret the content in an appropriate way.
A MIDI composition in such a context is distinguishable. The score is a mere set of guidelines that set boundaries on a live player’s interpretation. Rendered MIDI output is qualitatively different, a self-contained finished work to be experienced by a listener, more like a recording of a live performance than to a printed score. The live performance is generated from information contained in the written score. The MIDI rendering, on the other hand, is generated from stored MIDI data – fixed pitches, durations, volume levels, etc. With MIDI, a composer expects, based on prior experience with the MIDI protocol, to have complete control over the rendered audio – in effect, the composer (facilitated by his software tools) is also the live performer and the recording engineer. No further downstream interpretation is necessary – or desirable.
So, within the live performer / MIDI rendering analogy, what NP is doing is akin to a live conductor deciding to ignore the dynamics markings in a traditional score – and only sometimes, depending on how much of that score he is conducting. Maybe the “Ode to Joy” in Beethoven’s Ninth would sometimes have dynamics in accordance with the score’s guidelines – louder than the preceding material – but at other times, based on the inscrutable whim of the conductor, it would be played softer. Yikes!
I hope we’re getting in sync?. I understand that this is a topic upon which reasonable minds may differ, as my colleagues in the legal profession are wont to say. And the goal of this thread was to figure out why NotePerformer was creating audio output that did not sound like what I heard when editing. I think we’ve addressed that. This spinoff discussion is interesting, but if anybody wants to pursue it further, I suggest starting a new thread. Seriously, despite being sucked back in to this conversation several times, I’ll be moving on. I’ve said everything I wanted to say.
Thank you to everybody for contributing to this unique conversation. I hope the NotePerformer developer is able to read and consider some of these points. And to be clear, despite being appalled by the problem we’ve been discussing, I am a huge NP fan. I see this product as being a game-changer and applaud the developer’s efforts. I just hope that something like the feature I suggested will be implemented in a future revision. Until then, I’ll just have to be careful about listening to every NP-generated audio recording in detail before distributing it.