All Projects → ramirezd42 → Node Audio

ramirezd42 / Node Audio

Graph-based audio api for Node.js based on LabSound and JUCE

Programming Languages

javascript
184084 projects - #8 most used programming language
js
455 projects

Projects that are alternatives of or similar to Node Audio

Juce
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
Stars: ✭ 3,841 (+5632.84%)
Mutual labels:  plugin, audio, vst, vst3
Awesome Musicdsp
A curated list of my favourite music DSP and audio programming resources
Stars: ✭ 871 (+1200%)
Mutual labels:  plugin, audio, vst, vst3
Wdl Ol
Enhanced version of Cockos' iPlug - A simple-to-use C++ framework for developing cross platform audio plugins and targeting multiple plugin APIs with the same code. VST / VST3 / Audiounit / RTAS / AAX (Native) formats supported. NOTE: THIS IS OBSOLETE, PLEASE SEE IPLUG2:
Stars: ✭ 906 (+1252.24%)
Mutual labels:  plugin, audio, vst, vst3
Iplug2
C++ Audio Plug-in Framework for desktop, mobile and web [PRE-RELEASE]
Stars: ✭ 875 (+1205.97%)
Mutual labels:  plugins, audio, vst, vst3
Audio Plugin Development Resources
Various resources related to developing plugins for audio production.
Stars: ✭ 136 (+102.99%)
Mutual labels:  plugin, audio, vst, vst3
Camomile
An audio plugin with Pure Data embedded that allows to load and to control patches
Stars: ✭ 527 (+686.57%)
Mutual labels:  plugin, audio, vst, vst3
Baseplug
MVC audio plugin framework for rust
Stars: ✭ 44 (-34.33%)
Mutual labels:  plugin, audio, vst
Vst3sdk
VST 3 Plug-In SDK
Stars: ✭ 853 (+1173.13%)
Mutual labels:  plugins, audio, vst3
Sonobus
Source code for SonoBus, a real-time network audio streaming collaboration tool.
Stars: ✭ 586 (+774.63%)
Mutual labels:  plugin, audio, vst
Blueprintsound
A plugin for Unreal Engine 4 that surfaces sound-related functionality to Blueprint.
Stars: ✭ 6 (-91.04%)
Mutual labels:  plugin, audio
React Native Make
A collection of everyday React Native CLI tools
Stars: ✭ 606 (+804.48%)
Mutual labels:  plugin, plugins
Giada
Your Hardcore Loop Machine.
Stars: ✭ 903 (+1247.76%)
Mutual labels:  audio, vst
Awesome Linuxaudio
[mirror] A list of software and resources for professional audio/video/live events production on Linux.
Stars: ✭ 756 (+1028.36%)
Mutual labels:  audio, vst
Zrythm
a highly automated and intuitive digital audio workstation - official mirror
Stars: ✭ 703 (+949.25%)
Mutual labels:  audio, vst
Things.sh
Simple read-only comand-line interface to your Things 3 database
Stars: ✭ 492 (+634.33%)
Mutual labels:  graph, plugin
Minimumaudioplugin
Minimum implementation of a native audio plugin for Unity
Stars: ✭ 33 (-50.75%)
Mutual labels:  plugin, audio
Guitard
Node based multi effects audio processor
Stars: ✭ 31 (-53.73%)
Mutual labels:  plugin, audio
Unitypluginwithwsl
Unity native plugin with WSL (Windows Subsystem for Linux)
Stars: ✭ 39 (-41.79%)
Mutual labels:  plugin, plugins
Objection Unique
Unique validation for Objection.js
Stars: ✭ 42 (-37.31%)
Mutual labels:  plugin, plugins
Audiobench
Open source modular synthesizer
Stars: ✭ 63 (-5.97%)
Mutual labels:  audio, vst

npm version

What Is It?

node-audio is a graph-based audio processing library for Node.Js. It's very similar to the web-audio api. In fact in its current iteration it is little more than a binding for LabSound with some sugar on top!

The eventual goal of this project is to expand upon the possibilites offered by the Web Audio API for Node.js based platforms by making it easier to develop custom AudioNode types to suit your specific needs.

WARNING!!!:

This library is in an extremely experimental state. Large portions of functionally have yet to be implemented and it is currently only buildable for MacOSX. However, since everything is built with cross-platform libraries (namely Boost, LabSound and JUCE), supporting other operating systems shouldn't be too difficult if there's interest. That said...

How can I help?

If you find node-audio helpful or want to help get it to a point where you think it COULD be helpful, there's a couple of ways you can contribute:

Submit a PR:

Missing something you need to make this a viable tool for your use case? Submit a PR!

Create an issue

Need something, but don't have to time to contribute or aren't sure how? Open up an issue, I'd love to talk about it!

What do we have so far?

Graph API

Currently only a small subset of the web-audio-api is available. In lieue of api documentation for the time being you can check out the src/module.cc file to see what bindings are being made available.

PluginNode

The only custom node type available right now is a "PluginNode". This can be used to instantiate an audio plugin and connect it to the graph as you would any other node. It currently supports only VST3 plugins, but the host process is built with JUCE so adding support for other formats like VST and AudioUnit shouldn't be too much work.

What's Next

The next things I plan to tackle are:

Get closer to feature parity with current web-audio-api

I think now that the foundation is laid this is more or less busy work. One of those things that's hard to justify until you need to use a certain piece of the api that's not available. PRs especially welcome here!

Develop some means of support for developing and packaging custom nodes as npm packages.

I would really like to get to the point where developers can create custom node types that are npm installed as a dependency in a project using node-audio. I really want to get the plugin node out into a separate repo as well since it has some pretty heavy dependencies that ideally wouldn't be required by node-audio project itself


Installation

Installation can be done via npm. Warning: this currently takes a LONG time to build!

> npm install --save node-audio

Usage Examples

The example below will play back an audio file, and manipulate the audio via a VST3 plugin a pan node and a gain node:

const { NodeAudio, StereoPannerNode, GainNode, SoundBuffer, PluginNode } = require('node-audio')

const ctx = NodeAudio.makeAudioContext()

const panNode = new StereoPannerNode(ctx.sampleRate())
panNode.pan().setValue(0)

const gainNode = new GainNode(ctx.sampleRate())
gainNode.gain().setValue(0.5)

const pluginNode = new PluginNode('/Path/to/plugin.vst3', ctx.sampleRate())

gainNode.connect(ctx, panNode, 0, 0)
panNode.connect(ctx, pluginNode, 0, 0)
pluginNode.connect(ctx, ctx.destination(), 0, 0)

const buffer = new SoundBuffer('/Path/to/audiofile.wav', ctx.sampleRate())
buffer.playOnNode(ctx, gainNode, 0)

while(true){}

Development

Clone this repository including submodules.

git clone --recursive git://github.com/ramirezd42/node-audio.git

Install dependencies and build native modules.

npm install

Rebuild native modules after making changes.

npm run build:native
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].