Hi benjamin here is the fusion of our codes:
from pyglet.gl import *
from math import *


class sector(object):
    def __init__(self, radius, inner_radius, angle, angle_in, points):
        self.radius = radius
        self.inner_radius = inner_radius
        self.angle = angle
        self.angle_in = angle_in
        self.points = points
        self.vertex = []
        self.color = []
        self.indices = []
        for i in range(points):
            angle = self.angle * (i / (points - 1)) + angle_in
            x = cos(angle) * radius
            y = sin(angle) * radius
            z = 0
            self.vertex.extend([x,y,z])
            self.color.extend([255, 8, 45])
        for i in range(points):
            angle = self.angle - self.angle * (i/(points-1)) + angle_in
            x = cos(angle) * inner_radius
            y = sin(angle) * inner_radius
            z = 0
            self.vertex.extend([x,y,z])
            self.color.extend([255,120,12])
        for i in range(points - 1):
            n = 2 * points - 1
            self.indices.extend([i, i + 1 , n - i])
            self.indices.extend([n - i, n - 1 - i, i + 1])
    def render(self):
        self.vertices = pyglet.graphics.draw_indexed(2 * self.points, 
GL_TRIANGLES, self.indices, ('v3f', self.vertex),('c3B',self.color))
    def played(self):
        self.color = []
        for i in range(2 * self.points):
            self.color.extend([0,0,255])
        self.vertices = pyglet.graphics.draw_indexed(2 * self.points, 
GL_TRIANGLES, self.indices, ('v3f', self.vertex),('c3B',self.color))

class ring(object):
    def __init__(self):
        self.notes = {
        'c' : None,
        'c#': None,
        'd' : None,
        'd#': None,
        'e' : None,
        'f' : None,
        'f#': None,
        'g' : None,
        'g#': None,
        'a' : None,
        'a#': None,
        'b' : None
        }
        i = 0
        for note in self.notes:
            self.notes[note] = sector(0.7, 0.6, pi / 6.4, 2 * i * pi / 12, 
360)
            i += 1
    def render(self):
        for note in self.notes:
            self.notes[note].render()

class myWindow(pyglet.window.Window):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_minimum_size(300, 300)
        glClearColor(0.2, 0.2, 0.21, 1)
        self.ring = ring()
        self.draw_list = []
        self.sectors = [sector(0.7, 0.6, pi / 6.4, 2 * n * pi / 12, 360) for 
n in range(12)]
    def on_draw(self):
        self.clear()
        self.ring.render()

        for sector in self.draw_list:
            sector.played()

    def on_resize(self, width, height):
        glViewport(0, 0, width, height)

    def on_key_press(self, key, modifier):
        #default behavior
        if key == pyglet.window.key.ESCAPE:
            pyglet.app.exit()
        # Mapping key presses
        if key == pyglet.window.key.Q:
            self.draw_list.append(self.sectors[0])
        elif key == pyglet.window.key.W:
            self.draw_list.append(self.sectors[1])
        elif key == pyglet.window.key.E:
            self.draw_list.append(self.sectors[2])
        elif key == pyglet.window.key.R:
            self.draw_list.append(self.sectors[3])
        elif key == pyglet.window.key.T:
            self.draw_list.append(self.sectors[4])
        elif key == pyglet.window.key.Z:
            self.draw_list.append(self.sectors[5])
        elif key == pyglet.window.key.U:
            self.draw_list.append(self.sectors[6])
        elif key == pyglet.window.key.I:
            self.draw_list.append(self.sectors[7])
        elif key == pyglet.window.key.O:
            self.draw_list.append(self.sectors[8])

    def on_key_release(self, key, modifier):
        self.draw_list.clear()




if __name__ == "__main__":
    windows = myWindow(800, 800, "midi_visualizer", resizable=True)
    pyglet.app.run()


-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to