Strudelify

Se fossi Marco

Fabi

KeyC♯ minorTempo144 bpm
0:00/0:00
// Se fossi Marco — Fabi
// 144 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// 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.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27, guitar program 29.
setcpm(144/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(`<
  ~@8 A B C@2 A B D@2 A B E@2 A B F G H I J K H I J L H I J K H I J L ~@8 A B C@2 A B D@2 A B E@2 A B F G H I J K H I J
  L H I J K H I J L M N M N M N M N L@2 A B C@2 A B D@2 A B E@2 A B O@2 H I J K H I J L H I J K H I J L H I J K H I J L
  H I J K H I J L P@2
>`.pickRestart({
  A: "e1 e1@3", B: "f#1 f#1@3", C: "[a1@31 ~]/2", D: "[a1@4 a1@19 ~ a1@4 a1@4]/2", E: "[a1 a1@5 a1@2]/2", F: "a1 a1@3",
  G: "a1 c#1", H: "c#2!8", I: "e2!8", J: "a1!8", K: "f#1!8", L: "b1!8", M: "e2!7 c#2", N: "c#2!3 c2!5",
  O: "[a1 a1@7]/2", P: "c#2/2",
})).s("gm_fretless_bass").gain(0.51)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@25 A@3 ~ A@3 ~ A@3 ~ A@3 ~@25 A@3 ~ A@3 ~ A@3 ~ A@3 ~@27 A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~@2
>`.pickRestart({
  A: "~@2 c#4 b3 c#4 b3 c#4 b3",
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@10 A@2 ~@2 A@2 ~@2 A@2 ~@2 B@2 ~@18 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 B@2 ~@26 C@16 ~@34
>`.pickRestart({
  A: "[b4@31 ~]/2", B: "[[b4,e5]@31 ~]/2", C: "[~@3 e5, e5 b4, ~ c#5@2 ~, ~@4 g#5@3 ~]/4",
})).s("gm_synth_strings_1").gain(0.17)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@8 A B A C A B A C A B A C A B A C ~@16 A B A C A B A C A B A C A B A C A B A C A B A C ~@76
>`.pickRestart({
  A: "~ [e3,b3]!3 ~ [e3,b3]!3", B: "~ [e3,a#3]!3 ~ [e3,a#3]!3", C: "~ [e3,c#4]!3 ~ [e3,b3]!3",
})).s("gm_electric_guitar_jazz").gain(0.51).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@8 A B C ~ A B C ~ A B C ~ A B C ~ D@16 A ~@7 A B C ~ A B C ~ A B C ~ A B C ~ D@16 E@8 F@2 G H I@2 G H I@2 G H I@2 G
  H I@2 D@32 J@2
>`.pickRestart({
  A: "[e2,b2,e3]!4 ~@4", B: "[f#2,c#3,f#3]!4 ~@4", C: "[a2,e3,a3]!4 ~@4",
  D: "[~@10 e4 d#4 e4 d#4 e4 d#4 ~@2 e4 d#4 e4 d#4 e4 d#4 ~@2 e4 d#4 e4 d#4 e4 d#4, [c#3,e3,g#3,b3]@31 ~]/4", // C#m7
  E: "[g4 a4@2 g4@2 g4@2 a4@2 a4@2 b4@2 b4@2 g4@2 a4@2 g4@2 g4@2 d5@2 d5@2 b4@2 b4@2 g4@2 a4@2 g4@2 g4@2 a4@2 a4@2 b4@2 b4@2 g4@2 a4@2 g4@2 g4@2 d5@2 d5@2 b4@2 b4@2 ~]/8",
  F: "[d#4!3 e4@2 e4@2 f#4@2 f#4@2 a4@2 a4@3]/2", G: "[e2,b2,e3]", H: "[f#2,c#3,f#3]", I: "[a2,e3,a3]/2",
  J: "[c#3,g#3,c#4]/2", // C#5
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B C@2 A B C@2 D E F@2 D E F@2 D E F@2 D E F ~ G@16 D ~@3 A B C@2 D E F@2 D E F@2 D E F@2 D E F ~ G@16 H I J@2 H I
  J@2 K@2 ~@16 G@32 L@2
>`.pickRestart({
  A: "e2@7 ~@9", B: "f#2@7 ~@9", C: "a2@7 ~@9", D: "[e2,b2,e3]!4 ~@4", E: "[f#2,c#3,f#3]!4 ~@4", F: "[a2,e3,a3]!4 ~@4",
  G: "[[c#3,g#3,c#4]@63 ~]/4", H: "[e3,e4]!2 [e3,e4]@2 [e3,e4]!4", I: "[e3,e4]!8",
  J: "[[e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4]@2 [e3,e4] ~, ~@7 d5@2 d5@2 ~@5]/2", // E
  K: "d#4 e4 d#4 e4 d#4 e4 d#4 e4", L: "[c#3,g#3,c#4]/2",
})).s("gm_distortion_guitar").gain(0.23)

// other · piano
const piano = note(`<
  ~@15 A B@2 ~@6 C@3 D E@3 F@4 D E@3 G ~@8 H@8 ~@8 C@3 D E@3 F@4 D E@3 G ~@10 I@8 ~@8 C@3 D E@3 F@4 D E@3 G C@3 D E@3
  F@4 D E@3 J ~@2
>`.pickRestart({
  A: "~@7 e5", B: "[g#5@7 f#5@4 ~@5]/2", C: "[g#5@7 f#5@2 e5@2 d#5@2 b4@2 e5@5 d#5@4]/3", D: "b4 c#5",
  E: "[g#5@7 a5@2 g#5@2 f#5@2 g#5@2 e5@5 d#5@4]/3", F: "[g#5@4 f#5@3 g#5@8 f#5@2 e5@2 d#5@2 b4@2 e5@5 d#5@4]/4",
  G: "g#5 f#5", H: "[~@2 e5@57 ~@5]/8", I: "[~ e5@31]/8", J: "g#5@8 f#5@7 ~",
})).s("gm_piano").gain(0.05)

// other · lead 1 square
const lead_1_square = note(`<
  [e5 ~@9 e5 ~ e5 ~ e5 ~]!24
  ~@16
  [e5 ~@9 e5 ~ e5 ~ e5 ~]!24
  ~@26
  [e5 ~@9 e5 ~ e5 ~ e5 ~]!15
  [e5 ~@15]
  ~@34
>`).s("gm_lead_1_square").gain(0.26).pan(0.6)

// other · electric guitar clean
const electric_guitar_clean_3 = note(`<
  ~@31 A ~@7 A ~@31 A ~@7 A B ~ B ~ B ~ B ~ C@2 ~@23 A ~@7 A ~@7 A ~@7 A ~@2
>`.pickRestart({
  A: "~ a3 ~@6", B: "~@3 e4@2 ~@3", C: "d#4 e4 d#4 e4 d#4 e4 d#4 e4",
})).s("gm_electric_guitar_clean").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@24 A B C@2 A B C D A B C@2 A B C D ~@24 A B C@2 A B C D A B C@2 A B C D E F E F E F E F G@2 H@2 I@2 J K I@2 L M N@2
  L M O@2 A B C@2 A B C D A B C@2 A B C D A B C@2 A B C D A B C@2 A B C D P@2
>`.pickRestart({
  A: "[g#3,c#4]!2 [g#3,c#4,e4] [g#3,c#4,d#4]@2 [g#3,c#4,d#4]!3, e4 ~@3", // C#5 C#m G#sus4
  B: "[g#3,b3]!2 [g#3,b3,e4] [g#3,b3,d#4]@2 [g#3,b3,d#4]!3, e4 ~@3", // G#m E G#m
  C: "[a3,c#4]!2 [a3,c#4,e4] [a3,c#4,d#4]@2 [a3,c#4,d#4]!3, e4 ~@3", // A D#m7b5
  D: "[f#3,b3]!2 [f#3,b3,e4] [f#3,b3,d#4]@2 [f#3,b3,d#4]!3, e4 ~@3", // B5 Esus2 B
  E: "[e3,b3,e4]!2 [e3,b3,e4]@2 [e3,b3,e4]!3 [e3,c#4,e4]", F: "[e3,c#4,e4]!3 [e3,c4,e4]!5", G: "[b2,f#3,b3]!8",
  H: "[[d#4,f#4]@2 [e4,g#4]@2 [d#4,f#4]@2 ~@4 b3@5 ~@5 c#4@2 ~@4 c#4@6, e3@17 ~@15, ~ b3 ~@2 f#3@4, ~@3 g#4@7 ~ f#4@4 ~, ~@3 e4@3 ~@10]/2", // D#m E D#m
  I: "[~@16 b4@5 ~ b4@9 ~, a3@31 ~, ~@4 e4@4 ~@2 e4@21 ~, ~@6 b4@9 ~@17]/2",
  J: "~@10 b3@5 ~, e3, ~ b3 ~@2, ~@3 e4@3 ~@2", K: "~@2 c#4 ~@2 c#4@3, f#3, ~@3 f#4@4 ~",
  L: "e3@2 b3 ~ f#4@2 b3 ~ f#4@2 e4@6", M: "f#3@2 c#4 ~ g#4@2 ~@2 g#4@2 f#4@5 ~",
  N: "[a3@2 e4 ~ b4@2 e4 ~ b4@2 e4@4 a3@4 e4@2 b4@2 e4 ~ b4@2 e4@5 ~]/2",
  O: "[a3@2 e4 ~ b4@2 e4 ~ b4@2 e4@4 b4@2 e4@6 c#4@2 e4@8, ~@14 a3@5 ~@13]/2", P: "[c#3,g#3,c#4]/2",
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.6)

// other · overdriven guitar
const overdriven_guitar = note("<~@20 [~@2 g#4!2 ~ b4 ~ f#4] ~@119>").s("gm_overdriven_guitar").gain(0.38).pan(0.4)

// 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 C ~ D@16 C@7 E D F D F D F D F D F D F D F D F D@15 G H@10 A B A B A B A B
  A B A B A B ~@2 D@32 I ~
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~ x", B: "x ~ x ~@5 x ~ x ~@4 x", C: "x!2 ~@2 x!2 ~@2", D: "x!2 ~ x!2 ~@2 x", E: "x!2 ~@2 x ~@3",
  F: "x ~@2 x!2 ~@2 x", G: "x!2 ~ x ~@4", H: "x!2 ~ x!3 ~ x", I: "x",
})).gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct(`<
  A@23 ~ B A@7 B A@7 ~@8 B C A C A C A C A C A C A C@2 D B A@14 E ~@10 A@14 ~@2 B A@7 B A@7 ~@18
>`.pickRestart({
  A: "x!8", B: "~ x!7", C: "x!7 ~", D: "x", E: "x!4 ~@4",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@24
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  ~@24
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!15
  [~ x ~ x ~ x ~ x ~@8]
  ~@26
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  ~@18
>`).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@49 A ~ A ~ A ~ A ~ A ~ A ~ A@2 B ~@15 C ~@42 D E D@3 E D@3 E D@3 E D@2 ~@2
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@5 x", C: "~ x", D: "~ x!3", E: "x!4",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@7 A ~@15 A ~@15 A ~@15 A ~@3 A ~@3 A@2 ~@16 A ~@7 A ~@7 A ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~
>`.pickRestart({
  A: "x",
})).gain(0.32)

// drums · ride bell
const ride_bell = s("rd").struct("<~@80 [~ x!3] [x!4]!3 [~ x!3] [x!4]!3 [~ x!3]!2 ~@50>").gain(0.32)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@81 A ~ A ~ A ~ A ~ A ~@50>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@24 [x!8]!16 ~@24 [x!8]!26 ~@16 [x!8]!32 ~@2>").gain(0.24)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@24
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  ~@24
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!26
  ~@16
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!32
  ~@2
>`).gain(0.08)

stack(
  bass, electric_guitar_clean, synth_strings_1, electric_guitar_jazz, electric_guitar_clean_2, distortion_guitar, piano,
  lead_1_square, electric_guitar_clean_3, acoustic_guitar_steel, overdriven_guitar, kick, snare, hihat, hihat_soft,
  open_hat, crash, ride_bell, ride_bell_soft, tambourine, tambourine_soft
)

More by Fabi