I don’t want to get into discussions about whether objects should be immutable or not (I personally hate immutable strings) and I like the idea of being able to just transpose a note number or constrain a velocity by just changing a value in an object rather than creating a brand new object every time, specially if those objects are being created dynamically. In the system we’re building, that approach becomes important. I can easily add the extra method myself, I get that.
However, that’s not my question. If the MIDIMessage object used floating point ONLY (e.g, note numbers, velocities, pitch bend values) that would be one thing (and probably rather nice). However, the notion that I create a MidiMessage using standard MIDI values (0…127) but changing velocity requires 0.0 to 1.0 is strange and that’s why I was curious as to the underlying thinking.