On Fri, Mar 7, 2008 at 10:37 AM, hagna <[EMAIL PROTECTED]> wrote: > > Get the code without breaks here --> http://dpaste.com/38321/ > > > > On Mar 6, 4:36 pm, hagna <[EMAIL PROTECTED]> wrote: > > This duplicates the bad behavior: > > > > from pyglet import media > > from pyglet.media import procedural, AudioData > > from ctypes import * > > import sys > > from pyglet import font, window, media, clock > > from pyglet.gl import * > > from pyglet.window import event, key > > > > class cw_sound(object): > > def __init__(self, msg='CQ', wpm=5, fwpm=15): > > self.chWPM(wpm, fwpm) > > self.msg = msg > > > > _code = {'A':'.-', 'N':'-.', '1':'.----', > > '.':'.-.-.-', > > 'B':'-...', 'O':'---', '2':'..---', > > ',':'--..--', > > 'C':'-.-.', 'P':'.--.', '3':'...--', > > '?':'..--..', > > 'D':'-..', 'Q':'--.-', '4':'....-', > > '(':'-.--.', > > 'E':'.', 'R':'.-.', '5':'.....', > > '-':'-....-', > > 'F':'..-.', 'S':'...', '6':'-....', > > 'G':'--.', 'T':'-','7':'--...', > > 'H':'....', 'U':'..-', '8':'---..', > > 'I':'..', 'V':'...-', '9':'----.', > > 'J':'.---', 'W':'.--', '0':'-----', > > 'K':'-.-', 'X':'-..-', '/':'-..-.', > > 'L':'.-..', 'Y':'-.--', '+':'.-.-.', > > 'M':'--', 'Z':'--..', '=':'-...-'} > > > > def addWPM(self, m): > > self.wpm += m > > self.wpm = max(5, self.wpm) > > self.wpm = min(self.wpm, 60) > > self.fwpm += m > > self.fwpm = max(5, self.fwpm) > > self.fwpm = min(self.fwpm, 60) > > self.chWPM(self.wpm, self.fwpm) > > > > def chWPM(self, wpm, fwpm): > > """I took this from morse-2.1""" > > self.wpm = wpm > > self.fwpm = fwpm > > tick = 60 / float((wpm * 50)) > > if (fwpm <= wpm): > > ftick = 60 / float((wpm * 50)) > > else: > > ftick = 60 / float((fwpm * 50)) > > > > wtick = (50 * tick - 31 * ftick) / float(19) > > > > self.inter_char_time = wtick * 3 > > self.inter_word_time = wtick * 7 > > > > self.intra_char_time = ftick > > self.dot_time = ftick > > self.dash_time = ftick * 3 > > > > self.freq = 800 > > self.dahsound = (procedural.Sine(self.dash_time, self.freq)) > > self.ditsound = (procedural.Sine(self.dot_time, self.freq)) > > self.intrachar_silence = > > (procedural.Silence(self.intra_char_time)) > > self.interchar_silence = > > (procedural.Silence(self.inter_char_time)) > > self.interword_silence = > > (procedural.Silence(self.inter_word_time)) > > > > def lookup_ch(self, ch): > > res = self._code.get(ch.upper(), '') > > if not res: > > print "error no such char for %s" % ch > > return res > > > > def _add_to_sound(self, sound, dots_dashes): > > lst = list(dots_dashes) > > lst = 'x'.join(lst) > > print lst > > for dot_dash in lst: > > if dot_dash == '.': > > sound.add_sound(self.ditsound) > > if dot_dash == '-': > > sound.add_sound(self.dahsound) > > if dot_dash == 'x': > > sound.add_sound(self.intrachar_silence) > > > > def get_sound(self): > > res = ProceduralSoundSequence() > > words = self.msg.split(' ') > > for word in words: > > for ch in word: > > dots_dashes = self.lookup_ch(ch) > > self._add_to_sound(res, dots_dashes) > > return media.StaticSource(res) > > > > class ProceduralSoundSequence(procedural.ProceduralSource): > > def __init__(self, frequency=440, **kwargs): > > super(ProceduralSoundSequence, self).__init__(0, **kwargs) > > self.frequency = frequency > > self.data = "" > > self._duration = 0 > > > > def add_sound(self, sound): > > data = sound._generate_data(sound._max_offset - sound._offset, > > 0) > > if not isinstance(data, str): > > data = cast(data, POINTER(c_char)) > > [:len(data)*sizeof(c_short)] > > self.data += data # Sine returns a c_char array but Silence > > returns a string > > self._duration += sound._duration > > self._max_offset += sound._max_offset > > > > def _generate_data(self, bytes, offset): > > offset = offset - (offset % 2) > > res = self.data[offset:bytes+offset] > > return res > > > > def testcw(): > > # The OpenGL context is created only when you create a window. > > Any calls > > # to OpenGL before a window is created will fail. > > > > win = window.Window(visible=False) > > win.set_visible() > > > > # ... perform any OpenGL state initialisation here. > > glShadeModel(GL_SMOOTH) > > glClearColor(0, 0, 0, 0.5) > > glClearDepth(1.0) > > glEnable(GL_DEPTH_TEST) > > glDepthFunc(GL_LEQUAL) > > glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) > > > > glLoadIdentity() > > > > player = media.Player() > > > > player.eos_action = player.EOS_NEXT > > > > win.push_handlers(event.WindowEventLogger()) > > win.clear() > > > > #game = cw_game(win, player) > > > > sin = procedural.Sine(0.1) > > a = cw_sound('T').get_sound() > > b = cw_sound('T').get_sound() > > player.queue(sin) > > player.queue(a) > > player.queue(b) > > player.queue(sin) #<-- this one doesn't play > > player.queue(sin) > > while not win.has_exit: > > time_passed = clock.tick() > > player.play() > > win.flip() > > win.dispatch_events() > > player.dispatch_events() > > > > if __name__ == '__main__': > > testcw() > > >
It's helpful if you can provide a more minimal test case that still fails. Also let us know what platform you're on and which audio driver you're using (see documentation for pyglet.options['audio']). Alex. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en -~----------~----~----~----~------~----~------~--~---
