Aller au contenu
learn

Théorie musicale pour Guitar Alchemist — Mission

Guitar Alchemist (GA) est une grosse base de code C# et F# consacrée à la musique : notes, intervalles, gammes, modes, accords, voicings, classes d’ensembles, et des outils qui permettent à un assistant IA de raisonner dessus. Je sais lire le code. Ce que je ne sais pas faire, c’est dire si ModalFamily, PrimeForm ou GetSymbolSuffix calculent ce qu’un musicien entend par ces mots. Ce cours apprend la théorie dans des sources sérieuses, puis lit les types de GA avec cette théorie en main, et note chaque endroit où les deux divergent.

Tu écris du C# ou du Java. Tu joues un peu de guitare : quelques accords ouverts, peut-être une gamme pentatonique. Tu ne lis pas la musique, et tu n’en as pas besoin : chaque notion arrive en trois temps.

  1. L’idée, en mots et sur le manche.
  2. La notation dans laquelle musiciens et théoriciens l’écrivent.
  3. Dans GA : les types et méthodes qui la représentent, avec des liens vers les lignes exactes.

Le côté programmation reste familier : objets valeur, records, champs de bits, expressions switch, LINQ.

  • convertir entre noms de notes, classes de hauteurs, numéros MIDI et positions sur le manche ;
  • nommer et écrire les intervalles, et les replier en classes d’intervalles ;
  • construire gammes et modes à partir de motifs de pas, les lire comme des nombres sur 12 bits et les dessiner en bracelets ;
  • lire les chiffrages d’accords, écrire les accords, reconnaître les renversements et nommer les voicings de guitare ;
  • calculer vecteurs d’intervalles, formes primaires et numéros de Forte, et expliquer la relation Z ;
  • lire les armures, parcourir le cercle des quintes et trouver les tonalités relatives, homonymes et voisines ;
  • construire les accords d’une tonalité, les désigner par des chiffres romains et des fonctions, et analyser cadences et progressions ;
  • expliquer la conduite des voix, les substitutions, l’emprunt modal, les gammes symétriques, les accords étendus et les techniques de voicing à la guitare ;
  • retrouver chacune de ces notions dans le code de GA, et dire où GA s’accorde avec la théorie et où il s’en écarte.

Le cours suit les notions qu’utilisent le code, les fichiers de configuration et les outils MCP de GA, de la note isolée aux transformations néo-riemanniennes. Les leçons 1 à 16 sont écrites ; les autres sont le plan, et leur colonne GA nomme les types, fichiers et outils que chacune lira.

# Leçon Théorie Dans GA Si tu écris du C#
1 Notes, classes de hauteurs et manche hauteur, classe de hauteurs, altérations, intervalles, accordage PitchClass, Note, Interval, Tuning, Fretboard objets valeur, hiérarchies fermées de records
2 Gammes, modes et identifiants de gamme sur 12 bits gammes majeure et mineures, modes, transposition, bracelets PitchClassSetId, Scale, MajorScaleMode, ModalFamily [Flags], rotation de bits, PopCount
3 Accords, chiffrages, renversements et voicings triades, accords de septième, chiffrages d’accords, renversements Chord, ChordFormula, CanonicalChordPatternCatalog, Voicing parseurs, expressions switch
4 Classes d’ensembles, vecteurs d’intervalles et relation Z équivalence T/I, vecteurs d’intervalles, formes primaires, numéros de Forte SetClass, IntervalClassVector, ForteCatalog, outils MCP formes canoniques, classes d’équivalence
5 Tonalités, armures et cercle des quintes armures, tonalités relatives et homonymes, tonalités voisines Key, KeySignature, outils MCP de tonalité objets valeur à plage bornée, tables de correspondance
6 Les accords d’une tonalité triades et accords de septième diatoniques, chiffres romains, noms des degrés, fonctions HarmonicFunction, Key.Notes, PitchClassSet.GetCompatibleKeys, ga_diatonic_chords enums, tests d’inclusion sur des masques de bits
7 Cadences, ii–V–I et tonalité d’une progression cadences, mouvements plagal et rompu, ii–V–I, résolution de V⁷, trouver la tonalité Cadences.yaml, PitchClassSet.ClosestDiatonicKey, ga_analyze_progression, ga_key_from_progression calcul de score et départage
8 Le ukulélé et la basse accordages rentrants, accordages en quartes, numérotation des cordes Tuning.Ukulele, Tuning.Bass, Str, Fretboard, Instruments.yaml deviner à partir des données, et quand s’en abstenir
9 Conduite des voix et notes communes notes communes, conduite des voix conjointe, distance de conduite des voix, quintes et octaves parallèles, distances OPTIC VoiceLeadingSpace, SetClassOpticIndex, ProgressionVoiceLeadingAnalyzer, VoiceLeadingSkill, ga_common_tones, ga_voice_leading_pair métriques de distance
10 Substitutions et emprunt modal substitution par le relatif et substitution tritonique, accords d’emprunt ChordSubstitutionSkill, ModalInterchange.yaml, get_borrowed_chords, ga_chord_substitutions, GrothendieckDelta classement de candidats
11 Les modes en profondeur modes des mineures mélodique et harmonique, luminosité, familles modales MelodicMinorMode, HarmonicMinorMode, IScaleDegreeNaming, PitchClassSet.StepBrightness, UnifiedModeService, Modes.yaml, get_mode_info génériques sur les degrés
12 La symétrie et les modes à transpositions limitées modes à transpositions limitées, modes de Messiaen, gamme triton, axes miroirs SymmetricScaleMode, WholeToneScaleMode, DiminishedScaleMode, AugmentedScaleMode, UnifiedModeService, AtonalModalFamilies.yaml, TranspositionClass invariants par rotation
13 Les accords étendus et altérés neuvièmes, onzièmes, treizièmes, altérations, structures supérieures, polyaccords Chord.FromSymbol, ChordSymbolParser, BasicChordExtensionsService, ChordAlterationService, ChordTemplateFactory, ExtendedChords.yaml, ga_polychord parseurs à parties optionnelles
14 Voicings de guitare : shell, drop 2 et drop 3 voicings shell, voicings serrés et drop, notes guides VoicingGenerator, VoicingHarmonicAnalyzer, VoicingAnalyzer, VoicingFilters, ChordClassificationEngine, ChordProgressions.yaml génération combinatoire
15 Le manche : CAGED, doigtés et jouabilité formes CAGED, géométrie du manche, extension et effort, accordages ouverts FretboardGeometry, PhysicalFretboardCalculator, PhysicalCostService, VoicingPhysicalAnalyzer, BiomechanicalAnalyzer, PlayerProfile, Tunings.toml, ga_easier_voicings fonctions de coût
16 Arpèges, théorie accord–gamme et improvisation arpèges, paires accord–gamme, notes « outside » ga_arpeggio_suggestions, ImprovisationSkill, OutsideNotesSkill, ImprovisationConcepts.yaml tables de correspondance
17 Le Tonnetz et les transformations néo-riemanniennes P, L et R, le Tonnetz, médiantes chromatiques NeoRiemannian.yaml, NeoRiemannianConfig.fs graphes de transformations
A Tous les instruments de Guitar Alchemist accordages, chœurs, cordes rentrantes Instruments.yaml, InstrumentsConfig, Tuning de la configuration que rien ne lit
B La hiérarchie OPTIC octave, permutation, transposition, inversion, cardinalité PitchClassSet, TranspositionClass, SetClass, le schéma OPTIC-K de GA équivalence, quotient après quotient
C Toutes les divergences, et à qui revient le bug les 40 lignes DIFF des leçons 1 à 7 les 19 défauts dont elles viennent lire honnêtement une comparaison
— Journal
  • Le SDK .NET 10 et Git. Sous Windows, lance les scripts du cours depuis Git Bash.
  • Environ 35 Mo de disque pour le clone partiel de GA et la sortie de compilation : le script ne récupère que les fichiers des trois projets contre lesquels le programme est compilé, et quelques fichiers de quatre autres.
  • Une guitare aide : chaque exemple peut être joué.

Les modules Streeling, générés à partir de GuitarAlchemist/Demerzel, couvrent en partie le même terrain, côté musicien. Chaque leçon renvoie aux modules pertinents :