bonjour,

Je dois créer un plugin pour MuseScore qui peut étendre/réduire les durées d'un ensemble de notes sélectionnées selon un pourcentage choisi
MuseScore le fait pour un pourcentage =50% et 200% mais pas pour un autre pourcentage.

Voici mon script qml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
import MuseScore 3.0
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.3
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1
 
 
 
MuseScore {
    menuPath: "Plugins.ScaleNotes"
    description: "Elargir/Rétrécir les durées des notes sélectionnées en pourcentage"
 
onRun: {
        if (!curScore) {
            error("No score open.\nThis plugin requires an open score to run.\n")
            Qt.quit()
        }
    }
 
    function applyDurationPercentage(score, percentage) {
        var selectedElements = score.selectedNotes
        for (var i = 0; i < selectedElements.length; ++i) {
            var element = selectedElements[i]
            if (element.isChord()) {
                var chord = element.toChord()
                for (var j = 0; j < chord.notes.length; ++j) {
                    var note = chord.notes[j]
                    note.duration *= percentage / 100
                }
            } else {
                var note = element.toNote()
                note.duration *= percentage / 100
            }
        }
    }
 
 
 Rectangle {
        color: "lightgrey"
        anchors.fill: parent
 
        GridLayout {
            columns: 2
            anchors.fill: parent
            anchors.margins: 10
            Label {
                text: qsTr("poucentage(0 to 1000): ")
            }
           SpinBox {
    id: velocityOffset
    maximumValue: 1000
    minimumValue: 0
    value: 0
    editable: true // Permet à l'utilisateur d'entrer directement une valeur
 
    // Gestionnaire d'événement appelé lorsque la valeur du SpinBox change
    onValueChanged: {
        var getValeur = velocityOffset.value; // Récupérer la valeur du SpinBox
        console.log("Nouvelle valeur de percentage:", percentage);
        // Utilisez la valeur de percentage comme vous le souhaitez
    }
  }
 
}
   }
 
  Button {
                id: applyButton
                text: qsTranslate("PrefsDialogBase", "Apply")
                onClicked: {
                    applyDurationPercentage(score, getValeur) 
                    Qt.quit()
                }
            }
}
Pourquoi aucune fenêtre contextuelle ne s'affiche lorsqu'on clique sur ce plugin après avoir crée une partition?


merci de votre aide