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