我正在尝试解析收到的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]));
}
}
}基本上当Logic Pro,或Ableton Live发送歌曲位置信号时,我收到的值像404,405等。
例如: 404= 026:02:01,其中026 =小节,02=节拍,01 -分段。这一部分对我来说很清楚。
但是如何买到门票呢?这就是问题所在,要么是我不理解的东西。或者应该是不同的midi信号。但是我看了看迷你显示器,我没有看到其他的东西。
发布于 2014-03-29 18:40:24
根据MIDI标准,1节拍=6个时钟。后者通过时序时钟消息(0xF8)发送。
https://stackoverflow.com/questions/12126255
复制相似问题