ABPro2017

2017/09/16
ABPro 2017で「曲名知恵袋」という内容で発表してきました.

 

「あの曲なんだっけ…?」という時,最近はSoundHound歌っちゃお検索といった便利なアプリが出ていますが,歌うのはちょっと…とか音の高さ分からなくて弾けない…という人もいますよね.

 

そういう時にYahoo! 知恵袋で検索すると,すごい人がさらっと曲名を返してくれます.

corobuzz.com

私もこれがやりたかったので作りました.
(ちなみにネタが固まったのは2か月前くらいですが作り始めたのは4,5日前です)

 

完成版はこんな感じです.

f:id:knsgvcl:20170918200703p:plain

フレーズは数字で入力していきます.若干暗号っぽさがありますがMuseScoreのショートカットキーを参考にしています.

f:id:knsgvcl:20170918200733p:plain

質問はひらがなで入力していきます.「た」「ん」「ー」の他,「あ」「か」「ら」「り」「っ」は使えるので,「たかたかたんっ」とか「たらりら」とかも一応反応します.

f:id:knsgvcl:20170918201728p:plain

登録してある曲にヒットすると回答がつきます.この中からベストアンサーを選びます.

f:id:knsgvcl:20170918200818p:plain

f:id:knsgvcl:20170918200841p:plain

今年もなんとか発表できてよかったです.

他の方々の発表もどれも面白くて楽しかったです!

 

<実装について>

最近書いていた別のプログラムが流用できそうだなと思ったのでJSと,授業で習ったSQLiteが使えそうだなと思ったのでPHPで書き始めました.B2の頃の授業資料や作ったものを引っ張り出して読み直すところから始めました.

途中でJSからPHPに関数ごと移植する事態になって+を.に直すのを忘れたり,while文で無限ループにはまったり,SQLiteの日本語文字化けに苦戦したり,いわゆるおまじない部分のコピペミスで前日の17時まで動かずエラー吐きまくったりしてました.


検索部分は,ひらがなで入力された音符や休符の長さを文字数に合わせて数字に変換し,1~7の数字の値を増やしながらデータと照合しています.今回のデータは音楽テーマ事典 第1巻管弦楽曲から抜粋しました.

例.
「たたたんたたたん」→「1111011110」
「1111011110」で検索:ヒットなし(64分音符3つ+64分休符1つの繰り返し)
「2222022220」で検索:ヒットなし(32分音符3つ+32分休符1つの繰り返し)

「4444044440」で検索:アイネとラデツキーがヒット(8分音符3つ+8分休符1つの繰り返し)

そのため,長さを正確に入力するか検索する音符数を減らした方が回答が付きやすくなっています.

「っ」に関しては,その前が休符なら休符の長さをのばす処理,前が音符なら休符に変換する処理をしています.