私の python プログラムは、C ライブラリから MIDI データを受け取ります。時々、データは次のようになります。
[[[[240,0,1,116]]],[[[3,100,8,1]]],[[[107,247,0,0]]]]
また、次のようなタイムスタンプが含まれることもあります。
[[[[240,0,1,116],26738]],[[[3,100,8,1],26738]],[[[107,247,0,0],26738]]]
タイムスタンプ値が破棄されたバイト配列のデータが必要です。これを行うために私が書いたコードは次のとおりです。
def convertMidiSysex(data):
while isinstance(data[0][0], list):
out = []
for index, value in enumerate(data):
out = out+value
data = out
out = array.array('B')
for i in range(len(data)):
if isinstance(data[i], list):
for j in range(len(data[i])):
out.append(data[i][j])
if out[-1] == 247: # 0xF7 is marker to end sysex message
return out
私はこれを難しい方法でやっていると感じずにはいられません。これに対するより良いアプローチはありますか?