MIDI.JS doba trvání poznámky se nemění

jako dokumentace pro mudcube MIDI.zdá se, že js v tomto ohledu chybí, doufám, že existuje někdo, kdo by mě mohl nasměrovat správným směrem. Jednoduše řečeno, pomocí midi.js, jak upravíte dobu trvání a konec midi poznámek?

pro některé pozadí jsem vytvořil widget pro hudební zaměstnance s přetahovatelnými a droppable poznámkami (jQuery-ui), které lze přidat nebo odebrat, a vytvořit sekvence, které lze vyzvat k přehrávání midi. Všechno funguje tak daleko, jak by mělo, nicméně, jak se snažím rozšířit funkčnost tohoto widgetu se složitějším načasováním, narazil jsem na některé problémy.

zdá se, že mohu hrát poznámky pouze v nastavené době trvání a přes veškeré mé úsilí jsem nebyl schopen implementovat změny, které by se mohly lišit v této době, poloviční poznámky, čtvrtinové poznámky, osm poznámek atd. Také, a to může být jedna z příčin, MIDI.noteOff nemá žádný vnímatelný vliv na výstup. Člověk by si myslel, že daná nota bude hrát donekonečna až do MIDI.noteOff se nazývá, nicméně, řekl poznámka bude hrát a pak stezka off bez ohledu na to, zda se nazývá noteOff.

dovolte mi říci, že jsem provedl rozsáhlý výzkum na SO a webu obecně, abych se dostal na konec tohoto. Našel jsem lidi s podobnými problémy a použil jsem jejich opravy, ale jejich odpovědi pro mě nefungují. Podívejte se, jak mohu hrát libovolné poznámky v Midi s JavaScriptem a MIDI.noteOff nefunguje spolehlivě

mám posloupnost Not s názvem noteSequence, kde každá nota je objekt s noteValue (tj. ‚C4‘) a noteDuration vlastnosti, které jsou převedeny na midiSequence ve funkci convertToMidiSequence. Všechno funguje dobře s melodickými sekvencemi a akordy, chci jen přidat funkčnost trvání. Měl bych také říci, že nastavení proměnné „delay“ nebo vlastnosti noteDuration přidává pouze čas před přehráním sekvence. Poté po počátečním zpoždění sekvence hraje se stejným načasováním jako dříve.

Děkujeme, že jste si udělali nějaký čas, abyste se na to podívali a doufejme, že pomůžete. Bylo by to velmi oceněno.

zde je příslušný kód, který spouští můj 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 instanceof Array)) { playNote(midiSequence, i); } else { playChord(midiSequence, i); } }}function playNote(midiNote, notePositionInMeasure) { var channel = 0, velocity = 127, delay = 1; MIDI.noteOn(channel, midiNote, velocity, delay + notePositionInMeasure + 1); MIDI.noteOff(channel, midiNote, delay + midiNote.noteDuration + notePositionInMeasure + 1); MIDI.Player.stop();}function playChord(midiChord, notePositionInMeasure) { var channel = 0, velocity = 127, delay = 1; for (var i = 0; i < midiChord.length; i++) { MIDI.noteOn(channel, midiChord, velocity, delay + notePositionInMeasure + 1); MIDI.noteOff(channel, midiChord, delay + midiChord.noteDuration + notePositionInMeasure + 1); MIDI.Player.stop(); }}

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.