// Above formula from http://www.sengpielaudio.com/calculator-levelchange.htm
oscs.push(osc);
}
returnoscs;
}
functionloudness(ratio){
return10*Math.log2(ratio);
}
functionstart(num){
for(leti=0;i<num;i++){
oscs[i].start();
}
return`Starting ${num} oscillators`
}
functionstop(num){
if(num==0){
oscs.forEach(osc=>osc.stop());
return"Stopping all oscillators"
}else{
for(leti=num;i>=0;i--){
if(oscs[i])oscs[i].stop();
}
return`Stopping ${num} oscillators`
}
}
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.