MIDI.JS Bemærk varighed ændres ikke

som dokumentation for mudcube MIDI.js synes at mangle i denne henseende, jeg håber, at der er nogen, der måske kan pege mig i den rigtige retning. For at sige det klart, ved hjælp af midi.js, Hvordan justerer du varigheden og slutningen af midi-noter?

For nogle baggrund, Jeg har oprettet en musik personale kontrol med draggable og droppable noter, der kan tilføjes eller fjernes, for at danne sekvenser, som kan opfordres til at afspille midi. Alt fungerer så vidt det skal, Men da jeg forsøger at udvide funktionaliteten af denne kontrol med mere indviklet timing, har jeg kørt ind i nogle problemer.

det ser ud til, at jeg kun kan spille noterne med en bestemt varighed, og for al min indsats har jeg ikke været i stand til at implementere ændringer, der kan variere denne varighed for at sige, halv noter, kvart noter, otte noter osv. Også, og dette kan være en af årsagerne, MIDI.noteOff har ingen opfattelig effekt på output. Man skulle tro, at en given note ville spille på ubestemt tid indtil MIDI.noteOff kaldes, imidlertid, nævnte note vil spille og derefter trail off uanset om noteOff kaldes.

Lad mig sige her, at jeg har foretaget omfattende undersøgelser af SO og internettet generelt for at komme til bunden af dette. Jeg har fundet folk med lignende problemer og anvendt deres rettelser, men deres svar virker ikke for mig. Se hvordan spiller jeg vilkårlige noter i Midi med javascript og MIDI.noteOff ser ikke ud til at fungere pålideligt

jeg har en sekvens af noter kaldet notesekvens, hvor hver note er et objekt med noteValue (dvs. ‘C4′) og bemærkningsegenskaber, der konverteres til en midisekvens i funktionen converttomidisekvens. Alt fungerer godt med melodiske sekvenser og akkorder, jeg vil bare have varighedsfunktionaliteten tilføjet. Jeg skal også sige, at justering af’ delay ‘ – variablen eller notedurationsegenskaben kun tilføjer tiden, før sekvensen afspilles. Så efter den indledende forsinkelse spiller sekvensen med samme timing som før.

Tak fordi du tog dig tid til at se dette over og forhåbentlig hjælpe. Det ville være meget værdsat.

her er den gældende kode, der kører min 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(); }}

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.