问题标签 [midi]

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.

Filter by
Sorted by
Tagged with
0 投票
3 回答
27819 浏览

用于从 USB MIDI 设备读取 MIDI 信号的 C/C++ 库

我想编写从 MIDI 设备获取输入的 C/C++ 程序。

MIDI 设备使用 USB 连接器连接到我的 PC。

我正在寻找一个(C/C++ 实现的)库,我可以使用它通过 USB 端口从 MIDI 设备读取 MIDI 信号。

我很乐意在获得 MIDI 数据后对其进行操作,我只是不想实现捕获它的代码。

我打算在 Windows XP 上使用 Bloodshed Dev-C++ IDE 编写我的代码。

0 投票
11 回答
34840 浏览

使用 C# 播放 MIDI 声音的最佳方式

我正在尝试重建一个旧的节拍器应用程序,该应用程序最初是用MFCC++ 编写的,.NETC#. 我遇到的问题之一是播放用于表示节拍器“点击”的 MIDI 文件。

我在网上找到了一些关于MIDI在 .NET 中玩的文章,但其中大多数似乎都依赖于有人拼凑并提供的自定义库。我并不反对使用这些,但我宁愿自己了解这是如何完成的,因为它似乎应该是一个微不足道的练习。

那么,我错过了什么吗?还是在 .NET 应用程序中使用 MIDI 很困难?

0 投票
3 回答
887 浏览

如何在 MIDI 文件中嵌入控制更改命令

我正在制作一个简单的游戏来学习一门新语言。我正在为游戏收集一些音乐,并想使用 MIDI 格式,以便我可以控制音轨的流动(即我想有一个只播放一次的介绍,当歌曲循环播放。)

我很难找到有关如何修改现有 MIDI 文件的信息,以便它们可以向合成器发送控制更改信号。有没有人有这方面的经验?


我认为我应该对我原来的问题更清楚。我正在使用负责播放音乐的现有游戏引擎。我的印象是这个控制更改值必须直接嵌入到 MIDI 文件本身中,因为我无法控制合成器。从手册:

MIDI 文件通过 DirectMusic 合成器播放。如果 BGM MIDI 文件包含控制更改值 111,则该值被识别为歌曲到达结尾后开始重复的位置。

我希望我能以编程方式做到这一点。我想我在这里追求的是某种编辑器,它可以让我修改我已经拥有的 MIDI 文件。

0 投票
2 回答
786 浏览

使用 DirectMusic 弹奏单个音符

我正在开发的应用程序中使用 DirectMusic 进行 MIDI 播放。有谁知道是否可以使用 DirectMusic 播放单个音符?目前,我正在将表示整个“歌曲”的内存数据结构转换为 MIDI 缓冲区并通过 DirectMusic 播放。我希望能够播放单个音符,而不必为其生成 MIDI 缓冲区、加载它并播放它。DirectMusic甚至可以实现这种类型的事情吗?

这是我第一次进入 DirectMusic 世界,所以希望我不会太不了解它的功能......

0 投票
8 回答
1060 浏览

音乐表演中的元作曲

几周前,我和我的钢琴老师在元创作音乐软件方面相互交流。想法是这样的:

有一个系统从一堆乐器中获取 midi 输入,并将输出推送到扬声器和灯光。在这个系统上运行的软件会分析它获取的 MIDI 数据,并根据作曲家设置的触发器确定要使用的声音(当我在 2 秒内弹奏 F7 和弦 3 次时,从大键琴声音切换到钢琴声音)、踏板或音乐的实际实时分析。它将根据乐器的性能和声音以类似的方式控制灯光——音乐家只需要模糊地指定他们想要的东西——剩下的就是实时分析他们的演奏。动态生成的音乐也可以与音乐家一起演奏。本质上,该软件将与表演者一起演奏,一个指导另一个。

我是即兴爵士乐的忠实粉丝。其他艺术形式所缺乏的即兴表演的一个特点是它的时间性。一幅画可以在画完 10 年或 1000 年后被欣赏,但音乐(尤其是即兴音乐)是关于表演的,因为它是创作。我认为我描述的软件会大大增加表演,因为每次播放完全相同的乐曲都会导致完全不同的表演。

所以,现在回答问题。

我疯了吗?

是否存在执行任何或所有这些操作的软件?我做了一些研究,没有发现任何东西。这个系统的关键是它在演出期间运行。

如果我要写这样的东西,像 Python 这样的脚本语言会足够快来完成我需要的计算吗?大概它会在一个相当快的系统上运行,并且可以利用英特尔不断发布的 2^n 核心处理器。

你们中的任何人都可以分享有关与乐器和灯光等接口的经验和建议吗?

有什么想法或建议吗?冷酷严厉的批评?

感谢您花时间阅读本文,以及所有建议!(对于标签中的笑话,我无法抗拒。)

0 投票
2 回答
1723 浏览

Alesis QS MIDI Sysex 数据转换

我的目标是将来自 Alesis 合成器的字节码流转换为人类可读的格式。我需要能够获取“程序转储”并读取组成补丁名称的 10 个字符串。

为了从合成器接收“程序转储”,我通过 MIDI-OX 向合成器发送了以下命令:

我要求它向我发送程序 73 的转储。

我收到了这个:

MIDI-OX 告诉我它收到了 408 个字节。

这符合规范:

“单个程序转储发送了 400 个数据字节,对应于 350 个字节的程序数据。加上标头,与程序转储一起传输的总字节数为 408。显示了每个参数在程序转储中的位置在下一节中。”

“程序转储”应由以下值组成:

这意味着数据应以“00 60”开头并以“07 F7”结尾。

现在我应该能够将这 400 字节转换为该程序的“350 字节的打包参数数据”。遵循“程序数据格式”,程序名称的 10 位数字应位于打包数据中的某处。补丁 73 被称为“BlowDeTune”或“PanBristle”,不完全确定它是从 0 开始还是从 1 开始。

那么你如何进行转换呢?规范的第1页给出了传输格式,但我不明白如何解压。

任何人都可以帮忙吗?

Alesis QS MIDI Sysex 规范在这里:

http://www.midiworld.com/quadrasynth/qs_swlib/qs678r.pdf

MIDI-OX 可以在这里找到:

http://www.midiox.com/

0 投票
3 回答
1638 浏览

.Net 中的 Midi 实现

有人对在 C# Winforms 中编写基于 MIDI 的应用程序有任何指导或建议吗?我最近购买了一个具有完整 MIDI 实现的新效果踏板(或者我被引导相信),但制造商认为不发布图书管理员/补丁编辑应用程序是合适的。

除了将键盘插入另一个 MIDI 设备之外,我几乎没有 MIDI 经验,但这不会那么难,对吧?;-)

提前致谢。

0 投票
4 回答
8593 浏览

不产生任何声音的简单 Java MIDI 示例

这个简单的代码在我用来测试它的几台机器上没有产生任何声音。我在 Eclipse 中运行代码,但我也尝试使用命令行无济于事。

我可以通过获取音序器、将 MIDI 事件添加到音序并播放音序来成功获得声音,但我正在尝试做一些音序器不支持的实时音乐效果。

有任何想法吗?

使用解决方案编辑:事实证明,问题在于,默认情况下,JRE 不附带音库(有趣的是,使用 Sequencer 有效,但使用 Synthesizer 没有)。谢谢,jmc

为了解决这个问题,我从 java.sun.com 下载了一个音库并将其放在(在 WinXP 上)C:\Program Files\jre1.6.0_07\lib\audio(必须制作音频文件夹)。

0 投票
4 回答
8607 浏览

MIDI player/synthesizer library for the iPhone

Does anyone know if there is a free/cheap MIDI player/synthesizer library that I can incorporate into my iPhone application?

As I understand it the iPhone doesn't have native support for MIDI playback.

To work around this limitation I've created a bank of .caf sound samples that I playback myself but I'd really like to improve the implementation and use MIDI if possible.

Any advice would be greatly appreciated.

0 投票
7 回答
25250 浏览

用于 Python 的简单、跨平台 MIDI 库

我想做一个创建 MIDI 声音的小应用程序。我从来没有在编程中处理过声音,所以我想从一些基本的并且有很好的文档的东西开始。我想坚持使用 Python,因为我对它最熟悉,并且最初不想让自己不知所措。

我的时间在 Windows 和 Ubuntu 之间分配了大约 50/50,所以在这两个平台上“正常工作”的东西真的很有帮助。

有什么建议么?