From 8d27ad545dd0356d84d4d63615e4d29ab9aa664f Mon Sep 17 00:00:00 2001 From: Sylvain Schneider Date: Fri, 27 Feb 2026 22:51:49 +0100 Subject: [PATCH] Appends music list --- pitches/pitches/all.h | 23 ++++++++ pitches/pitches/music/amazing_grace.h | 40 ++++++++++++++ pitches/pitches/music/an_die_freude.h | 42 +++++++++++++++ pitches/pitches/music/auld_lang_syne.h | 36 +++++++++++++ pitches/pitches/music/canon_pachelbel.h | 41 +++++++++++++++ pitches/pitches/music/clair_de_la_Lune.h | 46 ++++++++++++++++ pitches/pitches/music/douce_nuit.h | 45 ++++++++++++++++ pitches/pitches/music/frere_jacques.h | 31 +++++++++++ pitches/pitches/music/fur_elise.h | 32 ++++++++++++ pitches/pitches/music/god_save_the_queen.h | 34 ++++++++++++ pitches/pitches/music/greensleeves.h | 38 ++++++++++++++ pitches/pitches/music/happy_birthday.h | 35 +++++++++++++ pitches/pitches/music/indiana_jones.h | 37 +++++++++++++ pitches/pitches/music/jingle_bells.h | 39 ++++++++++++++ pitches/pitches/music/mario.h | 61 ++++++++++++++++++++++ pitches/pitches/music/marseillaise.h | 32 ++++++++++++ pitches/pitches/music/tetris.h | 38 ++++++++++++++ pitches/pitches/music/twinkle_twinkle.h | 39 ++++++++++++++ pitches/pitches/music/vive_le_vent.h | 39 ++++++++++++++ 19 files changed, 728 insertions(+) create mode 100644 pitches/pitches/all.h create mode 100644 pitches/pitches/music/amazing_grace.h create mode 100644 pitches/pitches/music/an_die_freude.h create mode 100644 pitches/pitches/music/auld_lang_syne.h create mode 100644 pitches/pitches/music/canon_pachelbel.h create mode 100644 pitches/pitches/music/clair_de_la_Lune.h create mode 100644 pitches/pitches/music/douce_nuit.h create mode 100644 pitches/pitches/music/frere_jacques.h create mode 100644 pitches/pitches/music/fur_elise.h create mode 100644 pitches/pitches/music/god_save_the_queen.h create mode 100644 pitches/pitches/music/greensleeves.h create mode 100644 pitches/pitches/music/happy_birthday.h create mode 100644 pitches/pitches/music/indiana_jones.h create mode 100644 pitches/pitches/music/jingle_bells.h create mode 100644 pitches/pitches/music/mario.h create mode 100644 pitches/pitches/music/marseillaise.h create mode 100644 pitches/pitches/music/tetris.h create mode 100644 pitches/pitches/music/twinkle_twinkle.h create mode 100644 pitches/pitches/music/vive_le_vent.h diff --git a/pitches/pitches/all.h b/pitches/pitches/all.h new file mode 100644 index 0000000..2181a9e --- /dev/null +++ b/pitches/pitches/all.h @@ -0,0 +1,23 @@ +#pragma once + +#include "pitches.h" + +// Include all the individual song headers +#include "music/amazing_grace.h" +#include "music/an_die_freude.h" +#include "music/auld_lang_syne.h" +#include "music/canon_pachelbel.h" +#include "music/clair_de_la_lune.h" +#include "music/douce_nuit.h" +#include "music/frere_jacques.h" +#include "music/fur_elise.h" +#include "music/god_save_the_queen.h" +#include "music/greensleeves.h" +#include "music/happy_birthday.h" +#include "music/indiana_jones.h" +#include "music/jingle_bells.h" +#include "music/mario.h" +#include "music/marseillaise.h" +#include "music/tetris.h" +#include "music/twinkle_twinkle.h" +#include "music/vive_le_vent.h" diff --git a/pitches/pitches/music/amazing_grace.h b/pitches/pitches/music/amazing_grace.h new file mode 100644 index 0000000..84be259 --- /dev/null +++ b/pitches/pitches/music/amazing_grace.h @@ -0,0 +1,40 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array amazing_grace = { + // --- PHRASE 1 --- + Note{ D4, 500 }, // A- + Note{ G4, 1000 }, Note{ B4, 250 }, Note{ G4, 250 }, // -ma-zing + Note{ B4, 1000 }, Note{ A4, 500 }, // grace, how + Note{ G4, 1000 }, Note{ E4, 500 }, // sweet the + Note{ D4, 1000 }, Note{ silent, 100 }, // sound + + // --- PHRASE 2 --- + Note{ D4, 500 }, // That + Note{ G4, 1000 }, Note{ B4, 250 }, Note{ G4, 250 }, // saved a + Note{ B4, 1000 }, Note{ A4, 500 }, // wretch like + Note{ D5, 1500 }, Note{ silent, 100 }, // me! + + // --- PHRASE 3 --- + Note{ B4, 500 }, // I + Note{ D5, 1000 }, Note{ B4, 250 }, Note{ G4, 250 }, // once was + Note{ B4, 1000 }, Note{ A4, 500 }, // lost, but + Note{ G4, 1000 }, Note{ E4, 500 }, // now am + Note{ D4, 1000 }, Note{ silent, 100 }, // found + + // --- PHRASE 4 --- + Note{ D4, 500 }, // Was + Note{ G4, 1000 }, Note{ B4, 250 }, Note{ G4, 250 }, // blind, but + Note{ B4, 1000 }, Note{ A4, 500 }, // now I + Note{ G4, 1500 }, Note{ silent, 500 } // see. +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/an_die_freude.h b/pitches/pitches/music/an_die_freude.h new file mode 100644 index 0000000..b1c6542 --- /dev/null +++ b/pitches/pitches/music/an_die_freude.h @@ -0,0 +1,42 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array an_die_freude = { // Ode à la joie + // Main thème + Note{ E5, 300 }, Note{ E5, 300 }, Note{ F5, 300 }, Note{ G5, 300 }, + Note{ G5, 300 }, Note{ F5, 300 }, Note{ E5, 300 }, Note{ D5, 300 }, + Note{ C5, 300 }, Note{ C5, 300 }, Note{ D5, 300 }, Note{ E5, 300 }, + Note{ E5, 450 }, Note{ D5, 150 }, Note{ D5, 600 }, + Note{ silent, 100 }, + + // Repeat with varied ending + Note{ E5, 300 }, Note{ E5, 300 }, Note{ F5, 300 }, Note{ G5, 300 }, + Note{ G5, 300 }, Note{ F5, 300 }, Note{ E5, 300 }, Note{ D5, 300 }, + Note{ C5, 300 }, Note{ C5, 300 }, Note{ D5, 300 }, Note{ E5, 300 }, + Note{ D5, 450 }, Note{ C5, 150 }, Note{ C5, 600 }, + Note{ silent, 100 }, + + // Central section + Note{ D5, 300 }, Note{ D5, 300 }, Note{ E5, 300 }, Note{ C5, 300 }, + Note{ D5, 300 }, Note{ E5, 150 }, Note{ F5, 150 }, Note{ E5, 300 }, Note{ C5, 300 }, + Note{ D5, 300 }, Note{ E5, 150 }, Note{ F5, 150 }, Note{ E5, 300 }, Note{ D5, 300 }, + Note{ C5, 300 }, Note{ D5, 300 }, Note{ G4, 600 }, + Note{ silent, 100 }, + + // Final reprise + Note{ E5, 300 }, Note{ E5, 300 }, Note{ F5, 300 }, Note{ G5, 300 }, + Note{ G5, 300 }, Note{ F5, 300 }, Note{ E5, 300 }, Note{ D5, 300 }, + Note{ C5, 300 }, Note{ C5, 300 }, Note{ D5, 300 }, Note{ E5, 300 }, + Note{ D5, 450 }, Note{ C5, 150 }, Note{ C5, 600 }, + Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/auld_lang_syne.h b/pitches/pitches/music/auld_lang_syne.h new file mode 100644 index 0000000..4802e20 --- /dev/null +++ b/pitches/pitches/music/auld_lang_syne.h @@ -0,0 +1,36 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array auld_lang_syne = { + // --- COUPLET --- + Note{ D4, 375 }, Note{ G4, 750 }, Note{ FS4, 375 }, Note{ G4, 750 }, Note{ B4, 375 }, // Should auld ac-quain- + Note{ A4, 750 }, Note{ G4, 375 }, Note{ A4, 750 }, Note{ B4, 375 }, // -tance be for-got, + Note{ G4, 750 }, Note{ G4, 375 }, Note{ B4, 750 }, Note{ D5, 375 }, // and ne-ver brought to + Note{ E5, 1500 }, Note{ silent, 100 }, // mind? + + Note{ E5, 375 }, Note{ D5, 750 }, Note{ B4, 375 }, Note{ B4, 750 }, Note{ G4, 375 }, // Should auld ac-quain- + Note{ A4, 750 }, Note{ G4, 375 }, Note{ A4, 750 }, Note{ B4, 375 }, // -tance be for-got, + Note{ G4, 750 }, Note{ E4, 375 }, Note{ E4, 750 }, Note{ D4, 375 }, // and days of auld lang + Note{ G4, 1500 }, Note{ silent, 200 }, // syne? + + // --- REFRAIN --- + Note{ E5, 375 }, Note{ D5, 750 }, Note{ B4, 375 }, Note{ B4, 750 }, Note{ G4, 375 }, // For auld lang syne, + Note{ A4, 750 }, Note{ G4, 375 }, Note{ A4, 750 }, Note{ E5, 375 }, // my dear, + Note{ D5, 750 }, Note{ B4, 375 }, Note{ B4, 750 }, Note{ D5, 375 }, // for auld lang + Note{ E5, 1500 }, Note{ silent, 100 }, // syne, + + Note{ E5, 375 }, Note{ D5, 750 }, Note{ B4, 375 }, Note{ B4, 750 }, Note{ G4, 375 }, // we'll take a cup o' + Note{ A4, 750 }, Note{ G4, 375 }, Note{ A4, 750 }, Note{ B4, 375 }, // kind-ness yet, + Note{ G4, 750 }, Note{ E4, 375 }, Note{ E4, 750 }, Note{ D4, 375 }, // for auld lang + Note{ G4, 1500 } // syne. +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/canon_pachelbel.h b/pitches/pitches/music/canon_pachelbel.h new file mode 100644 index 0000000..113776d --- /dev/null +++ b/pitches/pitches/music/canon_pachelbel.h @@ -0,0 +1,41 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array canon_pachelbel = { + // --- LE THÈME DE BASE (La structure de 8 notes) --- + Note{ D5, 1000 }, Note{ A4, 1000 }, + Note{ B4, 1000 }, Note{ FS4, 1000 }, + Note{ G4, 1000 }, Note{ D4, 1000 }, + Note{ G4, 1000 }, Note{ A4, 1000 }, + + // --- VARIATION 1 (Mélodie classique) --- + Note{ FS5, 1000 }, Note{ E5, 1000 }, + Note{ D5, 1000 }, Note{ CS5, 1000 }, + Note{ B4, 1000 }, Note{ A4, 1000 }, + Note{ B4, 1000 }, Note{ CS5, 1000 }, + + // --- VARIATION 2 (Plus fluide) --- + Note{ D5, 500 }, Note{ CS5, 500 }, Note{ D5, 500 }, Note{ FS4, 500 }, + Note{ A4, 500 }, Note{ G4, 500 }, Note{ FS4, 500 }, Note{ D4, 500 }, + Note{ FS4, 500 }, Note{ E4, 500 }, Note{ D4, 500 }, Note{ B3, 500 }, + Note{ D4, 500 }, Note{ CS4, 500 }, Note{ B3, 500 }, Note{ A3, 500 }, + + // --- VARIATION 3 (Les célèbres triolets) --- + Note{ G4, 500 }, Note{ FS4, 500 }, Note{ G4, 500 }, Note{ B4, 500 }, + Note{ A4, 500 }, Note{ G4, 500 }, Note{ FS4, 500 }, Note{ E4, 500 }, + Note{ D4, 500 }, Note{ E4, 500 }, Note{ FS4, 500 }, Note{ G4, 500 }, + Note{ A4, 500 }, Note{ B4, 500 }, Note{ CS5, 500 }, Note{ A4, 500 }, + + // --- FINAL --- + Note{ D5, 2000 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/clair_de_la_Lune.h b/pitches/pitches/music/clair_de_la_Lune.h new file mode 100644 index 0000000..a38127a --- /dev/null +++ b/pitches/pitches/music/clair_de_la_Lune.h @@ -0,0 +1,46 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array au_clair_lune = { + // "Au clair de la lune" + Note{ C4, 400 }, Note{ C4, 400 }, Note{ C4, 400 }, Note{ D4, 400 }, + Note{ E4, 800 }, Note{ D4, 800 }, + + // "Mon ami Pierrot" + Note{ C4, 400 }, Note{ E4, 400 }, Note{ D4, 400 }, Note{ D4, 400 }, + Note{ C4, 1200 }, Note{ silent, 200 }, + + // "Prête-moi ta plume" + Note{ C4, 400 }, Note{ C4, 400 }, Note{ C4, 400 }, Note{ D4, 400 }, + Note{ E4, 800 }, Note{ D4, 800 }, + + // "Pour écrire un mot" + Note{ C4, 400 }, Note{ E4, 400 }, Note{ D4, 400 }, Note{ D4, 400 }, + Note{ C4, 1200 }, Note{ silent, 200 }, + + // "Ma chandelle est morte" + Note{ D4, 400 }, Note{ D4, 400 }, Note{ D4, 400 }, Note{ D4, 400 }, + Note{ A3, 800 }, Note{ A3, 800 }, + + // "Je n'ai plus de feu" + Note{ D4, 400 }, Note{ C4, 400 }, Note{ B3, 400 }, Note{ A3, 400 }, + Note{ G3, 1200 }, Note{ silent, 200 }, + + // "Ouvre-moi ta porte" + Note{ C4, 400 }, Note{ C4, 400 }, Note{ C4, 400 }, Note{ D4, 400 }, + Note{ E4, 800 }, Note{ D4, 800 }, + + // "Pour l'amour de Dieu" + Note{ C4, 400 }, Note{ E4, 400 }, Note{ D4, 400 }, Note{ D4, 400 }, + Note{ C4, 1200 }, Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/douce_nuit.h b/pitches/pitches/music/douce_nuit.h new file mode 100644 index 0000000..330f0fa --- /dev/null +++ b/pitches/pitches/music/douce_nuit.h @@ -0,0 +1,45 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array douce_nuit = { + // "Douce nuit, sainte nuit" + Note{ G4, 900 }, Note{ A4, 300 }, Note{ G4, 600 }, + Note{ E4, 1200 }, Note{ silent, 100 }, + Note{ G4, 900 }, Note{ A4, 300 }, Note{ G4, 600 }, + Note{ E4, 1200 }, Note{ silent, 100 }, + + // "Dans les cieux, l'astre luit" + Note{ D5, 1200 }, Note{ D5, 600 }, + Note{ B4, 1200 }, Note{ silent, 100 }, + Note{ C5, 1200 }, Note{ C5, 600 }, + Note{ G4, 1200 }, Note{ silent, 100 }, + + // "Le mystère annoncé" + Note{ A4, 1200 }, Note{ A4, 600 }, + Note{ C5, 900 }, Note{ B4, 300 }, Note{ A4, 600 }, + Note{ G4, 900 }, Note{ A4, 300 }, Note{ G4, 600 }, + Note{ E4, 1200 }, Note{ silent, 100 }, + + // "S'accomplit cette nuit" + Note{ A4, 1200 }, Note{ A4, 600 }, + Note{ C5, 900 }, Note{ B4, 300 }, Note{ A4, 600 }, + Note{ G4, 900 }, Note{ A4, 300 }, Note{ G4, 600 }, + Note{ E4, 1200 }, Note{ silent, 100 }, + + // "Noël! Noël! Voici le Rédempteur" + Note{ D5, 1200 }, Note{ D5, 600 }, + Note{ F5, 900 }, Note{ D5, 300 }, Note{ B4, 600 }, + Note{ C5, 1800 }, Note{ silent, 100 }, + Note{ E5, 1800 }, + Note{ C5, 2400 }, Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/frere_jacques.h b/pitches/pitches/music/frere_jacques.h new file mode 100644 index 0000000..bdad646 --- /dev/null +++ b/pitches/pitches/music/frere_jacques.h @@ -0,0 +1,31 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array frere_jacques = { + // "Frère Jacques, Frère Jacques" + Note{ C4, 400 }, Note{ D4, 400 }, Note{ E4, 400 }, Note{ C4, 400 }, + Note{ C4, 400 }, Note{ D4, 400 }, Note{ E4, 400 }, Note{ C4, 400 }, + + // "Dormez-vous? Dormez-vous?" + Note{ E4, 400 }, Note{ F4, 400 }, Note{ G4, 800 }, + Note{ E4, 400 }, Note{ F4, 400 }, Note{ G4, 800 }, + + // "Sonnez les matines, Sonnez les matines" + Note{ G4, 300 }, Note{ A4, 120 }, Note{ G4, 180 }, Note{ F4, 280 }, Note{ E4, 400 }, Note{ C4, 400 }, + Note{ G4, 300 }, Note{ A4, 120 }, Note{ G4, 180 }, Note{ F4, 280 }, Note{ E4, 400 }, Note{ C4, 400 }, + + // "Ding, dang, dong. Ding, dang, dong." + Note{ C4, 400 }, Note{ G3, 400 }, Note{ C4, 800 }, + Note{ C4, 400 }, Note{ G3, 400 }, Note{ C4, 800 }, + Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/fur_elise.h b/pitches/pitches/music/fur_elise.h new file mode 100644 index 0000000..fae95fb --- /dev/null +++ b/pitches/pitches/music/fur_elise.h @@ -0,0 +1,32 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array fur_elise = { + // Introduction célèbre (répétée 2 fois) + Note{ E5, 150 }, Note{ DS5, 150 }, Note{ E5, 150 }, Note{ DS5, 150 }, + Note{ E5, 150 }, Note{ B4, 150 }, Note{ D5, 150 }, Note{ C5, 150 }, + Note{ A4, 300 }, Note{ silent, 150 }, + Note{ C4, 150 }, Note{ E4, 150 }, Note{ A4, 150 }, + Note{ B4, 300 }, Note{ silent, 150 }, + Note{ E4, 150 }, Note{ GS4, 150 }, Note{ B4, 150 }, + Note{ C5, 300 }, Note{ silent, 150 }, + Note{ E4, 150 }, Note{ E5, 150 }, Note{ DS5, 150 }, + + // Répétition + Note{ E5, 150 }, Note{ DS5, 150 }, Note{ E5, 150 }, Note{ B4, 150 }, + Note{ D5, 150 }, Note{ C5, 150 }, Note{ A4, 300 }, Note{ silent, 150 }, + Note{ C4, 150 }, Note{ E4, 150 }, Note{ A4, 150 }, + Note{ B4, 300 }, Note{ silent, 150 }, + Note{ E4, 150 }, Note{ C5, 150 }, Note{ B4, 150 }, + Note{ A4, 450 }, Note{ silent, 150 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/god_save_the_queen.h b/pitches/pitches/music/god_save_the_queen.h new file mode 100644 index 0000000..65d54c6 --- /dev/null +++ b/pitches/pitches/music/god_save_the_queen.h @@ -0,0 +1,34 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array god_save_the_queen = { + // --- SECTION 1 --- + Note{ G4, 600 }, Note{ G4, 600 }, Note{ A4, 600 }, // God save our + Note{ FS4, 900 }, Note{ G4, 300 }, Note{ A4, 600 }, // gra-cious Queen (ou King) + Note{ B4, 600 }, Note{ B4, 600 }, Note{ C5, 600 }, // Long live our + Note{ B4, 900 }, Note{ A4, 300 }, Note{ G4, 600 }, // no-ble Queen + Note{ A4, 600 }, Note{ G4, 600 }, Note{ FS4, 600 }, // God save the + Note{ G4, 1200 }, Note{ silent, 300 }, // Queen! + + // --- SECTION 2 --- + Note{ D5, 600 }, Note{ D5, 600 }, Note{ D5, 600 }, // Send her vic- + Note{ D5, 900 }, Note{ C5, 300 }, Note{ B4, 600 }, // -to-ri-ous + Note{ C5, 600 }, Note{ C5, 600 }, Note{ C5, 600 }, // Hap-py and + Note{ C5, 900 }, Note{ B4, 300 }, Note{ A4, 600 }, // glo-ri-ous + + // --- FINAL --- + Note{ B4, 450 }, Note{ C5, 150 }, Note{ B4, 300 }, Note{ A4, 300 }, Note{ G4, 600 }, // Long to reign + Note{ B4, 600 }, Note{ C5, 600 }, Note{ D5, 600 }, // o - ver us + Note{ E5, 450 }, Note{ C5, 150 }, Note{ B4, 600 }, Note{ A4, 600 }, // God save the + Note{ G4, 1800 } // Queen! +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/greensleeves.h b/pitches/pitches/music/greensleeves.h new file mode 100644 index 0000000..e3547c9 --- /dev/null +++ b/pitches/pitches/music/greensleeves.h @@ -0,0 +1,38 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array greensleeves = { + // --- Part A (major theme: "Alas, my love, you do me wrong") --- + Note{ A4, 300 }, + Note{ C5, 600 }, Note{ D5, 300 }, Note{ E5, 450 }, Note{ F5, 150 }, Note{ E5, 300 }, + Note{ D5, 600 }, Note{ B4, 300 }, Note{ G4, 450 }, Note{ A4, 150 }, Note{ B4, 300 }, + Note{ C5, 600 }, Note{ A4, 300 }, Note{ A4, 450 }, Note{ GS4, 150 }, Note{ A4, 300 }, + Note{ B4, 600 }, Note{ GS4, 300 }, Note{ E4, 500 }, Note{ silent, 100 }, + + Note{ A4, 300 }, + Note{ C5, 600 }, Note{ D5, 300 }, Note{ E5, 450 }, Note{ F5, 150 }, Note{ E5, 300 }, + Note{ D5, 600 }, Note{ B4, 300 }, Note{ G4, 450 }, Note{ A4, 150 }, Note{ B4, 300 }, + Note{ C5, 450 }, Note{ B4, 150 }, Note{ A4, 300 }, Note{ GS4, 450 }, Note{ FS4, 150 }, Note{ GS4, 300 }, + Note{ A4, 900 }, Note{ A4, 800 }, Note{ silent, 100 }, + + // --- Part B (minor theme: "Greensleeves was all my joy") --- + Note{ G5, 900 }, Note{ G5, 450 }, Note{ F5, 150 }, Note{ E5, 300 }, + Note{ D5, 600 }, Note{ B4, 300 }, Note{ G4, 450 }, Note{ A4, 150 }, Note{ B4, 300 }, + Note{ C5, 600 }, Note{ A4, 300 }, Note{ A4, 450 }, Note{ GS4, 150 }, Note{ A4, 300 }, + Note{ B4, 600 }, Note{ GS4, 300 }, Note{ E4, 800 }, Note{ silent, 100 }, + + Note{ G5, 900 }, Note{ G5, 450 }, Note{ F5, 150 }, Note{ E5, 300 }, + Note{ D5, 600 }, Note{ B4, 300 }, Note{ G4, 450 }, Note{ A4, 150 }, Note{ B4, 300 }, + Note{ C5, 450 }, Note{ B4, 150 }, Note{ A4, 300 }, Note{ GS4, 450 }, Note{ FS4, 150 }, Note{ GS4, 300 }, + Note{ A4, 1200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/happy_birthday.h b/pitches/pitches/music/happy_birthday.h new file mode 100644 index 0000000..df94ddf --- /dev/null +++ b/pitches/pitches/music/happy_birthday.h @@ -0,0 +1,35 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array happy_birthday = { + // "Happy birthday to you" + Note{ C4, 300 }, Note{ C4, 150 }, Note{ D4, 600 }, + Note{ C4, 600 }, Note{ F4, 600 }, + Note{ E4, 1200 }, Note{ silent, 100 }, + + // "Happy birthday to you" + Note{ C4, 300 }, Note{ C4, 150 }, Note{ D4, 600 }, + Note{ C4, 600 }, Note{ G4, 600 }, + Note{ F4, 1200 }, Note{ silent, 100 }, + + // "Happy birthday dear [name]" + Note{ C4, 300 }, Note{ C4, 150 }, Note{ C5, 600 }, + Note{ A4, 600 }, Note{ F4, 600 }, + Note{ E4, 600 }, Note{ D4, 600 }, + Note{ silent, 100 }, + + // "Happy birthday to you" + Note{ AS4, 300 }, Note{ AS4, 150 }, Note{ A4, 600 }, + Note{ F4, 600 }, Note{ G4, 600 }, + Note{ F4, 1200 }, Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/indiana_jones.h b/pitches/pitches/music/indiana_jones.h new file mode 100644 index 0000000..0a32c1c --- /dev/null +++ b/pitches/pitches/music/indiana_jones.h @@ -0,0 +1,37 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array indiana_jones = { + // --- MOTIF CÉLÈBRE (L'appel) --- + Note{ E4, 250 }, Note{ F4, 150 }, Note{ G4, 150 }, Note{ C5, 600 }, // Ta-ta-ta-Taaa ! + Note{ silent, 50 }, + Note{ D4, 250 }, Note{ E4, 150 }, Note{ F4, 900 }, // Ta-ta-Taaaa + Note{ silent, 50 }, + + Note{ G4, 250 }, Note{ A4, 150 }, Note{ B4, 150 }, Note{ F5, 600 }, // Ta-ta-ta-Taaa ! + Note{ silent, 50 }, + Note{ A4, 250 }, Note{ B4, 150 }, Note{ C5, 450 }, Note{ D5, 450 }, Note{ E5, 450 }, // Montée finale + + // --- DEUXIÈME PHRASE (Le thème principal) --- + Note{ E4, 150 }, Note{ F4, 150 }, Note{ G4, 150 }, Note{ C5, 600 }, + Note{ silent, 50 }, + Note{ D5, 150 }, Note{ E5, 150 }, Note{ F5, 900 }, + Note{ silent, 50 }, + + Note{ G5, 150 }, Note{ G5, 150 }, // Les deux notes rapides avant la fin + Note{ E5, 450 }, Note{ D5, 150 }, Note{ G5, 450 }, Note{ E5, 150 }, + Note{ D5, 450 }, Note{ G5, 150 }, Note{ E5, 450 }, Note{ D5, 150 }, + + // Résolution + Note{ C5, 900 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/jingle_bells.h b/pitches/pitches/music/jingle_bells.h new file mode 100644 index 0000000..721f1a5 --- /dev/null +++ b/pitches/pitches/music/jingle_bells.h @@ -0,0 +1,39 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array jingle_bells = { + // "Dashing through the snow" + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ G5, 400 }, Note{ C5, 400 }, Note{ D5, 400 }, + Note{ E5, 1200 }, Note{ silent, 100 }, + + // "In a one-horse open sleigh" + Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, + Note{ F5, 400 }, Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 200 }, Note{ E5, 200 }, + Note{ E5, 400 }, Note{ D5, 400 }, Note{ D5, 400 }, Note{ E5, 400 }, + Note{ D5, 800 }, Note{ G5, 800 }, + Note{ silent, 100 }, + + // Refrain: "Jingle bells, jingle bells" + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ G5, 400 }, Note{ C5, 400 }, Note{ D5, 400 }, + Note{ E5, 1200 }, Note{ silent, 100 }, + + // "Oh what fun it is to ride" + Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, + Note{ F5, 400 }, Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 200 }, Note{ E5, 200 }, + Note{ G5, 400 }, Note{ G5, 400 }, Note{ F5, 400 }, Note{ D5, 400 }, + Note{ C5, 1200 }, Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/mario.h b/pitches/pitches/music/mario.h new file mode 100644 index 0000000..a4bf9cc --- /dev/null +++ b/pitches/pitches/music/mario.h @@ -0,0 +1,61 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array mario = { + // --- L'INTRODUCTION (Fanfare) --- + Note{ E5, 125 }, Note{ E5, 125 }, Note{ silent, 125 }, Note{ E5, 125 }, + Note{ silent, 125 }, Note{ C5, 125 }, Note{ E5, 125 }, Note{ silent, 125 }, + Note{ G5, 125 }, Note{ silent, 375 }, Note{ G4, 125 }, Note{ silent, 375 }, + + // --- SECTION A (Le Thème Principal) --- + Note{ C5, 250 }, Note{ G4, 250 }, Note{ E4, 250 }, + Note{ A4, 250 }, Note{ B4, 250 }, Note{ AS4, 125 }, Note{ A4, 250 }, + Note{ G4, 175 }, Note{ E5, 175 }, Note{ G5, 175 }, + Note{ A5, 250 }, Note{ F5, 125 }, Note{ G5, 125 }, + Note{ silent, 125 }, Note{ E5, 125 }, Note{ silent, 125 }, Note{ C5, 125 }, + Note{ D5, 125 }, Note{ B4, 125 }, Note{ silent, 250 }, + + // --- REPRISE SECTION A --- + Note{ C5, 250 }, Note{ G4, 250 }, Note{ E4, 250 }, + Note{ A4, 250 }, Note{ B4, 250 }, Note{ AS4, 125 }, Note{ A4, 250 }, + Note{ G4, 175 }, Note{ E5, 175 }, Note{ G5, 175 }, + Note{ A5, 250 }, Note{ F5, 125 }, Note{ G5, 125 }, + Note{ silent, 125 }, Note{ E5, 125 }, Note{ silent, 125 }, Note{ C5, 125 }, + Note{ D5, 125 }, Note{ B4, 125 }, Note{ silent, 250 }, + + // --- SECTION B (La Descente) --- + Note{ silent, 250 }, Note{ G5, 125 }, Note{ FS5, 125 }, Note{ F5, 125 }, + Note{ DS5, 250 }, Note{ E5, 250 }, Note{ silent, 125 }, + Note{ GS4, 125 }, Note{ A4, 125 }, Note{ C5, 125 }, Note{ silent, 125 }, + Note{ A4, 125 }, Note{ C5, 125 }, Note{ D5, 125 }, + + Note{ silent, 250 }, Note{ G5, 125 }, Note{ FS5, 125 }, Note{ F5, 125 }, + Note{ DS5, 250 }, Note{ E5, 250 }, Note{ silent, 125 }, + Note{ C6, 125 }, Note{ silent, 125 }, Note{ C6, 125 }, Note{ C6, 125 }, + Note{ silent, 250 }, Note{ G4, 125 }, Note{ silent, 250 }, + + // --- SECTION C (Le Pont - Rythme Syncopé) --- + Note{ C5, 250 }, Note{ G4, 250 }, Note{ E4, 250 }, + Note{ A4, 250 }, Note{ B4, 250 }, Note{ AS4, 125 }, Note{ A4, 250 }, + Note{ G4, 175 }, Note{ E5, 175 }, Note{ G5, 175 }, + Note{ A5, 250 }, Note{ F5, 125 }, Note{ G5, 125 }, + Note{ silent, 125 }, Note{ E5, 125 }, Note{ silent, 125 }, Note{ C5, 125 }, + Note{ D5, 125 }, Note{ B4, 125 }, Note{ silent, 250 }, + + // Final de la boucle (Transition vers le début) + Note{ E5, 125 }, Note{ C5, 250 }, Note{ G4, 250 }, Note{ GS4, 125 }, + Note{ A4, 250 }, Note{ F5, 125 }, Note{ F5, 125 }, Note{ A4, 250 }, + Note{ B4, 125 }, Note{ A5, 125 }, Note{ A5, 125 }, Note{ A5, 125 }, + Note{ G5, 125 }, Note{ F5, 125 }, Note{ E5, 125 }, Note{ C5, 125 }, + Note{ A4, 125 }, Note{ G4, 125 }, Note{ silent, 500 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/marseillaise.h b/pitches/pitches/music/marseillaise.h new file mode 100644 index 0000000..2ef5a3a --- /dev/null +++ b/pitches/pitches/music/marseillaise.h @@ -0,0 +1,32 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array marseillaise = { + // --- Allons enfants de la Patrie --- + Note{ D4, 450 }, Note{ D4, 150 }, + Note{ G4, 600 }, Note{ G4, 600 }, Note{ A4, 600 }, Note{ A4, 600 }, + Note{ D5, 900 }, Note{ B4, 300 }, Note{ G4, 600 }, Note{ silent, 50 }, + + // --- Le jour de gloire est arrivé --- + Note{ G4, 450 }, Note{ B4, 150 }, Note{ D5, 600 }, Note{ B4, 600 }, Note{ G4, 600 }, + Note{ A4, 1200 }, Note{ silent, 200 }, + + // --- Aux armes citoyens ! (Refrain) --- + Note{ A4, 450 }, Note{ B4, 150 }, Note{ C5, 600 }, Note{ C5, 600 }, + Note{ B4, 600 }, Note{ A4, 600 }, Note{ G4, 600 }, + Note{ FS4, 600 }, Note{ G4, 600 }, Note{ A4, 900 }, Note{ D4, 300 }, + + // --- Formez vos bataillons --- + Note{ B4, 600 }, Note{ C5, 600 }, Note{ D5, 600 }, Note{ G4, 600 }, + Note{ B4, 900 }, Note{ A4, 300 }, Note{ G4, 1200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/tetris.h b/pitches/pitches/music/tetris.h new file mode 100644 index 0000000..e15b80c --- /dev/null +++ b/pitches/pitches/music/tetris.h @@ -0,0 +1,38 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array tetris = { + // Main theme + Note{ E5, 250 }, Note{ silent, 62 }, + Note{ B4, 125 }, Note{ C5, 125 }, Note{ D5, 250 }, Note{ silent, 62 }, + Note{ C5, 125 }, Note{ B4, 125 }, Note{ A4, 250 }, Note{ silent, 62 }, + Note{ A4, 125 }, Note{ C5, 125 }, Note{ E5, 250 }, Note{ silent, 62 }, + Note{ D5, 125 }, Note{ C5, 125 }, Note{ B4, 375 }, Note{ silent, 62 }, + Note{ C5, 125 }, Note{ D5, 250 }, Note{ silent, 62 }, + Note{ E5, 250 }, Note{ silent, 62 }, + Note{ C5, 250 }, Note{ silent, 62 }, + Note{ A4, 250 }, Note{ silent, 62 }, + Note{ A4, 250 }, Note{ silent, 500 }, + + // Variation 1 + Note{ D5, 250 }, Note{ silent, 62 }, + Note{ F5, 125 }, Note{ A5, 250 }, Note{ silent, 62 }, + Note{ G5, 125 }, Note{ F5, 125 }, Note{ E5, 375 }, Note{ silent, 62 }, + Note{ C5, 125 }, Note{ E5, 250 }, Note{ silent, 62 }, + Note{ D5, 125 }, Note{ C5, 125 }, Note{ B4, 250 }, Note{ silent, 62 }, + Note{ B4, 125 }, Note{ C5, 125 }, Note{ D5, 250 }, Note{ silent, 62 }, + Note{ E5, 250 }, Note{ silent, 62 }, + Note{ C5, 250 }, Note{ silent, 62 }, + Note{ A4, 250 }, Note{ silent, 62 }, + Note{ A4, 250 }, Note{ silent, 500 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/twinkle_twinkle.h b/pitches/pitches/music/twinkle_twinkle.h new file mode 100644 index 0000000..616fb60 --- /dev/null +++ b/pitches/pitches/music/twinkle_twinkle.h @@ -0,0 +1,39 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array twinkle_twinkle = { + // "Twinkle, twinkle, little star" + Note{ C4, 400 }, Note{ C4, 400 }, Note{ G4, 400 }, Note{ G4, 400 }, + Note{ A4, 400 }, Note{ A4, 400 }, Note{ G4, 800 }, + + // "How I wonder what you are" + Note{ F4, 400 }, Note{ F4, 400 }, Note{ E4, 400 }, Note{ E4, 400 }, + Note{ D4, 400 }, Note{ D4, 400 }, Note{ C4, 800 }, + + // "Up above the world so high" + Note{ G4, 400 }, Note{ G4, 400 }, Note{ F4, 400 }, Note{ F4, 400 }, + Note{ E4, 400 }, Note{ E4, 400 }, Note{ D4, 800 }, + + // "Like a diamond in the sky" + Note{ G4, 400 }, Note{ G4, 400 }, Note{ F4, 400 }, Note{ F4, 400 }, + Note{ E4, 400 }, Note{ E4, 400 }, Note{ D4, 800 }, + + // "Twinkle, twinkle, little star" + Note{ C4, 400 }, Note{ C4, 400 }, Note{ G4, 400 }, Note{ G4, 400 }, + Note{ A4, 400 }, Note{ A4, 400 }, Note{ G4, 800 }, + + // "How I wonder what you are" + Note{ F4, 400 }, Note{ F4, 400 }, Note{ E4, 400 }, Note{ E4, 400 }, + Note{ D4, 400 }, Note{ D4, 400 }, Note{ C4, 800 }, + Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches diff --git a/pitches/pitches/music/vive_le_vent.h b/pitches/pitches/music/vive_le_vent.h new file mode 100644 index 0000000..f7851c7 --- /dev/null +++ b/pitches/pitches/music/vive_le_vent.h @@ -0,0 +1,39 @@ +#pragma once + +#include "../pitches.h" + +#include + +namespace pitches +{ +// clang-format off +//-------------------------------------------------------------- +constexpr std::array vive_le_vent = { + // "Vive le vent, vive le vent" + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ G5, 400 }, Note{ C5, 400 }, Note{ D5, 400 }, + Note{ E5, 1200 }, Note{ silent, 100 }, + + // "Vive le vent d'hiver" + Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, + Note{ F5, 400 }, Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 200 }, Note{ E5, 200 }, + Note{ E5, 400 }, Note{ D5, 400 }, Note{ D5, 400 }, Note{ E5, 400 }, + Note{ D5, 800 }, Note{ G5, 800 }, + Note{ silent, 100 }, + + // "Qui s'en va sifflant, soufflant" + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 800 }, + Note{ E5, 400 }, Note{ G5, 400 }, Note{ C5, 400 }, Note{ D5, 400 }, + Note{ E5, 1200 }, Note{ silent, 100 }, + + // "Dans les grands sapins verts" + Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, Note{ F5, 400 }, + Note{ F5, 400 }, Note{ E5, 400 }, Note{ E5, 400 }, Note{ E5, 200 }, Note{ E5, 200 }, + Note{ G5, 400 }, Note{ G5, 400 }, Note{ F5, 400 }, Note{ D5, 400 }, + Note{ C5, 1200 }, Note{ silent, 200 } +}; +//-------------------------------------------------------------- +// clang-format on +}; // namespace pitches