Skip to content

jaylmiller/node-libpd

 
 

Repository files navigation

node-libpd

nodejs wrapper around libpd and portaudio

Tested on MAC OSX 10 and Raspbian Stretch Lite version 9 (raspberry pi 3) - for other platforms, dynamic libraries for libpd and portaudio should probably be built.

Install

npm install [--save] node-libpd

Tests:

# cf. test/index.js
$ npm run test

Notes / Todos

  • pd.clear() to stop background processes
  • find a proper way to organize tests
  • allow to discover available devices and configuration for input and output => (maybe this should be done in a separate module)
  • more generally expose more audio configuration options
  • handle audio in
  • implement array API
  • refactor messaging struct (cf pd_msg_t)
    • use more specialized structs and dynamic_pointer_cast
    • use const and references as in PdReceiver callbacks
  • re-enable addToSearchPath and clearSearchPath
  • stop the whole pd and portaudio instances
  • make init asynchronous to fix the race condition between js and worker threads (initialization can be quite long (> 100ms on mac OSX)). init should return a Promise => current workaround is to block the init method until currentTime != 0
  • move LockedQueue implementation in .cpp file
  • install babel thing to rewrite the index.js in es6
    • would be fancy to have an index.mjs and an index.js
  • add a verbose options to init
  • properly handle errors using : Nan::ThrowError("...");

Resources

libpd usage example (patch + test):

Node/Nan tutorial

libuv book:

Debug with lldb:

License

TBD

About

nodejs wrapper for libpd

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 56.6%
  • C 38.0%
  • JavaScript 3.9%
  • Python 1.5%