Strudelify
KeyB♭ majorTempo155 bpm
0:00/0:00
// Lazy Day — Spanky & Our Gang
// 155 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(155/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.

// bass · electric bass pick
const bass = note(`<
  ~@6 A B C D E F A B C D G H I@4 J@2 K L M N O P M N O Q R S T U D@2 V@2 D@2 W X A B C D E F A B C D G H I@4 J@2 K L M
  N O P M N O Q R S T U D@2 V@2 D@2 W X A B C D G H I@4 J@2 K L M N O P Y Z AA AB Y Z AA AB Y Z AA AB ~
>`.pickRestart({
  A: "bb1 gb1", B: "db2 ab1", C: "b1 gb2", D: "f2!2", E: "gb2 eb2", F: "c2@4 f2@2 f1 ~", G: "bb1@6 ~ f2 bb1@6 ~ f2",
  H: "bb1@6 ~ f2 bb1@4 bb1@3 bb1", I: "bb1@4 bb1@3 bb1 bb1@4 bb1@3 bb1", J: "db2@4 db2@3 db2 db2@4 db2@3 db2",
  K: "ab1@4 ab1@3 ab1 ab1@4 ab1@3 ab1", L: "f1@4 f1@3 f1 g1@4 a1@4", M: "bb1!2", N: "f2@6 ~ f2 f1@4 f1@4", O: "bb1 db2",
  P: "eb2@6 ~ eb2 f2@4 f1@4", Q: "eb2@6 ~ eb2 f2@4 bb1@4", R: "eb2!2", S: "ab1!2", T: "bb1 g1",
  U: "c2@6 ~ c2 d2@3 ~ e2@3 ~", V: "db2!2", W: "db2 gb2", X: "c2@2 f2 f1", Y: "b1!2", Z: "gb2@6 ~ gb2 gb1@4 gb1@4",
  AA: "b1 d2", AB: "e2@6 ~ e2 gb2@4 gb1@4",
})).s("gm_electric_bass_pick").gain(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@12 A B C D E F G H I J K L M N O P Q R O P Q R S T U V W@2 X@2 Y@2 Z AA ~@6 A B C D E F G H I J K L M N O P Q R O P
  Q R S T U V AB@2 AC@2 Y@2 Z AA ~@6 G H I J K L M N O P Q R AD AE AF AG AD AE AF AH ~@5
>`.pickRestart({
  A: "[d4,f4] [bb4,db5]", B: "[db5,f5] [eb5,ab5]", C: "[gb5,b5] [gb5,bb5]", D: "[db5,bb5]@8 bb5@3 ~ a5@3 ~, ~ c5",
  E: "bb5 ~ bb5 ~ a5 ~ a5 ~", F: "g5 ~ g5 ~ a5 ~ a5 ~", G: "[eb4,bb5]", H: "[d4,a5]@3 f5", I: "[eb4,g5]", J: "[d4,a5]",
  K: "[db4,ab5]", L: "[db4,gb5]", M: "db5 c5, ab4", N: "[f4,a4]", O: "bb5 a5, f4", P: "g5 a5, f5",
  Q: "[f4,bb5] [ab4,ab5]", R: "[eb4,g5] [f4,f5]", S: "g5", T: "gb5", U: "f5 g5", V: "bb5", W: "[bb5 f5, f6]/2",
  X: "[ab5,db6]/2", Y: "f6/2", Z: "c6@3 ~ ab5@3 ~ bb5@6 ~ f5", AA: "eb5@3 g5@2 bb5@3 a5@6 ~@2", AB: "[f5,f6]/2",
  AC: "[db5,db6]/2", AD: "b5 bb5, gb4", AE: "ab5 bb5, gb5", AF: "[gb4,b5] [a4,a5]", AG: "[e4,ab5] [gb4,gb5]",
  AH: "[e4,ab5] ~", // E
})).s("gm_string_ensemble_1").gain(0.48).pan(0)

// chords · string ensemble 1 · soft notes · Gb B5 A E Gb
const string_ensemble_1_soft = note(`<
  ~@111
  [~ [gb4,gb5]]
  [b5 bb5, gb4]
  [ab5 bb5, gb5]
  [[gb4,b5] [a4,a5]]
  [[e4,ab5] [gb4,gb5]]
  ~
>`).s("gm_string_ensemble_1").gain(0.18).pan(0)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@6 A B C D E D ~@34 A B C D E D ~@65>".pickRestart({
  A: "~ [d4,f4,bb4] ~ [bb3,db4,gb4]", B: "~ [f4,ab4,db5] ~ [c4,eb4,ab4]", C: "~ [eb4,gb4,b4] ~ [bb3,db4,gb4]",
  D: "~ [bb3,db4,f4] ~ [a3,c4,f4]", E: "~ [bb3,db4,gb4] ~ [bb3,eb4,gb4]",
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(1)

// other · tenor sax
const tenor_sax = note(`<
  ~@6 A B C D E ~ A B C F G H I@2 J@2 K L@2 M N O P Q N O P R S T U ~ N O V W N X Y ~ A B C D E ~ A B C F G H I@2 J@2 K
  L@2 M N O P Q N O P R S T U ~ N O V W N X Y ~@10 Z K AA@2 M N O P Q AB AC AD AE AB AC AD AE AB AC AD AE ~
>`.pickRestart({
  A: "f3@3 ~ bb3@3 ~", B: "f4@3 ~ eb4@3 ~", C: "eb4@3 ~ eb4@3 ~ db4@3 ~ db4@3 ~", D: "db4@3 ~ db4@4 c4@3 bb3 c4@4",
  E: "bb3@3 ~", F: "db4@3 ~ db4@3 ~ c4@2 ~ bb3 c4@4", G: "d4", H: "~@12 d4@3 d4",
  I: "[eb4@6 ~ d4 c4@3 g4@3 ~ f4@4 d4@6 ~@3 d4@4]/2", J: "[eb4@6 ~ d4 c4@4 a4@3 f4@8 ~@5 f4@4]/2",
  K: "f4@6 ~ eb4 db4@4 ab4@4", L: "[gb4@2 eb4@2 gb4@2 bb4@3 ~@3 ab4 f4 ab4@2]/2", M: "a4@3 ~", N: "bb4@3 ~ bb4@3 ~",
  O: "f4@3 ~", P: "~@4 bb4@3 ~ ab4@3 ~ ab4@3 ~", Q: "g4@2 ~ f4 eb4@3 f4@6 ~@3", R: "g4@2 ~ f4 eb4@3 f4@4 ~ f4@3 eb4",
  S: "d4@3 c4@3 ~ c4@8 ~", T: "d4@8 ~@4 f4@3 eb4", U: "d4@3 bb3@3 ~ bb3@8 ~", V: "db5@3 ~ db5@3 ~", W: "ab4@3 ~",
  X: "ab4@6 ~ g4 f4@3 eb4@5", Y: "f4", Z: "~@3 f4", AA: "[gb4@4 eb4@4 gb4@4 bb4@6 ~@6 ab4@2 ~ f4 ab4@4]/2",
  AB: "b4@3 ~ b4@3 ~", AC: "gb4@3 ~", AD: "~@4 b4@3 ~ a4@3 ~ a4@3 ~", AE: "ab4@2 ~ gb4 e4@3 gb4@6 ~@3",
})).s("gm_tenor_sax").gain(0.78)

// other · flute
const flute = note(`<
  A B C D E ~@17 F G H F I J K L I J K L ~@28 F G H F I J K L I J K L ~@22 F G H F I J K L M N O P M N O Q ~@5
>`.pickRestart({
  A: "f5 ~@7 bb5 ~@7", B: "f5 ~@7 eb5 ~@7", C: "eb6 ~@3 eb6 ~@3 db6 ~@3 db6 ~@3",
  D: "db6 ~@3 db6 ~@3 c6 ~@2 bb5 c6 ~@3", E: "bb5", F: "f5 ~@3 f5 ~@3 f5 ~@3 f5 ~@3",
  G: "gb5 ~@3 gb5 ~@3 gb5 ~@3 gb5 ~@3", H: "ab5 ~@3 ab5 ~@3 ab5 ~@3 ab5 ~@3",
  I: "bb5 ~@2 d6 bb5 ~@2 d6 a5 ~@2 d6 a5 ~@2 d6", J: "g5 ~@2 bb5 g5 ~@2 bb5 a5 ~@2 c6 a5 ~@2 c6",
  K: "bb5 ~@2 d6 bb5 ~@2 d6 f6 ~@2 db6 ab5 ~@2 f5", L: "eb6 ~@2 bb5 g5 ~@2 bb5 a5 ~@7",
  M: "b5 ~@2 eb6 b5 ~@2 eb6 bb5 ~@2 eb6 bb5 ~@2 eb6", N: "ab5 ~@2 b5 ab5 ~@2 b5 bb5 ~@2 db6 bb5 ~@2 db6",
  O: "b5 ~@2 eb6 b5 ~@2 eb6 gb6 ~@2 d6 a5 ~@2 gb5", P: "e6 ~@2 b5 ab5 ~@2 b5 bb5 ~@7", Q: "e6 ~@2 b5 ab5 ~@2 b5 ~@8",
})).s("gm_flute").gain(0.36).pan(0)

// other · flute · soft notes
const flute_soft = note(`<
  ~@111
  [~@8 bb5 ~@7]
  [b5 ~@2 eb6 b5 ~@2 eb6 bb5 ~@2 eb6 bb5 ~@2 eb6]
  [ab5 ~@2 b5 ab5 ~@2 b5 bb5 ~@2 db6 bb5 ~@2 db6]
  [b5 ~@2 eb6 b5 ~@2 eb6 gb6 ~@2 d6 a5 ~@2 gb5]
  [e6 ~@2 b5 ab5 ~@2 b5 bb5 ~@7]
  ~
>`).s("gm_flute").gain(0.13).pan(0)

// other · pizzicato strings
const pizzicato_strings = note("<A B C D E ~@37 F@2 ~@38 F@2 ~@2 A B C D E ~@26>".pickRestart({
  A: "[d4,f4] [f4,bb4]", B: "[db4,f4] [c4,eb4]", C: "eb4!2 db4!2", D: "db4@4 db4@4 c4@3 bb3 c4 ~@3", E: "bb3",
  F: "f5!4",
})).s("gm_pizzicato_strings").gain(0.32).pan(0)

// chords · drawbar organ
const drawbar_organ = note(`<
  A B C D E D A B C D F D A B C D G H ~@8 I J I J I J I J K L M N ~@8 A B C O F D A B C D G H ~@8 I J I J I J I J K L M
  N ~@8 A B C D G H ~@8 I J I J P Q P Q P Q P Q P Q P Q ~
>`.pickRestart({
  A: "[d5,f5,bb5] ~ [d5,f5,bb5] ~ [bb4,db5,gb5] ~ [bb4,db5,gb5] ~", // Bb Gb
  B: "[f5,ab5,db6] ~ [f5,ab5,db6] ~ [c5,eb5,ab5] ~ [c5,eb5,ab5] ~", // Db Ab
  C: "[eb5,gb5,b5] ~ [eb5,gb5,b5] ~ [bb4,db5,gb5] ~ [bb4,db5,gb5] ~", // B Gb
  D: "[bb4,db5,f5] ~ [bb4,db5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~", // Bbm F
  E: "[bb4,db5,gb5] ~ [bb4,db5,gb5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~", // Gb Bbm
  F: "[bb4,db5,gb5] ~ [bb4,db5,gb5] ~ [bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~", // Gb Ebm
  G: "[d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,a5] ~ [d5,f5,a5] ~", H: "[d5,f5,g5] ~ [d5,f5,g5] ~ [d5,f5,a5] ~ [d5,f5,a5] ~",
  I: "d6 f6", J: "bb6@5 ab6 ~ [gb6,g6] f6@8", K: "d7@2 c7 g6", L: "gb6", M: "d7 c7 bb6 a6", N: "g6@7 f6 e6@4 c6@4",
  O: "[bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,c5,f5] ~ [a4,c5,f5] ~", P: "eb6 gb6", Q: "b6@5 a6 ~ [g6,ab6] gb6@8",
})).s("gm_drawbar_organ").gain(0.25).pan(1)

// other · orchestral harp
const orchestral_harp = note(`<
  ~@11 A B ~@5 C D C D ~@3 A E F G H I F G H ~@3 A J ~@7 K L M N O P B ~@5 C D C D ~@3 A E F G H I F G H ~@3 A J ~@7 K L
  M N Q R S D C D ~@3 A E F G H T U V W T U V W T U V W ~
>`.pickRestart({
  A: "~@9 eb3 [f3,g3,ab3] [bb3,c4,db4] [eb4,f4,g4] [ab4,bb4,c5] [db5,eb5,f5] [g5,ab5,bb5]", B: "[c6,bb6] ~@15",
  C: "[eb4,g4] [bb4,d5,eb5] g5 ~@13", D: "[bb3,d4] [f4,a4,bb4] d5 ~@13", E: "[bb3,d4,f4] ~ [d4,f4] ~, c6 ~@15",
  F: "c4 ~ [c4,a4] ~", G: "[d4,bb4] ~ [f4,db5] ~", H: "[eb4,g4] ~ [c4,f4] ~", I: "[bb3,d4,f4] ~ [d4,f4] ~",
  J: "c6 ~@15", K: "f5 bb4", L: "db4 c4", M: "[b3,b4] [bb3,bb4]", N: "[bb3,bb4]@2 [bb3,bb4] [a3,a4]", O: "gb4 ~ eb4 ~",
  P: "c4@4 ~@5 eb3 [f3,g3,ab3] [bb3,c4,db4] [eb4,f4,g4] [ab4,bb4,c5] [db5,eb5,f5] [g5,ab5,bb5]", Q: "bb4 ~ a4 ~",
  R: "g4@4 ~@5 eb3 [f3,g3,ab3] [bb3,c4,db4] [eb4,f4,g4] [ab4,bb4,c5] [db5,eb5,f5] [g5,ab5,bb5]", // Fm Bbm Eb Ab Db Gm
  S: "[eb4,g4,c6] [bb4,d5,eb5] g5 ~@13", T: "[b3,eb4,gb4] ~ [eb4,gb4] ~", U: "db4 ~ [db4,bb4] ~",
  V: "[eb4,b4] ~ [gb4,d5] ~", W: "[e4,ab4] ~ [db4,gb4] ~",
})).s("gm_orchestral_harp").gain(0.35).pan(0)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@12 A B C D E F G H G H ~@2 I J K L M N K N M N O P Q R S L T U S V W X ~@6 A B C D E F G H G H ~@2 I J K L M N K N M
  N O P Q R S L T U S V W X A B C D E F G H G H ~@2 I J K L M N Y Z AA AB Y Z AA AC ~@5
>`.pickRestart({
  A: "~@4 [d4,f4,bb4] ~@7 [bb3,db4,gb4] ~@3", B: "~@4 [f4,ab4,db5] ~@7 [c4,eb4,ab4] ~@3",
  C: "~@4 [eb4,gb4,b4] ~@7 [bb3,db4,gb4] ~@3", D: "~@4 [bb3,db4,f4] ~@7 [a3,c4,f4] ~@3", E: "[bb3,bb4] [a3,a4]",
  F: "[g3,g4] [a3,a4]", G: "[bb3,eb4,g4]", H: "~@3 f4, [bb3,d4], f4@3 ~, a4!2, ~ c5@2 ~",
  I: "[eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3", J: "[f4,a4] ~@3 [f4,a4] ~@3 [f4,a4] ~@3 [f4,a4] ~@3",
  K: "~@4 [d4,f4,bb4] ~@7 [d4,f4,a4] ~@3", L: "~@4 [bb3,f4,g4] ~@7 [c4,f4,a4] ~@3",
  M: "~@4 [d4,f4,bb4] ~@7 [f4,ab4,db5] ~@3", N: "~@4 [eb4,g4,bb4] ~@7 [c4,f4,a4] ~@3",
  O: "~@4 [d4,g4,bb4] ~@7 [d4,g4,bb4] ~@3", P: "~@4 [ab3,c4,gb4] ~@7 [ab3,c4,gb4] ~@3",
  Q: "~@4 [d4,f4,bb4] ~@7 [g3,bb3,d4] ~@3", R: "~@4 [e4,g4,c5] ~@7 [e4,g4,c5] ~@3",
  S: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3", T: "~@4 [f4,ab4,db5] ~@7 [f4,ab4,db5] ~@3",
  U: "~@4 [db4,ab4,bb4] ~@7 [eb4,ab4,c5] ~@3", V: "~@4 [ab3,f4] ~@7 [ab3,f4] ~@3",
  W: "~@4 [db4,f4,ab4] ~@7 [bb3,db4,f4] ~@3", X: "~@4 [eb4,g4] ~@7 [c4,f4,a4] ~@3",
  Y: "~@4 [eb4,gb4,b4] ~@7 [eb4,gb4,bb4] ~@3", Z: "~@4 [b3,gb4,ab4] ~@7 [db4,gb4,bb4] ~@3",
  AA: "~@4 [eb4,gb4,b4] ~@7 [gb4,a4,d5] ~@3", AB: "~@4 [e4,ab4,b4] ~@7 [db4,gb4,bb4] ~@3", AC: "~@4 [e4,ab4,b4] ~@11",
})).s("gm_electric_guitar_clean").gain(0.25).pan(1)

// chords · electric guitar clean · soft notes · Gb B Ebm Abm7 Gb B D E …
const electric_guitar_clean_2 = note(`<
  ~@111
  [~@12 [db4,gb4,bb4] ~@3]
  [~@4 [eb4,gb4,b4] ~@7 [eb4,gb4,bb4] ~@3]
  [~@4 [b3,gb4,ab4] ~@7 [db4,gb4,bb4] ~@3]
  [~@4 [eb4,gb4,b4] ~@7 [gb4,a4,d5] ~@3]
  [~@4 [e4,ab4,b4] ~@7 [db4,gb4,bb4] ~@3]
  ~
>`).s("gm_electric_guitar_clean").gain(0.1).pan(1)

// chords · cello · Am
const cello = note(`<
  ~@25
  [[a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3]
  ~@39
  [[a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3]
  ~@33
  [[a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3]
  ~@17
>`).s("gm_cello").gain(0.32).pan(0)

// chords · trombone · Db Bbm Gm Am Db Bbm Gm Am
const trombone = note(`<
  ~@44
  [[db4,f4]@3 ~ [bb3,db4]@3 ~]
  [[g3,bb3]@3 ~ [a3,c4]@3 ~]
  ~@38
  [[db4,f4]@3 ~ [bb3,db4]@3 ~]
  [[g3,bb3]@3 ~ [a3,c4]@3 ~]
  ~@31
>`).s("gm_trombone").gain(0.4).pan(0)

// chords · piano
const piano = note(`<
  ~@26 A B C D A B C D E F E G H I@2 J K L M N ~@20 A B C D A B C D E F E G H I@2 J K L M N ~@14 A B C D O P Q R O P Q S
  ~@5
>`.pickRestart({
  A: "[bb4,d5]!2", B: "[f4,c5]!2", C: "[bb4,d5]@4 [bb4,d5]@3 [ab4,db5]@4 ~ [ab4,db5]@4", D: "[g4,eb5] [a4,c5]",
  E: "[bb4,d5]@3 [bb4,d5]@4 [bb4,d5]@3 ~@2 [bb4,d5]@4", F: "[gb4,d5]@3 [gb4,d5]@4 [gb4,d5]@4 [gb4,d5] [gb4,c5]@4",
  G: "[e4,d5]@3 [e4,d5]@4 [e4,d5]@4 [e4,d5] [e4,d5]@4", H: "~@4 [bb4,d5]@4 [bb4,d5]@3 [bb4,d5]@4 ~",
  I: "[~@4 [f4,c5]@8 [f4,c5]@8 [db5,f5]@4 [db5,f5]@3 [db5,f5]@4 ~]/2", // F5 Db
  J: "[b4,eb5]@5 ~@2 [ab4,db5]@3 ~ [ab4,db5] [ab4,db5]@4", K: "[bb4,d5]!4", L: "[ab4,c5]", M: "[ab4,c5]!2 [bb4,db5]!2",
  N: "[g4,bb4]!2 [a4,c5]!2", O: "[b4,eb5]!2", P: "[gb4,db5]!2", Q: "[b4,eb5]@4 [b4,eb5]@3 [a4,d5]@4 ~ [a4,d5]@4",
  R: "[ab4,e5] [bb4,db5]", S: "[ab4,e5] ~",
})).s("gm_piano").gain(0.29).pan(1)

// chords · piano · soft notes · Bbm B Gb5 B D5 Dbm Bbm
const piano_soft = note(`<
  ~@111
  [~ [bb4,db5]]
// … 49 more lines