Skip to content

Commit be5735d

Browse files
committed
closes #1 add basic beats
Creates basic probabalistic beat generator - high tom, low tom, crash
1 parent 8fe4678 commit be5735d

File tree

1 file changed

+49
-37
lines changed

1 file changed

+49
-37
lines changed

app/basic-beat.js

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
const Tone = require('tone');
22

3+
// general drum compressor
34
var drumCompress = new Tone.Compressor({
4-
"threshold" : -12,
5+
"threshold" : -30,
56
"ratio" : 6,
67
"attack" : 0.3,
78
"release" : 0.1
89
}).toMaster();
910

11+
// low drum part
1012
var drum1 = new Tone.MembraneSynth({
1113
"pitchDecay" : 0.016,
1214
"octaves" : 2,
@@ -24,6 +26,8 @@ var membranePart = new Tone.Sequence(function(time, pitch){
2426
membranePart.loop = true;
2527
membranePart.loopEnd = "1m";
2628

29+
30+
// high drum part
2731
var drum2 = new Tone.MembraneSynth({
2832
"pitchDecay" : 0.02,
2933
"octaves" : 10,
@@ -35,53 +39,61 @@ var drum2 = new Tone.MembraneSynth({
3539
"volume": -12
3640
}).chain(drumCompress);
3741

42+
var dingPart = new Tone.Part(function(time, event){
43+
if (Math.random() < event.prob){
44+
drum2.triggerAttackRelease(event.note, event.dur, time);
45+
}
46+
}, [
47+
{time : "0:0", note : "C5", dur : "4n + 8n", prob: 1},
48+
{time : "0:2", note : "C5", dur : "8n", prob : 0.6},
49+
{time : "0:2 + 4t", note : "C5", dur : "8n", prob : 0.4},
50+
{time : "0:2 + 4t*2", note : "C5", dur : "8n", prob : 0.9},
51+
{time : "1:0", note : "C4", dur : "4n + 8n", prob : 1},
52+
{time : "1:2", note : "C5", dur : "8n", prob : 0.6},
53+
{time : "1:2 + 4t", note : "C5", dur : "8n", prob : 0.4},
54+
{time : "1:2 + 4t*2", note : "Eb5", dur : "8n", prob : 0.9},
55+
{time : "2:0", note : "F5", dur : "4n + 8n", prob : 1},
56+
{time : "2:2", note : "F5", dur : "8n", prob : 0.6},
57+
{time : "2:2 + 4t", note : "F4", dur : "8n", prob : 0.4},
58+
{time : "2:2 + 4t*2", note : "F5", dur : "8n", prob : 0.9},
59+
{time : "3:0", note : "F5", dur : "4n + 8n", prob : 1},
60+
{time : "3:2", note : "F4", dur : "8n", prob : 0.6},
61+
{time : "3:2 + 4t", note : "F5", dur : "8n", prob : 0.4},
62+
{time : "3:2 + 4t*2", note : "Bb4", dur : "8n", prob : 0.9}
63+
])
64+
.start(0);
3865

39-
// var membranePart2 = new Tone.Sequence(function(time, pitch){
40-
// drum2.triggerAttack(pitch, time, Math.random()*0.5 + 0.5);
41-
// }, [null, 'D4', "Eb3", "Gb4", null, "C5", null, "Eb5", 'F5'], "16n").start(0);
42-
// membranePart2.loop = true;
43-
// membranePart2.loopEnd = "2n";
44-
66+
dingPart.loop = true;
67+
dingPart.loopEnd = "2m";
4568

46-
var bell = new Tone.MetalSynth({
69+
var bell = new Tone.MetalSynth({
4770
"harmonicity" : 7,
4871
"resonance" : 400,
4972
"modulationIndex" : 10,
5073
"envelope" : {
5174
"decay" : 0.4,
5275
},
5376
"volume" : -18
54-
}).toMaster();
55-
var bellPart = new Tone.Sequence(function(time, freq){
56-
bell.frequency.setValueAtTime(freq, time, Math.random()*0.3 + 0.3);
57-
bell.triggerAttack(time);
58-
}, [150, null, 100, null, 200, 175, null, 200, null, 133, null, 200], "16t").start(0);
77+
}).chain(drumCompress)
5978

79+
var bellPart2 = new Tone.Part(function(time, event){
80+
if (Math.random() < event.prob){
81+
bell.frequency.setValueAtTime(event.note, time, Math.random()*0.3 + 0.3);
82+
bell.triggerAttack(time);
83+
}
84+
}, [
85+
{time : "0:0", note : 150, dur : "8t", prob: 1},
86+
{time : "0:0 + 8t", note : 100, dur : "8t", prob : 0.6},
87+
{time : "0:0 + 8n + 16t", note : 200, dur : "16t", prob : 0.75},
88+
{time : "0:0 + 8n + 8t", note : 175, dur : "8t", prob : 0.75},
89+
{time : "0:1 + 8n + 16t", note : 200, dur : "8t", prob : 0.9},
90+
{time : "0:1 + 16t", note : 133, dur : "8t", prob : 1},
91+
{time : "0:1 + 8n + 8t", note : 200, dur : "16t", prob : 0.75}
92+
])
93+
.start(0)
6094

61-
var bassPart = new Tone.Part(function(time, event){
62-
if (Math.random() < event.prob){
63-
drum2.triggerAttackRelease(event.note, event.dur, time);
64-
}
65-
}, [
66-
{time : "0:0", note : "C5", dur : "4n + 8n", prob: 1},
67-
{time : "0:2", note : "C5", dur : "8n", prob : 0.6},
68-
{time : "0:2 + 4t", note : "C5", dur : "8n", prob : 0.4},
69-
{time : "0:2 + 4t*2", note : "C5", dur : "8n", prob : 0.9},
70-
{time : "1:0", note : "C4", dur : "4n + 8n", prob : 1},
71-
{time : "1:2", note : "C5", dur : "8n", prob : 0.6},
72-
{time : "1:2 + 4t", note : "C5", dur : "8n", prob : 0.4},
73-
{time : "1:2 + 4t*2", note : "Eb5", dur : "8n", prob : 0.9},
74-
{time : "2:0", note : "F5", dur : "4n + 8n", prob : 1},
75-
{time : "2:2", note : "F5", dur : "8n", prob : 0.6},
76-
{time : "2:2 + 4t", note : "F4", dur : "8n", prob : 0.4},
77-
{time : "2:2 + 4t*2", note : "F5", dur : "8n", prob : 0.9},
78-
{time : "3:0", note : "F5", dur : "4n + 8n", prob : 1},
79-
{time : "3:2", note : "F4", dur : "8n", prob : 0.6},
80-
{time : "3:2 + 4t", note : "F5", dur : "8n", prob : 0.4},
81-
{time : "3:2 + 4t*2", note : "Bb4", dur : "8n", prob : 0.9}]).start(0);
82-
83-
bassPart.loop = true;
84-
bassPart.loopEnd = "2m";
95+
bellPart2.loop = true;
96+
bellPart2.loopEnd = "2n"
8597

8698
Tone.Transport.bpm.value = 72;
8799

0 commit comments

Comments
 (0)