====== 12월 29일 ====== flock from nodebox.graphics import * from nodebox.graphics.physics import Flock flock = Flock(20, 0, 0, 500, 500) flock.sight = 500 def draw(canvas): background(1) fill(0, 0.75) flock.update(cohesion=0.15) for boid in flock: push() translate(boid.x, boid.y) scale(0.5 + 1.5 * boid.depth) rotate(boid.heading) arrow(0, 0, 15) star(0,0, 10,50,20) pop() canvas.fps=30 canvas.size = 600, 400 canvas.run(draw) music21, rtmidi import time import rtmidi import random midiout = rtmidi.MidiOut() available_ports = midiout.get_ports() print available_ports if available_ports: midiout.open_port(2) print midiout from music21 import * #url = 'http://static.musescore.com/151650/85600d58ae/score.mxl' #b = converter.parse(url) b = corpus.parse('mozart/k155') for x in midi.translate.streamHierarchyToMidiTracks(b.flat): for m in x.events: if m.isNoteOn(): #print m midiout.send_message([0x90, int(m.pitch), int(m.velocity)]) if m.isNoteOff(): #print m midiout.send_message([0x80, int(m.pitch) , int(m.velocity)]) if m.isDeltaTime(): #print m midiout.send_message([0x80, 0 , 0]) if m.time: time.sleep(m.time/1000.0) try: b.show('musicxml',app='C:\\Program Files (x86)\\MuseScore\\bin\\mscore.exe') except RuntimeError: print "Yuk!" del midiout