Strudelify

Wonderful

The Beach Boys

KeyD♭ majorTempo80 bpm
0:00/0:00
// Wonderful — The Beach Boys
// 80 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · acoustic bass · "Bass"
const bass = note("<~@7 A B C D E F G H I J C K L M N@2 O B C P Q R S T U B C P Q V W N X Y>".pickRestart({
  A: "~@6 bb2 b2", B: "db3@3 b2 bb2@2 ab2@2", C: "gb2 ab2", D: "f2@4 db2@3 db2", E: "gb2@4 b2@3 b2",
  F: "ab2@6 ab2@2 f2@5 ~ f2@2", G: "gb2 bb1", H: "b1 db2", I: "b1@8 db2@7 ~", J: "db3@3 b1 bb2@2 ab2@2",
  K: "f2@5 ~ f2@2 db2@8", L: "gb2@6 gb2@2 b2@5 ~ b2@2", M: "ab2@5 ~ ab2@2 db2@5 ~ db2@2",
  N: "eb2@5 ~ eb2@2 f2@5 ~ f2@2", O: "eb2@5 ~ eb2@2 e2 gb2@2 ab2 bb2@2 b2@2", P: "f2 db2", Q: "gb2 b2", R: "ab2 f2",
  S: "gb2@7 ~ bb1@8", T: "b1@8 db2@5 ~ db2@2", U: "b1@5 ~ b1@2 db2@6 db2 ~", V: "ab2 db2", W: "eb2@6 eb2@2 f2@5 ~ f2@2",
  X: "eb2@6 eb2@2 e2 gb2@2 ab2 bb2@2 b2@2", Y: "db3 ~@3",
})).s("gm_acoustic_bass").gain(0.4)

// chords · harpsichord · "Harpsicho"
const harpsichord = note(`<
  A B C D E F@2 G A B C D H I J K A B C D E F@2 G A B C D H I J K A B C D E F@2 G ~
>`.pickRestart({
  A: "~ ab4 [db5,f5] [b3,ab4] ~ ab4 [db5,f5] ab4, db4@3 ~ bb3@2 ab3@2", // Db E Db
  B: "~ gb4 [b4,eb5] gb4 ~ gb4 [b4,eb5,gb5] gb4, gb3 ab3", C: "~ ab4 [db5,f5] ab4 ~ ab4 [b4,db5,e5] ab4, f3 db3",
  D: "~ gb4 [a4,db5,e5] gb4 ~ gb4 [a4,eb5,gb5] gb4, gb3@8 b3@7 ~", // A Ebdim
  E: "~ ab4 [b4,eb5,gb5] ab4 ~ ab4 [b4,db5,e5] ab4, ab3 ~ db3@2", // B Dbm7
  F: "~ eb4 [ab4,c5,eb5] eb4 ~ f4 [ab4,db5,f5] f4, eb3 f3", // Ab Db
  G: "~@2 eb4@2 [ab4,c5,eb5]@2 eb4@2 e2 gb2@2 ab2 bb2@2 b2@2, eb3@7 ~@9", // Ab
  H: "~ ab4 [b4,e5] ab4 ~ ab4 [c5,eb5,f5] ab4, ab3 f3", // E5 F7
  I: "gb4 ~ gb4@2 [b4,eb5,gb5]@2 gb4@2 ~@2 gb4@2 [bb4,db5,gb5]@2 gb4@2, gb3 bb3", // B Gb
  J: "~ ab4 [b4,e5] ab4 ~ ab4 [db5,e5] ab4, b3 db4", K: "~ ab4 [b4,e5] ab4 ~ ab4 [db5,e5] ab4, b3@8 db4@7 ~",
})).s("gm_harpsichord").gain(0.4)

// other · french horn · "Horns"
const french_horn = note("<~@2 A B C D@3 ~@12 E D@3 ~@12 E D@3 ~>".pickRestart({
  A: "db4@6 b3@2 bb3@7 ~", B: "a3", C: "ab3@15 b4", D: "[bb4@2 ab4@2 g4@2 ab4@33 ~@9]/3", E: "~@15 b4",
})).s("gm_french_horn").gain(0.28)

// chords · piano
const piano = note("<~@8 A B C D E F G H A B C D I J@2 K ~@8 A B C D I J@2 K ~>".pickRestart({
  A: "[db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~, db3@3 b2 bb2@2 ab2@2", // Db
  B: "[b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~, gb2 ab2", // B
  C: "[ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~, f2 db3", // Db Dbm
  D: "[gb3,a3,db4] ~ [gb3,a3,db4] ~ [gb3,a3,db4] ~ [gb3,a3,db4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~, gb2 b2", // Gbm B
  E: "[b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~ [c4,f4,ab4] ~ [c4,f4,ab4] ~ [c4,f4,ab4] ~ [c4,f4,ab4] ~, e3 f3", // E Fm
  F: "[b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [bb3,db4,gb4] ~ [bb3,db4,gb4] ~ [bb3,db4,gb4] ~ [bb3,db4,gb4] ~, gb2 bb2", // B Gb
  G: "[b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,gb4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~, b2 db3", // E Dbm
  H: "[b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~ [b3,e4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~ [db4,e4,ab4] ~, b2@8 db3@7 ~", // E Dbm
  I: "[ab3,b3,eb4] ~ [ab3,b3,eb4] ~ [ab3,b3,eb4] ~ [ab3,b3,eb4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~, ab2@5 ~ ab2@2 db3@5 ~ db3@2", // Abm Dbm
  J: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~, eb3@5 ~ eb3@2 f3@5 ~ f3@2", // Ab Db
  K: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@9, eb3 ~", // Ab
})).s("gm_piano").gain(0.19)

// other · flute
const flute = note("<~@16 A B C D E F@2 G ~@8 A B C D E F@2 G ~>".pickRestart({
  A: "db5@3 b4 bb4@2 ab4@2", B: "gb4@8 ab4@7 ~", C: "f4 db4", D: "gb4@4 b4@3 a4", E: "ab4@8 db4@5 ~ db4@2", F: "eb4 f4",
  G: "eb4 ~",
})).s("gm_flute").gain(0.44)

// chords · flute
const flute_2 = note("<~@20 A B@3 ~@12 A B@3 ~>".pickRestart({
  A: "~@7 gb5", B: "[eb3 c4 f3 db4 eb3 c4 f3 db4 eb3 c4 ~@2, ab5@5 ~]/3",
})).s("gm_flute").gain(0.54)

stack(bass, harpsichord, french_horn, piano, flute, flute_2)

More by The Beach Boys