[LV2] Powered By Ingen

David Robillard d at drobilla.net
Sat Jun 29 11:53:28 PDT 2013

On Wed, 2013-06-26 at 14:49 -0500, Michael Fisher wrote:
> Hello all,
> I was wondering what the intentions for using Ingen as a shared library
> are.  Is this so I can manage an Ingen::World myself, create my own
> clients, start the jack engine, etc, etc?  I noticed headers for the
> server aren't installed.
> I'm aiming at starting yet another audio/midi sequencer.  Some how some
> way I want to power the engine primarily with LV2 technology and Ingen
> graphs.  The idea behind graph usage is to layout processing logistics
> in the sequencer and also be used as a standard "instrument" format.

The public library API is still in its infancy and is not currently used
by anything other than Ingen itself.  It should be possible to do
everything Ingen the program does, though some things are indeed private
like server internals.

> Hypothetically a "Sequence" could be some kind of derived graph, which
> manages some "Track" blocks (not sure how clip/regions of data would fit
> in yet).  And through the nature of ingen graphs, sequences
> theoretically can be nested inside of one another (kind of like what you
> see in Adobe Premiere)

There is work that needs to be done here in terms of new plugins and
support for them and so on, which is orthogonal to using Ingen as a
library.  Essentially if you can't patch it in the GUI, you can't do it

Personally I would address being able to do what you want in the first
place before trying to wrap a new custom app around it, which is a bunch
of additional complexities and only useful in one use case as opposed to

> So obviously a full fledged midi sequencer + capture isn't really doable
> with the stock ingen jack/server, but from what I've seen in the code
> there's potential for just about anything audio-wise and could easily be
> used as a starting point.

Moving around time might be tricky, but otherwise I'm not so sure.  By
sending events around you can do pretty much anything.

> Dave, what do you think.  What would be a decent way to derive new
> Internal blocks and graphs?  The only thing I can tell with current
> materials, is just write my own engine or copy the stock engine and use
> it as a starting point.  Or is this probably a bad idea?  It would be
> nice to code things in a manner where I can offer patches to Ingen where
> applicable.

The core of the Ingen Philosophy(TM) is that internals should not exist
unless there is some good reason why they have to.  Everything should be
done by plugins.

Internals are only for cases where the implementation needs to interact
with the Ingen internals in a way that's not reasonable to add to the
general LV2 API.

> I'm looking for ways to not re-invent the wheel and so far the LV2 model
> makes the most sense to me, even at the application level.

In general, yes, this is very much what I've had in mind for the tool.
Just as those in the Pd and Max worlds build very advanced environments
in their tools, it should be possible to build anything you want in
Ingen, including sequencers and other things with logic in them.  I'm
all for work in this direction.

Personally I think the more interesting thing, and what needs doing
first, is designing how to build such things in a graph, writing the
necessary plugins, etc.  An app that uses Ingen as a library may be able
to do fancy other things, but should not be necessary, and also strikes
me as an overly ambitious project less likely to make tangible usable
progress (this has happened before).



-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20130629/b18152a5/attachment-0002.pgp>

More information about the Devel mailing list