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
Comments
Pourrais tu joindre un zip avec les deux fichiers?
In reply to Pourrais tu joindre un zip by [DELETED] 5
Bonsoir,
merci Lasconic de tes réponses si rapides, t'es impressionnant! Voilà le zip.
Bonne réception et à bientôt.
Beber1
In reply to zip du plugin by Beber1_
Essaie de changer
for (var i = 0; i < cursor.chord().notes(); i++) {
par
for (var i = 0; i < cursor.chord().notes; i++) {
In reply to Essaie de changer for (var i by [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
In reply to changement moitié concluant by 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?
In reply to J'ai pas l'oreille assez by [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
In reply to J'ai pas l'oreille assez by [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?
In reply to En fait, pourquoi le plugin by Beber1_
La syntaxe de chord.notes a changé. Voir : Chord Object