Plugin qui ne marche plus
Bonjour à tous,
voici le plugin que j'avais fait (grace à Lasconic d'ailleurs) pour écouter les partitions sous différents tempéraments inégaux. Tant que j'avais Musescore0.9.5, c'était "tip-top".
Mais une mise à jour du système (de Ubuntu 9.10 à Ubuntu 10.04) m'a fait passer à Musescore 0.9.6 et là, la fonction tempéraments inégaux plante le logiciel immédiatement, cela fait quitter à la hussarde à l'instant où l'on clique sur OK.
Merci, à bientôt j'espère!
B
Voici le contenu du plugin placé dans le répertoire "plugins" de mscore:
PREMIER FICHIER : temperaments.js
//=============================================================================
// MuseScore
// Linux Music Score Editor
// $Id:$
//
// Tuning system plugin
// Alter note tuning according to selected tuning system
// To add a tuning system, you need to an element in the combo of tuningSystem.ui
// Then, you need to define the difference in cents between the degrees of
// the "natural midi tuning" and the given tuning system in the tunings array below.
//
// Copyright (C)2008 Werner Schweer and others
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//=============================================================================
//
// This is ECMAScript code (ECMA-262 aka "Java Script")
//
//This array contains the difference between natural tuning and tuning systems
var tunings = [];
// C C# Db D D# Eb E F F# Gb G G# Ab A A# Bb B
tunings[0] = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; // egal
tunings[1] = [ 10.3, -13.7, -13.7, 3.4, 20.0, 20.0, -3.4, 13.7, -10.3, -10.3, 6.8, -17.1, -17.1, 0.0, 17.1, 17.1, -6.8 ]; //mesotonique
tunings[2] = [ 4.9, -4.9, -4.9, 8.8, -1.0, -1.0, -8.8, 2.9, -4.9, -4.9, 6.8, -2.9, -2.9, 0.0, 1.0, 1.0, -6.8 ]; //kyrnberger2
tunings[3] = [ 9.8, -7.8, -7.8, 5.9, 3.9, 3.9, 2.0, 7.8, -2.0, -2.0, 3.9, -5.9, -5.9, 0.0, 13.7, 13.7, -3.9 ]; //werkmeister4
tunings[4] = [ 10.3, -5.5, -5.5, 3.4, 4.1, 4.1, -3.4, 13.7, -10.3, -10.3, 6.8, -0.7, -0.7, 0.0, 8.9, 8.9, -6.8 ]; //marpourg
tunings[5] = [ 7.0, -5.8, -5.8, 2.3, 10.5, 10.5, -2.3, 9.4, -5.2, -5.2, 4.7, 6.0, 6.0, 0.0, 9.9, 9.9, -4.7 ]; //schlick
tunings[6] = [ 4.9, -2.9, -2.9, 1.6, 1.0, 1.0, -1.6, 2.9, -4.9, -4.9, 3.3, -1.0, -1.0, 0.0, 1.0, 1.0, -3.3 ]; //barca
tunings[7] = [ 5.9, 0.0, 0.0, 2.0, 3.9, 3.9, -2.0, 7.8, -2.0, -2.0, 3.9, 2.0, 2.0, 0.0, 5.9, 5.9, -3.9 ]; //tartini en fa
tunings[8] = [ -5.9, -15.6, -15.6, -2.0, -11.7, -11.7, 2.0, -7.8, -17.6, -17.6, -3.9, -13.7, -13.7, 0.0, -9.8, -9.8, 3.9 ]; //pythagoricien
//---------------------------------------------------------
// init
// this function will be called on startup of mscore
//---------------------------------------------------------
function init()
{
// print("test script init");
}
//-------------------------------------------------------------------
// run
// this function will be called when activating the
// plugin menu entry
//
// global Variables:
// pluginPath - contains the plugin path; file separator is "/"
//-------------------------------------------------------------------
function run()
{
var loader = new QUiLoader(null);
var file = new QFile(pluginPath + "/temperaments.ui");
file.open(QIODevice.OpenMode(QIODevice.ReadOnly, QIODevice.Text));
form = loader.load(file, null);
form.buttonBox.accepted.connect(accept);
form.show();
}
//---------------------------------------------------------
// accept
// called when user presses "Accept" button
//---------------------------------------------------------
function accept()
{
//get selected tuning
var value = form.cbTuning.currentIndex;
//pick the right tuning in tunings array
var tuning = tunings[value];
var cursor = new Cursor(curScore);
curScore.startUndo();
for (var staff = 0; staff < curScore.staves; ++staff) {
cursor.staff = staff;
for (var v = 0; v < 3; v++) {
cursor.voice = v;
cursor.rewind(); // set cursor to first chord/rest
while (!cursor.eos()) {
if (cursor.isChord()) {
for (var i = 0; i < cursor.chord().notes(); i++) {
var note = cursor.chord().note(i);
var pitch = note.pitch % 12;
var name = note.name;
var idx = getIndex(pitch, name);
note.tuning = tuning[idx];
}
}
cursor.next();
}
}
}
curScore.endUndo();
}
function getIndex(pitch, name){
var result;
switch (pitch) {
case 0: //C
result = 0;
break;
case 1: //C# or Db
result = (name[0] == 'c') ? 1:2;
break;
case 2: //D
result =3;
break;
case 3: //D# or Eb
result = (name[0] == 'd') ? 4:5;
break;
case 4: //E
result = 6;
break;
case 5: //F
result = 7;
break;
case 6: //F# or Gb
result = (name[0] == 'f') ? 8:9;
break;
case 7: //G
result = 10;
break;
case 8: //G# or Ab
result = (name[0] == 'g') ? 11:12;
break;
case 9: //A
result = 13;
break;
case 10: //A# or Bb
result = (name[0] == 'a') ? 14:15;
break;
case 11: //B
result = 16;
break;
default:
result =0;
break;
}
return result;
}
//---------------------------------------------------------
// menu: defines were the function will be placed
// in the MuseScore menu structure
//---------------------------------------------------------
var mscorePlugin = {
menu: 'Plugins.Temperaments inegaux',
init: init,
run: run
};
mscorePlugin;
DEUXIEME FICHIER : temperaments.ui
<?xml version="1.0" encoding="UTF-8"?>
Dialog
0
0
288
98
Choisir le tempérament
Tempérament:
Tempérament égal
Mésotonique
Kyrnberger II
Werkmeister IV
Marpourg
Schlick
Barca
Tartini-Vallotti en fa
Accord pythagoricien
Qt::Horizontal
QDialogButtonBox::Cancel|QDialogButtonBox::Ok
buttonBox
accepted()
Dialog
accept()
248
254
157
274
buttonBox
rejected()
Dialog
reject()
316
260
286
274
Commentaires
Pourrais tu joindre un zip avec les deux fichiers?
En réponse à Pourrais tu joindre un zip par [DELETED] 5
Bonsoir,
merci Lasconic de tes réponses si rapides, t'es impressionnant! Voilà le zip.
Bonne réception et à bientôt.
Beber1
En réponse à zip du plugin par Beber1_
Essaie de changer
for (var i = 0; i < cursor.chord().notes(); i++) {
par
for (var i = 0; i < cursor.chord().notes; i++) {
En réponse à Essaie de changer for (var i par [DELETED] 5
Bonjour à tous, bonjour Lasconic,
j'ai changé (ligne 96 de temperaments.ui) en supprimant les deux paranthèses, le logiciel ne quitte plus à la hussarde (ouf!), mais il n'y a pas d'effet sur l'accordage.
D'autre part, (j'en parle car c'est peut-être lié), quand je souhaite ouvrir les fichiers créés avec 0.9.5, cela quitte à la hussarde aussi...
Une idée???
En attendant, je désinstalle tout et je recommence toute l'installation pour voir.
Merci
Beber1
En réponse à changement moitié concluant par Beber1_
J'ai pas l'oreille assez affutée pour vérifier que ça fonctionne à la lecture mais pour moi avec la partition de démo, les notes sont bien décalées. Je vérifie avec clic droit->Propriétés de la note.
Pour les fichiers en 0.9.5, peux tu en joindre un pour qu'on puisse reproduire le crash?
En réponse à J'ai pas l'oreille assez par [DELETED] 5
Voilà un fichier qui me crash tout.
D'autre part, je commence à avoir des doutes sur mon installation, en effet, en changeant de fonte, rien du tout, pas meme du son, et voilà ce que je trouve en démarrant par un terminal :
det@Bebert2:~$ mscore
PulseAudio found, but no need to suspend. Starting mscore.real...
Alsa_driver: the interface doesn't support mmap-based access.
init ALSA audio driver failed
init ALSA driver failed
bt_audio_service_open: connect() failed: Connexion refusée (111)
bt_audio_service_open: connect() failed: Connexion refusée (111)
bt_audio_service_open: connect() failed: Connexion refusée (111)
bt_audio_service_open: connect() failed: Connexion refusée (111)
preferences.checkUpdateStartup: 168
lastupdate: 01.06.2010 10:55:52.169
J'y connais rien, mais cela ne me semble pas innocent)))
Beber1
En réponse à J'ai pas l'oreille assez par [DELETED] 5
En fait, pourquoi le plugin marchait avec la 0.9.5 et plus avec la 0.9.6? Ces deux paranthèses ligne 96 servaient correctement?
En réponse à En fait, pourquoi le plugin par Beber1_
La syntaxe de chord.notes a changé. Voir : Chord Object