Strudelify
Africa cover art

1982 · Toto IV

Africa

Toto

KeyC♯ minorTempo91 bpm
0:00/0:00
// Africa — Toto
// 91 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/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(`<
  ~@4 A B C B C B C B D E F G H I J K L M E F G H I N O P Q R S T S R S U V W X W X I J K L M E F G H I N O P Q R S T S
  R S U V W X I J K L M E Y Z AA AB AC AB AD AB AC AB AC AB AC AB AC AB AC AB AE AF B C AG AH B C AG AH B C B C B C B C
  AI ~@5
>`.pickRestart({
  A: "~@8 a1@3 a1 ~ a1@2 a1", B: "a1 ~ g#1 ~ c#2@4 c#2@3 c#2 c#2@3 ~", C: "c#2@3 c#2 c#2@4 a1@3 a1 ~ a1@2 a1",
  D: "c#2@3 c#2 c#2@4 b1@2 ~ b1 b1@3 ~", E: "d#1@3 d#1 d#1@3 ~ g#1@3 g#1 g#1@4", F: "f#1@3 f#1 f#1@4 e1@3 e1 e1@4",
  G: "f#1@3 f#1 f#1@4 g#1@3 g#1 g#1@4", H: "a1@3 a1!2 a1@2 a1 a1@2 g#1@2 c#2@4",
  I: "b1@2 ~ b1 b1@3 ~ d#1@3 d#1 d#1@3 ~", J: "g#1@3 g#1 g#1@4 f#1@3 f#1 f#1@4", K: "e1@3 e1 e1@4 f#1@3 f#1 f#1@4",
  L: "g#1@3 g#1 g#1@4 a1@3 a1!2 a1@2 a1", M: "a1@2 g#1@2 c#2@4 b1@2 ~ b1 b1@3 ~", N: "g#1@3 g#1 g#1@4 g#1@3 g#1 g#1@4",
  O: "a1@3 a1@2 a1@2 a1 a1@2 g#1@2 c#2@4", P: "c#2@3 b1 c#2@4 c#2@3 b1 c#2@4", Q: "f#1@3 f#1 f#1@3 ~ d2@2 ~ d2 d2@3 ~",
  R: "a1@3 a1 a1@3 ~ e2@3 e2 e2@2 b1@2", S: "f#2@3 f#2 f#2@3 ~ d2@2 ~ d2 d2@3 ~", T: "a1@3 a1 a1@3 ~ e2@3 e2 b1@2 e2@2",
  U: "a1@3 a1 a1@3 ~ c#2@3 c#2 c#2@3 ~", V: "e2@3 e2 e2@3 ~ f#2@3 f#2!2 g#2@3", W: "a1@3 a1 ~ a1@2 a1!2 ~ g#1 ~ c#2@4",
  X: "c#2@3 c#2 c#2@3 ~ c#2@3 c#2 c#2@4", Y: "g#1@3 g#1 g#1@4 a1@3 a1@2 a1@2 a1", Z: "a1@2 g#1@2 c#2@4 c#2@3 b1 c#2@4",
  AA: "c#2@3 b1 c#2@4 f#1@3 f#1 f#1@3 ~", AB: "d2@2 ~ d2 d2@3 ~ a1@3 a1 a1@3 ~",
  AC: "e2@3 e2 e2@2 b1@2 f#2@3 f#2 f#2@3 ~", AD: "e2@3 e2 b1@2 e2@2 f#2@3 f#2 f#2@3 ~",
  AE: "c#2@3 c#2 c#2@3 ~ e2@3 e2 e2@3 ~", AF: "f#2@3 f#2!2 g#2@3 a1@3 a1 ~ a1@2 a1",
  AG: "a1 ~ g#1 ~ c#2@4 g#3@4 c#4 g#3 f#3 g#3", AH: "c#4 g#3 f#3 g#3 c#4 g#3 f#3@2 a1@3 a1 ~ a1@2 a1",
  AI: "a1 ~ g#1 ~ c#2@12",
})).s("gm_fretless_bass").gain(0.55)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@12 A B C D E F G H I@2 B C D E F G J ~ K L K L K L K M N ~@4 F G H I@2 B C D E F G J ~ K L K L K L K M N ~@2 F G H
  I@2 B O P Q R S R S R S R S R S R S R S R T U ~@22
>`.pickRestart({
  A: "~@8 [f#3,b3,d#4]@3 [f#3,b3,d#4]!2 ~@3", // B
  B: "[d#3,a#3,c#4]@2 ~ [d#3,a#3,c#4]!2 ~@3 [g#3,b3,d#4]@3 [g#3,b3,d#4]!2 ~@3", // D#7 G#m
  C: "[g#3,b3,d#4]@2 ~ [g#3,b3,d#4] [g#3,b3,d#4]@2 ~@2 [e3,a3,c#4]@3 [e3,a3,c#4]!2 ~@3", // G#m A
  D: "[e3,g#3,b3]@2 ~ [e3,g#3,b3]!2 ~@3 [e3,b3,d#4,d#5]@2 ~ [e3,b3,d#4,d#5] [e3,b3,d#4] ~ d#5@2, ~@13 [e3,b3,d#4,e4,e5]@2 ~", // E Emaj7
  E: "~@10 b3@2 e4 ~@3, [a3,c#4,e4,e5]@3 ~", // A
  F: "[f#3,b3,d#4]@3 [f#3,b3,d#4]!2 ~@3 [d#3,a#3,c#4]@2 ~ [d#3,a#3,c#4]!2 ~@3", // B D#7
  G: "[g#3,b3,d#4]@3 [g#3,b3,d#4]!2 ~@3 [g#3,b3,d#4]@2 ~ [g#3,b3,d#4] [g#3,b3,d#4]@2 ~@2", // G#m
  H: "[e3,a3,c#4]@3 [e3,a3,c#4]!2 ~@3 [e3,g#3,b3]@2 ~ [e3,g#3,b3]!2 ~@3", // A E
  I: "[[e3,b3,d#4,d#5]@2 ~ [e3,b3,d#4,d#5] [e3,b3,d#4] ~ d#5@2 ~@10 b3@2 e4 ~@3 [f#3,b3,d#4]@3 [f#3,b3,d#4]!2 ~@3, ~@5 [e3,b3,d#4,e4,e5]@2 ~ [a3,c#4,e4,e5]@12 ~@12]/2", // Emaj7 B Emaj7 A
  J: "[a3,c#4,e4,e5]!2 ~ [a3,c#4,e4,e5]!7 [g#3,b3,e4,e5]!2 [g#3,c#4,e4,e5]@2 ~@2", // A E C#m
  K: "[a3,c#4,f#4] ~ [a3,c#4,f#4] [a3,c#4,f#4]@2 [a3,c#4,f#4]!3 [a3,d4,f#4] ~ [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!3", // F#m D
  L: "[a3,c#4,e4] ~ [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!3 [g#3,b3,e4] ~ [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!3", // A E
  M: "[a3,c#4,e4] ~ [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!3 [g#3,c#4,e4] ~ [g#3,c#4,e4] [g#3,c#4,e4]@2 [g#3,c#4,e4]!3", // A C#m
  N: "[g#3,b3,e4] ~ [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!3 [a3,c#4,f#4] ~@7", // E F#m
  O: "[g#3,b3,d#4]@2 ~ [g#3,b3,d#4] [g#3,b3,d#4]@2 ~@2 [a3,c#4,e4,e5]!2 ~ [a3,c#4,e4,e5]!5", // G#m A
  P: "[a3,c#4,e4,e5]!2 [g#3,b3,e4,e5]!2 [g#3,c#4,e4,e5]@2 ~@10", // A E C#m
  Q: "~@8 [a3,c#4,f#4] ~ [a3,c#4,f#4] [a3,c#4,f#4]@2 [a3,c#4,f#4]!3", // F#m
  R: "[a3,d4,f#4] ~ [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!3 [a3,c#4,e4] ~ [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!3", // D A
  S: "[g#3,b3,e4] ~ [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!3 [a3,c#4,f#4] ~ [a3,c#4,f#4] [a3,c#4,f#4]@2 [a3,c#4,f#4]!3", // E F#m
  T: "[g#3,c#4,e4] ~ [g#3,c#4,e4] [g#3,c#4,e4]@2 [g#3,c#4,e4]!3 [g#3,b3,e4] ~ [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!3", // C#m E
  U: "[a3,c#4,f#4] ~@15", // F#m
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.4)

// chords · kalimba
const kalimba = note(`<
  ~@5 A B A B A B A B ~@26 C D E F ~@22 C D G ~@25 A B A B A B A B A H I H I H I H I H I H I J
>`.pickRestart({
  A: "~@5 e5 f#5 [e5,f#5] [c#5,f#5] [b4,e5] [b4,c#5] [c#5,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [c#5,e5]", // Esus2 F#5 E5 Bsus2 C#m F#5 C#m B5 …
  B: "[b4,c#5] [c#5,e5] [b4,f#5] [c#5,e5] [b4,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [c#5,e5] ~@7", C: "~@13 e5 f#5 [e5,f#5]",
  D: "[c#5,f#5] [b4,e5] [b4,c#5] [c#5,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [c#5,e5] [b4,c#5] [c#5,e5] [b4,f#5] [c#5,e5] [b4,e5] [c#5,f#5] [c#5,e5] [b4,f#5]", // F#5 E5 Bsus2 C#m F#5 C#m B5 C#m …
  E: "[c#5,e5] ~@12 e5 f#5 [e5,f#5]", // C#m Esus2
  F: "[c#5,f#5] [b4,e5] [b4,c#5] [c#5,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [c#5,e5] [b4,c#5] [c#5,e5] [b4,f#5] [c#5,e5] c#5@2 ~@2, ~@12 g#4 ~@3", // F#5 E5 Bsus2 C#m F#5 C#m B5 C#m …
  G: "[c#5,e5] ~@15", // C#m
  H: "[b4,c#5] [c#5,e5] [b4,f#5] [c#5,e5] [b4,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [a2,a3]@3 [a2,a3] ~ [a2,a3] ~ [a2,a3], ~@8 [c#5,e5] ~@7", // Bsus2 C#m B5 C#m E5 F#5 C#m B5 …
  I: "[a2,a3] ~ [g#2,g#3] ~@2 e5 f#5 [e5,f#5] [c#5,f#5] [b4,e5] [b4,c#5] [c#5,e5] [c#5,f#5] [c#5,e5] [b4,f#5] [c#5,e5], ~@4 [c#3,c#4]@3 ~@9", // A G# Esus2 F#5 E5 Bsus2 C#m F#5 …
  J: "c#5 ~@15",
})).s("gm_kalimba").gain(0.33).pan(0.3)

// chords · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note(`<
  ~@4 A B@6 C@4 D E F G H I J@3 D E F G K@2 L M L M L M L N O P@4 Q@2 H I R@3 D E F S K@2 L M L M L M L N O P@2 Q@2 H I
  T@2 U V@2 W X W X W X W X W X W X W X W Y Z B@6 AA@2 B@4 AB@2 ~@8
>`.pickRestart({
  A: "~@8 [e3,a3,c#4]@3 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]", // A
  B: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20 [e3,a3,c#4]@3 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]]/2", // A E C#m A
  C: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20 [b3,d#4]@8 [a#3,c#4]@8 [b3,d#4]@16 [e3,a3,c#4]@8, ~@3 f#3@4 ~]/4", // A E C#m B A#m B A
  D: "[e3,g#3,b3] [e3,g#3,d#4,e4]", // E Emaj7
  E: "[e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]!2 ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@4", // A E C#m
  F: "[b3,d#4] [a#3,c#4], f#3", G: "[d#3,g#3,b3]", H: "[e3,a3,c#4] [e3,g#3,b3]",
  I: "[e3,g#3,d#4,e4]@8 [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]", // Emaj7 A
  J: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@4 [b3,d#4]@8 [a#3,c#4]@8 d#3@8 d#3@8 [e3,a3,c#4]@8, ~ f#3@2 [g#3,b3]@2 ~]/3", // A E C#m B A#m A G#m
  K: "[[e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]!2 ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20]/2", // A E C#m
  L: "[a3,c#4,f#4] [a3,d4,f#4]", M: "[a3,c#4,e4]@4 g#4@2 a4 g#4, ~ [b3,e4]", N: "[a3,c#4,e4] [c#4,e4,g#4]",
  O: "[b3,e4,g#4]@2 [a3,c#4,f#4] ~", // E F#m
  P: "[[e3,a3,c#4]@3 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]!2 ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20]/2", // A E C#m
  Q: "[[b3,d#4] [a#3,c#4] [b3,d#4]@2, f#3]/2", // B A#m B
  R: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@4 [b3,d#4]@8 [a#3,c#4]@8 [d#3,g#3,b3]@16 [e3,a3,c#4]@8, ~ f#3@2 ~@3]/3", // A E C#m B A#m G#m A
  S: "[d#3,g#3,b3] ~", // G#m
  T: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@4 [b3,d#4]@8 [a#3,c#4]@8 [d#3,g#3,b3]@8, ~ f#3@2 ~]/2", // A E C#m B A#m G#m
  U: "~@8 [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]", // A
  V: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20 [a3,c#4,f#4]@8]/2", W: "[a3,d4,f#4] [a3,c#4,e4]",
  X: "g#4@2 a4 g#4 [a3,c#4,f#4]@4, [b3,e4] ~", Y: "[c#4,e4,g#4] [b3,e4,g#4]",
  Z: "[a3,c#4,f#4]@4 ~@4 [e3,a3,c#4]@3 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4]", // F#m A
  AA: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20 [e3,a3]@3 [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4], ~@24 c#4 ~@7]/2", // A E C#m A5 A
  AB: "[[e3,a3,c#4] ~ [e3,g#3,b3] ~ [g#3,c#4,e4]@20 ~@8]/2", // A E C#m
})).s("gm_synth_brass_2").gain(0.44).pan(0.6)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@38 A B ~@24 A B ~@26 C ~@22>".pickRestart({
  A: "~@8 f#4@3 f#4!2 e4@2 ~", B: "c#4@7 ~@9", C: "f#4@3 f#4!2 e4@2 ~ c#4@7 ~",
})).s("gm_overdriven_guitar").gain(0.54).pan(0.3)

// drums · kick
const kick = s("bd").struct("<A B@28 C B@8 D B@16 C B@8 D B@9 E F B@16 G B@21 ~>".pickRestart({
  A: "~@8 x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@2 x!2 ~ x ~ x ~@3",
  D: "x ~@2 x!2 ~@3 x ~@2 x!3 ~@2", E: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@2 x", F: "x ~ x ~ x ~@3 x ~@2 x!2 ~@3",
  G: "x ~@2 x!3 ~@2 x ~@2 x!2 ~@3",
})).gain(0.47)

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

// drums · low tom
const low_tom = s("lt").struct("<~@29 [~@5 x!2 ~] ~@25 [~@5 x!2 ~] ~@19 [~ x!2 ~@5] ~@39>").gain(0.47)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@28 C D E B F D E@2 G H I B J B@13 C D E B F D E@2 G H I B@8 K L E H B G E G E G E G E G E@3 D B@22 ~
>`.pickRestart({
  A: "~@8 x!8", B: "x!16", C: "~@13 x!3", D: "~ x!3 ~ x!7 ~ x!3", E: "x!4 ~ x!7 ~ x!3", F: "x!12 ~ x!3",
  G: "x!4 ~ x!3 ~ x!3 ~ x!3", H: "x!4 ~ x!11", I: "~ x!11 ~ x!3", J: "~ x!15", K: "x!8 ~@8", L: "~@5 x!3 ~ x!3 ~ x!3",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 [~@3 x!2 ~@3 x ~@7] ~@25 [~@3 x!2 ~@3 x ~@7] ~@18 [~@11 x!2 ~@3] x ~@39>")
  .gain(0.47)

// drums · open hat
const open_hat = s("oh").struct("<~@30 A@2 ~ B A@4 C ~@17 A@2 ~ B A@4 C ~@10 B A C ~ A@13 ~@23>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@29 [x ~@6 x ~@8] ~@25 [x ~@6 x ~@8] ~@18 [~@8 x ~@6 x] ~@40>").gain(0.47)

// drums · crash
const crash = s("cr").struct(`<
  ~@30 A ~@3 A ~@2 B C D ~ A ~@14 A ~@3 A ~@2 B C D ~@9 B ~@3 B ~ B ~@9 E F ~@22
>`.pickRestart({
  A: "x", B: "~ x", C: "x ~@7 x ~@3 x!2 ~@2", D: "x ~@2 x", E: "x!2", F: "x ~@3 x!2 ~@10",
})).gain(0.29)

// drums · cowbell
const cowbell = s("cb").struct("<A B C D E B@24 F B@8 G B@16 F B@8 G B@9 G A B@16 H B@21 ~>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x ~@3 x ~@3 x ~ x ~ x!2 ~ x", D: "x ~ x ~ x ~ x!3 ~ x ~ x!2 ~ x",
  E: "x ~@3 x ~ x!3 ~@3 x ~@3", F: "x", G: "x!3 ~", H: "x ~ x!2",
})).gain(0.29)

// drums · congas
const congas = s("conga:13").struct("<A@28 ~@2 B@23 C ~@2 B@15 C A B ~ A@39 ~>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@7 x ~@7 x",
})).gain(1.32)

// drums · congas
const congas_2 = s("conga:18").struct("<A B@27 C D E@23 F C D E@15 F B E C A B@38 ~>".pickRestart({
  A: "~ x", B: "x!2 ~@6 x ~@7", C: "x!2 ~@6 x!2 ~@6", D: "x!2 ~@14", E: "x ~@7 x!2 ~@6", F: "x!2",
})).gain(1.32)

// drums · congas
const congas_3 = s("conga:33").struct("<A B@28 C B@25 C B@19 A B@38 ~>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x!2 ~@6 x!2 ~@3", C: "~@3 x!2 ~@11",
})).gain(1.32)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@4 A B C D A B C D ~@27 E ~ F ~@23 E ~@26 A B C D A B C D A B C D A B C D A B C D A B ~
>`.pickRestart({
  A: "~@8 x ~@2 x ~ x ~ x", B: "x!3 ~@5", C: "~@8 x ~@2 x ~ x ~@2", D: "~ x ~@2", E: "x ~@2 x ~ x ~ x!2 ~ x ~ x ~@3",
  F: "x ~@2 x ~ x ~@6 x ~@3",
})).gain(1.73)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4 B ~@3 B ~@4 B ~@3 B ~@3 B ~@8 B ~@3 B ~@6 B ~@8 A ~@11 A ~@4 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3
>`.pickRestart({
  A: "x!2 ~@6", B: "~@4 x!2 ~@2",
})).gain(0.51)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct(`<
  ~@6 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 B ~@3 B ~@4 B ~@3 B ~@3 B ~@3 B ~@4 B ~@3 B ~@6 B ~@2 A ~@4 A ~@11 A ~@4 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8",
})).gain(0.51)

stack(
  bass, acoustic_guitar_steel, kalimba, synth_brass_2, overdriven_guitar, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, cowbell, congas, congas_2, congas_3, claves, woodblocks, woodblocks_2
// … 1 more lines

More by Toto