A14: MIDI-out từ plugin (VST2/VST3) → SHM → Rust emit → DAW track
- Vst2Instrument: audioMaster callback thu VstEvents, push SHM midiOutQueue
- Vst3Instrument: IEventList output bus (kAudioMasterWantMidi) — check
- SharedMemoryIPC.h: midiOutQueue[64] + midiOutCount (offset 27556/28324, sizeof 28328)
- shm.rs: MidiEventIPC Serialize, drain_midi_out() emit 'bridge-midi-out'
- lib.rs: pump emit midi-out events
- nativeBridgeService.js: onMidiOut API
- app.jsx: route MIDI-out về selected track qua SonicMidiRouter (feedback guard)
- TASKS.md: A14 ✅
This commit is contained in:
@@ -481,6 +481,17 @@ pub fn run() {
|
||||
last_audio_change = std::time::Instant::now();
|
||||
stall_logged = false;
|
||||
}
|
||||
// A14: plugin MIDI output (VST2 audioMaster ProcessEvents
|
||||
// -> SHM midiOutQueue). Drain and forward to the page;
|
||||
// JS routes the notes to DAW tracks. Payload is a JSON
|
||||
// array of MidiEventIPC {command, channel, pitch,
|
||||
// velocity, data2, data3, reserved, sample_offset}.
|
||||
if let Some(s) = guard.as_ref() {
|
||||
let out = s.drain_midi_out();
|
||||
if !out.is_empty() {
|
||||
let _ = pump_handle.emit("bridge-midi-out", out);
|
||||
}
|
||||
}
|
||||
// G3.1 FIX: nhả guard TRƯỚC stall log / watchdog kill+spawn.
|
||||
// kill_bridge -> flush_bridge_state khóa chính ShmState mutex
|
||||
// mà pump đang giữ -> deadlock khi watchdog trigger (không
|
||||
|
||||
Reference in New Issue
Block a user