Strudelify

Little Children

Kramer

KeyF majorTempo110 bpm
0:00/0:00
// Little Children — Kramer
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 finger · "Little Ch"
const bass = note(`<
  A B C D E F C G H B C D E F C G I J K L M N O P Q B C D E F C G I J K L M N R S T U V W X Y Z AA AB B C D E F C G I J
  K L M N R AC AD AE AF B C AG AH@2
>`.pickRestart({
  A: "~ c2 d2 e2", B: "f2@3 ~@2 f2 c2@4 ~ c2", C: "f2@4 ~ f2 c2@3 f2@2 ~", D: "eb2@3 ~@2 eb2 bb1@3 eb2 ~@2",
  E: "c2@4 ~ c2 g1@3 c2@2 ~", F: "f2@3 ~@2 f2 c2@4 ~@2", G: "eb2@3 ~@2 eb2 bb1@3 eb2@3", H: "c2 ~@2 c2@3 d2@3 e2@2 ~",
  I: "f2@4 ~ f1 f1@2 g1 a1@2 ~", J: "bb1@6 ~@4 bb1 ~ f2@6 ~@4 f2 ~", K: "bb1@8 ~@2 bb1 ~ eb2@6 bb1@4 ~@2",
  L: "c2@4 ~ c2 g2@3 c2@2 bb1", M: "ab1 ~@5 ab1@2 ~@2 ab1@2 bb1@6 ab1@4 ~@2", N: "g1@4 ~ g1 d2@3 ~@2 d2",
  O: "g1@4 ~ g1 d2 ~ g1 a1 ~ b1", P: "c2@4 ~ c2 g1@4 ~ g1", Q: "c2 ~@2 c2@3 d2@3 e2 ~@2", R: "c3@4 ~ c2 c2@2 d2 e2@2 ~",
  S: "f2@6 ~@4 f2@2 c2@8 ~@2 c2 ~", T: "f2 ~@2 f2@3 gb2@3 g2@2 ~", U: "ab2@3 ~@2 ab2 eb2@3 ab2@2 ~",
  V: "bb2@4 ~ bb2 f2 ~ f2 bb2 ~ bb2", W: "ab2@6 ab1 ~ ab1@2 ab2@2 eb2@2 ~@2 eb2@2 ab2@4 ~@2",
  X: "bb2@3 ~@2 f2 bb2 ~ f2 bb2 ~ bb1", Y: "bb1@4 ~ bb1 f2 ~ f2 bb1@3", Z: "c2@3 ~@2 g2 c2 ~ c2 g2@2 c2",
  AA: "bb1@4 ~ bb1!2 ~ bb1@2 ~ bb1", AB: "c2@8 ~@6 c3 ~ c2 ~ c3 ~ c2 ~@3", AC: "f2@4 ~ f2 bb1@4 ~ bb1",
  AD: "c2@7 ~ c2 d2 ~ e2", AE: "f2@4 ~ f2 bb1@6", AF: "c2@18 c3 ~ c3 ~@3", AG: "eb2 c2", AH: "f1/2",
})).s("gm_electric_bass_finger").gain(0.23)

// chords · epiano1
const epiano1 = note(`<
  A B C D E F G H I B C D E F G H F J K L M N@2 O P B C D E F G H F Q K L R N S T U V W X Y Z AA AB AC B C D E F G AD@2
  Q K AE R N S AF AG AH AI@2 C AJ AK ~
>`.pickRestart({
  A: "~ [g3,c4,e4] [a3,c4,f4] [c4,e4,g4]", B: "~@3 [c4,f4,a4]@2 [c4,a4]@4 [c4,f4,a4]@3",
  C: "~@3 [c4,f4,a4]@2 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]", D: "~@3 [bb3,eb4,g4]@2 [bb3,eb4,g4]@4 [bb3,eb4,g4]@3",
  E: "~@3 [g3,c4,e4]@2 [g3,c4,e4]@4 [g3,c4,e4]@3", F: "~@3 [c4,f4,a4]@2 [c4,f4,a4]@4 [c4,f4,a4]@3",
  G: "~ [c4,f4,a4] [d4,f4,bb4] [c4,f4,a4]", H: "~@3 [bb3,eb4,g4]@2 [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]",
  I: "[g3,c4,e4] ~@2 [g3,c4,e4]@3 [a3,c4,f4]@3 [c4,e4,g4]@3", J: "~ [d4,f4,bb4]@2 [d4,f4,bb4]",
  K: "~ [d4,f4,bb4] [eb4,g4,bb4] [d4,f4,bb4]", L: "~ [g3,c4,e4]@2 [g3,c4,e4]",
  M: "[ab3,c4,eb4] ~@5 [ab3,c4,eb4]@6 [bb3,d4,f4]@6 [ab3,c4,eb4]@6", N: "~ [g3,b3,d4] ~ [g3,b3,d4]",
  O: "~@6 [g3,c4,e4]@4 [g3,c4,e4]@8 [g3,c4,e4]@4 [g3,c4,e4] ~", P: "~ [g3,c4,e4] [c4,f4] [c4,g4]",
  Q: "~ [d4,f4,bb4] ~ [d4,f4,bb4]", R: "[ab3,c4,eb4]!2 [bb3,d4,f4] [ab3,c4,eb4]",
  S: "~@6 [c4,e4,g4]@4 [c4,e4,g4] ~@7 [bb3,d4,f4]@4 [bb3,d4,f4] ~", // C Bb
  T: "[a3,c4,f4]@3 [a3,c4,f4]@6 [a3,c4,f4]@2 f4, ~@22 c4 ~", U: "~ [f3,c4,a4] [gb3,db4,bb4] [g3,d4,b4]",
  V: "[ab3,eb4] ~@5 [c4,eb4,ab4]@4 [c4,eb4,ab4]@8 [c4,eb4,ab4]@2 ~@4, c5 ~@11", // Ab5 Ab
  W: "~@6 [d4,f4,bb4]@4 [d4,f4,bb4]@8 [d4,f4,bb4]@4 [d4,f4,bb4] ~", // Bb
  X: "~@6 [c4,eb4,ab4]@4 [c4,eb4,ab4]@8 [c4,eb4,ab4]@4 [c4,eb4,ab4] ~", // Ab
  Y: "~@3 [d4,f4,bb4]@2 [d4,f4,bb4]@4 [d4,f4,bb4] [f4,bb4,f5]@2", // Bb Bb5
  Z: "[f4,bb4,d5]@2 [f4,bb4,d5] [bb3,c4,f4]@2 [bb3,c4,f4]@4 [bb3,c4,f4]@3", // Bb Bbsus2
  AA: "[g4,c5,e5]@4 [g4,c5,e5]@2 [c4,d4,g4]@4 [c4,d4,g4]@8 [c4,d4,g4]@4 e4 ~", // C Csus2
  AB: "[bb4,d5,f5]@2 [bb4,d5,f5] [c4,f4,a4]@2 [c4,f4,a4]@5 [f4,a4,c5]@2", // Bb F
  AC: "[c4,c5,e5,g5]@3 [c4,e4,g4]@3 [c4,f4,a4]@3 [c4,g4,bb4] ~@2", // C F C7
  AD: "[~@3 [bb3,eb4,g4]@2 [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@3 ~ [c4,f4,a4]@2 [c4,f4,a4]@4 [c4,f4,a4]@3]/2", // Eb F
  AE: "~ [g3,c4,e4] ~ [g3,c4,e4]", AF: "[c4,f4,a4]@5 [c4,e4,g4] [bb3,d4,f4]@5 [bb3,d4,f4]", AG: "[c4,e4,g4] ~@23",
  AH: "[c4,f4,a4] [d4,f4,bb4]", AI: "[[c4,e4,g4]@30 [c4,f4,a4]@4 [c4,a4]@8 [c4,f4] ~@5, ~@21 a4 ~@2]/2",
  AJ: "[eb4,g4,bb4] [e4,g4,c5]", AK: "[c4,f4,a4]",
})).s("gm_epiano1").gain(0.18).pan(0.6)

// bass · harpsichord
const bass_2 = note("<A B ~@6 A C ~@15 B ~@14 D E ~@7 B ~ F G B ~ F B ~@6 H I J K B ~@4>".pickRestart({
  A: "~ [c1,c2] [d1,d2] [e1,e2]", B: "[f1,f2]@5 ~", C: "[f1,f2] ~@23", D: "~ [f1,f2] [gb1,gb2] [g1,g2]",
  E: "[ab1,ab2]@3 ~", F: "[eb1,eb2]@5 ~", G: "[c1,c2]@5 ~", H: "[f1,f2]@4 ~ [f1,f2] [bb1,bb2]@3 ~@2 [bb1,bb2]",
  I: "[c2,c3]@9 ~@2 [c2,c3]", J: "[f1,f2]@4 ~ [f1,f2] [bb1,bb2]@4 ~ [bb1,bb2]", K: "[c2,c3]@11 ~",
})).s("gm_harpsichord").gain(0.25).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note("<~@4 A B ~@6 A B ~@14 A B ~@22 A B ~@18>".pickRestart({
  A: "~@5 c4 d4 db4 c4 b3@2 bb3", B: "a3 ~@3",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B@2 C D B@2 C A B@2 C D B@2 C E F G H I J K L M B@2 C D B@2 C E F G H I J N O P Q R S T U V W X B@2 C D B@2 C E F G
  H I J N Y Z AA AB B@2 ~@3
>`.pickRestart({
  A: "~@6 [g3,c4,e4] ~@3 [g3,c4,e4] ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~ [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C Dm C
  B: "~@6 [c4,f4,a4]@6 ~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~", // F
  C: "~@6 [eb4,g4,bb4]@6 ~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~", // Eb
  D: "~@6 [e4,g4,c5]@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", // C
  E: "~@6 [f4,a4,c5]@6 ~@2 [f4,a4,c5]@2 f3 ~ [f4,a4,c5]@2 ~@2 [f4,a4,c5] ~", // F
  F: "~@6 [bb3,d4,f4]@6 ~@2 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  G: "~@6 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~ [bb3,eb4,g4]@4 ~@2 [bb3,d4,f4]@4 ~@2", // Bb Eb Bb
  H: "~@6 [c4,e4,g4]@2 ~@4 c4@2 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@2 [c4,e4,g4]@2", // C
  I: "~@6 [ab3,c4,db4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~", // Ab
  J: "~@6 [d4,g4,b4]@6 ~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // G
  K: "~@6 [d4,g4,b4]@6 ~@2 [d4,g4,b4] ~@3 [d4,g4,b4]@2 ~@2 [d4,g4,b4] ~", // G
  L: "~@6 [e4,g4,c5]@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@2 ~@2 [e4,g4,c5] ~", // C
  M: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~ [d4,bb4]@4 ~@2 [e4,c5]@2 ~@4, ~@6 f4@3 g4@2 ~", // C Gm C
  N: "~@6 [e4,g4,c5]@5 ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", // C
  O: "~@6 [f4,a4,c5]@5 ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] ~", // F
  P: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@5 [gb4,a4,db5] ~@5 [g4,b4] ~@5", // F Gbm G
  Q: "~@6 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@7 [g4,bb4,eb5] ~@5", // Eb
  R: "~@6 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@7 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~", // Bb
  S: "~@6 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@7 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~", // Eb
  T: "~@6 [f4,bb4,d5] ~@7 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~@3 [bb4,d5,f5] ~", // Bb
  U: "~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,a4,c5] ~@3 [f4,a4,c5] ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~", // Bb F Bb
  V: "~@6 [g4,c5,e5] ~@3 [g4,c5,e5] ~@7 [g4,c5,e5] ~@3 [g4,c5,e5] ~", // C
  W: "~@6 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@7 [f4,bb4,d5] ~@5", // Bb
  X: "~@6 [e4,g4,c5] ~ [e4,g4,c5] ~@3 [e4,g4,c5] ~ [e4,g4,c5] ~@3 [e4,g4,c5] ~ [e4,g4,c5] ~@3", // C
  Y: "~ [a4,c5]@2 [d4,g4,c5] ~ [c4,f4,c5] ~ [f4,a4] ~ [d4,g4,c5] ~ [c4,f4,c5], ~ f4 ~@5 c5@2 ~@3", // Am Csus2 F5 F Csus2 F5
  Z: "~ [g4,bb4] ~ [g4,bb4] ~ [bb4,c5]@2 c5@2 [f4,a4,c5] ~ [e4,g4,c5], ~ c5@2 c5@2 ~@2 bb4 ~@4, ~@2 a4 ~@7 g4@2 ~@2 g4 ~@9", // Gm Bbsus2 F C
  AA: "~ [f4,a4]@2 [g4,c5] ~ [c4,f4,c5] ~ [f4,a4]@2 [g4,c5] ~ [c4,f4,c5], ~ c5 ~ d4@2 ~@2 c5 ~ d4@2 ~", // F C5 F5 F C5 F5
  AB: "[bb3,d4,f4,bb4,c5], c4@11 ~", // Bb
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.1)

// chords · synth brass 2
const synth_brass_2 = note("<~ A@2 B@2 C@2 D E ~@35 F G ~@21 C@2 H I@2>".pickRestart({
  A: "[~@3 a4 ~ a4 f4@2 a4@6 ~ a4 f4 a4 bb4 ~ bb4 a4 ~ a4]/2", B: "[g4@5 ~@3]/2",
  C: "[~@3 [f4,a4,c5] ~ [f4,a4,c5] [c4,f4,a4]@2 [a4,c5]@5 ~@2 [f4,a4,c5] [c4,f4,a4] [f4,a4,c5] [g4,bb4,d5] [c4,f4] [g4,bb4,d5] [f4,a4] c4 [f4,a4,c5], ~@8 f4@6 ~@7 c5@2 ~]/2", // F Am F Gm F5 Gm F
  D: "[eb4,g4,bb4]", E: "e4 ~@11", F: "~@18 [bb4,d5,bb5] ~ [bb4,d5,bb5] ~@3", G: "[bb3,bb4] ~ [bb3,bb4] ~@21",
  H: "[eb4,g4,bb4]@2 ~ [e4,g4,c5]@2 ~", I: "[f4,a4,c5]/2",
})).s("gm_synth_brass_2").gain(0.22).pan(0.8)

// other · glockenspiel
const glockenspiel = note("<~ A@2 B@2 C D E ~@36 F ~@22 G@2 H@2 ~>".pickRestart({
  A: "[~@6 a5 ~@3 a5 ~ f5@3 ~ a5@11 ~@3 a5 ~ f5 ~ a5 ~ bb5 ~@3 bb5 ~ a5 ~@3 a5 ~]/2", B: "[g5@29 ~@19]/2",
  C: "~@6 a5 ~@3 a5 ~ f5@3 ~ a5@8", D: "~@6 a5 ~ f5 ~ a5 ~ bb5 ~ f5 ~ bb5 ~ a5 ~@3 a5 ~", E: "g5@23 ~",
  F: "~@18 bb5 ~ bb5@2 ~@2", G: "[~@3 a5 ~ a5 f5@2 a5@5 ~@2 a5 f5 a5 bb5 f5 bb5 a5 c5 a5]/2",
  H: "[g5@2 ~ c6@2 ~ [a5,c6]@6, ~@23 f5@25]/2", // Am
})).s("gm_glockenspiel").gain(0.22).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!22 [x ~@5 x ~@4 x] [x!2]!44 [x ~@5 x!2 ~@4] [x!2] x ~>").gain(0.16)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@3 A ~@2 B ~@17 C ~@15 D ~@5 E ~ F ~@15 G ~@7>".pickRestart({
  A: "~@7 x ~@4", B: "~ x ~@10", C: "~ x ~ x ~@8", D: "~@11 x", E: "~@5 x", F: "~@4 x ~@2 x ~@2 x ~", G: "~@16 x!2 ~@6",
})).gain(0.1)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 D B@15 E B@22 ~ F ~@2 B G H ~@2>".pickRestart({
  A: "~@5 x!3 ~@4 x!2 ~@4 x!2 ~@4", B: "~ x ~ x", C: "x!4", D: "x ~@2 x!2 ~@4 x!2 ~", E: "x!2 ~@4 x ~@11 x ~@5",
  F: "~@3 x", G: "~@3 x ~@5 x!2 ~", H: "~ x ~@2",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<A ~@7 A ~@15 B ~@31 C ~@5 D ~@3 E ~@2 F ~@2>".pickRestart({
  A: "~@7 x ~ x ~ x", B: "~@11 x", C: "~@5 x!2 ~ x!2 ~@2", D: "~@7 x!3 ~ x", E: "~@10 x!2", F: "~@3 x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C D E B F B C ~@3
>`.pickRestart({
  A: "~ x ~@2", B: "x!2 ~ x ~ x ~ x ~ x!3", C: "x!2 ~ x ~ x ~ x ~ x!2 ~",
  D: "x ~ x ~@2 x!2 ~ x ~ x ~@3 x ~@3 x ~ x ~ x ~", E: "x ~ x ~@3 x ~@3 x ~@3 x ~@3 x ~ x!3 ~",
  F: "x ~ x!5 ~@3 x ~@3 x ~@3 x ~ x ~@3",
})).gain(0.19)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A@47 B A@14 C A@2 D A@2 ~@3>".pickRestart({
  A: "~ x!4 ~", B: "~@4 x ~@3 x!2 ~@2 x ~@2 x!2 ~@7", C: "~ x ~ x!2 ~", D: "~@2 x!3 ~",
})).gain(0.03)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@7 B ~@47 C ~@5 D ~@3 E ~@2 F ~@2>".pickRestart({
  A: "~@3 x!2 ~@7", B: "~ x ~ x ~ x ~@6", C: "~@5 x!2 ~ x!2 ~@2", D: "~ x ~ x ~ x ~ x!3 ~ x", E: "~@16 x!3 ~@5",
  F: "~@3 x",
})).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ A ~ C ~ A ~ A ~ A ~ A ~ B ~ B ~ A ~ D ~ A E A ~ A ~ F ~ A ~ A ~ A ~ A ~ B
  ~ B ~ A ~ D ~ G ~ A ~@3
>`.pickRestart({
  A: "~@11 x", B: "~@6 x ~@2 x ~ x", C: "~ x ~ x ~@7 x", D: "~@9 x ~ x", E: "~ x ~", F: "~@4 x ~@2 x ~@2 x!2",
  G: "~@3 x ~@7 x",
})).gain(0.19)

// drums · high tom
const high_tom = s("ht").struct("<~@62 [~ x ~ x ~ x ~@6] ~@3 [~@14 x!3 ~@7] ~@5>").gain(0.16)

// drums · crash
const crash = s("cr").struct("<~ A ~@3 B ~@34 C A ~@4 D B ~@9 A ~@9 A ~ E A ~>".pickRestart({
  A: "x", B: "~ x ~@2", C: "~@11 x", D: "~@5 x", E: "x!2",
})).gain(0.16)

// drums · ride
const ride = s("rd").struct("<~@63 [x!2] x [x!2] ~@6>").gain(0.22)

stack(
  bass, epiano1, bass_2, string_ensemble_1, electric_guitar_clean, synth_brass_2, glockenspiel, kick, kick_soft, snare,
  low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, ride
)