On Sat, Feb 21, 2009 at 02:37:24PM -0500, Darren Landrum wrote:
If one were to build a "kernel" to a digital
audio workstation that was
itself a bare-bones LV2 host, could things like audio tracks, midi
tracks, and mixer channels and the like be built as LV2 plug-ins?
Sure. They output/read data when asked to do so. Which directly reminds
me of "host synchronization is crucial for a successful plugin API." ;)
We had this discussion two or three weeks ago in #lad, and I claim the
foremost question to audio production on Linux is a decent plugin API
which enables others to write neat plugins. (Think of Cubase. While it
is quite fine, the various VST plugins make the salt...)
One of the key requirements for such an API (and it looks like LV2 could
be that API) is host synchronization. A delay would need to know about
the tempo, so it can output the echos exactly at 1/4, 2/4 or whatever
the user will choose. "213.8ms" isn't the way musicians/producers think.
Synth plugins would also need to know about transport or at least
something like "next bar started" (event?). Think of a synthesizer which
outputs louder on the first note of the bar, a panner starting at 100%
left on the first note or something similar.
This "kernel" would have to handle things
like audio routing, and
message passing between two "processes" (the LV2 plug-ins), and would
jockey the audio in and out of the plug-in graph. It would need to
support the GUI and event extensions, and probably a few others, at the
very least.
You describe the LV2 host. It routes audio from and to LV2 plugins.
Along the graph. It would need a GUI, yes. And automation. And total
recall, so when I open the project, all the LV2 plugins have exactly the
state they had when I pressed "Save".
Looks like LASH is going to be used for that, though I don't know why
the LV2 API shouldn't simply offer a get_config() and set_config()
function. (don't know if LV2 has functions, what I describe here is VST
chunks)
Anyway, if LASH will do the trick, be my guest. Separate API or
integrated into LV2 doesn't make much difference, does it?
The hope might be that if such a kernel could be made,
it might then be
a lot easier for many people to contribute the small pieces that would
make for a usable application.
Exactly my point. Once there is a suitable plugin API, nobody would ever
need to think about how to get MIDI data in/out, audio in/out, timings,
total recall... in other words: every audio application would simply be
a LV2 plugin. The EQ, the compressor, the synth, the analyzer, the
finalizer and so on.
No new application would directly interface with jack, won't neither do
jack_midi nor ALSA midi, but simply LV2.
I like that idea, probably because it's just the way Cubase does it with
VST(i).
A last remark: what you call a "kernel" could be ardour or qtractor one
day. There's no use and no need in getting rid of the real OS, let the
Linux kernel do the hardware handling for you, implement your LV2 host
and do everything else in a LV2 plugin.
Could be that easy ;)
--
mail: adi(a)thur.de
http://adi.thur.de PGP/GPG: key via keyserver