问题标签 [midi-instrument]
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.
raspberry-pi - CSound 乐器的补丁存储
我的 CSound 乐器通过 MIDI 控制器消息更新了一些参数。它需要能够存储和检索参数集(补丁)并更新 MIDI 补丁更改消息上的参数。
除了从 Python 操作码构建它之外,还有其他 CSound 方法吗?
我想我可以在 PureData 中构建一个补丁管理器,但是这会对 Raspberry PI 造成超出实用性的负担吗?当不忙于更改补丁时,PureData 程序会完全占用 CPU 吗?
java - MIDI - 使用来自不同银行的乐器更改 MidiMessage 程序
我使用的默认合成器的音库包含各种不同的乐器。例如,这个代码片段......
...打印以下内容:
MidiChannel
我可以通过, programChange
方法和演奏这些库中的任何一种乐器noteOn
,就像这样(演奏库 1152 中的乐器 14,“Carillon”):
我想将程序更改事件添加到序列的轨道,以便我可以在序列中演奏“钟琴”乐器。我试着用一个ShortMessage
:
但是,当我在银行 1152 中寻找工具 14 时,这会将工具更改为银行 0 中的工具 14(“Tubular-bell”)。尝试将 ShortMessage 构造函数中的最后两个参数中的任何一个更改为 1152 会导致javax.sound.midi.InvalidMidiDataException
for数据字节值超出范围。其他 MidiMessage 子类似乎也不包含从其他银行加载工具的选项。
如何在 MidiEvent 的 MidiMessage 中使用来自不同银行的乐器?
c# - Midi-dot-net 声音播放两次
首先我不是专业程序员,但只是一个对优秀的库 Midi-Dot-Net 有一点问题的学生。
我使用 Midi-Dot-Net 库在 Visual Studio 中用 C# 语言编写一个简单的应用程序。但我遇到了一个非常令人困惑的问题。
我在 Form1.cs 中放了一些代码
因此,我放置了新的字符串并将其命名为 nutka,而 nutka 将在我的 USB MIDI 键盘上接收按下的音符的名称。然后我放置了 IF 语句,并将 nutka 与“A0”(键盘上的第一个音符)进行了比较。
然后,如果它是“A0”,我按下我的 outputDevice 播放特定音符。它会播放,但会播放两次,一次 - 当我按下键盘上的键(带有音符 A0)时,第二次 - 当我释放该键时。
我做了一个断点,public void NoteOn(NoteOnMessage msg)
并注意到一个应用程序在这里返回两次并播放了两次该音符,但仍然不知道为什么。
还有一件事,有一种方法public void NoteOff(NoteOffMessage message)
,但它似乎不起作用。
我实在想不通,我正在寻求任何帮助。
更新 ...更新... 更新
出现了另一个问题(由于CL和 Chris Dunaway的建议和Justin的逐步解释,第一部分得到了解决)。
谢谢贾斯汀 :) 我认为没有任何问题的生活是不可能的 :)
我clock.Schedule
只能播放 MIDI 声音,但我想播放示例钢琴音符(wav 文件格式),在 4-5 周内,我的大学将帮助我为每个音符录制自己的钢琴声音。我也想同时播放它们。
我以为一切都会好起来的,但现在……同时播放有问题。我试图检查三种可能性:
1)我试图从我拥有的基本音符库中播放钢琴声音并使用 SoundPlayer:
我将它用于具有不同 SoundPlayer 名称(取决于音符名称)的每个音符语句,我注意到的是 - 我不能同时播放音符。
2)所以我使用了下一个 WMP 库和 WindowsMediaPlayer:
例如:
好的......它同时播放,但看起来我播放的音符越多,或者我只是播放一首歌,我得到的延迟就越大,最后我的程序卡在播放任何东西......
3)我试图使用 Microsoft.DirectX.AudioVideoPlayback:
我开始了我的程序,按下一个键,然后砰!崩溃并显示错误消息:
当然我没有忘记使用:
现在我不知道我能一次又一次地做些什么——我需要一个有经验的人的帮助:)
c# - Midi-dot-net同时播放音符并具有高延迟
在用 noteOn 键事件解决问题后(谢谢贾斯汀),我注意到另外两个问题:延迟太高和不可能同时播放。
首先我使用 IF 语句:
这很好用,没有延迟,但它也允许我只使用 MIDI Pitch 而不是 .wav 文件。
当我使用其他可能性播放音符时(来自添加到资源的文件):
看起来和工作正常,但 SoundPlayer 不允许我同时播放音符。
我尝试的另一种方法是 WMP 库:
好的......它同时播放,但发生了一件有趣的事情,我播放的音符越多,延迟越大(我按下一个键和我听到声音之间的延迟),最后我的程序卡在播放任何东西(仍然收到 noteOn 消息)...看起来内存缓冲区突然消失了或类似的东西?
我试图检查的最后一件事是 DirectX 库:
构建和编译 - 没有问题,没有任何错误,但是当我按下我的 midi 设备上的一个键时,应用程序返回消息:
我的问题是- 是否可以将我的文件 (.wav) 添加到解决方案资源并延迟同时播放它们,这将允许我像使用普通钢琴一样演奏?普通钢琴我的意思是低延迟,几乎不明显的延迟。
vb.net - 在第一个字节之后将 3 个字节组合在一起
我有一个名为“MyHex.txt”的文本文件,该文件具有这些值
我正在用我的 Sub 像这样打开我的文件,并尝试检查数组中的第一个字节是否为“F0”,然后设置值。我需要将接下来的三个字节组合在一起,然后是接下来的三个字节,依此类推
更新:需要每三个字节对值进行分组。所以它们可以被解码
使用
更新 2:
删除 Sysex“标题”后,我留下了这个
第一次转储:
第二次转储
第 29 个字节和最后一个字节是唯一改变的字节。
java - 导出到 .jar 文件时,MIDI 乐器听起来不同
我制作了一个使用 java 声音 API 中的 MIDI 包合成声音的 java 程序,但是,当我将它导出到 .jar 文件时,播放的声音与我在 eclipse 中运行它时的声音完全不同。有谁知道它为什么这样做或如何解决这个问题?
可以在此处找到乐器列表:http ://www.hittrax.com.au/images/artists/gmgs.pdf
下面是我的一段代码
下图显示了我录制时的音频,第一个是 eclipse 上的声音,第二个是导出到 .jar 时的声音
java - 为什么我只得到一个钢琴音符(Java)?
我刚刚编写了垃圾音乐播放器的代码。每次我们给它两个整数:“乐器”和“节点”,它会播放那个乐器的节点。很简单。我试过了,但即使我更改了“乐器”(更改了输入中的 int),也只会播放钢琴音符。代码如下:
python - 在 Python Music21 库中播放鼓声
自从我开始阅读“用计算机制作音乐:Python 中的创造性编程”一书以来已经过去了几个星期,现在我在尝试使用这个库播放鼓声时被卡住了。我正在使用 Mit 的 music21 库,因为这本书提出的那个库对我不起作用(它被简单地称为“音乐”)。这是本书用于播放低音鼓声音的代码示例:
我尝试在 music21 中使用 Hi Hat 声音做同样的事情,但没有播放声音:
任何建议都会非常有帮助,因为除了它的网页之外,网络上几乎没有关于这个库的信息。
在此先感谢朱利安!
python - 如何使用 python 获取 midi 轨道乐器名称?
我发现的唯一方法是使用music21:
但它的输出不正确:
空的地方也是一个乐器名称,它只是无法读取它,但问题不在文件中,因为我可以将它正确导入到tuxguitar。此外,music21 无法粘贴大的 MIDI 文件并卡住。我尝试了 mido 库,但没有办法获取轨道乐器,我找到了一个属性,但不知道如何使用它。
如何使用 python 解析 midi 轨道乐器?
javascript - 使用 JavaScript 在浏览器中检测 Midi-piano 键盘事件的库
我想将 MIDI 钢琴键盘插入计算机的 USB 端口,并通过在浏览器中显示某些内容来响应按键事件。
有谁知道允许 JavaScript 与前端/浏览器中的 USB MIDI 键盘事件交互的库?
类似于:
链接到 index.html 的 script.js 文件:
谢谢!