(57)【要約】   【課題】、取り込んだ画像の変化が生じた位置に応じて、再生中の楽曲の再生時刻を所望のように変更する。  【解決手段】  ビデオカメラ１９により撮像された画像に基づき、所定のコマンドを実行する非接触制御装置は、撮像された画像および再生時刻を変更するための一群の枠の画像を表示する。また、非接触制御装置は、画像中の変化を検知して、変化が生じた枠を検知する動作検知手段２２と、変化前の枠および前記変化後の枠にしたがって、再生時刻を更新する再生時刻制御手段２５とを備えている。変化が生じた場合に、変化に基づき、現在指し示されている枠から所定範囲だけ離間した枠に移動したと判断して、再生時刻が変更される。【選択図】  図２
2005122786.tif 000002
【特許請求の範囲】
【請求項１】
カメラにより撮像された画像に基づき、所定のコマンドを実行する非接触制御装置であって、
楽曲データおよび／または波形データを再生する再生手段と、
前記撮像された画像、ならびに、楽曲データおよび／または波形データの再生の際の再生時刻を示し、かつ、再生時刻変更のためのコマンドが与えられた一群の枠の画像を表示する画像表示手段と、
前記画像中の変化を検知して、変化が生じた枠を検知する動作検知手段と、
前記変化前の枠および前記変化後の枠にしたがって、再生時刻を更新する再生時刻制御手段とを備え、
前記再生手段が、前記更新された再生時刻にしたがって、前記楽曲データおよび／または波形データを再生することを特徴とする非接触制御装置。
【請求項２】
前記枠において変化が生じた場合に、
前記再生時刻制御手段が、当該変化に基づき、現在指し示されている枠から所定範囲だけ離間した枠に移動したと判断して、再生時刻を更新するように構成されたことを特徴とする請求項１に記載の非接触制御装置。
【請求項３】
前記画像表示手段が、前記再生手段により再生中の楽曲の進行にしたがって、前記一群の枠中、現在時刻を示す枠を他の枠と異なる表示にて表示するように構成されたことを特徴とする請求項１または２に記載の非接触制御装置。
【請求項４】
前記画像表示手段が、放射状に配置された枠を表示することを特徴とする請求項１ないし３の何れか一項に記載の非接触表示装置。
【請求項５】
カメラにより撮像された画像に基づき、所定のコマンドを実行する非接触制御装置としてコンピュータを動作させるための、コンピュータにより読み取り可能なプログラムであって、
楽曲データおよび／または波形データを再生する再生ステップと、
前記撮像された画像、ならびに、楽曲データおよび／または波形データの再生の際の再生時刻を示し、かつ、再生時刻変更のためのコマンドが与えられた一群の枠の画像を表示する画像表示ステップと、
前記画像中の変化を検知して、変化が生じた枠を検知する動作検知ステップと、
前記変化前の枠および前記変化後の枠にしたがって、再生時刻を更新する再生時刻制御ステップとを前記コンピュータに実行させ、
前記再生ステップにおいて、前記更新された再生時刻にしたがって、前記楽曲データおよび／または波形データを再生するように前記コンピュータを動作させることを特徴とするプログラム。
【請求項６】
前記枠において変化が生じた場合に、
前記再生時刻制御ステップにおいて、当該変化に基づき、現在指し示されている枠から所定範囲だけ離間した枠に移動したと判断して、再生時刻を更新するステップを前記コンピュータに実行させることを特徴とする請求項５に記載のプログラム。
【請求項７】
前記画像表示ステップにおいて、前記再生ステップにおける再生中の楽曲の進行にしたがって、前記一群の枠中、現在時刻を示す枠を他の枠と異なる表示にて表示するステップを、前記コンピュータに実行させることを特徴とする請求項５または６に記載のプログラム。
【請求項８】
前記画像表示ステップにおいて、放射状に配置された枠を表示するステップを、前記コンピュータに実行させることを特徴とする請求項５ないし７の何れか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像を利用した非接触の動作で所望の指示を与え、必要な処理を実行することができる非接触制御装置に関する。
【背景技術】
【０００２】
映像をもちいて制御対象物に対して何らかの指示を与える装置では、取り込んだ画像の差分をとって、特定の監視領域に変化があった場合に、制御対象物に対する特定の処理を実行するようになっている。たとえば、監視システムでは、特定の監視領域に変化があった場合に、特定の処理として、所定の者への通知のみが行われるように構成されている。
【特許文献１】特開平６−３０１４７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
たとえば、特許文献１には、上記監視領域の変化をゲームに応用する技術が開示されている。この技術では、ユーザがペンライトを振った状態をカメラが撮像し、撮像された画像中の複数の検出対象（特異点）の位置を検出して、検出された特異点の位置に基づく特定の物体（この場合は「剣」）を含むＣＧ画像を生成するように構成されている。つまり、特許文献１においては、特定の処理は、特異点の位置に応じた物体を画像中に含ませることに相当する。このように従来技術においては、取り込んだ画像の変化に応じて、特定の単独の処理しか実行できないという問題点があった。
【０００４】
また、楽曲再生においては、再生中の楽曲の再生時刻を所望のように変化させる、つまり、再生時刻を進めたり遅らせたりを繰り返すスクラッチ効果が知られている。本来は、アナログレコードを時計回り或いは反時計回りに小刻みに動かすことでこのような効果音を発生させていたが、模擬的にセンサを配置した平面上に指を接触させてこれを動かすことで、再生時刻を変化させるような技術も提案されている。
【０００５】
本発明は、取り込んだ画像の変化が生じた位置に応じて、複数の処理のうち所定の処理を実行することができる非接触制御装置を提供することを目的とする。
【０００６】
また、本発明は、ユーザが画像を参照して、画像に接触することなく、ユーザが指し示す指などの変化にしたがって、再生中の楽曲の再生時刻を変化させることが可能な非接触制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の目的は、カメラにより撮像された画像に基づき、所定のコマンドを実行する非接触制御装置であって、楽曲データおよび／または波形データを再生する再生手段と、前記撮像された画像、ならびに、楽曲データおよび／または波形データの再生の際の再生時刻を示し、かつ、再生時刻変更のためのコマンドが与えられた一群の枠の画像を表示する画像表示手段と、前記画像中の変化を検知して、変化が生じた枠を検知する動作検知手段と、前記変化前の枠および前記変化後の枠にしたがって、再生時刻を更新する再生時刻制御手段とを備え、前記再生手段が、前記更新された再生時刻にしたがって、前記楽曲データおよび／または波形データを再生することを特徴とする非接触制御装置により達成される。
【０００８】
好ましい実施態様においては、前記枠において変化が生じた場合に、前記再生時刻制御手段が、当該変化に基づき、現在指し示されている枠から所定範囲だけ離間した枠に移動したと判断して、再生時刻を更新するように構成されている。
【０００９】
別の好ましい実施態様においては、画像表示手段が、前記再生手段により再生中の楽曲の進行にしたがって、前記一群の枠中、現在時刻を示す枠を他の枠と異なる表示にて表示するように構成されている。たとえば、現在時刻を示す枠を他の枠と異なる色彩で表示すればよい。無論、他の態様で異なる表示を実現しても良い。
【００１０】
また、好ましい実施態様においては、前記画像表示手段が、放射状に配置された枠を表示する。
【００１１】
また、本発明の目的は、カメラにより撮像された画像に基づき、所定のコマンドを実行する非接触制御装置としてコンピュータを動作させるための、コンピュータにより読み取り可能なプログラムであって、楽曲データおよび／または波形データを再生する再生ステップと、前記撮像された画像、ならびに、楽曲データおよび／または波形データの再生の際の再生時刻を示し、かつ、再生時刻変更のためのコマンドが与えられた一群の枠の画像を表示する画像表示ステップと、前記画像中の変化を検知して、変化が生じた枠を検知する動作検知ステップと、前記変化前の枠および前記変化後の枠にしたがって、再生時刻を更新する再生時刻制御ステップとを前記コンピュータに実行させ、前記再生ステップにおいて、前記更新された再生時刻にしたがって、前記楽曲データおよび／または波形データを再生するように前記コンピュータを動作させることを特徴とするプログラムによっても達成される。
【００１２】
好ましくは、前記枠において変化が生じた場合に、前記再生時刻制御ステップにおいて、当該変化に基づき、現在指し示されている枠から所定範囲だけ離間した枠に移動したと判断して、再生時刻を更新するステップを前記コンピュータに実行させる。
【００１３】
また、前記画像表示ステップにおいて、前記再生ステップにおける再生中の楽曲の進行にしたがって、前記一群の枠中、現在時刻を示す枠を他の枠と異なる表示にて表示するステップを、前記コンピュータに実行させても良い。
【００１４】
さらに、前記画像表示ステップにおいて、放射状に配置された枠を表示するステップを、前記コンピュータに実行させても良い。
【発明の効果】
【００１５】
本発明によれば、取り込んだ画像の変化が生じた位置に応じて、複数の処理のうち所定の処理を実行することができる非接触制御装置を提供することが可能となる。
【００１６】
また、本発明によれば、ユーザが画像を参照して、画像に接触することなく、ユーザが指し示す指などの変化にしたがって、再生中の楽曲の再生時刻を変化させることが可能な非接触制御装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる非接触制御装置のハードウェア構成を示すブロックダイヤグラムである。図１に示すように、本実施の形態にかかる非接触制御装置１０は、パーソナルコンピュータなどにより実現でき、後述するシステム制御、再生制御、ピッチ抽出および表示を含む種々の処理を実行するＣＰＵ１１と、処理過程で必要な変数、入力情報、出力データなどを一時的に記憶するＲＡＭ１２と、ＣＰＵ１１にて実行される処理のプログラムや定数を記憶したＲＯＭ１３と、入力データや装置の機能開始／停止指示を行うための入力装置１４と、処理結果、楽譜、スクロール表示およびインタフェースなどを表示する表示装置１５と、ＣＰＵ１１が生成した発音情報を、外部音源に、音声情報として送出するＭＩＤＩインタフェース（Ｉ／Ｆ）１６と、ＣＰＵ１１が生成した発音情報を音声として出力するオーディオＩ／Ｆ１７と、ビデオカメラ１９からの情報をディジタル化してディジタル画像データを得るビデオキャプチャＩ／Ｆ１８とを備えている。上記プログラムはＲＯＭ１３に記憶されていることに限定されず、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなど記憶媒体を読み出すことによりインストールされた後、ハードディスク装置に記憶され、或いは、外部からネットワークを介して非接触制御装置１０にダウンロードされ、ハードディスク装置に記憶されていてもよい。
【００１８】
図２は、本実施の形態にかかるＣＰＵ１１の機能を示すブロックダイヤグラムである。図２に示すように、ＣＰＵ１１は、ビデオキャプチャＩ／Ｆにて取得され、定期的に更新されるディジタル画像データを比較することで、後述する取り込み領域に変化があったことを検知する動作検知手段２２、動作検知手段２２により検知されたことを表示装置１５の画面上に表示する検知表示手段２３、取り込み領域に現れた変化に対する機器の動作を決定する動作解析手段２４、ならびに、後述する楽曲データに基づいて、音のタイミングとその長さとから、現在時刻より発音すべきときや消音すべきときを判定し、判定結果に応じて、楽音の高さ情報および強さ情報をＭＩＤＩ  Ｉ／Ｆに送る再生制御手段２５として機能する。再生制御手段は、楽曲データのほか、波形信号に対応するオーディオソースから所定の速度でデータを読み出し、オーディオＩ／Ｆ１９に出力することもできる。
【００１９】
このように構成された非接触制御装置１０における処理について以下に説明する。図３は、本実施の形態にかかる非接触制御装置１０にて実行されるメインフローを示す。図３に示すように、たとえば電源が投入され、或いは、非接触制御装置１０が起動されると、後述する各種変数が初期化され（ステップ３０１）、次いで、ビデオカメラ１９により撮像され、ビデオキャプチャＩ／Ｆによりディジタル化されたデータおよび取り込み領域（以下、「検知領域」とも称する。）の画像が、表示装置１５の画面上に表示される（ステップ３０２）。
【００２０】
次いで、ＣＰＵ１１は、ユーザからの入力を待ち（ステップ３０３）、ユーザ入力に基づく画像解析・動作検知を行う（ステップ３０４）。ユーザが終了指示をするまで、各コマンドが実行される（ステップ３０５、３０６）。本実施の形態において、ユーザによる入力は、ユーザがビデオカメラ１９の前で動作し、ビデオカメラ１９により撮像された画像が非接触制御装置１０にディジタル画像データとして取り込まれることにより実現される。
【００２１】
図４は、本実施の形態にて利用される楽曲データおよび再生中の楽曲制御データエリアに収容される再生中データの構成を示す。楽曲データは、ＲＡＭ１２或いはＲＯＭ１３にあらかじめ収容されている。また、再生中データは、処理の過程において生成されＲＡＭ１２に一時的に記憶される。
【００２２】
図４（ａ）に示すように、発音すべき楽音ごとに一群のデータを有する。これら一群のデータには、発音開始ティックITime、データタイプiType、ゲートタイムIGate、ノート番号Pitch、ベロシティVel、テンポ値iTempo、ノートポインタpNextとが含まれる。発音開始ティックは、発音を開始すべき時間を示す。また、データタイプが「０」であるときは、一群のデータがノートデータを表し、データタイプが「１」であるときは、一群のデータがテンポデータを表す。ゲートタイムはこの楽音を発音させるべき時間を表す。また、ノートポインタは次の楽音のノート番号Note[n]を示すポインタである。
【００２３】
図４（ｂ）に示すように、楽音中データは、ＣＰＵ１１により楽音データから読み出され、一定の処理が施された上でＲＡＭ１２に収容された、楽音ごとの一群のデータからなる。一群のデータには、発音開始ティックITime、消音時間IOffTime、ノート番号Pitchおよび楽曲データのポインタPNextが含まれる。消音時間は、（発音開始ティック＋ゲートタイム）に相当する。
【００２４】
図５は、本実施の形態おいて利用されるオーディオデータおよび再生中のオーディオ制御データエリアに収容される再生中データの構成を示す。図５（ａ）に示すように、オーディオデータも、発音すべき波形のある時間における波形を示す一群のデータを含む。一群のデータには、発音開始時間ITime、ゲートタイムIGate、データ本体pDataおよびノートポインタpWavが含まれる。また、再生中データにおけるある時間における波形を示す一群のデータには、発音開始時間ITime、消音時間IOffTimeおよび楽曲データのポインタpWavが含まれる。
【００２５】
図６は、ＲＡＭ１２に設けられたキャプチャ画像バッファおよび検知領域データの内容を示す図である。キャプチャ画像バッファは、ＲＡＭ１２に設けられている。ＣＰＵ１１は、ビデオカメラ１９によりキャプチャされ、かつ、ビデオキャプチャI／Ｆ１８によりディジタル化された画像データされたに基づいて、以下に述べる形式のデータのデータを生成して、キャプチャ画像バッファに格納する。図６（ａ）に示すように、キャプチャ用画像バッファには、画素ごとに、当該画素を構成する一群のデータ、すなわち、画素のBlue値を示すColorB、画素のGreen値を示すColorGおよび画素のRed値を示すColorRを含む。ここで、本実施の形態において、キャプチャ画像は、図６（ｂ）に示すように長方形であり、四隅の座標（０，０）、（ｓｘ，０）、（０，ｓｙ）、（ｓｘ，ｓｙ）により領域が特定される。
【００２６】
図６（ｃ）は検知領域データを示す図である。検知領域データは、検知領域の座標データPosData、検知エリアのタイプType、コマンド内容Command、検知状態Stat、前回キャプチャ時の検知状態LastStat、および、前回キャプチャ時の画素の平均値LastColDataを含む。複数の検知領域があれば、上記一群のデータが検知領域の数だけ設けられる。
【００２７】
検知領域が長方形或いは矩形であれば、座標データは４組の座標から構成される。また、本実施の形態において、検知エリアのタイプは、当該検知エリアにて何らかが検知された場合に実行されるコマンドの種別を示す。たとえば、タイプ「０」は、通常コマンドを示し、タイプ「１」はテンポ状態エリアを示し、タイプ「２」は音量状態エリアを示し、また、タイプ「３」は進行状態エリアを示す。また、検知状態はフラグであり、「０」であれば検知していない（オフ）状態、「１」であれば検知している（オン）状態を示す。前回キャプチャ時の検知状態も同様である。つまり、本実施の形態においては、それぞれの検知領域に、テンポ状態、音量状態などを割り当てておき、その領域に一定の変化が現れたと判断された場合に、割り当てられた状態を変化させる処理が実行されるようになっている。
【００２８】
次に、図７および図８を参照して、本実施の形態にかかる画像解析・動作検知処理（図３のステップ３０４）をより詳細に説明する。まず、ＣＰＵ１１は、各種変数を初期化した（ステップ７０１）後、キャプチャ画像の画像データCapImg[][]を取得する。ここではすべての画素のデータが取得される。次いで、変数iが初期化された後、変数iと検知エリアの数であるNareaとが比較される（ステップ７０４）。「i<Narea」である場合（ステップ７０４でイエス(Yes)）、画素データの輝度の合計値GraySumと検知エリアの画素数pxsとが初期化される（ステップ７０６）。次いで、検知エリアの画素検索が終了するまで、ステップ７０７〜ステップ７０９の処理が実行される。これらステップ７０７〜７０９においては、検知エリアごとに当該検知エリア中の画素の輝度が積算されている。ここで、GraySumが輝度の積算値（累算値）に相当する。ある検知エリアについて画素検索が終了すると（ステップ７０４でイエス(Yes)）、テンポラリ値tmpColとして、輝度の積算値／検知エリアの画素数であるGraySum／pxsがセットされる（ステップ８００）。この値は、検知エリアの輝度の平均値となる。次いで、ＣＰＵ１１は、当該テンポラリ値と、当該検知エリアの前回キャプチャ時の輝度の平均値LastColDataの差の絶対値を算出し、当該絶対値が、所定のオフセット値ColOffsetより大きいか否かを判断する（ステップ８０１）。ＣＰＵ１１は、ステップ８０１でイエス(Yes)と判断された場合には、当該検知エリアの検知状態Statに「１」をセットし（ステップ８０２）、その一方、ステップ８０１でノー(No)と判断された場合には、検知状態Statに「０」をセットする（ステップ８０３）。その後、検知されたエリアの色彩を変化させる描画処理が実行される（ステップ８０４）。次いで、ＣＰＵ１１は、テンポラリ値tmpColを当該検知エリアの前回キャプチャ時の輝度の平均値として格納し（ステップ８０５）、変数iをインクリメントして、次の検知領域の処理に進む。すべての検知エリアに関して処理が終了すると（ステップ７０４でノー(No)）、後述するコマンド実行判定が行われる（ステップ８０７）。図９は、コマンド実行判定をより詳細に示すフローチャートである。
【００２９】
まず、変数が初期化され（ステップ９０１）、変数iが検知エリアの数Nareaと比較され（ステップ９０２）。ステップ９０２でイエス(Yes)と判断された場合には、ＣＰＵ１１は、その検知エリアのタイプTypeが「０」、つまり、「コマンド」であり、かつ、その検知状態Statが「１」であるかどうかを判断する（ステップ９０３）。ステップ９０３でイエス(Yes)と判断された場合、当該検知エリアのコマンドが「再生」であるか（ステップ９０４）、「一時停止」であるか（ステップ９０５）或いは「停止」であるか（ステップ９０６）が判断される。いずれのステップにおいてもノー(No)と判断された場合には、変数iがインクリメントされる。ステップ９０４でイエス(Yes)と判断され、かつ、再生中でなければ（ステップ９０８でノー(No)）、再生ルーチンが起動される。また、ステップ９０５でイエス(Yes)と判断され、かつ、再生中であれば（ステップ９１０でイエス(Yes)）、楽曲の再生が一時停止される（ステップ９１１）。また、ステップ９０６でイエス(Yes)と判断され、かつ、再生中であれば（ステップ９１２でイエス(Yes)）、楽曲の再生が停止される（ステップ９１３）。
【００３０】
ステップ９０３でノー(No)と判断された場合にも、再生中であるかどうかが判断される（ステップ９１４）。再生中でない場合（ステップ９１４でノー(No)）には、ステップ９０７に進む。これに対して、再生中であれば（ステップ９１４でイエス(Yes)）、ＣＰＵ１１は、当該検知エリアのタイプを調べる（ステップ９１５）。たとえば、当該検知エリアのタイプが「１」または「２」であれば（ステップ９１５でイエス(Yes)）、後述する状態変更判定処理が実行される（ステップ９１７）。すなわち、検知エリアが「テンポ状態」或いは「音量状態」であれば、テンポや音量の変更に関する処理が実行される。次いで、ＣＰＵ１１は、検知エリア中、「テンポ状態」或いは「音量状態」が割り当てられた最終位置のものに対応するように変数iを設定する（ステップ９１８）。また、当該検知エリアのタイプが「３」であれば（ステップ９１６でイエス(Yes)）、当該検知エリアが「進行状態」であることがわかるため、再生速度コントロールが実行される（ステップ９１９）。その後、ＣＰＵ１１は、検知エリア中、「進行状態」が割り当てられた最終位置のものに対応するよう変数iを設定する（ステップ９２０）。
【００３１】
次に、ステップ９０９の再生ルーチンについて、図１０を参照して詳細に説明する。まず、ＣＰＵ１１は、再生用の変数を初期化し（ステップ１００１）、再生開始ノートをpNoteProgにセットするとともに、現在時刻をiBaseTimeにセットする（ステップ１００２、１００３）。ステップ１００２では、最初の楽曲データを、再生用ノートポインタにセットしている。また、ステップ１００３では再生開始時刻を保存している。
【００３２】
次いで、PNoteProgがヌル（NULL）で、かつ、再生中データ（図４（ｂ）参照）のOnBuf[0]の楽音データのポインタpNoteがヌル（NULL）であれば処理を終了する。
【００３３】
それ以外の場合には（ステップ１００４でノー(No)）、ＣＰＵ１１は、経過時間をINowTimeにセットして、経過時刻でのティックをINowTimeに基づいて算出する（ステップ１００６）。次いで、後述するノートオフ処理およびノートオン処理が実行される（ステップ１００７、１００８）。また、楽譜等を表示する必要があれば表示処理が実行される（ステップ１００８）。その後、ＣＰＵ１１は、現在の処理時刻であるINowTimeを、前回の処理時刻ILastTimeとして記憶する（ステップ１０１０）。次いで、ポインタpNextを参照して、次の楽音についての処理に進む（ステップ１０１１）。
【００３４】
図１１は、ノートオン処理（ステップ１００５）をより詳細に示すフローチャートである。ノートオン処理においては、再生用ノートポインタPNoteProgがヌル（NULL）であれば（ステップ１１０１でイエス(Yes)）処理が終了し、それ以外の場合には、PNoteProg中のデータタイプiTypeが「１」すなわち「テンポデータ」であるか否かが判断される（ステップ１１０２）。ステップ１１０２でイエス(Yes)と判断された場合には、現在のテンポを示すiTempoに、当該PNoteProgにかかるテンポデータiTempoを収容する（ステップ１１０３）。
【００３５】
ステップ１１０２でノー(No)と判断された場合には、現在の楽曲データについての再生時刻を越えているか否かが判断される（ステップ１１０４）。より具体的には、PNoteProgのITimeが、INowtickより大きいか否かが判断される。ステップ１１０４でイエス(Yes)と判断された場合には、ＣＰＵ１１は、ＭＩＤＩＩ／Ｆ１６を介してノートオンを示す楽音データをMIDI信号として出力する（ステップ１１０６）。再生データであるOnBuf[i]がヌル（NULL）であれば（ステップ１１０７でノー(No)）、変数iをインクリメントする。ステップ１１０７でノー(No)と判断された場合には、ＣＰＵ１１は、再生中データを作成する（ステップ１１０８）。より具体的には、ITimeとしてPNoteProgのITimeが与えられ、IOffTimeとして、PNoteProgのITimeと、IGateとの和が与えられる。また、PitchとしてPNoteProgのPitchが与えられる。また、次いで、処理対象となる楽音データpNoteProgが、pNextが示すものに設定される（ステップ１１０９）。
【００３６】
次に、図１２は、ノートオフ処理（ステップ１００４）をより詳細に示すフローチャートである。変数の初期化（ステップ１２０１）の後、再生中データOnBuf[i]がヌル（NULL）であれば処理を終了する（ステップ１２０２でノー(No)）、それ以外の場合には、現在時刻が消音時間を超えていれば、つまり、IOffTime<INowTickであれば（ステップ１２０３でイエス(Yes)）、ＣＰＵ１１は、ＭＩＤＩＩ／Ｆ１６を介して、ノートオフを示す楽音データをMIDI信号として出力する（ステップ１２０４）。次いで、ＣＰＵ１１は、ノートオフにかかるOnBufのデータより時間的に後のデータを前に詰める処理を行う（ステップ１２０５）。その一方、ステップ１２０３でノー(No)と判断された場合には、変数iをインクリメントして（ステップ１２０６）、次のOnBuf[i]のデータについて処理を繰り返す。
【００３７】
たとえば、楽音データに基づく楽音再生の代わりに、オーディオデータを再生する場合にも類似する処理が実行される。図１３および図１４は、オーディオデータに関する図９のステップ９０９の再生ルーチンを示すフローチャートである。図１３に示すように、ＣＰＵ１１は、変数を初期化した後（ステップ１３０１）、再生開始時間を保存するためにIBaseTimeに現在時刻をセットする（ステップ１３０２）。次いで、経過時間がINowTimeにセットされる（ステップ１３０３）。その後、消音処理（ステップ１３０４）が実行される。消音処理では変数iの初期化（ステップ１３０６）の後、再生中データOnWavが存在していなければ（ステップ１３０６でノー(No)）、当該消音処理を終了させ、発音処理（図１４）に進む。再生中データが存在しており、かつ、消音時間が経過していれば（ステップ１３０７でイエス(Yes)）ば、ＣＰＵ１１は、発音中の楽音を消音するとともに、再生中データOnWavをバッファ中前に詰める処理を行う（ステップ１３０８、１３０９）。
【００３８】
図１４に示すように、pWaveProgがヌル（NULL）であり、かつ、再生中データOnWav[0]もヌルであれば（ステップ１４０１でイエス(Yes)）、データが存在しないため処理を終了する。その一方、ステップ１４０１でノー(No)であれば、発音時間になっていれば（ステップ１４０３でイエス(Yes)）、発音処理をする（ステップ１４０４）。その後の処理（ステップ１４０５〜ステップ１４０９は、図１１のステップ１１０６〜ステップ１１１０とほぼ同様である。
【００３９】
発音処理１４０２の後、たとえば、再生中の波形を表示する必要があれば、表示処理が実行される（ステップ１４１０）。次いで、現在時刻INowTimeが前回処理時刻ILastTimeとしてセットされる（ステップ１４１１）。
【００４０】
次に、ユーザの動きをキャプチャした画像データに基づいて、状態の表示を更新する表示更新処理について、図１５および図１６を参照して説明する。なお、この処理は、メインフロー１回ごとに実行されてもよいし、或いは、割り込み（たとえばタイマ割り込み）により実行されてもよい。この処理は、ユーザの動きに基づいて、画像中のどの検知エリアをさしているかを判断し、これに基づいて、再生中の楽曲のテンポや楽曲など状態の表示を更新するものである。
【００４１】
図１５に示すように、楽曲が再生中であれば（ステップ１５０１でイエス(Yes)）、ＣＰＵ１１は、一つの検知エリア（グリッド）あたりのテンポ値をvpiにセットする（ステップ１５０２）。ここに、ステップ１５０２において、MaxTempoはテンポ最大値（たとえば「１２８」）、iTempoCntは、テンポの設定に利用される検知エリア（グリッド）の個数である。次いで、ＣＰＵ１１は、現在のテンポ設定値におけるグリッドの位置、つまり、現在のテンポ設定値が何番目のグリッドであるかを判断し（ステップ１５０３）、グリッド検索用の変数iを初期化する（ステップ１５０４）。ステップ１５０３において、NowTempoは、現在のテンポ値を表す。
【００４２】
次いで、ＣＰＵ１１は、検索用変数iがテンポの設定に利用される検知エリアの個数iTempoCntに達するまで、当該変数iが現在のテンポ設定値のグリッドと等しければ（ステップ１５０６でイエス(Yes)）、テンポの設定に利用される検知エリアの開始位置を示す開始インデックスiTempoStと変数iとの和に相当する位置のCapArea[i+iTempoSt]の検知状態Statに「１」を設定する（ステップ１５０７）。それ以外のグリッドについては、ＣＰＵ１１は、CapArea[i+iTempoSt]の検知状態Statに「０」を設定する（ステップ１５０８）。ここでは、現在設定されたテンポ値に相当するグリッドについて、検知状態「１」が設定され、他のグリッドについては検知状態「０」が設定される。
【００４３】
次いで、ボリュームについても同様の処理が実行される。より詳細には、図１６に示すように、ＣＰＵ１１は、一つの検知エリア（グリッド）あたりの音量値をvpiにセットする（ステップ１６０１）。ここに、ステップ１６０１において、MaxVolは音量最大値（たとえば「１２８」）、iVolCntは、テンポの設定に利用される検知領域（グリッド）の個数である。次いで、ＣＰＵ１１は、現在の音量設定値におけるグリッドの位置を判断し（ステップ１６０２）、グリッド検索用の変数を初期化する（ステップ１６０３）。ステップ１６０２において、NowVolumeは、現在の音量値を表す。
【００４４】
ＣＰＵ１１は、検索用変数iが、音量の設定に利用される検知エリアの個数iVolCntに達するまで、検索用変数iがテンポの設定に利用される検知エリアの個数iTempoCntに達するまで、当該変数iが現在のテンポ設定値のグリッドと等しければ（ステップ１６０５でイエス(Yes)）、音量の設定に利用される検知エリアの開始位置を示す開始インデックスiVolStと変数iとの和に相当する位置のCapArea[i+iVolSt]の検知状態Statに「１」を設定する（ステップ１６０６）。それ以外のグリッドについては、ＣＰＵ１１は、CapArea[i+iVolSt]の検知状態Statに「０」を設定する（ステップ１６０７）。ここでは、現在設定された音量値に相当するグリッドについて、検知状態「１」が設定され、他のグリッドについては検知状態「０」が設定される。
【００４５】
次に、図９のステップ９１７の状態変更処理について、より詳細に説明する。図１７および図１８は、状態変更処理を詳細に示すフローチャートである。楽曲が再生中であれば（ステップ１７０１でイエス(Yes)）、ＣＰＵ１１は、一つの検知エリア（グリッド）あたりのテンポ値vpiにセットする（ステップ１７０２）。また、iPosに現在のテンポの設定値におけるグリッドの位置がセットされる（ステップ１７０３）。次いで、現在のテンポの設定値におけるグリッドに対応する検知エリアCapArea[iPos+iTempoSt]の検知状態Statが「１」であれば（ステップ１７０４でイエス(Yes)）、ＣＰＵ１１は、テンポ値を変更せず（ステップ１７１３）、その後、テンポの設定に利用される他の検知エリアの検知状態を「０」にセットする（ステップ１７１４）。その一方、上記検知エリアCapArea[iPos+iTempoSt]の検知状態Statが「０」であれば、ＣＰＵ１１は、現在の設定値に最も近い値をセットする（ステップ１７０５）。
【００４６】
ステップ１７０５においては、「０≦iPos+i≦iTempoCnt」かつCapArea[iPos+iTempoSt+i]の検知状態Statが「１」であれば、iPosの値が「iPos+i」に更新される（ステップ１７０８、１７０９）。その一方、「０≦iPos-i≦iTempoCnt」かつCapArea[iPos+iTempoSt-i]の検知状態Statが「１」であれば、iPosの値が「iPos-i」にされる（ステップ１７１０、１７１１）。
【００４７】
なお、ステップ１７１４においては、テンポ設定に利用される先頭(iTempoSt)の検知エリアから、テンポ設定に利用される検知エリアの数だけ、ステップ１７０５で検知状態が「１」となった検知エリアCapArea[iPos+iTempoSt]を除き、その検知状態Statが「０」になる（ステップ１７１５〜１７１９）。
【００４８】
続いて、音量値についても同様の処理が実行される。ＣＰＵ１１は、一つの検知エリア（グリッド）あたりの音量値vpiにセットする（ステップ１８０１）。次いで、iPosに現在の音量の設定値におけるグリッドの位置がセットされる（ステップ１８０２）。次いで、現在の音量の設定値におけるグリッドに対応する検知エリアCapArea[iPos+iVolSt]の検知状態Statが「１」であれば（ステップ１８０３でイエス(Yes)）、ＣＰＵ１１は、テンポ値を変更せず（ステップ１７１２）、その後、音量の設定に利用される他の検知エリアの検知状態を「０」にセットする（ステップ１８１２、１８１３）。その一方、上記検知エリアCapArea[iPos+iVolSt]の検知状態Statが「０」であれば、ＣＰＵ１１は、現在の設定値に最も近い値をセットする（ステップ１８０４）。
【００４９】
ステップ１８０４においては、「０≦iPos+i≦iVolCnt」かつCapArea[iPos+iVolSt+i]の検知状態Statが「１」であれば、iPosの値が「iPos+i」に更新される（ステップ１８０７、１８０８）。その一方、「０≦iPos-i≦iVolCnt」かつCapArea[iPos+iVolSt-i]の検知状態Statが「１」であれば、iPosの値が「iPos-i」にされる（ステップ１８０９、１８１０）。
【００５０】
なお、ステップ１８１３においては、音量設定に利用される先頭(iVolSt)の検知エリアから、音量設定に利用される検知エリアの数だけ、ステップ１７０５で検知状態が「１」となった検知エリアCapArea[iPos+iTempoSt]を除き、その検知状態Statが「０」になる（ステップ１８１４〜１８１８）。
【００５１】
図７および図８の処理、特にステップ１７０５およびステップ１８０４の処理により、再生される楽曲のテンポや音量が急激に変化することを防止できる。本実施の形態においては、現在の設定値にもっとも近い値をセットするように設定されているが、これに限定されるものではなく、変化した範囲において所定の値（たとえば、変化の中央値）に値がセットされるように構成されてもよい。
【００５２】
このような処理を実行することにより、本実施の形態においては、ユーザの以下の動作により、以下のような制御が実現可能となる。たとえば、図３の描画処理（ステップ３０２）により、図１９に示すように、それぞれの機能が割り当てられた検知エリアを含む画像が、表示装置１５の画面上に表示される。本実施の形態では、最上段に、左から「再生」、「一時停止」および「停止」ボタンとして機能する検知エリア、中段にテンポ設定のための検知エリア、最下段に音量設定のための検知エリアが設けられる。
【００５３】
ユーザが、表示装置１５の画面上に表示された画像を参照して、所望の検知エリアを指などで指し示すと、ユーザが検知エリアを指し示している画像が、ビデオカメラ１９により撮像される。無論、ユーザは検知エリアを指差せばよく、画面上に指を接触する必要はない。
【００５４】
ユーザが指し示した検知エリアは、画像解析・動作検知処理（図３のステップ３０４）で検知される。画像解析・動作検知処理（ステップ３０４および図７、８）では、画素の変化を捉えて、どの検知エリアが指し示されているかを判断し、それに応じてコマンド実行判定が実行される（図８のステップ８０７および図９）。ここで、機能に応じたコマンドが実行され、楽曲が再生され、或いは、再生中の一時停止や停止が可能となる。また、楽曲が再生中であれば、そのテンポや音量を変化させることも可能となる。
【００５５】
さらに、本実施の形態においては、図１９に示す画像表示に加えて、或いは、選択により図１９に示す画像の代わりに、画面上に放射型の検知エリアが表示され、これにより、楽曲再生の経過時間が表示でき、かつ、当該放射型のエリアをユーザが指し示すことにより、楽音再生速度を所望のように変更することができる。これにより、たとえば、再生中の楽音にスクラッチのような効果を付加することが可能である。本実施の形態では、放射状に配置された検知エリアの現在時刻表示を１秒間で一回転させている。時間はミリ秒（msec）で取得されるため、１０００ミリ秒の剰余でグリッドが決定される。
【００５６】
図２０は、本実施の形態にかかる経過時間の回転表示処理を示すフローチャートである。この処理は、たとえば、メインフロー（図３）において、各コマンドの実行処理（ステップ３０６）に引き続いて実行されれば良い。
【００５７】
ＣＰＵ１１は、再生中であれば（ステップ２００１でイエス(Yes)）、経過時間INowTimeを取得し（ステップ２００２）、検知エリア（グリッド）の位置を算出する（ステップ２００３）。ここでは、iPosに、経過時間INowTimeの１０００の剰余（INowTime
mod 1000）を、「１０００／iCircCnt（放射状の経過時間表示エリア、すなわち、検知エリアの個数）」で割ったものを設定する。
【００５８】
グリッド検索用の変数iが初期化された後（ステップ２００４）、変数iが、検知エリアの数（検知エリアの開始インデックスiCircleSt＋iCircCnt）に達するまで、以下の処理が実行される（ステップ２００５およびステップ２００９参照）。ＣＰＵ１１は、変数iがiPosと等しければ（ステップ２００６でイエス(Yes)）、CapArea[i]の検知状態Statを「１」にセットし（ステップ２００７）、その一方、等しくなければ（ステップ２００６でノー(No)）、CapArea[i]の検知状態Statを「０」にセットする（ステップ２００８）。
【００５９】
このような処理の後、CapArea[i]の検知状態にしたがって表示が更新される（ステップ２０１０）。図２１は、表示装置１５の画面上に表示された画像例を示す図である。図２１に示すように、放射状に複数の検知エリアを兼用するグリッド群（符号２１００参照）が設けられ、当該表示領域上、再生経過時間に相当するグリッドが他の色彩などで表示されている（符号２１０１参照）。ユーザが指にてこれらグリッドを指し示して、指を動かした場合に実行される再生速度コントロール処理（図９のステップ９１９）について、図２２および図２３を参照して説明する。おこでは、検知エリア（グリッド）での動作が検知された瞬間から、全てのグリッドで動作が検知されなくなる瞬間まで再生速度をコントロールする。実際の速度コントロールは、再生開始からの経過時間をグリッド上の検知位置に変更することで実現する。
【００６０】
ＣＰＵ１１は、再生中であれば（ステップ２２０１でイエス(Yes)）、経過時間INowTimeを取得する（ステップ２２０２）。次いで、表示されている検知エリア（グリッド）の位置が算出される（ステップ２２０３）。ここでは、iPosに、経過時間INowTimeの１０００の剰余（INowTime
mod 1000）を、「１０００／iCircCnt（放射状の経過時間表示エリア、すなわち、検知エリアの個数）」で割ったものを設定する。
【００６１】
再生速度制御のためのフラグbCrtFlugが無効（FALSE）、つまり、速度コントロールが無効状態であれば（ステップ２２０４でノー(No)）、ステップ２２０５に進み、有効状態であれば（ステップ２２０４でイエス(Yes)）、ステップ２２０７に進む。
【００６２】
ステップ２２０５において、ＣＰＵ１１は、表示されている検知エリア（グリッド）について、CapArea[iPos]の検知状態Statが「１」であれば（ステップ２２０５でイエス(Yes)）、再生制御フラグｂCrtFlugを有効状態(TRUE)にセットし（ステップ２２０６）、ステップ２２０４に戻る。
【００６３】
ステップ２２０７では、ＣＰＵ１１は、検知判断用変数bHitを「FALSE」に初期化し（ステップ２２０７）、次いで、検知エリア（グリッド）のうち、現在表示されているものから最も近い検知エリアを検索する（ステップ２２０８）。まず、ＣＰＵ１１は、新たな時間TimeNewに経過時間INowTimeをセットするとともに、変数iを初期化する（ステップ２２１０）。次いで、変数iが検知エリア（グリッド）の個数の半分（iCirCnt/2）に達するまで以下の処理を実行する。
【００６４】
まず、ＣＰＵ１１は、新たに変数ｊとして、（iPos+i+iCircCnt）のiCircCntの剰余をセットし（ステップ２２１１）、CapArea[j]の検知状態Statが「１」であるかどうかを判断する（ステップ２２１２）。ステップ２２１２でイエス(Yes)と判断された場合には、ＣＰＵ１１は、検知判断用変数bHItを有効（TRUE）にセットし（ステップ２２１３）、かつ、新たな時間ITimeNewとして、（INowTime+i*(1000/CircCnt)）をセットする（ステップ２２１４）。つまり、この場合には、時間を進ませる側で最も近い検知エリア（グリッド）が表示すべき領域となり、かつ、再生時間もそれに応じて進まされる。
【００６５】
その一方、ステップ２２１２でノー(No)と判断された場合には、新たな変数ｊとして、（iPos-i+iCircCnt）のiCircCntの剰余をセットし（ステップ２２１５）、CapArea[j]の検知状態Statが「１」であるかどうかを判断する（ステップ２２１６）。ステップ２２１６でイエス(Yes)と判断された場合には、ＣＰＵ１１は、検知判断用変数bHItを有効（TRUE）にセットし（ステップ２２１７）、かつ、新たな時間ITimeNewとして、（INowTime-i(1000/CircCnt)）をセットする（ステップ２２１８）。つまり、この場合には、時間を遅らせる側で最も近い検知エリア（グリッド）が表示すべき領域となり、かつ、再生時間もそれに応じて遅らせられる。
【００６６】
このような処理の後、図２３に示すように、ステップ２２０９〜ステップ２２１９の処理の結果、検知判断用変数bHitが無効（FALSE）でなければ、つまり、ユーザが指し示す検知エリアが変化しており（ステップ２３０１でイエス(Yes)）、かつ、新たな時間TimeNewが経過時間INowTimeと異なる場合には（ステップ２３０２でノー(No)）、ＣＰＵ１１は再生中尾データポインタを検知エリアに対応する時間にセットし（ステップ２３０３）、再生中データを更新する（ステップ２３０４）。ステップ２３０４においては、たとえば、発音中のデータの消音時間を変更する。つまり、OnBuf[i]のIOffTimeを、IOffTime-INowtime+ITimeNewに変更する。その後、ＣＰＵ１１は、経過時間INowTimeとして、新たな時間ITimeNewをセットする（ステップ２３０５）。その一方、ステップ２３０１にてノー(No)と判断された場合には、ＣＰＵ１１は、再生制御フラグbCrtlFlugを無効状態（FALSE）にセットする（ステップ２３０６）。
【００６７】
このような処理を実行する非接触制御装置において、ユーザが指などで放射状のグリッドを指し示して、その指の位置を変化させると、その画像が、ビデオカメラ１９により撮像される。その指の位置の変化に応じて、放射状のグリッドの現在位置が、再生中の楽曲を進める側や遅らせる側に変化し、それに応じて、楽曲の進行も進められ或いは遅らされる。指を時計回りおよび反時計回りに交互に動かせば、スクラッチと同様の効果を得ることができる。
【００６８】
このように、本実施の形態によれば、再生時刻を任意の時刻に直感的な動作で変化させることが可能となる。
【００６９】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【図面の簡単な説明】
【００７０】
【図１】図１は、本発明の実施の形態にかかる非接触制御装置のハードウェア構成を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかるＣＰＵの機能を示すブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる非接触制御装置にて実行されるメインフローを示すフローチャートである。
【図４】図４は、本実施の形態にて利用される楽曲データおよび再生中の楽曲制御データエリアに収容される再生中データの構成を示す図である。
【図５】図５は、本実施の形態おいて利用されるオーディオデータおよび再生中のオーディオ制御データエリアに収容される再生中データの構成を示す図である。
【図６】図６は、ＲＡＭに設けられたキャプチャ画像バッファおよび検知領域データの内容を示す図である。
【図７】図７は、本実施の形態にかかる画像解析・動作検知処理（図３のステップ３０４）をより詳細に説明するフローチャートである。
【図８】図８は、本実施の形態にかかる画像解析・動作検知処理（図３のステップ３０４）をより詳細に説明するフローチャートである。
【図９】図９は、本実施の形態にかかるコマンド実行判定をより詳細に示すフローチャートである。
【図１０】図１０は、本実施の形態にかかる再生ルーチン（図９のステップ１００１）をより詳細に示すフローチャートである。
【図１１】図１１は、ノートオン処理（図１０のステップ１００５）をより詳細に示すフローチャートである。
【図１２】図１２は、ノートオフ処理（図１０のステップ１００４）をより詳細に示すフローチャートである。
【図１３】図１３は、オーディオデータを再生する場合の再生ルーチンをより詳細に示すフローチャートである。
【図１４】図１４は、オーディオデータを再生する場合の再生ルーチンをより詳細に示すフローチャートである。
【図１５】図１５は、本実施の形態にかかる状態表示更新処理を示すフローチャートである。
【図１６】図１６は、本実施の形態にかかる状態表示更新処理を示すフローチャートである。
【図１７】図１７は、状態変更処理（図９のステップ９１７）をより詳細に示すフローチャートである。
【図１８】図１８は、状態変更処理（図９のステップ９１７）をより詳細に示すフローチャートである。
【図１９】図１９は、本実施の形態にかかる非接触制御装置の表示装置の画面上に表示された画像例を示す図である。
【図２０】図２０は、本実施の形態にかかる経過時刻の回転表示のための処理を示すフローチャートである。
【図２１】図２１は、本実施の形態にかかる非接触制御装置の表示装置の画面上に表示された他の画像例を示す図である。
【図２２】図２２は、本実施の形態にかかる再生速度コントロール処理を示すフローチャートである。
【図２３】図２３は、本実施の形態にかかる再生速度コントロール処理を示すフローチャートである。
【符号の説明】
【００７１】
１０      非接触制御装置
１１      ＣＰＵ
１２      ＲＡＭ
１３      ＲＯＭ
１４      入力装置
１５      表示装置
１６      ＭＩＤＩ  Ｉ／Ｆ
１７      オーディオＩ／Ｆ
１８      ビデオキャプチャＩ／Ｆ
１９      ビデオカメラ
２２      動作検知手段
２３      検知表示手段
２４      動作解析手段
２５      再生制御手段
【図１】
2005122786.tif 000003
【図２】
2005122786.tif 000004
【図３】
2005122786.tif 000005
【図４】
2005122786.tif 000006
【図５】
2005122786.tif 000007
【図６】
2005122786.tif 000008
【図７】
2005122786.tif 000009
【図８】
2005122786.tif 000010
【図９】
2005122786.tif 000011
【図１０】
2005122786.tif 000012
【図１１】
2005122786.tif 000013
【図１２】
2005122786.tif 000014
【図１３】
2005122786.tif 000015
【図１４】
2005122786.tif 000016
【図１５】
2005122786.tif 000017
【図１６】
2005122786.tif 000018
【図１７】
2005122786.tif 000019
【図１８】
2005122786.tif 000020
【図１９】
2005122786.tif 000021
【図２０】
2005122786.tif 000022
【図２１】
2005122786.tif 000023
【図２２】
2005122786.tif 000024
【図２３】
2005122786.tif 000025