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

Re: [pygame] pygame.mixer.init(frequency=?)



On Thu, Feb 25, 2010 at 10:37:36AM -0800, James Paige wrote:
> On Thu, Feb 25, 2010 at 10:31:12AM -0800, B W wrote:
> >    I have two songs. One has a bitrate of 48000, the other 44100. If I allow
> >    Pygame (SDL mixer) to use the default frequency, the playback speed of the
> >    songs is distorted. If I explicitly set the mixer frequency to match a
> >    song so it sounds good, the other sounds distorted.
> > 
> >    Reinitializing the mixer is not a good option. There are other sounds that
> >    need to play, and would be interrupted by a reinit. Resampling the songs
> >    is not ideal, either, as Vorbis is a lossy format and sound quality is
> >    obviously lost in re-sampling.

Is that a theoretical observation, or can you actually hear the
difference?

> >    Does anyone have a recommendation? Are all sounds in an implementation
> >    expected to have the same bitrate?
> 
> Even if SDL_mixer was capable of handling this situation, it would still 
> have to handle it by resampling. Unless I am greatly mistaken, there is 
> no way to avoid resambling in this situation, so it will be better to 
> resample in advance, rather than to expect the library to do it at 
> runtime.

If SDL resampled the sound on load, you'd end up with:

  decode vorbis -> resample (mostly lossless) -> play.

If you resample it in advance, you end up with

  decode vorbis -> resample (mostly lossless) -> reencode vorbis
  (lossy!) => decode vorbis -> play

It's not the resampling that B W is trying to avoid, it's the lossy
reencoding.

Marius Gedminas
-- 
(mental note: stop installing red hat. everytime i do so, it takes ages to fix
my system again.)
                -- from the sig of Martin Hön

Attachment: signature.asc
Description: Digital signature