Strudelify
Shout cover art

Songs From The Big Chair

Shout

Tears for Fears

KeyG minorTempo98 bpm
0:00/0:00
// Shout — Tears for Fears
// 98 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@4 A@2 B@2 C@2 D@4 B@2 C@2 A@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 A@2 B@2 C@2 A@2 E@2 F@2 E@2 F@2 G@2 H@2 I@2 G@4 H@2
  I@2 ~@4 C@2 A@2 ~@8 J@2 K@2 L@2 J@2 E@2 M@2 E@2 F@2 J@2 K@2 L@2 J@4 K@2 L@2 J@4 K@2 L@2 J@4 K@2 L@2 J@4 K@2 L@2 J@4
>`.pickRestart({
  A: "[g1,g2]/2", B: "[eb1,eb2]/2", C: "[c1,c2]/2", D: "[g1,g2]/4", E: "[bb1,bb2]/2", F: "[c2,c3]/2", G: "g1/2",
  H: "eb1/2", I: "c1/2", J: "g2/2", K: "eb2/2", L: "c2/2", M: "[c2, c3 ~@31]/2",
})).s("gm_synth_strings_1").gain(0.44)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@36 A@2 B@2 C@2 A@2 ~@8 A@2 B@2 C@2 A@4 B@2 C@2 ~@8 D E F G D E F G H I J K L M N O P Q L R P Q S T H I J K L M N O H
  I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H ~
>`.pickRestart({
  A: "g1!11 ~@5", B: "eb1!11 ~@5", C: "c2!11 ~@5", D: "g2@2 ~@5 d2 f2 g2 g1 ~@5",
  E: "~@2 c2 d2 f2!2 ~ g2 ~ c2 d2 c2 f2 g2 g1 ~", F: "g2 ~@6 d2 f2 g2 g1 ~@5",
  G: "~@2 c2 d2 f2!2 ~ g2 ~ g1 c2 d2 f2 g1 c2 d2", H: "g1 ~ g1@3 ~ g1 ~ g1@5 ~ g1!2", I: "g1 ~ g1@3 ~ g1 ~ g1@5 ~ g1@2",
  J: "eb1 ~ eb1@3 ~ eb1 ~ eb1@5 ~ eb1!2", K: "eb1 ~ eb1@3 ~ eb1 ~ eb1@5 ~ eb1@2", L: "c2 ~ c2@3 ~ c2 ~ c2@5 ~ c2!2",
  M: "c2 ~ c2@3 ~ c2 ~ c2@5 ~ c2@2", N: "g1 ~ g1@3 ~ g1 ~ g1@5 ~ g1 ~", O: "g1 ~ g1@3 ~ g1 ~ g1@6 ~@2",
  P: "bb1 ~ bb1@3 ~ bb1 ~ bb1@5 ~ bb1!2", Q: "bb1!2 bb1@3 ~ bb1 ~ bb1@5 ~ bb1@2", R: "c2!2 c2@3 ~ c2 ~ c2@5 ~ c2@2",
  S: "c2 ~ c2@2 ~@2 c2 ~ c2@5 ~ c2!2", T: "c2@11 ~ c2@4",
})).s("gm_synth_bass_2").gain(0.54)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@44 A@2 B@2 C@2 B@2 D@2 E@2 F G H I D@2 E@2 F G ~@11 J K L M N D@2 E@2 F G H I A@2 B@2 C@2 B@2 D@2 E@2 F G H I D@2
  E@2 F G H I D@2 E@2 F G H I D@2 E@2 F G H I D@2 E@2 F G H I O@2
>`.pickRestart({
  A: "[[bb3,c4,f4]@29 ~ [c4,f4] bb3]/2", B: "[[c4,d4,g4]@27 ~ [c4,d4,g4]@4]/2", C: "[[bb3,c4,f4]@29 ~@2 bb3]/2",
  D: "[[bb3,c4,f4]@29 ~ [bb3,c4] bb3]/2", E: "[[bb3,c4,f4]@26 ~@2 [bb3,c4,f4] ~@3]/2",
  F: "[g3,c4,f4]@7 ~ [g3,c4,f4] ~@2 [g3,c4,g4]@4 ~", // Csus4 C5
  G: "[g3,c4,f4] ~@3 [g3,c4,f4] ~@3 [g3,c4,f4] ~ g3 [g3,c4,g4]@2 ~@3", // Csus4 C5
  H: "[c4,f4,bb4] ~ bb3 ~ [bb3,c4,f4] ~@3 [bb3,c4,f4] ~ bb3 [bb3,c4,g4]@5", // Fsus4 Bbsus2 C7
  I: "~@4 [bb3,c4,f4] ~ bb3 ~ [bb3,c4,f4] ~@2 [bb3,c4,g4]@3 ~@2", J: "~@10 [bb3,c4,f4]!3 [bb3,c4] ~@2",
  K: "~@4 [g4,g5]@3 ~@9", L: "~@10 [bb3,c4] [bb3,c4,f4]!3 ~@2", M: "~ [g4,g5] ~@2",
  N: "~@10 [bb3,c4]!2 [bb3,c4,f4] [bb3,c4] ~@2", O: "[[bb3,c4,f4]@29 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.36)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@49 A ~@3 B ~@5 C ~ B ~@17 D ~ E ~ B ~@5 C ~@5 A ~@3 B ~@5 C ~ B ~@5 C ~ B ~@5 C ~ B ~@5 C ~ B ~@5 C ~@2
>`.pickRestart({
  A: "~@14 [c4,f4] ~", B: "~@14 f4 ~", C: "~@7 bb3 ~@2 bb3 ~@5", D: "~@10 f4 ~@5", E: "~@10 f4!2 ~@4",
})).s("gm_electric_guitar_clean").gain(0.24)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note(`<
  ~@4 A B C D E F G ~ A B C H E I G J K L M J N L O J P Q R J K L M L A B C D E F G J S L T J P L T L A B C D E F G ~ A
  B C D E F ~@16 A B C D E F G J N L U J S L T L A B C D E F G ~ A B C D E F G ~@17 A B C D E F G ~ A ~
>`.pickRestart({
  A: "g4 ~@3 g4 ~@3", B: "d5 ~ d5 ~ c5 ~ d5@2 ~@8", C: "d5@3 ~ d5 ~ c5 ~ d5@3 ~ d5 ~ c5 ~",
  D: "d5 ~ d5 ~ c5 ~ d5 ~@5 d5 ~ d5 ~", E: "g4@2 ~@12 g4 ~", F: "d5 ~ d5 ~ c5 ~ g4@2 ~@4 d5 ~ d5 ~", G: "g4 ~@7",
  H: "d5 ~ d5 ~ c5 ~ d5@2 ~@4 d5 ~ d5@2", I: "d5 ~ d5 ~ c5 ~ g4@2 ~@4 d5 ~ d5@2", J: "~@5 d5 ~ f4",
  K: "~@2 d5@3 ~ f4@4 ~@6", L: "~@6 d5 ~ f5 ~ d5 ~ f5 ~ d5 ~", M: "g5@2 ~@2 d5 ~ d5@4 c5@3 ~@3",
  N: "~@2 d5@2 ~@2 f4@3 ~@7", O: "g5@2 ~@2 d5 ~ d5@4 c5@4 ~@2", P: "~ d5 ~ f4@2 ~@3", Q: "~@8 f5 ~ d5 ~ f5 ~ d5 ~",
  R: "g5@3 ~ d5 ~ d5@4 c5@3 ~@3", S: "~@2 d5@3 ~ f4@3 ~@7", T: "g5@2 ~@2 d5 ~ d5@4 c5@2 ~@4",
  U: "g5@3 ~ d5 ~ d5@4 c5@2 ~@4",
})).s("gm_lead_3_calliope").gain(0.54)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@20 A B C@2 A C@4 B C@6 A B C D C@2 A C A B C@2 A C@3 E F G H G I E I E F G H G I ~@8 J K J K J K J K E F G H G I E I
  A B C@2 A C@3 E F G H G I E I E F G H G I E I E F G H G I E I E F G H G I E I E F G H G I E I E ~
>`.pickRestart({
  A: "f4!2 g4!2 c5!2 d5 d5@5 ~@4", B: "f4!2 g4!2 bb4!2 ~@2 f4!2 g4!2 bb4!2 ~@2", C: "f4!2 g4!2 c5!2 d5 d5@5 c5!2 ~@2",
  D: "f4!2 g4!2 c5!2 d5 d5@5 c5!2 bb4!2", E: "f4@2 g4@2 c5@2 d5@7 ~@3", F: "f4@2 g4@2 bb4!2 ~@2 f4@2 g4@2 bb4!2 ~@2",
  G: "f4@2 g4!2 c5@2 d5@6 c5!2 ~@2", H: "f4 g4 c5 d5@3 c5 bb4", I: "f4@2 g4@2 c5@2 d5@6 c5!2 ~@2",
  J: "d5 c5 d5 g4@10 ~ g4 bb4", K: "c5@3 ~ c5@2 ~ bb4 c5 d5 bb4 ~ c5 g4 bb4@2",
})).s("gm_piano").gain(0.27).pan(0.3)

// other · lead 7 fifths · "5THSAWWAVE" · Bb
const lead_7_fifths = note(`<
  ~@66
  [g4 g5 f4 ~ bb4 bb5 ~ g5@3 f4 g4 bb4 bb5 bb5@2, ~@6 g4@4 ~@3 bb4@2 ~]
  [g4 g5 f4 ~ bb4 bb5 ~ g5@3 f4 g4 bb4 [bb4,bb5] bb5 ~, ~@3 g4@2 ~@3]
  [g4 g5 f4 ~ bb4 bb5 ~ g5@3 f4 g4 bb4!2 bb5 ~, ~@3 g4@2 ~@3]
  [g4 g5 f4 ~ bb4 bb5 ~ g5@3 f4 g4 bb4 [bb4,bb5] bb5 ~, ~@6 g4@3 ~@7]
  ~@70
>`).s("gm_lead_7_fifths").gain(0.36)

// other · lead 7 fifths · "5THSAWWAVE" · soft notes
const lead_7_fifths_soft = note(`<
  ~@66
  [~@3 f5 ~@7 f5 g5 ~@3]!2
  [~@3 f5 ~@7 f5 g5 bb5 ~@2]
  [~@3 f5 ~@7 f5 g5 ~@3]
  ~@70
>`).s("gm_lead_7_fifths").gain(0.18)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@69 A B@4 ~@4 C D E F ~@8 G@4 H@2 I@2 ~@42>".pickRestart({
  A: "~@13 [c2,d2,e2,f2] [g2,a2,b2,c3,d3,e3,f3] [g3,a3,b3,c4,d4,e4,f4,g4]", // Dm7 G7
  B: "[[a4,b4,c5,d5] ~@9 c6@2 d6@4 bb5@2 c6@6 ~@2 g5@2 ~@3 g3 g5@6 ~@4 f5@2 g5@19 ~, c4@32 [g3,g4,d5]@31 ~, c3@29 ~@35, g5@12 f5@2 bb5@5 a5@3 ~@10, d6@3 f6@13 ~@16]/4", // D7 G5
  C: "g3@2 ~@5 d3 f3 g3 g2 ~@5", D: "~@2 c3 d3 f3!2 ~ g3 ~ c3 d3 c3 f3 g3 g2 ~", E: "g3 ~@6 d3 f3 g3 g2 ~@5",
  F: "~@2 c3 d3 f3!2 ~ g3 ~ g2 c3 d3 f3 g2 c3 d3", G: "[f6 g6]/4", H: "f6/2", I: "g6/2",
})).s("gm_rock_organ").gain(0.48)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@112 A B C D E F G C A H I@2 E J G K L M ~@10>".pickRestart({
  A: "g4@3 ~ g4@4 g4@3 ~ g4@4", B: "g4@3 ~ g4@4 g4@4 g4@4", C: "f4 g4 c5 d5@5", D: "f4 g4 bb4@2 f4 g4 bb4@2",
  E: "f5@7 eb5 d5@7 c5", F: "bb4@7 g4 f4@8", G: "f4 g4 c5 d5@3 c5 g4", H: "g5",
  I: "[bb5 a5 f5 d5@4 bb4@2 c5 d5@2 bb4 c5 d5@2]/2", J: "bb4@7 g4 f4@7 ~", K: "f4@2 g4@2 c5@2 d5@9 ~",
  L: "d5 f5@3 d5 f5@3", M: "d5@2 f5@2 d5@2 f5@2 d5@2 f5@5 ~",
})).s("gm_overdriven_guitar").gain(0.42)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<~@112 A B C@2 D@3 E@2 F@3 G@3 H@4 ~@9>".pickRestart({
  A: "~@4 g4@3 ~ g4@4 g4@3 ~", B: "g4@4 g4@3 ~ g4@4 g4@4", C: "[g4@2 f4 g4 c5 d5@5 f4 g4 bb4@2 f4 g4]/2",
  D: "[bb4@4 f5@7 eb5 d5@7 c5 bb4@7 g4 f4@8 f4@2 g4@2 c5@2 d5@6]/3",
  E: "[c5@2 g4@2 f4@2 g4@2 c5@2 d5@10 g4@3 ~ g4@4 g4@3 ~]/2", F: "[g4@2 g5@8 bb5 a5 f5 d5@4 bb4@2 c5 d5@2 bb4 c5]/3",
  G: "[d5@4 f5@7 eb5 d5@7 c5 bb4@7 g4 f4@7 ~ f4@2 g4@2 c5@2 d5@6]/3",
  H: "[c5@2 g4@2 f4@2 g4@2 c5@2 d5@9 ~ d5@2 f5@6 d5@2 f5@6 d5@2 f5@2 d5@2 f5@2 d5@2 f5@5 ~@13]/4",
})).s("gm_overdriven_guitar").gain(0.42).pan(1)

// drums · kick
const kick = s("bd").struct("<~@4 A@78 B@6 C ~ B@6 C ~ B@6 C ~ B@6 C ~ B@6 C ~ B@6 C ~ B@6 C ~ B ~>".pickRestart({
  A: "x ~ x ~@2 x ~@2 x ~@7", B: "x!2 ~ x!2 ~@3", C: "x ~ x ~@3 x ~ x ~@6 x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct(`<
  ~@20 A B A B A B A B A B A B A B A B ~@8 A B A B A B A B ~@38 A B A B A B A B ~@42
>`.pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@2 x ~@2 x ~@10",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@4 A@77 B A@6 C D A@6 C D A@6 C D A@6 C D A@6 C D A@6 C D A@6 C D A ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x!6 ~@2 x!4", C: "~@4 x ~@7 x ~ x!2", D: "x!2 ~@14",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct("<~@82 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@3 x",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C B C B C B C B C
  B C B C B C B C B C B C B C B C B C B C B C B C B C B C D A B A B A B A D C B C B C B C D C B C B C B C D C B C B C B
  C D C B C B C B C D C B C B C B C D C ~
>`.pickRestart({
  A: "~ x", B: "~@2 x!3 ~@3", C: "~ x!2 ~", D: "~@4 x ~ x ~ x ~ x!6",
})).gain(0.34)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@39 A ~ A ~ A ~ A
  ~@43
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<~@4 [~ x ~ x ~ x ~ x]!135 ~>").gain(0.49)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A@85 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A ~>".pickRestart({
  A: "~@5 x ~@10", B: "~@2 x!14",
})).gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A@85 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A ~>".pickRestart({
  A: "~ x ~@6", B: "~@2 x!8 ~@6",
})).gain(0.49)

// drums · crash
const crash = s("cr").struct(`<
  ~@82 A ~@3 A ~@3 A ~@7 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.49)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~ A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~@5 A ~ A ~@3 A ~ A ~ A ~ A ~ A ~
  A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@6
>`.pickRestart({
  A: "~@8 x!3 ~@5",
})).gain(2.2)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct(`<
  ~ A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~@5 A ~ A ~@3 A ~ A ~ A ~ A ~ A ~
  A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@6
>`.pickRestart({
  A: "~@11 x!2 ~@3",
})).gain(2.2)

// … 21 more lines

More by Tears for Fears