npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

webmidi-mapper

v1.0.1

Published

An expansion to the original webmidi package to map devices in a simple way

Downloads

14

Readme

Web Midi Mapper

An expansion to the original webmidi package to map devices in a simple way

npm node dependencies

Functionalities

  • Provides an extension to the original Web Midi package
  • Maps devices to easy to remember functions

Setup

Install the Midi Mapper package:

npm install webmidi-mapper

Import the Midi Mapper package somewhere in your code:

import {init as initWebmidi, onFaderChange, onButtonPress, onRotaryEncoderChange, onDrumPad, debugMidi, midiMaps} from 'webmidi-mapper';

Usage

Start by initializing the Midi Mapper by running the init function (this needs to be executed first before running other functions)

initWebmidi("korg-nanokontrol2", (deviceReady) => {
    console.log(deviceReady);
});

If your device isn't number 0 in the array than please adjust this like so:

initWebmidi("korg-nanokontrol2", (deviceReady) => {
    console.log(deviceReady);
}, 1);

Now you can start by assigning faders, rotary encoders and buttons:

To assign a fader:

onFaderChange("1", (value) => {
    console.log(value);
});

To assign a rotary encoder:

onRotaryEncoderChange("1", (value) => {
    console.log(value);
});

To assign a button:

onButtonPress("play", () => {
    console.log("Midi play button pressed!");
});

To assign a drumpad:

onDrumPad("1", () => {
    console.log("Midi drumpad pressed!");
});

If you want the RAW midi value instead of the 0 to 1 value:

onFaderChange("1", (value) => {
    console.log(value);
}, true);

onRotaryEncoderChange("1", (value) => {
    console.log(value);
}, true);

If you want the button function to respond on both on and off value's:

onButtonPress("play", () => {
    console.log("Midi play button pressed!");
}, true);

Create your own mapping

To create a new map start by copying an existing map from the maps folder. Then import and export your map in the maps.js.

To see on what note a button is use our debug function:

debugMidi((note, value, mapKey) => {
    console.log('note', note);
    console.log('value', value);
    console.log('mapKey', mapKey);
});

Then press a button, turn a knob or turn up a fader and see the result.

Maps

To see all the maps in the mapper:

console.log("Maps: ", midiMaps());

Contribute

When your map is complete please create a pull request or open an issue with your map attached. This so others can also start using that map.

License

MIT