f8d7db731e
Bug: PedalApp._on_midi_cc() received (value, channel) where channel was the MIDI channel (0-15) but was treated as the CC number (0-127). The register_cc callback only passes value + MIDI channel, not the CC number. Fix: Use a lambda closure in _wire_midi_callbacks to capture the CC number so _on_midi_cc gets (value, cc_number, channel). Moved expression pedal (CC#11) check before the presets/pipeline guard so it works even when no preset is active. Tests: 21 new integration tests covering: - CC lambda closure capturing correct CC numbers - Expression pedal → master volume (CC#11) - Full parse→dispatch→callback chain for PC and CC - Preset MIDI mapping lookup by CC number - Edge cases: min/max values, rapid switching, empty slots