この PGMidi のサンプル コードを RubyMotionに変換するにはどうすればよいでしょうか? MIDIPacketList のドキュメントには特別な警告が記載されていますが、RubyMotion でそれらを説明する方法がわかりません。例:
リスト内のパケットは、配列として定義されていますが、可変長であるため、配列としてアクセスできないことに注意してください。
これが例であり、翻訳で得た限りでは、さらに下にあります。
- (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList
{
[self performSelectorOnMainThread:@selector(addString:)
withObject:@"MIDI received:"
waitUntilDone:NO];
const MIDIPacket *packet = &packetList->packet[0];
for (int i = 0; i < packetList->numPackets; ++i)
{
[self performSelectorOnMainThread:@selector(addString:)
withObject:StringFromPacket(packet)
waitUntilDone:NO];
packet = MIDIPacketNext(packet);
}
}
「packet」ローカル変数と「packetList」を参照/逆参照するポインターを失っていることはわかっていますが、それを修正する方法を理解するのに苦労しています:
def midiSource(midi, midiReceived:packetList)
self.performSelectorOnMainThread('addString',
withObject:'MIDI received:',
waitUntilDone:false)
packet = packetList.packet[0]
i = 0
while i < packetList.numPackets
i += 1
self.performSelectorOnMainThread('addString',
withObject:stringFromPacket(packet),
waitUntilDone:false)
packet = MIDIPacketNext(packet)
end
end
ご指導ありがとうございます。