Strudelify
Children cover art

1996 · Children

Children

Robert Miles

KeyF minorTempo137 bpm
0:00/0:00
// Children — Robert Miles
// 137 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · piano · "GrandPiano"
const piano = note(`<
  A@8 B@3 C D E@2 ~@5 F G@2 H A@8 B@3 C D E@2 I J@8 B@3 K D E@2 ~@19 L M A@8 B@3 C D E@2 I J@8 B@3 C D E@2 ~@30
>`.pickRestart({
  A: "[f5@21 ~@3 ab5@3 ~ g5 ~ eb5@22 ~@4 ab5@3 ~ g5 ~ c5@23 ~@3 ab5@3 ~ g5 ~ ab4@28 ~@2 f4 ab4 c5 eb5]/8",
  B: "[f5@20 ~@4 ab5@3 ~ g5 ~ eb5@16 ~@2]/3", C: "~@14 db5 c5", D: "db5@2 c5 ab4@5",
  E: "[~@4 g4@3 ~ ab4@4 c5@2 f4@15 ~@3]/2", F: "~@8 ab4@2 ~@2 ab4 ~ f4 ab4",
  G: "[bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2 ab4 ~ c5 ~@3 c5@2 ~@2 c5@2 ~@2 c5@2 bb4 c5, ~@15 bb4@2 ~@15]/2",
  H: "eb5@2 ~@2 eb5@2 ~@2 eb5@2 ~@2 ab4 bb4 c5 eb5", I: "~@12 f4 ab4 c5 eb5",
  J: "[f5@24 ab5@3 ~ g5 ~ eb5@22 ~@4 ab5@3 ~ g5 ~ c5@23 ~@3 ab5@3 ~ g5 ~ ab4@28 ~@2 f4 ab4 c5 eb5]/8", K: "~@15 c5",
  L: "f4@5 ~ g4 ab4 bb4@5 ~ ab4 bb4", M: "c5@2 bb4 c5 db5 ~ c5 db5 eb5@2 f4 ab4 bb4 c5 db5 eb5",
})).s("gm_piano").gain(0.8)

// other · piano · "GrandPiano" · soft notes
const piano_soft = note("<~@16 A B C D E ~@30 F ~@85>".pickRestart({
  A: "ab4@2 ~@2 ab4@2 ~@2 ab4@2 ~@2 ab4@2 f4 ab4", B: "bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4 ~ ab4 bb4",
  C: "c5 ~@3 c5@2 ~@2 c5@2 ~@2 c5@2 ~@2", D: "bb4 ~ bb4 ~ bb4 ~ bb4 ~", E: "ab4 ~ ab4 ~@5", F: "~@14 db5 ~",
})).s("gm_piano").gain(0.32)

// other · piano · "GrandPiano"
const piano_2 = note("<A B C D E F G H A B C D ~@125>".pickRestart({
  A: "~@4 f5@3 ~ f5@2 ~@2 f5@2 ~@2", B: "f5 ~@7", C: "g5 eb5 g5 eb5 g5 eb5 g5 eb5", D: "g5 eb5 ~@6",
  E: "g5 c5 g5 c5 g5 c5 g5 c5", F: "g5 c5 ~@6", G: "g5 ab4 g5 ab4 g5 ab4 g5 ab4", H: "g5 ab4 ~@6",
})).s("gm_piano").gain(0.17)

// other · piano · "GrandPiano" · soft notes
const piano_soft_2 = note("<~ A ~ B ~ C ~ D ~ A ~ B ~@125>".pickRestart({
  A: "~@4 f5@3 ~@9", B: "~@2 g5 eb5 ~@4", C: "~@2 g5 c5 ~@4", D: "~@2 g5 ab4 g5 ab4 ~@2",
})).s("gm_piano").gain(0.13)

// other · percussive organ · "PercOrgan"
const percussive_organ = note("<A B C@2 A B C@2 A D E@2 A B C@2 ~@121>".pickRestart({
  A: "db3", B: "bb2", C: "[f2@31 ~]/2", D: "bb2@15 ~", E: "f2/2",
})).s("gm_percussive_organ").gain(0.21)

// other · string ensemble 1 · "Strings1"
const string_ensemble_1 = note(`<
  A B C@2 A B C@2 A B C@2 A B D@8 ~@2 E F G@2 E H I@2 E F G@2 E H I@2 E F G@2 E H I@2 E F G@2 E H I@2 ~@3 J K L M J K N
  O J K P M J Q N R S T@2 U@2 V@2 W@2 T@2 U@2 V@2 W@2 T@2 U@2 V@2 W@2 T@2 U@2 V@2 X ~@30
>`.pickRestart({
  A: "db3", B: "bb2", C: "f2/2", D: "f2/8", E: "f5", F: "eb5", G: "c5/2", H: "g5", I: "ab5/2", J: "~@12 f4 ab4 c5 eb5",
  K: "[f4,f5] ab4 c5 eb5 [f4,f5] ab4 ~@10", L: "eb5 ~ bb4 ~ eb5 ~ [bb4,db5] ~@3 ab4@2 ~@2 [ab4,db5] ~, ~@10 db5 ~@5",
  M: "c5@2 db5 ~ c5 ~ db5 ~ c5 ~ db5 ~ c5 ~ db5 ~",
  N: "eb5 ~ bb4 ~ eb5 ~ db5@2 ~@2 [c5,db5] ~@3 [ab4,c5] ~, ~@6 bb4 ~@9", // Dbmaj7 Ab
  O: "f4@2 ab4 ~ f4 ~ ab4 ~ f4 ~ ab4 ~ f4 ~ ab4 ~",
  P: "eb5 ~ bb4 ~ eb5 ~ [bb4,db5] ~@3 ab4@2 ~@2 ab4@2, ~@10 db5 ~@3 db5 ~", Q: "f4 ab4 c5 eb5 [f4,f5] ab4 ~@10, f5 ~@7",
  R: "f4@5 ~ g4 ab4 bb4@5 ~ ab4 bb4", S: "c5@2 bb4 c5 db5 ~ c5 db5 eb5@2 f4 ab4 bb4 c5 db5 eb5", T: "f5/2", U: "eb5/2",
  V: "[db5@30 f5 db5]/2", W: "[c5@31 ~]/2", X: "c5",
})).s("gm_string_ensemble_1").gain(0.17)

// other · string ensemble 1 · "Strings1" · soft notes
const string_ensemble_1_soft = note("<~@60 A ~@2 B A ~@2 C A ~@2 B A ~@64>".pickRestart({
  A: "~@6 c5 eb5 [f4,f5] ab4 c5 eb5 [f4,f5] ~@3", B: "c5 ~ db5 ~ c5 ~ db5 ~ c5 ~ db5 ~ c5 ~ db5 ~",
  C: "f4 ~ ab4 ~ f4 ~ ab4 ~ f4 ~ ab4 ~@3 ab4 ~",
})).s("gm_string_ensemble_1").gain(0.09)

// chords · acoustic guitar steel · "SteelGuitar"
const acoustic_guitar_steel = note("<~@8 A@2 B C D@2 E@2 ~@121>".pickRestart({
  A: "[~@2 ab3@2 f4@5 ~ f4@2 ~@8 c4@5 ~ g4@2 ~@2 g4@2, f3@16 c3@13 ~@3, ~@7 f4@2 g3@6 ~]/2",
  B: "~@2 c4@2 ab4@5 ~ ab4@2 ~@2 ab4@2, ab3@15 ~", C: "~@2 ab4@2 ~ ab4 ~ g4, ab3@7 ~, ~ c4@3 ~@4",
  D: "[~ ab3 f4@2 ~ f4 ~@4 c4@2 ~ g4 ~ g4, f3@16 c3@13 ~@3, ~@7 f4@2 g3@6 ~]/2",
  E: "[~@2 c4@2 ab4@5 ~ ab4@20 ~@2, ab3@21 ~@11, ~@2 c4 ~@13]/2",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// other · pad sweep · "Sweep"
const pad_sweep = note("<~@8 A B C@2 D E F@2 ~@7 G@6 H@4 I@6 G@6 H@4 I@6 ~@82>".pickRestart({
  A: "f5", B: "g5", C: "[ab5@3 ~]/2", D: "f5@15 ~, g5@9 ~@7", E: "c5", F: "[f4@29 ~@3]/2",
  G: "[~@6 f5@29 ~@3 eb5@32 db5@26]/6", H: "[~@19 f5@13, ~@6 c5@39 ~@19]/4", I: "[~@6 eb5@32 db5@34 ~ c5@20 ~@3]/6",
})).s("gm_pad_sweep").gain(0.26)

// other · synth strings 1 · "SynthString1"
const synth_strings_1 = note(`<
  ~@16 A B C B D B E F G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 ~@18 M@2 G H I@2 J K L@2 G H I@2
  J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 ~@29
>`.pickRestart({
  A: "f4@15 ~", B: "g4", C: "ab4", D: "f4", E: "~ ab4@15", F: "bb4@15 ~", G: "f3", H: "eb3", I: "[c3@31 ~]/2",
  J: "db3@15 ~", K: "bb2", L: "f2/2", M: "[f2@29 ~@3]/2",
})).s("gm_synth_strings_1").gain(0.48)

// bass · synth bass 1 · "SynthBass1"
const bass = note(`<
  ~@24 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A D C ~ E F E@7 F E@7 F E@2 A B C@2 A B C@2 A B C@2 A B
  C@2 A B C@2 A B C@2 A B C@2 A B C ~ E@17 F E@10 ~
>`.pickRestart({
  A: "~@2 db2 ~@3 db2 ~@3 db2 ~@3 db2 ~", B: "~@2 bb1 ~@3 bb1@2 ~@2 bb1 ~@3 bb1 ~", C: "~@2 f1 ~@3 f1 ~@3 f1 ~@3 f1 ~",
  D: "~@2 bb1 ~@3 bb1 ~@3 bb1 ~@3 bb1 ~", E: "~ f1 ~ f1 ~ f1 ~ f1", F: "~@2 f1 ~@3 f1@2 ~@2 f1@2 ~@2 f1@2",
})).s("gm_synth_bass_1").gain(0.64)

// bass · synth bass 1 · "SynthBass1" · soft notes
const bass_soft = note(`<
  ~@24 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C ~@21 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B
  C@2 A B C@2 A B C ~@30
>`.pickRestart({
  A: "db3 ~@3 db3 ~@3 db3 ~@3 db3 ~@3", B: "bb2 ~@3 bb2 ~@3 bb2@2 ~@2 bb2 ~@3", C: "f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3",
})).s("gm_synth_bass_1").gain(0.39)

// drums · kick
const kick = s("bd").struct(`<
  ~@16 A@4 B C D E C@7 F C@7 F C@7 F C@7 ~ C@7 F C@7 F C@7 F C@7 F C@7 F C@7 F C@7 G C@3 G C@3 G C@3 G C@3 F C@3 F C@2 H
  I ~
>`.pickRestart({
  A: "x", B: "x!2", C: "x!4", D: "x ~ x ~ x!4", E: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", F: "x ~ x ~ x ~ x!2",
  G: "x ~@3 x ~@3 x ~@3 x ~@2 x", H: "x!8", I: "x!16",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@18 [~@13 x!3] [x!16]!5 ~@49 [x!16]!3 ~@51 [x!16] ~@9>").gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@16 [x!16]!2 [x!13 ~@3] ~@118>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@24 [x!4]!31 ~@5 [x!4]!47 ~@13 [x!4]!16 ~>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@24 [~ x ~ x ~ x ~ x]!31 ~@10 [~ x ~ x ~ x ~ x]!42 ~@13 [~ x ~ x ~ x ~ x]!16 ~>")
  .gain(0.48)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@60 [~ x ~ x ~ x ~ x]!5 ~@72>").gain(0.16)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@15 A ~@14 A ~@19 B A ~@30 A ~@22 C B@3 D E A>".pickRestart({
  A: "x", B: "x!4", C: "~@2 x!2", D: "x!8", E: "x!16",
})).gain(0.4)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@128 [x!4]!2 [x!2 ~@2] ~@6>").gain(0.24)

stack(
  piano, piano_soft, piano_2, piano_soft_2, percussive_organ, string_ensemble_1, string_ensemble_1_soft,
  acoustic_guitar_steel, pad_sweep, synth_strings_1, bass, bass_soft, kick, snare, snare_soft, hihat, open_hat,
  open_hat_soft, crash, crash_soft
)

More by Robert Miles