You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Mark van Renswoude 439a8ad556 How about now? 1 week ago
Arduino/MassiveKnob Added support for analog outputs (basic PWM) to Arduino Sketch 3 months ago
Hardware Added Fritzing wiring example 3 months ago
Windows Possible fix for #2: OSD does not always disappear automatically ? 1 week ago
build Added AppVeyor build 3 months ago
.gitignore Implemented default device switching 3 months ago
.gitmodules Implemented default device switching 3 months ago
LICENSE Windows application with mock hardware layer 4 months ago
README.md Possible fix for #2: OSD does not always disappear automatically ? 1 week ago
appveyor.yml How about now? 1 week ago

README.md

Massive Knob

Control audio devices using physical knobs. And more.

Inspired by an article on Prusa's blog, this project has a slightly different set of goals. The original requirements were:

  1. Control volume using a potentiometer (fixed position) instead of a rotary encoder (endless rotation)
  2. Control specific audio devices, not the current default device
  3. Provide means of switching the default device by pressing a button

Because of these requirements, a simple media keys HID device does not suffice and extra software is required on the desktop. This opens up a range of possibilities.

Features

  • 🔊 Set the volume for specific devices / send the current volume to an analog output
  • 🔇 Mute / unmute specific devices / send the muted state to a digital output (e.g. LED)
  • 🎧 Set the default device / set a digital output based on the default device
  • 💬 Optional OSD (On-Screen Display)
  • 🔌 VoiceMeeter (Standard, Banana & Potato) plugin to execute macros or read the current state

Massive Knob is basically a host for plugins. A plugin can implement a device or actions which either process signals from the device to perform an action (for example, change the volume when a knob is turned) or send signals to the device based on the system state (for example, light up an LED to indicate the default device).

Devices

A device can provide the following inputs and outputs, up to 255 for each type (unless you're Look Mum No Computer I assume this will be enough):

  1. Analog input (e.g. a potentiometer)
  2. Digital input (e.g. a button or switch)
  3. Analog output (e.g. a PWM output, though not yet supported by the reference Arduino implementation)
  4. Digital output (e.g. an LED)

Serial

Connects to a compatible device on a Serial port, probably a USB device like an Arduino. The device must implement the Massive Knob protocol which uses the MIN protocol to send and receive frames. An Arduino Sketch is included with this repository which can be customized to suit your hardware layout.

Emulator

Useful for development, this one emulates an actual device. The number of inputs and outputs are configurable, a popup allows changing the inputs and shows the state of the outputs.

Developing

The hardware side uses an Arduino sketch to communicate the hardware state over the serial port.

The Windows software is written in C# using .NET Framework 4.7.2 and Visual Studio 2019.

Refer to the bundled plugins for examples.

Some icons courtesy of https://feathericons.com/

Releases

Builds are automatically run using AppVeyor. Tagged master releases are available on the GitHub releases page. You can find an installer for each version under the "Assets" section for a release.

Master build (release versions) Build status

Latest build Build status