Use Yama no Ongakuka melody for piano demo

This commit is contained in:
Jage9
2026-02-23 01:24:13 -05:00
parent 4e1415aa1c
commit c0a0ccd4a5
2 changed files with 42 additions and 19 deletions

View File

@@ -1,5 +1,5 @@
// Maintainer-controlled web client version.
// Format: YYYY.MM.DD Rn (example: 2026.02.20 R2)
window.CHGRID_WEB_VERSION = "2026.02.23 R213";
window.CHGRID_WEB_VERSION = "2026.02.23 R214";
// Optional display timezone for timestamps. Falls back to America/Detroit if unset/invalid.
window.CHGRID_TIME_ZONE = "America/Detroit";

View File

@@ -113,24 +113,47 @@ const PIANO_SHARP_KEY_MIDI_BY_CODE: Record<string, number> = {
BracketRight: 78,
};
const PIANO_DEMO_STEPS_F_MAJOR: Array<{ midi: number; durationMs: number; gapMs: number }> = [
{ midi: 65, durationMs: 220, gapMs: 40 }, // F4
{ midi: 69, durationMs: 220, gapMs: 40 }, // A4
{ midi: 72, durationMs: 280, gapMs: 60 }, // C5
{ midi: 74, durationMs: 220, gapMs: 40 }, // D5
{ midi: 72, durationMs: 220, gapMs: 40 }, // C5
{ midi: 69, durationMs: 260, gapMs: 60 }, // A4
{ midi: 70, durationMs: 220, gapMs: 40 }, // Bb4
{ midi: 69, durationMs: 220, gapMs: 40 }, // A4
{ midi: 67, durationMs: 260, gapMs: 60 }, // G4
{ midi: 65, durationMs: 360, gapMs: 90 }, // F4
{ midi: 67, durationMs: 220, gapMs: 40 }, // G4
{ midi: 69, durationMs: 220, gapMs: 40 }, // A4
{ midi: 70, durationMs: 220, gapMs: 40 }, // Bb4
{ midi: 72, durationMs: 280, gapMs: 60 }, // C5
{ midi: 70, durationMs: 220, gapMs: 40 }, // Bb4
{ midi: 69, durationMs: 220, gapMs: 40 }, // A4
{ midi: 67, durationMs: 260, gapMs: 60 }, // G4
{ midi: 65, durationMs: 420, gapMs: 120 }, // F4
// "Yama no Ongakuka" / "Das Lied vom Musikanten" core melody in F major.
{ midi: 65, durationMs: 240, gapMs: 40 }, // F4
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 72, durationMs: 240, gapMs: 60 }, // C5
{ midi: 72, durationMs: 240, gapMs: 40 }, // C5
{ midi: 70, durationMs: 240, gapMs: 40 }, // Bb4
{ midi: 69, durationMs: 240, gapMs: 60 }, // A4
{ midi: 67, durationMs: 240, gapMs: 40 }, // G4
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 65, durationMs: 240, gapMs: 60 }, // F4
{ midi: 65, durationMs: 480, gapMs: 120 }, // F4 (held)
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 70, durationMs: 240, gapMs: 40 }, // Bb4
{ midi: 72, durationMs: 240, gapMs: 60 }, // C5
{ midi: 72, durationMs: 240, gapMs: 40 }, // C5
{ midi: 74, durationMs: 240, gapMs: 40 }, // D5
{ midi: 72, durationMs: 240, gapMs: 60 }, // C5
{ midi: 70, durationMs: 240, gapMs: 40 }, // Bb4
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 67, durationMs: 240, gapMs: 60 }, // G4
{ midi: 65, durationMs: 480, gapMs: 120 }, // F4 (held)
{ midi: 72, durationMs: 240, gapMs: 40 }, // C5
{ midi: 72, durationMs: 240, gapMs: 40 }, // C5
{ midi: 74, durationMs: 240, gapMs: 60 }, // D5
{ midi: 65, durationMs: 240, gapMs: 40 }, // F4
{ midi: 65, durationMs: 240, gapMs: 40 }, // F4
{ midi: 65, durationMs: 240, gapMs: 60 }, // F4
{ midi: 67, durationMs: 240, gapMs: 40 }, // G4
{ midi: 65, durationMs: 240, gapMs: 40 }, // F4
{ midi: 64, durationMs: 240, gapMs: 60 }, // E4
{ midi: 65, durationMs: 480, gapMs: 120 }, // F4 (held)
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 70, durationMs: 240, gapMs: 40 }, // Bb4
{ midi: 72, durationMs: 240, gapMs: 60 }, // C5
{ midi: 72, durationMs: 240, gapMs: 40 }, // C5
{ midi: 74, durationMs: 240, gapMs: 40 }, // D5
{ midi: 72, durationMs: 240, gapMs: 60 }, // C5
{ midi: 70, durationMs: 240, gapMs: 40 }, // Bb4
{ midi: 69, durationMs: 240, gapMs: 40 }, // A4
{ midi: 67, durationMs: 240, gapMs: 60 }, // G4
{ midi: 65, durationMs: 520, gapMs: 140 }, // F4 (held, phrase ending)
];
declare global {