[linux-audio-user] ices-jack pico-howto

Eric Dantan Rzewnicki rzewnickie at rfa.org
Mon Sep 20 17:13:45 EDT 2004


On Sun, Sep 19, 2004 at 12:22:27AM +0200, Joern Nettingsmeier wrote:
> ao, vorbis, ogg, ogg2, theora, speex, vorbis-tools, ogg-tools
> (do this even if you have ogg packages from your distro installed, 
> it won't do no harm and makes sure you've got the latest'n'greatest)
> there's nothing interesting to configure afaik, so you can compile 
> them (in that order) without interaction:
> for i in ao vorbis ogg ogg2 theora speex vorbis-tools ogg-tools; do 
> svn co http://svn.xiph.org/trunk/$i; cd $i; ./configure && make 
> install ; cd .. ; done
> from icecast/branches/kh, check out
> libshout, icecast, ices

I just read through this again and a few questions popped up:

ices runs on the sound source and connects to jackd, correct? (I think
this is what you state below, but just want to double check.)

Have you, or has anyone you know of run jackd and ices on a box with no
soundcard using the jackd dummy driver? (more on why below.)

If I want to stream out ogg vorbis, at which point does the encoding
happen, on the audio source/ices/jack box or the icecast box?

Other than ices and icecast, do both the icecast box and the ices box 
need all of the svn packages you list above?

> now fire up icecast, fire up ices, connect it to your jack graph, 
> and the fun starts.
> the default config files are extensively commented, but here's my 
> config, in case you need some more inspiration:
> http://spunk.dnsalias.org/download/ices.xml
> http://spunk.dnsalias.org/download/icecast.xml
> (the source and server run on different hosts, and icecast runs 
> chrooted and as user icecast)

here source = ices, server = icecast? (again, just double checking.)

> btw, a graph with an ogg edge between ices-jack and xmms-jack 
> vertices makes a nice delay effect :) if you use feedback, there's 
> interesting sound deterioration due to repeated 
> ogg-encoding/decoding and noise buildup. here's me toying around 
> with my bass and such a setup:
> http://spunk.dnsalias.org/download/netjam.ogg

:-D

I've planned a streaming self-feeding composition project to 
specifically make use of the repeated vorbis encode/decode artifact 
buildup. The basic structure will have:
1) a single original source audio file;
2) several instances of a script that selects a random section of the
   audio file, either stretches or squishes the section's time scale,
   possibly reverses it, and then loops and plays it out to jack ports
   with various randomly parameterized controllers controlling aspects 
   of the sound (panning, volume, etc.);
3) ices connected to jack and streaming the output of the several
   instances of 2) to icecast;
4) recording script that records from jack ports and writes ogg vorbis
   files to a pool from which the 2)'s will select on subsequent 
   iterations.

The script in 2) will have to decode the ogg files before selecting a
chunk and manipulating it. I guess since jack only deals with floats 3)
and 4) will have to encode to vorbis separately, unless 3) can be
scheduled to start a new dump file, say, every hour.

The whole thing will be given a disk space quota. Probably 4) will check
this and choose previous output files at random to delete in order to
stay within the quota.

I plan to do 2) & 4) in ecasound python eci scripts. Each instance of 2)
will, hopefully, run continuously selecting the duration of it's runtime
on each iteration and simply starting over by selecting a new section of 
audio from the pool of files when it finishes. 4) will probably be 
scheduled hourly via cron. Hopefully I can get this thing to run 
continuously for years on end. Since it won't actually be sending any 
audio out to a soundcard I would like to run it on my fileserver with 
jackd using the dummy driver.

Anyway, that's the plan. We'll see if I ever get it implemented ...

-Eric Rz.



More information about the Linux-audio-user mailing list