6 releases

new 0.1.0 May 25, 2025
0.0.5 Dec 30, 2023
0.0.3 Feb 9, 2023
0.0.2 Oct 28, 2022
0.0.1 Jul 3, 2022

#139 in Audio

Download history 20/week @ 2025-02-03 40/week @ 2025-02-10 20/week @ 2025-02-17 12/week @ 2025-02-24 22/week @ 2025-03-03 39/week @ 2025-03-10 25/week @ 2025-03-17 19/week @ 2025-03-24 14/week @ 2025-03-31 21/week @ 2025-04-07 19/week @ 2025-04-14 37/week @ 2025-04-21 25/week @ 2025-04-28 16/week @ 2025-05-05 57/week @ 2025-05-12 51/week @ 2025-05-19

152 downloads per month
Used in 2 crates (via fluid-xenth)

LGPL-2.1

355KB
8K SLoC

img

OxiSynth

OxiSynth is a pure safe Rust SoundFont™ synthesizer, inspired by the widely known FluidSynth.

Primary Use Case

Initially designed for integration with Neothesia, OxiSynth has expanded its utility to other innovative projects, including:

  • microwave: A microtonal synthesizer that makes creative use of OxiSynth's per-channel tuning APIs.
  • xsynth: A Black MIDI synthesizer leveraging OxiSynth's soundfont parsing crate.

Showcase

This is how OxiSynth sounds like, running in real-time in Neothesia

The chorus and reverb in the recording are also produced by oxisynth-chorus and oxisynth-reverb crates respectively, that don't have any dependency on oxisynth itself and can be used as generic efects outside of this project.

https://github.com/user-attachments/assets/fdfc669e-6d9d-48bd-8f50-11c133a346c0

https://github.com/PolyMeilex/OxiSynth/assets/20758186/d50d2e95-f316-472f-88e9-111ed2f52784

WASM as first class target

OxiSynth was built with WASM in mind from the get go, so here it is running in the browser, with Boomwhacker soundfont prebundled: https://oxisynth.netlify.app


lib.rs:

You create a new synthesizer with [Synth::new()]. Use the settings structure to specify the synthesizer characteristics.

You have to load a SoundFont in order to hear any sound. For that you use the [Synth::add_font()] function.

To send events use: [Synth::send_event()] function.

To write the results to a buffer use [Synth::write()] function.

Dependencies

~115–630KB
~13K SLoC