7月 2013 | 忘れたらググればいい

2013年7月5日金曜日

ももクノメーカーを作ってみた

ももクノメーカー

名前を元にランダムにセットリストを作る.

ももクノメーカー

こんなのができる.

ももクノとは?

1公演60分という時間制限の設けられたライブとなっている。ステージ上にはタイマーが設置され60分を超えると歌唱中であっても強制終了というルールのもとで行われる(最初と最後のトークは時間に含まれない)。(中略) かつての持ち歌(他アーティストのカバー曲)を披露したり、ソロ曲を他メンバーが歌唱するなど、通常のライブとは異なる趣向のセットリストが組まれる。

独占!ももクノ60分 - Wikipedia

重要なことが書いてないけど,セットリスト(曲順)はメンバー自身(とお客さん)が決める, さらに60分にはセットリストを決める時間も含まれる. だから時間内に収まるセットリストであっても,決めるのに時間がかかると時間オーバーしてしまう.

こっちのが分かりやすいかも.

七夕に富士急で開催決定『独占!ももクノ60分』(^_^)『ももクノ』ってどんなライブ?? : ももクロ侍

特徴

ちゃんと時間を計算する

曲決めにかかった時間(乱数で決定),各曲の演奏時間,MCにかかる時間(2分固定)を算出して,1時間以内に終わったかどうかを判定する. 当初は診断メーカーで作ろうと思っていたが,診断メーカーではリストを作るだけなら可能だが, 合計時間の算出ができないので,自前で作った.

それなりに真面目に乱数を計算する

javascriptの Math.random() はseedを与えられないので, 診断メーカーのように,名前をseedにして特定の乱数列を作ることができない. なので,Webを参考にXorshiftで乱数を生成している.

また,曲決めの時間も適当な範囲での一様分布から決めてもよいが, それでは面白くないので,平均と標準偏差を指定して正規分布からサンプリングして決めている. ちなみに,平均615秒,標準偏差60秒としている.

レア曲の出現頻度を下げる

一応,候補曲は公式リスト(金沢や沖縄で配布されたもの)+5次元+αとしているが, かなりレアな曲も含まれている. そのまま等確率で選択すると,現実味がなくなるので,レア曲は選択確率を下げている. ちなみにレア曲かどうか,選択確率の設定は独自判断.

ライブラリ

githubに置いた.pull request歓迎.特に演奏時間や,曲名の略し方.

fukubaya/momokuno