returnMath.floor(Math.random()*60)+30;// less range than the full 217 to remove highs and lows
}
fromMidiNote={
randHarmonyBtn;
returntonal.Midi.midiToNoteName(midiNote);
}
randFromScale={
justHarm;
returnrandFromArr(scale.notes);
}
scaleFlavour={
newScale;
returnrandFromArr(scaleNames);
}
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.