midir
midir copied to clipboard
Cross-platform realtime MIDI processing in Rust.
I've used midir to my satisfaction for a while now. However, in a synth or sequencer application you'd need to do intricate timing related code. A closure to handle the...
Hi! I'd like to handle midir errors in a uniform way, and so I added a common midir error trait.
Searching for either WRITE or SUB_WRITE capabilities causes filling of the ports list with a bunch of ports that are impossible to connect to and always return an error if...
The user data passed to `MidiInput::connect()` is not necessary because anything that the closure wants to reference can be captured. (It's only necessary in the underlying C lib because it...
When using Linux, the returned port name is much longer than with Windows/macOS. These long names force me to reserve more space in the GUI than needed just because of...
... whatever that means. This is currently just a meta issue to collect information and ideas.
- Adds `winjack` feature to allow using JACK as the backend on Windows (non-breaking) - moves VirtualInput and VirtualOutput out of the `os` module and into their own `virtual` module...
https://github.com/Boddlnagg/midir/blob/85eaa46bf0b3e428621cbdec46af2423229da098/src/backend/jack/mod.rs#L176-L194 The process callback is called in the jack process graph which should only be executing "realtime safe" operations but `midir` creates `MidiMessage`, which uses a [Vec](https://github.com/Boddlnagg/midir/blob/85eaa46bf0b3e428621cbdec46af2423229da098/src/lib.rs#L43-L46) for its bytes,...
Pipewire is able to handle MIDI. With #99 the JACK backend works with pipewire-jack, so there's no urgent need for this, but it would be nice.
`example/test_sysex.rs` crashes with the following cl output: ``` Creating virtual input port ... Connecting to port 'My Test Input:midir-test 130:0' ... Starting to send messages ... Sending NoteOn message 519:...