问题标签 [mikmidi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
915 浏览

ios - 如何为 midi 事件准确设置时间戳?

我正在解析一个 midi 文件,然后使用MIKMIDI将 midi 事件发送到连接的合成器,但我将事件时间戳四舍五入到整数秒而不是更具体的毫秒。我需要帮助准确计算时间。谢谢。// 前面定义的 class Note { var symbol:String var octave:Int var midiValue:Int var duration:Float }

MidiDevice playNoteOn 定义

如何将此时间戳更改为可以使用 MIDISend() 或 MIKMIDI 发送的准确时间戳?

0 投票
1 回答
438 浏览

ios - 在 MIKMIDI 中使用声音字体

现在,我成功地创建了一个 MIKMIDISequence 序列。但是,我不知道如何将声音字体与该序列联系起来。我的问题是,如何为 MIKMIDISequence 分配声音字体?

0 投票
1 回答
552 浏览

ios - 在 iOS 上导出带有声音字体的 midi

是否可以将分配给它们的声音字体的 midi 序列导出为 .wav 文件?如果是这样,任何人都可以让我朝着正确的方向前进吗?

我目前正在使用MIKMIDI,到目前为止我还没有遇到任何这样做的例子。

0 投票
0 回答
227 浏览

ios - MIKMIDI 音色预设选择

我在 Swift 中成功完成了以下操作:

  • 创建了一个 MIKMIDI 音序器
  • 将轨道添加到音序器
  • 将声音字体加载到该轨道的内置合成器
  • 将 MIDI 事件添加到轨道
  • 在音序器上触发播放

是否可以在多音色声音字体中选择预设?检查音序器轨道引用的 MIKMIDISynthesizer 实例的 availableInstruments 属性会向日志控制台报告一个空数组。这是代码:

0 投票
1 回答
843 浏览

ios - Swift 中的 AudioUnitRender 和 ExtAudioFileWrite 错误 -50:尝试将 MIDI 转换为音频文件

我正在尝试将 MIDI 文件转换为 Swift 中的音频文件 (.m4a)。

现在我使用MIKMIDI作为排序和播放 MIDI 文件的工具,但是它不包括将播放保存到文件中的能力。MIKMID 的创建者在此处概述了执行此操作的过程。为了尝试捕获输出并将其保存到音频文件,我按照此示例尝试将 MIKMIDI Graph 的 RemoteIO 节点替换为 Swift 中的 GeneralIO 节点。当我尝试使用 AudioUnitRender 和 ExtAudioFileWrite 将输出保存到文件时,它们都返回错误 -50 (kAudio_ParamError)。

是什么导致了错误 -50,我该如何解决它以将 MIDI(离线)渲染为 .m4a 文件?

更新:我通过将 mNumberChannels 和通道更改为 = 1 解决了 ExtAudioFileWrite 错误 -50。现在我得到了一个带有噪音的一秒音频文件。AudioUnitRender 仍然返回错误 -50。

0 投票
1 回答
119 浏览

ios - MIKMIDI NRPN 命令创建

我使用 MIKMIDI 发送组合的 NRPN 命令。我正在尝试发送这种风格的 NRPN

B9H 63H 40H || B9H 62H 64H || B9H 06H 7FH (hex)

这是

B9 99 64 || B9 98 100 || B9 06 127 (dec)

我尝试以这种方式创建

但它返回一个 nil 指针。

我究竟做错了什么?

0 投票
2 回答
251 浏览

ios - 将 MusicTimeStamp (AudioToolbox) 转换为毫秒

我正在使用MIKMIDI框架,这是使用AudioToolbox类型MusicTimeStamp

如何将此时间戳转换为毫秒?

0 投票
0 回答
361 浏览

ios - AudioKit 麦克风输入 + MIDI 输出

是否可以使用AudioKit收集麦克风输入并同时使用MIKMIDI通过立体声扬声器播放 MIDI 文件中的音符?

我发现自己可以成功地完成每一项工作;我可以从 AudioKit 收集麦克风频率并使用 MIKMIDI 从 MIDI 文件中播放音符,但如果我将它们一起使用,那么 MIDI 音符将在“内部硬件扬声器”上播放(不太确定实际名称?有点像DOS游戏),而不是立体声扬声器,并且音符的幅度极低。

音频套件使用

这实际上是我用来获取麦克风频率的唯一一段代码。我使用该频率数据还有其他代码,但这无关紧要。重点是,如果我注释掉这段代码,MIKMIDI 部分将按预期工作并通过立体声扬声器播放。

MIKMIDI 用法

0 投票
0 回答
41 浏览

swift - MIKMIDI:在轨道上写入事件会产生警告

我正在尝试编写一个程序来移动midi文件的键。基本上,我只需要将每个音符事件移动给定的数量,其余部分保持不变。我发现使用 MIKMIDI 读取、解析、修改和写回流很容易。

不幸的是,我有一个无法解决的问题。我有一个循环,我在其中选择音符事件并添加/减去所需的移位值,但是当我在输出轨道中附加事件时,我从 MIKMIDI 库中收到一条消息:

我写的代码如下:

顺便说一句,代码运行良好(midi 文件按预期播放),只是由于调试屏幕上打印了无限序列的警告消息,在调试模式下执行需要几分钟。谢谢!