In [1]:
import midi
import random
from mididim.pitch import pitch2n
In [2]:
filename = "/Users/szabel/repo/mma/PlectrumExample.mid"
pattern = midi.read_midifile(filename)
In [3]:
pattern
Out[3]:
midi.Pattern(format=1, resolution=192, tracks=\
[midi.Track(\
[midi.TrackNameEvent(tick=0, text='PlectrumExample', data=[80, 108, 101, 99, 116, 114, 117, 109, 69, 120, 97, 109, 112, 108, 101]),
midi.TextMetaEvent(tick=0, text='Created by MMA. Input filename: PlectrumExample.mma', data=[67, 114, 101, 97, 116, 101, 100, 32, 98, 121, 32, 77, 77, 65, 46, 32, 73, 110, 112, 117, 116, 32, 102, 105, 108, 101, 110, 97, 109, 101, 58, 32, 80, 108, 101, 99, 116, 114, 117, 109, 69, 120, 97, 109, 112, 108, 101, 46, 109, 109, 97]),
midi.TimeSignatureEvent(tick=0, data=[4, 2, 48, 8]),
midi.SetTempoEvent(tick=0, data=[7, 161, 32]),
midi.EndOfTrackEvent(tick=0, data=[])]),
midi.Track(\
[midi.TrackNameEvent(tick=0, text='Plectrum-Singlestrum', data=[80, 108, 101, 99, 116, 114, 117, 109, 45, 83, 105, 110, 103, 108, 101, 115, 116, 114, 117, 109]),
midi.NoteOnEvent(tick=0, channel=14, data=[80, 90]),
midi.NoteOnEvent(tick=1, channel=14, data=[80, 0]),
midi.ProgramChangeEvent(tick=21503, channel=14, data=[24]),
midi.NoteOnEvent(tick=0, channel=14, data=[43, 80]),
midi.NoteOnEvent(tick=30, channel=14, data=[47, 70]),
midi.NoteOnEvent(tick=30, channel=14, data=[50, 60]),
midi.NoteOnEvent(tick=30, channel=14, data=[55, 40]),
midi.NoteOnEvent(tick=30, channel=14, data=[59, 30]),
midi.NoteOnEvent(tick=264, channel=14, data=[43, 0]),
midi.NoteOnEvent(tick=0, channel=14, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=14, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=14, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=14, data=[59, 0]),
midi.ControlChangeEvent(tick=384, channel=14, data=[123, 0]),
midi.EndOfTrackEvent(tick=0, data=[])]),
midi.Track(\
[midi.TrackNameEvent(tick=0, text='Plectrum-Fingerpicking', data=[80, 108, 101, 99, 116, 114, 117, 109, 45, 70, 105, 110, 103, 101, 114, 112, 105, 99, 107, 105, 110, 103]),
midi.ProgramChangeEvent(tick=0, channel=15, data=[24]),
midi.NoteOnEvent(tick=0, channel=15, data=[47, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[80, 90]),
midi.NoteOnEvent(tick=1, channel=15, data=[80, 0]),
midi.NoteOnEvent(tick=95, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[47, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[45, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[45, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[48, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[48, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[54, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[54, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[47, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[47, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[45, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[45, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[48, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[48, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 100]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[76, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[76, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[47, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[47, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[45, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[45, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[50, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[57, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[48, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[48, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[52, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[54, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[54, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[59, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[71, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[54, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[54, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[62, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 60]),
midi.NoteOnEvent(tick=0, channel=15, data=[66, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[69, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[74, 0]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 90]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 40]),
midi.NoteOnEvent(tick=96, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 40]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 80]),
midi.NoteOnEvent(tick=96, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 80]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 60]),
midi.NoteOnEvent(tick=96, channel=15, data=[55, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[60, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[64, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[67, 0]),
midi.NoteOnEvent(tick=0, channel=15, data=[72, 0]),
midi.ControlChangeEvent(tick=768, channel=15, data=[123, 0]),
midi.EndOfTrackEvent(tick=0, data=[])])])
In [9]:
test_pattern = midi.Pattern(format=1, resolution=1000, tracks=[])
In [10]:
track0 = [
midi.TrackNameEvent(tick=0, text='TestExampleFile'),
midi.TimeSignatureEvent(tick=0, data=[3, 2, 24, 8]),
midi.SetTempoEvent(tick=0, data=[7, 161, 32]),
midi.EndOfTrackEvent(),
]
test_pattern.append(track0)
In [11]:
track1 = [
midi.TrackNameEvent(tick=0, text='Easy Bass Line'),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_2n),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_2n),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_1n),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_1n),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_0),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_0),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_1),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_1),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_2),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_2),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_3),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_3),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_4),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_4),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_5),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_5),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_6),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_6),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_7),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_7),
midi.NoteOnEvent(tick=0, velocity=20, pitch=pitch2n.C_8),
midi.NoteOffEvent(tick=1000, pitch=pitch2n.C_8),
midi.EndOfTrackEvent(),
]
test_pattern.append(track1)
In [12]:
midi.write_midifile("easy_bass1.mid", test_pattern)
In [18]:
for evt in track1:
if type(evt) is midi.NoteOnEvent:
evt.velocity = random.randint(10, 127)
print evt
test_pattern[1] = track1
midi.NoteOnEvent(tick=0, channel=0, data=[43, 87])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 16])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 11])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 14])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 115])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 19])
midi.NoteOnEvent(tick=0, channel=0, data=[43, 54])
In [60]:
pattern = midi.read_midifile('./exported34.mid')
In [61]:
pattern
Out[61]:
midi.Pattern(format=1, resolution=480, tracks=\
[midi.Track(\
[midi.TrackNameEvent(tick=0, text='easy_bass1', data=[101, 97, 115, 121, 95, 98, 97, 115, 115, 49]),
midi.NoteOnEvent(tick=0, channel=0, data=[43, 20]),
midi.NoteOffEvent(tick=480, channel=0, data=[43, 20]),
midi.NoteOnEvent(tick=0, channel=0, data=[43, 20]),
midi.NoteOffEvent(tick=480, channel=0, data=[43, 20]),
midi.NoteOnEvent(tick=0, channel=0, data=[43, 20]),
midi.NoteOffEvent(tick=480, channel=0, data=[43, 20]),
midi.EndOfTrackEvent(tick=0, data=[])])])
In [65]:
480 /2.0 /2.0 /2.0/ 2.0/ 2.0
Out[65]:
15.0
In [78]:
midi.C_0
Out[78]:
0
In [ ]:
Content source: sjzabel/mididim
Similar notebooks: