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

flocking-midi-interchange

v1.0.0-dev.20190818T140428Z.18b8d2a

Published

A library to assist in writing declarative "MIDI interchanges", like arpeggiators, transposers, and even UI generators.

Downloads

4

Readme

Flocking MIDI Interchange

This library is designed to assist in writing "MIDI interchanges", which consume and/or produce MIDI messages.

Transforming MIDI Router

A transforming MIDI router is a type of "interchange" that accepts MIDI messages from an input, "transforms" the data based on a series of rules, and the outputs the results. This type of real time transforming router can do things like:

  1. Output MIDI messages to play chords instead of individual input notes.
  2. Remap inputs, for example to change the tuning of an input device.
  3. Repurpose input controls, for example by making inputs that send control codes result in notes being played.
  4. Split a single input among multiple MIDI channels.

Many things like this can be accomplished only by writing new rules and configuration options. This is a by-product of the two underlying libraries used, namely Infusion and Flocking. These libraries make it possible create complex "components" whose behaviour can change dramatically simply based on the configuration options. New instruments are often little more than a thin skin of key changes on top of an existing component.

UI Router

Devices like the Novation Launchpad series, Ableton Push series, and Keith McMillan Instruments QuNeo have UI elements (lights) that change based on received MIDI messages. This package provides a "UI router", which is another type of "interchange", this time between desired UI updates and MIDI outputs. Like the Transforming MIDI router, this type of router uses transformation rules to translate a desired UI update into the appropriate MIDI messages. By writing alternate rules, a wide range of devices can be easily modeled. For more information, see the ui router documentation.

Onscreen Device Analogues

In addition to the above, this package provides onscreen equivalents of select devices, that can be used to operate an interface with a mouse and keyboard, either as a sole means of input, or in combination with a connected device. For more information, see the onscreen device analogue documentation.

Try it out!

This package includes a handful of demonstrations of various routers. To use them:

  1. Check out this package.
  2. Install its dependencies (i.e. run npm install).
  3. Open the file index.html in this directory in a browser that supports the WebMIDI API (Opera and Chrome at time of writing).