はじめに
大学のイベントでmidiを使ってピアノを動かすことになりました。色々調べた結果、Yamaha USB-MIDI Driverを使おうと思ったのですがlimux用がなく困ったときのメモです。
現象
Yamaha USB-MIDI Driverのインストールガイドがあるのですが…
いやいやいやいや、linuxは?
となりました。まあしょうがないといえばしょうがないのですが…
解決方法
実はドライバを入れる必要がないんです。 もともとmidi用のドライバ?がはいっているらしくて
import mido
import time
ports = mido.get_output_names()
with mido.open_output(ports[0]) as outport:
for msg in mido.MidiFile('new_song.mid'):
time.sleep(msg.time)
if not msg.is_meta:
print(outport, msg)
outport.send(msg)
例えばこのようなコードを書いて音がならない!というときはports[0]のところが間違っています。
以下のコマンドを打ってみてください
aplaymidi -l
これは今現在pcが認識しているmidiになります。自分の環境ではこのような出力になりました。
この状態でport[0]とするとMidi Throughが 使われます。自分の場合はPiaggeroというYamahaのmidiキーボードで出力したかったのでport[1]とすれば音が出力されました。
もちろんoutportはただの文字列なので手で指定することもできます。
with mido.open_output("Piaggero:Piaggero MIDI 1 20:0") as outport:
おわりに
最初はlinuxだとmidiできないと思って超焦ってしまった…
コメント