Proposition: Ecasound Blocking Audio Interface

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

Subject: Proposition: Ecasound Blocking Audio Interface
From: janne halttunen (jhalttun_AT_pp.htv.fi)
Date: Sun Mar 02 2003 - 19:10:38 EET


Hi all,

Ecasound Blocking Audio Interface (EBAI)
----------------------------------------

prologue
--------

I have for long have had the need some how to route audio to ecasound from my own little programs.

First approaches have been something like:

$ myprogram | ecasound -i stdin

but to use ecasound's wonderful multitracking capabilities, a more complex approach must be assumed. Yet it's simple: FIFOs.

So:

$ mkfifo track1.raw
$ mkfifo track2.raw

And when I have my program writing to those FIFOs, I can start ecasound on them:

$ ecasound -a 1 -i track1.raw -a 2 -i track2.raw

This works, but it is a pain to write the same things always all over again. Hence, I propose standardization.

the API
-------

Keeping it simple.

*ECA_BLOCKING_AUDIO_INTERFACE

-open_port( name )

 Create EBAI port.

 In practice this means creating a FIFO to standard place, say:
"/tmp/eai-(ecasound-pid)/(port-name).raw", and then registering the port name alias to some place in Ecasound Control Interface.

 So that through ECI you could do: "ai-add (port-name)", which would resolve to the full: "/tmp/eai-(ecasound-pid)/(port-name).raw".

 It is up to the API user to keep track of which ports are for writing and which for reading.

-write_port( name, data )

 Write data to the named port.

-read_port( name )

 Read data from named port.

-flush_port( name )

 Flush buffered data from named port.

And that's it. Do we need more?

epilogue
--------

I'm pretty much set up to write the python implementation of this, integrating it with the native implementation of ECI, but I thought it would be best to ask for comments first before doing it.

So comments are welcome,

 
janne


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

This archive was generated by hypermail 2b28 : Sun Mar 02 2003 - 19:04:54 EET