Strudelify

Bloedend hart

De Dijk

KeyC majorTempo128 bpm
0:00/0:00
// Bloedend hart — De Dijk
// 128 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// 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(128/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 · alto sax
const alto_sax = note("<~@17 A B ~ C D@3 ~@17 A B ~ C D@3 ~@25 A B ~ C E@4 A B ~ F G@3 ~@16>".pickRestart({
  A: "~@6 a4 g4", B: "~@6 a4!2", C: "~@8 a4 ~@2 g4@2 e4@2 ~", D: "[e4@2 ~@4 g4 g4@2 ~@5 f4 f4@2 ~@7]/3",
  E: "[e4@2 ~@4 g4 g4@2 ~@5 f4 f4@2 ~@5 f4 f4@2 ~@7]/4", F: "~@8 a4 ~@2 g4@2 f4@2 ~",
  G: "[f4@5 g4@5 ~@2 g4@2 g4@4 ~@10 f4@2 f4@4 ~@14]/3",
})).s("gm_alto_sax").gain(0.31).pan(0.6)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@57 A B C B@3 C B A B C B@3 ~ D E@2 F@2 G@2 F@2 H@2 I@2 H@2 J@2 K@2 I@2 L@2 M@2 H@2 N O ~@3
>`.pickRestart({
  A: "~@6 [a4,c5]@7 ~@3", B: "~@3 [a4,c5]@3 ~@2", C: "~@3 [g4,b4]@3 ~@2",
  D: "~@13 [c#4,d4] [d#4,e4,f4,f#4] [g4,g#4,a4]", E: "[[e4,c5] [d4,b4], g4, [a#4,b4] ~@31]/2",
  F: "[[f4,a4,c5]@11 [g4,b4,d5]@5]/2", G: "[[e4,c5] [d4,b4], g4]/2",
  H: "[~@3 [c6,e6]@2 [d6,f6]@3 [e6,g6]@3 [d6,f6]@2 [c6,e6]@3 [b5,d6]@5 [c6,e6]@3 [b5,d6]@3 [a5,c6]@2 [g5,b5]@3, g4, [e4,c5] [d4,b4]]/2", // C Dm Em Dm C Bm C Bm …
  I: "[[f4,a4,c5]@11 [g4,b4,d5]@5, [a5,c6]@3 ~@5]/2", // F G Am
  J: "[[a5,c6]@13 ~ [a5,c6,f6]@2 [a5,c6,f6]@2 [g5,c6,e6]@2 [g5,c6,e6]@2 [g5,b5,f6]@2 [g5,b5,f6]@2 [g5,c6,e6]@2 [g5,c6,e6]@2 [g5,b5,f6]@2, [f4,a4,c5]@11 [g4,b4,d5]@5]/2", // Am F C G7 C G7 F G
  K: "[~@3 [c6,e6]@2 ~ f6@2 [e6,g6]@3 [d6,f6]@2 [c6,e6]@3 [b5,d6]@5 [c6,e6]@3 [b5,d6]@3 [a5,c6]@2 [g5,b5]@3, g4, [e4,c5] [d4,b4], ~@5 d6@3 ~@24]/2", // C Em Dm C Bm C Bm Am …
  L: "[~@3 [c6,e6]@2 [d6,f6]@3 [e6,g6]@2 ~ d6@2 [c6,e6]@3 [b5,d6]@5 [c6,e6]@3 [b5,d6]@3 [a5,c6]@2 [g5,b5]@3, g4, [e4,c5] [d4,b4], ~@10 f6@3 ~@19]/2", // C Dm Em C Bm C Bm Am …
  M: "[[f4,a4,c5]@11 [g4,b4,d5]@5, [a5,c6]@13 ~@19]/2", N: "[f4,a4,c5], [a5,c6]@3 ~",
  O: "[f4,a4,c5]@6 [g4,b4,d5]@7 ~@3", // F G
})).s("gm_rock_organ").gain(0.26).pan(0.4)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@49 A B C D A B C E F G H I F G H J K L M N K L O P Q P R S Q P R T Q P R S Q P U@2 V W X Y Z AA AB@3 AA AC AD ~@3
>`.pickRestart({
  A: "~@2 [a2,b3,e4] ~@3 [a2,b3,c4,e4]@4 a3@2 [b3,e4]@2 a3@2, ~@3 [a2,c4]", // Asus2 Am E5 Am
  B: "~@2 [d3,b3,f4] ~@3 [d3,b3,d4,f4]@4 a3@2 [b3,f4]@2 a3@2, ~@3 [d3,d4]", // Bdim D
  C: "~@2 [e3,a3,e4] ~@3 [e3,a3,b3,e4]@4 g3@2 ~@2 g3@2, ~@3 [e3,a3,b3,e4]", // A5 Esus4
  D: "~@2 [f3,b3,f4] ~@3 [f3,b3,c4,f4]@4 a3@2 b3@2 a3@2, ~@3 [f3,c4,f4]", // Fdim F F5
  E: "~@2 [f3,b3,f4] ~@3 [f3,b3,c4,f4]@4 a3@2 [b3,c4,f4]@2 ~@2, ~@12 f3 ~@3", F: "[a1,a2,a3,c4,e4] ~@15",
  G: "[d2,d3,a3,d4,f4] ~@15", H: "[e1,e3,g3,b3,e4] ~@15", I: "[f1,f3,a3,c4,f4] ~@15",
  J: "f1 ~ [f3,a3,c4,f4] ~@3 f1@2 [f2,f3,a3,c4,f4]@4 [g2,g3,b3,d4,g4]@4", // F G
  K: "[c4,a4,e5,a5] ~@3 [c4,a4,e5,a5] ~@3 [c4,a4,e5,a5] ~@3 [c4,a4,e5,a5] ~@3", // Am
  L: "[d4,a4,f5,a5] ~@3 [d4,a4,f5,a5] ~@3 [d4,a4,f5,a5] ~@3 [d4,a4,f5,a5] ~@3", // Dm
  M: "[e4,a4,g5,a5] ~@3 [e4,a4,g5,a5] ~@3 [e4,a4,g5,a5] ~@3 [e4,a4,g5,a5] ~@3", // A7
  N: "[c4,a4,f5,a5] ~@3 [c4,a4,f5,a5] ~@3 [c4,a4,f5,a5] ~@3 [c4,a4,f5,a5] ~@3", // F
  O: "[g3,b3,e4]@5 ~ [a3,c4,f4] ~ [a3,c4,f4]@6 [b3,d4,g4] ~", P: "[b3,d4,g4]", Q: "[c4,e4,g4]",
  R: "a4@13 ~ [a4,c5,f5]@2, [c4,f4]", S: "[a4,c5,f5] [g4,c5,e5]!2 [g4,b4,d5]!2 [f4,a4,c5]!2 [d4,g4,b4]",
  T: "[a4,c5,f5] [g4,c5,e5]!2 [g4,b4,d5]!2 [f4,a4,c5]!2 [g4,b4,d5]", U: "[[c4,f4,a4]@11 [d4,g4,b4]@5]/2",
  V: "~@3 [e5,g5,c6]@2 [e5,g5,c6]@2 ~ [e5,g5,c6]@2 ~ [e5,g5,c6]@2 [e5,g5,c6]@2 ~", // C
  W: "[e5,g5,c6]@2 ~ [d5,g5,b5]@2 [d5,g5,b5]@2 ~ [d5,g5,b5]@2 ~ [d5,g5,b5]@2 [d5,g5,b5]@2 ~", // C G
  X: "[d5,g5,b5]@2 ~ [c5,f5,a5]@2 [c5,f5,a5]@2 ~ [c5,f5,a5]@5 ~ [a5,c6,f6]@2", // G F
  Y: "[a5,c6,f6] [g5,c6,e6]!2 [g5,b5,d6]!2 [f5,a5,c6]!2 [d5,g5,b5]", // F C G F G
  Z: "[e5,g5,c6]@2 ~ [e5,g5,c6]@2 [e5,g5,c6]@2 ~ [e5,g5,c6]@2 ~ [e5,g5,c6]@2 [e5,g5,c6]@2 ~", // C
  AA: "[e5,g5,c6]@2 ~ [d5,g5,b5]@2 [d5,g5,b5]@2 ~ [d5,g5,b5]@2 ~ [c5,f5,a5]@2 [b4,d5,g5]@2 ~", // C G F G
  AB: "[[b4,d5,g5]@3 [f4,a4,f5]@3 ~ [f4,a4,f5]@4 [e4,g4,e5]@3 ~ [f4,a4,f5]@3 ~ [e4,g4,e5]@4 [f4,a4,f5]@3 ~ [e4,g4,e5]@3 ~ [c4,g4,c5]@4 [e5,g5,c6]@2 [e5,g5,c6]@2 ~ [e5,g5,c6]@2 ~ [e5,g5,c6]@2 [e5,g5,c6]@2 ~]/3", // G F Em F Em F Em C5 …
  AC: "[a4,c5,f5]@5 ~ [c5,f5,a5]@9 ~", AD: "[f2,c4,f4,a4]@5 ~@2 g2@7 ~@2, ~@6 [d4,g4,b4]@7 ~@3",
})).s("gm_piano").gain(0.41).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B C D E@2 C F G B H F I@2 J K L M N O L M N P Q@2 C F R S C F T B C F U V W K L M N X L M N Y ~@53 Z AA
>`.pickRestart({
  A: "[~@10 e4 d4@2 e4 c4 a3, ~@14 a2@17 ~, ~@15 e3@15 ~@2, ~@16 a3@13 ~@3, ~@16 c4@11 ~@5]/2",
  B: "d4@2 ~ d4@3 c4@2, d3, a3@3 ~ a3@12", C: "e4@3 ~ e4@2 d4@4 e4@2 ~@2 e3@2, [e3,b3]@3 b3",
  D: "~ d4 ~ f3 ~ c4 d4 d3, f3@3 ~ g3@3 ~, ~@4 c4@5 ~@7",
  E: "[~@2 e4 d4@2 e4 c4 ~ d4@2 ~ d4@3 c4@2, e3@15 ~ d3@16, a3@13 ~ a3@5 ~ a3@12, c4@11 ~@21]/2",
  F: "~ d4 ~ f3 ~ c4 d4 d3, f3@6 ~@2 g3@5 ~@3, ~@4 c4@5 ~@7", G: "~@2 e4 d4@2 e4 c4 ~, [a2,e3,a3], c4@11 ~@5",
  H: "e4@3 ~ e4@2 d4@4 e4@2 b3@2 e3@2, [e3,b3]@13 ~@3", // E5
  I: "[~@2 e4 d4@2 e4 ~@2 [d3,d4]@2 ~@4 a3 d3, e3@15 ~@5 d3@8 ~@4, a3@13 ~ a3@13 ~@5, c4@11 ~ c4@5 ~@5 [d4,f4]@9 ~]/2", // D Dm
  J: "e3@3 e3 [c4,f4] ~ f4 f3, e4@4 ~@6 c4@5 ~, b3 ~@3 f3@3 ~", // F5
  K: "g3@6 ~@2 c4@2 c4@2 d4@3 ~, g4@11 ~@5, d4 ~, ~@6 g3@9 ~", L: "[g3,c4,e4]@3 [g3,c4]@4 [g3,c4], ~@3 e4@5",
  M: "[g3,b3,d4,g4]@3 [g3,b3]@4 [g3,b3], ~@3 [d4,g4]@5", N: "[f3,a3,c4,f4]@3 [f3,a3,c4,f4]@4 [f3,a3,c4]",
  O: "[f3,a3,c4,f4]@2 f3 ~@3 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2", // F G
  P: "~@3 f3 [g3,b3,d4]@3 g3, f3@5 ~@11, ~ [a3,c4,f4]@3 ~@4", // G F
  Q: "[e3 ~@3 e4@2 d4@4 e4@2 c4@2 ~@2 d4@4 ~@2 d4@6 c4@4, a2@15 ~ d3@16, a3@13 ~ a3@6 a3@12, c4@11 ~@21]/2",
  R: "~@2 e4 d4@2 e4 c4 a3, e3@15 ~, a3@13 ~@3, c4@11 ~@5", S: "d4@4 ~@2 d4@6 c4@3 ~, d3, a3@3 ~ a3@12",
  T: "~@2 e4 d4@2 e4 c4@2, [a2,e3,a3], c4@11 ~@5", U: "~@2 e4 d4@2 e4 ~ a3, e3@15 ~, a3@13 ~@3, c4@11 ~ c4@4",
  V: "[d3,d4]@2 ~@4 a3 d3, a3@11 ~@5, ~ d3@2 ~, ~@6 [d4,f4]@9 ~", // D Dm
  W: "b3 ~ e4 e3 [c4,f4] ~ f4 f3, e3@3 ~ f3@3 ~, e4 ~@3, ~@2 b3@5 ~@3 c4@5 ~", X: "[f3,a3,c4,f4] ~@2 [g3,b3,d4]!5",
  Y: "f3 [a3,c4,f4] ~ f3 [g3,b3,d4]@3 g3", Z: "~@13 [a2,a3,e4,a4]!3",
  AA: "[a2,a3,e4,a4]!4 [a2,a3,e4,a4]@7 ~ [a2,a3,e4,a4]@3 ~", // A5
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes · A5 A A5
const acoustic_guitar_steel_2 = note(`<
  ~@15
  [~@4 e4@3 ~@9, ~ b3@3 ~@4]
  ~@85
  [~@8 [a2,a3,e4,a4]!4 [a2,a3,e4] [a2,a3,e4,a4]!3]
  [[a2,a3,e4,a4]!2 [a2,a4] [a2,a3,e4,a4]!4 [a3,e4] [a2,a3,e4,a4]!5 ~@3]
  ~
>`).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.4)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@71 A B C D E F C D E F C D E F C D E F C D E F C D E F C D E G ~@2 H>".pickRestart({
  A: "[e2,e3,g3,b3]@5 ~ [f2,f3,a3,c4]@2 [f2,f3,a3,c4]@5 ~ [g2,g3,b3,d4]@2", B: "[g2,g3,b3,d4]", C: "e4@3 g4@3 c4@2",
  D: "d4@3 g4@3 b3@2", E: "c4@3 g4@4 ~", F: "c4@3 d4 ~ c4 ~ d4, ~@6 g4@7 ~@3", G: "c4@6 d4@7 ~@3",
  H: "~@12 [a2,a3,e4,a4]@3 ~", // A5
})).s("gm_distortion_guitar").gain(0.31).pan(0.6)

// other · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@76 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7>".pickRestart({
  A: "~@4 d4 ~ c4 ~",
})).s("gm_distortion_guitar").gain(0.2).pan(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@41 A B C D A B C D E F G H E F G I J K L M J K L N O P Q R O P S T 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 U ~@2 V
>`.pickRestart({
  A: "c2@2 ~@4 c2@9 ~", B: "g1@2 ~@4 g1@9 ~", C: "f1@2 ~@4 f1@9 ~", D: "f1@2 ~@4 g1@9 ~", E: "a1@4 ~@2 a1@9 ~",
  F: "d2@4 ~@2 d2@9 ~", G: "e1@4 ~@2 e1@9 ~", H: "f1@4 ~@2 f1@9 ~", I: "f1@2 ~ f1@3 g1 ~", J: "a1 ~@15", K: "d2 ~@15",
  L: "e1 ~@15", M: "f1 ~@15", N: "~@2 f1 ~@3 f1@6 g1@4", O: "a1@2 ~@4 a1@9 ~", P: "d2@2 ~@4 d2@9 ~",
  Q: "e1@2 ~@4 e1@9 ~", R: "f1 ~@5 f1@6 g1 ~@3", S: "e1@5 ~ f1 ~ f1@5 ~ g1 ~", T: "g1@6 g1 ~ g1 ~ g1 ~ g1@4",
  U: "f1@3 g1@3 ~@2", V: "~@12 a1@3 ~",
})).s("gm_electric_bass_finger").gain(0.36)

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

// drums · rim
const rim = s("rim").struct("<~@41 A@19 ~ A@3 ~ B C B C B C ~@33>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.41)

// drums · clap
const clap = s("cp").struct("<~@9 A ~ A ~ A ~ A ~ A@48 ~@39>".pickRestart({
  A: "~ x ~@2",
})).gain(0.46)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@72 A ~@7 B ~@6 C ~@8 D ~@6 E>".pickRestart({
  A: "~@3 x ~@4", B: "~ x", C: "~@14 x!2", D: "~@8 x!2 ~@6", E: "~@3 x",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@80 [~@4 x!4] ~@7 [~@7 x] ~@7 [~@14 x!2] ~@7>").gain(0.41)

// drums · hihat
const hihat = s("hh").struct("<~@49 [x!4]!24 ~@31>").gain(0.26)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@65
  [~ x ~ x ~ x ~ x]
  [~@3 x ~ x ~ x]
  [~ x ~ x ~ x ~ x]
  [~@3 x ~ x ~ x]
  [~ x ~ x ~ x ~ x]!3
  [~@3 x ~ x ~@2]
  ~@31
>`).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@88 [~@13 x ~@2] ~@7 [~@12 x!2 ~@2] ~@7>").gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<~@58 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@31>".pickRestart({
  A: "~ x ~@6",
})).gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@88 [~@4 x ~@3 x ~ x!3 ~@3] ~@15>").gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@49 A ~@7 A ~@7 A ~@5 A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 B>".pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.26)

// drums · ride
const ride = s("rd").struct("<~@73 [x!4]!28 ~ [~@13 x!3] [x!5 ~@7 x ~@3]>").gain(0.2)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@101 [~@8 x!8] [x!13 ~@3] ~>").gain(0.05)

// drums · congas
const congas = s("conga:13").struct("<~@33 [~ x ~@3 x!2 ~]!24 ~@8 [~ x ~@3 x!2 ~]!35 ~@4>").gain(0.98)

// drums · congas
const congas_2 = s("conga:18").struct("<~@33 [~@7 x]!24 ~@8 [~@7 x]!35 ~@4>").gain(0.98)

// drums · congas
const congas_3 = s("conga:33").struct("<~@33 [~@3 x!2 ~@3]!24 ~@8 [~@3 x!2 ~@3]!35 ~@4>").gain(0.98)

stack(
  alto_sax, rock_organ, piano, acoustic_guitar_steel, acoustic_guitar_steel_2, distortion_guitar,
  distortion_guitar_soft, bass, kick, rim, clap, snare, snare_soft, low_tom, hihat, hihat_soft, mid_tom, open_hat,
  high_tom, crash, ride, ride_soft, congas, congas_2, congas_3
)

More by De Dijk