gpt4 book ai didi

ios - 超高优先级后台工作或 QUARTZ 精度

转载 作者:行者123 更新时间:2023-11-29 12:58:28 26 4
gpt4 key购买 nike

我正在尝试为我的内心工作构建 iOS 应用程序。这个应用程序是简单的步进 midi 音序器。这个应用程序现在所做的就是向同一台 iPad 上的“网络 session ”发送简单的 MIDI 消息——这个 session 人们称之为“虚拟 Midi”,抱歉我不知道正确的名字是什么——但这无关紧要,这部分对我来说工作正常,后台应用程序(如 animoog、ThumbJam 等)可以很好地接收此消息...

唯一的主要问题 是我遇到了问题。 当我在 LOOP 中发送 midi 音符时(大约 1/8、1/16,无论如何)和当应用程序进入后台时(当我按下主页按钮时)我在其他应用程序中旅行,例如 Mail、Safari,或者在 animoog 中做某事,然后每次都是 lug/buggy/。,工作有延迟。例如,“Genome Midi Sequencer”——我在旅行时不会拖拖拉拉并在 Mail、Safari 或其他应用程序中做某事——换句话说,即使任何当前应用程序占用了 CPU 中的所有资源——Genome Midi 测序仪仍在发送 MIDI 信息,没有任何延迟。为什么?

我如何构建相同的超高优先级 NSThread?,即使我打开其他应用程序并且它正在加载 CPU,它也能毫无延迟地工作?我注意到当“Genome”应用程序发送 midi 并且我正在滚动或触摸收件箱字母时,然后 Mail 应用程序拖着 - 这是正确的,因为 iOS 给予 Genome 最高优先级。 我也想要。

这是我发送 MIDI 消息的方式:

我在循环中发送 Midi 音符。所以它听起来像 Dm,Dm,Dm,Dm..... 每个 1/8。重要的是,他们之间没有时间间隔/延迟。 但它会延迟一些时间。

  1. 主要的高优先级 NSThread

    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(midiTimerTickTick) object:nil];
    [thread setThreadPriority:1];
    [thread start];
    [thread release];
  2. 创建线程的方法

    -(void) midiTimerTickTick{
    uint64_t nextTime = mach_absolute_time();
    uint64_t timerInterval = 1000*1000*8;
    while (true){
    if(mach_absolute_time() >= nextTime)
    {
    //do work
    [self sendMidiMessage]; //Here piano playing

    //++
    nextTime+=timerInterval;
    }
    }
    }
  3. 在 AppDelegate.m 文件中

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
    [application endBackgroundTask:bgTask]; //Tell the system that we are done with the tasks
    bgTask = UIBackgroundTaskInvalid; //Set the task to be invalid
    //System will be shutting down the app at any point in time now
    }];
    }

最佳答案

首先,我会检查 A Tasty Pixel Michael Tyson 的博客,了解一些基本的计时信息。您当前的方法效率非常低,并且会无缘无故地使用许多 cpu 周期。本质上,CPU 不断地在高优先级线程上进行比较,这不是一个好主意。

解决问题的最佳方法是深入研究 Core Audio。如果您的应用程序在前台或后台运行,这将允许您实时安排示例,但是,这确实需要一些时间来学习。快速开始你想做的事情的一个好方法是运行 Amazing Audio Engine它也是由 Michael 构建的,但对快速启动和运行核心音频有很好的支持。

关于ios - 超高优先级后台工作或 QUARTZ 精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com