2012-08-25 45 views
1

我試圖分析收到的MIDI值,並顯示在下面的格式:CoreMidi解析MIDI樂曲位置

條:節拍:師:蜱

我有以下代碼:

unsigned short CombineBytes(unsigned char First, unsigned char Second) 
{ 
    unsigned short _14bit; 

    _14bit = (unsigned short)Second; 
    _14bit<<=7; 
    _14bit|=(unsigned short)First; 
    return(_14bit); 
} 

-(void) midiSource:(PGMidiSource *)input midiReceived:(const MIDIPacketList *)packetList{ 

    const MIDIPacket *packet = &packetList->packet[0]; 
    for (int i = 0; i < packetList->numPackets; ++i) 
    { 

     Byte statusByte = packet->data[0]; 
     Byte status = statusByte >= 0xf0 ? statusByte : statusByte >> 4 << 4; 

     if (status == 0xF2){ 

      NSLog(@"%i", CombineBytes(packet->data[1], packet->data[2])); 
     } 
    } 
} 

基本上當邏輯Pro或Ableton現場發送樂曲位置信號,我收到值像404,405等...

例如:404 = 026:02:01 凡02 6 =酒吧,02 =節拍,01 - 分區。這部分對我來說很清楚...

但是如何獲得門票?這是問題,這可能是我不明白的。或者爲此應該是不同的midi信號。但是我看着Midi Monitor,我沒有看到其他東西。

回答

0

根據MIDI標準1拍= 6個時鐘。後者通過定時時鐘消息(0xF8)發送。