Octavia

Octavia is an event-driven multi-standard MIDI toolchain, consists of state tracking, parsing and serialising.

Made with ❤️ by Lightingale Community. Repository available on Codeberg and GitHub.

Features

  • Free, libre and open-source, licensed under GNU LGPL v3.0.
  • Keep your focus on building what matters, as Octavia behaves like a real MIDI module, taking over the heavy-lifting for you.
  • Built-in support for multiple plug-in cards and tons of other devices.
  • Wide support of bank mapping and bitmaps via midi-db.
  • Stringent compliance of existing established standards.
  • Emits warnings when MIDI programming errors are spotted, reducing chances of faulty programming.
  • Available in web-compliant JS (standard ESM; browser and Deno).
  • Developed with Firefox and an open Web in mind, not just bootlicking Chromium and V8.
  • No modification required to run in hardened forks of browsers, like Tor Browser, Cromite and LibreWolf.
  • Supports 16 ports, 256 channels, 768-voice polyphony maximum. More than you'll ever need.

Backstory

The current MIDI landscape is a dumpster fire, at least in the FOSS world. Only proprietary software solutions respect existing MIDI standards, while the FOSS ecosystem largely ignores or even violates the conventions, with TiMidity as the single exception. Octavia, born out of being fed up by the existing antics exhibited by existing FOSS solutions, aims to reach full compliance with existing MIDI standards (MT-32, GM, XG, GS, GM2 and etc.), while exposing simple yet powerful interfaces for developers to build upon.

With Octavia, no longer will you worry about standard compliance. Just focus on building what's important, be it visualizers, state browsers, event routers or even realtime event translators, Octavia's got your back. Feel free to test Octavia's capabilities with all available demos.

Dev Talks

We're now hosting a new place to handle development talks! If you don't have a GitHub account, or just prefer to report bugs or give suggestions in a more casual way, feel free to chat with us with links below!

Further documentation

A list of frequently consulted documentation pages is available below. For the full documentation, please check the sidebar.

Demo usage

Support coverage

Developer Documentation

API documentation is available on JSR (jsr.io). For user-facing components, please refer to the components page.

Base API

Component API