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.
Cross-Platform Audio Engine for Node.js
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:
- The ability to enumerate and list audio devices
- The ability to specify the sample formats, including integer and floating point numbers at 8, 16, 24, and 32-bit resolution
- Configurable buffer sizes/latency, including reliable support for < 10ms latency
Mentor: Colin Clark
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.
SoundFonts provide a means for packaging and distributing audio samples for use in wavetable synthesizers and samplers. They typically provide a variety of instrument sounds sampled at different pitches and octaves, making it easy to create realistic-sounding digital instruments. SoundFonts are particularly useful for data sonification, since they provide a simple and low-cost way to give users the ability to choose from a variety of instrumental sounds when creating their sound designs.
The Floe Project (Flexible Learning for Open Education) is developing new tools for sonification and data presentation using audio. These tools are based on Flocking, a framework for audio signal processing, synthesis, and music composition, which uses the Web Audio APIs now built into most modern web browsers.
Mentor: Colin Clark
How to get started/getting to know us: Prospective students who are interested in this project should spend some time familiarizing themselves with the SoundFont 2 specification and the sf2-parser library.
Add Rate Limiting Control for AChecker Web Service API
Project Description: AChecker is an online accessibility validator that provides a web service API for users to validate the given URL or content via http requests. Each user is given a web service ID that can be sent along with http requests to use the API. To avoid the abuse of AChecker web service API, rate limiting needs to be added to control the number of requests can be made at a certain period by one web service ID. Adding this feature requires:
- Implement the rate limiting;
- Add HTTP endpoints for querying rate limits, revoke or regenerate revoking and regenerating IDs etc.;
- Change to the user profile UI to allow users to revoke/delete the compromised web service IDs and regenerate new IDs.;
- Change to the AChecker Administrator's user management UI to allow administrators to revoke the compromised web service IDs.