Strudelify

ue man

Pino Daniele

KeyF majorTempo100 bpm
0:00/0:00
// ue man — Pino Daniele
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5976363; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · rock organ · "Organo Rotary, B"
const rock_organ = note(`<
  ~ A B A C B D A E F G A H A B I A B J A K L H I G A B A C B J I K L G I G A B A C B D A E F G A H A B I A B J A K L H
  I G A B A C B J I K L G I G A B A C B D A E F G A H A B A C B D A E F G A H M
>`.pickRestart({
  A: "[c4,e4,g4,bb4]", B: "[c4,eb4,f4,a4]", C: "[e4,g4,bb4,c5]", D: "[eb4,f4,a4,c5]", E: "[db4,e4,g4,a4]",
  F: "[c4,d4,eb4,gb4,a4]", G: "[b3,d4,f4,g4]", H: "[c4,d4,f4,g4]", I: "[c4,e4,g4]", J: "[a3,c4,eb4,f4]",
  K: "[a3,db4,e4,g4]", L: "[c4,d4,e4,gb4]", M: "[c4,e4,g4,bb4,d5]",
})).s("gm_rock_organ").gain(0.25)

// bass · electric bass finger · "Basso elettrico, C"
const bass = note(`<
  ~ A B C A D B E F G H E I J B K L M N O P Q R O S T B U O V W X F Q Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV R AW R AN AO AP AQ AR AS AT AU AV R AW R Z AX AP AY AZ BA BB BC BD R BE BF Z AX AP AY AZ BA BB BC
  BD R BE BF BG
>`.pickRestart({
  A: "c2!2 ~ c2!3 ~ bb1", B: "f1!2 ~ f1!3 ~ bb1", C: "c2!2 ~ g1 c2!2 ~ bb1", D: "f1!2 ~ f1!3 ~ f1",
  E: "c2!2 ~ c2!3 ~ c2", F: "a1!2 ~ a1!3 ~ a1", G: "d2!2 ~ d2!3 ~ d2", H: "g1!2 ~ g1!3 ~ b1",
  I: "g1@2 g1@2 ~@2 g1@2 g1@2 g1@2 c2 bb1 c2@2", J: "c2@2 c2@2 ~@2 bb1@2 c2@2 c2@2 c2 bb1 c2@2",
  K: "c2@2 c2@2 ~@2 eb2 e2 c2@2 c2@2 bb1@4", L: "c2@2 c2@2 ~@2 c2@2 c2@2 c2@2 c2 eb2 e2@2", M: "f2!2 ~ eb2 f2!2 c2@2",
  N: "f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 f2 eb2 f2@2", O: "c2@2 c2@2 ~@2 g2@2 c3 bb2 c3@2 g2 bb2 c3@2",
  P: "a1@2 a1@2 ~@2 e2@2 a2 g2 a2@4 a2@2", Q: "d2@2 d2@2 ~@2 a1@2 d2@2 d2@2 d2 c2 d2@2", R: "g1!2 a1!2 bb1!2 b1!2",
  S: "g2@2 g2@2 f2@2 f2@2 eb2@2 eb2@2 c2 bb1 c2@2", T: "c2@2 c2@2 ~@2 c2@2 c2@2 c2@2 c2 bb1 c2@2",
  U: "c2@2 c2@2 eb2 e2 g2@2 c3@2 c3@2 bb2 g2 eb2@2", V: "f2@2 f2@2 ~@2 c2!2 f2@2 f2@2 ~@2 c2@2",
  W: "f2@2 f2@2 ~@2 c2!2 f2@2 f2@2 f2 eb2 f2@2", X: "c2@2 c2@2 ~@2 g1@2 c2@2 c2@2 ~@2 c2 eb2", Y: "g1!2 ~ g1 a1@2 b1@2",
  Z: "c2@2 c2@2 ~@2 c2!2 c2@2 c2@2 ~@2 c2 bb1", AA: "g1@2 g1@2 ~@2 g1!2 g1@2 g1@2 ~@2 b1@2",
  AB: "c2@2 c2@2 ~@2 g1@2 c2@2 c2@2 c2 bb1 c2@2", AC: "f1@2 f1@2 ~@2 f1@2 f1@2 f1@2 bb1 f1 bb1@2",
  AD: "c2@2 c2@2 ~@2 c2 bb1 c2@2 c2@2 ~@2 c2@2", AE: "c2@2 c2@2 eb2 e2 g2@2 c3@2 c3@2 g2 bb2 c3@2",
  AF: "f2@2 f2@2 ~@2 f2 eb2 f2@2 f2@2 c2 eb2 f2@2", AG: "f2@2 f2@2 ~@2 c2 eb2 f2@2 f2@2 f2 eb2 f2@2",
  AH: "c2@2 c2@2 ~@2 g2@2 c3 bb2 g2@2 f2 eb2 c2@2", AI: "a1@2 a1@2 a2 g2 e2@2 a1@2 a1@2 e2 g2 a2@2",
  AJ: "d2@2 d2@2 ~@2 d2 c2 d2@2 d2@2 ~@2 c2 d2", AK: "g1@2 g1@2 ~@2 d2 f2 g2@2 g2@2 ~@2 c2 bb1",
  AL: "c2@2 c2@2 eb2 e2 g2@2 c3@2 c3@2 bb2 g2 f2@2", AM: "g2@2 g2@2 f2@2 f2@2 eb2@2 eb2@2 g1 bb1 eb2@2",
  AN: "c2@2 c2@2 ~@2 c2!2 c2@2 c2@2 ~@2 c2!2", AO: "f1@2 f1@2 ~@2 f1!2 f1@2 f1@2 eb2 c2 eb2@2",
  AP: "c2@2 c2@2 ~@2 g2 bb2 c3@2 c3@2 bb2 g2 eb2@2", AQ: "c2@2 c2@2 c3 bb2 c3@2 c2@2 c2@2 ~@2 c2!2",
  AR: "f1@2 f1@2 ab1 a1 c2@2 f2@2 f2@2 eb2 c2 ab1@2", AS: "f1@2 f1@2 ~@2 f2 eb2 f1@2 f1@2 bb1@4",
  AT: "c2@2 c2@2 ~@2 c2 bb1 c2@2 c2@2 c2 eb2 e2@2", AU: "a1@2 a1@2 ~@2 e2 g2 a2 g2 a2@4 g2 e2",
  AV: "d2@2 d2@2 ~@2 d2 c2 d2@2 d2@2 ~@2 d2 c2", AW: "c2@2 c2@2 ~@2 g2 bb2 c3 bb2 g2@2 f2 eb2 c2@2",
  AX: "f1@2 f1@2 ~@2 f1!2 f1@2 f1@2 f2 eb2 f2@2", AY: "c2@2 c2@2 c3 bb2 g2@2 c2@2 c2@2 c2 eb2 e2@2",
  AZ: "f2@2 f2@2 ~@2 f2 eb2 f2@2 f2@2 eb2@4", BA: "f2@2 f2@2 ~@2 f2 eb2 f2@2 f2@2 c3 bb2 eb2@2",
  BB: "c2@2 c2@2 ~@2 c2 bb1 c2@2 c2@2 g1@4", BC: "a1@2 a1@2 ~@2 a1@2 a1@2 a1@2 a2 g2 e2@2",
  BD: "d2@2 d2@2 ~@2 d2 c2 d2@2 d2@2 c2@2 c2@2", BE: "c2@2 c2@2 ~@2 g2 bb2 c3 bb2 c3@6", BF: "g2!2 f2!2 eb2!2 d2!2",
  BG: "c2",
})).s("gm_electric_bass_finger").gain(0.29)

// chords · piano · "Piano, E"
const piano = note(`<
  ~@13 A B C D B E F G H I F J K L K M B E K N O P F Q ~@12 A B R K L B S T O U V W A B X K L E Y Z AA P Y AB ~@25
>`.pickRestart({
  A: "[e5,bb5]!8", B: "[eb5,a5]!8", C: "[bb4,e5]@3 [bb4,e5] [bb4,e5]@2 [g4,bb4]@2", D: "[g5,bb5]!8", E: "[c5,eb5]!8",
  F: "[e5,g5]!8", G: "[db5,e5,g5]@3 [db5,e5,g5]@2 [db5,e5]@2 [db5,e5,g5]", H: "[c5,d5,e5]!4 [d5,e5]!3 [c5,e5]",
  I: "[b4,d5,f5] [d5,f5]!3 [c5,d5,f5]!2 [c5,d5] [c5,d5,f5]", J: "[b4,f5]@3 [b4,f5] [b4,d5]@4", K: "[bb4,e5]!8",
  L: "[a4,eb5]!8", M: "[e5,bb5]@3 [e5,bb5]!3 [c5,e5]@2", N: "[db5,a5]!4 [db5,g5]!4", O: "[c5,gb5]!8",
  P: "[b4,d5]!4 [d5,f5]!4", Q: "[c5,d5,f5]!4 [d5,f5]!4", R: "[e5,bb5]@2 [e5,bb5]!14",
  S: "[e5,g5]@2 [e5,g5]!6 [e5,g5]@2 [e5,g5]!6", T: "[db5,a5]!8", U: "[b4,d5]!8", V: "[c5,e5,g5] ~", W: "[b4,d5,f5] ~",
  X: "[e5,bb5]@2 [e5,bb5]@2 [e5,bb5]!4 [e5,bb5]@2 [e5,bb5]@2 [e5,bb5]!4", Y: "[g4,c5,e5] ~", Z: "[g4,a4,db5,e5] ~",
  AA: "[gb5,a5]!4 [c5,gb5]!4", AB: "[g4,c5,d5,f5] ~",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~ A@11 B A@11 C A@11 D A@11 E A@11 C A@11 D A@24 ~>".pickRestart({
  A: "x ~@2 x ~ x ~ x", B: "x ~@2 x!2 ~ x ~", C: "x ~@2 x ~@4", D: "x", E: "x ~@2 x ~ x ~@2",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~ A@11 B A@11 B A@11 C A@11 B A@11 B A@11 ~ A@24 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~ x!2 ~@8",
})).gain(0.32)

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

// drums · low tom
const low_tom = s("lt").struct("<~@24 [~@12 x!2 ~@2] ~@23 [~@14 x!2] ~@49>").gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 A ~@11 B ~@11 C ~@11 D ~@11 C ~@11 E ~@25>".pickRestart({
  A: "~@8 x!3 ~ x!3 ~", B: "~@10 x!2 ~@2 x!2", C: "~@12 x!4", D: "~@12 x!2 ~@2", E: "~@4 x!3 ~@5 x!4",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@24 A ~@11 B ~@23 C ~@11 B ~@25>".pickRestart({
  A: "~@8 x!2 ~@6", B: "~@8 x!3 ~@5", C: "~@4 x!2 ~@2",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@9 A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "x",
})).gain(0.32)

stack(rock_organ, bass, piano, kick, snare, hihat, low_tom, mid_tom, high_tom, crash)

More by Pino Daniele