Experimental cross-platform Rust implementation for a Virtual MIDI device using the Wooting Analog SDK!
- Virtual MIDI Input from Wooting Analog Keyboards
- Velocity Input
- Polyphonic Aftertouch
- Interactively bind keys to MIDI notes per channel (left click bind, right click unbind)
- Channel Selection
- Shift key to shift configurable number of notes
- Channel Aftertouch
This project began as a side-project and is currently at a MVP (Minimum viable product) stage. We want to hear from you if this is something you'd like us to develop more. You're also welcome to contribute to the project if you desire. Feedback, testing/bug reporting and code contributions would all be greatly appreciated!
This project uses the Wooting Analog SDK under the hood. If you're on Windows the Analog SDK is installed with your Wootility. If you don't have the Wootility, or if you use Mac or Linux please refer to the Analog SDK installation guide.
Downloads for each platform can be found on the latest release
You may need to follow this guide to create a virtual MIDI device for the Application to output to.
App signing for the mac App is not setup yet. You might see this error if you try to open the app:
To allow the app to open just go to System preferences and then Security & Privacy:
Here you can allow the app to open:
This section is only relevant if you wish to help develop/contribute code to the project!
- yarn Is our preferred Node package manager
- Rust & Tauri
The libasound2-dev
package may be required to be installed:
sudo apt install libasound2-dev
For packaging AppImage
squashfs-tools
may be required:
sudo apt install squashfs-tools
src
- React Frontend source codewooting-analog-midi-core
- Rust source for the virtual MIDI device using the Wooting Analog SDK!src-tauri
- The Tauri host process code which bootstraps the web view & contains the glue code between the React frontend and the Rust backend
First you gotta install dependencies of the project
yarn
To help with development it's useful to export the RUST_LOG
environment variable to get more debugging output from the application
e.g.
# Bash
## To have it for your entire terminal session
export RUST_LOG=debug
## Or to have it just for the dev command
RUST_LOG=debug yarn tauri dev
# Powershell
$env:RUST_LOG="debug"
# CMD
set RUST_LOG=debug
Then you should be able to run the application in development mode, which includes hot reloading automatically on save:
yarn tauri dev
If you want to build a distributable binary/package run:
yarn tauri build
For more details & other commands, Tauri has a good reference for development commands here
- Many thanks to microdee for WootingPiano which served as a great inspiration for this project!
- Thanks to @TriStateGenius for helping with behaviour & design and feedback during development!
- Thanks to the awesome midir project for the Rust midi backend!
- Thanks to all at Tauri for their awesome project!