[linux-audio-dev] Creating the conditions for VST-like plugins on Linux.

From: Juan Linietsky <coding@email-addr-hidden>
Date: Fri Apr 08 2005 - 20:57:04 EEST

Hi ! I'm writing this mail because at this point I'm seeing that the
Linux Audio Development community is still going aimlessly on how to
develop powerful audio applications. As we know, one of the key factors
missing nowadays is audio plugins and synth plugins. Some audio plugin
needs can be covered by LADSPA, but in other cases you need a lot more
complex interfaces than just a few sliders.. (like is compressor with
curves, graphical equalizers with band feedback, parametrics, multiband
compressors, voice autotunning, surround spatial repositioning.. and
everything available of course, that would become more intuitive and
useful with more feedback)

Also there is the need for instrument plugins, single or multi timbral
(so you dont have to load all the instances at once). DSSI provides this
(except the multitimbral) but you have to write the interface separated
than the core, which not only is more difficult to program, but also
very limiting because in many cases you cant show with much detail what
is going inside the synth, like editing a sample, draw freeform
envelopes, edit the oscilator generator, etc. And better not talk about
effects, which need spectrums, vus, and other kind of complex feedback.

So, I'm sure that many of you have asked yourselves, why cant we have a
VST-like plugin architecture for Linux?

The following are excuses:

-Because we need core and interface separation, this way we warranty a
clean design and network transparency
-Because it would force both interface and core to be memory locked, as
a result of being a jack clients, forcing more physical memory to be used
-Because separating interface and core makes for a clear design.

And I say, ALL THIS IS LIES. Every single of such reasons are of no
concern to musicans. If I just want to make music, I would not care
about any of such reasons. I'd just fire up an application and make
music. All that seems to me more like academia-speech than real reasons.
You can believe them or not, but it's PROVEN that none of these are
needed to make music.

However, there is a one and single reason of why we dont have VST-Like
plugins in Linux:

-It is impossible to make a plugin in a widget toolkit that will be
hosted by another widget toolkit. (say, gtk on qt, or fltk on fox).

Why is this? The answer is simple.. X11. An X client connects to the
Xserver (via unix socket/tcp/wathever) then stays blocked in that
connection until it receives events (keypress/mouse/etc), which are sent
to the event loop. It is then the toolkit (gtk/qt/etc) the one
responsible for handling the events. This way, even if you load many
toolkits at the same time, and even each opens a connection... one of
them has to stay blocked in the event loop.

This is the REAL reason why we cant make a VST-Like plugin API in Linux,
or EVEN port opensource VST plugins and use them here.
Up to now, nobody has really bothered in solving this problem, instead
most just attempt finding a workaround.

So what I am proposing is to SOLVE this problem.. how?

-Designing a library that will act as intermediate between the toolkits
and the X Connection, handling the event loops for all of them, so they
can run together.
-Placing this library in freedesktop.org
-Encouraging toolkit makers to support this library, and porting them to it

As you see, this is not a simple task, and much less something I can do
alone, so I will need help!! I am very sure that at some point we will
get support from other groups which will also benefit from this.

So before anything, I'd like to know who is interested in this, and who
would like to help, offer experience, etc.

Well, hope I get any feedback

Cheers!

Juan
Received on Sat Apr 9 00:15:10 2005

This archive was generated by hypermail 2.1.8 : Sat Apr 09 2005 - 00:15:11 EEST