问题标签 [midi-interface]

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 投票
2 回答
521 浏览

midi - Mackie HUI MIDI 消息会重新发送所有音轨信息吗?专业工具

我正在寻找通过 HUI MIDI 规范发送 Pro Tools 的 MIDI 消息,该规范将触发 PT 重新发送所有轨道信息(音量/静音/平移/自动化状态/轨道名称)。

HUI 规范并未完整公开(尽管 theageman 已经发布了其中的一部分)。有谁知道这样的 MIDI 信息是否存在?我想发送一条消息,触发专业工具重新发送当前所选曲目的所有当前曲目信息。

0 投票
0 回答
1047 浏览

macos - 使用 CoreMIDI 在 Mac 上发送稳定的 MIDI 时钟

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

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

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

我尝试使用高优先级线程来发送 midi 时钟。下面的测试程序给了我 119.8 和 120.2 之间的速度抖动。

我在这个例程中做错了什么还是应该使用其他策略?非常感谢任何帮助。

问候,罗伯

更新

想出了一个有效的策略。下面的代码在我的系统上给出了完美的结果。我已经在乐队的演出中使用过它,效果很好。

我的解决方案是:

  1. 发送具有 24 个时钟的数据包列表而不是发送单个时钟
  2. 仅在第一个时钟中使用当前 machtime 设置时间戳,然后继续使用计算的滴答数增加时间戳。(当packetlist的每个第一个包都设置了当前的machtime时,结果不稳定!)
  3. 将计算的刻度四舍五入到微秒!这让我感到惊讶,因为您会认为.. 精度越高效果越好.. 但是当我使用纳秒精度时,我的 DAW (NI Maschine) 屏幕上的速度是稳定的,但仍然有“抖动”的声音。不知道这是否与CoreMidi,虚拟IAC设备或NI Machine有关。

速度变化时仍然存在一些问题。速度变化发出的声音并不平滑......但是基本问题(如何使用 CoreMidi 发送稳定的时钟)得到了解决。

更新
在对节奏变化的响应方面取得了一些进展。

  1. 当 MIDITimeStamp 的固定值远超 mach_absolute_time() 时停止发送数据包列表
  2. 发送只有 8 个时钟而不是 24 个时钟的较小数据包列表

在我的系统上,速度变化是平稳发送的,延迟时间最短,但是在多次改变速度后,发送 MIDI 设备的节拍和监听生成的 MIDIclock 的 DAW 可能会发生小偏移。

在现场表演中,这意味着使用发送 MIDI 设备的“鼓手”必须在他的设备上执行停止和启动,以使声音再次同步。对于我的乐队来说,这不是问题。突然停止和启动效果很棒!

下面是优化的代码。我把它包在一个类中以便于使用。如果您能看到改进,请回复。


0 投票
0 回答
65 浏览

c# - 加载 Midi.Net DLL 的问题

最近,我在制作的不同应用程序中遇到了一些问题。所有这些应用程序都使用 Midi 控制器将 midi 音符发送到照明台。所有这些应用程序的问题都是相同的。

在运行时,当我处理应用程序时,有时会发生我的整个应用程序冻结。我没有收到任何警告消息,也没有弹出调试器告诉我出了什么问题。当我想演奏一个中音时,它总是会发生。那时我唯一能做的就是重新启动整个机器,这并不好笑。

因为应用程序挂起并且我没有得到任何调试信息,我确信它与我用来发送 Midi-notes 的 DLL 有关,并且那里或我实现 dll 的方式存在问题。

我已经在下面发布了代码,如果有人能告诉我我做错了什么,我将不胜感激?

这是初始化 Midi 的主窗体中的解码代码

从 Form_Load 函数内部调用 initMidi()。

播放 Midi-note 的代码是:

下面是 MidiTools-class 文件中的代码

Midi 库本身是从这个链接下载的: https ://midi-dot-net.googlecode.com/files/midi-dot-net_src_1.0.5.zip

在过去,我尝试过多种方法来解决这个问题。我尝试插入更大的延迟,尝试在列表中提示消息并逐个处理它们,以防止在另一个音符仍在发送时要求播放中音,但这些都没有帮助。

在 98% 的情况下,它都有效,只是偶尔会冻结我。我正在使用 M-Audio Midisport 控制器。(http://www.m-audio.com/products/view/midisport-4x4-anniversary-edition)但它也发生在其他控制器上。

因此,非常感谢任何帮助。

最好的问候,肯尼斯

0 投票
0 回答
252 浏览

duplicates - 使用多个相同类型的设备时,midi 命名不一致

尝试使用相同类型硬件的多个 USB MIDI 设备时,我面临设备命名的模糊行为。由于这可能与硬件/系统/驱动程序相关,因此这是我的一般设置:

  • 主机:Windows 8.1 x64(在多台机器上测试)
  • USB 设备:2x Livid Brain V2(通用 USB-midi 接口)

这两个设备(相同的硬件,我们称它们为设备 X 和 Y)使用两种不同的固件风格进行刷新,因此它们在 midi 枚举中以不同的名称出现。如果我只连接设备 X,它显示为“Brain2”/如果我只连接设备 Y,它是“Brain2B”。这些是我从MIDIINCAPS / MIDIOUTCAPS (winmm.dll) 中获得的名称。到目前为止,一切都很好。

当我同时连接两个设备时,问题就会出现,而不是两者都获得相同的名称(后者连接的) - 所以枚举发生了变化:

  • 首先是 X,然后是 Y => 都取名为“Brain2B”
  • 首先是 Y,然后是 X => 都取名为“Brain2”

但是,我可以访问和使用这些设备,但我无法再区分它们(这与两个设备上具有相同固件的起始位置基本相同)。

如果有人能指出我正确的方向,我会很高兴。有没有人遇到过类似的事情?这可能是与系统相关的问题吗?(或者它是一个糟糕的驱动程序,也许?)提前谢谢!


编辑:

我使用名为USB 设备树查看器(类似于 USBView)的工具仔细查看了 USB 属性,结果发现那里的标识符是正确的。那么,winmm.dll是如何获得 midi 枚举的——这可能是一个错误吗?(不太可能)


莫里茨

(顺便说一句:这是制造商论坛中的相关主题/帖子:链接

0 投票
0 回答
193 浏览

c# - 如何使用通用 Windows 平台创建可命名的 MIDI 端口?

如何使用通用 Windows 平台(Windows 10 周年更新)创建可命名的 MIDI 端口?

似乎https://blogs.windows.com/buildingapps/2016/09/21/midi-enhancements-in-windows-10/#r5BB7v0LGxqUvY4g.97没有就该主题给出答案。

0 投票
1 回答
720 浏览

ios - EAAccessoryManager 不读取 MFI 附件

我想制作一个与 iOS 的 MIDI 接口附件通信的应用程序。我购买了 MFI 许可设备 (iConnectMidi),插入并创建了一个[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]在应用启动后调用的简单项目,但无法读取附件。我想知道是否有类似经验的人可以对此有所了解?

0 投票
1 回答
946 浏览

python - Python Pyo midi 键盘模拟

我希望用 python 和 Pyo 开发一个合成器。我想用我的电脑键盘作为 MIDI 键盘来演奏旋律。

如何将我的电脑键盘伪装成 MIDI 键盘?

谢谢

0 投票
1 回答
11516 浏览

midi - 将 MIDI 文件转换为带有长度和开始时间的音符列表

我正在 Unity 中开发一款可以从音乐中生成关卡的游戏。我计划在游戏中包含简单的文本文件(不必采用标准格式)并解析它们以生成关卡。问题是,我需要能够将 MIDI 文件转换为文本格式(最好不要像 MusicXML 那样复杂)。理想情况下,我将包含在游戏中的文本文件包含一个音符列表,每个音符都有长度和开始时间(以任意时间单位)。我不能简单地包含一个音乐文件,因为我的弹幕游戏必须用音符精确计时子弹。

我不在乎这是什么编程语言,因为这个代码不会包含在游戏中。此外,我以前从未以任何形式使用过 MIDI。我很乐意为此使用任何库和/或免费程序。

预先感谢您的帮助!

0 投票
1 回答
39 浏览

audio - 提高从 MIDI 文件中提取的声音质量

可以在从计算机上的 MIDI 文件中提取的音乐中添加衰减、失真、摇摆、混响和延音等效果吗?还是 midi 允许我们在创建过程中加入这些功能?

通过 midi 规范,我找不到执行上述操作的可能方法。我是正确的还是我错过了什么?

有什么建议么?

0 投票
1 回答
74 浏览

midi - 事件顺序在 midi 文件中是否重要

我的意思是首先出现元事件,然后是通道事件,然后是 sysevent ,元事件等。

在此处输入图像描述

在图片中,有一个元事件,然后是通道事件,如果我们将在这两者之间打乱顺序怎么办?