Plugin qui ne marche plus

• 31 Mai 2010 - 08:37

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

En réponse à 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 à 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 à 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

Fichier attaché Taille
0076Vierdanck15Passamezzo.mscz 22.14 KB

Do you still have an unanswered question? Please log in first to post your question.