0:00/0:00
// Tribal Dance (edit) — 2 Unlimited
// 130 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.
// chords · alto sax
const alto_sax = note(`<
~@5 A B A C A B A D ~@5 A B A D A B A D ~@19 E A B A C A B A D ~@20 E A B A D A B A D ~@10 A B A D A B A D ~@7 E A B A
C A B A C ~
>`.pickRestart({
A: "[f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [gb2,gb3,gb4] ~ [eb2,eb3,eb4] ~", // F Gb Eb
B: "[f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [bb2,bb3,bb4] ~ [ab2,ab3,ab4] ~", // F Bb Ab
C: "[f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4] ~ [bb2,bb3,bb4] ~ [bb2,bb3,bb4] ~ [ab2,ab3,ab4] ~ [ab2,ab3,ab4] ~", // F Bb Ab
D: "[f2,f3,f4] ~@2 [f2,f3,f4] ~@2 [f2,f3,f4]@2 [bb2,bb3,bb4] ~ [bb2,bb3,bb4] ~ [ab2,ab3,ab4] ~ [ab2,ab3,ab4] ~", // F Bb Ab
E: "~@7 [bb2,bb3,bb4]", // Bb
})).s("gm_alto_sax").gain(0.52)
// chords · alto sax · soft notes
const alto_sax_soft = note(`<
~@5 A B A C A B A D ~@5 A B A D A B A D ~@19 E A B A C A B A D ~@20 E A B A D A B A D ~@10 A B A D A B A D ~@7 E A B A
C A B A C ~
>`.pickRestart({
A: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 db3 ~ bb2 ~", B: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 f3 ~ eb3 ~",
C: "c3 ~@2 c3 ~@2 c3 ~ f3 ~ f3 ~ eb3 ~ eb3 ~", D: "c3 ~@2 c3 ~@2 c3@2 f3 ~ f3 ~ eb3 ~ eb3 ~", E: "~@7 f3",
})).s("gm_alto_sax").gain(0.33)
// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
~@18 A B A B A B A B A B A B A B A B C D C E A B A F A B A G H B H B H B H B I A B A B A B A B C D C E A B A F A B A G
H B H B H B H B I ~@13 H B H B A B A F A B A G H B H B H B H B I
>`.pickRestart({
A: "eb1 f1 ~ eb1 f1 ~ eb1!2 f1!3 ~ eb1 ~ eb1 ~", B: "eb1 f1 ~ eb1 f1 ~ eb1!2 f1!2 eb1 ~ f1 ~ ab1 ~",
C: "f1!3 ~ f1 ~ f1!2 ~ f1 ~ f1 eb1 ~ eb1 ~", D: "f1!3 ~ f1 ~ f1 ab1 ~ ab1 ~ ab1 f1 ~ ab1 ~", E: "f1 ~@15",
F: "ab1 bb1 ~ ab1 bb1 ~ ab1 bb1!2 ab1 bb1 ~ bb1 ~ ab1 ~", G: "ab1 bb1 ~ ab1 bb1 ~ ab1 bb1!2 ab1!2 ~ bb1 ~ db2 ~",
H: "eb1 f1 ~ eb1 f1 ~ eb1!2 f1!3 ~ gb1 ~ eb1 ~", I: "eb1 ~@15",
})).s("gm_electric_bass_finger").gain(0.46)
// bass · synth bass 1 · "SYN BASS"
const bass_2 = note(`<
~@18 A@8 ~@12 A@3 B A@3 B A@8 C ~@12 A@3 B A@3 B A@8 C ~@5 A@4 ~@4 A@7 B A@3 B A@8 C
>`.pickRestart({
A: "f3!4 c3!2 eb3!2 f3!4 c3!2 eb3!2", B: "bb3!4 f3!2 ab3!2 bb3!4 f3!2 ab3!2", C: "f3 ~@15",
})).s("gm_synth_bass_1").gain(0.39).pan(0.3)
// chords · piano · "A.PIANO 1"
const piano = note(`<
~@37 A B C B D E F E G H@2 I ~@14 J@2 K A B C B D E F E G H@2 I ~@14 L ~@7 A B C B M E F E G H@2 I ~@6
>`.pickRestart({
A: "~@10 f4@2 ab4 ~ f4 ~", B: "[ab4,c5]@3 [f4,ab4]@6 ~ ab4@2 ~ ab4@2 ~",
C: "[g4,bb4]@2 ~ [f4,ab4]@2 ~ [g4,bb4]@4 f4@2 ab4@2 f4@2", // Gm Fm Gm
D: "[ab4,c5]@3 ~ bb4 ab4 [f4,bb4]@4 f4 ~ ab4 ~ f4 ~, ~@2 f4 ~@5", E: "[ab4,c5]@2 ~ [f4,ab4]@6 ~ ab4@2 ~ ab4@2 ~",
F: "[g4,bb4]@2 ~ [f4,ab4]@2 ~ [g4,bb4]@4 f4@2 ab4 ~ f4 ~", // Gm Fm Gm
G: "[ab4,c5]@2 ~@2 bb4 ab4 [f4,bb4]@4 f4@2 ab4 ~ f4 ~, ~@2 f4 ~@5", H: "[c5@25 c5@3 ~ c5@3]/2", I: "bb4 ab4@7 ~@8",
J: "~@4 f4!2 ~ bb4 ~ ab4@6 ~", K: "~@4 f4!2 ~ ab4 ~ ab4 f4@6", L: "b4@3 b4@2 ~ b4 ~ bb4 ab4@5 ~@2",
M: "[ab4,c5]@3 ~ bb4 ab4 [f4,bb4]@4 f4@2 ab4 ~ f4 ~, ~@2 f4 ~@5", // Ab Bb5
})).s("gm_piano").gain(0.8)
// chords · string ensemble 2 · "SLOWSTRIN"
const string_ensemble_2 = note("<~@38 A B A C A B A C ~@21 A B A C A B A C ~@26 A B A C A B A C ~@9>".pickRestart({
A: "[f4,ab4,c5]", B: "[eb4,g4,bb4]", C: "[f4,bb4,d5]",
})).s("gm_string_ensemble_2").gain(0.46)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@26 A B A B A B A B ~@21 A B A B A B A B ~@55>".pickRestart({
A: "[a3,d4,f4] ~@2 [a3,d4,f4] ~@3 [g3,c4,eb4]", // Dm Cm
B: "[a3,d4,f4]@2 ~@4 [a3,d4,f4]@2 ~@2 [a3,d4,f4]@2 [c4,f4,ab4] ~ [c4,f4,ab4]@2", // Dm Fm
})).s("gm_overdriven_guitar").gain(0.56)
// other · timpani
const timpani = note("<A B@2 C D ~@8 E ~@70 E ~@33>".pickRestart({
A: "c3!16", B: "c3!4 ~ c3!11, ~@4 g3@3 ~@9", C: "c3!4 ~ c3!7 ~ c3!3, ~@4 g3@3 ~@5 g3@3 ~",
D: "c3!4 ~ c3!4 ~@7, ~@4 g3@3 ~@9", E: "c3 ~@15",
})).s("gm_timpani").gain(0.32)
// drums · kick
const kick = s("bd").struct("<~@9 A@4 ~@5 A@19 B A@16 B A@11 B A@16 B ~@5 A@4 ~@4 A@20 B>".pickRestart({
A: "x!4", B: "x",
})).gain(0.8)
// drums · snare
const snare = s("sd").struct("<~@18 A@19 ~ A@16 ~ A@11 ~ A@16 ~@6 A@4 ~@4 A@2 B C A@16 ~>".pickRestart({
A: "~@4 x ~@2 x ~@4 x ~@3", B: "~@4 x ~@2 x ~@4 x ~@2 x", C: "~ x ~@2 x ~ x!10",
})).gain(0.56)
// drums · pedal hat
const pedal_hat = s("hh").struct("<~@9 A@4 B ~@4 A@19 ~ A@16 B A@11 ~ A@16 B ~@5 A@4 B ~@3 A@20 B>".pickRestart({
A: "x!4", B: "x",
})).gain(0.16)
// drums · open hat
const open_hat = s("oh").struct("<~@9 A@4 ~@5 A@19 ~ A@16 ~ A@11 ~ A@16 ~@6 A@4 ~@4 A@20 ~>".pickRestart({
A: "~ x ~ x ~ x ~ x",
})).gain(0.48)
// drums · crash
const crash = s("cr").struct(`<
~@9 A ~@8 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A@2 ~@7 A ~@3 A ~@7 A ~@7 A ~@13 A ~@3 A ~@7 A ~@7 A
>`.pickRestart({
A: "x",
})).gain(0.48)
// drums · tambourine
const tambourine = s("tb").struct(`<
~@9 A@4 B C B C B A@8 D@8 A@3 E A@16 F D@8 A@3 E A@16 F B C B C B A@4 ~@4 A@20 G
>`.pickRestart({
A: "x!16", B: "~@2 x ~@3 x ~ x ~ x!2 ~@2 x ~", C: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~", D: "~ x!2 ~@2 x!3 ~ x!3 ~ x!3",
E: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", F: "x!4 ~@12", G: "x",
})).gain(0.4)
// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@13 A B A B A ~@8 C@8 ~@21 C@8 ~@21 A B A B A ~@29>".pickRestart({
A: "~ x ~@2", B: "~@2 x ~@2 x ~@2", C: "x ~@2 x!2 ~@3 x ~@3 x ~@3",
})).gain(0.24)
// drums · cowbell
const cowbell = s("cb").struct("<~@34 [x ~@2 x]!3 ~@26 [x ~@2 x]!3 ~@52>").gain(0.32)
// drums · bongos
const bongos = s("bongo:4").struct("<~@13 A B A B A ~@66 A B A B A@2 B A B ~@25>".pickRestart({
A: "~@6 x ~ x ~@2 x ~@2 x ~", B: "x ~@5 x ~@4 x ~@2 x ~",
})).gain(1.05)
// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@13 A B A B A ~@66 A B A B A@2 B A B ~@25>".pickRestart({
A: "x ~ x!2 ~ x ~@4 x ~@2 x!3", B: "~@2 x!2 ~ x ~@2 x ~ x ~@2 x ~@2",
})).gain(1.05)
// drums · congas
const congas = s("conga:13").struct(`<
~@13 A ~ A ~ A ~@8 B C B C B C B C B C B ~@26 B C B ~@18 A ~ A ~ A@2 ~ A ~@26
>`.pickRestart({
A: "x", B: "~@2 x!2 ~ x!2 ~ x!2 ~ x ~@2 x ~", C: "~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x ~",
})).gain(1.28)
// drums · congas
const congas_2 = s("conga:18").struct("<~@13 A@5 ~@8 B C B C B C B C B C B ~@26 B C B ~@18 A@9 ~@25>".pickRestart({
A: "~@2 x!2 ~@4 x ~ x!2 ~ x!3", B: "x ~@6 x ~@8", C: "x ~@5 x!2 ~@8",
})).gain(1.28)
// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<~@26 [~@13 x ~@2]!11 ~@26 [~@13 x ~@2]!3 ~@52>").gain(0.77)
// drums · congas
const congas_3 = s("conga:33").struct("<~@13 A B A B A ~@8 C@11 ~@26 C@3 ~@18 A B A B A@2 B A B ~@25>".pickRestart({
A: "~@4 x!4 ~ x ~@6", B: "x ~@3 x!4 ~ x ~@6", C: "~@2 x!2 ~@7 x ~@4",
})).gain(1.28)
// drums · congas · soft notes
const congas_soft_2 = s("conga:33").struct("<~@26 [~@5 x ~@2]!11 ~@26 [~@5 x ~@2]!3 ~@52>").gain(0.77)
// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~@34 [~@9 x ~@6]!3 ~@26 [~@9 x ~@6]!3 ~@52>").gain(2.04)
// drums · shaker
const shaker = s("sh").struct("<~@13 A@41 B A@28 B A@9 ~@4 A@20 B>".pickRestart({
A: "x!16", B: "x",
})).gain(0.4)
// drums · lt
const lt = s("lt").struct("<~@13 [x ~ x!2 ~ x!4 ~ x!2 ~ x!3]!5 ~@66 [x ~ x!2 ~ x!4 ~ x!2 ~ x!3]!9 ~@25>").gain(0.4)
stack(
alto_sax, alto_sax_soft, bass, bass_2, piano, string_ensemble_2, overdriven_guitar, timpani, kick, snare, pedal_hat,
open_hat, crash, tambourine, tambourine_soft, cowbell, bongos, bongos_2, congas, congas_2, congas_soft, congas_3,
congas_soft_2, agogo_bells, shaker, lt
)
More by 2 Unlimited
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.