https://github.com/solarnz/pamidicontrol
A utility to control the volume of PulseAudio streams / sinks / sources with a midi device
https://github.com/solarnz/pamidicontrol
audio go golang midi midi-controller pulseaudio
Last synced: 3 months ago
JSON representation
A utility to control the volume of PulseAudio streams / sinks / sources with a midi device
- Host: GitHub
- URL: https://github.com/solarnz/pamidicontrol
- Owner: solarnz
- License: mit
- Created: 2020-06-20T05:41:37.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-06-02T09:09:45.000Z (about 1 year ago)
- Last Synced: 2025-06-02T20:16:42.644Z (about 1 year ago)
- Topics: audio, go, golang, midi, midi-controller, pulseaudio
- Language: Go
- Size: 6.77 MB
- Stars: 29
- Watchers: 2
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pamidicontrol
A utility to control the volume of PulseAudio streams / sinks / sources with a midi device
This has been tested with a [KORG nanoKontrol2](https://www.korg.com/au/products/computergear/nanokontrol2/) on ArchLinux. The
nanoKontrol2 is an in-expensive USB midi device with 8 sliders, 8 knobs and 24 buttons, which is great for having more
fine-grained control over your audio setup!
# Installation
You will need the `portmidi` library installed. In Arch, install this with `pacman -S portmidi` under Debian Based systems, you will need to install `libportmidi-dev`
```
go get github.com/solarnz/pamidicontrol
```
# Configuration
pamidicontrol requires the use of a configuration file. Place the config file under `$HOME/.config/pamidicontrol/config.yaml`.
You can checkout the [example configuration file](https://github.com/solarnz/pamidicontrol/blob/master/config.yaml) to see how to configure pamidicontrol.
You must set a bare-minimum the Input and Output midi device names.
pamidicontrol will print to stderr all of the midi control messages it gets, so you can easily build up your configuration file iteratively.
# Troubleshooting
## panic: runtime error: invalid memory address or nil pointer dereference on startup
Make sure that the names you have configured for `InputMidiName` / `OutputMidiName` actually exist.
## /usr/run/XXX/pulse/dbox-socket not found
On some distributions, PulseAudio is configured without D-Bus control by default. To enable D-Bus control for PulseAudio, add `load-module module-dbus-protocol` to your PulseAudio configuration file located at `/etc/pulse/default.pa`.