A JavaScript library for creating polyrhythmic and Euclidean rhythms with the Web Audio API.
beet.js is a JavaScript library for creating polyrhythmic and Euclidean rhythm sequences with the Web Audio API. It solves the problem of programmatically generating complex, multi-layered rhythmic patterns by providing an intuitive API to define patterns, manage layers, and schedule audio events precisely.
Web developers and creative coders building interactive audio applications, music tools, or experimental sound projects that require precise rhythmic sequencing.
Developers choose beet.js for its specialized focus on polyrhythmic and Euclidean rhythm generation, offering a straightforward API that abstracts complex timing mathematics while maintaining fine-grained control over audio scheduling and layer management.
Polyrhythmic Sequencer library for Web Audio API.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables multiple independent rhythmic layers with different step counts, as shown in the add/remove layer API, allowing for intricate polyrhythms without manual synchronization.
Built-in Bjorklund algorithm via beet.pattern() automatically distributes pulses evenly across steps, simplifying the creation of complex rhythms like those used in electronic music.
Abstracts mathematical complexities into simple methods like pattern() and layer(), demonstrated in the example usage for quick setup and creative experimentation.
Callbacks provide accurate time parameters for Web Audio events and timeFromScheduled for synchronized JavaScript actions, ensuring tight timing as highlighted in the callback format section.
README covers basic API but lacks advanced examples, troubleshooting guides, or performance optimization tips, which could hinder complex implementations.
Utilities like envelope and load are noted as possibly moving to a separate module, indicating future breaking changes or unclear maintenance priorities.
Relies entirely on Web Audio API, making it unsuitable for server-side rendering, Node.js environments, or older browsers without support, limiting deployment options.