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