diff options
Diffstat (limited to 'exp')
-rw-r--r-- | exp/practool.html | 18 | ||||
-rw-r--r-- | exp/practool.js | 20 |
2 files changed, 38 insertions, 0 deletions
diff --git a/exp/practool.html b/exp/practool.html new file mode 100644 index 0000000..3317e5e --- /dev/null +++ b/exp/practool.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> + <head> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta charset="utf-8"/> + <link rel="stylesheet" href="../style.css"> + <title>practice session tools</title> + </head> + <body> + <h1>practice session tools</h1> + <noscript><h2><i>(this website requires javascript)</i></h2></noscript> + <h2>random scale</h2> + <p id="scale"></p> + <button id="scale_btn">gen</button> + <script src="practool.js"></script> + <p><i>(<a href="..">../</a>)</i></p> + </body> +</html> diff --git a/exp/practool.js b/exp/practool.js new file mode 100644 index 0000000..782b992 --- /dev/null +++ b/exp/practool.js @@ -0,0 +1,20 @@ +let body = document.body; +let doc = {}; +body.querySelectorAll('[id]').forEach(e => doc[e.id] = e); + +let rand = x => Math.floor(Math.random() * x); +let arand = a => a[rand(a.length)] + +let roots = [ + "A", "B", "C", "D", "E", "F", "G", + "A#", "C#", "D#", "F#", "G#", + "Ab", "Bb", "Db", "Eb", "Gb", +]; +let modes = [ + "major", + "natural minor", "harmonic minor", "melodic minor", +]; +let random_scale = () => `${arand(roots)} ${arand(modes)}`; + +doc.scale_btn.onclick = () => doc.scale.innerHTML = random_scale(); +doc.scale_btn.onclick(); |