Strudelify

Symphony No. 2 in B major, Op. 4 B 12 : II. Poco adagio

Dvorak

KeyD majorTempo24 bpm
0:00/0:00
// Symphony No. 2 in B major, Op. 4 B 12 : II. Poco adagio — Dvorak
// 24 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 24 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(24/4)

// 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.

// other · flute
const flute = note("<~@16 A@3 B@2 C D E>".pickRestart({
  A: "[f#5@2 ~ a5@2 a5@5 f#5@2 ~ e5@2 d5@5 e5@2 ~ f#5@2 a5@2 ~ f#5@2 e5@10 ~ f#5@2 a5@2 ~ a5@5 f#5@2 e5@2 ~ d5@5 e5@2 f#5@2 ~ e5@2 d5@2 ~ d5@10 ~@15]/3",
  B: "[~@25 b4@2 ~ d5@2 d5@5 c#5@2 ~ a4@2 ~ b4@5 b4@2 d5@2 ~ c#5@2 a4@2 ~ b4@8]/2",
  C: "~@2 f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2",
  D: "e4@10 f#4@2 ~ a4@2 a4@5 d5@2 ~ e5@2 f#5@5 e5@2", E: "~ d5@2 e5@2 ~ b4@2 ~ d5@10 ~@13",
})).s("gm_flute").gain(0.28)

// chords · clarinet
const clarinet = note("<~@12 A B C B D ~@2 E@2 F@3>".pickRestart({
  A: "e5@3 ~ d5@3 ~ e5@3 ~ b4@3 ~ d5@15 ~", B: "e5@11 ~ d5@3 ~ e5@7 ~ b4@7 ~", C: "d5@31 ~", D: "d5@5 ~@11",
  E: "[~@25 [g4,b4]@10 [f#4,a4]@5 ~ [g4,b4]@5 [g4,b4]@5 [f#4,a4]@5 [g4,b4]@8]/2", // G F#m G F#m G
  F: "[~@2 [d4,f#4]@20 [e4,g4]@20 [d4,f#4]@20 [d4,g4]@5 [c#4,g4]@5 ~ [d4,f#4]@10 ~@13]/3", // D Em D G5 C#dim D
})).s("gm_clarinet").gain(0.23)

// other · bassoon
const bassoon = note("<~@16 A@3 B@2 C D@2>".pickRestart({
  A: "[[d3,d4]@10 [d3,d4]@10 [d3,d4]@10 [d3,d4]@10 ~ [d3,d4]@10 f#3@10 [g2,g3]@5 [a2,a3]@5 [d3,d4]@10 ~@15]/3", // D G A D
  B: "[~@25 [d3,d4]@10 [d3,d4]@10 ~ [d3,d4]@10 [d3,d4]@8]/2", C: "~ [d3,d4]@5 [d3,d4]@5 [d3,d4]@5",
  D: "[[d3,d4]@10 [d3,d4]@10 [d3,d4]@5 [a2,a3]@5 [a2,a3]@10 ~ [d3,d4]@10 ~@13]/2", // D A D
})).s("gm_bassoon").gain(0.19)

// chords · french horn
const french_horn = note("<~@16 A@3 B ~ C@3>".pickRestart({
  A: "[[d4,f#4]@20 [e4,g4]@20 ~ [d4,f#4]@20 [d4,g4]@5 [c#4,g4]@5 [d4,f#4]@10 [g3,b3]@10 [f#3,a3]@5]/3", // D Em D G5 C#dim D G F#m
  B: "[g3,b3]@5 [g3,b3]@5 [f#3,a3]@5 [g3,b3]@10 ~@7", // G F#m G
  C: "[~@2 [d4,f#4]@20 [e4,g4]@20 [d4,f#4]@20 [d4,g4]@5 [c#4,g4]@5 ~ [d4,f#4]@10 ~@13]/3", // D Em D G5 C#dim D
})).s("gm_french_horn").gain(0.15)

// other · trumpet
const trumpet = note("<~@16 A@3 B ~ C D E>".pickRestart({
  A: "[[d4,f#4]@20 [e4,g4]@20 ~ a4@10 a#4@10 [g4,b4]@5 [g4,a4]@5 [f#4,a4]@10 b4@2 d5@2 ~ d5@5 c#5@2 ~ a4@2, ~@41 f#4@20 ~@35]/3", // D Em G Gsus2 F#m
  B: "b4@5 b4@2 ~ d5@2 c#5@2 ~ a4@2 b4@10 ~@7", C: "~@2 f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2",
  D: "e4@10 f#4@2 ~ a4@2 a4@5 d4@2 ~ e4@2 f#4@5 e4@2", E: "~ d4@2 e4@2 ~ b4@2 ~ [d4,d5]@10 ~@13",
})).s("gm_trumpet").gain(0.23)

// chords · trombone
const trombone = note("<~@16 A@4 ~ B C@2>".pickRestart({
  A: "[f#3@2 ~ a3@2 a3@5 f#3@2 ~ e3@2 d3@5 e3@2 ~ f#3@2 a3@2 ~ f#3@2 [d3,e3]@10 ~ f#3@2 a3@2 ~ a3@5 f#3@2 e3@2 ~ d3@5 e3@2 f#3@2 ~ e3@2 d3@2 ~ d3@10 [d3,d4]@10 [d3,d4]@10 [d3,d4]@10 [d3,d4]@10 ~@7, d3@10 d3@5 ~@5 d3@10 ~@11 d3@10 d3@5 ~@72]/4", // Dsus2 D
  B: "~@2 f#3@2 a3@2 ~ a3@5 f#3@2 e3@2 ~ d3@5 e3@2 ~ f#3@2 a3@2 ~ f#3@2, ~@2 d3@10 d3@5 ~@5 d3@10",
  C: "[[d3,e3]@10 f#3@2 ~ a3@2 a3@5 f#3@2 ~ g3@2 a3@5 e4@2 ~ d4@2 e4@2 ~ b3@2 ~ [d3,d4]@10 ~@13, ~@10 d3@10 d3@5 ~@5 a3@10 ~@24]/2", // Dsus2 D
})).s("gm_trombone").gain(0.15)

// bass · tuba
const bass = note("<~@16 A@4 ~ B C@2>".pickRestart({
  A: "[d2@10 d2@10 d2@10 d2@10 ~ d2@10 f#2@10 g2@5 a2@5 d2@10 d2@10 d2@10 d2@10 d2@10 ~@7]/4", B: "~ d2@5 d2@5 d2@5",
  C: "[d2@10 d2@10 d2@5 a2@5 a2@10 ~ d2@10 ~@13]/2",
})).s("gm_tuba").gain(0.15)

// other · timpani · D5
const timpani = note(`<
  ~@15
  [a2!32]
  [d3!32]!2
  [d3!2 a2!5 [a2,d3] d3!10 ~@14]
  ~@2
  [~@2 d3!30]
  [d3!25 [a2,d3] a2!6]
  [a2!9 d3!10 ~@13]
>`).s("gm_timpani").gain(0.14)

// chords · string ensemble 2
const string_ensemble_2 = note("<A B C D E F E F G H I J@2 K L K M@3 ~@2 N O P>".pickRestart({
  A: "[d4,f#4]@15 ~ [d4,f#4]@15 ~", B: "[e4,g4]@31 ~", C: "[f#4,a4]@15 ~ f#4@15 ~",
  D: "[g4,b4]@7 ~ [g4,a4]@7 ~ [f#4,a4]@15 ~", E: "[g4,b4]@15 ~ [f#4,a4]@7 ~ [g4,b4]@7 ~",
  F: "[g4,b4]@7 ~ [f#4,a4]@7 ~ [g4,b4]@15 ~", G: "[f#4,a4]@15 ~ [a4,d5]@15 ~", H: "[g4,c#5]@31 ~",
  I: "[a4,f#5]@7 ~ [a4,e5]@7 ~ [f#4,d5]@7 ~ [f#4,a4]@7 ~", J: "[g4,b4]@15 ~ [f#4,a4]@15 ~", K: "[g4,b4]@31 ~",
  L: "[f#4,a4]@31 ~", // F#m
  M: "[f#4@2 ~ a4@2 a4@5 f#4@2 ~ e4@2 d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2 e4@10 ~ f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 f#4@2 ~ e4@2 d4@2 ~ d4@10 ~@15]/3",
  N: "~@2 f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2",
  O: "e4@10 f#4@2 ~ a4@2 a4@5 d5@2 ~ e5@2 f#5@5 e5@2", P: "~ d5@2 e5@2 ~ b4@2 ~ d5@10 ~@13",
})).s("gm_string_ensemble_2").gain(0.2)

// other · string ensemble 2
const string_ensemble_2_2 = note("<A B C D E@4 F G H C@2 I@3 J@3 ~@2 K L M>".pickRestart({
  A: "a3@15 ~ a3@15 ~", B: "c#4@31 ~", C: "d4@15 ~ d4@15 ~", D: "d4@7 ~ c#4@7 ~ d4@15 ~", E: "d5@31 ~",
  F: "d4@15 ~ f#4@15 ~", G: "e4@31 ~", H: "f#4@7 ~ e4@7 ~ d4@7 ~ d4@7 ~", I: "d4@31 ~",
  J: "[f#4@2 ~ a4@2 a4@5 f#4@2 ~ e4@2 d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2 e4@10 ~ f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 f#4@2 ~ e4@2 d4@2 ~ d4@10 ~@15]/3",
  K: "~@2 f#4@2 a4@2 ~ a4@5 f#4@2 e4@2 ~ d4@5 e4@2 ~ f#4@2 a4@2 ~ f#4@2",
  L: "e4@10 f#4@2 ~ a4@2 a4@5 d5@2 ~ e5@2 f#5@5 e5@2", M: "~ d5@2 e5@2 ~ b4@2 ~ d5@10 ~@13",
})).s("gm_string_ensemble_2").gain(0.28)

// other · string ensemble 2
const string_ensemble_2_3 = note("<A B A C D@6 E F@2 G D G H@3 ~@2 I J@2>".pickRestart({
  A: "d3@31 ~", B: "c#3@31 ~", C: "g3@7 ~ a2@7 ~ d3@15 ~", D: "d4@31 ~", E: "d4@7 ~ c#4@7 ~ b3@7 ~ a3@7 ~",
  F: "a3@15 ~ d4@15 ~", G: "a3@31 ~", H: "[d4@10 d4@10 d4@10 d4@10 ~ d4@10 f#3@10 g3@5 a3@5 d4@10 ~@15]/3",
  I: "~ d4@5 d4@5 d4@5", J: "[d4@10 d4@10 d4@5 a3@5 a3@10 ~ d4@10 ~@13]/2",
})).s("gm_string_ensemble_2").gain(0.19)

// other · string ensemble 2
const string_ensemble_2_4 = note("<A B A C D@4 A@2 E F@2 G A G H@3 ~@2 I J@2>".pickRestart({
  A: "d2@31 ~", B: "c#2@31 ~", C: "g1@7 ~ a1@7 ~ d2@15 ~", D: "g1@31 ~", E: "d2@7 ~ c#2@7 ~ b1@7 ~ a1@7 ~",
  F: "a1@15 ~ d2@15 ~", G: "a1@31 ~", H: "[d2@10 d2@10 d2@10 d2@10 ~ d2@10 f#2@10 g1@5 a1@5 d2@10 ~@15]/3",
  I: "~ d2@5 d2@5 d2@5", J: "[d2@10 d2@10 d2@5 a1@5 a1@10 ~ d2@10 ~@13]/2",
})).s("gm_string_ensemble_2").gain(0.19)

stack(
  flute, clarinet, bassoon, french_horn, trumpet, trombone, bass, timpani, string_ensemble_2, string_ensemble_2_2,
  string_ensemble_2_3, string_ensemble_2_4
)

More by Dvorak