Show chord diagrams on j-total

  • /*
     * @title Show chord diagrams on j-total
     * @description マウスオーバーでコード表示
     * @include http://music.j-total.net/data/*
     * @license MIT License
     * @require 
     */
    (function(){
      var chords = document.querySelectorAll('tt a[href]');
      Array.prototype.forEach.call(chords, function (elm) {
        elm.addEventListener('mouseover', function () {
          showchord(elm, elm.href);
        }, false);
        elm.addEventListener('mouseleave', function () {
          setTimeout(function () {
            if (elm.hasChildNodes()) {
              for (var i = 1; i < (elm.childNodes.length); i++) {
                elm.removeChild(elm.childNodes[i]);
              }
            }
          }, 1500);
        }, false);
      });
      function showchord(e, c){
        var chord_list = {
          'C$': 'C$_D$$',
          'D&': 'C$_D$$',
          'D$': 'D$_E$$',
          'E&': 'D$_E$$',
          'F$': 'F$_G$$',
          'G&': 'F$_G$$',
          'G$': 'G$_A$$',
          'A&': 'G$_A$$',
          'A$': 'A$_B$$',
          'B&': 'A$_B$$',
          // m chord
          'C$m': 'C$m_D$$m',
          'D&m': 'C$m_D$$m',
          'D$m': 'D$m_E$$m',
          'E&m': 'D$m_E$$m',
          'F$m': 'F$m_G$$m',
          'G&m': 'F$m_G$$m',
          'G$m': 'G$m_A$$m',
          'A&m': 'G$m_A$$m',
          'A$m': 'A$m_B$$m',
          'B&m': 'A$m_B$$m',
          // add 9th
          'C$add9': 'C$add9_D$$add9',
          'D&add9': 'C$add9_D$$add9',
          'D$add9': 'D$add9_E$$add9',
          'E&add9': 'D$add9_E$$add9',
          'F$add9': 'F$add9_G$$add9',
          'G&add9': 'F$add9_G$$add9',
          'G$add9': 'G$add9_A$$add9',
          'A&add9': 'G$add9_A$$add9',
          'A$add9': 'A$add9_B$$add9',
          'B&add9': 'A$add9_B$$add9',
          // 7th
          'C$7': 'C$7_D$$7',
          'D&7': 'C$7_D$$7',
          'D$7': 'D$7_E$$7',
          'E&7': 'D$7_E$$7',
          'F$7': 'F$7_G$$7',
          'G&7': 'F$7_G$$7',
          'G$7': 'G$7_A$$7',
          'A&7': 'G$7_A$$7',
          'A$7': 'A$7_B$$7',
          'B&7': 'A$7_B$$7',
          // M7
          'C$mag7': 'C$mag7_D$$mag7',
          'D&mag7': 'C$mag7_D$$mag7',
          'D$mag7': 'D$mag7_E$$mag7',
          'E&mag7': 'D$mag7_E$$mag7',
          'F$mag7': 'F$mag7_G$$mag7',
          'G&mag7': 'F$mag7_G$$mag7',
          'G$mag7': 'G$mag7_A$$mag7',
          'A&mag7': 'G$mag7_A$$mag7',
          'A$mag7': 'A$mag7_B$$mag7',
          'B&mag7': 'A$mag7_B$$mag7',
          // minor 7
          'C$m7': 'C$m7_D$$m7',
          'D&m7': 'C$m7_D$$m7',
          'D$m7': 'D$m7_E$$m7',
          'E&m7': 'D$m7_E$$m7',
          'F$m7': 'F$m7_G$$m7',
          'G&m7': 'F$m7_G$$m7',
          'G$m7': 'G$m7_A$$m7',
          'A&m7': 'G$m7_A$$m7',
          'A$m7': 'A$m7_B$$m7',
          'B&m7': 'A$m7_B$$m7',
          // dim
          'C$dim': 'C$dim_D$$dim',
          'D&dim': 'C$dim_D$$dim',
          'D$dim': 'D$dim_E$$dim',
          'E&dim': 'D$dim_E$$dim',
          'F$dim': 'F$dim_G$$dim',
          'G&dim': 'F$dim_G$$dim',
          'G$dim': 'G$dim_A$$dim',
          'A&dim': 'G$dim_A$$dim',
          'A$dim': 'A$dim_B$$dim',
          'B&dim': 'A$dim_B$$dim',
          // minor 7 -5
          'C$m7&5': 'C$m7&5_D$$m7&5',
          'D&m7&5': 'C$m7&5_D$$m7&5',
          'D$m7&5': 'D$m7&5_E$$m7&5',
          'E&m7&5': 'D$m7&5_E$$m7&5',
          'F$m7&5': 'F$m7&5_G$$m7&5',
          'G&m7&5': 'F$m7&5_G$$m7&5',
          'G$m7&5': 'G$m7&5_A$$m7&5',
          'A&m7&5': 'G$m7&5_A$$m7&5',
          'A$m7&5': 'A$m7&5_B$$m7&5',
          'B&m7&5': 'A$m7&5_B$$m7&5',
          // augumented
          'C$aug': 'C$aug_D$$aug',
          'D&aug': 'C$aug_D$$aug',
          'D$aug': 'D$aug_E$$aug',
          'E&aug': 'D$aug_E$$aug',
          'F$aug': 'F$aug_G$$aug',
          'G&aug': 'F$aug_G$$aug',
          'G$aug': 'G$aug_A$$aug',
          'A&aug': 'G$aug_A$$aug',
          'A$aug': 'A$aug_B$$aug',
          'B&aug': 'A$aug_B$$aug',
          // M7 sus 4
          'C$7sus4': 'C$7sus4_D$$7sus4',
          'D&7sus4': 'C$7sus4_D$$7sus4',
          'D$7sus4': 'D$7sus4_E$$7sus4',
          'E&7sus4': 'D$7sus4_E$$7sus4',
          'F$7sus4': 'F$7sus4_G$$7sus4',
          'G&7sus4': 'F$7sus4_G$$7sus4',
          'G$7sus4': 'G$7sus4_A$$7sus4',
          'A&7sus4': 'G$7sus4_A$$7sus4',
          'A$7sus4': 'A$7sus4_B$$7sus4',
          'B&7sus4': 'A$7sus4_B$$7sus4',
          // 6th
          'C$6': 'C$6_D$$6',
          'D&6': 'C$6_D$$6',
          'D$6': 'D$6_E$$6',
          'E&6': 'D$6_E$$6',
          'F$6': 'F$6_G$$6',
          'G&6': 'F$6_G$$6',
          'G$6': 'G$6_A$$6',
          'A&6': 'G$6_A$$6',
          'A$6': 'A$6_B$$6',
          'B&6': 'A$6_B$$6'
        };
        var this_chord = c.replace(/.+\/(.*)\.html\'\);$/, '$1');
        if (/[$&]+/g.test(this_chord)){
          this_chord = chord_list[this_chord];
        }
        if (!this_chord) return;
        var x = new XMLHttpRequest();
        x.open('GET', '/cd/img/' + this_chord + '.gif');
        x.responseType = 'blob';
        x.onload = function(){
          if (this.status == 200) {
            var blob = this.response;
            var img = document.createElement('img');
            img.onload = function () {
              window.URL.revokeObjectURL(img.src);
            };
            img.src = window.URL.createObjectURL(blob);
            if (e.childNodes.length < 2) {
              e.appendChild(img);
            }
          }
        };
        x.send();
      }
    })();
    
    /* checked @  1444824000
      http://music.j-total.net/data/032mi/009_Mr_Children/013.html
    */
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2015/10/14 21:03:47 - 2015-10-14
  2. 2015/10/13 00:02:02 - 2015-10-13
  3. 2015/10/13 00:00:20 - 2015-10-13
  4. 2015/10/12 23:58:19 - 2015-10-12