Strudelify
KeyF majorTempo38 bpm
0:00/0:00
// Adicto — Tainy Anuel AA Ozuna
// 38 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5840321; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(38/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note("<A B C D@2 E F G H E F G H I J K L K L M F G N E F G O A@2>".pickRestart({
  A: "~@2 [bb3,db4] ~ [bb3,db4] ~@5 [bb3,db4] ~ [bb3,db4] ~@5 [ab3,c4] ~ [ab3,c4] ~@5 [g3,bb3] ~ [g3,bb3] ~@3", // Bbm Ab Gm
  B: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4!4 [bb3,db4,ab4] db5 [bb3,db4,db5] db5!3 db5@2 [ab3,c4,c5] bb4 [ab3,c4,ab4] ~@3 bb4!2 [g3,bb3,bb4] bb4 [g3,bb3,bb4] g4 bb4@2", // Bbm Bbm7 Bbm Ab Gm
  C: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4!4 [bb3,db4,ab4] ab4 [bb3,db4,ab4] ab4 db5!2 db5@2 [ab3,c4,c5] bb4 [ab3,c4,ab4] ~@3 bb4!2 [g3,bb3,bb4] bb4 [g3,bb3,bb4] g4 bb4@2, ab4 ~@7", // Bbm Bbm7 Ab Gm
  D: "~@2 [bb3,db4] ~ [bb3,db4] ~ eb5@3 db5 [bb3,db4,db5] c5 [bb3,db4,db5] c5 c5@2 ab4@2 [ab3,c4,ab4] ab4 [ab3,c4,ab4] c5 c5@2 g4@2 [g3,bb3,g4] g4 [g3,bb3,g4] g4 bb4@2, ab4 ~@7", // Bbm Ab Gm
  E: "~@2 [bb3,db4] ~ [bb3,db4] ~@2 ab4!2 db5 [bb3,db4,db5] db5 [bb3,db4,db5] c5 c5@2 c5@2 [ab3,c4,ab4] ab4 [ab3,c4,ab4] ab4 c5@2 bb4@2 [g3,bb3,g4] g4 [g3,bb3,g4] g4 bb4@2, ab4 ~@7", // Bbm Ab Gm
  F: "~@2 [bb3,db4] ~ [bb3,db4] ~@2 ab4!2 db5 [bb3,db4,db5] db5 [bb3,db4,db5] c5 c5@2 c5@2 [ab3,c4,ab4] ab4 [ab3,c4,ab4] ab4 c5@2 bb4@2 [g3,bb3,bb4] bb4 [g3,bb3,bb4] bb4 bb4@2, ab4 ~@7", // Bbm Ab Gm
  G: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4@2 ~@2 [bb3,db4,ab4] ab4 [bb3,db4,ab4] ab4 db5@2 c5@2 [ab3,c4,ab4] ab4 [ab3,c4,ab4] ab4 c5@2 bb4@2 [g3,bb3,bb4] bb4 [g3,bb3,bb4] bb4 bb4@2, db5@2 c5 ~@13", // Bbm Bbm7 Ab Gm
  H: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4@2 ~@2 [bb3,db4] eb4 [bb3,db4,c5] c5!5 [ab3,c4,c5] c5 [ab3,c4,c5] c5 c5@2 ~@2 [g3,bb3] ~ [g3,bb3] ~@3, db5@2 c5 ~@9 bb4@2 ab4 ~", // Bbm Ab Gm
  I: "~@2 ab4 g4 bb4@2 f4@2 ab4!3 g4 bb4@2 f4@2 ~@2 [ab3,c4] ~ [ab3,c4,bb4] bb4 ab4!2 bb4!2 [g3,bb3,bb4] ab4 [g3,bb3] ~ f4@2, ~@9 c5 ~@4 bb4 ~", // Ab Gm
  J: "~@2 [bb3,db4,db5] c5 [bb3,db4] ~ bb4 ab4 bb4!2 [bb3,db4,bb4] ab4 [bb3,db4] ~ f4 ~@2 f4 [ab3,c4,db5] c5 [ab3,c4] ~ bb4 ab4 bb4!2 [g3,bb3,bb4] ab4 [g3,bb3] ~ f4 ~, ~@2 c5 ~@3 bb4 ~@3 c5 ~@3 bb4 ~", // Bbm Dbmaj7 Ab Gm
  K: "~@2 [bb3,db4,db5] db5 [bb3,db4,db5] db5!3 db5@2 [bb3,db4] c5 [bb3,db4] ~@2 ab4 bb4!2 [ab3,c4,bb4] bb4 [ab3,c4,bb4] bb4!3 c5@2 [g3,bb3] bb4 [g3,bb3] ~@2 ab4, ~@6 bb4 ~@7 ab4 ~", // Bbm Ab Gm
  L: "ab4 db5 [bb3,db4,db5] db5 [bb3,db4,db5] c5!2 bb4 bb4@2 [bb3,db4,db5] db5 [bb3,db4,db5] c5!2 bb4 bb4@2 [ab3,c4,c5] c5 [ab3,c4,c5] c5!3 c5@2 [g3,bb3] bb4 [g3,bb3] ~@3, ~@14 ab4 ~", // Bbm Ab Gm
  M: "~@2 [bb3,db4] ~ [bb3,db4] ~@2 ab4!2 db5 [bb3,db4,db5] db5 [bb3,db4,db5] c5 c5@2 c5@2 [ab3,c4,ab4] ab4 [ab3,c4,ab4] ab4 c5@2 bb4@2 [g3,bb3,g4] g4 [g3,bb3,g4] g4 bb4@2", // Bbm Ab Gm
  N: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4@2 ~@2 [bb3,db4] eb4 [bb3,db4,c5] c5!5 [ab3,c4,c5] c5 [ab3,c4,c5] c5 c5@2 ~@2 [g3,bb3] ~ [g3,bb3] ~@3, db5@2 c5 ~@9 bb4@2 ab4@2", // Bbm Ab Gm
  O: "~@2 [bb3,db4] ~ [bb3,db4] ~ ab4@2 ~@2 [bb3,db4] eb4 [bb3,db4,c5] c5!5 [ab3,c4,c5] c5 [ab3,c4,c5] c5 c5@2 ~@2 [g3,bb3] ~ [g3,bb3] ~ ab4@2, db5@2 c5 ~@9 bb4@2 bb4 ~", // Bbm Ab Gm
})).s("gm_piano").gain(0.2)

// bass · acoustic bass · "Bajo acústico"
const bass = note("<A B A B A B A B@2 A B A B C B A B A B@2 A B@3 A B@4>".pickRestart({
  A: "f2 ~@3 f2 ~@3 ab2 ~@3 eb2 ~@3", B: "bb2 ~@3 f2 ~@3 ab2 ~@3 eb2 ~@3", C: "~@8 ab2 ~@3 eb2 ~@3",
})).s("gm_acoustic_bass").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@5 [x!8]!8 [~@4 x!4] [x!8]!15>").gain(0.2)

// drums · snare
const snare = s("sd").struct(`<
  ~@5
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~@3 x!2 ~@2 x ~@3 x!2 ~@2 x ~]!8
  [~@14 x ~@3 x!2 ~@2 x ~@3 x!2 ~@2 x ~]
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~@3 x!2 ~@2 x ~@3 x!2 ~@2 x ~]!15
>`).gain(0.2)

stack(piano, bass, kick, snare)