Re: [ecasound] future of qtecasound?

New Message Reply Date view Thread view Subject view Author view Other groups

Subject: Re: [ecasound] future of qtecasound?
From: Kai Vehmanen (k@eca.cx)
Date: Fri May 05 2000 - 18:11:57 EEST


On Thu, 4 May 2000, Jeremy Hall wrote:

> How difficult would it be to write two new interfaces, 1: make a socket in
> /var/run/ecasound.$$
> 2: bind at a port if the -p or some such option exists.

This is quite easy. And actually, you can already do this:

/etc/inetd.conf:
--cut--
ecasound stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/ecasound -c
--cut--

/etc/services:
--cut--
ecasound 500/tcp
--cut--

Then I can use ecasound from my other machine:

--cut--
`--> ~ # telnet ecabase 500
Trying 192.168.0.2...
Connected to ecabase.
Escape character is '^]'.
****************************************************************************
* ecasound v1.7.8d12 (C) 1997-2000 Kai Vehmanen *
****************************************************************************
(eca-session) Interactive mode enabled.
ecasound ('h' for help)> aio-add-input /empty1/track04.wav
aio-add-input /empty1/track04.wav
(eca-controller) Added audio input "/empty1/track04.wav".
ecasound ('h' for help)>
ecasound ('h' for help)> aio-add-output
aio-add-output
(eca-controller) Added audio output "/dev/dsp".
(eca-controller) Added default output to selected chains.
ecasound ('h' for help)>
[...]
ecasound ('h' for help)> q
q
- [ Engine/Exiting ]
-------------------------------------------------------
Connection closed by foreign host.
--cut--

Isn't UNIX great? :) However, for local use, it's just as easy to
fork ecasound on the background (using interactive-mode) and redirect
ecasound input and output streams. This way you get two normal
file descriptors. One for sending ia-mode commands, and one for
parsing ecasound's output. 1.7.x version of ecasound also supports
additional dump-commands, that are really useful for these purposes.

> 1: a client can connect to a socket on a local machine with standard unix
[...]
> socket would not be created. This allows a front-end program to drive
> ecasound easily by sending/receiving on a pipe, rather than having to
> launch a new one.

Hmm, what I described above (fork + dup()), is just as easy. I'm
not sure how various scripting languages (Python, Perl, Guile, others)
handle these...?

> 2: bind to a port: If a cli program is running on a remote machine, it may
> wish to talk to an ecasound running on this machine. Make it use
> hosts.allow/hosts.deny or some such. I'll write up the RFC describing the

How about my inetd solution? I admit it's a bit of a hack, but it does
just what you describe.

> protocol. In this way, interactive mode might be able to be removed
> completely from ecasound and moved to ecacli, ecasound becomes ecasoundd

Btw; ecasound's ia-mode is implemented on the library
level. Due to this, console-mode ecasound is very, very simple. It
reads user input using GNU readline (which provides the
command-line history) and sends everything to the library. This means,
that ia-mode can be used in all ecasound-based apps.

-- 
Kai Vehmanen <k@eca.cx> ---------------- CS, University of Turku .
 . audio software for linux .. http://www.eca.cx 		 .
 . armchair-tunes mp3/wav/ra . http://www.wakkanet.fi/sculpscape .

-- To unsubscribe send message 'unsubscribe' in the body of the message to <ecasound-list-request@wakkanet.fi>.


New Message Reply Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri May 05 2000 - 18:31:13 EEST