Page 1 sur 2

JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 19:22
par Martin Marris
Bonjour,

Je suis en train de m'initier à JW Lua. Tout va bien sauf que je n'arrive pas à copier/coller le contenu d'une portée vers une autre portée.

Je crois qu'il faut désigner une "région" mais je comprends mal le mécanisme.

Comment faire?

Merci d'avance.

Martin

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:01
par Odile
Pourquoi passer par JW ? Finale fait très bien cela tout seul, en glissant-déposant le contenu de la portée (ou de quelques mesures) sur une autre. Bien sûr il faut vérifier "Edit Filter".

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:15
par chris
Bonjour

Effectivement, cela doit être possible (je n'ai pas testé).
Voilà le code pour récupérer la région sélectionnée dans votre document et la copier dans un "clip file" :

Code : Tout sélectionner

local musicregion = finale.FCMusicRegion()
musicregion:SetCurrentSelection()
if musicregion:CopyMusic() then
    -- code à ajouter
end 
Ensuite il vous faut définir une région pour la destination de la copie.
Et enfin vous utiliserez les méthodes "PasteMusic()" et "ReleaseMusic()" de cette région.

Pour des renseignements sur "JW Lua" :
Wiki

Et vous pouvez aussi vous inscrire sur la liste de diffusion de "JW Lua" :
https://jwmusic.nu/pipermail/jwlua_jwmusic.nu/

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:25
par Martin Marris
Odile a écrit : 3 décembre 2020 à 20:01 Pourquoi passer par JW ? Finale fait très bien cela tout seul, en glissant-déposant le contenu de la portée (ou de quelques mesures) sur une autre. Bien sûr il faut vérifier "Edit Filter".
Bien sûr. Notre script JW Lua fait partie d'une série de routines exécutées sur plusieurs centaines de grosses partitions d'un de nos clients. Il s'agit "d'exploser" un grand nombre de partitions "condensées" pour que chaque instrument aie sa propre portée. Depuis plusieurs mois nous faisons l'opération "à la main" en utilisant le mécanisme que vous décrivez. Dans ce cas, nous essayons d'automatiser une opération humaine qui est extrêmement répétitive. Les partitions d'origine sont très homogènes, donc is devrait être possible de gagner beaucoup de temps.

Cela devrait permettre de réduire un processus qui prend environ 5 minutes pour un rédacteur humain, à quelques secondes par le biais d'un script JW Lua.

(Nous utlilisons dèjà des centaines de scripts, surtout du côté de Sibelius mais aussi Finale. Mais c'est la première fois que j'essaie JW Lua.)

Martin

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:33
par chris
Il faut que savoir que "JW Lua" est toujours en version "Beta" et y restera probablement. Cela veut dire que tout n'a pas été implémenté et qu'il y a quelques bugs (mais évidemment, encore merci à Jari). Par exemple, il n'est pas possible de créer des portées de percussions. Je me souviens avoir voulu créer un script pour transférer des portées d'une partition à une autre (ou simplement leur définition), mais j'avais du abandonner.

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:40
par Martin Marris
chris a écrit : 3 décembre 2020 à 20:15 Voilà le code pour récupérer la région sélectionnée dans votre document et la copier dans un "clip file" ....
Oui je sais, mais dans ce cas il n'y a pas d'intervention humaine (pas de "sélection"). Il s'agit simplement de copier/coller le contenu d'une portée vers une autre, automatiquement, suivant certains critères définis dans le script.

Pour être plus clair, voici un exemple. Une portée "Flûte/Hautbois" comportant une ligne mélodique. Il s'agit de la répartir vers deux portées "un seul instrument" donc une portée Flûte, une portée Hautbois. (Parfois en unison, parfois en octaves, mais ça c'est un problème pour plus tard, et relativement facile à résoudre programmatiquement.)

Cela doit être très simple. Mais après plusieurs heures d'essais sûr JW Lua je ne comprends pas très bien comment fonctionne le copier/coller.

Martin

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 20:50
par Martin Marris
chris a écrit : 3 décembre 2020 à 20:33 Par exemple, il n'est pas possible de créer des portées de percussions.
Pourtant cela marche pour nous, peut-être que cette lacune est maintenant comblée? Par exemple ceci fait partie d'un de nos scripts:

local staffID = finale.FCStaves.Append()
if staffID then
-- Load the created staff
local staff = finale.FCStaff()
staff:Load(staffID)
-- Set the virtual instrument (in the Score Manager):
staff.InstrumentUUID = finale.FFUUID_DRUMSET
--Set the instrument names
local strName =finale.FCString()
strName.LuaString="Percussion"
staff:SaveNewFullNameString (strName)
local strAbrev =finale.FCString()
strAbrev.LuaString="Perc."
staff:SaveNewAbbreviatedNameString (strAbrev)

staff.DefaultClef = 12

staff:Save()
end


Amicalement,

Martin

Re: JW Lua: Copier/Coller Entre Portées

Posté : 3 décembre 2020 à 23:31
par Odile
Dans ce cas, nous essayons d'automatiser une opération humaine qui est extrêmement répétitive.
D'accord! je vous souhaite de trouver une solution...

Re: JW Lua: Copier/Coller Entre Portées

Posté : 4 décembre 2020 à 08:22
par chris
En ce qui concerne les portées "percussion" (j'avais fait simple), je crois me souvenir que c'est au niveau des "drum maps" (percussion layout) qu'il y a un problème.

Sinon, à part la fonction de copie de "FCMusicRegion()" (qui ne convient pas à votre problème), ce n'est pas très simple. Il me semble qu'il faudrait copier accord ("entry") par accord.
Vous pouvez trouvez des exemples de scripts sur le wiki : ICI

Re: JW Lua: Copier/Coller Entre Portées

Posté : 4 décembre 2020 à 08:32
par Martin Marris
chris a écrit : 4 décembre 2020 à 08:22 Sinon, à part la fonction de copie de "FCMusicRegion()" (qui ne convient pas à votre problème), ce n'est pas très simple. Il me semble qu'il faudrait copier accord ("entry") par accord.
Je suis d'accord, il me semble que le copier/coller n'est pas forcément la bonne solution. Ce matin, je vais explorer les autres méthodes. De toute manière, une fois que la musique soit copiée sur l'autre portée, elle devra être manipulée pour changer la tessiture de certaines notes ou pour éliminer une doublure en octave.

Je viens de poser la même question sur le forum des développeurs JW Lua et si j'obtiens une bonne réponse je la partageras ici.