标签: midi-interface

使用Arduino将USB发送到USB

我有兴趣制作一个基于Arduino的MIDI控制器与我的电脑对话.看看Arduino MIDI的其他例子(例如,使用Arduino的MIDI输出),它们似乎都连接了一个专用的5针DIN.这是有道理的,因为这是将键盘,扩展器和音序器连接在一起的原始电缆.

但是,我想将MIDI发送到我的电脑.5针DIN必须插入转换盒,通过USB连接到我的PC.我已经有一根USB线将我的Arduino连接到我的电脑上.那我为什么不能用这个呢?

我假设什么会阻止我,这些转换盒都带有驱动程序,知道如何处理通过USB传入的信号.然而,比如说,我的计算机上的虚拟合成器不会期望或知道如何处理通过串行端口进入的原始字节.那么我可以将这些驱动程序的标准版本或免费版本用于我自己的项目吗?或者,如果没有,写一个会怎么样?我在哪里可以找到更多相关信息?

embedded usb midi arduino midi-interface

13
推荐指数
2
解决办法
2万
查看次数

使用相同类型的多个设备时,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枚举 - 它可能是一个错误吗?(不太可能)


莫里茨

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

usb midi duplicates winmm midi-interface

6
推荐指数
0
解决办法
179
查看次数

Silverlight可以与MIDI乐器通信吗?

Silverlight可以与连接到运行Silverlight应用程序的机器的MIDI乐器进行通信吗?进出浏览器.

silverlight midi midi-instrument midi-interface

6
推荐指数
1
解决办法
525
查看次数

使用CoreMIDI在Mac上发送稳定的Midi时钟

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

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

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

我试图使用高优先级的线程发送midi时钟。下面的测试例程使我在119.8和120.2之间有速度抖动。

我在此例行程序中做错了什么还是应该使用注释策略?任何帮助都非常感谢。

问候,罗布

dispatch_source_t CreateDispatchTimer(uint64_t interval,
                                  uint64_t leeway,
                                  dispatch_queue_t queue,
                                  dispatch_block_t block)
{
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                                                     0, 0, queue);
    if (timer)
    {
        dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, interval, leeway);
        dispatch_source_set_event_handler(timer, block);
        dispatch_resume(timer);
    }
    return timer;
}

- (void) testTimer{

    IAC = MIDIGetDestination(0); // 0 is the MAC IAC device on my system
    MIDIPacket       pkt;
    MIDIPacketList   l;
    pkt.timeStamp = 0;
    pkt.length = 1;
    pkt.data[0] = 0xF8;

    l.numPackets = 1;
    l.packet[0] = pkt;

    dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); …
Run Code Online (Sandbox Code Playgroud)

macos midi-interface coremidi

5
推荐指数
0
解决办法
891
查看次数

检测是否在Web MIDI API中连接了MIDI接口

我正在使用Chrome/OS X中的Web Midi API进行试验.到目前为止,我得到了很好的结果,但我想知道:

有没有办法在应用程序运行时检测MIDI接口是否已连接/断开?

它现在的工作方式是重新启动浏览器,让应用程序知道接口是否存在......

似乎有一个MIDIAc​​cess onconnect/ondisconnect事件,但我不知道如何让它们触发.这是在Chrome(Canary)中实现的吗?

javascript midi midi-interface web-midi web-audio-api

4
推荐指数
1
解决办法
1515
查看次数

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

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

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

预先感谢您的帮助!

midi midi-interface

3
推荐指数
1
解决办法
1万
查看次数