Strudelify

Insensitive

Jann Arden

KeyD majorTempo92 bpm
0:00/0:00
// Insensitive — Jann Arden
// 92 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "Pad 3 Pol" pad poly (copy of ch 4 "Pad 7 (ha" pad halo)
// note: Full arrangement: all 101 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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.

// chords · electric guitar clean · "Electric"
const electric_guitar_clean = note(`<
  ~@9 A@2 B@2 C@4 D@6 E@3 ~@2 F G@3 ~@11 A@2 B@2 C@4 D@6 E@3 ~@2 F G@3 ~@14 F G@3 ~@11 A@2 H@3 ~
>`.pickRestart({
  A: "[~ f#5@2 ~@4 f#6@25, d4@6 [d4,a4]@13 ~@45, ~ [a4,d5]@6 d5@5 d5@7 ~@45, ~@2 f#5@3 ~@11, ~@13 [a5,d6]@51]/2", // D5
  B: "[~@7 d4@5 ~ [d4,f#5]@51, b4@7 [d3,f#4]@57, d4@3 b3@29, ~ d5@11 b4@52, ~@2 f#5@11 d5@6 ~@45]/2", // D
  C: "[~@21 d4@42 ~@15 a4@50, g3@6 g4@3 d4@10 [g4,b4]@44 a3@7 a4@6 [d5,e5]@52, ~ [b3,d4]@7 [g3,b3]@5 [g3,b3] g4 d3@49 ~ [a4,d5]@5 [d6,e6]@58, ~@2 [g4,b4]@5 b4@7 [g2,b2]@50 ~@2 e5@5 d5 a5@56, ~@3 g5@5 g5@12 [g3,b3,g5]@44 d4@12 a3 d4@5 ~@46]/4", // G Dsus2 Bm G D5 Dsus2 G
  D: "[~ [d5,f#5]@5 ~ d5@5 ~ [d6,f#6]@50 ~@14 f#5@50 ~@3 [b4,g5]@4 ~@2 b3@4 ~@2 b2@49 ~, [d4,a4]@6 [d4,a4]@12 ~@45 d4@7 b3@58 b3@7 g3@5 d3@52, ~@7 f#5@12 ~@46 [d5,f#5]@10 d4 b4@52 ~ [d4,g4]@5 d4@7 g2@50 ~, ~@12 a5@51 ~@6 d3@7 d5@5 ~@53 g4@6 g3 [b3,g4]@7 ~@44, ~@12 d5@7 ~@45 b4@6 d4 f#4@56 g3@8 [b4,g5]@12 ~@45]/6", // D Em D5 D G5 Em
  E: "[~@13 [a3,d4]@64 ~@19, ~@3 [e5,a5,d6]@32 ~@13, ~@7 [a4,e6]@64 ~@25, ~ d5@8 ~@3]/3", // D5 Dsus2 A5
  F: "~@12 a4@2 ~ [a3,e5], ~@11 e5@3 e4@2, ~@23 [a5,c#6]@9, ~@3 e6, ~@29 [a4,c#5]@3", // A5 A
  G: "[~@7 a5@32 ~@9, d4@3 e4@64 ~@29, ~ [a4,d5]@6 d5 a4@5 f#6@64 ~@19, ~@2 c#4@11 d5@6 ~@77, ~@2 f#5@5 [d4,f#5]@5 d6@64 ~@20]/3", // D5 D
  H: "[~@7 d4@5 ~ [d4,f#5]@64 ~@19, b4@7 [d3,f#4]@64 ~@25, d4@3 b3@32 ~@13, ~ d5@11 b4@64 ~@20, ~@2 f#5@11 d5@6 ~@77]/3", // D
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.6)

// chords · electric guitar clean · "Electric" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@9 A@2 B@2 ~@2 C@2 D@2 E@2 F@2 ~@6 G@3 ~@11 A@2 B@2 ~@2 C@2 D@2 E@2 F@2 ~@6 G@3 ~@15 G@3 ~@11 A@2 H@3 ~
>`.pickRestart({
  A: "[~@5 f#5@11, ~@9 d4@23, ~@19 [a4,d5]@45]/2", B: "[~@19 [d5,d6,f#6]@45, ~@9 b5@23]/2",
  C: "[~@5 a3@11, ~@18 [a2,d4,e4]@45 ~, ~@19 d3@45]/2", D: "[~@19 [d5,f#5]@45, ~@18 [d4,a4]@45 ~]/2",
  E: "[~@19 f#6@44 ~, ~@17 d5@46 ~, ~@9 [b5,d6]@23]/2", F: "[~@20 b3@43 ~, ~@9 [d4,g4]@23, ~@19 [g3,b4,g5]@44 ~]/2",
  G: "[~@5 a4@16 ~@3, ~@19 [d4,d5,f#5]@64 ~@13]/3", H: "[~@19 [d5,d6,f#6]@64 ~@13, ~@9 b5@32 ~@7]/3",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.6)

// chords · electric guitar muted · "Electric"
const electric_guitar_muted = note(`<
  ~@25 A B C D A B E F ~@2 G H I J K L M N ~@16 A B C D A B E F ~@10 A B C D A B E F ~@16
>`.pickRestart({
  A: "[d2,d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D
  B: "[f#2,d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D
  C: "[g2,g3,b3,c4,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  D: "[a2,a3,d4,e4] ~ [a3,d4,e4] ~ [a3,d4,e4] ~ [a3,d4,e4] ~ [a2,a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // Asus4 A
  E: "[b2,d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~", // Bm
  F: "[d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~ [d3,f#3,b3] ~", // Bm
  G: "[d3,f#3,a3]@2 ~@2 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3", // D
  H: "[d3,f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@2 d3 [f#3,a3] ~@3 [d3,f#3,a3] ~@3 [d3,f#3,a3] ~@2 [d3,a3] f#3 ~@3 [d3,f#3,a3] ~@3", // D F#m D D5 D
  I: "[d3,f#3,b3] ~@3 [d3,f#3] ~@3 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@2 b3 [d3,f#3] ~@2 [d3,b3] f#3 ~@2 b3 [d3,f#3] ~@2 [d3,b3] f#3 ~@2 b3, ~@3 b3@2 ~@27", // Bm D Bm D G D G
  J: "[d3,f#3] ~@2 b3 [d3,f#3] ~@2 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@3 [d3,f#3,b3] ~@3 [d3,g3,b3]", // D Bm G
  K: "~@3 [d3,b3] g3 ~@2 [d3,b3] g3 ~@3 [d3,g3,b3] ~@2 b3 [d3,g3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@2 [d3,g3,b3] ~@3 [d3,g3,b3]", // G G5 G
  L: "~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [d3,g3,b3] ~@3 [b3,f4]", // G Bdim
  M: "[d4,e4] ~@2 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,d4,e4] ~@3 [a3,c#4,e4]", // Dsus2 Asus4 A
  N: "~@3 e4 [a3,c#4] ~@2 [a3,c#4,e4] ~@4 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3", // A
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.6)

// bass · synth bass 2 · "Synth Bas"
const bass = note(`<
  ~ A B C D@2 E F@2 G H C I J K L M G N C I O J P Q N R K Q H S I T U M G@2 C V E W F@2 G H C I J K L M G N C I O J P Q
  N R K Q H S I T X M Y Z AA AB AC AD@3 N R K Q H S I T AE M G@2 C V E W F@2 G H C AF ~@2
>`.pickRestart({
  A: "d1@9 ~@3 d1@2 ~@2 d1@13 ~@3", B: "d1@9 ~@3 d1@2 ~@2 d1@15 ~", C: "b1@5 ~ b1 ~ b1@7 ~",
  D: "[b1@10 ~@2 b1@2 ~@2 b1@14 ~ g1@10 ~@3 g1@2 ~@2 g1@14 ~@2]/2", E: "g1@5 ~ g1 ~ g1@7 ~",
  F: "a1@10 ~@2 a1@2 ~@2 a1@15 ~", G: "d1@5 ~ d1 ~ d1@7 ~", H: "d1@10 ~@2 d1@2 ~@2 d1@15 ~",
  I: "b1@11 ~ b1@2 ~@2 b1@15 ~", J: "g1@11 ~ g1@2 ~@2 g1@14 ~@2", K: "g1@11 ~ g1@2 ~@2 g1@15 ~",
  L: "a1@11 ~ a1@2 ~@2 a1@14 ~@2", M: "a1@11 ~ a1@2 ~@2 a1@15 ~", N: "d1@11 ~ d1@2 ~@2 d1@15 ~",
  O: "g1@10 ~ g1@2 ~@3 g1@14 ~@2", P: "a1@5 ~ a1 ~ a1@7 ~", Q: "a1@11 ~ a1@2 ~@2 a1@16",
  R: "f#1@10 ~@2 f#1@2 ~@2 f#1@15 ~", S: "f#1@10 ~@2 f#1@2 ~@2 f#1@15 f#1", T: "b1@10 ~@2 b1@2 ~@2 b1@15 ~",
  U: "e1@10 ~@2 e1@2 ~@2 e1@15 ~", V: "b1@10 ~@2 b1@3 ~ b1@15 ~", W: "g1@10 ~@2 g1@3 ~ g1@14 ~@2",
  X: "e1@5 ~ e1 ~ e1@7 ~", Y: "d1@10 ~@7 b1@14 ~", Z: "a1@15 ~ g1@11 ~ g1@2 ~@2", AA: "g1@15 ~ d1@11 ~@2 d1@2 ~",
  AB: "d1@8 a1@6 a1 ~", AC: "a1@15 ~ b1@15 ~", AD: "[a1@16 g1@31 ~ a1@26 ~@2 a1@2 ~@2 a1@16]/3",
  AE: "e1@11 ~ e1@2 ~@2 e1@15 ~", AF: "b1@11 ~@21",
})).s("gm_synth_bass_2").gain(0.4).pan(0.3)

// other · piano · "Honky Ton"
const piano = note("<~ A B@2 C@2 D E@3 ~@91>".pickRestart({
  A: "~@8 d5@12 ~ c#5@10 ~", B: "[d5@10 ~ c#5@26 ~@3 c#5@11 b4@11 ~@2]/2", C: "[c#5@11 b4@26 ~@2 b4@11 ~@2 a4@11 ~]/2",
  D: "b4@3 a4@4 ~", E: "[a4@30 ~ d5@9 c#5@8 b4@8 a4@16 ~@24]/3",
})).s("gm_piano").gain(0.5)

// chords · synth strings 1 · "Synth Str"
const synth_strings_1 = note(`<
  A@8 ~ B@8 C@8 D@4 E@4 F G@3 H@6 B@8 C@8 I@4 J@4 K@7 L@7 E@4 F G@3 M@2 N@4 O@6
>`.pickRestart({
  A: "[~@31 [a3,a4]@63 ~@2 [b3,b4]@58 ~@5 [g3,b3,f#4,g4,b4,f#5]@62 ~@2 [a3,e4,a4,e5]@33, ~@31 [f#3,e4,f#4,e5]@124 ~@101]/8", // A B Gmaj7 A5 F#7
  B: "[[a4,d5]@63 d5@64 ~ g4@63 [a4,e5]@31 ~ b4@8 [a4,c#5]@8 [g4,b4]@8 [f#4,a4]@9, f#4@126 ~@2 d5@94 d5@9 ~@25, ~@63 b4@127 ~@66]/8", // D5 A5 A G F#m
  C: "[g4@4 ~ a4@57 ~ [b4,d5]@63 ~ [g4,b4]@63 [a4,e5]@32 ~ d5@8 [a4,c#5]@8 [g4,b4]@8 [f#4,a4]@9, d5@63 ~@64 d5@94 ~ b4@9 ~@25, ~@5 f#4@121 ~@97 c5 ~@32]/8", // Bm G A5 A G F#m
  D: "[[f#4,a4]@59 ~ [g4,b4]@29 ~@6 [a4,d5,e5]@17 [a4,c#5,e5]@14 ~@2, d4@89 ~@39]/4", // F#m G Asus4 A
  E: "[~ d4@58 ~ [d4,f#4,b4]@32 ~@2 [e4,f#4,b4]@17 ~ [d#4,f#4,b4]@15 ~, [f#4,a4]@59 ~ a#4@2 ~@66]/4", // Bm Esus2 B F#m
  F: "[e4,g4,b4]@7 ~", G: "[[a4,c#5,e5]@29 ~@2 [d4,f#4,a4]@64 ~]/3",
  H: "[[d4,f#4,b4]@61 ~@2 [d4,g4,b4]@58 ~@6 d5@32 ~ c#5@29 ~@3, a#4 ~@126 [a4,e5]@62 ~@3, ~@127 g4@6 ~@59]/6", // Bm G A5
  I: "[[f#4,a4]@30 [g4,b4]@14 ~@2 [a4,d5]@10 [a4,c#5]@7 ~, d4@44 ~@2 e5@17 ~]/4", // F#m G D5 A
  J: "[[d4,f#4,a4]@61 ~@2 [d4,f#4,b4]@31 ~ [e4,f#4,b4]@16 ~ [d#4,f#4,b4]@14 ~@2]/4", // D Bm Esus2 B
  K: "[[e4,g4,b4]@29 ~@3 [a4,c#5]@27 ~@4 a4@17 [d5,f#5]@15 ~ [c#5,e5]@14 ~ [g4,b4,d5]@31 ~ [f#4,a4,d5]@27 ~@2 [a4,c#5,e5]@32 ~@4 [a4,d5,f#5]@16, ~@31 e5@27 ~@5 [d4,f#4]@48 ~@113, ~@80 a4@30 ~ c5 ~@60 f5 ~@51]/7", // Em A D C#m G D A D
  L: "[[c#5,e5]@14 ~ [g4,b4,d5]@31 ~ [a4,d5]@30 ~ a4@18 ~ d4@58 ~ [g4,b4]@29 ~@6 [a4,d5,e5]@17 [a4,c#5,e5]@14 ~@2, ~@47 e5@57 ~@120, ~@78 c#5@27 ~@119, ~@96 [f#4,a4]@59 ~@69]/7", // C#m G D5 G Asus4 A F#m
  M: "[~ [d4,f#4,b4]@60 ~@3]/2", N: "[[g4,b4,d5]@59 ~@5 d5@31 c#5@27 ~@6, ~@63 e5@59 ~@6, ~@64 a4@59 ~@5]/4",
  O: "[[d4,a4,d5]@63 b4@23 ~@2 b4@3 [f#4,b4]@4 ~ [d4,f#4]@37 ~@59, f#4@86 [d4,f#4]@5 d4@3 ~ b4@95 ~@2, ~@63 d5@64 ~@65]/6", // D5 B5 D
})).s("gm_synth_strings_1").gain(0.15).pan(0.7)

// other · distortion guitar · "Distortio"
const distortion_guitar = note("<~@37 A B@2 C@2 D ~@26 E@5 F@3 ~@10 G@2 H@2 I@3 ~@7>".pickRestart({
  A: "~@13 a3@2 d4@2 ~@3 e4@2 ~ f#4@2 ~@2 d4@3 b3@2, ~@13 e4 ~@2", B: "[d4@17 ~@6 e3@4 d3@25 ~@12]/2",
  C: "[b4@4 a4@4 g4@4 f#4@4 e4@4 f#4@3 g4@3 ~@2 f#4@15 ~ e4@2 f#4 e4@14 a3@3]/2", D: "~ a3@23 ~@8, b3 ~@15",
  E: "[~@31 b3@3 ~@2 [b3,c4]@2 ~ b3@4 ~ a3@3 ~ b3@3 ~ b3@3 a3@2 ~@3 b3@18 ~@2 a3@14 ~ g3@3 ~ f#3@2 ~@2 g3@2 ~@3 a3@35 ~@9 f#4@3 ~ a4@2 ~@2]/5", // Cmaj7
  F: "[f#4@3 e4@3 ~ d4@3 ~ a3@2 ~@2 b3@3 ~ b3@3 ~ a3@2 ~@2 b3@16 ~@5 a4@14 ~ g4@4 ~ f#4@2 ~@3 g4@3 ~@2 a4@14 ~@4]/3",
  G: "[~@15 f#4@2 e4@2 d4@3 b3 d4@3 ~@2 e4@2 ~ d4@17 ~@16]/2",
  H: "[~@12 d4@2 e4 f#4@3 ~@2 f#4@5 ~@3 b4@12 f#4@3 ~ e4 ~@3 d4@3 ~ b3@4 ~@8]/2",
  I: "[~@8 f#5@16 e5 ~@3 f#5@8 e5 ~@3 d5@4 b4 ~@3 d5@2 ~@2 b4@6 ~@2 a4@21 ~@15]/3",
})).s("gm_distortion_guitar").gain(0.6).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B@3 C B C D B@18 C B C B C B C B C B C B@3 C B C B@17 C B C B C B C B C B E B@3 E F G C@2 B C B C B C B C B C B@3 C
  B C B@3 ~@3
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!3 ~ x", D: "x ~@2 x ~@4", E: "x!2 ~ x!2 ~@2 x",
  F: "x ~@5 x ~ x ~@4 x ~@2", G: "~@3 x!2 ~@2 x",
})).gain(0.66)

// drums · rim
const rim = s("rim").struct("<~@8 A B@15 C ~@18 B@15 C ~@36 B@3 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.66)

// drums · snare
const snare = s("sd").struct("<A B@6 C ~@16 D B@18 ~@15 D B@16 E A B@18 ~@6>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@3 x!3 ~ x!2 ~@2 x!3 ~@2", D: "~@10 x!3 ~@3", E: "~@4 x ~@6 x!2 ~@3",
})).gain(0.66)

// drums · low tom
const low_tom = s("lt").struct("<[~@3 x] ~@6 [~@7 x] ~@68 [~ x ~@2] ~@24>").gain(0.66)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 [~@9 x ~@6] ~@68 [~ x ~@14] ~@24>").gain(0.66)

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

// drums · high tom
const high_tom = s("ht").struct("<~@75 [~@7 x] ~@25>").gain(0.66)

// drums · crash
const crash = s("cr").struct("<~ A ~@6 A ~@16 A ~@33 A ~@15 B@2 ~@24>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.66)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@9 [~@3 x]!15 ~@19 [~@3 x]!15 ~@37 [~@3 x]!3 ~@3>").gain(0.95)

stack(
  electric_guitar_clean, electric_guitar_clean_2, electric_guitar_muted, bass, piano, synth_strings_1,
  distortion_guitar, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, woodblocks
)