NPM: Node Packages for MUSIC

Jordan Panasewicz
4 min readMay 10, 2021

One of the main reasons I got into software & web development is my obsession with music technology. There are SO many amazing music programs out there, from the many music streaming / listening apps, to a nearly uncountable amount of music production softwares, to an expansive library of music theory helpers, and an ever-growing number of instrumentation practice tools.. and beyond.

Obviously there’s a TON of creativity, inspiration, knowledge, and talent behind all of these examples, which reach deeply into and pull fruitfully out of some wildly different creative rabbit-holes.

Here’s a quick look at just a few of the awesome musical Node packages out there:

Music Theory & Production

(These top 2 are my favorite couple finds so far — very diverse in their capabilities, and VERY fun to explore! Check out my project “Mode-ify” that utilizes both of these HEAVILY below).

Mode-ify Product Demo — build more complex chords and chord progressions.
  1. Tonal — A music theory library that contains functions to manipulate tonal elements of music (note, intervals, chords, scales, modes, keys). It deals with abstractions (not actual music or sound).

https://github.com/tonaljs/tonal

2. Sharp11 — Built to optimize performing music theory operations, ranging from simple things like transposing a note to complicated things like generating an ordered list of scales that can be played over a given chord. Also capable of things like chord recognition, as seen in my Mode-ify video above.

3. Pitchy — Simple pitch detection library.

https://www.npmjs.com/package/pitchy

Audio Control

  1. React-h5-audio-player — a customizable audio player with audio controls.

2. React-media-control — media controller using Material UI components.

3. Howler — an audio library built for web.

4. React-Player — a react component for playing a variety of urls including youtube, twitch, soundcloud, and more.

5. Speaker — Output PCM Audio data to the speakers.

MIDI

  1. Midi-writer-js — generate expressive multi-track midi files.

https://www.npmjs.com/package/midi-writer-js

2. ScribbleTune — generate midi rhythms and patterns — also available in Max for Live for use in Ableton Live.

3. Midi-player-js- reads midi files and emits JSON events in real time that can be used to trigger audio, visual, or anything else you code with it.

Spotify, etc.

  1. Spotify-web-api-node — universal wrapper/client for the Spotify API. Simplifies and cleans up requests from Spotify’s web API, includes Auth options, as well as all functionality available directly through Spotify.

2. Bandcamp Scraper — pull info from Bandcamp, because they shut down their public API and don’t plan to reopen it.

Waveforms / Visualizers

  1. Wavesurfer — Interactive navigable audio visualization using Web Audio and Canvas.

2. Nodejs-audio-visualizer — Audio visualizer generator for Node.js with simple configuration.

3. Wave.js — Minimal wave visualizer for javascript from wave.js Visual audio from element or microphone stream.

The world is yours!

Again — this is just a small sample of the many available libraries. I’ve had a TON of fun exploring and utilizing these, and highly encourage any music makers or listeners to dive in and build something fun using the many available options.

Cheers!

--

--

Jordan Panasewicz

Denver, CO based. Software Sales turned Software Engineer.