小编Rob*_*ris的帖子

使用CoreMIDI在Mac上发送稳定的Midi时钟

我正在开发一个小程序,用于将抖动的MIDI时钟“转换”为稳定的拍子。抖动的MIDI时钟会产生可怕的颤音。

这个想法是“监听”传入的Midi时钟,并在确定速度后将稳定的MIDI时钟发送到虚拟IAC设备,以便我可以将DAW​​(NI机器)同步到同一IAC设备。传入的MIDI来自Korg Electribe,所以我被固定在MIDI电缆上。我正在使用Komplete Audio 6接收MIDI时钟。

第一部分(侦听并确定速度)已经介绍,但是现在我必须为该速度生成稳定的时钟。

我试图使用高优先级的线程发送midi时钟。下面的测试例程使我在119.8和120.2之间有速度抖动。

我在此例行程序中做错了什么还是应该使用注释策略?任何帮助都非常感谢。

问候,罗布

dispatch_source_t CreateDispatchTimer(uint64_t interval,
                                  uint64_t leeway,
                                  dispatch_queue_t queue,
                                  dispatch_block_t block)
{
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                                                     0, 0, queue);
    if (timer)
    {
        dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, interval, leeway);
        dispatch_source_set_event_handler(timer, block);
        dispatch_resume(timer);
    }
    return timer;
}

- (void) testTimer{

    IAC = MIDIGetDestination(0); // 0 is the MAC IAC device on my system
    MIDIPacket       pkt;
    MIDIPacketList   l;
    pkt.timeStamp = 0;
    pkt.length = 1;
    pkt.data[0] = 0xF8;

    l.numPackets = 1;
    l.packet[0] = pkt;

    dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); …
Run Code Online (Sandbox Code Playgroud)

macos midi-interface coremidi

5
推荐指数
0
解决办法
891
查看次数

标签 统计

coremidi ×1

macos ×1

midi-interface ×1