Strudelify

Carte e cartuscelle

Daniele

KeyC majorTempo96 bpm
0:00/0:00
// Carte e cartuscelle — Daniele
// 96 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 2
const string_ensemble_2 = note("<A@7 B@8 C@8 D E@5 F@6 C@8 G@3 H@2 I@4 J@2 K@7 B@8 C@8 D L@8 M@4 ~@4>".pickRestart({
  A: "[[f3,c4]@13 [g3,d4]@16 [a3,c4]@18 [g#3,c#4]@16 [f3,c4]@14 [g3,d4]@16 [a#3,c#4]@19]/7", // F5 G5 Am C#5 F5 G5 A#m
  B: "[~@15 f2@16 ~@6 g5@10 [c4,c5,f5]@32 d4@32 c#4@17, ~@15 [d4,g4]@32 ~@32 g4@49]/8", // F5 G5
  C: "[~@15 a4@16 g4@16 [g4,a4,c5,d5]@14 [g#4,c5,d5,f5]@18 g3@14 f#3@18 [f3,c4,d4]@15 ~@2, ~@15 [c#5,a5]@32 ~@32 [c4,d4]@32 ~@17]/8", // Gsus4 Dm7b5 Dm7 F#m Csus2
  D: "~@15 d#4", E: "[~@5 f4@7 ~ [d#4,g4]@18 [a#2,g#3,c#4,f4]@30 ~@2 [f2,d4,g4]@17]/5",
  F: "[~@5 g5@10 [c4,c5,f5]@32 d4@32 c#4@17, ~@47 g4@49]/6", G: "[~@15 d#4@6 f4@7 ~ [d#4,g4]@18 ~]/3",
  H: "[[c4,g4]@14 ~ c4@17, ~@14 g4@17 ~]/2", // C5
  I: "[[c#4,a4]@14 d4@12 e4@5 [f4,a4,d5]@15 [f4,g#4,c5]@18, ~@7 b4@7 ~@18]/4", J: "[[b3,e4,b4]@7 [a#3,e4,a#4]@9]/2",
  K: "[a4@13 g#4@18 g4@14 f#4@18 f3@32 g#3@17, d5@31 c5@32 ~@49]/7",
  L: "[~@5 f4@7 ~ [d#4,g4]@18 [a#2,g#3,c#4,f4]@28 ~@4 [f3,c4]@14 [g3,d4]@16 [a3,c4]@18 [g#3,c#4]@16 [f3,c4]]/8", // D# A#m7 F5 G5 Am C#5 F5
  M: "[~@13 [g3,d4]@16 [a#3,c#4]@34 ~]/4", // G5 A#m
})).s("gm_string_ensemble_2").gain(0.26).pan(0.4)

// bass · fretless bass
const bass = note(`<
  A@3 B C@2 D@2 E@4 F G H@2 I@2 J@2 K@2 L@2 M@2 N@2 E@4 F G H@2 I@2 J@2 K@2 L@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 V@2 W@2 E@4
  F G H@2 I@2 J@2 K@2 L@2 M@2 N@2 A@3 B C@2 D@2 X@3 ~
>`.pickRestart({
  A: "[f1@5 ~ c#2@4 c2@4 b1@8 g2@4 b1@4 a1@8 f2@4 a1@6]/3", B: "a#1@3 f2@2 c3@3",
  C: "[f1@5 ~ c#2@4 c2@4 b1@8 g2@4 b1@6]/2", D: "[a#1@3 f2@3 a#2@7 ~ c3@2]/2",
  E: "[f1@3 c2@4 b1@4 g1@2 b1@2 a1@4 f2@4 d2@4 e2@2 d2@3]/4", F: "b1@6 g2@7 ~ b1 ~", G: "a#1@6 a2@4 g2@4 a#1 ~",
  H: "[a#1@3 g2@4 g1@4 a#1@2 e2@3]/2", I: "[c#2@3 a2@4 g1@4 e2@2 g1@3]/2", J: "[f2@3 c2@4 f2@4 c2@4 g1]/2",
  K: "[a1@3 e2@4 d2@4 d3@5]/2", L: "[d2@3 a2@4 b1@4 g2@2 b1@3]/2", M: "[g#1@6 d#2@8 g1@8 d#2@4 g#1@3 a1@3]/2",
  N: "[a#1@3 f2@3 a#2@7 ~ g2@2]/2", O: "[g#1@6 d#2@8 g#2@12 c3@5 ~]/2", P: "[c2@3 g2@4 a1@4 e2@3 a1 a#1]/2",
  Q: "[b1@3 f#2@4 e2@4 b2@2 e2@3]/2", R: "[a#1@3 f2@4 d2@4 f2@4 ~]/2", S: "[g#1@3 e2@4 g1@4 e2@4 ~]/2",
  T: "[f1@3 d2@4 g#1@4 e2@2 g#1@3]/2", U: "[g1@3 d#2@4 f#1@4 d#2@2 f#1@3]/2", V: "[a#1@3 f1@4 a1@4 a2@2 f2@3]/2",
  W: "[a#1@6 f2@5 ~ a#2@14 f2@6]/2", X: "[f1@15 ~]/3",
})).s("gm_fretless_bass").gain(0.57)

// chords · piano
const piano = note("<A@3 B C@2 D@2 ~@16 E@2 F@2 ~@16 G@2 H@8 I@4 J@2 K@2 ~@16 E@2 F@2 A@3 B C@2 D@2 L@4>".pickRestart({
  A: "[f5 e5 f5 a#4@2 a4@2 [d4,g4]@3 ~ f5@2 e5@2 [c4,f4]@7 ~@2, [c4,f4]@7 ~@3 [d4,g4]@3 ~@11, c5@3 c6@7 ~@5 f5@9]/3", // G5 F5 G5
  B: "~@4 g#5@2 c6@4 a#5@5 ~, ~ [c#4,f4]@3", // C#
  C: "[f5 e5 f5 a#4@2 a4@2 [d4,g4]@3 ~ f5@2 e5@3, [c4,f4]@7 ~@3 [d4,g4]@3 ~@3, c5@3 c6@7 ~@6]/2", // G5 F5 G5
  D: "[~@6 [d#5,c6] [c#2,c5,c#5,g#5]@9]/2", E: "[[g#4,c5]@6 [a#4,d5]@7 ~ [a#4,d#5]@4 f5@4 g5@4 a#5@6]/2",
  F: "[g#5@23 ~@9]/2", G: "[[g#4,c5]@6 [a#4,d5]@7 ~ g#5@4 c6@4 [a#4,a#5]@10, ~@7 c5@4 ~@5]/2",
  H: "[[c4,g4,g5]@14 [a2,g4,c5]@16 ~@2 [c#5,a5]@14 [e3,d5]@12 ~@5 [a4,d5,f5]@12 ~@21 [b4,d5,e5]@13 ~ [a#3,e4,a#4,d5,e5]@17 [d4,a4], ~@14 g5@14 ~@3 [b2,a4]@15 [e2,b5]@18 ~@64, ~@29 e5@3 ~@13 g#5@4 ~@15, ~@62 a#2@12 ~@4 [d3,g#4,c5,f5]@16 ~ [b3,e4]@12 ~@21]/8", // C5 Am7 F#m E7 Dm E7 Em7b5 D5 …
  I: "[d5@2 ~@2 d5@9 ~ [d4,g#4,d5]@8 [g#4,d5]@9 g4 c5@2 ~@2 c5@9 ~@3 d#4@14 ~@2, d6@14 ~@18 c6@13 ~@19, ~@2 a4@10 ~@10 e4@6 ~@3 c4@14 ~@2 f#4@15 ~@2, ~@17 g4@5 ~ [a4,c5,c6]@8 ~]/4", // Ddim G#dim Am
  J: "[g4@6 f4@8 [g4,c5,f5,g5,c6]@17 ~, [f3,a#3,c5,d5]@7 ~@9]/2", // Csus4 A#
  K: "[[a#2,g#3,c4,c#4,f4]@6 [c#4,f4,g#4,c5]@8 ~@2 c6@15 ~, ~@3 a#2@12 ~, ~@14 c#5@17 ~, ~@15 [f5,g#5]@16 ~]/2", // A#m7 C#maj7 Fm
  L: "[~@23 b4@15 ~@26, f2@25 ~@7, ~ f4@19 ~@12, ~@4 g4@35 ~@25, ~@7 d5@3 b4@4 a4@4 d5@20 ~@26]/4",
})).s("gm_piano").gain(0.51).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B C D@2 E F G H I J K L M N O@2 P Q ~ R S@2 T@2 U V G H I J K L M N O@2 P Q ~ R S@2 W@2 X@2 Y@2 Z AA AB@2 AC@2
  AD@2 AE@2 AF@2 G H I J K L M N O@2 P Q ~ R S@2 T@2 U V A@2 B C D@2 E AG@5
>`.pickRestart({
  A: "[c5@3 [g4,a#4]@2 a4@2 [d4,g4]@2 [d4,g4] [d4,g4]@4 ~@2]/2", B: "f4!2 e4 f4 g4 a4 c5@2",
  C: "~@4 g#4@2 g#4@2 g#4@2 g#4@5 ~, f3, g#4 ~@3, ~@2 g#3@13 ~",
  D: "[~@6 [g4,a#4] ~ [g4,a#4]@2 [f4,a4]@2 [f4,a4]@2 g4@4 ~@2 g4@10 ~@2, ~@14 d4@3 ~ d4@13 ~]/2", // Gm F
  E: "~@2 [c#4,g#4]@2 ~ g#4@3, ~@3 [a#2,c4]@12 ~, ~@2 c#4 ~", // C#5 A#sus2
  F: "~@2 c#4 ~@3 a#2@8 ~@2, a#2@2 c#4@5 ~, ~ c4@4 c4@9 ~@2, ~@3 g#4@11 ~@2", G: "~@2 g3@2 [d4,e4]@11 ~",
  H: "b3@2 d4@2 g4@2 b3@2 d4@2 g4@5 ~", I: "~@2 e4 f4 g4 f4 e4 f4, ~ g3@2 f4@2 ~@11, ~ c4 ~@6",
  J: "~ f4@2 d4@2 f4 e4 d4", K: "g3 d4 g4 g3 d4 g4@3", L: "g3@2 d4@2 g4@2 g3@2 d4@2 g4@5 ~", M: "g3 c#4 g4 g3 c#4 g4@3",
  N: "g3@2 c#4@2 e4@2 g3@2 c#4@2 e4@5 ~",
  O: "[~ a3 e4 ~ e4 a3 ~ e4@2 g3 e4 ~ e4 ~ a4 e4, ~@6 a4@4 ~@2 a4@5 ~@5 a4@4 g3@4 ~@2]/2",
  P: "~@4 f4 ~ a4@3 ~ [a4,c5]@3 d5@2 ~, ~ c4@2 ~@5", Q: "[d5,g#5]@13 ~@3", R: "~ [f#3,c4,a4]!2 [f#3,c4,a4]@3 ~@2",
  S: "[~@4 [g3,d4,f4]@5 ~ [g3,d4,f4] ~@7 d4@4 g3@9 ~, ~@7 g4@4 ~@5]/2", // G7
  T: "[g#3@2 d#3@2 g#3@2 a#3@4 a#3@3 d#3 d#4@3 ~ d#4@2 f4@2 g4@4 a#4@6, ~@7 a#3@3 ~@6]/2",
  U: "[g#4,c5]@2 [g#4,c5] ~ [a#4,c#5]@12", // G# A#m
  V: "c#3 [g#3,c4] g#4 [g#3,c4] c#3 [g#3,c4] g#4 [g#3,c4] c#3 [g#3,c4] g#4 [g#3,c4] ~@4", // G#
  W: "[g#3@2 d#3@2 g#3@2 a#3@4 a#3@3 ~ [g#3,d#4]@8 [a#3,d4]@8 ~@2, ~@14 c3 ~@7 d3 ~@9]/2", // G#5 A#
  X: "[~@10 b3@9 ~@2 e4 ~@2 g4@8, ~@2 b3@3 ~@6 a4@5, ~@3 e4@7 d4@6]/2",
  Y: "[~@5 c#5 ~@5 d5@2 ~ e5@2 d5@13 ~@3, ~@3 [f#3,c#4]@10 ~@19, ~@4 a4@6 [e3,b3]@19 ~@3, ~@6 b4@7 ~@19, ~@7 c#5@4 e4@18 ~@3]/2", // F#5 E5
  Z: "~@3 f4@4 ~, ~@2 f3@11 ~@3, ~@2 a#3@5 ~", AA: "~@6 g#4@9 ~, ~ g#3@7, ~@4 d4@11 ~",
  AB: "[e4@6 b3@8 ~@8 a#3@9 ~, ~@14 e4@17 ~]/2", AC: "[~@2 d4 ~ d4@2 d4@2 d4@2 d4@12 ~@10]/2",
  AD: "[~@2 c4@2 c4@2 c4@2 c4@2 c4@8 ~@13 [a#3,d4,f4]]/2", // A#
  AE: "[[a#2,a4]@2 g4 ~ g4@3 ~ a#4@2 c5@2 a#4@6 f4@2 g4@2 a4@2 f4@4 f4@4, ~@7 c5@2 ~@23]/2", // A#maj7
  AF: "[~@2 [c#4,g#4] ~ [c#4,g#4]@2 [c#4,g#4] ~ [c#4,g#4]@10 [c#4,g#4] ~ [c#4,g#4] ~ [c#4,g#4] ~ [c#4,g#4]@8]/2", // C#5
  AG: "[~@2 c#4 ~@3 a#2@8 ~@2 [d4,g4,b4]@49 ~@15, a#2@2 c#4@5 ~@33, ~ c4@4 c4@9 ~ f3@51 ~@14, ~@3 g#4@11 ~@66]/5", // G
})).s("gm_acoustic_guitar_nylon").gain(0.34)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@20 A@3 B C ~@15 A@3 D E ~@29 A@3 B C ~@15>".pickRestart({
  A: "[d5@3 c5@3 a4@2 d5@3 c5@3 c5@8 d#5 e5@3 d5@4 c5@18, c#5 ~@7 c#5 ~@39]/3",
  B: "~@2 [g4,b4] [a4,c5] [b4,d5] [c5,e5] [d5,f5] [b4,d5]", C: "[g#2,d#4,g#4]@3 [a#2,f4,a#4,f5]@3 ~@2, d#5 ~@3",
  D: "~@2 [g4,b4] [a4,c5] [b4,d5] [c5,d#5] [d5,f5] [b4,d5]", E: "[g#2,d#4,c5,d#5]@6 [a#2,f4,a#4,f5]@7 ~@3",
})).s("gm_string_ensemble_1").gain(0.29).pan(0.6)

// other · flute
const flute = note("<~@20 A@3 ~@17 A@3 ~@11 B@2 C@2 D ~@15 A@3 ~@17>".pickRestart({
  A: "[d5@3 c5@3 a4@2 d5@3 c5@3 [f#4,c5]@8 d#5 e5@3 d5@4 c5@18, c#5 ~@7 c#5 ~@39]/3", B: "[d5@6 a4 g#4@9]/2",
  C: "[c5@6 g4 f#4@9]/2", D: "g4@3 f4@5",
})).s("gm_flute").gain(0.35).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  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 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 ~@3
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  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 C 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 D ~@3
>`.pickRestart({
  A: "x ~@2 x ~@5 x!2 ~@5", B: "x!3 ~@5 x ~@3 x!3 ~", C: "~@2 x!6", D: "x",
})).gain(0.16)

// drums · bongos
const bongos = s("bongo:18").struct("<[~ x ~@2]!90 ~@4>").gain(1.05)

// drums · congas
const congas = s("conga:13").struct("<[~@3 x ~@4]!90 ~@4>").gain(1.54)

// drums · congas
const congas_2 = s("conga:18").struct("<[~ x ~@3 x ~@2]!90 ~@4>").gain(1.54)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<[~ x]!90 ~@4>").gain(0.77)

// drums · congas
const congas_3 = s("conga:33").struct("<[~@6 x!2]!90 ~@4>").gain(1.54)

// drums · shaker
const shaker = s("sh").struct("<[x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!90 x ~@3>").gain(0.24)

// drums · guiro
const guiro = s("guiro:4").struct(`<
  ~@24 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~@13
>`.pickRestart({
  A: "~ x",
})).gain(8.45)

// drums · claves
const claves = s("clave:2").struct(`<
  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 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 ~@4
>`.pickRestart({
  A: "~ x ~@2 x ~@3", B: "x ~@2 x ~@2 x ~",
})).gain(1.57)

stack(
  string_ensemble_2, bass, piano, acoustic_guitar_nylon, string_ensemble_1, flute, kick, ride, bongos, congas, congas_2,
  congas_soft, congas_3, shaker, guiro, claves
)

More by Daniele