diff --git a/js/MusicTheory/_musictheory.js b/js/MusicTheory/_musictheory.js deleted file mode 100644 index e0e82c6..0000000 --- a/js/MusicTheory/_musictheory.js +++ /dev/null @@ -1,209 +0,0 @@ -var invertObject = function (o) { - if (o.length) { - var ret = {}; - for (var key = 0; key < o.length; key ++) { - ret[o[key]] = key; - } - } else { - var ret = {}; - for (var key in o) { - ret[o[key]] = key; - } - } - return ret; -}; - -if (typeof(MusicTheory) === "undefined") MusicTheory = {}; - -(function() { - - var root = MusicTheory; - - // KEY SIGNATURES - - root.key2number = { - 'A': 0, - 'A#': 1, - 'Bb': 1, - 'B': 2, - 'C': 3, - 'C#': 4, - 'Db': 4, - 'D': 5, - 'D#': 6, - 'Eb': 6, - 'E': 7, - 'F': 8, - 'F#': 9, - 'Gb': 9, - 'G': 10, - 'G#': 11, - 'Ab': 11 - }; - - root.number2float = { - 0: 0, - 1: 0.5, - 2: 1, - 3: 2, - 4: 2.5, - 5: 3, - 6: 3.5, - 7: 4, - 8: 5, - 9: 5.5, - 10: 6, - 11: 6.5, - 12: 7 - }; - - root.number2key = invertObject(root.key2number); - root.float2number = invertObject(root.number2float); - - root.getKeySignature = function (key) { - var keys = [ 'A', 'AB', 'B', 'C', 'CD', 'D', 'DE', 'E', 'F', 'FG', 'G', 'GA' ]; - var accidental = [ 'F', 'C', 'G', 'D', 'A', 'E', 'B' ]; - var signature = { // key signatures - 'Fb': -8, - 'Cb': -7, - 'Gb': -6, - 'Db': -5, - 'Ab': -4, - 'Eb': -3, - 'Bb': -2, - 'F': -1, - 'C': 0, - 'G': 1, - 'D': 2, - 'A': 3, - 'E': 4, - 'B': 5, - 'F#': 6, - 'C#': 7, - 'G#': 8, - 'D#': 9, - 'A#': 10, - 'E#': 11, - 'B#': 12 - }[key]; - if(signature < 0) { // flat - accidental = accidental.splice(7 + signature, -signature).reverse().join(''); - } else { // sharp - accidental = accidental.splice(0, signature).join(''); - } - for(var i = 0; i < keys.length; i ++) { - if (keys[i].length > 1) { - if (accidental.indexOf(keys[i][0]) != -1 || accidental.indexOf(keys[i][1]) != -1) { - if (signature > 0) { - keys[i] = keys[i][0] + '#'; - } else { - keys[i] = keys[i][1] + 'b'; - } - } else { - keys[i] = keys[i][0] + '#'; - } - } - }; - Piano.keySignature = keys; - }; - - //// TEMPO - - root.tempoFromTap = function(that) { - function getName(v) { - var tempo = { // wikipedia - 200: 'Prestissimo', - 168: 'Presto', - 140: 'Vivace', - 120: 'Allegro', - 112: 'Allegretto', - 101: 'Moderato', - 76: 'Andante', - 66: 'Adagio', - 60: 'Larghetto', - 40: 'Lento', - 0: 'Larghissimo' - }; - for (var n = 0, name = ""; n < 250; n ++) { - if (tempo[n]) name = tempo[n]; - if (v < n) return name; - } - return 'Prestissimo'; - }; - if (that.tap) { - var diff = (new Date()).getTime() - that.tap; - var c = 1 / (diff / 1000) * 60; - Piano.tempo = c; - console.log(getName(c), c, diff) - document.getElementById("taptap").value = (c>>0) +"bmp " + getName(c); - } - that.tap = (new Date()).getTime(); - }; - - //// CHORD FINDER - - root.findChord = function(r) { - function rewrite(o) { - var z = {}; - for (var i in o) { - var r = {}; - for (var ii in o[i]) { - r[o[i][ii]] = 1; - } - z[i] = r; - } - return z; - }; - var test = {}; - var values = "0 3".split(' '); - var chords = rewrite(Piano.chords); - for (var key in chords) { - for (var n = 0, length = values.length; n < length; n ++) { - if (isNaN(chords[key][values[n]])) { - test[key] = 1; - break; - } - } - } - var results = []; - for (var key in chords) { - if (!test[key]) results.push(key); - } - document.getElementById("find").value = results; - return results; - }; - - ///// CHORD INFORMATION - - root.scaleInfo = function(o) { - var intervalNames = [ 'r', 'b2', '2', 'b3', '3', '4', 'b5', '5', '♯5', '6', 'b7', '7', '8', 'b9', '9', '♯9', '10', '11', 'b12', '12', '♯12', '13' ]; // Interval numbers - var notes = '', - intervals = '', - gaps = '', - solfege = '', - // colors = '', - keys = ''; - for (var i in o) { - if (o[i] > 0) { - gaps += '-' + (o[i] - key); - } - var key = o[i]; - var note = Piano.calculateNote(key) % 12; - var noteName = Piano.keySignature[note]; - var color = Piano.Color[Piano.HSL].english[note]; - solfege += ', ' + MusicTheory.Solfege[noteName].syllable; - // colors += ', ' + (color[0] ? color[0].toUpperCase() + color.substr(1) : 'Undefined'); - keys += ', ' + key; - notes += ', ' + noteName; - intervals += ', ' + intervalNames[key]; - } - console.log( - 'notes: ' + notes.substr(2) + '
' + - 'solfege: ' + solfege.substr(2) + '
' + - 'intervals: ' + intervals.substr(2) + '
' + - 'keys: ' + keys.substr(2) + '
' + - 'gaps: ' + gaps.substr(1) - ); - }; - -})(); \ No newline at end of file