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 cu, On Sun, May 24, 2009 at 10:05 AM, <le...@telus.net> 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@seul.org 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 <ren...@gmail.com> 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 <bro...@gmail.com> wrote: >> >>> Here's an attachment. >>> >>> >>> On Wed, May 13, 2009 at 9:15 PM, René Dudfield <ren...@gmail.com> 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 <bro...@gmail.com> 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! >>> > >>> > >>> >> >> >