Hi all,
together with Christian we already had several discussions about
implementing a new modular engine for LS
along with an open  sample file format.

This time we would like to avoid hardcoded design as it is too limiting.
the idea is to construct a sampler from scratch by using basic building DSP
blocks, oscillators, envelope generators,
filters, modulators, event generators and filters, and so on.
This basically will turn LS into soft of a powerful modular synth although
we try to focus on sampling but I guess over time
the boundaries between synth and sampler will become more and more blurred.

the idea is the following: for example when building your sample library you
build your sampling engine as well.
This has the advantage that you can custom tailor the engine to the samples.
For orchestral samples not much FXes are needed so it would not make sense
to play them back through
an engine which offers hundreds of sample mangling functions. (waste of
resources).

The proposal is to describe the basic DSP building blocks for example using
an XML file which describes it's
characteristics. name, description, inputs, outputs, input/output data types
(audio, midi, numeric values etc)
and contains the implementation too, for example a C/C++ code fragment or
some pseudo code which can efficiently
translated into an executable.

Then there would be an engine editor, similar to the editors of the various
modular synths available.
You connect the various modules
for example MIDI input -> sample playback -> filter -> envelope -> audio
output
and get your own instrument.
The code generator would then generate an engine which can be loaded by LS
and which would provide
performance comparable to hard coded engines.
The sampling format probably will be XML based too and should follow the
same concept, open and flexible.
the advantage of this system is that you can ship the description of the
engine along with the samples
and ensure that it will always playable on any system with native
performance.

With this system you could quite easily (often without any or little coding
at all) implement engines
for legacy formats like AKAI etc.

and of course new modules could be written by users, thus extending the
capabilities of LS.


I think investing time to write a new hard coded engine does not make sense
anymore as afterwards
one always discovers some design errors, mistakes, omissions etc and fixing
this later can become very hard.
OTOH with a modular design it is much easier to change and adapt the
features of the system.
And if some basic building blocks are missing then they can be implemented
without touching the
general framework.

About representing the GUIs of basic building blocks there would be two
ways:
the GUI editor could read the XML describing the basic building block and
create a view from it,
for example:  sample playback module: 1 MIDI note input,  2 audio outs,
volume input
do it could draw a box with the the inputs on the left and the audio outs on
the right.
But the need for custom GUIs could arise too, when dealing with more complex
modules.
For example a FFT filter where you can draw your own filter curve with the
mouse.
The idea is support methods in order to provide maximum flexibility,
although for the beginning prefer
to use the view creating method form the module's description as it would
cover most of the user's needs.

Let's enlist which basic building blocks would be needed for our engine.
A few modules that come to mind:
- MIDI input/output
- audio input/output
-  oscillators
- filters
- envelope generators
- event generators / filters
- mathematical operators (adders, integrators etc)
- data type converters

add your own wishlist below :)

waiting for your feedback and ideas, criticism etc

We will then collect all the inputs and try to produce some draft specs
document.

thanks,
Benno
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Linuxsampler-devel mailing list
Linuxsampler-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel

Reply via email to