現在進行中、おーぷんMIDIぷろじぇくと、 MIDIData の Python ラッパー作成3
くずさんのおーぷんMIDIプロジェクト 、 MIDIDataライブラリの Python ラッパー作成中。現在、 __del__ メソッドでのメモリの自動開放を行えるようにしようとしているが、うまく動作せず。多重開放してしまう。上位のオブジェクトを Delete すると、下位のトラック、イベントのメモリも開放されてしまうため。もう少し考える必要あり。
MIDIData のラッパーの前に MIDIIO, MIDIClock のラッパーのほうが先に完成してしまいそうな予感。これらのほうが MIDIData よりもラッパー作るにあたっての作業量、課題が圧倒的に少ない。各種メソッド、プロパティを作る単純作業を数十分おこなったが、これだけで形になってきた。現時点の MIDIClock ラッパーを使うコードはこんな感じ。
# coding: utf-8 import sys from midiclock.midiclock import * def test_master(): millisec = 0 tick_count = 0 # MIDI クロックの生成 midi_clock = MIDIClock.create(u'MASTERTPQNBASE', 120, 60000000/100) midi_clock.reset() midi_clock.start() while millisec < 100: millisec = midi_clock.millisec tick_count = midi_clock.tick_count print u'%6d[ミリ秒]、%6d[tick]' % (millisec, tick_count) midi_clock.stop() def test_slave(): millisec = 0 tick_count = 0 # MIDI クロックの生成 midi_clock = MIDIClock.create( u'SLAVEMIDITIMINGCLOCK', 120, 60000000/100) midi_clock.reset() midi_clock.start() while tick_count < 60: if sys.stdin.read(1) == '\n': midi_clock.put_message('\xf8') millisec = midi_clock.millisec tick_count = midi_clock.tick_count print u'%6d[ミリ秒]、%6d[tick]' % (millisec, tick_count) midi_clock.stop() def main(): test_master() test_slave() if __name__ == '__main__': main()