指回りスキル判定ゲームのプログラム化

上のエントリで言及したゲームについて。
リコーダーJP 「指回りスキル」判定ゲーム

こういうのをプログラム化するとゲームとして楽しめるし、わかりやすい学習の目安も作れるんじゃないだろうか。基本的にはカラオケの採点と同じではあるんだけど、事前に習熟した専門家が複数段階のレベル設定をしておくことの意義が大きい。

言ってしまえばリアル音ゲーか。

似たような・・・というかそのものずばりの機能を持つソフトで楽譜作成ソフトFinaleに付属するFinale Performance Assessment(FPA)っていうものがある。でも、これは本当にかっちりした学習支援システムでゲーム的要素に欠ける。


僕はレベルアップがしたいんだよ!


そんなわけでそういうものを作るために必要なことを考えてみる。

マイクからの入力を取得

ユーザが演奏する音をリアルタイムにプログラムで処理できるようにデータ列を受け取れないとしょうがない。まぁググればすぐ見つかるんでないかな。

音のデータ列→周波数領域→そして音階へ

一つ目の変換はフーリエ変換とかスペクトラムアナライザとかでググればすぐ出てくるんじゃないかね。よくある話だし。たぶんそのものずばりのライブラリもごろごろある。500Hzが楽譜上の何の音かっていう変換もたぶんすぐ出てくるよね。

楽譜の組版

ユーザが演奏できるように楽譜を表示しないといけない。柔軟性を考えればmidiファイルから楽譜を生成するのが良いと思うが、本気でやろうとすると面倒なことになりそうだし、これはググっても出てこないだろう。

MIDIファイルの分析

上に関連してmidiファイルのフォーマットの理解が必要になりそう。これもそういうライブラリがあるといいけど、MIDIフォーマットを知っておいても損はないだろう。

楽譜の調達とレベル設定

プログラムから離れて根本的な部分。楽譜をどっから取ってくるか、レベルをどのように設定するか。出せる音域の問題もあるので、とりあえず楽器はリコーダーと限定してしまうのが良いだろう。


こんなとこかね。
これはなかなか大変そうだ。