Les premiers pas de l'intégration des plug-ins VST ont été franchis. Il n'y a pour l'instant aucune interface graphique, aucun choix possible ou configuration du plug-in (nous avons choisi un plug-in par défaut et nous l'avons mis "en dur" dans le programme) et l'utilisation en est plus que spartiate. Cependant, Harmony Assistant se compile et se lance, les notes de la portée sont envoyées au plug-in, qui calcule en retour des données numériques. Ces données numériques sont alors jouées en même temps que les autres instruments de la partition, qu'ils soient issus d'une base de son ou ou de MyrSynth. Bon, pour l'instant, les sons générés par le plug-in VST semblent être des ultrasons totalement inaudibles. Soit nous avons fait une erreur de programmation quelque part, soit le plug-in choisi ("Zebralette") ne sort rien de correct tant qu'on ne le configure pas correctement. En résumé, c'est partiellement en place, ce qui constitue un bon premier pas et démontre que c'est susceptible de fonctionner, mais ça ne fonctionne pas encore vraiment. Les anglophones appellent ça "proof of concept". Bon week-end à tous ! |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Une petite amélioration cosmétique : lors de la pose de deux fermetures de parties conditionnelles consécutives (ce qui constitue une erreur d'écriture), la deuxième était représentée par un carré : Ce n'était pas très clair, et nous-même avions oublié cette représentation, et avons mis un peu de temps pour comprendre ce dont il s'agissait quant elle est apparue. Aussi l'avons-nous changée en un crochet fermé grisé, pour montrer qu'il s'agit d'une fin de partie conditionnelle, mais qu'elle ne peut pas être prise en compte correctement : |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Permettre à des modules externes de s'insérer dans un programme existant nécessite un gros travail de préparation. Il s'agit de bien repérer les endroits-clé (ou goulots d'étranglement, ou "bottlenecks" en anglais) du programme où s'insèreront les accès aux modules. Minimiser leur nombre permet de gagner beaucoup de temps, aussi bien pour la conception que pour le débogage ou la maintenance. C'est le travail que nous avons entamé pour les VST. En nous basant sur ce que nous avions déjà réalisé pour MyrSynth (qui revient à peu près au même, au niveau des fonctionnalités, qu'un plug-in VST ), nous sommes en train de mettre en place les appels génériques à des modules de calcul externes. Ces modules seront des plug-ins VST, mais une fois le travail réalisé, on pourrait insérer facilement à peu près n'importe quel autre standard. Il vaut mieux prévoir, car le "standard" VST a déjà subi deux évolutions majeures qui nécessitent la réécriture de leur prise en compte. On n'est donc pas à l'abri d'une version 4 qui nous forcerait à tout reprendre. |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Comme prévu, la correction du problème de métrique et de marge des nouvelles mesures après une mesure coupée en deux a généré de nombreux effets de bord, qu'il a fallu identifier, reproduire et corriger. Mais maintenant cela semble fonctionner plutôt bien Un fonctionnement logique du programme avait un effet pervers. Attention, il faut suivre. En édition en mode page, lorsque le mode gravure n'impose pas la taille des mesures, qu'il y a des fins de ligne forcées et que les lignes sont justifiées, réduire la taille des mesure ne semble pas avoir d'effet, car ces tailles sont bien réduites (on peut le voir en mode ruban) mais la justification les étire ensuite à l'écran pour remplir toute la largeur de la page. Résultat : si on réduit fortement la taille d'un groupe de mesures en mode page, rien ne se passe. Mais si, après cela, on passe en mode ruban, on s'aperçoit que les mesures ont bien été réduites, et que toutes les notes sont les unes sur les autres. Cela ne gêne pas l'impression, mais c'est disgracieux et cela crée des problèmes de différentiation des objets et donc des incohérences dans le fonctionnement de l'interface. Nous avons mis en place un algorithme pour gérer cela et empêcher une telle réduction. Il semble fonctionner, mais là aussi, il va falloir surveiller les effets de bord. Dans PDFtoMusic cette fois, lors du jeu de la partition, l'algorithme destiné à toujours présenter la partie jouée à l'écran ne fonctionnait pas bien. Les calculs ont été repris. |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Pour bien commencer la semaine : Correction d'un crash lors de l'amplification d'une zone de piste numérique située après la fin de la partition Correction d'un problème de copier/coller dans l'éditeur de script MyrScript, qui pouvait insérer des caractères d'ASCII zéro dans le texte Correction d'un problème de calcul automatique de l'orientation de la liaison lors de la pose de notes dans un accord Correction d'un problème de métrique et marge par défaut lors de l'ajout d'une mesure à la fin, lorsque la dernière mesure est découpée par un changement de clé. Nécessitera une validation soigneuse à cause des multiples effets de bord possibles. Élimination d'un délai lors du clic de repositionnement en mode page (Ctrl - Maj - Clic). Plus généralement, élimination de divers délais lors du clic, à différents endroits du programme. |
|
|
by Olivier Guillion | | | |
|
![](/images/backgrounds/blog/myriadblogline.gif)
L'interface garphique des effets numériques du document en version Haute Qualité a été réalisée. Dans ce mode, la boîte de sélection prend alors cet aspect : Comme prévu, les réglages de réduction de bruit et d'augmentation des basses ont été remplacés par l'égaliseur 10 bandes. La réverbération améliorée et l'effet de surround multi-canaux gardent, quant à eux, la même interface. L'écriture et la relecture de ces nouveaux paramètres dans les fichiers Myr a été réalisée. Par contre, les accès MyrScript n'ont pas été faits, car aucun des paramètres de ces effets numériques du document n'est accessible depuis un script... Je ne parviens pas à m'en rappeler la raison. Peut-être cela posait-il trop de problèmes lorsqu'un script modifiait ces valeurs pendant que la musique jouait ? Une telle impasse sur des paramètres somme toute simples à gérer est étonnante, et méritera que l'on s'y penche. Bon week-end à vous tous ! |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Après les processeurs d'effets numériques, c'est maintenant au tour des ajustements audio de la partition à être repris pour assurer la compatibilité avec les modes avancés de spatialisation. Il s'agit de réglages qui s'appliquent à toute la partition, et qui permettent d'ajuster les niveaux, le timbre et quelques effets. Ces ajustements, accessibles depuis la palette "Outils joue musique" ont été les premiers traitements numériques à être intégrés à Harmony Assistant. Leur conception est donc ancienne, du temps où les ordinateurs étaient tout juste assez rapides pour effectuer ce type de traitement en temps réel. Depuis, la puissance des processeurs a été multipliée par 100. Nous avons donc repris la réverbération (qui était un simple écho multiple filtré) et y avons appliqué l'algorithme de réverbération des processeurs d'effets, en l'affinant même un peu plus. Le surround a quant à lui été réécrit pour prendre en compte les haut-parleurs arrière et latéraux Le "Bass boost" (filtre passe-bas) ou la "réduction de bruit" (un autre filtre passe-bas, avec une fréquence de coupure très élevée) vont faire la place à un égaliseur multi-bande reprenant l'algorithme de celui que nous venons de mettre en place dans les processeurs d'effets. Le contrôle automatique de gain reste en place, ainsi que le réglage du volume général. La partie calcul de tout cela a été mise en place et testée, il reste à en concevoir l'interface graphique. |
|
|
by Olivier Guillion | | | |
|
![](/images/backgrounds/blog/myriadblogline.gif)
L'effet numérique "égaliseur 10 bandes" est finalisé. Dans l'édition des processeurs d'effets, son panneau ressemble à ceci : La case à cocher permet, comme pour les autres effets, de définir que le passage d'un effet à l'autre se fera de manière progressive. Ainsi, à partir de l'original déjà entendu hier : Guitare - Original Voici ce que cela donne, après avoir posé quelques processeurs d'effets de type "égaliseur multibande" en variation douce : Guitare - Variation d'égalisation La sauvegarde, le chargement, et l'accès par MyrScript ont également été réalisés. |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
L'égaliseur 10 bandes a été mis en place fonctionnellement. Il reste à en peaufiner l'interface, à en écrire la sauvegarde et le chargement, les accès MyrScript et les évolutions lentes d'un jeu de paramètres à l'autre. Mais, en l'état, cela nous permet déjà de tester le résultat. Ainsi, à partir d'une portée d'origine qui joue cela : Guitare - Original nous avons appliqué l'égaliseur multi-bande avec divers réglages. Coupure de toutes les fréquences à partir de la bande des 8 kHz : Guitare - Coupure 8kHz et plus ou, au contraire, renforcement de ces fréquences : Guitare - Renforcement 8kHz et plus Renforcement "en cloche" des graves : Guitare - Graves ou des aigus : Guitare - Aigus Simulation de téléphone (l'appareil, pas le groupe) : Guitare - Téléphone Mais on n'est pas obligé de pousser tous les curseurs au maximum. On peut avoir la main un peu plus légère, même si l'effet est ici exagéré pour permettre de bien entendre le changement de timbre : Guitare - Réglages fins à comparer avec l'original, proposé en première position. |
|
|
by Olivier Guillion | | | |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Dans le cadre de l'amélioration du rendu sonore, nous étudions la possibilité d'introduire un nouveau traitement dans les processeurs d'effets : un égaliseur multi-bande. Il existe déjà un égaliseur de base, qui permet de régler les graves et aigus, mais celui-ci est peu précis et ne permet pas de réglage fin du timbre de la portée. Un égaliseur multi-bande permet de régler indépendamment le volume de plusieurs bandes de fréquence (en général une dizaine) réparties sur le spectre sonore. Les premiers essais ont été réalisés en MyrScript, qui, en toute objectivité, constitue un fantastique outil pour la mise au point de projets de traitements audionumériques. Ces essais étant concluants, une maquette a été écrite en C, testée, puis chronométrée pour vérifier que les calculs ne soient pas trop gourmands en ressources machine. Le calcul se fait 70 fois plus vite que le temps réel, ce qui signifie que nous pourrions traiter jusqu'à 70 pistes audio simultanément pendant qu'elles se jouent. Cela nous semble correct. L'implémentation en tant que processeur d'effet dans Harmony Assistant va donc être réalisée. Des extraits audio de démonstration seront proposés ici même dès demain. |
|
|
by Olivier Guillion | | | |
|
![](/images/backgrounds/blog/myriadblogline.gif)
La gestion des processeurs d'effets a été finalisée. Pour les échos et réverbérations, rien n'a changé extérieurement, seuls les calculs ont été repris pour gérer les haut-parleurs supplémentaires. Pour les réglages de "panning" (position du son), par contre, il a fallu prévoir une autre interface graphique : - Le "panning" fixe est passé en deux dimensions. On peut spécifier l'origine du son non seulement sur l'axe droite-gauche mais également avant-arrière : - Le "panning" oscillant (LFO) a quant a lui été complètement repris. Au lieu de définir une simple oscillation droite-gauche, on définit maintenant le cercle, aplati ou non, décalé ou non par rapport à l'auditeur, que décrit le son : Il nous reste à tester en profondeur ces nouveaux panneaux, avant de passer à l'un des 8 autres points restants. |
|
|
by Olivier Guillion | | | |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Nous avons recensé 10 points dans le logiciel qui nécessitent d'être repris pour être compatibles avec la spatialisation avancée. Le premier est le système d'écho et de réverbération des processeurs d'effets. Il y a trois type d'échos, un écho simple, un écho multiple et une réverbération "réaliste". Chacun de ces types d'effets se décline en deux versions. Dans la première les échos s'entendent à la position (stéréo, jusqu'ici) du son original. Dans la deuxième version, baptisée "ping-pong", l'écho se fait entendre à l'opposé du son original, comme le rebond du son sur le mur opposé d'une pièce. Ces trois effets, dans leurs deux versions, ont été réécrits pour tenir compte des haut-parleurs additionnels. Cela donne notamment à la réverbération réaliste un effet enveloppant beaucoup plus prononcé qu'en simple stéréo. |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Même lorsqu'on arrive à glaner quelques renseignements sur la manière de gérer plus de 2 haut-parleurs, il est assez difficile de savoir si les traitements doivent être faits en amont lors de la restitution des données numériques, ou si il sont effectués après coup par le matériel. Par exemple, il est établi que le caisson de basses (subwoofer) restitue les fréquences de 20 à 120 Hz. Mais les tests montrent que, au moins sur le système 5.1 que nous possédons, ce filtrage est effectué de manière matérielle (à moins que ce soit le pilote sonore qui s'en occupe). En tout cas, le logiciel n'a pas besoin de filtrer. Il envoie bêtement le son non traité, ce qui nous arrange bien, et le caisson de basse restitue uniquement les fréquences prévues. Mais est-ce le cas sur tous les systèmes ? Nous avons également repéré une curiosité : normalement, chacun des 6 haut-parleurs peut être géré indépendamment. On peut envoyer du son sur le haut-parleur arrière gauche et du silence sur tous les autres. Sauf que... Lorsque du son est envoyé à l'un des deux haut-parleurs avant gauche et avant droit (ceux qui sont utilisés pour de la stéréo simple), le caisson de basse est également sollicité. Impossible de l'éviter. Est-ce un fonctionnement standard de tous les systèmes 5.1 ? Ou est-ce une liberté prise par le constructeur pour "enrichir" automatiquement les sons envoyés en simple stéréo ? Impossible de le savoir sans documentation précise ou tests supplémentaires sur d'autres systèmes. Assez rapidement, nous devrons donc probablement lancer un appel à testeurs pour tirer cela au clair. Si votre sortie sonore est connectée à un système multicanaux (2.1 à 7.1), vous pouvez commencer à vous manifester |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Avant d'entamer les tests de spatialisation avancée, nous avons effectué quelques recherches sur le sujet, afin d'acquérir un minimum de notions de base. Voici ce que nous avons retenu des différents modes de restitution sonore, avec des schémas. La nomenclature est la suivante : <nombre de haut-parleurs "standards"> . <nombre de caissons de basse> Ainsi, 4.1 signifie 4 haut-parleurs standards et 1 caisson de basse. On va aller du plus simple au plus complexe. Tout d'abord, le rendu monophonique. Si vous avez suivi, cela se note donc 1.0 Un haut-parleur (rectangle jaune) est placé face à l'auditeur. Il délivre un son dont il n'est pas possible de régler la position. On passe alors au 2.0, qui est le mode stéréophonique conventionnel : Si on y adjoint un caisson de basse (subwoofer), qui restitue les fréquences de 20 à 120Hz, on obtient alors du 2.1 Le caisson de basse émet des sons graves que l'oreille humaine a du mal à localiser. Il n'est donc pas, dans la réalité, nécessairement positionné au centre. À partir de maintenant, toutes les configurations présentées ici seront munies d'un caisson de basse, et finiront donc toutes par ".1". Les configurations correspondantes en ".0", sans caisson de basse, existent également. Voici donc le 3.1 stereo, dans lequel on a ajouté un haut-parleur avant au centre : Mais il est également possible, à partir de 3 haut-parleurs, de commencer le "surround", c'est-à-dire d'entourer l'auditeur pour générer des sons dans tout le plan. Voici donc le 3.1 surround , dans lequel le haut-parleur supplémentaire est placé derrière l'auditeur : À noter que, dans ces schémas, la couleur de représentation des haut-parleurs correspond à la couleur de la fiche jack correspondante à l'arrière du PC. Ajoutons encore un haut-parleur. On obtient soit le 4.1 quadriphonique : soit le 4.1 surround : On passe ensuite à la configuration la plus courante, le 5.1. On peut mettre deux haut-parleurs à l'arrière : En examinant le schéma ci-dessus, vous comprendrez pourquoi le logo du système 5.1, utilisé en illustration de ce billet de blog, est ce qu'il est. On peut positionner les haut-parleurs sur le coté plutôt qu'à l'arrière, on obtient alors le 5.1 side: La première était celle prévue à l'origine sur les PC (prise noire pour les haut-parleurs arrières). Mais il semble qu'il y ait eu une confusion au départ, puisque Windows considère maintenant que le standard 5.1 correspond à la deuxième configuration, avec deux haut-parleurs de part et d'autre de l'auditeur, branchés sur une prise grise. Cela aboutit à de beaux gags, notamment avec les cartes Realtek, qui n'ont pas de prise grise et où, lorsqu'on sélectionne 5.1 dans leur propre pilote, les haut-parleurs arrière ne produisent aucun son. Il faut alors sélectionner 7.1 (voir plus bas) et indiquer que les haut-parleurs des cotés sont absents. Et pour cause, il n'y a pas de prise pour les brancher. Cette curiosité enflamme la communauté des utilisateurs depuis plusieurs années, Realtek faisant - c'est un comble- la sourde oreille. Un haut-parleur de plus, et on obtient la très rare configuration en 6.1 : et sa variante en 6.1 side Et, enfin, le 7.1 Il y a en théorie d'autres standards avec encore plus de haut-parleurs (Windows en prévoit jusqu'à 18 ), mais en pratique, la très vaste majorité des cartes sons ne va pas au-delà du 7.1 soit un total de 7 haut-parleurs et 1 caisson de basse. Cela nécessite 4 prises jack stéréo (verte, jaune, grise et noire) à l'arrière du PC pour les connecter. Quelle proportion d'utilisateurs de PC possèdent des sorties en 7.1, soit une carte son doté de 6 prises jack stéréo (la rose et la bleue sont destinées à connecter un micro et une entrée ligne), et combien possèdent un système audio à 5 ou 7 haut-parleurs + 1 caisson ? Nous n'avons pas de réponse à ces questions pour l'instant. Du point de vue de la programmation, nous avons pu démarrer des sons en 7.1, soit sur 8 canaux indépendants au lieu de 2 pour la stéréo, ce qui signifie que ce sera à l'application de décider ce qui sortira sur le caisson de basse, et d'effectuer des filtrages en temps réel. Nous cherchons vainement, maintenant, à trouver une documentation fiable expliquant si les autres sorties doivent être également filtrées, de quelle manière et dans quel cas. |
|
|
by Olivier Guillion | | |
| |
|
![](/images/backgrounds/blog/myriadblogline.gif)
Nous avons depuis longtemps des demandes d'amélioration de la sortie numérique dans Harmony Assistant. Ces demandes peuvent être de deux types, qui paraissent proches de prime abord mais qui ne le sont pas tant que cela. La première demande consiste à gérer plusieurs sorties stéréo simultanément. Il faudrait que nous ajoutions, dans la configuration matérielle, la possibilité de définir plusieurs sorties numériques, et pour chaque instrument l'utilisateur pourrait définir à quelle sortie il est associé (comme cela se fait déjà pour la MIDI). Ceci pourrait servir à réaliser des enregistrements multipistes, ou envoyer en temps réel le son de certains instruments sur des boîtiers externes d'effets audio. La deuxième demande consiste à gérer les systèmes de spatialisation avancée, qui ajoutent aux traditionnels hauts-parleurs droite et gauche des ensembles placés de part et d'autre de l'auditeur, des caissons de basse, subwoofers, etc. Cela permet de décider de la position de l'instrument non seulement sur l'axe gauche-droite, mais également sur l'axe avant-arrière (et, pourquoi pas, sur l'axe haut-bas?). Pourquoi ces deux demandes ne peuvent-elles pas être gérées ensemble, par la même amélioration du logiciel ? Dans la première (multi-sortie), la carte son se comporte comme s'il y avait plusieurs cartes sons stéréo sur la machine. Physiquement, on peut même imaginer qu'il y en ait réellement plusieurs. Lorsqu'on joue la musique, il faut donc démarrer le son sur chacune de ces cartes, individuellement, et s'arranger ensuite pour que le son envoyé sur chacune d'elles soit parfaitement synchronisé. Il ne s'agirait pas qu'une des sorties soit décalée d'1/10e de seconde par rapport à l'autre ! Ce type de synchronisation est très complexe, et il est peu probable que cela puisse être réalisé avec 100% de réussite. Galère d'assistance technique en perspective... Dans la deuxième (spatialisation 5.1 à 7.1), on peut s'attendre à ce que le programme ne démarre le son qu'une seule fois, et que les données numériques envoyés à chaque haut-parleur soient parfaitement synchronisées, à l'échantillon près. Mais si, techniquement, cela ne devrait donc pas poser énormément de problèmes, l'ergonomie tout entière du logiciel devrait être changée pour en tenir compte, et cela promet d'être compliqué. De plus, nous ne possédons pas un tel système de haut-parleurs, et c'est inenvisageable dans le bureau que nous partageons. Reste la solution du casque dolby 5.1 de gamer... Galère d'assistance technique en perspective... Il semble que la demande la plus fréquente soit celle concernant la spatialisation, d'autant plus que la majorité des cartes sons actuelles gèrent au moins 5 haut-parleurs. Mais comment cela se gère-t-il vraiment ? Est-ce au programme de déterminer ce qui sortira sur le caisson de basse, ou est-ce automatique ? De même, dans le cas du Dolby 7.1, les haut-parleurs arrière et ceux au niveau de l'auditeur sont-ils complètement distincts vis-à-vis du programme, ou gérés par un mixage automatique de la carte son ? Difficile pour nous de répondre pour l'instant. Et la manière de gérer ceci ergonomiquement dépendra de ces réponses... et des besoins exprimés par les utilisateurs, qu'il va probablement falloir sonder. Bon week-end à vous, et si vous avez des suggestions, témoignages, références techniques ou demandes particulières dans ce sens, n'hésitez pas à les préciser. |
|
|
by Olivier Guillion | | | |
|
|