Scripting en Lua

Le scripting dans Falcon repose sur UVIScript, un langage de script dédié construit sur le langage de script Lua. Les scripts de Falcon sont pour l’essentiel des effets MIDI aux capacités avancées, avec accès à tous les modules du moteur de synthèse de Falcon. Les scripts peuvent aussi définir leur propre interface, afin que vous puissiez interagir avec eux en temps réel.

Les UVIScripts sont enregistrés sous forme de documents texte avec l’extension .lua, et chargés avec le module Script Processor de Falcon. Pour des informations générales sur l’utilisation du module Script Processor, voir Interface > Onglet Events et Processeurs d’événements > Script Processor.

Exemple

Pour illustrer UVIScript, voici un exemple simple de script d’inversion de pitch (disponible comme preset d’usine dans le module Script Processor, sous UtilitiesInvert Pitch).

CenterPitch = Knob("Center Pitch", 60, 0, 127, true)

function onNote(e)
    local center = CenterPitch.value
    local delta = e.note - center
    local note = center - delta
    if note >= 0 and note <= 127 then
        playNote(note, e.velocity)
    end
end

function onRelease()
    --
end

Voici à quoi ressemble ce script dans le Script Processor de Falcon.

SCRIPT INVERT PITCH

Ce script crée un potentiomètre, qui règle la valeur de pitch centrale du script (ligne 1). Lorsqu’un événement Note-on survient (ligne 3), la valeur de pitch de la note est évaluée et modifiée par rapport à la valeur de pitch centrale (lignes 4-6), puis la note est jouée avec sa valeur de pitch modifiée (lignes 7-8). Par exemple, si le pitch central est réglé sur C3, le déclenchement d’un C2 jouera un C4 à la place.

La fonction onRelease vide absorbe les événements Note-off entrants au lieu de les transmettre. La note inversée n’en a pas besoin : une note lancée avec playNote sans durée est relâchée automatiquement lorsque la touche qui l’a déclenchée est relâchée.

Documentation complète

Pour en savoir plus sur l’écriture de vos propres UVIScripts, consultez la dernière documentation en ligne : uvi.net/uviscript

Pour en savoir plus sur le langage de script Lua sous-jacent, voir lua.org/docs.html