JP4590851B2 - 非接触制御装置およびプログラム - Google Patents

非接触制御装置およびプログラム Download PDF

Info

Publication number
JP4590851B2
JP4590851B2 JP2003354632A JP2003354632A JP4590851B2 JP 4590851 B2 JP4590851 B2 JP 4590851B2 JP 2003354632 A JP2003354632 A JP 2003354632A JP 2003354632 A JP2003354632 A JP 2003354632A JP 4590851 B2 JP4590851 B2 JP 4590851B2
Authority
JP
Japan
Prior art keywords
display
time
data
reproduction
detection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003354632A
Other languages
English (en)
Other versions
JP2005122786A (ja
Inventor
淳一郎 副島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2003354632A priority Critical patent/JP4590851B2/ja
Publication of JP2005122786A publication Critical patent/JP2005122786A/ja
Application granted granted Critical
Publication of JP4590851B2 publication Critical patent/JP4590851B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Position Input By Displaying (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、映像を利用した非接触の動作で所望の指示を与え、必要な処理を実行することができる非接触制御装置に関する。
映像をもちいて制御対象物に対して何らかの指示を与える装置では、取り込んだ画像の差分をとって、特定の監視領域に変化があった場合に、制御対象物に対する特定の処理を実行するようになっている。たとえば、監視システムでは、特定の監視領域に変化があった場合に、特定の処理として、所定の者への通知のみが行われるように構成されている。
特開平6−301474号公報
たとえば、特許文献1には、上記監視領域の変化をゲームに応用する技術が開示されている。この技術では、ユーザがペンライトを振った状態をカメラが撮像し、撮像された画像中の複数の検出対象(特異点)の位置を検出して、検出された特異点の位置に基づく特定の物体(この場合は「剣」)を含むCG画像を生成するように構成されている。つまり、特許文献1においては、特定の処理は、特異点の位置に応じた物体を画像中に含ませることに相当する。このように従来技術においては、取り込んだ画像の変化に応じて、特定の単独の処理しか実行できないという問題点があった。
また、楽曲再生においては、再生中の楽曲の再生時刻を所望のように変化させる、つまり、再生時刻を進めたり遅らせたりを繰り返すスクラッチ効果が知られている。本来は、アナログレコードを時計回り或いは反時計回りに小刻みに動かすことでこのような効果音を発生させていたが、模擬的にセンサを配置した平面上に指を接触させてこれを動かすことで、再生時刻を変化させるような技術も提案されている。
本発明は、取り込んだ画像の変化が生じた位置に応じて、複数の処理のうち所定の処理を実行することができる非接触制御装置を提供することを目的とする。
また、本発明は、ユーザが画像を参照して、画像に接触することなく、ユーザが指し示す指などの変化にしたがって、再生中の楽曲の再生時刻を変化させることが可能な非接触制御装置を提供することを目的とする。
本発明の目的は、表示画面上に複数の表示エリアを有する表示手段と、この表示手段の表示画面上を撮像可能なカメラと、複数の楽音データ及び当該各楽音データを読み出すべきタイミングを表す再生時刻データから構成される楽曲データを記憶する記憶手段と、この記憶手段に記憶された楽曲データに対する再生開始指示に応答して、時刻の計時を開始する計時手段と、前記記憶手段に記憶されている複数の楽音データのうち、対応する再生時刻データが前記計時手段にて計時されている時刻と一致する楽音データを読み出すことにより、前記記憶された楽曲データを再生する再生手段と、前記複数の表示エリアのいずれかを前記計時手段にて計時された時刻の経過に対応して表示を変更させる表示制御手段と、前記カメラで撮像された前記複数の表示エリアの画像から、前記表示制御手段にて表示変更された表示エリア以外の表示エリアにおける表示変更を検知する検知手段と、この検知手段により表示変更が検知された場合に、前記計時手段にて計時された時刻を当該検知された表示エリアに対応する再生時刻に変更する再生時刻変更手段と、を具備する非接触制御装置により達成される。
好ましい実施態様においては、前記複数の表示エリアは、前記表示手段の表示画面上に放射状に配置され、前記表示制御手段は、前記計時手段にて計時された時刻の経過に対応して前記表示エリアを所定の方向に向けて順次ひとつずつ選択して表示変更するように構成されている。
別の好ましい実施態様においては、 前記時刻変更手段は、前記放射状に配置された複数の表示エリアを前記表示制御手段にて表示変更された表示エリアを中心に前記所定方向側とそれ以外に分けた場合、前記検知手段にて検知された表示エリアが、前記表示制御手段にて表示変更された表示エリアが前記所定方向側含まれているか否か判別する判別手段と、この判別手段により前記表示制御手段にて表示変更された表示エリアが前記所定方向側に含まれていると判別された場合は、前記計時手段にて計時された時刻を前記表示制御手段にて表示変更された表示エリアと前記検知手段にて検知された表示エリアとの間の差に基づいた時間分進めるとともに、含まれていないと判別された場合は、前記計時手段にて計時された時刻を前記差に基づいた時間分遅らせる時刻制御手段と、を有するように実現しても良い。
本発明によれば、取り込んだ画像の変化が生じた位置に応じて、複数の処理のうち所定の処理を実行することができる非接触制御装置を提供することが可能となる。
また、本発明によれば、ユーザが画像を参照して、画像に接触することなく、ユーザが指し示す指などの変化にしたがって、再生中の楽曲の再生時刻を変化させることが可能な非接触制御装置を提供することが可能となる。
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかる非接触制御装置のハードウェア構成を示すブロックダイヤグラムである。図1に示すように、本実施の形態にかかる非接触制御装置10は、パーソナルコンピュータなどにより実現でき、後述するシステム制御、再生制御、ピッチ抽出および表示を含む種々の処理を実行するCPU11と、処理過程で必要な変数、入力情報、出力データなどを一時的に記憶するRAM12と、CPU11にて実行される処理のプログラムや定数を記憶したROM13と、入力データや装置の機能開始/停止指示を行うための入力装置14と、処理結果、楽譜、スクロール表示およびインタフェースなどを表示する表示装置15と、CPU11が生成した発音情報を、外部音源に、音声情報として送出するMIDIインタフェース(I/F)16と、CPU11が生成した発音情報を音声として出力するオーディオI/F17と、ビデオカメラ19からの情報をディジタル化してディジタル画像データを得るビデオキャプチャI/F18とを備えている。上記プログラムはROM13に記憶されていることに限定されず、CD−ROMやDVD−ROMなど記憶媒体を読み出すことによりインストールされた後、ハードディスク装置に記憶され、或いは、外部からネットワークを介して非接触制御装置10にダウンロードされ、ハードディスク装置に記憶されていてもよい。
図2は、本実施の形態にかかるCPU11の機能を示すブロックダイヤグラムである。図2に示すように、CPU11は、ビデオキャプチャI/Fにて取得され、定期的に更新されるディジタル画像データを比較することで、後述する取り込み領域に変化があったことを検知する動作検知手段22、動作検知手段22により検知されたことを表示装置15の画面上に表示する検知表示手段23、取り込み領域に現れた変化に対する機器の動作を決定する動作解析手段24、ならびに、後述する楽曲データに基づいて、音のタイミングとその長さとから、現在時刻より発音すべきときや消音すべきときを判定し、判定結果に応じて、楽音の高さ情報および強さ情報をMIDI I/Fに送る再生制御手段25として機能する。再生制御手段は、楽曲データのほか、波形信号に対応するオーディオソースから所定の速度でデータを読み出し、オーディオI/F19に出力することもできる。
このように構成された非接触制御装置10における処理について以下に説明する。図3は、本実施の形態にかかる非接触制御装置10にて実行されるメインフローを示す。図3に示すように、たとえば電源が投入され、或いは、非接触制御装置10が起動されると、後述する各種変数が初期化され(ステップ301)、次いで、ビデオカメラ19により撮像され、ビデオキャプチャI/Fによりディジタル化されたデータおよび取り込み領域(以下、「検知領域」とも称する。)の画像が、表示装置15の画面上に表示される(ステップ302)。
次いで、CPU11は、ユーザからの入力を待ち(ステップ303)、ユーザ入力に基づく画像解析・動作検知を行う(ステップ304)。ユーザが終了指示をするまで、各コマンドが実行される(ステップ305、306)。本実施の形態において、ユーザによる入力は、ユーザがビデオカメラ19の前で動作し、ビデオカメラ19により撮像された画像が非接触制御装置10にディジタル画像データとして取り込まれることにより実現される。
図4は、本実施の形態にて利用される楽曲データおよび再生中の楽曲制御データエリアに収容される再生中データの構成を示す。楽曲データは、RAM12或いはROM13にあらかじめ収容されている。また、再生中データは、処理の過程において生成されRAM12に一時的に記憶される。
図4(a)に示すように、発音すべき楽音ごとに一群のデータを有する。これら一群のデータには、発音開始ティックITime、データタイプiType、ゲートタイムIGate、ノート番号Pitch、ベロシティVel、テンポ値iTempo、ノートポインタpNextとが含まれる。発音開始ティックは、発音を開始すべき時間を示す。また、データタイプが「0」であるときは、一群のデータがノートデータを表し、データタイプが「1」であるときは、一群のデータがテンポデータを表す。ゲートタイムはこの楽音を発音させるべき時間を表す。また、ノートポインタは次の楽音のノート番号Note[n]を示すポインタである。
図4(b)に示すように、楽音中データは、CPU11により楽音データから読み出され、一定の処理が施された上でRAM12に収容された、楽音ごとの一群のデータからなる。一群のデータには、発音開始ティックITime、消音時間IOffTime、ノート番号Pitchおよび楽曲データのポインタPNextが含まれる。消音時間は、(発音開始ティック+ゲートタイム)に相当する。
図5は、本実施の形態おいて利用されるオーディオデータおよび再生中のオーディオ制御データエリアに収容される再生中データの構成を示す。図5(a)に示すように、オーディオデータも、発音すべき波形のある時間における波形を示す一群のデータを含む。一群のデータには、発音開始時間ITime、ゲートタイムIGate、データ本体pDataおよびノートポインタpWavが含まれる。また、再生中データにおけるある時間における波形を示す一群のデータには、発音開始時間ITime、消音時間IOffTimeおよび楽曲データのポインタpWavが含まれる。
図6は、RAM12に設けられたキャプチャ画像バッファおよび検知領域データの内容を示す図である。キャプチャ画像バッファは、RAM12に設けられている。CPU11は、ビデオカメラ19によりキャプチャされ、かつ、ビデオキャプチャI/F18によりディジタル化された画像データされたに基づいて、以下に述べる形式のデータのデータを生成して、キャプチャ画像バッファに格納する。図6(a)に示すように、キャプチャ用画像バッファには、画素ごとに、当該画素を構成する一群のデータ、すなわち、画素のBlue値を示すColorB、画素のGreen値を示すColorGおよび画素のRed値を示すColorRを含む。ここで、本実施の形態において、キャプチャ画像は、図6(b)に示すように長方形であり、四隅の座標(0,0)、(sx,0)、(0,sy)、(sx,sy)により領域が特定される。
図6(c)は検知領域データを示す図である。検知領域データは、検知領域の座標データPosData、検知エリアのタイプType、コマンド内容Command、検知状態Stat、前回キャプチャ時の検知状態LastStat、および、前回キャプチャ時の画素の平均値LastColDataを含む。複数の検知領域があれば、上記一群のデータが検知領域の数だけ設けられる。
検知領域が長方形或いは矩形であれば、座標データは4組の座標から構成される。また、本実施の形態において、検知エリアのタイプは、当該検知エリアにて何らかが検知された場合に実行されるコマンドの種別を示す。たとえば、タイプ「0」は、通常コマンドを示し、タイプ「1」はテンポ状態エリアを示し、タイプ「2」は音量状態エリアを示し、また、タイプ「3」は進行状態エリアを示す。また、検知状態はフラグであり、「0」であれば検知していない(オフ)状態、「1」であれば検知している(オン)状態を示す。前回キャプチャ時の検知状態も同様である。つまり、本実施の形態においては、それぞれの検知領域に、テンポ状態、音量状態などを割り当てておき、その領域に一定の変化が現れたと判断された場合に、割り当てられた状態を変化させる処理が実行されるようになっている。
次に、図7および図8を参照して、本実施の形態にかかる画像解析・動作検知処理(図3のステップ304)をより詳細に説明する。まず、CPU11は、各種変数を初期化した(ステップ701)後、キャプチャ画像の画像データCapImg[][]を取得する。ここではすべての画素のデータが取得される。次いで、変数iが初期化された後、変数iと検知エリアの数であるNareaとが比較される(ステップ704)。「i<Narea」である場合(ステップ704でイエス(Yes))、画素データの輝度の合計値GraySumと検知エリアの画素数pxsとが初期化される(ステップ706)。次いで、検知エリアの画素検索が終了するまで、ステップ707〜ステップ709の処理が実行される。これらステップ707〜709においては、検知エリアごとに当該検知エリア中の画素の輝度が積算されている。ここで、GraySumが輝度の積算値(累算値)に相当する。ある検知エリアについて画素検索が終了すると(ステップ704でイエス(Yes))、テンポラリ値tmpColとして、輝度の積算値/検知エリアの画素数であるGraySum/pxsがセットされる(ステップ800)。この値は、検知エリアの輝度の平均値となる。次いで、CPU11は、当該テンポラリ値と、当該検知エリアの前回キャプチャ時の輝度の平均値LastColDataの差の絶対値を算出し、当該絶対値が、所定のオフセット値ColOffsetより大きいか否かを判断する(ステップ801)。CPU11は、ステップ801でイエス(Yes)と判断された場合には、当該検知エリアの検知状態Statに「1」をセットし(ステップ802)、その一方、ステップ801でノー(No)と判断された場合には、検知状態Statに「0」をセットする(ステップ803)。その後、検知されたエリアの色彩を変化させる描画処理が実行される(ステップ804)。次いで、CPU11は、テンポラリ値tmpColを当該検知エリアの前回キャプチャ時の輝度の平均値として格納し(ステップ805)、変数iをインクリメントして、次の検知領域の処理に進む。すべての検知エリアに関して処理が終了すると(ステップ704でノー(No))、後述するコマンド実行判定が行われる(ステップ807)。図9は、コマンド実行判定をより詳細に示すフローチャートである。
まず、変数が初期化され(ステップ901)、変数iが検知エリアの数Nareaと比較され(ステップ902)。ステップ902でイエス(Yes)と判断された場合には、CPU11は、その検知エリアのタイプTypeが「0」、つまり、「コマンド」であり、かつ、その検知状態Statが「1」であるかどうかを判断する(ステップ903)。ステップ903でイエス(Yes)と判断された場合、当該検知エリアのコマンドが「再生」であるか(ステップ904)、「一時停止」であるか(ステップ905)或いは「停止」であるか(ステップ906)が判断される。いずれのステップにおいてもノー(No)と判断された場合には、変数iがインクリメントされる。ステップ904でイエス(Yes)と判断され、かつ、再生中でなければ(ステップ908でノー(No))、再生ルーチンが起動される。また、ステップ905でイエス(Yes)と判断され、かつ、再生中であれば(ステップ910でイエス(Yes))、楽曲の再生が一時停止される(ステップ911)。また、ステップ906でイエス(Yes)と判断され、かつ、再生中であれば(ステップ912でイエス(Yes))、楽曲の再生が停止される(ステップ913)。
ステップ903でノー(No)と判断された場合にも、再生中であるかどうかが判断される(ステップ914)。再生中でない場合(ステップ914でノー(No))には、ステップ907に進む。これに対して、再生中であれば(ステップ914でイエス(Yes))、CPU11は、当該検知エリアのタイプを調べる(ステップ915)。たとえば、当該検知エリアのタイプが「1」または「2」であれば(ステップ915でイエス(Yes))、後述する状態変更判定処理が実行される(ステップ917)。すなわち、検知エリアが「テンポ状態」或いは「音量状態」であれば、テンポや音量の変更に関する処理が実行される。次いで、CPU11は、検知エリア中、「テンポ状態」或いは「音量状態」が割り当てられた最終位置のものに対応するように変数iを設定する(ステップ918)。また、当該検知エリアのタイプが「3」であれば(ステップ916でイエス(Yes))、当該検知エリアが「進行状態」であることがわかるため、再生速度コントロールが実行される(ステップ919)。その後、CPU11は、検知エリア中、「進行状態」が割り当てられた最終位置のものに対応するよう変数iを設定する(ステップ920)。
次に、ステップ909の再生ルーチンについて、図10を参照して詳細に説明する。まず、CPU11は、再生用の変数を初期化し(ステップ1001)、再生開始ノートをpNoteProgにセットするとともに、現在時刻をiBaseTimeにセットする(ステップ1002、1003)。ステップ1002では、最初の楽曲データを、再生用ノートポインタにセットしている。また、ステップ1003では再生開始時刻を保存している。
次いで、PNoteProgがヌル(NULL)で、かつ、再生中データ(図4(b)参照)のOnBuf[0]の楽音データのポインタpNoteがヌル(NULL)であれば処理を終了する。
それ以外の場合には(ステップ1004でノー(No))、CPU11は、経過時間をINowTimeにセットして、経過時刻でのティックをINowTimeに基づいて算出する(ステップ1006)。次いで、後述するノートオフ処理およびノートオン処理が実行される(ステップ1007、1008)。また、楽譜等を表示する必要があれば表示処理が実行される(ステップ1008)。その後、CPU11は、現在の処理時刻であるINowTimeを、前回の処理時刻ILastTimeとして記憶する(ステップ1010)。次いで、ポインタpNextを参照して、次の楽音についての処理に進む(ステップ1011)。
図11は、ノートオン処理(ステップ1005)をより詳細に示すフローチャートである。ノートオン処理においては、再生用ノートポインタPNoteProgがヌル(NULL)であれば(ステップ1101でイエス(Yes))処理が終了し、それ以外の場合には、PNoteProg中のデータタイプiTypeが「1」すなわち「テンポデータ」であるか否かが判断される(ステップ1102)。ステップ1102でイエス(Yes)と判断された場合には、現在のテンポを示すiTempoに、当該PNoteProgにかかるテンポデータiTempoを収容する(ステップ1103)。
ステップ1102でノー(No)と判断された場合には、現在の楽曲データについての再生時刻を越えているか否かが判断される(ステップ1104)。より具体的には、PNoteProgのITimeが、INowtickより大きいか否かが判断される。ステップ1104でイエス(Yes)と判断された場合には、CPU11は、MIDII/F16を介してノートオンを示す楽音データをMIDI信号として出力する(ステップ1106)。再生データであるOnBuf[i]がヌル(NULL)であれば(ステップ1107でノー(No))、変数iをインクリメントする。ステップ1107でノー(No)と判断された場合には、CPU11は、再生中データを作成する(ステップ1108)。より具体的には、ITimeとしてPNoteProgのITimeが与えられ、IOffTimeとして、PNoteProgのITimeと、IGateとの和が与えられる。また、PitchとしてPNoteProgのPitchが与えられる。また、次いで、処理対象となる楽音データpNoteProgが、pNextが示すものに設定される(ステップ1109)。
次に、図12は、ノートオフ処理(ステップ1004)をより詳細に示すフローチャートである。変数の初期化(ステップ1201)の後、再生中データOnBuf[i]がヌル(NULL)であれば処理を終了する(ステップ1202でノー(No))、それ以外の場合には、現在時刻が消音時間を超えていれば、つまり、IOffTime<INowTickであれば(ステップ1203でイエス(Yes))、CPU11は、MIDII/F16を介して、ノートオフを示す楽音データをMIDI信号として出力する(ステップ1204)。次いで、CPU11は、ノートオフにかかるOnBufのデータより時間的に後のデータを前に詰める処理を行う(ステップ1205)。その一方、ステップ1203でノー(No)と判断された場合には、変数iをインクリメントして(ステップ1206)、次のOnBuf[i]のデータについて処理を繰り返す。
たとえば、楽音データに基づく楽音再生の代わりに、オーディオデータを再生する場合にも類似する処理が実行される。図13および図14は、オーディオデータに関する図9のステップ909の再生ルーチンを示すフローチャートである。図13に示すように、CPU11は、変数を初期化した後(ステップ1301)、再生開始時間を保存するためにIBaseTimeに現在時刻をセットする(ステップ1302)。次いで、経過時間がINowTimeにセットされる(ステップ1303)。その後、消音処理(ステップ1304)が実行される。消音処理では変数iの初期化(ステップ1306)の後、再生中データOnWavが存在していなければ(ステップ1306でノー(No))、当該消音処理を終了させ、発音処理(図14)に進む。再生中データが存在しており、かつ、消音時間が経過していれば(ステップ1307でイエス(Yes))ば、CPU11は、発音中の楽音を消音するとともに、再生中データOnWavをバッファ中前に詰める処理を行う(ステップ1308、1309)。
図14に示すように、pWaveProgがヌル(NULL)であり、かつ、再生中データOnWav[0]もヌルであれば(ステップ1401でイエス(Yes))、データが存在しないため処理を終了する。その一方、ステップ1401でノー(No)であれば、発音時間になっていれば(ステップ1403でイエス(Yes))、発音処理をする(ステップ1404)。その後の処理(ステップ1405〜ステップ1409は、図11のステップ1106〜ステップ1110とほぼ同様である。
発音処理1402の後、たとえば、再生中の波形を表示する必要があれば、表示処理が実行される(ステップ1410)。次いで、現在時刻INowTimeが前回処理時刻ILastTimeとしてセットされる(ステップ1411)。
次に、ユーザの動きをキャプチャした画像データに基づいて、状態の表示を更新する表示更新処理について、図15および図16を参照して説明する。なお、この処理は、メインフロー1回ごとに実行されてもよいし、或いは、割り込み(たとえばタイマ割り込み)により実行されてもよい。この処理は、ユーザの動きに基づいて、画像中のどの検知エリアをさしているかを判断し、これに基づいて、再生中の楽曲のテンポや楽曲など状態の表示を更新するものである。
図15に示すように、楽曲が再生中であれば(ステップ1501でイエス(Yes))、CPU11は、一つの検知エリア(グリッド)あたりのテンポ値をvpiにセットする(ステップ1502)。ここに、ステップ1502において、MaxTempoはテンポ最大値(たとえば「128」)、iTempoCntは、テンポの設定に利用される検知エリア(グリッド)の個数である。次いで、CPU11は、現在のテンポ設定値におけるグリッドの位置、つまり、現在のテンポ設定値が何番目のグリッドであるかを判断し(ステップ1503)、グリッド検索用の変数iを初期化する(ステップ1504)。ステップ1503において、NowTempoは、現在のテンポ値を表す。
次いで、CPU11は、検索用変数iがテンポの設定に利用される検知エリアの個数iTempoCntに達するまで、当該変数iが現在のテンポ設定値のグリッドと等しければ(ステップ1506でイエス(Yes))、テンポの設定に利用される検知エリアの開始位置を示す開始インデックスiTempoStと変数iとの和に相当する位置のCapArea[i+iTempoSt]の検知状態Statに「1」を設定する(ステップ1507)。それ以外のグリッドについては、CPU11は、CapArea[i+iTempoSt]の検知状態Statに「0」を設定する(ステップ1508)。ここでは、現在設定されたテンポ値に相当するグリッドについて、検知状態「1」が設定され、他のグリッドについては検知状態「0」が設定される。
次いで、ボリュームについても同様の処理が実行される。より詳細には、図16に示すように、CPU11は、一つの検知エリア(グリッド)あたりの音量値をvpiにセットする(ステップ1601)。ここに、ステップ1601において、MaxVolは音量最大値(たとえば「128」)、iVolCntは、テンポの設定に利用される検知領域(グリッド)の個数である。次いで、CPU11は、現在の音量設定値におけるグリッドの位置を判断し(ステップ1602)、グリッド検索用の変数を初期化する(ステップ1603)。ステップ1602において、NowVolumeは、現在の音量値を表す。
CPU11は、検索用変数iが、音量の設定に利用される検知エリアの個数iVolCntに達するまで、検索用変数iがテンポの設定に利用される検知エリアの個数iTempoCntに達するまで、当該変数iが現在のテンポ設定値のグリッドと等しければ(ステップ1605でイエス(Yes))、音量の設定に利用される検知エリアの開始位置を示す開始インデックスiVolStと変数iとの和に相当する位置のCapArea[i+iVolSt]の検知状態Statに「1」を設定する(ステップ1606)。それ以外のグリッドについては、CPU11は、CapArea[i+iVolSt]の検知状態Statに「0」を設定する(ステップ1607)。ここでは、現在設定された音量値に相当するグリッドについて、検知状態「1」が設定され、他のグリッドについては検知状態「0」が設定される。
次に、図9のステップ917の状態変更処理について、より詳細に説明する。図17および図18は、状態変更処理を詳細に示すフローチャートである。楽曲が再生中であれば(ステップ1701でイエス(Yes))、CPU11は、一つの検知エリア(グリッド)あたりのテンポ値vpiにセットする(ステップ1702)。また、iPosに現在のテンポの設定値におけるグリッドの位置がセットされる(ステップ1703)。次いで、現在のテンポの設定値におけるグリッドに対応する検知エリアCapArea[iPos+iTempoSt]の検知状態Statが「1」であれば(ステップ1704でイエス(Yes))、CPU11は、テンポ値を変更せず(ステップ1713)、その後、テンポの設定に利用される他の検知エリアの検知状態を「0」にセットする(ステップ1714)。その一方、上記検知エリアCapArea[iPos+iTempoSt]の検知状態Statが「0」であれば、CPU11は、現在の設定値に最も近い値をセットする(ステップ1705)。
ステップ1705においては、「0≦iPos+i≦iTempoCnt」かつCapArea[iPos+iTempoSt+i]の検知状態Statが「1」であれば、iPosの値が「iPos+i」に更新される(ステップ1708、1709)。その一方、「0≦iPos-i≦iTempoCnt」かつCapArea[iPos+iTempoSt-i]の検知状態Statが「1」であれば、iPosの値が「iPos-i」にされる(ステップ1710、1711)。
なお、ステップ1714においては、テンポ設定に利用される先頭(iTempoSt)の検知エリアから、テンポ設定に利用される検知エリアの数だけ、ステップ1705で検知状態が「1」となった検知エリアCapArea[iPos+iTempoSt]を除き、その検知状態Statが「0」になる(ステップ1715〜1719)。
続いて、音量値についても同様の処理が実行される。CPU11は、一つの検知エリア(グリッド)あたりの音量値vpiにセットする(ステップ1801)。次いで、iPosに現在の音量の設定値におけるグリッドの位置がセットされる(ステップ1802)。次いで、現在の音量の設定値におけるグリッドに対応する検知エリアCapArea[iPos+iVolSt]の検知状態Statが「1」であれば(ステップ1803でイエス(Yes))、CPU11は、テンポ値を変更せず(ステップ1712)、その後、音量の設定に利用される他の検知エリアの検知状態を「0」にセットする(ステップ1812、1813)。その一方、上記検知エリアCapArea[iPos+iVolSt]の検知状態Statが「0」であれば、CPU11は、現在の設定値に最も近い値をセットする(ステップ1804)。
ステップ1804においては、「0≦iPos+i≦iVolCnt」かつCapArea[iPos+iVolSt+i]の検知状態Statが「1」であれば、iPosの値が「iPos+i」に更新される(ステップ1807、1808)。その一方、「0≦iPos-i≦iVolCnt」かつCapArea[iPos+iVolSt-i]の検知状態Statが「1」であれば、iPosの値が「iPos-i」にされる(ステップ1809、1810)。
なお、ステップ1813においては、音量設定に利用される先頭(iVolSt)の検知エリアから、音量設定に利用される検知エリアの数だけ、ステップ1705で検知状態が「1」となった検知エリアCapArea[iPos+iTempoSt]を除き、その検知状態Statが「0」になる(ステップ1814〜1818)。
図7および図8の処理、特にステップ1705およびステップ1804の処理により、再生される楽曲のテンポや音量が急激に変化することを防止できる。本実施の形態においては、現在の設定値にもっとも近い値をセットするように設定されているが、これに限定されるものではなく、変化した範囲において所定の値(たとえば、変化の中央値)に値がセットされるように構成されてもよい。
このような処理を実行することにより、本実施の形態においては、ユーザの以下の動作により、以下のような制御が実現可能となる。たとえば、図3の描画処理(ステップ302)により、図19に示すように、それぞれの機能が割り当てられた検知エリアを含む画像が、表示装置15の画面上に表示される。本実施の形態では、最上段に、左から「再生」、「一時停止」および「停止」ボタンとして機能する検知エリア、中段にテンポ設定のための検知エリア、最下段に音量設定のための検知エリアが設けられる。
ユーザが、表示装置15の画面上に表示された画像を参照して、所望の検知エリアを指などで指し示すと、ユーザが検知エリアを指し示している画像が、ビデオカメラ19により撮像される。無論、ユーザは検知エリアを指差せばよく、画面上に指を接触する必要はない。
ユーザが指し示した検知エリアは、画像解析・動作検知処理(図3のステップ304)で検知される。画像解析・動作検知処理(ステップ304および図7、8)では、画素の変化を捉えて、どの検知エリアが指し示されているかを判断し、それに応じてコマンド実行判定が実行される(図8のステップ807および図9)。ここで、機能に応じたコマンドが実行され、楽曲が再生され、或いは、再生中の一時停止や停止が可能となる。また、楽曲が再生中であれば、そのテンポや音量を変化させることも可能となる。
さらに、本実施の形態においては、図19に示す画像表示に加えて、或いは、選択により図19に示す画像の代わりに、画面上に放射型の検知エリアが表示され、これにより、楽曲再生の経過時間が表示でき、かつ、当該放射型のエリアをユーザが指し示すことにより、楽音再生速度を所望のように変更することができる。これにより、たとえば、再生中の楽音にスクラッチのような効果を付加することが可能である。本実施の形態では、放射状に配置された検知エリアの現在時刻表示を1秒間で一回転させている。時間はミリ秒(msec)で取得されるため、1000ミリ秒の剰余でグリッドが決定される。
図20は、本実施の形態にかかる経過時間の回転表示処理を示すフローチャートである。この処理は、たとえば、メインフロー(図3)において、各コマンドの実行処理(ステップ306)に引き続いて実行されれば良い。
CPU11は、再生中であれば(ステップ2001でイエス(Yes))、経過時間INowTimeを取得し(ステップ2002)、検知エリア(グリッド)の位置を算出する(ステップ2003)。ここでは、iPosに、経過時間INowTimeの1000の剰余(INowTime
mod 1000)を、「1000/iCircCnt(放射状の経過時間表示エリア、すなわち、検知エリアの個数)」で割ったものを設定する。
グリッド検索用の変数iが初期化された後(ステップ2004)、変数iが、検知エリアの数(検知エリアの開始インデックスiCircleSt+iCircCnt)に達するまで、以下の処理が実行される(ステップ2005およびステップ2009参照)。CPU11は、変数iがiPosと等しければ(ステップ2006でイエス(Yes))、CapArea[i]の検知状態Statを「1」にセットし(ステップ2007)、その一方、等しくなければ(ステップ2006でノー(No))、CapArea[i]の検知状態Statを「0」にセットする(ステップ2008)。
このような処理の後、CapArea[i]の検知状態にしたがって表示が更新される(ステップ2010)。図21は、表示装置15の画面上に表示された画像例を示す図である。図21に示すように、放射状に複数の検知エリアを兼用するグリッド群(符号2100参照)が設けられ、当該表示領域上、再生経過時間に相当するグリッドが他の色彩などで表示されている(符号2101参照)。ユーザが指にてこれらグリッドを指し示して、指を動かした場合に実行される再生速度コントロール処理(図9のステップ919)について、図22および図23を参照して説明する。おこでは、検知エリア(グリッド)での動作が検知された瞬間から、全てのグリッドで動作が検知されなくなる瞬間まで再生速度をコントロールする。実際の速度コントロールは、再生開始からの経過時間をグリッド上の検知位置に変更することで実現する。
CPU11は、再生中であれば(ステップ2201でイエス(Yes))、経過時間INowTimeを取得する(ステップ2202)。次いで、表示されている検知エリア(グリッド)の位置が算出される(ステップ2203)。ここでは、iPosに、経過時間INowTimeの1000の剰余(INowTime
mod 1000)を、「1000/iCircCnt(放射状の経過時間表示エリア、すなわち、検知エリアの個数)」で割ったものを設定する。
再生速度制御のためのフラグbCrtFlugが無効(FALSE)、つまり、速度コントロールが無効状態であれば(ステップ2204でノー(No))、ステップ2205に進み、有効状態であれば(ステップ2204でイエス(Yes))、ステップ2207に進む。
ステップ2205において、CPU11は、表示されている検知エリア(グリッド)について、CapArea[iPos]の検知状態Statが「1」であれば(ステップ2205でイエス(Yes))、再生制御フラグbCrtFlugを有効状態(TRUE)にセットし(ステップ2206)、ステップ2204に戻る。
ステップ2207では、CPU11は、検知判断用変数bHitを「FALSE」に初期化し(ステップ2207)、次いで、検知エリア(グリッド)のうち、現在表示されているものから最も近い検知エリアを検索する(ステップ2208)。まず、CPU11は、新たな時間TimeNewに経過時間INowTimeをセットするとともに、変数iを初期化する(ステップ2210)。次いで、変数iが検知エリア(グリッド)の個数の半分(iCirCnt/2)に達するまで以下の処理を実行する。
まず、CPU11は、新たに変数jとして、(iPos+i+iCircCnt)のiCircCntの剰余をセットし(ステップ2211)、CapArea[j]の検知状態Statが「1」であるかどうかを判断する(ステップ2212)。ステップ2212でイエス(Yes)と判断された場合には、CPU11は、検知判断用変数bHItを有効(TRUE)にセットし(ステップ2213)、かつ、新たな時間ITimeNewとして、(INowTime+i*(1000/CircCnt))をセットする(ステップ2214)。つまり、この場合には、時間を進ませる側で最も近い検知エリア(グリッド)が表示すべき領域となり、かつ、再生時間もそれに応じて進まされる。
その一方、ステップ2212でノー(No)と判断された場合には、新たな変数jとして、(iPos-i+iCircCnt)のiCircCntの剰余をセットし(ステップ2215)、CapArea[j]の検知状態Statが「1」であるかどうかを判断する(ステップ2216)。ステップ2216でイエス(Yes)と判断された場合には、CPU11は、検知判断用変数bHItを有効(TRUE)にセットし(ステップ2217)、かつ、新たな時間ITimeNewとして、(INowTime-i(1000/CircCnt))をセットする(ステップ2218)。つまり、この場合には、時間を遅らせる側で最も近い検知エリア(グリッド)が表示すべき領域となり、かつ、再生時間もそれに応じて遅らせられる。
このような処理の後、図23に示すように、ステップ2209〜ステップ2219の処理の結果、検知判断用変数bHitが無効(FALSE)でなければ、つまり、ユーザが指し示す検知エリアが変化しており(ステップ2301でイエス(Yes))、かつ、新たな時間TimeNewが経過時間INowTimeと異なる場合には(ステップ2302でノー(No))、CPU11は再生中尾データポインタを検知エリアに対応する時間にセットし(ステップ2303)、再生中データを更新する(ステップ2304)。ステップ2304においては、たとえば、発音中のデータの消音時間を変更する。つまり、OnBuf[i]のIOffTimeを、IOffTime-INowtime+ITimeNewに変更する。その後、CPU11は、経過時間INowTimeとして、新たな時間ITimeNewをセットする(ステップ2305)。その一方、ステップ2301にてノー(No)と判断された場合には、CPU11は、再生制御フラグbCrtlFlugを無効状態(FALSE)にセットする(ステップ2306)。
このような処理を実行する非接触制御装置において、ユーザが指などで放射状のグリッドを指し示して、その指の位置を変化させると、その画像が、ビデオカメラ19により撮像される。その指の位置の変化に応じて、放射状のグリッドの現在位置が、再生中の楽曲を進める側や遅らせる側に変化し、それに応じて、楽曲の進行も進められ或いは遅らされる。指を時計回りおよび反時計回りに交互に動かせば、スクラッチと同様の効果を得ることができる。
このように、本実施の形態によれば、再生時刻を任意の時刻に直感的な動作で変化させることが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
図1は、本発明の実施の形態にかかる非接触制御装置のハードウェア構成を示すブロックダイヤグラムである。 図2は、本実施の形態にかかるCPUの機能を示すブロックダイヤグラムである。 図3は、本実施の形態にかかる非接触制御装置にて実行されるメインフローを示すフローチャートである。 図4は、本実施の形態にて利用される楽曲データおよび再生中の楽曲制御データエリアに収容される再生中データの構成を示す図である。 図5は、本実施の形態おいて利用されるオーディオデータおよび再生中のオーディオ制御データエリアに収容される再生中データの構成を示す図である。 図6は、RAMに設けられたキャプチャ画像バッファおよび検知領域データの内容を示す図である。 図7は、本実施の形態にかかる画像解析・動作検知処理(図3のステップ304)をより詳細に説明するフローチャートである。 図8は、本実施の形態にかかる画像解析・動作検知処理(図3のステップ304)をより詳細に説明するフローチャートである。 図9は、本実施の形態にかかるコマンド実行判定をより詳細に示すフローチャートである。 図10は、本実施の形態にかかる再生ルーチン(図9のステップ1001)をより詳細に示すフローチャートである。 図11は、ノートオン処理(図10のステップ1005)をより詳細に示すフローチャートである。 図12は、ノートオフ処理(図10のステップ1004)をより詳細に示すフローチャートである。 図13は、オーディオデータを再生する場合の再生ルーチンをより詳細に示すフローチャートである。 図14は、オーディオデータを再生する場合の再生ルーチンをより詳細に示すフローチャートである。 図15は、本実施の形態にかかる状態表示更新処理を示すフローチャートである。 図16は、本実施の形態にかかる状態表示更新処理を示すフローチャートである。 図17は、状態変更処理(図9のステップ917)をより詳細に示すフローチャートである。 図18は、状態変更処理(図9のステップ917)をより詳細に示すフローチャートである。 図19は、本実施の形態にかかる非接触制御装置の表示装置の画面上に表示された画像例を示す図である。 図20は、本実施の形態にかかる経過時刻の回転表示のための処理を示すフローチャートである。 図21は、本実施の形態にかかる非接触制御装置の表示装置の画面上に表示された他の画像例を示す図である。 図22は、本実施の形態にかかる再生速度コントロール処理を示すフローチャートである。 図23は、本実施の形態にかかる再生速度コントロール処理を示すフローチャートである。
符号の説明
10 非接触制御装置
11 CPU
12 RAM
13 ROM
14 入力装置
15 表示装置
16 MIDI I/F
17 オーディオI/F
18 ビデオキャプチャI/F
19 ビデオカメラ
22 動作検知手段
23 検知表示手段
24 動作解析手段
25 再生制御手段

Claims (4)

  1. 表示画面上に複数の表示エリアを有する表示手段と、
    この表示手段の表示画面上を撮像可能なカメラと、
    複数の楽音データ及び当該各楽音データを読み出すべきタイミングを表す再生時刻データから構成される楽曲データを記憶する記憶手段と、
    この記憶手段に記憶された楽曲データに対する再生開始指示に応答して、時刻の計時を開始する計時手段と、
    前記記憶手段に記憶されている複数の楽音データのうち、対応する再生時刻データが前記計時手段にて計時されている時刻と一致する楽音データを読み出すことにより、前記記憶された楽曲データを再生する再生手段と、
    前記複数の表示エリアのいずれかを前記計時手段にて計時された時刻の経過に対応して表示を変更させる表示制御手段と、
    前記カメラで撮像された前記複数の表示エリアの画像から、前記表示制御手段にて表示変更された表示エリア以外の表示エリアにおける表示変更を検知する検知手段と、
    この検知手段により表示変更が検知された場合に、前記計時手段にて計時された時刻を当該検知された表示エリアに対応する再生時刻に変更する再生時刻変更手段と、
    を具備する非接触制御装置。
  2. 前記複数の表示エリアは、前記表示手段の表示画面上に放射状に配置され、
    前記表示制御手段は、前記計時手段にて計時された時刻の経過に対応して前記表示エリアを所定の方向に向けて順次ひとつずつ選択して表示変更する請求項1に記載の非接触表示装置。
  3. 前記時刻変更手段は、
    前記放射状に配置された複数の表示エリアを前記表示制御手段にて表示変更された表示エリアを中心に前記所定方向側とそれ以外に分けた場合、前記検知手段にて検知された表示エリアが、前記表示制御手段にて表示変更された表示エリアが前記所定方向側含まれているか否か判別する判別手段と、
    この判別手段により前記表示制御手段にて表示変更された表示エリアが前記所定方向側に含まれていると判別された場合は、前記計時手段にて計時された時刻を前記表示制御手段にて表示変更された表示エリアと前記検知手段にて検知された表示エリアとの間の差に基づいた時間分進めるとともに、含まれていないと判別された場合は、前記計時手段にて計時された時刻を前記差に基づいた時間分遅らせる時刻制御手段と、
    を有する請求項2記載の非接触表示装置。
  4. 表示画面上に複数の表示エリアを有する表示手段と、この表示手段の表示画面上を撮像可能なカメラと、複数の楽音データ及び当該各楽音データを読み出すべきタイミングを表す再生時刻データから構成される楽曲データを記憶する記憶手段と、を有する非接触表示装置として用いられるコンピュータに、
    この記憶手段に記憶された楽曲データに対する再生開始指示に応答して、時刻の計時を開始する計時ステップと、
    前記記憶手段に記憶されている複数の楽音データのうち、対応する再生時刻データが前記計時されている時刻と一致する楽音データを読み出すことにより、前記記憶された楽曲データを再生する再生ステップと、
    前記複数の表示エリアのいずれかを前記計時された時刻の経過に対応して表示を変更させる表示制御ステップと、
    前記カメラで撮像された前記複数の表示エリアの画像から、前記表示変更された表示エリア以外の表示エリアにおける表示変更を検知する検知ステップと、
    この表示変更が検知された場合に、前記計時された時刻を当該検知された表示エリアに対応する再生時刻に変更する再生時刻変更ステップと、
    を実行させるプログラム。
JP2003354632A 2003-10-15 2003-10-15 非接触制御装置およびプログラム Expired - Fee Related JP4590851B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003354632A JP4590851B2 (ja) 2003-10-15 2003-10-15 非接触制御装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003354632A JP4590851B2 (ja) 2003-10-15 2003-10-15 非接触制御装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2005122786A JP2005122786A (ja) 2005-05-12
JP4590851B2 true JP4590851B2 (ja) 2010-12-01

Family

ID=34612480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003354632A Expired - Fee Related JP4590851B2 (ja) 2003-10-15 2003-10-15 非接触制御装置およびプログラム

Country Status (1)

Country Link
JP (1) JP4590851B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214153A (ja) * 1996-11-26 1998-08-11 Sony Corp 情報入力方法及び情報入力装置
JPH1139120A (ja) * 1997-07-16 1999-02-12 Victor Co Of Japan Ltd コンテンツ表示・選択装置及びコンテンツ表示・選択方法、並びにコンテンツ表示・選択方法のプログラムが記録された記録媒体
JPH1185386A (ja) * 1997-09-05 1999-03-30 Toshiba Corp 撮像モジュール、および撮像装置
JP2003030932A (ja) * 2001-05-10 2003-01-31 Yamaha Corp 動画再生装置及び動画再生方法
JP2003044046A (ja) * 2001-07-30 2003-02-14 Sony Corp 情報処理装置及び情報処理方法、並びに記憶媒体

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214153A (ja) * 1996-11-26 1998-08-11 Sony Corp 情報入力方法及び情報入力装置
JPH1139120A (ja) * 1997-07-16 1999-02-12 Victor Co Of Japan Ltd コンテンツ表示・選択装置及びコンテンツ表示・選択方法、並びにコンテンツ表示・選択方法のプログラムが記録された記録媒体
JPH1185386A (ja) * 1997-09-05 1999-03-30 Toshiba Corp 撮像モジュール、および撮像装置
JP2003030932A (ja) * 2001-05-10 2003-01-31 Yamaha Corp 動画再生装置及び動画再生方法
JP2003044046A (ja) * 2001-07-30 2003-02-14 Sony Corp 情報処理装置及び情報処理方法、並びに記憶媒体

Also Published As

Publication number Publication date
JP2005122786A (ja) 2005-05-12

Similar Documents

Publication Publication Date Title
US7221852B2 (en) Motion picture playback apparatus and motion picture playback method
JP4127561B2 (ja) ゲーム装置、操作評価方法、および、プログラム
US8785761B2 (en) Sound-generation controlling apparatus, a method of controlling the sound-generation controlling apparatus, and a program recording medium
US9861892B2 (en) Music game which changes sound based on the quality of players input
US20220293073A1 (en) Signal processing device, signal processing method, and program
JP2006255072A (ja) プログラム、情報記憶媒体及びゲームシステム
JP4673303B2 (ja) タイミング・オフセット許容型カラオケゲーム
JP2001215963A (ja) 音楽演奏装置、音楽演奏ゲーム装置及び記録媒体
US20070261539A1 (en) Music reproducing program and music reproducing apparatus
JP4590851B2 (ja) 非接触制御装置およびプログラム
JP2009131360A (ja) 携帯端末、プログラム及び情報記憶媒体
JP2003309814A5 (ja)
JPH1031488A (ja) 旋律合成装置及び旋律合成方法並びに情報記録媒体
JP6836877B2 (ja) 吹奏楽器の練習支援装置及び練習支援方法
JP5318016B2 (ja) ゲームシステム、ゲームシステムの制御方法、及びプログラム
JP2005122342A (ja) 非接触制御装置およびプログラム
JP2002175071A (ja) 演奏ガイド方法、演奏ガイド装置および記録媒体
JP3849132B2 (ja) ゲーム装置およびゲーム処理方法ならびにプログラムを記録した記録媒体
JP7347937B2 (ja) 情報処理装置及び情報処理システム
JP6065871B2 (ja) 演奏情報表示装置、および演奏情報表示プログラム
JPH10143151A (ja) 指揮装置
CN111782865A (zh) 音频信息的处理方法、装置及存储介质
KR100404917B1 (ko) 영상가요 반주기능 복합형 운동용 게임시스템
JP3303608B2 (ja) 自動演奏装置
JPH11149565A (ja) 画像音響処理装置、画像音響処理方法および記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100325

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100817

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100830

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees