Strudelify

Beau soir

CL.A.DEBUSSY

KeyE majorTempo50 bpm
0:00/0:00
// Beau soir — CL.A.DEBUSSY
// 50 bpm, 3/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/4809166; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(50/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "グランドピアノ"
const piano = note("<A B C D@2 E@7 F@3 G H@2 I J@6 K@8 L M@8>".pickRestart({
  A: "~@43 g#4@5, e2@26 b4@5 e3@6 b3@11, ~@5 b2@43, ~@5 g#3@19, ~@5 b3@2 e4@9",
  B: "~@41 a3@6 f4, ~@2 d2@23 f4@5 b4@5 d3@13, ~@3 a2@13, ~@7 f3@17, ~@19 b3@29",
  C: "~@13 e3@2 b3, ~@3 e2@14 b4@7, ~@13 b2@35, ~@3 g#3@5, ~@23 b3@6 e4@19",
  D: "[~@3 [g#4,b4,e5,b5]@7 ~@29 d5@6 ~@12 d6@7 ~@28 b4@4, ~@10 g2@24 g4@20 g2@10 e2@23 e4@9, ~@17 d3@28 [a2,d5]@20 ~@6 b2@25, ~@23 a#3@42 ~@11 g#3@20, ~@28 d4@23 g5@14 ~@17 b3@14]/2", // E D5
  E: "[~@12 g#4@5 ~@46 f4@6 ~@45 [g#4,b4,e5,b5]@6 ~@28 d5@5 ~@12 d6@7 ~@45 g#4@6 ~@46 e4@6 ~@45 e4@6 e2@7 b2@3, ~@2 e3@16 d2@52 ~@17 b3@5 e4@5 b4@6 e3@5 b3@12 ~@12 a#3@21 [a2,d5]@6 g5@3 g2@10 e2@28 b4@5 e3@6 b3@12 ~@12 e3@16 g#4@5 c3@6 g#3@13 ~@12 e3@16 g#4@5 c3@6 g#3@12 ~@10, ~@7 b3@11 ~@6 a2@16 f4@6 b4@5 d3@6 a3@12 e2@51 g2@23 g4@29 ~@17 b3@6 e4@28 ~@17 g#3@5 c4@30 ~@17 g#3@6 c4@29 ~@9, ~@30 f3@40 ~@6 b2@44 ~@7 d3@45 ~@7 b2@44 c2@52 c2@51 ~@10, ~@35 b3@34 ~@12 g#3@39 ~@17 d4@35 ~@12 g#3@39 ~@6 g#2@46 ~@7 g#2@45 ~@9]/7", // E D5
  F: "[~@19 b4@6 ~@13 b5@7 ~@44 d#5@5 ~@27 b4@5 ~@12 b5@6, ~@2 g#3@29 e5@14 ~@11 d#5@5 b5@22 b4@11 ~@11 f3@21 [d#4,b4]@6 f5@3 c#4@9, ~@8 b3@17 b3@69 ~@6 g#2@44, ~@13 e4@32 [g#3,d#4]@49 c#2@50, ~@25 b4@21 ~@5 b4@10 g#4@6 d#5@5 b4@5 [f#4,g#4]@17 f4@16 b3@6 f4@28]/3", // G#m G#5 F#sus2
  G: "~@43 d#5@5, [g#3,b3,d#4], ~@5 b4@16 d#5@16 b4@11, ~@11 d#5@5 g#4@11 b4@5 [f#4,g#4]@16, ~ b5@2", // G#m F#sus2
  H: "~@5 [g#4,f5], [f4,a#5]@2 [a#4,f#5], ~@5 d#5@16 d#5@27, ~@11 b4@16 b4@21, ~ [f#4,g#5]@2", // C# A#5 D#m F#sus2
  I: "~@43 f4@5, [f#4,d#5], ~@5 b4@11 f4@21 g#4@11, ~@11 g#4@10 b4@6 g#4@5 [d#4,b4]@16, ~ c#5@2", // D#m G#m
  J: "[~@46 a#4@6 ~@10 f#4@5 ~@23 a4@5 ~@10 f#4@4 ~@22 [d#4,b4]@7 ~@9 f#4@4 ~@23 a4@4 ~@36 b4@5 ~@8 b4@4 ~@19 d5@4 ~@8 b4@4 ~@18 e5@4, a#4@40 f#4@12 c#5@7 f#2@17 a4@5 [a3,g#4,g#5]@5 c#5@10 ~@4 a4@9 a3@8 b3@2 f#4@5 [c#4,c#5]@14 c#4@18 c#5@2 f#3@2 a4@5 [a3,g#4,g#5]@4 c#5@2 c#4@7 ~@4 d#5@9 [a3,g#4,g#5]@9 b4@5 [c#4,f#4,f#5]@4 d#5@3 d#4@7 f#5@12 [f#3,b4,b5]@24 ~@5 e3@12 b3@2 b4@4 [d4,f#5]@10, d#4@17 d#4@36 ~@4 a4@10 [c#3,f#4,f#5]@29 ~@6 f#3@36 ~@4 a4@9 [c#3,f#4,f#5]@27 [b2,a4,a5]@41 [g#2,f#4]@20 d5@3 [d4,c#5,c#6]@4 f#5@8 ~@4 d5@8 b4@4 d5@18, ~@6 f#4@16 f#4@12 c#4@18 c#4@19 c#5@3 f#3@14 c#4@7 [b2,d#5]@43 f#1@40 ~@9 b4@9 d#5@2 b3@21 ~@4 d5@12 f#5@2 b3@18 ~@11 g#3@22, ~@11 a#3@17 a#3@24 f#1@43 d#4@14 f#4@5 a4@24 c#5@7 f#2@33 ~@7 f#3@34 ~@6 d3@29 [b2,g#4,g#5]@34]/6", // G#m Amaj7 C# Amaj7 F#5 B5 D F#5 …
  K: "[~@9 b4@4 ~@18 d5@4 ~@29 e5@4 ~@19 d5@3 ~@6 [e4,e5]@5 ~@30 f#4@4 ~@30 [e3,e4]@6 ~@38 d3@6 ~@48 [d#4,a4,c#5]@86 ~@35, ~ [g#2,f#4]@19 d5@4 [d4,c#5,c#6]@3 f#5@7 ~@5 g#5@7 [g#3,c#5,c#6]@7 e5@4 [d4,b4,b5]@4 g#5@2 f#4@6 ~@3 f#5@7 [d3,a4,a5]@6 f#3@17 ~@3 d5@7 ~ [d4,d5]@22 ~@8 d4@12 d4@4 [g#3,g#4]@12 f#3@18 a3@5 f#3@5 [a2,a3]@17 b1@23 a3@96 ~@49, ~ f#5@12 [f#3,b4,b5]@22 ~@5 e3@28 ~@6 a2@28 ~@7 a4@7 a4@8 [c#4,c#5]@11 [b3,b4]@36 ~@5 d4@9 d4@31 c#4@17 d#3@24 b3@92 ~@35, ~@5 d5@11 f#5@2 b3@17 ~@7 e5@8 g#5 b3@17 ~@8 d5@7 f#5@7 [a3,d5,g#5]@11 f#5@33 ~@13 [a3,a4]@24 ~@9 a3@5 d3@19 f#3@12 a3@12 b2@22 f#3@96 ~@38, ~@7 d3@28 [e2,d5,d6]@33 [d2,b4,b5]@33 f#4@19 f#4@7 a4@7 ~@5 f#4@12 f#4@20 f#4@45 d#3@6 f#2@22 c#4@96 ~@44]/8", // E D#m7b5 G#7 Dmaj7 C#5 G D5 D …
  L: "~@11 g#4, e2@27 b4@5 e3@6 b3@10, ~@5 b2@43, ~@11 g#3@37, ~@16 b3@5 e4@27",
  M: "[~@47 f4@7 ~@44 g#4@8 ~@49 d#5@8 ~@44 g6@13 ~@51 b3@13 [e4,b4]@80 ~@20, ~@3 d2@38 a3@13 ~@11 g#3@16 b4@5 e3@6 b3@14 ~@13 d#3@12 b3@33 ~@25 d#6@31 ~@40 g#3@25 ~@99, ~@8 a2@16 f4@6 b4@5 d3@19 e2@53 g1@57 ~@56 [e1,e2,b5,e6,g#6]@64 ~@100, ~@14 f3@40 ~@6 b2@47 ~@6 g2@23 d#4@6 g4@7 b4@15 ~@8 b5@48 ~@29 e3@36 ~@99, ~@19 b3@35 ~@16 b3@6 e4@31 ~@18 g3@38 g5@57 ~@10 b2@55 ~@99]/8", // E5 E
})).s("gm_piano").gain(0.11)

// chords · piano · "グランドピアノ" · soft notes
const piano_soft = note("<A B@2 ~@2 C D ~@2 E F G ~@7 H ~@13 I@3 J ~@2 K@3>".pickRestart({
  A: "~@43 [b4,e5,b5]@5", B: "[~@47 [b4,f5,b5]@7 ~@42]/2", C: "~@12 [b4,e5,b5]@5 ~@31", D: "~@5 [b4,f5,b5]@2 ~@9",
  E: "~@25 [b4,e5,b5]@6 ~@17", F: "~@29 [g#4,c5,g#5]@6 ~@13", G: "~@16 [g#4,c5,g#5]@3 ~@5", H: "[f#2,c#3]",
  I: "[~@44 [b4,e5,b5]@7 ~@44 [b4,f5,b5]@7 ~@42]/3", J: "~ [b4,e5,b5]@4 ~@19", K: "[~@11 g#4@20 ~@5]/3",
})).s("gm_piano").gain(0.08)

stack(piano, piano_soft)