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
-~----------~----~----~----~------~----~------~--~---

Reply via email to