NPM: Node Packages for MUSIC
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).
- 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
- 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
- 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.
- 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
- 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!