User Tools

Site Tools


journal:201312

This is an old revision of the document!


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
journal/201312.1388306584.txt.gz · Last modified: 2018/07/18 14:09 (external edit)