Subject: 8 oscillator ecasynth
From: Eric Dantan Rzewnicki (eric_AT_zhevny.com)
Date: Thu Sep 02 2004 - 03:35:00 EEST
(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:
-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
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
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.
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)
18.104.22.168 (pre-empt on -- kernel.org sources compiled via make-kpkg)
drives tuned in kernel config
alsa-1.0.6 (drivers, lib, envy24control, utils)
./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
This archive was generated by hypermail 2b28 : Thu Sep 02 2004 - 03:35:15 EEST