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

sonosthesia-daw-connector

v1.6.0

Published

Node connector for digital audio workstations

Downloads

13

Readme

sonosthesia-daw-connector

This packages is a node application which is meant to run in tadem with a DAW (Live, Logic Pro etc) in order to provide network connectivity to applications running on the local network. Specifically, it runs a websocket server which allows remote clients to send and subscribe to MIDI and OSC messages which are typically used to interact with DAWs.

Getting Started

Install the sonosthesia-daw-connector package globally

npm install -g sonosthesia-daw-connector

Adapt a configuration file. You can then run sonosthesia-daw-connector from the command line with the configuration file as argument (names in cwd, relative or absote paths are supported)

sonosthesia-daw-connector -config=./midi.json

By default errors accessing ports are reported but do not abort. You can add strict if this is your desired behaviour.

sonosthesia-daw-connector -config=./midi.json strict

Configuration

Configuration is done via a JSON file.

Simple MIDI relay configuration

{
    "server" : {
        "port" : 80,
        "logLevel" : 2
    },
    "midiSink" : {
        "ports" : [
            "IAC Driver Bus 1"
        ],
        "logLevel" : 2
    },
    "midiSource" : {
        "ports" : [
            "IAC Driver Bus 2"
        ],
        "logLevel" : 2
    }
}

Will run the websocket server on port 80, will allow remote clients to

  • send MIDI messages to ports IAC Driver Bus 1
  • receive MIDI messages from ports IAC Driver Bus 2

Multiple ports can be specified and clients can specify sink or source ports they wish to send messages to or from.

Websocket Server

The websocket server is the connection point for applications. It allows bi-lateral communication using a protocol based on messagepack which is extremely efficient and portable. Each message has an OSC style address string and a byte[] payload which can be decoded according to the expected type.

MIDI Sources and Sinks

A midi source listens to a MIDI input port on the local machine and relays the messages to websocket clients.

A midi sink listens to requests from websocket clients to send MIDI messages to a MIDI output port on the local machine.

Depending on the type of MIDI port, errors may be encountered because other processes (such as DAWs) have appropriated the ports to themselves. If you want to disable a MIDI port in Live you may do so in the MIDI settings. You can create loopback virtual MIDI ports by using apps like loopMIDI on Windows and the IAC driver on macOS (see this Live article).

OSC Sources and Sinks

An OSC source listens to a OSC port on the local machine and relays the messages to websocket clients. OSC sources are used to relay messages sent by the DAW (or DAW extensions/plugins).

An OSC sink listens to requests from websocket clients to send OSC messages to an OSC port on the local machine. OSC sinks are used to relay messages to the DAW (or DAW extensions and plugins).

When relaying OSC messages to and from websocket clients, specific messagepack data structures are used for each message type for efficiency.

Websocket Client Implementations

A client implementation currently only exists for Unity but is relatively straightforward to implement on any platform which supports websockets and messagepack.

M4L Devices

A number of M4L devices are available to send Host, MIDI and Audio analysis information to OSC sources and to recieve requests from OSC sinks. This feature is still in early develoment.