Strudelify
KeyF majorTempo115 bpm
0:00/0:00
// the hustle — gyesilyaprak & vedoo
// 115 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Alto Saksafon" alto sax (copy of ch 1 "Şan" choir aahs)
// note: Transcription provider: pdmx. https://musescore.com/score/1969236; 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(115/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 · flute · "Flüt"
const flute = note(`<
  ~@13 A@2 B ~ C D C D E@3 F C D C D E@3 F G@2 H I G@2 A@2 B ~ C D C D E@3 J C D C D E@3 J@2 K
>`.pickRestart({
  A: "[c5@23 ~ bb4 c5 d5 e5 f5 g5 a5 bb5]/2", B: "c6@15 ~", C: "a5 ~ g5 ~ a5 ~ g5 a5@2 a5 g5 ~ a5 ~ c6 ~",
  D: "f5 ~ e5 ~ f5 ~ e5 f5@2 f5 e5 ~ f5 ~ g5 ~", E: "c6 ~ d6 ~ c6 ~ d6 c6@2 c6 d6 ~ c6 ~ d6 ~", F: "c6@11 ~@5",
  G: "ab4 ~ ab4 ~@5 ab4 ~ ab4 ~@5", H: "g4 ~ g4 ~@5 g4 ~ g4 ~@5", I: "~@2 eb5@2 db5 eb5@3", J: "c6 ~@3", K: "f4 ~",
})).s("gm_flute").gain(0.24)

// other · alto sax · "Alto Saksafon"
const alto_sax = note(`<
  ~ A@2 B C A@2 B D A@2 B ~@5 E@2 F@2 G H G I E@2 F@2 G H G J ~@10 E@2 F@2 G H G I E@2 F@2 G H G I@2 K
>`.pickRestart({
  A: "[g4@12 ~ a4 g4 d4]/2", B: "f4", C: "~ d4 f4 a4", D: "d5 c5 a4 g4", E: "[c5@4 f5@6 ~ f5 e5 d5 c5 d5]/2",
  F: "[c5@10 ~ f5 e5 d5 c5 d5]/2", G: "c5@3 d5", H: "f4@4 f4 c4 f4 g4", I: "c5@3 ~", J: "c4@3 ~", K: "f5 ~",
})).s("gm_alto_sax").gain(0.25)

// other · tenor sax · "Tenor Saksafon"
const tenor_sax = note(`<
  A B@2 C D B@2 C E B@2 C A F@2 G H I@2 J@2 K L K M I@2 J@2 K L K N O P Q R O S F@2 G H I@2 J@2 K L K M I@2 J@2 K L K
  M@2 T
>`.pickRestart({
  A: "~@5 eb4 d4 db4", B: "[g3@12 ~ a3 g3 d3]/2", C: "f3", D: "~ d3 f3 a3", E: "d4 c4 a3 g3",
  F: "[c4@24 bb3 c4 d4 e4 f4 g4 a4 bb4]/2", G: "c5", H: "[c4,e4,g4]!3 ~", I: "[c4@4 f4@6 ~ f4 e4 d4 c4 d4]/2",
  J: "[c4@10 ~ f4 e4 d4 c4 d4]/2", K: "c4@3 d4", L: "f3@4 f3 c3 f3 g3", M: "c4@3 ~", N: "c3@3 ~", O: "c4@6 eb4 db4",
  P: "c4@5 ab3@2 bb3", Q: "c4@6 eb4 f4 eb4@8", R: "eb4", S: "c4@6 ab3 bb3", T: "f4 ~",
})).s("gm_tenor_sax").gain(0.25)

// other · alto sax · "Tenor Saksafon"
const alto_sax_2 = note(`<
  ~@17 A B A B C D B E A B A B C D B E F G H I F J K ~@3 A B A B C D B E A B A B C D B E@2 L
>`.pickRestart({
  A: "f3", B: "g3", C: "bb3", D: "a3", E: "c4@3 ~", F: "c4@6 eb4 db4", G: "c4@5 ab3@2 bb3", H: "c4@6 eb4 f4 eb4@8",
  I: "eb4", J: "c4@6 ab3 bb3", K: "c4 ~", L: "f4 ~",
})).s("gm_alto_sax").gain(0.3)

// chords · acoustic guitar steel · "Akustik Gitar"
const acoustic_guitar_steel = note(`<
  A B@2 C D B@2 C D B E C D F@3 G C B C B H I B J C B C B H I B G ~@28
>`.pickRestart({
  A: "~@5 eb4 d4 db4", B: "[g3,bb3,d4] ~@3", C: "[f3,a3,c4] ~@3", D: "[d4,f4,a4] ~@3", E: "[c4,e4,g4] ~@3",
  F: "f3@3 g3@3 f3@2 g3@3 f3@3 g3@2", G: "[c4,e4,g4]!3 ~", H: "[bb3,d4,f4] ~@3", I: "[a3,c4,e4] ~@3",
  J: "[c4,e4,g4] ~ [bb3,d4,f4] ~", // C Bb
})).s("gm_acoustic_guitar_steel").gain(0.3)

// chords · acoustic guitar steel · "Akustik Gitar" · soft notes
const acoustic_guitar_steel_2 = note("<~@33 A@6 B@3 ~ C D C D E C D F C D C D E C D G@2 H>".pickRestart({
  A: "eb3@3 f3@3 eb3@2 f3@3 eb3@3 f3@2", B: "f3@3 g3@3 f3@2 g3@3 f3@3 g3@2", C: "[f3,a3,c4] ~@3", D: "[g3,bb3,d4] ~@3",
  E: "[bb3,d4,f4] ~@3", F: "[c4,e4,g4] ~ [bb3,d4,f4] ~", G: "[c4,e4,g4] ~@3", H: "f4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// bass · electric bass pick · "Bas Gitar"
const bass = note(`<
  A B@3 C B@3 C B@3 C B@2 D E F G F H I J K E F G F H I J K E L M N O L M P@3 O F G F H I J K E F G F H I J K E@2 Q
>`.pickRestart({
  A: "~@5 eb3 d3 db3", B: "c3@3 c3 c3@2 c3@2 c3@4 ~@2 g3@2", C: "c3@3 c3@3 c3@4 eb3@2 d3@2 db3@2",
  D: "c3@3 c3 c3@2 c3@2 c3@4 ~@4", E: "c3!3 ~", F: "f2@3 f2@3 f2@4 ~@4 f2@2", G: "g2@3 g2@3 g2@4 ~@4 c3@2",
  H: "g2@3 g2@3 g2@4 ~@4 f2@2", I: "bb2@3 bb2@3 bb2@4 ~@2 bb2 f3 d3 bb2", J: "a2@3 a2@3 a2@4 ~@2 a2 f3 d3 a2",
  K: "g2@3 g2@3 g2@4 ~@2 f2 g2 a2 bb2", L: "db3@4 ~@2 c3 bb2", M: "bb2 ~@3", N: "ab2@8 ~@4 ab2@3 bb2", O: "c3 ~",
  P: "c3@3 c3@3 c3@5 c3@3 c3@2", Q: "f3 ~",
})).s("gm_electric_bass_pick").gain(0.3)

// chords · piano · "Piyano"
const piano = note("<A B@2 C D B@2 C D B E C D F@2 G H I J I K L M N O I J I K L M N H ~@28>".pickRestart({
  A: "~@5 [eb3,eb5] [d3,d5] [db3,db5]", B: "[c3,g4,bb4,d5]@3 c3 c3@2 c3@2 c3@4 ~@2 g3@2",
  C: "[c3,f4,a4,c5]@3 c3 c3@2 c3@2 c3@4 ~@2 g3@2", D: "[c3,d5,f5,a5]@3 c3@3 c3@4 eb3@2 d3@2 db3@2",
  E: "[c3,c5,e5,g5]@3 c3 c3@2 c3@2 c3@4 ~@2 g3@2", // C
  F: "[c3,f4]@3 c3 c3@2 [c3,f4]@2 [c3,g4]@3 f4@3 [g3,g4]@2, ~@3 g4@3 ~@10", // F5 C5 G
  G: "[c3,f4]@3 c3 c3@2 [c3,f4]@2 [c3,g4]@3 f4@3 g4@2, ~@3 g4@3 ~@10", H: "[c3,c5,e5,g5]!3 ~",
  I: "[f2,f4,a4,c5]@3 f2@3 f2@4 ~@4 f2@2", J: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@4 c3@2",
  K: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@4 f2@2", L: "[bb2,bb4,d5,f5]@3 bb2@3 bb2@4 ~@2 bb2 f3 d3 bb2",
  M: "[a2,a4,c5,e5]@3 a2@3 a2@4 ~@2 a2 f3 d3 a2", N: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@2 f2 g2 a2 bb2",
  O: "[c3,c5,e5,g5] c3 [c3,bb4,d5,f5] ~", // C Bb
})).s("gm_piano").gain(0.3)

// chords · piano · "Piyano" · soft notes
const piano_soft = note("<~@33 A B C D A B E@3 F G H G I J K L M G H G I J K L N@2 O>".pickRestart({
  A: "eb4@3 f4@3 eb4@2 f4@3 ~ c3@2 [bb2,f4]@2, db3@8 ~@3 eb4@3 ~@2", B: "[bb2,eb4]@3 f4@3 eb4@2 f4@3 eb4@3 f4@2",
  C: "eb4@3 f4@3 eb4@2 f4@3 ~ ab2@2 ~ bb2, ab2@8 ~@3 eb4@3 f4@2", D: "eb4@3 f4@3 eb4@2 f4@3 eb4@3 f4@2, c3 ~",
  E: "[c3,f4]@3 [c3,g4]@3 f4@2 g4@3 [c3,f4]@3 [c3,g4]@2, ~@6 c3@5 ~@5", F: "c3 ~",
  G: "[f2,f4,a4,c5]@3 f2@3 f2@4 ~@4 f2@2", H: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@4 c3@2",
  I: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@4 f2@2", J: "[bb2,bb4,d5,f5]@3 bb2@3 bb2@4 ~@2 bb2 f3 d3 bb2",
  K: "[a2,f4,a4,c5]@3 a2@3 a2@4 ~@2 a2 f3 d3 a2", L: "[g2,g4,bb4,d5]@3 g2@3 g2@4 ~@2 f2 g2 a2 bb2",
  M: "[c3,c5,e5,g5] c3 [c3,bb4,d5,f5] ~", N: "[c3,c5,e5,g5] c3!2 ~", O: "[f3,f5] ~",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~ A@15 B A@7 B A@7 B A@9 B A@7 B A@7 B@2 ~>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@2 x ~@8",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@16 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A@2 ~>".pickRestart({
  A: "~@2 x ~ x!2 ~@2",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A@2 ~>".pickRestart({
  A: "~@2 x!2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ A@15 B A@7 B A@7 B A@9 B A@7 B A@7 B@2 ~>".pickRestart({
  A: "x", B: "~@4 x!2 ~@2",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A@2 ~>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A@2 B>".pickRestart({
  A: "~@6 x!2", B: "x",
})).gain(0.3)

stack(
  flute, alto_sax, tenor_sax, alto_sax_2, acoustic_guitar_steel, acoustic_guitar_steel_2, bass, piano, piano_soft, kick,
  snare, low_tom, hihat, mid_tom, crash
)