Hello all, I was writing code in a pyglet 1.0-1.1 mixed way, then when
I tried to play sounds I discovered that they loop eternally unless I
use the run() method. However every update I need to assign a value to
a variable I call time, and I can't do that with a standard app loop.
So I customize my app, but now it doesn't even draw anything, and
sounds still loop eternally! Help! What must I do?

Here is the code:


import psyco
psyco.full()
import pyglet
from pyglet import window
from pyglet.gl import *
from pyglet.window import mouse
from pyglet.window import key
import math
import pyglet.clock

WIDTH = 1024
HEIGHT = 768
VERSION = 'alpha 0.1'
win = window.Window(width=WIDTH,height=HEIGHT,visible=False)
win.set_caption('concert drummer '+VERSION)
dt = 0
kick = [key.Z,key.X]
snare = [key.S,key.D]
hihat = [key.E,key.R]
ride = [key._3,key._4]
crash = [key.T,key.Y]
keys =
{'kick':kick,'snare':snare,'hihat':hihat,'ride':ride,'crash':crash}
kicks = pyglet.media.load('kick.ogg', streaming=False)
sounds = {'kick':kicks}

time = 0
track = []
bpm = 0

quadratic=0


clock=pyglet.clock.Clock()
win.switch_to()
win.set_visible()

drumfile = open('test.ndm','r')
drumfile = drumfile.readlines()
bpm = int(drumfile[0])
drumfile = drumfile[1:len(drumfile)]
drumfile = drumfile[1:len(drumfile)]
for item in drumfile:
    toadd = []
    for char in item[0:-1]:
        if char == '1':
           toadd.append(1)
        else:
           toadd.append(0)
    track.append(toadd)


@win.event
def on_key_press(symbol, modifiers):
    global clock, keys,sounds
    if symbol in keys['kick']:
       sounds['kick'].play()

def vec(*args):
            return (GLfloat * len(args))(*args)

def init():
    global quadratic
    glShadeModel(GL_SMOOTH)
    glClearDepth(1.0)
    glEnable(GL_DEPTH_TEST)
    glDepthFunc(GL_LEQUAL)
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
    #glEnable(GL_LIGHTING)
    glEnable(GL_POLYGON_SMOOTH)
    quadratic = gluNewQuadric()
    gluQuadricNormals(quadratic, GLU_SMOOTH)
    gluQuadricTexture(quadratic, GL_TRUE)
init()
@win.event
def on_resize(width, height):
    if height==0:
        height=1
    glViewport(0, 0, width, height)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45, 1.0*width/height, 0.1, 2561.0)
    glMatrixMode(GL_MODELVIEW)
    glShadeModel(GL_SMOOTH)
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)

    glClearColor(0.5,0.5,0.5,1.0)
    glLoadIdentity()
    """glEnable(GL_LIGHTING)
    #glEnable(GL_LIGHT0)
    glEnable(GL_LIGHT1)
    glLightfv(GL_LIGHT0, GL_POSITION, vec(1, 1, 1, 0))
    glLightfv(GL_LIGHT0, GL_SPECULAR, vec(1, 1, 1, 1))
    glLightfv(GL_LIGHT0, GL_DIFFUSE, vec(1, 1, 1, 1))
    glLightfv(GL_LIGHT1, GL_AMBIENT, vec(1, 1, 1, 1))
    glLightfv(GL_LIGHT1, GL_DIFFUSE, vec(1, 1, 1, 1))
    glLightfv(GL_LIGHT1, GL_POSITION, vec(0, 0, 0, 1))
    glEnable (GL_DEPTH_TEST)
    #glEnable(GL_COLOR_MATERIAL)
    glColorMaterial ( GL_FRONT_AND_BACK, GL_DIFFUSE ) """
    #glColorMaterial ( GL_FRONT_AND_BACK, GL_AMBIENT )
    #glMateriali(GL_FRONT_AND_BACK, GL_SHININESS,vec(1,1,1,1))
    #glMateriali(GL_FRONT_AND_BACK, GL_SHININESS,vec(0,0,0,1))
    """glEnable(GL_FOG)
    glFogi(GL_FOG_MODE, GL_LINEAR)
    glFogfv(GL_FOG_COLOR, vec(.5, .5, .5, 1.))
    glFogf(GL_FOG_DENSITY, 2)
    glHint(GL_FOG_HINT, GL_NICEST)
    glFogf(GL_FOG_START, 10.0)
    glFogf(GL_FOG_END, 40.0) """

def draw():
    global win,quadratic,track,time,HEIGHT
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()


    glRotatef(30,1,0,0)
    glTranslatef(0,-10,-9)
    #glRotatef(120,1,0,0)

    step = time * bpm *16.0/ 60.0
    glTranslatef(-6,0,step)
    for i in range(len(track)):
        if i*4 >= step and i*4 <= 80 + step:
          glPushMatrix()
          glTranslatef(0,0,-i*4)
          for j in range(len(track[i])):
            glTranslatef(2,0,0)
            if track[i][j] == 1:
              glPushMatrix()
              glRotatef(90,1,0,0)
              glColor3f(1,1,1)
              gluDisk(quadratic,0,.6,32,32)
              if j == 0:
                 glColor3f(1,0,0)
              elif j == 1:
                 glColor3f(0,1,0)
              elif j == 2:
                 glColor3f(0,0,1)
              gluCylinder(quadratic,.6,.8,.5,32,32)
              glPopMatrix()
          glPopMatrix()

def update(dt):
    global win
    if not win.has_exit:
      win.dispatch_events()
      draw()
      win.flip()
def idle():
    global dt,clock,time
    dt = clock.tick()
    time += dt

event_loop = pyglet.app.EventLoop()
clock.schedule_interval(update, 1.0 / 30.0)
event_loop.idle = idle
event_loop.run()




#if __name__ == '__main__': pyglet.app.run()
--~--~---------~--~----~------------~-------~--~----~
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