Re: [linux-audio-user] Re: [linux-audio-dev] Hunt for old list archives.

2007-02-24 Thread Kai Vehmanen

Hello,

On Thu, 22 Feb 2007, Eric Dantan Rzewnicki wrote:


On Wed, Feb 21, 2007 at 06:12:19PM -0500, Ivica Ico Bukvic wrote:

I did find the Stanford archives but unless I am missing something (and
please do correct me if I am wrong) the early years (98 for instance), at
least from what is available online, seems to be incomplete. Are the


yes, I'm afraid nobody seems to have the very first messages (from 1998) 
archived. A similar discussion from 1999-2000, together with some list 
history, is available at:


http://lalists.stanford.edu/lad/1999/05/0797.html
http://lalists.stanford.edu/lad/2000/Mar/0001.html
http://lalists.stanford.edu/lad/2000/Mar/0008.html


This is sort of explained in this thread:
http://lalists.stanford.edu/lad/2000/Mar/0001.html
Kai recreated the archive using his mbox starting from the day he
joined around June 1999. The messages from before that day must have
come from someone else ...


Yes, some people provided me with earlier messages from 1998-99 and I 
merged them to my archive (which was first at eca.cx/lad[adu] and now at 
lalists.stanford.edu). If someone can find even earlier messages, I'm 
happy to merge them to the online archive!


--
 links, my public keys, etc at http://eca.cx/kv


Re: [linux-audio-dev] Hunt for old list archives.

2007-02-21 Thread Kai Vehmanen

Hello all,

On Wed, 21 Feb 2007, Joern Nettingsmeier wrote:


Marc-Olivier Barre wrote:

As discussed previously on this list, we are getting ready for a
migration of the three LA* lists to linuxaudio.org.
kai, do you still have copies of the old archive, or have they all been 
migrated to ccrma?


yes, I still have the full archives for all the three lists (starting with 
LAD in 1998). I'm also maintaining the archives at


 http://lalists.stanford.edu/

... plus I also maintain the URLs to the old LAA/LAU/LAD archives at 
eca.cx alive (they now refer you to the above stanford hosted site;

try for instance http://eca.cx/lad/2004/12/ ).

I'm using a simple rsync script for lalists.standford.edu, so I can easily 
upload the whole set elsewhere as well if needed (although preferably 
the continuous updates only to one place).


I'm not that fond of moving the archives around very often, as you always 
risk breaking zillions of links (LAD/LAU/LAA archives contain a lot of 
useful stuff people can link to from blogs/articles/etc/etc).


--
 links, my public keys, etc at http://eca.cx/kv


[linux-audio-dev] Re: [linux-audio-user] donations or sponsoring?

2007-02-06 Thread Kai Vehmanen

On Tue, 6 Feb 2007, Leonard Ritter wrote:


from http://www.leonard-ritter.com/donations_or_sponsoring


I keep bouncing an idea in my head, thinking about how to strengthen the
bonding between open source software developers and software users.


Possibly old news, but in case you haven't read this yet, Luis Villa has 
some excellent insights on the topic -- and especially the point that 
paying volunteers can have a counter-intuitive effect:


http://tieguy.org/blog/2006/06/18/crowding-out-of-intrinsic-motivations-aka-the-bounty-problem/

This is not to say the idea is bad, quite the opposite. It's just it seems 
to be really hard to find a sustainable balance.


--
 links, my public keys, etc at http://eca.cx/kv


Re: [linux-audio-dev] crossplatform atomics

2006-05-26 Thread Kai Vehmanen

On Thu, 25 May 2006, Lee Revell wrote:


On Thu, 2006-05-25 at 19:57 +0300, Kai Vehmanen wrote:

Does someone have a good reference on this? I think the writes just

Do we still care about 32 bit sparc?


Not necessarily much, but I'd like to understand this fully. There might 
be other archs affected as well. Again looking at the Linux kernel code - 
for instance armv6 atomic_set needs spinning (but not for armv4)... so 
it's not just sparc32. There might not be _that_ many sparc32s out 
there, but there are over 3 billion arm cores out there. ;)


But, but, even on these platforms, it's just the writes. It'd be 
interesting to know if there are any cases where you could be reading 
bogus values due to concurrent access to an 'int'.


--
 links, my public keys, etc at http://eca.cx/kv


Re: [linux-audio-dev] crossplatform atomics

2006-05-25 Thread Kai Vehmanen

On Wed, 24 May 2006, Paul Davis wrote:


sizeof(int) is your friend

not sure what you mean, but on sparcs, int writes are not atomic unless
you only use the lower 24 bits.


Does someone have a good reference on this? I think the writes just are 
not atomic, but you can use some tricks [1] to implement atomic behaviour 
by spinning until the operation succeeds.


[1] http://www.freepatentsonline.com/5666546.html?highlight=5434995
.. I'm not sure maybe this is just one variation...

But, reading the Linux 2.6.16.17 code for sparc (atomic.h and atomic.S), 
only the writes are protected, not reads. So as long as you have only one 
writer, you should be safe. Also, the 24bit limitation only applies if you 
are using the low 8bits for spinning.


Anyways, a good (accurate and available online) reference for this would 
be nice to have, to be 100% sure before making any architectural 
decisions. For me, I'd be happy to just exclude these platforms, or use 
mutexes as a crude workaround on the affected platforms (assuming there're 
only few of them).


Cross-platform atomic integer operations would be nice, but you can do 
quite a lot with just atomic read/writes, which most of the platforms 
already provide for 'int's. For example, these are sufficient to implement 
a simple one-writer-one-reader lock-free queue (which is necessary in most 
audio apps).


OTOH, it is probably wise to explicitly mark all code where ints are 
assumed to be atomic w.r.t. read/writes (or any other non-standard 
properties). Especially if sparc-style atomic properties become more 
widely used later on...


--
 links, my public keys, etc at http://eca.cx/kv


[linux-audio-dev] Re: [linux-audio-user] www.linuxdj.com - down!

2005-08-16 Thread Kai Vehmanen

On Fri, 12 Aug 2005, R Parker wrote:


s. subject. down for me for quite a while already.


And still seems to be. :( I guess Benno is still the admin contact for
the site -- anyone got a more recent email address for him?


Please somebody fix the server. I'm experiencing
extreme lad mailing list archive withdrawl syndrome
(elmlaws) disease.


Fortunately the web archives are hosted on a different server:

  http://lalists.standford.edu

--
 links, my public keys, etc at http://eca.cx/kv


[linux-audio-dev] voice/video calls/conferencing and JACK (was: Re: Mix Minus with AM-Pitchshift; a study in LinuxAudio usability)

2005-08-01 Thread Kai Vehmanen

Hello all,

sorry for cross-posting to lad -- this just in case there are any 
interested developers out there interested in this topic...


On Fri, 29 Jul 2005, Dan Mills wrote:


Imagine the ease and fun of having asterisk hooked up to jack and
doing voip;)

Does anyone know of a SIP or asterisk client that does jack?


This is still very much work in progress, but FarSight project - 
http://farsight.sf.net - is working on to create a library for handling 
audio/video calls and conferencing, with multi-protocol (SIP, MSN, etc) 
support, and built on top of the gstreamer media framework. I'm involved 
with adding SIP support (very much standard compliant, and open-source) to 
the project.


And, as gstreamer has JACK support (btw; Andy Wingo from gstreamer was one 
of the early members of the JACK team), you will be able to do lots of 
nice stuff with this technology (= with apps utilizing FarSight) once the 
project matures a bit more. It is still open who will first adopt 
FarSight, but it is targetted towards IM apps such as Gaim, aMSN, Kopete, 
etc... and who knows what in the end.


If anyone is interested, come and take a look at the project and join the 
fun! :) I'm not an official FarSight developer (at least not yet :)), so 
detailed questions should probably be directed to the FarSight mailing 
lists...



Ideally something command line that can be controlled via tcp messages?


You can already do some basic audio/video streaming over RTP to/from JACK 
using just gst-launch (put together chains of rtp, codec and jack 
sink/sources). This can be easily controlled from the command-line. But, 
but, as mentioned already, this is still work in progress...


--
 http://www.eca.cx
 Audio software for Linux!


Re: [linux-audio-dev] Best-performing Linux-friendly MIDI interfaces?

2005-06-14 Thread Kai Vehmanen

On Mon, 13 Jun 2005, Jay Vaughan wrote:

i mean .. i've been using linux since the minix-list post, and i'll be damned 
if i can keep up with all this ALSA/esd/OSS/jackd/artsserver voodoo that is 
expected of anyone wanting to get audio working in linux, at the same/similar 
degree of operational status as we see under OSX .. even though, i'm very, 
very eager to see linux function as a working audio platform.  there's gotta 
be -some- way to get it all working, and i dont just mean buy a Dell laptop


I must admit, I had to double-check that I really am reading the year-2005 
folder of linux-audio-dev, and not some old mails from the archives. ;) 
Now that SuSE, Mandrake, Fedora and others have started to use dmix as the 
default output plugin, basic desktop sound stuff should finally start to 
work, as people expect, out of the box. If anything, rants like the recent 
one from jwz, are a wake-up call for desktop/workstation-oriented distros 
that sound is important. Details like configuring dmix and other plugins, 
making sure the aoss-wrapper is used with OSS apps, etc are important...


As for the API-jungle, yup, that's a problem, but it's something really, 
really hard to avoid in the FOSS world. Just look at the amount of 
options for video output when you type mplayer -vo help -- no unified 
API there either. That's not to say that we should give up, but 
getting majority of developers behind a single API will not be easy...


But, but, this is just part of the whole package developers and users see. 
Fortunately there are other areas where FOSS systems have strengths over 
the closed competitors. And at least for me, FOSS systems still provide 
better overall value... (also for desktop use).


--
 http://www.eca.cx
 Audio software for Linux!


Re: [linux-audio-dev] Other real-time options

2005-04-24 Thread Kai Vehmanen
On Fri, 8 Apr 2005, Lee Revell wrote:
[realtime-lsm not going to be adopted to mainline kernel...]
It's a tough call because although the LSM approach clearly is more
immediately user friendly, the nice and RT prio limits are a better
designed solution.  If your distro sets everything up right (a big if),
either way it will just work.
Btw, on a more positive note, installing realtime-lsm from a separate 
tar-gz package is super easy. I just upgraded my kernel to 2.6.11.7, and 
adding the realtime-lsm-0.8.5 module was very, very easy. You do have to 
set a few /sys params, but this you have to do only once, not for every 
new kernel.

Compared to the trouble I've had to go through sometimes to compile 
pre-2.4 alsa-driver packages, drivers for various out-of-kernel device 
drivers, etc, realtime-lsm is just a walk in the park! :)

So even if none of the rt-audio enabling options end up in mainline 2.6 
linux, I think we are still in a better position with 2.6+realtime_lsm 
than with anything we had for 2.4 and older kernels.

--
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] adm: list web archives have moved (was: Re: usb-asx2y on amd64 again)

2005-02-14 Thread Kai Vehmanen
On Mon, 14 Feb 2005, Mark Constable wrote:

 The new LA archives can be found at http://lalists.stanford.edu/.

Yes, we were going to announce this a bit later, but yup, it's true, the
archives have been succesfully moved to their new home! :) Only thing
still left to do is to update the links at linuxdj.com.

 Thanks but I'm not sure that is going to help me all that
 much because it looks like it specifically searches thru
 the Finnish Google site...

Oops, sorry about that. :) I'm used to the Finnish google.fi URL, and that
slipped in by accident. The page is now fixed and submits the searches to
google.com, which is probably the correct default behaviour.

  Hakusi - site:lalists.stanford.edu usb-asx2y - ei vastaa yhtään sivua.
 
 Is there an archive around that actually indexes the
 messages themselves ?

Not that I'm aware of. We used to have a dedicated htdig search, but I'm
not able to provide this service anymore (still a web based search, not
limiting to message contents). And even if someone would offer to host the
htdig service, I'm not volunteering for the job. :) Keeping the dedicated
search up and running (and debugging why certain searches don't work as
expected) can be a bit of a burden, so relying on google.com,
search.msn.com (both of which have already crawled the whole new lalists
site) and other competitors seems like a nice option to me.

PS If you do put up your own archive sites, please apply some
   anti-spam measures to the email addresses before putting them online 
   (and especially if you put whole mboxes online). The current 
   mailman archives (only replacing @ with  at ) are already an easy 
   target for address harvesters. In the current archive at 
   lalists.stanford.edu, I've chosen to hide the tail of email addresses 
   completely to make sure no automated script can harvest subscriber
   addresses. This only applies to newer messages, older ones are 
   protected by a weaker mechanisms (similar to the default mailman 
   obfuscation).

-- 
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] support for non-root realtime scheduling; struggle continues

2005-02-05 Thread Kai Vehmanen
Hello all,

on lwn.net's latest kernel page, under 'Quotes of the week', 
there's the following message from Jack (O'Quin) to linux-kernel:

--cut--
We argued that the owner of a Digital Audio Workstation should be free to 
lock up his CPU any time he wants. But, no one would listen. We were told 
that we didn't really know what we needed, and were asking the wrong 
question. That was very discouraging. It looked like LKML was going to 
ignore our needs for yet another year.
--cut--

The whole post is at:
http://lwn.net/Articles/121652/

I hadn't been aware of these latest developments. I then found also 
this:

http://lwn.net/Articles/120797/

Really interesting stuff. I just want to say a big thanks to Jack for
pushing the lad requirements forward! As we can all see from the mail
threads, it has been, and still is, quite a struggle. In any case it's
great that this has now got more attention also outside lad/lau and
linux-kernel lists.

-- 
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] solved: adm: list archives at eca.cx

2004-12-15 Thread Kai Vehmanen
Hello all,

On Sun, 12 Dec 2004, Kai Vehmanen wrote:
 Ok, I've been now testing a new, semi-realtime, mechanism to archive the
 lists. What's important is that this is something I can support also in
 the future, so the archiving can continue for all three lists.
[...]
 What I'm missing now is web space. I'd need:

based on the replies so far, I've now accepted Fernando's offer to host
the list archives at CCRMA. As they are already hosting the PlanetCCRMA
website and repositories, I guess the LAA/LAD/LAU lists fit nicely there.

And a big thanks to all who offered to provide hosting for the archives: 

- Oliver Thuns
- Fernando Lopez-Lezcano
- Paul Brossier
- Eric Dantan Rzewnicki / Radio Free Asia

As always, it's nice to see how the la? community reacts in these
situations.

... but now back to the more interesting topics. :)

-- 
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] announce-list policy

2004-12-12 Thread Kai Vehmanen
Hello everybody,

when linux-audio-announce was created, it was agreed that announcements
should be crossposted to all three lists. The reasoning was that this way
people wouldn't have to subcsribe to LAA if they were already on LAD+LAU.

Now when you look at LAA archives, some people post only to LAA, some
(like me) to all three lists, and some to either LAA+LAD or LAA+LAU.

My suggestion is that we drop this policy altogether: announcements should
be sent to LAA and optionally to LAD and/or LAU. At least I've always had
the nasty feeling that I'm spamming LAD+LAU with my Ecasound release
announcements. Of course, when announcing conferences, major new versions
(JACK-1.0.0 maybe? :)), etc, I see no harm in cross-posting to all the
three lists.

So in other words, if you really want to see _all_ the announcements, 
you should subcsribe to LAA.

Any comments? If no objections, at least I will from now on send non-major
release announcements only to LAA.

-- 
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] Re: [linux-audio-user] Re: adm: list archives at eca.cx going away

2004-12-12 Thread Kai Vehmanen
Hi,

a quick update on this issue.

On Fri, 29 Oct 2004, Joern Nettingsmeier wrote:

 Kai Vehmanen wrote:
 this is not an urgent issue, but I'd like to warn in advance that the
 laa/lad/lau list archiving at www.eca.cx/la[adu] will stop some time next
 year. I'm not sure of the exact date, but sooner or later anyway. Note 

Ok, I've been now testing a new, semi-realtime, mechanism to archive the
lists. What's important is that this is something I can support also in
the future, so the archiving can continue for all three lists.

What I'm missing now is web space. I'd need:

 * around +0.5G of web space
- the LAA/LAD/LAU archives are currently 0.5G, growing by 15M 
  each month
- I'll have to move eca.cx to a new server soon and I won't have
  enough web space on the new server :(
 * update via rsync-over-ssh
- mirroring the whole eca.cx/la[adu] tree
 * if at all possible, a separate host name like lists.foobar.org
- possibility to use google to search the lists (by 
  searching with site:lists.foobar.com keywords)
- htdig is a bit painful to maintain, I'd rather use google

... I will build some server-side magic to make redirects from
eca.cx/la[adu] to the new archive location so that existing links to the
archived mails will continue to work (and not just temporarily).

Now if anyone here is willing to donate some webspace for this purpose
(only the list archives, nothing else), please contact me privately.

-- 
 http://www.eca.cx
 Audio software for Linux!


[linux-audio-dev] [ANN] Ecasound 2.3.5 released, website addr. changed

2004-11-11 Thread Kai Vehmanen
Hello all, 

here's version 2.3.5. Not too many changes, but still enough to warrant a
new release.

I also want to use this opportunity for the following:

*IMPORTANT NOTICE*
Ecasound website address has changed. The new address is 

http://www.eca.cx/ecasound

This replaces the old (but still functional) website at
http://www.wakkanet.fi/~kaiv/ecasound/. Note that also all the subpages
have been modified. I've added some redirect pages, but the old site will
only be available for a limited time. Please update any links that point
to the old website.

And also, my email address has changed (see from).
/*IMPORTANT NOTICE**
  
CVS is tagged with 'v2_3_5' as usual, and here are the full details:

---
1. Summary of changes

Various Mac OS X specific build issues have been resolved. Minor 
changes have been made to the OSS soundcard support to avoid 
limitations of certain OSS drivers. Many minor updates have been made 
to user documentation and to build system scripts.

---
2. What is Ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Primary platform for running Ecasound is GNU/Linux. Ecasound can 
also be run on many UNIX-derived systems such as FreeBSD, Mac OS X 
and Solaris. Limited support for Windows is available through 
Cygwin. Ecasound is licensed under the GPL. The Ecasound Control 
Interface (ECI) is licensed under the LGPL.

---
3. Changes since last release

* With this version, Ecasound can now really be compiled for MacOS X.
  This has been tested on various 10.3.x systems. Also JACK support 
  is reported to work under OS X.

* Website address has changed: http://www.eca.cx/ecasound replaces
  the old http://www.wakkanet.fi/~kaiv/ecasound address. Please update
  any links that point to the old address.

Full list of changes is available at 
http://www.eca.cx/ecasound/history.php.

---
4. Interface and configuration file changes

None.

---
5. Contributors

Patches - Accepted code, documentation and build system changes

Berndtgen Manfred (1) -- ecasignalview build error
Kai Vehmanen () -- various

Bug Hunting - Reports that led to bugfixes (items closed)

jcw (1) -- MacOS-X build errors.
kito -at- gentoo-org (1) -- MacOS-X build errors.
Stéphane Letz (1) -- Builds errors related to JACK and MacOS-X.
Paul Marquardt (1) -- Mac OS X build errors.
Raul Megelas (1) -- OSS-devices with no GETBLKSIZE support.

---
6. Links and files
   
Web sites:
http://www.eca.cx (fi)
http://ecasound.seul.org (us)
http://ecasound.sourceforge.net (us)

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.3.5.tar.gz
md5sum: bbc0c4d12c1d21a7e71fc1bdb9fb0e2b

Distributions with maintained Ecasound support:
See http://www.eca.cx/download.php

-- 
 http://www.eca.cx
 Audio software for Linux!


Re: [linux-audio-dev] [ANN] Ecasound 2.3.4 released

2004-10-29 Thread Kai Vehmanen
Hi,

On Fri, 29 Oct 2004, Stéphane LETZ wrote:

 Trying to compile on MacOSX 10.3.4 gives :
 g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I../kvutils -D_REENTRANT 
 -D_REENTRANT -ffast-math -fstrict-aliasing -funroll-loops -DNDEBUG 
 -DENABLE_DBC -g -O2 -c eca-chainsetup.cpp -MT eca-chainsetup.lo -MD -MP 
 -MF .deps/eca-chainsetup.TPlo -o eca-chainsetup.o
 eca-chainsetup.cpp: In member function `void 
 ECA_CHAINSETUP::lock_all_memory()

yup, it seems the the -D_P1003_1B_VISIBLE flag is not passed properly
to CPPFLAGS (do'h, I thought I had covered this already). Please, could 
you test the snapshot at:

http://ecasound.seul.org/download/snapshots/ecasound-2.3.5-cvs-20041029.tar.gz

 eca-chainsetup.cpp:621: error: `::mlockall' undeclared (first use here)
 eca-chainsetup.cpp:621: error: `MCL_CURRENT' undeclared (first use this
 function)

That should handle at least MCL_CURRENT. Hopefully Apple has not done any
changes to gcc that would break the '::mlockall()' style of calling 
globally visible C functions.

PS Could you also check that '#define HAVE_MLOCKALL 1' 
   is defined in ecasound-2.3.4/config.h.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] adm: list archives at eca.cx going away

2004-10-28 Thread Kai Vehmanen
Hello, 

this is not an urgent issue, but I'd like to warn in advance that the
laa/lad/lau list archiving at www.eca.cx/la[adu] will stop some time next
year. I'm not sure of the exact date, but sooner or later anyway. Note 
that I'm not going to take the existing archives offline, so all links
pointing to mails at eca.cx will still work.

Fortunately we nowadays have many other archives of the lists. We just now
need to pick a new official archive and update the links at:

http://www.linuxdj.com/audio/lad/archive.php3

I propose that we use the archives at columbia.edu:

http://www.music.columbia.edu/pipermail/linux-audio-dev/
... and so on.

Very good archives can also be found at gmane.org:

http://gmane.org/info.php?group=gmane.linux.audio.devel
... and so on.

-- 
 http://www.eca.cx
 Audio software for Linux!


Re: [ecasound] Re: [linux-audio-dev] Re: [Jackit-devel] Maybe I'm going at this wrong...?

2004-09-09 Thread Kai Vehmanen
Hello,

to avoid too heavy cross-posting, I dropped jackit-devel from the 
cc-list...

On Thu, 9 Sep 2004, Eric Dantan Rzewnicki wrote:
 seeing aren't reported by jackd at all. I only see them from the 
 ecasound instance that is hosting the analogueOsc LADSPA plugins and 
 only when it exits. The rtnull input object reports them when this 
 ecasound instance exits. Every ecasound chain has to have an input and
 an output. Since I just want the audio from the plugin, which in
 ecasound's world is an effect attached to a chain between an input and
 an output, the rtnull input object serves as a place holder virtual 
 audio device/file/thing.
 
 Maybe these xruns are red herring? Kai?

Definitely! You should use null instead of rtnull if you have any 
JACK, ALSA, or other real-time objects in the same setup.

Rtnull, or realtime null, consumes or produces data at real-time speed 
(unlike plain null that does the same as fast as it can). This is useful 
feature in some circumstances, for example when writing audio to a pipe 
and from there with netcat to network. Without rtnull, you'd overflow the 
network interface (and the receiving end).

But if you have both rtnull and jack/alsa devices in the same setup, you 
will get xruns, as rtnull is driven by the system clock while jack/alsa 
are driven by the soundcard clock. Sooner or later the clocks will drift 
enough and you'll start to get constant xruns.

-- 
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Read this after your first cup of coffee

2004-08-21 Thread Kai Vehmanen
On Fri, 20 Aug 2004, John Check wrote:

 I specifically said Cecilia because it's a GUI. IIRC correctly, the 
 ecasound originator coded it up because he found the interface to GUI 
 systems to be dense, which doesn't give me confidence he'd have been 
 able to find his way around an analog studio.

Now this I have to commment on. :) I'm the orinagor in question, and I 
actually do have an analog mini-studio (and had one before I started 
coding Ecasound) and very much like to use this gear.

I don't like to use the DAW-GUIs, because to me they are cumbersome and 
slow to use when performing simple recording tasks (=those tasks that you 
do also on analog multitrackers). And this is why Ecasound has been 
developed to be what it is today.

Of course nowadays people perform much more complex tasks when recording
and especially when editing. For these, the Ardour/Protools style apps are 
better suited, no question about it.

I also admit that I'm not a visual person in the sense, that I in 
many cases prefer textual descriptions over diagrams and drawings. This 
applies to sw architecture as well as to studio signaling -- and I guess 
to audio app UIs... :)

 The main feature of ecasound on which I base my opinion is it's signal path 
 from scratch nature. Basically, it's a virtual kit and you have to put 
 together what you want. 

This is true, but at the same time ecasound allows you to restore or reuse 
signalling paths from old projects very very easily (just copypaste or
reuse old scripts).

When I start a new project, I just copy the relevant script from the 
previous project, edit the filenames and do other minor changes, and 
start recording. That takes less than 15sec usually. :) And as I can 
express the whole state of the studio with a few lines of ecasond 
options, I can with a quick glance verify to myself that everything is 
in order. With complex GUIs, there are so many windows, menus and views 
that it takes time to verify all settings.

Hmm, to me ecasound is much like the good old 'find' command. Its syntax
seems cryptic (even for relatively simple searches), but when you finally
decide to learn how to use it and play around with the different options
for 15min-1h, you suddenly find yourself at home with the tool and you
feel comfortable building even complex searches.

Also much like ecasound, when you create a complex (but useful) find 
search, you can copy it to a text file or a script, and later on use it as 
a starting point for new (but similar) complex searches.

And also, regular mortals do use find. It's not the first thing UNIX 
newbies start using, but still, it is used by a lot of (otherwise 
normal :)) people. I think same applies to ecasound.

 That's extremely useful, but if an average musician 
 never used ecasound before and awoke at 2am with a great melody, (?|s)he'd 
 never get it tracked because ecasound is too different from the traditional 
 interface paradigm.

Now that's not really a good example. No matter what the tool is (analog 
4-track, protools, ecasound) you have learn how to use it. I doubt average 
musician could do much with protools either. Quite a few couldn't operate 
an analog multitracker.

...

Now as for rest of your argument, I don't really disagree with it. 
Although Ecasound is designed for actual real-life use, it is still a 
niche product as:

  o the user-interface concept is unique to ecasound - people cannot
reuse their experience from other apps
  o Ecasound's primary target platform is Linux which itself is 
still a niche product in the desktop-PC market
  o Ecasound does not offer a complete DAW feature-set

... and because of these, it will continue to be a niche product for 
the foreseeable future. And that's perfectly ok to me. :)

And I don't think it's fair to use Ecasound as an example of state of
Linux audio. Even I (!) rather use Ardour, Rosegarden, JAM et al when 
demoing to an audience I know are familiar with Mac/Win audio apps.

To continue with my UNIX comparisons, that's like showing gdb, emacs and
vi as the only options to an audience of .NET/Java developers, when you
should be showing DDD, KDevelop and Eclipse as well.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] /proc/sys var for mlock group-access in 2.6.6-mm1

2004-05-21 Thread Kai Vehmanen
Hi,

this might be old news already, but just in case...:

http://lwn.net/Articles/84566/
--cut--
 The 2.6.6-mm1 tree includes, among many other things, patches which add 
two new /proc/sys variables. They are:

/proc/sys/vm/hugetlb_shm_group
If this value is non-zero, it is interpreted as a group ID which 
gives access to the the huge pages feature of the 2.6 VM. 

/proc/sys/vm/mlock_group
This variable behaves similarly, but it controls access to the 
mlock() system call (which locks memory into physical RAM) instead. 
--cut--

And continues with comments from Andrew:
--cut--
The problem, it seems, is that there are no better solutions on the 
horizon. Says Andrew Morton:

Capabilities are broken and don't work. Nobody has a clue how to provide 
the required services with SELinux and nobody has any code and we need the 
feature *now* before vendors go shipping even more ghastly stuff. 
--cut--

This suggests that there is a good chance that realtime-lsm could be
accepted to the mainline kernel tree, if submitted!

--
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] [ANN] Ecasound 2.3.3 released

2004-05-04 Thread Kai Vehmanen
Hello all,

this year's first stable Ecasound release is now out!

Most of the final tuning for this release was done last Sunday while
watching and listening to the last sessions of 'laconf2'.  Many thanks to
all the organizers and participants! And special thanks for the
excellant net coverage of the event!

But now, back to the 2.3.3 release -- here are the details: 

1. Summary of changes

Bugs in ecasignalview, effect presets, NetECI protocol parser
and the C ECI implementation have been fixed. Many build system 
issues, including errors in building against libsndfile-1.0.4 
and older, have been resolved. A separate section covering 
ecasound.el, the ecasound emacs interface, has been added to 
the Ecasound Control Interface Guide. The Ecasound User's Guide 
has also been updated.

---
2. What is Ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Ecasound is licensed under the GPL. The Ecasound Control Interface 
(ECI) is licensed under the LGPL.

---
3. Changes since last release

* Preset handling fixes: When saving chainsetups containing 
  presets, values of preset parameters were not saved correctly. 
  Also problems with presets containing untitled parameters have
  been fixed.

* New ecasoundrc(5) setting autodetect for default-output 
  has been added. When selected, libecasound will check for
  JACK support and whether a JACK server is running, if not
  found, check for ALSA, then OSS, and finally fallback to
  using rtnull. This feature is especially useful to apps
  such as ecaplay.

* Fixes to ecasignalview: Proper cleanup after receiving an
  interrupt from keyboard (SIGINT/CTRL-C) has been added. 
  Originally tested on FreeBSD, but helps on Linux as well.

* Ecasound Interactive Mode (EIAM) updates: Added new 
  command 'map-ladspa-id-list' to allow listing the available
  plugins by their unique ID numbers. A special case
  value of '-1' is now understood by 'cs-set-length'. This
  allows undoing any previously set length value.

* Ecasound Control Interface (ECI) updates: Added a section 
  on ecasound.el - the Ecasound emacs interface - to the
  ECI Guide [1]. Several bugs have been fixed in the ECI 
  C implementation. A serious bug in NetECI protocol parser,
  that caused parsing long (over 32 chars) commands to fail,
  has also been fixed.

* Documentation updates: The Ecasound User's Guide [2] has
  been updated. Also, a bug in the groff source for the 
  ecasound(1) man page that prevented man from showing the 
  last five pages of the document, has been fixed. 

* Build system fixes: Problems in building against libsndfile-1.0.4 
  and older have been fixed. 'libecasound-config --libs' has been 
  fixed to return the full list of external libraries. Based 
  on recent discussions on linux-audio-dev, minor changes have
  been made to processing CFLAGS, CXXFLAGS and LDFLAGS.
  
Full list of changes is available at 
http://www.wakkanet.fi/~kaiv/ecasound/history.html.

---
4. Interface and configuration file changes

* ecasoundrc(5) - default-output: new value autodetect (default)

---
5. Contributors

Patches - Accepted code, documentation and build system changes

Michael Ewe (2) -- bugfixes to ecasignalview and ECI C impl
Mario Lang (1) -- section on ecasound.el to ECI Guide
Eric Rzewnicki (1) -- set of updates to Ecasound User's Guide
Kai Vehmanen (n/a) -- various

Bug Hunting - Reports that led to bugfixes (items closed)

Pierre Lorenzon (1) -- bugs in ecasound's daemon-mode 
   protocol parser
Jan Weil (1) -- cs-save dit not save preset parameters

Feature suggestions - Ideas that led to new features (items)

Jan Weil (2) -- map-ladspa-id-list command, -t:1 option

---
6. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecasound

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.3.3.tar.gz

Referenced documents:
[1] - http://www.eca.cx/eci-guide
[2] - http://www.eca.cx/eca-u-guide

Distributions with maintained Ecasound support:
Agnula - http://www.agnula.org
AltLinux - http://www.altlinux.com
Debian - http://www.debian.org
FreeBSD - http://www.freebsd.org/ports/audio.html
Gentoo Linux - http://www.gentoo.org
Mandrake - http://www.mandrake.org
PLD Linux - http://www.pld.org.pl
SuSE Linux -  http://www.suse.de/en

[linux-audio-dev] [ANN] Ecamegapedal 0.4.4 released

2004-04-18 Thread Kai Vehmanen
1. A short summary of changes

Minor bugs in JACK support have been fixed. Now Ecamegapedal
makes sure it won't launch the JACK daemon by accident 
when probing for available devices on startup. The manual
pages have been updated with some new sections.

---
2. What is Ecamegapedal?

Ecamegapedal is a real-time effect processor software with
a graphical user interface for controlling the effect 
parameters. It is meant to be used as a virtual guitar-fx 
or studio effect box. In addition to real-time operation, 
Ecamegapedal also supports reading from and writing to audio 
files. All audio object and effect plugin types provided by the 
Ecasound libraries are supported. This includes ALSA, JACK, 
OSS, aRts, over 20 file formats, over 30 effect types, LADSPA 
plugins and multi-operator effect presets. Ecamegapedal's 
implementation is based on Ecasound and Qt libraries.

Ecamegapedal is licensed under the GPL.

---
3. Contributors

Patches

Kai Vehmanen (various)

---
4. Links and files
   
http://www.eca.cx/ecamegapedal
http://ecasound.seul.org/download/ecamegapedal-0.4.4.tar.gz

---
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] Linux audio presentation, 17.3. at Otaniemi, Finland

2004-03-16 Thread Kai Vehmanen
Hello all,

this comes a bit late, but in case you happen to be somewhere
in South Finland tomorrow...

I'll be giving a short presentation on Linux audio tomorrow at Otaniemi
(hut.fi) at 14.00 [1]. I'll talk a little about general issues of
developing apps for GPOSes, introduce ALSA, JACK and LADSPA, and finally
show a quick demo of well-known Linux audio apps (full PlanetCCRMA setup).

The presentation is part of the Digital Signal Processors and Audio 
Signal Processing course [2] at HUT, but everyone is welcome
to come and listen (and ask tricky questions ;)). The presentation
is in Finnish, but I can translate on-the-fly if needed. :)

[1] Auditorium S1, Otakaari 5
http://www.hut.fi/Current/getting_to_otaniemi.html   
http://www.hut.fi/Current/otaniemi_map.html
[2] http://www.acoustics.hut.fi/teaching/S-89.510/

-- 
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Linux audio presentation, 17.3. at Otaniemi, Finland

2004-03-16 Thread Kai Vehmanen
On Tue, 16 Mar 2004, Taybin Rutkin wrote:

 What is a GPOS?

GPOS = General Purpose Operating System ... 

Good point, have to remember that tomorrow. :)

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Ecasound question

2004-02-03 Thread Kai Vehmanen
On Tue, 3 Feb 2004, Alfons Adriaensen wrote:

 I've been trying to use ecasound for multitrack recording with
 a Terratec EWS88MT. This card does not present the same number
 of capture and playback channels (12/10 or 10/12, I always forget
 since I'm only interested in the first 8 of each). Apparently,
 ecasound trips over this - whatever number of channels I try,
 the reply is always that the 'channel count is not available'
 or something similar. Is there an easy solution for this ?

Try:

ecasound -f:32,12,44100 -i alsa,hw:0 -f:32,10,44100 -o alsa,hw:0

... it should work with all ice1712 cards (I have one myself).

The ALSA plugin layer might be (nowadays) able to do the necessary 
channel conversions automatically so you could only access 8ch (or 
whatever less than 10/12). To try this, replace alsa,hw:0 with 
alsa,default or some other ALSA PCM plugin name.

 Second question: how do I connect an ecasound chain to a specific
 channel of my card ? There seems not to be any way to specify this.

Two alternatives:

1) Connect to multiple chains, and then copy/move/mute channels:

ecasound -a:1,2 -f:32,14,44100 -i alsa \
 -a:1 -f:32,1,44100 -o foo_ch1.wav \
 -a:2 -erc:7,1 -f:32,1,44100 -o foo_ch7.ch

... '-erc:src,dst' copies from channel to channel.

2) Use JACK 

This allows for more flexibility (you can have each Ecasound chain 
connected to different JACK port).

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Ecasound question

2004-02-03 Thread Kai Vehmanen
On Tue, 3 Feb 2004, Fons Adriaensen wrote:

 Still trying to understand that. Could you give a practical
 example ? Say e.g. that I want to play t2.wav and t5.wav to
 outputs 2 and 5, and record from inputs 1 and 6 to t1.wav and
 t6.wav. This emulates an 8-track machine playing back two 
 channels and recording two others. How would that be done ?

This kind of setup is probably easier to handle with JACK, but anyways, 
still possible without it:

ecasound -a:1,6 -f:32,12,44100 -i alsa \
 -a:1 -f:32,1,44100 -o t1.wav \
 -a:6 -erc:6,1 -f:32,1,44100 -o t6.wav \
 -a:2 -i t2.wav -ea:200 \
 -a:5 -i t5.wav -erc:1,5 -ea:200 \
 -a:2,5 -f:32,10,44100 -o alsa

Input object with the most channels determines the channel count of the
chain it is attached to. On the other end of the chains, if an output has
less channels than the chain it is attached to, extra channels are
discarded when writing to the output. With these simple rules you can 
route audio between channels and chains, and without bloating the syntax 
too much.

The '-ea:200' at the end of chains 2 and 5 helps to keep the volume
constant. This is ugly, but unfortunately something I cannot fix at this
point (I'd like to change the chain-mixing semantics from add'n'divide to
plain add'n'saturate like in most other systems, but unfortunately doing
the change now would break far too many existing scripts/sessions :( ...).

With JACK the above would be something like: 

ecasound -f:32,1,44100 \
 -a:1 -i jack -o t1.wav \
 -a:6 -i jack -o t6.wav \
 -a:2 -i t2.wav -o jack
 -a:5 -i t5.wav -o jack

... so cleaner, but OTOH you have to manage the connections externally.

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Ecasound question

2004-02-03 Thread Kai Vehmanen
On Tue, 3 Feb 2004, Fons Adriaensen wrote:

 On Tue, Feb 03, 2004 Kai Vehmanen wrote:
  -a:2 -i t2.wav -ea:200 \
  -a:5 -i t5.wav -erc:1,5 -ea:200 \
  -a:2,5 -f:32,10,44100 -o alsa
 Shouldn't there be a  '-erc:1,2' on the t2.wav chain (it should go to
 ouput 2) ?

Yes, error in my example.

 The '-ea:200' at the end of chains 2 and 5 helps to keep the volume
 constant. This is ugly, but unfortunately something I cannot fix at this
 Why is this necessary ? Nothing should be mixed... unless alsa inputs
 2 and 5 are also mixed in. If this is so, can it be prevented ?

Ecasound has to combine chains 2 and 5. Former has 1 channel of audio, the
latter 5 channels. Now the problem is two-fold: first, Ecasound does not
know that only ch5 of chain 5 has audio and others are in fact silent.
Secondly, Ecasound mixes chains by doing channel-by-channel add+divide. So
without the '-ea:200', volume of channels 1 and 5 in the stream going to
the ALSA device would be halved.

It's ugly, but ensures backwards compability.

 -a:t2 -i t2.wav -erc:1,2 -f:32,10,44100 -o alsa,hw:0
 -a:t5 -i t5.wav -erc:1,5 -f:32,10,44100 -o alsa,hw:0
[...]
 -a:t1 -f:32,14,44100 -i alsa,hw:0 -f:32,1,44100 -o t1.wav
 -a:t6 -f:32,14,44100 -i alsa,hw:0 -erc:6,1 -f:32,1,44100 -o t6.wav
 I kind of like this 'per chain' way of writing things. 

Unfortunately the above examples are not quite correct as '-a:t2 -o
alsa,hw:0 -a:t5 -o alsa,hw:0' is not equivalent to '-a:t2,t5 -o
alsa,hw:0'. The former creates two devices (which will fail in this case
as you can open an ALSA hw-device just once), while the latter creates one
ALSA device and connects it to two chains).

For this reason, I like to write Ecasound setups with one input/output per 
line. This helps to write valid setups.

 Would adding '-erc:1,1' to the a:t1 chain hurt in any way ? It would be
 nice to have a uniform syntax.

It wouldn't change the processing result in anyway, so it's ok. But it 
does add to CPU usage.

-- 
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Re: Lionstracs.

2004-01-20 Thread Kai Vehmanen
On Tue, 20 Jan 2004, Doug Wellington wrote:

 The big difference is that when the job is done, the result is
 *really* yours to keep. You won't find yourself forced to move to a
 new environment a few years later, just because someone decides it's
 
 Heehee...  I know plenty of people still using old environments and
 technology!  Atari?  Amiga?  Moog?  Sequential?  Fender?  Vox?  How
[...]
 old thing...?  Heck, no technology is immune to the obsolesence due
 to latest and greatest syndrome.  Look at my Waldorf Microwave XT...

But with software it's not 100% the same situation.

I've succesfully run my mixing sessions (requiring Ecasound plus various  
LADSPA plugins) from machines ranging a Compaq iPaq (PDA, the old H3600
model) and a 486SX/25Mhz desktop, to the latest and greatest P4/Athlon
machines. 

I'm pretty confident that I will be able to run the audio sw setup I'm
using now on modern hw in the future, too. All it takes is to someone to
port Linux to the new hw, and keep the apps I use up-to-date. Both are
tasks that I can (in the worst-case) do myself, or pay someone to do.

Now as for the stuff I've recorded with Win95/98 audio apps, to access
them from a modern PC, I need to buy new license for W2000/XP, and
licenses for the W2000/XP compatible versions of the audio software I've
used. And if the companies go out of business, I might have to resort to
reverse-engineering their session-formats to get access to my old
recordings. This can be significantly more difficult (and costly if I pay
someone else to do it) than keeping my Linux audio setup running.

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Re: linuxaudio.org

2004-01-14 Thread Kai Vehmanen
On Thu, 15 Jan 2004, Marek Peteraj wrote:

   So, the world of Linux audio developers is not one 
 with a nice uniform viewpoint that's somehow encapsulated in this 
 mailing list.  Doesn't that suggest that if this were to be debated 
 Jack, ladspa, does it ring a bell? See the lad archive. 

I promised myself not to get involved but now I just have to, although
only commenting this one specific statement.

JACK --- Paul Davis. Discussions happened on LAD but mostly 
  concentrating on the n+1 different proposals and
  implementations on doing an audio server, and of course,
  making more proposals. Paul just went ahead and did it. 

LADSPA - Richard Furse. Although LADSPA is still _the_ example
  of LAD people working together, we were not closing
  in on any kind of solution in our discussions back
  in 1999-2000. Richard went ahead and put the pieces
  together, and ta-daa, we had a standard.

LAD web site
   - Jörn Nettingsmeier. Again, this is another mostly
  one man show, that is run so well that others
  have silently approved it as the official frontend
  to LAD.

... so history shows (and personal memories of many endless discussions
prove it), that Chris is very much right - LAD is not one unified
community. We have personal agendas, ties to companies or developer
groups, we want _our_ solutions to succeed, etc, etc... but that's not
really new. But still, we desperately want to share our ideas about audio
development on Linux, and that is something that we share - whether it
fits our hidden agendas or not.

IMHO the magic of LAD is that it has survived the overblown egos of us
developers for so long, and even witnessed few cases of random
collaboration. :) And perhaps most importantly, LAD has been a fun place
to be - let's try to keep it that way.

--
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] rt irqs patch to 2.4.23

2004-01-11 Thread Kai Vehmanen
Hello all,

here's a new approach to improving kernel RT performance. This
specifically tries to improve interrupt latencies, so it's complementary
to the existing preempt and lowlatency patches.

# linuxdevices.com article
http://www.linuxdevices.com/news/NS3235024671.html

Metrowerks Senior Software Engineer and veteran real-time programmer 
Bernhard Kuhn has created a Linux kernel patch that he claims enables 
hard, real-time performance in the Linux kernel by adding priorities to 
interrupts and spinlocks. Kuhn believes his approach to be more natural 
and akin to traditional real-time operating systems (RTOSs) than the 
dual-kernel approach taken by real-time projects such as RTAI and RTLinux, 
and he is hopeful that his patch might one day win enough interest and 
support to become part of the official Linux kernel tree.

# Kuhn's post to linux-kernel
http://www.ussg.iu.edu/hypermail/linux/kernel/0401.1/0300.html

# Kuhn's announcement
http://linuxdevices.com/articles/AT6105045931.html

# patch against 2.4.23
http://home.t-online.de/home/Bernhard_Kuhn/rtirq/20040108/rtirq-20040108.tgz

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] reminder about Ecasound Control Interface

2003-12-11 Thread Kai Vehmanen
Hello,

for those new to the API, Ecasound Control Interface (ECI) is a _simple_
API for controlling the Ecasound engine. It certainly is not, and is not
meant to be, a general purpose API, but it suits nicely to many
small-to-medium-size tasks. General info about ECI can be found at:

http://www.eca.cx/eci

I'm writing this because the recently released Ecasound-2.3.2 added
support for Ruby (contributed by Jan Weil). Prior versions already
provided support for C, C++, elisp, Perl, PHP and Python. So quite a few
in other words. :)

Another thing to remember is that ECI apps can interact with JACK
(including full transport support!), use LADSPA plugins for effect
processing, and perform native ALSA audio i/o. 

Second reason I'm writing this now is that I just wrote a small app to 
monitor JACK transport position (very much like jack_showtime that comes 
with JACK), and it turned out to be an easy thing to do:

--cut--
#!/usr/bin/env python
from pyeca import *
from time import sleep

e = ECA_CONTROL_INTERFACE()
e.command(cs-add jackmon)
e.command(c-add jacmon)
e.command(ai-add jack)
e.command(ao-add null)
e.command(cs-connect)
e.command(start)

while e.last_type() != 'e':
e.command(get-position)
curpos = e.last_float()
if e.last_type() == 'e': break
sys.stderr.write('JACK system pos %6.2f secs\r' % e.last_float())
sleep(0.2)
--cut--

Converting the above to your favorite language is left as an exercise. :)

PS If you replace 's/null/jack/' and add the line 
   'e.command(cop-add -el:djFlanger,0,5,0.5,50)' ... you've 
   turned the script into a small JACK-Rack style app
   that uses Steve's DjFlanger LADSPA plugin.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] Ecasound 2.3.2 released

2003-12-05 Thread Kai Vehmanen
1. A short summary of changes

Support has been added for libsndfile. This allows to access
a number of new audio file formats such as W64, PVF and VOC 
files. Integration with libaudiofile and MikMod has also
been improved.  Bugs in the native Python ECI implementation 
have been fixed. Rubyecasound, a Ruby ECI implementation, has
been added to the package. A serious memory-leak in list 
handling functions of the C ECI implementation was fixed. This
bugfix also affects C++, Perl and PHP ECI implementations.  
Compiling Ecamegapedal works again as the header files
missing from the previous 2.3.1 release are now again 
included in the dist-package. Many minor bugs have been fixed.

---
2. What is Ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Ecasound is licensed under the GPL. The Ecasound Control Interface 
(ECI) is licensed under the LGPL.

---
3. Changes since last release

* Rubyecasound, a Ruby ECI implementation, has been added 
  to the package. Developer documentation can be found 
  at http://eca.cx/eci. Rubyecasound was developed by
  Jan Weil.

* Some files were missing from the previous 2.3.1 release
  dist-package. This caused the make check test procedure
  to fail, and also prevented from compiling Ecamegapedal
  against 2.3.1. In 2.3.2 the missing files are once again
  included in the dist-package.

* Libsndfile support has been added to Ecasound 
  (development item 'edi-33'). Support for libaudiofile 
  has also been improved in this release. The user
  can now compile in support for both libraries at
  the same time. It is possible to use command-line options
  to select which library to use for a given file. Similar
  improvements have been made to the MikMod support.
  See the ecasound(1) man page for more details.

* Some bugs in libsamplerate integration have been fixed.
  Upgrading to libsamplerate version 0.0.15 or newer is 
  recommended. This release contains a few important fixes 
  that affect Ecasound. A few examples of resampling
  with Ecasound have been added to the docs:
  http://www.wakkanet.fi/~kaiv/ecasound/Documentation/examples.html.

* A severe memory-leak bug was found and fixed in the C ECI 
  implementation. This bug affects applications that heavily
  use EIAM commands that return lists of strings. The C ECI
  is used by C++, Perl, PHP and Python ECI implementations.

* Bugs in the native Python ECI implementation have been
  fixed. The C-based Python ECI implementation is still 
  selected as the default, but you can override this with
  the '--enable-pyecasound=python' option to configure.

  Note, 'native' here means that ECI API is implemented without 
  linking to any Ecasound libraries. Instead the ECI implementation
  forks 'ecasound' binary on the background and communicates with it 
  using pipes. This allows for clear decoupling between ECI apps 
  and specific Ecasound version. More information about ECI can
  be found at http://www.eca.cx/eci.

Full list of changes is available at 
http://www.wakkanet.fi/~kaiv/ecasound/history.html.

---
4. Interface and configuration file changes

None.

---
5. Contributors

Patches - Accepted code, documentation and build system changes

Jan Weil (2) -- rubyecasound ECI implementation, new docs
Mark de Wever (1) -- typo in libecasoundc-config usage
Kai Vehmanen (various)

Bug Hunting - Reports that led to bugfixes (items closed)

Fernando Pablo Lopez-Lezcano (1) -- preset.h not installed
Jan Weil (1) -- the ecacontrol.py bug

---
6. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecasound
http://www.eca.cx/eci

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.3.2.tar.gz

Distributions with maintained Ecasound support:
Agnula - http://www.agnula.org
AltLinux - http://www.altlinux.com
Debian - http://www.debian.org
FreeBSD - http://www.freebsd.org/ports/audio.html
Gentoo Linux - http://www.gentoo.org
Mandrake - http://www.mandrake.org
PLD Linux - http://www.pld.org.pl
SuSE Linux -  http://www.suse.de/en

Contrib Packages and Add-On Distributions:
AudioSlack for Slackware - http://www.audioslack.com
PlanetCCRMA for RedHat/Fedora 
- http://www-ccrma.stanford.edu/planetccrma/software
Thac's RPMs for Mandrake - http://rpm.nyvalls.se
Apps.kde.com packages for Mandrake

Re: [linux-audio-dev] Tracker

2003-11-27 Thread Kai Vehmanen
On Wed, 26 Nov 2003, Thomas Webb wrote:

 As a general rule, musicians who don't care about
 proprietary vs. open source won't be running Linux to begin with.
 I hope this won't always be true. It if it, Linux has
 no future.

But Linux is already here! 

Without guessing how big or small impact Linux will have in audio sw, in
the long run, it will definitely have a role. I'm pretty confident that I
can open my old recording sessions on a modern PC in let's say 2010. I can
already open my sessions on both a 486SX bought in 1992, as well a laptop
bought this year. I guess I could keep an old Win9x machine around to
access the stuff I've written with old Win9x apps, but what if that
machine breaks down - can I purchase an old machine capable of running
Win95x, a license for it and all the required sw in 2010? Nopes, I don't
want to count on that, I want to access my old stuff on a modern machine
in 2010, and Linux allows me this.

Knowledge of this - that I will be able to access my music even if I
upgrade/change my hardware/distro - is one big reason why I want to record
my music on Linux and using FOSS apps. No commercial company - no matter
how benevolent - can guarantee me this.

I don't personally have anything against commercial software (neither open
or closed sourced, even though I personally prefer the former), but it is 
worth to note that FOSS (free-and-open...) has certain advantages that 
commercial players can never match, and similarly commercial side has 
certain advantages which are really hard for FOSS projects to compete 
with.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] ecasound 2.3.1 released

2003-11-18 Thread Kai Vehmanen
1. A short summary of changes

Ecasound's emacs mode, ecasound.el, has been updated to 
version 0.8.3. Due to severe bugs found in the native Python 
ECI implementation, the C implementation has been again set as 
the default. Minor interoperability problems with older JACK
releases and Ecasound have been fixed. A bug that caused builds
against an external libreadline to fail, has been fixed.
Also recording problems with the WinTv 401Dbx and other 
bt878-based devices have been fixed. This release is compatible
with the upcoming alsa-lib-1.0 releases.

---
2. What is Ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Ecasound is licensed under the GPL. The Ecasound Control Interface 
(ECI) is licensed under the LGPL.

---
3. Changes since last release

Full list of changes is available at 
http://www.wakkanet.fi/~kaiv/ecasound/history.html.

---
4. Interface and configuration file changes

None.

---
5. Contributors

Patches - Accepted code, documentation and build system changes

Mario Lang (ecasound.el updated to 0.8.3, doc typo fixes)
Junichi Uekawa (ecasound makefile bug, doc generation 
using Hevea)
Kai Vehmanen (various)

Bug Hunting - Reports that led to bugfixes (items closed)

Hirendra Hindocha (2) --  recording problems with WinTv 401dbx, 
  ecacontrol.py bugs
Stefan Bundt (1) -- ecacontrol.py breaks under heavy load
Dave Phillips (1) -- errors in EIAM help
Junichi Uekawa (1) -- compability bug with older JACK versions

---
6. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecasound

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.3.1.tar.gz

Distributions with maintained Ecasound support:
Agnula - http://www.agnula.org
Debian - http://www.debian.org
FreeBSD - http://www.freebsd.org/ports/audio.html
Gentoo Linux - http://www.gentoo.org
PLD Linux - http://www.pld.org.pl
SuSE Linux -  http://www.suse.de/en

Contrib Packages and Add-On Distributions:
AudioSlack for Slackware - http://www.audioslack.com
PlanetCCRMA for RedHat/Fedora 
- http://www-ccrma.stanford.edu/planetccrma/software
Thac's RPMs for Mandrake - http://rpm.nyvalls.se
Apps.kde.com packages for Mandrake/Redhat/SuSE
- http://apps.kde.com/rf/2/info/id/2146

Note! Distributors do not necessarily provide packages for 
  the very latest Ecasound version.

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] [PATCH] oss support for jack

2003-11-14 Thread Kai Vehmanen
On 14 Nov 2003, Jussi Laako wrote:

 I've written preliminary OSS driver for JACK. Patch for jack 0.80
[...]
 If you are compiling with OSS Lite, please comment out the non-S16
 formats.

Workaround for this:

--cut--
#ifndef AFMT_S32_LE
#define AFMT_S32_LE  0x1000
#endif

#ifndef AFMT_S32_BE
#define AFMT_S32_BE  0x2000
#endif
--cut--

... and so on. This should be added before committing this to CVS as most
people have OSS-Lite.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] linux-kernel comments on POSIX capabilities support (fwd)

2003-11-07 Thread Kai Vehmanen
Crossposting from jackit-devel to here...

-- Forwarded message --
From: Kai Vehmanen [EMAIL PROTECTED]
Subject: [Jackit-devel] linux-kernel comments on POSIX capabilities support

Not too encouraging.. :(

http://kt.zork.net/kernel-traffic/kt20031101_239.html#3

Quoting Albert Cahalan:
The authors of our code seem to have given up and moved on. Nobody 
cleaned up the mess. Is it any wonder the POSIX draft didn't ever make it 
beyond the draft state?

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] distributed multitracking with JACK (fwd)

2003-08-26 Thread Kai Vehmanen
For those who are interested in JACK's transport functionality, the
following message provides a step-by-step example of distributed (as in
multiple independent apps participating in the same session) multitrack
recording, plus some discussion about current limits and usability issues.

Links to the latest snapshot tarballs are available at the very end
of this message. For info about JACK transport, see:

  http://www.joq.us/jack/refman/transport-design.html
  http://eca.cx/lad/2003/08/0109.html

The Feb'03 mail I refer below can be found at:

  http://boudicca.tux.org/hypermail/jackit-devel/2003-Feb/0052.html

It's good to note that I could have used any transport-aware application
in place of the Ecasound instance 'ecafoo' to provide audio tracks to
record against [*]. The application could have been (assuming proper
support is added to them at some point) Alsaplayer, Ardour, SoundTracker,
CheeseTracker, Hydrogen, Gmorgan, etc, etc... you get the picture.
Similarly the recording client 'ecabar' (an Ecasound instance in our
example session) could be replaced by Ardour, Rosegarden, Muse, Audacity
or any other multitrack capable audio recorder.

Sounds good, doesn't it? :) So let's continue with the example:

[*] As we are still developing the transport system and there 
are only few apps that follow bleeding edge development, 
I had to settle on using Ecasound. :)

-- Forwarded message --
Subject: Re: [Jackit-devel] distributed multitracking

It's more than six months now since I last tried this, time for another
look at this use case:

On Wed, 5 Feb 2003, Kai Vehmanen wrote:

 --
 The good news:
[...]
 I just managed to record a piece with three guitar tracks using three
 separate instances of ecasound, each instance handling one guitar take. I

I did the same again with the new transport interface.

Environment:
   linux-2.4.19-lowlatency-capabilities-tracepatches
   Midiman Delta44 as the soundcard
   latest 0.9.6 ALSA drivers
   latest JACK and Ecasound from CVS (2003-Aug-25)
   
I set jackd to use the _maximum_ latency settings for Delta44 (-n 3 -p
1024) to create the worst possible environment for syncing clients.

The test went through unbelievably smoothly. Not a single crash in any app
during the whole testing. Unlike in the test in February, this time I
didn't have to restart all the clients after each and every take and/or
mixdown run. Also, I was now able to seek from any of the Ecasound
sessions or from jack_transport and all the other clients would 
correctly follow the changes. Yay! Nice work Jack (J.O'Quin) and JACK! :D 

 -
 The bad news:
[...]
 Synchronization is a big problem. Let's say you have the following setup:

... and still is.

   alsa_pcm- ardour
   soundtracker- alsa_pcm
[...]
 Jackd is run with -p 1024 -n 2, ST is the sync master, hw-monitoring is
 used for the alsa_pcm input. The big problem is that there's no easy way
 for ardour to learn how much non-valid data will come out of alsa_pcm in
 the start. In this distributed recording case ardour should ignore the
 first 2*1024 samples (maximum of ST output and alsa capture latency).

There doesn't seem to be any easy way around this problem. Somehow we need
to provide meta-information concerning how these independent connections
between JACK ports are related (from user POV) to each other.

To solve this for my test case, I added a new option to Ecasound for
specifying explicit multitrack recording offset. The syntax is 
-z:multitrack,XXX, where 'XXX=n*p', 'n' jackd/alsa_pcm period count
and 'p' jackd/alsa_pcm period size in samples. With this meta-info, the 
multitrack sync works comparably with a session without JACK.

And finally, a test script for a minimal distributed multitracking 
session:

--cut--
# 1. launch jackd and jack_showtime (_very_ useful if something goes wrong)

# 2. test input levels (play something and verify that the meters 
#are moving); ctrl-c to exit
ecasignalview jack_alsa

# 3. create the monitor track to play against (15 secs)
sh1 ecasound -i null -o monitor.wav -x -pn:metronome,120 -t:15

# 4. launch the slave client  
sh1 ecasound -i monitor.wav -o jack -G:jack,ecafoo,sendrecv -c
ecasound1 engine-launch

# 5. launch the master client (replace 3072 with value corresponding
#to the -n/-p params you run jackd/alsa_pcm with)
sh2 ecasound -a:rec -i jack_alsa -o recorded.wav -a:mon -i jack -o jack_alsa 
-G:jack,ecabar,sendrecv -z:multitrack,3072 -c
ecasound2 engine-launch

# 6. connect the slave client to the master client
sh3 jack_connect ecafoo:out_1 ecabar:in_3
sh3 jack_connect ecafoo:out_2 ecabar:in_4

# 6. launch jack_transport and control the two multitrack-recorder
#instances
sh3 jack_transport
jack_transport locate 0
jack_transport play

# 7. record something against 'monitor.wav' (check jack_showtime output
#if you have problems)

# 8. listen to the result (note! we can let the slave client to run 
#all

[linux-audio-dev] RFC to developers: JACK transport BETA

2003-08-14 Thread Kai Vehmanen
Hello,

we are finally getting close to reaching the original goals set for JACK.
The last big step has been the transport interface (to refresh your 
memory, take a look at the initial JACK/LAAGA use-scenario [1]).

Thanks to Jack O'Quin's recent efforts, JACK now finally has a transport 
interface (and implementation) that fulfills all the requirements, and 
one that makes it possible to realize the example case [1].

Now at this point we'd _really_ appreaciate your input. If you are short 
of time, at least take a look at our requirements list at the start of 
the design doc:

http://www.joq.us/jack/refman/transport-design.html

The big questions are: 

1. Is this API sufficient for your application? If not what is 
   missing and/or wrong?

2. Do you plan to add support for JACK transport to your app? If not,
   what is the main reason not to (no interest, not useful for 
   your app, you prefer other solutions, etc)?

In addition, comments regarding interface and implementation details are 
also welcome.

[1] http://www.eca.cx/laaga

-- Forwarded message --
Date: 13 Aug 2003 22:08:09 -0500
From: Jack O'Quin [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [Jackit-devel] CVS commit [0.77.0] new transport BETA test


The new transport interfaces are ready for beta testing.  Bring on
your applications and give it a try.  We will likely want to tweak a
few things as problems are discovered.  So, please don't release any
applications that depend on the new API until the beta test is
finished and we cut a new JACK release.  But, the design seems stable
right now.

The reference manual is still at...

  http:www.joq.us/jack/refman

If you don't want to wait for CVS to catch up, here's a tarball...

  http:www.joq.us/jack/jack-audio-connection-kit-0.77.0-beta.tar.gz

Highlights...

  * new minor version, API version and protocol version

-- to distinguish beta test level from earlier snapshots
-- source compatible with recent 0.76 snapshots
-- transport API not binary compatible: must recompile

  * functional test complete (except internal clients)

-- if you have an internal transport client, try it
-- it might work, but I still have no test cases

  * jackd -v option (--verbose) now prints useful transport state
change information for debugging JACK and clients both

  * includes Bob Ham's makefile fix for the jackrec example client
-- 
  Jack O'Quin
  Austin, Texas, USA



Re: [linux-audio-dev] Linux 2.6 not a latency panacea?

2003-08-14 Thread Kai Vehmanen
On Wed, 13 Aug 2003, Joshua Haberman wrote:

 I am distressed.  It was my understanding that the 2.5/2.6 kernel branch 
 was undergoing significant scheduler and latency work, and that 2.6 
 would eliminate the kernel from the list of obstacles of low-latency on 
 Linux.  It will have the preemptable kernel patch, the new scheduler, 
 and all of Ingo Molnar's low-latency work.  Claims were being thrown 
 around that 2.6 would be the lowest-latency operating system on the planet.

Well, while there are plenty of nice improvements from lad perspective, 
many fundamental problems/features are still present in 2.6.

 So how is it that we're in the 2.6.0-test series and people are 
 complaining about audio skipping in **XMMS**, which uses three second 
 buffers by default??  If people are getting skips from high-latency 
 playback, what hope is there for low-latency audio?

Yup, fact that hasn't changed is that you need SCHED_FIFO to achieve any 
kind of reliable low-latency audio operation. The problems with XMMS 
skipping are - while still important - not directly related to the 
low-latency case.

 A series of patches 
 are coming from both Ingo and Con Kolivas attempting to address this, 
 but the fact they are just now throwing around potential solutions 
 erodes at my faith that they really understand the problem or how to 
 solve it.

These might help the out-of-the-box behaviour (running audio apps without 
SCHED_FIFO), but will never be good enough for the low-latency case.

 Is 2.6.x going to be suitable for low-latency (or even reliable 
 high-latency) audio?  Or is it going to be more of the same: patching 
 the kernel, tweaking parameters, reading magical incantations, and 
 hoping for the best?

I've done limited testing with 2.6.0-test2 on my laptop, and got fairly 
good results. In my tests it performed nearly as good as my 
2.4.19smp-lowlatency, which is promising (as smp is a big advantage in 
this case). 

So it looks good, but still you absolutely need SCHED_FIFO.  And I'm not
aware of any developments in the kernel caps area, so we still probably 
need to patch the kernel to allow user apps to enable SCHED_FIFO.

Yups, it would be great if someone of us would have the time and energy to
participate more closely in linux-kernel discussion, and even better, in
kernel development. We'd need someone to actively push low-latency
improvements to the kernel and keep the issue on the table.

For example, one new approach to the problem SCHED_SOFTRR, see:
http://www.xmailserver.org/linux-patches/softrr.html
http://www.ussg.iu.edu/hypermail/linux/kernel/0307.1/1729.html

It's unlikely to get something like this enabled by default in the vanilla 
kernel, but we might be able to get a kernel option (no patching!). But, 
but, as you can see from the discussion, they are talking about totally 
different things (how XMMS/realplayer performs)... 

... basicly a way to get benefits of SCHED_FIFO but without need for root 
privileges. Now we just need to push these to the standard kernel somehow.

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] link: Sound on Sound: Cutting Edge : The Future of Music Technology

2003-03-19 Thread Kai Vehmanen
Nothing new really, but it's on SoS so I guess it's worth a read ;)

http://www.sospubs.co.uk/sos/apr03/articles/cuttingedge0403.asp

-- 
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] ecasound 2.2.2 released

2003-03-18 Thread Kai Vehmanen
1. A short summary of changes

A new native Python implementation of the ECI API has been added to 
the package. Ecasound.el (ecasound-emacs) has been updated to version 
0.8.2. Oggs and mp3s can be now streamed directly from network.
Author information is now visible in the LADSPA plugin descriptions.
Changes in ALSA-0.9 support improve usability of ecasound with 
the new ALSA dmix PCM plugin. There have been many important 
bugfixes including correct handling of short parameter fades,
broken chainsetup level looping, problems with creating temporary 
files and minor build system issues.

---
2. What is ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Ecasound is licensed under the GPL. The Ecasound Control Interface 
(ECI) is licensed under the LGPL.

---
3. Changes since last release

Full list of changes is available at 
http://www.wakkanet.fi/~kaiv/ecasound/history.html.

---
4. Interface and configuration file changes

None.

---
5. Contributors

Patches

Janne Halttunen (the new Python ECI implementation)
Mario Lang (ecasound.el 0.8.2)
Junichi Uekawa (pyecasound.so build)
Kai Vehmanen (various)

Bug Hunting (items closed)

William Goldsmith (2)
Michael Hellwig (1)
Janno Liivak (1)
Raoul Megelas (1)

Feature requests (items implemented)

Oliver Thuns (1)

---
6. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecasound

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.2.2.tar.gz

Distributions with maintained ecasound support:
Agnula - http://www.agnula.org
Debian - http://packages.debian.org/unstable/sound/ecasound2.2.html
DeMuDi - http://www.demudi.org
FreeBSD - http://www.freebsd.org/ports/audio.html
Gentoo Linux - http://www.gentoo.org
PLD Linux - http://www.pld.org.pl
PlanetCCRMA - http://www-ccrma.stanford.edu/planetccrma/software
SuSE Linux -  http://www.suse.de/en

Contrib Packages for Distributions:
Mandrake - http://rpm.nyvalls.se/sound9.0.html

Note! Distributors do not necessarily provide packages for 
  the very latest ecasound version.

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] Fwd: CSL Motivation

2003-02-27 Thread Kai Vehmanen
On Thu, 27 Feb 2003, Stefan Westerfeld wrote:

[ Paul's msg I forwarded ]
 I am glad you did write JACK, although back then I thought it was just another
 try to redo aRts (and we had some heated discussions back then), because some
 people seem to like it. If some people will like CSL, why not?

And just to give you kde-multimedia people a view of the current status, 
take a look at:

http://jackit.sourceforge.net/apps/

JACK has been really been quite a success. The ability to run multiple
apps and route audio freely (and easily thanks to qjackconnect!) between
them, with reliable low-latency is something that has attracted a lot of
developers and users to JACK. A few screenshots (sorry about the 
eca-emphasis :))...:

http://eca.cx/screenshots/jack_and_ecamegapedal_under_heavy_load-20021102.png

http://eca.cx/screenshots/qjackconnect_ecamegapedal_ecasignalview_jack-20021102.png

What I'm personally most impressed and proud about is that we've been able
to get developers from different (some directly competing) projects to
work together on this. Although linux-audio-dev is an active communicty,
actual code-level sharing so far has not been common.

It would be great if KDE (and GNOME) users could join the fun without
having to completely abandon desktop multimedia while doing this. The next
step would be to close the bridge between kde-multimedia and
linux-audio-dev... ;)

 If you added CSL support to JACK right now, you would never need to bother
 with any of the sound server guys like me again, because you could always
 say: support CSL in your sound server thing, and then JACK will support your
 sound server.

Yup, I guess it wouldn't be too big of a task to adapt (for instance) the 
ALSA's JACK PCM-plugin for the CSL API. Hopefully someone will do this.

Do you have any code in place that handles the backend detection for CSL?

--
 http://www.eca.cx
 Audio software for Linux!



Re: [linux-audio-dev] BruteFIR + jack = crackling noise?

2003-02-26 Thread Kai Vehmanen
On Thu, 27 Feb 2003, Patrick Shirkey wrote:

 But it would be very nice if I could use my usb quattro to manipulate 
 the sounds of my bandmates in realtime at lowlatency. I tried with ssm 
 at 64 bytes and there was noticible lag so we couldn't do anything live.
[...]
 The best I can get out of jack is 1024 but 2048 is more reliable.

Hmm, that sounds strange. How long is a noticable lag? :) Have you tried
with ecasound? I've personally tried a few USB audio devices and didn't
experience any unusual latency problems. Something like ecasound -b:256
-z:nointbuf -i alsa -o alsa  should be enough for effect-box type
real-time processing. Maybe I should test that again...

PS Although I must say, due to old USB-related work projects, I have a 
   real love-hate relationship with USB. Nowadays whenever I see someone 
   (un)plugging a USB-device, I automatically expect the machine to halt 
   completely or plain just not work. :) Fortunately there are exceptions, 
   my Rio500 and Midisport2x2 have almost changed my mind.. they actually 
   do work. :) But, but... don't take these words too seriously.

--
 http://www.eca.cx
 Audio software for Linux!



[linux-audio-dev] ecasound 2.2.1 released

2003-02-15 Thread Kai Vehmanen
1. A short summary of changes

The JACK slave mode code has been completely rewritten. As a
new feature it is now possible to use libsamplerate for 
resampling. Using JACK has been made more user-friendly as ecasound 
can now automatically configure the runtime parameters to 
match the current server settings. And thanks to build system 
and signal handling updates, it's now possible to compile 
ecasound for win32 under Cygwin.

---
2. What is ecasound?

Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback, 
recording and format conversions, as well as for multitrack effect 
processing, mixing, recording and signal recycling. Ecasound supports 
a wide range of audio inputs, outputs and effect algorithms. 
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators 
and MIDI-CCs. A versatile console mode user-interface is included 
in the package.

Ecasound is licensed under the GPL. The Ecasound Control Interface 
(ECI) is licenced under the LGPL.

---
3. Changes since last release

* If configured with JACK-support, ecasound will now fetch the 
  correct buffer size and sampling rate parameters from the 
  JACK server when connecting a chainsetup with JACK inputs or 
  outputs. In other words you don't have to manually match 
  these settings between the JACK server and ecasound.

* Support for Erik de Castro Lopo's libsamplerate 
  resampling library added. If libsamplerate is not installed,
  ecasound will fall back to the old resampling algorithm.

* Rewritten the code that handles JACK slave-mode operation. 
  Ecasound is now able to more quickly and reliably follow 
  transport state and position changes, as initiated by the 
  current JACK timebase master.

* Ecasound for Windows! :) With help of the Cygwin environment, 
  you can now compile win32 ecasound binaries straight from 
  the standard source package. As of 1.3.1, Cygwin also
  contains basic /dev/dsp emulation, so even audio playback 
  works.

* Fixed many, more or less serious, bugs. The most annoying 
  ones were incorrect handling of the '-t' option, excessive
  DBC warnings with JACK inputs and outputs and failing to
  properly reset the terminal after a CTRL-C while in interactive
  mode.

Full list of changes is available at 
http://www.wakkanet.fi/~kaiv/ecasound/history.html.

---
4. Interface and configuration file changes

None.

---
5. Contributors

Patches

Junichi Uekawa (build system)
Kai Vehmanen (various)

Bug Hunting (items closed)

Janne Halttunen (2)
Eric Amundsen (1)
Antti Boman (1)
William Goldsmith (1)
Andrew Reilly (1)
Oliver Thuns (1)

---
6. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecasound

Source packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecasound-2.2.1.tar.gz

Related sites:
http://jackit.sf.net (JACK)
http://www.mega-nerd.com/SRC (libsamplerate)
http://www.cygwin.com

Distributions with maintained ecasound support:
Agnula - http://www.agnula.org
Debian - http://packages.debian.org/stable/sound/ecasound.html
 
http://packages.debian.org/unstable/sound/ecasound2.2.html
DeMuDi - http://www.demudi.org
FreeBSD - http://www.freebsd.org/ports/audio.html
Gentoo Linux - http://www.gentoo.org
PLD Linux - http://www.pld.org.pl
PlanetCCRMA - http://www-ccrma.stanford.edu/planetccrma/software
SuSE Linux -  http://www.suse.de/en

Contrib Packages for Distributions:
Mandrake - http://rpm.nyvalls.se/sound9.0.html

Note! Distributors do not necessarily provide packages for 
  the very latest ecasound version.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] (OT) C++ flame war

2003-02-06 Thread Kai Vehmanen
Ugh, OT for sure, but I just cannot resist the temptation to reply to this 
thread any longer. ;)

On Thu, 6 Feb 2003, Paul Davis wrote:

 conceptually, i am not creating a distinct type of object - i want to
 provide a particular set of objects with access to a limited set of
 member functions belonging to an otherwise unified object. C++ won't
 let me do that - it forces me to use an abstract class, multiple

I'd say just use comments to express the access rules. Even though C++
provides public/protected/private, there's no way to actually enforce them
- if someone wants to access the private members, it's certainly possible
no matter what you do. So you might as well use public for these
targeted-for-certain classes sub-APIs and describe the intended audience 
of the functions in comments.

Of course, when public/protected/private are enough, they should be used.
Standard language level concepts are always better, as the semantics are 
known by majority of (competent) developers.

--
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] List still up?

2003-02-02 Thread Kai Vehmanen
Hi,

no messages so far, so something's up. The archives are up at:

http://eca.cx/lad/2003/01/
http://eca.cx/lad/2003/02/ (although no messages)

Replaces 'lad' with 'laa' or 'lau' for the other lists.

On Mon, 3 Feb 2003, David Olofson wrote:

 
 (Well, it got silent again, and I can't check the archive...)
 
 Appears that the LAD site is down, and the list archive gives me the 
 PHP code as text/plain... What's going on?
 
 

--
 http://www.eca.cx
 Audio software for Linux!




Re: [Jackit-devel] Re: [PD-announce] Re: [linux-audio-dev] ANN:k_jack v0.0.0.5 and Mammut v0.15

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Kjetil S. Matheussen wrote:

 What does cat /proc/asound/card0/pcm0[cp]/sub0/[hs]w_params output
 I'm at work now, and we ~only have delta cards. At home I use a built-in
 sound-card on an nforce chipset. But I get nearly the same good
 performance in pd here as at home. So here is delta44 parameters:

Could you also send an output of pcm0[cp]/sub0/status...? 
Anyway, this is very good info.

 kjetism@hensten /proc/asound/card0/pcm0c/sub0 $ more hw_params
[...]
 period_size: 64
 buffer_size: 1728

So I guess this explains a lot. This equals to running jackd 
with -p 64 -n 27 (and not as root or otherwise it will throw clients
out if they miss one 64 frame deadline). 

I'm quite sure you get much more reliable performance this way, although
JACK doesn't take advantage of multip-period buffer configurations very
well.  And this has its reasons. With a setup like shown above, you either
get a huge latency (64*1728/44100*1000=2500ms), or you get latency jitter
(latency varies between 1.45ms-2500ms). Both are something we'd _really_
want to avoid.

Because of the above reasons, JACK is designed for two or three
period operation (-n 2 or -n 3). This way we can achieve both low 
latency and avoid latency jitter. We could improve reliability by 
sacrificing one or both of these goals, but for many of the use scenarios 
we are aiming at, this is simply not acceptable.

--
 http://www.eca.cx
 Audio software for Linux!
 




Re: [Jackit-devel] Re: [PD-announce] Re: [linux-audio-dev] ANN:k_jack v0.0.0.5 and Mammut v0.15

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Paul Davis wrote:

 period_size: 64
 buffer_size: 1728
 So I guess this explains a lot. This equals to running jackd 
 with -p 64 -n 27 (and not as root or otherwise it will throw clients

Well, this is still true.

well.  And this has its reasons. With a setup like shown above, you either
get a huge latency (64*1728/44100*1000=2500ms), or you get latency jitter
 not that large. you don't multiply the period size by the buffer size
 and the 1000 is extraneous too. the maximum latency is 1728/44100 =
 39ms, i think. i don't of any h/w that has a 2.5 second buffer!!

Arrghghthghhg! :D 2500ms would have made a nice pro-jack argument, though.;) 
So the correct one is the 64*27/44100*1000=39ms you mention. 

 this is still pretty long, and as you note, pd is not subject to
 per-period time limits with this configuration. it can take too long
 on up to 26 of 27 periods before there is an xrun.

Hmm, this is quite interesting. With a period size of 64 frames, 
you'd get quite a lot of context switches with jackd. Kjetil, does 
your ipc-lib make the context switches this often? 

Another interesting this is how this high interrupt frequency affects
scheduling of (non-root) processes. I'd guess it could have a notable 
impact on reliability... have to try this later today with jackd.

--
 http://www.eca.cx
 Audio software for Linux!





Re: [Jackit-devel] Re: [PD-announce] Re: [linux-audio-dev] ANN:k_jack v0.0.0.5 and Mammut v0.15

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Paul Davis wrote:

 no, there's likely not much latency jitter in pd either. after the
 first 27 periods are filled (which happens in about 39ms), every chunk
 of audio delivered by pd to the hardware will be output by the
 hardware about 38ms later. the jitter is limited to about 1.45ms,
 assuming that pd is roughly keeping up with the hardware. of course,

But there's no way a normal user-space can reliably wake-up every 1.45ms
and manages do finish i/o for next period. The application is bound to
late, much of the time. This is not necessarily fatal if the application 
is able to catch up. This is precisely the reason why you can get very 
reliably processing with ecasound using -z:intbuf option (maximize use of
soundcard hw buffering).

 However, as Kai pointed out, nobody runs JACK with -p 64 -n 27, and if
 they did, I suspect that they'd get similar performance to pd. it

Actually, with current jackd you cannot use -p 64 -n 27, as it will
throw the delay of %.3f usecs exceeds estimated spare time of %.3f; 
restart ... error and stop the alsa_driver. I made a patch that bypasses
this check and managed to get jackd running with -p 64 -n 27. And indeed,
it runs reasonably well on my laptop (normal user space), but I still
get xrun from ALSA. Below are some stats. As you can see from the 
'delay' values, the latency jitter is considerable, even though the test 
machine was not doing anything else than jackd+ecasound playback.

--cut--
[xxx]$ cat /proc/asound/card0/pcm0p/sub0/{sw_params,hw_params,status}
tstamp_mode: NONE
period_step: 1
sleep_min: 0
avail_min: 64
xfer_align: 64
start_threshold: 0
stop_threshold: 1728
silence_threshold: 0
silence_size: 0
boundary: 1811939328
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 64
buffer_size: 1728
tick_time: 1
state: RUNNING
trigger_time: 1043423501.808278
tstamp  : 1043423507.253736
delay   : 1204
avail   : 524
avail_max   : 704
-
hw_ptr  : 240268
appl_ptr: 241472
[xxx]$ cat /proc/asound/card0/pcm0p/sub0/{sw_params,hw_params,status}
tstamp_mode: NONE
period_step: 1
sleep_min: 0
avail_min: 64
xfer_align: 64
start_threshold: 0
stop_threshold: 1728
silence_threshold: 0
silence_size: 0
boundary: 1811939328
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 64
buffer_size: 1728
tick_time: 1
state: RUNNING
trigger_time: 1043424884.923610
tstamp  : 1043424886.101041
delay   : 1678
avail   : 50
avail_max   : 1728
-
hw_ptr  : 51762
appl_ptr: 53440
--cut--

--
 http://www.eca.cx
 Audio software for Linux!





Re: [Jackit-devel] Re: [PD-announce] Re: [linux-audio-dev] ANN:k_jack v0.0.0.5 and Mammut v0.15

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Kjetil S. Matheussen wrote:

 I'm at work now, and we ~only have delta cards. At home I use a built-in
 sound-card on an nforce chipset. But I get nearly the same good
 performance in pd here as at home. So here is delta44 parameters:

But how do you know you are not losing any data? I mean...

 kjetism@hensten /proc/asound/card0/pcm0c/sub0 $ more hw_params
[...]
 stop_threshold: 1811939328

... there seems to be no xrun detection enabled. At least pd-0.36 seems to
set snd_pcm_sw_params_set_xrun_mode(alsa_device.inhandle, sw_params,
SND_PCM_XRUN_NONE);.

This means that you could be having small xruns all the time! Of course,
really long breaks are always audible, but shorter ones are sometimes
quite subtle. Still, you are losing audio data.

--
 http://www.eca.cx
 Audio software for Linux!




Re: [Jackit-devel] Re: [PD-announce] Re: [linux-audio-dev] ANN:k_jack v0.0.0.5 and Mammut v0.15

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Kjetil S. Matheussen wrote:

 This means that you could be having small xruns all the time! Of course,
 really long breaks are always audible, but shorter ones are sometimes
 quite subtle. Still, you are losing audio data.
 I guess so. But its not necesarrily very import, at least not for (most
 kinds of) live performance. Is there a quick way to patch pd so that it
 detects xruns?

Yup, replace the set_stop_mode call with:

snd_pcm_sw_params_set_stop_threshold(handle, sw_params, XXX);

... where XXX is the buffersize (ie. 64*27=1728). 

The difference is definitely notable. I've just patched jackd to ignore
all xruns the way pd does, and yup, I can do all kinds of stuff as a
normal user (with ./jackd -p 64 -n 27). I'm currently running
ecasound+jackd+freqtweak+qjackconnect as a normal user, with the same
1.5-39ms latency as with pd, and while there are occasional audible
artifacts, it does indeed work!

Also more common jackd setups like 'jackd -d alsa -p 1024 -n 3' 
work more reliably this way. But of course, as I noted in my previous 
message, we are definitely losing samples even though no errors are 
reported.

--
 http://www.eca.cx
 Audio software for Linux!





[linux-audio-dev] pd/k_jack-ish soft-mode patch for jack (was: k_jack v0.0.0.5 andMammut v0.15)

2003-01-24 Thread Kai Vehmanen
On Fri, 24 Jan 2003, Kjetil S. Matheussen wrote:

 Yup, replace the set_stop_mode call with:
 snd_pcm_sw_params_set_stop_threshold(handle, sw_params, XXX);
 I'm not able to make that work. Just gets a message about stock audio,
 no matter how big buffer it is. But thats not important.

Hmm, what's the exact error you get? One thing that will cause you trouble
is that audio playback will stop after the first xrun. You have to restart
the stream (stop-prepare-start) to recover from an xrun. This is also the
source of the longer audible breaks that occur with current JACK's ALSA
driver when xruns occur.

 The difference is definitely notable. I've just patched jackd to ignore
 all xruns the way pd does, and yup, I can do all kinds of stuff as a
 normal user (with ./jackd -p 64 -n 27). I'm currently running
 Thats very nice. How about an option for jack to ignore xruns then?

True, I just posted a patch that does this to jackit-devel. So, so, as I 
said, competition is a good thing! ;D So thanks for releasing k_jack
and helping with the debugging/tracing work.

 And, are you absolutely sure its not a bug in alsa, reporting to many
 xruns? :)

This is very unlikely. The code in alsa-kernel/driver that handles this 
logic is _very_ robust. I haven't done much driver work, but I've still 
gone through those functions at least a hundred times, and I bet many 
other developers have done the same. The common PCM subsystem used by all 
ALSA low-level drivers is really high-quality code. The fact that all 
drivers can benefit from this common code library is IMHO one of the 
biggest benefits ALSA brings!

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [PD-announce] Re: [linux-audio-dev] ANN: k_jack v0.0.0.5 andMammut v0.15

2003-01-23 Thread Kai Vehmanen
On Wed, 22 Jan 2003, Kjetil S. Matheussen wrote:

 For two years (or somethings), people have complained about the bad
 performance of the jack system. And I don't think it has been solved. I
 dont know about alsa; and doesn't understand the driver-code, so it was
 easier for me just to reimplement jack.

First of all, I must say I have nothing against k_jack. I don't think I
fully understand the motives (or the mechanims or design features that
enable better performance), but as Ron Kuper wrote today, competition is
good.  I don't think it's fair to expect commercial companies to deal with
competition from FOSS groups, while not welcoming competition from other
FOSS developers. ;)

And yes, there are performance problems with JACK in certain use 
scenarios:

1. Running with root privileges (and -R) but with 
   a standard kernel (no low-latency or preemption patches).
   In RT-mode jackd doesn't tolerate client failures. But
   if you don't have a low-latency kernel, you will get 
   50-100ms stalls during normal use. In other words,
   running jackd with period size less than 50-100ms 
   (-p 2048 = 46ms at 44100Hz) _WILL_NOT_ work reliably.

Solution1 = Patch the kernel.
Solution2 = Increase period size (-p 1024 or higher). 
Solution3 = Increase period count (-n 4 or higher) and 
 run without root privileges.

2. Running complex setups without root privileges (and -R). 
   If you have X clients participating in one JACK
   setup, those X clients have to get the CPU during
   each engine cycle. Without root privileges (and SCHED_FIFO
   scheduling policy), there's no magic that makes sure
   that all clients get enough CPU time. So the more
   the processes you have, the larger the chance of 
   a client failure.

Solution1 = Increase the period size or period count. 
 These _HAVE_ to be notably higher than
 with single-thread audio apps. 
Solution2 = Run as root (see previous problem scenario).
Solution3 = Patch the kernel and run as root.

 k_jack performs okey. You dont have to run things with realtime priority.

What does cat /proc/asound/card0/pcm0[cp]/sub0/[hs]w_params output
while you are running k_jack? This information should help us understand 
the benefits of k_jack over current jackd.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] python sound

2003-01-23 Thread Kai Vehmanen
On Wed, 22 Jan 2003, david casal wrote:

 Just wondering whether people can point me towards any python+sound
 activity out there, other than OMDE/PMASK and Thomas Grill's 'pyext' for
 PD. Anybody playing with real-time concerns?

Pyecasound is one such package. Basicly it's an implementation of the
Ecasound Control Interface, which allows you to control the real-time
signal processing core of ecasound from python. It does _not_ allow you
to modify, generate or consume the actual audio data in python. But you
can control effect parameters in real-time, start/stop/seek, and 
issue other such control operations easily from python.

More info at:
http://www.eca.cx/
http://www.eca.cx/eca_links.htm 
- check for instance 'heteca' and 'ecaenveloptor', both
   written in python using pyecasound
http://www.wakkanet.fi/~kaiv/ecasound/Documentation/

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] ecamegapedal 0.4.0 released

2003-01-20 Thread Kai Vehmanen
1. A short summary of changes

Sliders for parameter control and text inputs for 
lower and upper bounds have been added as well as
support for LADSPA-1.1 and ecasound effect parameter 
hints. There has been some user interface improvements 
and a native JACK support has been added. Updated to 
use the new ecasound-2.2 libraries.

---
2. What is ecamegapedal?

Ecamegapedal is a real-time effect processor software with
a graphical user interface for controlling the effect 
parameters. It is meant to be used as a virtual guitar-fx 
or studio effect box. In addition to real-time operation, 
ecamegapedal also supports reading from and writing to audio 
files. All audio object and effect plugin types provided by the 
ecasound libraries are supported. This includes ALSA, JACK, 
OSS, aRts, over 20 file formats, over 30 effect types, LADSPA 
plugins and multi-operator effect presets. Ecamegapedal's 
implementation is based on ecasound and Qt libraries.

Ecamegapedal is licensed under the GPL.

---
3. Changes since the last stable release

* Added native JACK support. If compiled with JACK support
  enabled, ecamegapedal will upon startup fetch the 
  current engine parameters from the JACK server, and 
  initialize the ecamegapedal configuration to work 
  with JACK. In practice this means that you don't 
  have to manually set the buffersize and sample rate
  parameters to use ecamegapedal with JACK.

* Support for LADSPA-1.1 and ecasound effect parameter 
  hints.

* Text inputs for overriding default upper and lower
  bounds for parameter values.

* Sliders for controlling parameter values.

* Pixmaps for transport control buttons.

* Takes advantage of the newly released ecasound 2.2.0 
  libraries (does not work with older ecasound releases).

* Should work with all released Qt2 and Qt3 versions.
  Tested with qt-2.3.2, qt-3.0.5 and qt-3.1.1.

---
4. Contributors

Patches
Kai Vehmanen
Arto Hamara

Bug Hunting
Jaakko Prattala
Justin Rosander
Junichi Uekawa

Feature proposals
Dan Lyons

---
5. Links and files
   
Web sites:
http://www.eca.cx
http://www.eca.cx/ecamegapedal
http://jackit.sourceforge.net

Source and binary packages:
http://ecasound.seul.org/download
http://ecasound.seul.org/download/ecamegapedal-0.4.0.tar.gz

--
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: [vst-plugins] Plugin server

2002-12-08 Thread Kai Vehmanen
On Sun, 8 Dec 2002, Paul Davis wrote:

 you also haven't addressed kernel scheduling issues; the context
 switch doesn't happen till the kernel has decided what task is going
 to run next. if it picks the wrong one, for whatever reason, then
 you/we lose. right now, it picks the wrong one too often, even with
 SCHED_FIFO+mlockall.

Btw; have you tried the O(1) scheduler? It has a number of interesting
charasteristics from an audio app developer's pov [1]:

- RT-scheduling is, too, O(1) (less cache use, quicker context 
  switches...)
- RT-scheduling is separated from non-RT scheduling 
- perfect SMP-scalability (no shared run-queue lock)

And of course, as O(1) is under active development (in 2.5, in 2.4-ac
and patches for latest 2.4 kernels), a possible bug in SCHED_FIFO 
semantics might receive kernel-hacker interest. ;)

Do you have any simple test cases to reproduce the problem... only
with ardour+jackd or perhaps also simpler setups like jackd+capture_client 
or some such?

[1] http://www.uwsg.iu.edu/hypermail/linux/kernel/0201.0/0810.html

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] LADSPA output controller?

2002-11-14 Thread Kai Vehmanen
On Tue, 12 Nov 2002, Mario Lang wrote:

 So I'd need to connect a audio/controller output
 to a controller input of another LADSPA plugin.  Do
 ladspa hosts like ecasound support this?  Or am I
 taking a completely wrong route here and it should
 be done differently?

A bit complicated, but possible:

ecasound -b:128 -f:16,2,44100 \
-a:generator -i null -o null -el:analogueOsc,1,5,0.5,0.5 -eS:1 \
-a:target -i foo.wav -o alsa -el:pitchScale,1.0 -ksv:1,0.5,2,1,1 -c

- analogueOsc generates audio data (5Hz sine wave, warmth=0.5, 
  instability=0.5) to the otherwise silent 'generator' chain
- -eS:1 stores the passing audio data to an audio stamp (ie. allows
  other parts of the network to access the audio data it sees)
- chain 'target' reads from foo.wav, applies the pitchScale LADSPA plugin
  and writes the processed data to the default ALSA pcm output
- -ksv converts the audio data from stamp 1 (-eS:1, ie. the analogueOsc
  output) into control data, scales the value to range [0.5,2.0], and 
  uses the resulting value to control the pitchScale coefficient
- the audio-control conversion is done by calculating RMS-volume for 
  each 128 (-b:128) sample block which is then used to update the
  LADSPA plugin parameter value

Of course, it's possible to use any audio input source (files,
real-time inputs, LADSPA plugins, effect presets, etc) in
the 'generator' chain. 

PS Ecasound has had this functionality since 1.9dev1 (Feb/2001),
   so for once (!) you don't have to get the latest CVS version
   to try this out. ;)

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] Re: [Jackit-devel] questions about diskthread/process() synchronization

2002-11-13 Thread Kai Vehmanen
Btw; I'll cc'd this to lad, as this is a topic that 
 has been discussed there _many_ times. More 
 specifically the SMP-sparc case has been mentioned
 quite a few times but without specific details.
 For lad-only readers, see the jackit-devel archives
 for the whole thread.

On Wed, 13 Nov 2002, Tim Goetze wrote:

 it should be noted that this relies on accesses to the
 r/w buffer indices to be atomic. that's no problem on 
 common workstation hardware, though.
[...]
 /usr/src/linux/include/asm-target/atomic.h gives more
 info.

Actually I've spent some time studying this issue and 
my conclusion is that the level of atomicity provided by 
linux asm-arch/atomic.h is not needed to implement 
single-reader-single-writer lock-free buffers.

More specifically, asm/atomic.h provides guaranteed 
ordering of reads and writes. This is not really needed 
in handling the l-f buffer indices. In the worst case 
reported write-space is larger, or read-space smaller, 
than the actual situation.

The only problematic scenarios are that a) read returns
an invalid value, and b) write stores an invalid value. 
These could possibly happen if reads/writes were not
atomic. But so far I haven't found any platforms (with
publically available specs) which don't guarantee this 
level of atomicity (even in the case of complex processor 
cache arrangements).

The two architectures for which asm-xxx/atomic.h contains 
special code even for plain reads and writes are SMP-sparc
and s390. I haven't studied s390, but at least in the case 
of sparcs (ref: sparc v8 arch manual), reads and writes are 
atomic even in a SMP configuration, although ordering is not 
guaranteed. More specifically, if TSO (Total Store Ordering) 
memory mode is selected, loads do not necessarily appear in 
order. If using PSO (Partial SO), stores as seen by the
issuing processor can be executed out-of-order. But these
restrictions aren't really a problem for l-f buffers.

If I've interpreted the situation incorrectly, or someone
has better information, I'd be very interested to know! 
Even better, example code that demonstrates atomicity
problems... I have currenly access to both IA32 and 
Sparc-v8 multi-processor machines.

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] Re: [Jackit-devel] questions about diskthread/process() synchronization

2002-11-13 Thread Kai Vehmanen
On Wed, 13 Nov 2002, Paul Davis wrote:

my conclusion is that the level of atomicity provided by 
linux asm-arch/atomic.h is not needed to implement 
single-reader-single-writer lock-free buffers.
 this is true unless the pointer/index isn't atomic. since on SMP sparc
 systems, the arrangement of the cache lines means that you can't
 guarantee better than 24 bit atomic values, you do have to be careful
 about the potential size and memory position of the pointer/index
 variables. 

I've browsed through the sparc arch manuals and couldn't find anything 
that would limit atomic access to 24 bits nor any directly related cache 
line limitations. The Linux asm-sparc/atomic.h provides only 24bits as 
it uses the lower 8bits to implement a low-overhead spinlock. Spinlock
is required to guarantee memory ordering (also with mixed usage of
various atomic_* ops). If you just read/write 32bit ints, this is
atomic even on SMP-sparcs.

in handling the l-f buffer indices. In the worst case 
reported write-space is larger, or read-space smaller, 
than the actual situation.
 actually, the worst case for both metrics is that they are *smaller*
 than they should be. this happens on two occasions:

Ugh, true, my mistake.

 its not so much atomicity as ordered that is needed here.  because
 read/write will only use that part of the buffer indicated as
 available by the r/w pointers, all we have to know is that the writes
 to the buffer complete before the write pointer is updated. it would
 be good to use a so-called memory barrier somewhere there to make
 sure this is true.

Ok, this is a real problem, but I don't think using asm-arch/atomic.h
(which can guarantee ordered access to the buffer indices) helps 
to solve this issue, so you might just as well use regular ints 
as the atomic indices.

And this really is a corner case as the buffer would have to be close to 
empty (something has already gone wrong!) to read old data from the 
buffer, even on a SMP sparc or s390.

--
 http://www.eca.cx
 Audio software for Linux!




RE: [linux-audio-dev] image problem

2002-11-13 Thread Kai Vehmanen
On Wed, 13 Nov 2002, Mark Knecht wrote:

Let me ask another question in this area. Could someone explain the
 implications of GPL/LGPL WRT proprietary applications that interface to Alsa
  Jack, along with their incumbent support programs like kaconnect and
 qjackconnect?

Both ALSA (alsa-lib, ie. libasound) and JACK (libjack) are licensed under 
LGPL and thus allow their use even from proprietary applications.

Btw; ecasound's control interface (EC) is licensed under LGPL (recently
 changed), so it's possible to write closed-source apps that use
 ecasound as the audio engine. Other parts of ecasound are
 still under GPL, so if you want to improve or extend the audio
 engine, you'll have to release your changes under GPL.

If Jack and Alsa were pushed in technical business development circles as
 a way for Company A to enter the Linux market and be able to work together
 with other existing applications, do the GPL/LGPL licenses of Alsa  Jack
 create issues for Company A's proprietary code base?

No. Glibc is also LGPL licensed, so if there were any problems with using 
LGPL libraries from closed-sourced apps, this would affect _all_ 
applications that run on Linux.

I see the open nature of Linux as best exemplified in the lower level
 portions of the audio stack, and less so at the application level for the
 reasons we've been discussing. As a person who is in business, but not in
 this area, I have suspicions that these are the issues that are keeping
 retail applications out of the Linux markets.

At least I wouldn't mind if some commercial entity used ecasound in their
product. I would get improvements and fixes to the engine code and they
could keep the interface to themselves. I'm fully content using the
user-interfaces that are already available for ecasound, so this would be
a win-win situation for me. Of course, a completely different thing is
whether anyone wants to use ecasound...:)

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] GUIless friendly applications

2002-11-05 Thread Kai Vehmanen
On Tue, 5 Nov 2002, Mike Rawes wrote:

 plugins in the network) would be a nice feature. Another idea which I've
 seen discussed is the creation of 'meta' plugins - subnetworks 'wrapped'
 into a single plugin. Combined with cut,copy,paste, you could create a
 nice patch, and then decide 'I want six of them, each slightly detuned'
 or something, and simply replicate the meta plugin five times.

Btw; ecasound provides these. Ecasound's meta plugins, or in ecasound's
terms, effect presets, can combine native and LADSPA plugins, and locate
them in parallel and serial chains, and it's also possible to parametrize
the meta plugins (ie. one meta-plugin parameter can control multiple 
real-plugin parameters). See more info at:

http://www.wakkanet.fi/~kaiv/ecasound/Documentation/users_guide/html_uguide/users_guide.html#SECTION0083

Or alternatively: eca.cx/ecasound - documentation - user's guide

 Realtime control of parameters such as frequency cutoff, reverb room
 size and such could be via MIDI controller values. I think these allow
 quite a bit of resolution - 14bit? Must check.

This is also possible with ecasound. 

ecasound -f:32,1,44100 -i jack -o jack \
-ef3:800,1.5,0.9 -km:1,400,4200,74,0 -km:2,0.1,1.5,71,0

This creates a JACK client that has one input and one output
port. During process() ecasound will take the data sent to its 
input port, process it with a lowpass filters, and write it to 
the output port.

The lowpass filter is controlled in real-time with MIDI-CC 74 (cutoff) and 
71 (resonance). The whole -km syntax is: 
-km:parameter,range_low,range_high,controller_number,midi-channel 

Support for 14bit MIDI controllers is not yet available, but has been 
on my todo-list for a while (see edi-4 at eca.cx/ecasound - EDIs).

Although ecasound is not an optimal platform for creating audio generating
apps, it can manage quite a few simple cases. For instance:

ecasound -f:32,1,44100 -i null -o jack \
-el:analogueOsc,1,440,1,1 -km:2,40,16000,74,0

... creates a JACK client that outputs sine wave (using the analogueOsc
LASDPA plugin) to its output port. The osc frequency is controlled using
MIDI-CC 74.

If you don't have MIDI-equipment at your use, you can test the above by
replacing -km with -kos:2,40,16000,0.5,0 ... Also, if you are not running
JACK, replace 'jack' with either '/dev/dsp' or 'alsa,default'.

For more complicated MIDI-control, you could write an ECI app in
perl/php/python/lisp (or even in C/C++ :)) that reads from /dev/midi00,
interprets the MIDI messages in some way, and then sets the LADSPA plugin
parameters (in real-time) by issuing ECI commands. 

The ECI API might look a bit too simple, but it has proven to be quite
versatile. For instance, last week I implemented a VU-meter
(ecasignalview) using nothing but ECI. And even better, soon after, Mario
Lang implemented a similar real-time VU-meter to ecasound's emacs-mode
using the (e)lisp ECI API...! Do that in vi! ;)

But, but, implementing a full MIDI-controllable synth this way is 
probably not a good idea. :) Ecasound has a few critical limitations 
that can cause problems:
 - impossible to freely route data between plugin audio ports
 - changing object connections cannot be done in real-time (ie.
   you'll hear a clear break)
 - no direct access to actual audio data, just the object parameters

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] console JACK metering using ecasignalview

2002-10-31 Thread Kai Vehmanen
Hi,

yesterday I released ecasound-2.2.0-pre4 (approaching 
next stable release, yay!), which has a few JACK-specific
improvements:

- new command-line syntax for specifying inputs and 
  outputs, see:
  
http://www.wakkanet.fi/~kaiv/ecasound/Documentation/users_guide/html_uguide/users_guide.html#SECTION0086
- uses the new alsa_pcm:capture_x + playback_X syntax
  (requires JACK 0.40 or newer == CVS!)

You can find the package at:

  http://ecasound.seul.org/download/ecasound-2.2.0-pre4.tar.gz

And now to the main point: 2.2.0-pre4 comes with an updated
version of ecasignalview. Combined with the new JACK syntax,
ecasignalview now suits quite well for monitoring JACK-clients.
The basic syntax is:

ecasignalview -b:XXX -f:32,YYY,ZZZ jack_auto,foo_client null

... where:
XXX = buffersize (jackd's -p:XXX)
YYY = number of channels you want to monitor
ZZZ = sample rate (jackd's -r:ZZZ)
foo_client = any JACK client which uses out_X 
 style port names

The meters are drawn with ncurses, while values are queried
through the ECI API (ie. ecasignalview is only linked 
against libc and libstdc++, not for instance against
libjack). The output looks like:

  http://eca.cx/screenshots/ecasound-2.2.0-pre4_ecasignalview.png

... there are a few known bugs, but in general it works
quite well. While not really a huge challenge for Steve's 
meterbridge ;), should be of interest to some of you.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [Alsa-user] Re: [linux-audio-dev] Re: image problem [was Re:[Alsa-devel] help for a levelmeter]

2002-10-25 Thread Kai Vehmanen
Takashi, thanks for these corrections! 

It'd be great to see yet more reports about successes, failures, suspected
problems, etc, etc concerning different soundcards and chipsets on 
alsa-user (and other lists)! It's much easier to make purchasing decisions
if you know that at least someone has had success with the 
desktop/laptop/soundcard model (and not just the chipset!) you're about to 
choose.

On Wed, 23 Oct 2002, Takashi Iwai wrote:

 - snd-intel8x0 (nice chipset, is suitable for low-latency use)
 the real-time response is dependent on the system.
 some notebooks have problems in this regard.

How is it different...? And do you happen to remember what notebooks 
(brand, possibly any IBM models)?

 - Yamaha YMF7xx/DS-XG (some have reported that these work ok,
   but in any case they have a max 3 periods limitation
   similar to cs4281, which can confuse apps)
 no, instead, the interrupts are generated in the fixed time-length,
 not at the period boundary or the end of buffer.
 thus, this chip doesn't suit for low-latency purpose at all.

Ugh, not good. Thanks for the clarification!

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] The Image (usablity) problem from a Musicianspoint of view

2002-10-22 Thread Kai Vehmanen
On 21 Oct 2002, Lea Anthony wrote:

 Sure, there is probably a lot more but I'm just gathering my thoughts
 here. What I'm afraid of is that LAD will end up with the same problems
 as most Linux distros suffer from: Bloat. Choice is good, but do I
 really need 7 text editors on my system? No. What I believe would
 benefit LAD, and correct me if I'm wrong, is to create a 'big picture',
 a complete DAW system. It should consist of AN audio editor, AN audio
 recorder, A sample editor, etc. Like I said, choice is great but
 musicians don't give a hoot about choice, they want something that
 works, not 7 things that are half done. If all effort was pushed in this
 direction, I believe we would end up with a quality system that the
 world would take seriously.

This is something that has been proposed quite a few times here. 
Who's the we here? I'd say this is something that has to be
done by a volunteer group (think of debian), company (think of redhat) or 
a mixture of two. Currently the best example of this concept is Planet 
CCRMA.

If this kind of project is succesful, it will motivate individual 
development projects to improve their offerings so that their project
get included in the promo-projects. If a company would do this, it 
could allocate resources to those areas of development that are lacking. 

Of course, one possibility is that this kind of group is formed
here on linux-audio-dev and linux-audio-user, but you shouldn't
expect too much help from the individual projects. In the end,
the reason why so much (high-quality) development is happening
here is that people are scratching their itches, not because developers 
are trying to create a marketable whole. And I think this is
good for all involved. The other option is to have a group 
of not-so-motivated developers aiming at a marketable whole... hmm,
sounds awfully lot like traditional commercial development. ;)

But of course, for any kind of promo, or Linux audio interest group,
it would be silly not to participate on linux-audio-{dev,user},
alsa-lists, and other central lists. I think this is why PlanetCCRMA has
been so popular. On the other hand, Demudi and Agnula seem, at least to 
me, more like ivory-tower type of projects. They don't have much of 
a presence on any of the mentioned lists.

And btw; it's good to note that participants in free/open-sw projects
are not just volunteers and/or enthusiasts. There can also be companies 
involved that just want to scratch their itches, and don't have
a huge interest in marketing Linux audio. I think it's good to keep 
these two interests separate.

--
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: image problem [was Re: [Alsa-devel] helpfor a levelmeter]

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Conrad Parker wrote:

 it might save you some hassles if you changed the intro to jack's web
 pages, which currently read:
 
 JACK is a low-latency audio server, written primarily for the
 GNU/Linux operating system. It can connect a number of different
 applications to an audio device, as well as allowing them to share
 audio between themselves.
 
 that, by itself, sounds to the average user an awful lot like a general
 purpose audio server. Perhaps what you wrote in the email below, comparing
 JACK to ASIO, would be more appropriate.

But the second paragraph of the intro basicly already mentions
the focus:

--cut--
JACK is different from other audio server efforts in that it has been 
designed from the ground up to be suitable for professional audio work. 
This means that it focuses on two key areas: synchronous execution of all 
clients, and low latency operation. 
--cut--

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: image problem [was Re: [Alsa-devel] helpfor a levelmeter]

2002-10-22 Thread Kai Vehmanen
On Mon, 21 Oct 2002, Paul Davis wrote:

 JACK *isn't* intended for general use, and i get tired of suggestions
 that it should be. there are lots of people working on solutions for
 general use. JACK is intended for people who are serious about
 audio.

I'd like to add that not all JACK developers are as strict about this as
Paul ;), but it's true that something more concrete than
suggestions/requests are needed.  Technical proposals that extend JACK's
usability without sacrificing the low-latency and synchronous-execution
qualities, are very welcome. I don't think this is an impossible task.

Btw; I also think the continuous flow of negative-ish comments concerning
JACK is a bit unreasonable. There are still lots of work to be done in the
low-latency area and this work of course has top-priority for current
development team.

 audio interfaces, its not intended to do so. if you can't run JACK at
 all, you basically have a box that wouldn't run an ASIO device driver
 under windows or macos. there's not much we can do about that except
 to point you at kernel adjustments (like hdparm) and ask that you
 check other mailing lists to see if your audio interface, video
 interface, etc. are known to be horrible in some respect.

And I think you can run JACK using pretty much any ALSA-supported
soundcard. It's just that we cannot guarantee good performance or flawless
operation in these cases. These cards will also cause problems to other
applications. It's just that JACK makes these problems much more explicit.

 JACK is not yet finished, and it has some definite usability issues
 that need to be resolved. but it is not, and i hope will never be
 (primarily) a general purpose sound server.

In other words, developmenttesting help is welcome!

-- 
 http://www.eca.cx
 Audio software for Linux!




RE: [linux-audio-dev] Re: image problem

2002-10-22 Thread Kai Vehmanen
On Mon, 21 Oct 2002, Ivica Bukvic wrote:

 And as long as you view JACK as that, it will have a very small user
 base and hence very small pool of audio apps that will support it. All
 this will lead to the fact that, no matter how good JACK is (or is
 supposed to be), it will be always a questionable solution, since a lot

I think that JACK will become a huge success not because of the 
server technology, but because of the applications. FreqTweak and 
Meterbridge are two very good examples of this. If these apps
had read from /dev/dsp and wrote to /dev/dsp, they would have been 
interesting acquaintances, but it would have been difficult to actually 
use them in real work. But now with JACK, they are tools that you can 
really _use_!

Few more apps like this and every Linux audio developer is going to be 
very tempted to port their app to JACK.

Mark my words, JACK's going to be big. :)

 This will create an unnecessary polarization in an already heavily
 fragmented audio community (oss vs. alsa, esd vs. asd vs. artsd vs.
 gstreamer vs. jackd etc.). Linux is supposed to be all-inclusive and

Gstreamer already has JACK support btw.

 If you really want the JACK to take off, then you should look not only
 forwards, but also backwards, and find a relatively viable solution
 (even if it is at the expense of the latency) that will work with 1000+
 decent apps that have not been ported to JACK framework, thus leaving
 the issue of latency for the user to choose.

This can be done, but we need someone to do it. I've already posted
a message with a proposed design for an OSS-to-JACK gateway. But I 
don't have time to do this myself and I cannot force anyone else to do 
it either. What can I do? But I'm not too worried about this. I'm quite 
sure someone will do this sooner or later.

 And if the only explanation to this problem is they need to port their
 apps to JACK, while there is no effort to meet the user needs at least
 half-way by offering an easy interfacing for apps that may not be ported
 to JACK in the recent future for whatever reasons, then I see that as
 sheer arrogance.

Well, please consider our side. We are trying to solve a problem that
enables a new level of co-operationg between audio apps (see
http://eca.cx/laaga )... This work is not finished yet. If you go and read
recent jackit-devel messages from the archives, not everything is going
just fine and dandy. We (especially Paul) have had to do enourmous amount
of work to get where we are now and there's still work left. There are
still issues that we don't know for sure how to solve and so the work has
to continue. If this is arrogance, so be it. I really don't know how to
reply to you here.

 I am not only interested in using Ecasound, Ardour,
 FreqTweak, and Pd for my music making purposes, neither is a majority of
 other Linux users.

Btw, it's many more than that:

Alsaplayer
gstreamer
icsound
iiwusynth
MusE (since 0.6.0pre1)
Rosegarden
Rtsynth
Spiral Synth Modular

... note that this list contains almost all lad heavy-weights. I've 
never seen this level of co-operation between - some even directly competing - 
Linux audio projects, and it's a very exciting development!

 Case and point, I may want to use ardour, but if I take a break and want
 to listen to some mp3's on an un-jackified player (such as xmms, for
 instance), how user-friendly would it be to have to save session, close

Use alsaplayer and let xmms authors know why you made the choice.

 do all that in reverse? Why couldn't xmms simply connect automagically
 to jackd by jackd detecting simple oss-open-dsp-resource call? If it

Because nobody has implemented 1) JACK-plugin for xmms, 2) JACK OSS 
gateway. We'd like to see both, but cannot force anyone to do them.

 Neither will the commercial companies want to touch jackd with a 20-foot
 pole if there will be an aura of limited hw it works with (that
 automatically limits a pool of people that may potentially purchase an
 app) and in addition requires a 100-page FAQ section to be shipped with

Let's see about that. :)

 What is yet to be determined is for example why am I getting xruns all
 over the place after having jackd run for 10 minutes even at very high
 buffer sizes and having it sit idle for most of those 10 minutes?

Yes, that's why we are not working on OSS-to-JACK gateways. There's still 
work to be done in the core functionality.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: image problem

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Sebastien Metrot wrote:

 There is this annoying kind of double talk in the OSS comunity: many people
 just talk about how great OSS are and how every body should start using it
 and all that kind of stuff, but as soon as you ask for some professional
 behaviour from the apps and from the developers the only answer one gets is
 hey, we're just a bunch of volunteers, how can you be that arrogant and ask
 this feature/effort from me?. The point is this: do people here wants LAD

This is a fair question. First, many people might promote OSS, but that
doesn't mean unconditional surrender. ;) I mean, I was really quite
offended by Ivica's message where he proposed that JACK developers are
arrogant if they don't implement x and y. OSS or not, that's not very nice
considering how much free time we have spend on this. And really, the
so-called OSS community does not consist of altruistic dummies that work
for free, although suprisingly many people seem to have just the opposite
belief.

On the other hand, it is possible to get very good and friendly support
and help here, but the attitude is everything. You have to be a team
member and contribute (be it mental support, good/insightful comments,
real-world experience with the given area/topic, promoting, coding, money,
free beer, whatever) something. Then you can make demands and complain,
and you will be listened to. If you just complain (like you might do if
you have bought a software from a commercial vendor and do not like it),
it just doesn't work. Of course, you can also choose to not to contribute 
anything at all, but it shouldn't come as a suprise to you if your 
comments don't have the same weight as those coming from contributing 
members. You know, life, give some, get some. ;)

And just to be sure, it really is in our (now speaking as a developer)
interest to listen to user feedback. That's the whole point of releasing 
our software under GPL_or_whatever. Active users are invaluable part of a 
succesful project.

And btw; professional users have the advantage to other normal users
that they can offer the kind of hard-to-find insight and experience from
the real-world that is very valuable for developers. So if you are a
professional, becoming a contributing member is really quite easy, if you
just want to make the effort.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: image problem [was Re: [Alsa-devel] helpfor a levelmeter]

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Peter L Jones wrote:

 When I run latencytest0.42-png from [EMAIL PROTECTED], I get about 99% sub 
 2ms latency.  But jack still complains of xruns of about 50ms.  There's 
 something here I'm simply failing to understand... but I don't know where to 

Are you running JACK as root with -R or with -R --asio? Do these 50ms 
xruns occur even if you don't have any clients connected? If that's not 
the case, what client apps you have tested with? Also, do these xruns 
happen all by themself, or are you doing something at the same time (maybe 
moving windows or something). Does the HD led go on when the xrun occurs 
(kernel maybe syncing its caches)? What kernel, with low-latency patches, 
with pre-emption enabled or not? 

-- 
 http://www.eca.cx
 Audio software for Linux!




Music N style sw w/ JACK-support (was: Re: [linux-audio-dev] Re:image problem)

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, David Gerard Matthews wrote:

 That was the most useful part of this email.  I've hoping that someone 
 would port one of the Music N languages to JACK for some
 time, and I certainly do not have the skills do it myself.  Thank you 

Just in case you are not aware of these:

- icsound has JACK-support
- http://agnula.org/~maurizio/icsound/
- there's patch for PD that provides JACK-support 
- http://sourceforge.net/mailarchive/message.php?msg_id=1169519
- supercollider's alpha version for Linux has JACK-support
- http://www.cs.tu-berlin.de/~kerstens/pub/SuperCollider3-linux.tgz
- Paul Winkler has written a JACK driver for SAOL/sfront
- not yet released, mail Paul :)

PS Nopes, it's not just alsaplayer, ardour and ecasound anymore. ;)

-- 
 http://www.eca.cx
 Audio software for Linux!




RE: [linux-audio-dev] Re: image problem

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Ivica Bukvic wrote:

 offended by Ivica's message where he proposed that JACK developers are
 arrogant if they don't implement x and y. OSS or not, that's not very nice
 considering how much free time we have spend on this.
 And what do you think how do I feel when I contribute to this community
 with my apps (which certainly are nothing even close in scope or quality
 to Ardour, but are my best and most honest shot at it), spend most of my

Btw; I'm not involved in any way with the Ardour project, and there are
also others in the same position involved in JACK development. Who knows,
maybe you and I might share some common goals with regards to future JACK
development. There might be also others. But with the messages like the
one I have referred to above, you are just burning bridges.

 Besides, I was, and still am the advocate of Alsa. But even Alsa
 supports OSS apps (to some extent), so I have no clue as to why you are
 placing me in the OSS camp. If you read my post carefully, you'd realize
 that I am talking about good quality apps that will simply not be usable
 with Jack framework which is a shame, and as such would limit user's
 ability to unlock the full potential of Linux audio...

Ok, let's try to calm a bit. Facts about this issue:

1) most JACK developers have nothing against a OSS-to-JACK or
   ALSA-to-JACK bridge; in fact, most would like to see one
2) there is real technical problems involved in implementing (1); 
   we will never be able to demonstrate JACK's best features
   with apps using (1)
3) there are currently real technical problems getting native JACK
   clients to run well enough 
4) we must get JACK to perform well enough with _some_ 
   clients, so that we can demo and market it to developers
5) (4) is not going to happens with bridged (1) apps, so 
   we are currently focusing all our energy to (1) 
6) Paul has done most of the work involved in (5) and this 
   might shine through from his recent messages ;)
7) even though Paul is the project leader, there's a community
   of users and developers behind JACK
8) we don't have a central pr-agency; not everything said  
   and written by a person involved in JACK represents 
   the opinion of all involved developers and users
9) if someone implements (1) in a way that doesn't 
   compromise (4) (which we absolutely need to achieve),
   most JACK developers (but remember (8) ;)) have 
   nothing against it

... ok, that should settle it. :)

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Re: image problem [was Re: [Alsa-devel] helpfor a levelmeter]

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Peter L Jones wrote:

 I don't want to have to learn about DSPs and stuff to be able to identify a 
 _good_ sound card.  I've currently got a shortlist for my next machine:
   * MidiMan Delta Audiophile 2496 (Envy24)
   * Creative SB PCI 128 (ES1371)

I've used both of these extensively with JACK and numerous other ALSA apps
and they work really well (full-duplex, low-latency use). Other
soundcards/chipsets that I've used:

- snd-intel8x0 (nice chipset, is suitable for low-latency use)
- snd-cs4281 (good for low-latency although has a max two-interrupts
  per buffer limitation which can confuse apps)
- GUS MAX (this very, very old ISA-card can still beat a number of 
  today's crappy chipsets... I don't know whether to cry or laugh ;))

Cards that I have no personal experience with, but I've heard very
good things about:

- RME Digi9652

Beware:

- SB AWE models (ugh, crap!)
- Yamaha YMF7xx/DS-XG (some have reported that these work ok,
  but in any case they have a max 3 periods limitation
  similar to cs4281, which can confuse apps)

All in all, most of the PCI-cards supported by ALSA have fairly good 
drivers. 

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] good cards/chipsets for full-duplex/low-latency audio

2002-10-22 Thread Kai Vehmanen
Btw; this a very interesting topic. Please, tell about your 
 experiences. By discussing these things in a public forum,
 we are actually creating a nice searchable knowledgebase 
 for all current and future ALSA users!

On Tue, 22 Oct 2002, Anthony wrote:

 - snd-intel8x0 (nice chipset, is suitable for low-latency use)
 Actually, I've had terrible results with this. It could be due to the
 fact that it got pushed to a higher IRQ by my other card, however.

Hmm, what laptop/soundcard and what version of ALSA (the dma routines were
rewritten quite recently)? It's true that intel8x0 is used quite a few
different laptops/cards [1], so it's possible that not all work as well as
I've experienced, but as it's in any case the same driver on the audio
side, these problems shouldn't be common.

[1] {Intel,82801AA-ICH},
{Intel,82901AB-ICH0},
{Intel,82801BA-ICH2},
{Intel,82801CA-ICH3},
{Intel,82801DB-ICH4},
{Intel,MX440},
{SiS,SI7012},
{NVidia,NForce Audio},
{AMD,AMD768},
{AMD,AMD8111},
{ALI,M5455}

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Soundcard spotting

2002-10-22 Thread Kai Vehmanen
On Tue, 22 Oct 2002, Peter L Jones wrote:

 * MidiMan Delta Audiophile 2496 (Envy24)
   * Creative SB PCI 128 (ES1371)
 I've used both of these extensively with JACK and numerous other ALSA apps
 and they work really well (full-duplex, low-latency use). Other
 Heh.  Now, one of these I have in my machine ((PII vintage) Celeron 400) 
 already.  The other would set me back £150.  Your comment makes me think 
 there's little to choose between them.  So, simply upgrading my soundcard 
 from a £15 low end consumer-oriented unit to something costing 10 times the 
 price looks like getting me nothing.  Or am I missing something? :-(

Well, yes. ES1371 brings you 2ch in+out with max 48000Hz sampling rate,
and 16bit sample resolution. Midiman 2496 on the other hands provides up
to 96kHz sampling rate, 24bit sample resolution, 2ch in+out and digital
in+out. Check the specs from manufacturer's site.

And btw, I confused Audiophile with Delta44 (which I have, has 4ins + 
4outs, no digital in/out). Both are based on the envy24 chipset, should 
perform equally well. Please, correct me if I'm wrong.

 - GUS MAX (this very, very old ISA-card can still beat a number of
   today's crappy chipsets... I don't know whether to cry or laugh ;))
 I noticed that the ENS1371 seems to have a better rating on one site I looked 
 than to EMU10K, so this doesn't surprise me!

Yup, I'll probably never get tired of the following slogan: sb128 
(ens1371) is the best creative card as it's the one they didn't make 
themselves. :) Ok, maybe the current SB cards are better, but I'll
never forgive the company the disappointment their AWE64Gold caused me. 
Such waste of money! ;)

 All in all, most of the PCI-cards supported by ALSA have fairly good
 drivers.
 But how do I compare one card with another?  What should I be looking for?  
 How can I tell which will reduce the load on my computer and which will 
 increase the load?  Is there any difference?

Well, it depends on what you want to do. How many channels you need in 
and/or out, do you need high-quality recording, do you need digital 
ins/out, do you need hardware support for multi-open, etc, etc? 

I'm not a hardware expert so I can't answer to all these questions, but I 
can tell about the criteria I used when I selected my last card. My 
primary use is multitrack recording and mixing. I needed capability to 
record 2 channels, high-quality a/d and good support for low-latency and 
full-duplex. My choice was midiman delta44. It has 4 ins, an external 
a/da/d box (important for high-quality conversion), good ALSA drivers and 
wasn't too expensive (ie. a lot cheaper that the RME cards for instance).
So far I've been very satisfied with this purchace. 

PS Let's cross-post to linux-audio-user. That and alsa-user are
   probably the best forums for this discussion.

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] from the who needs protools when you have emacs department

2002-10-20 Thread Kai Vehmanen
On Thu, 10 Oct 2002, Kai Vehmanen wrote:

 PS Oh yes, there's no need to leave your emacs session if you just 
want to do some multitrack recording (and w/ full JACK and
LADSPA support)! :) An old screenshot of ecasound-mode can 

An update. Here's a newer screenshot where I'm playing a file using
ecasound+JACK, adding reverb using freeverb, and editing the freeverb
parameters in real-time from an emacs buffer (w/ a nice 
text interface [1]):

http://www.eca.cx/screenshots/ecasound-2.2.0-pre3-emacsmode-0.7.5.png

[1] http://www.emacswiki.org/cgi-bin/wiki.pl?EcasoundMode

-- 
 http://www.eca.cx
 Audio software for Linux!




RE: [linux-audio-dev] Quick and efficient sound daemon idea -- whynot do it this way?

2002-10-17 Thread Kai Vehmanen
On Wed, 16 Oct 2002, Ivica Bukvic wrote:

 Jack works only with Jack apps and from what I heard, does not tolerate
 many simultaneous apps running concurrently, furthermore it permanently
 drops a stream if it is late for whatever reason, which basically means
 it is useless for the real-time performance (last thing I need in the
 middle of the concert for JACK to drop one of my streams -- 

I guess it's a time for little marketing speech. :)

JACK should be just fine for your use. Basicly JACK can also be used for
the not-so-hard-core-low-latency tasks. JACK just makes the real-time
deadlines much more explicit - both to users and developers.

One way of dealing with real-time deadlines is to ignore their existance. 
This the approach used in many existing audio apps (and I'm not just 
talking about Linux). If on the other hand the deadlines are explicitly 
taken into consideration, then there remains to be two alternative design 
approaches: 1) missing a deadline is an error, 2) missing 
deadlines is possible, so software implements a recovery mechanism.

Now as it is, many of the active JACK developers and users are mostly 
interested in (1). For an application like Ardour this really is the only 
possible approach. It just isn't tolerable for the recording to skip once 
in a while. It's better to let the user know that the system simply 
doesn't work reliably enough (ie. client can be disconnected from 
the system during processing).

But it is also possible to use JACK for (2). Currently, if you run jackd
without the -R option, it will run in so-called soft-mode. In this mode
clients are not kicked out, unless they are _really_ late (over 5 secs).
There's room for improvement (for instance, make it possibly to have -R
but with soft-mode timeouts), but this doesn't change the fact that
that JACK is also viable for (2).

I'm currently running jackd with 2x8192bytes of buffering ('-d hw:0 -r
44100 -p 2048 -n 2' w/ 24bit samples) and it works quite well as a
general-purpose audio server. With these settings the latency is ~46ms,
which is not bad (I'm not running it as root). I think this is just the
kind of use most people use esd for. But what esd cannot do is to route
the mp3 playback through an app like Freqtweak. ;) With JACK you can do
that.

Another source of trouble is utilization of buffering. Generally you
should use much higher period/fragment sizes with JACK than what you are
used to with other audio apps. While in many apps the total buffersize (x
blocks of y samples each) is used to control latency/reliability, in JACK
the effective block count really is always 2. So this means that you
should increase the period size if you want to use JACK as a soft-realtime
audio server.

 assuming I am only interested in using JACK apps, which is a huge 
 assumption in itself), and this mix plugin is yet to be seen at work.

Yes, this really is a huge problem for all audio application frameworks 
that are not OpenSoundSystem. Technically it's not possible to get old OSS 
applications to work in a multi-app network like JACK without noticable 
increase in latency. On the other hand, it _is_ possible to write an 
LD_PRELOAD-based OSS-emulation for JACK. The basic idea:

** OSS-emulated calls **
- open() connects to the JACK server
   - create two buffers, each with room for
 one buffersize() worth of what_ever_OSS_format of data
 (only needed for
   - temp buffers for f32le non-interleaved data
- read()
   - read data from the OSS-buffer at appl_ptr
- write()
   - write data to the JACK-buffer at appl_ptr
- ... and so on


** JACK-callback **
- process()
   - inputs: read from JACK client buffer, write and convert to the 
 OSS-buffer at jack_ptr
   - outputs: read from OSS-buffer at jack_ptr, convert and write to
  the JACK client buffer

... that's it. If the emulated app is late, the JACK-client should 
behave just like a normal soundcard - overwrite the (or read old) 
data or stop.

The only big problem is who will implement this. Similarly lots of 
interesting stuff could be done using alsa-lib's PCM-plugins, but again, 
who will do the work. But still, these are all much easier/smaller tasks 
than writing yet another audio server from scratch.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] freqtweak release 0.4.3

2002-10-16 Thread Kai Vehmanen

On Wed, 16 Oct 2002, Richard Bown wrote:

 http://freqtweak.sourceforge.net/
 try to connect anything to freqtweak or start it with the defaults  
 (alsa_in to alsa_out).  The input monitor appears to work but the 
 output one is dead and whine whine whine (varies with the fft size).  I 
 presume some horrible feedback type thing but any clues for me?

Same happens on my machine. Connection to JACK seems to work ok,
and CPU-usage stays within reasonable limits, but the resulting
audio sounds just like what you've described above. Hmm, I have
the latest JACK-CVS plus fttw-2.1.3 installed from source. Any ideas what 
could be causing this?

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] freqtweak release 0.4.3

2002-10-16 Thread Kai Vehmanen
On Wed, 16 Oct 2002, Jesse Chappell wrote:

 Ooh, this also sounds like what might happen if it compiled
 in the double version FFTW, but I would have thought that would
 fail on compile.

This was it. Recompiling fftw with './configure --enable-float' 
fixed the problem. Works perfectly now (I'm ready to join the 
addicted-to-freqtweak group ;D)!

PS It might be good to detect this in freqtweak's configure-script...

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] writing JACK and LADSPA apps with the ECI Cimpl

2002-10-10 Thread Kai Vehmanen

On Sun, 6 Oct 2002, Steve Harris wrote:

 I've just reinvented remote-procedure-calls, strings, linked lists and
 bunch of other stuff while writing the new standalone C implementation of
 Ecasound Control Interface (ECI) (ugh, C, ugh ;)).  But I think the work
 Kai, that is a thing of beauty.

Thanks, although I think this is better ;) ...:

http://www.wakkanet.fi/~kaiv/ecasound/ecasound-list/2002/10/0053.html

... Mario Lang implemented the equivalent functionality in elisp to
ecasound's emacs-mode, and instead of the hundreds of lines of code I
needed in the C impl, Mario only needed one elisp function to parse the
wire-protocol. Result... 'elisp 1 - C 0'. Pretty neat, I must say. :)

PS Oh yes, there's no need to leave your emacs session if you just 
   want to do some multitrack recording (and w/ full JACK and
   LADSPA support)! :) An old screenshot of ecasound-mode can 
   be found at: 
   http://www.eca.cx/screenshots/ecasound-2.1dev6_emacsmode.jpg

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] writing JACK and LADSPA apps with the ECI C impl

2002-10-05 Thread Kai Vehmanen

I've just reinvented remote-procedure-calls, strings, linked lists and
bunch of other stuff while writing the new standalone C implementation of
Ecasound Control Interface (ECI) (ugh, C, ugh ;)).  But I think the work
was worth it. Next I'll demonstrate how to develop a simple app taking
advantage of both JACK and LADSPA (with real-time parameter control) with
a minimum amount of developer effort. If you are now wondering why I'm
writing about this, jump to (6). ;)

--
1. Requirements (for this specific example)

- jack-CVS installed and running
- Steve's plate reverb LADSPA plugin installed 
- ecasound-CVS installed

--
2. The Application

--cut--
#include ecasoundc.h

int main(int argc, char *argv[])
{
  eci_init();

  /* create the chainsetup and one chain */
  eci_command(cs-add jackdemo_chainsetup);
  eci_command(c-add chain1);

  /* add the audio inputs and outputs */
  eci_command(ai-add foo.wav);
  eci_command(ao-add jack_alsa,out);

  /* add an LADSPA plate reverb */
  eci_command(cop-add -el:plate,50,0.5,0.5);

  /* select the 3rd param (wet/dry) for real-time control */
  eci_command(copp-select 3);

  /* connect the setup and start */
  eci_command(cs-connect);
  eci_command(start);

  while(1) {
double curpos;
sleep(1);
/* fetch current play position */ 
eci_command(get-position);
curpos = eci_last_float();
if (curpos  10.0) {
  /* at pos=10sec, quit playing */
  break;
}
else if (curpos  5.0) {
  /* at pos=5sec, set reverb length to 80% */
  eci_command_float_arg(copp-set, 0.8);
}
  }
  
  eci_command(stop);
  eci_command(cs-disconnect);
  eci_cleanup();

  return(0);
}
--cut--

---
3. Compiling

gcc -o jackdemo jackdemo.c -lecasoundc

---
4. Running

./jackdemo

---
5. Dependencies

--cut--
###| ~|$ ldd ./jackdemo
libc.so.6 = /lib/i686/libc.so.6 (0x4200)
/lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x4000)

###| ~|$ du -h jackdemo
52k jackdemo

###| ~|$ file jackdemo
jackdemo: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses 
shared libs), not stripped
--cut--

---
6. The Catch

The created binary, jackdemo, does not rely on any external libraries. No
dependency to ecasound libraries, JACK libraries, C++ runtime, threading
support... just the basic C runtime! In other words jackdemo does not
create depency-hells. ;)

...

PS Although the example looks simple, a lot happens underneath.
   'foo.wav' is read using a double-buffering disk i/o subsystem.
   If jackdemo is run with root privileges, all memory is locked
   and realtime scheduling is used. In otherwords, jackdemo 
   takes advantage of all known tricks to achieve reliable
   audio performance in Linux.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] meterbridge 0.0.4

2002-10-04 Thread Kai Vehmanen

On Fri, 4 Oct 2002, Steve Harris wrote:

 I'm not sure that you'd want to do this with the meterbridge but it's
 something that needs to be handled if we want to be able to save and restart
 a jack session.
 I dont like using pids because it looks messy, maybe jack could provice an
 eqivalent to tmpname (or whatever its called), so you could call
 jack_unique_name(bridge) and get back bridge-1 the first time and
 bridge-2 the second for example.

This might be a good addition. In any case using pids is not optimal. 
This is basicly the same problem as with port names. Either we maintain 
two sets of names (one for programs, one for the user-interfaces) or 
make a compromise and have something that is usable for both. Requiring 
users to map the application instances to pids does not fill this 
requirement.

Having a basename with a standard way of labelling/iterating instances 
is the way to go IMHO. Ecasound does the following now:

--cut--
  for(n = 0; n  AUDIO_IO_JACK_MANAGER::instance_limit; n++) {
client_repp = jack_client_new (client_name.c_str());
if (client_repp != 0) break;
client_name = jackname_rep + _ + kvu_numtostr(n + 2);
  }
--cut--

Ie. it tries ecasound, ecasound_2, and so on. The exact syntax doesn't
really matter, just as long as all client apps use the same one.

--
 http://www.eca.cx
 Audio software for Linux!
 




[linux-audio-dev] ADM: problem solved (was: Re: adm: problems with mailing list webarchive)

2002-09-18 Thread Kai Vehmanen

Hi,

searching the laa/lad/lau web archives is back online!
Let me know if you notice any problems.

links:
http://www.eca.cx/laa
http://www.eca.cx/lad
http://www.eca.cx/lau

On Sat, 24 Aug 2002, Kai Vehmanen wrote:

 The htdig-installation that is responsible for the search 
 functionality of LAD/LAU/LAA web archive, is temporarily disabled.

-- 
 http://www.eca.cx
 Audio software for Linux!

___
linux-audio-dev mailing list
[EMAIL PROTECTED]
http://music.columbia.edu/mailman/listinfo/linux-audio-dev



Re: [linux-audio-dev] swh plugins 0.2.8

2002-07-29 Thread Kai Vehmanen

On Fri, 19 Jul 2002, Steve Harris wrote:

 http://plugin.org.uk/releases/0.2.8/
 
 And of course, I now include LADSPA 1.1 default hints and a (fixed)
 ladspa.h.

Due to the fierce feature race between our projects, both gstreamer and 
ecasound (plus ecamegapedal) now have initial support for this default 
hints API in the CVS-trees. Check the whole story at...

http://eca.cx/lau/2002/07/0480.html
http://eca.cx/lau/2002/07/0484.html
http://eca.cx/lau/2002/07/0495.html

... :)

-- 
 http://www.eca.cx
 Audio software for Linux!






Re: [linux-audio-dev] App intercomunication issues, some views.

2002-07-24 Thread Kai Vehmanen

On Wed, 24 Jul 2002, Andy Wingo wrote:

[JACK transport control]
 I've been meaning for some time to make a universal transport control, a
 separate app whose sole purpose would be transport control.
 This would be rad (TM) for a number of reasons:

 1) Get your whole rig to start at once, even if you're not using
 ecasound or ardour

Yup, I agree, a generic (and simple) transport master client would be a
very valuable addition. Even though works out-of-the-box is a very high
priority item in ecasound development, I must admit that achieving this
goal is anything but easy with applications of this size. If nothing else,
broken soundcard hardware, kernel drivers (and sometime the kernel itself)
and libraries make it practically impossible to prepare for all
situations. And the last thing people developing new client apps need is
to worry about bugs and misc problems of other large client apps.

In other words there should be enough jack_simple_client style apps to
cover all JACK functionality. Getting these apps to work should require no
more effort than that required by jackd. This is critical for getting more
developers writing JACK clients. Requiring installation and use of
ardour/ecasound/someotherbigapp is not good.

 3) funny tricks with beats -- speed up, slow down the tempo. Loop the
 last 4 beats. All the GDAM tricks, but on a system-wide level.*
[...]
 * You'll run into some buffering issues here when streaming from disk.
 Oh well.

Actually the JACK transport API is quite flexible in this way. Ecasound
doesn't yet (if ever, ecasound prefers per-audio-object looping to
session-level looping) support the loop transport mode, but it does
support live seeks (ie. random-access style changes in transport
position during successive callbacks). If the disk-i/o subsystem can't 
keep up with the changes, the rt-part (callbacks) will ignore it until 
it has caught up.

Of course for sample-accurate looping, the looping transport mode is still
the only real solution. It's also true that transport-change patterns
involving regulars jumps (like skipping x samples during each callback)
will cause trouble to clients with slow non-rt i/o subsystems.

But anyways, the most important feature IMHO is the basic transport 
control (ie. start, stop and non- or near-rt fw, rw and setpos). Most 
importantly this solves the old LAAGA use-case with
drum-machine+soft-synth+multitracker (http://eca.cx/laaga).

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] App intercomunication issues, some views.

2002-07-24 Thread Kai Vehmanen

On Wed, 24 Jul 2002, Richard Bown wrote:

 What apps have an example implementation of the JACK transport controls?
 Neither ecasound or ardour appear to but I'm probably a bit out of date
 with them.  And again, why should I care about the JACK transport?

http://cvs.seul.org/cgi-bin/cvsweb-1.80.cgi/sound/ecasound/libecasound/plugins/audioio_jack_manager.cpp?rev=1.25content-type=text/x-cvsweb-markuponly_with_tag=MAIN

It's just not perfect yet, but it's quite well commented and all basic
use-cases are covered. Start from eca_jack_process(), ecasound's JACK
process() callback implementation.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] App intercomunication issues, some views.

2002-07-24 Thread Kai Vehmanen

On Wed, 24 Jul 2002, Richard Bown wrote:

 because the transport time is the only important global time it indicates
 what you should be playing/doing right now.
 But of course at the moment we've also got the ALSA sequencer clock running
 to schedule our MIDI alongside our JACK callbacks - so external control of
 our audio streams (RG as a client) wouldn't really make much sense unless
 we could do the same to our MIDI.

Not necessarily. If nothing else, just by implementing support for 'start'
and 'stop' JACK transport state changes, you allow softsynths/etc to be
run in sync with Rosegarden. Of course without support for transport
position the user has to set the position in all apps manually before
issuing start (in the JACK timebase master client), but to me this is just
a minor annoyance if I can use multiple independent, sample-synced apps to
create my music! And even more so as it very unlikely that you have 2
apps that care about sample position in one setup.

Another approach is to propage the state changes to the ALSA sequencer
(just like you do when a user presses the 'Go to begin' (or similar)  
button in Rosegarden's UI.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 I agree with you that the only real solution is to rewrite the application.
 Still, as others said that was not going to happen, the mentioned solution
 will work as long as the hardware period size isn\'t too different from the
 number of samples the application processes per read/write. I mentioned
 this before because I did not think these (read/write) applications are
 a good reason to have the process() callback use a constant nframes (during
 jackd lifetime).

There're two separate problems here. Constant nframes might be required
even if the application supports engine iteration from outside sources
(ie. all audio processing happens inside the process() callback).  
Ecasound is one example of this. Of course with no locking involved,
there's no need for priority inheritance.

A different problem is apps that have their own loop based on blocking
read/write ops or driven by select/poll. In this case the easiest way to
add JACK support is to put a FIFO between the engine and the process()
callbacks. Although priority inheritance could be used here, it's doesn't
buy as much.

First of all, due to the extra context switch involved, this approach just
is not efficient. Secondly, the application loop must still be
deterministic (to avoid missing deadlines caused by blocking on paging or
disk i/o) and there's thus no reason to run it without SCHED_FIFO. In
other words priority inheritance is not needed.

 Again, I agree with you. That\'s also why I am against a constant nframes,
 because there is hardware that really doesn\'t want nframes constant.

What hardware? You've mentioned this quite a few times on jackit-devel,
but so far without examples. D/A or D/A hardware always runs at a constant
speed (at least I haven't heard about variable rate sampling). Either the
software continuously polls the audio hw buffers (not really an option) or
is waken up periodically using interrupts. And nframes should be equal to
the period size. 

--
 http://www.eca.cx
 Audio software for Linux!





Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 There\'re two separate problems here. Constant nframes might be required
 even if the application supports engine iteration from outside sources
 (ie. all audio processing happens inside the process() callback).  
 Ecasound is one example of this.
 But why is this needed? The only valid argument I heard for this is
 optimization of frequency domain algorithm latency. I suggested a

One simple reason, whether a valid design or not, is that there's a lot of
code that handles audio in constant size blocks. For instance if you have
a mixer element in the signal graph, it is just easier if all the inputs
deliver the same amount of data at every iteration. 

In ecasound the trickiest part is that the i/o subsystem uses buffer 
objecs to store audio. Each buffer object contains nframes of audio.
These audio slots are allocated before real-time processing is started and 
cannot be resized on-the-fly. 

But the important point is that for low-latency processing, the design
described above has no real negative sides and I see no need to change it.
With the current JACK implementation this design delivers optimal results
both in terms of efficiency and latency... _if_ I ignore the
non-const-nframes issue.

If I want to add correct support for the current API, I either have to a)
change the engine design (basicly from using ringbuffers of audio blocks
into ringbuffers of audio samples), which involves making changes to
majority of the interfaces in ecasound's codebase (multiple MBs of code!),
or b), make a compromise on efficicientlatency and add a intermediary
buffer between the JACK process() and ecasound engine.

Now, as I've said before, if this is just me, then that is not reason
enough (- keep the non-constant-nframes), but if there are lots of
projects like ecasound, this will a serious issue. The worst case scenario
is that majority of apps implement JACK support in a suboptimal way. And
so far nobody has come up with any real good arguments for
non-const-nframes. So to me non-const-nframes just means lots and lots of
extra work without any benefits.

 capability interface for JACK as in EASI where it is possible to ask
 whether nframes is constant. The application must still handle the case
 where it is not.

Yup, this is one solution.

 read/write ops or driven by select/poll. In this case the easiest way to
 add JACK support is to put a FIFO between the engine and the process()
 callbacks. Although priority inheritance could be used here, it\'s doesn\'t
 If the FIFO uses a mutex, it should use some priority inversion prevention
 mechanism, unless both threads run at the same priority. Otherwise there
 is a potential unbounded block on the mutex.

The two threads must run with SCHED_FIFO as they both need to complete
their cycle before the next soundcard interrupt. As Linux is not a
real-time OS (and probably even if it was), priority inheritance would
only solve half of the problem. Calls to disk i/o, network, user i/o and
other subsystems block without deterministic worst-case bounds. No amount
of priority (given by priority inheritance) will save your butt if the
disk head is physically in the wrong place when you need it. On a
dedicated system you can reserve a separate disk for the audio i/o or
prevent other processes from using the disk, but in a GPOS like Linux, it
is always possible that some other process can affect the kernel
subsystems (for instance, access a file and cause the disk head to move at 
the worst possible time).

The correct solution is to partition your audio code into real-time
capable and non-realtime parts and make sure that the non-real-time part
is never ever able to block the real-time part. In essence this very close
to the RT-non-RT separation advocated by RTLinux, just done on a
different level (between interrupt-driven SCHED_FIFO code and
timer-interrupt/scheduler driver SCHED_OTHER code).

 There is hardware that just interrupts at a constant rate. With this hardware
 the frames that or ready isn\'t exactly constant. You might assume some value,
 but if it isn\'t exactly correct then you\'ll drift.

Yes, the interrupt intervals and how much data actually is available when
the software is woken up are two different things. But as the nframes
count in any case has an upper bound, you are not free to directly use the
avail_samples count anyways. And natural choice is to always use the
period_count. I've posted one alternative approach to this to
jackit-devel, but at least to me it really didn't seem like a viable
approach.

 And nframes should be equal to the period size. 
 This hardware doesn\'t have a period size in samples, but time based.
 And so I think it is wrong to have the driver export an interface that 
 is not used by the hardware.

Hmm, ok, now we're talking! :) Still, you can always calculate the 
theoretical period size in samples and use that as the nframes 
count. Like I already mentioned above, in any case you 

Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 For instance if you have
 a mixer element in the signal graph, it is just easier if all the inputs
 deliver the same amount of data at every iteration. 
 Hmm, why? I can see that it is a requirement that at every iteration there
 is the same data available at the input(s) as is requested on the output(s).
 I don\'t see what makes a mixer that much easier to implement if the amount
 of data to process is the same for every iteration.

If all JACK inputs have x samples of audio and non-JACK input y samples,
'x != y' and you need to mix to a JACK output with x samples of space, you
have a problem. Redesign is needed to make sure that this never happens.

 And my problem is that if JACK goes over to constant nframes there will be
 no need to change it. Even worse, new applications will also use assume
 nframes == constant.

In any case it's good that this is now discussed.

 And you could still for all the cards that have nframes == const. Just add
 some buffering for nframes != const.

I guess I could live with this, but we do need a flag to relay this info
to the clients.

 The two threads must run with SCHED_FIFO as they both need to complete
 their cycle before the next soundcard interrupt.
 What I meant was a traditional application not running SCHED_FIFO but using
 a large FIFO to communicate with JACK\'s process() callback.
 And even if they both run SCHED_FIFO, they should then also run at the same
 priority.

If using a large FIFO between a non-rt and rt threads, then the best 
solution is to make the FIFO nonblocking using atomic operations. This is
an essential technique when making robust user-space audio apps. Real-life 
implementation cans be found from ardour (disk butler subsystem), 
ecasound (classes AUDIO_IO_BUFFERED_PROXY and AUDIO_IO_PROXY_SERVER) 
and EVO (formerly known as linuxsampler).

 other subsystems block without deterministic worst-case bounds. No amount
 of priority (given by priority inheritance) will save your butt if the
 disk head is physically in the wrong place when you need it. On a
 When the disk is not able to supply the samples in time, then there is a
 problem :)
 Using a fast disk and buffering will normally be sufficient.

Aa, but that is a different issue. The question is about response time, 
not bandwidth. For instance ecasound's current disk i/o subsystem (run 
in a non-rt thread) sometimes stalls for multiple seconds (!) on my 
machine (two IDE-disks on the same bus), but still the audio processing 
keeps on going without xruns. The disk i/o system just has to buffer 
huge amounts of data to cover even the longest delays. Of course if you 
are really running out of disk i/o capacity, then fancy locking mechanisms 
won't save you.

With full-blown priority inheritance and mutual exclusion between the 
threads, the rt-thread would then block for seconds in the above 
example and who knows about the worst-case upper bound!

 The correct solution is to partition your audio code into real-time
 capable and non-realtime parts and make sure that the non-real-time part
 is never ever able to block the real-time part. In essence this very close
 As I see it, it isn\'t a problem when the non-realtime part blocks the
 real-time part, as long as there is a worst case bounded block time for it.

But as is is, theoretically speaking the worst-case time is 'infinity'. ;)

  the software is woken up are two different things. But as the nframes
  count in any case has an upper bound, you are not free to directly use the
  avail_samples count anyways. And natural choice is to always use the
  period_count. I\'ve posted one alternative approach to this to
 It is not that easy. Say period_count is constantly smaller than the available
 data on each interrupt, you will start to get behind and will have to
 eventually do an extra callback that then has more samples/time to process.

I admit, this is a real problem. If the sampling_rate/interrupt_period is
fractional, the only way for a JACK driver to keep up is to set 
JACK's buffersize to ceil(srate/iperiod) and then alternate between 
process(nframes) and process(nframes-1). 

Ok, I guess here's the first real case against const-nframe. On the hand
at least with ALSA you'd be in trouble anyway as ALSA will wake your
driver only when period_count samples are available. If you set
period_count to floor(srate/iperiod) you will be woken up on every
interrupt but you will slowly fall behind and eventually issue two
process() calls per iteration (as you described). I period_count is set to
ceil(srate/iperiod) you app will be waken only every other hw interrupt
(at least every now and then).

So like Paul said, do we need to support these soundcards...? For 
JACK-style operation both the above scenario are really, really bad.

 Not a problem as there\'s no 2^x limitation.
 Isn\'t there? for FFT?

The trick is that with majority of available soundcards the user is able 
to set period_count 

Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

Forgot one thing... :)

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 The two threads must run with SCHED_FIFO as they both need to complete
 their cycle before the next soundcard interrupt.
 And even if they both run SCHED_FIFO, they should then also run at the same
 priority.

Not needed. The SCHED_FIFO protects against from other tasks taking the
CPU. If we have two SCHED_FIFO threads communicating with a mutex
protected queue, different priorities are not a problem as for priority
inversion to happen, one of them needs to block on the shared mutex. And
if the thread is blocked, it then isn't in the run queue, and thus cannot
get the CPU.

--
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 CPU. If we have two SCHED_FIFO threads communicating with a mutex
 protected queue, different priorities are not a problem as for priority
 inversion to happen, one of them needs to block on the shared mutex. And
 if the thread is blocked, it then isn\'t in the run queue, and thus cannot
 get the CPU.
 Not true as far as I know. FIFO only means that the thread won\'t be preempted
 after a certain time in case a thread of the same priority is ready to run.
 AFAIK all threads running either SCHED_FIFO or SCHED_RR will always be
 preempted by higher priority SCHED_* threads. Please correct me if I am wrong
 in this.

Let's say we have threads A (SCHED_FIFO/50) and B (SCHED_FIFO/90). If both
threads are runnable, B will always be selected and it will run until
(quoting the man page) ... either it is blocked by an I/O request, it is
preempted by a higher priority process, or it calls sched_yield.

But if B blocks on a mutex currently owned by A, B will then become 
blocked and A will be selected to run. A can now run until it unlocks 
the mutex, B becomes unblocked and once the next scheduling decision 
occurs, B will again be chosen to run.

But it's true that if we have more threads the situation gets complex
pretty quickly. Let's say we have C (SCHED_FIFO/70) that holds a resource
needed by B, and is currently blocked by a long i/o operation. Then all
three threads will be stuck for an unbounded time.

Do correct me if this seems wrong to you.

Btw; great day today on lad - lots of very interesting discussion! ;)

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 Oh, you mean a mixer that doesn\'t only mix jack ports?
 Is that a common situation?

Yes. I really can't say how common this is. It does seem that majority of
the bigger audio apps seem to have a relatively complex internal signal
flow. It is common to access all audio data producers (files, soundcard
devices, ausio server, network connections, etc) and consumers (basicly
the same list) through generic interfaces. And as all nodes are equal, a
configuration setting is needed to determine how many samples the graph
will process at a time.

Hmm, you could of course pick a random input node at every iteration,
check how many samples it has available and then let the engine process
that many samples and restart the lottery, but this doesn't exactly sound
very good.

The bad side is that this design, although elegant (abstracting is one
weak spot all cs people share ;)), is not optimal for low-latency
operation. As the numerous (and volumenous) discussion here on lad have
shown, it's actually needed to select one node to be the master node. For
instance to implement proper JACK support, you just can't add implement a
JACK source/sink object and connect it to your graph, but you need to have
the JACK callback control the whole graph. But even if you do this, all
assumptions and restriction defined by your internal interfaces remain.

It's good to remember that most apps will continue to support the
read/write audio APIs. I don't think the Csound project will drop support
for all other audio APIs once it's ported to JACK. ;)

For instance, in theory it's perfectly possible to construct an ecasound
setup which simultaneously accesses ALSA, JACK, OSS and aRts nodes.  This
of course doesn't make any sense, but it is possible and I'd like to keep
it this way.

 If using a large FIFO between a non-rt and rt threads, then the best 
 solution is to make the FIFO nonblocking using atomic operations. This is
 Actually using mutexes (or better spinlocks as Victor noted) is a portable
 way to build an atomic operation. POSIX does not offer atomic_add stuff
 (yet) AFAIK.

Unfortunately no, POSIX doesn't provide them. But with the current Linux
kernel it's the only robust solution. Spinlocks as used in RTLinux are not
of much use to us as we can't disable hw-interrupts at will in user-space.  
Mutual exclusion doesn't work either as we can't guarantee that the non-rt
thread can release the mutex in time.

 With full-blown priority inheritance and mutual exclusion between the 
 threads, the rt-thread would then block for seconds in the above 
 example and who knows about the worst-case upper bound!
 I don\'t fully understand this.

Let's say that the non-thread causes a page fault before it manages to
release the mutex - no way to calculate the upper bound.

 But as is is, theoretically speaking the worst-case time is \'infinity\'. ;)
 That is a long time. :)
 I think even Linux can do better than that for worst case latency.

But I'm not sure if this is something we want to limit. Letting Linux use
non-deterministic algorithms has many benefits. Currently my view is that
by clearly dividing audio software into rt and non-rt parts, we can get
the best of both worlds.

Let's say you have a JACK setup with clients (suprise, surprise) A, B and
C.  A and B are fully deterministic (DSP-processing only) while C is a
file input client. If the disk i/o subsystem stalls for a long period of
time (buffers are being flushed, etc), C will still finish its process()  
on time but it must deliver a silent buffer of audio. The rest of the
setup will continue operation without timeouts. This is IMHO what we
should aim at.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] priority inversion inheritance

2002-07-11 Thread Kai Vehmanen

note! cross-posted to alsa-devel; some questions about the
  korg1212 driver...

On Thu, 11 Jul 2002, Martijn Sipkema wrote:

 Ok, I guess here\'s the first real case against const-nframe.
 I thought i had already mentioned this several time :)

You didn't say it loud enough.. ;)

[soundcards for which 'sample_rate/interrupt_frequency' is fractional]
 at least with ALSA you\'d be in trouble anyway as ALSA will wake your
 driver only when period_count samples are available. If you set
 Perhaps this could be changed/added in ALSA?

Well... I wish you luck in getting that change accepted. :)

 So like Paul said, do we need to support these soundcards...? For 
 JACK-style operation both the above scenario are really, really bad.
 I don\'t have hardware that behaves like this :)
 But still, the yamahas are a common hardware. Is the korg card the 1212?
 I think it would still be nice to support these.

But even with a non-const-nframe, these might still be hopeless cases.  
As for the korg 1212, it doesn't be a similar case as the yamaha.  Its
current driver in ALSA CVS seems to have hardcoded values for total buffer
size and interrupt frequency. The used values are 8 blocks of 1024 sample
frames (ie. period_size=1024, buffer_size=8192). This is a pretty sucky
configuration. Unfortunately as part of the driver is implemented as
DSP-code, changing the default might not be easy.

Anyways, I don't have this card myself and have never tested it so the
above analysis might be totally wrong. So correct me I'm wrong here...

 Basicly same approach is now in used in regards to the nframes issue. If
 you try to use ecasound with a JACK driver (well, if there was such an
 driver) with non-const-nframes, ecasound would just raise an error and
 exit. In a way this makes sense as until I rewrite ecasound (which will
 Is adding an intermediate buffer for drivers with non-const nframes much work?

Some. I'd have to add code for the ringbuffer. Doesn't sound bad, but for
me it's a few hundred lines of new code that I have to maintain but very
likely nobody will ever use. The worst thing is that it would ruin my
beautiful codebase. ;) I hate having multiple code paths that do
essentially the same thing. The logic for handling JACK i/o is already
pretty hairy (connecting the JACK inputs and outputs to the ecasound
signal graph, masterslave timing modes, handling commands from the
ecasound ui, commands from jackd, etc, etc).

But again, the problem is really not what I have to do. All major ecasound
subsystems have been rewritten multiple times. If it needs to be done
again, I'll do it. But I'm not sure if it as likely that someone will
rewrite csound, pd, insert-big-app-here just to support JACK.

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] 1000HZ ticks for x86 in the 2.5-tree

2002-07-09 Thread Kai Vehmanen

On Tue, 9 Jul 2002, Paul Sladen wrote:

 RTC is still more accurate, but on the other hand, you don't need root 
 privileges to take advantage of the 1kHz ticks!
 Kernel space only;  userspace is still at 100Hz on x86

Not a problem. Timing sensitive user-space apps benefit from this change
because with 1kHz ticks, kernel will be making scheduling decisions much
more often.

AFAIK, keeping the user-space visible HZ-value as 100Hz is more of a
convenience feature (ie. it's possible to change the kernel HZ value
without the need to recompile glibc and some user-space apps like top). In
other words user-space apps will get full benefit of the higher tick
frequency even though the user-space exported HZ is set to 100.

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] 1000HZ ticks for x86 in the 2.5-tree

2002-07-07 Thread Kai Vehmanen

Here's one interesting commit in the 2.5-tree:

--cut--
D 1.2 02/07/01 14:41:36-07:00 [EMAIL PROTECTED] 3 2 6/4/00020
P include/asm-i386/param.h
C Make Linux/x86 tick at 1kHz instead of 100Hz.
C 
C Export the deprecated clock_t frequency (100HZ) as USER_HZ.
--

RTC is still more accurate, but on the other hand, you don't need root 
privileges to take advantage of the 1kHz ticks!

-- 
 http://www.eca.cx
 Audio software for Linux!





Re: [linux-audio-dev] Poll about linux music audio app usability

2002-06-11 Thread Kai Vehmanen

On Tue, 11 Jun 2002, Billy Biggs wrote:

   The same holds for software as well: interface is almost everything.  I
 would much rather have a sequencer with less features and a good UI than a
 fully-featured one that's annoying to use.  When composing it's important
 to forget technology: think music.

I just couldn't agree more!

   This was the thought behind my sequencer: ttrk (http://div8.net/ttrk).  
 I did a UI that I'm pretty proud of for the target platform: basically
 it's an Alesis MMT8 meets a tracker in 80x50 textmode on an old PC, low
 enough latency to have really smooth drumrolls even at high bpm, and it
 syncs happily to external MIDI clock (essential for my setup).
[...]
   Of course, since I have a market size of 1 (myself), and pretty much no
 interest from the open-source community, the project hasn't gone
 anywhere else.  But I'm quite happy with it. :)

Make that two!! :) ttrk has been one of my favorite audio apps for a while
now. Thanks to the well-defined set of functionality and the way it is
implemented, there just isn't much to complain about. ;)

-- 
 http://www.eca.cx
 Audio software for Linux!




[linux-audio-dev] Re: [linux-audio-user] Audio routing issues for linux..

2002-06-10 Thread Kai Vehmanen

On Mon, 10 Jun 2002, Juan Linietsky wrote:

 Here's a problem I commonly find in existing audio apps or in
 programming audio apps: Audio routing.

Over a year ago (Sat May 05 2001) I wrote the following message:

http://www.eca.cx/lad/2001/May/0071.html

... pretty close isn't it? The next step was http://eca.cx/laaga and then 
http://jackit.sf.net ...

[problems of JACK and aRts]
 1-The application has to be able to proovide inputs and outputs,
 which may be used or not. By default an app may connect directly to
 the output or just not conect at all, expecting YOU to define the
 audio routes. Most of the times, unless using a direct output or known
 audio modifier objects, an app will not want to connect somewhere from
 whithin it. You will do that from an abstracted interface.

I don't really see a problem here. There are already JACK clients that
allow you to modify the set of published ports during runtime. JACK apps
can either let the user specify what ports to publish or it can query the
running JACK system and create its ports based on this information. It's
just like communicating with any other rt-subsystems (direct soundcard
access, network, etc).

 2-Jack is great, but if you want to run a certain synthethizer that
 doesnt use jack, together with one that does and you have a consumer
 soundcard that doesnt support multichannel output, you are dead.

You've been dead so far, are dead and will be until a real solution to 
this problem arrives. JACK is one promising project (my personal 
opinion of course), but it's still an open game... who knows, maybe 
Steinberg will announce Rewire/Linux next week and we can pack our bags 
and go home. ;)

 3-You may also want to put just any program that uses native OSS/ALSA
 through this. Imagine running xmms and wanting to put the sound thru a
 better equalizer than the one included. Instead of botherering in
 writing a SPECIALIZED equalizer plugin for xmms, you just redirect the
 output to an equalizer program that takes many inputs/outputs.

http://eca.cx/screenshots/jack_alsaplayer_and_ecamegapedal_20020302.jpg

Notice the date. In other words this is certainly possible with JACK and 
has been for a while!

 4-I know jack likes to give root privileges to apps that need low
 latency I imagine that for normal apps this isnt an issue, so this
 should be considered.

Yup, this is a problem, but it's a problem for all apps. And btw, JACK 
nowadays has a soft-mode which allows you to run it without 
root-privileges. You'll get the occasional xruns, but it'll run. The 
choice is yours.

 5-You know you cant force application owners to convert their stuff to
 jack/arts/etc. You'd also rather not waste your time converting their
 applications to that, and the application owners would rather not
 having to support multiple apis. So, this saves us time to all.

Maybe you are right, promoting JACK (or any other new framework) is a very
difficult task indeed. On the other hand I really think JACK is something
very exciting. I've already started to work on adding JACK support to a
few of my favorite linux audio apps so I can use them in combination with
ecasound. What can I say... it's like a whole new ball game! :) Like it or 
not, JACK as it is now can do things that simple weren't possible before.
It's here, it's real and it works! :)

 Probably the easier and more natural approach to this is just
 integrating JACK to ALSA in some way. 

This is not as easy as it sounds. I've thought about this a few times when 
I was working on Ladplex (my own implementation of the LAAGA concept which 
I later abandoned in favor of JACK). You could implement most of jackd's 
functionality in the alsa-lib layer, but not without problems:

- you'd need a separate server (and with it all the installation/user-support
  problems you mentioned as problems of JACK); otherwise you'd have no 
  sane way of resolving the user-privilege problem
- only with ALSA apps that behave like JACK-clients would
  efficient low-latency operation be possible (in other words 
  the ALSA API, although certainly allows it, doesn't force app 
  writers to make their apps efficient for lowlatency operation)
- no transport control
- you'd need a separate API for making connections and querying
  current network configuration
- it's a big task; even with a very limited interface, JACK has
  required quite a lot of developer effort; ALSA PCM API is,
  well, it's just larger

If we don't worry about low-latency too much, then the situation changes.  
It shouldn't be too big of a task to write an ALSA PCM plugin that
interfaces with jackd using libjack. This would allow all ALSA and OSS
apps to interact with JACK. I'm certain someone will write this bridge
sooner or later. A simplified version would do:

- lock the ALSA hw parameter space to the values given by jackd
- treat JACK like a soundcard
- pcm plugin layer is used to convert between formats used 
  by JACK and ALSA (here JACK is the 'hw' 

Re: [linux-audio-dev] LADSPA v1.1

2002-05-21 Thread Kai Vehmanen

On Tue, 21 May 2002, Richard Bown wrote:

 Tim Hockin wrote:
 No need to get on the defensive, really.  I don't deny the usefulness or
 importance of LADSPA _AT_ALL_.  It is, by and large, a very good system.
 Well why don't you stop being such a dick and just get on with it rather
 than posting under-informed, inflammatory comments?

Ok guys, calm down a bit. As has been already stated, new
ideas and proposals are always welcome here. But
it's also good to remember that creating a widely
used API is a bigger task than writing a technically
good API. You need a bit of social engineering 
to get people on your side, or even just to get
them to go through your proposal in detail.

Downplaying the meaning of previously done 
work of this group (search for LADSPA at
www.eca.cx/lad and you'll get thousands of
matches) is not a good way to start your campaign.;)

Anyways, new ideas (and members!) are always
welcome. And I'd also like to maintain the
relaxed atmosphere that this list has. There has
never been a real flamewar here - let's keep 
it that way.:)

-- 
 http://www.eca.cx
 Audio software for Linux!




Re: [linux-audio-dev] Ecasound frontend enquiry (and a bad link onSound MIDI page)

2002-05-21 Thread Kai Vehmanen

On Tue, 21 May 2002 [EMAIL PROTECTED] wrote:

 The link on linuxsound page http://www.bright.net/~dlphilp/linuxsound/;
 to  EcaEnveloptor in Multitrack Recorders/Mixers is bad.

You'll find all the frontends at:

http://www.eca.cx/eca_links.html

Or directly to ecaenveloptor's new site at:

http://www3.wakkanet.fi/artoh/software/ecaenveloptor/

-- 
 http://www.eca.cx
 Audio software for Linux!





Re: [linux-audio-dev] LADSPA Specs ?

2002-05-12 Thread Kai Vehmanen

On Sat, 11 May 2002, Likai Liu wrote:

 Please consider my proposal for array extension of the LADSPA:

As the one who encouraged to show the code, I feel obliged to give at
least some feedback, but I'm afraid it's not very positive this time. The
proposal itself looks fine, but I'm not sure how much interest this gets
from developers of current LADSPA hosts.

For instance ecasound's own plugin system (on top of which LADSPA plugins
are mapped) doesn't support arrays, so it would be a major change to add
support for this feature. On the other hand ecasound already has a
mechanisms in place for representing envelopes (sequences of control data
changes) and large parameter sets (ecasound plugins can change their 
parameter interface dynamically during runtime).

So this is my view on the issue. Let's see what other people think...

-- 
 http://www.eca.cx
 Audio software for Linux!




  1   2   >