The LinuxSampler Project
@@ -111,6 +122,8 @@ + + @@ -118,50 +131,209 @@ + + ++
Features / Development Roadmap
+LS Development Roadmap
++ The following list shows the planned work to be done until the next + release of LinuxSampler. There will be no new release before all of them + are completed. +
+ +-
+
- Abstraction of common code from existing Gigasampler engine to base classes for further sampler engines. +
- + Implementation of + SFZ(2) format sampler engine. + +
- + Implementation of + SF2 format sampler engine. + +
- + Implementation of + Akai format sampler engine. + +
Done | +Partly implemented | +No work started yet | +
+ Note that we frequently cast a moderated poll on our + web forum for + the next features to be implemented and problems / bugs to be + fixed soon. Don't hesitate to register to our forum and vote for + your feature! +
+ +Features
+The following list shows which features have already been implemented in - current CVS version of LinuxSampler and what is planned to be done in - (hopefully) near future. If you are missing something that is not already - listed below, you can write a proposol to the + current Subversion version of LinuxSampler and what is planned to be done + in (hopefully) near future. If you are missing something that is not + already listed below, you can write a proposal to the developers mailing list - or even better send us your patch if you have done something. Even + , open an "enhancement" request on our + bug tracking system + or even better send us your patch if you have done something. Even if features are listed to be planned below, it can be that it takes a while until somebody finds the time to implement it. So if you have the time and will to finish one of them, let us know!
--
+
- Operating Systems + +
- Host plugin versions of the sampler
+
-
+
- VSTi (Windows) +
- Audio Units (Mac) +
- DSSI (Linux) +
- LV2 (Linux) +
+ - MIDI input drivers + + +
- Audio output drivers +
- Sampler Engines
- Gigasampler Engine
-
-
- Gig file loader -
- Generic playback (RAM & disk streaming) -
- Dimension switching -
- Sustain pedal support +
- Gig file loader
+
-
+
- Gig v2 format +
- Gig v3 format
+
-
+
- large file support (64 bit file offsets are currently truncated to 32 bit) +
- 24 bit samples (uncompressed as well as compressed) +
- support for multi-file format (.gig, .gx01, .gx02, ...) +
- support for articulation (.art) files +
- support for Dimension Splits not equal to two +
- up to 8 Dimensions or 256 Dimension Regions +
- MIDI rules +
- convolution +
+
+ - Generic playback (RAM playback & disk streaming) +
- Dimension switching
+
-
+
- Sample Channel +
- Layer +
- Velocity +
- Channel Aftertouch +
- Release Trigger +
- Keyboard Position +
- Round Robin +
- Random +
- Modulation Wheel +
- Breath Ctrl. +
- Foot Ctrl. +
- Portamento Time Ctrl. +
- Effect 1 & 2 Ctrl. +
- Effect 1 - 5 Depth Ctrl. +
- General Purpose Ctrl. 1 - 8 +
- Sustain Pedal +
- Portamento +
- Sostenuto Pedal +
- Soft Pedal +
+ - Sustain pedal interpretation +
- Sostenuto pedal interpretation
- Key velocity <-> volume mapping -
- Looping +
- Looping
+
-
+
- endless loop +
- limited amount of loops +
- fractional looping +
- Pitchbend wheel support -
- Bidirectional voice state transition -
- Filter (VCF) +
- Bidirectional voice state transition, allowing + to cancel the relase stage of voices forth and back arbitrary + times if needed +
- Filter (VCF)
- Highpass
- Bandpass -
- Bandreject +
- Bandreject
- Lowpass -
- Turbo lowpass +
- Turbo lowpass +
- all filter types provide extremely + accurate characteristics compared to the original + Gigasampler format filters
- Cutoff frequency controllable by MIDI controller
- Resonance controllable by MIDI controller
- VCO Low Frequency Oscillator (Pitch)
- Layers
- Crossfades -
- Key Groups (a.k.a Exclusive Groups) -
- Release Triggered Voices -
- Key Switching +
- Key Groups (a.k.a Exclusive Groups), + for mutually switching off sounds i.e. for drumkits +
- Release Triggered Voices, specific samples + that are played back when voices are released +
- Key Switching, which allows to map a certain + range on thy keyboard as additional performance controller, + i.e. for switching articulations of orchestral sounds in realtime
- Voice Stealing +
- Portamento Mode and Solo Mode (a.k.a 'Mono Mode', + can be altered via standard GM messages, that is CC5 for + altering portamento time, CC65 for enabling / disabling + portamento mode, CC126 for enabling solo mode and CC127 for + disabling solo mode) +
- Scale Tuning (via standard MIDI GS SysEx message)
- DLS Engine @@ -188,7 +370,7 @@
- Akai Engine
- Akai file loader (S1000, S3000 series) +
- Akai file loader (S1000, S3000 series)
- Generic playback
- Custom, modular Engine @@ -196,80 +378,11 @@
-
-
- Gigasampler Engine
- Control interfaces
-
-
- ALSA MIDI input -
- Network remote control layer for frontends (LSCP)
-
-
-
- Events / Client Notification -
- Control Commands
-
-
-
- GET AVAILABLE_AUDIO_OUTPUT_DRIVERS -
- GET AUDIO_OUTPUT_DRIVER INFO -
- GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO -
- CREATE AUDIO_OUTPUT_DEVICE -
- DESTROY AUDIO_OUTPUT_DEVICE -
- GET AUDIO_OUTPUT_DEVICES -
- LIST AUDIO_OUTPUT_DEVICES -
- GET AUDIO_OUTPUT_DEVICE INFO -
- SET AUDIO_OUTPUT_DEVICE_PARAMETER -
- GET AUDIO_OUTPUT_CHANNEL INFO -
- GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO -
- SET AUDIO_OUTPUT_CHANNEL_PARAMETER -
- GET AVAILABLE_MIDI_INPUT_DRIVERS -
- GET MIDI_INPUT_DRIVER INFO -
- GET MIDI_INPUT_DRIVER_PARAMETER INFO -
- CREATE MIDI_INPUT_DEVICE -
- DESTROY MIDI_INPUT_DEVICE -
- GET MIDI_INPUT_DEVICES -
- LIST MIDI_INPUT_DEVICES -
- GET MIDI_INPUT_DEVICE INFO -
- SET MIDI_INPUT_DEVICE_PARAMETER -
- GET MIDI_INPUT_PORT INFO -
- GET MIDI_INPUT_PORT_PARAMETER INFO -
- SET MIDI_INPUT_PORT_PARAMETER -
- ADD CHANNEL -
- GET CHANNELS -
- LIST CHANNELS -
- REMOVE CHANNEL -
- GET AVAILABLE_ENGINES -
- GET ENGINE INFO -
- GET CHANNEL INFO -
- LOAD ENGINE -
- LOAD INSTRUMENT -
- GET CHANNEL VOICE_COUNT -
- GET CHANNEL STREAM_COUNT -
- GET CHANNEL BUFFER_FILL -
- SET CHANNEL AUDIO_OUTPUT_DEVICE -
- SET CHANNEL AUDIO_OUTPUT_TYPE -
- SET CHANNEL AUDIO_OUTPUT_CHANNEL -
- SET CHANNEL MIDI_INPUT_DEVICE -
- SET CHANNEL MIDI_INPUT_TYPE -
- SET CHANNEL MIDI_INPUT_PORT -
- SET CHANNEL MIDI_INPUT_CHANNEL -
- SET CHANNEL VOLUME -
- RESET CHANNEL -
- SUBSCRIBE -
- UNSUBSCRIBE -
- SET ECHO -
- QUIT -
- RESET -
-
- Native C++ API +
- Custom network interface for frontends (LSCP) -
- VSTi -
- MIDI over ethernet (Distributed MIDI) -
- CoreMIDI (Mac OSX) -
- - Audio output interfaces -
- Time stamp event system & jitter correction @@ -284,10 +397,74 @@
- Dynamic engine recompilation
- Extensive SMP (multi processor) support
- Network cluster support -
- (Graphical) frontends +
- MIDI instrument mapper, allows to create very flexible MIDI progam change setups in a very easy way.
+
-
+
- MIDI program change +
- MIDI bank select (automatic detection of MSB only, LSB only or full MSB+LSB) +
- Load Strategy for each Item individually
+
-
+
- On-Demand: loads the instrument only when needed, frees it immediately once not used by any sampler channel anymore +
- On-Demand-Hold: loads the instrument when needed and keeps it in memory, that is even if not used by a sampler channel +
- Persistent: loads the instrument immediately in the background (i.e. at sampler startup), allowing immediate program changes in realtime even of largest instruments, without wait time +
- Default: let the sampler decide +
+ - Volume Factor for each Item, allowing to compensate the volume difference of sample library collections i.e. for live performances, without having to edit the instrument files +
- Mapping of arbitrary Instrument Files, already independent of the underlying format in respect for future sampler engines +
- arbitrary amount of independent MIDI instrumet maps, (i.e. for chromatic instruments, drumkits, ...), each sampler channel can be assigned to a specific MIDI map +
+ - Effect Sends
+
-
+
- Arbitrary Amount of FX Sends on Sampler Channels +
- Realtime MIDI Control of Send Level +
- Arbitrary MIDI Controller assignable +
- Flexible Routing i.e. to a dedicated effect audio output +
+
+ - Instrument Database System, allowing to keep track of even the largest sample library collections
-
-
- Qt based frontend -
- VSTi frontend (based on the Qt frontend) +
- Ordering in Categories +
- Search by various Criteria +
- Transparently maintained on backend side +
+ - (Graphical) frontends
+
-
+
- JSampler a.k.a "Fantasia" (Java based frontend)
+
-
+
- Supports all currently available features of LinuxSampler +
+ - QSampler (C++ based frontend using Qt)
+
-
+
- Supports all features of LinuxSampler except the following ... +
- MIDI Instrument Maps + (qsampler does currently not yet support to create more than two MIDI instrument maps [one intended for chromatic instruments and one for drumkits]) + +
- Instruments DB support (to ease handling of huge sample library collections) +
- Audio and MIDI device management (only minor thing that qsampler lacks support yet are "multiplicity" type device parameters, that is parameters which don't just accept one value, but also a list of values, i.e. for the "ALSA_SEQ_BINDINGS" parameter of the ALSA MIDI driver) +
+
+ - JSampler a.k.a "Fantasia" (Java based frontend)
+
- Playing while Loading, i.e. allowing to play and hold notes on the keyboard + while loading a new instrument on the same sampler channel at the same time +
- Limits for max. voices and max. disk streams can be altered at runtime +
- Instrument Editor Plugin System for 3rd Party Instrument Editors +
- Instrument Editors
+
-
+
- gigedit (C++ based using gtkmm/Gtk+)
+
-
+
- allows to modify all aspects of Gigsampler v2 and v3 format files +
- allows to modify existing as well as creating completely new .gig files from scratch +
- stand-alone mode (independent of LinuxSampler) +
- live-mode (attached with LinuxSampler), which makes all modifications audible in the sampler in realtime without having to reload +
- created / modified files are accepted by LinuxSampler as well as by Gigastudio 3 +
- virtual MIDI keyboard (for triggering notes by mouse click and highlighting the virtual keys on external note events) +
- gigedit (C++ based using gtkmm/Gtk+)
+
- (List last updated 2005-02-10, also see CVS Log for recent changes) + (Last page update on $Date: 2009-11-24 18:33:54 $ by $Author: schoenebeck $, + also see Subversion Log for recent changes)