ios - 混合 MIDI 文件,每个文件都有自己的声音字体

2023-12-08

我正在寻找一种方法来混合 2 个或更多 MIDI 文件,每个文件都有自己的声音字体文件。我找到了一个文件的以下代码,并尝试做多个音乐播放器,但我想这不应该是正确的方法。而且我每秒都会听到一些奇怪的流行声音。

那么有没有其他方法,也许没有音乐播放器和音乐序列方法,仅使用 au 单位?

这是我在另一个线程中找到的代码:

-(void) playMusic:(NSString*) name
{
NSString *presetURLPath = [[NSBundle mainBundle] pathForResource:@"GortsMiniPianoJ1" ofType:@"SF2"];
NSURL * presetURL = [NSURL fileURLWithPath:presetURLPath]; 
[self loadFromDLSOrSoundFont: (NSURL *)presetURL withPatch: (int)3];

NSString *midiFilePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mid"];
NSURL * midiFileURL = [NSURL fileURLWithPath:midiFilePath];

NewMusicPlayer(&musicPlayer);

if (NewMusicSequence(&musicSequence) != noErr) 
{
    [NSException raise:@"play" format:@"Can't create MusicSequence"];  
}

if(MusicSequenceFileLoad(musicSequence, (CFURLRef)midiFileURL, 0, 0 != noErr)) 
{
    [NSException raise:@"play" format:@"Can't load MusicSequence"];
}

MusicPlayerSetSequence(musicPlayer, musicSequence);
MusicSequenceSetAUGraph(musicSequence, _processingGraph);
MusicPlayerPreroll(musicPlayer);
MusicPlayerStart(musicPlayer);
}

多个音乐播放器实例听起来有点尴尬(保持同步),我怀疑多个 AUTOGraph 是否可以工作。我自己没试过。

一种使用单个实例的方法MusicPlayer是将每个 MIDI 文件中的曲目加载到“主”序列中。您可以为每个轨道分配一个 AUSampler 节点(具有唯一的 soundFont)(MusicTrackSetDestNode)并通过一个连接它们AUMixer。您需要管理每个 MIDI 文件的速度(使用MusicTrackNewExtendedTempoEvent) 将文件速度分配给相关轨道。静音轨道+轨道音量可以在轨道或混音器级别轻松处理。

我想很大程度上取决于您正在使用的 MIDI 文件的性质。 Fwiw - 我对 iOS 上的 midi 文件播放进行了大量研究,没有什么比 MusicPlayer 更容易使用的了。但是,那Bass lib如果 MusicPlayer 不适合您,可能值得一看。

指定混频器输入的数量:

// set the bus count
UInt32 numBuses = BUS_COUNT; // a constant defined elsewhere
result = AudioUnitSetProperty(mixerUnit, 
                              kAudioUnitProperty_ElementCount, 
                              kAudioUnitScope_Input, 
                              0, 
                              &numBuses, 
                              sizeof(numBuses));

if (noErr != result) {[self printErrorMessage: @"Error setting Bus Count" withStatus: result]; return;}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios - 混合 MIDI 文件,每个文件都有自己的声音字体 的相关文章

  • 为arm64或arm7s编译OpenSSL FIPS功能库时出现未知的cpu类型

    我可以成功 至少没有警告并生成 a 文件 针对 arm7 x86 64 和 i386 进行编译 当我编译arm64时 我得到Unknown cpu type 100000c no adjustments made 当我编译arm7s时 我得
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • Socket.io 400(错误请求)

    我的服务器上有这段代码 var express require express var routes require routes var user require routes user var http require http var
  • WKWebView 未打开自定义 URL 方案(js 在新窗口中打开自定义方案链接)

    我有一个WKWebView在我的应用程序中 我不使用UIWeb视图 因为由于某种奇怪的原因 它无法正确打开包含大量 JS 代码的网页 当我点击链接时自定义 url 方案 scm 它确实nothing My code void viewDid
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • ios 在后台处理推送通知

    我想保存应用程序处于后台状态时到达的推送通知 我知道关于 void application UIApplication application didReceiveRemoteNotification NSDictionary userIn
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • XCode 4.5 给我“SenTestingKit/SenTestKit.h”文件未找到,但适用于 4.4.1

    我刚刚安装了 XCode 4 5 它在我现有的项目之一上给了我一个 SenTestingKit SenTestingKit h 文件未找到错误 此错误仅发生在 XCode 4 5 中 但它在 4 4 1 上编译正常 我已经检查过SenTes
  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • 将 UIButton 中的图像缩放到 AspectFit?

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam

随机推荐

  • Xcode 6.1 文件中缺少所需的架构 X86_64

    在 Xcode 6 1 中 我收到 iPhone 6 iPhone 5s iOS 7 1 的错误 其中显示 Undefined symbols for architecture x86 64 OBJC CLASS ClientAuthent
  • 如何在画布上制作弹跳球的动画

    你好 我刚刚开始编写 Java 和 HTML 等代码 所以有时我会遇到困难 因此 我加入 StackOverflow 寻求您的帮助 请对我好一点 我正在尝试使用动画setInterval 并绘制方法来创建一个弹跳球 该球在每帧中移动多个像素
  • OPENCV waitKey()方法返回类型

    我正在尝试使用在线教程学习 OPENCV 用于图像处理项目 opencv 文档说 waitKey 返回一个 int 这应该是按下的键的 ASCII 值 但大多数在线教程都使用以下代码 可以正常编译和运行 if char 27 waitKey
  • Python XML 解析和 getElementsByTagName

    我试图解析以下 xml 并围绕我的业务需求获取我感兴趣的特定标签 我想我做错了什么 不知道如何解析我所需的标签 想要利用 pandas 以便我可以进一步过滤细节 学弟学妹们多多支持 我的 XML 来自 URI
  • Clojure core.logic CLP(FD) 投影 FD 变量

    我正在使用 Clojure 的 core logic CLP FD 库 core logic 版本 0 8 3 开发一种简单的方形打包算法 正方形表示如下 x11 y11 x12 y12 x21 y21 x22 y22 每个正方形表示为其左
  • 如何防止 scanf() 永远等待输入字符?

    我想在控制台应用程序中完成以下任务 如果用户输入一个字符 应用程序将执行以下操作 相应的任务 例如 如果用户输入1 该程序 如果用户输入 将执行任务 1q 程序将退出 如果用户没有输入任何内容 程序将每隔10秒执行一次默认任务 时间不必很严
  • 从 Excel VBA 关闭 Word 应用程序

    我试图在宏开始时关闭所有打开的 Word 应用程序实例 尽管我不知道哪些文档已打开 并且无法将它们设置为对象 这将关闭所有正在运行的 Word 文档 你需要On Error Resume Next以防止在没有运行 Word 应用程序实例时出
  • 如何从webview中获取html内容?

    从 webview 获取 html 代码的最简单方法是什么 我尝试了stackoverflow和google的几种方法 但找不到确切的方法 请说一下具体的方法 public class htmldecoder extends Activit
  • 构造函数中的依赖注入容器

    为什么将容器放在构造函数中这么糟糕 例如 您想要在另一个类 C 的构造函数中解析类 B 因为您需要将类 B 与解析的依赖项一起使用 您开始按照您希望的方式使用类 C 就像使用 B 一样 但使用依赖关系已解决 为什么将容器放在构造函数中这么糟
  • 从嵌入的 Google 表格中删除 Google 边框

    我希望将 Google 表格嵌入到 Google 扩展程序中 足够简单 只需使用自动生成的嵌入代码并将其粘贴到 html 文件中即可 这就是我所做的
  • iOS otool 检测私有 api [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我是第一次 ios 开发人员 找不到任何有关私有 ap
  • 为什么在 JavaScript 中“Object instanceof Function”和“Function instanceof Object”都返回 true?

    为什么在 JavaScript 中同时执行这两项操作Object instanceof Function and Function instanceof Object return true 我在 Safari WebInspector 中
  • 詹金斯在失败的阶段继续管道

    我有一个带有一堆管道的詹金斯设置 我编写了一个新的管道 可以立即启动所有管道 我想建造其他阶段 即使其中一个阶段失败了 目前的脚本看起来像这样 stage CentOS6 build centos6 testing stage CentOS
  • Nokogiri 可以解释 javascript 吗? - 网页抓取

    我们正在尝试抓取此页面上的可用性 http www equityapartments com new york new york city apartments midtown west mantena apartments aspx 我需
  • 增加 FD_SETSIZE 的限制并选择

    我想增加我的系统的 FD SETSIZE 宏值 有没有办法增加 FD SETSIZE 这样 select 就不会失败 按照标准 没有办法增加FD SETSIZE 一些程序和库 例如 libevent 尝试通过为fd set对象并传递大于的值
  • MongoDB 基于每个元素对多个文档中的数组求和

    我有以下文档结构 针对此示例进行了简化 id ObjectId sdfsdf result 1 3 5 7 9 id ObjectId asdref result 2 4 6 8 10 我想得到这些的总和result数组 但不是总和 而是一
  • RubyMine 的运行配置导致 Ubuntu 上出现“Yarn 需要 Node.js 4.0”错误

    在我的 Elementary OS 机器 基于 Ubuntu 的操作系统 上 使用以下命令创建新的 Ruby on Rails 项目后rails new yarntest并将其加载到 RubyMine 中 我无法使用 RubyMine 的
  • 静态全局和本地标识符的隐藏

    以下程序是在课堂上分发的练习工作表上的 我们被要求提供它的输出 但根据我对链接的理解 file2 c 不应该有两个静态标识符 b 的实例 但程序编译时会出现警告并运行得很好 我的问题是 为什么允许这样做 我认为静态链接的要点是能够访问该文件
  • JMeter JSR 223 语言 js 与 javascript

    关于 JSR 223 采样器语言 我可以选择 javascript ECMAScript ECMA 262 第 51 版 Oracle Nashorn 1 8 0 144 and Node js ECMAScript ECMA 262 版本
  • ios - 混合 MIDI 文件,每个文件都有自己的声音字体

    我正在寻找一种方法来混合 2 个或更多 MIDI 文件 每个文件都有自己的声音字体文件 我找到了一个文件的以下代码 并尝试做多个音乐播放器 但我想这不应该是正确的方法 而且我每秒都会听到一些奇怪的流行声音 那么有没有其他方法 也许没有音乐播