Strudelify
Fame cover art

1975 · Young Americans

Fame

David Bowie

KeyE♭ majorTempo135 bpm
0:00/0:00
// Fame — BOWIE DAVID
// 135 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4 B A@4
  B C@3 ~@3
>`.pickRestart({
  A: "[eb2@2 f2@3 ~ eb2@2 f2@3 eb2@2 f2@4 eb2@2 ~ eb2@2 f2@4 ab2@4 eb2@2 f2@4 eb2@2 f2@3 eb2@2 f2@4 eb2@2 f2@2 eb2 c2@5 ~@3 eb2@2 f2@3 ~ eb2@2 f2@3 eb2@2 f2@4 eb2@2 ~ eb2@2 f2@4 ab2@4 eb2@2 f2@4, ~@19 f2@2 ~@58 f2@2 ~@15]/4",
  B: "eb2@2 f2@3 eb2@2 f2@4 eb2@2 f2@2 eb2 c2@5 ~@3",
  C: "[eb2@2 f2@3 ~ eb2@2 f2@3 eb2@2 f2@4 eb2@2 ~ eb2@2 f2@4 ab2@4 eb2@2 f2@4 eb2@2 f2@3 eb2@2 f2@4 eb2@2 f2@2 eb2 c2@5 ~@15, ~@19 f2@2 ~@51]/3",
})).s("gm_electric_bass_finger").gain(0.36)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@10 A@5 B@5 ~@17 C@3 ~@2 D@3 E@3 ~@7 F@3 ~@2 G@5 ~@12 C@3 ~@2 D@3 E@3 ~@7 F@3 ~@2 G@5 ~
>`.pickRestart({
  A: "[c5@56 bb4@2 ab4@2 bb4@2 ab4@5 f4@39 ~@3 f4 ~ bb4@2 c5@4 ~@3, ~@55 ab4 ~@4]/5",
  B: "[c5@56 bb4@2 ab4@2 bb4@2 ab4@5 f4@39 ~@3 f4 ~ bb4@2 c5@6 ~, ~@55 ab4 ~@4]/5", C: "[~@20 c5@7 bb4@45]/3",
  D: "[~@19 f5@7 eb5@46]/3", E: "[~@8 c5@7 bb4@42 ~@15]/3", F: "[~@8 c5@7 bb4@45 ~@12]/3",
  G: "[~@7 f5@7 eb5@46 ~@8 c5@7 bb4@42 ~@3]/5",
})).s("gm_string_ensemble_1").gain(0.4)

// other · accordion
const accordion = note("<~@10 A@5 B@5 ~@50 C@2 D@3 E@5 F@5 G@5 C@2 H@3 I@5 J@5 ~>".pickRestart({
  A: "[c6@56 bb5@2 ab5@2 bb5@2 ab5@5 f5@39 ~@3 f5 ~ bb5@2 c6@4 ~@3, ~@55 ab5 ~@4]/5",
  B: "[c6@56 bb5@2 ab5@2 bb5@2 ab5@5 f5@39 ~@3 f5 ~ bb5@2 c6@6 ~, ~@55 ab5 ~@4]/5",
  C: "[~@8 [f4,f5]@7 [eb4,eb5]@29 ~@4]/2", D: "[~@20 [f4,f5]@7 [eb4,eb5]@29 ~@16]/3",
  E: "[~@8 [f4,f5]@7 [eb4,eb5]@39 ~@14 [c4,c5]@7 ~ bb4@44, ~@68 d4 ~@6 bb3@44 ~]/5", // F Eb C
  F: "[~@9 [c5,f5]@7 [bb4,eb5]@38 ~@13 [c5,f5]@8 [bb4,eb5]@41 ~@4]/5", // F5 Eb5 F5 Eb5
  G: "[~@7 [c5,f5]@8 [bb4,eb5]@40 ~@12 [f4,f5]@8 [eb4,eb5]@29 ~@16]/5", H: "[~@20 [f4,f5]@7 [eb4,eb5]@39 ~@6]/3",
  I: "[~@8 [c4,c5]@7 ~ bb4@44 ~@9 [c5,f5]@7 [bb4,eb5]@38 ~@6, ~@8 d4 ~@6 bb3@44 ~@61]/5", // C F5 Eb5
  J: "[~@7 [c5,f5]@8 [bb4,eb5]@41 ~@11 [c5,f5]@8 [bb4,eb5]@41 ~@4]/5", // F5 Eb5 F5 Eb5
})).s("gm_accordion").gain(0.16)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@20 A B@4 A C@4 D@2 E F@2 D@2 G@3 H@5 I@2 ~ J K D@2 L M@2 N@3 O P Q@5 R@4 S T@2 E F@2 D@2 G@3 H@5 I@2 ~ J K D@2 L M@2
  N@3 O P Q@5 ~
>`.pickRestart({
  A: "~@4 f5@5 ~ f5@4 ~ f5@5 ~ f5 ~ f5",
  B: "[~ f5 f5@5 ~@3 g5@5 ~ g5@4 ~ g5@5 g5 ~ g5 ~ g5 ~ g5@5 ~@3 ab5@4 ~ ab5@5 ~ ab5@5 ab5 ~ ab5 ~ ab5 ~ ab5@5 ~@3 g5@5 ~ g5@4 ~ g5@5 ~ g5 ~ g5!2 ~ g5@4]/4",
  C: "[~ f5 f5@5 ~@3 g5@5 ~ g5@4 ~ g5@5 g5 ~ g5 ~ g5 ~ g5@5 ~@3 ab5@4 ~ ab5@5 ~ ab5@4 ~ ab5 ~ ab5 ~ ab5 ~ ab5@4 ~@4 bb5@4 ~@2 bb5@4 ~ bb5@5 bb5 ~ bb5 ~ bb5 ~ bb5@4]/4",
  D: "[~@23 eb6@3 d6@3 ~ eb6@3 ~ d6@3 eb6@3 ~ d6@2 eb6@5]/2", E: "~ f6@12 ~@11",
  F: "[~@10 eb6@4 d6@4 eb6@4 d6@4 eb6@3 d6@2 ~ eb6@5 c6@11]/2", G: "[~ f6@10 ~@9 c6@7 ~ bb5@37 ~@7]/3",
  H: "[~@15 eb6@4 d6@2 eb6@6 ~@3 eb6@3 d6@2 ~ eb6@7 d6@2 eb6@2 d6@2 ~ d6@2 eb6@2 d6@2 c6@2 bb5@2 ~@7 f6@7 eb6@38 ~@8, ~@49 eb6@2 ~@69]/5",
  I: "[~@8 c6@7 bb5@28 ~@5]/2", J: "~@11 eb6@3 d6@3 ~ eb6@3 ~ d6@2", K: "~ eb6@3 ~ d6@2 eb6@5 ~ f6@11",
  L: "~ c6@11 ~@12", M: "[~@10 eb6@4 d6@4 eb6@4 d6@3 eb6@3 ~ d6@2 eb6@5 ~ f6@11]/2", N: "[~@8 c6@7 ~ bb5@37 ~@19]/3",
  O: "~@3 eb6@4 d6@2 eb6@6 ~@3 eb6@3 d6@2 ~", P: "eb6@7 d6@2 eb6@2 d6@2 ~ d6@2 eb6@2 d6@2 c6@2 bb5@2, ~@13 eb6@2 ~@9",
  Q: "[~@7 f6@7 eb6@38 ~@16 c6@7 bb5@28 ~@17]/5",
  R: "[g6@8 gb6@7 e6@7 d6@8 db6@8 b5@7 a5@8 g5@7 gb5@8 e5@7 d5@7 db5@8 b4@6]/4", S: "~ a4@8 g4@7 gb4@8",
  T: "[~@8 [d6,f6]@8 ~@7 eb6@3 d6@3 ~ eb6@3 ~ d6@3 eb6@3 ~ d6@2 eb6@5]/2", // Dm
})).s("gm_synth_brass_1").gain(0.4)

// other · clavinet
const clavinet = note("<~@30 A@8 B@5 C@5 D@5 E@5 F@8 G@3 H I@8 B@5 C@5 D@5 E@5 F@8>".pickRestart({
  A: "[~@8 f5@7 eb5@52 ~ f5@8 eb5@51 f5@8 eb5@53 c5@4]/8", B: "[~@3 bb4@53 f5@8 eb5@51 f5@5]/5",
  C: "[~@3 eb5@52 f5@8 eb5@53 f5@4]/5", D: "[~@3 eb5@53 f5@8 eb5@52 f5@4]/5", E: "[~@3 eb5@53 c5@7 bb4@53 f5@4]/5",
  F: "[~@3 eb5@52 f5@8 eb5@53 f5@7 eb5@53 ~@16]/8", G: "[~@6 db4@8 b3@7 a3@8 g3@7 gb3@8 e3@7 d3@7 db3@8 b2@6]/3",
  H: "~ a2@8 g2@7 gb2@8", I: "[~@15 eb5@53 f5@8 eb5@51 f5@8 eb5@53 c5@4]/8",
})).s("gm_clavinet").gain(0.56)

// other · clavinet · soft notes
const clavinet_soft = note("<~@65 A@2 ~@39>".pickRestart({
  A: "[g4@8 gb4@7 e4@7 d4@8 ~@18]/2",
})).s("gm_clavinet").gain(0.32)

// chords · brass section
const brass_section = note("<~@70 A@2 B@3 C@5 D@5 E@5 A@2 F@3 G@5 H@5 ~>".pickRestart({
  A: "[~@8 [f4,f5]@7 [eb4,eb5]@29 ~@4]/2", B: "[~@20 [f4,f5]@7 [eb4,eb5]@29 ~@16]/3",
  C: "[~@8 [f4,f5]@7 [eb4,eb5]@39 ~@14 [c4,c5]@7 ~ bb4@44, ~@68 d4 ~@6 bb3@44 ~]/5", // F Eb C
  D: "[~@9 [c5,f5]@7 [bb4,eb5]@38 ~@13 [c5,f5]@8 [bb4,eb5]@41 ~@4]/5", // F5 Eb5 F5 Eb5
  E: "[~@7 [c5,f5]@8 [bb4,eb5]@40 ~@12 [f4,f5]@8 [eb4,eb5]@29 ~@16]/5", F: "[~@20 [f4,f5]@7 [eb4,eb5]@39 ~@6]/3",
  G: "[~@8 [c4,c5]@7 ~ bb4@44 ~@9 [c5,f5]@7 [bb4,eb5]@38 ~@6, ~@8 d4 ~@6 bb3@44 ~@61]/5", // C F5 Eb5
  H: "[~@7 [c5,f5]@8 [bb4,eb5]@41 ~@11 [c5,f5]@8 [bb4,eb5]@41 ~@4]/5", // F5 Eb5 F5 Eb5
})).s("gm_brass_section").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F B G H E F I C J E F B C J E F B K J E L M N J E O B C J E F B C H E F B K J E F M P D E F B C J E F I C J
  Q F B C J E O I C D E A B C J E F B C H E F B K J E F M P D E F B C J E F I C J Q F B R ~@3
>`.pickRestart({
  A: "~@8 x ~@4 x ~ x ~ x ~ x!2 ~ x ~", B: "~@5 x!2 ~@7 x ~@5 x!2 ~ x", C: "~ x ~ x ~ x ~@5 x!2 ~@7 x ~@3",
  D: "~@2 x!2 ~ x ~ x ~ x ~ x ~@4 x ~ x ~@5", E: "~@2 x ~@5 x!2 ~ x ~ x ~ x ~ x ~@5 x",
  F: "x ~@7 x ~@5 x!2 ~ x ~ x ~ x!2 ~", G: "~ x ~ x ~ x ~@5 x ~ x ~@6 x ~@3", H: "~@2 x!2 ~ x ~ x ~ x ~ x ~@6 x ~@5",
  I: "~@4 x ~ x ~@7 x ~@5 x!2 ~ x", J: "~@2 x!2 ~ x ~ x ~ x ~ x ~@5 x!2 ~@5", K: "~ x!2 ~ x ~@5 x ~ x ~@7 x ~@3",
  L: "~ x ~@6 x ~@5 x!2 ~ x ~ x ~ x!2 ~", M: "~@4 x ~ x ~@7 x ~@4 x ~ x ~ x", N: "~ x!2 ~ x ~@6 x ~ x ~@6 x ~@3",
  O: "x ~@7 x ~@4 x ~ x ~ x ~ x!2 ~ x ~", P: "x ~ x ~@2 x ~@5 x ~ x ~@6 x ~@3",
  Q: "~@2 x ~@5 x ~ x!2 ~ x ~ x ~ x ~@5 x", R: "~ x ~ x ~ x ~@5 x ~@4 x ~@7",
})).gain(0.43)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B C D E F B C D G F B C D G H B C D G F I C J G F B C D G F B K D G F B C D G F B C D G F B C D G F B C D G F B C D
  G F B C D L M N O P Q R B K D G F B C D G F B C D G F B C D G F B C D G F B C D G F B ~@4
>`.pickRestart({
  A: "~@13 x ~ x ~@8", B: "~@4 x ~ x ~@12 x ~ x ~@2", C: "~@5 x!2 ~@5", D: "~ x ~ x ~@12 x ~ x ~@5",
  E: "~@7 x ~ x ~@13 x", F: "x ~@13 x!2 ~@8", G: "~@7 x ~ x ~@12 x ~", H: "x ~@12 x ~ x ~@8",
  I: "~@5 x!2 ~@12 x ~ x ~@2", J: "~ x ~ x ~@13 x!2 ~@5", K: "~@11 x!2 ~@11", L: "~@7 x ~ x ~@12 x!2",
  M: "x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~", N: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x",
  O: "~ x ~ x ~ x!2 ~ x ~ x!3 ~ x ~ x!2 ~ x ~ x ~ x", P: "~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x!3 ~ x ~ x ~",
  Q: "x ~ x!2 ~ x ~ x!3 ~ x ~ x ~ x ~ x!2 ~ x ~ x ~", R: "x ~ x ~ x ~@8 x ~ x ~@8",
})).gain(0.21)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B C D E F G H I J K G H L M N O H I M F O C I J P Q H I R S G H I R T G H I R U G C I V S W C I V S X H I R S B H I
  R F G H Y R F G Z I V S G H I R T G H I R U G C I V S W C I V S X H I R S B H I R F G AA ~@3
>`.pickRestart({
  A: "~@7 x ~@16", B: "~@6 x ~@4 x ~ x ~@7 x ~@2", C: "~@3 x ~ x", D: "~@3 x ~@14 x ~@4 x", E: "~ x ~@7 x ~@14",
  F: "x ~@5 x ~ x ~@6 x ~@8", G: "~@6 x ~@5 x ~ x ~@6 x ~@2", H: "~@6 x ~@2 x!2 ~", I: "~ x ~@4 x ~", J: "~ x ~@22",
  K: "x ~@2 x!2 ~@7", L: "~@3 x", M: "~ x ~@10", N: "x!2 ~", O: "~@3 x ~@3 x ~@4", P: "~ x ~@4 x ~ x ~@15",
  Q: "~@3 x ~@2 x!2 ~@4", R: "x ~ x ~@6 x ~@14", S: "x ~@7 x ~@6 x ~@8", T: "x!3", U: "x ~@2 x!2 ~@3 x ~@3",
  V: "~@2 x ~@6 x ~@14", W: "~@6 x ~@6 x ~@7 x ~@2", X: "~@6 x ~@7 x ~@6 x ~@2", Y: "~@2 x ~@6 x ~@2",
  Z: "~@13 x ~@4 x ~ x ~@3", AA: "~@11 x ~@12",
})).gain(0.34)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  A ~ B ~@6 C D ~@2 E C A F ~@2 C ~ F B ~ C G H ~@3 I ~@4 I ~@6 B ~ J I K B ~ J I K ~@3 I ~@12 L ~ I ~@4 I ~@6 B ~ J I K
  B ~ J I K ~@3 I ~@10
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~@3 x", C: "x ~@2 x ~@4", D: "~@5 x ~@2", E: "~ x ~@6", F: "~@4 x ~@2 x", G: "~@2 x",
  H: "~@7 x", I: "~ x ~@2", J: "x", K: "~ x", L: "~@23 x",
})).gain(0.21)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D E B C ~ D A B C ~ D A B C ~
  D A B C ~ D A B C ~ D A B C ~ D A B C ~ D A B C ~ D E B C ~ D A B C ~ D A B C ~ D A B F ~@3
>`.pickRestart({
  A: "~ x ~", B: "~@7 x ~@4", C: "~@5 x", D: "~ x ~@10", E: "~@7 x ~@16", F: "~@2 x",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct("<~@70 x ~@35>").gain(0.43)

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

stack(
  bass, string_ensemble_1, accordion, synth_brass_1, clavinet, clavinet_soft, brass_section, kick, low_tom, pedal_hat,
  pedal_hat_soft, open_hat, crash, tambourine
)

More by David Bowie