Skip to content
Tom M edited this page Jul 1, 2017 · 7 revisions

FluidSynth 2.0

This page is dedicated to ideas for inclusion in the FluidSynth 2.0 development branch. Its a work in progress and some of these may not be included during the development cycle.

Feel free to edit this page, add any new ideas or opinions.

Proposed Features

  • Overhaul API to make it more modular and clean (less exposed internals)
  • Add glib as a dependency for portability functions and data types (hash tables, arrays, memory slices, etc)
  • Sample streaming support
  • MIDI file rendering in non-realtime (as fast as possible) with exact event timing.
  • Real synchronous stereo and multi-channel audio (voices guaranteed to start at the same time)
  • Improve voice stealing algorithm
  • Audio file output (WAV, AIFF, etc) using libaudiofile
  • Synthesis verification and test suites. There needs to be an easy way to verify the output and analyze at a sample by sample basis
  • Fix LADSPA plugin support and add LV2 support
  • Research bad out of tune sounding audio when using Chorus and/or Reverb and fix it.
  • OSC support for control of the features in the telnet interface, from scripts or from language environments such as ChucK, SC, PD, CSound, etc.
  • RTAudio Output Support
  • Add libInstPatch as a dependency, which would add the following features (some of these are still in development):
  • 24 bit [SoundFont] support
  • Support for other instrument formats (limited DLS and GigaSampler support)
  • Virtual bank support (XML files which reference instruments in one or more other instrument files)
  • SFZ File and Bank Support
  • On demand loading of instruments
  • CRAM instrument compression support
  • Global "session" modulators for adding or overriding default modulators
  • Improve the quality of rendered midi by adding a feature similar to "human playback" of Finale, that adds small variations in the MIDI. Human Playback is trademark, so another name should be used here!

Documentation

Design ideas and documentation.

  • Design proposal and documentation?

  • "Human Playback" of Finale is similar in essence to "Sound Set System" in Sibelius, and has been implemented by Robert Piechaud (now at makemusic.com). misc. links:

  • http://www.finalemusic.com/finale/features/hearingyourmusic/HumanPlayback.aspx

  • http://www.garritan.info/index.php/Finale_Human_Playback_Tutorial

  • quote from qccowboy on http://www.northernsounds.com/forum/showthread.php?t=67569&p=621899:

    in Finale, HumanPlayback does a whole lot of things (more than just "make it sloppy"). And HP has improved by leaps and bounds since Finale 2003.

    I does randomize some note events.

    However, it also creates swells and decrescendos on long notes, it tapers off phrases, it abbreviates notes (breathes) between phrases, it also

    correctly interprets all dynamics and most articulations as well as text expressions for keyswitching and expressive text, as well as all tempo

    marking including rit., accel., and a tempo.

    I believe HP is also responsible for recognizing that when music is d\u00e9tach\u00e9 at certain tempos it should use certain keyswitched sounds or attacks.

    HP rolls chords when the articulation is placed, but will also automatically roll a chord for certain instruments - like harp, for instance, or

    harpsichord (when set to "Baroque" style).

    HP also recognizes the word "solo" and will boost the volume on that instrument ever so slightly.

    HP recognizes instrument names and will apply techniques to those instruments where applicable.

    The advantage to HP, of course, is that you do not need to "play in" an interpretation to have Finale perform your score expressively.

    Finale also allows you to include "invisible" indications (both articulations and expressions) where you can fine-tune the performance more to your

    liking. HP will recognize those and play them back.

    This means that in the vast majority of cases, Finale is capable of expressively playing back a score that is ALSO of a high enough quality to

    satisfy any nit-picky engraver.

    With a library of expressions and articulations (including your own added invisible or custom articulations and expressions), it then becomes easy

    to immediately create an expressive score in Finale.