[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] BUG in make_sound()?
Thanks guys.
On Sun, May 24, 2009 at 11:22 AM, Lenard Lindstrom<len-l@xxxxxxxxx> wrote:
> I can't reproduce the problem (Pygame 1.8.1, Python 2.5.4, Windows 98). If
> anything should crash it is my system. I ran the test program for over two
> hours without a problem So I will be of no help here. Good luck.
>
> Lenard
>
> René Dudfield wrote:
>>
>> hi,
>>
>> yeah, he had numeric and numpy installed...
>>
>> I modified the script slightly to tell it to use numpy by default:
>> http://rene.f0o.com/~rene/stuff/MAKE_SOUND_BUG.py
>> <http://rene.f0o.com/%7Erene/stuff/MAKE_SOUND_BUG.py>
>>
>>
>> cu,
>>
>>
>> On Sun, May 24, 2009 at 10:05 AM, <len-l@xxxxxxxxx
>> <mailto:len-l@xxxxxxxxx>> wrote:
>>
>> Hi,
>>
>> Does DR0ID have Numeric installed? Pygame 1.8.1 sndarray uses
>> Numeric by default.
>>
>> Lenard
>>
>>
>> May 23, 2009 03:31:02 AM, pygame-users@xxxxxxxx
>> <mailto:pygame-users@xxxxxxxx> wrote:
>>
>> hi again,
>>
>> DR0ID tested it on windows and got both the traceback you got,
>> and the segfault (with python2.6 and pygame 1.8.1). Will get
>> around to debugging it on windows later.
>>
>> cu,
>>
>> On Sat, May 23, 2009 at 6:33 PM, René Dudfield
>> <renesd@xxxxxxxxx <mailto:renesd@xxxxxxxxx>> wrote:
>>
>> hello,
>>
>> I haven't been able to reproduce the problem... I tried
>> on a ubuntu 32bit, and an osx 10.5.7 32bit python.
>>
>> So maybe the bug happens only on windows.
>>
>>
>> I haven't been able to find any places in the code where
>> make_sound could return anything but a Sound object.
>>
>> Will try it out on vista later.
>>
>>
>> cu,
>>
>>
>>
>> On Wed, May 20, 2009 at 1:22 PM, Brian Brown
>> <brobab@xxxxxxxxx <mailto:brobab@xxxxxxxxx>> wrote:
>>
>> Here's an attachment.
>>
>>
>> On Wed, May 13, 2009 at 9:15 PM, René Dudfield
>> <renesd@xxxxxxxxx <mailto:renesd@xxxxxxxxx>> wrote:
>> > hi,
>> >
>> > thanks for the awesome bug report.
>> >
>> > Is it possible you could send me the file as an
>> attachment? The email seems
>> > to have messed with the formatting.
>> >
>> > cheers,
>> >
>> >
>> >
>> >
>> > On Fri, May 8, 2009 at 8:31 AM, Brian Brown
>> <brobab@xxxxxxxxx <mailto:brobab@xxxxxxxxx>> wrote:
>> >>
>> >>
>> >>
>>
>> ###################################################################################################
>> >> # A Pygame BUG Report: (Bug found about May 2009)
>> >> #
>> >> # To Pygame People:
>> >> #
>> >> # (Best when viewed with a monospaced font.)
>> >> #
>> >> # I think I found a glitch/bug . . .
>> >> #
>> >> # pygame.sndarray.make_sound() sometimes
>> returns a "channel"?
>> >> #
>> >> # Below is a program that can possibley re-do the
>> glitch.
>> >> #
>> >>
>> >>
>>
>> ###################################################################################################
>> >> #
>> >> # requirements to run:
>> >> # (python 2.5 or higher)?
>> >> # and: (pygame 2.8.0 or pygame 2.8.1)?
>> >> # and: (numpy)?
>> >> #
>> >>
>> >>
>>
>> ###################################################################################################
>> >> #
>> >> # On my computer:
>> >> #
>> >> # The glitch was found with: (python 2.5.2 +
>> pygame 2.8.0 + numpy
>> >> 1.2.1) and: (python 2.6.2 + pygame 2.8.1 + numpy
>> 1.3.0 ).
>> >> #
>> >> #
>> >> # after a while of running (About 2 to 10
>> minutes), this program
>> >> closes and give one of these errors?:
>> >> #
>> >> # This one: TypeError: argument 1 must be
>> >> pygame.mixer.Sound, not Channel <--(common)
>> >> #
>> >> # Or this one: Fatal Python error:
>> (pygame parachute)
>> >> Segmentation Fault <--(rare)
>> >> # This application has
>> requested the Runtime
>> >> to terminate in an unusual way.
>> >> # . . .
>> >> #
>> >> # (I did a google search to see if anybody else
>> had discovered this
>> >> glitch--
>> >> # But-- I didn't find any pages about it . . . )
>> >> #
>> >>
>> >>
>>
>> ###################################################################################################
>> >> # My computer stats:
>> >> #
>> >> # Windows Vista Home Premium
>> >> # Service Pack 1
>> >> # win32/32-bit Operating System
>> >> # Processor: Intel(R) Pentium(R) Dual CPU
>> E2180 @ 2.00GHz 2.00
>> >> GHz
>> >> # RAM/memmory: 3.00 GB
>> >> #
>> >>
>> >>
>>
>> ###################################################################################################
>> >> #
>> >> # Here's the program:
>> >> #
>> >>
>> >> def HE_HE_init():
>> >> global screen
>> >> global screen_x_size
>> >> global screen_y_size
>> >> global channel_max
>> >> if sys.platform == 'win32' or sys.platform ==
>> 'win64':
>> >> os.environ['SDL_VIDEO_CENTERED'] = '1'
>> >>
>> >> # init the pygame.mixer according to the
>> pygame version number:
>> >> versiony_numbery = pygame.version.vernum
>> >> numby = int(str(versiony_numbery[0]) +
>> str(versiony_numbery[1]) +
>> >> str(versiony_numbery[2]))
>> >> if numby >= 181: pygame.mixer.init(44100, -16, 1)
>> >> else: pygame.mixer.init(22050, -16, 2)
>> >>
>> >> pygame.init()
>> >> random.seed()
>> >> channel_max = 5
>> >> pygame.mixer.set_num_channels(channel_max)
>> >> screen_x_size = 640
>> >> screen_y_size = 480
>> >> screen = pygame.display.set_mode((screen_x_size,
>> screen_y_size))
>> >> pygame.mouse.set_visible(1)
>> >> pygame.display.set_caption('BUG? -->
>> pygame.sndarray.make_sound() <--
>> >> BUG?')
>> >> pygame.display.flip()
>> >>
>> >>
>> >> def Lets_ROLL():
>> >>
>> >> previous_channel = None
>> >>
>> >> # Some frequencies/Hz/Cycles-per-second:
>> (ABCDEFGs)
>> >> noteyish = (440, 493.883, 261.626, 293.665,
>> 329.628, 349.228, 391.995,
>> >> 440*2.0, 493.883*2.0, 261.626*2.0,
>> 293.665*2.0,
>> >> 329.628*2.0, 349.228*2.0, 391.995*2.0,
>> >> 440/2.0, 493.883/2.0, 261.626/2.0,
>> 293.665/2.0,
>> >> 329.628/2.0, 349.228/2.0, 391.995/2.0
>> >> )
>> >>
>> >> t = time.time()
>> >>
>> >>
>> >>
>> >>
>> >> while True: # <-- Main loop
>> >>
>> >>
>> >> # Keep program from running/executing
>> "too fast":
>> >> while t > time.time(): pass
>> >> t = time.time() + 0.10
>> >>
>> >>
>> >>
>> >> screen.fill((0, 0, 0))
>> >>
>> >>
>> >> # Close the window/program if: [Esc is
>> pressed] or: [The
>> >> X button is pressed]
>> >> key = pygame.key.get_pressed()
>> >> if key[K_ESCAPE]: END()
>> >> for event in pygame.event.get():
>> >> if event.type == QUIT: END()
>> >>
>> >>
>> >> ##### generate/create and display/draw
>> numpy_sound_data: #####
>> >>
>> >> total_duration_in_seconds = .25
>> >> samples_per_second = 22050
>> >> total_amount_of_samples =
>> total_duration_in_seconds *
>> >> samples_per_second
>> >> cicles_per_every_second =
>> noteyish[int(random.random() * ((7 *
>> >> 3) - 1) )] #440.0
>> >> numpy_sound_data = array([0] *
>> int(total_amount_of_samples))
>> >>
>> >>
>> >> # setup some variables for
>> drawing/displaying numpy_sound_data
>> >> x = 0
>> >> y = 200
>> >> x_dividey = 10
>> >> y_dividey = 1000
>> >> y_addy = 200
>> >> x2 = 0
>> >> y2 = 400
>> >> x2_dividey = 2
>> >> y2_addy_addy = 200
>> >>
>> >>
>> >> # yyygr should cause a "slight" "waver" in the
>> >> frequencies/Hz/Cycles-per-second
>> >> yyygr = 0.00001
>> >> yyygr_speed = 0.0
>> >> #yyygr_speed = (0.0005 / 2.0) -
>> random.random() * 0.0005
>> >>
>> >> specialy = len(numpy_sound_data) - 1
>> >> specialyy2 = specialy - 1000
>> >> specialyy3 = 0 + 300
>> >> if specialy > 2000: specialy -= 2000
>> >>
>> >> for n in range(0, len(numpy_sound_data)):
>> >>
>> >> if yyygr < 0:
>> >> yyygr_speed -= 0.0000005
>> >> elif yyygr > 0:
>> >> yyygr_speed += 0.0000005
>> >> yyygr += yyygr_speed
>> >>
>> >> wavey_gurgy = ( float(n) *
>> float(cicles_per_every_second +
>> >> yyygr) / float(samples_per_second) )
>> >>
>> >> numpy_sound_data[n] = int( math.sin(
>> wavey_gurgy *
>> >> radians(360) ) * 20000.0 )
>> >>
>> >>
>> >> # This "pinches" the ends of the
>> "numpy_sound_data":
>> >> if n >= specialyy2:
>> >> numpy_sound_data[n] *= (1.0 - (n -
>> specialyy2) / 1000.0)
>> >> if n <= specialyy3:
>> >> numpy_sound_data[n] *= (n / 300.0)
>> >>
>> >> # Draw/plot two stretched versions of
>> the "numpy_sound_data":
>> >> xa = x
>> >> ya = y
>> >> x = n / x_dividey
>> >> y = numpy_sound_data[n] / y_dividey + y_addy
>> >> xa2 = x2
>> >> ya2 = y2
>> >> x2 = n / x2_dividey
>> >> y2 = y + y2_addy_addy
>> >> pygame.draw.line(screen, (200, 200, 200),
>> (x, y), (xa, ya))
>> >> pygame.draw.line(screen, (200, 200, 200),
>> (x2, y2), (xa2, ya2))
>> >>
>> >> pygame.display.flip()
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> ###### convert "numpy_sound_data" to
>> pygame.mixer.Sound and
>> >> play it: #######
>> >>
>> >>
>> >> sound_thing = pygame.sndarray.make_sound(
>> numpy_sound_data )
>> >> # <-- This should always return a sound, right?
>> >>
>> >>
>> >> if previous_channel != None:
>> previous_channel.fadeout(300) #
>> >> <-- Fade out previous sound. (if any)
>> >>
>> >>
>> >> print type(sound_thing)
>> #
>> >> <-- Should print: >>
>> >>
>> >> previous_channel =
>> >> pygame.mixer.find_channel(True).play(sound_thing,
>> 0) # <-- This line
>> >> is where the program "should" give an error.
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> def END():
>> >> print ''
>> >> print 'Program ended?'
>> >> print
>> >>
>>
>> "###############################################################################"
>> >> print
>> >>
>>
>> "###############################################################################"
>> >> print ''
>> >> pygame.quit()
>> >> raise SystemExit, ''
>> >>
>> >>
>> >> import os
>> >> import sys
>> >> import math
>> >> import random
>> >> import time
>> >> #import gc
>> >> #import copy as pythoncopy
>> >> #import string
>> >> #import struct
>> >> #from time import strftime, localtime
>> >> #import wave
>> >>
>> >> print ""
>> >> print
>> >>
>>
>> "###############################################################################"
>> >> print
>> >>
>>
>> "###############################################################################"
>> >> print "Program started? "
>> >> print ""
>> >> print ""
>> >> print ""
>> >> print ""
>> >> print ""
>> >> try:
>> >>
>> import
>> >> pygame
>> >>
>> from
>> >> pygame.locals import *
>> >>
>> if not
>> >> pygame.font: print '?? "pygame.font" not "found" ??'
>> >>
>> if not
>> >> pygame.mixer: print '?? "pygame.mixer" not "found" ??'
>> >>
>> from
>> >> pygame import scrap
>> >> except: print
>> >> '"pygame" not "found"???'
>> >> try:
>> >>
>> import
>> >> numpy; from numpy import *
>> >> except: print
>> >> '"numpy" not "found"??? (Oh well! Who cares!)'
>> >> #try:
>> >> #
>> import
>> >> numarray; from numarray import *
>> >> #except: print
>> >> '"numarray" not "found"??? (Oh well! Who cares!)'
>> >> #try:
>> >> #
>> import
>> >> Numeric; from Numeric import *
>> >> #except: print
>> >> '"numeric" not "found"??? (Oh well! Who cares!)'
>> >>
>> >> HE_HE_init()
>> >> Lets_ROLL()
>> >> END()
>> >>
>> >> # Thanks for your effort! I hope the bug will be fixed!
>> >
>> >
>>
>>
>>
>>
>
>
> --
> Lenard Lindstrom
> <len-l@xxxxxxxxx>
>
>