Subject: ecasound snapshot with support for the new transport api (fwd)
From: Kai Vehmanen (kai.vehmanen_AT_wakkanet.fi)
Date: Fri Aug 08 2003 - 03:26:06 EEST
FYI. The new transport stuff requires JACK from CVS (0.76.1 or newer).
This snapshot does not contain any other changes since...
http://ecasound.seul.org/download/ecasound-2.2.4-snapshot20030728.tar.gz
---------- Forwarded message ----------
Date: Fri, 8 Aug 2003 03:24:12 +0300 (EEST)
From: Kai Vehmanen <kai.vehmanen_AT_wakkanet.fi>
To: jackit-devel_AT_lists.sourceforge.net
Subject: ecasound snapshot with support for the new transport api
The subject says it all, I've implemented pretty much complete transport
support using the new API. After applying the few fixes to jack-cvs (see
my earlier posts to jackit-devel), all basic functionality seems to work
fine.
The API was quite easy to use. Probably the trickiest part was handling
the corner cases:
- jack_sync_callback with state=rolling (not a common situation
but you have to do something about it in the code; I decided
to use my old chase-the-position code)
- 1st jack_process with state=rolling (your slow-start client is
started once the JACK system is already rolling; you have
to request for a transport reposition or try to chase the
engine position)
... but, but, still not too uncomfortable. The freely callable
jack_transport_start(), jack_transport_stop(), jack_transport_goto_frame()
and others proved to be especially nice; allows for much simpler
implementation.
You can get the ecasound snapshot at:
http://ecasound.seul.org/download/ecasound-2.2.4-snapshot20030808.tar.gz
A sample script for testing:
---cut--
[... start jackd]
shell1> jack_transport
jack_transport>
shell2> ecasound -i foo.wav -o jack_alsa -G:jack,myclient,sendrecv -c
ecasound> start
[--> you should start hearing 'foo.wav' ]
shell3> jack_showtime
[--> position should increase all the time and state should be rolling]
jack_transport> stop
[--> the audio and transport should stop]
jack_transport> play
[--> the audio should continue]
jack_transport> locate 88200
[--> the audio should locate to ~2sec ]
jack_transport> locate 0
[--> 'foo.wav' should start from beginnnig ]
shell4> ecasound -i foo.wav -o jack_alsa -G:jack,myclient2,recv -efl:400 -ea:200 -c
ecasound2> start
[--> you should now hear 'foo.wav' with a heavy emphasis on bass;
the two instances should play the file in perfect sample-sync ]
ecasound> setpos 0
[--> audio should start from the beginning ]
ecasound> stop
[--> all audio should stop]
---cut--
I just ran through the above steps succesfully, so it should work for
you, too. :)
PS As for ecasound's JACK mode parameters, I've replaced the old
'slave', 'master' and 'streaming' with new modes 'notransport', 'send',
'recv' and 'sendrecv'. These might still change. With the new
JACK tp-design it does not make sense for ecasound to takeover the
timebase master role, so these modes just control whether ecasound
will send position/state changes and/or react to incoming changes. I'm
not yet sure which of them should be the default.
-- http://www.eca.cx Audio software for Linux!
This archive was generated by hypermail 2b28 : Fri Aug 08 2003 - 03:24:27 EEST