robbert-vdh / nih-plug

Rust VST3 and CLAP plugin framework and plugins - because everything is better when you do it yourself
ISC License
1.65k stars 147 forks source link

Handling Keyboard Events on the Audio Thread directly #155

Open nat3Github opened 2 months ago

nat3Github commented 2 months ago

It would be nice to have a way to handle Keyboard events directly in the audio thread.

Implementation Idea: a Channel that gets shared between the WindowHandle and the audiothread, where duplicate KeyEvent messages get send to the audiothread.

rationale: lower latency when triggering audio with the keyboard than going around the editor gui thread, possibly processing that late and sending it again to the audio thread.

This is a feature request not a bug!

tphbrok commented 1 month ago

(disclaimer: Rust and nih-plug newbie)

I've implemented something similar (using crossbeam_channel) to trigger the export of a recorded buffer through a file dialog created from the audio thread when a button is clicked in the GUI.

Chances are I'm doing something unorthodox here, as any delay in real-time audio processing could be noticeable (see this blog: Real-time audio programming 101: time waits for nothing).