AudioKit AKPlayer 无法回环到 setPosition 开头

2023-12-24

在 v4 中,如果您使用AKPlayer循环并使用setPositionAPI,玩家在设置的位置之间循环setPosition以及玩家的总持续时间。我需要的是从设置的位置开始setPositionAPI 并在循环发生时循环到开头。我不确定这是否是有意的,但我需要能够找到播放器中的某个点并循环到开头,目前看来这不是 AudioKit 中的功能。 有没有办法或解决方法来实现这一目标?我需要按照要求完成此任务。 此处重现的是一个完整的游乐场示例:

import AudioKitPlaygrounds
import AudioKit

let file = try AKAudioFile(readFileName: "3.aac")

//: Set up a player to the loop the file's playback
var player = AKPlayer(audioFile: file)
player.isLooping = true
player.buffering = .always

AKManager.output = player
try AKManager.start()


player.setPosition(player.duration - 2)
player.play(at: AVAudioTime.now())
// player loops between player.duration - 2, player.duration  forever. I want it to loop between 0, player.duration

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

预期行为 我预计它会回到开头。

Details:

  • AudioKit 版本 4.11.2

如果您打算开发某种循环应用程序,我认为方法是使用音序器来协调音频文件的播放。在声音应开始播放的每个位置,您都可以向序列中添加一个事件。

定序器可以连接到回调工具,回调工具是将事件传递给用户定义函数的节点。在回调函数中,您将开始播放该事件指示的音频文件。

这是应该做什么的概述:

  1. 创建一个轨道来包含播放事件,使用AK序列器 https://audiokit.io/docs/Classes/AKSequencer.html's addTrack https://audiokit.io/docs/Classes/AKSequencer.html#/s:8AudioKit11AKSequencerC8addTrack3forAA0cE0CAA6AKNodeC_tF方法。将此轨道连接到AK回调工具 https://audiokit.io/docs/Classes/AKCallbackInstrument.html。请参见这个答案 https://stackoverflow.com/a/61545391/2679386了解如何将 AKCallbackInstrument 连接到 AKSequencer 轨道。设置音序器和轨道的length到歌曲的总持续时间(注意这些属性以节拍而不是秒表示)。设置定序器的loopEnabled如预期的。
  2. 将播放事件添加到轨道中您希望每个声音播放的时间位置。由于您将使用回调函数自己解释事件,因此您使用什么类型的事件并不重要。你可以简单地使用Note On.
  3. 在回调函数中,收到该事件时开始播放相应的声音。

您需要几个类来表示有关每个样本在歌曲中出现位置的一些基本信息:

class Beat {
    var sample: Sample!
    var onsetTime: Double

    var endTime {
        get {
            return onsetTime + sample.duration
        }
    }
}

class Sample {
    var url: URL!
    var duration: Double
}

class ViewController: UIViewController {
    var samples: [Sample] = []
    var beats: [Beat] = []

    var player: AKPlayer!
    var sequencer: AKSequencer!
}

在音符的音高上,您可以存储要播放的样本的索引。这就是你的回调函数的样子:

func playCallback(status:UInt8, note:MIDINoteNumber, vel:MIDIVelocity) -> () {
    guard let status = AKMIDIStatus(byte: status),
        let type = status.type,
        type == .noteOn else { return }
    DispatchQueue.main.async {
        player.load(samples[note].url)
        player.play()
    }
}

您可以使用AKSequencer’s seek方法在某个任意位置开始播放歌曲。

有一种特殊情况,音序器在节拍中间开始播放。在这种情况下,您必须手动开始播放该样本。

func play(at time: Double = 0) {
    sequencer.seek(time)
    sequencer.play()
    for beat in beats {
        if beat.onsetTime < time && time < beat.endTime {
            player.load(beat.sample.url)
            player.play(from: time - beat.onsetTime)
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AudioKit AKPlayer 无法回环到 setPosition 开头 的相关文章

  • 如何阻止 Xamarin 在启用位码的情况下构建我的应用程序?

    在我的 iOS 版本的配置中 没有禁用位码的选项 在 Xcode 中可以设置 ENABLE BITCODE NO 我需要这个 因为我的链接框架不是用位码构建的 而且现在苹果不再允许半位码编译的应用程序 In your csproj对于您的
  • 如何在当前视图上方创建半透明视图层?

    您可能以前见过这种情况 它在 ScoutMob 等消费时尚应用程序中变得非常流行 我正在尝试在启动时实现 60 的透明视图 该视图将覆盖我的主屏幕 解释如何使用主屏幕的功能并在点击时消失 我已经完成了整个应用程序 它从几年前就开始使用 xi
  • MVVM 在 iOS 中的使用

    我是一名 iOS 开发人员 我对我的项目中存在大量视图控制器感到内疚 因此我一直在寻找更好的方法来构建我的项目 并遇到了 MVVM 模型 视图 视图模型 架构 我读了很多关于 iOS 的 MVVM 文章 但有几个问题 我将用一个例子来解释我
  • 在 Xcode 中查看 TestFlight 崩溃日志

    我已将我的应用程序发送给 TestFlight 的一些外部测试人员 仅当您从 testFlight 安装应用程序时才会出现问题 如果我从 Xcode 安装它 一切都很好 因此 我必须从 iPhone 中删除我的应用程序 并将自己添加为外部测
  • 如何在 iOS 上反转使用 CoreGraphics 渲染的 pdf 上的文本颜色?

    我正在使用开源 PDF 查看库 VFR PDF Readerhttps github com vfr Reader https github com vfr Reader 我正在尝试实现 夜间模式 或黑色背景与白色文本 我可以将背景设置为我
  • 无法将项目添加到 UIView xib 内的 UICollectionView

    客观的 我想将我的 BusinessViewTableHeader UIView 作为 tableView 标题 tableView tableHeaderView BusinessViewTableHeader instanceFromN
  • iOS:访问时直接设置块属性会崩溃

    考虑以下代码 interface ClassA NSObject property nonatomic copy void blockCopy end implementation ClassA synthesize blockCopy v
  • 更改 UIView 的变换不会影响约束

    在 iOS 11 中 更改 UIView 的变换属性 例如缩放 不会影响绑定到该视图的约束 在 iOS 10 中一切都按预期工作 我有代码 import UIKit class TestViewController UIViewContro
  • 自定义结构:类型不符合“可解码”协议

    我希望能够保存一个Custom struct to UserDefaults但为此我需要它Codable 我尝试过这样的 struct Wishlist Codable var name String var image UIImage v
  • 智能排序 Localized.strings 文件

    In my Localizable Strings我尝试按字母顺序排列所有对 是否可以按字母顺序重新排序我的Localizable strings 也许使用 genstring 或特殊的 bash 脚本 在这里我还有额外的要求需要完成 1
  • NSAttributedString - 获取字体属性

    我需要获取有关我的属性字符串的信息 但不知道如何获取 我得到这本词典 2013 11 04 18 06 10 628 App 1895 60b NSColor UIDeviceWhiteColorSpace 0 3 1 NSFont
  • 使用“dispatch_async(dispatch_get_main_queue(),^{block})”更新UI

    我想更新 NSURLSession 的完成块中的 UI 最初的实现并没有立即更新 UI 大约 20 秒后它更新了 UI 这是最初的实现 NSURLSessionDataTask task self session dataTaskWithR
  • 收到 fcm 推送通知时设置应用程序徽章

    我正在使用 FCM 进行云消息传递 当我在后台和前台应用程序状态下收到来自服务器的推送通知时 我想添加应用程序徽章 我缺少什么 主要问题是根据推送通知添加 更新 删除应用程序徽章 我可以接收和处理推送消息 我在这个问题上花了 3 天 请帮帮
  • 尝试将存档提交到 App Store 时出现各种 ITMS 错误

    所以这是一个奇怪的问题 当我尝试将我的存档提交到 App Store 时 出现以下错误 ERROR ITMS 90049 This bundle is invalid The bundle identifier contains disal
  • 关闭模态视图控制器时如何保持呈现视图控制器的方向?

    我正在开发这个应用程序 我需要所有视图控制器 但只有一个是纵向的 单一视图控制器很特别 我需要它能够旋转到手机所在的任何方向 为此 我以模态方式呈现它 未嵌入导航控制器中 所以 例如 我的结构是这样的 window Portrait roo
  • PreferredStatusBarStyle 不起作用[重复]

    这个问题在这里已经有答案了 我以前用过setStatusBarStyle在我的项目中 它工作正常 但它已被弃用 所以我使用preferredStatusBarStyle 那不起作用 知道我已经 调用方法setNeedsStatusBarAp
  • Cordova - 已弃用尝试访问非导航器对象上的属性“userAgent”

    我正在尝试让我的 Cordova iPhone 应用程序在 iOS 8 1 中运行 在 7 中工作正常 从 8 开始出现以下错误 Deprecated attempt to access property userAgent on a no
  • Spotify:使用网络 API 登录不接受重定向 URL

    我正在尝试使用 Web API 登录 Spotify 因为我不需要会话对象 在我的授权方法中 我需要传入重定向 url 但 GET 请求中不接受 iOS 重定向 url 的格式化方式 func authorize create the ur
  • 将 Cordova console.log 写入文件

    有谁知道是否有可能console log写入文件或类似的东西 我已经记录了我的应用程序 但它仅写在控制台上 出于远程目的debugging我也需要将现有日志写入文件 我想创建一个文件并将日志写入该文件中 但这将使我复制现有的日志代码 因此
  • 为什么NWPathMonitor状态总是满足?

    当没有连接时 我从 URL 会话中收到一条错误消息 指出请求超时 我正在使用网络协议来事先检查连接情况 但显然当我在内部调用它时这不起作用viewDidLoad static func startUpdateProcess let moni

随机推荐

  • 保持geom_rect半透明区域,但彩色轮廓

    我正在尝试使用 R 中的plotly 创建一个带有矩形的交互式绘图 我的主要想法正在发挥作用 然而 我所坚持的是允许每个矩形都有一个彩色轮廓 如数据的 填充 列中所描绘的 但是是一个完全透明的区域 以下是正在运行的 MWE library
  • 收款人不接受以该货币付款

    我正在尝试执行链式付款 其中主要收款人采用英镑 GBP 货币 我是交易的第二接收者 我的帐户设置为美元 但不阻止任何货币 如您所见 以下是确切的错误消息 接收方 不接受此货币的付款 请帮助我理解为什么会失败 我的帐户需要进行其他设置吗 我必
  • 如何找到 CUDA 的 epsilon、min 和 max 常量?

    我正在寻找 CUDA 设备的 epsilon 两个数字之间的最小步长 min 最小量值 和 max 最大量值 的值 即 FLT EPSILON DBL EPSILON FLT MIN DBL MIN 和 FLT MAX DBL MAX 中定
  • GOlang Scanf 错误

    当使用 Scanf 两次时 第一次它会获取用户输入 但第二次它不会并从函数中返回 这只是在 Windows 上运行时才会出现的问题 当我在 Mac 上运行它时 它会按预期工作 首先询问用户的用户名 然后询问他们的密码 下面是问题中的代码 我
  • Swift 可选的 inout 参数和 nil

    是否有可能有一个Optional inoutSwift 中函数的参数 我正在尝试这样做 func testFunc inout optionalParam MyClass if optionalParam 但是当我尝试调用它并通过时nil
  • swi prolog 中的优化

    假设我想找到 argmax x y z 1 2 20x 2 32xy 16y 2 2x 2y 受 x gt 0 y gt 0 z gt 0 且 x y z 0 我知道偏导数设置为 0 是 20x 16y 2 0 和 16x 16y 2 0
  • onCreate 方法内的屏幕截图在 android 中不起作用

    我正在一个 Android 应用程序中工作 我想在重写的方法 onCreate 中捕获当前活动的屏幕 当我在重写的方法 onCreate 中编写用于捕获屏幕的代码时 位图返回 null 但是 当我在同一活动中单击按钮中调用相同的代码时 位图
  • 在Container中挂载目录并与Host共享

    我以为我理解了文档 但也许我没有 我的印象是 v HOST PATH CONTAINER PATH标志是双向的 如果容器中有文件或目录 它们将被镜像到主机上 这使我们即使在删除 docker 容器后也能保留目录和文件 在官方 MySQL d
  • statsmodels wls_prediction_std 的数学背景

    wls prediction std 返回拟合模型数据的标准差和置信区间 我需要知道如何从协方差矩阵计算置信区间 我已经尝试通过查看源代码来解决这个问题 但没能做到 我希望你们中的一些人可以通过写出 wls prediction std 背
  • Android 在 addTextChangedListener (edittext) 中的某些条件下禁用肯定按钮

    这是我的对话框代码 如果编辑文本中的文本大小大于 5 我想禁用肯定按钮 如果大小 private void myDialog String title AlertDialog Builder builder new AlertDialog
  • 归档日志文件时内存不足错误

    我在运行控制台作业时遇到问题 该作业运行并创建我在午夜存档的每日日志文件 这将创建一个第二天的空白日志文件和一个存档文件 其中名称中包含昨天的日期以及旧文件的内容 用于调试我可能遇到但直到第二天才知道的问题 然而 自从我启动 BOT 的工作
  • 更改默认的 Ruby 参数

    我想更改传递给 Ruby 函数的默认参数 例如 而不是每次都写 1 2 3 do stuff option gt my option 我想修改默认值以便我可以编写 1 2 3 do stuff 更改默认参数的最简单 最干净 最像 Ruby
  • 通过 ssh 密钥访问 GitHub 组织

    也许我是瞎子 但我找不到一种方法来访问通过 SSH 密钥授予我访问权限的组织 我知道直接连接到您自己的帐户很容易 但是我该如何通过组织来做到这一点呢 您帐户的个人 SSH 密钥可识别您的 GitHub 用户 如果组织授予您访问权限 则这是通
  • 行进立方体问题

    我目前正在编写一个程序来使用 C 和 Opengl 实现 Marching Cube 然而 我最好的参考仅来自http local wasp uwa edu au pbourke geometry polygonise http local
  • 在 Rcpp 中的另一个 cpp 文件中定义的函数中使用一个 cpp 文件中定义的函数

    我有一个名为的 C 函数add文件中定义add cpp 内容add cpp below include
  • Mysql暂时抑制唯一索引

    我有一个在两列上有唯一索引的表 准确地说是 id parent 和 sort order id id parent sort order some data other data more data 1 1 1 lorem ipsum lo
  • 如何在 VS Code for Markdown 中禁用 IntelliSense?

    我不想在 Visual Studio Code 中为 Markdown 文件提供单词补全功能 如何禁用它 理想情况下 仅适用于 Markdown 但在最坏的情况下 即使是全局切换也是好的 可以配置 VS Code 中的 IntelliSen
  • SQL Server 2008 R2 的百分位数聚合

    我正在使用 SQL Server 2008 R2 我需要计算每个组的百分位数 例如 SELECT id PCTL 0 9 x for the 90th percentile FROM my table GROUP BY id ORDER B
  • PhpStorm 显示/隐藏主菜单

    我错误地使用 视图 gt 外观 隐藏了 PhpStorm 的主菜单 未选中菜单 我尝试了很多关于如何再次显示主菜单的搜索 不久之后我找到了一个非常简单的方法 Press Double Shift用于到处搜索 现在搜索任何设置或您想要更改的任
  • AudioKit AKPlayer 无法回环到 setPosition 开头

    在 v4 中 如果您使用AKPlayer循环并使用setPositionAPI 玩家在设置的位置之间循环setPosition以及玩家的总持续时间 我需要的是从设置的位置开始setPositionAPI 并在循环发生时循环到开头 我不确定这