11const Tone = require ( 'tone' ) ;
22
3+ // general drum compressor
34var 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
1012var drum1 = new Tone . MembraneSynth ( {
1113 "pitchDecay" : 0.016 ,
1214 "octaves" : 2 ,
@@ -24,6 +26,8 @@ var membranePart = new Tone.Sequence(function(time, pitch){
2426membranePart . loop = true ;
2527membranePart . loopEnd = "1m" ;
2628
29+
30+ // high drum part
2731var 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
8698Tone . Transport . bpm . value = 72 ;
8799
0 commit comments