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.

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