Certains noms de polices embarquées dans le PDF pouvait contenir des caractères entrainant une erreur de l'export en MusicXML, un filtre a été appliqué à ces caractères. Des barres de ligatures ou de tuplets pouvaient être confondues avec des tenuti, c'est corrigé. Certains coulés étaient pris pour des tête de note en triangle, c'est corrigé. |
|
|
by Didier Guillion | | | |
|

Nous avons avancé sur le portage de Melody Player sur Mac OS sans Carbon. L'astuce était de faire croire au Mac OS que notre application est une application Cocoa écrite en Objective-C. Ce se fait via une petite amorce toute simple dont voici l'intégralité : Code: #import <Cocoa/Cocoa.h> int main(int argc, char *argv[]) { if(NSApplicationLoad()) { InitAppFileName(*argv);// Pour le chemin sur les ressources AcamInitSettings(); [NSBundle loadNibNamed:@"MainMenu" owner:NSApp]; mymain(); } } |
| C++ et Objective-C n'étant que des sur-couches au langage C on peut donc au sein d'un même projet, mixer les trois types de langages et appeler les fonctions de l'un à partir d'un autre. Puis il a fallu lier avec Acam et le minimum de librairies. Nous avons ainsi obtenu un exécutable complet. Il va nous permettre de tester et peaufiner l'implémentation d'Acam sur Mac/OS. Prochaine étape, gestion des accès aux fichiers et aux chemins. |
|
|
by Didier Guillion | | | |
|

Les fichiers de configuration et de ressource sont maintenant correctement localisé. La lecture/écriture des fichiers passe maintenant par les entrées standard Unix fopen et fclose. Or sur Mac les fichiers sont divisés en deux parties, le ressource fork et le data fork. La fonction fopen ouvre le data fork. Apple a du ruser méchamment pour permettre d'accéder au ressource fork. Voici l'astuce : soit xxxx le nom d'un fichier fopen("xxxx","rb") va ouvrir le data fork et fopen("xxxx/..namedfork/rsrc","rb") va ouvrir le ressource fork. Ce n'est pas très élégant mais cela fonctionne. Nous obtenons donc ceci : La barre de menu est correctement affichée et gérée. La fenêtre s'ouvre avec un titre et on peut la déplacer. Le document musical se charge apparemment correctement. L'affichage essaie de s'exprimer mais avec beaucoup de mal. On progresse, on progresse... |
|
|
by Didier Guillion | | | |
|

Les problèmes graphiques ont été corrigés et la fenêtre principale s'affiche maintenant correctement : L'interface réagit aux clics souris et aux touches clavier. Les boites de dialogue additionnelles s'ouvrent également : Elles sont fonctionnelles. L'aspect est bien entendu celui d'Acam et non de Mac OS X puisque nous traçons tout "à la main". Enfin, cerise sur le gâteau, la musique se joue en utilisant le CoreAudio. Maintenant, il faut attaquer la gestion des fenêtres standards de sélection de fichier en lecture et écriture. |
|
|
by Didier Guillion | | |
| |
|

Pour finir la semaine, les fenêtres de sélection du nom du fichier en lecture et écriture ont été implémentées via un appel Cocoa, elles seront donc au "look" du système. L'affichage des images a été réécrit pour utiliser des surfaces Quartz ce qui nous rend normalement indépendants de Quicktime : Enfin, l'affichage des textes qui utilisait la technologie ATSUI se fait maintenant via le CoreText. L'ATSUI comportait des petits bugs jamais corrigés, par exemple certaines polices perdaient leur capacité à s'afficher en gras sans raison valable. Le CoreText est assez bien fait quoique complexe et semble puissant. D'après Apple il serait deux fois plus rapide que l'ATSUI. Ce n'est pas encore totalement fonctionnel. Il nous manque par exemple la capacité d'utiliser des polices fournies avec l'application et non installées dans le système. Bon week-end ! |
|
|
by Didier Guillion | | |
| |
|

Les styles de base des textes (souligné, gras) ont été implémenté en CoreText Les polices embarquées sont reconnues par le CoreText et correctement affichées. Nous essayons de faire fonctionner les courbes de Bezier via les entrées graphiques standard, pour l'instant sans succès. |
|
|
by Didier Guillion | | | |
|

Les courbes de Bezier fonctionnent enfin ! Les fenêtres Cocoa ne peuvent être a la fois dans la liste des fenêtres et invisible. Une ruse a permis de pallier à ceci. La cartographie brute du clavier a été implémenté (elle permet de déterminer rapidement si une ou plusieurs touches sont enfoncées) Au passage plein de petites irrégularités ont été corrigées. Maintenant, nous allons attaquer un gros morceau, l'impression. |
|
|
by Didier Guillion | | | |
|

Le module d'impression commence à fonctionner. Petit rappel du fonctionnement interne : Lorsque le programme trace une page du document, les ordres QuickDraw sont collecté dans une zone mémoire. Si l'on sauvegarde cette zone on obtient un fichier image de type PICT. Cette zone mémoire peut être affiché sur l'écran via un offscreen (une surface en couleur) ou imprimé via le pilote d'impression. Les différents ordres collectés sont dans ce cas interprétés par Acam et transformés en commandes CoreGraphicsqui sont envoyés à l'imprimante. Il reste maintenant à traiter une à une chacune des commandes QuickDraw et les transformer en commande CoreGraphic. |
|
|
by Didier Guillion | | | |
|

Bien que présentant tout un bataillon de fonctions encore à écrire, Acam est fonctionnel sur Mac. Dans le futur il faudra essayer de déterminer si les éléments de l'interface peuvent être dessinés via le système : on sait que les utilisateurs Mac n'aiment pas trop les applications qui changent l'aspect de l'interface. Nous attaquons maintenant le passage d'un gros projet sous Acam : essayons de voir ce que cela donne avec Harmony Assistant par exemple... |
|
|
by Didier Guillion | | | |
|

Nous avons donc tenté de passer Harmony sous Acam Mac, ceci rappelons-le afin de le rendre indépendant de Carbon et de pouvoir accéder aux nouvelles API Mac OS X. En première étape, il a fallu recréer un projet en s'inspirant du protocole mis en place pour adapter Myredit puis Melody Player. Puis, les différents sources C ont été compilés jusqu'à ce qu'il n'y ait plus d'erreur, ensuite il a fallu lier avec la librairie Acam ce qui a produit de nombreux liens irrésolus qui ont été redéfinis dans un source mannequin. Ceci nous a pris plusieurs jours, sans aucun résultat tangible à l'écran. Mais ce matin, les phases d' initialisation sont passées sans problème et nous avons obtenu ceci : Maintenant nous attaquons tous les points laissés en suspens. Les menus ont ensuite été complétés afin de gérer les menus hiérarchiques, les éléments checkés et les images. |
|
|
by Didier Guillion | | | |
|
|
|
Jun 2nd, 2023 at 05:36pm Article from Didier Guillion Digital Piano Daily Practice étape 62 Jun 2nd, 2023 at 05:36pm Article from Didier Guillion Digital Piano Daily Practice étape 62 Jun 2nd, 2023 at 05:36pm Article from Didier Guillion Digital Piano Daily Practice étape 62 Jun 1st, 2023 at 05:49pm Article from Olivier Guillion Harmony Assistant 9.9.7 et autre étape 84 May 30th, 2023 at 05:13pm Article from Didier Guillion Harmony Assistant 9.9.7 étape 83 May 26th, 2023 at 06:41pm Article from Olivier Guillion Harmony Assistant 9.9.7 et autre étape 82 May 25th, 2023 at 08:02pm Comment from antoine bautista à Sylvain May 25th, 2023 at 06:45pm Comment from Sylvain à Antoine May 25th, 2023 at 06:45pm Comment from Sylvain à Antoine May 25th, 2023 at 04:58pm Article from Didier Guillion Digital Piano Daily Practice étape 61
|
|
|
|