Takes signals from a MIDI device and use them to control the volume and other settings on your pulse-audio linux machine. Use your real sliders, buttons, etc. to change application volumes, run shell scripts and pretty much anything you want via the CLI.
Find a file
Renovate[BOT] 0a73d55a80
All checks were successful
Build Automidically / Build Automidically (push) Successful in 1m25s
chore(0.0.20): tagged via Forgejo Actions & commit-and-tag-version
2025-07-17 13:23:42 +00:00
.forgejo/workflows chore(deps): update https://git.auengun.net/homelab/action-common-setup action to v1.3.6 (#54) 2025-07-17 13:21:56 +00:00
assets refactor!: rewrite for basic pulseaudio/linux instead of coreaudio/windows 2024-11-24 16:09:31 -06:00
cmd/automidically fix: update for urfave v3 2025-05-13 10:55:51 -05:00
internal fix/feat: small inconsistencies in sha, add changelog 2024-11-24 17:17:22 -06:00
.gitignore feat: basic ci 2024-11-24 16:12:42 -06:00
.renovaterc.json5 initial convert for new SCM 2024-05-22 13:40:49 -05:00
.version chore(0.0.20): tagged via Forgejo Actions & commit-and-tag-version 2025-07-17 13:23:42 +00:00
.versionrc ci: remove skip tag step 2024-11-24 18:49:39 -06:00
CHANGELOG.md chore(0.0.15): tagged via Forgejo Actions & commit-and-tag-version 2025-05-01 21:15:09 +00:00
example_config.yml refactor!: rewrite for basic pulseaudio/linux instead of coreaudio/windows 2024-11-24 16:09:31 -06:00
flake.lock fix: buildCommit & add nix develop 2024-11-24 16:58:29 -06:00
flake.nix fix: buildCommit & add nix develop 2024-11-24 16:58:29 -06:00
go.mod fix(deps): update module github.com/urfave/cli/v3 to v3.3.8 (#53) 2025-06-19 19:27:07 +00:00
go.sum fix(deps): update module github.com/urfave/cli/v3 to v3.3.8 (#53) 2025-06-19 19:27:07 +00:00
LICENSE.md initial convert for new SCM 2024-05-22 13:40:49 -05:00
Makefile fix/feat: small inconsistencies in sha, add changelog 2024-11-24 17:17:22 -06:00
README.md docs: trivial change for ci test 2024-11-24 18:29:28 -06:00

AutoMIDIcally

nanoKONTROL2

AutoMIDIcally takes MIDI inputs and converts them into pulse-audio volume controls and shell scripts. The major feature is being able to control the volumes for applications independently by mapping real faders to the same applications you'd see in the Volume Mixer. There is also some small integrations with shell actions based on button inputs, so if you can control it from the command line you should be able to control it through your MIDI device.

The reason I made this is because I was frustrated with "Power Mixer" disconnecting from my MIDI device and just generally misbehaving and being way more than I really wanted to have for simply mapping a fader to an application. It also didn't allow the flexibility that I really wanted to have with easily mapping multiple applications to a mixer without multiple menus and duplicating GUI settings, it wasn't as quick as open text file, edit, save.

Usage

Take a look at the example config to see the configuration parameters. The will search for MIDI devices with a particular name and then take a mapping of application names (or shell actions) that will control when a signal is received.

Command Line Parameters

config - Specify a filepath for the config.yml to be read from. Defaults to config.yml in the working directory. log_level - Specify the minimum log level required for entries to appear in the log file. Default info. log_path - Location to store the logging information. Defaults to automidically.log in the working directory. profile_cpu - A filepath to log the cpu.pprof information from Golang. Default is empty, which disables this from happening. profile_memory - A filepath to log the memory.pprof information from Golang. Default is empty, which disables this from happening.