https://github.com/r00tman/keydion
Use your laptop keyboard as Chromatic Button Accordion for Virtual MIDI
https://github.com/r00tman/keydion
accordion c-griff keyboard macos midi music music-production music-tools swiftui virtual-instrument
Last synced: 12 days ago
JSON representation
Use your laptop keyboard as Chromatic Button Accordion for Virtual MIDI
- Host: GitHub
- URL: https://github.com/r00tman/keydion
- Owner: r00tman
- License: mit
- Created: 2025-09-23T12:40:44.000Z (17 days ago)
- Default Branch: main
- Last Pushed: 2025-09-23T13:16:13.000Z (17 days ago)
- Last Synced: 2025-09-23T15:14:55.226Z (17 days ago)
- Topics: accordion, c-griff, keyboard, macos, midi, music, music-production, music-tools, swiftui, virtual-instrument
- Language: Swift
- Homepage:
- Size: 19.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Keydion
Tired of bad and limited default virtual keyboards in your DAW?
Use your laptop keyboard as a Chromatic Button Accordion for Virtual MIDI instead.
3 octave range accessible ergonomically without any additional hardware!
## Description
Tired of bad default virtual keyboards in your DAW? Now you can play full THREE OCTAVES ERGONOMICALLY only using your computer keyboard (and learn accordion at the same time).
Keydion turns your computer keyboard into a Chromatic Button Accordion controller, sending virtual MIDI messages.
At the moment, it assumes QWERTY layout and simulates C-Griff accordion layout.This project is heavily inspired by [Anatole Muster](https://www.youtube.com/shorts/1kVAUZjotnE) videos.
I did try to find the software he used for quite some time, but it was just easier to DIY the tool myself.
I mostly found web-based solutions, but I could not comfortably use them in my DAW for different reasons.Being a native app, **Keydion** allows "it just works" MIDI integration, low latency, etc.
The downside is that I did this in SwiftUI for **macOS only** despite having other options which would have been cross-platform, e.g., Rust+gtk+midir.## Features
- Maps QWERTY keyboard keys to chromatic button accordion layout (C-Griff)
- Sends virtual MIDI signals to software instruments
- Simple, reliable, configurable
- Written in Swift
- Supports dark mode (follows system theme)## Installation
### From releases
1. Download the dmg from [GitHub releases](https://github.com/r00tman/Keydion/releases).
2. Open it.
3. Drag **Keydion** to Applications.
4. Try to open the app.
5. If it complains about security, go to System Settings -> Privacy & Security, scroll down, and press "Open Anyway" for **Keydion**.
6. If that doesn't fix it, please share the screenshot of the problem through [GitHub issues](https://github.com/r00tman/Keydion/issues).### From source
1. Clone the repository:
```bash
git clone https://github.com/r00tman/Keydion.git
```
2. Open the project in Xcode (macOS required).
3. Build and run the application.## Usage
- Launch Keydion.
- Use your laptop keyboard to play notes in the chromatic button accordion layout.
- Connect to any DAW or software synthesizer that accepts MIDI input.**Note:** The input only works when the app window is active. Global key capture would case horrifying number of problems, which I don't even want to think about.
## Supported Platforms
- macOS (requires Xcode for building)
## Next Steps
- ~~Package as a GitHub release~~
- Better UI controls, default Stepper is *horrible to use*. You can't enter stuff as text, you can't drag it. Only click and hold +/- buttons.
- Cross-platform Rust+gtk+midir rewrite? I tried to redo it with Rust+egui+midir, but egui key reporting is bad and very laggy. One of the related issues: https://github.com/emilk/egui/issues/3653. Maybe [iced](https://iced.rs) will be better?
- ~~Make app title, repo name, folder names and etc consistent with Keydion branding.~~
- Add B-Griff? I chose C-Griff consciously after figuring that there are much fewer learning materials and support for B-Griff overall. Still, despite being just mirror images of each other, both C-Griff and B-Griff are used widely. So, let's add B-Griff too.
- ~~Note names instead of just MIDI note numbers in UI? As for myself, I play by ear and through muscle memory, hence I don't really need that. But I'm sure that for some people, it'd make it easier to use and learn the instrument.~~
- Highlight scales or at least some anchor notes? Might help a bit with remembering where stuff is.
- Add more possible keyboard buttons? It is very annoying to have C#6 but not C6. I tried to add LShift/RShift, but it is not trivial in pre-macOS 15 API.## Other cool stuff
If you liked this repo, then you probably would love my other repo too: [Turbopad](https://github.com/r00tman/Turbopad)!It allows you to use your built-in multi-touch trackpad as **MPE guitar**, **velocity-sensitive drum pads**, **CC controller** and more.
## Disclaimer
The code for this specific repo is mostly ChatGPT generated, out of frustration with existing solutions. I didn't expect it to work as good as it did and I needed the solution fast, so I kept it. I had to fix and change lots of things myself, but it doesn't change that the initial code was done by ChatGPT.