Myriad Blog 1.3.0 Saturday, Jun 25th, 2016 at 12:28am 

Dev News Friday, Jun 24th, 2016 at 04:59pm
Harmony 9.6 étape 916

 
Pour rendre la gestion des espaces utilisateurs beaucoup plus souple, nous avons écrit un module en Perl qui permet au serveur principal du MUSL de communiquer avec des serveurs secondaires, et d'échanger des fichiers.
Ceci va nous permettre de répartir sur plusieurs sites les fichiers de données, qui peuvent être très volumineux. Cette répartition nous permettra :
 
- d'offrir par défaut aux utilisateurs un espace plus confortable pour loger leurs partitions
 
- d'augmenter plus facilement l'espace total disponible lorsque cela devient nécessaire, par l'adjonction de nouveaux serveurs
 
Mais la mise au point de tout cela s'avère difficile, car les opérations de gestion du MUSL étaient déjà assez compliquées, et, étant intimement liées à Harmony, ne peuvent pas être testées en dehors du programme. Mais on avance...
 
Bon week-end !
by Olivier Guillion
 1 comment.

Dev News Wednesday, Jun 22nd, 2016 at 05:02pm
Harmony 9.6 étape 914

 
  • Correction de l'export SVG/Myrweb de petites images noir et blanc
     
  • Correction de la gestion de la palette "Altérations", en palette individuelle et dans le Dock
     
  • Correction d'un crash du dock lorsque le dernier document était fermé
     
     
    Enfin, autre registre, la base GOLD s'installait difficilement lorsqu'elle était téléchargée avec Edge depuis Windows 10. Ce dernier semble extrèmement sensible à la moindre irrégularité dans les signatures électroniques. La base GOLD a donc été re-signée, et la nouvelle version a été mise à disposition.
  • by Olivier Guillion
     Leave a comment.

    Dev News Monday, Jun 20th, 2016 at 04:59pm
    Harmony 9.6 et autre étape 912

     
    Dans l'export SVG et Myrweb, des irrégularités ont été détectées dans la gestion de certaines images. Un problème ainsi repéré sur les images en couleurs directes 15/16 bits (5 bits par composante) nous a fait remarquer que ces images n'étaient pas affichées, à l'écran, avec les bonnes couleurs sur Windows et Linux. Le problème date probablement des origines de notre librairie de compatibilité "ACAM", dans les années 90-91. Preuve que ce format d'image n'est pas si courant !
     
    Les instruments utilisateurs de certains très vieux fichiers refusaient de se charger. Un contournement nous permet maintenant de les lire sans crash, mais leurs données semblent abîmées, dans les premiers dixièmes de seconde. Nous ne savons pas si les données sont réellement abîmées ou si nous les lisons mal, et nous ne savons pas non plus combien de fichiers sont ainsi affectés.
    by Olivier Guillion
     Leave a comment.

    Dev News Thursday, Jun 16th, 2016 at 04:47pm
    Harmony 9.6 étape 910, format Myrweb

     
    Nous avons beaucoup réfléchi à la manière la plus simple de présenter le format Myrweb, qui permet de proposer des partitions visibles dans un navigateur Internet. Ces réflexions nous ont amené à quelques changements d'optique.
     
    Comment ça marche ?
     
    Techniquement, la partition est exportée sous forme d'un bloc binaire (métafichier) contenant toutes les informations nécessaire à son affichage et à son jeu. Nous avions baptisé ce format binaire "myrweb"
     
    Pour lire ces informations et les traduire en une page de musique à l'écran, ou faire entendre l'audio depuis un navigateur Internet, on a besoin d'une app, écrite en Javascript, qui ne nécessite pas que l'utilisateur installe un quelconque programme ou plug-in sur son ordinateur.
     
    On a alors deux possibilités:
     
    - Soit les données des partitions sont stockées à part, et on a alors d'un coté des pages Web, contenant les textes explicatifs et autres habillage, et de l'autre les  fichiers de données, un par partition. La page Web, lorsqu'elle est visualisée, lit alors les données de la partition et les présent à l'écran ou les joue
     
    - Soit les données binaires des partitions sont stockées à l'intérieur de la page Web elle-même. On obtient alors un fichier totalement autonome. Un double-clic dessus ouvre un navigateur et montre la partition jouable. Ce fichier peut facilement être transmis par mail, sur une clé USB, etc.
     
    Ce que nous avions prévu de faire
     
    Nous comptions donc proposer à l'utilisateur deux exports de partition:
     
    - Un export du bloc binaire Myrweb, qui nécessitait ensuite d'être chargé par une page Web distincte pour être visualisé
     
    - Un export de la page Web autonome, contenant les données Myrweb, et destinée à être échangée, transmise par mail, etc
     
    Mais les deux notions étaient un peu trop complexes, difficiles à expliquer, et l'export binaire n'était utile qu'aux Webmasters.
     
    Ce que nous allons faire à la place
     
    Un seul format d'export sera disponible, le format en page Web autonome. Les fichiers de ce format porteront l'extension .myrweb.html et seront double-cliquables pour être visualisées dans un navigateur, sans rien nécessiter de plus.
    C'est ce format qui prendra, dans Harmony Assistant, le nom d'export "myrweb"
     
    L'export sous forme de bloc binaire disparaîtra, et ne sera plus proposé.
     
    Les webmasters qui désirent séparer les pages Web des partitions qu'elles présentent pourront toujours le faire. Dans ce cas, l'app lira le fichier .myrweb.html, récupèrera à l'intérieur les données du bloc binaire qui y sont stockées, et utilisera ces données comme avant.
    Du point de vue du webmaster, il n'y aura donc aucune difficulté supplémentaire par rapport à la solution que nous envisagions précédemment.
     
    En conclusion
     
    Mis à part une légère augmentation de la taille des fichiers exportés, cette nouvelle manière d'envisager l'export n'aura que des avantages, le principal étant que l'utilisateur de base n'aura pas à se soucier de la technologie employée. Il exportera sa partition, et pourra la transmettre à n'importe qui, en étant certain que le morceau sera visible et jouable par son correspondant, par simple double-clic.
    by Olivier Guillion
     4 comments.

    Dev News Monday, Jun 13th, 2016 at 05:19pm
    Harmony 9.6 étape 908

     
     
    Correction d'une saturation mémoire lors de l'export en MusicXML d'images incluses dans une partition :
    Harmony Assistant gère les formats d'image vectoriels ou compressés. Ces images peuvent être extrêmement grandes, mais être gérées sans avoir besoin d'une place mémoire importante.
     
    En export MusicXML, nous sommes obligés de tracer ces images sur une zone mémoire non compressés, pour ensuite les inclure dans le fichier.
    Imaginons une image de 12000 par 10000 pixels. La zone mémoire de tracé devra faire 12000x10000 = 120 000 000 (120 millions) de pixels. A raison de 3 composantes (rouge, vert, bleu) par pixel, la zone mémoire devra faire 120x2= 360 Mo. S'il y a 10 images comme ça dans la partition, on atteint les 3.6 Go. Lourd. La mémoire sature, et la gestion de cette zone énorme prend un temps tout aussi énorme.  
     
    Nous avons donc modifié l'export afin de limiter la taille des grandes images, en dégradant un peu leur qualité, et minimisant ainsi l'empreinte mémoire (ainsi que la taille du fichier MusicXML résultat, par la même occasion)
    by Olivier Guillion
     Leave a comment.

    Dev News Thursday, Jun 9th, 2016 at 05:07pm
    Harmony 9.6 étape 906 / MUSL

     
    Nous avons pu établir quelques statistiques sur l'état actuel des espaces utilisateur, et projeter ce que cela pourra donner après conversion des partitions au format Myrweb.
     
    L'espace actuellement réservé à chaque compte d'utilisateur est de 20Mo. Inutile de dire qu'avec le nouveau format, qui inclut les données MP3 de l'ensemble du morceau, une capacité aussi faible poserait quelques problèmes.
     
    Nous avons donc fait des projections sur les comptes existants.  
    Si on fixe la limite à :
  • 100 Mo, 25% des comptes dépassent
  • 200 Mo, 20% des comptes dépassent
  • 500 Mo, 10% des comptes dépassent
  • 1 Go, 5% des comptes dépassent
     
    Si on analyse ces gros, gros comptes, on se rend compte que plusieurs d'entre eux parviennent à une telle taille parce que certaines partitions durent plusieurs heures, et un MP3 de plusieurs heures, ça occupe de la place. Il s'agit de partitions bouclées de manière infinie par un saut inconditionnel au début lorsqu'on atteint la fin.  Ainsi la palme revient à un utilisateur, qui cumule ainsi 260 heures de musique (14 Go) !
    Nous cherchons un moyen de détecter et de traiter particulièrement ces morceaux pour éviter qu'ils n'explosent tous les quotas.
     
    Malgré cela, l'ensemble des morceaux du MUSL va tout de même occuper plusieurs dizaines de Go, trop pour être supportable sur notre hébergement actuel.
     
    Nous allons donc probablement:
     
    - Fixer un quota assez élevé, entre 300 Mo et 1 Go
     
    - Prendre un autre hébergement pour stocker les fichiers myrweb
     
    - Proposer une option "premium" payante (peut-être par un abonnement annuel très peu cher), avec par exemple un quota de 10 Go, qui nous aidera à payer le nouvel hébergement.
     
    L'avantage est que plus il y aura d'abonnements premium au MUSL, plus nous aurons besoin d'espace, mais plus nous aurons de sous pour le payer
     
    Reste enfin le problème de l'espace privé, qui permet d'avoir une section accessible seulement par mot de passe. Lorsque les pages Web et les fichiers étaient au même endroit, la même authentification protégeait les deux. Mais si les données sont délocalisées ailleurs, ça devient plus compliqué de protéger les .myrweb eux-mêmes. Pour l'instant, trois options :  
    - soit ils ne sont pas protégés, et quelqu'un qui connaît leur URL peut alors les récupérer,  
     
    - soit les fichiers de l'espace privé restent sur le même serveur que les pages, mais on doit en limiter drastiquement la taille  
     
    - soit on supprime la fonctionnalité d'espace privé
  • by Olivier Guillion
     6 comments.

    Dev News Monday, Jun 6th, 2016 at 04:53pm
    Harmony 9.6 étape 904

     
    Comme entamé la semaine dernière, nous traitons, par le Jukebox, des listes de plusieurs milliers de documents musicaux que nous lisons, exportons, et dont nous récupérons toutes les informations possibles.
     
    Sur Windows, en phase de développement, nous avons créé un outil de gestion mémoire qui protège physiquement de tous les accès illégaux (lecture ou écriture qui dépasse une zone mémoire normalement allouée). Alors qu'une version publique pourrait fonctionner, et ne planter qu'une fois sur 100, cette gestion mémoire est hypersensible, et génèrera un crash à la moindre irrégularité.  
    Sur un traitement de plusieurs milliers de fichiers, il y a donc de bonnes chances que, s'il y a un bug quelque part, il soit mis en évidence. Ceci nous a d'ailleurs d'ores et déjà permis d'en trouver et corriger quelques-uns.
     
    Seule ombre au tableau : les opérations très demandeuses en mémoire deviennent de 5 à 10 fois plus lentes, ce qui, pour des traitements en masse, signifie que nous devons attendre le résultat de l'opération 1/4h au lieu de 2 mn.
    by Olivier Guillion

    Dev News Thursday, Jun 2nd, 2016 at 05:01pm
    Harmony 9.6 étape 902 / MUSL

     
    Nous avons commencé à convertir les accès au MUSL vers le nouveau format d'export de partitions, le format myrweb.
     
    Nous avons mis en place une version "bac à sable" du site sur nos machines locales afin de pouvoir travailler sans crainte de casser des pages visibles publiquement.
     
    Coté serveur, les script qui s'occupent de la génération des pages Web ont été repris, ainsi que les modèles de pages. Globalement, il y a eu très peu de modifications à faire.
     
    Coté Harmony Assistant, c'est à peine plus compliqué. Il a fallu, plutôt que d'envoyer directement le fichier MYR, le convertir d'abord en format myrweb.  
     
    Mais deux problèmes demeurent :  
     
    - Comment convertir l'intégralité des fichiers déjà publiés par chaque utilisateur ?  
    Une procédure automatique effectuera-t-elle cette conversion à la première connexion de l'utilisateur sur son espace avec la nouvelle version d'Harmony ? Que se passera-t-il si la place occupée dépasse le quota attribué (pour l'instant, 20Mo)?
    Ou bien doit-on se charger nous-mêmes de la conversion de l'ensemble du MUSL ? Avec ses centaines d'heures de musique cumulées, cela va alors probablement prendre au moins une journée complète (probablement plusieurs jours) !
     
    - Comment faire tester le nouveau MUSL dans la prochaine beta, sans altérer les pages Web existantes ? Cela va probablement nous obliger à mettre en place un bac à sable, public cette fois, qui permettra aux beta-testeurs de procéder sans crainte à leurs essais.
    by Olivier Guillion
     1 comment.

    Technical Tuesday, May 31st, 2016 at 04:46pm
    Compiler un projet C sous Linux

     
    Notre nouveau PC (d'occase) installé avec Ubuntu 16.04 - 64 bits, il est temps de le préparer pour développer dessus.
     
    Nous avons déjà les projets complets  sur notre machine virtuelle, il suffit donc de mettre en place le compilateur et l'environnement de développement (Code:Blocks), transférer nos projets et établir les lecteurs réseau vers les sources C partagés entre Windows et Linux. Piece of cake.
     
    Répertoires partagés
     
    Les répertoires partagés sur Windows sont accessibles directement par smb://MonRepertoireDePartage. Pour les monter, Un petit fichier sh d'abord, pour vérifier que ça fonctionne.
    Un simple  
    sudo mount -c cifs -o username=utilisateur,password=motdepasse,uid=1000,iocharset=utf8,file_mo de=0777, //192.168.1.3/MonRepertoireDePartage /media/shared  
    suffit à monter le partage.
    Ensuite, bien entendu, on ajoute  
    //192.168.1.3/MonRepertoireDePartage /media/shared cifs username=utilisateur,password=motdepasse,uid=1000, iocharset=utf8,file_mode=0777  
    au fichier /etc/fstab pour rendre ça permanent, cela va sans dire. Bon, ça a bien pris trois bonnes heures avant de trouver ces commandes, qui permettent d'avoir l'accès aux fichiers en lecture/écriture.
     
    Code:Blocks
     
    Prudents, et suivant à la lettre les recommandations, nous passons par la librairie logicielle intégrée au système, pour récupérer la version de Code:Blocks "connue pour bien fonctionner et s'installer convenablement".  
    Donc, téléchargement par "Ubuntu Software" de la version 13.12 de Code:Blocks. Aucun problème.
    Enfin, presque. Après 2 secondes d'utilisation, tout plante. L'éditeur se fige pendant plusieurs secondes, n'affiche plus les noms des fichiers dans les onglets, et met un temps infini à répondre. Inutilisable.
     

    Direction le site de CodeBlocks pour récupérer la dernière version (16.01). On suit les directives d'install, qui consistent simplement à ajouter au système un nouveau site de téléchargement grâce à ces quelques petites lignes (le principe même en est fortement déconseillé dans à peu près tous les forums sur Linux) :
    sudo add-apt-repository ppa:damien-moore/codeblocks-stable
    puis
    sudo apt-get update
    et  
    sudo apt-get install codeblocks
    Et là, ça fonctionne. Plus de plantage !  
     
    Compilation
     
    Nous pouvons maintenant passer aux tentatives de compilation. Le système étant en 64 bits et nos applications en 32, et ces dernières utilisant quelques librairies (le moins possible, mais quand même), il faut préparer tout ça:
     
    sudo apt-get install g++-multilib
    sudo apt-get install libx11-dev
    sudo apt-get install libxrender-dev
    sudo apt-get install libfreetype6-dev
     
    Sommes-nous étourdis ! Il faut installer la version i386 de certains de ces paquets, of course:
     
    sudo apt-get install libx11-dev:i386
    sudo apt-get install libfreetype6-dev:i386
    sudo apt-get install libfontconfig-dev:i386
    sudo apt-get install libasound-dev:i386
     
    Et voila, le tour est joué. On peut maintenant compiler, en prenant soin de cocher la compilation 32 bits dans les options du projet. Bon, bien entendu, avec tous les paquets que nous venons d'installer, notre système n'a plus rien à voir avec ce que l'application peut s'attendre à trouver chez l'utilisateur lambda. Une autre installation, ou une autre machine sera donc nécessaire pour disposer d'une plateforme de test.
     
    Fidèle à sa réputation de solidité et de convivialité, installer un compilateur et recompiler nos projets sur Linux nous a pris tout au plus deux jours, contre 2 heures sous Windows. Les commandes sont d'une simplicité biblique (je suis sûr qu'en lisant ce billet, vous les avez déjà mémorisées sans vous en rendre compte). On se demande vraiment pourquoi, sur MacOS et Windows, ils s'obstinent encore à proposer des boîtes et des boutons, alors qu'un clavier et un terminal texte suffisent pour tout faire sans effort !
     
    Plus on s'intéresse à Linux, et plus on y passe du temps. 2 jours entiers sans décrocher, si ce n'est pas la preuve de son attractivité, ça !
    by Olivier Guillion
     3 comments.

    To be seen Friday, May 27th, 2016 at 05:08pm
    Vous prendrez bien une tranche de Ténor?

     
    Au détour du net, et pour finir la semaine avec quelque chose d'original, nous sommes tombés sur cette vidéo surprenante, que nous ne pouvons que vous faire partager:
     
    Ténor vu en coupe

     
    Un ténor en train de chanter est filmé, en coupe, par un IRM. On voit en temps réel, sa bouche, sa langue et son palais. Hypnotique et dérangeant à la fois.
     
    Si nous avions eu cela lorsque nous avons commencé Virtual Singer, nous aurions pu, en mesurant les surfaces et positions des divers éléments, déduire le volume et la forme des diverses cavités, et envisager ainsi une modélisation physique de l'appareil vocal.
     
    Sur ces considérations, nous vous souhaitons un bon week-end !
    by Olivier Guillion

    Dev News Wednesday, May 25th, 2016 at 05:11pm
    Harmony 9.6, étape 898

     
    Dans la palette de Virtual Singer, sur Windows, l'icône de certains chanteurs apparaissait avec des zones blanches à la place du noir. Ceci a été corrigé.
     
    Dans la même palette, lorsque plusieurs chanteurs sont situés à la même position stéréo, ou à une position proche, un algorithme empêche les noms des chanteurs de se chevaucher.
    Nous essayons d'améliorer cet algorithme, et de gérer également le chevauchement des drapeaux représentant la langue du chanteur. En effet, les langues des chanteurs situés derrière ne sont pas toujours bien visible, ce qui peut conduire à des erreurs.
    by Olivier Guillion


    Full view
    Reduced view
    Most recent first
    Oldest first
    All
    Didier Guillion
    Olivier Guillion
    Sylvie Ricard
    All
    Dev News
    Technical
    Mood
    Memories
    Myriad Life
    To be seen
    30 previous days
    Apr 2006
    May 2006
    Jun 2006
    Jul 2006
    Aug 2006
    Sep 2006
    Oct 2006
    Nov 2006
    Dec 2006
    Jan 2007
    Feb 2007
    Mar 2007
    Apr 2007
    May 2007
    Jun 2007
    Jul 2007
    Aug 2007
    Sep 2007
    Oct 2007
    Nov 2007
    Dec 2007
    Jan 2008
    Feb 2008
    Mar 2008
    Apr 2008
    May 2008
    Jun 2008
    Jul 2008
    Aug 2008
    Sep 2008
    Oct 2008
    Nov 2008
    Dec 2008
    Jan 2009
    Feb 2009
    Mar 2009
    Apr 2009
    May 2009
    Jun 2009
    Jul 2009
    Aug 2009
    Sep 2009
    Oct 2009
    Nov 2009
    Dec 2009
    Jan 2010
    Feb 2010
    Mar 2010
    Apr 2010
    May 2010
    Jun 2010
    Jul 2010
    Aug 2010
    Sep 2010
    Oct 2010
    Nov 2010
    Dec 2010
    Jan 2011
    Feb 2011
    Mar 2011
    Apr 2011
    May 2011
    Jun 2011
    Jul 2011
    Aug 2011
    Sep 2011
    Oct 2011
    Nov 2011
    Dec 2011
    Jan 2012
    Feb 2012
    Mar 2012
    Apr 2012
    May 2012
    Jun 2012
    Jul 2012
    Aug 2012
    Sep 2012
    Oct 2012
    Nov 2012
    Dec 2012
    Jan 2013
    Feb 2013
    Mar 2013
    Apr 2013
    May 2013
    Jun 2013
    Jul 2013
    Aug 2013
    Sep 2013
    Oct 2013
    Nov 2013
    Dec 2013
    Jan 2014
    Feb 2014
    Mar 2014
    Apr 2014
    May 2014
    Jun 2014
    Jul 2014
    Aug 2014
    Sep 2014
    Oct 2014
    Nov 2014
    Dec 2014
    Jan 2015
    Feb 2015
    Mar 2015
    Apr 2015
    May 2015
    Jun 2015
    Jul 2015
    Aug 2015
    Sep 2015
    Oct 2015
    Nov 2015
    Dec 2015
    Jan 2016
    Feb 2016
    Mar 2016
    Apr 2016
    May 2016
    Jun 2016
    Jun 25th, 2016 at 10:18am 
    Comment from Pascal P.
    Merci !
    Jun 24th, 2016 at 04:59pm 
    Article from Olivier Guillion
    Harmony 9.6 étape 916
    Jun 24th, 2016 at 04:59pm 
    Article from Olivier Guillion
    Harmony 9.6 étape 916
    Jun 23rd, 2016 at 04:58pm 
    Article from Didier Guillion
    Harmony 9.6 étape 915
    Jun 22nd, 2016 at 05:02pm 
    Article from Olivier Guillion
    Harmony 9.6 étape 914
    Jun 21st, 2016 at 05:00pm 
    Article from Didier Guillion
    Harmony 9.6 étape 913
    Jun 20th, 2016 at 06:52pm 
    Article from Didier Guillion
    Harmony 9.6 étape 912 (suite)
    Jun 20th, 2016 at 04:59pm 
    Article from Olivier Guillion
    Harmony 9.6 et autre étape 912
    Jun 19th, 2016 at 02:00am 
    Comment from David Collins-White
    Harmony Assistant Update
    Jun 17th, 2016 at 04:55pm 
    Article from Didier Guillion
    Harmony 9.6 et autre étape 911

    Top of page
    Legal information Last update:  (c) Myriad