草庐IT

python - 如何读取 MIDI 文件、更改其乐器并将其写回?

我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

ruby - 我将如何以编程方式与 VST(i) 插件交互以合成音频?

以VSTiTriforce为例,由Tweakbench提供。当加载到市场上的任何VST主机时,它允许主机向VSTi发送(大概是MIDI)信号。然后VSTi将处理该信号并输出​​由VSTi内的软件乐器创建的合成音频。例如,将A4(我相信是MIDI音符)发送到VSTi会导致它合成高于中央C的A。它将音频数据发送回VST主机,然后它可以在我的扬声器上播放或将其保存为.wav或其他一些音频文件格式。假设我有Triforce,我正在尝试用我选择的语言编写一个程序,它可以通过发送要合成的A4纸条与VSTi交互,并自动将其保存到系统上的文件?最终,我希望能够解析整个单轨MIDI文件(使用已经可用于此

javascript - 如何将 Web Midi API 连接到 native 应用程序(如 Ableton live)

[如果有更好的地方可以问这个问题,请告诉我!]注意:我使用的是Mac。我已经使用WebMIDIAPI成功地将MIDI键盘连接到我的浏览器(Chrome)。我想知道我是否也可以连接应用程序(如AbletonLive),以便当Ableton输出MIDI消息时,浏览器可以接收这些消息?我看到的选项:将Midi从Ableton发送到我的MIDI键盘,后者将它们转发到WebMIDIAPI(任何人都可以阐明如何设置它吗?)使用MacOS中的IAC(应用程序间通信)驱动程序,“可以这么说,允许您在盒子内的应用程序之间创建虚拟MIDI电缆。”我不知道如何设置它,因为“webmidiapi”没有出现在M

Javascript:如何导出 MIDI 文件?

我刚开始在我的javascript代码中使用MIDI,我想创建一个应用程序,它只根据用户的输入生成一个MIDI文件。我看过使用MIDI.js,但我不确定我是否需要任何图书馆。理想情况下,我希望能够使用音符值而不是十六进制MIDI代码...我需要在plugin.js中使用转换器吗?我目前的研究表明,生成的声音字体是推荐的方法;但是,我想导出/生成一个MIDI文件以用于专业的DAW。感谢您的帮助。 最佳答案 您可以使用我发现的一个名为MidiWriterJS的库.使用起来非常简单:第1步:安装最简单的安装方法是使用npm.$npmins

javascript - 在 javascript 中生成 MIDI

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我想用javascript生成一系列MIDI音符,然后播放它。许多插件支持MIDI,但我不知道有任何支持的“数据:”URL。生成MIDI内容没什么大不了的-但将此内容提供给播放器却很重要。任何人都知道如何做到这一点-如果不是一般情况,那么至少对于像QuickTime这样的特定插件?

java - SysEx 不会发送字节 "AD"

好的,在用两种不同语言(Java和Cocoa)编写的两个不同程序(我自己的和QLab)中,在两个不同的系统(Mac和PC)上尝试这个会产生相同的结果。所以我很难过。本质上,我正在尝试发送以下Sysex消息:F043103E1201003300000000AD000000ADF7当我发送它时,我的Midi监控程序(又是两个不同的程序)要么说它已发送:F043103E1201003300000000F7然后这个被发送了:AftertouchCh14C-20Invalid1ByteInvalid1Byte或者另一个只说了三个触后,然后是来自Java的channel关闭。然后,仅在Mac程序上

windows - 防止 MIDI 驱动程序在 MS Surface 4 上休眠

我有一个Windows窗体应用程序,它对从Midi/USB脚踏开关上的按钮单击发出的Midi事件作出react。这在几乎所有PC上都非常有效,延迟非常小......但是在MicrosoftSurface4(可能还有5、6等)平板电脑上,Microsoft似乎会在声音播放后尽快让Midi(或USB)驱动程序进入休眠状态停止在设备上播放...之后立即!我确定Surface这样做是为了节省电量/电池,但这对我的应用程序来说是一个交易破坏者。在我的应用程序中,无论当前是否正在播放声音,我都需要对脚踏开关按钮的点击使用react,几乎没有延迟。在Surface上,一旦Midi驱动程序进入休眠状态

windows - 网络 MIDI 编程

我正在尝试构建一个允许输入电吉他或其他MIDI输入的网络程序。我的问题是,“这可能吗”,您更喜欢哪种编程语言?提前致谢 最佳答案 看起来这是可能的。Jazz-soft有一个浏览器插件,它添加了低级MIDI支持。http://jazz-soft.net/WebMIDI是一个支持MIDI协议(protocol)的API,使Web应用程序能够枚举和选择客户端系统上的MIDI输入和输出设备,并发送和接收MIDI消息。http://www.w3.org/TR/webmidi/一些网络搜索也发现了一个叫做WebMIDIAPIPolyfill的东

创建 .mid 文件 : writing a '\n' causes '\r\n' in Windows

我通过将字节写入文件并将其另存为.midi创建了一个.mid文件。我可以运行它并且它可以工作,但在某些特殊情况下它不会。如果我写入一个包含\n的字节(ASCII10),那么它将写入2个字节\r\n,这使得.mid不可运行。(这对于Windows机器来说是正常的,但在我的情况下并不理想。)编写\n的示例可能是在选择由\n表示的key时>。是否有一种解决方法来编写\n而不是\r\n或其他方法来确保写入的字节是ASCII10在Windows机器上?谢谢! 最佳答案 在linux/unix上,创建文件时指定"wb"还是"w"都没有关系。但是

windows - 使用 MME 和 DirectMusic 时的 ANSI 或 OEM 代码页?

我注意到,当从MME读取MIDI端口名称时,名称是使用ANSI代码页编码的多字节字符串,我的应用程序默认使用该代码页。从DirectMusic驱动程序接收这些名称时,这些名称是使用OEM代码页编码的宽字符字符串。参见thisarticlebyRaymondChen快速回顾代码页。在我的德语系统上,这意味着当使用当前代码页时,结果是ANSI代码页,我从MME得到“Audiogerät”,从DirectMusic得到“Audiogeröt”,后者是错误的。当我将姓氏视为OEM编码时,此问题得到解决。那么我怎么知道用哪个代码页来解码这些名字呢?为什么来自DirectMusic的名称编码不同?