
Utilisation de la propriété beatPos d’évènement MIDI dans MainStage
Chaque évènement MIDI dans Scripter possède une propriété appelée « beatPos » qui porte la position de temps exacte de l’évènement. Cela permet de dater l’évènement le plus précisément possible et de gérer les boucles correctement. Cette propriété peut être utilisée à la place de timingInfo.blockStartBeat
. Consultez la section Utilisation de l’objet JavaScript TimingInfo.
Remarque : cette propriété ne fonctionne qu’avec l’instruction "var NeedsTimingInfo = true"
. Dans le cas contraire, elle affiche la valeur 0 et affiche un avertissement en cas de modification.
Dans MainStage, saisissez l’une des lignes suivantes dans la fenêtre de l’éditeur de scripts (elles donnent alors le même résultat) :
event.send()
event.sendAtBeat(event.beatPos)
Vous pouvez également utiliser l’une des lignes suivantes dans la fenêtre de l’éditeur de scripts (le résultat est identique) :
event.beatpos += 1; event.send()
event.sendAtBeat(event.beatPos + 1)
Exemple d’utilisation de la propriété beatPos
Vous pouvez utiliser la propriété beatPos pour envoyer un évènement MIDI à une position de temps précise. Dans l’exemple qui suit, un évènement de relâchement de note est envoyé un temps après la position de temps de l’évènement de déclenchement de note correspondant.
Remarque : vous pouvez également utiliser la méthode event.sendAtBeat(pos) pour envoyer un évènement à une position de temps précise. L’avantage de la propriété beatPos, c’est qu’il n’est pas nécessaire d’envoyer un évènement , vous pouvez simplement l’utiliser pour récupérer la position de temps exacte d’un évènement.
Le texte après /*…*/ correspond à des commentaires pour expliquer le code JavaScript.
var NeedsTimingInfo = true; /* needed to make beatPos work */
function HandleMIDI(event) {
var on = new NoteOn; /* make a new note on */
on.pitch = 60; /* set its pitch to C3 */
on.beatPos = event.beatPos; /* copy beat position from incoming event */
on.send(); /* send the note on */
var off = new NoteOff(on); /* make a note off using the note on to initialize its pitch value to C3 */
/* note that the beatPos does not get copied here */
off.beatPos = on.BeatPos+1; /* set the beat position of the note off event */
off.send(); /* send the note off event */
}