以下、図面を参照して本発明の実施形態について説明する。
[演奏装置1の概要]
図1は本発明の第1の実施形態に係る演奏装置1の概要を説明するための図であり、図1(a)は演奏装置1のシステム構成を示す図、同図(b)はユーザの演奏動作と仮想ドラムセットDとの位置関係を示す図である。
本実施形態における演奏装置1は、エア楽器として「エアドラム」を演奏するための装置である。この演奏装置1は、スティック部10A、10Bと、カメラユニット部20と、センターユニット部30と、モニタ部40とを備えて構成される。
なお、本実施形態では、2本のスティックを用いた仮想的なドラム演奏を想定しているため、2つのスティック部10A、10Bを備える。しかし、スティック部の数は、これに限られず、1つとしてもよく、3つ以上としてもよい。以下では、スティック部10A、10Bを区別しない場合には、両者を総称して「スティック部10」と呼ぶ。
スティック部10は、長手方向に延びるスティック状の部材からなる。このスティック部10は、演奏者の操作に応じてエア楽器の演奏指示が発せられる演奏部材として用いられる。演奏者であるユーザは、スティック部10の一端(根元側)を持ち、手首などを中心としたスティック部10の振り上げ/振り下ろしの演奏動作によりエアドラムの演奏を行う。
このようなスティック部10を用いた演奏者の演奏動作を検出するため、スティック部10の他端(先端側)には、加速度センサなどの各種センサが設けられている(後述のモーションセンサ部14)。スティック部10は、これらのセンサによって検出された演奏者の演奏動作に基づいて、センターユニット部30にノートオンイベントを送信する。
また、スティック部10の先端側には、マーカー部15(図2参照)が設けられている。このマーカー部15は、LED(light emitting diode)等の発光体からなり、スティック部10の動きを検出するために用いられる。
カメラユニット部20は、光学式のカメラ(撮像装置)からなり、スティック部10を用いてエアドラムを演奏する演奏者を所定のフレームレートで撮影する。より詳しくは、カメラユニット部20は、演奏者が持つスティック部10が存在する撮像空間を撮影する。カメラユニット部20は、その撮影画像からスティック部10の先端部に設けられたマーカー部15の位置座標を特定し、センターユニット部30に送信する。
センターユニット部30は、演奏装置1の制御本体に相当する。センターユニット部30は、スティック部10からノートオンイベントを受信すると、受信時のマーカー部15の位置座標データに応じて所定の楽音を発生する。具体的には、センターユニット部30は、カメラユニット部20の撮像空間に対応付けて、図1(b)に示す仮想ドラムセットDの位置座標データを記憶しており、当該仮想ドラムセットDの位置座標データとノートオンイベント受信時のマーカー部15の位置座標データとに基づいて、スティック部10が叩いた楽器を特定し、その楽器に対応する楽音を発生する。
また、モニタ部40の画面には、カメラユニット部20によって撮影された演奏中のユーザと仮想ドラムセットDとが合成表示される。ユーザはこのモニタ部40の画面を見ながら、仮想ドラムセットDを構成する各楽器に対応する位置をスティック部10で叩いて演奏することができる。
なお、ここで言う「楽器」とは、スティックで叩いて音を鳴らす楽器つまり打楽器(ドラムセットのシンバル,タム等)のことである。また、図1に示したモニタ部40はセンターユニット部30に任意接続である。演奏中に仮想ドラムセットDの各楽器の位置を確認する必要がなければ、モニタ部40は不要である。
以下、演奏装置1の構成ついて具体的に説明する。
[スティック部10の構成]
図2は演奏装置1のスティック部10のハードウェア構成を示すブロック図、図3はスティック部10の外観構成を示す斜視図である。
スティック部10は、CPU11と、ROM12と、RAM13と、モーションセンサ部14と、マーカー部15と、データ通信部16とを備える。
CPU11は、スティック部10に関する制御として、後述する姿勢検知、ショット検出及びアクション検出などを行う。また、CPU11は、データ通信部16を介してセンターユニット部30との間の通信制御を行う。
ROM12には、CPU11が実行する各種処理に対応したプログラム12aとマーカー特徴情報12bが記憶されている。ここで、本実施形態では、エアドラムの演奏に2本のスティック部10A,10Bを用いるため、スティック部10Aのマーカー部15(第1マーカー)と、スティック部10Bのマーカー部15(第2マーカー)とを区別する必要がある。
マーカー特徴情報12bは、この第1マーカーと第2マーカーとを区別するための情報であり、例えば発光時の形状、大きさ、色相、彩度、輝度、発光時の点減スピードなどが規定されている。スティック部10Aとスティック部10Bでは、CPU11がそれぞれに異なるマーカー特徴情報12bをROM12から読み出してマーカー部15の発光制御を行う。
RAM13は、モーションセンサ部14が出力した各種センサ値など、CPU11の処理において取得又は生成されたデータを記憶する。
モーションセンサ部14は、スティック部10の状態を検出するための各種センサからなり、所定のセンサ値を出力する。ここで、モーションセンサ部14を実現するためのセンサとしては、例えば加速度センサ、角速度センサ、磁気センサなどを用いることができる。
(加速度センサ)
加速度センサとしては、X軸、Y軸、Z軸の3つの軸方向の夫々に生じた加速度を出力する3軸センサを用いることができる。図3に示すように、スティック部10の長手方向の軸と一致する軸をY軸とし、加速度センサが配置された基板(図示せず)と平行で、かつ、Y軸と直交する軸をX軸とし、X軸及びY軸と直交する軸をZ軸とすることができる。このとき、加速度センサは、X軸、Y軸、Z軸の夫々の成分の加速度を取得するとともに、夫々の加速度を合成したセンサ合成値を算出することとしてもよい。
ここで、演奏者はスティック部10の一端(根元側)を保持し、手首や腕などを中心とした振り上げ/振り下ろし動作を行う。スティック部10が静止している場合には、加速度センサは、センサ合成値として重力加速度1Gに相当する値を算出する。スティック部10が動いている場合には、加速度センサは、当該動きの加速度と重力加速度1Gとのセンサ合成値を算出する。
なお、センサ合成値は、例えばX軸、Y軸、Z軸の成分の加速度の夫々の2乗の総和の平方根を算出することで得られる。
(角速度センサ)
角速度センサとしては、例えばジャイロスコープを備えたセンサを用いることができる。ここで、図3を参照して、角速度センサは、スティック部10のY軸方向の回転角301やスティック部10のX軸方向の回転角311を出力する。
Y軸方向の回転角301は、演奏者がスティック部10を持ったとき、演奏者からみた前後軸の回転角であり、ロール角と称することができる。ロール角は、X−Y平面が、どの程度X軸に対して傾けられたかを示す角度302に対応し、演奏者がスティック部10を手に持って、手首を軸にして左右に回転させることにより生じる。
X軸方向の回転角311は、演奏者がスティック部10を持ったとき、演奏者からみた左右軸の回転角であり、ピッチ角と称することができる。ピッチ角は、X−Y平面が、どの程度Y軸に対して傾けられたかを示す角度312に対応し、演奏者がスティック部10を手に持って、手首を上下方向に振ることにより生じる。
なお、図示は省略しているが、角速度センサは、Z軸方向の回転角も併せて出力することとしてもよい。このとき、Z軸方向の回転角は、基本的にはX軸方向の回転角311と同じ性質を有し、演奏者がスティック部10を手に持って、手首を左右方向に振ることにより生じるピッチ角である。
(磁気センサ)
磁気センサとしては、図3に示すX軸、Y軸、Z軸の3軸方向の磁気センサ値を出力可能なセンサを用いることができる。このような磁気センサからは、磁石による北(磁北)を示すベクトルが、X軸方向、Y軸方向、Z軸方向の夫々について出力される。出力される各軸方向の成分は、スティック部10の姿勢(向き)によって異なる。このため、これらの成分から、CPU11は、スティック部10のロール角やX軸方向及びZ軸方向の回転角を算出することができる。
モーションセンサ部14(詳細には、モーションセンサ部14からのセンサ値を受け付けたCPU11)は、上述したセンサ値に基づいてスティック部10の動き(演奏者の演奏動作と換言することもできる)を検出する。
加速度センサを例にして説明すると、CPU11は、加速度センサが出力する加速度(又はX軸、Y軸、Z軸のセンサ合成値)に基づいて、スティック部10による仮想的な楽器の打撃タイミング(ショットタイミング)を検出する。また、CPU11は、後述するように、モーションセンサ部14からのセンサ値に基づいて、スティック部10の振り下ろし動作や振り上げ動作を検出する。
図2に戻り、マーカー部15は、スティック部10の先端側に設けられたLEDなどの発光体からなり、CPU11の制御下で発光/消灯する。具体的には、マーカー部15は、CPU11がROM12から読み出したマーカー特徴情報12bに基づいて発光する。この場合、スティック部10Aのマーカー特徴情報12bと、スティック部10Bのマーカー特徴情報12bとは異なるため、カメラユニット部20では、スティック部10Aのマーカー部(第1マーカー)の位置座標と、スティック部10Bのマーカー部(第2マーカー)の位置座標とを区別し取得することができる。
データ通信部16は、少なくともセンターユニット部30との間で所定の無線通信を行う。無線通信は、任意の方法で行うこととしてよく、本実施形態では、赤外線通信によりセンターユニット部30との間での無線通信を行う。
なお、データ通信部16は、カメラユニット部20との間で無線通信を行うこととしてもよく、また、スティック部10A及びスティック部10Bとの間や、モニタ部40との間で無線通信を行うこととしてもよい。また、無線通信として、例えばBluetooth(登録商標)等の近距離無線通信を用いてもよい。
[カメラユニット部20の構成]
図4は演奏装置1のカメラユニット部20のハードウェア構成を示すブロック図である。
カメラユニット部20は、CPU21と、ROM22と、RAM23と、マーカー検出部24と、データ通信部25とを備える。
CPU21は、カメラユニット部20に関する制御として、主として撮影画像からスティック部10A、10Bのマーカー部15(第1マーカー及び第2マーカー)の夫々の位置座標データを算出する制御を行う。また、CPU21は、データ通信部25を介して、算出した位置座標データなどをセンターユニット部30に送信する。
ROM22には、CPU21が実行する各種処理に対応したプログラムが記憶されている。RAM23は、マーカー検出部24が検出したマーカー部15の位置座標データなど、処理において取得又は生成された値を記憶する。また、RAM23には、センターユニット部30から与えられたスティック部10A、10Bの夫々のマーカー特徴情報12bなどが記憶される。
マーカー検出部24は、撮像手段として用いられ、スティック部10を持って演奏動作を行う演奏者の動画を所定のフレームレートで撮影する。また、マーカー検出部24は、フレームごとの画像データをCPU21に出力する。
なお、カメラユニット部20は、撮像空間内におけるスティック部10のマーカー部15の位置座標を特定する機能を備えている。このマーカー部15の位置座標の特定については、マーカー検出部24で行うこととしてもよく、CPU21が行うこととしてもよい。同様に、マーカー部15のマーカー特徴情報12bについても、マーカー検出部24が特定することとしてもよく、CPU21が特定することとしてもよい。
データ通信部25は、少なくともセンターユニット部30との間で所定の無線通信(例えば、赤外線通信)を行う。なお、データ通信部25は、スティック部10やモニタ部40との間で無線通信を行うこととしてもよい。
[センターユニット部30の構成]
図5は演奏装置1のセンターユニット部30のハードウェア構成を示すブロック図である。
センターユニット部30は、演奏装置1の制御装置として用いられる。このセンターユニット部30は、CPU31と、ROM32と、RAM33と、スイッチ操作検出回路34と、表示回路35と、音源装置36と、データ通信部37とを備える。
CPU31は、センターユニット部30に備えられた各機能を実現するための制御を行う。特に、本発明に関わる機能として、CPU31には、第1の移動距離算出検出機能31aと、第2の移動距離算出検出機能31bと、回転検出機能31cと、楽音発生制御部31dと、通知機能31eとを備える。
第1の移動距離算出検出機能31aは、カメラユニット部20のマーカー検出部24によって検出された撮影画像上のマーカー部15の移動距離を算出する。第2の移動距離算出検出機能31bは、スティック部10に設けられたモーションセンサ部14の検出信号に基づいてスティック部10のマーカー部15の移動距離を算出する。
回転検出機能31cは、撮影画像から得られるスティック部10の動きとモーションセンサ部14によって得られるスティック部10の動きとを比較してスティック部10の軸周りの回転状態を検出する。
より詳しくは、回転検出機能31cは、第1の移動距離算出検出機能31aによって算出された撮影画像上のマーカー部15の移動距離から実際の移動距離を求め、その移動距離と第2の移動距離算出検出機能31bによって算出された移動距離とを対応付けて比較して、両者の移動距離が所定値以上異なっている場合にスティック部10が軸周りに回転している状態と判断する。なお、実際には、両者の移動距離の差分を所定のしきい値と比較する等して、両者の移動距離が一致するか否かを判断する。
楽音発生制御部31dは、回転検出機能31cによってスティック部10の軸周りの回転状態が検出された場合に、撮影画像中のスティック部10のマーカー部15の位置座標に基づいてエア楽器に対するスティック部10の位置を判断し、対応する所定の楽音を発生する。
通知機能31eは、楽音発生制御部31dによる楽音の発生に伴い、次の演奏動作に備えてスティック部10が軸周りに回転している旨を演奏者に知らせる。通知方法としては、後述するようにモニタ画面にメッセージ表示を行う方法などがある。
なお、第1の移動距離算出検出機能31aをカメラユニット部20のCPU21またはマーカー検出部24に設けておき、その第1の移動距離算出検出機能31aによって算出された移動距離をセンターユニット部30に送信することでもよい。また、第2の移動距離算出検出機能31bをスティック部10のCPU11に設けておき、その第2の移動距離算出検出機能31bによって算出された移動距離をセンターユニット部30に送信することでもよい。
また、CPU31は、データ通信部37を介して、スティック部10及びカメラユニット部20との間の通信制御を行う。
ROM32は、CPU31が実行する各種処理に対応したプログラム32aを記憶している。また、ROM32には、波形テーブル32bが設けられている。この波形テーブル32bには、種々の音色の波形データ、例えばフルート、サックス、トランペットなどの管楽器、ピアノなどの鍵盤楽器、ギターなどの弦楽器、バスドラム、ハイハット、スネア、シンバル、タムなどの打楽器の波形データが位置座標などと対応付けて記憶されている。CPU31は、ショット検出時(ノートオンイベント受信時)にマーカー部15の位置座標に基づいて、ROM32の波形テーブル32bから該当する波形データを読み出すことで、演奏者の演奏動作に応じた楽音を音源装置36を通じて発生する。なお、波形データは、音源装置36内に備えられた波形ROMから読み出されるように構成しても良い。
RAM33は、スティック部10から受信したスティック部10の状態(ショット検出など)や、カメラユニット部20から受信したマーカー部15の位置座標など、処理において取得・生成された値を記憶する。
スイッチ操作検出回路34は、スイッチ341と接続され、当該スイッチ341を介した入力情報を受け付ける。入力情報としては、例えば、楽音の音量や音色の変更、表示装置351の表示の切り替えなどが含まれる。
また、表示回路35は、表示装置351と接続され、表示装置351の表示制御を行う。表示装置351には、各種メニュー画面の他、カメラユニット部20で撮影された画像とエア楽器の仮想画像との合成画像などが表示される。なお、この表示装置351に表示されるデータを無線通信によりモニタ部40に送って、そのモニタ部40の画面で拡大表示して確認することも可能である。
音源装置36は、CPU31からの指示に従って、ROM32の波形テーブル32bから波形データを読み出して、その波形データから楽音データを生成するとともに当該楽音データをアナログ信号に変換し、図示しないスピーカから出力する。
また、データ通信部37は、スティック部10、カメラユニット部20、モニタ部40との間で所定の無線通信(例えば、赤外線通信)を行う。
ここで、本発明に関する処理を説明する前に、理解を容易にするために、演奏装置1の基本的な動作について説明する。
[スティック部10の処理]
図6は演奏装置1のスティック部10の処理を示すフローチャートである。なお、このフローチャートで示される処理は、スティック部10のCPU11がROM12に記憶されたプログラム12aを読み出すことにより実行される。
まず、スティック部10のCPU11は、ROM12に格納されているマーカー特徴情報12bを読み出す(ステップS11)。この場合、スティック部10A,10BのCPU11が夫々に異なるマーカー特徴情報12bを読み出す。異なるマーカー特徴情報12bの読み出しは、任意の方法で行うことができる。例えば、スティック部10A、10Bが直接又はセンターユニット部30を介して通信することで行うこととしてもよい。また、スティック部10A、10B毎に予め1つのマーカー特徴情報12bを対応付けておき、スティック部10A、10BのCPU11が夫々に対応付けられた独自のマーカー特徴情報12bを読み出すこととしてもよい。
CPU11は、ROM12から読み出したマーカー特徴情報12bをRAM13に一旦格納した後、データ通信部16を介してセンターユニット部30に送信する(ステップS12)。このとき、CPU11は、スティック部10A、10Bを夫々区別可能な識別情報(スティック識別情報)と対応付けて、マーカー特徴情報12bをセンターユニット部30に送信するものとする。
次に、CPU11は、モーションセンサ部14からモーションセンサ情報、すなわち、各種センサが出力するセンサ値を読み出し、RAM13に格納する(ステップS13)。その後、CPU11は、読み出したモーションセンサ情報に基づいて、スティック部10の姿勢検知処理を行う(ステップS14)。姿勢検知処理では、CPU11は、モーションセンサ情報に基づいて、スティック部10の姿勢、例えば、スティック部10の傾き、ロール角及びピッチ角の変位などを検知する。
続いて、CPU11は、モーションセンサ情報に基づいてショット検出処理を行う(ステップS15)。ここで、演奏者がスティック部10を用いて演奏を行う場合、一般には、現実の楽器を演奏する動作と同様の動作を行う。
すなわち、演奏者は、まずスティック部10を振り上げ、それから仮想的な楽器に向かって振り下ろす。そして、スティック部10を仮想的な楽器に打ちつける寸前に、スティック部10の動作を止めようとする力を働かせる。このとき、演奏者は、仮想的な楽器にスティック部10を打ちつけた瞬間に楽音が発生することを想定しているため、演奏者が想定するタイミングで楽音を発生できるのが望ましい。そこで、本実施形態では、演奏者が仮想的な楽器の面にスティックを打ちつける瞬間又はそのわずかに手前に楽音を発生することとしている。
ここで、図7を参照して、スティック部10を用いた楽音の発音タイミングの一例について説明する。
図7はスティック部10を用いて演奏動作を行った場合のモーションセンサ部14の垂直方向の加速度に関する出力の変化を表わした図である。なお、垂直方向の加速度とは、水平面に対する垂直方向の加速度を意味する。これは、Y軸成分の加速度から分解し算出することとしてもよい。あるいは、Z軸方向の加速度(ロール角によってはX軸方向の加速度)から分解し算出することとしてもよい。また、図7において、プラスの加速度は、スティック部10に加わる下向き方向の加速度を示し、マイナスの加速度は、スティック部10に加わる上向き方向の加速度を示す。
スティック部10が静止している状態(aで表わされる部分)であっても、スティック部10には重力加速度が加わっている。このため、静止するスティック部10のモーションセンサ部14は、重力加速度に逆らう形で垂直上向き、つまりマイナス方向の一定の加速度を検出する。なお、スティック部10に加わる加速度が0となるのは、スティック部10が自由落下している状態のときである。
静止している状態において、振り上げ動作に伴い演奏者がスティック部10を持ち上げると、重力加速度に対して、さらに逆らう方向に動作することになる。このため、スティック部10に加わる加速度はマイナス方向に増加する。その後、静止させようとして持ち上げる速度を減少させると、上向きの加速度が減少し、モーションセンサ部14で検出されるスティック部10のマイナス方向の加速度は減少する(bで表わされる部分)。そして、振り上げ動作が最高点に到達した時点での加速度は重力加速度のみになる(bとcの境目付近で表される部分)。
振り上げ動作によりスティック部10が頂点に達すると、演奏者はスティック部10の振り下ろし動作を行う。振り下ろし動作では、スティック部10は、下向き方向に動作することになる。従って、スティック部10に加わる加速度は、重力加速度に逆らって検出されていたマイナス方向の加速度よりもプラス方向に増加する。その後、演奏者はショットに向けて、下向き方向の加速度を減少させていくので、スティック部10に加わる加速度はマイナス方向に増加する。この間、振り下ろし動作が最高速に到達するタイミングを経てスティック部10には、再び重力加速度のみが加わる状態となる(cで表わされる部分)。
この後、演奏者がショットに向けて、スティック部10に対してさらに振り上げ方向の加速度を加えると、加わる加速度はマイナス方向に増加する。そしてショットが終わると、スティック部10は再び静止し、重力加速度に逆らう形のマイナス方向の加速度が検出される状態に戻る(dで表わされる部分)。
本実施形態においては、演奏者が仮想的な楽器の面にスティック部10を打ちつける瞬間として、振り下ろし動作が行われた後、振り上げ方向の加速度が加えられた瞬間を検出する。つまり、図7のdで表わされる部分において、振り下ろし状態から、言い換えれば加わる加速度が重力加速度のみから、さらにマイナス方向に所定値だけ増加したA点を、ショット検出のタイミングとしている。
このショット検出のタイミングを発音タイミングとし、上述したような発音タイミングが到来したと判断されると、スティック部10のCPU11は、ノートオンイベントを生成し、センターユニット部30に送信する。これにより、センターユニット部30において、発音処理が実行されて、楽音が発生される。
図6に戻り、ステップS15に示すショット検出処理では、上述のようにモーションセンサ情報(例えば、加速度センサのX軸、Y軸、Z軸のセンサ合成値)に基づいて、ノートオンイベントを生成する。このとき、生成するノートオンイベントには、例えばショットの強さや加速度の大きさ等に応じて、楽音の音量や音色、ベロシティやエンベロープ等の種々の情報を含めることとしてもよい。なお、楽音の音量は、例えばセンサ合成値の最大値から求めることができる。
また、CPU11は、モーションセンサ情報に基づいて、演奏者の所定の動作(アクション)を示す情報(以下、アクション情報と呼ぶ)を検出する処理、すなわち、アクション検出処理を行う(ステップS16)。なお、ここでアクション動作とは、ユーザがスティックを用いて行う、ショット以外の動作をいい、例えば、ユーザが撮像空間内で、スティックのマーカーが所定の形状を描くように動かした場合や、ある位置でダブルクリックのような動作をさせた場合を検出する。そして、例えばユーザがスティックを横にスライドさせた場合には、ページをめくるようにドラムセットを入れ替えるなどのように用いる事ができる。
CPU11は、ステップS14〜S16の処理で検出した情報、すなわち、姿勢情報、ショット情報及びアクション情報を、データ通信部16を介してセンターユニット部30に送信して(ステップS17)、ステップS13の処理に戻る。このとき、CPU11は、スティック部10A、10Bを区別するためのスティック識別情報と対応付けて、姿勢情報、ショット情報及びアクション情報をセンターユニット部30に送信する。
[カメラユニット部20の処理]
図8は演奏装置1のカメラユニット部20の処理を示すフローチャートである。なお、このフローチャートで示される処理は、カメラユニット部20のCPU21がROM22に記憶されたプログラム22aを読み出すことにより実行される。
カメラユニット部20のCPU21は、マーカー検出条件取得処理を行う(ステップS21)。この処理では、CPU21は、センターユニット部30から送信されるマーカー検出条件情報を取得し、RAM23に格納する。
なお、マーカー検出条件情報とは、スティック部10A,10Bのマーカー部15の夫々を検出するための条件であり、マーカー特徴情報12bから生成される(後述する図9のステップS31,S32参照)。ここで、上述したようにマーカー特徴情報12bとして、例えば、マーカーの形状、大きさ、色相、彩度、あるいは輝度を用いることができる。
次に、CPU21は、マーカー検出条件設定処理を行う(ステップS22)。この処理では、CPU21は、マーカー検出条件情報に基づいて、スティック部10A,10Bのマーカー部15を検出するための各種設定を行う。
次に、CPU21は、第1マーカー検出処理及び第2マーカー検出処理を行う(ステップS23,S24)。これらの処理では、CPU21は、マーカー検出部24が検出した、スティック部10Aのマーカー部15(第1マーカー)及びスティック部10Bのマーカー部15(第2マーカー)の位置座標、サイズ、角度などのマーカー検知情報を取得してRAM23に格納する。このとき、マーカー検出部24は、発光中のマーカー部15について、マーカー検知情報を検出する。
CPU21は、ステップS23及びステップS24で取得したマーカー検知情報を、データ通信部25を介してセンターユニット部30に送信し(ステップS25)、ステップS23の処理に戻る。
[センターユニット部30の処理]
図9は演奏装置1のセンターユニット部30の処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM32に記憶されたプログラム32aを読み出すことにより実行される。
センターユニット部30のCPU31は、マーカー特徴情報12bをスティック部10から受信してRAM33に格納する(ステップS31)。CPU31は、このマーカー特徴情報とスイッチ341を介して設定された検出条件からマーカー検出条件情報を生成し、データ通信部37を介してカメラユニット部20に送信する(ステップS32)。
次に、CPU31は、カメラユニット部20から第1マーカー及び第2マーカー夫々のマーカー検知情報を受信し、RAM33に格納する(ステップS33)。また、CPU31は、スティック部10A、10Bの夫々から、スティック識別情報と対応付けられた姿勢情報、ショット情報及びアクション情報を受信し、RAM33に格納する(ステップS34)。
ここで、CPU31は、ショットありか否かを判断する(ステップS35)。この処理では、CPU31は、スティック部10からノートオンイベントを受信したか否かにより、ショットの有無を判断する。このとき、ショットありと判断した場合には、CPU31は、ショット処理を行う(ステップS36)。ショット処理では、CPU31は、ROM32の波形テーブル32bからマーカー検知情報に含まれる位置座標、サイズ及び角度などに対応する波形データを読み出し、ノートオンイベントに含まれる音量データとともに音源装置36に出力する。これにより、音源装置36では、受け取った波形データに基づいて該当する楽音を発生する。
一方、ステップS36の後、又はステップS35でNOと判断した場合には、CPU31は、スティック部10から受信したアクション情報に基づいて、アクションありか否かを判断する(ステップS35)。このとき、アクションありと判断した場合には、CPU31は、受信したアクション情報に基づくアクション処理を行い(ステップS38)、ステップS33の処理に戻る。また、アクションなしと判断した場合には、CPU31は、ステップS33の処理に戻る。
以上が演奏装置1の基本的な動作である。
なお、上記各フローチャートでは説明を省略したが、演奏中にカメラユニット部20で撮影した演奏者の画像をセンターユニット部30に送ることにより、センターユニット部30で、その撮影画像と図1(b)に示した仮想ドラムセットDの画像とを合成し、その合成画像をモニタ部40に転送して表示することも可能である。
演奏者は、このモニタ部40に表示された合成画像で仮想ドラムセットDの各楽器の位置を確認しながら演奏することができる。ただし、モニタ部40を見ながらの演奏ではゲーム的であるため、リアリティ性を求める場合にはモニタ部40を見ないで演奏することが好ましい。つまり、あたかも目の前にドラムセットがあるものとして、スティック部10を持って演奏するスタイルが好ましい。
ここで、図10に示すように、モーションセンサ部14として3軸の加速度センサ14aがスティック部10の先端部に設けられているものとする。エアドラムを演奏する場合に、まず、スティック部10に設けられた操作ボタン17を操作して、スティック部10の演奏動作に対する加速度センサ14aの基準方向(例えばZ軸方向)を決めておく。これにより、演奏者がスティック部10を移動させたときに、そのときの動作方向を加速度センサ14aによって正しく検出することができる。
ところが、演奏中にスティック部10が軸周りに回転(ロール回転)することがある。このような場合、加速度センサ14aの検出方向が実際のスティック部10の向きと違ってしまい、演奏者がスティック部10を楽器に向かって振り下ろしても、スティック部10の動作方向が誤検出されて、意図した楽音が出力されないことがある。
以下では、このようなスティック部10の回転に関する処理について説明する。
いま、図11に示すように、カメラユニット部20から所定の距離Tだけ離れた位置で演奏者がスティック部10を用いてドラム演奏を行うものとし、そのときにカメラユニット部20の撮影範囲20b内で撮影された演奏者の画像がセンターユニット部30にリアルタイムで送られているとする。
図12は演奏装置1のセンターユニット部30のスティック回転対応処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
まず、センターユニット部30のCPU31は、初期設定として加速度センサ14aの基準方向の設定処理を行う(ステップS41)。
詳しくは、図13に示すように、演奏者がスティック部10を基準方向(Z軸方向)に振るときの向きを決めておく(ステップS41−1)。具体的には、例えばスティック部に所定の目印等が付され、演奏者がこの目印等を用いて所定の回転向きにスティックを合わせて保持することで、初期のスティック部10の向きを基準方向に合わせる。
続いて、演奏者が操作ボタン17を操作することにより、このときのスティック部10の向きを確定すると(ステップS41−2のYES)、CPU31はそのときの加速度センサ14aの出力値に応じて、そのスティック部10の向きと加速度センサ14aの基準方向とを対応付けて、例えばRAM33の所定の領域に記憶する(ステップS41−3)。ここで、加速度センサ14aは、上述のように静止時においても重力方向に重力加速度1Gに相当する値を検出するので、この加速度センサから検出された値に基づき、スティック10の向きと加速度センサの基準方向との対応付けをはかる。
このように、初期設定によりスティック部10の向きと加速度センサ14aの基準方向とを対応付けておくことにより、以後、演奏者がスティック部10を動かしたときに、そのときのスティック部10の動作方向が正しく検出される。
ここで、所定の操作によりエアドラムの演奏が開始されると(ステップS42のYES)、センターユニット部30のCPU31は、カメラユニット部20のマーカー検出部24から撮影画像上のスティック部10のマーカー部15の位置座標を取得する(ステップS43)。
なお、本実施形態では、カメラユニット部20側でマーカー検出処理を行う構成としているが、センターユニット部30のCPU31がカメラユニット部20から撮影画像を受信し、その撮影画像からマーカー部15の位置座標を検出することでもよい。また、実際にはスティック部10として2本のスティック部10A,10Bを用いて演奏するので、スティック部10A,10Bのそれぞれについて、マーカー部15A,15Bの位置座標を検出するものとする。
撮影画像上のマーカー部15の位置座標が得られると、CPU31は、その位置座標を追跡することで、マーカー部15が下方向(Z軸方向)へ移動している状態であるか否かを判断する(ステップS44)。マーカー部15が下方向以外に移動している状態であれば(ステップS44のNO)、CPU31は、演奏者が発音指示(ノートオン)以外の演奏動作として例えば他の楽器位置へのスティックの移動等のためにスティック部10を移動させているだけで、楽器を叩く動作でないと判断し、ここでの処理を終える。
マーカー部15が下方向へ移動している状態であれば(ステップS44のYES)、CPU31は、エアドラムの各楽器の演奏エリアに入ったか否かを判断する(ステップS45)。これは、撮影画像中のマーカー部15の位置座標と予め与えられているエアドラムの各楽器の位置座標との関係から判断する。マーカー部15が演奏エリアに入っていない場合には(ステップS45のNO)、CPU31は、スティック部10が例えば楽器の横を通過しただけと判断し、ここでの処理を終える。
一方、マーカー部15が演奏エリアに入った場合(ステップS44のYES)、CPU31は、撮影画像上のマーカー部15の下方向(Z軸方向)に関する移動距離D0を算出する(ステップS46)。この場合、図7で説明したように、加速度センサ14aの信号変化に基づいて演奏者がスティック部10を振り上げてから楽器に向かって振り下ろしたときのタイミングを判断し、その間に撮影画像上で検出されるマーカー部15の移動距離D0を求める。
また、CPU31は、加速度センサ14aの信号に基づいてマーカー部15の下方向(Z軸方向)に関する移動距離L0を算出する(ステップS47)。この場合、演奏者がスティック部10を振り上げてから楽器に向かって振り下ろしたときに得られた加速度を2回時間積分することで、その間のマーカー部15の移動距離L0を求めることができる。
このようにして、撮影画像上のマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0が得られると、CPU31は移動距離D0と移動距離L0とを比較する(ステップS48)。
詳しくは、図14のフローチャートに示すように、CPU31は、撮影画像上のマーカー部15の移動距離分の画素数をカウントし(ステップS48−1)、そのカウントした画素数を実際の移動距離D0に変換する(ステップS48−2)。この場合、図11に示したように、カメラユニット部20から所定の距離Tだけ離れた位置で撮影を行うものとすれば、その撮影画像の画素数からマーカー部15の移動距離D0を計算により求めることができる。
なお、図15に示すように、上記所定距離Tで撮影したときに得られる撮影画像の画素数とマーカー部15の移動距離との対応関係を記憶したテーブル38を用意しておけば、その都度、画素数からマーカー部15の移動距離を計算しなくとも、テーブル38を参照するだけで移動距離D0を得ることができる。このテーブル38は、例えばセンターユニット部30のRAM33に設けられる。
CPU31は、このようにして撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0とを比較する(ステップS48−3)。
ここで、図16に示すように、演奏者がスティック部10の先端部に設けられたマーカー部15を下方向(Z軸方向)に振り下ろしたときに、スティック部10が正しい向きで保持されていてスティック部10に設けられた加速度センサ14aが正しい方向の加速度を検出していれば、撮影画像の画素数から求めたマーカー部15の下方向(Z軸方向)に関する移動距離D0と加速度センサ14aから求めたマーカー部15の下方向(Z軸方向)に関する移動距離L0とは一致する。
ところが、演奏中にスティック部10の握り位置がずれるなどしてスティック部10が軸周りに回転した状態にあると、加速度センサ14aによって検出されるスティック部10の加速度が、正しい方向の値からずれた値となってしまう。このために、撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0とが一致しなくなる。しがって、撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0とを比較することで、スティック部10が軸周りに回転した状態にあるか否かを判断することができる。
なお、この移動距離D0およびL0の算出と比較は、演奏者がスティック部10を振り上げてから楽器に向かって振り下ろすまでの区間で、累積値を用いても良い。また、各単位時間ごとに移動距離の絶対値を算出して絶対値の累積値を用いる方法や、各単位時間ごとに比較を行う方法、所定の着目区間を別途設けてその区間について比較を行う方法など、種々の方法が可能である。
図17は、演奏者がスティック部10を基準方向(Z軸方向)に振り下ろしたときに、加速度センサ14aにて検出されるスティック部10の基準方向(上記の説明では下方向(Z軸方向)を基準方向とした例で説明している)の移動距離L0の長さを模式的に表している。
図17(a)に示すように、スティック部10の向きが正常であれば(つまり、加速度センサ14aの基準方向を初期設定したときの向きと同じであれば)、加速度センサ14aにて検出されるスティック部10の基準方向の移動距離L0は撮影画像の画素数から求めたマーカー部15の移動距離D0と同じである。
一方、スティック部10が軸周りに回転していると、同図(b)のように、加速度センサ14aにて検出されるスティック部10の基準方向の移動距離L0は正常時よりも短くなる。スティック部10がさらに回転している状態であれば、同図(c)のように移動距離L0は正常時よりもさらに短くなる。
また、スティック部10の回転により加速度センサ14aの検出方向が90度ずれた状態になると、演奏者がスティック部10を基準方向に振り下ろしても、その方向の動きが検出されない。したがって、加速度センサ14aの基準方向の出力レベルはゼロとなり、同図(d)のように移動距離L0もゼロとなる。
図12に戻って、撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0が一致した場合には(ステップS49のYES)、CPU31は、スティック部10が正しい向きで振り下ろされたと判断し、上記ステップS45で撮影画像上のマーカー位置から求めた演奏エリアに対応した楽音を発生する(ステップS50)。
一方、撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0が一致しない場合には(ステップS49のYES)、CPU31は、スティック部10が正しい向きで振り下ろされていないと判断する。つまり、スティック部10が軸周りに回転している状態にあると判断する。この場合、CPU31は、上記ステップS45で撮影画像上のマーカー位置から求めた演奏エリアに対応した楽音を発生する(ステップS51)。
なお、上記でいう「一致」とは、完全に同一の値となる場合のみをいうとは限らない。すなわち、誤差や許容範囲の程度を考慮して、撮影画像の画素数から求めたマーカー部15の移動距離D0と加速度センサ14aから求めたマーカー部15の移動距離L0の差分が、あるしきい値以上になったか否かで、差分が大きくなった場合にステップS51の処理へ進むように構成しても良いのは当然である。
なお、この際、ステップS51における楽音の発生を、加速度センサ14aの基準方向の出力レベルに応じた音量で発音させるようにする事も可能である。すなわち、スティック部10が軸周りに回転している状態にあるとき、加速度センサ14aの基準方向の出力レベルが通常よりも小さくなる。したがって、加速度センサ14aの基準方向の出力レベルに基づいて音量を制御することで、演奏者にスティック部10が軸周りに回転している状態を音量の大きさから聴覚的に警告することができる。
さらに、CPU31は、スティック部10が軸周りに回転している状態にあることを所定の方法で通知する(ステップS52)。なお、このときスティック部10が振り下ろされて楽音が鳴っているので、次の演奏動作に備えての通知となる。
また、このときの通知方法としては、例えば図18に示すようなメッセージ画面41をモニタ部40に表示する方法がある。このメッセージ画面41には、「スティックが回転しています。スティックを持ち直して下さい。」といったようなメッセージが書かれている。
このようなメッセージ画面41を表示することで、演奏者にスティック部10が軸周りに回転している状態を視覚的に知らせることができる。これにより、演奏者は、スティック部10を持ち直して、正して向きにして演奏を続けることができる。
また、センターユニット部30の表示装置351に表示することも可能である。また、音声メッセージで通知することでもよいが、演奏中であるため、演奏者のみに聞こえるようにモニター用のヘッドフォン等を通して音声出力することが好ましい。
また、別の方法として、図19に示すように、例えばカメラユニット部20に2つのランプ26,27を設けておき、スティック部10の回転状態に応じてランプ26,27を点灯制御することでもよい。ランプ26は、例えば緑色のLEDからなり、スティック部10の向きが正しい状態にあるとき、つまり、スティック部10の向きと加速度センサ14aの基準方向にずれがないときに点灯される。ランプ27は、例えば赤色のLEDからなり、スティック部10が軸周りに回転した状態にあるとき、つまり、スティック部10の向きと加速度センサ14aの基準方向にずれがある場合に点灯される。このランプ26,27は、演奏者が演奏中に容易に視認できるようにカメラユニット部20の正面などに設けておくことが好ましい。
このように、カメラユニット部20に設けられたランプ26,27の点灯状態からスティック部10の向きを把握することができ、ランプ27が点灯している場合には、スティック部10を持ち直すなどして、スティック部10の向きを正して演奏を続けることができる。
また、別の方法として、図20に示すように、スティック部10の先端部に設けられた発光体であるマーカー部15の点灯制御により、例えば点滅や色を変えて表示するなどして演奏者に知らせることでもよい。このような構成とすれば、演奏者はマーカー部15の点灯状態からスティック部10の向きを把握することができ、マーカー部15が点滅あるいは別の色で点灯している場合には、スティック部10を持ち直すなどして、スティック部10の向きを正して演奏を続けることができる。
さらに、例えばスティック部10にバイブレータ機能18を設けておき、演奏中にスティック部10が軸周りに回転したらスティック部10を震動させて、演奏者に知らせることでもよい。このような構成とすれば、演奏者はスティック部10の震動を感じることで、スティック部10の向きが正しくないことに気づいて修正することができる。
また、スティック部10に警告表示部191を設け、演奏中にスティック部10が軸周りに回転した場合の警告を、この警告表示部191によって行うことも可能である。この場合、警告表示部191としては、単なるLEDランプを点灯あるいは点滅させるようにしても良いし、メッセージを表示できる液晶表示部を備えることとしても良い。
演奏が終了するまでの間、このような処理が繰り返し行われ、スティック部10が軸周りに回転している状態が検出された場合には、上述した方法により演奏者に対して通知がなされる。
以上のように、本実施形態によれば、撮影画像とセンサを併用することで、スティック部10の回転によりセンサが正しく動作方向を検出できない状態にあっても、撮影画像上のマーカー位置からスティック部10の位置を判断して所定の楽音を鳴らすことができる。
ここで、撮影画像だけでもスティック部10の位置を判断して楽音を発生することが可能ではある。しかし、スティック部10の演奏動作は早いため、撮影画像だけでは処理が追いつかず、音を鳴らすタイミングが遅くなってしまう問題がある。本実施形態では、このような観点から撮影画像とセンサを併用しており、スティック部10の向きが正しい状態であればセンサ出力を元に適切なタイミングで音を鳴らし、スティック部10が回転していれば撮影画像上で位置判断して音を鳴らし、そのときに演奏者に警告を行ってスティック部10の向きを修正させることができる。
なお、スティック部10に設けられる方向検出用のセンサとして、加速度センサ14aを例にして説明したが、例えば角速度センサなどの他のセンサでも同様であり、撮影画像との併用により同様の効果が得られる。
また、上記実施形態では、仮想的な打楽器としてエアドラムを例にして説明したが、本発明はこれに限られるものではなく、スティック部10の振り下ろし/振り上げ動作で楽音を発生する楽器であれば、例えば木琴などの他の楽器に適用することができる。
また、上記実施形態でスティック部10、カメラユニット部20及びセンターユニット部30で行うこととしている処理のうちの任意の処理は、他のユニット(スティック部10、カメラユニット部20及びセンターユニット部30)で行うこととしてもよい。例えば、スティック部10のCPU11が行うこととしているショット検出処理(図6)などを、センターユニット部30のCPU31で行うこととしてもよい。
さらに、スティック部10の軸周りの回転状態を演奏者に警告する際、その回転量に応じて警告の方法を変化させても良い。例えば、図12のステップS48からS49において、撮影画像上のマーカーの移動距離とセンサ上のマーカーの移動距離との差分を複数のしきい値と比較する。その比較結果に応じて(移動距離の差分量に応じて)、例えば警告メッセージを変化させたり、LEDやメッセージ表示の色を変化させたり、LEDの明滅パターンを変化させたり、モニター音を変化させたり、バイブレータパターンを変化させたり、矢印の表示形状や表示個数を変化させるなど、種々の方法が考えられる。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材と、
上記演奏部材が存在する撮像空間を撮影する撮影手段と、
上記演奏部材の動きを検出するためのセンサと、
上記撮影手段によって撮影された画像から得られる上記演奏部材の動きと上記センサによって得られる上記演奏部材の動きとを比較して上記演奏部材の軸周りの回転状態を検出する回転検出手段と、
上記回転検出手段によって検出された上記演奏部材の軸周りの回転状態に応じて警告を上記演奏者に通知する通知手段と
を具備したことを特徴とする演奏装置。
[2]
上記回転検出手段によって上記演奏部材の軸周りの回転状態が検出された場合に、上記撮影手段によって撮影された画像中の上記演奏部材の上記マーカーの位置座標に基づいて上記エア楽器に対する上記演奏部材の位置を判断し、対応する所定の楽音を発生する楽音発生制御手段をさらに具備したことを特徴とする[1]記載の演奏装置。
[3]
上記撮影画像から上記演奏部材の上記マーカーを検出するマーカー検出手段と、
このマーカー検出手段によって検出された上記撮影画像上の上記マーカーの移動距離を算出する第1の移動距離算出手段と、
上記センサの検出信号に基づいて上記演奏部材の上記マーカーの移動距離を算出する第2の移動距離算出手段とを備え、
上記回転検出手段は、
上記第1の移動距離算出手段によって算出された上記撮影画像上の上記マーカーの移動距離と上記第2の移動距離算出手段によって算出された移動距離とを対応付けて比較して、両者の移動距離が所定値以上異なっている場合に上記演奏部材が軸周りに回転している状態と判断することを特徴とする[1]または[2]記載の演奏装置。
[4]
上記撮影画像上の画素数と実際の移動距離との対応関係を記憶したテーブル手段を備え、
上記回転検出手段は、
上記テーブル手段を参照して、上記第1の移動距離算出手段によって算出された上記撮影画像上の上記マーカーの移動距離と上記第2の移動距離算出手段によって算出された移動距離との変換を行って比較することを特徴とする[3]記載の演奏装置。
[5]
上記通知手段は、
上記演奏者が視認可能なモニタ画面にメッセージを表示して、上記演奏部材が軸周りに回転している旨を上記演奏者に知らせることを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[6]
上記通知手段は、
上記撮影手段に設けられた発光部の点灯制御により、上記演奏部材が軸周りに回転している旨を上記演奏者に知らせることを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[7]
上記通知手段は、
上記演奏部材の特定部分に設けられた発光部の点灯制御により、上記演奏部材が軸周りに回転している旨を上記演奏者に知らせることを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[8]
上記通知手段は、
上記演奏者が持つ上記演奏部材を震動させて、上記演奏部材が軸周りに回転している旨を上記演奏者に知らせることを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[9]
上記通知手段は、
上記演奏部材の特定部分に設けられた表示部メッセージを表示して、上記演奏部材が軸周りに回転している旨を上記演奏者に知らせることを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[10]
上記楽音発生制御手段は、上記センサから得られる上記演奏部材の動き方向の信号レベルに応じた音量で所定の楽音を発生することを特徴とする[2]記載の演奏装置。
[11]
コンピュータによって実行されるエア楽器の演奏方法であって、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影する撮影ステップと、
この撮影ステップによって撮影された画像から得られる上記演奏部材の動きと上記演奏部材に設けられたセンサによって得られる上記演奏部材の動きとを比較して上記演奏部材の軸周りの回転状態を検出する回転検出ステップと、
この回転検出ステップによって検出された上記演奏部材の軸周りの回転状態に応じて警告を上記演奏者に通知する通知ステップと
を備えたことを特徴とする演奏方法。
[12]
上記回転検出ステップによって上記演奏部材の軸周りの回転状態が検出された場合に、上記撮影ステップによって撮影された画像中の上記演奏部材の上記マーカーの位置座標に基づいて上記エア楽器に対する上記演奏部材の位置を判断し、対応する所定の楽音を発生する楽音発生制御ステップをさらに備えたことを特徴とする[11]記載の演奏方法。
[13]
コンピュータによって実行されるエア楽器の演奏制御用のプログラムであって、
上記コンピュータを、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影する撮影手段、
この撮影手段によって撮影された画像から得られる上記演奏部材の動きと上記演奏部材に設けられたセンサによって得られる上記演奏部材の動きとを比較して上記演奏部材の軸周りの回転状態を検出する回転検出手段、
この回転検出手段によって検出された上記演奏部材の軸周りの回転状態に応じて警告を上記演奏者に通知する通知手段
として機能させるためのコンピュータ読取り可能なプログラム。
[14]
上記コンピュータを、
上記回転検出手段によって上記演奏部材の軸周りの回転状態が検出された場合に、上記撮影手段によって撮影された画像中の上記演奏部材の上記マーカーの位置座標に基づいて上記エア楽器に対する上記演奏部材の位置を判断し、対応する所定の楽音を発生する楽音発生制御手段として機能させるための[13]記載のコンピュータ読取り可能なプログラム。