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: [email protected] http://adi.thur.de PGP/GPG: key via keyserver _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
