JW Lua: Copier/Coller Entre Portées

Questions & réponses concernant les scripts pour RGP Lua, JW Lua et les Finalescripts
Martin Marris
Messages : 6
Inscrit le : 3 décembre 2020 à 05:48
Version(s) de Finale  : 26 anglais
OS, RAM  : Windows 10
Homme/Femme  : H
Localisation : Sud de l'Angleterre.

JW Lua: Copier/Coller Entre Portées

Message 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
Odile
Modératrice
Messages : 1482
Inscrit le : 9 avril 2011 à 20:12
Version(s) de Finale  : Finale 27.4 angl.
OS, RAM  : Mac Ventura 13.1, M1max 64 Go RAM
Localisation : Montréal
Contact :

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

Message 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".
chris
Modérateur
Messages : 1236
Inscrit le : 28 novembre 2012 à 08:01
Version(s) de Finale  : v25 et 2014.5 anglais
OS, RAM  : PC - Windows 10
Homme/Femme  : H
Localisation : Région nantaise

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

Message 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/
Chris
Martin Marris
Messages : 6
Inscrit le : 3 décembre 2020 à 05:48
Version(s) de Finale  : 26 anglais
OS, RAM  : Windows 10
Homme/Femme  : H
Localisation : Sud de l'Angleterre.

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

Message 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
chris
Modérateur
Messages : 1236
Inscrit le : 28 novembre 2012 à 08:01
Version(s) de Finale  : v25 et 2014.5 anglais
OS, RAM  : PC - Windows 10
Homme/Femme  : H
Localisation : Région nantaise

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

Message 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.
Chris
Martin Marris
Messages : 6
Inscrit le : 3 décembre 2020 à 05:48
Version(s) de Finale  : 26 anglais
OS, RAM  : Windows 10
Homme/Femme  : H
Localisation : Sud de l'Angleterre.

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

Message 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
Modifié en dernier par Martin Marris le 3 décembre 2020 à 20:55, modifié 2 fois.
Martin Marris
Messages : 6
Inscrit le : 3 décembre 2020 à 05:48
Version(s) de Finale  : 26 anglais
OS, RAM  : Windows 10
Homme/Femme  : H
Localisation : Sud de l'Angleterre.

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

Message 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
Odile
Modératrice
Messages : 1482
Inscrit le : 9 avril 2011 à 20:12
Version(s) de Finale  : Finale 27.4 angl.
OS, RAM  : Mac Ventura 13.1, M1max 64 Go RAM
Localisation : Montréal
Contact :

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

Message 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...
chris
Modérateur
Messages : 1236
Inscrit le : 28 novembre 2012 à 08:01
Version(s) de Finale  : v25 et 2014.5 anglais
OS, RAM  : PC - Windows 10
Homme/Femme  : H
Localisation : Région nantaise

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

Message 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
Chris
Martin Marris
Messages : 6
Inscrit le : 3 décembre 2020 à 05:48
Version(s) de Finale  : 26 anglais
OS, RAM  : Windows 10
Homme/Femme  : H
Localisation : Sud de l'Angleterre.

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

Message 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.
Verrouillé