{ "_comment": "Regression test for the fixed NRPN out-of-bounds write (TODO.md Critical finding #1: JaySynth::handleController wrote last_midiCC_info[midiCC_info.ID] with no bounds check; NRPN IDs assemble to up to 16383 but the array is sized NUM_MIDI_CONTROLLERS=1024). This sends the maximum possible 14-bit NRPN ID (127<<7 | 127 = 16383) via the standard MIDI NRPN CC sequence (99=NRPN MSB, 98=NRPN LSB, 6=Data Entry MSB, 38=Data Entry LSB, 98 again to complete/trigger the sequence - see MidiNrpn::process). Before the fix this reliably wrote far outside the array; after the fix, handleController returns immediately for any out-of-range ID. Success = process completes without crashing/hanging and produces valid, NaN-free audio.", "sampleRate": 44100, "blockSize": 512, "durationSeconds": 1.0, "events": [ { "sample": 0, "type": "controller", "channel": 1, "controllerNumber": 99, "controllerValue": 127 }, { "sample": 1, "type": "controller", "channel": 1, "controllerNumber": 98, "controllerValue": 127 }, { "sample": 2, "type": "controller", "channel": 1, "controllerNumber": 6, "controllerValue": 64 }, { "sample": 3, "type": "controller", "channel": 1, "controllerNumber": 38, "controllerValue": 0 }, { "sample": 4, "type": "controller", "channel": 1, "controllerNumber": 98, "controllerValue": 127 }, { "sample": 10, "type": "noteOn", "channel": 1, "note": 60, "velocity": 100 }, { "sample": 44050, "type": "noteOff", "channel": 1, "note": 60 } ], "recordWav": "out_nrpn_out_of_range.wav" }