On Sat, Feb 21, 2009 at 2:37 PM, Darren Landrum <darren.landrum@sbcglobal.net> 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? 

this has been many people's dream. its part of the reason why systems like PureData exist. 
there are some rather hard problems along the way. transport is one of them - this has effects on components of a DAW in ways that are not immediately obvious, and its one reason why you will have a hard time making a purely modular system usable as an HDR. conceptually speaking, modular systems patch together using data flow; adding a timeline creates a new kind of dependency that is othorgonal to the actual flow of data between the "nodes". the consequences of moving data from one node to another are easily expressed, highly constrained and generally very encapsulatable. by contrast, the consequences of moving between points on a timeline do not have these properties.

I've been thinking a lot about a comment made a while back about how
monolithic applications are very ill-suited to the open-source method of
development.

i'm not sure i'd agree with this anyway, but even if i did, it doesn't mean that the answer is to immediately ditch any semblance of "monolithic-ness". it could be that the right answer is a host with plugins that finds the right balance
between modularity and monolithic-ness.

So I got to thinking about how an operating system works

which operating system?
 
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.

hmm... does this sound anything like JACK?

if you want to understand why this is hard (not impossible, just hard), go read the ardour source code and find all the places where *unexpected* inter-object dependencies appear. then figure out how to remove them. if you can do that, you'll be able to make a modular system work. if not, you'll at least understand why nobody has else has been able to do it so far.