[linux-audio-user] 8 oscillator ecasynth

Eric Dantan Rzewnicki eric at zhevny.com
Wed Sep 1 20:35:00 EDT 2004

(Note: system set up and software version information are at the bottom 
of this message. Also, I've been away from the lists for a month or so. 
If anything in hear has been addressed recently, I apologize.)

Ok, so it's not really a synth in the sense most people think since it 
doesn't respond to note events. But, I've been having a lot of fun with 
the following ecasound set up:

ecasound -b:64
-a:1,2,3,4,5,6,7,8 -i:rtnull
-a:1,2,3,4,5,6,7,8 -o:jack_alsa
-a:1 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,9,1 -ea:0 -km:1,0,200,17,1 
-a:2 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,10,1 -ea:0 -km:1,0,200,18,1 
-a:3 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,11,1 -ea:0 -km:1,0,200,19,1 
-a:4 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,12,1 -ea:0 -km:1,0,200,20,1 
-a:5 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,13,1 -ea:0 -km:1,0,200,21,1 
-a:6 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,14,1 -ea:0 -km:1,0,200,22,1 
  -a:7 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,15,1 -ea:0 
-km:1,0,200,23,1 -a:8 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,16,1 -ea:0 

This runs 8 copies of the analogueOsc LADSPA plugin from Steve's set. 
Each has a midi controller (-km) attached to the Hz and another to an 
ecasound amplify effect (-ea). So it gives me independent control of 
frequency and volume for 8 separate oscillators. The controllers are on 
my novation remote25. Numbers 9-16 (controlling the Hz) are rotary 
encoders and controllers 17-24 (controlling the volume) are sliders. All 
of the controllers on the remote25 are assignable so I did away with any 
traditional numbering for midi-CCs and numbered them in a scheme that 
made sense to me.

I'm running jackd and ecasound as root at the moment. I haven't had the 
realtime lsm working for a few kernel versions because I wasn't working 
on anything that required jack. I'll fix that soon. I'm running jack 
like this:
jackd -v -R -d alsa -d ice1712 -r 44100 -p 64

I'm having great fun and am very excited because I've had this planned 
for years, but just got around to trying it in the last few days. It 
works better than I had expected, but there are a few issues I'm hoping 
to get some advice on.

1) the analogueOsc has a control for selecting waveform. The above set 
up statically sets it to Sine. It seems like I should be able to switch 
between the 4 waveforms interactively. But, when I set up one of the 
assignable buttons on the remote25 to step through values 1-4 and 
attached it to the waveform control of the plugin I didn't get any 
change. Is this paramater only controllable when the plugin is first 

2) other than when ecasound initially connects, jackd reports no xruns. 
However, when I kill ecasound it exits with a warning like this:
(audioio-rtnull) WARNING! There were 26064 xruns while reading.

3) possibly related to 2) ... There are artifacts and glitches in the 
sound output. I'm not sure what to call them ... just a sort of scratchy 
sound when I move the controllers. I'm not sure if this is xrun related 
or not. Could it be something in the plugin itself? I'm not sure how to 
sort out where the issue is.

My delta66 is on IRQ9 and my "midi" card (crappy ymfpci based guillemot 
maxisound fortissimo) is on IRQ11 with nothing on IRQ 10. Do I just need 
a better midi card? or could there be something wrong in ecasound's midi 
implementation? My machine isn't really being stressed by this at all. 
Load stays around .13 or so with the CPU 86% idle. I haven't tried 
doubling the ecasound chains to write to disk, yet, so the disks are 
barely being touched. They are tuned appropriately, though.

4) when I try to put the above commandline into an ecasound .ecs file 
ecasound seems to fail to parse the controllers. I start it with 
ecasound -s ecaoscynth.ecs, it connects to jackd and appears to run. 
But, no sound comes out and the controllers have no affect. I'll attach 
my .ecs. Maybe I'm doing something dumb or forgot something ...

I expect someone will suggest that I should use one of the graphical 
synths or environments like ssm, ams, pd or something. But, I don't 
really feel comfortable with the connecting building blocks with lines 
on a screen using the mouse paradigm. It feels very clunky and clumsy to 
me. I really want a text based patch set up that I can manipulate in my 
text editor of choice (which shall remain nameless ;) ). On top of that 
I don't need, or want, to control this with note events or to record the 
midi control messages, so I don't require a full midi implementation or 
sequencer functionality.

I also intend to create two scripts for this instrument. Both will 
eventually use ecasound's built in effects and perhaps other LADSPA 
effects. One will run automatically using ecasound's control oscillators 
to manipulate the anaolgueOsc parameters.

The other will be interactive, but the ranges available for each control 
of each oscillator will be determined randomly at start up. So, each 
time I start it up it will be a different instrument (or at least 
"tuned" differently). I'm comfortable enough with python, ecasound and 
ecasound's pyeca control implementation to write these scripts myself. I 
don't know of another environment that would give me this kind of 

Well, that went on for a bit. If you read this far, thank you! :) I'll 
keep messing with it, but hopefully someone here will have some 
suggestions for improvement.

Eric Rz.

System info:
asus a7v8x-x
athlon XP 2800+ (2071.203 MHz)
1GB PC2700 RAM
12GB /dev/hda2 / (actually a 40G disk) ext2
160GB /dev/hdc1 /mnt/audio/ ext2
2GB swap /dev/hda1
(onboard via8235 -- disabled)
ice1712 M-Audio Delta-66 w/omni i/o
ymfpci guillemot maxisound fortissimo -- used for midi only

debian testing (sarge) (pre-empt on -- kernel.org sources compiled via make-kpkg)
     drives tuned in kernel config
alsa-1.0.6 (drivers, lib, envy24control, utils)
     drivers (1.0.6.a)
     ./configure --with-isapnp=no --with-sequencer=yes --with-oss=no 
libsndfile-1.0.10 from tar.gz
libsamplerate-0.1.1 from tar.gz
     ./configure --enable-pyecasound=c --disable-oss --disable-arts 
     ./configure --enable-capabilities --enable-optimize 
--with-default-tmpdir=/dev/shm --disable-portaudio
-------------- next part --------------
-a:1,2,3,4,5,6,7,8 -i:rtnull
-a:1,2,3,4,5,6,7,8 -o:jack_alsa

-a:1 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,9,1 -ea:0 -km:1,0,200,17,1
-a:2 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,10,1 -ea:0 -km:1,0,200,18,1
-a:3 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,11,1 -ea:0 -km:1,0,200,19,1
-a:4 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,12,1 -ea:0 -km:1,0,200,20,1
-a:5 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,13,1 -ea:0 -km:1,0,200,21,1
-a:6 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,14,1 -ea:0 -km:1,0,200,22,1
-a:7 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,15,1 -ea:0 -km:1,0,200,23,1
-a:8 -el:analogueOsc,1,0,0,1,1 -km:2,1,1000,16,1 -ea:0 -km:1,0,200,24,1

More information about the linux-audio-user mailing list