Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Make sure to read through the Getting Started on GSoC page for information on joining the Fluid community and preparing to work on a GSoC project.


Project Title

Project Description:

Prototype Tasks:

Related Issues:





Cross-Platform Audio Engine for Node.js

Node.js is a library for developing server-side and desktop applications using JavaScript. The Fluid Project community uses Node.js for (among other things) developing applications for small, resource-constrained devices such as the C.H.I.P. and the Raspberry Pi. In particular, we are developing sonification and sound processing applications to support inclusive learning and culture. However, there is currently no reliable, cross-platform, low latency solution for generating audio using Node.js. One popular library, node-speaker, is only sporadically maintained and has very high latency and CPU usage, making it unsuitable for real-time audio streams.

This project will entail the development of a new Node.js native module in C++ that uses an existing cross-platform audio API such as Port Audio, libsoundio, or OpenAL. This module should support macOS, Windows, and Linux. It should include the following features:

  1. The ability to enumerate and list audio devices
  2. The ability to specify the sample formats, including integer and floating point numbers at 8, 16, 24, and 32-bit resolution
  3. Configurable buffer sizes/latency, including reliable support for < 10ms latency
  4. A callback-based API that allows JavaScript code to provide blocks of raw audio samples 

Difficulty: Medium

Mentor: Colin Clark

IRC: colinclark

Skills: Knowledge of C++; basic familiarity with Node.js and how native modules are written for Node.js

How to get started/getting to know us: Prospective students who are interested in this project should spend some time familiarizing themselves with writing native Node.js modules in C++ using Native Abstractions for Node.js (NAN). The NAN project provides excellent tutorials and background information, as does the Node.js documentation. To familiarize yourself with the requirements of the project, you may want to consider developing a very simple native module for Node.js. You should also familiarize yourself with various cross-platform audio libraries, and write a basic example client that generates some simple audio output using Port Audio, libsoundio, or a similar library.

Add rate limiting control for AChecker web service API