Backend for songs.zachdecook.com
Diffstat (limited to 'laravel/resources/js/page.js')
| -rw-r--r-- | laravel/resources/js/page.js | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/laravel/resources/js/page.js b/laravel/resources/js/page.js new file mode 100644 index 0000000..b7a89f7 --- /dev/null +++ b/laravel/resources/js/page.js @@ -0,0 +1,112 @@ +/** + * @brief page.js tries to improve pageload speeds + * by processing client-side. + * @author Zach DeCook (zjd7calvin) + * @date 12, February 2017 + * requires jQuery + */ + +/** + * @brief zj_transpose2 transposes a line + */ +function zj_transpose2( line, transp ) +{ + var newchords = zj_transparray( transp ); + var newline = ''; + var space = 0; ///@< Spaces that need to be added or removed. + for(var i = 0; i < line.length; i++) + { + var chari = line[i]; + var nchar = line[i+1]; + var upchar = line[i].toUpperCase(); + var cval = upchar.charCodeAt(0); + // A-G + if( cval <= 71 && cval >=65 ) + { + // Exception for Cmaj7 + if( upchar == 'A' && nchar == 'j' ) + { + newline += chari; + } + else if( nchar == 'b' || nchar =='#') + { + i++; //We have read an extra character now. + var newchord = newchords[upchar + nchar]; + if( newchord.length == 1 ) + { + // Need to insert an extra space. + space += 1; + } + newline += newchord; + } + else + { + var newchord = newchords[upchar]; + if( newchord.length == 2 ) + { + // Need to remove an extra space. + space -= 1; + } + newline += newchord; + } + } + else if ( chari == ' ' ) + { + if( space >= 0) + { + for (var j = 0; j <= space; j++) + { + newline += ' '; + } + space = 0; + } + else + { + // Only balance negative spaces if one will be left remaining + if( nchar == ' ' ) + { + i++; + space += 1; + } + newline += ' '; + } + } + else + { + newline += chari; + } + } + return newline; +} + +function zj_transparray( transp ) +{ + var chords = + ["C","C#","D","D#","E","F","F#","G","G#","A","Bb","B" ]; + var newchords = []; + // Create array to map old chords to new ones + for (var i=0; i < 12; i++) + { + newchords[chords[i]] = chords[(i+transp+12)%12]; + } + newchords["Db"] = newchords["C#"]; + newchords["Eb"] = newchords["D#"]; + newchords["Gb"] = newchords["F#"]; + newchords["Ab"] = newchords["G#"]; + newchords["A#"] = newchords["Bb"]; + return newchords; +} + +function transpadd( fromkey, integer ) +{ + var chords = {C:0, Db:1, D:2, Eb:3, E:4, F:5, Gb:6, G:7, Ab:8, A:9, Bb:10, B:11}; + chords["C#"] = chords["Db"]; + chords["D#"] = chords["Eb"]; + chords["F#"] = chords["Gb"]; + chords["G#"] = chords["Ab"]; + chords["A#"] = chords["Bb"]; + var ochords = [ "C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B" ]; + + var val = ochords[(parseInt(chords[fromkey]) + integer + 24)%12]; + return val; +} |