On Sun, 2008-09-28 at 14:30 +0100, Chris Williams wrote:
As regards the merits or not of writing an instrument
as
a plugin, that's been addressed by some other respondents.
The fact is that an instrument does *not* need OS-levels
of interaction; it needs timing and midi data and output
audio buffers, and optionally some facility for providing
a GUI -- that's about it.
You're thinking small :) File I/O, network interaction, interactions
with different sorts of input devices ... there's more.
Doing it *solely* as a
standalone app means you're stuck with that model forever.
this is the major benefit of the callback API style that JACK,
PortAudio, ASIO and CoreAudio use. if you know what you're doing (sort
of), it is easy to move back and forth between the "standalone app" and
"plugin " design because the basic audio & MIDI i/o is done in the same
way.
There's a reason that ReWire (*loosely* a jack
equivalent)
slowly became deprecated in favour of VSTIs on Windows.
Couldn't be the idiots at propellerhead and their license policy, by any
chance?
The
prevalence of "using the OS" in the linux world is more to
do with with the disparate and divided state of DAWs, host
support for instruments, and the (quite wonderful) state of
jack than it is to do with it being inherently the best
solution. Everyone writes to jack (or ALSA) because they
know it's a common denominator that's guaranteed to work
well (as well as the fact that jack's architecture can
replicate host provision to an extent) not because it's
necessarily the best model for doing it a priori.
It might suprise you that I probably agree with this point even more
than you do :) JACK exists primarily because there was not a suitable
plugin API on linux and because several of us felt it unlikely that
there ever would be one. The biggest obstacle of all was the
still-unsolved issue of GUI toolkit compatibility. Its remarkable and
cool that JACK works as well as it does, and the isolation it provides
between processes can be handy. But yeah, if we had had a single GUI
toolkit and a decent plugin API ... no JACK would have emerged,
probably.
--p