以下、図面を参照して本発明の実施形態について説明する。
[演奏装置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が特定することとしてもよい。
データ通信部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と、基準位置測定機能31dとが備えられている。
楽音発生制御機能31aは、カメラユニット部20によって撮影された画像中のスティック部10のマーカー部15の位置座標とエアドラムの各楽器に相当する位置の位置座標との関係から、演奏者がスティック部10でエアドラムを叩いている位置を判断し、スティック部10の動きに合わせて当該位置に対応した楽音を発生する。
打点ずれ検出機能31bは、エアドラムの各楽器に対するスティック部10の打点ずれを検出する。
警告機能31cは、打点ずれ検出機能31bによって検出されたスティック部10の打点ずれに応じて演奏者に対して警告する。
基準位置測定機能31dは、スティック部10でエアドラムの各楽器を叩くときの基準位置を設定する。詳しくは、基準位置測定機能31dは、基準位置設定用の設定画面を表示する設定画面表示機能31d−1を有し、この設定画面の中で演奏者が指定した位置を基準位置として設定する。また、基準位置測定機能31dは、リハーサル演奏モードを設定するモード設定機能31d−2を有し、このリハーサル演奏モードで演奏者がスティック部10でエアドラムの各楽器を叩いた位置を測定し、その測定結果に基づいて基準位置を設定する。
また、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は演奏装置1のセンターユニット部30の打点ずれ処理を示すフローチャートである。なお、このフローチャートで示される処理は、センターユニット部30のCPU31がROM12に記憶されたプログラム12aを読み出すことにより実行される。
まず、演奏を開始するに際し、センターユニット部30のCPU31は、ドラムセットの各楽器に対する打点の基準位置を設定しておく(ステップS41)。通常は、各楽器の中心位置が打点の基準位置として定められるが、演奏者であるユーザの操作性を考慮して、各楽器に予め設定された演奏エリア内で打点の基準位置を任意に設定可能としている。
このときの基準位置の設定方法として、以下のような2つの方法がある。
(1)設定画面上で演奏者が打点の基準位置を指定する方法
(2)リハーサルの演奏で打点の基準位置を自動設定する方法
どちらの方法を使用するのかは予め決められているか、あるいは、演奏者がスイッチ341の操作により任意に選択できるものとする。
図11はセンターユニット部30の設定画面上で演奏者が打点の基準位置を指定する場合の処理を示すフローチャートであり、上記(1)の基準位置の設定方法に対応している。
センターユニット部30のCPU31は、図12に示すような基準位置設定画面41をモニタ部40に表示する(ステップS51)。なお、モニタ部40を使用しない場合には、センターユニット部30に設けられた表示装置351に表示することでも良い。
この基準位置設定画面41には、仮想ドラムセットDを構成する複数の楽器(この例では、楽器A,楽器B,楽器C,楽器D)の演奏エリア42a,42b,42c,42dが表示されている。図中のP1,P2,P3,P4はこれらの楽器A〜Dの中心位置を示す。
ここで、演奏者はスティック部10を用いて、各楽器に対する打点の基準位置を指定していく。詳しくは、まず、基準位置設定画面41上の各楽器A〜Dの中の任意の楽器をスティック部10で叩くことで、設定対象楽器として選択した後(ステップS52)、再度スティック部10で当該楽器の演奏エリア内で自分が叩きやすい位置を叩くことで、その位置を基準位置として指定する(ステップS53)。
なお、スティック部10で叩いた楽器と位置は、カメラユニット部20で撮影された画像中のスティック部10のマーカー部15の位置座標と仮想ドラムセットDの位置座標との関係から得られる。図中のQ1,Q2,Q3,Q4は演奏者が指定した基準位置を示す。
CPU31は、基準位置設定画面41上で演奏者が指定した基準位置Q1,Q2,Q3,Q4の座標データを取得し、図13に示すような基準位置テーブル43に楽器の種類と対応付けて記憶する(ステップS54)。この基準位置テーブル43は、センターユニット部30のRAM33に設けられており、予め各楽器A〜D毎に設定された演奏エリアEa〜Edの座標データと,中心位置P1〜P4の座標データを有する。
所定の操作により設定終了の指示があるまでの間、上記の処理を繰り返し行うことで、各楽器に対する打点の基準位置を設定する(ステップS55)。
このように、基準位置設定画面41を表示することで、演奏者が基準位置設定画面41を見ながら、エアドラムを構成する各楽器に対する基準位置を簡単に設定することができる。
なお、図11のフローチャートでは、各楽器の打点の基準位置を個々に設定するものとしたが、例えば各楽器の中の任意の楽器に対する打点の基準位置を設定した後、その設定された基準位置を元に残りの楽器の基準位置を自動設定するようにしても良い。
すなわち、図14に示すように、例えば演奏者の指示により、楽器Aの演奏エリア42aの中に打点の基準位置Q1が設定されたとする。通常、各楽器の演奏エリアの中で演奏者が叩く位置はだいたい同じ位置と考えられる。そこで、楽器Aに設定された基準位置Q1と中心位置P1との位置関係をそのまま他の楽器B,C,Dに適用して、それぞれの基準位置Q2,Q3,Q4を設定する。
詳しくは、楽器Aの演奏エリア42aの中心位置P1の座標データ(xp1,xp2)と、演奏者が指定した基準位置Q1の座標データ(xq1,xq2)とに基づき、P1からQ1へのベクトルV1を求める。このベクトルV1を楽器Bの演奏エリア42bに適用し、中心位置P2からベクトルV1の方向に移動させた位置を楽器Bの基準位置Q2とする。楽器C,Dについても同様である。
なお、自動設定した基準位置Q2,Q3,Q4については、演奏者に確認させ、必要に応じて微調整を行うようにしてもよい。これにより、楽器毎に違う場所を叩きたいという要求に応えることができる。
また、ここではx,y軸方向の基準位置を想定して説明したが、例えば基準位置設定画面41に仮想ドラムセットDを3次元で表示することで、z軸方向(高さ方向)を含めて基準位置を設定できるようにしてもよい。
図15はセンターユニット部30のリハーサルの演奏で打点の基準位置を自動設定する場合の処理を示すフローチャートであり、上記(2)の基準位置設定方法に対応している。
センターユニット部30のCPU31は、リハーサル演奏モードを設定して、所定の音楽を音源装置36から流す(ステップS61)。このリハーサル演奏モードで流す音楽は、予め用意された音楽でもよいし、演奏者が任意に選んだものであってもよい。演奏者は、この音楽に合わせてスティック部10を用いて仮想ドラムセットDの各楽器(打楽器)を叩いてドラム演奏を開始する(ステップS62)。
ここで、CPU31は、リハーサル演奏中に演奏者が各楽器をスティック部10で叩いた位置つまり打点を計測する(ステップS63)。このとき計測された打点の座標データは楽器の種類に対応付けられてRAM33の所定の領域に格納される。
演奏が終了すると(ステップS64のYES)、CPU31は、上記RAM33の所定の領域に記憶された各楽器の打点の座標データを集計し、各楽器毎に最も頻度の高い打点を基準位置として設定し(ステップS65)、その基準位置の座標データを図13に示した基準位置テーブル43に楽器の種類と対応付けて記憶する(ステップS66)。
このように、リハーサル演奏により各楽器に対する基準位置を自動的に設定することができる。この場合、各楽器毎に演奏者が最も多く叩いた位置が基準位置として設定されるので、演奏者が各楽器を叩くときのクセを基準位置に反映させて、実際の演奏時に打点ずれを正しく検出することができる。
なお、図15のフローチャートでは、各楽器毎に演奏者が最も多く叩いた位置を基準位置として設定したが、各楽器毎に測定結果として得られる各位置の座標データを平均化し、その平均化された位置を基準位置として設定することでもよい。このように平均化した位置を基準位置としておくことでも、演奏者が各楽器を叩くときのクセを基準位置に反映させて、実際の演奏時に打点ずれを正しく検出することができる。
図10に戻って、演奏者固有の打点の基準位置が設定されると、予め選択された音楽が流れ、エアドラムの演奏が開始される(ステップS42)。このとき、CPU31は、演奏者がスティック部10で叩いた楽器を特定すると共にその楽器を叩いた位置つまり打点をリアルタイムで計測する(ステップS43)。上述したように、スティック部10で叩いた楽器と位置は、カメラユニット部20で撮影された画像中のスティック部10のマーカー部15の位置座標と仮想ドラムセットDの位置座標との関係から得られる。
そして、CPU31は、演奏中に計測された位置と図13の基準位置テーブル43に記憶された当該楽器の基準位置とを比較し(ステップS44)、所定量以上のずれが生じているか否かを判断する(ステップS45)。
詳しくは、図16に示すように、演奏時に各楽器毎に基準位置(この例では、楽器Aの基準位置Q1)を中心に複数の同心状の小エリア44が設定される。そして、演奏者がスティック部10で叩いた位置と小エリア44との位置関係から基準位置とのずれを判断する。この場合、例えば内側から3番目の小エリア44aより外側に打点が存在する場合に所定量以上のずれと判断する。あるいは単に、演奏者がスティック部10で叩いた位置と楽器Aの基準位置Q1との距離を算出して、この距離に基づいて、楽器の基準位置からのずれを判断するようにしても良い。
このようにして所定量以上のずれが検出された場合(ステップS45のYES)、CPU31は、打点がずれている旨を演奏者に対して警告する(ステップS46)。このときの警告方法としては、例えば図17に示すようなメッセージ画面45をモニタ部40に表示する方法がある。
このようなメッセージ画面45を表示することで、演奏者に打点がずれていることを視覚的に知らせて、速やかに修正させることができる。なお、モニタ部40を使用していない場合にはセンターユニット部30の表示装置351に表示するものとする。また、音声で打点がずれている旨を警告することでもよいが、演奏中であるため、演奏者のみに聞こえるようにヘッドフォン等を通して音声出力することが好ましい。
また、図18に示すように、演奏者が演奏状態を視認可能な画面(モニタ部40または表示装置351の画面)に打点のずれを修正する方向の矢印マーク46を表示したり、ずれを修正するためのガイド47を表示することでもよい。このような矢印マーク46やガイド47の表示により、演奏者はどちらに修正していいのかを把握することができる。
また、図19に示すように、演奏者が持つスティック部10の構造を工夫して、打点のずれを演奏者に知らせるようにしてもよい。
図19(a)はスティック部10の先端に設けられたマーカー部15の点灯制御による警告例である。演奏中に打点がずれた場合に、スティック部10のマーカー部15を点滅あるいは色を変えて点灯する。さらに、図19(a)の例のように、マーカー部15に方向性を有する発光部51を設け、打点がずれている方向が分かるように、発光部51を点灯、点滅あるいは色を変えて点灯することでもよい。
図19(b)はスティック部10の本体部分に警告用の表示を行う例である。演奏中に打点がずれた場合に、スティック部10の本体部分に矢印マーク52を表示し、打点がずれている方向を演奏者に知らせる。この場合、矢印マーク52で表示される矢印の方向としては、ずれた方向を示しても良いし、あるいは、戻すべき方向を矢印マーク52で示すようにしても良い。
このように、スティック部10のマーカー部15の点灯制御やスティック部10に対するマーク表示によって打点ずれを警告する構成とすれば、演奏者がモニタ画面を見ないで演奏しているときでも打点ずれに気づいて修正することができる。
さらに、例えばスティック部10にバイブレータ機能を設けておき、演奏中に打点がずれた場合にスティック部10を震動させて、演奏者に知らせることでもよい。このような構成とすれば、演奏者はスティック部10の震動を感じることで打点ずれに気づいて修正することができる。
演奏が終了するまでの間、このような処理を繰り返し行われ、所定量以上の打点ずれが検出された場合に、上述した方法により演奏者に対して警告がなされる(ステップS47)。
このように、演奏者がスティック部10を用いてエアドラムを演奏中に、そのエアドラムを構成する各楽器に対する打点が本来叩く位置(基準位置)からずれている場合に、その状態が検出されて警告が発せられる。
したがって、演奏者はその警告に従って打点のミスを速やかに修正して演奏を続けることができる。また、このような打点ずれの警告機能を演奏装置1に備えておくことで、エアドラムに不慣れな演奏者であっても上達することができ、モニタ部40を見なくても、スティック部10だけを用いてリアルな演奏を行うことができるようになる。
さらに、各楽器を叩くときの基準位置を任意に設定できるので、演奏者のクセなどで各楽器を叩く位置が微妙に違う場合にも対応でき、演奏中に各楽器に対する打点ずれを正しく検出して警告することができる。
なお、上記実施形態では、仮想的な打楽器としてエアドラムを例にして説明したが、本発明はこれに限られるものではなく、スティック部10の振り下ろし/振り上げ動作で楽音を発生する楽器であれば、例えば木琴などの他の楽器に適用することができる。
また、上記実施形態でスティック部10、カメラユニット部20及びセンターユニット部30で行うこととしている処理のうちの任意の処理は、他のユニット(スティック部10、カメラユニット部20及びセンターユニット部30)で行うこととしてもよい。
例えば、スティック部10のCPU11が行うこととしているショット検出処理(図6)などを、センターユニット部30のCPU31で行うこととしてもよい。また、センターユニット部30のCPU31が行うこととしている打点ずれ処理(図10)などを、スティック部10のCPU11で行うこととしてもよい。
さらにまた、打点ずれを演奏者に警告する際、そのずれ量に応じて警告の方法を変化させても良い。例えば、図10のステップS45において、ずれ量を複数のしきい値と比較し、ずれ量に応じて、例えば警告メッセージを変化させたり、LEDやメッセージ表示の色を変化させたり、LEDの明滅パターンを変化させたり、モニター音を変化させたり、バイブレータパターンを変化させたり、矢印の表示形状や表示個数を変化させるなど、種々の方法が考えられる。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
演奏者の操作に応じてエア楽器の演奏指示が発せられる演奏部材と、
この演奏部材が存在する撮像空間を撮影する撮影手段と、
上記演奏部材の動きを検出する演奏部材検出手段と、
上記撮影手段によって撮影された画像中の上記演奏部材の位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出手段によって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御手段と、
上記エア楽器に対する上記演奏部材の打点ずれを検出する打点ずれ検出手段と、
この打点ずれ検出手段によって検出された上記演奏部材の打点ずれに応じて上記演奏者に対して警告する警告手段と
を具備したことを特徴とする演奏装置。
[2]
上記演奏部材で上記エア楽器を叩くときの基準位置を設定する基準位置設定手段を備え、
上記打点ずれ検出手段は、
演奏中に上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を測定し、その測定された位置が上記基準位置設定手段によって設定された基準位置よりも所定量以上ずれている状態を検出することを特徴とする[1]記載の演奏装置。
[3]
上記基準位置設定手段は、
基準位置設定用の設定画面を表示する設定画面表示手段を有し、
この設定画面表示手段によって表示された設定画面の中で上記演奏者が指定した位置を上記エア楽器の基準位置として設定することを特徴とする[2]記載の演奏装置。
[4]
上記基準位置設定手段は、
リハーサル演奏モードを設定するモード設定手段を有し、
このモード設定手段によって設定されたリハーサル演奏モードで上記演奏者が上記演奏部材で上記エア楽器を叩いた位置を測定し、その測定結果に基づいて上記エア楽器の基準位置を設定することを特徴とする[2]記載の演奏装置。
[5]
上記基準位置設定手段は、
上記測定結果として得られた複数の位置の中で最も頻度の高い位置を上記エア楽器の基準位置として設定することを特徴とする[4]記載の演奏装置。
[6]
上記基準位置設定手段は、
上記測定結果として得られた複数の位置を平均化した位置を上記エア楽器の基準位置として設定することを特徴とする[4]記載の演奏装置。
[7]
上記警告手段は、
上記演奏者が視認可能なモニタ画面に上記演奏部材の打点ずれを警告するメッセージを表示することを特徴とする[1]記載の演奏装置。
[8]
上記警告手段は、
上記演奏者が視認可能なモニタ画面に上記演奏部材の打点ずれを修正する方向を示すマークを表示することを特徴とする[1]記載の演奏装置。
[9]
上記警告手段は、
上記演奏者が持つ上記演奏部材の特定部分の点灯を制御して上記演奏部材の打点ずれを知らせることを特徴とする[1]記載の演奏装置。
[10]
上記警告手段は、
上記演奏者が持つ上記演奏部材に上記演奏部材の打点ずれを修正する方向を示すマークを表示することを特徴とする[1]記載の演奏装置。
[11]
上記警告手段は、
上記演奏者が持つ上記演奏部材を震動させて上記演奏部材の打点ずれを知らせることを特徴とする[1]記載の演奏装置。
[12]
コンピュータによって実行されるエア楽器の演奏方法であって、
演奏者の操作に応じてエア楽器の演奏指示が発せられる演奏部材が存在する撮像空間を撮影する撮影ステップと、
上記演奏部材の動きを検出する演奏部材検出ステップと、
上記撮影ステップによって撮影された画像中の上記演奏部材の位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出ステップによって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御ステップと、
上記エア楽器に対する上記演奏部材の打点ずれを検出する打点ずれ検出ステップと、
この打点ずれ検出ステップによって検出された上記演奏部材の打点ずれに応じて上記演奏者に対して警告する警告ステップと
を備えたことを特徴とする演奏方法。
[13]
コンピュータによって実行されるエア楽器の演奏制御用のプログラムであって、
上記コンピュータを、
演奏者の操作に応じてエア楽器の演奏指示が発せられる演奏部材が存在する撮像空間を撮影する撮影手段、
上記演奏部材の動きを検出する演奏部材検出手段、
上記撮影手段によって撮影された画像中の上記演奏部材の位置座標と上記エア楽器に相当する位置の位置座標との関係から、上記演奏者が上記演奏部材で上記エア楽器を叩いている位置を判断し、上記演奏部材検出手段によって検出された上記演奏部材の動きに合わせて当該位置に対応した楽音を発生する楽音発生制御手段、
上記エア楽器に対する上記演奏部材の打点ずれを検出する打点ずれ検出手段、
この打点ずれ検出手段によって検出された上記演奏部材の打点ずれに応じて上記演奏者に対して警告する警告手段
として機能させるためのコンピュータ読み取り可能なプログラム。