以下、図面を参照して本発明の実施形態について説明する。
(第1の実施形態)
[演奏装置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には、ロスト検出機能31aと、位置推測機能31bと、楽音発生制御機能31cとを備える。
ロスト検出機能31aは、第1の演奏(リハーサル演奏)中にカメラユニット部20によって撮影された画像からスティック部10のマーカー部15がロストしたことを検出する。
位置推測機能31bは、ロスト検出機能31aによって検出されたマーカー部15のロスト中に演奏者がスティック部10でエア楽器を叩いたときのマーカー部15の位置を推測する。
楽音発生制御機能31cは、第1の演奏(リハーサル演奏)に続いて行われる第2の演奏(本番演奏)時にマーカー部15がロストした場合に、位置推測機能31bによって推測されたマーカー部15の位置に基づいて所定の楽音を発生する。
また、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に示すように、スティック部10が叩いている位置は、スティック部10の先端部に設けられたマーカー部15(発光体)を撮影画像上で認識することで得られる。しかしながら、演奏中に演奏者の身体やスタンド等の機材にマーカー部15が隠れて、撮影画像上で認識できなくなることがある。
例えば、図11に示すように、演奏者が腕を交差して2本のスティック部10A,10Bを振っているような場合に、一方の手に持ったスティック部10Aの先端部分が他方の手に隠れることがある。このとき、撮影画像20b上でマーカー部15Aを認識できないため、このようにマーカーがロストしている間にスティック部10のモーションセンサ部14でショットが検出されても、スティック部10Aで叩いた楽器を特定することができない。
図12は、このようなマーカーのロスト中の位置を推測する方法を説明するための図である。この例では、演奏者の一方の手に持ったスティック部10A(のマーカー部15)がA点→B点に移動したときに、スティック部10Aの先端部分が他方の手に隠れ、マーカー部15Aがロストした状態を表している。
今、マーカー部15AがA点からB点の間でロストするものとし、ロスト中のC点でショット動作(演奏者がスティック部10Aを振り下ろして楽器を叩く動作)があったとする。
リハーサル演奏により、マーカー部15Aがロストしたときの時刻t1とロスト直前のA点の位置(x1,y1)と、マーカー部15Aを再認識したときの時刻t3とB点の位置(x3,y3)を求めておく。ここで、スティック部10AがA−B間を等速で直線移動したものとすれば、A−B間の位置と時刻t1,t3、ロスト中のショット発生時刻t2との関係からC点の位置(x2,y2)を推測することができる。
以下に詳しく説明する。
いま、図10に示すように、カメラユニット部20から所定の距離Tだけ離れた位置で演奏者がスティック部10を用いてドラム演奏を行うものとし、そのときにカメラユニット部20の撮影範囲20b内で撮影された演奏者の画像がセンターユニット部30にリアルタイムで送られているとする。
図13および図14は演奏装置1のセンターユニット部30の演奏処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
演奏者がセンターユニット部30に設けられたスイッチ341の操作により演奏モードを設定すると、まず、第1の演奏モードとしてリハーサル演奏が開始される(ステップS41のYES)。リハーサル演奏では、演奏者はスティック部10を持って本番と同じ演奏動作を行うものとする。詳しくは、図1で説明したように、演奏者は2本のスティック部10A,10Bを持ち、仮想ドラムセットDの各楽器に向かってスティック部10A,10Bを振り下ろす動作(ショット動作)を行う。
リハーサル演奏が開始されると、センターユニット部30のCPU31は、図示せぬタイマーを起動して演奏時間の計測を行う(ステップS42)。また、CPU31は、カメラユニット部20によって撮影された画像からスティック部10の先端部に設けられたマーカー部15を検出する(ステップS43)。
撮影画像上でマーカー部15が検出されている間は(ステップS44のNO)、CPU31は、そのマーカー部15の位置座標から楽器を特定すると共に(ステップS45)、そのときにスティック部10に設けられたモーションセンサ部14によってショット動作を検出する(ステップS46)。詳しくは、図7で説明したように、例えばモーションセンサ部14として加速度センサを用いているものとすると、その加速度センサの信号変化から演奏者がスティック部10を振り上げてから楽器に向かって振り下ろした動作を検出する。
モーションセンサ部14によってショット動作が検出された場合(ステップS46のYES)、CPU31は、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS47)。なお、ステップS45の楽器の特定は、ショットが検出されてから後に行っても良いが、あらかじめ行っておくことで、ショット検出後の処理時間を短縮でき、ショット検出後の発音までの遅延時間を短縮することができる。
一方、演奏中にマーカー部15がロストし、撮影画像上で認識できなくなった場合には(ステップS44のYES)、CPU31は、タイマーからマーカー部15がロストしたときの時刻を取得すると共に撮影画像からロスト直前のマーカー位置を取得し、その時刻と位置のデータを関連付けてRAM33の第1のロスト管理テーブル33aに記録する(ステップS39)。
ここで、ロスト中にモーションセンサ部14によってショット動作が検出された場合には(ステップS50のYES)、CPU31は、そのときの時刻をタイマーから取得してRAM33の第1のロスト管理テーブル33aに記録しておく(ステップS51)。この場合、マーカー位置によって楽器を特定することができないので、楽音は発生されない。また、一回のロスト中に複数回のショット動作が検出された場合は、それぞれのショットごとの時刻を第1のロスト管理テーブル33aに記録しておく。
また、マーカー部15のロスト後、再び撮影画像上に表れて再認識可能な状態に移行すると(ステップS52のYES)、CPU31は、そのときの時刻をタイマーから取得すると共に撮影画像上で再認識できたときのマーカー位置を取得し、その時刻と位置のデータを関連付けてRAM33の第1のロスト管理テーブル33aに記録する(ステップS53)。
このような処理がリハーサル演奏中に繰り返し行われる。その間にマーカー部15がロストした場合には、その都度、ロスト時の時刻とマーカー位置、再認識時の時刻とマーカー位置、そして、ショット動作があれば、その時刻のデータを含めてRAM33の第1のロスト管理テーブル33aに記録される。
図15に第1のロスト管理テーブル33aの一例を示す。
ロスト時の時刻とマーカー位置、ロスト後に再認識できたときの時刻とマーカー位置、ショット発生時の時刻がロスト時の一連のデータとして第1のロスト管理テーブル33aに記録される。なお、この時点では、ショット発生時のマーカー位置はまだ記録されていない。
リハーサル演奏が終了すると(ステップS48のYES)、CPU31は、タイマーを止めて演奏時間の計測を終了する(ステップS54)。そして、CPU31は、以下のようなロスト発生期間のデータ処理を実行する(ステップS55)。
すなわち、CPU31は、まず、第1のロスト管理テーブル33aを参照してロスト発生中のショット動作の有無を調べる。ロスト発生中にショット動作があった場合には、CPU31は、第1のロスト管理テーブル33aに記録されたロスト時の時刻とマーカー位置、再認識時の時刻とマーカー位置、ショット発生時刻を読み出し、これらのデータに基づいてショット発生時刻におけるマーカー位置を推測する。
図15の例で説明すると、リハーサル演奏により、一方のスティック部10Aのマーカー部15Aがロストしたときの時刻t1とロスト直前のA点の位置(x1,y1)、ロスト後に再認識できたときの時刻t3とB点の位置(x3,y3)、そして、ショット発生時の時刻t2が第1のロスト管理テーブル33aに記録されていたとする。
ここで、スティック部10AがA−B間を等速で直線移動したとすると(図12参照)、その移動途中でショット動作があったC点とA点との時間間隔(t2−t1)と、B点とC点との時間間隔(t3−t2)との比率によりC点の位置(x2,y2)を求めることができる。
この場合、図16(a)に示すように、例えばC点とA点との時間間隔(t2−t1)が1秒であり、B点とC点との時間間隔(t3−t2)も1秒であれば、両者の比率は1:1である。したがって、C点の位置(x2,y2)は、A−B間の中間位置つまりA−B間を1:1に内分する点であるから、x2=(x1+x3)/2,y2=(y1+y3)/2で求められる。
また、図16(b)に示すように、例えばC点とAとの時間間隔(t2−t1)が2秒であり、B点とC点との時間間隔(t3−t2)が1秒であれば、両者の比率は2:1である。したがって、C点の位置(x2,y2)は、A−B間を2:1に内分する点であるから、x2=x1/3+2x3/3=(x1+2x3)/3,y2=y1/3+2y3/3=(y1+2y3)/3で求められる。
このようにしてショット発生時のC点の位置(x2,y2)が求められると、CPU31は、その位置データを時刻t2に対応付けて第1のロスト管理テーブル33aに記録する。そして、第1のロスト管理テーブル33aに記録されている全てのロスト発生期間のデータについて、同様の処理を行う。全てのロスト発生期間のデータについて処理を行ったら、ここでの処理を終える。
リハーサル演奏に続いて、第2の演奏モードとして本番演奏が開始される。本番演奏の開始は、ステップS41のリハーサル演奏の開始と同様、センターユニット部30に設けられたスイッチ341の操作により開始指示を行っても良い。なお、ステップS41のリハーサル演奏とこの本番演奏の開始のいずれも、例えば、スティック部10を所定の向きに振ったり、所定の形状を描かせたり、スティック部10のスイッチを操作する等、種々の方法で開始指示を行う事が可能である。
本番演奏が開始されると(ステップS56のYES)、上記リハーサル演奏と同様に、センターユニット部30のCPU31は、図示せぬ内部タイマーを起動して演奏時間の計測を行い(ステップS57)、このときにカメラユニット部20によって撮影された画像からスティック部10の先端部に設けられたマーカー部15を検出する(ステップS58)。
撮影画像上でマーカー部15が検出されている間は(ステップS59のNO)、CPU31は、そのマーカー部15の位置座標から楽器を特定すると共に(ステップS60)、そのときにスティック部10に設けられたモーションセンサ部14によってショット動作を検出する(ステップS61)。モーションセンサ部14によってショット動作が検出された場合(ステップS61のYES)、CPU31は、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS62)。なお、ステップS60の楽器の特定は、ショットが検出されてから後に行っても良いが、あらかじめ行っておくことで、ショット検出後の処理時間を短縮でき、ショット検出後の発音までの遅延時間を短縮することができる。
ここで、演奏中にマーカー部15がロストし、撮影画像上で認識できなくなった場合には(ステップS59のYES)、CPU31は、以下のようなロスト対応処理を実行する。
すなわち、CPU31は、タイマーからマーカー部15がロストしたときの時刻を取得すると共に撮影画像からロスト直前のマーカー位置を取得し、RAM33の第1のロスト管理テーブル33aを参照してリハーサル演奏時に近似する時刻・マーカー位置でロストが発生していたか否かを検索する(ステップS63)。
リハーサル演奏時に該当するロストがあったならば、CPU31は、そのロスト中にモーションセンサ部14によってショット動作が検出されたか否かを判断する(ステップS64)。ショット動作が検出された場合に(ステップS64のYES)、CPU31は、そのショット発生時刻が第1のロスト管理テーブル33aに記録されたリハーサル演奏時のショット発生時刻と近いか否かを確認する。
リハーサル演奏時のショット発生時刻と近ければ、CPU31は、リハーサル演奏と近接するタイミングで発生したロスト中のショット動作と判断し、第1のロスト管理テーブル33aから当該時刻におけるマーカー位置を読み出し、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS65)。
例えば、本番演奏中に演奏開始から時刻t1前後にA点の位置(x1,y1)でロストが発生したとする。本番演奏がリハーサル演奏と同じように行われるものとすると、リハーサル演奏時でも同様のタイミングでロストが発生していたと予測される。したがって、そのロスト中に時刻t2前後にショット動作があれば、リハーサル演奏時に求めたC点の位置(x1,y1)がショット時のマーカー位置であると推測でき、そのマーカー位置に対応した楽器の音を発生することができる。
このように、リハーサル演奏と近接するタイミングで発生したロストか否かを確認し、リハーサル演奏時のロスト情報とショット情報を用いることで、本番演奏中にマーカーのロストが発生しても、楽音を発生させることができる。
さらに、第1のロスト管理テーブル33aに記録されているリハーサル演奏時のロスト情報のうち、本番演奏中のロストに近似する時刻・マーカー位置でのロスト情報を検索して用いることで、別のタイミングで発生したロスト時のデータを誤使用して別の楽音を発生してしまう誤動作を防ぐことができる。さらに一回のロスト中にショット動作が複数回発生した場合でも、本番演奏中に検出されたショット動作と近似する時刻でのショット情報を第1のロスト管理テーブル33aから検索して使用することで、別のタイミングで発生したショット動作のデータを誤使用して別の楽音を発生してしまう誤動作を防ぐことができる。
なお、上記ステップS63において、本番演奏時に発生したロストの時刻とマーカー位置と同様のロストがリハーサル演奏時に存在しなかった場合には、そのロスト中のマーカー位置は推測できないので、音は鳴らさないものとする。
ロスト後、マーカー部15が再認識されると(ステップS66のYES)、通常の演奏処理に戻る。また、所定の演奏時間が経過すると、ここでの一連の処理が終了する(ステップS67)。
このように、演奏者が腕を交差させるなど、スティック部10のマーカー部15がロストしやすい演奏動作を行ったとしても、リハーサル演奏により事前にマーカー部15がロストする位置を求めておくことにより、本番の演奏では、スティック部10の動きに合わせて所定の楽音を発生させて演奏を続けることができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
上記第1の実施形態では、ロスト中、スティックが等速で直線移動しているとの仮定の下で、ロスト前後の時刻とマーカー位置とに基づいてロスト中に演奏者がエア楽器を叩いた位置(ショット位置)を推測するものとした。しかし、演奏者がスティック部10を比較的早い動きで連打している場合や、諸方向に動かしている場合などには、ロスト前後の時刻と位置関係からだけでは正確にショット位置を推測することは難しい。そこで、第2の実施形態では、スティック部10が早い動きで連打する等していても、正確にショット位置を推測できるようにしたものである。
基本的な装置構成は上記第1の実施形態と同様であるため、ここではマーカーロスト時の対応方法について説明する。
図17および図18は演奏装置1のセンターユニット部30の演奏処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
上記第1の実施形態と同様に、まず、第1の演奏モードとしてリハーサル演奏が開始される(ステップS71のYES)。センターユニット部30のCPU31は、図示せぬタイマーの起動により演奏時間の計測を行い(ステップS72)、このときにカメラユニット部20によって撮影された画像からスティック部10の先端部に設けられたマーカー部15を検出する(ステップS73)。
撮影画像上でマーカー部15が検出されている間は(ステップS74のNO)、CPU31は、そのマーカー部15の位置座標から楽器を特定すると共に(ステップS75)、そのときにスティック部10に設けられたモーションセンサ部14によってショット動作を検出する(ステップS76)。モーションセンサ部14によってショット動作が検出された場合(ステップS76のYES)、CPU31は、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS77)。なお、ステップS75の楽器の特定は、ショットが検出されてから後に行っても良いが、あらかじめ行っておくことで、ショット検出後の処理時間を短縮でき、ショット検出後の発音までの遅延時間を短縮することができる点も、上記第1の実施形態に記載したのと同様である。
一方、演奏中にマーカー部15がロストし、撮影画像上で認識できなくなった場合に(ステップS74のYES)、第2の実施形態では、以下のような処理が行われる。
すなわち、CPU31は、タイマーからマーカー部15がロストしたときの時刻を取得すると共に撮影画像からロスト直前のマーカー位置を取得し、その時刻と位置のデータを関連付けてRAM33の第2のロスト管理テーブル33bに記録する(ステップS79)。また、CPU31は、ロスト中にステップS80からステップS83の処理をループしている間、単位時間ごとにステップS80の処理が実行されて、その都度モーションセンサ部14から得られる計測データを第2のロスト管理テーブル33bに記録する(ステップS80)。
ここで、ロスト中にモーションセンサ部14によってショット動作が検出された場合には(ステップS81のYES)、CPU31は、そのときの時刻をタイマーから取得してRAM33の第2のロスト管理テーブル33bに記録しておく(ステップS82)。この場合、マーカー位置によって楽器を特定することができないので、楽音は発生されない。また、一回のロスト中に複数回のショット動作が検出された場合は、それぞれのショットごとの時刻を第2のロスト管理テーブル33bに記録しておく。
マーカー部15のロスト後、再び撮影画像上に表れて再認識可能な状態に移行するまで上記の処理が繰り返され、その間に得られるモーションセンサ部14の計測データが第2のロスト管理テーブル33bに連続的に記録されることになる。
図19に第2のロスト管理テーブル33bの一例を示す。
ロスト時の時刻とマーカー位置、ショット発生時の時刻、そして、センサの計測データがロスト時の一連のデータとして第2のロスト管理テーブル33bに記録される。この場合、モーションセンサ部14として、例えば3軸の加速度センサを用いていたとすると、ロスト中のスティック部10のX軸,Y軸,Z軸方向の加速度が検出され、これらの各軸方向ごとに検出された加速度の計測データが連続的に記録されることになる。なお、この時点では、ショット発生時のマーカー位置はまだ記録されていない。
リハーサル演奏が終了すると(ステップS78のYES)、CPU31は、タイマーを止めて演奏時間の計測を終了する(ステップS84)。そして、CPU31は、以下のようなロスト発生期間のデータ処理を実行する(ステップS85)。
すなわち、CPU31は、まず、第2のロスト管理テーブル33bを参照してロスト発生中のショット動作の有無を調べる。ロスト発生中にショット動作があった場合には、CPU31は、第2のロスト管理テーブル33bに記録されたロスト時の時刻とマーカー位置、ロスト中のモーションセンサ部14の計測データ、ショット発生時刻を読み出し、これらのデータに基づいてショット発生時刻におけるマーカー位置を推測する。
図19の例で説明すると、リハーサル演奏により、一方のスティック部10Aのマーカー部15Aがロストしたときの時刻t1とロスト直前のA点の位置(x1,y1)、ロスト中のモーションセンサ部14の計測データ、そして、ショット発生時の時刻t2が第2のロスト管理テーブル33bに記録されていたとする。
ここで、スティック部10AがA−B間を移動したとすると(図12参照)、その間にスティック部10がどのように動いたのかは、モーションセンサ部14の計測データから判断できる。したがって、ロスト時の時刻t1とA点の位置(x1,y1)を起点にして計測データに基づきマーカー部15Aの動きを追跡していけば、ショット動作が検出された時刻t2の時点におけるマーカー位置として、C点の位置(x2,y2)を推測することができる。
より詳しくは、例えばモーションセンサ部14が加速度センサで構成されていた場合、ロスト時の時刻t1とA点の位置(x1,y1)を起点とし、その後連続的に記録されている加速度センサの計測データを積分した各単位時間における速度データを各単位時間ごとに累積(積分)していくことで、ショット動作が検出された時刻t2までのスティック部10の移動を算出し、ショット動作が検出された時刻t2の時点におけるマーカー位置C点(x2,y2)を推測することができる。
このようにしてショット発生時のC点の位置(x2,y2)が求められると、CPU31は、その位置データを時刻t2に対応付けて第2のロスト管理テーブル33bに記録する。そして、第2のロスト管理テーブル33bに記録されている全てのロスト発生期間のデータについて、同様の処理を行う。全てのロスト発生期間のデータについて処理を行ったら、ここでの処理を終える。
リハーサル演奏に続いて、第2の演奏モードとして本番演奏が開始される。本番演奏ならびにリハーサル演奏の開始は、第1の実施形態と同様、センターユニット部30に設けられたスイッチ341の操作により開始指示を行っても良いし、スティック部10を所定の向きに振ったり、所定の形状を描かせたり、スティック部10のスイッチを操作する等、種々の方法で開始指示を行う事が可能である。
本番演奏が開始されると(ステップS86のYES)、上記リハーサル演奏と同様に、センターユニット部30のCPU31は、図示せぬ内部タイマーを起動して演奏時間の計測を行い(ステップS87)、このときにカメラユニット部20によって撮影された画像からスティック部10の先端部に設けられたマーカー部15を検出する(ステップS88)。
撮影画像上でマーカー部15が検出されている間は(ステップS89のNO)、CPU31は、そのマーカー部15の位置座標から楽器を特定すると共に(ステップS90)、そのときにスティック部10に設けられたモーションセンサ部14によってショット動作を検出する(ステップS91)。モーションセンサ部14によってショット動作が検出された場合(ステップS91のYES)、CPU31は、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS92)。なお、ステップS90の楽器の特定は、ショットが検出された後に行っても、あらかじめ行っても、どちらでも良いのは上記第1の実施形態に記載したのと同様である。
ここで、演奏中にマーカー部15がロストし、撮影画像上で認識できなくなった場合には(ステップS89のYES)、CPU31は、以下のようなロスト対応処理を実行する。
すなわち、CPU31は、タイマーからマーカー部15がロストしたときの時刻を取得すると共に撮影画像からロスト直前のマーカー位置を取得し、RAM33の第1のロスト管理テーブル33aを参照してリハーサル演奏時に近似する時刻・マーカー位置でロストが発生していたか否かを検索する(ステップS93)。
リハーサル演奏時に該当するロストがあったならば、CPU31は、そのロスト中にモーションセンサ部14によってショット動作が検出されたか否かを判断する(ステップS94)。ショット動作が検出された場合に(ステップS94のYES)、CPU31は、そのショット発生時刻が第2のロスト管理テーブル33bに記録されたリハーサル演奏時のショット発生時刻と近いか否かを確認する。
リハーサル演奏時のショット発生時刻と近ければ、CPU31は、リハーサル演奏と近接するタイミングで発生したロスト中のショット動作と判断し、第2のロスト管理テーブル33bから当該時刻におけるマーカー位置を読み出し、音源装置36を介して当該マーカー位置に対応した楽器の音を発生する(ステップS95)。
例えば、本番演奏中に演奏開始から時刻t1前後にA点の位置(x1,y1)でロストが発生したとする。本番演奏がリハーサル演奏と同じように行われるものとすると、リハーサル演奏時でも同様のタイミングでロストが発生していたと予測される。したがって、そのロスト中に時刻t2前後にショット動作があれば、リハーサル演奏時に求めたC点の位置(x1,y1)がショット時のマーカー位置であると推測でき、そのマーカー位置に対応した楽器の音を発生することができる。
このように、リハーサル演奏と近接するタイミングで発生したロストか否かを確認し、リハーサル演奏時のロスト情報とショット情報を用いることで、本番演奏中にマーカーのロストが発生しても、楽音を発生させることができる。
さらに、第2のロスト管理テーブル33bに記録されているリハーサル演奏時のロスト情報のうち、本番演奏中のロストに近似する時刻・マーカー位置でのロスト情報を検索して用いることで、別のタイミングで発生したロスト時のデータを誤使用して別の楽音を発生してしまう誤動作を防ぐことができる。さらに一回のロスト中にショット動作が複数回発生した場合でも、本番演奏中に検出されたショット動作と近似する時刻でのショット情報を第2のロスト管理テーブル33bから検索して使用することで、別のタイミングで発生したショット動作のデータを誤使用して別の楽音を発生してしまう誤動作を防ぐことができる。
なお、上記ステップS93において、本番演奏時に発生したロストの時刻とマーカー位置と同様のロストがリハーサル演奏時に存在しなかった場合には、そのロスト中のマーカー位置は推測できないので、音は鳴らさないものとする。
ロスト後、マーカー部15が再認識されると(ステップS66のYES)、通常の演奏処理に戻る。また、所定の演奏時間が経過すると、ここでの一連の処理が終了する(ステップS67)。
このように、演奏者が腕を交差させるなど、スティック部10のマーカー部15がロストしやすい演奏動作を行ったとしても、リハーサル演奏により事前にマーカー部15がロストする位置を求めておくことにより、本番の演奏では、スティック部10の動きに合わせて所定の楽音を発生させて演奏を続けることができる。
さらに、第2の実施形態では、ロスト位置の推測にモーションセンサ部14の計測データを用いているため、演奏者がスティック部10を早く動かして連打していても、ロスト時の位置を推測できるといった利点がある。
また、上記第2の実施形態では、ステップS85のロスト発生期間のデータ処理において、リハーサル演奏時にショットが検出されていた場合に、第2のロスト管理テーブル33bに記録されたロスト時の時刻とマーカー位置、ロスト中のモーションセンサ部14の計測データ、ショット発生時刻に基づいて、当該ショット発生時のマーカー位置C点(x2,y2)を推測したが、これに限られない。
すなわち、例えば、ショットの発生とは無関係に、マーカーがロストしていた全期間について、各単位時間毎にその時刻でのマーカー位置を推定算出し、それらを全て第2のロスト管理テーブル33bに記録しておく事も可能である。
このように構成することにより、本番演奏時のマーカーロスト中に、リハーサル演奏時には検出されなかったタイミングでショットが行われた場合でも、そのショット発生時刻におけるマーカーの推定位置を第2のロスト管理テーブル33bから読み出して、その位置に対応した楽器の音を発生するようにすることができる。
以上のように、本実施形態によれば、リハーサル演奏により事前にマーカーがロストする位置を求めておくことにより、本番の演奏時にマーカーがロストしても、演奏者が叩いた楽器を判断して楽音を発生することができる。
なお、上記実施形態では、スティック部10に設けられる方向検出用のセンサとして、加速度センサを例にして説明したが、例えば角速度センサなどの他のセンサでも同様であり、撮影画像との併用により同様の効果が得られる。
また、上記実施形態では、仮想的な打楽器としてエアドラムを例にして説明したが、本発明はこれに限られるものではなく、スティック部10の振り下ろし/振り上げ動作で楽音を発生する楽器であれば、例えば木琴などの他の楽器に適用することができる。
また、上記実施形態でスティック部10、カメラユニット部20及びセンターユニット部30で行うこととしている処理のうちの任意の処理は、他のユニット(スティック部10、カメラユニット部20及びセンターユニット部30)で行うこととしてもよい。例えば、スティック部10のCPU11が行うこととしているショット検出処理(図6)などを、センターユニット部30のCPU31で行うこととしてもよい。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレシキブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材と、
上記演奏部材が存在する撮像空間を撮影する撮影手段と、
第1の演奏中に上記撮影手段によって撮影された画像から上記マーカーがロストしたことを検出するロスト検出手段と、
このロスト検出手段によって検出された上記マーカーのロスト中に上記演奏者が上記演奏部材で上記エア楽器を叩いたときの上記マーカーの位置を推測する位置推測手段と、
第2の演奏時に上記マーカーがロストした場合に、上記位置推測手段によって推測された上記マーカーの位置に基づいて所定の楽音を発生する楽音発生制御手段と
を具備したことを特徴とする演奏装置。
[2]
上記マーカーがロストしたときの時刻と位置、ロスト中に上記演奏部材が上記エア楽器を叩いたときのショット発生時刻、ロスト後に再認識できたときの時刻と位置を記録する記録手段を備え、
上記位置推測手段は、
上記記録手段に記録された上記マーカーのロスト前後の時刻と位置との関係から上記ショット発生時刻における上記マーカーの位置を推測することを特徴とする[1]記載の演奏装置。
[3]
上記演奏部材の動きを検出するセンサと、
上記マーカーがロストしたときの時刻と位置、ロスト中に上記演奏部材が上記エア楽器を叩いたときのショット発生時刻を記録すると共に、ロスト中に上記センサによって検出された上記演奏部材の動きを示す計測データを連続的に記録する記録手段とを備え、
上記位置推測手段は、
上記記録手段に記録された上記マーカーのロスト時の時刻と位置を起点にして上記センサの計測データに基づきマーカーの動きを追跡することにより、上記ショット発生時刻における上記マーカーの位置を推測することを特徴とする[1]記載の演奏装置。
[4]
上記楽音発生制御手段は、
上記第2の演奏時に上記第1の演奏時と近接するタイミングで上記マーカーのロストが発生したか否かを判断し、上記第1の演奏時と近接するタイミングで上記マーカーのロストが発生した場合に上記位置推測手段によって推測された上記マーカーの位置に基づいて所定の楽音を発生することを特徴とする[1]乃至[3]のいずれかに記載の演奏装置。
[5]
コンピュータによって実行されるエア楽器の演奏方法であって、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影手段で撮影する撮影ステップと、
第1の演奏中に上記撮影手段で撮影された画像から上記マーカーがロストしたことを検出するロスト検出ステップと、
このロスト検出ステップによって検出された上記マーカーのロスト中に上記演奏者が上記演奏部材で上記エア楽器を叩いたときの上記マーカーの位置を推測する位置推測ステップと、
第2の演奏時に上記マーカーがロストした場合に、上記位置推測ステップによって推測された上記マーカーの位置に基づいて所定の楽音を発生する楽音発生制御ステップと
を備えたことを特徴とする演奏方法。
[6]
コンピュータによって実行されるエア楽器の演奏制御用のプログラムであって、
上記コンピュータを、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影する撮影手段、
第1の演奏中に上記撮影手段によって撮影された画像から上記マーカーがロストしたことを検出するロスト検出手段、
このロスト検出手段によって検出された上記マーカーのロスト中に上記演奏者が上記演奏部材で上記エア楽器を叩いたときの上記マーカーの位置を推測する位置推測手段、
第2の演奏時に上記マーカーがロストした場合に、上記位置推測手段によって推測された上記マーカーの位置に基づいて所定の楽音を発生する楽音発生制御手段
として機能させるためのコンピュータ読み取り可能なプログラム。