I've tried a few different programs, and in all of them, whenever I try to send a pitch value through noteout, the pitch value gets rounded up or down to a value in 12-tone equal temperament. I'm not sure if the problem is with Puredata or all of the programs I've tried using. Either way, I would like to know what to do to fix this, whether that means changing something in Puredata or switching to a soundfont player that correctly handles all midi notes.
EDIT: I did some research, and apparently MIDI is (stupidly) designed to round notes to 12TET pitch values, the only way to get around this being pitch bends. So somehow I'm going to have to get pitch bend values for every note that plays at any given moment and attach each pitch bend value to the correct note. I'm not sure if that's even going to be realistically possible. It will probably require me to give every note a unique MIDI channel, and only 16 notes at a time will be allowed.
EDIT 2: Puredata is refusing to send pitch bend messages. Bendout does nothing when sent to a MIDI channel with a note.