Click and controls

piano in a big room, static note playing with random notes Every 4 rounds, it will toggle between a lot of random notes to very few notes.

by Wangshu Sun

HTML

<script src="https://tonejs.github.io/CDN/r6/Tone.js"></script>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<button id ="button1">
Normal
</button>
<button id ="button2">
Intense
</button>
<button id ="button3">
Calm
</button>
<button id ="button4">
Mute
</button>

JavaScript

var freeverb = new Tone.Freeverb().toMaster();
freeverb.dampening.value = 2000;
freeverb.roomSize.value = 0.9;
freeverb.wet.value = 1;

// note part
var synth1 = new Tone.SimpleSynth( {
	oscillator : {
  	type : "sine"
  },
  envelope : {
  	attack : 0.005,
    decay : 0.07,
    sustain : 0.5,
    release : 0.7
  }
}).connect(freeverb);

var synth2 = new Tone.SimpleSynth( {
	oscillator : {
  	type : "sine"
  },
  envelope : {
  	attack : 0.005,
    decay : 0.07,
    sustain : 0.5,
    release : 0.7
  }
}).connect(freeverb);

var synth3 = new Tone.SimpleSynth( {
	oscillator : {
  	type : "sine"
  },
  envelope : {
  	attack : 0.005,
    decay : 0.07,
    sustain : 0.5,
    release : 0.7
  }
}).connect(freeverb);

var dream_random = ["C4","E4","G4","A4","B4","C5","E5","G5","A5","B5","C6"];
var dream13567 = ["C3","E3","G3","A3","B3",0,"C3","E3","G3","A3","B3",0,"C3","E3","G3","A3","B3",0,"B3","C4","B3","G3","E3",0,];
var dream13567_high = ["C4","E4","G4","A4","B4",0,"C4","E4","G4","A4","B4",0,"C4","E4","G4","A4","B4",0,"B4","C5","B4","G4","E4",0,];

var delay = new Tone.FeedbackDelay(0.045, 0.8).toMaster();
//var now = delay.now();
//console.log(now);

var calmness = 0.1;

for (var i = 0; i < 10000; i++) {
	
  // automatic cycle between intense and calm, triggered at edge of change
  if (i % 96 == 0) {
  	if (Math.floor(i/96) % 2 == 0) {
    	calmness = 0.1;
    }
    else {
    	calmness = 0.6;
    }
  }
  
	var chance = Math.random();
  if (chance > calmness) {
    var index = Math.floor(Math.random() * dream_random.length);
    var tone = dream_random[index];
  }
  else {
  	tone = 0;
  }

  // usual stop every 6 notes
  if (i % 6 == 5) {
  	var chance = Math.random();
    if (chance > 0.6) {
    	tone = 0;
    }
  }
  
  synth1.triggerAttackRelease(tone, "4n", i * 0.4);
  var index2 = i % dream13567.length;
  var tone2 = dream13567[index2];
  var tone3 = dream13567_high[index2];
  synth2.triggerAttackRelease(tone2, "4n", i * 0.4);
 ...