Strudelify
Keep Talking cover art

The Division Bell

Keep Talking

Pink Floyd

KeyE minorTempo102 bpm
0:00/0:00
// Keep Talking — Pink Floyd
// 102 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 144 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@27 A B C B A B C B A B D E F G H E F G H E F G H E F G I E F G H E F G H E F G H J K L M E F G H E F G H E F G H E F
  G I E F G H E F G H E F G H E F G I N O P O N O P O N O P O N Q P O E F G H J K L M J K L M J K L M A B C B A B C B R
  ~
>`.pickRestart({
  A: "~@3 d1", B: "e1@3 ~ d1@2 e1 ~@9", C: "~@12 d1@3 ~", D: "~@8 d3@2 ~@2 d2 c#2 c2 ~", E: "e1@5 ~ e1@2 e1@2 ~@4 d1@2",
  F: "e1@2 ~@9 e1 ~ e1 ~@2", G: "e1@3 e1!2 ~@2 d1", H: "e1@2 ~@7 e1 ~@2 e1 ~@2 e1", I: "e1@2 e1!3 ~ e1!2 ~ e1!7",
  J: "c1@5 ~ c1@2 c1@2 ~@4 c2 ~", K: "c1@5 ~ c1@2 c1@2 ~@6", L: "b1@5 ~ b1@2 b1 ~@5 a1@2", M: "b1@5 ~ b1 ~ b1 ~@5 b1 ~",
  N: "e1@4 e2 ~@3 e1 ~ e1@2 g1@3 ~", O: "e1@3 ~ d1@2 e1@2 ~@3 e1 g1@2 a1 ~",
  P: "e1@3 ~ e2@2 d2 [a1,b1,c2] e1 ~ e1@2 g1@3 ~", Q: "e1@3 ~ d1@2 e1@2 ~@3 e1 g1@2 a1@2", R: "e1",
})).s("gm_fretless_bass").gain(0.48)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note(`<
  ~@37 A B ~@2 C ~@3 C ~@3 C ~@7 C ~@3 C ~@3 C ~@7 C ~@3 C ~@3 C ~@7 C ~@3 C ~@3 C ~@4 D ~@3 D ~@3 D ~@3 D ~@6 C ~@22
>`.pickRestart({
  A: "~@9 c#3 [a#2,b2,c3] [f#2,g2,g#2] f2 ~ [a#1,b1] [f#1,g1,g#1]", B: "f1 ~@15", C: "~@10 e1 ~@3 e1 ~",
  D: "~@5 d2 [a1,b1,c2] g1 ~@8", // Am
})).s("gm_fretless_bass").gain(0.3)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@27 A B A B C B C B C B C@2 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 ~@4 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 D B D E F B D E D B F B F B F B F B C B ~@12 A B A B C B C B G ~
>`.pickRestart({
  A: "e3!4 e4@2 ~ e4 ~ e3 ~ e3 d4@2 ~ d4", B: "e3!2 ~ e3 e4@2 ~ e4 ~ e3 ~ e3 d4@2 e3 d4",
  C: "e3!2 ~ e3 e4@2 ~ e4 ~ e3 ~ e3 d4@2 ~ d4", D: "~ e3 ~ e3 e4@2 ~ e4 ~ e3 ~ e3 d4@2 ~ d4",
  E: "e3!2 ~ e3 e4@2 ~ e4 ~ e3 ~ e3 d4@2 e3 ~", F: "~@3 e3 e4@2 ~ e4 ~ e3 ~ e3 d4@2 ~ d4", G: "e3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.17).pan(0.2)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@27 A ~ A ~ B ~ B ~ B ~ B@2 ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@5 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
  ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~ B ~@13 A ~ A ~ B ~ B ~@3
>`.pickRestart({
  A: "~@14 e3 ~", B: "~@2 e3 ~@11 e3 ~",
})).s("gm_electric_guitar_muted").gain(0.08).pan(0.2)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@37 A B C B C D A E A B C B C D A E A B C B ~ B ~ F ~@41 A B C B C D A E ~@34
>`.pickRestart({
  A: "~@7 b3", B: "e4@3 e4@2 ~ e4@2 e4@3 d4@3 b3@2", C: "~@14 b3 ~", D: "e4@3 e4@2 ~ f#4@2 e4@3 d4@3 b3@2",
  E: "e4@3 e4@3 e4@2 e4@3 d4@3 b3@2", F: "e4@3 e4@3 f#4@2 e4@3 d4@3 b3@2",
})).s("gm_synth_brass_1").gain(0.35)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@11 A@4 B@2 C D E F@3 G H@2 ~@6 I@3 ~@9 J@2 ~@12 K ~ J@2 ~@4 L@3 ~@7 J@2 ~@14 J@2 ~@14 M@2 ~ N ~@4 O@2 ~@21 I@3 ~@2
>`.pickRestart({
  A: "[~@26 b4@12 a4 g4 a4@17 ~ b4@3 d5@3, [c3,e3,b3,e4]@15 ~@17]/4", B: "[e5@7 g5@8 ~]/2", C: "b4@10 ~@4 a4 b4",
  D: "g4@7 g4 f#4@6 g4 f#4", E: "e4", F: "[~@2 d4@3 ~ g4@13 ~@5 e4 f#4@13 ~@8 e4 f#4]/3", G: "g4@5 a4@3",
  H: "[b4@6 e5@21 ~@5]/2", I: "[~@10 e5@15 ~ e5@14 ~@8]/3", J: "[e3,a3,c4]/2", K: "[a3,d4,f#4]@15 ~",
  L: "[[b3,e4]@10 ~ b3@12 ~@5 e5 d5 b4 a4@17, c3 ~@2]/3", M: "[a3,c4]/2", N: "b4@3 b4@2 b4@2 ~ a#4@4 g4@3 ~",
  O: "[c4@11 ~@5]/2",
})).s("gm_electric_guitar_jazz").gain(0.28).pan(0.6)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@70 A@2 B C D E F G H I J@2 K L M N@2 ~@32 O@3 P@4 Q@2 R S T@2 U@3 ~@9>".pickRestart({
  A: "[[e3,b3,e4]@20 b3@2 a3 g3 a3 [g#3,a3] [f#3,g3] [g3,a3,a#3] g4@2 e4 d4, ~@20 e4@4 e4@4 b3 ~@3]/2", // E5 Amaj7 Gmaj7 Gm
  B: "g4 e4@2 e4@3 g4 ~@3 e5@6", C: "e5@12 e5 ~@2 e5, ~@7 [b4,e5]", D: "[a3,d4,f#4]@6 [a3,d4] [f#3,b3]",
  E: "[a3,d4] d3 [a3,d4] [f#3,b3]@6 ~ g3!2 b4@2 d5@2, ~@9 f#3@6 ~", F: "e5@12 e5@2 b4 a4",
  G: "g4@4 [a#3,b3,f4,f#4] [g#3,a3,d#4,e4] [f#3,g3,c#4,d4] [f3,c4] a3@2 e4@2 a3 g3 e3 d3", // F#maj7 Emaj7 Dmaj7 F5
  H: "e3@10 [c3,d3,e3] [a2,b2] b3@2 g3@2, ~@3 e4", // C Asus2
  I: "[a3,d4] e3 [a3,d4] [g3,b3]@10 [f3,f#3] [d3,d#3,e3,g#3,a3,a#3] [b2,c3,c#3,f3,f#3,g3]", // D5 G F#maj7
  J: "[b3@12 d4 ~ e4 ~ g4 f#4 e4@8 d4@3 g4 e4 ~, e2, e3@13 ~@3]/2", K: "g4 a4@3",
  L: "d4@2 a3 g3 c4@3 ~ a3@2 g3 ~ e3 d3 c3 ~", M: "b2@8 e3!2 ~ e3 d4 ~ e4 ~, e2@3 ~", N: "[g4 ~ e4@7 ~ d5@22]/2",
  O: "[e5@3 e5@3 e5@2 e5@18 d5 b4 d5 e5@15 e5 d5 b4 a4]/3", P: "[g4@13 a4@19]/4", Q: "[~@2 g4 e4 g4 a4 g4 a4@22 ~@3]/2",
  R: "e5@15 ~", S: "f#5", T: "[g5@20 f#5 g5@2 f#5@3 d5@2 b4@2 a4@2]/2",
  U: "[b4@20 e5 d5 b4 d5@2 b4 a4 g4 b4 a4 g4 d4@17]/3",
})).s("gm_distortion_guitar").gain(0.22)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note(`<
  ~@45 A ~@3 B ~@7 C ~@11 D ~@5 E ~ A ~@3 F ~ G ~ H ~@5 E ~ A ~@3 F ~@11 A ~@3 B ~@7 I ~@7 D ~@3 D ~@10
>`.pickRestart({
  A: "~@5 d4 ~@2 g3 ~ c3!2 f2 ~ c2 ~", B: "~@10 g3 ~ g3 ~ c3 ~", C: "~@2 d4 ~@2 g3!2 ~ g3 ~ c3 ~ g2!2 c2 ~",
  D: "~@2 d4 ~@2 g3 ~@2 c3 ~ c3!2 f2!2 c2!2", E: "~@11 g3 ~ g3 c3 ~", F: "~@5 c4 ~@2 g3 ~@5 c3 ~",
  G: "~@10 c4 ~ g3!2 c3 ~", H: "~@5 d4 ~@2 g3 ~ c3!2 f2!2 c2 ~", I: "~@2 d4@2 ~ d4 ~@2 g3@2 ~ c3!3 g2 ~",
})).s("gm_melodic_tom").gain(0.4)

// bass · lead 2 sawtooth · "SAW WAVE"
const bass_2 = note("<A@2 B@4 C@5 ~@133>".pickRestart({
  A: "e2/2", B: "e2/4", C: "e2/5",
})).s("gm_lead_2_sawtooth").gain(0.17)

// other · ocarina
const ocarina = note("<~ A B C@3 D@2 E F ~@75 G H@2 I J K L M@2 N O P@2 Q R S@2 ~@42>".pickRestart({
  A: "e6@3 d6@3 e6@2 a5@3 ~ b5@2 e6@2", B: "~@2 d6@3 e6@2 g5@4 a5@2 e6@3",
  C: "[~ d6@2 e6@3 a5@3 b5@3 e6@3 d6@2 e6@2 ~ a5@3 b5@2 d6@3 e6@3 d6@2 e6@3 a5@3 b5@3 e6@3 d6@3]/3",
  D: "[e6@3 g5@3 a5@3 e6@3 d6@3 e6@2 a5@3 b5@4 e6@3 d6@2 e6@2 ~]/2", E: "a5@3 b5@2 d6@3 e6@3 d6@3 e6@2",
  F: "a5@3 b5@3 e6@3 ~@7", G: "~@10 e5@3 ~ d5@2",
  H: "[~@2 d5@2 e5@4 ~@4 g5 a5 g5 ~ g5 a5 g5 e5@4 ~@5 g5@2 a5@2, e5@4 ~@11 e5@4 ~@13]/2", I: "b5@4 d6@2 e6 g6",
  J: "e6@7 ~ b5@8", K: "a5 f#5 d5@10 ~ a4 d5 a4", L: "d5@15 ~", M: "[e5@4 g5@4 b5@4 d6@15 ~ d6 c#6 b5 d6]/2",
  N: "b5@12 g5 f#5 e5 f#5", O: "e5@12 d6@2 e6 b5", P: "[e6@12 g6 a6 g6 e6@15 ~@2]/2", Q: "b5 c6@7 b5@4 a5@4",
  R: "g5@11 ~ g5 f#5 e5 f#5", S: "[e5@6 d5 b4@8 ~]/2",
})).s("gm_ocarina").gain(0.06)

// other · ocarina · soft notes
const ocarina_soft = note("<A ~@8 B@3 ~@132>".pickRestart({
  A: "g5 ~@15", B: "[~@10 d6@2 e6@2 ~ g5@2 a5@2 ~ e6@3 d6@3 e6@2 a5@3 b5@3 e6@3 ~ d6@2 e6@2 ~ g5@2 a5@2 ~]/3",
})).s("gm_ocarina").gain(0.02)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@5 ~ B@4 C@2 D@2 C@2 E@2 C@2 D@2 C@2 E@2 F@8 G@5 H@8 I@6 J@2 H@8 J@4 K@2 J@2 H@8 I@6 J@2 H@8 L@6 M@2 N@6 O@6 P@2
  J@6 K@2 J@2 K@2 J@2 K@2 Q@2 R@7 ~
>`.pickRestart({
  A: "[~@8 g4@11 a4@7 b4@16 ~@2 g4@10 a4@6 b4@6 d5@13 ~]/5", B: "[~@8 g4@11 a4@7 b4@10 d5@27 ~]/4",
  C: "[c3,b3,e4,g4]/2", D: "[b2,a3,d4,f#4]/2", E: "[b2@15 e3@16 ~, [a3,d4,f#4]]/2",
  F: "[[b3,e4,g4]@32 [e4,g4,b4]@31 ~ [e4,a4]@32 [e4,g4,b4]@31 d5, e2@63 d5@33 ~@32, ~ e2]/8", // Em A5 Em
  G: "[[e4,a4]@2 [e4,g4,b4] [e4,g4,b4]@2, e2@49 ~@31]/5", // A5 Em
  H: "[[e4,g4,b4]@31 ~ f#4@32 e4@31 ~ [e2,e4,g4,a4,b4]@32, ~@31 d4@33 ~@31 d5@33, ~ [e2,a4]@2 ~]/8", // Em A5
  I: "[[e4,g4,b4]@31 ~ [e4,a4]@32 [e4,g4,b4]@32, ~@31 c5@33 ~@32, ~ e2@2]/6", J: "[e4,g4,b4]/2", K: "[d4,f#4,b4]/2",
  L: "[[e4,g4,b4]@31 ~ [e4,a4]@32 [e4,g4,b4]@31 ~, ~@31 c5@33 ~@32, ~ e2@2]/6", M: "[[e4,g4,b4]@31 ~]/2",
  N: "[[e4,g4,b4]@31 ~ f#4@31 ~ e4@31 ~, ~@31 d4@33 ~@32, ~ e2@2]/6", // Em
  O: "[[e4,g4,b4]@32 [e4,g4,b4]@31 ~ [e2,e4,a4]@32, e2@63 c5@32 ~]/6", P: "[[c4,e4,g4]@31 ~]/2", Q: "[b3,e4,g4]/2",
  R: "[[e4,g4,b4]@31 ~ [e4,a4]@32 [e4,g4,b4]@48, ~@31 d5@33 ~@48, ~@2 e2@4 ~]/7", // Em A5 Em
})).s("gm_synth_strings_1").gain(0.12).pan(0.3)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@11 A@2 B@2 A@2 C@2 A@2 B@2 A@2 D@2 E@8 F@3 E@4 G@4 E@4 H@4 E@4 G@4 E@4 I@2 J@2 E@4 G@4 E@4 H@4 E@4 G@4 E@4 H@4 K@4
  L@4 K@4 M@2 N@2 K@4 I@2 J@2 I@2 J@2 I@2 J@2 E@4 O@5 ~
>`.pickRestart({
  A: "[c3,b3,e4,g4]/2", B: "[b2,a3,d4,f#4]/2", C: "[b2@15 e3@17, [a3,d4,f#4]]/2", D: "[b2 e2, [a3,d4,f#4]]/2",
  E: "[e2,b3,e4,g4]/4", F: "[e2,b3,e4,g4]/3", G: "[[e2,a3], [d4,f#4] ~]/4", H: "[[a3,c4,e4] [g3,b3,e4], e2]/4",
  I: "[c2,b3,e4,g4]/2", J: "[b1,a3,d4,f#4]/2", K: "e2/4", L: "[e2,a3]/4", M: "[e2,c4]/2", N: "[c2,g3]/2",
  O: "[e2,b3,e4,g4]/5", // Em
})).s("gm_pad_poly").gain(0.17).pan(0.8)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_3 = note(`<
  ~@27 A B C B C B C B C B C@2 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 D ~@3 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 A B A B A B A B A B A B A B A E F B C B D ~@11 A B C B C B C B ~@2
>`.pickRestart({
  A: "~@4 e3!4 e4@2 ~ e4 ~ e3 ~ e3", B: "d4@2 ~ d4 e3!2 ~ e3 e4@2 ~ e4 ~ e3 ~ e3",
  C: "d4@2 ~@2 e3!4 e4@2 ~ e4 ~ e3 ~ e3", D: "d4 ~@7", E: "d4@2 ~ d4 e3!2 ~ e3 e4@2 ~ e4 ~ e3 ~@2",
  F: "~@6 e3!2 e4@2 ~ e4 ~ e3 ~ e3",
})).s("gm_electric_guitar_muted").gain(0.1).pan(1)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_4 = note(`<
  ~@28 A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@2 e3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.05).pan(1)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_2 = note(`<
  ~@11 A@3 B C D E F@2 G@2 ~ H@3 ~@6 I@3 ~@9 J@2 ~@12 K@2 J@2 ~@4 L@2 M@2 ~@6 J@2 ~@14 J@2 ~@45 I@3 ~@2
>`.pickRestart({
  A: "[~@3 [c3,e3,b3,e4]@5 ~@21 b4@5 b4@6 ~ a4 g4 a4@3 ~ g4, ~@8 [b3,e4]@25 ~@13 a4@2]/3", B: "a4@12 ~ b4@3",
  C: "d5@2 ~@3 d5@3 e5@8, ~@2 b4@3 ~@11, ~@3 e5@5 ~@8", D: "~ g5@5 g5@10", E: "~@3 b4@5 b4@5 ~@3",
  F: "[~ a4 b4 g4@4 b4 g4@2 ~ f#4@6 g4 f#4 e4@5 ~@8, ~@5 g4@2 ~@9]/2", G: "[~@5 d4@3 g4@6 g4@8 ~@5 e4 f#4@4]/2",
  H: "[~@2 f#4 g4@5 ~@5 a4@5 ~ b4@5 ~ e5@5 e5@16 ~@2, ~@24 b4@5 ~@19]/3", I: "[~@12 e5@15 ~@2 e5@14 ~@5]/3",
  J: "[~@3 [e3,a3,c4]@25 ~@4]/2", K: "[~@3 [a3,d4,f#4]@15 ~@14]/2",
  L: "[~@3 [c3,b3,e4]@5 e4@6 b3@4 ~ b3@7 ~@5 e5, ~@8 c3@11 ~@13, ~@8 b3@5 ~@19]/2", // Cmaj7
  M: "[d5 b4 ~@2 e5 d5 b4 a4@11 ~@14, ~@2 a4@5 ~@25]/2",
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_3 = note("<~@11 A@3 ~@4 B C@2 ~ D E F ~@119>".pickRestart({
  A: "[~@8 [c3,e3]@25 ~@15]/3", B: "~@6 a4 ~@8 g4", C: "[~@6 g4 f#4 e4@12 ~@6 d4@3 ~@3]/2", D: "e4 f#4@8 ~@7",
  E: "~ e4 ~@4 e4 f#4 g4@5 ~@3", F: "~@2 a4@5 ~@9",
})).s("gm_electric_guitar_jazz").gain(0.05).pan(0)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@22 A@16 B@3 C B@3 D B@5 E B@4 C A B@7 C B C B A@4 F A@7 G A@7 F A@7 G A H A I B@3 C B@3 D B@5 E B@5 A B C B@3 C B A
  B C B A@9 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~@4 x ~@3 x ~@2 x!2 ~@3", D: "~ x!2 ~@3 x ~", E: "~@4 x ~@3 x ~@2 x!2 ~ x ~",
  F: "~@2 x ~@2 x ~@2 x ~@2 x!2 ~ x ~", G: "~@4 x ~@6 x!2 ~@3", H: "~@4 x ~@5 x ~@2 x ~@2",
  I: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3",
})).gain(0.22)

// drums · hihat
// … 50 more lines

More by Pink Floyd