由于mudcube MIDI.js的文档在这方面似乎缺乏,我希望有人能够指出我正确的方向.说白了,使用midi.js,你如何调整midi音符的持续时间和结束?
在某些背景下,我创建了一个带有可拖动和可放置音符(jQuery-ui)的音乐人员小部件,可以添加或删除,以形成可以调用播放midi的序列.到目前为止,一切都有效,但是,当我试图用更复杂的时间扩展这个小部件的功能时,我遇到了一些问题.
似乎我只能在设定的持续时间内播放音符,并且尽管我付出了很多努力,却无法实现可能会改变持续时间的变化,例如半音符,四分音符,八个音符等.此外,和这可能是原因之一,MIDI.noteOff对输出没有可感知的影响.人们会认为给定音符将无限播放,直到调用MIDI.noteOff,然而,无论是否调用noteOff,所述音符都会播放然后逐渐消失.
我在这里说,我已经对SO和网络进行了广泛的研究,以便深入研究这个问题.我发现有类似问题的人并应用他们的修复程序,但他们的答案对我不起作用.看看我如何使用javascript和MIDI在Midi中播放任意音符.noteOff似乎无法可靠地工作
我有一系列名为noteSequence的音符,其中每个音符都是具有noteValue(即'C4')和noteDuration属性的对象,这些属性在convertToMidiSequence函数中被转换为midiSequence.一切都适用于旋律序列和和弦,我只想添加持续时间功能.我还应该说调整'delay'变量或noteDuration属性只会增加序列播放前的时间.然后在初始延迟之后,序列以与之前相同的时序播放.
感谢您花些时间来看一下,希望有所帮助.非常感谢.
以下是运行我的MIDI的适用代码:
$(document).ready(function() {
MIDI.loadPlugin({
soundfontUrl: GLOBALS.SOUNDFONT_URL,
instrument: 'acoustic_grand_piano',
callback: function() {
var channel = 0,
instrument = 0,
velocity = 127,
delay = 1;
MIDI.programChange(0, instrument);
}
});
});
function playCurrentSequence() {
playSequence(noteSequence);
}
function playSequence(sequence) {
var midiSequence = convertToMidiSequence(sequence);
for (var i = 0; i < midiSequence.length; i++) {
if (!(midiSequence[i] instanceof Array)) {
playNote(midiSequence[i], i);
}
else {
playChord(midiSequence[i], i);
}
}
}
function playNote(midiNote, notePositionInMeasure) …Run Code Online (Sandbox Code Playgroud) 当我使用 Chrome 开发者工具检查一个元素时,height 属性是灰色的。从这里
https://developers.google.com/web/tools/chrome-devtools/iterate/inspect-styles/#live-edit-a-do-node
这意味着我无法编辑它。
But my question is why I can't edit it? And how can I find out which style in style set this property? With other properties, I can expand it? but for this greyed out one? I can't expand it.