Strudelify
Quando ci sarai cover art

1996 · Quando Ci Sarai

Quando ci sarai

Nomadi

KeyG minorTempo111 bpm
0:00/0:00
// Quando ci sarai — Nomadi
// 111 bpm, 4/4, key G minor. 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 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · electric bass finger · "tk2"
const bass = note(`<
  ~ A B C D A B C E F G C E F G C E F G C H I J K L M N O P Q R S T M N O U Q R A B C D A B C E F G C E F G C E F G C H
  I J K L M N O P Q R S T M N O U Q R A B C D A B C E F G C E F G C H M N O P Q R S T M N O U Q R A B C D A B C E A B C
  D A B V@5
>`.pickRestart({
  A: "g1@5 ~ g1@2 g1@7 ~", B: "f1@5 ~ f1@2 bb1@4 f2@2 g2@2", C: "c2@5 ~ c2 ~ c2@4 g1@2 c2@2",
  D: "g1@5 ~ g1 ~ g1@4 g1@4", E: "g1@5 ~ g1 ~ g1@2 d1@2 f1@2 gb1@2", F: "g1@5 ~ g1 ~ g1@6 bb1@2",
  G: "f1@5 ~ f1@2 bb1@2 eb2@2 f2@2 g2@2", H: "g1@5 ~ g1 ~ g1@2 d1@2 g1@2 c2@2",
  I: "bb1@5 ~ bb1@2 bb1@2 bb1@2 bb1@2 a1@2", J: "g1@2 g1@3 ~ g1@2 c2@2 d2@2 g2@2 f2@2",
  K: "f2@2 f2@3 ~ f2@2 f2@2 f2@2 c2@2 f2@2", L: "g1@5 ~ g1 ~ g1@2 d1@2 g1@2 d2@2", M: "eb2!6 bb1 eb2",
  N: "eb2@2 eb2@2 eb2@2 f2@2 eb2@2 eb2@2 bb1@3 ~", O: "bb1!6 a1@2", P: "bb1!8",
  Q: "f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 d2@3 ~", R: "f2!5 c2 f2 c2", S: "bb1!6 a1 bb1",
  T: "bb1@2 eb2@3 ~ eb2@2 bb2@2 a2@2 f2@3 ~", U: "bb1!5 a1 bb1 a1", V: "[c2@6 ~ c2 ~ c2@5 ~ g1@3 c2@3 g1@50 ~@9]/5",
})).s("gm_electric_bass_finger").gain(0.49)

// chords · electric guitar clean · "tk3"
const electric_guitar_clean = note(`<
  A@3 B@6 ~@7 C@5 ~@18 D@8 ~@7 C@5 ~@18 D@8 ~@4 E@4 ~@13 A@3 B@6 F@7 G@4
>`.pickRestart({
  A: "[~@16 g4@13 ~@3 f4@14 ~ c4, ~@14 bb3@14 ~@2 a3@15 ~ g3@2, ~@15 d4@13 ~@3 c4@13 ~@4]/3",
  B: "[e4@11 ~@5 g4@13 ~@3 g4@11 ~@5 f4@14 ~@2 e4@12 ~@4 g4@15 ~, ~@14 bb3@15 ~ bb3@13 ~@3 a3@14 ~@2 g3@14 ~@3 d4@16 ~, ~@15 d4@13 ~@3 d4@11 ~@5 c4@13 ~@3 c4@13 ~@2 bb3@17 ~]/6",
  C: "[~@8 d4@7 ~ c4@7 ~ c4@7 ~ d4@7 ~, ~@14 g3@14 ~@2 f3@15 ~ e3@15 ~@2 bb3@15 ~@2, ~@15 bb3@15 ~ a3@15 ~ g3@14 ~ g3@16 ~@2]/5",
  D: "[g4@13 ~@3 f4@14 ~@2 e4@11 ~@5 g4@13 ~@3 g4@11 ~@5 f4@14 ~@2 e4@12 ~@4 g4@15 ~, ~@14 a3@15 ~ g3@12 ~@5 d4@13 ~@3 d4@11 ~@5 c4@13 ~@3 c4@13 ~@2 bb3@17 ~, ~@15 c4@13 ~@3 c4@11 ~@4 bb3@15 ~ bb3@13 ~@3 a3@14 ~@2 g3@14 ~@3 d4@16 ~]/8",
  E: "[d4@7 ~ c4@7 ~ c4@7 ~ d4@7 ~, ~@14 f3@15 ~ e3@15 ~@2 bb3@15 ~@2, ~@15 a3@15 ~ g3@14 ~ g3@16 ~@2]/4",
  F: "[g4@13 ~@3 f4@14 ~@2 e4@11 ~@5 g4@13 ~@3 g4@11 ~@5 f4@14 ~@2 e4@15 ~, ~@14 a3@15 ~ g3@12 ~@5 d4@13 ~@3 d4@11 ~@5 c4@13 ~@3 c4@16 ~, ~@15 c4@13 ~@3 c4@11 ~@4 bb3@15 ~ bb3@13 ~@3 a3@14 ~@2 g3@17 ~]/7",
  G: "[~@5 g4@53 ~@6, ~@2 bb3@53 ~@9, ~@3 d4@53 ~@8]/4",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.4)

// other · alto sax · "tk5"
const alto_sax = note(`<
  ~ A B C D A E C D ~@29 F A B C D A E C D ~@25 G@3 H ~ A B C D A E C D ~@11 I J K L M N@2 O P Q@2 R S C T U V W@2 X Y Z
  AA AB AC AD AE@2 AF@2
>`.pickRestart({
  A: "bb4@4 a4@4 g4@6 bb4 ~", B: "a4@2 g4@3 f4 ~ g4 a4@7 [g4,a4]", C: "g4@2 f4@2 e4@3 c4", D: "d4@7 g3@8 ~, db4 ~@15",
  E: "a4@2 c5@3 f4 ~ g4 a4@7 a4", F: "~@7 d4",
  G: "[~@4 bb4@2 c5@2 d5@2 f5@2 g5@22 bb5@2 a5@2 f5@2 d5@3 db5 c5@2 bb4@2]/3", H: "c5",
  I: "~@4 bb4@2 c5@2 d5@3 f5@2 g5@3", J: "g5@12 ~ bb5 a5@2", K: "~@2 [d5,f5] c5 bb4@4 c5@6 d5@2", L: "c5@2 bb4@13 ~",
  M: "~@2 g5@4 [d5,f5] [bb4,c5] d5@2 eb5@2 d5@2 eb5@2", N: "[eb5@19 ~ eb5@2 d5@2 f5@5 eb5 d5 ~]/2", O: "eb5 d5 bb4@14",
  P: "~@2 bb4@2 c5@2 d5@2 f5@4 d5 c5 bb4@2", Q: "[a4@7 ~]/2", R: "bb4@4 a4@4 g4@6 bb4!2",
  S: "a4@2 g4@4 f4 g4 a4@5 c5 ~ f4", T: "d4 g3", U: "bb4@4 a4@4 g4@5 a4 ~ bb4", V: "c5@2 d5@3 ~ bb4@2 c5@6 bb4 a4",
  W: "[g4@25 ~ g4@6]/2", X: "~@5 d4 g4 a4 a4@2 g4@6", Y: "~@2 g4 a4 bb4 c5 d5 ~ d5 [d5,eb5] c5@6",
  Z: "~@2 g5 ~ g5@2 f5 ~ bb5@5 ~ g5 d5", AA: "g5 d5 g5@4 bb5@2 ~@6 bb5 [f5,g5]",
  AB: "d5@2 g5 [d5,f5] c5@2 ~ [c5,d5] bb4@2 [f4,g4] [c4,d4] g4@4, ~@12 bb3 ~@3", AC: "a4@6 c5@2 d5@2 ~@4 g5 ~",
  AD: "g5@4 f5@2 ~ g5 ~ e5@2 ~ c5@4", AE: "[~@2 d5@9 a4 g4 a4@5 g4 f4 d4 g4@8 f4 d4 c4]/2", AF: "[f4 g4 d4@21 ~@9]/2",
})).s("gm_alto_sax").gain(0.63)

// chords · rock organ · "tk6"
const rock_organ = note(`<
  ~@20 A B C D E ~@7 F G@2 H@2 I@2 ~@19 A B C D E ~@7 F G@2 H@2 I@2 ~@23 F G@2 H@2 I@2 ~@19
>`.pickRestart({
  A: "~@11 [c3,d3,e3,f3,g3] [b3,c4] [d4,e4,f4,g4,a4,b4] [c5,e5,f5] [ab5,c6,d6,e6]", B: "f6", C: "[bb5,d6]",
  D: "[a5,c6]", E: "[g5,bb5]", F: "~@12 [d2,e2,f2,gb2,g2] g3 [a3,b3,c4] ~, ~@6 [a2,b2,c3,d3] ~, ~@13 [e3,f3]@2 ~",
  G: "[eb6,g6]/2", H: "[d6,f6]/2", I: "[c6,f6]/2",
})).s("gm_rock_organ").gain(0.29)

// chords · rock organ · "tk6" · soft notes · Gbm Gmaj7 Gbm Gmaj7
const rock_organ_soft = note(`<
  ~@20
  [~@11 eb3 [gb3,a3] ~ [d5,gb5,g5] [a5,bb5,b5]]
  ~@37
  [~@11 eb3 [gb3,a3] ~ [d5,gb5,g5] [a5,bb5,b5]]
  ~@67
>`).s("gm_rock_organ").gain(0.16)

// other · string ensemble 2 · "tk7"
const string_ensemble_2 = note(`<
  ~@25 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F ~@23 A@2 B@2 G@2 D@2 A@2 B@2 E@2 F ~@15 A@2 B@2 G@2 D@2 A@2 B@2 E@2 ~@19
>`.pickRestart({
  A: "[~@2 eb5 f5 g5@10 f5 g5]/2", B: "[f5 d5 bb4@14]/2", C: "[a4@3 ~ a4@2 bb4@2 c5@23 [c5,d5]]/2",
  D: "[c5 bb4 f4@14]/2", E: "[~@2 a4 bb4 c5@10 c5 d5]/2", F: "bb4 a4 g4@2", G: "[a4@3 ~ a4@2 bb4@2 c5@22 c5 d5]/2",
})).s("gm_string_ensemble_2").gain(0.56).pan(0.3)

// other · string ensemble 2 · "tk8"
const string_ensemble_2_2 = note(`<
  ~@25 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F ~@15 G H I ~@5 A@2 B@2 J@2 D@2 A@2 B@2 E@2 F ~@11 G H I ~ A@2 B@2 J@2 D@2 A@2 B@2
  E@2 ~@19
>`.pickRestart({
  A: "[~@2 eb4 f4 g4@10 f4 g4]/2", B: "[f4 d4 bb3@14]/2", C: "[a3@3 ~ a3@2 bb3@2 c4@23 [c4,d4]]/2",
  D: "[c4 bb3 f3@14]/2", E: "[~@2 a3 bb3 c4@10 c4 d4]/2", F: "bb3 a3 g3@2", G: "bb3@7 d4 c4@2 bb3@6",
  H: "a3@3 c4 bb3 a3@3", I: "g3@15 ~", J: "[a3@3 ~ a3@2 bb3@2 c4@22 c4 d4]/2",
})).s("gm_string_ensemble_2").gain(0.56).pan(0.4)

// other · string ensemble 2 · "tk9"
const string_ensemble_2_3 = note("<~@47 A B C D A B C D A E F D ~@26 A B C D A E F D ~@33>".pickRestart({
  A: "g3@7 bb3 a3@2 g3@6", B: "f3@7 a3 g3@2 f3@6", C: "e3@7 g3 f3@2 e3@6", D: "g3", E: "f3@3 a3 g3 f3@3",
  F: "e3@7 a3 g3@2 f3@2 e3@4",
})).s("gm_string_ensemble_2").gain(0.64).pan(0.6)

// other · string ensemble 2 · "tk9" · soft notes
const string_ensemble_2_soft = note("<~@17 [g3@6 a3 bb3] f3 e3 [g3@7 ~] ~@105>")
  .s("gm_string_ensemble_2").gain(0.32).pan(0.6)

// chords · acoustic guitar steel · "tk12"
const acoustic_guitar_steel = note(`<
  ~ A B C A@2 B C A@2 B C A@2 B C A@2 B C A D A B A E@2 F@2 G@2 F@2 H@2 D@2 B@2 A B C A@2 B C A@2 B C A@2 B C A@2 B C A
  D A B A E@2 F@2 G@2 F@2 H@2 D@2 B@2 A B C A@2 B C A@2 B C A@2 B C A E@2 F@2 G@2 F@2 H@2 D@2 B@2 A B C A@2 B C A@2 B C
  A@2 B I J@4
>`.pickRestart({
  A: "[bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4] ~ [bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4]@2 [bb3,d4,g4] ~ [bb3,d4,g4]@2", // Gm
  B: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]@2", // F
  C: "[g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2", // C
  D: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~ [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~ [bb3,d4,f4]@2", // Bb
  E: "[bb3,eb4,g4]!4", F: "[bb3,d4,f4]!4", G: "[a3,c4,f4]!4",
  H: "[bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4] ~ [bb3,eb4,g4]@2", // Eb
  I: "[g3,c4,e4]@2 [g3,c4,e4]@2 g3 [c4,e4] ~ [g3,c4,e4]@2 ~ e4@2 [g3,c4,e4]@2 ~ [g3,c4,e4], ~@9 [g3,c4]@3 ~@4", // C C5
  J: "[~@2 [g3,c4,e4]@2 ~ [d4,g4]@50 ~@9, ~@2 bb3@25 ~@5]/4", // C G5
})).s("gm_acoustic_guitar_steel").gain(0.25)

// chords · acoustic guitar steel · "tk13"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C A@2 B C A ~@30 A B C A@2 B C A ~@30 A B C A@2 B C A ~@22 A B C A@2 B C A@2 B C A@2 B D E@4
>`.pickRestart({
  A: "[g4,bb4,d5]!16", B: "[f4,a4,c5]!16", C: "[e4,g4,c5]!16",
  D: "[e4,g4,c5]!3 [g4,c5] e4 [g4,c5] [e4,g4,c5]!3 [e4,g4] c5 [e4,g4,c5]!2 ~ e4 [e4,g4,c5], ~@13 [g4,c5]@2 ~", // C C5 C Em C C5
  E: "[[e4,g4,c5] ~ [e4,g4,c5]!2 ~ [bb4,d5]@50 ~@9, ~@2 g4@25 ~@5]/4", // C Bb
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.7)

// other · accordion · "tk15"
const accordion = note(`<
  ~ A B C A@2 B C A ~@30 A B C A@2 B C A ~@30 A B C A@2 B C A ~@22 D E F G D E F G D E F G D E H@5
>`.pickRestart({
  A: "[bb4,d5]", B: "[a4,c5]", C: "[g4,c5]", D: "bb4@2 a4@2 g4@3 bb4", E: "a4@2 g4@4 f4 g4 a4@8",
  F: "g4@4 f4@3 e4@7 c4@2", G: "d4@3 g3@5", H: "[g4@5 f4@4 e4@8 c4@4 d4@49 ~@10]/5",
})).s("gm_accordion").gain(0.35).pan(0.3)

// other · electric guitar muted · "tk16"
const electric_guitar_muted = note(`<
  ~@25 A B C D E F C D A B C D E F ~@24 A B C D E F C D A B C D E F ~@16 A B C D E F C D A B C D E F ~@19
>`.pickRestart({
  A: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ bb2 ~ eb3 ~", B: "eb3 ~ eb3 ~ eb3 ~ f3 ~ eb3 ~ eb3 ~ bb2 ~ eb3 ~",
  C: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ a2 ~ bb2 ~", D: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  E: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ c3 ~ f2 ~", F: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ c3 ~ f2 ~ c3 ~",
})).s("gm_electric_guitar_muted").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@7 B A@15 B C@7 ~ A@13 B A@11 D A@3 D C@7 ~ A@5 D C ~@3 C ~@3 A@7 E C@8 A@5 D A@7 B A@6 F G ~@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x", D: "x ~@2 x ~@4", E: "x ~@2 x!3 ~ x", F: "x ~@6 x ~ x ~@6",
  G: "~@5 x ~@10",
})).gain(0.8)

// drums · rim
const rim = s("rim").struct("<~@77 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!3 ~@42>").gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@8 A ~@23 B ~@13 A ~@15 C ~@7 D ~@5 E ~@7 D ~@21 E ~@7 A ~@11>".pickRestart({
  A: "~@13 x!2 ~", B: "~@5 x ~@5 x ~@4", C: "~@11 x ~@4", D: "~@5 x ~@10", E: "~@9 x ~@6",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@19 B ~@7 C ~@5 D ~@3 A ~@15 E ~@3 F ~@7 C ~@5 G ~@3 A ~@19 H ~@5 G ~@3 A ~@7 A ~@7
>`.pickRestart({
  A: "~@6 x!2", B: "~@5 x ~@2", C: "~@14 x!2", D: "~@7 x", E: "~@5 x ~ x", F: "~@15 x", G: "~@10 x!2 ~@2 x ~", H: "~ x",
})).gain(0.64)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@27 B ~@5 C ~@3 A ~@19 D ~@7 E ~@5 C ~@3 A ~@3 F ~@21 C ~@3 A ~@7 A ~@7
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@2 x ~@3", C: "~@3 x", D: "~@7 x", E: "~ x ~@2 x ~ x ~", F: "~@2 x ~@5 x ~@2 x ~@4",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@58 [~@3 x ~@4] ~@67>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@11 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@11 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A
// … 19 more lines

More by Nomadi