dart_melty_soundfont 1.0.6 copy "dart_melty_soundfont: ^1.0.6" to clipboard
dart_melty_soundfont: ^1.0.6 copied to clipboard

outdated

A Soundfont synthesizer (i.e. '.sf2' player) written in pure Dart.

DartMeltySoundFont #

DartMeltySoundFont is a SoundFont synthesizer (i.e. '.sf2' player) written in pure Dart.

It is a port of MeltySynth (C#, MIT License) written by Nobuaki Tanaka, to Dart.

https://github.com/sinshu/meltysynth

Dependencies #

This package has no dependencies.

Maintanence #

Apart from breaking changes to the Dart language (rare), this package has no external dependencies and should work on any Dart SDK >=2.12 indefinitely. This package was written against Dart SDK 2.16.1.

Example #

Ssynthesize a simple chord:


// Necessary Imports
import 'package:dart_melty_soundfont/dart_melty_soundfont.dart';
import 'package:flutter/services.dart' show rootBundle;

// Create the synthesizer.
ByteData bytes = await rootBundle.load('assets/akai_steinway.sf2');

Synthesizer synth = Synthesizer.loadByteData(bytes, 
    SynthesizerSettings(
        sampleRate: 44100, 
        blockSize: 64, 
        maximumPolyphony: 64, 
        enableReverbAndChorus: true,
    ));

// Turn on some notes
synth.noteOn(channel: 0, key: 72, velocity: 120);
synth.noteOn(channel: 0, key: 76, velocity: 120);
synth.noteOn(channel: 0, key: 79, velocity: 120);
synth.noteOn(channel: 0, key: 82, velocity: 127);

// Render the waveform (3 seconds)
ArrayInt16 buf16 = ArrayInt16.zeros(numShorts: 44100 * 3);

synth.renderMonoInt16(buf16);

Features #

  • No memory allocation in the rendering process.

  • Wave synthesis

    • SoundFont reader
    • Waveform generator
    • Envelope generator
    • Low-pass filter
    • Vibrato LFO
    • Modulation LFO
  • MIDI message processing

    • Note on/off
    • Bank selection
    • Modulation
    • Volume control
    • Pan
    • Expression
    • Hold pedal
    • Program change
    • Pitch bend
    • Tuning
  • Effects

    • Reverb
    • Chorus
  • Other things

    • Loop extension support
    • Performace optimization

Todo #

  • MIDI file support.

Feel free to port MIDI file support to Dart and make a pull request.

Its usage would look like this when implemented:

// Create the synthesizer.
var sampleRate = 44100;
var synthesizer = new Synthesizer("TimGM6mb.sf2", sampleRate);

// Read the MIDI file.
var midiFile = MidiFile("flourish.mid");
var sequencer = MidiFileSequencer(synthesizer);
sequencer.play(midiFile, false);

// Render the waveform (3 seconds)
ArrayInt16 buf16 = ArrayInt16.zeros(numShorts: 44100 * 3);

sequencer.renderMonoInt16(buf16);

License #

DartMeltySoundFont is available under the MIT license.

References #

28
likes
0
pub points
73%
popularity

Publisher

verified publisherjamcorder.com

A Soundfont synthesizer (i.e. '.sf2' player) written in pure Dart.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

More

Packages that depend on dart_melty_soundfont