On Fri, Dec 2, 2011 at 12:59 AM, Marcel Stimberg <
stimb...@users.sourceforge.net> wrote:

> Hi list,
>
> I'm having trouble playing sounds (generated from arrays) as stereo
> sounds. Creating a sound and copying it to two channels seems to
> double the frequency.
>
> The following script (see also here: http://pastebin.com/qqZbJavf )
> should make it more clear. It constructs a simple 400Hz sine wave and
> plays it as a mono sound (nchannels = 1) or duplicates the array and
> plays it as a stereo sound (nchannels = 2). In the second case,
> however, the tone that is played is an 800Hz tone instead of a 400Hz
> one... This seems not to happen on Windows, I encountered the problem
> on ArchLinux and Ubuntu 11.10 (both having pygame 1.9.1).
>
> import numpy as np
> import pygame as pg
> import time
>
> frequency, samplerate, duration = 400, 44100, 20000
> nchannels = 1 # change to 2 for stereo
> pg.mixer.pre_init(channels=nchannels, frequency=samplerate)
> pg.init()
>
> sinusoid = (2**15 - 1) * np.sin(2.0 * np.pi * frequency * \
>                   np.arange(0, duration) / float(samplerate))
> samples = np.array(sinusoid, dtype=np.int16)
> if nchannels > 1: #copy mono signal to two channels
>       samples = np.tile(samples, (nchannels, 1)).T
> sound = pg.sndarray.make_sound(samples)
> sound.play()
>
> time.sleep(duration/float(samplerate))
>
Hi,

I can reproduce the sound doubling effect on Windows 7 Professional, 32 bit.

Thanks,
Ian

Reply via email to