[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-multimedia
Subject:    Re: Volume Control in aRts
From:       Stefan Westerfeld <stefan () space ! twc ! de>
Date:       2000-06-11 23:01:27
[Download RAW message or body]

   Hi!

On Sun, Jun 11, 2000 at 11:37:56AM -0700, Charles wrote:
> There should be a way to control the volume for a stream without accessing the
> system mixer.  With the system mixer, every stream arts is processing is
> controlled.  An aRts mixer should only control one.

Look at the source of artscontrol - you'll find there is a StereoEffect
which controls volume, which you can insert into a StereoEffectStack.

So where is the problem, then? The problem is that SimpleSoundServer uses
one StereoEffectStack only, which is used for all PlayObjects and all
applications currently. So although you can softcontrol the volume by
inserting the StereoVolumeControl object into *this* stack (outstack), you
can't control different PlayObjects seperately (or Quake seperately from a
PlayObject, or anything else).

What I think would be the way to go is to create something similar like a
window manager for audio. It should decide how to route outputs that audio
applications do. Just as the user can resize or minimize an X11 application
without the application knowing anything about it, this audio manager should
allow that the user changes how the applications sounds like (by inserting
effects, changing volume), without the application knowing this.

Also, it should be able to somehow remember settings (e.g. I always want my
window manager sounds with reverb), and be able to deal with advanced concepts
like routing the audio output to a virtual 8 channel studio mixer, or a real
multiport soundcard.

Currently, I can only encourage anybody to help with a complete specification
of such a thing, as it will be one of the most important components of aRts.
There is nothing done, yet, and anything over the current "outstack" solution
will be an improvement.

I suggest reading 

http://www.arts-project.org/doc/manual/index-3.html (section about busses)
http://www.arts-project.org/doc/manual/index-11.html

for some overview about how the "old" aRts handled this. Basically, the old
solution was to assign any client to a named bus, which then could contain
further processing. The assignment was done using an title (i.e. the title
of the piece of music playing) and application domain (e.g. mp3), or manually
in the case of midi synthesis.

Have a look at

http://www.arts-project.org/aol/pics/scr-0.3.3.jpg

where you see an aRts-0.3.3. In the upper left corner is the virtual mixer,
which provides audio01 and audio02 as busses. Then left of it, you see the
gui for assigning the clients to channels - as you see the "Empire Strikes
Back" thingy is assigned to the bus audio01 (e.g. goes through the left
mixer channel). Below, two virtual instruments are assigned to the busses
directly (no management in between).

I think I'll at least port Synth_BUS_* to the new aRts later this week, so
we'll again have dynamic M:N connections on string base, which is a hack
(as it circumvents the normal way you connect stuff in a flow system), but
practical. Still how the audio manager looks will need to be specified...

Any input is very very welcome (this is really one of the most essential
components).

   Cu... Stefan
-- 
  -* Stefan Westerfeld, stefan@space.twc.de (PGP!), Hamburg/Germany
     KDE Developer, project infos at http://space.twc.de/~stefan/kde *-         
_______________________________________________
Kde-multimedia mailing list
Kde-multimedia@master.kde.org
http://master.kde.org/mailman/listinfo/kde-multimedia

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic