Giter Club home page Giter Club logo

massiveknob's Introduction

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

massiveknob's People

Contributors

mvrens avatar

Watchers

 avatar  avatar

massiveknob's Issues

Not always connecting at startup

After starting up Windows it won't always connect to the device. In that case only a restart of MassiveKnob seems to work.

Improve connection handling so this situation can recover itself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.