Aller au contenu
learn

VexTab et VexFlow — Mission

Guitar Alchemist (GA) montre des voicings de guitare, et un voicing se lit plus facilement en tablature que sous la forme x-3-2-0-1-0. On demande au chatbot de GA de joindre un bloc vextab à chaque doigté qu’il mentionne ; GA a une grammaire VexTab en EBNF, un analyseur et un générateur en F#, un visualiseur React, et des tests de bout en bout qui attendent un SVG. Je voulais savoir ce qu’est VexTab, ce qu’il sait écrire et ce qu’il ne sait pas écrire, et si les morceaux de GA qui le parlent sont d’accord avec l’original. La leçon 4 répond à la dernière question avec des mesures, et la réponse est surtout non.

Vous écrivez du C# ou du Java. Vous connaissez le JavaScript de JavaScript pour les développeurs C#/Java : modules, npm, fonctions, objets. Un peu de React aide pour le second lot. Vous savez lire une tablature de guitare : six lignes, une par corde, des chiffres pour les frettes. La théorie musicale dont les leçons ont besoin, noms des notes, octaves, armures, est rappelée là où elle apparaît, avec des liens vers Théorie musicale pour Guitar Alchemist.

Ce que c’est Ce que vous connaissez de plus proche
VexFlow Une bibliothèque JavaScript qui dessine la notation musicale et la tablature, en SVG ou sur un canvas : portées, notes, ligatures, liaisons, bends, texte Une API de dessin avec un moteur de mise en page, comme le DrawingContext de WPF plus un formateur
VexTab Un petit langage texte pour la notation et la tablature, et le JavaScript qui l’analyse et appelle VexFlow Un DSL compilé en appels sur une API objet, comme un modèle Razor compilé en C#
tabstave, notes, text, options Les quatre sortes de lignes VexTab Les instructions du DSL
L’Artist L’objet de VexTab qui transforme les lignes analysées en portées et en notes VexFlow Le générateur de code d’un compilateur
  • écrire du VexTab pour des mélodies, des accords et des techniques de guitare, et lire les erreurs qu’il lève ;
  • régler armures, chiffrages, clés et accordages, et savoir lesquels changent la notation et lesquels seulement la tablature ;
  • rendre du VexTab en SVG sous Node, sans navigateur, et tester le résultat ;
  • dire ce que VexTab ne sait pas exprimer, et quand descendre à VexFlow ;
  • vérifier un programme qui écrit du VexTab, un chatbot ou un générateur, avec le vrai analyseur ;
  • (second lot) dessiner la même musique avec les objets de VexFlow lui-même, la rendre en React sans redessiner à chaque jeton, et préparer un passage de VexFlow 4 à 5.
# Leçon Ce que vous connaissez déjà
1 Première portée, première tablature un DSL compilé vers une API, un arbre syntaxique, System.Xml.Linq
2 Techniques de guitare la tablature que vous lisez : bends, glissés, hammer-ons, accords
3 Armures, chiffrages, clés et accordages les armures, les capodastres, le drop D
4 Étude de cas : le chatbot de GA écrit du VexTab FParsec ou une bibliothèque de combinateurs d’analyseurs, les prompts de LLM
5 Second lot. Stave, StaveNote, Voice, Formatter : ce que VexTab cache, et une voix stricte qui compte les temps la construction d’objets, une passe de mise en page
6 Second lot. TabStave et TabNote ; garder notation et tablature en phase deux vues d’un même modèle
7 Second lot. Rendre en React sans redessiner à chaque jeton reçu en flux, et le tester avec Playwright (le MemoizedVexTab de GA) memo, les effets, les tests de bout en bout
8 Second lot. Passer les composants de GA de VexFlow 4 à 5 : ce qui a changé dans l’API, les polices et la mesure du texte une mise à jour de version majeure
— Journal