Skip to content

Instantly share code, notes, and snippets.

@petersalomonsen
Last active February 6, 2020 04:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save petersalomonsen/166a3ceda9498e6d2a0d57b189ff5a68 to your computer and use it in GitHub Desktop.
Save petersalomonsen/166a3ceda9498e6d2a0d57b189ff5a68 to your computer and use it in GitHub Desktop.
/**
* Copyright (c) 2019 - Peter Johan Salomonsen - All rights reserved
*/
global.bpm = 110;
global.pattern_size_shift = 4;
var pianoVoices = [];
for(let n=1;n<=8;n++) {
pianoVoices.push('piano'+n);
addInstrument('piano'+n, {type: 'note'});
}
addInstrumentGroup('piano', pianoVoices);
addInstrument('kick', {type: 'number'});
addInstrument('snare', {type: 'number'});
addInstrument('hihat', {type: 'number'});
addInstrument('bass', {type: 'note'});
addInstrument('eftang', {type: 'note'});
var padVoices = [];
for(let n=1;n<=8;n++) {
padVoices.push('pad'+n);
addInstrument('pad'+n, {type: 'note'});
}
addInstrumentGroup('pads', padVoices);
addInstrument('sinelead', {type: 'note'});
for(let n=0;n<2;n++) {
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2])
});
}
for(let n=0;n<2;n++) {
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"eftang": pp(4, [,,b4,,e5,,fs5,g5,,,fs5,,e5,,g5,fs5,,,,,,,e5,,fs5,,g5,,fs5,d5,b4,e5,hld,,,,,,,,,,,,,]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2])
});
}
// loopHere();
//playFromHere();
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40,,
100,,,,
100,,,,
100,,,,
100,,,10
]),
"piano1": pp(4, [g4,hld,,e5,,e5,hld,hld,,,g6,fs6,,,b4(0.5),,c5,,,g5,hld,,g5,,g5,hld,,a4,hld,,c5,hld]),
"piano2": pp(4, [c5,hld,,c5,,g4,hld,hld,,,,,,d6,d5,,e5,hld,,d5,,,d5,,d5,,,d5,hld,,g4,hld]),
"piano3": pp(4, [e5,hld,,g4,,c5,hld,hld,,,,,,,g4,,g4,hld,,b4,,,b4,,b4,,,fs5,hld,,e5,hld]),
"eftang": pp(4, [,,,,g6,,,,fs6,hld,,,d6,,,b5,,,a5,hld,hld,,g5,,a5,,b5,,a5,,g5,e5]),
"bass": pp(4, [a1,,,a2,
,,a1,,
a1,,,a1,
b2,,b1,,
c2,,,c3,
,,c2,,
c2,,,c2,
d3,,d2
])
}, 2);
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40,,
100,,,,
100,,,,
100,,,,
100,,,10
]),
"piano1": pp(4, [g4,hld,,e5,,e5,hld,hld,,,g6,fs6,,,b4(0.5),,c5,,,g5,hld,,g5,,g5,hld,,a4,hld,,c5,hld]),
"piano2": pp(4, [c5,hld,,c5,,g4,hld,hld,,,,,,d6,d5,,e5,hld,,d5,,,d5,,d5,,,d5,hld,,g4,hld]),
"piano3": pp(4, [e5,hld,,g4,,c5,hld,hld,,,,,,,g4,,g4,hld,,b4,,,b4,,b4,,,fs5,hld,,e5,hld]),
"eftang": pp(4, [,,d5,e5,hld,g5,,,,,,,,,,,,,d5,e5,hld,,g5,,a5,hld,hld,hld,hld,,,]),
"bass": pp(4, [a1,,,a2,
,,a1,,
a1,,,a1,
b2,,b1,,
c2,,,c3,
,,c2,,
c2,,,c2,
d3,,d2
])
}, 2);
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40,,
100,,,,
100,,,,
100,,,,
100,,,10
]),
"piano1": pp(4, [g4,hld,,e5,,e5,hld,hld,,,g6,fs6,,,b4(0.5),,c5,,,g5,hld,,g5,,g5,hld,,a4,hld,,c5,hld]),
"piano2": pp(4, [c5,hld,,c5,,g4,hld,hld,,,,,,d6,d5,,e5,hld,,d5,,,d5,,d5,,,d5,hld,,g4,hld]),
"piano3": pp(4, [e5,hld,,g4,,c5,hld,hld,,,,,,,g4,,g4,hld,,b4,,,b4,,b4,,,fs5,hld,,e5,hld]),
"eftang": pp(4, [,,,,g6,,,,fs6,hld,,,d6,,,b5,,,a5,hld,hld,,g5,,a5,,b5,,a5,,g5,e5]),
"bass": pp(4, [a1,,,a2,
,,a1,,
a1,,,a1,
b2,,b1,,
c2,,,c3,
,,c2,,
c2,,,c2,
d3,,d2
])
}, 2);
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40,,
100,,,,
100,,,,
100,,,,
100,,,10
]),
"piano1": pp(4, [g4,hld,,e5,,e5,hld,hld,,,g6,fs6,,,b4(0.5),,c5,,,g5,hld,,g5,,g5,hld,,a4,hld,,c5,hld]),
"piano2": pp(4, [c5,hld,,c5,,g4,hld,hld,,,,,,d6,d5,,e5,hld,,d5,,,d5,,d5,,,d5,hld,,g4,hld]),
"piano3": pp(4, [e5,hld,,g4,,c5,hld,hld,,,,,,,g4,,g4,hld,,b4,,,b4,,b4,,,fs5,hld,,e5,hld]),
"eftang": pp(4, [,,d5,e5,hld,g5,,,,,,,,,,,,,d5,e5,hld,,g5,,a5,hld,hld,hld,
b5(1),,,]),
"bass": pp(4, [a1,,,a2,
,,a1,,
a1,,,a1,
b2,,b1,,
c2,,,c3,
,,c2,,
c2(0.5),,c3(0.5),,
d2(0.5),,d3(0.5)
])
}, 2);
// playFromHere();
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"pads": pp(0.5, [
[e5(2),g5(2),b4(2),d5(2)],
[fs5(2),a5(2),d4(2),cs5(2)],
[g5(2),b5(2),c4(2),e4(2)],
[d6(2),a5(2),b3(2)],
[e6(6),b5(6),e4(6),g5(6),d5(6)],
], 5),
"eftang": pp(1, [g5(1.5),,a5(1.5),,fs5(1),,,g5(1)]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2])
});
// playFromHere();
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
50,,,,
,,,,
70,,,20
]),
"pads": pp(4, [[g5(2),e5(7/4),b5(2)],,,,,,,,[d5(2),fs5(2),a5(2)],,,,,,,,[e5(7/4),g5(2),c5(7/4)],,,,,,,,[fs5(7/4),d5(7/4),b4(7/4)],,,,,,,], 8),
"eftang": pp(1, [e5(2)]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"snare": pp(4, [
,,,,
90,,10,
,,,50,
100,,30
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2])
});
for(var n=0;n<2;n++) {
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
]),
"pads": pp(4, [[e6(2),b5(7/4),g6(2)],,,,,,,,[fs6(2),d6(3/2),a5(11/2)],,,,,,,,[e6(2),c6(7/4),],,,,,,,,[d6(3/2),fs6(3/2),],,,,,,,], 8),
"sinelead": pp(4, [,,fs5,,fs5(1/2),,e5,fs5,,fs5,e5(1/2),,fs5,,g5(1/2),,e4(1/2),,d5,e5(1/2),,d5,,b4,,as4,a4(1/2),,g4,,e4,d4]),
"piano1": pp(4, [e3,hld,hld,hld,d6,e5,e4,fs5,d4,hld,hld,b3,hld,d4,e4,hld]),
"piano2": pp(4, [,,b4,hld,,b4,hld,a4,hld,fs5,hld,,fs5,hld,b4,hld]),
"piano3": pp(4, [,,g5,hld,,g5,hld,d5,hld,a4,hld,,d5,hld,g5,hld]),
"bass": pp(4, [e2(1),,,e2,
e3,,e2,,
b2,,,b2,
,,d3,e3])
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
]),
snare: pp(4, [
,,,,
100,,,,
,,,50,
100,,,30
]),
"piano1": pp(4, [e5,hld,e6,e5,hld,d6,b5,fs5,hld,hld,fs5,hld,hld,hld,d5,hld]),
"piano2": pp(4, [a3,hld,hld,hld,hld,e5,hld,d5,hld,hld,d5,hld,hld,e5,hld,e5]),
"piano3": pp(4, [c5,hld,,c5,hld,b4,,a4,hld,hld,a4,hld,,d5,hld,]),
"piano4": pp(4, [,a2,hld,hld,hld,g5,hld,b3,hld,hld,hld,hld,hld,a4,hld,]),
"piano5": pp(4, [,,,,,,,b2,hld,hld,hld,hld,,,,]),
"bass": pp(4, [c2,,,c3,
,,c2,,
d2,,,d2,
d3,,d2]),
});
playPatterns({
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
]),
"sinelead": pp(4, [e5(1/2),,g5(1/2),,a5(1/2),,b5,e5(1/2),,,,,,,,,,,g5(1/2),,a5,,b5,a5(1/2),,,b5(1/2),,d6(1/2),,,]),
"bass": pp(4, [a2(1),,,,,,,a3,g2,,g2(1/2),,g3,g2(1/2),,,b2(3/4),,,,,,,b2(1/2),,,b2(1/2),,fs3,a3,,b3]),
"piano": pp(4, [,b5(1/2),[,e6(1/2)],,g6(1/2),,fs6,d6(1/2),,,,,,,,,,,b5(1/2),,d6(1/2),,e6,b5(3/4),,,,,,,,], 8),
"pads": pp(4, [[e6(9/4),c5(7/4),c6(2),g5(2),],,,,,,,,[,g5(7/4),d6(6),b4(2),g6(2)],,,,,,,,
[fs6(4),d5(4),,a6(4),a5(4)],,,,,,,,,,,,,,,], 8),
});
playPatterns({
"piano": pp(4, [,,,[g7(1/2),fs5(1/2)],,[d7(1/2),b4(1/2)]], 8),
"eftang": pp(4, [,,,,,,,,e5,b5,d6,g6,a6,d7(1/2),,e7]),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,,40
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
]),
snare: pp(4, [
,,,,
100,,,,
,,,50,
100,30,,90
]),
});
}
for(var n=0;n<2;n++) {
playPatterns({
"eftang": pp(4, [a3(1/2),,e5(1/2),,a5,b5(1/2),,c6(1/2),,b5,a5,g5(1/2),,d5(3/4),,]),
"bass": pp(4, [a2(1),,,,g3(1/2),,,g3,a3(1/2),,e3(1/2),,g3(1/2),,a3(1/2),,,,,,,,,,,,,,,,,]),
"piano": pp(4, [[a5(1/2),e5(1/2),c6(1/2)],,,[a5(1/2),e5(1/2),c6(1/2)],,,[a5(1/2),e5(1/2),c6(1/2)],,,,[e5(1/2),a5(1/2),c6(1/2)],,,[a5(1/2),e5(1/2),c6(1/2)],,,[d5(1/2),g5(3/4),b5(3/4)],,,[g5(1/2),b5(1/2),d5(1/2)],,,,[a5(1/2),fs5(1/2),d5(1/2)],,,[fs5(3/4),d5(1/2),a5(1/2)],,,,[fs5(1/2),a5(1/2),d5(1/2)],], 8),
"pads": pp(4, [[a3(4),e5(4),c6(4)],,,,,,,,,,,,,,,,[d6(4),b3(2),g5(2)],,,,,,,,[,fs5(2),d4(2)],,,,,,,], 8),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"eftang": pp(4, [b5(1/2),,d6(1/2),,b5,a5,g5,a5(3/4),,,b5(1/2),,a5,g5,e5,d5]),
"bass": pp(4, [b2(3/4),,,b3(1/2),,b3(1/2),,c3,d3(1/2),,d4(1/2),,,d3,e4,]),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"eftang": pp(4, [a3(1/2),,e5(1/2),,a5,b5(1/2),,c6(1/2),,b5,a5,g5(1/2),,d5(3/4),,]),
"sinelead": pp(4, [a3(1/2),,e5(1/2),,a5,b5(1/2),,c6(1/2),,b5,a5,g5(1/2),,d5(3/4),,]),
"bass": pp(4, [a2(1),,,,g3(1/2),,,g3,a3(1/2),,e3(1/2),,g3(1/2),,a3(1/2),,,,,,,,,,,,,,,,,]),
"pads": pp(4, [[a3(4),e5(4),c6(4)],,,,,,,,,,,,,,,,[d6(4),b3(2),g5(2)],,,,,,,,[,fs5(2),d4(2)],,,,,,,], 8),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"eftang": pp(4, [b5(1/2),,d6(1/2),,b5,a5,g5,a5(3/4),,,b5(1/2),,a5,g5,e5,d5]),
"sinelead": pp(4, [b5(1/2),,d6(1/2),,b5,a5,g5,a5(3/4),,,b5(1/2),,a5,g5,e5,d5]),
"bass": pp(4, [b2(3/4),,,b3(1/2),,b3(1/2),,c3,d3(1/2),,d4(1/2),,,d3,e4,]),
"piano": pp(4, [[d5(1/2),g5(3/4)],,,[g5(1/2),b5(1/2)],,,,[a5(1/2),fs5(1/2)],,,[fs5(1/2),d5(1/2)],,g7(1/2),[,fs7(1/2)],d7(1/2),[,a6]], 8),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,20,,,
,,,70,
100,,,60
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
}
// playFromHere();
for(var n=0;n<4;n++) {
playPatterns({
"bass": pp(4,
[
[e2(8)],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[
e2(0.5),,,e2,
,,a2,as2,
b2,,,d3,
,,e3(0.5)
],
[
e2(0.5),,,e2,
,,a2,as2,
b2,,b3,d3,
,d4,e3(0.5)
],
]
[n]
),
"pads": pp(4, [[d6(2),g5(2),,,,,],[,,b5(2),d5(2),d6(2),b4(2),fs6(2)],,,,,,,,,,,,,], 8),
"piano": pp(4, [[e3(7/4),g6(1/2),],[,,fs6(1/2)],[,d6,],[,a5(1/2),],[,,g5(5/4)],,,,,,fs5(3/4),,,,,], 8),
"sinelead": pp(4, [e5,b5,e6,a6,d7(3/4),,,,,,,,,,,]),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
}
for(var n=0;n<4;n++) {
playPatterns({
"bass": pp(4,
[
[
e2(0.5),,,e2,
,,a2,as2,
b2,,,d3,
,,e3(0.5)
],
[
e2(0.5),,,e2,
,,a2,as2,
b2,,b3,d3,
,d4,e3(0.5)
],
]
[n % 2]
),
"pads": pp(4, [[d6(4),g5(4),b5(4),d5(4),d6(4),b4(4),fs6(4)],,,,,,,,,,,,,], 8),
"piano": pp(4,
[
e5(1),[,g6,b6],,,
[,g6,b6],a5,b5(0.5),[,fs6,a6,cs7],
,,[,fs6,a6,cs7],,
,e5(0.5),[,,b5,g6(0.5),b6(0.5),d7(0.5)]
], 8),
"sinelead": pp(4, [e5,b5,e6,a6,d7,a6,e6,b5,e5].slice(0, (n + 1) * 2)),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,n === 3 ? 20 : 0,
100,,,n === 3 ? 40 : 0,
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
}
// playFromHere();
for(var n=0;n<2;n++) {
playPatterns({
"bass": pp(4,
[
[
e2(0.5),,,e2,
,,a2,as2,
b2,,,d3,
,,e3(0.5)
],
[
e2(0.5),,,e2,
,,a2,as2,
b2,,b3,d3,
,d4,e3(0.5)
],
]
[n % 2]
),
"pads": pp(4, [[d6(4),g5(4),b5(4),d5(4),d6(4),b4(4),fs6(4)],,,,,,,,,,,,,], 8),
"eftang": pp(4, [,,e5(1/2),,b5(1/2),,e5(1/2),,d6(3/4),,,cs6(3/4),,,a5(1/2),,b5(5/2),,,,,,,,,,,,,,a5,b5,a5(3/4),,,g5(1/2),,,fs5(1/2),,d5(3/4),,,e5(3/4),,,b4(1/2),,d5(3/4),,,e5(3/4),,,b4(7/4),,,,,,,,,]),
"piano": pp(4,
[
e5(1),[,g6,b6],,,
[,g6,b6],a5,b5(0.5),[,fs6,a6,cs7],
,,[,fs6,a6,cs7],,
,e5(0.5),[,,b5,g6(0.5),b6(0.5),d7(0.5)]
], 8),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,n === 3 ? 20 : 0,
100,,,n === 3 ? 40 : 0,
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"bass": pp(4,
[
[
d2(0.5),,,d2,
,,a2,as2,
b2,,,d3,
,,d3(0.5)
],
[
d2(0.5),,,d2,
,,a2,as2,
b2,,b3,d3,
,d4,e3(0.5)
],
]
[n % 2]
),
"pads": pp(4, [[d6(4),fs5(4),a5(4),d5(4),cs6(4),d4(4),fs6(4)],,,,,,,,,,,,,], 8),
"piano": pp(4, [,,[d7(1/2),a6(1/2),],,,[a6(1/2),d7(1/2),],,,[d7(1/2),a6(1/2),],,,[e7(3/4),a6(1/2),],,,[d7(1/2),a6(1/2),],[,,c7],,,,,,,c7(1/2),[,g6,],c7(3/4),[,g6(1/2),],,[b6(1/2),g6(1/2),],,,[g6(1/2),b6,],,[g6(1/2),b6(1/2)],,,a6(1/2),,,g6,,fs6,g6,[,fs6],d6(1/2),,,b5,], 8),
"sinelead": pp(4, [,,,,,g6,fs6,d6,a5(1/2),,,,,,g5,a5,g5(1/2),,fs5(1/2),,,d5,e5(1/2),,b4(1/2),,d5,a4(1/2),,a4,b4(1/2),]),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100,,,,
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"bass": pp(4, [a2(1/2),,,a3(1/2),,,d3,ds3,e3,,,g3(1/2),,,a3(1/2),]),
"pads": pp(4, [[g5(4),g6(4),e6(4),c6(4),a3(4),g4(4)]], 8),
"kick": pp(4, [
100,,,,
100,,,20,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,,
100,,,,
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"bass": pp(4, [c2(3/4),,,c3(3/4),,,c3(1/2),,d2(1/2),,d3(1/2),,,,d3,]),
"pads": pp(4, [[,b5(4),g6(4),e4(4),b4(4),fs6(4)]], 8),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"snare": pp(4, [
,,,,
100,,,,
,,,50,
100,,,80,
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
}
// playFromHere();
playPatterns({
"pads": pp(4, [[d6(8),g5(12),b5(8),d5(8),d6(8),b4(8),fs6(8),e4(8)],,,,,,,,,,,,,], 8),
"piano": pp(4, [,,e5(27/4),,[,b5(29/4),,,],[,,d6(23/4),,],,[,,,g6,],[,,,,d7],[,,,g7(3/4),],,[,,,,fs7(3/4)],,,[,,,d7(1/2),],,,,[,,,a6(1/2)],,[,,,b6(1/2)],,[,,,a6],[,,,g6(1/2)],,[,,,a6],[,,,g6],,[,,,fs6(1/2)],,d6(1/2),,e6(1/2),[,e5(3/2)],d6,b5(1/2),,,,,a5,as5(1/2),[,b5],b5(1/2),,d6(1/2),,e6(3/4),,,,,,,,,,,b5,e6,fs6(1/2),,,], 8),
"bass": pp(4,
[
e2(0.5),,,e2,
,,a2,as2,
b2,,,d3,
,,e3(0.5)
] ),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"bass": pp(4,
[
e2(0.5),,,e2,
,,a2,as2,
b2,,b3,d3,
,d4,e3(0.5)
] ),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100,
]),
"sinelead": pp(4, [,,,,,,,,,,,,,,,,,,,,,,,,g7,fs7,d7,a6(1/2),,,,,,,,,g6,fs6,d6,a5(1/2),,a5(1/2),,b5,a5(1/2),,d6,]),
"hihat": pp(4, [
30,30,90,30,
30,30,90,30,
30,30,90,30,
30,30,90,30,
])
});
playPatterns({
"pads": pp(4, [[e4(10),a5(6),d6(6),d5(6),g6(6),b4(8)],,,,,,,], 8),
"bass": pp(4,
[
e2(0.5),,,e2,
,,a2,,
b2,,,d3,
,d4,e3(0.5)
] ),
"kick": pp(4, [
100,,,,
100,,,8,
100,,,,
100
]),
"hihat": pp(4, [
30,30,90,30,
30,,90,30,
30,30,90,,
30,30,90,30,
])
});
playPatterns({
"bass": pp(4,
[
g3(1),,,,
,,e3,,
d3,e3
] ),
"kick": pp(4, [
100,,,,
100,,,50,
100,,,80,
100,,90,,
]),
"hihat": pp(4, [
30,30,90,,
30,,90,30,
30,,90,,
30,,,,
])
});
playPatterns({
"sinelead": pp(4, [e5(2)]),
"piano": pp(4, [e5(2),[,b5],[,,fs6]],8),
"bass": pp(4,
[
e2(3)
] ),
"kick": pp(4, [
100,20
]),
"hihat": pp(4, [
30,,60,10
])
});
import { StereoSignal } from "../synth/stereosignal.class";
import { Freeverb } from "../fx/freeverb";
import { DelayLine } from "../fx/delayline";
import { SAMPLERATE } from "../environment";
import { TriBandStereoCompressor } from "../fx/tribandstereocompressor";
import { EQBand } from "../fx/eqband";
import { SubPiano } from "../instruments/piano/subpiano";
import { Kick2 } from "../instruments/drums/kick2.class";
import { Snare2 } from "../instruments/drums/snare2.class";
import { SawBass3 } from "../instruments/bass/sawbass3";
import { Eftang } from "../instruments/lead/eftang";
import { SoftPad } from "../instruments/pad/softpad.class";
import { Hihat } from "../instruments/hihat.class";
import { SineLead } from "../instruments/lead/sinelead";
export const PATTERN_SIZE_SHIFT: usize = 4;
export const BEATS_PER_PATTERN_SHIFT: usize = 2;
const gain: f32 = 0.13;
const ENABLE_MULTIBAND_COMPRESSOR = false;
let freeverb = new Freeverb();
const delayframes = (SAMPLERATE * (2/3) * 60 / 110) as usize;
let delayLeft: DelayLine = new DelayLine(delayframes);
let delayRight: DelayLine = new DelayLine(delayframes);
let echoline = new StereoSignal();
let reverbline = new StereoSignal();
let mainline = new StereoSignal();
let tribandstereocompressor = new TriBandStereoCompressor(20,500,7000,19500);
let eqbandl = new EQBand(20, 19500);
let eqbandr = new EQBand(20, 19500);
function createInstrumentArray<T>(length: i32, factoryFunc: () => T): T[] {
const arr = new Array<T>(length);
for(let n = 0; n < length;n++) {
arr[n] = factoryFunc();
}
return arr;
}
const pianos: SubPiano[] = createInstrumentArray<SubPiano>(8, () => new SubPiano());
const pads: SoftPad[] = createInstrumentArray<SoftPad>(8, () => new SoftPad());
const kick = new Kick2();
const bass = new SawBass3();
const eftang = new Eftang();
const snare = new Snare2();
const hihat = new Hihat();
const sinelead = new SineLead();
export function setChannelValue(channel: usize, value: f32): void {
switch(true) {
case (channel < 8):
pianos[channel].note = value;
break;
case channel === 8:
kick.note = value;
break;
case channel === 9:
snare.note = value;
break;
case channel === 10:
hihat.note = value;
break;
case channel === 11:
bass.note = value
break;
case channel === 12:
eftang.note = value;
break;
case channel < 21:
pads[channel - 13].note = value;
break;
case channel === 21:
sinelead.note = value;
break;
}
}
export function mixernext(leftSampleBufferPtr: usize, rightSampleBufferPtr: usize): void {
mainline.clear()
reverbline.clear();
echoline.clear();
for(let n = 0;n<pianos.length;n++) {
const piano = pianos[n];
piano.next();
mainline.addStereoSignal(piano.signal, 0.4, 0.5);
reverbline.addStereoSignal(piano.signal, 0.1, 0.5);
}
for(let n = 0;n<pads.length;n++) {
const pad = pads[n];
pad.next();
mainline.addStereoSignal(pad.signal, 0.4, 0.5);
echoline.addStereoSignal(pad.signal, 0.4, 0.5);
}
kick.next();
mainline.addStereoSignal(kick.signal, 1.5, 0.5);
reverbline.addStereoSignal(kick.signal, 0.2, 0.5);
hihat.next();
mainline.addStereoSignal(hihat.signal, 1.5, 0.5);
reverbline.addStereoSignal(hihat.signal, 0.2, 0.5);
bass.next();
mainline.addStereoSignal(bass.signal, 4, 0.5);
reverbline.addStereoSignal(bass.signal, 0.1, 0.5);
eftang.next();
mainline.addStereoSignal(eftang.signal, 2.3, 0.5);
echoline.addStereoSignal(eftang.signal, 1.8, 0.5);
sinelead.next();
mainline.addStereoSignal(sinelead.signal, 2.4, 0.5);
echoline.addStereoSignal(sinelead.signal, 2.0, 0.5);
snare.next();
mainline.addStereoSignal(snare.signal, 1.0, 0.5);
reverbline.addStereoSignal(snare.signal, 0.2, 0.5);
echoline.left += delayRight.read() * 0.5;
echoline.right += delayLeft.read() * 0.5;
delayLeft.write_and_advance(echoline.left);
delayRight.write_and_advance(echoline.right);
reverbline.addStereoSignal(echoline, 0.5, 0.5);
freeverb.tick(reverbline);
let left = gain * (mainline.left + echoline.left + reverbline.left);
let right = gain * (mainline.right + echoline.right + reverbline.right);
if (ENABLE_MULTIBAND_COMPRESSOR) {
tribandstereocompressor.process(left,right,0.45, 1.0, 0.9 , 1.3, 1.05, 1.0);
left = tribandstereocompressor.stereosignal.left;
right = tribandstereocompressor.stereosignal.right;
} else {
left = eqbandl.process(left);
right = eqbandr.process(right);
}
// clip
if (Math.abs(left) > 1.0) {
left = 1.0;
}
if (Math.abs(right) > 1.0) {
right = 1.0;
}
store<f32>(leftSampleBufferPtr, left);
store<f32>(rightSampleBufferPtr, right);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment