Re: [ecasound] Constantly visible JACK ports

From: Kai Vehmanen <kvehmanen@email-addr-hidden>
Date: Mon Dec 13 2010 - 01:23:33 EET


On Sun, 12 Dec 2010, Julien Claassen wrote:

> We've been wondering over at the Nama mailing list again, if it might not be
> possible to somehow keep JACK ports running as long as possible. I wondered,
> as a first step in that direction, might it not be possible to have an
> ai-replace and ao-replace command?

this would be highly desirable, but currently not possible, and quite
difficult to implement. Current ecasound codebase is just not prepared to
cope with modifying the static configuration (adding/removing audio
objects, chains, chainops) while chainsetup is connected (~= engine

> I don't know, what exactly is done, when I remove an input, but I
> immediately get an error, telling me that the current chainsetup can't be
> connected. For an ai-replace command that step might be skipped in between.

When you perform an operation that cannot be done while chainsetup is
connected ("Real-time commands" listed in ecasound-iam(1)), ecasound
disconnects the chainsetup automatically, performs the operation and tries
to reconnect.

This works in some cases (like adding a new chain operator with
'cop-add'), but if you remove an input, then the reconnect will fail (as
some chain will not have any input).

So to implement this better, the client should explicitly disconnect the
chainsetup, perform a set of ops that result in a modified chainsetup that
again can be connected, and the perform the reconnect. This will not fail
and will be much nicer to the end-user (there's a brief pause but
otherwise processing will continue with the new setup).

> Or does the engine have to be stopped completely to change anything in the
> chainsetup?

Yep, the definitive list is in ecasound-iam(1) man page and the "Real-time

> Wat might be other ways to help in this respect? Perhaps allow creation of
> jack porrts (ask for 12 out and 6 ins) and assign them to chains, when needed.
> would that work? If the ports aren't used, just feed them with null audio or

That won't work I'm afraid (you can only request ports as part of a
chainsetup, and once the chainsetup needs to be modified, all ports
disappear as well).

Another approach is to run many instances of ecasound, all connecting to
JACK. You may reconfigure one ecasound instance (bring it offline from
JACK), but the other instances won't get interferes and continue

Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
new data types, scalar functions, improved concurrency, built-in packages,
OCI, SQL*Plus, data movement tools, best practices and more.
Ecasound-list mailing list
Received on Mon Dec 13 04:15:05 2010

This archive was generated by hypermail 2.1.8 : Mon Dec 13 2010 - 04:15:05 EET