Strudelify
Amori dispari cover art

Amori dispari

Amori dispari

Paoli

KeyE minorTempo98 bpm
0:00/0:00
// Amori dispari — Paoli
// 98 bpm, 4/4, key E 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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
const bass = note(`<
  A B C D E B F D G H I J K L M N O H I J K L M P Q R S M T R U V W X B C D E B F Y Z AA AB AC AD AE AF AG AH H I J K L
  M P Q R S M T R U V AI R S M T R U AJ@2 AK@3 AL AM B C D E B F Y AN@4
>`.pickRestart({
  A: "~@3 c2", B: "e1@5 ~ e1@2 b0@4 d1@4", C: "e1@7 ~ b0@4 e1@4", D: "a1@7 ~ e1@4 g1@4", E: "a1@5 ~ a1@2 e1@4 c2@4",
  F: "e1@2 b0 e1", G: "a1@4 e1@3 g1", H: "a1@7 ~ e1@6 g1@2", I: "a1@2 e1 a1", J: "c2@8 c1@6 c1 c2",
  K: "b1@7 ~ f#1@4 b1@4", L: "c2@5 ~ c2@2 g1@5 ~ g1@2", M: "a1@5 ~ a1@2 e1@4 a1@4", N: "g1@8 d1@5 ~ d1@2",
  O: "g1@6 g1 ~ f#1@4 g#1@3 ~", P: "g1@8 d2@7 ~", Q: "g1@6 g1 ~ d2@4 g1@2 a1@2", R: "c2@5 ~ c2@2 g1@4 c2@4",
  S: "b1@5 ~ b1@2 f#1@6 f#1 b1", T: "g1@3 g1 d2@2 d1 g1", U: "b1@4 ~@2 b1 ~ f#1@4 b1@3 ~",
  V: "c2@5 ~ c2 ~ g1@4 c2 ~ c#2 ~", W: "d2@4 ~@2 d2 ~ a1@5 ~ c2@2", X: "d2@3 ~@9 c2@4", Y: "a1@2 e1 g1",
  Z: "a1@2 f#1 g#1", AA: "f#1@5 ~ f#1@2 c#2@5 ~ c#2@2", AB: "f#2@5 ~ f#2@2 c#2@5 ~ c#2 f#1",
  AC: "a1@5 ~ e2@2 a2@6 e2@2", AD: "a1@5 ~ a1@2 e2@4 a1@2 c2@2", AE: "d2@4 a1@3 a1", AF: "d1@5 ~ d1@2 a1@4 d2@3 ~",
  AG: "e2@6 b1@2 e1@6 d2 e2", AH: "e1@8 c2@4 b1@3 ~", AI: "d2@6 ~ a1 g1@7 ~",
  AJ: "[c2@5 ~ c2 ~ g1@4 c2 ~ f1@8 f2@2 c2@2 f2@2 c2@4]/2",
  AK: "[e1@6 b1@2 e2@5 ~ a1@5 ~ b1@4 c2@2 b1@2 d2@2 a1@6 ~@2 a1@2 e1@4 g1 ~ a1@2]/3", AL: "d2@5 ~ d2 ~ a1@8",
  AM: "d2@5 ~@7 c2@4", AN: "[a1@8 e1@5 c2@5 e1@39 ~@7]/4",
})).s("gm_fretless_bass").gain(0.56)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B@2 C@2 D@2 E@2 ~@7 F G H I J@2 K L M N O P Q R S T U A V W X Y Z AA AB@2 AC@2 AD AE AF AG AH@2 G H I J@2 K L M N AI
  AJ Q R S T AK N AI AJ Q R S AL@5 ~ A B@2 AM@2 AN AO AP@5
>`.pickRestart({
  A: "~@3 a#4", B: "[a4@3 g4@9 ~@4]/2", C: "[[g3,c4,e4,b4]@25 ~@3 a#4@4]/2", D: "[a4@6 g4@7 ~ e4@16 ~@2]/2",
  E: "[[g3,c4,e4,g4]@25 ~@7]/2", F: "~@2 [c#4,e4] [d#4,f#4]", G: "~@7 c4, [e4,g4]", H: "g4@13 ~@3",
  I: "~ b4@15, [d#4,f#4]", J: "[~@16 g4@8 ~@2 g4@2 ~ b3@3, ~@15 [b3,e4]@13 ~@4]/2", K: "c4", L: "d4@15 ~",
  M: "f4@7 ~ e4@4 d4@4", N: "~@3 g4@4 ~, ~ g3@6 ~, ~@2 d4@5 ~", O: "d4@7 ~ d4@3 e4@2 f#4@3, [a3,f#4]@11 ~@5",
  P: "e4@11 ~@5", Q: "d4@5 f#3 b3 d#4", R: "[g3,b3,e4]@15 ~", S: "[a3,d4,f#4]@7 ~", T: "[c4,e4,g4]@15 ~",
  U: "[c4,e4,g4]@7 ~", V: "a4@3 g4@4 b3", W: "e4@7 a3", X: "g3@6 b3 g4", Y: "e4@10 ~@2 a4@2 e4 ~",
  Z: "a4@2 g4@4 e4@6 a3@2 g3 e3", AA: "a3 g3@2 ~ b3 g4 e4 d4", AB: "[e4@8 ~ a3 ~ g3 a3!2 ~ g3@9 ~@8]/2",
  AC: "[~@8 a3@2 ~@6 a3@2 ~ g#4@2 ~@3 a3@2 ~@2 a3@2 ~ g#4, a3@3 g#4@2 c#4@2 g#4@2 ~@2 g#4@2 c#4@2 g#4@2 ~@6 g#4@2 ~@2 g#4@2 ~@3, ~ e4 a3 e4 ~ e4 a3 e4 ~ e4 ~ e4 ~ e4 ~ e4]/2",
  AD: "~@5 b3@4 ~@4 b3@3, ~ e3@7 ~ e3@7, ~@2 c4@2 ~@6 c4@3 ~@3, ~@3 e4@7 ~ f#4@4 ~",
  AE: "~@5 b3@4 ~@4 b3@3, ~ e3@7 ~ e3@7, ~@2 c4@2 ~@6 c4@3 ~@3, ~@3 g4@7 ~ a4@4 ~",
  AF: "~@5 e4@4 ~@4 e4@3, ~ a3@7 ~ a3@7, ~@2 c4@2 ~@6 c4@3 ~@3, ~@3 b4@7 ~ c5@4 ~",
  AG: "~@5 g4@4 ~@4 g4@3, ~ a3@7 ~ a3@7, ~@2 e4@2 ~@6 e4@3 ~@3, ~@3 d5@7 ~ e5@4 ~",
  AH: "[~@16 e4@3 ~@2 a4@2 f#5@3 ~@6, e4@3 f#5@3 d5@3 a4@2 f#5@3 d5@3 ~@15, ~ a4@3 e4@3 ~ e4@3 ~ e4@3 ~@5 e4@3 ~@9, ~@2 d5@3 a4@2 f#5@3 d5@3 a4@2 f#5@3 ~ f#5@3 ~@10]/2",
  AI: "~@10 [f#4,a4]@3 [d4,f#4]@3", AJ: "[e4,g4]", AK: "[c4,g4]@2 c4 g4 [f4,a4]@2 ~ a4, e4 c4, ~@3 f4",
  AL: "[[c4,e4,g4]@13 ~ a#4@6 a4@3 ~ g4@2 a4@2 a#4@2 b4@12 ~@4 e4@6 f#4@2 ~@2 g4@2 f#4@2 d4@2 e4@12 ~@6]/5", // C
  AM: "[~@3 b4@2 ~@2 b4@2 ~@2 b4@3 ~ b4@2 ~@2 b4@3 ~@4 g4 ~ a#4@4, ~ c4@3 ~ d4@3 ~ c4@3 ~@5 c4@3 ~@5 c4@2 ~@5, ~@2 g4@3 ~ g4@3 ~ g4@3 ~@5 g4@3 ~@2 b4@4 ~@5]/2",
  AN: "a4@6 g4@9 ~", AO: "e4@7 ~",
  AP: "[~@3 b4@2 ~@2 b4@2 ~@2 b4@3 ~ b4@2 ~@2 b4@3 ~ b4@2 ~@4 a#4@5 a4@39 ~@7, ~ c4@3 ~ d4@3 ~ c4@3 ~@5 c4@3 ~@60, ~@2 g4@3 ~ g4@3 ~ g4@3 ~@5 g4@3 ~@59]/5",
})).s("gm_electric_guitar_jazz").gain(0.12).pan(0.3)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@42 A B C@2 D@2 ~ E ~@31 F G ~@2 F G ~@3>".pickRestart({
  A: "~ c#4@2 ~@6 c#4@2 ~@5", B: "~ c#4@2 ~@2 c#4@2 ~@2 c#4@2 ~@2 c#4@2 ~, ~@4 a3@3 ~@9", C: "a2!2", D: "d3!2",
  E: "~@2 d5@3 ~ d5@3 ~@7, ~ a4@2 ~@13", F: "~@7 g4, ~@13 d4@3", G: "~@6 g4@3 ~@7, ~@5 d4@3 ~@8",
})).s("gm_electric_guitar_jazz").gain(0.07).pan(0.3)

// other · viola
const viola = note("<~@42 A@2 B C D@2 E F G ~@39>".pickRestart({
  A: "[~@6 c#4@2 g#4@16 f#4@3 g#4@2 a4@3]/2", B: "b4", C: "a4@3 g4@3 a4@2", D: "[b4@24 a4@3 b4@2 c5@3]/2",
  E: "d5@13 b4 ~ a4", F: "b4@3 g4 f#4@4", G: "e4@13 ~@3",
})).s("gm_viola").gain(0.4)

// other · string ensemble 2
const string_ensemble_2 = note("<~@65 A@5 B C D ~@17>".pickRestart({
  A: "[~@4 a5@3 d6@29 d#6@4]/5", B: "e6", C: "d6 d#6", D: "e6@7 ~",
})).s("gm_string_ensemble_2").gain(0.32)

// chords · epiano2
const epiano2 = note(`<
  A B@2 C@2 B@2 D@2 E@2 F G H I J@2 K@2 L M N I O P Q R S T U V W X A B@2 Y@2 B@2 Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 L M N I O
  AF W R S T AG AH AI AJ AK R S T AG AH AL@5 AM A AN@2 AO@2 AN@2 AP@5
>`.pickRestart({
  A: "~@3 [c4,d#4,g4,a#4]", B: "[[b3,d4,f#4,a4]@3 [b3,d4,e4,g4]@11 [g3,b3,d4,f#4]@2]/2",
  C: "[[g3,a3,c4,e4]@7 [c4,d#4,g4,a#4]]/2", D: "[[g3,a3,c4,e4]@3 ~]/2", E: "[a2,g3,c4,e4]/2", F: "[c3,b3,d#4,f#4]",
  G: "[b2,a3,d4,f#4]", H: "[c3,g3,b3,e4]", I: "[a2,g3,c4,e4]",
  J: "[~@7 a4@5 [f#3,a3,c#4,e4]@2 [g#3,b3,d#4,f#4]@2, ~@2 a3@21 ~@9, ~@4 d4@19 ~@9, ~@6 d5@21 ~@5]/2", // F#m7 G#m7
  K: "[e4 [e4,g4,b4], [a2,g3,c4]]/2", L: "d#4@5 ~@2 b4, [c3,b3], f#4@3 f#4, ~@5 d#4@3", M: "[b2,d4,f#4,a4]",
  N: "~@13 d4@3, [c3,g3,b3,e4], ~@5 g4@3", O: "[g2,a3,b3,d4]", P: "[a3,c4,f4] [b3,d4,g4], g2", Q: "[g3,b3,c4,e4]",
  R: "[b3,d4,f#4,a4]", S: "[a3,c4,e4,g4]", T: "g3@9 ~ f#3@2 ~@2 d#4@2, [a3,b3,d4]@3 b3",
  U: "~@8 d5@7 ~, [c3,g3,e4,b4]@15 ~", V: "[d4,d5] d#4, [b2,f#3,a4]", W: "[c4,e4,g4,b4]", X: "[d4,e4,g4,b4]",
  Y: "[e4@3 g4@2 d4@2 e4@6 ~ [c4,d#4,g4,a#4]@2, [g3,a3,c4]@7 ~]/2", // Cm7 Am7
  Z: "[[g3,a3,c4,e4]@6 [f#2,a3,c#4,e4] [g#2,b3,d#4,f#4]]/2", AA: "[f#2,a3,c#4,e4,g#4]/2",
  AB: "[[g4,g5] [f#4,f#5] [e4,e5] [d4,d5], [a2,a3,c4]@31 ~, e4@15 ~@17]/2", // G F# E D Am
  AC: "[[e4,e5] [f#4,f#5] [g4,g5] [a4,a5], [d2,a3,c4]@31 ~]/2", // E F# G A D7
  AD: "[[e2,a4,d5,f#5,g5,b5]@6 [c3,b3,e4,g4] [b2,a3,d4,f#4]]/2", AE: "[e4 [e4,g4,b4], [g3,a3,c4]]/2",
  AF: "[a3,c4,f4]@2 ~ d5, g2, ~ [b3,d4,g4]", AG: "~@8 d5@7 ~, [g3,c4,e4,b4]@15 ~", AH: "[d4,d5] d#4, [f#3,b3,a4]",
  AI: "[c3,e4,g4,b4]", AJ: "[d3,e4,g4,b4] [g2,c4,f4,a4]", AK: "[e4,g4,b4], c4 ~@15",
  AL: "[[c3,e4,g4,b4]@12 ~@2 g4@10 g4@2 a4@2 a#4@2 ~@2 [e3,d4,g4]@14 [g3,c4,e4]@6 [a3,d4,f#4]@3 ~ [b3,e4,g4]@2 f#4@2 d4@2 [g3,b3,c4,e4]@17 ~, ~@7 [f2,f3,a#3,d#4]@9 ~@24, ~@30 b4@18 ~@8 f#4 ~@23]/5", // Cmaj7 Em7 C D Em Cmaj7 D#sus2
  AM: "[b3,c4,e4,g4]", AN: "[[b3,d4,f#4,a4]@3 [e3,b3,d4,g4]@11 [g3,b3,d4,f#4]@2]/2",
  AO: "[~@9 d5@5 [c4,d#4,g4,a#4]@2, [a2,g3,c4]@7 ~, e4@13 ~ e4@14 ~@4, ~@6 g4@21 ~@5, ~@5 d4@9 ~@2]/2", // Cm7 Am7
  AP: "[~@14 e4@13 ~@2 [c4,d#4,g4,a#4]@5 [e3,b3,d4,f#4,a4]@39 ~@7, [a2,g3,c4]@27 ~@53, e4@13 ~@67, ~@6 g4@21 ~@53, ~@10 d4@17 ~@53]/5", // Cm7 Bm7 Am7
})).s("gm_epiano2").gain(0.35).pan(0.7)

// chords · pad warm
const pad_warm = note("<~@28 A B C D@3 ~@7 E F@2 G@2 H@2 I@2 ~@11 A B C J@2 ~@3 A B C K@2 L M@4 ~@8 N@3>".pickRestart({
  A: "d4 d#4, [f#3,a3]", B: "[g3,b3,e4]", C: "d4 d#4, [a3,f#4]", D: "[[c4,e4,g4]@3 ~]/3",
  E: "~@2 [f#3,a3,c#4,e4] [g#3,b3,d#4,f#4]", F: "[a3,c#4,e4,g#4]/2", G: "[a3,c4,e4,g4,b4]/2", H: "[g3,c4,e4,a4]/2",
  I: "[[g3,a3,d4,f#4]@3 ~]/2", J: "[[c4,e4,g4]@3 [c4,f4,a4]]/2", K: "[[c4,e4,g4]@7 [a#3,d#4,g4]@9]/2",
  L: "[b3,d4,g4]@7 ~", M: "[~@7 [a3,c4,e4,g4,b4]@18 ~@7]/4", N: "[~@2 [d4,f#4,a4]@39 ~@7]/3",
})).s("gm_pad_warm").gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@24 A@2 ~@3 A ~@4 A ~@6 A@2 ~@6 A ~@7 A@2 ~@3 A ~@2 A@2 ~@3 A ~ A@5 ~@13
>`.pickRestart({
  A: "~@3 x ~@4",
})).gain(0.24)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@32 ~ A@44 ~ A@7 B C ~@2>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~@4", C: "x",
})).gain(0.16)

// drums · clap
const clap = s("cp").struct("<~ A@23 B A@8 C A@23 B A@7 D A@12 C A@7 E ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x!2 ~ x ~@3", C: "~@3 x", D: "~@2 x ~@2 x!2 ~", E: "~ x ~@2",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  A ~@3 A ~@20 B ~@2 A B ~@3 A B ~@2 A ~@3 A ~@3 A ~ A ~ A ~@8 B ~@2 A B ~@3 B ~@2 A B ~@7 A ~@3 A ~@7
>`.pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.64)

// drums · china
const china = s("cr").struct("<~@42 x ~@44 [~ x ~@6] ~@2>").gain(0.48)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@79 [x!16]!7 [x!10 ~ x!4 ~] [x!2 ~@14] ~@2>").gain(1.22)

stack(
  bass, electric_guitar_jazz, electric_guitar_jazz_2, viola, string_ensemble_2, epiano2, pad_warm, kick, kick_soft,
  snare, snare_soft, clap, ride, china, cabasa
)

More by Paoli