Français
English

Théorie musicale, toplap Strasbourg

Version alpha/WIP - Sera améliorée prochainement

livecodingstrasbourg.github.io

Fondamentaux de la Théorie Musicale

Le Son et la Physique Musicale

Le son est une vibration qui se propage dans l'air. La musique organise ces vibrations selon des rapports mathématiques précis.

Fréquence d'une note :
f(n) = 440 × 2^((n-69)/12) Hz
où n = numéro MIDI (60 = Do central)
Série harmonique : Tout son musical contient des harmoniques qui sont des multiples entiers de la fréquence fondamentale.
Fondamentale (f), Octave (2f), Quinte (3f), Double octave (4f), Tierce majeure (5f)...

Le Système Tempéré

Le tempérament égal divise l'octave en 12 demi-tons égaux.

Rapport entre demi-tons :
¹²√2 ≈ 1.05946
Chaque demi-ton multiplie la fréquence par ce facteur
# FoxDot - Explorer le tempérament
# Jouer tous les demi-tons d'une octave
p1 >> pluck(range(12), dur=0.5)

# Comparer tempérament égal vs. juste intonation
# Tierce majeure tempérée (400 cents) vs. pure (386 cents)
p2 >> sine([0, 4], dur=4)  # Tempéré
p3 >> sine([0, 0+4.86], dur=4)  # Juste (5/4)

Notation et Transposition

Français Anglais Degré Fréquence (La=440)
Do C 0 261.63 Hz
D 2 293.66 Hz
Mi E 4 329.63 Hz
Fa F 5 349.23 Hz
Sol G 7 392.00 Hz
La A 9 440.00 Hz
Si B 11 493.88 Hz

📝 Exercice : Exploration des octaves

1. Jouez la même note sur différentes octaves et observez le rapport de fréquence (×2)

2. Créez une mélodie qui utilise au moins 3 octaves différentes

3. Expérimentez avec la microtonalité en ajoutant des fractions aux degrés

Les Intervalles - Base de l'Harmonie

Classification des Intervalles

Un intervalle est la distance entre deux notes. Il se définit par sa taille (nombre de degrés) et sa qualité (majeur, mineur, juste, augmenté, diminué).

Nom Demi-tons Rapport Qualité sonore Code
Unisson 0 1:1 Parfait P1
Seconde mineure 1 16:15 Dissonant m2
Seconde majeure 2 9:8 Légèrement dissonant M2
Tierce mineure 3 6:5 Consonant, triste m3
Tierce majeure 4 5:4 Consonant, joyeux M3
Quarte juste 5 4:3 Parfait/Suspendu P4
Triton 6 √2:1 Très dissonant A4/d5
Quinte juste 7 3:2 Parfait P5
Sixte mineure 8 8:5 Consonant m6
Sixte majeure 9 5:3 Consonant M6
Septième mineure 10 16:9 Dissonant m7
Septième majeure 11 15:8 Très dissonant M7
Octave 12 2:1 Parfait P8

Consonance et Dissonance

Intervalles parfaits : Unisson, Quarte, Quinte, Octave
Consonants imparfaits : Tierces et Sixtes
Dissonants : Secondes, Septièmes, Triton
# FoxDot - Explorer les intervalles
# Jouer tous les intervalles depuis Do
root = 0
p1 >> pluck([root, root+i] for i in range(13), dur=1)

# Consonance vs Dissonance
# Intervalles consonants
p2 >> keys([(0,4), (0,7), (0,12)], dur=2)  # Tierce maj, Quinte, Octave

# Intervalles dissonants
p3 >> keys([(0,1), (0,6), (0,11)], dur=2)  # m2, Triton, M7

# Résolution des dissonances
p4 >> keys([(0,11), (0,12)], dur=[1,3])  # 7M → Octave

Renversement des Intervalles

Quand on inverse un intervalle (la note grave devient aiguë), on obtient son complément à l'octave.

Règle de renversement :
Intervalle + Renversement = 9
Majeur ↔ Mineur
Augmenté ↔ Diminué
Juste → Juste
# FoxDot - Renversements d'intervalles
# Tierce majeure (4 demi-tons) → Sixte mineure (8 demi-tons)
p1 >> pluck([(0,4), (4,12)], dur=2)

# Quinte juste (7) → Quarte juste (5)
p2 >> pluck([(0,7), (7,12)], dur=2)

# Démonstration avec mouvement contraire
melody = [0, 2, 4, 5, 7]
p3 >> pluck(melody, dur=0.5)
p4 >> pluck([12-n for n in melody], dur=0.5)  # Inversion

📝 Exercice : Maîtrise des intervalles

1. Créez une mélodie utilisant uniquement des intervalles consonants

2. Ajoutez progressivement des dissonances et résolvez-les

3. Composez un motif basé sur un intervalle spécifique (ex: que des quartes)

Gammes et Modes - Les Couleurs Musicales

Construction des Gammes

Une gamme est une succession de notes organisées selon un pattern d'intervalles spécifique.

Formules des gammes principales :
Majeure : T-T-S-T-T-T-S (T=Ton, S=Demi-ton)
Mineure naturelle : T-S-T-T-S-T-T
Mineure harmonique : T-S-T-T-S-(1.5T)-S
Mineure mélodique : T-S-T-T-T-T-S (montante)
# FoxDot - Gammes fondamentales
# Gamme majeure
Scale.default = "major"
p1 >> pluck(P[:8], dur=0.5)

# Comparaison des mineures
p2 >> pluck([0,2,3,5,7,8,10,12], dur=0.5)  # Naturelle
p3 >> pluck([0,2,3,5,7,8,11,12], dur=0.5)  # Harmonique
p4 >> pluck([0,2,3,5,7,9,11,12], dur=0.5)  # Mélodique

# Gammes exotiques
Scale.default = "phrygian"  # Mode phrygien (flamenco)
p5 >> pluck(P[:8].mirror(), dur=0.25)

Les Modes Grecs

Les modes sont des variations de la gamme majeure commençant sur différents degrés.

I - Ionien

Do Ré Mi Fa Sol La Si

Majeur classique

II - Dorien

Ré Mi Fa Sol La Si Do

Mineur avec 6te majeure

III - Phrygien

Mi Fa Sol La Si Do Ré

Couleur espagnole

IV - Lydien

Fa Sol La Si Do Ré Mi

Majeur avec #4

V - Mixolydien

Sol La Si Do Ré Mi Fa

Majeur avec 7b

VI - Éolien

La Si Do Ré Mi Fa Sol

Mineur naturel

VII - Locrien

Si Do Ré Mi Fa Sol La

Diminué, instable
# FoxDot - Explorer les modes
# Jouer tous les modes depuis la même fondamentale
modes = ["ionian", "dorian", "phrygian", "lydian", 
         "mixolydian", "aeolian", "locrian"]

for i, mode in enumerate(modes):
    Scale.default = mode
    Clock.future(i*4, lambda m=mode: p1 >> pluck(P[:8], dur=0.5))
    
# Progression modale en Dorien
Scale.default = "dorian"
p2 >> keys([P(0,2,4), P(1,3,5), P(6,1,3), P(0,2,4)], dur=2)

Gammes Pentatoniques et Blues

Pentatonique majeure : 1, 2, 3, 5, 6 (Do, Ré, Mi, Sol, La)
Pentatonique mineure : 1, ♭3, 4, 5, ♭7 (La, Do, Ré, Mi, Sol)
Blues : 1, ♭3, 4, ♭5, 5, ♭7 (avec blue note)
# FoxDot - Gammes pentatoniques et blues
# Pentatonique majeure - parfaite pour l'improvisation
Scale.default = Scale.major.pentatonic
p1 >> pluck(PRand(0,5)[:16], dur=0.25)

# Blues avec bending de la blue note
p2 >> pluck([0, 3, 5, 6, 7, 10], dur=0.5, bend=P[0,0,0,0.25,0,0])

# Riff de blues classique
p3 >> bass([0, 0, 3, 0, 5, 3, 0, 0], dur=0.5, lpf=800)

Gammes du Monde

Gamme Arabe (Hijaz)

1, ♭2, 3, 4, 5, ♭6, 7

Intervalle augmenté caractéristique

Gamme Japonaise (Hirajoshi)

1, 2, ♭3, 5, ♭6

Pentatonique sans 4te ni 7me

Gamme Tzigane

1, 2, ♭3, #4, 5, ♭6, 7

Double intervalle augmenté

Gamme par Tons

1, 2, 3, #4, #5, #6

Que des tons entiers

📝 Exercice : Exploration modale

1. Composez une mélodie dans chaque mode et notez leur caractère émotionnel

2. Créez une progression d'accords qui met en valeur un mode spécifique

3. Mélangez deux modes dans une même composition (polymodalité)

Construction et Théorie des Accords

Types d'Accords

Un accord est un ensemble d'au moins trois notes jouées simultanément, construites par superposition de tierces.

Type Formule Intervalles Notation Sonorité
Majeur 1-3-5 M3 + m3 C, CM, Cmaj Joyeux, stable
Mineur 1-♭3-5 m3 + M3 Cm, Cmin, C- Triste, mélancolique
Diminué 1-♭3-♭5 m3 + m3 C°, Cdim Tendu, instable
Augmenté 1-3-#5 M3 + M3 C+, Caug Mystérieux, ambigu
Sus2 1-2-5 M2 + P4 Csus2 Ouvert, moderne
Sus4 1-4-5 P4 + M2 Csus4 Suspendu, attente

Extensions d'Accords

Les accords peuvent être enrichis avec des notes supplémentaires au-delà de la triade.

Extensions courantes :
7e : ajoute la 7e (majeure ou mineure)
9e : 7e + 9e (= 2e à l'octave)
11e : 9e + 11e (= 4te à l'octave)
13e : 11e + 13e (= 6te à l'octave)
# FoxDot - Extensions d'accords
# Progression jazz avec extensions
p1 >> keys([
    (0, 4, 7, 11),      # CM7
    (2, 5, 9, 0),       # Dm7
    (4, 7, 11, 2),      # Em7
    (5, 9, 0, 4)        # FM7
], dur=2)

# Accords de 9e
p2 >> keys([
    (0, 4, 7, 11, 2),   # CM9
    (5, 9, 0, 4, 7)     # FM9
], dur=4)

# Voicings sophistiqués
p3 >> piano([
    (0, 7, 11, 2, 5),   # CM9 sans tierce
    (5, 0, 4, 7, 9)     # FM6/9
], dur=4, sus=3)

Renversements et Voicings

Un renversement change la note de basse de l'accord. Le voicing détermine comment les notes sont distribuées.

Position fond.:
Do
Mi
Sol
1er renvers.:
Mi
Sol
Do
2e renvers.:
Sol
Do
Mi
# FoxDot - Renversements et voicings
# Même accord, différents renversements
p1 >> keys([
    (0, 4, 7),      # Do majeur - position fondamentale
    (4, 7, 12),     # 1er renversement (Mi à la basse)
    (7, 12, 16)     # 2e renversement (Sol à la basse)
], dur=2)

# Voice leading fluide
p2 >> keys([
    (0, 4, 7, 11),     # CM7
    (2, 5, 9, 11),     # Dm7 (Do reste)
    (4, 7, 11, 14),    # Em7 (Sol reste)
    (5, 9, 12, 16)     # FM7
], dur=2)

# Drop 2 voicing (jazz)
p3 >> keys([(11, 0, 4, 7)], oct=4, dur=4)  # CM7 drop 2

Accords Altérés et Substitutions

Altérations courantes :
♭5 / #5 : Modifie la quinte
♭9 / #9 : Ajoute tension (jazz)
#11 : Couleur lydienne
♭13 : Tension supplémentaire
# FoxDot - Accords altérés
# Dominant altéré (V7alt)
p1 >> keys([(7, 11, 1, 4, 6)], dur=2)  # G7♭9♭13

# Substitution tritonique
# G7 → D♭7 (même triton)
p2 >> keys([
    (7, 11, 2, 5),     # G7
    (1, 5, 8, 11)      # D♭7
], dur=2)

# Accords de couleur
p3 >> keys([
    (0, 4, 6, 11),     # CM7♭5
    (0, 3, 6, 9)       # C°7
], dur=2)

📝 Exercice : Maîtrise des accords

1. Construisez tous les accords diatoniques dans une tonalité

2. Créez une progression utilisant uniquement des accords de 7e

3. Expérimentez avec des voicings pour créer un mouvement fluide

4. Composez en utilisant des accords altérés pour créer de la tension

Harmonie Fonctionnelle et Progressions

Les Fonctions Harmoniques

En harmonie tonale, chaque accord a une fonction qui détermine son rôle dans la progression.

I
Tonique
Repos
ii
Sous-dominante
Éloignement
iii
Tonique
Substitut
IV
Sous-dominante
Principal
V
Dominante
Tension
vi
Tonique
Relatif
vii°
Dominante
Substitut
Mouvement des fondamentales :
Quinte descendante : Très fort (V→I)
Quarte ascendante : Fort (I→IV)
Tierce : Faible mais fluide
Seconde : Linéaire

Cadences

Les cadences sont des formules harmoniques qui ponctuent le discours musical.

Cadence Parfaite

V → I

Conclusion définitive

Cadence Plagale

IV → I

"Amen", douce

Demi-cadence

? → V

Suspensive

Cadence Rompue

V → vi

Surprise
# FoxDot - Cadences
# Cadence parfaite (V7 → I)
p1 >> keys([(7,11,2,5), (0,4,7)], dur=[1,3])

# Cadence plagale (IV → I)
p2 >> keys([(5,9,0), (0,4,7)], dur=[2,2])

# Cadence rompue (V → vi)
p3 >> keys([(7,11,2), (9,0,4)], dur=[2,2])

# ii-V-I (jazz)
p4 >> keys([
    (2,5,9,0),    # Dm7
    (7,11,2,5),   # G7
    (0,4,7,11)    # CM7
], dur=[1,1,2])

Progressions Harmoniques Classiques

Nom Progression Exemple en Do Style
Anatole I-vi-ii-V C-Am-Dm-G Jazz standard
Blues 12 mesures I-I-I-I-IV-IV-I-I-V-IV-I-I C-C-C-C-F-F-C-C-G-F-C-C Blues
Progression pop I-V-vi-IV C-G-Am-F Pop moderne
Pachelbel I-V-vi-iii-IV-I-IV-V C-G-Am-Em-F-C-F-G Baroque
Cercle des quintes I-IV-vii°-iii-vi-ii-V-I C-F-B°-Em-Am-Dm-G-C Classique
# FoxDot - Progressions classiques
# Anatole (Rhythm Changes)
rhythm_changes = [(0,4,7), (9,0,4), (2,5,9), (7,11,2)]
p1 >> keys(rhythm_changes, dur=1)

# Blues 12 bars
blues = [0,0,0,0, 5,5,0,0, 7,5,0,0]
p2 >> bass(blues, dur=1)
p3 >> keys([(n,n+4,n+7,n+10) for n in blues], dur=1)

# Pop progression avec rythmique
pop = [(0,4,7), (7,11,2), (9,0,4), (5,9,0)]
p4 >> keys(pop, dur=P[1,0.5,0.5])
d1 >> play("x-o-", dur=0.5)

Modulation

La modulation est le passage d'une tonalité à une autre.

Types de modulation :
Diatonique : Via un accord commun
Chromatique : Altération progressive
Enharmonique : Réinterprétation d'un accord
Directe : Sans préparation
# FoxDot - Techniques de modulation
# Modulation par accord pivot (Am = vi en Do, ii en Sol)
p1 >> keys([
    (0,4,7),      # C (I en Do)
    (9,0,4),      # Am (vi en Do / ii en Sol)
    (2,6,9),      # D (V en Sol)
    (7,11,2)      # G (I en Sol)
], dur=2)

# Modulation chromatique
p2 >> pluck([0,2,4,5,7,7.5,8], dur=0.5)  # Fa# mène vers Sol

# Modulation par tons entiers
for i in range(6):
    Clock.future(i*4, lambda t=i: Scale.default.set("major", t*2))

📝 Exercice : Harmonie avancée

1. Analysez une progression de votre chanson préférée

2. Créez une progression utilisant toutes les fonctions harmoniques

3. Composez une pièce qui module vers au moins 3 tonalités

4. Réharmonisez une mélodie simple avec des accords sophistiqués

Théorie Rythmique Avancée

Divisions Rythmiques

Le rythme organise le temps musical en pulsations régulières et leurs subdivisions.

Valeurs rythmiques (4/4) :
Ronde = 4 temps
Blanche = 2 temps
Noire = 1 temps
Croche = 1/2 temps
Double croche = 1/4 temps
Triple croche = 1/8 temps
# FoxDot - Divisions rythmiques
# Valeurs de base
p1 >> pluck(0, dur=4)      # Ronde
p2 >> pluck(0, dur=2)      # Blanche
p3 >> pluck(0, dur=1)      # Noire
p4 >> pluck(0, dur=0.5)    # Croche
p5 >> pluck(0, dur=0.25)   # Double croche

# Triolets (division par 3)
p6 >> pluck([0,2,4], dur=2/3)

# Quintolets (division par 5)
p7 >> pluck(P[:5], dur=0.8)

# Polyrythmie 3:4
p8 >> pluck(0, dur=4/3)
p9 >> bass(0, dur=1)

Métriques et Mesures Composées

Métrique Pulsation Caractère Exemple
2/4 Binaire simple Marche Polka
3/4 Ternaire simple Valse Menuet
4/4 Binaire simple Stable Pop/Rock
6/8 Binaire composé Fluide Tarentelle
5/4 Asymétrique Boiteux Take Five
7/8 Asymétrique Balkanique Musique bulgare
# FoxDot - Métriques diverses
# 3/4 - Valse
p1 >> keys([0], dur=P[1,0.5,0.5], amp=P[1,0.5,0.5])

# 5/4 - Asymétrique (3+2)
p2 >> pluck([0,2,4,5,7], dur=P[0.6,0.6,0.6,0.4,0.4])

# 7/8 - Balkanique (3+2+2)
p3 >> play("x--x-x-", dur=0.875)

# 6/8 - Composé
p4 >> bass([0,0,0,5,5,5], dur=1/3)

# Polymétrie 3 contre 4
p5 >> pluck(0, dur=4/3)
p6 >> play("x", dur=1)

Patterns Rythmiques du Monde

Clave Son (Cuba)

3-2 ou 2-3

X..X..X...X.X...

Tresillo

Pattern africain

X..X..X.

Bossa Nova

Brésil

X.XX.XX.

Shuffle

Jazz/Blues

Triolets avec silence
# FoxDot - Rythmes du monde
# Clave son 3-2
d1 >> play("x  x  x   x x   ", dur=0.25)

# Tresillo (base de nombreux rythmes latins)
d2 >> play("x  x  x ", dur=0.375)

# Bossa nova
d3 >> play("x xx xx ", dur=0.25)
p1 >> keys([(0,4,7), (2,5,9)], dur=P[1.5,2.5])

# Rythme euclidien africain
d4 >> play("x", dur=PDur(5,8))

# Shuffle (swing feel)
Clock.bpm = 120
p2 >> pluck([0,2,4,5], dur=P[0.67,0.33])

Syncope et Contretemps

Syncope : Accentuation d'un temps faible qui se prolonge sur un temps fort
Contretemps : Silence sur temps fort, note sur temps faible
Hémiole : Superposition de groupements binaires et ternaires
# FoxDot - Syncopes et contretemps
# Syncope simple
p1 >> pluck([0,2,4], dur=[0.5,1,0.5])

# Contretemps
p2 >> pluck(P[None,0,None,2,None,4], dur=0.5)

# Hémiole (3 contre 2)
p3 >> pluck([0,4,7], dur=2/3)
p4 >> bass([0,5], dur=1)

# Décalage progressif (phasing)
p5 >> pluck([0,2,4,5], dur=1)
p6 >> pluck([0,2,4,5], dur=0.99)

📝 Exercice : Maîtrise rythmique

1. Créez un pattern utilisant toutes les divisions (binaire, ternaire, etc.)

2. Composez en 7/8 en groupant les temps différemment (3+4, 2+3+2, etc.)

3. Superposez deux rythmes euclidiens différents

4. Créez une polyrythmie complexe avec au moins 3 couches

Contrepoint et Conduite des Voix

Règles du Contrepoint Classique

Le contrepoint est l'art de superposer des lignes mélodiques indépendantes.

Règles de base (Fux) :

Mouvement contraire préféré
Éviter les quintes et octaves parallèles
Résolution des dissonances par mouvement conjoint
Indépendance rythmique des voix
Climax unique par phrase
# FoxDot - Contrepoint à deux voix
# Contrepoint note contre note (1:1)
cantus = [0, 2, 4, 5, 4, 2, 0]
counter = [7, 5, 7, 9, 7, 5, 7]
p1 >> pluck(cantus, dur=1)
p2 >> pluck(counter, dur=1, oct=5)

# Contrepoint fleuri (valeurs variées)
p3 >> pluck([0, 2, 1, 2, 4, 5, 4, 2, 0], dur=[1, 0.5, 0.5, 1, 1, 0.5, 0.5, 1, 2])
p4 >> bass([0, -3, -1, 0], dur=[2, 2, 2, 2])

# Canon (imitation)
melody = [0, 2, 4, 5, 7, 5, 4, 2]
p5 >> pluck(melody, dur=0.5)
p6 >> pluck(melody, dur=0.5, delay=2)  # Entrée décalée

Types de Mouvement

Mouvements mélodiques :

Parallèle:
Do→Ré
Mi→Fa
Contraire:
Do→Ré
Sol→Fa
Oblique:
Do→Do
Mi→Sol
# FoxDot - Mouvements de voix
# Éviter les quintes parallèles
# MAUVAIS:
# p1 >> keys([(0,7), (2,9)])  # Do-Sol → Ré-La

# BON: Mouvement contraire
p1 >> keys([(0,7), (2,5)])  # Do-Sol → Ré-Fa

# Voice leading optimal (proche)
progression = [
    (0, 4, 7),      # Do Mi Sol
    (0, 3, 7),      # Do Mi♭ Sol (Mi descend)
    (-1, 3, 5),     # Si Mi♭ Fa (Do descend, Sol descend)
    (0, 4, 7)       # Do Mi Sol (retour)
]
p2 >> keys(progression, dur=2)

Contrepoint Modal et Moderne

Extensions modernes :
• Quartes et quintes parallèles acceptées (Debussy)
• Polytonalité (plusieurs tonalités simultanées)
• Contrepoint rythmique (Steve Reich)
• Contrepoint timbral (Ligeti)
# FoxDot - Contrepoint moderne
# Contrepoint minimaliste (phasing)
pattern = [0, 2, 5, 2, 7, 2, 5, 2]
p1 >> pluck(pattern, dur=0.25)
p2 >> pluck(pattern, dur=0.24)  # Décalage progressif

# Contrepoint polytonal
Scale.default = "major"
p3 >> keys(P[0, 2, 4, 5].every(4, "reverse"), dur=0.5)
p4 >> keys(P[0, 2, 4, 5].every(4, "reverse") + 6, dur=0.5)  # En Fa#

# Hétérophonie (même mélodie, variations)
mel = [0, 2, 4, 5, 7]
p5 >> pluck(mel, dur=0.5)
p6 >> pluck(mel, dur=P[0.25, 0.75], oct=5)
p7 >> pluck(mel.reverse(), dur=0.5, delay=0.25)

📝 Exercice : Art du contrepoint

1. Écrivez un contrepoint à 2 voix respectant les règles classiques

2. Créez un canon à 3 voix

3. Composez un contrepoint moderne utilisant des techniques étendues

4. Réalisez une fugue simple (exposition, développement, réexposition)

Formes Musicales et Structure

Formes Binaires et Ternaires

Forme Binaire (AB)

A : Tonique → Dominante

B : Dominante → Tonique

Danses baroques

Forme Ternaire (ABA)

Exposition - Contraste - Retour

Aria da capo

Rondo (ABACA)

Refrain alternant avec épisodes

Final de sonate

Variations

Thème transformé

Goldberg, Diabelli
# FoxDot - Formes musicales
# Forme ABA
def section_a():
    p1 >> pluck([0, 2, 4, 5, 7], dur=0.5)
    p2 >> bass([0, 5], dur=2)

def section_b():
    p1 >> pluck([7, 5, 4, 2, 0], dur=0.25)
    p2 >> bass([4, 2], dur=2)

# Structure temporelle
Clock.future(0, section_a)
Clock.future(8, section_b)
Clock.future(16, section_a)

# Rondo ABACA
sections = {
    'A': lambda: p1 >> keys([0, 4, 7], dur=1),
    'B': lambda: p1 >> keys([2, 5, 9], dur=1),
    'C': lambda: p1 >> keys([5, 9, 0], dur=1)
}

for i, section in enumerate(['A','B','A','C','A']):
    Clock.future(i*4, sections[section])

Forme Sonate

Structure complexe en trois parties avec développement thématique.

Exposition
Thème A (I) - Pont - Thème B (V)
Développement
Exploration harmonique
Réexposition
Thème A (I) - Thème B (I)

Techniques de Développement

Transformation thématique :
Augmentation : Doubler les valeurs rythmiques
Diminution : Diviser les valeurs
Inversion : Renverser les intervalles
Rétrograde : Jouer à l'envers
Fragmentation : Utiliser des portions
# FoxDot - Techniques de développement
theme = P[0, 2, 4, 5, 7]

# Original
p1 >> pluck(theme, dur=0.5)

# Augmentation
p2 >> pluck(theme, dur=1)

# Diminution
p3 >> pluck(theme, dur=0.25)

# Inversion
p4 >> pluck(12 - theme, dur=0.5)

# Rétrograde
p5 >> pluck(theme.reverse(), dur=0.5)

# Fragmentation et séquence
fragment = theme[:3]
p6 >> pluck(fragment + (fragment + 2) + (fragment + 4), dur=0.25)

📝 Exercice : Construction formelle

1. Composez une pièce en forme ABA avec modulation dans B

2. Créez un thème et 4 variations utilisant différentes techniques

3. Esquissez une forme sonate miniature (2-3 minutes)

Analyse Musicale Appliquée

Analyse Harmonique

Méthodologie pour analyser et comprendre une œuvre.

1. Identifier la tonalité

  • Armure
  • Notes finales
  • Accords principaux

2. Chiffrage des accords

  • Degrés romains
  • Fonctions
  • Inversions

3. Phrases et cadences

  • Découpage
  • Points de repos
  • Symétrie

4. Forme globale

  • Sections
  • Reprises
  • Développements

Exemple d'Analyse : Pachelbel Canon

# FoxDot - Analyse du Canon de Pachelbel
# Basse obstinée (ground bass)
bass_line = [0, -5, -3, -8, -6, -3, -6, -5]
p1 >> bass(bass_line, dur=1, oct=3)

# Progression harmonique dérivée
chords = [
    (0, 4, 7),      # I - Ré majeur
    (9, 0, 4),      # V - La majeur  
    (11, 2, 6),     # vi - Si mineur
    (6, 9, 2),      # iii - Fa# mineur
    (8, 0, 3),      # IV - Sol majeur
    (0, 4, 7),      # I - Ré majeur
    (8, 0, 3),      # IV - Sol majeur
    (9, 0, 4)       # V - La majeur
]
p2 >> keys(chords, dur=1)

# Mélodie en canon (3 voix)
melody = [14, 12, 11, 9, 7, 5, 7, 9]
p3 >> pluck(melody, dur=1, oct=5)
p4 >> pluck(melody, dur=1, oct=5, delay=2)
p5 >> pluck(melody, dur=1, oct=6, delay=4)

# Analyse: I-V-vi-iii-IV-I-IV-V
# Mouvement par quintes descendantes
# 8 mesures, forme cyclique

Analyse Rythmique et Métrique

Éléments à analyser :
• Métrique de base et changements
• Patterns récurrents
• Syncopes et accentuations
• Rapport mélodie/accompagnement
• Micro-timing et groove

Application au Live Coding

# FoxDot - Recréer une structure analysée
# Après analyse d'un morceau pop typique

# Structure: Intro(4) - Verse(8) - Chorus(8) - Verse(8) - Chorus(8) - Bridge(4) - Chorus(8)

def intro():
    d1 >> play("x-o-", dur=0.5)
    p1 >> pluck(P[0,7].palindrome(), dur=0.5, amp=0.5)

def verse():
    p1 >> pluck([0,2,4,2], dur=0.5)
    p2 >> bass([0,0,5,5], dur=1)
    d1 >> play("x-o-", dur=0.5)

def chorus():
    p1 >> keys([(0,4,7), (5,9,0), (9,0,4), (3,7,10)], dur=1)
    p2 >> bass([0,5,9,3], dur=1)
    d1 >> play("x-o-x-oo", dur=0.25)

def bridge():
    p1 >> pluck(P[7,5,4,2,0].stutter(2), dur=0.25)
    p2.stop()
    d1 >> play("xxxx", dur=0.25)

# Timeline automatisée
timeline = [
    (0, intro),
    (4, verse),
    (12, chorus),
    (20, verse),
    (28, chorus),
    (36, bridge),
    (40, chorus)
]

for beat, section in timeline:
    Clock.future(beat, section)

📝 Projet Final : Analyse et Recomposition

1. Choisissez une œuvre classique ou moderne

2. Analysez sa structure harmonique, mélodique et rythmique

3. Identifiez les techniques de composition utilisées

4. Recréez l'œuvre en live coding en ajoutant votre touche personnelle

5. Documentez votre processus d'analyse et les choix créatifs

Analyse de Morceaux Populaires

Let It Be - The Beatles

Un exemple parfait de progression I-V-vi-IV, l'une des plus utilisées dans la pop.

I
Do majeur
V
Sol majeur
vi
La mineur
IV
Fa majeur
# Sonic Pi - Let It Be
use_bpm 72
use_synth :piano

# Progression d'accords
chords = [
  chord(:C4, :major),
  chord(:G4, :major),
  chord(:A3, :minor),
  chord(:F4, :major)
]

# Partie piano
live_loop :piano do
  chords.each do |c|
    play c, release: 2, amp: 0.8
    sleep 2
  end
end

# Mélodie vocale simplifiée
live_loop :melody do
  use_synth :sine
  notes = [:G4, :G4, :A4, :G4, :F4, :E4, :E4, :C4]
  durations = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1]
  
  notes.zip(durations).each do |note, dur|
    play note, release: dur * 0.9, amp: 0.6
    sleep dur
  end
end

# Ligne de basse
live_loop :bass do
  use_synth :fm
  play :C2, release: 2, amp: 0.5
  sleep 2
  play :G2, release: 2, amp: 0.5
  sleep 2
  play :A2, release: 2, amp: 0.5
  sleep 2
  play :F2, release: 2, amp: 0.5
  sleep 2
end
Points clés :
• Progression utilisée dans des centaines de chansons
• Mouvement par quintes descendantes (Do→Sol, La→Fa)
• Alternance majeur/mineur crée de l'émotion
• Structure simple mais efficace

Creep - Radiohead

Utilise une progression inhabituelle avec des accords empruntés qui créent une tension unique.

Progression : G - B - C - Cm
Analyse : I - III - IV - iv
Le III majeur est emprunté au mode lydien, le iv mineur crée une couleur mélancolique
# Sonic Pi - Creep (Radiohead)
use_bpm 92

# Progression unique avec accord emprunté
define :play_creep_progression do
  use_synth :pluck
  
  # G majeur
  play_chord chord(:G3, :major), release: 1
  sleep 1
  
  # B majeur (accord emprunté - normalement Bm en Sol majeur)
  play_chord chord(:B3, :major), release: 1
  sleep 1
  
  # C majeur
  play_chord chord(:C4, :major), release: 1
  sleep 1
  
  # Cm (accord emprunté - iv mineur)
  play_chord chord(:C4, :minor), release: 1
  sleep 1
end

# Pattern arpégé caractéristique
live_loop :arpeggio do
  use_synth :electric_guitar_clean
  4.times do
    play_creep_progression
  end
end

# Ligne de basse
live_loop :bass_line do
  use_synth :bass_foundation
  notes = [:G2, :B2, :C3, :C3]
  notes.each do |n|
    play n, release: 0.9, amp: 0.7
    sleep 1
  end
end

# Effet de distorsion sur le refrain
live_loop :power_chords do
  sync :arpeggio
  sleep 16  # Attendre 4 mesures
  
  with_fx :distortion, distort: 0.7 do
    use_synth :saw
    play_chord chord(:G3, :major), release: 4, amp: 0.3
    sleep 4
  end
end

Hallelujah - Leonard Cohen

Exemple de progression sophistiquée utilisant des accords de passage et des dominantes secondaires.

I
C
vi
Am
I
C
vi
Am
IV
F
V
G
I
C
V/V
G/B
# Sonic Pi - Hallelujah
use_bpm 63

# Pattern d'arpège en 6/8
define :arpeggio_pattern do |root, type|
  use_synth :kalimba
  notes = chord(root, type)
  
  # Pattern caractéristique en 6/8
  play notes[0], release: 0.3, amp: 0.7
  sleep 0.25
  play notes[1], release: 0.3, amp: 0.5
  sleep 0.25
  play notes[2], release: 0.3, amp: 0.5
  sleep 0.25
  
  play notes[0], release: 0.3, amp: 0.6
  sleep 0.25
  play notes[1], release: 0.3, amp: 0.5
  sleep 0.25
  play notes[2], release: 0.3, amp: 0.5
  sleep 0.25
end

# Progression principale
live_loop :main_progression do
  # "I heard there was a secret chord"
  arpeggio_pattern(:C4, :major)    # I
  arpeggio_pattern(:A3, :minor)    # vi
  arpeggio_pattern(:C4, :major)    # I
  arpeggio_pattern(:A3, :minor)    # vi
  
  # "That David played and it pleased the Lord"
  arpeggio_pattern(:F4, :major)    # IV
  arpeggio_pattern(:G4, :major)    # V
  arpeggio_pattern(:C4, :major)    # I
  arpeggio_pattern(:G4, :major)    # V
  
  # "It goes like this: the fourth, the fifth"
  arpeggio_pattern(:F4, :major)    # IV
  arpeggio_pattern(:G4, :major)    # V
  arpeggio_pattern(:A3, :minor)    # vi
  arpeggio_pattern(:F4, :major)    # IV
  
  # "The minor fall and the major lift"
  arpeggio_pattern(:G4, :major)    # V
  arpeggio_pattern(:E3, :minor)    # iii
  arpeggio_pattern(:A3, :minor)    # vi
  arpeggio_pattern(:F4, :major)    # IV
end

# Mélodie vocale (refrain)
live_loop :chorus do
  sync :main_progression
  sleep 12  # Attendre le bon moment
  
  use_synth :sine
  # "Hal-le-lu-jah"
  4.times do
    play :C5, release: 0.5, amp: 0.4
    sleep 0.5
    play :A4, release: 0.5, amp: 0.4
    sleep 0.5
    play :C5, release: 0.5, amp: 0.4
    sleep 0.5
    play :A4, release: 1.5, amp: 0.4
    sleep 1.5
  end
end
Analyse théorique :
• Utilise le mode 6/8 pour un feeling de valse
• Les paroles décrivent littéralement la progression ("the fourth, the fifth")
• Mélange de simplicité harmonique et de sophistication mélodique
• L'accord de Mi mineur (iii) est rare et crée une couleur particulière

Billie Jean - Michael Jackson

Un groove minimaliste construit sur seulement deux accords, démontrant le pouvoir du rythme.

# Sonic Pi - Billie Jean
use_bpm 117

# Le célèbre pattern de basse
live_loop :bass_line do
  use_synth :bass_foundation
  
  # Pattern en F#m - C#m
  2.times do
    play :Fs2, release: 0.2, amp: 1
    sleep 0.5
    play :Fs2, release: 0.2, amp: 1
    sleep 0.5
    play :Fs3, release: 0.2, amp: 0.8
    sleep 0.5
    play :Fs2, release: 0.2, amp: 1
    sleep 0.5
  end
  
  2.times do
    play :Cs2, release: 0.2, amp: 1
    sleep 0.5
    play :Cs2, release: 0.2, amp: 1
    sleep 0.5
    play :Cs3, release: 0.2, amp: 0.8
    sleep 0.5
    play :Cs2, release: 0.2, amp: 1
    sleep 0.5
  end
end

# Pattern de batterie iconique
live_loop :drums do
  sample :bd_haus, amp: 1.5
  sleep 0.5
  sample :drum_cymbal_closed, amp: 0.5
  sleep 0.5
  sample :sn_dolf, amp: 1
  sleep 0.5
  sample :drum_cymbal_closed, amp: 0.5
  sleep 0.5
end

# Accords synthé (strings)
live_loop :chords do
  use_synth :prophet
  
  # F#m
  play_chord chord(:Fs3, :minor), release: 3.5, amp: 0.3
  sleep 4
  
  # C#m
  play_chord chord(:Cs3, :minor), release: 3.5, amp: 0.3
  sleep 4
end

# Hi-hat pattern caractéristique
live_loop :hihat do
  use_synth :noise
  16.times do
    play 80, release: 0.05, amp: 0.2 if spread(7,16).tick
    sleep 0.125
  end
end
Points d'analyse :
• Seulement 2 accords (i - v en Fa# mineur)
• Le groove et le rythme sont plus importants que l'harmonie
• La ligne de basse est le véritable hook du morceau
• Exemple parfait du "moins c'est plus" en composition

Autumn Leaves - Standard de Jazz

Un standard qui démontre le cycle des quintes et la modulation relative majeur/mineur.

# Sonic Pi - Autumn Leaves
use_bpm 120

# Progression ii-V-I en Sol majeur puis en Mi mineur
define :jazz_voicing do |root, quality|
  # Voicings jazz typiques (sans fondamentale pour le bassiste)
  case quality
  when :maj7
    [root+3, root+7, root+11, root+14]  # 3, 7, 9, 11
  when :m7
    [root+3, root+7, root+10, root+14]  # b3, b7, 9, 11
  when :dom7
    [root+4, root+7, root+10, root+13]  # 3, b7, 9, 13
  when :m7b5
    [root+3, root+6, root+10, root+15]  # b3, b5, b7, 9
  end
end

live_loop :autumn_changes do
  use_synth :electric_piano
  
  # Cm7 (ii en Bb)
  play_chord jazz_voicing(60, :m7), release: 1.8, amp: 0.7
  sleep 2
  
  # F7 (V en Bb)
  play_chord jazz_voicing(65, :dom7), release: 1.8, amp: 0.7
  sleep 2
  
  # BbM7 (I en Bb)
  play_chord jazz_voicing(58, :maj7), release: 1.8, amp: 0.7
  sleep 2
  
  # EbM7 (IV en Bb)
  play_chord jazz_voicing(63, :maj7), release: 1.8, amp: 0.7
  sleep 2
  
  # Am7b5 (ii en Gm)
  play_chord jazz_voicing(57, :m7b5), release: 1.8, amp: 0.7
  sleep 2
  
  # D7 (V en Gm)
  play_chord jazz_voicing(62, :dom7), release: 1.8, amp: 0.7
  sleep 2
  
  # Gm (i en Gm)
  play_chord chord(:G3, :minor), release: 3.8, amp: 0.7
  sleep 4
end

# Walking bass
live_loop :walking_bass do
  use_synth :upright_bass
  
  # Pattern de walking bass sur les changements
  notes = [:C2, :E2, :F2, :A2,    # Cm7 - F7
           :Bb2, :D3, :Eb3, :G2,   # BbM7 - EbM7
           :A2, :C3, :D3, :Fs2,    # Am7b5 - D7
           :G2, :Bb2, :D3, :G2]    # Gm
  
  notes.each do |n|
    play n, release: 0.4, amp: 0.8
    sleep 0.5
  end
end

# Mélodie (thème simplifié)
live_loop :melody do
  sync :autumn_changes
  use_synth :soprano_sax
  
  # Phrase mélodique caractéristique
  play :C5, release: 0.8, amp: 0.5
  sleep 1
  play :D5, release: 0.8, amp: 0.5
  sleep 1
  play :Eb5, release: 0.8, amp: 0.5
  sleep 1
  play :F5, release: 2.8, amp: 0.5
  sleep 3
  
  play :Eb5, release: 0.8, amp: 0.5
  sleep 1
  play :F5, release: 0.8, amp: 0.5
  sleep 1
  play :G5, release: 3.8, amp: 0.5
  sleep 4
end
Concepts jazz illustrés :
• Progression ii-V-I (base du jazz)
• Modulation entre relatifs (Si♭ majeur ↔ Sol mineur)
• Voicings sophistiqués avec extensions
• Walking bass créant du mouvement
• Utilisation du cycle des quintes

Sweet Child O' Mine - Guns N' Roses

Le riff d'intro démontre comment une simple gamme pentatonique peut créer une mélodie mémorable.

# Sonic Pi - Sweet Child O' Mine (Intro)
use_bpm 125

# Le célèbre riff d'intro
define :intro_riff do
  use_synth :distorted_guitar
  use_synth_defaults amp: 0.3, release: 0.3
  
  # Pattern ascendant/descendant en Ré majeur
  notes = [:D4, :D5, :A4, :G4, :G5, :A4, :Fs5, :A4]
  
  2.times do
    notes.each do |n|
      play n
      sleep 0.25
    end
  end
  
  # Variation
  notes2 = [:E4, :D5, :A4, :G4, :G5, :A4, :Fs5, :A4]
  notes2.each do |n|
    play n
    sleep 0.25
  end
  
  notes.each do |n|
    play n
    sleep 0.25
  end
end

# Accords de la progression (couplet)
live_loop :rhythm_guitar do
  use_synth :fm
  use_synth_defaults amp: 0.4, release: 1
  
  # D - C - G - D
  play_chord chord(:D3, :major)
  sleep 2
  play_chord chord(:C3, :major)
  sleep 2
  play_chord chord(:G3, :major)
  sleep 2
  play_chord chord(:D3, :major)
  sleep 2
end

# Basse
live_loop :bass do
  use_synth :bass_highend
  
  play :D2, release: 1.8, amp: 0.8
  sleep 2
  play :C2, release: 1.8, amp: 0.8
  sleep 2
  play :G2, release: 1.8, amp: 0.8
  sleep 2
  play :D2, release: 1.8, amp: 0.8
  sleep 2
end

# Jouer le riff
live_loop :lead_guitar do
  intro_riff
  sleep 8  # Pause avant de répéter
end

Clocks - Coldplay

Utilisation d'arpèges en croches pour créer une texture hypnotique sur une progression simple.

# Sonic Pi - Clocks
use_bpm 131

# Pattern d'arpège caractéristique du piano
live_loop :piano_arpeggio do
  use_synth :piano
  
  # Eb - Bbm - Fm
  3.times do
    # Eb majeur
    play :Eb4, release: 0.3, amp: 0.8
    sleep 0.25
    play :Bb4, release: 0.3, amp: 0.6
    sleep 0.25
    play :G4, release: 0.3, amp: 0.7
    sleep 0.25
    play :Bb4, release: 0.3, amp: 0.6
    sleep 0.25
  end
  
  # Bbm
  play :Bb3, release: 0.3, amp: 0.8
  sleep 0.25
  play :F4, release: 0.3, amp: 0.6
  sleep 0.25
  play :Db4, release: 0.3, amp: 0.7
  sleep 0.25
  play :F4, release: 0.3, amp: 0.6
  sleep 0.25
  
  # Fm
  2.times do
    play :F3, release: 0.3, amp: 0.8
    sleep 0.25
    play :C4, release: 0.3, amp: 0.6
    sleep 0.25
    play :Ab3, release: 0.3, amp: 0.7
    sleep 0.25
    play :C4, release: 0.3, amp: 0.6
    sleep 0.25
  end
end

# Basse synth
live_loop :bass_synth do
  use_synth :prophet
  
  play :Eb2, release: 3, amp: 0.5, cutoff: 80
  sleep 3
  play :Bb2, release: 1, amp: 0.5, cutoff: 80
  sleep 1
  play :F2, release: 2, amp: 0.5, cutoff: 80
  sleep 2
end

# Pattern de batterie
live_loop :drums do
  sample :bd_tek, amp: 1
  sleep 0.5
  sample :drum_cymbal_closed, amp: 0.3
  sleep 0.5
  sample :sn_dolf, amp: 0.8
  sleep 0.5
  sample :drum_cymbal_closed, amp: 0.3
  sleep 0.5
end

# Pad atmosphérique
live_loop :atmosphere do
  use_synth :hollow
  play_chord chord(:Eb3, :major), release: 6, amp: 0.2
  sleep 6
end
Éléments clés :
• Progression I-v-ii en Mi♭ majeur
• Pattern d'arpège créant une pulsation constante
• Utilisation de la répétition pour l'hypnose
• Contraste entre mouvement (arpèges) et statisme (accords tenus)

📝 Exercice : Analyse et Reconstruction

1. Choisissez une chanson que vous aimez

2. Identifiez sa progression d'accords (utilisez votre oreille ou recherchez)

3. Analysez la structure : intro, couplet, refrain, pont

4. Recréez-la en live coding en ajoutant votre touche personnelle

5. Expérimentez : changez le tempo, la tonalité, ou le style !