「ドッ ドッ ドリドリ ドドドド ドリランド」で遊ぶ | 忘れたらググればいい

2012年2月25日土曜日

「ドッ ドッ ドリドリ ドドドド ドリランド」で遊ぶ

元ネタ

ドッ ドッ ドリドリ ドドドド ドリランド
ドッ ドッ ドリドリ ドドドド ドリランド ...
Chrome と Firefox でしか動きません.@mohayonaoさん作成.

音階で入力したい

こういうのはリズムを楽しむものだと思うけど,そこを無理矢理音階を奏でてみたい,と思うのが世の常.

「ドッ ドッ ドリドリ ドドドド ドリランド」のルール

ちゃんと明記されているわけじゃないけど,ソースを適当に眺めた感じ,たぶんこんなルール.

  • 「ド」「リ」「ラ」「ン」「ッ」が使える.「ッ」は休止.
  • 「ドッドッ」「ドッ」「ンド」「ドリランド」は特別.
  • "|" が入るとそれ以降はループ.
  • "+"が入ると再生速度が上がり,"-"が入ると再生速度が下がる.ただし,「ッ」の長さは不変?
  • 再生速度はデフォルトを1.0として,"+"や"-"1文字に対して0.1ずつ変化する.最低は0.5で最高は2.0.

ド+ド+ド+ド+ド+ド+ド+ド+ド+ド+」は,0.1ずつ再生速度が上がるので,音が高くなりつつ「ド」がどんどん短かくなる.

再生速度と音階の関係

一般的に,再生速度が上がると音の高さが上がり,下がると低くなる. 以下のサイトを参考にすれば,(音階の) 「ド」を1.0とすると,「レ」は1.122462048,「ミ」は1.25992105, 「ファ」は1.334839854,「ソ」は1.498307077,「ラ」は1.681792831,「シ」は1.887748625,一個上の「ド」は2になる.

 音程と再生速度の関係

最初は基底の「ド」を1.0にしようとしたんだけど,「ファ」がずれてて違和感があるので, 基底の「ド」を0.8とした.ちなみに,0.8を基準にすると,0.8→1,0.9→1.125,1.0→1.25,1.1→1.375,1.2→1.5,1.3→1.625,1.4→1.75,1.5→1.875,1.6→2.0となる. また,音階が上がるほど音が短くなっちゃうので,「ッ」を入れて長さを調節した.

これに基づき変換ルールを作成.

変換ルール (四分音符)

  • 「ド」→「--ドッ++」(0.8)
  • 「レ」→「-ドッッ+」(0.9)
  • 「ミ」→「ドッッ」(1.0)
  • 「ファ」→「+ドッッ-」(1.1)
  • 「ソ」→「++ドッッ--」(1.2)
  • 「ラ」→「+++ドッッ---」(1.3)
  • 「シ」→「+++++ドッッ-----」(1.5)
  • 「ドu」→「++++++ドッッ------」(1.6)

変換ルール (八分音符)

  • 「ド8」→「--ドッ++」(0.8)
  • 「レ8」→「-ドッ+」(0.9)
  • 「ミ8」→「ドッ」(1.0)
  • 「ファ8」→「+ドッ-」(1.1)
  • 「ソ8」→「++ドッ--」(1.2)
  • 「ラ8」→「+++ドッ---」(1.3)
  • 「シ8」→「+++++ドッ-----」(1.5)
  • 「ドu8」→「++++++ドッ------」(1.6)

休符

  • 「休」→「ッ」

このルールに基づくと,「ドレミファミレド休ミファソラソファミ休ド休ド休ド休ド休ドレミファミレド」は 「--ドッ++-ドッッ+ドッッ+ドッッ-ドッッ-ドッッ+--ドッ++ッドッッ+ドッッ-++ドッッ--+++ドッッ---++ドッッ--+ドッッ-ドッッッ--ドッ++ッ--ドッ++ッ--ドッ++ッ--ドッ++ッ--ドッ++-ドッッ+ドッッ+ドッッ-ドッッ-ドッッ+--ドッ++」に変換される.

dorimusic

以上の工程をjavascriptで作って遊んでた. 最近,githubのアカウントを作ったのでせっかくなので公開する.

fukubaya/dorimusic - GitHub
はじめてのプロジェクトだ…。

たいして長いコードじゃないので,ここにも貼れるけどね....

/*
 * dorimusic.js
 * 
 * Created by FUKUBAYASHI Yuichiro on 2012/02/25
 * Copyright (c) 2012, FUKUBAYASHI Yuichiro
 *
 * last update: <2012/02/25 20:54:26>
 */
DORIMUSIC = {      
  table : [
    ['ドu8','++++++ds------'],
    ['シ8','+++++ds-----'],
    ['ラ8','+++ds---'],
    ['ソ8','++ds--'],
    ['ファ8','+ds-'],
    ['ミ8','ds'],
    ['レ8','-ds+'],
    ['ド8','--ds++'],

    ['ドu','++++++dss------'],
    ['シ','+++++dss-----'],
    ['ラ','+++dss---'],
    ['ソ','++dss--'],
    ['ファ','+dss-'],
    ['ミ','dss'],
    ['レ','-dss+'],
    ['ド','--ds++'],
    
    ['休','s']
  ],

  replace_code : function(text,d) {
    var result = text, base=d;

    if(base != 'ド' && base != 'リ' && base != 'ラ' && base != 'ン' && base != 'ド'){
      base = 'ド';
    }

    for(var i=0;i -1){
      result = result.replace("+-","");          
    }
    while(result.indexOf("-+") > -1){
      result = result.replace("-+","");          
    }
    
    return result;
  }
};

一応「ド」以外にも「リ」「ラ」「ン」を使えたり,"++--" のような無意味な部分を取り除くようにしてある.

曲を作ってみた

きらきら星

ちょっとはましになったかな? http://t.co/Hh1lXtkL2012年2月25日 19:0 via Tweet Button

かえるのうた

むすんでひらいて

新曲をリリース.4分音符と8分音符に対応. | http://t.co/Fh4h6XcX2012年2月25日 19:51 via Tweet Button

大きなくりの木の下で

土曜日だと言うのにこんなネタだけで数時間遊んじゃたよ...