objective-Cを使用してMIDIファイル解析を行うにはどうすればよいですか?MIDIファイルの解析
JavaのMIDIファイルの解析には、javax.sound.midiというパッケージがあります。 Objective-cには何かありますか?あなたの誰もが返事を送信する場合
は大きな助けになるだろう。..事前に
感謝。
objective-Cを使用してMIDIファイル解析を行うにはどうすればよいですか?MIDIファイルの解析
JavaのMIDIファイルの解析には、javax.sound.midiというパッケージがあります。 Objective-cには何かありますか?あなたの誰もが返事を送信する場合
は大きな助けになるだろう。..事前に
感謝。
独自のローダーを使用する場合は、MIDIフォーマットを記述するサイトがたくさんあります。NSXMLParserでロードしやすいMusicXMLを検討してください。私はこのフォーマットについてはあまりよく分かりませんが、達成しようとしているのはまさに私が推薦できるものです。 CoreMidiは、私が知る限り、再生やファイルの解析ではなく、MIDIデバイスとの通信しか処理しません。また、あなたがやっていることと本当の挑戦になることを考えているなら、あなた自身のプレーヤーを書く必要があります。
幸運。
CoreMidiを使用してMIDIファイルを解析できます。
MusicSequence s;
NewMusicSequence(&s);
NSString *midiFilePath = [[NSBundle mainBundle]
pathForResource:path
ofType:@"mid"];
NSURL * midiFileURL = [NSURL fileURLWithPath:midiFilePath];
MusicSequenceFileLoad(s, (CFURLRef)midiFileURL, 0, 0);
は、その後のトラックを取得:
MusicTrack track = NULL;
UInt32 tracks;
MusicSequenceGetTrackCount(s, &tracks);
for (NSInteger i=0; i<tracks; i++) {
MusicSequenceGetIndTrack(s, i, &track);
// Create an interator
MusicEventIterator iterator = NULL;
NewMusicEventIterator(track, &iterator);
MusicTimeStamp timestamp = 0;
MusicEventType eventType = 0;
const void *eventData = NULL;
UInt32 eventDataSize = 0;
Boolean hasNext = YES;
// A variable to store note messages
MIDINoteMessage * midiNoteMessage;
// Iterate over events
while (hasNext) {
// See if there are any more events
MusicEventIteratorHasNextEvent(iterator, &hasNext);
// Copy the event data into the variables we prepaired earlier
MusicEventIteratorGetEventInfo(iterator, ×tamp, &eventType, &eventData, &eventDataSize);
// Process Midi Note messages
if(eventType==kMusicEventType_MIDINoteMessage) {
// Cast the midi event data as a midi note message
midiNoteMessage = (MIDINoteMessage*) eventData;
}
// Load the next event
MusicEventIteratorNextEvent(iterator);
}
}
ベン・スマイリーは今日私に約10時間を保存した一般的な考え方は、ファイルからMusicSequenceを得るということです。優れた答え。 – Charlesism