diff options
author | Ben Burwell <ben@benburwell.com> | 2015-08-02 17:33:25 -0400 |
---|---|---|
committer | Ben Burwell <ben@benburwell.com> | 2015-08-02 17:33:25 -0400 |
commit | 17470146704846137bf09723d403a5650208ba28 (patch) | |
tree | 798fb7c7f10282be06f85814e20ba062a9d6f635 /src/utils.js | |
parent | 3788738f88b3aed5ced113aa4c455a0d25d8b84e (diff) | |
parent | 3d0f989cee9d7c426c759588539dd06c14fa70ea (diff) |
Merge pull request #2 from benburwell/mvp
Minimum Viable Product
Diffstat (limited to 'src/utils.js')
-rw-r--r-- | src/utils.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..4dc3458 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,81 @@ +module.exports = { + // Take some solfege input and normalize it + normalize: function(str) { + var tokens = str.toLowerCase().split(/\s+/); + var normalized = ''; + var table = { + 'do': 'a', + 'do+': 'b', + 'do#': 'b', + 'doh': 'a', + 'doh+': 'b', + 'doh#': 'b', + 're-': 'b', + 'reb': 'b', + 're': 'c', + 're+': 'd', + 're#': 'd', + 'mi-': 'd', + 'mib': 'd', + 'mi': 'e', + 'fa': 'f', + 'fa+': 'g', + 'fa#': 'g', + 'so-': 'g', + 'sob': 'g', + 'so': 'h', + 'so+': 'i', + 'so#': 'i', + 'sol-': 'g', + 'solb': 'g', + 'sol': 'h', + 'sol+': 'i', + 'sol#': 'i', + 'la-': 'i', + 'lab': 'i', + 'la': 'j', + 'la+': 'k', + 'la#': 'k', + 'ti-': 'k', + 'tib': 'k', + 'ti': 'l', + 'si-': 'k', + 'sib': 'k', + 'si': 'l' + }; + + for (var i = 0; i < tokens.length; i++) { + if (table[tokens[i]]) { + normalized += table[tokens[i]]; + } + } + + return normalized; + }, + + // Take some solfege from the DB and translate it back + // to something readable + denormalize: function(str) { + var table = { + 'a': 'do', + 'b': 'do+', + 'c': 're', + 'd': 're+', + 'e': 'mi', + 'f': 'fa', + 'g': 'fa+', + 'h': 'so', + 'i': 'so+', + 'j': 'la', + 'k': 'la+', + 'l': 'ti' + }; + var ret = ''; + + for (var i = 0; i < str.length; i++) { + ret += table[str.charAt(i)] + ' '; + } + + return ret.trim(); + } +}; |