/wooting-analog-midi

Cross-platform virtual MIDI device for (Wooting) analog keyboards!

Primary LanguageTypeScriptMIT LicenseMIT

Wooting Analog MIDI

Experimental cross-platform Rust implementation for a Virtual MIDI device using the Wooting Analog SDK!

Features

  • 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

Project Status

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!

Getting Started

Wooting Analog SDK

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

Downloads for each platform can be found on the latest release

Setup

Mac

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:

Development Setup

This section is only relevant if you wish to help develop/contribute code to the project!

Dependencies

Linux

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

Directory Structure

  • src - React Frontend source code
  • wooting-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

Get going

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

Credits

  • 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!