Les nouvelles fonctionnalités d'ornements associés aux clés nous ayant contraints à changer le format des fichiers de partition, nous en profitons pour réfléchir à d'autres améliorations qui pourraient être mises en place. Ainsi, nous avons continué nos expérimentations sur l'amélioration de la gestion des paroles, que Sylvain avait demandé il y a maintenant 5 ans. Un clic droit sur les cellules de paroles permettrait de les décaler vers le bas pour faire apparaître des lignes vides, ou vers le haut pour supprimer ces lignes. Une petite icône apparaitrait également dans le coin supérieur gauche de la première cellule de la sélection, et un clic ouvrirait un menu permettant de masquer les lignes désirées (ergonomiquement, tout n'est pas encore bien défini, nous continuons à chercher). Ces opérations de décalage ou de masquage s'effectueraient sur l'ensemble des mesures sélectionnées, permettant ainsi par exemple d'espacer les lignes afin de gérer les situations complexes comme celle présentée dans cette partition: |
|
|
by Olivier Guillion | | |
| |
|

Attention, c'est long et technique. Mais on y a pataugé dedans pendant plus d'une journée, alors autant faire profiter tout le monde des éclaboussures ! Avec Ubuntu 11.10, le compilateur C/C++ (gcc, g++) et l'éditeur de liens (ld) sont passés en version 4.6.1. Il y a plusieurs changements dans ces nouvelles versions des outils qui brisent la compatibilité ascendante avec les anciens projets. Obliger les programmeurs à reprendre leurs projets existants pour arriver à les faire fonctionner comme avant, avec le nouveau compilateur, est à notre avis une faute grave dans la conception d'un outil de développement. Devoir de mathématiques: Obligez 10000 personnes à perdre leur temps pendant une heure, puis calculez la somme de temps perdu. Réponse: 417 jours, soit plus d'un an de travail gâché. Maintenant, considérez que nous n'y avons pas perdu une heure, mais plus d'un jour... Donc, pour aider les autres programmeurs qui googlent par là, voici les problèmes que nous avons rencontrés et comment nous les avons résolus. Pour rappel, nous avions des projets fonctionnels sur Ubuntu 11.04, sous Code:Blocks 10.05 Principalement, nous compilions une librairie bas niveau (accès graphiques et sonores) et un programme principal. Après passage à Ubuntu 11.10, lors de la compilation, les "warnings" (avertissements) apparaissent comme des erreurs, et la génération ne passe pas l'étape de l'édition de liens. Premier problème: la traduction de GCC le compilateur C ou C++ (GCC/G++) est un outil en ligne de commande que les puristes utilisent directement. Le fondement de Linux est qu'il est possible d'utiliser ces outils de base au sein d'un programme plus évolué, qui crée la ligne de commande de manière transparente, et analyse les résultats pour les présenter de manière agréable. C'est ce que fait Code:Blocks. Mais, pour analyser les résultats des appels en ligne de commande, il faut que ceux-ci soient dans un format facilement analysable, et surtout que ce format soit documenté et fixe. Or, il semble que dans la dernière version du compilateur GCC/G++, sur un système Ubuntu en français, les messages d'erreur et d'avertissement aient été traduits en français ! Au lieu de "Warning" on obtient "attention", etc. Pour analyser automatiquement les sorties, il faudrait que Code:Blocks connaisse par exemple le mot "attention" dans la centaine de langues disponibles pour Linux ?!! Nous avons donc modifié les paramètres de Code:Blocks pour lui faire comprendre ces nouveaux messages en français dans le texte: - "Settings > Compiler & Debugger > Global compiler settings" onglet "Other settings" - Cliquer "Advanced options..." - Onglet "Output parsing" Editer "Preprocessor warning" Regular expression: Code:([][{}() \t#%$~A-Za-z0-9_:+/\.-]+):([0-9]+):([0-9]+):[ \t]([Aa]ttention.:[ \t].*) |
| Editer "Compiler warning" Regular expression: même chose : Code:([][{}() \t#%$~A-Za-z0-9_:+/\.-]+):([0-9]+):([0-9]+):[ \t]([Aa]ttention.:[ \t].*) |
| - Remonter "Compiler note" au-dessus de "preprocessor error" dans la liste Deuxième problème: l'éditeur de liens ld Après compilation, l'édition de liens de notre projet échoue avec un message d'erreur du type : Quote: /usr/bin/ld: /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgtk-x11-2.0 .so: undefined reference to symbol 'gdk_window_focus' /usr/bin/ld: note: 'gdk_window_focus' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgtk-x11-2.0 .so so try adding it to the linker command line /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgtk-x11-2.0 .so: could not read symbols: Invalid operation collect2: ld a retourné 1 code d'état d'exécution |
| En gros, si on traduit en français : la fonction ne se trouve pas dans la librairie demandée. Essayez donc d'ajouter cette librairie à votre projet (ce qui est à la fois déjà fait, puisqu'il cherche déjà dedans, et inutile puisque la fonction n'y est apparemment pas). De toute façons, aucune fonction n'est trouvée dans cette librairie. Voila. Je pense que, dans la série "messages d'erreur incompréhensibles et inutiles", ce n'est battu que par "erreur inconnue à un endroit indéterminé". Après de longues recherches, voici ce que nous avons trouvé : dans cette version l'éditeur de liens ld est devenu beaucoup plus strict dans la gestion des fonctions utilisées par une librairie, elle-même utilisée par un programme. Auparavant, si on liait le programme Harmony à la librairie Acam, et que cette dernière appelait des fonctions de la librairie gdk, ça fonctionnait. Maintenant, non. La manière de gérer les librairies partagées, avec leur versionnement, étant tellement compliquée, mal documentée et apparemment incompréhensible pas seulement pour nous, que plutôt que de tenter d'adapter nos projets au nouveau comportement de l'éditeur de liens, nous avons modifié ce comportement pour le rendre identique à celui d'avant. Pour cela, dans les "Build options" de nos projets, onglet "Linker settings", cadre "Other linker options", il a fallu ajouter l'option -Wl,--no-as-needed avant la ligne `pkg-config gtk+-2.0 alsa libcurl --libs` Une indication du nom de cette option aurait été bienvenue dans le message d'erreur lui-même, et nous aurait évité de perdre quelques poignées de cheveux supplémentaires. En conclusion Plus d'une journée de perdue pour simplement recompiler nos programmes. Maintenant seulement, on s'attaque aux divergences dans la gestion des fenêtres qui rendent notre programme incompatible avec le nouvel Ubuntu. Cela va probablement prendre un jour de plus (aux dernières nouvelles, cela semblerait provenir d'un bug dans la fonction gtk_window_set_opacity qui permet de créer des fenêtres semi-transparentes). Et ça, c'était pour passer de la version d'Ubuntu 11.04 à 11.10. On n'ose même pas imaginer sans de bonnes sueurs froides ce que sera le passage à la version 12.0... On peut critiquer Windows tant qu'on veut, mais nous avons eu moins de problèmes à passer 4 versions majeures de Windows pendant 15 ans (les programmes se sont toujours recompilés, et les ajustements étaient minimes) que de gérer les incompatibilités lors d'une mise à jour mineure d'Ubuntu comme celle-ci. Ca ne laisse rien présager de bon, et on en vient à se demander si, en commençant à s'intéresser à Linux, on n'a pas coincé la manche de notre chemise dans un hachoir à viande. |
|
|
by Olivier Guillion | | |
| |
|

Nous avons ajouté une fonctionnalité permettant de joindre les portées des systèmes par une ligne verticale du coté droit. Durant nos recherches préliminaires, nous n'étions pas tombés sur ce genre de partition, mais les membres du forum nous ont fait savoir que cela existait, donc ce sera dans la prochaine version. Nous étudions la possibilité d'ajouter des effets de type "graphisme", comme demandé par Danièl. En fonction de la complexité de la mise en place, et des risques que cela fera courir à la stabilité générale du programme, nous l'implémenterons dans cette prochaine version, ou attendrons la suivante. Nous avons installé la dernière version d'Ubuntu (11.10). Nos applications s'installent mais Harmony ne démarre pas, à cause d'une erreur que nous avons commise dans la liste des dépendances à des librairies partagées. Ceci pourra âtre corrigé assez facilement. Par contre, dans Melody (et donc à coup sûr également dans Harmony lorsqu'il se lancera), il y a un problème dans la gestion des fenêtres de menu. La programmation de toute cette partie (fenêtrage, passage des fenêtres à l'avant ou arrière-plan, etc) étant un véritable casse-tête, ça promet d'être chaud. Aucun rapport, mais j'en profite ici pour maudire Firefox, qui lorsqu'on a tapé un gros texte dans un champ de saisie, et qu'on appuie les touches Ctrl W (fermer) à la place de Ctrl C (copier), ferme la fenêtre et perd le texte en question sans sourciller. C'est la seule application à ma connaissance qui ne demande aucune confirmation lorsque l'utilisateur détruit son travail de manière irréparable. Ca aurait coûté quoi de poser une petite question lorsque l'utilisateur a tapé plus de 200 caractères sur une page? (A moins que ça existe et que je n'aie pas trouvé l'option?) |
|
|
by Olivier Guillion | | |
| |
|

C'est avec un pincement au coeur que nous avons appris la disparition de Dennis Ritchie, pionnier de l'informatique et demi-dieu de la communauté des programmeurs. En créant, avec quelques autres, le langage C, il a permis à de nombreux passionnés des années 80 de pouvoir enfin porter facilement leur travail d'un type de micro-ordinateur à l'autre sans avoir besoin de tout réécrire. Facile à lire, rapide, puissant et portable, ce langage a brisé la règle de non-interopérabilité qu'avaient mise en place les constructeurs pour garder leurs utilisateurs-programmeurs captifs. Notre premier programme en C, nous l'avons écrit vers le milieu des années 80, et ça a été la fin d'une souffrance, celle de l'écriture intégralement en assembleur. Nous n'avons plus jamais quitté le C depuis, et nos fréquentes excursions vers d'autres langages dits de plus haut niveau n'ont jamais réussi à nous convaincre de l'utilité de l'abandonner. Nous remercions donc ce programmeur ayant changé la vie des autres générations de programmeurs, pour le vent de liberté qu'il a fait souffler sur la communauté (n'oublions pas qu'il est également à l'origine d'Unix). Ce vent souffle encore aujourd'hui, en des temps ou les fabricants de matériel, nostalgiques des cloisons bien étanches séparant les premiers micro-ordinateurs, veulent nous enfermer à nouveau dans des langages propriétaires, des comités de vérification des applications, ou des plateformes imposées de distribution des logiciels. Bravo et merci, Dennis ! |
|
|
by Olivier Guillion | | |
| |
|

Nous avons commencé à implémenter les imports de formats graphiques compressés sur les différentes plateformes. Sur Macintosh, les fichiers PNG et JPG peuvent maintenant être utilisés en objet libre de type "image", ou en objet graphique associé à la portée. Sur Linux, ça commence à fonctionner, les fichiers PNG sont presque gérés (il y a un décalage graphique du résultat) Sur Windows enfin, ça ne fonctionne pas encore. Nous avons dû passer, pour les exports, par GDI+, la couche graphique C++ de Windows, et nous essayons également de l'utiliser pour les imports. Cela ne s'avère pas évident de faire fonctionner GDI+ sur nos objets graphiques ancien format (GDI tout court). On progresse cependant. Par contre, utiliser GDI+ risque de perturber sévèrement la compatibilité avec les anciennes versions de Windows (95 et 98/ME). Nous allons tout de même essayer de faire en sorte que, sur ces systèmes, les imports/exports dans les formats d'image complexes ne soient pas possibles, mais que le reste du programme continue à fonctionner normalement. |
|
|
by Olivier Guillion | | |
| |
|

Nous avons installé la pré-version de Windows 8 sur une machine virtuelle. Ce nouveau système, pour l'instant, ressemble beaucoup à Windows 7. Le premier changement visible est la disparition du menu démarrer, remplacé par un écran présentant les diverses actions possibles. A noter que sur notre machine virtuelle dotée d'un pilote graphique "de base", sans prise en compte des cartes accélératrices 3D ou autres, le système gère maintenant la transparence dans les titres des fenêtres ou les effets graphiques de transition (mouvement, repliement) lors du passage d'une page à une autre. Nous avons pu télécharger, installer et exécuter la version beta d'Harmony Assistant sur ce système sans rencontrer de problème particulier. Apparemment, la compatibilité semble donc assurée. En parallèle, nous avons continué à corriger et améliorer Harmony Assistant: Des crashs dans l'édition des partitions en mode grégorien étaient apparus à l'occasion de la version beta. Ce sera corrigé dans la suivante. Nous avons réécrit la fonction de création des paroles par défaut de Virtual Singer ("La La La") qui pouvait présenter un défaut sur certaines portées, notamment en grégorien. |
|
|
by Olivier Guillion | | |
| |
|

Le problème de plug-in dans Firefox 7 version Mac a pu être résolu. Il semble que cette version du navigateur ne charge pas automatiquement le fichier ressource qui est situé dans le bundle du plug-in. Nous l'avons donc fait nous-même lors du lancement du plug-in, mais cela ne nous semble pas normal. Probablement une petite erreur dans cette version de Firefox. Sur Windows, le plug-in a été repris et fonctionne maintenant comme avant. Des erreurs dans la réécriture de certaines fonctions bas niveau sur Acam Windows décalaient la position des clics souris, qui n'actionnaient donc jamais les icônes visés. Une demande très ancienne et assez récurrente concernant Virtual Singer a été implémentée. Il s'agissait de le faire suivre au mieux les effets de coulé continu entre note, et les ornements de "bend" guitare. La technologie utilisée dans VS et dans les instruments des bases de sons n'étant pas les mêmes, l'évolution de la fréquence lors d'une glissade sera donc différente (les instruments effectuent une variation linéaire, VS une variation asymptotique). Nous avons cependant essayé d'imiter au plus près les glissades des instruments dans VS. A tester dans la prochaine beta (dans le courant de la semaine prochaine, probablement). Bon week-end à tous ! |
|
|
by Olivier Guillion | | | |
|

Ca y est, la première version beta d'Harmony Assistant 9.6.2 vient d'être mise en ligne (voir le forum). Il s'agit d'une version beta publique, à laquelle n'importe qui (ou plutôt tout le monde) peut participer. La liste des nouveautés est disponible dans la documentation au chapitre "quoi de neuf", à la rubrique pour l'instant estampillée 9.6.1. Il n'y a pas de révolution dans les fonctionnalités, mais plutôt une consolidation générale, les couches basses (Acam) ayant été nettoyées et partiellement réécrites. Donc, pour les tests, rien de particulier à tester, sinon vérifier que le programme fonctionne bien comme avant, et que rien n'a été "cassé" pendant la reprogrammation. Bons tests! |
|
|
by Olivier Guillion | | | |
|
|