Strudelify

despacito

Luis Fonzi

KeyE majorTempo100 bpm
0:00/0:00
// despacito — Luis Fonzi
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 53, 4/4 at bar 53) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5211007; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// other · trumpet
const trumpet = note("<~@5 A B C@2 D E F@2 ~@4 G H I@2 ~@40>".pickRestart({
  A: "~ f#4 ~ f#4 ~ f#4 ~ f#4", B: "~ g4 ~ g4 ~ g4 ~ a4",
  C: "[a4@2 f#4@2 a4@2 f#4@2 a4@2 f#4@2 a4@2 c#5 a4@7 ~@6 d5 c#5 b4 a4]/2", D: "b4@5 f#4 b4 c#5 d5 e5 ~ d5 c#5 b4 ~ a4",
  E: "g4@3 d5@3 e5@2 d5@4 ~@4, ~@6 d#5 ~@9", F: "[d5@2 a4@2 d5@2 a4@2 d5@2 a4@2 d5@2 e5 c#5@7 ~@10]/2",
  G: "b4@4 b4!3 c#5 d5 c#5 d5 c#5@2 d5@2 c#5", H: "b4@4 b4!3 c#5 d5 c#5 d5@2 c#5 d5 ~ e5",
  I: "[a4@4 a4!4 d5 c#5 d5 c#5 d5@2 e5 e5@2 c#5@7 ~@8]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · soft notes
const trumpet_soft = note("<~@13 [~ f#4 ~ f#4 ~ f#4 ~ f#4]!2 [~ d4 ~ d4 ~ d4 ~ d4] [c#5 a4@2 ~@5] ~@44>")
  .s("gm_trumpet").gain(0.2)

// other · trumpet
const trumpet_2 = note(`<
  ~@20 A B C D ~ E@4 F@3 G ~ H@2 ~ I J@2 K@2 J ~ I L M ~ I L K ~ N O P Q R@2 S T U
>`.pickRestart({
  A: "~@2 d5 c#5, ~@8 c#5 ~@7", B: "b4@2 f#4 ~@3 f#4@2 ~@2 f#4@2 ~@2 f#4@2", C: "~ g4 ~ g4 ~ g4 ~ g4",
  D: "~ a4 ~ a4 ~ a4 ~ a4",
  E: "[b4@2 f#4 ~ f#4!5 b4!3 b4@2 a4 b4@2 g4 ~@2 g4!5 b4!3 b4@2 c#5 d5@2 a4 ~@2 a4!5 d5!3 d5@2 e5 e5@2 c#5@5 ~@2 d5@4 c#5@4, ~@56 c#5 ~@7]/4",
  F: "[d5 c#5 d5 c#5 d5@2 c#5 d5@2 c#5 d5 c#5 d5@2 e5 e5@2 a4@3 ~@4 e5!3 e5@2 e5 f#5 e5@2 d5@4 ~@3 d5!3 d5@2 f#5@2 e5, ~@45 f5 ~@2]/3",
  G: "d5 c#5@5 ~@2", H: "[~@7 [d#5,e5] e5!3 e5@2 e5 f#5 e5@2 d5@7 ~@8]/2", I: "b4@2 b4 ~@5 b4@2 b4 ~@5",
  J: "~@8 d5@2 d5 ~@5", K: "~@8 e5@2 d5 ~@5", L: "~@8 b4@2 b4 ~@5", M: "e5@2 d5 ~@5 e5@2 d5 ~@5",
  N: "~@10 f#4 ~@3 f#4 ~", O: "~@2 f#4 ~@3 f#4 ~@3 g4 ~@3 g4 ~", P: "~@2 g4 ~@3 g4 ~@3 a4 ~@3 a4 ~",
  Q: "~@2 a4 ~@3 a4 ~@9", R: "[~@8 d5 c#5 d5 c#5 d5@2 c#5 d5@2 c#5 d5 c#5 d5@2 e5 e5@2 a4@3 ~@4]/2",
  S: "e5!3 e5@2 e5 f#5 e5@2 d5@4 ~@3", T: "d5!3 d5@2 f#5@2 e5 d5@2 c#5@6, ~@5 f5 ~@10",
  U: "d5@2 c#5@2 c#5 b4 ~@2, c#5 ~@15",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note(`<
  ~@5 A B C@2 A D E@2 F G H I F G H ~ J K@3 L@4 M@3 N ~ O@2 ~ P Q R S@2 T U V P W X V Y W Z ~@4 AA@2 AB AC AD
>`.pickRestart({
  A: "b3@5 f#3 b3 c#4 d4 e4 ~ d4 c#4 b3 ~ a3", B: "g3@3 d4@3 d4@5 ~@5",
  C: "[d4@2 a3@2 d4@2 a3@2 d4@2 a3@2 d4@2 e4 c#4@7 ~@6 d4 c#4 b3 a3]/2", D: "g3@3 d4@3 e4@2 d4@4 ~@4, ~@6 d#4 ~@9",
  E: "[d4@2 a3@2 d4@2 a3@2 d4@2 a3@2 d4@2 e4 c#4@7 ~@6 e3 f#3 g3 a3]/2", F: "b3@7 d4", G: "g3@7 b3", H: "e3@7 a3",
  I: "e4 c#4@2 ~@5", J: "f#4@2 b3 ~ f#3!5 b3!3 b3@2 a3 b3",
  K: "[b3 g3 ~@2 g3!5 b3!3 b3@2 c#4 d4@2 a3 ~@2 a3!5 d4!3 d4@2 e4 e4@2 c#4@7 ~@8]/3",
  L: "[f#4@2 b3 ~ f#3!5 b3!3 b3@2 a3 b3@2 g3 ~@2 g3!5 b3!3 b3@2 c#4 d4@2 a3 ~@2 a3!5 d4!3 d4@2 e4 e4@2 c#4@5 ~@10]/4",
  M: "[f#4 e4 f#4 e4 f#4@2 e4 f#4@2 e4 f#4 e4 f#4@2 g4 g4@2 d4@3 ~@4 g4!3 g4@2 g4 a4 g4@2 f#4@4 ~@3 f#4!3 f#4@2 a4@2 g4, ~@45 g#4 ~@2]/3",
  N: "f#4 e4@5 ~@2", O: "[~@7 g4!4 g4@2 g4 a4 g4@2 f#4@7 ~@8]/2", P: "~@2 b3 ~@3 d4 ~@3 b3 ~@3 e4 ~",
  Q: "~@2 e4 ~@3 e4 ~@3 e4 ~@3 e4 ~", R: "~@2 e4 ~@3 e4 ~@3 d4 ~@3 d4 ~", S: "~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~",
  T: "~@2 f#4 ~@3 a4 ~@3 d4 ~@3 f#4 ~", U: "~@2 e4 ~@3 d4 ~@3 e4 ~@3 d4 ~", V: "~@2 b3 ~@3 d4 ~@3 b3 ~@3 d4 ~",
  W: "~@2 d4 ~@3 e4 ~@3 d4 ~@3 d4 ~", X: "~@2 c#4 ~@3 b3 ~@3 b3 ~@3 d4 ~", Y: "~@2 g3 ~@3 d4 ~@3 b3 ~@3 e4 ~",
  Z: "~@2 c#4 ~@3 c#4 ~@3 c#4 ~@3 b3 ~", AA: "[~@8 f#4 e4 f#4 e4 f#4@2 e4 f#4@2 e4 f#4 e4 f#4@2 g4 g4@2 d4@3 ~@4]/2",
  AB: "g4!3 g4@2 g4 a4 g4@2 f#4@4 ~@3", AC: "f#4!3 f#4@2 a4@2 g4 f#4@2 e4@6, ~@5 g#4 ~@10",
  AD: "d4@2 c#4@2 c#4 b3 ~@2, c#4 ~@15",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet_4 = note(`<
  ~@5 A B C D A B E@2 F G H I F G H ~ J K L M J K L N O P Q R ~ S T ~ U V W X@2 Y V Z U W AA Z U W AB ~@4 AC@2 AD AE AF
>`.pickRestart({
  A: "b3@7 a3", B: "g3@7 a3", C: "d4@12 e4 d4 c#4 b3", D: "a3@3 ~@5", E: "[d4@14 c#4 e4@7 ~@10]/2",
  F: "b3@4 b3 ~ d4 ~ b3@4 b3 ~ d4 ~", G: "g3@4 g3 ~ b3 ~ g3@4 g3 ~ b3 ~", H: "a3@4 a3 ~ c#4 ~ a3@4 a3 ~ c#4 ~",
  I: "~@12 g3 a3 b3 c#4", J: "f#4@2 b3 ~ f#3@10 a3@2", K: "b3@7 c#4", L: "a3@7 e4", M: "~ c#4@7 ~@8", N: "~ c#4@5 ~@10",
  O: "b3@12 d4 c#4 b3 a3", P: "g3@8 ~@4 c#4 b3 a3 g3", Q: "f#3@5 ~@3 c#4 d4 e4 f#4@2 a4@2 f#4, ~@13 g#4 ~@2",
  R: "f#4@2 e4@2 e4!8 c#4@2 d4@2", S: "~@12 d4 c#4 b3 a3", T: "g3 f#3@7 ~@8", U: "b3@7 e4", V: "e4@7 e4", W: "e4@7 d4",
  X: "d4@7 d4", Y: "f#4@7 f#4", Z: "b3@7 d4", AA: "c#4@7 d4", AB: "c#4@7 b3", AC: "[~@8 b3@12 d4 c#4 b3 a3 g3@8]/2",
  AD: "~@4 c#4 b3 a3 g3 f#3@5 ~@3", AE: "d4!3 d4@2 f#4@2 e4 d4@2 c#4@6, ~@5 f4 ~@10",
  AF: "d4@2 c#4@2 c#4 b3 ~@2, c#4 ~@15",
})).s("gm_trumpet").gain(0.3)

stack(trumpet, trumpet_soft, trumpet_2, trumpet_3, trumpet_4)