#synthesizer #midi #soundfont

xsynth-realtime

A real-time MIDI synthesizer using XSynth

4 releases (2 breaking)

0.3.1 Aug 25, 2024
0.3.0 Aug 23, 2024
0.2.0 Aug 10, 2024
0.1.0 Aug 6, 2024

#976 in Audio

Download history 297/week @ 2024-08-05 28/week @ 2024-08-12 242/week @ 2024-08-19 48/week @ 2024-08-26

615 downloads per month

LGPL-3.0

225KB
5.5K SLoC

xsynth-realtime

The real-time rendering module within XSynth. Currently it outputs audio using cpal.

It uses an asynchronous event sending system for high performance and simple to use API.

Documentation

You can find all the necessary documentation about the XSynth realtime API here: https://docs.rs/xsynth-realtime.

Example

This is a very simple example about initializing an instance of the realtime synthesizer. For other more detailed use cases, visit the examples folder.

use xsynth_realtime::{RealtimeSynth, SynthEvent, ChannelEvent, ChannelAudioEvent};

fn main() {
    // Will use the default configuration and
    // default audio output device
    let mut synth = RealtimeSynth::open_with_all_defaults();
    
    // Will send a note on event in channel 0
    synth.send_event(SynthEvent::Channel(
        0,
        ChannelEvent::Audio(ChannelAudioEvent::NoteOn {
            key: 60,
            vel: 127,
        }),
    ));

    // Will print the active voice count
    println!("Voice Count: {}", synth.get_stats().voice_count());

    // The synth is automatically dropped here
}

Dependencies

~10–41MB
~703K SLoC