Re: [ecasound] Constantly visible JACK ports
Brought to you by:
kaiv
From: Kai V. <kve...@ec...> - 2010-12-12 23:46:30
|
Hi, 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 running). > 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 commands"). > 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 processing. |