问题标签 [javax.sound.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.
java - 在 Java 上使用 Soundbank 进行可靠的 MIDI 播放
我正在编写一个播放一些 MIDI 音符的应用程序,但我在使用音库时遇到了问题。
在 Mac 的默认 JVM 上,有一个soundbank-mid.gm
礼物,但 Java 告诉我没有默认的音库,也没有加载任何乐器。它也无法加载我自己的 SoundFont 文件。不过,它仍然会从一些默认值开始播放。
在我的 JVM 7 上,有一个默认的音库和加载的乐器,它还加载 SF2 文件。我有一个在 7 上不起作用的原生 dep。
在 Ubuntu 上我遇到了类似的问题,但那是因为soundbank.gm
默认情况下没有安装。我也能够SF2
很好地加载文件。
从未尝试过Windows。
跨平台播放 MIDI 的可靠方法是什么?
java - 编辑 midi 事件
我试图通过向上或向下移动钢琴卷帘编辑器中的图形音符(矩形)来按顺序编辑现有 MIDI 音符的音高。阅读 API 和在线文档,并没有非常具体地说明如何编辑现有笔记。据我所知,我需要使用 setMessage() 方法来覆盖现有的 ShortMessage。这是我现在得到的:
我通过鼠标拖动音符从 JPanel 调用 changePitch(),并且我发送 +1 或 –1 作为调整音高的增量。我找不到的是 setMessage() 调用的其他四个空白参数中需要输入的值。从逻辑上讲,我想保留命令、通道和时间戳的现有值,但是如何访问这些现有值以便将它们放在空白处?我尝试过诸如 message.command 或 message[0] 等,但它们不起作用。此外,在文档中,set Message 的参数显示为 (byte[] data, int length)。这些 args 的解释真的很模糊,而且它们肯定与我一开始用来创建 ShortMessage 的 args 不匹配。有什么建议么?
java - 为什么 MIDI 音符计时不起作用?
我正在创建一个 midi 钢琴卷帘编辑器。Note 类创建并包含一个 NOTE_ON 对象和一个关联的 NOTE_OFF 对象以及一个矩形,用户在屏幕上操纵它来操纵音符的音高、时间和持续时间。下面是这个类的代码减去矩形的代码。我不知道为什么它不能正常工作。测试程序会创建五个这样的 Note 对象并将它们显示在钢琴卷帘网格上,并且它们可以正常播放。当向上或向下拖动矩形时,更改音高的方法也可以正常工作。但是当我调用更改时间或持续时间的方法时,笔记开始出现异常。首先,当它们移动时,它们不会在被告知的地方演奏,然后如果音符被拖到顶部或相互延伸,移动的音符将阻止其下方的音符播放。我作为 arg 发送到这些方法的移动单位设置为 16,因此音符将始终捕捉到第 16 拍位置。谁能发现我的代码有什么问题?
MIDI 音序器和合成器:
java - Java 中用于播放的硬件 MIDI 输出?
我正在制作一个简单的应用程序来播放 Java 中的 MIDI 文件。
我正在使用javax.sound.midi
图书馆。
我可以正确检索我的 MIDI 输出设备(USB 到 MIDI 电缆)。
但是当我播放序列时,它总是在默认的声音合成器中播放,这是主机操作系统的通用 Midi (Soundfont) 播放。
我遇到的问题是更改默认的 MIDI 输出。
当我执行
我从扬声器中听到 MIDI 序列再现。
参考文档后
但是没有提到如何显式使用这个 Transmitter / Receiver 对并使用新的 Default Synthesizer 实例化 Sequencer 对象。我有正确的发射器和接收器。但是他们不是把MIDI弹出来的。
当我尝试
它似乎没有改变任何东西。
如何明确地将此接收器/发射器对与合成器一起使用,以便默认音序器使用我的 MIDI 输出端口?
audio - 较新版本的 JRE 不加载音库,但旧版本可以
我有以下代码尝试加载音库。我已经使用 JRE 1.6.03 和 1.6.43 在 Windows 7 上测试了代码。旧版本的 JRE (1.6.03) 工作正常,但新版本抛出异常。这是怎么回事?
.
您可以从这里下载音库:http ://www.oracle.com/technetwork/java/soundbanks-135798.html
java - 没有 MidiMessage 的 Java MIDI
有没有办法在不构造 MidiMessage 对象的情况下在 Java 中发送和接收 MIDI 消息?
我一直在研究一种概念验证的高性能实时音乐工作站原型,其中一个设计标准是普通的乐器演奏和信号处理一般不分配任何对象:只分配对象当用户更改设置时。(我想尽可能减少垃圾收集暂停的需要。)
显然,为每个细粒度的 MIDI 事件分配一个 MidiMessage 对象与我想要遵循的理念相反。javax.sound.sampled 包让我无需分配即可处理采样声音,但到目前为止,我一直无法找到在 Java 中使用 MIDI 而不分配大量对象的任何方法。
有没有办法让我只将 MIDI 设备中的字节读入缓冲区,而不是接收 MidiMessage 对象?MIDI 消息很容易解码,所以我很高兴没有 MidiMessage 类提供的“帮助”(因为您仍然需要解码消息中的字节,所以无论如何也没有多大帮助)。
c# - 在 C# 中创建 MIDI 曲调的 API/库?
请不要说这是一个愚蠢的问题。在参考谷歌上的几个链接后诚实地询问。
我需要一个在 C# 中生成 MIDI 音调/调音的 API。目前我正在实现一个没有任何 OMR API(使用我自己的算法)的“基本光学音乐识别和解释应用程序”。
至此识别部分成功。并留下口译部分。识别出的音符需要转换成 MIDI 曲调(文件)的地方。
到目前为止,我已经研究了 midi-dot-net:midi-dot-net
有人可以建议我一个好的 MIDI 创建 API。(上述过程)
此外,C# 是否像 JAVA javax.sound.midi那样有自己的用于 MIDI 生成的 API/库?
谢谢你。
java - 通过 javax.sound.midi.Sequencer 播放 MIDI 间歇性暂停
我有一小段 Clojure 代码使用该javax.sound.midi
库来播放 MIDI 文件。问题是,在播放时,序列经常暂停播放约 20-30 秒,然后恢复。这是代码片段:
为了确保,我javax.sound.midi.Synthesizer
在 REPL 检查了对象的延迟:
有没有人有使用这些库进行 MIDI 播放的经验,如果有,是什么原因导致播放间歇性暂停?以下是更多系统信息:
java - Java:根据播放的音乐在 JFrame 上绘制随机形状
我是trying to paint JFrame when music is played
,这些形状是随机创建的,没有计算,当出现some music played there pops up a JFrame and these shapes are painted there,
问题时,当我运行此代码时,没有绘制音乐声音和形状,只是弹出一个框架,没有别的,请检查此代码并帮助我纠正它..
java - 将新的 MidiOut 安装到 Java 中?
我想在我的系统上使用 Java 中的自定义 MIDI 驱动程序之一,但是当我尝试通过以下代码设置它时:
i
是请求的 MidiDevice 的 MidiDevice.Info。此代码引发异常:(此代码在 MidiPlayer 的第 58 行左右)
如何安装设备?