Hello list,
I've been experimenting with using jack.plumbing instead of
jack_connect to make connections for Nama/Ecasound.
As I understand it, Ecasound behaves differently than most
other JACK clients. Ecasound registers its ports with JACK
when the engine is launched, and de-registers its ports when
the engine is disconnected.
Nama configures Ecasound by writing a chain setup,
loading it, (re)writing the .jack.plumbing config file,
and allowing time for jack.plumbing to connect
the desired ports.
However if jack.plumbing happens to poll while
ecasound is not connected to jack, j.p dies with
errors.
Connect: 'system:capture_1' -> 'ecasound:brass_in_1'.
jack_connect() failed: 'system:capture_1' -> 'ecasound:brass_in_1'
Jackd reports:
Cannot connect ports owned by inactive clients: "ecasound" is not active
I've found that rapidly connecting and disconnecting ecasound
is a reliable way to kill jack.plumbing.
I am trying to work around this by killing and restarting
jack.plumbing each time Nama reconfigures Ecasound, however
my code's still not reliable.
It would be nice if jack.plumbing could handle Ecasound's
routine behaviors more robustly.
Although ignorant about many things JACKish, I would expect
that it's fair for a JACK client manage its ports as allowed
under JACK's API.
I'd appreciate any suggestions, as I'm about at the end
of rope (at least without plunging into jack.plumbing
and Ecasound's sources.)
Regards,
Joel
--
Joel Roth