Hello.
Many years ago, when I first went through some Pd tutorials, I noticed how the mtof, ftom, et al objects, as well as the audio/MIDI testing patch, allowed for floats in place of integer MIDI note numbers, interpreted the same way, and found that really interesting.
The main reason I've ever been drawn to programming is to facilitate microtonal composition (I wrote a microtonal sequencer in Pd in college, got an A, thanks, later rewrote it in Python using Csound, now it's broken due to Csound API changes). Now that I know C and C++ at least a little better, I'm wondering if it would be feasible to implement such treatment of MIDI(-style) note numbers in other open source music programs, e.g. simply by overloading functions written with byte or int8 arguments and offering float versions alongside them, leaving the same midi-cps algorithms.
One of the Ardour devs discouraged this (well, several, but one had this argument) complaining of floating-point rounding. From what I've researched, typical single floats ,IEEE something, can represent any real number accurate to 6 digits. For 0-127, at least 3 digits after the decimal point means at least 1/1000 of a semitone, or 0.1 cents. I call that definitely good enough. Or doubles, for the picky.
I bring this up here because Pd is the only software I've ever found that implemented such a thing, and I think it's brilliant. I'd like to slowly go through various open source MIDI programs and make versions that allow floating-point note numbers and still support the original byte/int8 arguments. A DAW and a couple of plugins to start. Maybe a piano roll that allows disabling snap-to for pitch; or my own sequencer could easily be made to send these numbers. Ardour has 32 bits internal audio samples, still 7 bits of polyphonic pitch control. I think this would be revolutionary for microtonal music, and simple to implement, though the authors of these programs might not have thought of it.
Anyone in? Anyone more familiar with MIDI coding give me a hint in what sections of code to search? Any open-source devs who'd be open to it?
NB For all the alternative suggestions, I have tried them. Pitch bend is one value per channel, so you'd need a separate sound gen for each channel (I'm working on this with IEM's Pd vstplugin~, but e.g. 10 voices per channel times 4 instruments is already 40 running plugins). Scala .scl files have a finite set of pitches that, in most cases, cannot be changed during performance - you can only change the scale with mouse clicks. Directly sending frequency instead of note numbers involves more code changes. There are lots of possible ways to make software microtone-friendly. I think this would be the best mix of versatile and easy to do.
Thanks!
Chuckk