A JSON-based specification and toolkit for representing sequences of timed musical events, designed for WebAudio, MIDI, and OSC.
Sequence is a JSON-based specification for representing sequences of timed musical events, such as notes, chords, and audio parameter changes. It provides a structured way to store, transfer, and playback music data that aligns with WebAudio API features and is compatible with MIDI and OSC protocols. The format is designed to be minimal, extensible, and interoperable across different music applications.
Audio developers, music technologists, and creators building WebAudio-based sequencers, notation renderers, or music data interchange tools. It's also relevant for those integrating music sequencing into web applications or converting between formats like MusicXML.
Developers choose Sequence for its clean JSON structure, direct WebAudio alignment, and interoperability with standards like MIDI and OSC. Its extensible event system allows for custom use cases while maintaining backward compatibility, and the reference implementations provide a solid foundation for building music applications.
A way of creating music sequence data in JSON
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Sequences can be stringified to human-readable JSON for debugging or serialized to compact binary data for efficient transfer, as highlighted in the README's examples and specifications.
Event types like 'param' directly align with WebAudio API AudioParams, enabling precise control over audio parameters in web-based music applications, as described in the event definitions.
The format supports core events while allowing extensions; consumers silently ignore unknown types, ensuring backward compatibility and adaptability for custom use cases.
Sequences can reference and play back other sequences by ID, enabling complex, layered arrangements, as demonstrated in the 'sequence' event and sequences array.
The README explicitly notes that transmission via MIDI 1.0 involves some resolution loss, making it less suitable for applications requiring high-precision MIDI data.
Key elements like the 'sequence' event's targetId are marked as TBD in the README, indicating unresolved details for instrument targeting, which can hinder interoperability.
The format allows silent ignoring of unsupported events and has vague recovery rules for invalid 'meter' events, potentially leading to inconsistent behavior across implementations.