Nous avons trouvé une petite ligne dans la documentation Adobe qui explique que la communication Javascript/Flash ne fonctionne pas en mode local mais uniquement sur un serveur (problème de bac à sable). Et de fait, sur notre serveur local, la page web interroge maintenant correctement le plug-in et le plug-in reçoit bien ses paramètres. Ceci a été validé sur différents navigateurs, sur Mac et Windows. L'édition des notes et leur représentation ont été calés finement. Lorsque la note est posée, un écho est donné. On peut jouer la séquence saisie. Pour l'instant c'est un simple signal sinusoïdal à la bonne fréquence, on compliquera plus tard. Première implémentation du clavier virtuel, visualisation des notes jouées, click sur le clavier pour insérer des notes. Le design du clavier a été entièrement repris. Tous les points essentiels ont été couverts superficiellement, maintenant, il va falloir traquer les pertes de mémoire (porosité) qui apparemment sont conséquentes et éventuellement optimiser certaines parties. Nous en sommes là : Bon weekend, restez au frais ! |
|
|
by Didier Guillion | | | |
|

Deux jours à s'arracher les cheveux sur un problème de perte de mémoire avant de comprendre que les tracés graphiques fait via "addChild" s'ajoutaient au tracés déjà faits. Il nous a suffit de "taguer" les objets graphique et de les supprimer simplement avant chaque affichage. Le plug-in est maintenant propre au niveau de la gestion mémoire et c'est un grand pas en avant. La totalité des fonctionnalités prévues dans notre cahier des charges initial est maintenant implémentée et fonctionnelle, il nous reste encore à tester tout cela quelques heures et nous pourrons publier une première version. La taille du .swf généré est tout à fait correcte : 76 677 octets, ce sera donc très léger pour notre serveur. Nous allons également essayer de prévoir quelques raccourcis clavier mais pour l'instant, impossible de capturer les évènements clavier... Nous en sommes là : Pour résumer, nous sommes globalement très impressionnés par la qualité et la robustesse de Flex/ActionScript/Flash, Adobe a vraiment fait un bon boulot. Les documentations en Français, la multitude de développeurs qui publient des explications et des exemples sont des cerises sur le gâteau fortement appréciées. Nous comprenons maintenant le refus d'Apple de laisser tourner des applications Flash sur iPhone, ce serait une sacré concurrence à l'Itune Store... |
|
|
by Didier Guillion | | | |
|

Quand la page web, contenant le plug-in, affiche le résultat de la recherche, on peut demander de jouer un extrait de chacun des résultats. Il fallait implémenter cela dans la version Flash. Nous avons réfléchi à plusieurs solutions et avons retenu celle-ci : comme une instance du plug-in Flash est chargée, la page HTML va l'invoquer via JavaScript pour lui demander de jouer la séquence. Sur le papier, cela réduisait la taille de la page HTML et accélérait le chargement. Nous avons donc cherché comment un plug-in Flash pouvait invoquer des méthodes JavaScript avec passage de paramètres et l'inverse. Et en fait, c'est hyper simple, cela a marché du premier coup et à merveille. Une fois encore "Bravo Adobe !" Maintenant, nous cherchons un moyen de restituer la musique autrement que par une simple (moche) onde sinusoïdale, une fois fait, une première bêta du plug-in sera proposée. C'est pour nous un genre de retour aux sources (au propre comme au figuré), nous travaillons sur des problèmes de restitution sonore avec contrainte de taille mémoire depuis 1984... A noter, au passage, que théoriquement, le plug-in Flash devrait fonctionner sans problème sur Mac, Windows et... Linux. |
|
|
by Didier Guillion | | |
| |
|

Maintenant que nous avons compris comment fonctionne l'affichage sous ActionScript : une collection d'objets que l'on peut tagger et manipuler à envie, nous avons repris nos tracés graphiques afin de les hiérarchiser et des les optimiser. Par exemple, ce n'est pas la peine de redessiner tout le clavier si une seule touche change : Il suffit d'ajouter le graphisme de la touche appuyée à la liste et de le supprimer quand elle est relâchée, facile. Le calage des symboles musicaux a été peaufiné, de petites flèches montrent si on est en mode insertion de symbole ou remplacement. Nous avons rencontré un problème étrange de mise à jour du plug-in sous FireFox, nous avions beau le remplacer, vider le cache, c'était toujours l'ancienne version qui était utilisée. Nous affichons donc maintenant la version sur le plug-in. On peut considérer que tout ce qui est graphique et ergonomie est finalisé. Nous avons commencé à définir les objets sonores qui vont permettre de jouer la musique. Nous avons basé la conception sur des objets indépendants afin de pouvoir les réutiliser si jamais nous devions écrire un jour un autre plug-in Flash. A la lecture des manuels nous avons découvert qu'il était possible de faire des acquisitions de données numérique via le microphone. Ce serait sympa de pouvoir siffler la mélodie plutôt que de la saisir à la souris, non ? Mais ceci est une autre aventure. |
|
|
by Didier Guillion | | | |
|

Comme promis la première version du plug-in Flash de Kooplet a été publiée. Nous sommes encore en bêta bien sur, il faudra être indulgent. Cela ressemble à ceci : Apparemment tout fonctionne pas trop mal, il y a le son, l'interface (avec de vrais morceaux de boutons dedans) et la communication avec le JavaScript de la page HTML. Nous obtenons un .SWF de 79 047 octets, ce qui est léger. Le cahier des charges a été respecté. Chez nous, cela prends moins de deux secondes à se charger. Vous pouvez tester ici : http://www.kooplet.com/main.html Les rapports sont à envoyer sur nos emails respectifs, Didier si vous êtes sur Mac, Olivier pour Windows et Linux. Maintenant, il faut tester sur toutes les plateformes en notre possession. Nous essayons d'installer Flash 10 sur Linux et apparemment ce n'est pas simple (j'entends Oliver soupirer et se marrer en dessous), cela fera certainement l'objet d'un billet corrosif demain... |
|
|
by Didier Guillion | | |
| |
|

Aujourd'hui nous nous sommes consacrés aux remarques de nos gentils visiteurs et beta testeurs. Certaines icônes ont été redessinés, et la gomme, (qui ne me plaisait pas non plus d'ailleurs) mise à la poubelle, qui la remplace donc. C'est plus clair. On nous a signalé un décalage de fréquence à la quinte (mais comment il fait Sylvain, c'est un X-Men ou quoi ?) cela a été corrigé. Enfin, nous avons trouvé (non sans mal) le moyen de recevoir les évènements clavier. La touche espace démarre la musique, la touche Suppression efface la dernière note, etc. Certaines touches (QZSEDF...) ont été assignées à des hauteurs de notes. Mais là on se heurte à un gros problème de conception de Flash, impossible d'obtenir un KeyCode indépendant du type de clavier. Cela marchera donc sur les claviers Français mais pas sur les autres. A moins que nous ne trouvions une astuce. Et d'une manière générale tout a été légèrement accéléré en supprimant des ré-affichages inutiles. Note: Il est souvent nécessaire de vider le cache du Navigateur pour bénéficier de la dernière version du plug-in. Nous en sommes à 0.2.9. |
|
|
by Didier Guillion | | |
| |
|

Plusieurs améliorations sur le plug-in de Kooplet. Le curseur de la souris change de forme en fonction de l'objet pointé. La chargement du plug-in a été visuellement accéléré. Nous utilisons la même vilaine astuce que pour l'iPhone (chut ! il ne faut pas le répéter): tout au début de l'initialisation de l'application nous affichons une capture écran de l'interface... La différence de temps est facilement perceptible, c'est l'intervalle entre le premier affichage et celui où l'on voit la version apparaître. Nous avons gagné environ 1200 ms. Bien entendu, c'est purement psychologique, pas question de cliquer sur l'interface pendant ce petit délai, mais l'utilisateur a juste le temps de voir les graphismes, de se repérer et de bouger la souris. Il est maintenant possible de cliquer sur le clavier virtuel ou sur la portée sans ajouter de note afin de pouvoir simplement l'écouter : il suffit de maintenir la touche Majuscule enfoncée. Le poids des images a été revu à la baisse, et malgré la nouvelle image de l'interface nous en sommes à 86 100 octets. Sauf suggestion ou remarque particulière, nous estimons que le plug-in (actuellement v 0.3.6) réponds globalement à la demande, nous allons maintenant travailler sur l'aspect de la page HTML et à la rédaction de la documentation. |
|
|
by Didier Guillion | | |
| |
|

Comme introduit à l'étape 49, nous pensons que ce serait sympa que l'on puisse siffler la séquence à rechercher dans un microphone. Nous avons décidé de faire quelques essais des nouvelles fonctionnalités de Flash 10 dans le domaine des acquisitions numériques. Nous arrivons à lancer un enregistrement, obtenir les données numériques et y appliquer une FFT pour en extraire la fréquence fondamentale. Les bases sont posées, maintenant il faut convertir ceci en notes et l'intégrer dans l'interface si les résultats sont satisfaisants. Sinon, cela partira à la poubelle comme 30% de ce que nous écrivons... |
|
|
by Didier Guillion | | |
| |
|

Nous sommes toujours sur la saisie des notes via un microphone. Ce n'est pas évident mais nous progressons. L'utilisateur devra cliquer sur une icône, chanter, siffler, jouer de l'harmonica, ou autre, puis arrêter l'enregistrement. Les transformés de Fourrier, écrites en ActionScript, nécessitent quelques secondes de traitement donc pas de temps réel possible. Pour l'instant, par frame de 2048 octets sur un échantillonnage à 44Khz nous extrayons 5 fréquences de notes possibles. Nous passons par une FFT de FFT et les résultats sont encourageants. Il nous reste à mettre au point l'algorithme qui pourra "suivre" les notes dans la matrice de données. A terme nous espérons que cela facilitera l'accès à Kooplet pour les personnes qui ignorent le solfège mais sont capables de fredonner une mélodie. Et point important sans être essentiel, c'est très amusant à programmer... |
|
|
by Didier Guillion | | |
| |
|

La version 0.4.0 ß de Kooplet a été publiée. Elle propose toute la partie interface de la saisie au microphone. Si l'utilisateur n'a pas auparavant fait un click droit pour autoriser Kooplet à accéder au microphone, la boîte de dialogue du système est affichée. L'extraction des fréquences possibles semble opérationnelle, un embryon de recherche des notes a été implémenté. Bien entendu, ce n'est qu'une ébauche, cela devra être amélioré. Pour ceux que la cuisine intéresse, nous utilisons une fenêtre glissante de 2048 octets sur laquelle nous appliquons une FFT. Un lissage triangulaire est forcé sur les données de la fenêtre. A la frame suivante, nous nous décalons de la moitié des données, soit 1024. Les frames ayant une dynamique trop faible sont filtrées et considérées comme des silences. Nous obtenons donc, par frame, un vecteur décrivant les pics de fréquence, sur lequel nous appliquons une nouvelle FFT. C'est l'astuce. Ensuite, il suffit de garder les 5 pics les plus importants et les convertir en fréquence puis en demi-ton. Le reste de l'algorithme (qui reste à finaliser) devient plus "intelligent", il va devoir traquer de frame en frame, les demi-tons les plus proches pour en déduire les notes. |
|
|
by Didier Guillion | | |
| |
|

Pour le traitement des documents Kooplet, correction d'un problème signalé par Franck : dans les documents musicaux, les symboles de même hauteur, reliés par un coulé interprété en continu sont maintenant considérés comme un seul symbole lié. Il faudra bien sur attendre un recalcul de la base pour s'en rendre compte. Correction de l'affichage du raccourci sur les touches dans le clavier virtuel. |
|
|
by Didier Guillion | | |
| |
|

Correction de l'édition du style des ornements textuels lorsqu'ils étaient à la valeur par défaut. Cohérence de l'ordre des portées en chargement MIDI entre Harmony et le Player. Correction d'un problème de taille de tige en tablature guitare. Et puis aussi, surtout, lecture de documents, des thèses entre autre, à propos de la synthèse sonore. Egalement, quelques essais d'utilisation d'enregistrements de chocs brefs sur le corps d'une guitare pour en extraire les composantes de la résonance. Pour l'instant quelques résultats prometteurs mais rien de présentable. Demain peut être... |
|
|
by Didier Guillion | | | |
|

Nous sommes revenu sur la saisie de notes au microphone dans Kooplet. Il est apparu que le problème principal rencontré par les utilisateurs était un mauvais réglage du niveau d'amplification du microphone.Trop élevé cela sature et parasite le signal, trop bas, il n'y plus assez de précision. Nous affichons maintenant le niveau en temps réel lors de la saisie. Une fois cette assistance mise au point, nous pourrons travailler de manière plus approfondie sur la détermination des notes. |
|
|
by Didier Guillion | | | |
|
|