ecasound snapshot with support for the new transport api (fwd)

New Message Reply About this list Date view Thread view Subject view Author view Other groups

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!


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri Aug 08 2003 - 03:24:27 EEST