Strudelify

Shame Shame Shame

Izabella

KeyF majorTempo109 bpm
0:00/0:00
// Shame Shame Shame — Izabella
// 109 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(109/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 · "bass"
const bass = note(`<
  A@2 B C A@2 B D E@2 F@2 G H I J A@2 B C A@2 B D E@2 F@2 G H I J A@2 B C A@2 B D E@2 F@2 G H I J A@2 B C A@2 B D E@2
  F@2 G H I J A@2 B C A@2 B D E@2 F@2 G H I J A@2 B C A@2 B D A@2 B C A@2 B D A@2 B C A@2 B K
>`.pickRestart({
  A: "bb1!2 ~ bb1!2 ~ bb1!2 ~ bb1!2 ~ bb1 ~ f1@2", B: "f1!2 ~ f1!2 ~ f1!2 ~ f1!2 ~ f1 ~@3",
  C: "f1!2 ~ f1!2 ~ f1!2 ~ f1 ab1 ~ ab1 ~ a1@2", D: "f1!2 ~ f1!2 ~ f1!2 ~ f1!2 ~ g1 ~ ab1@2",
  E: "a1@2 a1!3 ~ a1!2 ~ a1!2 ~ a1 ~ e1@2", F: "d2@2 d2!3 ~ d2!2 ~ d2!2 ~ d2 ~ f1@2",
  G: "g1@2 g1!3 ~ g1!2 ~ g1!2 ~ g1 ~ a1@2", H: "g1@2 g1!3 ~ g1!2 ~ g1!2 ~ bb1 ~ b1@2",
  I: "c2@2 c2!3 ~ c2!2 ~ c2!2 ~ c2 ~ g1@2", J: "c2@2 c2!3 ~ c2!5 ~ c2!2 b1@2", K: "f1!2 ~@14",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · acoustic guitar steel · "acc guit"
const acoustic_guitar_steel = note(`<
  A B C D A B C D E F G H I J K L A B C D A B C D E F G H I J K L A B C D A B C D E F G H I J K L A B C D A B C D E F G
  H I J K L A B C D A B C D E F G H I J K L A B C D A B C D A B C D A B C D A B C D A B C M
>`.pickRestart({
  A: "[f4,ab4,d5] ~@2 [f4,ab4,d5] d5 ~ [f4,ab4,d5] ~@2 [f4,ab4,d5] ~@2 [f4,ab4,d5] d5 [f4,ab4] ~", // Ddim Fm
  B: "[f4,ab4,d5] ~@2 [f4,ab4,d5] ~@2 [f4,ab4,d5] ~@2 [f4,ab4,d5] ~@2 [f4,d5] ~ [f4,ab4] ~", // Ddim Dm Fm
  C: "[a4,c5,eb5] ~@2 [a4,c5,eb5] eb5 ~ [a4,c5,eb5] ~@2 [a4,c5,eb5] ~@2 [a4,c5,eb5] eb5 [a4,c5] ~", // Adim Am
  D: "[a4,c5,eb5] ~@2 [a4,c5,eb5] ~@2 [a4,c5,eb5] ~@2 [a4,c5,eb5] ~@2 [a4,eb5] ~ [a4,c5] ~", // Adim Am
  E: "[a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] [a4,db5,e5] ~ [a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] [db5,e5] [a4,db5,e5] ~", // A Dbm A
  F: "[a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] e5 ~ [a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] ~@2 [a4,db5,e5,a5] [db5,e5] [a4,db5,e5] ~", // A Dbm A
  G: "[a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] [a4,c5,f5] ~ [a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] [c5,f5] [a4,c5,f5] ~", // F F5 F
  H: "[a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] f5 ~ [a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] [c5,f5] [a4,c5,f5] ~", // F F5 F
  I: "[g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] [g4,b4,d5] ~ [g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] [b4,d5] [g4,b4,d5] ~", // G7 G G7 Bm G
  J: "[g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] d5 ~ [g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] ~@2 [g4,b4,d5,f5] [b4,d5] [g4,b4,d5] ~", // G7 Bm G
  K: "[g4,bb4,c5,e5] ~@2 [g4,c5,e5]!2 ~ [g4,bb4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,bb4,c5,e5] [c5,e5] [g4,c5,e5] ~", // C7 C C7 C C7 C
  L: "[g4,bb4,c5,e5] ~@2 [g4,c5,e5] e5 ~ [g4,bb4,c5,e5] ~@2 [g4,bb4,c5,e5] ~@2 [g4,bb4,c5,e5] [c5,e5] [g4,c5,e5] ~", // C7 C C7 C
  M: "[a4,c5,eb5] ~@15", // Adim
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.7)

// chords · acoustic guitar steel · "acc guit" · soft notes
const acoustic_guitar_steel_2 = note(`<
  A B C D A B C D E F E G H I J K A B C D A B C D E F E G H I J K A B C D A B C D E F E G H I J K A B C D A B C D E F E
  G H I J K A B C D A B C D E F E G H I J K A B C D A B C D A B C D A B C D A B C D A B C ~
>`.pickRestart({
  A: "~@4 [f4,ab4] ~@8 ab4 d5 ~", B: "~@4 [f4,ab4,d5] ~@7 ab4 [ab4,d5] d5 ~", C: "~@4 [a4,c5] ~@8 c5 eb5 ~",
  D: "~@4 [a4,c5,eb5] ~@7 c5 [c5,eb5] eb5 ~", E: "~@13 a5 ~@2", F: "~@4 [a4,db5] ~@8 a5 ~@2",
  G: "~@4 [a4,c5] ~@8 a5 ~@2", H: "~@13 f5 ~@2", I: "~@4 [g4,b4] ~@8 f5 ~@2", J: "~@3 bb4 ~@5 bb4 ~@6",
  K: "~@3 bb4 [g4,c5] ~@11", // C5
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.7)

// chords · electric guitar muted · "wah guit"
const electric_guitar_muted = note("<A@8 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@23 B>".pickRestart({
  A: "[eb4,ab4,c5] ~@3 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5]!2 ~@2", B: "[eb4,ab4,c5] ~@15",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.3)

// other · distortion guitar · "l guitar"
const distortion_guitar = note(`<
  A B C D E F G H I ~@6 J K B C L A M C L N@2 ~@5 O A B C D E F G H I ~@6 P K B C L A M C L N@2 ~@5 Q A B C D E F G H I
  ~@7 A B C D E F G H R S A T@2 E F U V W D X Y Z AA AB
>`.pickRestart({
  A: "f4 eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 c4 ~@3", B: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4@4 ~@4, f4 ~@7",
  C: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 c4!2 eb4 ~, f4 ~@7", D: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4@2 f5@4 ~@2, f4 ~@7",
  E: "bb4!2 ab4 ~ bb4 ab4 bb4 ~ ab4!2 f4@2 f4 ~@3", F: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 c4@2 [c4,f4] ~@3, f4 ~@7",
  G: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 c4 ~@3, f4 ~@7", // Ab
  H: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ eb5!2 c5 ~ bb4!2 ~@2, f4 ~@7", I: "a5@13 ~@3", J: "~@2 [bb4,e5] e5!3 e5@2 [bb4,e5]@8",
  K: "eb5@2 c5 ~ eb5!2 c5 ~ f4 eb4 ~@2 f4 c4 ~@2", L: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 f4 eb4 ~@2, f4 ~@7",
  M: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4@6 ~@2, f4 ~@7", N: "[[a4,a5]@25 ~@7]/2",
  O: "~@2 [bb4,e5]!4 ~@2 [bb4,e5]!2 [bb4,e5]@2 [bb4,e5]!3 ~", // Bbdim
  P: "~@2 e5!4 e5@2 ~ e5 [bb4,e5]@2 e5!2 e5@2, ~@2 bb4@3 bb4@3 [bb4,e5]@2 ~@3 bb4@3", // Bbdim
  Q: "~@2 [bb4,e5]!4 [bb4,e5]@2 [bb4,e5]!2 [bb4,e5]@2 [bb4,e5]!2 [bb4,e5]@2", R: "eb5!2 c5 ~ bb4!2 ab4 ~ ab4!2 f4@5 ~",
  S: "eb5@4 c5 bb4 ab4 ~ bb4!2 ab4@3 ~@3", T: "[~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4@4 ~@4 f4@2 g5@10 ~@4, f4 ~@5 c5@3 ~@7]/2",
  U: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ eb5@2 f5 eb5@2 [eb5,f5] ~@2, f4 ~@7", V: "ab5 ~ d5 ~ d5 ~ eb5 ~ eb5!2 c5 ~ bb4!2 ~@2",
  W: "f4 eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 c4!2 eb4 ~", X: "f4 eb4 ~@2 ab4 ~ [ab4,c5] ~ eb5!2 c5 ~ bb4!2 ~@2",
  Y: "eb5 ~ c5 ~ eb5!2 c5 ~ f4 eb4 ~@2 f4 c4 ~@2", Z: "~ eb4 ~ f4 ~@2 ab5@9 ~, f4 ~@7",
  AA: "f5 ~ eb5 ~ c5 ~ bb4 ~ bb4 ab4 f4 ~@5", AB: "f4 ~@7",
})).s("gm_distortion_guitar").gain(0.4).pan(0.3)

// other · distortion guitar · "l guitar" · soft notes
const distortion_guitar_soft = note(`<
  A B C D E D C F ~@7 G H B C I A B C I ~@8 A B C D E D C F ~@8 H B C I A B C I ~@8 A B C D E D C F ~@8 A B C D E D C F
  ~@2 A B ~ E D@2 J C D F H ~@3
>`.pickRestart({
  A: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@3 c4@2 ~ c4@3", B: "~@2 c4!2 [eb4,c5] ~ eb4 ~@9",
  C: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@3 c4@2 ~@4", D: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@9", E: "~@7 eb4",
  F: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@7 ab4@2", G: "~@3 bb4!3 bb4@2 ~@8", H: "~@10 c4@2 ~@2 eb4 ~",
  I: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@3 c4 ~@3 c4 ~", J: "~ f5 ~ c5 ~@10 ab4@2",
})).s("gm_distortion_guitar").gain(0.24).pan(0.3)

// other · overdriven guitar · "r guitar"
const overdriven_guitar = note(`<
  A B A B A B A B C ~@6 D A B A B A B A B C ~@6 E A B A B A B A B C ~@6 F A B A B A B A B C ~@6 F A B A B A B A B C ~@7
  A B A B A B A B A B A B A B A B A B A B A B A G
>`.pickRestart({
  A: "f4 eb4 ~@2 ab4 ~ [ab4,c5] ~ f4 eb4 ~@2 c4 ~@3", B: "~ eb4 ~@2 ab4 ~ [ab4,c5] ~ f4@4 ~@4, f4 ~@7", C: "a4 ~@7",
  D: "~@2 g4!3 ~ f4@2 g4@8", E: "~@8 e4 g4 g4@2 e4 g4 g4@2", F: "~@2 g4!4 g4@2 g4!2 g4@2 g4!2 g4@2", G: "f4 ~@7",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.8)

// other · overdriven guitar · "r guitar" · soft notes
const overdriven_guitar_soft = note(`<
  A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B A
  B A B A B A B A B A B A B A ~
>`.pickRestart({
  A: "~@2 c4 ~ [eb4,c5] ~ eb4 ~@3 c4@2 ~ c4@3", B: "~@2 c4!2 [eb4,c5] ~ eb4 ~@9",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.8)

// other · alto sax · "saxophon"
const alto_sax = note("<~@71 A B C D E F G H@3 ~@23>".pickRestart({
  A: "~@12 eb5 b4 c5 eb5", B: "c5 db5 e5 ~ db5 e5 gb5@5 eb5@2 db5 ~@2",
  C: "g4 a4 b4 ~ a4 g4 d4 b3 db4 e4 gb4 a4@3 c5 a4", D: "d5 ~ d5!2 ~ d5 f5 ~ c5 d5 a4 d5 c5 a4 ab4@2",
  E: "ab4 a4 ab4 g4 f4 d4 g4 d4 f4 ~@5 a4 bb4", F: "b4 d5 f5@3 d5 b4 g4 e5@3 c5 db5 e5 eb5 ~",
  G: "d5 ~ b4 d5 ~@2 db5 a4 f4 ~ b4 g4 a4 f4 ~@2",
  H: "[c4 ~@4 eb4 ~ [g4,a4] c5@2 d5 c5 b5@8 e5@2 eb5 c5@3 f4 ~ f4 ~@2 c5@3 ~@14]/3", // Gsus2
})).s("gm_alto_sax").gain(0.48).pan(0.4)

// other · alto sax · "saxophon" · soft notes
const alto_sax_soft = note("<~@72 A B C D E F G H ~@24>".pickRestart({
  A: "~@3 c5 ~@10 a4 e4", B: "~@3 g4 ~@12", C: "~@7 d5 ~@8", D: "~@9 d4 ~@6", E: "~@15 db5",
  F: "~ bb4 ~@2 db5 c5 ~@3 d4 ~@4 e4 d4", G: "~@6 e4 ~@9", H: "~@11 gb4 ~ gb4 e4 ~",
})).s("gm_alto_sax").gain(0.24).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A@15 B A@31 C A@15 C A@15 B A@23 D>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", C: "x ~@3 x ~@2 x ~ x!2 ~@5", D: "x",
})).gain(0.56)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<A@14 B C A@30 D E A@14 D E A@14 B C A@23 ~>".pickRestart({
  A: "~ x ~@2 x ~@3", B: "~@2 x ~@5 x ~@6 x", C: "~@2 x ~@6 x ~@3 x ~ x", D: "~@2 x ~@5 x ~@4 x ~@2",
  E: "~@2 x ~@10 x ~@2",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@16 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@23 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct("<~@47 [~@7 x] ~@15 [~@7 x] ~@40>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<[x ~ x!3 ~ x!2]!103 x>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 [~@7 x] ~@15 [~@13 x ~@2] ~@15 [~@13 x ~@2] ~@40>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~@3 x ~@2]!103 ~>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@31 [~@13 x ~@2] ~@72>").gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@15 A ~@15 A ~@15 A ~@15 A ~@7 A ~@7 A ~@7>".pickRestart({
  A: "x",
})).gain(0.56)

// drums · ride bell
const ride_bell = s("rd").struct("<~@80 [~ x ~ x ~ x ~ x]!23 ~>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<[x ~ x ~ x ~ x!2 ~ x!2 ~ x ~ x ~]!103 x>").gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<[~ x ~ x ~ x ~@2 x ~@2 x ~ x ~ x]!103 [~ x ~@14]>").gain(0.08)

// drums · triangle
const triangle = s("triangles:35").struct("<[~ x ~ x ~ x ~ x]!40 ~@8 [~ x ~ x ~ x ~ x]!55 ~>").gain(4.18)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_muted, distortion_guitar,
  distortion_guitar_soft, overdriven_guitar, overdriven_guitar_soft, alto_sax, alto_sax_soft, kick, kick_soft, clap,
  snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride_bell, tambourine, tambourine_soft, triangle
)