Strudelify

Colori

Carboni

KeyG majorTempo120 bpm
0:00/0:00
// Colori — Carboni
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// 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(120/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 · string ensemble 1
const string_ensemble_1 = note(`<
  ~@91 A B C@2 D@2 E F G@4 E F H@4 I@2 J@2 K@2 L@2 M@2 N@2 O P J@2 K@2 L@2 M@2 Q@6 ~@3
>`.pickRestart({
  A: "[e3,a3,c4]", B: "[f#3,b3,d4]", C: "[g3,c4,e4]/2", D: "[g3,b3,d4]/2", E: "[e3,b3,e4]", F: "[b2,f#3,d4]",
  G: "[[c3,c4] [g2,b3], g3@63 ~]/4", H: "[[c3,e4] [d4,g4], g3@63 ~]/4", I: "[[e3,e4,g4] [b2,d4,f#4], b3@31 ~]/2",
  J: "[c3,g3,c4,e4]/2", K: "[g2,g3,b3,d4]/2", L: "[[e3,e4,g4] [b2,f#4,b4], b3@31 ~]/2", M: "[e4 c4, [c3,g4,c5]]/2",
  N: "[[g2,d4], [b3,g4] ~@31]/2", O: "[e3,e4], [b3,g4] ~@15", P: "[b2,d4,f#4]", Q: "[[g2,b3,g4]@27 ~@5, d4 ~@2]/6",
})).s("gm_string_ensemble_1").gain(0.18)

// bass · electric bass pick
const bass = note(`<
  ~@31 A B C D A B C E F G H I J K L M N O P Q R S N T U V A B C D A B C W F G H I J K L M N O P Q R S N T U V A B C D A
  B C W F G H I J K L M N O P Q R S N T U V L M N O P Q L M N O P Q L M N O P Q L M N O P Q X Y Z@5
>`.pickRestart({
  A: "c2@12 ~@2 c2 ~", B: "c2@15 ~", C: "g1@13 ~ g1@2", D: "d2 ~ d2@4 b1 g1", E: "d2 ~ d2@3 b1 e1 ~",
  F: "a1@12 ~@2 a1 ~", G: "b1@7 g1", H: "c2@13 ~ g1@2", I: "c2 ~ c2@3 g1 e1 ~", J: "d2@12 ~@2 d2 ~",
  K: "d2@11 ~ d2@2 b1@2", L: "e2@12 ~@2 e1 ~", M: "b1@2 ~@2 b1@5 ~ d2@3 ~ g1@2", N: "c2@13 ~ c2@2", O: "a1@13 ~ a1@2",
  P: "g1@6 ~ d2", Q: "g2@2 ~@2 g2@7 ~ d2@2 b1@2", R: "e1@12 ~@2 e1 ~", S: "b1@13 ~ g1@2", T: "a1@3 ~ a1@7 ~ a1@2 e1@2",
  U: "g1@12 ~@2 g1 ~", V: "g1@15 ~", W: "d2 ~ d2@3 b1@2 e1", X: "g1@13 ~ d1 ~", Y: "g1 ~ g1@6",
  Z: "[~ g1@13 ~ d1@2 g1@2 ~@2 g1@13 ~ g1@38 ~@7]/5",
})).s("gm_electric_bass_pick").gain(0.52)

// chords · pad warm
const pad_warm = note(`<
  ~ A@4 B@2 C@2 D@2 E@2 F G H@2 I@2 J K L@2 M@2 N G O@2 P@2 B@2 C@2 D@2 E@2 F G H@2 I@2 J K L@2 M@2 N G O@2 P@2 B@2 C@2
  D@2 E@2 F G H@2 I@2 J K L@2 M@2 N G O@2 P@2 Q@2 R@2 D@2 S@2 T U V@2 W@2 X Y Z@2 AA@2 AB U AC@2 AD@2 X Y Z@2 AA@2 AB U
  AC@2 AD@2 AE AF AG@2 AH@2 AI AJ AK@2 AL AM@8
>`.pickRestart({
  A: "[[c4,e4]@31 ~ [g2,a3,d4]@31 ~, g3@63 ~]/4", B: "[c3,g3,c4,e4]/2", C: "[~ f#3, [g2,a3,d4]]/2",
  D: "[[c3,g3,b3,e4]@31 ~]/2", E: "[g4 f#4, [g2,b4,d5]]/2", F: "[a2,e3,a3,c4]", G: "[b2,f#3,b3,d4]",
  H: "[c3,c4,e4,g4]/2", I: "[g3,d4,g4,b4]/2", J: "[e3,e4,g4,b4]", K: "[b2,b3,d4,f#4]", L: "[g3 a3, [c3,c4,e4]]/2",
  M: "[g2,d4,g4,b4,d5]/2", N: "[e3,b3,e4,g4]", O: "[~@16 a3@15 ~, [c3,c4,e4,g4]]/2", P: "[b4 b3, [g2,d4,g4]]/2",
  Q: "[[c3,g3,c4,e4]@31 ~]/2", R: "[~@16 f#3@15 ~, [g2,a3,d4]@31 ~]/2", S: "[g4@16 f#4@15 ~, [g2,b4,d5]@31 ~]/2",
  T: "[a2,a3,c4]@15 ~", U: "[b3,d4]@15 ~", V: "[[e4,g4]@31 ~]/2", W: "[[g4,b4]@31 ~]/2", X: "[g4,b4]@15 ~",
  Y: "[d4,f#4]@15 ~", Z: "[[c4,e4]@31 ~]/2", AA: "[[g4,d5]@31 ~]/2", AB: "[e4,g4]@15 ~",
  AC: "[~@16 a3@15 ~, [e4,g4]@31 ~]/2", AD: "[b4 b3, g4@31 ~]/2", AE: "[e4,b4]@15 ~", AF: "[b3,f#4]@15 ~",
  AG: "[g3@16 a3@15 ~, e4@31 ~]/2", AH: "[[d4,d5]@31 ~]/2", AI: "[b3,g4]@15 ~", AJ: "[f#3,d4]@15 ~",
  AK: "[~@16 a3@15 ~, [c4,g4]@31 ~]/2", AL: "[d4,b4]", AM: "[~@8 [g2,d4,g4]@51 ~@5, b3@51 ~@13]/8",
})).s("gm_pad_warm").gain(0.37)

// other · lead 1 square
const lead_1_square = note(`<
  ~ A@2 B C A@2 B C A@2 B C A B A@2 B C D@2 A D B C D@2 A D B C A@2 B C A@2 B C A B A@2 B C D@2 A D B C D@2 A D B C A@2
  B C A@2 B C A B A@2 B C D@2 A D B C D@2 A D B C A@2 B C A@2 B C A B A@2 B C D@2 A D B C D@2 A D B C D@2 A D B C D@2 A
  D B C D@2 A D B C D@2 A D B C D E@3 F@3
>`.pickRestart({
  A: "a4 b4 e5 a4 b4 e5 a4 b4", B: "a4 b4 d5 a4 b4 d5 a4 b4", C: "a4@2 b4@2 d5@2 a4@2 b4@2 d5@2 a4@2 b4 ~",
  D: "a4 b4 e5 a4 b4 d5 a4 b4",
  E: "[a4@2 b4@2 e5@2 a4@2 b4@2 d5@2 ~ a4@2 b4@2 a4@2 b4@2 e5@2 a4@2 b4@2 e5@2 a4@2 b4@2 a4@2 b4@2 e5@2 a4@2 b4@3 d5@2 a4@2]/3",
  F: "[~ b4@2 a4@2 b4@3 d5@2 a4@2 b4@3 d5@2 a4@2 b4@2 ~ a4@2 b4@2 d5@2 ~ a4@2 b4@2 ~ d5@2 a4@2 b4@2 ~@8]/3",
})).s("gm_lead_1_square").gain(0.11).pan(0.9)

// other · lead 1 square
const lead_1_square_2 = note(`<
  ~ A B C D A B C D A B C D A C A B C D E C A B C D E C A B C D A B C D A B C D A C A B C D E C A B C D E C A B C D A B
  C D A B C D A C A B C D E C A B C D E C A B C D A B C D A B C D A C A B C D E C A B C D E C A B C D E C A B C D E C A
  B C D E C A B C D E C A B C D E F G H I J K
>`.pickRestart({
  A: "~@4 b4@2 ~@2 e5@3 ~ b4@2 e5 ~", B: "~@2 b4 e5 ~ b4 e5 ~", C: "~@4 b4@3 ~ d5@4 b4@2 d5@2",
  D: "~@2 b4 d5 ~ b4 d5 ~", E: "~@4 b4@2 ~@2 e5@3 ~ b4@2 d5 ~", F: "~@4 b4@3 ~ d5@4 ~@2 d5@2, ~@13 b4@2 ~",
  G: "~@5 b4@2 ~@2 e5@3 ~ b4@2 e5", H: "~@5 b4@2 e5@2 ~@3 b4@2 e5@2", I: "~@7 b4@3 ~@2 d5@4",
  J: "~ b4@2 d5@2 ~@5 b4@2 d5@3 ~", K: "~@2 b4@2 d5@3 ~@9",
})).s("gm_lead_1_square").gain(0.11).pan(0.1)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@57 A@8 B@4 C@3 D E F G@2 H D E F G@2 ~@14 H D E F G@2 H D E F G@2 H D E F G@2 H D E F G@2 H D E F G@2 H D E F G@2
  ~@7
>`.pickRestart({
  A: "[~@2 c4@2 ~@2 c4@4 ~@2 c4@5 ~ c4@2 ~@2 c4@4 ~@2 c4@5 ~ d4@2 ~@2 d4@4 ~@2 d4@5 ~ d4@2 ~@2 d4@4 ~@2 d4@4, ~@2 g4@7 ~ g4@7 ~ a4@7 ~ a4@6, ~@5 e4@4 ~@4 e4@4 ~@4 g4@4 ~@4 f#4@3]/4",
  B: "[~@2 c4@2 ~@2 c4@4 ~@2 c4@5 ~ d4@2 ~@2 d4@4 ~@2 d4@5 ~ d4@2 ~@2 d4@4 ~@2 d4@5 ~ d4@2 ~@2 d4@4 ~@2 d4@4, ~@2 a4@7 ~ a4@7 ~ a4@7 ~ a4@6, ~@5 g4@4 ~@4 g4@4 ~@4 g4@4 ~@4 g4@3]/4",
  C: "[~@5 g4 ~ g4@2 ~ d4 g4 ~@2 d4@3 ~@5 e4@2, ~@2 d4@8 ~@2 d4@5 ~ b3@4 ~@12 b3@7 ~ b3@6, ~@4 g4@5 ~@17 g4@4 ~@6 e4@6 ~@6, ~@6 b4@13 ~@5 b4@10 ~@4 g4@10]/3",
  D: "~@3 d4, ~@2 b3@7 ~ b3@6, ~@2 d4@3 ~@3, ~@3 f#4@5", E: "~@3 g3, ~ g3@4 ~@3, ~@4 c4@5 ~ c4@6, ~@3 e4@5",
  F: "~@3 g3, ~@2 g3@7 ~@7, ~@4 c4@5 ~ c4@6, ~@3 e4@5",
  G: "[~@5 g4 ~ g4@2 ~@2 g4 ~@2 d4@2, ~ d4@4 ~ d4@3 b3@7, ~@4 g4@5 ~@11 d4@6 g4@6, ~@3 b4@6 ~@3 b4@4]/2",
  H: "~@3 e4, ~@2 b3@7 ~ b3@6, ~@2 e4@3 ~@3, ~@3 g4@5",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// other · distortion guitar · Gsus2 G5
const distortion_guitar = note(`<
  ~@85
  [~@4 a4 g4 ~ [g4,a4] ~ a4 g4 ~ a4 g4 ~ a4]
  [g4 a4 ~ g4 a4 g4 ~ a4 g4 ~ a4 g4 ~ a4 g4 ~]
  [a4 g4 ~ a4 g4 d5 g4 ~ d5 g4 ~ e5 g4@2 e5 g4]
  [~@2 a5 ~@2 [g4,a5] ~@2 [g4,d5] g4 ~ d5 g4 ~ d5 g4]
  [~ d5 g4 ~ d5 g4 ~ a5 d5 ~ a5 d5 ~ a5 d5 ~]
  [d6 g5 ~ d6 g5 ~ d6 g5 ~@2 [g5,d6] ~@2 d6 g5 ~]
  ~@49
>`).s("gm_distortion_guitar").gain(0.08)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@3 A B@3 A B@2 C A B@3 A B A B@3 A B A D B@2 A B A B@3 A B@2 C A B@3 A B A B@3 A D A B A B A B A B@2 D A B@2 C A
  B@3 A B A B@3 A D A B@3 A D A B@3 A B@3 A B@3 A B A B@3 A D A D B@2 A D A B@3 A D A D B@2 A D A B@3 A D A D B@2 A D A
  B E@2 F ~@2
>`.pickRestart({
  A: "x ~@6 x", B: "x", C: "x ~ x ~@2 x ~@2", D: "x!2 ~@2", E: "~ x ~@14", F: "~@3 x ~@12",
})).gain(0.68)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@5 A ~@5 A ~@3 A ~@3 A ~@5 A ~@11 A ~@3 A ~@3 A ~@5 A ~@5 A ~@5 A ~@3 A ~@3 A ~@5 A ~@5
  A ~@5 A ~@5 A ~@5 A ~@5 A ~@5 B ~@4
>`.pickRestart({
  A: "~@7 x", B: "~@15 x",
})).gain(0.38)

// drums · rim
const rim = s("rim").struct("<~ [~ x]!107 ~@25 [~ x]!2 [~@9 x ~@6]!2 ~@3>").gain(0.68)

// drums · snare
const snare = s("sd").struct("<~@109 [~ x]!11 ~ [~ x]!11 ~@4 [~@6 x!2] ~@3>").gain(0.6)

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

// drums · low tom
const low_tom = s("lt").struct("<~@108 [~@3 x] ~@11 [~@3 x] ~@11 [~@3 x] ~@7>").gain(0.53)

// drums · mid tom
const mid_tom = s("mt").struct("<~@108 A ~@11 A ~@11 A ~@3 B ~@3>".pickRestart({
  A: "~@4 x!2 ~@2", B: "~@6 x!2",
})).gain(0.53)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~
  A ~@3 A ~ A ~@3 A ~ A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@3 A ~ A ~@2 B ~@2
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@14",
})).gain(0.6)

// drums · crash
const crash = s("cr").struct("<~ A ~@29 A ~@13 A ~@11 A ~@13 A ~@25 A ~@5 A ~@5 A ~@5 A ~@5 A ~@5 A ~@12>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<[~@13 x!3] ~@29 [~@13 x!3] ~@25 [~@13 x!3] ~@83>").gain(0.08)

// drums · ride
const ride = s("rd").struct("<~@83 [x!4]!50 x ~@3 [~@3 x ~@12] ~@2>").gain(0.38)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@44 A@13 ~ A ~ A ~ A ~ A ~ A ~ A ~ A@13 ~ 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 ~ B ~@3
>`.pickRestart({
  A: "~ x", B: "~@9 x ~@6",
})).gain(0.6)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@7 A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@9
>`.pickRestart({
  A: "~@4 x!3 ~",
})).gain(1.84)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@7 A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@9
>`.pickRestart({
  A: "~@7 x",
})).gain(0.74)

stack(
  string_ensemble_1, bass, pad_warm, lead_1_square, lead_1_square_2, acoustic_guitar_nylon, distortion_guitar, kick,
  kick_soft, rim, snare, hihat, low_tom, mid_tom, open_hat, crash, crash_soft, ride, tambourine, claves, claves_soft
)

More by Carboni