以下、図面を参照して本発明の実施形態について説明する。
(第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に関する制御として、主として演奏部材であるスティック部10の動きを検出するための演奏部材検出機能11aを備える。この演奏部材検出機能11aには、後述する姿勢検知、ショット検出及びアクション検出などを含む。また、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が特定することとしてもよい。
さらに、カメラユニット部20には、本発明に関わる機能として、撮影画像におけるスティック部10のマーカー部15に対応した部分の画素数を検出するマーカー画素数検出機能21aを備えている。このマーカー画素数検出機能21aは、カメラユニット部20に対するマーカー部15の向きを判断するときに用いられる。このマーカー画素数検出機能21aについても、マーカー検出部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は、カメラユニット部20によって撮影された画像中のスティック部10のマーカー部15の位置座標とエアドラムの各楽器に相当する位置の位置座標との関係から、演奏者がスティック部10でエアドラムを叩いている位置を判断し、スティック部10の動きに合わせて当該位置に対応した楽音を発生する。
向き判断機能31bは、カメラユニット部20に対するスティック部10のマーカー部15の向きを判断する。詳しくは、向き判断機能31bは、マーカー画素数検出機能21aによって検出される撮影画像中のマーカー部15の画素数を用い、その画像数が所定値以下の場合に、スティック部10のマーカー部15がカメラユニット部20に正しく向けられていないと判断する。
通知機能31cは、向き判断機能31bによって判断されたカメラユニット部20に対するカメラユニット部20のマーカー部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(発光体)を撮影画像上で認識することで得られる。しかしながら、カメラユニット部20の設置位置や演奏者のスティック部10の持ち方の関係で、カメラユニット部20の撮影レンズ20aに対してマーカー部15が真正面に向くことがある。このような場合、撮影画像上におけるマーカー部15の範囲が小さくなるため、撮影条件によっては、マーカー部15を正しく認識できないことがある。
以下では、このようなスティック部10のマーカー部15の向きに関する処理について説明する。
図11は演奏装置1のセンターユニット部30のマーカー向き対応処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
いま、図10に示すように、カメラユニット部20から所定の距離Tだけ離れた位置で演奏者がスティック部10を用いてドラム演奏を行うものとし、そのときにカメラユニット部20で撮影された画像がセンターユニット部30にリアルタイムで送られているとする。
所定の操作によりエアドラムの演奏が開始されると(ステップS41のYES)、センターユニット部30のCPU31は、カメラユニット部20から撮影画像と共に送られて来るスティック部10のマーカー部15の画素数Pを取得する(ステップS42)。
なお、本実施形態では、マーカー部15の画素数Pの検出処理をカメラユニット部20で行う構成としているが、センターユニット部30のCPU31がカメラユニット部20から受信した撮影画像からマーカー部15の画素数Pを検出することでもよい。また、実際にはスティック部10として2本のスティック部10A、10Bを用いて演奏するので、スティック部10A、10Bのそれぞれについて、マーカー部15A,15Bに対応した部分の画素数Pを検出するものとする。
マーカー部15の画素数Pが得られると、CPU31は、その画素数Pが予め設定された基準値Px以下であるか否かを判断する(ステップS43)。上記基準値Pxは、カメラユニット部20の撮影能力(CCDの画素数等)やマーカー部15のサイズ、さらにはカメラユニット部20と演奏者(スティック部10)との距離Tなどに応じて決められる。
ここで、図12に示すように、カメラユニット部20の撮影レンズ20aの光軸Loに対して、スティック部10の傾き角度θが所定角度以上あれば、マーカー部15を投影したときの画像の画素数Pが基準値Pxより大きな値となる。これに対し、図13に示すように、演奏者がスティック部10の先端部を撮影レンズ20aに向けた状態にあって、スティック部10の傾き角度θが所定角度より小さくなると、画素数Pが基準値Pxより小さな値となる。このように、撮影画像中におけるマーカー部15の画素数を検出することで、カメラユニット部20に対してマーカー部15がどのように向けられているのかを判断することができる。
画素数Pが基準値Px以下になったとき(ステップS43のYES)、CPU31は、演奏者がスティック部10を振り下ろし中にあるか否かを判断する(ステップS44)。上述したように、スティック部10の動きは、加速度センサ等からなるモーションセンサ部14によって検出される(図7参照)。
スティック部10を振り下ろし中であった場合(ステップS44のYES)、CPU31は、演奏者がエアドラムを構成する各楽器のいずれかを叩こうとしている状態(つまりショット直前の状態)にあると判断し、そのときにスティック部10の先端部つまりマーカー部15がカメラユニット部20の撮影レンズ20aに向けられていない旨を演奏者に通知する(ステップS45)。
このときの通知方法としては、例えば図14に示すようなメッセージ画面41をモニタ部40に表示する方法がある。このメッセージ画面41には、「マーカーを判別できません。スティックの向きまたはカメラの向きを調整して下さい。」といったようなメッセージが書かれている。
このようなメッセージ画面41を表示することで、演奏者にスティック部10のマーカー部15の向きが正しくない状態を視覚的に知らせることができる。これにより、演奏者は、身体の向きを変えたり、カメラユニット部20の設置位置や向きを変えたり、スティック部10の持ち方や打ち方を変えるなどして、マーカー部15のカメラユニット部20に対する向きを正して演奏を続けることができる。
なお、モニタ部40を使用していない場合にはセンターユニット部30の表示装置351に表示するものとする。また、音声でマーカー部15の向きが正しくない旨を通知することでもよいが、演奏中であるため、演奏者のみに聞こえるようにヘッドフォン等を通して音声出力することが好ましい。
また、別の方法として、図15に示すように、例えばカメラユニット部20に2つのランプ26,27を設けておき、スティック部10のマーカー部15の向きに応じてランプ26,27を点灯制御することでもよい。ランプ26は、例えば緑色のLEDからなり、カメラユニット部20に対してスティック部10のマーカー部15の向きが正しい状態にあるとき、つまり、撮影画像上で認識可能な状態のときに点灯される。ランプ27は、例えば赤色のLEDからなり、カメラユニット部20に対してスティック部10のマーカー部15の向きが正しくない状態のとき、つまり、撮影画像上で認識が困難状態のときに点灯される。このランプ26,27は、演奏者が演奏中に容易に視認できるようにカメラユニット部20の正面などに設けておくことが好ましい。
このように、カメラユニット部20に設けられたランプ26,27の点灯状態からマーカー部15が正しくカメラユニット部20に向いているか否かを判断することができ、ランプ27が点灯している場合には、速やかに身体の向きを変えるなどして、マーカー部15のカメラユニット部20に対する向きを正して演奏を続けることができる。
また、別の方法として、図16に示すように、スティック部10の先端部に設けられた発光体であるマーカー部15の点灯制御により、例えば点滅や色を変えて表示するなどして演奏者に知らせることでもよい。このような構成とすれば、演奏者はマーカー部15の点灯状態からマーカー部15が正しくカメラユニット部20に向いているか否かを判断することができ、マーカー部15が点滅あるいは別の色で点灯している場合には、速やかに身体の向きを変えるなどして、マーカー部15の向きを正して演奏を続けることができる。
あるいは、スティック部10に小さなモニタ画面を設け、演奏中にマーカー部15の向きが正しくない場合に、モニタ画面にメッセージを表示あるいは発光色を変化させる等することによって演奏者に知らせるようにしてもよい。
さらに、例えばスティック部10にバイブレータ機能17を設けておき、演奏中にマーカー部15の向きが正しくない場合にスティック部10を震動させて、演奏者に知らせることでもよい。このような構成とすれば、演奏者はスティック部10の震動を感じることでマーカー部15の向きが正しくないことに気づいて修正することができる。
一方、マーカー部15の画素数Pが基準値Pxより多く、マーカー部15が正しく向けられている状態のとき(ステップS43のNO)、あるいは、演奏者がスティック部10を振り下ろしていない状態のときには(ステップS44のNO)、このような通知はなされない。
演奏が終了するまでの間、このような処理が繰り返し行われ、スティック部10のマーカー部15がカメラユニット部20に正しく向いていない状態が検出された場合に、上述した方法により演奏者に対して通知がなされる。これにより、演奏者は演奏中に身体の向きや、スティック部10の持ち方や打ち方を変えるなどして、マーカー部15の向きを正して演奏を続けることができる。また、リハーサル演奏を行えば、そのリハーサル演奏中に受けた通知に従ってカメラユニット部20の向きを調整するなどして本番に備えることができる。
また、演奏者がスティック部10を振り下ろし中のとき、つまり、エアドラムを構成する各楽器のいずれかを叩こうとしている直前の状態にあることを条件にして通知を行うので、例えば演奏者がスティック部10を振り回しているときなど、演奏に全く関係ない動きをしているときに通知せずに演奏を続けることができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
上記第1の実施形態では、スティック部10を振り下ろし中であるときに通知するものとして説明したが、第2の実施形態では、さらにスティック部10の動作速度を通知条件に加えている。
演奏装置1の基本的な構成は上記第1の実施形態と同様であるため、以下では、図17を参照して演奏装置1の処理動作について説明する。
図17は本発明の第2の実施形態に係る演奏装置1のセンターユニット部30のマーカー向き対応処理を示すフローチャートである。上記第1の実施形態と同様に、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
図17において、ステップS51〜S54までの処理は、上記第1の実施形態における図11のステップS41〜S44までの処理と同様である。
すなわち、演奏開始に伴い、カメラユニット部20で撮影された画像から演奏者が持つスティック部10のマーカー部15に対応した部分の画素数Pが検出される(ステップS51,S52)。この画素数Pが予め設定された基準値Px以下であった場合(ステップS53のYES)、カメラユニット部20に対してスティック部10のマーカー部15が正しく向けられていないものと判断される。
ここで、第2の実施形態では、マーカー部15の向きが正しくないことを通知する際に、演奏者がスティック部10を振り下ろし中であると共に、スティック部10を所定速度Vx以上で動かしていることを条件とする。
なお、スティック部10の動作速度は、スティック部10に設けられた加速度センサなどを用いて検出できる。すなわち、図7で説明したように、加速度センサの出力信号の変化からスティック部10の振り上げから振り下ろしまでの動作を検出し、その間の加速度を積分することで動作速度を求める。
また、上記所定速度Vxは、スティック部10のマーカー部15がカメラユニット部20の正面に向けられている状態で、撮影画像上でマーカー部15の移動を認識可能な速度であり、この速度を超えてマーカー部15が動いていると、認識精度が低下してしまい、ロスト状態となる。
そこで、演奏者がスティック部10を振り下ろし中にあり、さらに、そのときの動きが所定速度Vx以上であった場合に(ステップS55のYES)、センターユニット部30のCPU31は、演奏者がスティック部10を早く動かしながら、エアドラムを構成する各楽器のいずれかを叩こうとしている状態(つまりショット直前の状態)にあると判断し、そのときにスティック部10の先端部つまりマーカー部15がカメラユニット部20の撮影レンズ20aに向けられていない旨を演奏者に通知する(ステップS56)。
このときの通知方法としては、上記第1の実施形態と同様であり、例えば図14に示したようなメッセージ画面41をモニタ部40に表示する方法の他、図15に示したようにカメラユニット部20のランプ26,27を点灯制御する方法、図16に示したようにスティック部10のマーカー部15を点灯制御する方法や、別途のモニターを有する方法、あるいはバイブレータ機能17を用いて通知する方法などがある。
一方、マーカー部15の画素数Pが基準値Pxより多く、マーカー部15が正しく向けられている状態のとき(ステップS53のNO)、あるいは、演奏者がスティック部10を振り下ろしてない状態のときには(ステップS54のNO)、このような通知はなされない。
さらに、スティック部10の動作速度が所定速度Vxより遅いときには(ステップS55のNO)、マーカー部15が正しく向けられていなくとも、通知はなされない。これは、演奏者がスティック部10をゆっくり動かしている状態であれば、マーカー部15の向きが多少悪くても画像認識でき、演奏者がどこを叩いているのかを判断して所定の楽音を発生できるからである。なお、カメラユニット部20の撮影範囲20bを外れて、スティック部10を所定速度Vxより遅く動かしている場合は例外であり、メッセージ表示等の何らかの方法で撮影範囲20bを外れていることを直ちに警告するものとする。
このように、カメラユニット部20に対するスティック部10のマーカー部15の向きが正しくない状態が検出された場合に、演奏者がスティック部10を振り下ろし中にあって、かつ、所定速度Vx以上で動かしているときにのみ通知が行われる。したがって、演奏者がスティック部10をゆっくり動かしているときには、通知なしで演奏を続けることができる。
なお、カメラユニット部20に対するマーカー部15の向きの問題を解決する方法として、例えばスティック部10の先端部を大きくしたり、球体状にすることが考えられる。しかし、ドラム演奏に用いる細長いスティックとは形状を異にしてしまうため、スティック部10の形状を変える方法は好ましくない。これに対し、本実施形態では、演奏中にマーカー部15の向きを判断して通知する方法を用いているため、ドラム演奏用のスティックとしての形状を損なうことなく、スティック部10の動きを正しく捕らえて楽音を発生することができる。
なお、上記各実施形態では、仮想的な打楽器としてエアドラムを例にして説明したが、本発明はこれに限られるものではなく、スティック部10の振り下ろし/振り上げ動作で楽音を発生する楽器であれば、例えば木琴などの他の楽器に適用することができる。
また、上記各実施形態でスティック部10、カメラユニット部20及びセンターユニット部30で行うこととしている処理のうちの任意の処理は、他のユニット(スティック部10、カメラユニット部20及びセンターユニット部30)で行うこととしてもよい。
例えば、スティック部10のCPU11が行うこととしているショット検出処理(図6)などを、センターユニット部30のCPU31で行うこととしてもよい。また、センターユニット部30のCPU31が行うこととしているマーカー向き対応処理(図11,図17)などを、スティック部10のCPU11で行うこととしてもよい。
さらに、スティック部10とカメラユニット部20との向きの不具合を演奏者に警告する際、その向きの程度に応じて警告の方法を変化させても良い。例えば、図11のステップS43や図17ステップS53において、撮影画像中のマーカー部分の画素数を複数のしきい値と比較し、その比較結果に応じて、例えば警告メッセージを変化させたり、LEDやメッセージ表示の色を変化させたり、LEDの明滅パターンを変化させたり、モニタ音を変化させたり、バイブレータパターンを変化させたり、矢印の表示形状や表示個数を変化させるなど、種々の方法が考えられる。
また、上記各実施形態では、マーカー部15のロストが検出された場合に、スティック部10が振り下ろされたときに警告を発するものとして説明したが(図11のステップS44,図17のステップS54参照)、スティック部10の振り下ろし動作に関係なく、マーカーがロストしている場合にその都度警告を発するようにしてもよい。このようにすれば、演奏中にカメラユニット部20に対するマーカー部15の向きを常に把握しながら演奏を行うことができる。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材と、
上記演奏部材が存在する撮像空間を撮影する撮影手段と、
上記演奏部材の動きを検出する演奏部材検出手段と、
上記撮影手段によって撮影された画像中の上記演奏部材の上記マーカーの位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出手段によって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御手段と、
上記撮影手段に対する上記演奏部材の上記マーカーの向きを判断する向き判断手段と、
この向き判断手段によって判断された上記撮影手段に対する上記演奏部材の上記マーカーの向きに応じた警告を上記演奏者に通知する通知手段と
を具備したことを特徴とする演奏装置。
[2]
上記撮影画像における上記演奏部材の上記マーカーに対応した部分の画素数を検出するマーカー画素数検出手段を備え、
上記向き判断手段は、
上記マーカー画素数検出手段によって検出された上記マーカー部分の画素数が予め設定された基準値以下の場合に上記演奏部材の上記マーカーが上記撮影手段に正しく向けられていない旨の警告を通知することを特徴とする[1]記載の演奏装置。
[3]
上記通知手段は、
上記演奏部材検出手段によって検出された上記演奏部材の動きが楽器を鳴らす直前の状態であったときに、上記演奏者に通知を行うことを特徴とする[1]または[2]記載の演奏装置。
[4]
上記通知手段は、
上記演奏部材検出手段によって検出された上記演奏部材の動きが楽器を鳴らす直前の状態であり、さらに、予め設定された速度以上で上記演奏部材が動いているときに、上記演奏者に通知を行うことを特徴とする[1]または[2]記載の演奏装置。
[5]
上記通知手段は、
上記演奏者が視認可能なモニタ画面に上記演奏部材の上記マーカーが上記撮影手段に向けられていない旨のメッセージを表示することを特徴とする[1]記載の演奏装置。
[6]
上記通知手段は、
上記撮影手段に設けられた発光部の点灯制御により、上記マーカーが上記撮影手段に向けられていない旨を通知することを特徴とする[1]記載の演奏装置。
[7]
上記通知手段は、
上記演奏部材の特定部分に設けられた発光部の点灯制御により、上記マーカーが上記撮影手段に向けられていない旨を通知することを特徴とする[1]記載の演奏装置。
[8]
上記通知手段は、
上記演奏者が持つ上記演奏部材を震動させて上記マーカーが上記撮影手段に向けられていない旨を通知することを特徴とする[1]記載の演奏装置。
[9]
上記演奏部材は、
長手方向に延びるスティック状の部材からなり、その先端部に上記マーカーが設けられていることを特徴とする[1]記載の演奏装置。
[10]
コンピュータによって実行されるエア楽器の演奏方法であって、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影手段で撮影する撮影ステップと、
上記演奏部材の動きを検出する演奏部材検出ステップと、
上記撮影手段によって撮影された画像中の上記演奏部材の上記マーカーの位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出ステップによって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御ステップと、
上記撮影手段に対する上記演奏部材の上記マーカーの向きを判断する向き判断ステップと、
この向き判断ステップによって判断された上記撮影手段に対する上記演奏部材の上記マーカーの向きに応じた警告を上記演奏者に通知する通知ステップと
を備えたことを特徴とする演奏方法。
[11]
コンピュータによって実行されるエア楽器の演奏制御用のプログラムであって、
上記コンピュータを、
演奏者の操作に応じてエア楽器の演奏指示が発せられる、マーカーを有する演奏部材が存在する撮像空間を撮影する撮影手段、
上記演奏部材の動きを検出する演奏部材検出手段、
上記撮影手段によって撮影された画像中の上記演奏部材の上記マーカーの位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出手段によって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御手段、
上記撮影手段に対する上記演奏部材の上記マーカーの向きを判断する向き判断手段と、
この向き判断手段によって判断された上記撮影手段に対する上記演奏部材の上記マーカーの向きに応じた警告を上記演奏者に通知する通知手段
として機能させるためのコンピュータ読み取り可能なプログラム。