Re: Gnome-media



Simon Per Soren Kagedal wrote:

> Hi,
>
> > Should a replacement be chosen, maybe it shouldn't be Esound reliant?
> > I find the sampling frequency convertor in the latter to introduce a
> > lot of noise. Users should have the right to listen to audio without
> > distortion! Has anyone investigated alternatives to Esound's (linear?)
> > interpolation such as band limited interpolation?
>
> The crazy thing is that esound doesn't even use linear interpolation!
> I know there has been a few changes to esound recently that I haven't
> looked at, but the following is from current cvs and unless
> mixing/resampling is now done somewhere else in the source tree, this
> is what's happening:
>
>       /* scale the pointer, and copy the data */
>              while ( wr_dat < dest_len )
>              {
>                  rd_dat = wr_dat * src_rate / dest_rate;
>
>                  lsample = source_data_uc[ rd_dat ];
>                  target_data_uc[ wr_dat++ ] = lsample;
>              }
>
> (this is from "mix_from_mono_8u", similar code is found in other
> functions)
>
> My experience is that linear interpolation sounds perfectly ok for
> low-end sound use (games, sound events - the kind of stuff esound is
> made for anyway), but the above algorithm obviously doesn't.
>
> My winter break starts like tomorrow and I intend to maybe take a look
> at this issue, it's been annoying be for quite a while, but in the
> long run I think esound should be replaced and I think that's the
> general consenus among GNOME hackers also?  I would very much like to
> hear what the current plan is.
>
> Best wishes,
> Simon.
>
> _______________________________________________
> GNOME-sound-list mailing list
> GNOME-sound-list gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-sound-list

Well, what you are asking here ( or you could ask here) is for a generic
user-defined effect modifier on the main wave.
I mean, in ESD you can write samples and output streams of sound data to
the daemon, and it handles them to mix them into a single output stream.
 You can also monitor (I mean, receive the data) from the main output
stream. BUT YOU CAN'T change this output stream on the fly.

Evidently if the game/program/etc is going to output high quality sound,
then it must send an stream of 44.1 kHz, 16 bits, stereo sound data.
Then
ESD mixes it with the others channels using a naive algorithm to reduce
sound frecuncy, bits and stereo if necessary. And here is where the
problem arises. ESD should provide some pre-defined sound-enhacing
filters (linear, ...) or let the user provide one or use the default
quick algorithm.
Another nice thing ESD could do is let an authorized program (with root
permissions) not only monitor the main output stream, but to provide a
mechanism to add on the fly filters to this main stream. I mean, let the
program see the output data before it sends them to the sound card, so
the program can change it to create on the fly effects. Just imagine,
you could have an echo filter, a reverberation one, stereo-enhacers,
etc... that would run on the channels at the same time. (Imagine Quake
with echo, reverberation, etc...)





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]