In the CHANGING TUNING PROGRAMS section on page numbered 50 of the 1996 version of the Complete MIDI 1.0 Detailed Specification (page 82 of the pdf), the examples of changing the tuning program (controller 3) and tuning bank (controller 4) specify the value to be passed in as
tt = Tuning Program number (1-128)
and
tt = Tuning Bank number (1-128)
Is this value really supposed to be one-based? I would think that the value in the actual MIDI data needs to be from 0-127, not 1-128, not least because a value of 128 would have the high bit set, which I thought wasn't allowed in this context.
I looked at the source for fluidsynth, one of the main open-source programs to implement this spec (https://github.com/FluidSynth/fluidsynth) and while I could easily have missed something in my cursory overview, it appeared to me they use a zero-based value here.
I hope someone can help clarify this for me.