Strudelify

The World Is a Ghetto

War

KeyF majorTempo100 bpm
0:00/0:00
// The World Is a Ghetto — War
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 11 choir aahs (copy of ch 8 pad sweep)
// note: Full arrangement: all 118 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, 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 · epiano2 · ""The World is"
const epiano2 = note(`<
  A B C D E@2 F D E G H I G@2 J K L M@2 N L M@2 O@2 A B C D E@2 F D E G H I G@2 J K L M@2 N L M@2 O@2 ~@16 A B C D E@2 F
  D E G H I G@2 J K L M@2 N L M@2 O@2 A B C D E@2 F D E G H I G@2 J K L M@2 N L M@2 O@2 ~@2
>`.pickRestart({
  A: "~ [f3,a3,c4] ~@2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4] ~@2 [f3,a3,c4,e4]@6", // F Fmaj7 F Fmaj7
  B: "~ [a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~ [a3,c4,e4] ~@2 [f3,a3,c4,e4]@6", // Am Fmaj7 Am Fmaj7
  C: "~ g3 ~@2 [g3,bb3,d4,f4]@2 ~ [d4,f4] ~@2 [g3,bb3,d4,f4]@6", // Gm7 Dm Gm7
  D: "~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@2 ~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@6", // Gm7
  E: "~ [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@3 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@6", // Fmaj7
  F: "~ [g3,bb3,d4] ~@2 [g3,bb3,d4,f4]@2 ~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@6, ~@4 e4 ~@11", // Gm Gm7
  G: "~ [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@6", // Fmaj7
  H: "~ g3 ~@2 [g3,bb3,d4,f4]@2 ~ [g3,d4,f4] ~@2 [g3,bb3,d4,f4]@6, ~@10 e4 ~@5", // Gm7 G7 Gm7
  I: "~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@2 ~ [g3,bb3,d4] ~@2 [g3,bb3,d4,f4]@6", // Gm7 Gm Gm7
  J: "~ [g3,bb3,d4] ~@2 [g3,bb3,d4,f4]@3 [bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@6", // Gm Gm7 Bb Gm7
  K: "~ d4 ~@2 [g3,bb3,d4,f4]@3 [g3,bb3,d4,f4] ~@2 d3 ~ f3 ~ a3 ~", L: "~@10 d3 ~ f3 ~ a3 ~", M: "~@10 d3 ~ f3 ~ g3 ~",
  N: "a3@4 g3@2 f3 ~ g3 ~ d3 ~ f3 ~ a3 ~", O: "[a3@4 g3@2 f3 ~ g3 ~ f3@22]/2",
})).s("gm_epiano2").gain(0.36).pan(0)

// chords · epiano2 · ""The World is" · soft notes
const epiano2_soft = note(`<
  A B C ~@7 D E ~@2 F G ~@9 A B C ~@7 D E ~@2 F G ~@25 A B C ~@7 D E ~@2 F G ~@9 A B C ~@7 D E ~@2 F G ~@11
>`.pickRestart({
  A: "~ e4 ~@5 e4 ~@8", B: "~ f3 ~@5 f3 ~@8", C: "~ [bb3,d4] ~@5 [g3,bb3] ~@8", D: "~ [bb3,d4,f4] ~@5 bb3 ~@8",
  E: "~@7 f4 ~@8", F: "~ f4 ~@5 g3 ~@8", G: "~ [g3,bb3] ~@14",
})).s("gm_epiano2").gain(0.24).pan(0)

// chords · electric guitar jazz · "A Ghetto""
const electric_guitar_jazz = note(`<
  A B C@2 D@2 E@2 D@2 E@2 D@2 F G H I J K L I M N@3 B C@2 D@2 E@2 D@2 E@2 D@2 F G H I J K L I J O@3 ~@15 A B C@2 D@2 E@2
  D@2 E@2 D@2 F G H I J K L I M N@3 B C@2 D@2 E@2 D@2 E@2 D@2 F G H I J K L I J O@3 ~
>`.pickRestart({
  A: "~@4 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~@2 [f3,a3,c4,e4]!2", // Fmaj7
  B: "~ [f3,a3,c4,e4] ~@3 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4]!2", // Fmaj7
  C: "~@5 [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,e4,f4]@2 ~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]!2", // Gm7
  D: "~@5 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]!2", // Fmaj7
  E: "~@5 [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]@2 ~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,f4]!2", // Gm7
  F: "~@5 [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,e4,f4]@2 ~ [g3,bb3,d4,f4] ~@2 [g3,bb3,d4,e4,f4] [g3,bb3,d4,f4]", // Gm7
  G: "~@5 [g3,bb3,d4,f4] ~@4 d3@2 ~@4", // Gm7
  H: "[f3,a3,c4,e4] ~@3 [f3,a3,b3,c4,e4] ~ a3 ~ [f3,a3,c4,e4] ~ d3 ~ [f3,a3,c4,e4] ~ a3 ~", // Fmaj7
  I: "[f3,a3,c4,e4] ~@3 [f3,a3,c4,e4] ~@3 [f3,a3,c4,e4] ~ d3 ~ [f3,a3,c4,e4] ~ g3 ~", // Fmaj7
  J: "[g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~ d3 ~ [f3,g3,bb3,d4,f4] ~ g3 ~", // Gm7
  K: "[g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~ f3@2 [g3,bb3,d4,f4] ~ d3 ~ [f3,g3,bb3,d4,f4] ~ a3@2, a3 ~@3", // Gm7
  L: "[f3,a3,c4,e4] ~@3 [f3,a3,c4,e4] ~@3 [f3,a3,c4,e4] ~ d3 ~ [f3,a3,c4,e4] ~ a3 ~", // Fmaj7
  M: "[g3,bb3,d4,f4] ~@3 [g3,bb3,d4,e4,f4] ~@3 [g3,bb3,d4,f4] ~ d3 ~ [f3,g3,bb3,d4,f4] ~ g3 ~", // Gm7
  N: "[[g3,bb3,d4,e4,f4] ~@3 [g3,bb3,d4,f4] ~ f3 ~ [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@7 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4] ~@2 [f3,a3,c4,e4]@2 ~@2 [f3,a3,c4,e4]!2, a3@4 ~@6 f3@23 ~@15]/3", // Gm7 Fmaj7
  O: "[[g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~ f3 ~ [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,e4,f4] ~@19, a3@4 ~@6 f3@23 ~@15]/3", // Gm7
})).s("gm_electric_guitar_jazz").gain(0.14).pan(1)

// other · alto sax
const alto_sax = note("<A@2 B@4 C@2 D@2 E@2 F@2 G@2 H I@2 J H I@2 K@2 ~@93>".pickRestart({
  A: "[e4 f4 e4 d4 e4@25 d4 e4@2]/2", B: "[f4@6 d4 ~ d4@24 e4 f4 e4 d4 e4@22 d4@3 e4@3]/4",
  C: "[f4@6 d4 ~ d4@22 ~@2]/2", D: "[a4 bb4 a4 g4 a4@22 g4@3 a4@3]/2", E: "[bb4@6 g4 ~ g4@24]/2",
  F: "[a4@3 bb4@3 a4@3 g4@3 a4@17 g4 a4@2]/2", G: "[bb4@6 g4 ~ g4@18 [d4,g4] ~ f4 ~ a4 ~]/2", H: "~@10 d4 ~ f4 ~ a4 ~",
  I: "~@10 d4 ~ f4 ~ g4 ~", J: "a4@4 g4@2 f4 ~ g4@2 d4 ~ f4 ~ a4 ~", K: "[a4@4 g4@2 f4 ~ g4 ~ f4@22]/2",
})).s("gm_alto_sax").gain(0.5)

// chords · pad poly
const pad_poly = note(`<
  ~@8 A@2 B@2 C@2 D@2 ~@17 A@2 B@2 C@2 D@2 ~@9 A@2 B@2 E@2 F@2 ~@16 A@2 B@2 C@2 D@2 ~@17 A@2 B@2 C@2 D@2 ~@9 A@2
>`.pickRestart({
  A: "[[f4,a4,c5,e5]@15 ~]/2", B: "[[g4,bb4,d5,f5]@31 ~]/2", C: "[[f4,a4,c5,e5]@15 ~, f5 ~@31]/2",
  D: "[g4,bb4,d5,f5]/2", E: "[[f4,a4,c5,e5]@31 ~]/2", F: "[~@16 g5@15 ~, [g4,bb4,d5,f5]@31 ~]/2",
})).s("gm_pad_poly").gain(0.14)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A@2 B C A@2 B D A@2 B@2 A@2 B E@2 F@2 G@2 F@2 H@2 I@2 J@2 K@2 L M A@2 B D A@2 B N@2 F@2 G@2 F@2 O@2 ~@16 A@2 B C
  A@2 B D A@2 B@2 A@2 B E@2 F@2 G@2 F@2 H@2 I@2 J@2 K@2 L M A@2 B D A@2 B N@2 F@2
>`.pickRestart({
  A: "~ [f3,a3,c4,e4]", B: "~ [g3,bb3,d4,f4]", C: "~ [g3,bb3,d4,f4,g4], ~@8 e4 ~@7", D: "~ [g3,bb3,d4,f4,g4]",
  E: "[~@4 [g3,bb3,d4,f4,g4]@11 ~]/2", F: "[[f3,a3,c4,e4]@31 ~]/2", G: "[[g3,bb3,d4,f4]@31 ~]/2",
  H: "[~@12 g4@3 ~, [g3,bb3,d4,f4]@15 ~]/2", I: "[[f4,a4,c5,e5]@31 ~]/2", J: "[[g4,bb4,d5,f5]@31 ~]/2",
  K: "[[f4,a4,c5,e5]@31 ~, [d5,f5] ~@31]/2", L: "[g4,bb4,d5,f5], [f4,e5] ~@15", M: "[g4,bb4,d5,f5,g5]@15 ~",
  N: "[~ [g3,bb3,d4,f4,g4]@3]/2", O: "[~@16 g4@15 ~, [g3,bb3,d4,f4]@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.15)

// other · piano
const piano = note("<~@50 A@3 B C D E F G H I@2 J K L M ~@52>".pickRestart({
  A: "[~@4 a4@2 g4 f4 ~ e4@15 f4 e4 d4 c4 ~ a3 ~ a3@3 c4 a3 ~@8 d3 e3 ~ a3, ~@4 g4 ~@43]/3",
  B: "~ g3 ~ f3 e3 f3 e3 d3 ~@6 a2 c3", C: "g2 a2 f2 g2 e2 f2 d2 e2 ~@8",
  D: "~@3 f5 [d5,eb5] c5 a4 d5 c5 a4 g4 c5 a4 g4 f4 a4", E: "g4 f4 d4 g4 f4 d4 c4 f4 d4 c4 a3 d4 c4 a3 g3 c4",
  F: "a3 g3 f3 a3 g3 f3 d3 g3 f3 d3 c3 f3 d3 c3 a2 d3",
  G: "f4 d4 [a3,f4] d4 [a3,f4] d4 [a3,f4] d4 [a3,d4,f4] c4 [a3,f4] [a3,d4] [d4,f4] a3 f4 [a3,c4,d4]", // Dm D5 Dm D7
  H: "[d4,f4] a3 [d4,f4] a3 f4 d4 [a3,f4] [a3,c4,d4] f4 [c4,d4] [a3,d4,f4] c4 [a3,d4,f4] c4 [d4,f4] a3", // Dm D7 Csus2 Dm
  I: "[~@3 a4 ~ g4 ~ f4 ~ f4 ~ d4 ~ c4 ~ a3@3 c4 a3 ~@4 d3 e3 f3 a3 g3 f3 e3 g3]/2",
  J: "f3 e3 d3 f3 d3 c3 b2 d3 c3 a2 g2 c3 a2 g2 f2 ~", K: "~@10 c5 d5 b4 c5 a4 b4",
  L: "g4 a4 f4 g4 e4 f4 d4 e4 c4 d4 b3 c4 a3 b3 g3 a3", M: "f3 g3 e3 f3 d3 e3 c3 d3 b2 c3 a2 b2 g2 a2 f2 g2",
})).s("gm_piano").gain(0.46)

// other · piano · soft notes
const piano_soft = note("<~@52 A B ~@4 C D E ~ F ~@55>".pickRestart({
  A: "~@14 f3 ~", B: "~@3 g3 ~@12", C: "~ c4 ~ c4 ~ c4 ~ c4 ~@3 c4 ~ c4 ~@2", D: "~ c4 ~ c4 ~ c4 ~@10",
  E: "~@8 e4 ~ e4 ~@5", F: "~@6 a2 ~@5 b2 ~@3",
})).s("gm_piano").gain(0.26)

// chords · pad sweep
const pad_sweep = note("<~@58 A@2 B@2 C@2 D@2 ~@52>".pickRestart({
  A: "[[f3,a3,c4,e4]@31 ~, d4 ~@31]/2", B: "[[g3,bb3,d4,f4]@31 ~]/2", C: "[[f3,a3,c4,e4]@31 ~]/2",
  D: "[e4 ~@23 g4@8, [g3,bb3,d4,f4]]/2", // Gm7
})).s("gm_pad_sweep").gain(0.48)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E B F A G B@2 A H B I J K L M N L@2 O@2 A@2 B C D E B F A G B@2 A H B I J K L M N L@2 O@2 P Q R S T U V W T
  P T P T P T P A@2 B C D E B F A G B@2 A H B I J K L M N L@2 O@2 A@2 B C D E B F A G B@2 A H B I J K L M N L@2 O@2 X ~
>`.pickRestart({
  A: "d1@3 a1 a1@3 d2 d2@3 a1 a1@3 d1", B: "eb1@3 bb1 bb1@3 eb2 eb2@3 bb1 bb1@3 eb1",
  C: "eb1@3 bb1 bb1@3 eb2 eb2@3 bb1 bb1@2 eb1 bb1", D: "d1@3 a1 a1@3 [c2,d2] d2@3 a1 a1@3 d1",
  E: "d1@3 a1 a1@3 d2 d2@3 a1 d1 a1 d2 a1", F: "eb1@2 ~ bb1 bb1@3 eb2 eb2@3 bb1 bb1@3 eb1",
  G: "d1@3 a1 a1@3 d2 d2@3 a1 a1@3 d2", H: "d1@3 a1 a1@3 d2 d2@3 a1 a1@2 d1 a1",
  I: "eb1@3 bb1 bb1@3 eb2 eb2@2 d2 bb1 bb1@2 [eb1,a2] bb1, ~@12 f2 ~@3", J: "~@10 d2 ~ f2 ~ a2 ~",
  K: "~@10 d2 ~ f2 ~ g2 ~", L: "~@10 d2@2 f2 ~ g2 ~", M: "a2@4 g2@2 f2@2 g2@2 d2@2 f2 ~ a2 ~", N: "~@10 d2@2 f2 ~ a2 ~",
  O: "[a2@2 g2 f2 g2 f2@11]/2", P: "~@2 d1 d2 ~@4 d1 d2 e1 e2 f1 f2 ~@2", Q: "~@2 d1 d2 ~@4 d1 d2 e1 e2 f1 f2 g1 g2",
  R: "~@2 d1 d2 ~@10 c1 c2", S: "~@2 d1 d2 ~@4 d1 d2 e1 e2 f1 f2 e1 e2", T: "~@2 d1 d2 ~@12",
  U: "~@2 d1 d2 ~@4 d1 d2 e1 e2 f1 f2 e1 f2", V: "~@2 d1 d2 ~@6 c1 c2 ~@4", W: "~@8 d1 d2 e1 e2 f1 f2 g1 g2",
  X: "~@2 d1 d2 ~@4 d1 d2 e1 ~@5",
})).s("gm_fretless_bass").gain(0.57)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E A C F A@3 F C F A F G H I@4 J I K A B C D E A C F A@3 F C F A F G H I@4 J I K L M@7 N@8 A B C D E A C F A@3
  F C F A F G H I@4 J I K A B C D E A C F A@3 F C F A F G H I@4 J I K O ~
>`.pickRestart({
  A: "x ~@14 x", B: "x!2 ~@9 x ~ x ~@2", C: "x", D: "x!2 ~@11 x ~@2", E: "~@8 x ~@6 x", F: "x!2 ~@13 x",
  G: "x ~@2 x ~ x ~ x", H: "~@2 x ~@3 x ~@3 x!2 ~@2 x ~", I: "~ x ~ x ~ x ~ x", J: "x ~ x ~ x!2 ~ x",
  K: "~@3 x ~ x ~ x", L: "x ~@7 x ~@2 x ~@4", M: "~@8 x ~@2 x ~@4", N: "~@2 x!2 ~@12", O: "x!2",
})).gain(0.31)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@2 ~ B ~@7 A ~@3 C ~@9 A@2 ~ B ~@7 A ~@3 C ~@25 A@2 ~ B ~@7 A ~@3 C ~@9 A@2 ~ B ~@7 A ~@3 C ~@10
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~ x ~@6",
})).gain(0.18)

// drums · snare
const snare = s("sd").struct(`<
  A B@15 C D E C@3 F C@2 A B@15 C D E C@3 F C@2 ~@8 G@8 A B@15 C D E C@3 F C@2 A B@15 C D E C@3 F C@2 ~@2
>`.pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "x!4", D: "x ~@3 x ~@3 x ~@3 x ~@2 x", E: "~ x!3", F: "x ~@2 x ~@4 x ~@3 x ~@3",
  G: "~@3 x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@7 A ~@8 B ~@7 A ~@7 A ~@32 A ~@7 A ~@8 B ~@7 A ~@7 A ~@11>".pickRestart({
  A: "~@12 x!4", B: "~@14 x!2",
})).gain(0.27)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A B ~@2 C ~@20 A B ~@2 C ~@36 A B ~@2 C ~@20 A B ~@2 C ~@22>".pickRestart({
  A: "~@5 x ~@2", B: "~ x", C: "~@7 x",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@7 A ~@8 B ~@7 A ~@7 A ~@32 A ~@7 A ~@8 B ~@7 A ~@7 A ~@11>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@12 x!2 ~@2",
})).gain(0.31)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@3 B C A ~ D ~ E F G ~ A ~ H I@8 ~ A@3 B C A ~ D ~ E F G ~ A ~ H I@8 ~@17 A@3 B C A ~ D ~ E F G ~ A ~ H I@8 ~ A@3 B C
  A ~ D ~ E F G ~ A ~ H I@8 ~@3
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~ x ~@6", C: "~@7 x ~@8", D: "~@13 x ~ x", E: "~@9 x ~@5 x", F: "~ x ~@14",
  G: "~@9 x ~@3 x ~ x", H: "~ x ~@7 x ~@5 x", I: "~ x ~ x ~@4",
})).gain(0.36)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 A ~@8 A ~@7 A ~@7 A ~@8 A ~@23 A ~@7 A ~@8 A ~@7 A ~@7 A ~@8 A ~
>`.pickRestart({
  A: "x",
})).gain(0.36)
// … 66 more lines

More by War