Les derniers points manquants dans la version d'Acam Winter pour Linux ont tous été pris en compte et terminés, après moultes recherches. La programmation Linux tient plus de l'alchimie que du processus industriel. Par exemple, la gestion de la molette de la souris sur X passe par un pseudo-appui sur les boutons 4 et 5 de la souris. Ce n'est expliqué nulle part, commenté nulle part, il faut juste le savoir. C'est pourquoi Linux est une telle "usine à gourous" : le savoir y est empirique, transmis de bouche à oreille, et noyé dans la montagne de sites recopiant le résultat de la commande "man". Nous avons donc maintenant une version quasi fonctionnelle d'Harmony Assistant sur Acam-Winter Linux. Les dépendances ont été réduites, il faut voir maintenant si on peut aller plus loin. Pour mémoire, il y a trois manières d'utiliser un module externe ou système dans une application : - La plus courante est appelée liaison dynamique ou dépendance. Lors du lancement de l'application, les modules nécessaires sont recherchés dans le système. Ils seront utilisés par l'application. S'ils ne sont pas tous présents, l'application ne se lancera pas. - La plus sûre est appelée liaison statique. Le module est directement intégré dans l'application, augmentant de ce fait sa taille. C'est la solution à privilégier pour limiter les ennuis, mais ce n'est pas toujours possible. - Entre les deux, lorsqu'un module n'est pas absolument nécessaire, et lorsque l'application peut se débrouiller sans, il y a le "weak link". La liaison dynamique est effectuée par le programme lui-même après son démarrage. Si le module n'est pas trouvé, l'application continue quand même. Voici la liste des dépendances d'Harmony Assistant à ce jour. linux-gate.so.1 libasound.so.2 => /usr/lib/i386-linux-gnu/libasound.so.2 libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 librt.so.1 => /lib/i386-linux-gnu/librt.so.1 libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 libm.so.6 => /lib/i386-linux-gnu/libm.so.6 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 /lib/ld-linux.so.2 libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 libz.so.1 => /lib/i386-linux-gnu/libz.so.1 libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 Et en voici le détail, avec les questions et problèmes que nous nous posons : linux-gate (Accès à Linux) Trop lié au système pour envisager un passage en statique libasound (Alsa, gestionnaire sonore) Trop volumineux, complexe et lié au système pour passer en statique libdl (laison dynamique) D'après certains forums, trop lié au système pour passer en statique librt (Extensions Temps Réel) Gestions des entrées-sorties, flux, fichiers, etc. D'après certains forums, trop lié au système pour passer en statique libpthread (Gestion des processus) D'après certains forums, trop lié au système pour passer en statique libX11 (Système d'interface homme-machine X11) Trop volumineux, complexe et lié au système pour passer en statique Necessite libfontconfig, libxdcmp libfontconfig (Fontconfig, gestion des polices) Trop complexe et volumineux pour passer en statique libfreetype (Freetype, affichage de polices) Trop complexe et volumineux pour passer en statique libm (bibliothèque mathématique du C) Tentative de passage en statique inopérante, raison indéterminée à ce jour libc (bibliothèque C standard) Le passage en librairie statique semble déconseillé. À vérifier. Tentative de passage en static inopérante, raison indéterminée à ce jour ld-linux (chargement dynamique de librairies). Permet les weak links. Vérifier le rapport avec libdl. libxcb (interface sur le protocole X-Window). Semble être une alternative à Xlib. Pas certain de comprendre qui en a besoin. necessite libXau libexpat (XML) lecture de fichier XML. Tentative de passage en statique inopérante, probablement utilisée par une autre lib (fontes, etc) libz (Zlib) compression ZIP. Tentative de passage en statique inopérante, probablement utilisée par une autre lib (fontes, etc) libXau (X11 Authorization Protocol) Quelle utilité ? libXdcmp (X Display Manager Control Protocol) : interactions avec le gestionnaire d'affichage de X Window La bibliothèque optionnelle libXrender, permettant les pointeurs souris en couleur, est chargée en weak-link, et ne fait fonc pas partie des dépendances. Voila, il nous reste à trouver des réponses à toutes nos questions sur ces modules. Mais je crois que ça pourra attendre 2015 Joyeux réveillon à tous ! |
|
|
by Olivier Guillion | | |
| |
|
Avant de pouvoir envisager une version alpha, 4 points doivent encore être réglés dans Acam-Winter : Les pointeurs de souris non-standards, en couleur La gestion de la molette de la souris Des problèmes de clavier : certaines touches de fonctions sont considérées comme restant appuyées lorsqu'elles sont relâchées quand l'application n'est plus à l'avant-plan Les palettes qui disparaissent lorsque l'application n'est plus à l'avant-plan, ceci n'étant plus nécessaire lorsqu'on a une grande fenêtre "bureau" qui contient les fenêtres de l'application Nous nous sommes donc attaqués aux pointeurs souris en couleur, et nous sommes rendus compte que ce n'était tout simplement pas possible avec X11. Pour pouvoir les gérer, il faut utiliser Xrender, ce qui implique une dépendance supplémentaire. Et si nous l'utilisons, ce module semble permettre également l'utilisation de polices de caractères vectorielles et anticrénelées, ce qui fait double emploi avec freetype. Nous nous posons donc les questions suivantes : est-ce freetype qui utilise Xrender ou le contraire (ou les deux librairies sont-elles totalement indépendantes?). Et si Xrender est à un plus bas niveau et nous permet de nous affranchir de freetype, a-t-on à notre disposition toutes les fonctions dont on a besoin ? Une fois de plus, tenter de résoudre un problème sous Linux nous amène à nous en poser trois autres, d'où l'impression confuse de pédaler sans avancer. |
|
|
by Olivier Guillion | | | |
|
Il y a à peine un peu plus de 20 ans, la toute première version d'Harmony Assistant était diffusée. Déjà disponible à la fois sur Macintosh et PC, elle ressemblait à une version très simplifiée de celle d'aujourd'hui, comme le montre ce diaporama. Bien sûr, à l'époque, pas de couleurs, pas de sortie numérique, de chanteur Virtuel, de scripts ou même de changement de métrique en cours de morceau. Le programme était livré sur disquette, accompagné d'une "disquette clef" protégée contre la copie que nous fabriquions sur Mac, en nous appuyant sur le fabuleux circuit de gestion du lecteur appelé IWM, pour Integrated Woz(niak) Machine, inégalé à ce jour. Nous avons tenté, au début, de diffuser l'application par le circuit classique, dans les magasins de musique. Il s'est rapidement avéré que ce circuit était peu adapté aux produits bon marché et aux marges décentes, les revendeurs d'alors préférant vendre des produits très chers avec des marges de 75%. C'était en 1994, avant la démocratisation d'Internet qui devait précipiter la fin de l'âge d'or des points de vente physiques de produits technologiques ... Si nous remontons au tout début du développement d'Harmony, le point de départ a été une combinaison de deux logiciels que nous avions écrit sur Mac SE pour notre usage propre : Le premier, BarMan, était une boîte à rythme (BAR) simplifiée. A partir de petits tableaux écrits dans un fichier texte, le programme envoyait les notes en MIDI, faisant jouer les différents instruments de batterie sur un petit expandeur Yamaha. La version 2.0 y ajoutait des notes de basse. Le deuxième, Solfège, montrait une portée, et une note y apparaissait. Il fallait très rapidement appuyer sur la touche du clavier correspondant à la note. Ceci permettait de s'entrainer à déchiffrer plus rapidement une partition. Nous avions donc un programme rudimentaire qui jouait sur la MIDI, et un autre qui montrait une portée. Nous nous sommes alors demandé "Et si nous écrivions un éditeur de partition ?". C'était parti... Dans Harmony Assistant, tout a été réécrit, certaines parties ayant même été entièrement changées plusieurs fois. Aussi, absolument rien n'a été conservé des programmes d'origine sauf une chose : le nom "Solfège" qui, 20 ans plus tard, reste chez nous la dénomination d'Harmony, utilisée pour le développement. Donc, souhaitons à Harmony Assistant un heureux anniversaire, et profitons-en pour remercier tous les utilisateurs qui, depuis 20 ans, ont contribué sans relâche à son amélioration. |
|
|
by Olivier Guillion | | |
| |
|
La boîte d'édition des paramètres d'impression est maintenant graphiquement en place et entièrement fonctionnelle sur Winter-Linux : La boîte d'impression a été également mise en place graphiquement, mais sa gestion n'est pas encore tout à fait finalisée. Les documents sont correctement imprimés, au travers d'un export EPS puis un envoi par CUPS. On peut donc considérer que l'impression fonctionne. Nous en avons profité également pour corriger quelques défauts graphiques d'interface dans Winter, ainsi que quelques sources de crash. Nous savons que beaucoup d'utilisateurs Linux attendent une version plus solide avec impatience. L'objectif est donc maintenant d'obtenir quelque chose de suffisamment complet et stable pour proposer rapidement une version pré-alpha d'un de nos programmes sur Linux. Pré-alpha, et non alpha, beta ou RC car il ne s'agirait pas là de tester les fonctionnalités de l'application elle-même mais plutôt l'interface graphique et les relations avec le système Linux en général. Bon week-end à tous ! |
|
|
by Olivier Guillion | | |
| |
|
La logique d'impression d'Acam Winter commence à fonctionner. Nous avons pu obtenir la première boîte d'options d'impression sur Linux: Au bas de la boîte, on trouve les options supplémentaires, dépendantes du type d'imprimante. Celles-ci, ainsi que la liste des imprimantes disponibles, ont été obtenues par un simple appel caché à la ligne de commande de CUPS (lpstat et lpoptions), ce qui nous évite d'avoir à lier notre projet à une librairie. |
|
|
by Olivier Guillion | | | |
|
Nous planchons toujours sur Acam Winter. La structure de l'impression est de plus en plus simplifiée, afin de limiter les fonctions dépendantes du système. Nous les avons maintenant réduites à 4 ou 5 fonctions seulement, ce qui devrait grandement simplifier l'implémentation sous une nouvelle plateforme, à condition que ce dernier permette d'imprimer facilement des données PostScript. Bientôt nous aurons quelque chose à montrer, et, si tout va bien, nous devrions pouvoir assez rapidement proposer une beta-version de quelque chose (Harmony, Melody ou notre éditeur de texte de démo) sous Acam Winter / Linux. |
|
|
by Olivier Guillion | | | |
|
Nous avons avancé sur l'impression sous ACAM-Winter. Les boîtes de dialogue ne sont pas ergonomiquement en place, mais la logique a été mise en place : l'application peut demander une mise en page, puis imprimer. Les pages imprimées sont collectées dans un fichier EPS qui est pour l'instant sauvegardé sur disque. Dans la version définitive, ce sera au petit module d'impression système-dépendant (notre cible étant dans un premier temps les plateformes Linux) d'imprimer réellement ce fichier EPS sur papier. Ce travail sur les fichiers EPS nous a permis de repérer quelques dysfonctionnements, dont la correction améliorera encore la qualité de l'export graphique EPS d'Harmony/Melopy, sur toutes les plateformes. |
|
|
by Olivier Guillion | | | |
|
Après les sélecteurs de fichiers, les seules boites de dialogue restantes gérées par le système sont les boîtes de sélection d'imprimante et d'impression. Afin de s'affranchir au maximum des appels au système, nous allons donc gérer ces boîtes nous-même. Et pour éviter les problèmes de traduction, elles fonctionneront avec des icônes plutôt que des textes. Voici une "vue d'artiste" de ce que pourrait être la boîte de sélection d'imprimante, obtenue par "Fichier > Mise en page" : On y trouve : Le choix de l'imprimante Le choix de la taille du papier L'orientation (portrait/paysage) La définition de taille des marges Le choix de l'échelle d'impression (ou de l'adaptation automatique au papier) Les boutons d'annulation et de validation Ensuite, lors de l'impression par "Fichier > Imprimer", une boîte permet de régler d'autres paramètres : Nous avons : A nouveau le choix de l'imprimante, pour les changements d'avis de dernière minute Un bouton permettant de redéfinir les paramètres (accès à la boîte précédente) Le nombre de copies Le choix des pages à imprimer Le choix de l'impression recto/verso Le choix du sens d'impression (pages croissantes ou décroissantes) ainsi que des pages paires/impaires Le choix de la division de la page, qui permet d'imprimer plusieurs petites pages sur une même feuille Les boutons d'annulation et de validation Il nous faudra ensuite voir si nous n'avons rien oublié, puis réfléchir à l'implémentation sous Linux, qui se fera probablement par un appel caché à la ligne de commande de CUPS. |
|
|
by Olivier Guillion | | | |
|
On y est, enfin ! Après quelques versions beta et trois RC, La version 1.5.0 est en cours de mise à disposition sur le site. Elle devrait apparaître d'ici quelques minutes. Mais, par expérience, et une fois de plus en totale conformité avec la loi de Murphy, il y a de bonnes chances qu'un gros problème non détecté jusqu'ici se soit glissé dans cette version, et que nous devions poster une sous-version très rapidement pour corriger ça. Quelqu'un veut parier? Bon week-end ! |
|
|
by Olivier Guillion | | | |
|
Nous étions en train d'envisager sérieusement de publier la nouvelle version de PDFtoMusic/PDFtoMusic Pro (v 1.5.0) quand nous nous sommes rendu compte d'un problème de calcul sur certains fichiers. Conformément à la Loi de Murphy, le problème ne survient que sur les versions Windows 95 du programme, et en version publique (non déboguable). On investigue, donc, et la nouvelle version est en standby jusqu'à la résolution de cette bizarrerie. |
|
|
by Olivier Guillion | | | |
|
Depuis sa mise en eau en juillet dernier, les plantes ont pas mal poussé dans notre aquarium Pour doper un peu l'éclairage faiblard (un tube de 15W) prévu pour ce bac, nous avons bricolé une rampe de leds composé de 240 leds SMD 5050, qui ajoutent 48W de puissance. S'il le faut, nous envisagerons la réalisation d'un complément à base de led dans la gamme de l'ultra-violet, pour favoriser la pousse des plantes. Et ce week-end, après une visite à la bourse d'aquariophilie de Montauban, de nouveaux pensionnaires ont fait leur apparition dans le bac : Une quarantaine de crevettes "Red Cherry" (taille réelle 2cm) et une douzaine de corydoras pygmées (ce sont des mini-mini poissons), tout mignons avec leur micro-moustache (taille réelle du poisson complet, moustache comprise : 1,5cm grand max) Il ne reste plus à ce petit monde qu'à s'acclimater. |
|
|
by Olivier Guillion | | |
| |
|
|