Hi,
I didn't use any graphics in my SDL program. Just the SDL_Mixer. Here is
a short example of SDL program that plays the files without noise/crackles.
This was compiled with DEV-C++ and MinGW.
#include <stdlib.h>
#include <SDL.h>
#include <SDL_Mixer.h>
Mix_Chunk* bounce = NULL; // bounce.wav from Book chapter 10
Mix_Chunk* msg = NULL; // Please put some .ogg files in the folder.ogg Book
chapter 10
Mix_Music *music = NULL; // getout.ogg example from the IrrKlang music
library
SDL_Surface* createScreen()
{ SDL_Surface *screen;
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if ( screen == NULL ) {
fprintf(stderr, "Unable to set 640x480 video: %s\n",
SDL_GetError());
exit(1);
}
return screen;
}
void quit() {
Mix_FreeChunk(bounce) ;
Mix_FreeChunk(msg);
Mix_FreeMusic(music);
Mix_CloseAudio();
SDL_Quit();
}
int main(int argc, char *argv[])
{
if ( SDL_Init(SDL_INIT_EVERYTHING) < 0 ) {
fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
SDL_Surface* screen = createScreen();
SDL_WM_SetCaption( "Hello World", NULL );
//Update the screen
if( SDL_Flip( screen ) == -1 ) { return 1; }
// initialize SDL mixer
if( Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ) == -1 ) //tried
these values in Pygame
{
return false;
}
Mix_AllocateChannels(8);
bounce = Mix_LoadWAV( "bounce.wav" );
msg = Mix_LoadWAV("please.ogg");
music = Mix_LoadMUS( "getout.ogg" );
//If there was a problem loading the sound effects
if( bounce == NULL ) { return false; }
SDL_Event event;
while(true) {
while(SDL_PollEvent(&event)) {
if(event.type == SDL_QUIT) {
quit();
}
if(event.type == SDL_KEYDOWN) {
if(event.key.keysym.sym == SDLK_1) {
if(Mix_PlayChannel(-1, bounce, 0) < 0) {
quit();
}
}
else if(event.key.keysym.sym == SDLK_2) {
if(Mix_PlayChannel(-1, msg, 0) < 0) {
quit();
}
}
else if(event.key.keysym.sym == SDLK_3) {
if( Mix_PlayMusic( music, -1 ) < 0 ) {
quit();
}
}
}
}
}
return 0;
}
----- Original Message -----
From: "René Dudfield" <[EMAIL PROTECTED]>
To: <pygame-users@seul.org>
Sent: Thursday, April 17, 2008 11:15 PM
Subject: Re: [pygame] Pygame Mixer Crackle noise not an SDL_Mixer problem
hi,
did your rewritten scripts use video? Or just sound?
Do you have a url for your scripts somewhere?
cheers,
On Fri, Apr 18, 2008 at 4:03 PM, etrek <[EMAIL PROTECTED]> wrote:
Hello Pygame developers: Please read entire message before assuming
you've
heard this before:)
I am a new user of Pygame. I have the book "Beginning Game Dev with
Python
and Pygame". So far I am very impressed with Pygame; It has excellent
graphics response and input capabilities. The sound Mixer library has
problems though.
When I tried the examples in Chapter 10 "Making Things Go Boom", I
noticed
a "Crackling" noise when playing sound effects (short wav files) and
music
(long Ogg files).
I have searched the archives at Seul.org and searched on Google for
fixes
to this problem. The solutions suggested basically amount to changing
arguments passed into: pygame.mixer.pre_init(...)
I tried many different settings:
pygame.mixer.pre_init(44100, -16, 2, 4096)
pygame.mixer.pre_init(22050, -16, 2, 4096)
pygame.mixer.pre_init(22050, 16, 2, 1024 * some_number)
Too many to keep listing.
I also tried leaving the settings at default, which actually produces the
least amount to crackling.
I played the music/sound files with Windows Media Player to rule out my
system or bad files. There was no crackling there.
On some of the Google searches, I saw that people were pointing to the
problem being in the actual SDL_Mixer.
So I downloaded SDL/SDL_Mixer extension and re-wrote the example scripts
in
SDL/C++, using the same music/sound files.
To my surprise, there was NO Crackling noise.
So, the problem is NOT my system, it's not the arguments I'm passing
into
pygame.mixer, and it's not SDL_Mixer.
The problem has to be somewhere in the Pygame Sound/Music libraries.
I even tried swapping out the SDL_Mixer libs that came with Pygame for
the
ones that came with SDL_Mixer, and still got the crackling in Pygame.
It would be nice if this could be fixed. Because the crackling is
essentially making the library unuseable. Which would be a shame,
because
Pygame is a terrific library/tool.
Thanks,
Ethan D.
Systems Programmer, SR.
Planetary Lab, Univ Arizona
My System:
Windows Vista 32bit home premium
IP35-Pro mobo, integrated sound, latest drivers
4 Gig RAM
Intel Quad core