Strudelify

blue bossa

Misc Traditional

KeyF majorTempo120 bpm
0:00/0:00
// blue bossa — Misc Traditional
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/94898; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · "Bb Trumpet"
const trumpet = note(`<
  A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 O P@2 ~@33 I@2 J@2 K@2 L@2 M@2 N@2 O Q@2 R S T U V W
>`.pickRestart({
  A: "g5 ~ f5 eb5 f5 eb5 b4 c5", B: "~ c5@2 ~@3 c5 eb5", C: "g5 ~ f5 eb5 f5 eb5 d5 ab4", D: "~ ab4@2 ~@5",
  E: "f4 ab4 c5 d5 eb5 f5 g5 ab5", F: "g5!2 ~ g5 ~ g5 ~@2", G: "g5 ~ f5 eb5 f5 eb5 bb4 ~", H: "b4!2 ~ b4 ~@4",
  I: "[g5@2 ~ f5 eb5 d5 ~ c5@6 ~ bb4@2]/2", J: "[ab4@4 g5@3 f5@7 ~@2]/2", K: "[f5@3 eb5 d5 c5 ~ bb4@6 ~ ab4@2]/2",
  L: "[g4@4 f5@3 eb5@7 ~@2]/2", M: "[eb5@3 db5 c5 bb4@2 ab4@6 ~ gb4@2]/2", N: "[gb4 f4@2 bb4 ~ f4 ~ ab4@4 ~@3 ab4 ~]/2",
  O: "ab4 g4 ~ bb4@2 ab4@2 ~", P: "[ab4 g4 ~ bb4@2 ab4 ~ g4@4 ~@5]/2", Q: "[ab4 g4 ~ bb4@2 ab4 ~ g4@4 ~ d5@2 c5@2]/2",
  R: "ab4 eb5", S: "g5@2 g5 f5", T: "bb5 ab5", U: "g5@2 d5 c5", V: "ab4 g4", W: "f4",
})).s("gm_trumpet").gain(0.15)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note(`<
  A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 O P@2 ~@33 I@2 J@2 Q@2 L@2 M@2 N@2 O R@2 S T U V W X
>`.pickRestart({
  A: "g5 ~ f5 eb5 f5 eb5 b4 c5", B: "~ eb5@2 ~@3 c5 eb5", C: "g5 ~ f5 eb5 f5 eb5 d5 ab4", D: "~ ab4@2 ~@5",
  E: "f4 ab4 c5 d5 c5 d5 eb5 f5", F: "d5!2 ~ d5 ~ d5 ~@2", G: "g5 ~ f5 eb5 f5 eb5 bb4 ~", H: "b4!2 ~ b4 ~@4",
  I: "[g5@2 ~ f5 eb5 d5 ~ c5@6 ~ bb4@2]/2", J: "[ab4@4 g5@3 f5@7 ~@2]/2", K: "[d5@3 c5 bb4 ab4 ~ g4@6 ~ f4@2]/2",
  L: "[eb4@4 d5@3 c5@7 ~@2]/2", M: "[eb5@3 db5 c5 bb4@2 ab4@6 ~ gb4@2]/2", N: "[gb4 f4@2 bb4 ~ f4 ~ ab4@4 ~@3 f4 ~]/2",
  O: "f4 eb4 ~ g4@2 f4@2 ~", P: "[f4 eb4 ~ g4@2 f4 ~ eb4@4 ~@5]/2", Q: "[c5@3 c5 bb4 ab4 ~ g4@6 ~ f4@2]/2",
  R: "[f4 eb4 ~ g4@2 f4 ~ eb4@4 ~ d5@2 c5@2]/2", S: "f4 g4", T: "c5@2 eb5!2", U: "eb5!2", V: "d5@2 ab4!2", W: "c4 b3",
  X: "bb3",
})).s("gm_trumpet").gain(0.12)

// other · french horn · "Horn"
const french_horn = note(`<
  A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 O P@2 ~@33 I@2 J@2 Q@2 L@2 M@2 N@2 O R@2 S T U V W X
>`.pickRestart({
  A: "g4 ~ f4 eb4 f4 eb4 d4 eb4", B: "~ eb4@2 ~@3 c4 eb4", C: "g4 ~ f4 eb4 f4 eb4 d4 ab3", D: "~ ab3@2 ~@5",
  E: "f3 ab3 c4 d4 eb4 f4 g4 ab4", F: "g4!2 ~ g4 ~ g4 ~@2", G: "g4 ~ f4 eb4 f4 eb4 bb3 ~", H: "b3!2 ~ b3 ~@4",
  I: "[g4@2 ~ f4 eb4 d4 ~ c4@6 ~ bb3@2]/2", J: "[ab3@4 g4@3 f4@7 ~@2]/2", K: "[f4@3 eb4 d4 c4 ~ bb3@6 ~ f4@2]/2",
  L: "[eb4@4 d4@3 c4@7 ~@2]/2", M: "[eb4@3 db4 c4 bb3@2 ab3@6 ~ gb3@2]/2", N: "[gb3 f3@2 bb3 ~ f3 ~ ab3@4 ~@3 ab3 ~]/2",
  O: "ab3 g3 ~ bb3@2 ab3@2 ~", P: "[ab3 g3 ~ bb3@2 ab3 ~ g3@4 ~@5]/2", Q: "[f4@3 eb4 d4 c4 ~ g4@6 ~ f4@2]/2",
  R: "[ab3 g3 ~ bb3@2 ab3 ~ g3@4 ~ d4@2 c4@2]/2", S: "d4 eb4", T: "d4@2 c4!2", U: "f4 ab4", V: "g4@2 d4 c4", W: "ab3!2",
  X: "f3",
})).s("gm_french_horn").gain(0.16)

// chords · piano
const piano = note(`<
  A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 O P@2 Q R S T@2 U V W X Y Z AA AB AC V W AD R S T@2 U V W X Y Z AA AB AC V W
  AD AE@2 AF@2 AG@2 L@2 AH@2 AI@2 AJ AK@2 AL AM AN AO AP AQ
>`.pickRestart({
  A: "[bb3,d4,eb4,g4]@2 [bb3,d4,eb4,g4,f5] eb5 f5 eb5 d5 eb5, g5 ~@7", // Ebmaj7
  B: "[bb3,d4,eb4,g4]!2 ~ [bb3,d4,eb4,g4] ~@2 c5 eb5, ~ eb5@2 ~@5", // Ebmaj7
  C: "[f3,ab3,c4,d4]@2 [f3,ab3,c4,d4,f5] eb5 f5 eb5 d5 ab4, g5 ~@7", // Dm7b5
  D: "[f3,ab3,c4,d4]!2 ~ [f3,ab3,c4,d4] ~ [f3,ab3,c4,d4] ~@2, ~ ab4@2 ~@5", // Dm7b5
  E: "f4 ab4 c5 [g3,ab3,c4,d4,d5] eb5 f5 g5 ab5, [g3,ab3,c4,d4]@3 ~@5", // Gsus4
  F: "[f3,bb3,b3,eb4,g5]!2 ~ [f3,bb3,b3,eb4,g5] ~ [f3,bb3,b3,eb4,g5] ~@2", // Eb
  G: "[eb3,g3,a3,d4]@2 [eb3,g3,a3,d4,f5] eb5 f5 eb5 bb4 ~, g5 ~@7", H: "[f3,bb3,b3,eb4,b4]!2 ~ [f3,bb3,b3,eb4,b4] ~@4",
  I: "[[bb3,d4,eb4,g4]@3 [bb3,d4,eb4,g4,f5] eb5 d5 ~ [bb3,d4,eb4,g4]@2 [bb3,d4,eb4,g4] ~@4 bb4@2, g5@2 ~@5 c5@6 ~@3]/2", // Ebmaj7
  J: "[[f3,ab3,c4,d4]@3 [f3,ab3,c4,d4] g5@3 [f3,ab3,c4,d4]@4 [f3,ab3,c4,d4] ~@4, ab4@4 ~@3 f5@7 ~@2]/2", // Dm7b5
  K: "[[g3,ab3,c4,d4,f5]@3 [g3,ab3,c4,d4,eb5] d5 c5 ~ [f3,bb3,b3,eb4]@3 ~ [f3,bb3,b3,eb4] ~@2 ab4@2, ~@7 bb4@6 ~@3]/2", // Dm7b5 Abmaj7 Ebsus2
  L: "[[eb3,g3,a3,d4]@3 [eb3,g3,a3,d4] f5@3 ~@2 [eb3,g3,a3,d4]@3 [eb3,g3,a3,d4] ~ [eb3,g3,a3,d4] ~, g4@4 ~@3 eb5@7 ~@2]/2", // Ebmaj7
  M: "[[gb3,bb3,db4,f4,eb5]@3 [gb3,bb3,db4,f4,db5] c5 bb4@2 [gb3,bb3,c4,e4]@4 [gb3,bb3,c4,e4] ~@2 gb4@2, ~@7 ab4@6 ~@3]/2", // Gbmaj7 Gb7
  N: "[[f3,ab3,c4,eb4,gb4] [f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4,bb4] ~ f4 ~ [f3,ab3,c4,eb4,ab4]@4 ~ [f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4,ab4] ~, ~ f4@2 ~@13]/2", // Fm7
  O: "ab4 g4 ~ [g3,ab3,c4,f4] ~ ab4@2 ~, [g3,ab3,c4,f4]@3 bb4@2 ~@3", // Fm
  P: "[ab4 g4 ~ bb4@2 ab4 ~ [eb3,g3,a3,d4]@4 ~@5, [f3,bb3,b3,eb4]@3 [f3,bb3,b3,eb4]@3 ~ g4@2 ~@7]/2", // Ebmaj7 Ebsus2
  Q: "[f3,bb3,b3,eb4] ~@2 [f3,bb3,b3,eb4]@2 ~@3", R: "[bb3,d4,eb4,g4]@3 [bb3,d4,eb4,g4] ~@4",
  S: "[bb3,d4,eb4,g4]!2 ~@6", T: "[f3,ab3,c4,d4]@3 [f3,ab3,c4,d4] ~@4", U: "[g3,ab3,c4,d4]!2 ~ [g3,ab3,c4,d4] ~@4",
  V: "[f3,bb3,b3,eb4]@3 [f3,bb3,b3,eb4] ~@4", W: "[eb3,g3,a3,d4]@3 [eb3,g3,a3,d4] ~@4",
  X: "~ [eb3,g3,a3,d4]@3 [eb3,g3,a3,d4] ~ [eb3,g3,a3,d4] ~", // Ebmaj7
  Y: "[gb3,bb3,db4,f4]!2 ~ [gb3,bb3,db4,f4] ~ [gb3,bb3,db4,f4] ~@2", Z: "[gb3,bb3,c4,e4]@3 [gb3,bb3,c4,e4] ~@4",
  AA: "[f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4] ~@4", AB: "~ [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4] ~",
  AC: "[g3,ab3,c4,f4]@3 [g3,ab3,c4,f4] ~@4", AD: "[f3,bb3,b3,eb4]!2 ~ [f3,bb3,b3,eb4] ~ [f3,bb3,b3,eb4] ~@2",
  AE: "[[bb3,d4,eb4,g4]@3 [bb3,d4,eb4,g4,f5] eb5 d5 ~@2 [bb3,d4,eb4,g4]!2 ~@4 bb4@2, g5@2 ~@5 c5@6 ~@3]/2", // Ebmaj7
  AF: "[[f3,ab3,c4,d4,ab4]@4 g5@3 ~ [f3,ab3,c4,d4]@3 [f3,ab3,c4,d4] ~@4, ~@7 f5@7 ~@2]/2", // Dm7b5
  AG: "[[g3,ab3,c4,d4,f5]@3 [g3,ab3,c4,d4,eb5] d5 c5 ~@2 [f3,bb3,b3,eb4]@3 [f3,bb3,b3,eb4] ~@2 ab4@2, ~@7 bb4@6 ~@3]/2", // Dm7b5 Abmaj7 Ebsus2
  AH: "[[gb3,bb3,db4,f4,eb5]@3 [gb3,bb3,db4,f4,db5] c5 bb4@2 ~ [gb3,bb3,c4,e4]@3 [gb3,bb3,c4,e4] ~@2 gb4@2, ~@7 ab4@6 ~@3]/2", // Gbmaj7 Gb7
  AI: "[gb4 f4@2 [f3,ab3,c4,eb4,bb4] ~ f4 ~@3 [f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4] ~ [f3,ab3,c4,eb4,ab4] ~, [f3,ab3,c4,eb4]@3 ~@4 ab4@4 ~@5]/2", // Fm7
  AJ: "[g3,ab3,c4,f4,ab4] [g3,ab3,c4,f4,g4] ~ [g3,ab3,c4,f4] ~ [g3,ab3,c4,f4] ~@2, ~@3 bb4@2 ab4@2 ~", // Fm
  AK: "[ab4 g4 ~ [f3,bb3,b3,eb4] ~ ab4 ~@2 [eb3,g3,a3,d4]@3 [eb3,g3,a3,d4] [eb4,d5]@2 c5@2, [f3,bb3,b3,eb4]@3 bb4@2 ~@2 g4@2 ~@7]/2", // Ebsus2 Ebmaj7 Ebsus2
  AL: "[f3,ab3,c4,d4,f4,ab4] [f3,ab3,g4,c5,g5]", // Dm7b5 Fm
  AM: "[eb3,ab3,c5,g5,c6]@2 [eb3,ab3,d4,g5,eb6,g6] [eb3,ab3,d4,f5,eb6,f6]", // Abmaj7 Ebmaj7 Ddim
  AN: "[f3,ab3,c4,bb5,eb6,bb6] [f3,ab3,b3,eb4,ab5,eb6,ab6]", // Fm7 Fm7b5
  AO: "[g3,c4,d4,g5,d6,g6]@2 [eb3,ab3,d4,d5,ab5,d6] [eb3,ab3,d4,c5,ab5,c6]", // Gsus4 Ab
  AP: "[f3,ab3,c4,ab4,c5,ab5] [f3,ab3,b3,ab4,d5,g5]", AQ: "[eb3,a3,d4,f4,bb4,d5,f5]",
})).s("gm_piano").gain(0.48)

// bass · fretless bass · "Fretless Electric Bass"
const bass = note(`<
  A B C D E F B G A B C H E I A J K L M N O P Q R A B C H S I A J T L M N O P Q R A B C H S I A J T L M N O P Q R A B C
  H S I A J T L M N O P Q U V U V W X
>`.pickRestart({
  A: "c2 g2 eb2 d2", B: "c2 eb2 g2 gb2", C: "f2 c2 ab1 g1", D: "f1 ab1 f2 e2", E: "eb2 d2 ab1 c2", F: "b1 eb2 d2 b1",
  G: "g2 g1 g2 b1", H: "f1!2 f2 e2", I: "b1 bb1 d2 b1", J: "c2 eb2 d2 c2", K: "db2 ab1 bb1 b1", L: "c2 eb2 c2 ab1",
  M: "db2 f1 ab1 gb1", N: "f1 eb2 db2 c2", O: "g2 d2 g1 f2", P: "g2 d2 g1 db2", Q: "c2 g2 f2 eb2", R: "d2 c2 b1 g1",
  S: "eb2 d2 ab2 c2", T: "db2 gb1 ab1 bb1", U: "g2!2", V: "g1!2", W: "d2 db2", X: "c2 ~",
})).s("gm_fretless_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[x!2]!2 [x!4] [x!2]!5 ~@48 [x!2]!20 ~>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!8 ~@48 [~ x ~ x]!20 ~>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<[x ~ x!3 ~ x!2]!8 [~ x ~ x]!48 [x ~ x!3 ~ x!2]!20 x>").gain(0.48)

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

stack(trumpet, trumpet_2, french_horn, piano, bass, kick, snare, hihat, ride)

More by Misc Traditional