2 Mar 2003 18:10
Proposition: Ecasound Blocking Audio Interface
janne halttunen <jhalttun <at> pp.htv.fi>
2003-03-02 17:10:38 GMT
2003-03-02 17:10:38 GMT
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 -- To unsubscribe send message 'unsubscribe' in the body of the message to <ecasound-list-request <at> wakkanet.fi>.
RSS Feed