JP4337288B2 - Performance operation display device and program - Google Patents

Performance operation display device and program Download PDF

Info

Publication number
JP4337288B2
JP4337288B2 JP2001237820A JP2001237820A JP4337288B2 JP 4337288 B2 JP4337288 B2 JP 4337288B2 JP 2001237820 A JP2001237820 A JP 2001237820A JP 2001237820 A JP2001237820 A JP 2001237820A JP 4337288 B2 JP4337288 B2 JP 4337288B2
Authority
JP
Japan
Prior art keywords
data
finger
variable
key
value
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
JP2001237820A
Other languages
Japanese (ja)
Other versions
JP2003050577A (en
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 JP2001237820A priority Critical patent/JP4337288B2/en
Publication of JP2003050577A publication Critical patent/JP2003050577A/en
Application granted granted Critical
Publication of JP4337288B2 publication Critical patent/JP4337288B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、鍵盤などの演奏操作の対象となる演奏操作子群に対し、演奏の進行に応じて操作していく際の動作を表示するための技術に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
現在では、多くの鍵盤楽器に、演奏の進行に応じて押鍵(操作)すべき鍵を順次、ユーザ(演奏者)に通知していくナビゲーション機能が搭載されている。しかし、ナビゲーション機能を利用するユーザの多くは技術的に未熟であり、そのナビゲーション機能によって次に押鍵すべき鍵を知ることができても、その鍵をどの指で押鍵すべきかが判らないのが実状である。このことから、鍵の押鍵に使うべき指を表示する装置(演奏動作表示装置)を搭載した鍵盤楽器も製品化されている。その演奏動作表示装置を利用することにより、指の運び方を意識した演奏を行えるため、ユーザにとってはより効率的な練習(学習)を行うことができる。
【0003】
演奏動作表示装置の多くは、次の押鍵(操作)に使うべき指を単に表示するだけである。しかし、押鍵(操作)すべき鍵への指の運び方は、その鍵に単に指を運ぶだけではない。別の指の下をくぐらせて指を運んだり、別の指の上をまたいで指を運んだりすることもある。これは、単に指だけを表示した場合、その指をどのように運んで押鍵(操作)するべきなのかをユーザが直ちに理解できるとは限らないことを意味する。このことから、例えば特開平10−39739号公報に開示されているように、使う指だけでなく、その指の運び方をより理解しやすい形で表示する演奏動作表示装置が創案されている。
【0004】
その特開平10−39739号公報に開示された従来の演奏動作表示装置では、押鍵時の手指(手首から先の部分)を表示することにより、押鍵に使うべき指をどのような形で使うべきかをユーザに知らせるようになっている。しかし、次に押鍵すべき鍵が現在、押鍵している鍵と離れているような場合、普通、手や指を大きく動かさなければならない。これは、押鍵時の手指を表示しても、その表示された手指の形にどのようにして移行させるのかをユーザが直ちに理解できるとは限らないことを意味する。このため、従来の演奏動作表示装置には、全体的な手指の動作が判りにくいという問題点があった。
【0005】
なお、上記従来の演奏動作表示装置では、コンピュータ・グラフィクス(以降、CGと略記する)技術を用いて、押鍵に使う指を動かしている。その指の動きにより、押鍵に使うべき指をユーザは知ることができる。しかし、その指の動きは、押鍵時の手指の形を作った後の動きである。このため、その指の動きによって、押鍵時の手指の形にどのようにして移行させるかをユーザに知らせることはできない。
【0006】
本発明の課題は、演奏中における手指の動作をユーザが容易に理解できる形で表示するための技術を提供することにある。
【0007】
本発明の演奏動作表示装置は、演奏の進行に応じて演奏者が鍵盤を操作していく際の手指の動作画像を鍵盤画像とともに表示する装置であることを前提とし、鍵盤上で発生させるべきイベントの内容を表すイベントデータ、該イベントデータの発生タイミングを示す時間データ、及び該イベントの発生に使用すべき指を指定する指データから構成される楽音・運指データが複数個集合してなる演奏データを取得する演奏データ取得手段と、演奏データ取得手段が取得した演奏データに基づいて、前記鍵盤の鍵を押鍵するとき、或いは離鍵した後の手指の位置を、前記楽音・運指データ単位で決定する状態決定手段と、その状態決定手段が決定した手指の位置に順次移行させることにより、鍵盤を操作していく手指の動作を動画表示する動画表示手段とを具備し、状態決定手段は、押鍵するときの手の位置を決定したら、該手の位置と押鍵に使用すべき指と押鍵すべき鍵とに基づいて、指を接触させる鍵上の位置を、予め定められた複数の基準位置の中から一つ選択することを特徴とする。
【0011】
本発明のプログラムは、上記演奏動作表示装置を実現させるための機能を実現させるものである。そのプログラムは、以下のような機能を実現させる。
鍵盤上で発生させるべきイベントの内容を表すイベントデータ、該イベントデータの発生タイミングを示す時間データ、及び該イベントの発生に使用すべき指を指定する指データから構成される楽音・運指データが複数個集合してなる演奏データを取得する機能と、取得する機能により取得した演奏データに基づいて、鍵盤の鍵を押鍵するとき、或いは離鍵した後の手指の位置を、楽音・運指データ単位で決定する機能と、決定する機能により決定した手指の位置に順次移行させることにより、鍵盤を操作していく手指の動作を動画表示する機能とを実現させるためのプログラムであって、決定する機能は、押鍵するときの手の位置を決定したら、該手の位置と押鍵に使用すべき指と押鍵すべき鍵とに基づいて、指を接触させる鍵上の位置を、予め定められた複数の基準位置の中から一つ選択することを特徴とする。
【0014】
本発明では、鍵盤上の鍵に指を接触させるうえで基準となる基準位置を予め複数定めておき、押鍵のために指を鍵に接触させる位置を、手の位置と使用すべき指と押鍵すべき鍵とに基づいて、予め定められた基準位置のなかから一つ選択して決定する。そのようにして、指の接触位置を決定する範囲を制限することにより、各指が取れる状態は制限され(選択肢が少なくなり)、接触位置を決定するうえで必要な計算量は少なくなる。この結果、接触位置をより容易、且つ短時間に決定することが可能となる。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態による演奏動作表示装置の回路構成図である。この演奏動作表示装置は、後述する楽音・運指データを外部から取得し、取得した楽音・運指データに基づいて演奏中の手指の動作を動画で表示する装置として実現されている。
【0016】
上記演奏動作表示装置は、図1に示すように、装置全体の制御を行うCPU101と、そのCPU101が実行するプグラムや各種制御データ(画像表示用の各種データを含む)などを格納したROM102と、そのCPU101がワーク用に用いるRAM103と、上記楽音・運指データを含む各種データを取得するためのデータ入力部104と、CPU101から送られたデータを画面上に表示する表示部105と、ユーザが操作の対象とする操作部106と、CPU101の指示に従って楽音の波形データを生成する音源107と、その音源107が出力した波形データをサウンドに変換して放音するサウンドシステム108と、CPU101を各部102〜107と接続するバス109と、を備えて構成されている。
【0017】
上記データ入力部104は、例えばフレキシブルディスクドライブ(FDD)である。表示部105は、例えばCRT、或いは液晶表示装置などの表示装置である。操作部106は、例えば各種スイッチやキー等の複数の操作子、及びそれら操作子への操作を検出する検出回路から構成された入力装置である。サウンドシステム108は、例えばD/Aコンバータ、アンプ、及びスピーカからなるシステムである。なお、データ入力部104は、外部機器が出力した信号を少なくとも受信できるインターフェース、或いは所定のネットワークとの通信を行う通信制御装置であっても良い。
【0018】
上記楽音・運指データは、図2に示すように、楽音データに運指データを付加する形で構成されている。楽音データは、通常は演奏の再生に使用される演奏データ(シーケンスデータ)であり、楽音の音階(音高)データ、その楽音の発音が開始(ノートオンイベント)か消音(ノートオフイベント)かを含むイベントの種別を表す種別データ、及び楽音の音高データと種別データによって特定されるイベントが発生したタイミングを示す時間データを1単位のデータ(以降、便宜的に単位楽音データと呼ぶ)として、その単位楽音データをイベントの発生順に並べた形で構成されている。運指データは、単位楽音データ毎に付加された、その単位楽音データが表すイベントを発生させるために用いるべき指を示す指番号データからなるデータである。指番号として、親指には0、人差し指には1、中指には2、薬指には3、小指には4がそれぞれ割り当てられている。
【0019】
上記運指データには、通常、指番号データの他に、少なくとも、動かす指が右手か左手かを示す手データが存在し、単位楽音データ毎に、それらのデータが付加される。しかし、ここでは、混乱を避けて理解を容易とするために、右手のみに着目して手データ等は考慮しないことにする。上記時間データは、イベント間の時間間隔(デルタタイム)でそのイベントの発生タイミングを表すデータであり、種別データ、及び音高データは、例えばMIDIデータを構成するデータである。
【0020】
なお、上記楽音データ(演奏データ)では、楽音の発音開始(オン)、その楽音の消音(オフ)をそれぞれ別のイベントとして扱い、楽音の発音期間はそれらのイベントによって指定されるようになっているが、楽音データはそれらのイベントを一つにまとめたものであっても良い。即ち単位楽音データは、例えば音高データ、その音高データで指定される楽音の発音開始タイミングを指定する時間データ、及びその楽音を発音させている時間長(ゲートタイム)を指定する時間長データから構成されるものであっても良い。このことから明らかなように、楽音データの形式は特に限定されるものではない。
【0021】
以上の構成において、その動作を説明する。
CPU101は、電源がオンされると、ROM102に格納されているプログラムを読み出して実行することにより、装置全体の制御を開始し、表示部105には初期画面を表示させる。以降は、ユーザの操作部106への操作に応じて制御を行う。
【0022】
CPU101は、その初期画面を表示させるための画像データを、例えばRAM103を作業用に使用して、ROM102から読み出した複数の画像データを用いて生成する。そのようにして生成された初期画面の画像データを送られた表示部105は、それを特には図示しないメモリ(例えばデュアルポートRAM)に格納する。それ以降における表示内容の全体的、或いは部分的な変更は、例えばCPU101が、そのメモリに格納された画像データ中でデータを書き換えるべき部分の画像データをROM102から読み出すか、或いはそれを用いて生成し、そのようにして得た画像データを、そのメモリ中の画像データを書き換えるべき部分に上書きすることで行われる。そのようにして、CPU101は、表示部105に、表示すべき画面やメッセージ、後述する演奏動作を表現する手指などを必要に応じて表示させる。
【0023】
ユーザが操作部106を操作してフレキシブルディスク(FD)に格納されたファイルのデータの読み出しを指示した場合、その旨を示すデータが操作部106からバス109を介してCPU101に送られる。そのデータを受け取ったCPU101は、データ入力部(FDD)104に対しそれの読み出しを指示するコマンドを送り、その後にデータ入力部104から送られるそのファイルのデータをRAM103に格納する。そのようにして、楽音・運指データを含め、ユーザが指定したデータをファイル単位でFDから取得する。
【0024】
CPU101にデータを読み出させるファイルの指定は、特に詳細な説明は省略するが、操作部106を操作してファイル名を入力するか、或いはFDに格納されたファイルの一覧を表示部105に表示させて、そのなかからファイルを選択することで行うようになっている。その一覧に表示させるファイル名は、CPU101が、データ入力部104にFDに格納されたファイル名を読み出させて受け取ったものである。
【0025】
特開平10−39739号公報に開示された従来の演奏動作表示装置のように、基本的には押鍵時における手指の形だけを表示させるのでは、その形に移行するまでの手指の動かし方をユーザは理解しにくい。このことから、本実施の形態では、イベント単位で、それまでの手指の状態から、そのイベントを生じさせる手指の状態に移行するまでの動作を動画で表示するようにしている。即ち手をどこからどこまで移動させるか、どの指の状態をどのように変化せるか、といったことを動画で表示するようにしている。そのようにして、演奏中における一連の手指の動作を細かく表示した場合、どのように手指を動作させれば良いのかを考えさせることなくユーザに理解させることができる。
【0026】
演奏中における手指の動作を動画で表示させるためには、そのためのデータ(以降、動作制御データと呼ぶ)を生成しなければならない。そのデータは、楽音・運指データから生成するが、対象となる楽音・運指データによってはその生成に重い負荷がかかる。これは、動作制御データを生成しつつ、楽音・運指データ(楽音データ)を再生させようとすると、楽音の発音や画像の表示に不具合を生じさせる可能性があることを意味する。即ち、楽音を発音させるべきタイミングで発音させられなかったり、手指の動作をスムーズに表示させられないといったことが生じる可能性がある。このことから、本実施の形態では、動作制御データの生成は楽音・運指データの再生とは別に行うようにしている。
【0027】
動作制御データの生成は、例えばRAM103にファイル形式で格納された楽音・運指データを対象に行うようにしている。ユーザが操作部106を操作して、RAM103に格納された楽音・運指データのなかから一つを指定(選択)し、動作制御データの生成を指示した場合、CPU101は、以下のようにしてユーザが指定した楽音・運指データの動作制御データを生成する。なお、楽音・運指データの指定方法は、基本的にFDから読み出すファイルを指定する場合と同じである。
【0028】
図3は、表示用の手指の構造を説明する図である。
身体の各部は、関節を曲げて動かすことができる。これは、手指においても同じである。このことから、本実施の形態では、図3に示すように、手首から先を、手と5本の指に分けている。各指は、3関節の曲げ動作が行えることから、3つの部分に更に分けている。以降、表示する手指については、実際の手指のそれと区別するために「パート」を最後に付けて表記することにする。指の関節については、手に近いほうから第1関節、第2関節、第3関節と呼ぶことにする。
【0029】
図3中の301〜306は、各部分を動かすうえでの基点である。具体的には、基点301は手パートの基点であり、手首(の関節)に対応する。基点302は親指パートの基点であり、その第1関節に対応する。基点303〜306は、それぞれ、人差し指パート、中指パート、薬指パート、及び小指パートの基点であり、対応している指の第1関節に対応する。
【0030】
手パートの状態は、基点301のx、y、z軸上における各位置hx、hy、hzの他に、z軸の周りの回転角hrzで管理している。それらを示す値は、それぞれ、用意した変数に代入させることで保持させている。それにより、3次元で手指の動きを表現するようになっている。z軸の周りの回転角hrzは、手パートの基点301から中指パートの基点304までの長さLaをy軸上に投影させた際に、基点304が投影されたy軸上の位置から基点301が投影されたy軸上の位置を引いて得られる長さがその長さLaと一致する状態が基準(0度)である(図6(b)参照)。例えば図3に向かって左回りが正、右回りが負である。そのようにして、図3中の鍵盤300との相対的な位置関係を任意に変更できるようにしている。なお、x軸、或いは/及び、y軸の周りの回転角を更に考慮しても良い。上記hx、hy、hz、及びhrzを保持させる変数については、以降そのシンボルを最後に付加して表記する(変数hx、等)ことにする。
【0031】
各指には、上記したように3つの関節がある。このことから、第1関節だけでなく、第2及び第3関節も基点とし、第1関節と第2関節間、第2関節と第3関節間、及び第3関節から先を、それぞれ一つのパートとしている。ここでは、それらのパートをそれぞれ、指第1パート、指第2パート、及び指第3パートと呼ぶことにする。それらの長さL1、L2、及びL3は、指毎にその長さが異なることから、各指パート毎に定めている。
【0032】
指の第1関節は2方向(曲げたり伸ばしたりする方向と、開いたり閉じたりする方向)に動き、他の第2、及び第3関節は一方向にのみ動く。このことから、指第1パートの状態は、第1関節に対応する基点上におけるz軸の周りの回転角frzと、手の甲から手のひらに向けてそれを折り曲げた角度frx1とで管理している。指第2パート、及び指第3パートは、それぞれ、第2関節、及び第3関節に対応する基点上において、それを手の甲から手のひらに向けて折り曲げた角度frx2、及びfrx3で管理している。そのようにして、指の間を広げたり狭めたり、指を伸ばしたり曲げたりといった動作を模倣できるようにしている。なお、指第1〜第3パートの状態を管理するための角度frx1〜frx3は、例えば基点を介してつながっている2つのパートが直線となる状態を基準(0度)として表したものである(図6(a)参照)。このため、例えば手の甲と指の第2関節までが直線状となった状態では、角度frx1は0となる。以降は、角度frx1〜3の何れかを変化させる動きを指(指パート)の縦の動き、回転角frzを変化させる動きを指(指パート)の横の動きとも呼ぶことにする。
【0033】
上記frz、及びfrx1〜3の値は、それぞれ、用意した変数に代入させることで保持させている。それらの値は各指パート毎に保持しなければならないことから、その変数は配列変数とし、指番号で指定される要素に、対応する値を代入させている。以降、frz、及びfrx1〜3を保持させる配列変数も、そのシンボルを最後に付加して表記する(配列変数frz、等)ことにする。
【0034】
各指パートの基点302〜306は、手パートの基点(手首)301の位置の変化に伴って移動する。上記したように、各指パートは人間の指を模倣した動きを表現させることができる。このため、鍵盤300上の任意の鍵を押鍵するために手を移動させる動作や、鍵を押鍵、或いは離鍵する指の動作、それらを組み合わせた動作を動画で表現することができる。その表現は、鍵盤300を操作していく手指の各パートの動作を表示することで行うことから、鍵盤300上の白鍵や黒鍵のサイズやその並び、各鍵間の位置関係、などのデータは予め変数などの形で用意している。
【0035】
図4は、手の移動範囲を説明する図である。手パートは基点301によってその表示状態を管理している。図4は、その基点301の位置として取りうる範囲を示したものである。
鍵盤と手首との間のy軸上における距離は、押鍵するのが白鍵か黒鍵かで異なる。当然のことながら、黒鍵を押鍵する場合は白鍵を押鍵する場合と比較して距離は小さくなる。鍵を押鍵する指によっても異なる。例えば親指は他の指と比較して手首に近いために、親指で鍵を押鍵する際にはその鍵を他の指で押鍵する際と比較して距離を小さくしなければならない。また、同じ白鍵、或いは黒鍵を押鍵するとしても、複数の鍵を同時に押鍵するのか1鍵だけを押鍵するのかによってその距離は変化する。複数(特に3つ以上)の鍵を同時に押鍵しているときには、各指の間を広げた形となっているので、1鍵だけを押鍵しているときと比較して鍵盤に近くなる。
【0036】
鍵盤に対する演奏操作では、状況によって、親指を他の指と交差させてその下を移動させる指くぐりや、親指以外の指を親指と交差させてその上を移動させる指またぎを行うことがある。そのように指を交差させる場合、鍵を押鍵させている指は通常の押鍵時よりも立てた状態(図6(a)に示すように、指全体がz軸により平行に近くなる状態)となり、指のy軸上の長さがより短くなることから、鍵盤との距離も短くなる。このようなことから、本実施の形態では、鍵盤300から離した場合の基点301のy軸上の位置としてYPOS1、その鍵盤300に近づけた場合の位置としてYPOS2を定めている。
【0037】
一方、鍵盤と手首(手のひら)の間のz軸上における距離も、複数の鍵を同時に押鍵するのか1鍵だけを押鍵するのかによって変化する。複数の鍵を同時に押鍵しているときには、手全体を鍵盤に向けて移動させている形となっているので、その距離は小さくなる。指くぐりや指またぎを行うには、或る程度、手を鍵盤から離さなければならない。このようなことから、本実施の形態では、鍵盤300から離した場合の基点301のz軸上の位置としてZPOS1、その鍵盤300に近づけた場合の位置としてZPOS2を定めている。そのような位置を定めて、白鍵、或いは黒鍵を押鍵するのか、複数の鍵を押鍵するのか1鍵を押鍵するのか、といったことで変化する動作や、指を交差させる動作などを表現するようにしている。
【0038】
図5は、状況に応じて変化させる鍵を押鍵する位置を説明する図である。
指は縦と横の両方の動きが行えることから、手の位置を動かさなくとも、押鍵のために指(指先)を鍵に接触させる位置(押鍵位置)は指だけの動きで変更させることができる。それにより、鍵上で指を接触させることが可能な範囲は広いことも多い。しかし、その範囲を全て考慮して押鍵位置を決定しようとすると、押鍵位置の決定には手や各指の状態も考慮しなければならないこともあって、それを決定するために要する処理時間は長くなる。このことから、本実施の形態では、押鍵位置を決定するうえで基準となる押鍵位置(基準押鍵位置)を予め複数、定め、押鍵位置は、複数の基準押鍵位置のなかから一つを選択して、選択した基準押鍵位置、或いはその近傍に決定するようにしている。図5は、白鍵、黒鍵に分けて、その基準押鍵位置を示したものである。
【0039】
押鍵位置を基準押鍵位置、及びその近傍の範囲に限定することで、押鍵位置を決定するうえで考慮するその範囲が実質的に狭くなる。このため、押鍵位置をより容易、且つ短時間に決定できることになる。なお、基準押鍵位置の近傍も範囲として考慮しているのは、例えば複数の鍵を同時に押鍵する状態となった場合に、指に不可能な動きをさせないようにするためである。親指に続いて中指で鍵を押鍵する場合を例にとれば、その中指を基準押鍵位置に接触させるために中指に人にとって不可能と考えられるような横の動きをさせるといったことを回避させるためである。
【0040】
白鍵では、図5(a)に示すように、図中A〜Cを付した計3つ点を基準押鍵位置として定めている。黒鍵では、図5(b)に示すように、図中D、Eを付した計2つの点を基準押鍵位置として定めている。それぞれ基準押鍵位置を示す点A〜Eは、以下のような状況のときに選択している。ここでは主なものを挙げて説明する。
点A:手が位置YPOS2にある場合に、人差し指、中指、或いは薬指で押鍵するとき
点B:手が位置YPOS2にある場合に、親指、或いは小指で押鍵するとき。その手が位置YPOS1にある場合には、人差し指、中指、或いは薬指で押鍵するとき
点C:手が位置YPOS1にある場合に、親指、或いは小指で押鍵するとき
:手が位置YPOS1にある場合に、人差し指、中指、或いは薬指で押鍵するとき。その手が位置YPOS2にある場合には、親指、或いは小指で押鍵するとき
:手が位置YPOS2にある場合に、人差し指、中指、或いは薬指で押鍵するとき
図6は、手のx軸上の位置hxの求め方を説明するための図である。同図(a)は、指パートで鍵(白鍵)を押鍵している様子を横から見た側面図、同図(b)は、その様子を上から見た上面図である。
【0041】
図5(a)及び(b)から明らかなように、鍵の押鍵位置によってその鍵を押し下げなければならないz軸上の距離は長くなる。指のxy平面上における長さは押鍵時の形によって変化する。このことから、手のx軸上における位置hxは、以下のようにして求めている。図6を参照して具体的に説明する。
【0042】
図6(a)において、ktopZは、押鍵したときに指パートと接触している鍵の押鍵位置のz軸上における高さ(基準となる位置からの距離)を示すシンボルである。その高さktopZは、基準押鍵位置毎に異なることから、基準押鍵位置毎に、それと対応付けられた配列変数の要素に用意している。hzは手パートのz軸上における高さ(基準となる位置からの距離)を示すシンボルであり、その高さhzは、位置ZPOS1、或いはZPOS2に対応する。fzは、手パートの高さhzと押鍵させる指パートの基点のz軸上における高さ(基準となる位置からの距離)との差を示すシンボルである。差fzはマイナスの値である。flenZは、押鍵させる指パートのz軸上における長さを示すシンボルである。その長さflenZを得るために、第1関節の角度frx1、更には第2、第3関節の角度frx2、frx3を調整することになる。topZは指パートの指先に当たる第3パートにおいて、その中央から鍵に接触させる部分までの第3関節を折り曲げる方向上における厚さを示すシンボルである。
【0043】
指パートを押鍵させるために必要なz軸上における長さをftokZで表すと、そのftokZは、手パートの高さhzから、差fz、及び高さktopZを引いた分の高さ(=hz−fz−ktopZ)となる。一方、長さflenZは、第2、第3パートのz軸上における長さはそれよりも手パートに近い関節の角度を考慮、即ち第2パートでは第2関節の他に第1関節の角度frx1を考慮しなければならないことから、以下の式により求められる。
【0044】
flenZ=L1×sin(frx1)+L2×sin(frx1+
frx2)+L3×sin(frx1+frx2+frx3)
+topZ×cos(frx1+frx2+frx3)
上記式より求められる長さflenZは長さftokZと一致させる必要がある。各角度frx1〜3は、それらが一致するように決定しなければならない。そのために、本実施の形態では、第1関節の角度frx1に応じて決定すべき第2、及び第3関節の角度frx2、3を定めたテーブル(以降、便宜的に角度テーブルと呼ぶ)を用意している。それにより、角度frx2、3は、角度frx1に対応するものに決定している。その決定は、式に角度frx1〜3を代入して求められる長さflenZが長さftokZと一致するまで、式に代入する角度frx1、更には角度frx2、3を変更しながら、長さflenZの算出、それと長さftokZとの比較を繰り返すことで行っている。
【0045】
なお、上記角度テーブルで定められた1組の角度frx2、3は、例えば或る範囲の角度frx1を対応させている。それにより、長さflenZを長さftokZと一致させるための微調整は、基本的には角度frx1だけを変更することによって行うようになっている。
【0046】
上述したようにして角度frx1〜3を決定することに伴い、指パートのxy平面上における長さが決定する。図6(b)中では、その長さはlenXYで示してある。その長さlenXYは、以下の式より求められる。その図6(b)において、回転角hrzが0度、即ち手パートが基準の位置となっているときに、押鍵させる指パートの付け根に対応する基点と手パートの基点301間のx軸上の距離はflenXで示してある。その距離flenXは、各指パート毎に予め用意したデータである。押鍵のために指パートを接触させる鍵の押鍵位置のx軸上の位置はnoteXで示してある。frz[fig]は、押鍵させる指パートの第1関節である基点でのz軸周りの回転角である。なお、上記回転角hrz、frzは、基準となる位置から図6(b)に向かって右回転させた場合に負となる。
【0047】
lenXY=L1×cos(frx1)+L2×cos(frx1+
frx2)+L3×cos(frx1+frx2+frx3)
押鍵させる指パートの第1関節に当たる基点のx軸上の位置fbaseXは、押鍵位置のx軸上の位置noteXを基準にする形で、上述したようにして算出される長さlenXYを用いて次の式より求めている。
【0048】
fbaseX=lenXY×sin(hrz+frz)+noteX
図6(b)に示す状態では、回転角hrz、frzはそれぞれ負の値となる。このため、上記式より算出される位置fbaseXの値は、位置noteXのそれよりも小さくなる。
【0049】
手パートの基点301のx軸上の位置hxは、以下の式より求めている。
hx=La×sin(hrz)+fbaseX
+flenX×cos(hrz)
このように、本実施の形態では、鍵の押鍵位置を決め、その決めた押鍵位置から押鍵させる指パート、更には手パートの状態を決定するようにしている。その決定は、詳細は後述するが、指くぐりや指またぎの形で指パートを交差させる必要性の有無を判定して行っている。それらの状態は、複数の鍵を同時に押鍵させている状況となることもあって、他の指パートの状態を考慮して決定する必要がある。このことから、押鍵させる指パートに注目してその指パートや手パートの押鍵時の状態を決定した後に、他の指パートの状態を考慮して、全体的な微調整を行い、指パートの不自然な横の動きや指パート間の不自然な位置関係はそれを修正している。それにより、指くぐりや指またぎを含め、より自然で違和感を与えない演奏動作を表示させるようにしている。
【0050】
図3、或いは図6に示すように複数のパートに分割した手指の動画表示は、各パートの状態を演奏の進行に応じて順次、変更させていくことで行っている。その動画表示を実現させるための動画制御データは、本実施の形態では2段階で生成している。ここでは、便宜的に、始めの段階で生成したデータを動画制御データA、次の段階で生成したデータを動画制御データBと呼ぶことにする。
【0051】
上記動画制御データAは、CPU101が、図2に示すような楽音・運指データの他に、各指パートの長さ(指第1〜第3パートの長さ)やその手パートにおける配置、鍵盤300上の鍵の配置や各種鍵の形状といった予め用意したデータ(パラメータ)を参照しつつ生成する。CPU101は、楽音・運指データ中の単位楽音データ、及びそれに付加された指番号データ、更にはそれらによって指定される演奏の流れなどを解析して、イベント単位でそれまでの手指の状態から次のイベントを生じさせるために移行させる手指の状態を求め、その後者の手指の状態を指定するデータ、即ちどのパートの状態をどのように変化させるべきかを指定するデータをRAM103に保存する。手や指を動かす速さは、イベント間の時間間隔の長さに依存する。その時間間隔が短いほど、手や指を速く動かさなければならない。このことから、イベント間の時間間隔を基に、パートの状態の変化を開始するタイミングやその変化を継続している時間を決定し、それらを示すデータも合わせてRAM103に保存する。そのようにして生成・保存したデータが動画制御データAである。なお、上記解析は、例えば楽音データに付加された運指データの生成に用いたアルゴリズムにより行われる。それにより、求めた手指の状態が不自然な形とならないようになっている。
【0052】
上記動画制御データAの生成によって、離鍵イベントでは離鍵させる指パートの離鍵後の状態が決定し、押鍵イベントでは指パートの押鍵時の状態の他に、必要に応じて、その状態への移行に合わせて他のパートの状態を決定する。他のパートの状態の決定とは、例えば押鍵すべき鍵の位置やその種類(白鍵か黒鍵か)に応じた手パートの移動や他の指パートの動き、押鍵中の鍵があれば、その鍵を押鍵させている指パートはその鍵から離すことができないことから、その手パートの移動に伴って指パート間を広げたり狭くする、或いは次に押鍵させる指パートを指くぐり、或いは指またぎさせて動かす、といったことである。CPU101は、その決定した状態に移行するまでを幾つかの段階に分け、各段階毎にその状態を示すデータを生成し、RAM103に動作制御データAとは別に保存する。そのようにして生成・保存したデータが動作制御データBである。なお、本実施の形態では、後述するように、イベント単位での動作制御データAの生成に連動して、動作制御データBの生成も行うようにしている。
【0053】
図7は、上述したようにして生成・保存される動作制御データの構成を説明する図である。同図(a)は動作制御データA、同図(b)は動作制御データBを示す。
動作制御データAは、図7(a)に示すように、値を変更すべき変数、或いは配列変数の要素を指定するデータ(以降、変数指定データと呼ぶ)、変数、或いは配列変数の要素の変更後の値である値データ、変数、或いは配列変数の要素に対応するパートを動作させている時間を示す動作時間データ、及びそのパートの動作終了、或いは動作開始のタイミングを指定する時間データを、演奏上の1イベントに対応するデータ(それらをまとめて単位動作データAと呼ぶことにする)として構成されている。値データ、及び動作時間データは変数指定データ毎に存在する。それにより、変数指定データが指定する変数、或いは配列変数の要素の値で指定されるパートの状態は、独立に変化させられるようにしている。単位動作データA中の時間データは、楽音・運指データ中の対応する単位楽音データ中の時間データと一致する。なお、一組の変数指定データ、値データ、及び動作時間データはパートの或る状態量をどのように変化させるかを表していることから、以降、それらをまとめてパート動作データと呼ぶことにする。
【0054】
図7(a)に示す動作制御データAは、図2に示す楽音・運指データを基に生成されたものであり、以下のようなイベント、即ちパートの状態変化を生じさせることを表している。図2も参照しつつ、時系列に沿って説明する。
図2に示すように、楽音・運指データ中の最初の単位楽音データが指定するイベントは、音名が「C3」の楽音の発音開始である。その「C3」は、鍵番号(ノートナンバー)の64が対応する。このため、そのイベントは、鍵盤号64の鍵の押鍵を表している。
【0055】
そのイベントの発生は、時間データの値である100で指定されるタイミングであり、その前にはイベントは存在していない。各パートには初期状態(対応する変数、或いは配列変数の要素の初期値)を定めている。このため、そのイベントが発生する様子を表示するには、指番号データで指定された人差し指パートで鍵盤号64の鍵を押鍵させるまでに、その押鍵を行える位置にまで手パートを移動させておかなければならない。ここでは、変数hxの値を値データの100として得られる位置に手パートを移動させなければならない。動作制御データA中の最初の単位動作データAは、そのために生成されたものである。その単位動作データAでは、時間データの値が0で動作時間データも0である。このため、それは、図8(a)に示すように、手パートは初めから変数hxの値を100としたx軸上の位置に表示させることを表している。
【0056】
なお、手パートは、最初の押鍵を行える位置に初めから表示させなくても良い。例えば、予め定めた位置に表示させた後、その押鍵を行うべきタイミングとなるまでに、その位置から押鍵を行える位置に移動させても良い。時間データ、及び動作時間データの値は、予め定めた単位時間で表したものであることから、その値で指定される時間の単位は単位時間と呼ぶことにする。
【0057】
次の単位動作データAでは、時間データは100、変数指定データは配列要素frx1[1]と配列要素note[1]を指定し、値データは配列要素frx1[1]の値として10を、配列変数note[1]の値として64をそれぞれ指定し、動作時間データは配列要素frx1[1]では−5、配列要素note[1]では0となっている。これは、直前(最初)の単位動作データAが表すイベントから100単位時間が経過した後、人差し指パートを第1関節で曲げて鍵盤号64の鍵を押鍵するイベントを発生させることを表している。動作時間データの負の値は、その第1関節で曲げ始めるのを時間データで指定されるタイミングより5単位時間だけ早く開始させることを表している。それにより、直前のイベントから95単位時間が経過した後に、人差し指パートは鍵盤号64の鍵に対する押鍵動作を開始し、100単位時間が経過したときに押鍵が完了することになっている。配列変数note[1]の動作時間データの0は時間データが示すタイミングで楽音を発音開始させることを表している。
【0058】
その次の単位動作データAでは、時間データは50、変数指定データは配列要素frx1[1]と配列要素note[1]を指定し、値データは配列要素frx1[1]の値として0を、配列変数note[1]の値として0をそれぞれ指定し、動作時間データは配列要素frx1[1]では2、配列要素note[1]では0となっている。これは、直前の単位動作データAが表すイベントから50単位時間が経過した後、それまで第1関節で曲げていた人差し指パートを伸ばして鍵盤号64の鍵を離鍵するイベントを発生させることを表している。動作時間データの値は正である。それにより、直前のイベントから50単位時間が経過した後に、人差し指パートは伸び始めて鍵盤号64の鍵を離鍵し、それから2単位時間が経過して元の位置に戻ることになっている。配列変数note[1]の値データの0は離鍵を表し、その動作時間データの0は時間データが示すタイミングで楽音を消音させることを表している。
【0059】
このように、動作制御データA中の単位動作データAは、イベント発生時に、どのパートをどの状態に移行させるかを指定するだけでなく、その移行にかける時間を動作時間データによって指定するようになっている。
一方の動作制御データBは、図7(b)に示すように、値を変更すべき変数、或いは配列変数の要素を指定する変数指定データ、変数、或いは配列変数の要素の変更後の値である値データ、及び、変数指定データとそれの値データによって指定される状態に変化させるタイミングを指定する時間データを、1段階の動作を表現するデータ(それらをまとめて段階動作データと呼ぶ)として構成されている。当然のことながら、段階動作データ中の時間データの値は、対応する単位動作データA中の時間データの値以下である。
【0060】
単位動作データAを構成するパート動作データの数、即ち変数指定データが指定する変数、或いは配列変数の要素の数は、それまでの状態やイベントの内容などによって異なる。指パートを折り曲げるだけで済むのであれば一つの配列変数の要素の値を変更するだけで済む。しかし、他の指パートとの間隔を広げて或る指パートを折り曲げるのであれば、その指パートでは二つの要素の値を変更する必要がある。例えばその指パートが中指パートであり、人差し指パートとの間隔を広げるのであれば、中指パートの外側に位置する薬指パートや小指パートも、その中指パートの横の動きに合わせて、それぞれ、一つの要素の値を変更しなければならない。このようなことから、図7(b)には、各パート毎に、値の変更の対象となりうる変数、及び配列変数の要素を示してある。親指パートのfrz、frx1〜3は、全て配列変数の要素であり、明確に図示していないが、それらは人差し指パート、中指パート、薬指パート、及び小指パートにも存在する。各配列変数の要素は、指パートの指番号を引数として指定される。
【0061】
図7(b)に示す動作制御データBは図7(a)に示す動作制御データAを基に生成したものである。動作制御データA中で最初に位置する単位動作データA中の動作時間データの値は0であり、2番目の単位動作データA中の時間データの値は100、その単位動作データA中で最初に位置するパート動作データ中の動作時間データの値は5である。一方、動作制御データBにおける2番目、及び3番目の段階動作データ中の時間データの値はそれぞれ95、2となっている。このことから明らかなように、それらの段階動作データは2番目の単位動作データAを基に生成されたものであり、人差し指パートによる押鍵動作を表現するために、特には図示していないが、変数指定データによって配列要素frx1[1]が指定され、それに代入すべき値が値データとして設定されている。
【0062】
図8は、手指の動作表示例を説明する図である。図7に示す動作制御データに従って手指の各パートの状態を変化させていく様子を示したものである。図8(a)において、楽音・運指データでは、楽音・運指データによって指定される楽音の発音開始タイミング(押鍵タイミング)、及びその消音タイミング(離鍵タイミング)を時間軸上に矢印で示してある。楽音の音名(「C」や「F」など)は矢印の近傍に示してある。指動作では、押鍵動作開始タイミング、及び離鍵動作開始タイミングを時間軸上に矢印で示してある。その矢印の近傍に表記した「1」や「2」などの数字は、押鍵、或いは離鍵する指パートの指番号である。手x位置では、手パートのx軸上の位置の時間変化を示してある。手y位置、及び手z位置では、それぞれ、手パートのy軸上、及びz軸上の位置の時間変化を示してある。手z位置の時間軸に表記した0は、楽音・運指データの再生開始時点を示している。なお、手x位置、手y位置、及び手z位置は、それぞれ、初期位置からの移動を相対的に示したものである。
【0063】
図8(a)に示すように、押鍵動作は、実際に楽音を発音させるタイミングよりも前に開始し、離鍵動作は、楽音の消音タイミングと合わせて開始するようになっている。手パートのx軸上における位置は、音名が「C」の鍵の離鍵動作開始後に、次に人差し指パートによって音名が「F」の鍵を押鍵できる位置に向かって移動を開始し、その押鍵開始タイミングの前に移動を完了させている。手パートのy軸上における位置は、親指パート、人差し指パート、中指パート、及び薬指パートによって、それぞれ、発音される楽音の音名が「D#」、「F」、「G」、及び「B」の鍵を同時に押鍵していることを表現するために、「G」の鍵の離鍵後に鍵盤300に向かって移動を開始し、即ち図4に示す位置YPOS1から位置YPOS2に向かって移動を開始し、それらの鍵の離鍵が開始するまでは位置YPOS2にとどまり、その離鍵の開始後に位置YPOS2から位置YPOS1に向かって移動を開始する。手パートのz軸上における位置は、それらの鍵の押鍵動作開始から最後の鍵の押鍵が終了するまでの間に鍵盤300に向かって下降する。即ちその間に図4に示す位置ZPOS1から位置ZPOS2に移動する。位置ZPOS2から位置ZPOS1への移動は、それらの鍵の離鍵動作開始から最後の鍵の離鍵が終了するまでの間に行われている。
【0064】
図8(b)は、図8(a)中の時点▲1▼〜▲5▼における手パートの基点(手首)301の位置を示す図である。それらの時点▲1▼〜▲5▼におけるxy平面上の位置は、それぞれ、▲1▼〜▲5▼で示してある。
図8(b)に示すように、手パートは、始めに▲1▼で示す位置から▲2▼で示す位置にまで移動する。次には複数鍵を同時に押鍵するために、▲3▼で示す位置に移動する。その▲3▼で示す位置と▲4▼で示す位置が同じことから明らかなように、複数鍵を押鍵している間はその位置にとどまる。▲1▼で示す位置は▲5▼で示す位置と同じである。このことから、複数鍵を離鍵後は、▲4▼で示す位置から▲1▼で示す位置に移動する。
【0065】
上述したように、手パートを移動させたり、各指パートの状態を変化させることで手指の動作を動画で表現している。
図9は、実際の表示例を示す図である。
図9に示すように、実際には、右手だけでなく、左手も表示している。押鍵中か否かをユーザが判りやすいように、押鍵中の鍵は他と表示色を変えて表現している。その表示色の変更は、押鍵時(発音開始時)から離鍵時(消音時)の間だけ行っても良いが、押鍵すべき鍵を事前に通知する、或いは離鍵すべき鍵を事前に通知する、といったことのために、表示色を複数の色に変更するようにしても良い。なお、特に詳細な説明は省略するが、本実施の形態では、手指の各パートのサイズの変更、即ち拡大、或いは縮小や、各パートの表示の透過表示、或いはワイヤーフレーム表示への変更、表示角度の変更、なども行えるようになっている。ユーザが実際に操作する鍵盤を備えている場合には、ユーザの演奏速度に応じて、楽音・運指データの再生速度(演奏動作の表示速度を含む)を変更するようにしても良い。
【0066】
に示すような手指パートの動作表示は、ユーザが操作部106を操作して、RAM103に格納された楽音・運指データの再生を指示した場合に行われる。その指示をユーザが行うと、CPU101は、楽音・運指データ(ここでは運指データを除いた部分である楽音データのみが対象)とそれを基に生成した動作制御データBを並行に処理する。それにより、楽音の発音と同期した手指の各パートの動作を表示部105に表示させる。本実施の形態では、それ以外に、楽音データから演奏内容を示す楽譜を表示するようになっている。
【0067】
図10は、本実施の形態による演奏動作表示装置の機能ブロック図である。
図10に示すように、上記演奏動作表示装置は、機能的に見て、基本的に、楽音・運指データから動作制御データを生成するデータ生成部801、及び楽音・運指データや動作制御データを再生するリアルタイム処理部802から構成されている。データ生成部801において、楽音・運指データから動作制御データを生成するのは動作制御データ生成部803によって行われる。そのデータ生成部801には、図1において、例えばCPU101、ROM102、RAM103、データ入力部104、表示部105、及び操作部106が対応する。
【0068】
一方のリアルタイム処理部802は、データ生成部801が生成した動作制御データや楽音データを処理するデータ送出部(シーケンス処理部)804、そのデータ送出部804から送られた動作制御データに従って手指の動作を表示する動作表示部805、それから送られた楽音データに従って楽音を放音する音源部806、及びそれから送られた楽音データに応じて楽譜を表示する楽譜表示部807を備えたものである。図1において、例えばCPU101、ROM102、RAM103、表示部105、操作部106、音源107、及びサウンドシステム108が対応する。
【0069】
次に、上述した動作制御データの生成やその再生などを実現するCPU101の動作について、図11〜図25に示す各種動作フローチャートを参照して詳細に説明する。
図11は、動作制御データ生成処理の動作フローチャートである。この生成処理は、ユーザが操作部106を操作して、RAM103に格納された楽音・運指データのなかから一つを指定(選択)し、動作制御データの生成を指示した場合に、CPU101が、ROM102に格納されているプログラムを実行することで実現される処理である。図10に示すデータ生成部801はその生成処理を実行することによって実現される。始めに図11を参照して、その生成処理について詳細に説明する。
【0070】
この生成処理では、ユーザが指定した楽音・運指データから単位楽音データ、及びそれに付加された指番号データを順次、読み出しながら、その単位楽音データが表すイベントを指番号データが指定する指によって発生させる様子を表示するための動作制御データを生成するようになっている。ここでは、単位楽音データが表すイベントの種類として、ノートオンイベント、及びノートオフイベントに重点をおいて処理の流れを示してある。
【0071】
先ず、ステップ901では、初期設定を行う。その初期設定により、各種変数には初期値が代入され、RAM103には動作制御データを格納する領域が確保される。楽音・運指データから読み出す単位楽音データを管理するための変数peには、その先頭に位置する単位楽音データが格納されたアドレス値が代入される。
【0072】
ステップ901に続くステップ902では、楽音・運指データが終了したか否か判定する。例えば、楽音・運指データの最後には、そのデータの終了を表すユニークなデータ(以降、エンドデータと呼ぶ)が付加されている。このため、変数peの値が指定するデータがそのエンドデータであった場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップ903に移行する。
【0073】
ステップ903では、変数tkoldに変数tktimeの値を代入した後、その変数tktimeに、それまでの値に変数peが指定する単位楽音データの時間データの値tktを加算した値を代入する。続くステップ904では、その変数peの値が指定する単位楽音データが表すイベントがノートオンイベントか否か判定する。その単位楽音データがノートオンイベントを表すものであった場合、判定はYESとなってステップ905に移行し、そうでない場合には、判定はNOとなってステップ915に移行する。なお、各単位楽音データの時間データの値を累算していくことから明らかなように、変数tktimeの値は楽音データの再生を開始してから経過した時間(絶対時間)で示す値である。
【0074】
ステップ905〜909では、ノートオンイベントを表す単位楽音データに対応するための処理が行われる。
先ず、ステップ905では、変数peの値で指定される単位楽音データを基に、各種の設定を行う。それにより、変数figに指番号データの値を代入し、変数noteには音高データ(鍵盤号)を代入するとともに、それらの値から単位動作データAを生成して保存する。そのような代入が終了した後はステップ906に移行する。なお、ここで生成される単位動作データAは、時間データ、変数figの値で指定される配列要素note[fig]を指定する変数指定データ、及びその配列要素note[fig]の値データ(変数figの値で指定される指パートに押鍵させる鍵のノートナンバー)である(図7(a)参照)。
【0075】
ステップ906では、その変数peの値で指定される単位楽音データが表すノートオンイベントの発生時に、他のノートオンイベントが発生中か否か、即ち他の鍵が押鍵されているか否か判定する。他の鍵が押鍵されていない場合、判定はYESとなってステップ907に移行し、そうでない場合には、判定はNOとなって後述するステップ909に移行する。なお、上記押鍵の判定は、楽音・運指データが表す仮想的な演奏を想定しての判定である。以降も便宜的に、特に断らない限り、その想定で説明を行うことにする。
【0076】
ステップ907では、手パートのy軸上の位置を決定する手のy位置処理を実行する。続くステップ908では、手パートのz軸上の位置を決定する手のz位置処理を実行する。その後に移行するステップ909では、他のイベントとの関係を考慮しつつ、単位楽音データが表すノートオンイベントに応じて手指の各パートを動作させる内容を決定するノートオンメイン処理を実行する。そのノートオンメイン処理を実行した後はステップ910に移行する。
【0077】
ステップ910では、変数bchordに「TRUE」を表す値が代入されているか否か判定する。直前のノートオンメイン処理の実行時に、単位楽音データが表すノートイベントが和音を発音させるためのものであると判定すると、その変数bchordには「TRUE」を表す値が代入される。このため、ノートオンメイン処理の実行時に単位楽音データが和音を発音させるためのものと判定されていた場合、判定はYESとなってステップ913に移行する。そうでない場合には、判定はNOとなり、ステップ911に移行する。
【0078】
ステップ911では、手パートのx軸上の位置を決定する手のx位置処理を実行する。続くステップ912では、手パートのy軸上の位置を再度、決定する手のy位置再処理を実行する。その処理を実行した後は、ステップ913でその他の処理を実行し、続くステップ914で変数peに、次に対象となる単位楽音データのアドレスを代入した後、上記ステップ902に戻る。
【0079】
上記ステップ907〜909、911、912、及び後述するステップ917では、それぞれ、特定の動作が伴うパラメータ(変数、或いは配列変数の要素)に着目したパート動作データの生成が行われ、それが単位動作データAに追加される。それにより、ステップ913に移行時には、手指の各パートをどのような状態に移行させるかが確定するようになっている。このため、ステップ913では、単位動作データAから段階動作データを生成し、それをRAM103に格納することを行っている。その生成は、本実施の形態では、動作時間データで指定される時間間隔を複数に区切り、それまでの状態と移行後の状態の間を直線で補間することで行っている。また、そのステップ913では、ノートオンイベント、及びノートオフイベント以外のイベントを表す単位楽音データの処理も行っている。
【0080】
一方、上記ステップ904の判定がNOとなって移行するステップ915では、変数peの値で指定される単位楽音データがノートオフイベントを表しているか否か判定する。その単位楽音データがノートオフイベントを表している場合、判定はYESとなってステップ916に移行する。そうでない場合には、上記ステップ913に移行する。
【0081】
ステップ916では、変数peの値で指定される単位楽音データを基に、各種の設定を行う。それにより、変数figに指番号データの値を代入し、変数noteには音高データ(鍵盤号)を代入するとともに、それらの値から単位動作データAを生成して保存する。そのような代入が終了した後はステップ906に移行する。なお、ここで生成される単位動作データAは、時間データ、変数figの値で指定される配列要素note[fig]を指定する変数指定データ、及びその配列要素note[fig]の値データ(ここでは離鍵なので0である)である。
【0082】
それに続くステップ917では、ノートオフイベント時に手指の各パートを動作させるための動作制御データ(単位動作データAに追加するパート動作データ)を生成するノートオフメイン処理を実行する。その後は上記ステップ910に移行する。
【0083】
上述したようにして、動作制御データ生成処理では、動作制御データの生成の対象とする単位楽音データ、及びそれに付加した指番号データを順次、変更しながら動作制御データを生成する。それにより、動作制御データは演奏上のイベント単位で生成するようになっている。
【0084】
次に、上記動作制御データ生成処理内で実行される各種サブルーチン処理について、図12〜図24に示すその動作フローチャートを参照しながら詳細に説明する。
図12は、上記ステップ907として実行される手のy位置処理の動作フローチャートである。サブルーチン処理では、始めに図12を参照して、手のy位置処理について詳細に説明する。
【0085】
基点301のy軸上の位置を示す値は、変数hynewに保持されている。この手のy位置処理では、基点301を次に配置すべき位置を求め、その位置を示す値を変数hynewに代入することが行われる。
先ず、ステップ1001では、初期設定を行い、変数hynewの値を変数hynowに代入する。続くステップ1002では、現在、対象としている単位楽音データ、及び指番号データ以降のデータを読み出し、次に全ての鍵が離鍵するまでに親指か小指が黒鍵を押鍵するようになっているか否か判定する。次に全ての鍵が離鍵するまでに、0、或いは4を指番号データとする単位楽音データが存在していた場合、判定はYESとなってステップ1005に移行する。そうでない場合には、判定はNOとなってステップ1003に移行する。
【0086】
ステップ1003では、変数hynowに位置YPOS1(図4参照)を示す値が代入されているか否か判定する。その値が変数hynowに代入されていた場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなり、ステップ1004で変数hynewに位置YPOS2を示す値を代入し、直前の単位楽音データの処理タイミングから今回の単位楽音データの処理タイミングまでに位置YPOS1への移動を完了させるパート動作データを生成し、それを単位動作データAに追加した後、一連の処理を終了する。
【0087】
一方、ステップ1002の判定がYESとなって移行するステップ1005でも、変数hynowに位置YPOS1(図4参照)を示す値が代入されているか否か判定する。その値が変数hynowに代入されていなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなり、ステップ1006で変数hynewに位置YPOS1を示す値を代入し、直前の単位楽音データの処理タイミングから今回の単位楽音データの処理タイミングまでに位置YPOS2への移動を完了させるパート動作データを生成した後、一連の処理を終了する。
【0088】
このように、手のy位置処理では、ユーザが親指、或いは小指を使って黒鍵を押鍵しなければならない場合、手パートを位置YPOS2に移動させて、鍵盤300に予め近づけるようにしている。今回を含め、親指、及び小指を使うことなく、全ての鍵を離鍵している状態となる場合、手パートは位置YPOS1に位置させている。
【0089】
親指、或いは小指を使って黒鍵を押鍵する以外にも、指を大きく開いた形で複数の鍵を押鍵したりすると、手と鍵盤との間のy軸上の距離は小さくなる。そのようなことに対応するための手パートの基点301のy軸上における位置調整は、ステップ912として実行される手のy位置再処理で行っている。
【0090】
図13は、図11に示す動作制御データ生成処理内でステップ908として実行される手のz位置処理の動作フローチャートである。次に、図13を参照して、その処理について詳細に説明する。
現時点において基点301が存在すべきz軸上の位置を示す値は変数hznowに保持されている。直前の単位楽音データを処理した際の変数tktimeの値は変数tkoldに保持されている。手パートの基点301は、図4に示すように、z軸上では位置ZPOS1、或いはZPOS2の何れかの位置をとる。手のz位置処理の実行時は、押鍵されている鍵が存在していない状況である。
【0091】
先ず、ステップ1101では、変数hznowに位置ZPOS1を示す値が代入されているか否か判定する。その値が変数hznowに代入されていた場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、即ち手パートの基点301が位置ZPOS2に位置している場合には、判定はNOとなり、ステップ1102に移行して、変数tkoldの値が示すタイミングから変数tktimeの値が示すタイミングまでに、基点301を位置ZPOS2から位置ZPOS1に移動させるパート動作データを作成し、それを単位動作データAに追加する形でRAM103に格納する。それが終了した後に一連の処理を終了する。
【0092】
図14は、図11に示す動作制御データ生成処理内でステップ909として実行されるノートオンメイン処理の動作フローチャートである。次に、図14を参照して、その処理について詳細に説明する。
現在、処理対象としている単位楽音データを実際に処理、即ち再生する際に、和音(コード)が発音中か否かを示す値(「TRUE」或いは「FALSE」)は変数bchordに保持されている。和音が発音中であれば、その和音を構成する楽音のなかで最後に発音が開始する楽音の単位楽音データのアドレスは変数pchordendに保持されている。ノートオンメイン処理では、そのような変数を含む各種変数の値が参照される。
【0093】
先ず、ステップ1201では、変数bchordの値が「TRUE」か否か判定する。処理対象としている単位楽音データを再生する状況で和音を発音させているとみなしていた場合、その変数bchordには「TRUE」が代入されていることから、判定はYESとなってステップ1207に移行し、そうでない場合には、判定はNOとなってステップ1202に移行する。
【0094】
ステップ1202では、変数balloffの値が「TRUE」か否か判定する。処理対象としている単位楽音データを再生する状況で押鍵されている鍵が存在している場合、判定はNOとなってステップ1206に移行する。そうでない場合には、判定はYESとなってステップ1203に移行する。
【0095】
ステップ1203では、処理対象としている単位楽音データ、及びそれに続く単位楽音データによって和音が発音されるか否か判定する和音判定処理を実行する。その和音判定処理において、それらの単位楽音データによって和音が発音されると判定すると、変数bchordには「TRUE」が代入されることになる。その実行後は、ステップ1204に移行する。
【0096】
ステップ1204では、変数bchordの値が「TRUE」か否か判定する。上記和音判定処理を実行した結果、新たに和音が発音されるとみなした場合、判定はYESとなり、ステップ1205でその和音を発音させる動作の内容を決定する和音動作処理を実行した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ステップ1206で押鍵動作の内容を決定するノートオン動作処理を実行した後、一連の処理を終了する。
【0097】
一方、上記ステップ1201の判定がYESとなって移行するステップ1207では、変数pchordendの値が変数peの値と等しいか否か判定する。変数peの値が指定する単位楽音データ、即ち現在、処理対象としている単位楽音データが、和音を構成しているとみなす楽音のなかで最後に発音される楽音の発音開始を指示するものであった場合、判定はYESとなり、ステップ1208で変数bchordに「FALSE」、変数pchordendにNULL(空値)をそれぞれ代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなって、ここで一連の処理を終了する。
【0098】
このように、ノートオンメイン処理では、単位楽音データが発音開始を指示する楽音が和音を構成しているか否かにより処理を分岐させている。それにより、和音を発音させるのか単に楽音を発音させるのかに応じて、手指の各パートを動作させるようにしている。
【0099】
ここで、上記ノートオンメイン処理内で実行される各種サブルーチン処理について、図15〜図18を参照して詳細に説明する。
図15は、上記ステップ1203として実行される和音判定処理の動作フローチャートである。ノートオンメイン処理内で実行されるサブルーチン処理では、図15を参照して、始めに和音判定処理について詳細に説明する。
【0100】
先ず、ステップ1301では、初期設定を行う。その初期設定を行うことにより、変数tknextには、変数peの値で指定される単位楽音データ以降で最初に楽音の発音開始を指示する単位楽音データの処理タイミングを絶対時間で示す値が代入され、変数tknextoffには、変数peの値で指定される単位楽音データ以降で最初に楽音の消音を指示する単位楽音データの処理タイミングを絶対時間で示す値が代入される。
【0101】
ステップ1301に続くステップ1302では、変数tknextの値が、変数tktimeの値に変数tkchordの値を加算した値より小さいか否か判定する。その変数tkchordには、和音を構成しているか否か判定するうえで基準となる、楽音間の発音開始間隔を示す値が代入されている。このことから、その間隔以内に次の楽音の発音が開始する場合、判定はYESとなってステップ1303に移行し、そうでない場合には、判定はNOとなって、ここで一連の処理を終了する。
【0102】
ステップ1303では、変数tknextoffの値が、変数tktimeの値に変数tkchordの値を加算した値より大きいか否か判定する。変数tkchordの値が示す時間が経過する前に、消音される楽音が存在していない場合、判定はYESとなり、ステップ1304で変数bchordに「TRUE」を代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
【0103】
このように、本実施の形態では、変数tkchordの値が示す時間内に複数の押鍵(ノートオンイベント)があり、且つその時間内に離鍵(ノートオフイベント)が存在していなければ、その時間内に発音開始される楽音は和音を構成しているとみなすようにしている。
【0104】
図16は、図14に示すノートオンメイン処理内でステップ1205として実行される和音動作処理の動作フローチャートである。次に図16を参照して、和音動作処理について詳細に説明する。
先ず、ステップ1401では、初期化処理を実行する。その初期化処理を実行することにより、変数tktime0には、変数tktimeの値が代入され、変数pe0には変数peの値が代入され、変数pchordendにはNULLが代入される。ステップ1401に続くステップ1402以降は、変数pe0の値を順次、インクリメントしながら、和音とみなす楽音の範囲の特定や、その和音を鳴らす動作内容を決定するための処理が行われる。
【0105】
ステップ1402では、楽音・運指データが終了したか否か判定する。変数pe0の値が指定するデータが楽音・運指データの最後に位置するエンドデータであった場合、判定はYESとなってステップ1410に移行し、そうでない場合には、判定はNOとなってステップ1403に移行する。
【0106】
ステップ1403では、変数pe0の値が変数peの値と等しいか否か判定する。それらの値が等しい場合、判定はYESとなってステップ1405に移行する。そうでない場合には、判定はNOとなり、ステップ1404で変数tktime0に、それまでの値に変数pe0の値が指定する単位楽音データの時間データの値を加算した値を代入した後、そのステップ1405に移行する。そのようにして、変数tktime0には、変数peの値が指定する単位楽音データ以降の単位楽音データを処理すべきタイミングを絶対時間で示す値が代入される。
【0107】
ステップ1405では、変数tktime0の値が、変数tktimeの値に変数tkchordの値を加算した値よりも小さいか否か判定する。変数pe0、及びpeの値がそれぞれ指定する単位楽音データの処理タイミングが、変数tkchordの値で指定される時間内でなかった場合、判定はNOとなって上記ステップ1410に移行する。そうでない場合には、判定はYESとなってステップ1406に移行する。
【0108】
ステップ1406では、変数pe0の値が指定する単位楽音データは押鍵(ノートオンイベント)を表すものであるか否か判定する。その単位楽音データがノートオンイベントを表していた場合、判定はYESとなり、ステップ1407で変数pchordendに変数pe0の値を代入し、続くステップ1408でノートオン動作処理を実行した後、ステップ1409に移行する。そうでない場合には、判定はNOとなってそのステップ1409に移行する。
【0109】
ステップ1409では、変数pe0に次の単位楽音データのアドレスを代入する。それを行った後、上記ステップ1402に戻る。
このように、ステップ1402〜1409で形成される処理ループをステップ1402の判定がYES、或いはステップ1405の判定がNOとなるまで繰り返し実行することにより、変数pchordendには、和音を構成するとみなす楽音のなかで最後に発音が開始する楽音の単位楽音データのアドレス値が代入されることになる。
【0110】
一方、ステップ1402の判定がYES、或いはステップ1405の判定がNOとなって移行するステップ1410では、手パートがz軸上を移動していく動作(ここでは図4に示す位置ZPOS1から位置ZPOS2に移動していく動作である)を表現するパート動作データを作成する。その動作データを作成することにより、手パートの基点301が、変数tkstart0の値が示すタイミングで移動を開始し、変数tktimeの値が示すタイミングで位置POS2への移動が終了するようにさせる。そのようなパート動作データを単位動作データAに追加した後、一連の処理を終了する。
【0111】
上記変数tkstart0の値が示すタイミングは、和音を構成する楽音のなかで最初に発音される楽音を発音させる指パートの動作を開始するタイミングか、或いは各指パートの離鍵から押鍵に移行するまでの時間が比較的に長ければ、変数tktimeの値から、押鍵動作を開始してから押鍵するまでの基準時間を示す値を引いた値が示すタイミングである。それにより、和音を鳴らす状況に応じて、それを鳴らすための手指の各パートの動作を異ならせるようにしている。図8に示す例では、変数tkstart0に前者の値が代入、即ちパート動作データ中の動作時間データにその値に対応する時間を表す値が設定された結果、親指パートの押鍵動作の開始に合わせて手パートのz軸上の移動が開始し、そのz軸上の移動が「D#」の楽音の発音開始時に終了していることを表している。なお、その基準時間を示す値は変数tkcostに代入されている。離鍵動作を開始してからその動作が完了するまでの基準時間を示す値は変数tkoffcostに代入されている。
【0112】
次に、上記ステップ1408、或いは図14に示すノートオンメイン処理内でステップ1206として実行されるノートオン動作処理について、図17、及び図18に示すその動作フローチャートを参照して詳細に説明する。なお、この処理内では、単位楽音データに付加された指番号データは変数figに、その単位楽音データ中の音高データは変数noteに代入されている。
【0113】
先ず、ステップ1501では、初期設定を行う。その初期設定では、変数figの値を指番号データとして付加された、ノートオフイベントを表す直前の単位楽音データの処理タイミングを絶対時間で示す値を求め、その求めた値を変数tkfoffに代入することが行われる。
【0114】
ステップ1501に続くステップ1502では、変数tktimeの値から変数tkfoffの値を引いた値が、変数tkcostの値に変数tkoffcostの値を加算した値より小さいか否か判定する。即ち変数figで指定される指パートの離鍵動作を開始させてからその指パートを押鍵させるまでの時間が、離鍵動作の基準時間と押鍵動作の基準時間を足した時間よりも短いか否か判定する。前者の時間が後者の時間よりも長い場合、判定はNOとなり、ステップ1503で変数tkstartに、変数tktimeの値から変数tkoffcostの値を引いた値を代入した後、ステップ1504に移行する。そうでない場合には、即ち離鍵動作、或いは押鍵動作を基準時間で行わせる余裕がない場合には、判定はYESとなってステップ150に移行する。
【0115】
ステップ1504では、変数tkendに、押鍵動作が終了するタイミングを示す値として変数tktimeの値を代入する。続く図18のステップ1508では、ノートオン中の楽音は1つ以下か否か判定する。鍵を押鍵させている指パートが2つ以上であった場合、判定はNOとなってステップ1509に移行する。そうでない場合には、判定はYESとなってステップ1510に移行する。
【0116】
ステップ1509では、変数figの値で指定される指パートが、変数tkstartの値が示すタイミングで変数noteの値が示す鍵に対する押鍵動作を開始し、変数tkendの値が示すタイミングでその動作を完了、即ち押鍵する動作を終了させるためのパート動作データを作成し単位動作データAに追加する。そのパート動作データ中の動作時間データの値が示す時間は、変数tkoffcostの値が示す時間である。その作成・追加を行った後に、一連の処理を終了する。
【0117】
一方、ステップ1510〜1519では、直前に処理した単位楽音データ、及びそれに付加された指番号データを参照して、指くぐり、或いは指またぎといった指パートを交差させる形での動作を行わせる必要性の有無を判定し、その判定結果に応じてパート動作データを作成し単位動作データAに追加するための処理が行われる。
【0118】
先ず、ステップ1510では、直前に処理した単位楽音データに付加された指番号データを変数figaに、その単位楽音データ中の音高データを変数noteaにそれぞれ代入する。その代入後に移行するステップ1511では、変数note、noteaに音高データが代入された楽音は共に和音の構成音ではないか否か判定する。それらの楽音のうちの一方でも和音の構成音であった場合、即ち和音を鳴らすためにその構成音を発音させている、或いは和音を鳴らした後、再度、和音を鳴らすような場合、判定はNOとなってステップ1509に移行して、それを実行する。そうでない場合には、判定はYESとなってステップ1512に移行する。
【0119】
ステップ1512では、変数noteaに音高データが代入された楽音をノートオフさせるタイミングが変数noteに音高データが代入された楽音をノートオンさせるタイミングより後になっているか、即ちそれら2つの楽音を発音させる期間が重なっているか、或いは前者をノートオフさせてから後者をノートオンさせる時間間隔が所定時間内か否か判定する。それら2つの条件のうちの何れもが満たされていない場合、判定はNOとなって上記ステップ1509に移行する。そうでない場合には、即ちそれら2つの条件のうちの一方が満たされている場合には、判定はYESとなってステップ1513に移行する。
【0120】
ステップ1513では、変数fig、figaにそれぞれ代入された指番号データで指定される指パートが親指と、人差し指、中指、及び薬指のうちの何れかの関係となっているか否か判定する。その関係が満たされていない場合、判定はNOとなって上記ステップ1509に移行する。そうでない場合には、判定はYESとなってステップ1514に移行する。
【0121】
ステップ1514では、変数figの指番号データで指定されるのが親指で変数noteの音高データは変数noteaの音高データより高い音高を示しているか否か判定する。変数figの指番号データで指定されるのが親指であり、その親指に、現在、ノートオンさせている、或いは直前にノートオフさせた鍵の音高よりも高い音高の鍵をノートオンさせる場合、判定はYESとなってステップ1515に移行する。そうでない場合には、判定はNOとなってステップ1517に移行する。
【0122】
ステップ1515では、人差し指パートなどの指パートの下をくぐらせて親指パートに次に押鍵すべき鍵を押鍵させる指くぐりを行うべき条件が満たされているとして、変数kuguruに「TRUE」を表す値を代入する。続くステップ1516では、変数figの値で指定される親指パートをくぐらせて変数noteの値が示す鍵を押鍵させる動作を変数tkstartの値が示すタイミングで開始させ、変数tkendの値が示すタイミングでその動作を完了、即ち押鍵する動作を終了させるためのパート動作データを作成し単位動作データAに追加する。そのパート動作データ中の動作時間データの値が示す時間は、変数tkoffcostの値が示す時間である。その作成・追加を行った後に、一連の処理を終了する。
【0123】
上記ステップ1514の判定がNOとなって移行するステップ1517では、変数figaの指番号データで指定されるのが親指で変数noteaの音高データは変数noteの音高データより高い音高を示しているか否か判定する。変数figaの指番号データで指定されるのが親指であり、その親指に現在、押鍵させている、或いは直前に離鍵させた鍵の音高よりも低い音高の鍵をノートオンさせる場合、判定はYESとなってステップ1518に移行する。そうでない場合には、判定はNOとなって上記ステップ1509に移行する。
【0124】
ステップ1518では、親指パートの上を人差し指パートなどの指パートにまたがせて、次に押鍵すべき鍵を押鍵させる指またぎを行うべき条件が満たされているとして、変数mataguに「TRUE」を表す値を代入する。続くステップ1519では、変数figの値で指定される指パートを、親指パートの上をまたがせて変数noteの値が示す鍵を押鍵させる動作を変数tkstartの値が示すタイミングで開始させ、変数tkendの値が示すタイミングでその動作を完了、即ち押鍵する動作を終了させるためのパート動作データを作成し単位動作データAに追加する。そのパート動作データ中の動作時間データの値が示す時間は、変数tkoffcostの値が示す時間である。その作成・追加を行った後に、一連の処理を終了する。
【0125】
このようにして、本実施の形態では、指くぐり、或いは指またぎを行わせて次の鍵を押鍵させるべき状況か否か判定し、その判定結果に応じてパート動作データを作成している。それにより、そのような指パートを交差させる動作を含め、演奏動作を表示させている。
【0126】
手パートを移動させなければ変数figの値で指定される指パートで鍵を押鍵させることができないこともある。各指パートの回転角frzは、その手パートの位置が確定していなければ確定させることはできない。このようなことから、ここでは単に押鍵する動作を行わせるためのパート動作データだけを作成している。指パートを横に動作させるためのパート動作データは、図11に示す動作制御データ生成処理内のステップ911の手のx位置処理を実行した際に、必要に応じて作成する。ここで作成したパート動作データも必要に応じて修正する。そのために、上記変数kuguru、mataguは、手のX位置処理の実行時に参照される。
【0127】
図17のステップ1502の判定がYESとなって移行するステップ1505では、変数tktimeの値から変数tkfoffの値を引いた値に0.2を掛けた値が、変数tkoffcostの値よりも大きいか否か判定する。離鍵開始から次の押鍵までの時間に0.2を掛けて得られる時間が、離鍵動作の基準時間よりも長い場合、判定はYESとなり、ステップ1506で変数tkstartに、変数tkfoffの値に変数tkoffcostの値を加算した値を代入した後、上記ステップ1504に移行する。そうでない場合には、判定はNOとなり、ステップ1507で変数tkstartに、変数tkoffcostの値に0.8を掛けた値に変数tkfoffの値を加算した値を代入した後、ステップ1504に移行する。
【0128】
上記ステップ1506、或いは1507を実行した後にステップ1504に移行したのであれば、ステップ1509、1516、或いは1519を実行した際に設定される動作時間データの値は、ステップ1506からステップ1504に移行したのであれば、変数tktimeの値から変数tkfoffの値を減算し、その減算結果から更に変数tkoffcostの値を減算した値である。ステップ1507からステップ1504に移行したのであれば、変数tktimeの値から変数tkfoffの値を減算し、その減算結果から更に、変数tkoffcosutの値に0.8を掛けた値を減算した値である。
【0129】
直前に処理した単位楽音データが表すイベントがノートオフイベントであり、ステップ1516、或いは1519を実行したのであれば、その単位楽音データを処理した際に、くぐらせる、或いはまたがせる指パートの動作を開始させるパート動作データを生成するようになっている。このため、ステップ1516、及び151では、その生成したパート動作データで表される動作を継続させる形でパート動作データを作成している。
【0130】
このように、同じ指パートによる離鍵、押鍵を短い時間内に行わせる場合、離鍵動作に要する時間、及び押鍵動作に要する時間の少なくとも一方を調整して、それらの動作を表現するようにしている。
図14に示すノートオンメイン処理では、上述した各種サブルーチン処理が実行される。それにより、指パートを押鍵させる動作を表現するためのパート動作データをサブルーチン処理単位で生成し単位動作データAに追加している。それらのパート動作データでは、変数hz、配列変数rx1〜3のうちの何れかが値の変更対象である。
【0131】
図19は、図11に示す動作制御データ生成処理内でステップ917として実行されるノートオフメイン処理の動作フローチャートである。次に、図19を参照して、ノートオフメイン処理について詳細に説明する。
現在、処理対象としている単位楽音データを実際に処理、即ち再生する際に、消音すべき和音(コード)があるか否かを示す値(「TRUE」或いは「FALSE」)は変数bchordoffに保持されている。その和音があれば、その和音を構成する楽音のなかで最後に消音する楽音の単位楽音データのアドレスは変数pchordendoffに保持されている。ノートオフメイン処理では、そのような変数を含む各種変数の値が参照される。
【0132】
先ず、ステップ1601では、変数bchordoffの値が「TRUE」か否か判定する。処理対象としている単位楽音データを再生する状況で消音すべき和音があるとみなしていた場合、その変数bchordoffには「TRUE」が代入されていることから、判定はYESとなってステップ1606に移行し、そうでない場合には、判定はNOとなってステップ1602に移行する。
【0133】
ステップ1602では、処理対象としている単位楽音データ、及びそれに続く単位楽音データによって和音が消音、即ちその和音の構成音が全て消音されるか否か判定する和音オフ判定処理を実行する。その和音オフ判定処理において、それらの単位楽音データによって和音が消音されると判定すると、変数bchordoffには「TRUE」が代入されることになる。その実行後は、ステップ1603に移行する。
【0134】
ステップ1603では、変数bchordoffの値が「TRUE」か否か判定する。上記和音オフ判定処理を実行した結果、和音を消音させると決定した場合、判定はYESとなり、ステップ1604でその和音を消音させる動作の内容を決定する和音オフ動作処理を実行した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ステップ1605で離鍵動作の内容を決定するノートオフ動作処理を実行した後、一連の処理を終了する。
【0135】
一方、上記ステップ1601の判定がYESとなって移行するステップ1606では、変数pchordendoffの値が変数peの値と等しいか否か判定する。変数peの値が指定する単位楽音データ、即ち現在、処理対象としている単位楽音データが、和音を構成する楽音のなかで最後に消音される楽音の消音を指示するものであった場合、判定はYESとなり、ステップ1607で変数bchordoffに「FALSE」、変数pchordendoffにNULLをそれぞれ代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなって、ここで一連の処理を終了する。
【0136】
このように、ノートオフメイン処理では、単位楽音データが消音を指示する楽音が和音を構成しているか否かにより処理を分岐させている。それにより、和音を構成する楽音を消音させるのか単に楽音を消音させるのかに応じて、手指の各パートを動作させる内容を決定している。
【0137】
ここで、上記ノートオフメイン処理内で実行される各種サブルーチン処理について、図20〜図23を参照して詳細に説明する。
図20は、上記ステップ1602として実行される和音オフ判定処理の動作フローチャートである。ノートオフメイン処理内で実行されるサブルーチン処理では、図20を参照して、始めに和音オフ判定処理について詳細に説明する。
【0138】
先ず、ステップ1701では、初期設定を行う。その初期設定を行うことにより、変数tknextには、変数peで指定される単位楽音データ以降で最初に楽音の発音開始を指示する単位楽音データの処理タイミングを絶対時間で示す値が代入され、変数tknextoffには、変数peで指定される単位楽音データ以降で最初に楽音の消音を指示する単位楽音データの処理タイミングを絶対時間で示す値が代入される。
【0139】
ステップ1701に続くステップ1702では、変数tknextoffの値が、変数tktimeの値に変数tkchordの値を加算した値より小さいか否か判定する。変数tkchordの値が示す時間が経過する前に、消音される楽音が存在していない場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップ1703に移行する。
【0140】
ステップ1703では、変数tknextの値が、変数tktimeの値に変数tkchordの値を加算した値より大きいか否か判定する。変数tkchordの値が示す時間が経過する前に、次の楽音の発音が開始する場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなり、ステップ1704で変数bchordoffに「TRUE」を代入した後、一連の処理を終了する。
【0141】
このように、本実施の形態では、変数tkchordの値が示す時間内に複数の楽音の消音(ノートオンイベント)があり、且つその時間内に発音開始する楽音(ノートオフイベント)が存在していなければ、和音の構成音とみなした楽音は消音すべき状況になったとしている。
【0142】
図21は、図19に示すノートオフメイン処理内でステップ1604として実行される和音オフ動作処理の動作フローチャートである。次に図21を参照して、和音オフ動作処理について詳細に説明する。
先ず、ステップ1801では、初期化処理を実行する。その初期化処理を実行することにより、変数tktime0には、変数tktimeの値が代入され、変数pe0には変数peの値が代入され、変数pchordendoffにはNULLが代入される。ステップ1801に続くステップ1802以降では、変数pe0の値を順次、インクリメントしながら、和音とみなす楽音の範囲の特定や、その和音を消音させる動作内容を決定するための処理が行われる。
【0143】
ステップ1802では、楽音・運指データが終了したか否か判定する。変数pe0の値が指定するデータが楽音・運指データの最後に位置するエンドデータであった場合、判定はYESとなってステップ1810に移行し、そうでない場合には、判定はNOとなってステップ1803に移行する。
【0144】
ステップ1803では、変数pe0の値が変数peの値と等しいか否か判定する。それらの値が等しい場合、判定はYESとなってステップ1805に移行する。そうでない場合には、判定はNOとなり、ステップ1804で変数tktime0に、それまでの値に変数pe0の値が指定する単位楽音データの時間データの値を加算した値を代入した後、そのステップ1805に移行する。そのようにして、変数tktime0には、変数peの値が指定する単位楽音データ以降の単位楽音データを処理すべきタイミングを絶対時間で示す値が代入される。
【0145】
ステップ1805では、変数tktime0の値が、変数tktimeの値に変数tkchordの値を加算した値よりも小さいか否か判定する。変数pe0、及びpeの値がそれぞれ指定する単位楽音データの各処理タイミングが、変数tkchordの値で指定される時間内でなかった場合、判定はNOとなって上記ステップ1810に移行する。そうでない場合には、判定はYESとなってステップ1806に移行する。
【0146】
ステップ1806では、変数pe0の値が指定する単位楽音データは楽音の消音(ノートオフイベント)を表すものであるか否か判定する。その単位楽音データがノートオフイベントを表していた場合、判定はYESとなり、ステップ1807で変数pchordendoffに変数pe0の値を代入し、次にステップ1808でノートオフ動作処理を実行した後、ステップ1809に移行する。そうでない場合には判定はNOとなり、そのステップ1809に移行する。
【0147】
ステップ1809では、変数pe0に次の単位楽音データのアドレスを代入する。それを行った後、上記ステップ1802に戻る。
このように、ステップ1802〜1809で形成される処理ループをステップ1802の判定がYES、或いはステップ1805の判定がNOとなるまで繰り返し実行することにより、変数pchordendoffには、和音を構成するとみなす楽音のなかで最後に消音する楽音の単位楽音データのアドレス値が代入されることになる。
【0148】
一方、ステップ1802の判定がYES、或いはステップ1805の判定がNOとなって移行するステップ1810では、手パートがz軸上を移動していく動作(ここでは図4に示す位置ZPOS2から位置ZPOS1に移動していく動作である)内容を指定するパート動作データを作成する。その動作データの作成は、変数tktimeの値が示すタイミングで移動を開始し、所定の速度で位置ZPOS1に達するように行う。そのようにしてパート動作データを生成し単位動作データAに追加した後、一連の処理を終了する。
【0149】
和音の消音動作内容として、手パートをz軸上における移動内容を指定するパート動作データは上述したようにして生成される。それにより、図8に示す例では、親指パートが「D#」の音高が割り当てられた鍵の離鍵開始に合わせて、手パートのz軸上の移動が開始している。
【0150】
次に、上記ステップ1808、或いは図19に示すノートオフメイン処理内でステップ1605として実行されるノートオフ動作処理について、図22、及び図23に示すその動作フローチャートを参照して詳細に説明する。なお、この処理内では、単位楽音データに付加された指番号データは変数figに、その単位楽音データ中の音高データは変数noteに代入されている。
【0151】
先ず、ステップ1901では、初期設定を行う。その初期設定では、変数peの値で指定される単位楽音データ以降で、変数figの値が指番号データとして付加されているノートオンイベントを表す単位楽音データ中の音高データを抽出し、その抽出した音高データを変数nextnoteに代入することなどが行われる。
【0152】
ステップ1901に続くステップ1902では、変数figの値が指定する指パートが押鍵に使用中か否か判定する。変数noteの値で指定される楽音を実際には発音させないような場合、即ちその楽音の発音開始を指示する単位楽音データが存在していない、或いはその単位楽音データが存在していても、それに変数figの値が指番号データとして付加されていないような場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなってステップ1903に移行する。
【0153】
ステップ1903では、変数noteの値が変数nextnoteの値と等しいか否か判定する。それらの値が等しくない場合、即ちユーザがそれまで押鍵していた鍵とは異なる鍵を同じ指で押鍵しなければならない場合、判定はNOとなって図23のステップ1905に移行する。そうでない場合には、判定はYESとなってステップ1904に移行し、変数figの値で指定される指パートが、変数tktimeの値で指定されるタイミングで単に離鍵動作を開始させるパート動作データを生成した後、一連の処理を終了する。その動作データでは、離鍵動作を開始させる指パートと隣の指パートとの間を広げさせていても、その間を狭くさせることは行わせない。
【0154】
例えば押鍵中の人差し指を離鍵した直後に、親指でその鍵よりも高音の鍵を押鍵する場合、その人差し指を離鍵させる前に親指の指くぐり動作を開始させる必要がある。このことから、図23のステップ1905〜1917では、次の押鍵に向けて指くぐり、或いは指またぎさせる動作を開始させる必要性の有無を判定し、その判定結果に応じてパート動作データを作成し単位動作データAに追加するための処理が行われる。
【0155】
先ず、ステップ1905では、変数figの値で指定される指パートのみを押鍵させているか否か判定する。それ以外の指パートも押鍵させていた場合、即ち複数の指パートを押鍵させていた場合、判定はNOとなってステップ1906に移行する。そうでない場合には、判定はYESとなってステップ1907に移行する。
【0156】
ステップ1906では、変数figの値で指定される指パートが、変数tktimeの値で指定されるタイミングで離鍵動作を開始させるパート動作データを生成した後、一連の処理を終了する。その動作データは、離鍵動作を開始させる指パートと隣の指パートとの間を広げさせていれば、その間を狭くさせて弛緩状態に戻す動作も行わせるものである。
【0157】
このように、本実施の形態では、指パートの離鍵後の状態は、それを次の押鍵に使用するか否かを考慮して決定している。それにより、次の押鍵に使わない指パートをいつまでも広げた状態にしておくようなことは回避させている。このため、指パートを離鍵開始時から次の押鍵終了時まで単に動かすようなことは無くなる。その結果、より自然な形で演奏動作を表現できるだけでなく、押鍵イベント、或いは離鍵イベントを発生させる指パートの動作や、その動作に伴う他の指パートの動作をより目立たせることができる。
【0158】
一方、ステップ1907では、次に処理する単位楽音データが表すイベントはノートオンイベントか否か判定する。そのデータが表すイベントがノートオンイベントでなかった場合、判定はNOとなって上記ステップ1906に移行する。そうでない場合には、判定はYESとなってステップ1908に移行する。
【0159】
ステップ1908では、次に処理する単位楽音データに付加された指番号データを変数figaに、その単位楽音データ中の音高データを変数noteaにそれぞれ代入する。その代入後に移行するステップ1909では、変数note、noteaに音高データが代入された楽音は共に和音の構成音ではないか否か判定する。それらの楽音のうちの一方でも和音の構成音であった場合、判定はNOとなって上記ステップ1906に移行する。そうでない場合には、判定はYESとなってステップ1910に移行する。
【0160】
ステップ1910では、変数noteaに音高データが代入された楽音をノートオンさせるタイミングと変数noteに音高データが代入された楽音をノートオフさせるタイミングの時間間隔が所定時間内か否か判定する。変数figの値で指定される指パートを離鍵させた後、変数figaの値で指定される指パートを直ちに押鍵させるような場合、判定はYESとなってステップ1911に移行する。そうでない場合には、判定はNOとなって上記ステップ1906に移行する。
【0161】
ステップ1911では、変数fig、figaにそれぞれ代入された値(指番号データ)で指定される指パートが親指と、人差し指、中指、及び薬指のうちの何れかの関係となっているか否か判定する。その関係が満たされていない場合、判定はNOとなって上記ステップ1906に移行する。そうでない場合には、判定はYESとなってステップ1912に移行する。
【0162】
ステップ1912では、変数figaの指番号データで指定されるのが親指で変数noteaの音高データは変数noteの音高データより高い音高を示しているか否か判定する。変数figaの指番号データで指定されるのが親指であり、その親指に、今回、離鍵させる鍵の音高よりも高い音高の鍵を押鍵させる場合、判定はYESとなってステップ1913に移行する。そうでない場合には、判定はNOとなってステップ1915に移行する。
【0163】
ステップ1913では、人差し指パートなどの指パートの下をくぐらせて親指パートに次に押鍵すべき鍵を押鍵させる指くぐりを行うべき条件が満たされているとして、変数kuguruに「TRUE」を表す値を代入する。続くステップ1914では、変数figaの値で指定される親指パートをくぐらせる動作を開始させ、変数tkstartの値が示すタイミングで変数figの指番号データで指定される指パートの離鍵動作を開始させるためのパート動作データを作成し単位動作データAに追加する。その作成・追加を行った後に、一連の処理を終了する。
【0164】
上記親指パートの動作を開始させるタイミング、即ちパート動作データ中の動作時間データは、その親指パートの直前の動作を終了させたタイミングを考慮して決定する。直前の動作を終了させてから変数figの指番号データで指定される指パートを離鍵させるタイミングまでの時間間隔が予め定めた時間内であれば、その動作に続ける形で動作させる。即ち直前の動作を終了させたタイミングを、新たな動作を開始させるタイミングとする。それらの時間間隔が予め定めた時間内でなければ、変数figの指番号データで指定される指パートを離鍵させるタイミングから、例えばその指パートを離鍵させる鍵と親指パートを押鍵させる鍵の音高差に応じた時間だけ前のタイミングとする。その時間は、例えば音高差と時間の関係を予め定義したテーブルを参照して決定する。親指パートに横の動きを行わせるための対象変数である変数frzには、例えば親指パートを押鍵させるまでの間、その横の動きを一定速度で行わせるとの前提で、変数figの指番号データで指定される指パートを離鍵させる時点での値を設定する。そのようなパート動作データをステップ1914では生成する。
【0165】
上記ステップ1912の判定がNOとなって移行するステップ1915では、変数figの指番号データで指定されるのが親指で変数noteの音高データは変数noteaの音高データより高い音高を示しているか否か判定する。変数figの指番号データで指定されるのが親指であり、その親指に現在、押鍵させている鍵の音高よりも低い音高の鍵をノートオンさせる場合、判定はYESとなってステップ1916に移行する。そうでない場合には、判定はNOとなって上記ステップ1906に移行する。
【0166】
ステップ1916では、親指パートの上を人差し指パートなどの指パートにまたがせて、次に押鍵すべき鍵を押鍵させる指またぎを行うべき条件が満たされているとして、変数mataguに「TRUE」を表す値を代入する。続くステップ1917では、変数figの値で指定される親指パートの上またがせる動作を開始させ、変数tkstartの値が示すタイミングで変数figの指番号データで指定される指パートの離鍵動作を開始させるためのパート動作データを作成し単位動作データAに追加する。その作成は、上記ステップ1914と同様にして行う。そのようなパート動作データを作成・追加した後に、一連の処理を終了する。
【0167】
このようにして、本実施の形態では、今回、離鍵させる鍵の次に行う押鍵に向けて、指くぐり、或いは指またぎを行わせるべき状況か否か判定し、その判定結果に応じてパート動作データを作成している。それにより、そのような指パートを交差させる動作を含め、演奏動作を表示させている。
【0168】
図19に示すノートオフメイン処理では、上述した各種サブルーチン処理が実行される。それにより、指パートを離鍵させる動作を表現するためのパート動作データをサブルーチン処理単位で生成し単位動作データAに追加している。それらの動作データでは、変数hz、配列変数rx1〜3、及びfrzのうちの何れかが値の変更対象である。
【0169】
図24は、図11に示す動作制御データ生成処理内でステップ911として実行される手のx位置処理の動作フローチャートである。次に、図24を参照して、手のx位置処理について詳細に説明する。上述したように、この手のx位置処理には、図17及び図18に示すノートオン動作処理、或いは図22及び図23に示すノートオフ動作処理の実行時に値が代入される変数kuguru、mataguが引数として渡される。
【0170】
先ず、ステップ2001では、変数kuguru、及びmataguのうちの一方に「TRUE」を表す値が代入されているか否か判定する。図17及び図18に示すノートオン動作処理、或いは図22及び図23に示すノートオフ動作処理を実行した結果、変数kuguru、及びmataguのうちの一方に「TRUE」を表す値が代入されていた場合、判定はYESとなってステップ2002に移行する。そうでない場合には、判定はNOとなってステップ2003に移行する。
【0171】
ステップ2002では、指パートが押鍵している、或いは押鍵する鍵、その配置、その鍵上の押鍵位置、各指パートの長さ、各指パートの横に動かせる範囲、などを基に、親指パート以外の各指パートの回転角frzが全て小さな範囲内に収まるようにしつつ、手パートの基点301(手首)を軸としたz軸の周りの回転角hrzを求める。それにより、実際の指が横に動く範囲を越えて各指パートが横に動くのを回避させている。
【0172】
このように、本実施の形態では、親指パートをそれ以外の4つの指パートと区別して扱い、回転角hrzを求めている。これは、指くぐりや指またぎでは、親指パートの回転角frzは他の指パートのそれと比較して大きくさせなければならない、親指パート以外の4つの指パートは、隣り合う指パートの間を大きく広げることは普通はない。といった傾向が見られるためである。
【0173】
一方、ステップ2003では、横方向に動かした際の各指パートの回転角frzのなかの最大角(の絶対値)が最小となる手パートの基点301(手首)を軸としたz軸の周りの回転角hrzを求める。それにより、1つの指パートに無理な動きを行わせるのを回避させて、手指の各パートが全体的に見てより楽な状態となるようにさせている。
【0174】
上記ステップ2002、或いは2003を実行することにより、手パート、及び各指パートのxy平面上での配置が確定する。このことから、それらのうちの一方を実行した後に移行するステップ2004では、各指パートが押鍵している、或いは押鍵する鍵、その鍵の配置、その鍵上の押鍵位置(図5参照)、各指パートの長さ、その回転角frz、手パートの回転角hrz、及び手パートの長さLa(図3参照)などを基に、手パートの基点301のx軸上の位置hxを求める(図6参照)。その後はステップ2005に移行する。
【0175】
ステップ2005では、変数tkoldの値で指定されるタイミングから変数tktimeの値で指定されるタイミングまでに、手パートの基点301をステップ2004で求めた位置hxまで移動させたり、ステップ2002、或いは2003で求めた回転角hrzにさせるパート動作データをそれぞれ必要に応じて生成し単位動作データAに追加する。位置hx、及び回転角hrzを共に変化させる必要がなければ、それらのパート動作データは作成しない。
【0176】
図5に示すように基準押鍵位置を複数、予め設定し、そのなかの一つを押鍵位置として選択すると、複数の指パートを押鍵させるような場合に、1つ以上の指パートに無理、或いは負担の大きい動作を行わせなければならなくなる可能性が高くなる。しかし、無理、或いは負担の大きい動作は、押鍵位置を僅かにずらすだけで無理でなくなる、或いは負担が大きく軽減することが多い。このことから、ステップ2002、2003では、鍵の押鍵位置の修正も必要に応じて行うようにしている。その修正を行うと、通常、指パートの曲げ方やその回転角frzなども修正しなければならなくなる。このため、ステップ2005では、必要に応じて、既に作成したパート動作データの修正なども合わせて行っている。
【0177】
ステップ2005に続くステップ2006では、変数kuguru、及びmataguの両方に「FALSE」を表す値を代入する。一連の処理はその後に終了する。
上記手のx位置処理を実行すると、変数peの値で指定される単位楽音データが表すイベントの発生時、或いはそのイベント後の手指の各パートの状態を指定する各種変数、及び各種配列変数のなかで、変数hyの除く全てのものの値が確定することになる。その変数hyの値は、この手のx値処理の次にステップ912として実行される手のy位置再処理によって確定される。
【0178】
図25は、シーケンス処理の動作フローチャートである。このシーケンス処理は、例えばユーザが操作部106を操作して、予め指定(選択)した楽音・運指データの再生を指示した場合に、CPU101が、ROM102に格納されているプログラムを実行することで実現される処理である。図10に示すリアルタイム処理部802はそのシーケンス処理を実行することによって実現される。
【0179】
図7(b)に示す動作制御データBは、楽音・運指データとは別の領域に格納されている。動作制御データBを構成する段階動作データは、当然のことながら、楽音・運指データを構成する単位楽音データの数よりも多く、その処理タイミングは、通常、単位楽音データの処理タイミングと一致しない。このようなことから、動作制御データB、及び楽音・運指データは、それぞれ、並行に処理している。
【0180】
先ず、ステップ2101では、変数tktimeE、tktimeM、及びclockにそれぞれ0を代入したり、変数pe、及びpmにそれぞれ初期値を代入するといった各種変数への値の代入や、特には図示しないハードタイマが所定時間間隔で出力する割り込み信号を有効にして、タイマインタラプト処理の実行禁止を解除するといった初期設定を行う。その実行禁止を解除することによって、変数clockの値は、タイマインタラプト処理が実行される度にインクリメントされる。
【0181】
ステップ2101に続くステップ2102では、変数clockの値やテンポデータの値を用いた演算を行って、変数clockの値を楽音・運指データ中の時間データの単位で示す値を算出し、その算出結果を変数tktimeに代入する。その後はステップ2103に移行する。
【0182】
ステップ2103〜2109では、楽音・運指データの再生に係わる処理が実行される。
先ず、ステップ2103では、楽音・運指データが終了したか否か判定する。変数peの値が指定するデータが楽音・運指データの最後に位置するエンドデータであった場合、判定はYESとなってステップ2110に移行し、そうでない場合には、判定はNOとなってステップ2104に移行する。
【0183】
ステップ2104では、変数peの値で指定される単位楽音データ中の時間データの値を変数tktimeEの値に加算した値が、変数tktimeの値以上か否か判定する。変数tktimeEには、それまでに処理した単位楽音データ中の時間データの値を累算した値、即ち直前に処理した単位楽音データの処理タイミングを絶対時間で示す値が代入されている。このため、変数peの値で指定される単位楽音データを処理すべきタイミングとなった場合、判定はYESとなってステップ2105に移行する。そうでない場合には、判定はNOとなってステップ2110に移行する。
【0184】
ステップ2105では、変数tktimeEに、それまでの値に変数peの値が指定する単位楽音データ中の時間データの値を加算した値を代入する。それにより、次の単位時間データを処理すべきタイミングを示す値を変数tktimeEに代入した後は、処理タイミングとなった単位楽音データをそれが表すイベントの種類に応じて処理を行い、その処理による演奏の進行に応じて、表示ページの切り換え、新たに発音させた楽音に対応する音符の表示色の変更などを行い、更に変数peに、それまでのアドレス値から1イベント分だけ進めたアドレス値を代入した(以上、ステップ2106〜2109)後、ステップ2110に移行する。なお、単位楽音データの処理は、CPU101が、そのデータから音源107に送出すべきコマンドを生成して送出することで行われる。
【0185】
ステップ2110〜2115では、動作制御データBに従って手指の各パートを動作させるための処理が行われる。
先ず、ステップ2110では、動作制御データBが終了したか否か判定する。変数pmの値が指定する段階動作データが動作制御データB中に存在していない場合、判定はYESとなってステップ2115に移行し、そうでない場合には、判定はNOとなってステップ2111に移行する。
【0186】
ステップ2111では、変数pmの値で指定される段階動作データ中の時間データの値を変数tktimeMの値に加算した値が、変数tktimeの値以上か否か判定する。変数tktimeMには、上記変数tktimeEと同様に、それまでに処理した段階動作データ中の時間データの値を累算した値、即ち直前に処理した段階動作データの処理タイミングを絶対時間で示す値が代入されている。このため、変数pmの値で指定される段階動作データを処理すべきタイミングとなった場合、判定はYESとなってステップ2112に移行する。そうでない場合には、判定はNOとなって上記ステップ2102に戻る。
【0187】
ステップ2112では、変数tktimeMに、それまでの値に変数pmの値が指定する段階動作データ中の時間データの値を加算した値を代入する。それにより、次の段階動作データを処理すべきタイミングを示す値を変数tktimeMに代入すると、ステップ2113に移行して、処理タイミングとなった段階動作データに従って、手指の各パートのなかで状態を変化させるべきパートの状態を変化させて演奏動作を示す表示内容を更新する演奏動作表示更新処理を実行する。その実行後は、ステップ2114で変数pmに、それまでのアドレス値から1イベント分だけ進めたアドレス値を代入した後、上記ステップ2102に戻る。なお、表示内容の更新は、例えばCPU101が、表示部105のメモリに格納された画像データ中でデータを書き換えるべき部分の画像データをROM102から読み出すか、或いはそれを用いて生成し、そのようにして得た画像データを、そのメモリ中の画像データを書き換えるべき部分に上書きすることで行われる。
【0188】
一方、上記ステップ2110の判定がYESとなって移行するステップ2115では、楽音・運指データが終了したか否か判定する。変数peの値が指定するデータが楽音・運指データの最後に位置するエンドデータであった場合、判定はYESとなって一連の処理を終了し、そうでない場合には、判定はNOとなって上記ステップ2102に戻る。
【0189】
上述したシーケンス処理を実行することにより、図9に示すような画像が表示部105に表示され、それに表示された手指の各パートが図8に示すように動作することになる。
なお、本実施の形態では、図8に示すように、手パートは単位楽音データの処理タイミングで動作を開始させることを基本としているが、必ずしもそうしなくて良い。演奏中の動作としては、例えば横動作は押鍵動作の開始前に完了するといった特徴がある(関口、英保:仮想空間におけるピアノ演奏動作の生成と表示、情報処理学会研究報告 Vol99、No.16(1999))。このことから、例えば押鍵では、例えば手パートや指パートの移動が完了した後に指パートを関節で曲げての押鍵動作を開始するといったように、複数のフェーズに分けて手指の各パートを動作させるようにしても良い。
【0190】
手パートの基点301がとれるz軸上の位置は、位置ZPOS1、或いはZPOS2の2通りだけにしているが、その位置を3通り以上、或いは任意に設定できるようにしても良い。これは基点301がとれるy軸上の位置においても同様である。そのようにした場合、指が他の指をくぐる動作やまたぐ動作をより適切に表現できるようになる。
【0191】
また、本実施の形態では、演奏操作子群として鍵盤を想定し、その鍵盤に対する演奏動作を表示しているが、鍵盤以外の演奏操作子群に対する演奏動作を表示するようにしても良い。
本実施の形態は音源107や表示部105を搭載した装置に本発明を適用したものであるが、本発明を適用できる装置はそれらを搭載したものに限定されるわけではない。音源107は無くても良く、表示部105についても、外部の表示装置と接続できるのであれば、無くても良い。
【0192】
上記演奏動作表示装置の動作を実現させるようなプログラムは、CD−ROM、フレキシブルディスク、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザはプログラムを取得して任意の演奏動作表示装置、或いはコンピュータ等のデータ処理装置にロードすることにより、その装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【0194】
【発明の効果】
以上、説明したように本発明は、鍵盤上の鍵に指を接触させるうえで基準となる基準位置を予め複数定めておき、押鍵のために指を鍵に接触させる位置を、手の位置と使用すべき指と押鍵すべき鍵とに基づいて、予め定められた基準位置のなかから一つ選択して決定する。そのようにして、指の接触位置を決定するうえで考慮すべき範囲を制限しているため、その接触位置をより容易、且つ短時間に決定することができる。
【図面の簡単な説明】
【図1】本実施の形態による演奏動作表示装置の回路構成図である。
【図2】楽音・運指データの構成を説明する図である。
【図3】表示用の手指の構造を説明する図である。
【図4】手の移動範囲を説明する図である。
【図5】状況に応じて変化させる鍵を押鍵する位置を説明する図である。
【図6】手のx軸上の位置の求め方を説明するための図である。
【図7】動作制御データの構成を説明する図である。
【図8】手指の動作表示例を説明する図である。
【図9】実際の表示例を示す図である。
【図10】本実施の形態による演奏動作表示装置の機能ブロック図である。
【図11】動作制御データ生成処理の動作フローチャートである。
【図12】手のy位置処理処理の動作フローチャートである。
【図13】手のz位置処理の動作フローチャートである。
【図14】ノートオンメイン処理の動作フローチャートである。
【図15】和音判定処理の動作フローチャートである。
【図16】和音動作処理の動作フローチャートである。
【図17】ノートオン動作処理の動作フローチャートである。
【図18】ノートオン動作処理の動作フローチャートである(続き)。
【図19】ノートオフメイン処理の動作フローチャートである。
【図20】和音オフ判定処理の動作フローチャートである。
【図21】和音オフ動作処理の動作フローチャートである。
【図22】ノートオフ動作処理の動作フローチャートである。
【図23】ノートオフ動作処理の動作フローチャートである(続き)。
【図24】手のx位置処理の動作フローチャートである。
【図25】シーケンス処理の動作フローチャートである。
【符号の説明】
101 CPU
102 ROM
103 RAM
104 データ入力部
105 表示部
106 操作部
107 音源
108 サウンドシステム
300 鍵盤
301〜306 基点
801 データ生成部
802 リアルタイム処理部
803 動作制御データ生成部
804 データ送出部
805 動作表示部
806 音源部
807 楽譜表示部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a technique for displaying an operation when a performance operator group to be subjected to a performance operation such as a keyboard is operated according to the progress of the performance.
[0002]
[Background Art and Problems to be Solved by the Invention]
Currently, many keyboard instruments are equipped with a navigation function that sequentially notifies the user (performer) of keys to be pressed (operated) as the performance progresses. However, many users who use the navigation function are technically immature, and even if the navigation function can know the key to be pressed next, it does not know with which finger the key should be pressed. This is the actual situation. For this reason, keyboard instruments equipped with a device (performance performance display device) for displaying a finger to be used for pressing a key have been commercialized. By using the performance operation display device, it is possible to perform the performance while taking into account how to carry the finger, so that the user can perform more efficient practice (learning).
[0003]
Many performance display devices simply display the finger to be used for the next key press (operation). However, how to carry a finger to a key to be pressed (operated) is not just to carry a finger to that key. You may carry your finger under another finger, or you may carry your finger across another finger. This means that if only a finger is displayed, the user may not immediately understand how to carry the finger and press (operate) the key. Therefore, as disclosed in, for example, Japanese Patent Application Laid-Open No. 10-39739, a performance operation display device has been devised that displays not only the finger to be used but also how to carry the finger in a form that is easier to understand.
[0004]
In the conventional performance display device disclosed in Japanese Patent Application Laid-Open No. 10-39739, the finger to be used for the key press is displayed in any form by displaying the finger (the part from the wrist) at the time of the key press. It tells the user what to use. However, if the key to be pressed next is away from the currently pressed key, usually the hand or finger must be moved greatly. This means that even if the finger at the time of key pressing is displayed, the user may not immediately understand how to shift to the displayed finger shape. For this reason, the conventional performance display device has a problem that it is difficult to understand the overall movement of fingers.
[0005]
In the conventional performance display device, a finger used for key pressing is moved using computer graphics (hereinafter abbreviated as CG) technology. By the movement of the finger, the user can know the finger to be used for pressing the key. However, the movement of the finger is the movement after the finger shape at the time of key depression is made. For this reason, it is not possible to inform the user how to move to the shape of the finger at the time of key pressing by the movement of the finger.
[0006]
An object of the present invention is to provide a technique for displaying the movement of fingers during performance in a form that a user can easily understand.
[0007]
The performance operation display device of the present invention is to be generated on the keyboard on the premise that the performance image of the fingers when the player operates the keyboard as the performance progresses is displayed together with the keyboard image. A plurality of musical sound / fingering data composed of event data representing the contents of the event, time data indicating the generation timing of the event data, and finger data for designating a finger to be used for generating the event Performance data acquisition means for acquiring performance data, and pressing keys on the keyboard based on the performance data acquired by the performance data acquisition means Do Or the state of the finger after releasing the key is determined by the musical tone / fingering data unit, and the keyboard is operated by sequentially shifting to the position of the finger determined by the state determining unit. Moving image display means for displaying a moving motion of a finger, and the state determining means Do Once the position of the hand is determined, the position of the hand and the finger to be used for key depression With the key to be pressed Based on the above, a position on the key to be touched by the finger is selected from a plurality of predetermined reference positions.
[0011]
The program of the present invention realizes a function for realizing the performance display device. The program realizes the following functions.
Musical sound / fingering data composed of event data representing the contents of an event to be generated on the keyboard, time data indicating the generation timing of the event data, and finger data designating a finger to be used for generating the event A function to acquire performance data consisting of a plurality of sets, and a key on the keyboard to be pressed based on the performance data acquired by the acquisition function Do The function of determining the finger position after releasing the key in units of musical sound / fingering data and the movement of the finger operating the keyboard by sequentially shifting to the finger position determined by the determining function Is a program for realizing the function of displaying a video, and the function to be determined is Do Once the position of the hand is determined, the position of the hand and the finger to be used for key depression With the key to be pressed Based on the above, a position on the key to be touched by the finger is selected from a plurality of predetermined reference positions.
[0014]
In the present invention, a plurality of reference positions serving as a reference for bringing a finger into contact with the key on the keyboard are determined in advance, and the position at which the finger is brought into contact with the key for key pressing is determined as the hand position and the finger to be used. With the key to be pressed Based on the above, one of the predetermined reference positions is selected and determined. In this way, by limiting the range in which the finger contact position is determined, the state in which each finger can be taken is limited (the number of options is reduced), and the amount of calculation required to determine the contact position is reduced. As a result, the contact position can be determined more easily and in a short time.
[0015]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
FIG. 1 is a circuit configuration diagram of a performance operation display device according to the present embodiment. This performance operation display device is realized as a device that obtains musical tone / fingering data, which will be described later, from outside, and displays the motion of the finger being played as a moving image based on the acquired musical tone / fingering data.
[0016]
As shown in FIG. 1, the performance operation display device includes a CPU 101 that controls the entire device, and a program executed by the CPU 101. B ROM 102 storing gram and various control data (including various data for image display), RAM 103 used for work by CPU 101, and data input unit for acquiring various data including the above-mentioned musical tone / fingering data 104, a display unit 105 that displays data sent from the CPU 101 on the screen, an operation unit 106 to be operated by a user, a sound source 107 that generates musical tone waveform data in accordance with instructions from the CPU 101, and the sound source 107 Is configured to include a sound system 108 that converts the waveform data output from the sound into sound and emits the sound, and a bus 109 that connects the CPU 101 to the units 102 to 107.
[0017]
The data input unit 104 is, for example, a flexible disk drive (FDD). The display unit 105 is a display device such as a CRT or a liquid crystal display device. The operation unit 106 is an input device that includes a plurality of operators such as various switches and keys, and a detection circuit that detects operations on these operators. The sound system 108 is a system including, for example, a D / A converter, an amplifier, and a speaker. The data input unit 104 may be an interface that can receive at least a signal output from an external device, or a communication control device that performs communication with a predetermined network.
[0018]
As shown in FIG. 2, the musical tone / fingering data is configured by adding fingering data to the musical tone data. The musical tone data is performance data (sequence data) that is normally used for playing back the performance. The musical scale (pitch) data, whether the musical tone is started (note-on event) or muted (note-off event) Type data that represents the type of event including, and time data indicating the timing at which the event specified by the pitch data of the musical tone and the type data occurs are referred to as one unit of data (hereinafter referred to as unit musical tone data for convenience). The unit musical sound data is arranged in the order of event occurrence. The fingering data is data composed of finger number data added to each unit musical sound data and indicating a finger to be used for generating an event represented by the unit musical sound data. As finger numbers, 0 is assigned to the thumb, 1 is assigned to the index finger, 2 is assigned to the middle finger, 3 is assigned to the ring finger, and 4 is assigned to the little finger.
[0019]
The fingering data usually includes at least hand data indicating whether the finger to be moved is the right hand or the left hand, in addition to the finger number data, and these pieces of data are added to each unit musical sound data. However, here, in order to avoid confusion and facilitate understanding, attention is paid to only the right hand and hand data is not considered. The time data is data representing the occurrence timing of the event at a time interval (delta time) between events, and the type data and pitch data are data constituting MIDI data, for example.
[0020]
In the above musical tone data (performance data), the start of sound generation (on) and the sound mute (off) of the music are treated as separate events, and the sound generation period is specified by these events. However, the musical sound data may be a combination of these events. That is, the unit musical tone data includes, for example, pitch data, time data that specifies the sound generation start timing specified by the pitch data, and time length data that specifies the time length (gate time) during which the musical sound is generated. It may be constituted by. As is clear from this, the format of the musical sound data is not particularly limited.
[0021]
The operation of the above configuration will be described.
When the power is turned on, the CPU 101 reads and executes a program stored in the ROM 102 to start control of the entire apparatus, and causes the display unit 105 to display an initial screen. Thereafter, control is performed in accordance with the user's operation on the operation unit 106.
[0022]
The CPU 101 generates image data for displaying the initial screen using a plurality of image data read from the ROM 102 using, for example, the RAM 103 for work. The display unit 105 to which the image data of the initial screen generated as described above is sent stores it in a memory (for example, a dual port RAM) (not shown). Subsequent changes in the display content, for example, are made entirely by the CPU 101, for example, by reading from the ROM 102 the image data of the portion to be rewritten in the image data stored in the memory, or by using it. The image data thus obtained is overwritten on the portion of the memory where the image data is to be rewritten. In this way, the CPU 101 causes the display unit 105 to display a screen and a message to be displayed, a finger expressing a performance action described later, and the like as necessary.
[0023]
When the user operates the operation unit 106 to instruct to read data of a file stored on a flexible disk (FD), data indicating that fact is sent from the operation unit 106 to the CPU 101 via the bus 109. Receiving the data, the CPU 101 sends a command for instructing reading to the data input unit (FDD) 104, and then stores the data of the file sent from the data input unit 104 in the RAM 103. In this way, data designated by the user, including musical tone / fingering data, is acquired from the FD in file units.
[0024]
Although the detailed description of the specification of the file from which the CPU 101 reads data is omitted, the file name is input by operating the operation unit 106 or the list of files stored in the FD is displayed on the display unit 105. Let's do it by selecting a file from that. The file names to be displayed in the list are those received by the CPU 101 by causing the data input unit 104 to read out the file names stored in the FD.
[0025]
Like the conventional performance display device disclosed in Japanese Patent Laid-Open No. 10-39739, basically, only the shape of the finger at the time of key depression is displayed. How to move the finger until the shape is changed Is difficult for users to understand. For this reason, in this embodiment, the motion from the previous finger state to the state of the finger causing the event is displayed as a moving image for each event. In other words, where to move the hand from where and how to change the state of which finger is displayed as a moving image. In this way, when a series of finger movements during performance are displayed in detail, the user can be made to understand without thinking about how to move the fingers.
[0026]
In order to display the motion of fingers during performance as a moving image, data for that purpose (hereinafter referred to as motion control data) must be generated. The data is generated from the musical tone / fingering data, but depending on the target musical tone / fingering data, a heavy load is imposed on the generation. This means that if the musical tone / fingering data (musical sound data) is reproduced while generating the motion control data, there is a possibility that the musical tone is sounded or the image is displayed. That is, there is a possibility that the musical sound cannot be generated at the timing at which the musical sound should be generated, or the operation of the fingers cannot be displayed smoothly. Therefore, in the present embodiment, the generation of the operation control data is performed separately from the reproduction of the musical tone / fingering data.
[0027]
The operation control data is generated for musical tone / fingering data stored in the RAM 103 in a file format, for example. When the user operates the operation unit 106 to designate (select) one of the musical tone / fingering data stored in the RAM 103 and instruct the generation of the operation control data, the CPU 101 performs the following operation. The operation control data of the musical tone / fingering data designated by the user is generated. Note that the tone / fingering data designation method is basically the same as that for designating a file to be read from the FD.
[0028]
FIG. 3 is a diagram for explaining the structure of a finger for display.
Each part of the body can move by bending its joints. The same applies to fingers. Therefore, in the present embodiment, as shown in FIG. 3, the tip from the wrist is divided into a hand and five fingers. Each finger is further divided into three parts because it can bend three joints. Hereinafter, the finger to be displayed is described with “part” added at the end in order to distinguish it from that of the actual finger. The finger joints are called the first joint, the second joint, and the third joint from the side closer to the hand.
[0029]
Reference numerals 301 to 306 in FIG. 3 are base points for moving each part. Specifically, the base point 301 is the base point of the hand part and corresponds to the wrist (joint). A base point 302 is a base point of the thumb part and corresponds to the first joint. Base points 303 to 306 are base points of the index finger part, the middle finger part, the ring finger part, and the little finger part, respectively, and correspond to the first joints of the corresponding fingers.
[0030]
The state of the hand part is managed by the rotation angle hrz around the z axis in addition to the positions hx, hy, hz on the x, y, z axis of the base point 301. Values indicating them are held by being assigned to prepared variables. As a result, the movement of fingers is expressed in three dimensions. The rotation angle hrz around the z-axis is determined from the position on the y-axis on which the base point 304 is projected when the length La from the base point 301 of the hand part to the base point 304 of the middle finger part is projected on the y-axis. A state in which the length obtained by subtracting the position on the y-axis on which 301 is projected matches the length La is the reference (0 degree) (see FIG. 6B). For example, the counterclockwise direction in FIG. 3 is positive and the clockwise direction is negative. In this way, the relative positional relationship with the keyboard 300 in FIG. 3 can be arbitrarily changed. Note that the rotation angle around the x axis and / or the y axis may be further considered. The variables that hold the above hx, hy, hz, and hrz will be described with the symbol added to the end (variable hx, etc.).
[0031]
Each finger has three joints as described above. From this, not only the first joint but also the second and third joints are used as the base points, and each of the first joint and the second joint, the second joint and the third joint, and the third joint, one tip each. A part. Here, these parts are referred to as a finger first part, a finger second part, and a finger third part, respectively. The lengths L1, L2, and L3 are determined for each finger part because the length differs for each finger.
[0032]
The first joint of the finger moves in two directions (the direction of bending and stretching and the direction of opening and closing), and the other second and third joints move only in one direction. From this, the state of the first finger part is managed by the rotation angle frz around the z-axis on the base point corresponding to the first joint and the angle frx1 obtained by bending it from the back of the hand toward the palm. The second finger part and the third finger part are managed at angles frx2 and frx3 obtained by bending the second finger part and the third finger part from the back of the hand toward the palm on the base points corresponding to the second joint and the third joint, respectively. In this way, it is possible to imitate actions such as widening or narrowing the gap between fingers, stretching or bending fingers. Note that the angles frx1 to frx3 for managing the states of the first to third parts of the finger are expressed, for example, using a state in which two parts connected via a base point become a straight line as a reference (0 degree). (See FIG. 6 (a)). For this reason, for example, in a state where the back of the hand and the second joint of the finger are linear, the angle frx1 is zero. Hereinafter, the movement that changes any of the angles frx1 to 3 is also referred to as the vertical movement of the finger (finger part), and the movement that changes the rotation angle frz is also referred to as the horizontal movement of the finger (finger part).
[0033]
The values of frz and frx1 to frx1 are held by being assigned to prepared variables. Since these values must be held for each finger part, the variable is an array variable, and the corresponding value is assigned to the element specified by the finger number. Hereinafter, array variables that hold frz and frx1 to frx1 to 3 are also described by adding the symbol at the end (array variable frz, etc.).
[0034]
The base points 302 to 306 of each finger part move as the position of the base point (wrist) 301 of the hand part changes. As described above, each finger part can express a movement imitating a human finger. For this reason, the motion of moving a hand to press an arbitrary key on the keyboard 300, the motion of a finger pressing or releasing a key, or a combination of these can be expressed as a moving image. Since the expression is performed by displaying the operation of each part of the finger that operates the keyboard 300, the size and arrangement of the white and black keys on the keyboard 300, the positional relationship between the keys, etc. Data is prepared in the form of variables.
[0035]
FIG. 4 is a diagram for explaining the movement range of the hand. The display state of the hand part is managed by the base point 301. FIG. 4 shows a possible range as the position of the base point 301.
The distance on the y-axis between the keyboard and the wrist differs depending on whether the key is pressed with a white key or a black key. Naturally, when the black key is pressed, the distance is smaller than when the white key is pressed. It depends on the finger that presses the key. For example, since the thumb is closer to the wrist than other fingers, when pressing the key with the thumb, the distance must be made smaller than when pressing the key with the other finger. Even if the same white key or black key is pressed, the distance varies depending on whether a plurality of keys are pressed simultaneously or only one key is pressed. When multiple keys (especially three or more) are pressed simultaneously, the space between each finger is widened, so it is closer to the keyboard than when only one key is pressed. .
[0036]
In the performance operation on the keyboard, depending on the situation, there are cases where a thumb is crossed with another finger and moved under it, or a finger other than the thumb is crossed with the thumb and moved over it. When fingers are crossed in such a manner, the finger pressing the key is in a standing state compared to the normal key pressing state (as shown in FIG. 6A, the entire finger is nearly parallel to the z axis). Since the length of the finger on the y-axis is shorter, the distance from the keyboard is also shorter. For this reason, in this embodiment, YPOS1 is defined as the position on the y-axis of the base point 301 when separated from the keyboard 300, and YPOS2 is defined as the position when approached to the keyboard 300.
[0037]
On the other hand, the distance on the z-axis between the keyboard and the wrist (palm) also changes depending on whether a plurality of keys are pressed simultaneously or only one key is pressed. When a plurality of keys are pressed at the same time, the entire hand is moved toward the keyboard, so the distance is reduced. In order to perform a finger penetration or a finger crossing, the hand must be released to some extent from the keyboard. For this reason, in the present embodiment, ZPOS1 is defined as the position on the z-axis of the base point 301 when separated from the keyboard 300, and ZPOS2 is defined as the position when approached to the keyboard 300. An operation that changes depending on whether such a position is determined and a white key or black key is pressed, a plurality of keys are pressed, or a single key is pressed, or fingers are crossed Is expressed.
[0038]
FIG. 5 is a diagram illustrating a position where a key to be changed according to a situation is pressed.
Since the finger can move both vertically and horizontally, the position where the finger (fingertip) contacts the key for key pressing (key pressing position) can be changed by the movement of the finger alone, without moving the position of the hand. be able to. Thereby, the range in which the finger can be touched on the key is often wide. However, if you try to determine the key-pressing position in consideration of the entire range, the key-pressing position may need to be taken into account for the state of the hand and each finger. The time will be longer. Therefore, in this embodiment, a plurality of key pressing positions (reference key pressing positions) serving as a reference in determining the key pressing position are determined in advance, and the key pressing position is determined from among the plurality of reference key pressing positions. One is selected, and the selected reference key pressing position or the vicinity thereof is determined. FIG. 5 shows the standard key pressing positions for white keys and black keys.
[0039]
By limiting the key pressing position to the reference key pressing position and a range in the vicinity thereof, the range to be considered in determining the key pressing position is substantially narrowed. For this reason, the key pressing position can be determined more easily and in a short time. The reason why the vicinity of the reference key pressing position is also considered as a range is to prevent the finger from making an impossible movement when, for example, a plurality of keys are pressed simultaneously. Taking the case of pressing the key with the middle finger following the thumb as an example, avoiding the middle finger from making a lateral movement that would be impossible for a person to touch the middle finger to the reference key pressing position. This is to make it happen.
[0040]
In the white key, as shown in FIG. 5A, a total of three points with A to C in the figure are defined as the reference key pressing positions. In the black key, as shown in FIG. 5B, a total of two points with D and E in the figure are defined as the reference key pressing positions. Points A to E indicating the reference key pressing positions are selected in the following situations. Here, the main items will be described.
Point A: When pressing with the index finger, middle finger, or ring finger when the hand is at position YPOS2
Point B: When the hand is at the position YPOS2 and the key is pressed with the thumb or the little finger. When the hand is in position YPOS1, when pressing with the index finger, middle finger, or ring finger
Point C: When the hand is at the position YPOS1, and the key is pressed with the thumb or the little finger
point E : When pressing with the index finger, middle finger, or ring finger when the hand is at the position YPOS1. When the hand is at position YPOS2, when pressing with the thumb or little finger
point D : When pressing with the index finger, middle finger, or ring finger when the hand is at position YPOS2
FIG. 6 is a diagram for explaining how to obtain the position hx on the x-axis of the hand. FIG. 4A is a side view of the key part (white key) being pressed with the finger part, as viewed from the side, and FIG. 4B is a top view of the state viewed from above.
[0041]
As is clear from FIGS. 5A and 5B, the distance on the z-axis that the key must be depressed increases depending on the key depression position. The length of the finger on the xy plane varies depending on the shape when the key is pressed. From this, the position hx on the x-axis of the hand is obtained as follows. This will be specifically described with reference to FIG.
[0042]
In FIG. 6A, ktopZ is a symbol indicating the height (distance from the reference position) on the z-axis of the key pressing position of the key that is in contact with the finger part when the key is pressed. Since the height ktopZ differs for each reference key pressing position, the height ktopZ is prepared for the element of the array variable associated with the reference key pressing position. hz is a symbol indicating the height (distance from the reference position) of the hand part on the z-axis, and the height hz corresponds to the position ZPOS1 or ZPOS2. fz is a symbol indicating the difference between the height hz of the hand part and the height (distance from the reference position) of the base point of the finger part to be pressed on the z-axis. The difference fz is a negative value. flenZ is a symbol indicating the length of the finger part to be pressed on the z-axis. In order to obtain the length flenZ, the angle frx1 of the first joint, and further the angles frx2 and frx3 of the second and third joints are adjusted. topZ is a symbol indicating the thickness in the direction of bending the third joint from the center to the portion in contact with the key in the third part corresponding to the fingertip of the finger part.
[0043]
When the length on the z-axis necessary for pressing the finger part is expressed by ftokZ, the ftokZ is a height obtained by subtracting the difference fz and the height ktopZ from the height hz of the hand part (= hz-fz-ktopZ). On the other hand, the length flenZ takes into account the joint angle closer to the hand part than the length of the second and third parts on the z-axis, that is, the angle of the first joint in addition to the second joint in the second part. Since frx1 must be taken into consideration, it is obtained by the following equation.
[0044]
flenZ = L1 × sin (frx1) + L2 × sin (frx1 +
frx2) + L3 × sin (frx1 + frx2 + frx3)
+ TopZ × cos (frx1 + frx2 + frx3)
The length flenZ obtained from the above equation needs to match the length ftokZ. Each angle frx1-3 must be determined so that they match. Therefore, in the present embodiment, a table (hereinafter referred to as an angle table for convenience) is prepared in which the second and third joint angles frx2, 3 to be determined according to the first joint angle frx1 are determined. is doing. Thereby, the angles frx2 and 3 are determined to correspond to the angle frx1. The determination is made by changing the angle frx1 and further changing the angles frx2 and 3 to the length flenZ until the length flenZ obtained by substituting the angles frx1 to 3 into the equation matches the length ftokZ. The calculation is performed by repeating the comparison with the length ftokZ.
[0045]
The set of angles frx2 and 3 defined in the angle table correspond to a certain range of angles frx1, for example. Thereby, fine adjustment for making the length flenZ coincide with the length ftokZ is basically performed by changing only the angle frx1.
[0046]
As the angles frx1 to 3 are determined as described above, the length of the finger part on the xy plane is determined. In FIG. 6B, the length is indicated by lenXY. The length lenXY is calculated | required from the following formula | equation. In FIG. 6B, when the rotation angle hrz is 0 degree, that is, when the hand part is at the reference position, the x axis between the base point corresponding to the base of the finger part to be pressed and the base point 301 of the hand part. The upper distance is indicated by flenX. The distance flenX is data prepared in advance for each finger part. The position on the x-axis of the key pressing position of the key that contacts the finger part for key pressing is indicated by noteX. frz [fig] is a rotation angle around the z-axis at the base point that is the first joint of the finger part to be pressed. The rotation angles hrz and frz are negative when rotated clockwise from the reference position toward FIG. 6B.
[0047]
lenXY = L1 × cos (frx1) + L2 × cos (frx1 +
frx2) + L3 × cos (frx1 + frx2 + frx3)
The position fbaseX on the x-axis of the base point corresponding to the first joint of the finger part to be depressed is based on the position noteX on the x-axis of the key depression position and uses the length lenXY calculated as described above. The following formula is used.
[0048]
fbaseX = lenXY × sin (hrz + frz) + noteX
In the state shown in FIG. 6B, the rotation angles hrz and frz are negative values. For this reason, the value of the position fbaseX calculated from the above formula is smaller than that of the position noteX.
[0049]
The position hx on the x-axis of the base point 301 of the hand part is obtained from the following equation.
hx = La × sin (hrz) + fbaseX
+ FlenX × cos (hrz)
As described above, in the present embodiment, the key pressing position is determined, and the state of the finger part to be pressed and the hand part from the determined key pressing position is determined. Although the details will be described later, the determination is made by determining whether or not it is necessary to cross the finger parts in the form of a finger hole or a finger span. These states may be a situation where a plurality of keys are pressed simultaneously, and it is necessary to determine the states in consideration of the states of other finger parts. Therefore, after paying attention to the finger part to be pressed and determining the state of the finger part or the hand part when the key is pressed, the overall fine adjustment is performed in consideration of the state of other finger parts. Unnatural lateral movements of parts and unnatural positional relationships between finger parts correct it. As a result, a more natural and uncomfortable performance action is displayed, including finger holes and fingers.
[0050]
As shown in FIG. 3 or FIG. 6, the moving image display of fingers divided into a plurality of parts is performed by sequentially changing the state of each part in accordance with the progress of the performance. In this embodiment, the moving image control data for realizing the moving image display is generated in two stages. Here, for the sake of convenience, the data generated at the first stage is referred to as moving image control data A, and the data generated at the next stage is referred to as moving image control data B.
[0051]
The moving image control data A is obtained by the CPU 101 in addition to the musical tone / fingering data as shown in FIG. It is generated while referring to data (parameters) prepared in advance such as the arrangement of keys on the keyboard 300 and the shapes of various keys. The CPU 101 analyzes the unit musical tone data in the musical tone / fingering data, the finger number data added to the unit musical tone data, and the flow of performance designated by them, and then the next finger state in the event unit. The state of the finger to be moved to generate the event is obtained, and the data specifying the state of the finger of the latter, that is, the data specifying which part state should be changed and how is stored in the RAM 103. The speed at which you move your hands and fingers depends on the length of the time interval between events. The shorter the time interval, the faster you must move your hands and fingers. Therefore, based on the time interval between events, the timing for starting the change of the state of the part and the time during which the change is continued are determined, and the data indicating them is also stored in the RAM 103. The data generated and saved in this way is the moving image control data A. The above analysis is performed by an algorithm used for generating fingering data added to musical tone data, for example. As a result, the obtained finger condition is not unnatural.
[0052]
The generation of the moving image control data A determines the post-key release state of the finger part to be released in the key release event. In the key press event, in addition to the state when the finger part is pressed, The state of other parts is determined in accordance with the transition to the state. The determination of the state of the other part is, for example, the movement of the hand part, the movement of the other finger part according to the position of the key to be pressed and the type (white key or black key), the key being pressed If there is, the finger part that presses the key cannot be released from the key. For example, you can go through your finger or move your finger across it. The CPU 101 divides the transition to the determined state into several stages, generates data indicating the state at each stage, and stores the data in the RAM 103 separately from the operation control data A. Data generated and saved in this way works control Data B. In the present embodiment, as described later, the operation control data B is also generated in conjunction with the operation control data A generated in units of events.
[0053]
FIG. 7 is a diagram for explaining the configuration of the operation control data generated and stored as described above. 2A shows the operation control data A, and FIG. 2B shows the operation control data B.
As shown in FIG. 7A, the operation control data A includes data for specifying a variable whose value is to be changed or an element of an array variable (hereinafter referred to as variable specifying data), a variable, or an element of an array variable. Value data that is the changed value, operation time data that indicates the time during which the part corresponding to the element of the variable or array variable is operated, and time data that specifies the operation end or start timing of the part , And data corresponding to one event on performance (they are collectively referred to as unit motion data A). Value data and operation time data exist for each variable designation data. Thereby, the state of the part designated by the variable designated by the variable designation data or the element value of the array variable can be changed independently. The time data in the unit motion data A matches the time data in the corresponding unit music data in the musical tone / fingering data. In addition, since a set of variable designation data, value data, and operation time data represents how a certain state quantity of a part is changed, these will be collectively referred to as part operation data hereinafter. To do.
[0054]
The motion control data A shown in FIG. 7A is generated based on the musical tone / fingering data shown in FIG. 2, and represents the following event, that is, the state change of the part. Yes. A description will be given along the time series with reference to FIG.
As shown in FIG. 2, the event designated by the first unit musical sound data in the musical sound / fingering data is the start of the sound generation of the musical sound whose pitch name is “C3”. The key number (note number) 64 corresponds to the “C3”. For this reason, the event represents a key depression of the key No. 64.
[0055]
The occurrence of the event is the timing specified by 100, which is the value of the time data, and no event exists before that. Each part defines an initial state (a corresponding variable or an initial value of an element of an array variable). Therefore, in order to display the occurrence of the event, the hand part is moved to a position where the key can be depressed before the key of the keyboard number 64 is depressed with the index finger part designated by the finger number data. I have to keep it. Here, the hand part must be moved to a position where the value of the variable hx is obtained as 100 of the value data. The first unit operation data A in the operation control data A is generated for that purpose. That unit In the operation data A, the time data value is 0 and the operation time data is also 0. For this reason, as shown in FIG. 8 (a), the hand part is displayed from the beginning at a position on the x-axis where the value of the variable hx is 100.
[0056]
Note that the hand part does not have to be displayed from the beginning at a position where the first key depression can be performed. For example, after being displayed at a predetermined position, the key may be moved from that position to a position where the key can be pressed before the key should be pressed. Since the values of the time data and the operation time data are expressed in a predetermined unit time, the unit of time designated by the value is called a unit time.
[0057]
In the next unit operation data A, the time data is 100, the variable designation data is the array element frx1 [1] and the array element note [1], the value data is 10 as the value of the array element frx1 [1], 64 is designated as the value of the variable note [1], and the operation time data is -5 for the array element frx1 [1] and 0 for the array element note [1]. This means that after 100 unit time has elapsed from the event represented by the immediately preceding (first) unit motion data A, an event is generated in which the index finger part is bent at the first joint and the key of the keyboard number 64 is pressed. Yes. The negative value of the operation time data indicates that the bend at the first joint is started 5 unit times earlier than the timing specified by the time data. Thereby, after 95 unit time has passed since the previous event, the index finger part starts the key pressing operation for the key of the keyboard number 64, and the key pressing is completed when 100 unit time has passed. 0 of the operation time data of the array variable note [1] indicates that the tone generation is started at the timing indicated by the time data.
[0058]
In the next unit operation data A, the time data is 50, the variable designation data is the array element frx1 [1] and the array element note [1], the value data is 0 as the value of the array element frx1 [1], 0 is designated as the value of the array variable note [1], and the operation time data is 2 for the array element frx1 [1] and 0 for the array element note [1]. This is to generate an event to release the key of the keyboard number 64 by extending the index finger part that has been bent at the first joint until 50 unit hours have passed since the event represented by the previous unit motion data A. Represents. The value of the operation time data is positive. Thereby, after 50 unit time has passed since the previous event, the index finger part begins to stretch and releases the key of the keyboard number 64, and then returns to the original position after 2 unit time has passed. The value data 0 of the array variable note [1] represents the key release, and the operation time data 0 represents that the musical sound is muted at the timing indicated by the time data.
[0059]
As described above, the unit operation data A in the operation control data A not only specifies which part is shifted to which state when an event occurs, but also specifies the time required for the transition by the operation time data. It has become.
One operation control data B is, as shown in FIG. 7B, a variable designation data for designating an element of a variable whose value is to be changed or an array variable, a value after the change of an element of the array variable, or an array variable. Certain value data and variable data and time data that designates the timing for changing to the state designated by the value data are represented as data representing one stage of action (collectively referred to as stage action data). It is configured. Naturally, the value of the time data in the stage operation data is equal to or less than the value of the time data in the corresponding unit operation data A.
[0060]
The number of part motion data constituting the unit motion data A, that is, the number of variables specified by the variable specification data or the number of elements of the array variable differs depending on the state so far, the contents of the event, and the like. If you only need to bend the finger part, you only need to change the value of one array variable element. However, if a certain finger part is bent with a wider interval with other finger parts, it is necessary to change the values of two elements in that finger part. For example, if the finger part is the middle finger part and the distance from the index finger part is increased, the ring finger part and the little finger part located outside the middle finger part are each one according to the lateral movement of the middle finger part. You must change the value of the element. For this reason, FIG. 7B shows variables that can be changed in value and elements of array variables for each part. The thumb parts frz and frx1 to 3 are all elements of array variables and are not clearly shown, but they are also present in the index finger part, middle finger part, ring finger part, and little finger part. The element of each array variable is specified with the finger number of the finger part as an argument.
[0061]
The operation control data B shown in FIG. 7B is generated based on the operation control data A shown in FIG. The value of the operation time data in the unit operation data A first positioned in the operation control data A is 0, the value of the time data in the second unit operation data A is 100, and the first in the unit operation data A The value of the operation time data in the part operation data located at 5. On the other hand, in the operation control data B The values of time data in the second and third stage operation data are 95 and 2, respectively. As is clear from this, the step motion data is generated based on the second unit motion data A, and is not particularly shown in order to express the key pressing operation by the index finger part. The array element frx1 [1] is designated by the variable designation data, and the value to be assigned to it is set as the value data.
[0062]
FIG. 8 is a diagram for explaining an example of a finger operation display. FIG. 8 shows a state in which the state of each part of the finger is changed according to the operation control data shown in FIG. 7. In FIG. 8A, in the musical tone / fingering data, the tone generation start timing (key pressing timing) of the musical tone designated by the musical tone / fingering data and the mute timing (key release timing) are indicated by arrows on the time axis. It is shown. The names of musical sounds (such as “C” and “F”) are shown in the vicinity of the arrows. In the finger operation, the key press operation start timing and the key release operation start timing are indicated by arrows on the time axis. The numbers such as “1” and “2” written in the vicinity of the arrow are the finger numbers of the finger parts to be pressed or released. In the hand x position, the time change of the position of the hand part on the x-axis is shown. In the hand y position and the hand z position, the time change of the position on the y axis and the z axis of the hand part is shown, respectively. 0 shown on the time axis of the hand z position indicates the playback start time of the musical tone / fingering data. In addition, the hand x position, the hand y position, and the hand z position respectively indicate movement from the initial position relatively.
[0063]
As shown in FIG. 8A, the key pressing operation is started before the timing at which the musical sound is actually generated, and the key releasing operation is started at the timing at which the musical sound is muted. The position of the hand part on the x-axis starts moving toward the position where the key with the pitch name “F” can be pressed next by the index finger part after the key release operation of the key with the pitch name “C” is started. The movement is completed before the key pressing start timing. The positions of the hand parts on the y-axis are the tone names “D #”, “F”, “G”, and “B” generated by the thumb part, the index finger part, the middle finger part, and the ring finger part, respectively. In order to express that the key "" is simultaneously depressed, the movement toward the keyboard 300 is started after the key "G" is released, that is, the movement from the position YPOS1 to the position YPOS2 shown in FIG. Until the release of the keys starts, the position YPOS2 is maintained, and after the start of the release of the keys, the movement from the position YPOS2 toward the position YPOS1 is started. The position of the hand part on the z-axis is lowered toward the keyboard 300 from the start of the key pressing operation of those keys to the end of the key pressing of the last key. That is, during this period, the position moves from the position ZPOS1 shown in FIG. 4 to the position ZPOS2. The movement from the position ZPOS2 to the position ZPOS1 is performed from the start of the key release operation of those keys to the end of the key release of the last key.
[0064]
FIG. 8B is a diagram showing the position of the base point (wrist) 301 of the hand part at time points {circle around (1)} to {circle around (5)} in FIG. The positions on the xy plane at the time points (1) to (5) are indicated by (1) to (5), respectively.
As shown in FIG. 8B, the hand part first moves from the position indicated by (1) to the position indicated by (2). Next, in order to simultaneously press a plurality of keys, it moves to the position indicated by (3). As is clear from the fact that the position indicated by (3) is the same as the position indicated by (4), the position remains at that position while a plurality of keys are pressed. The position indicated by (1) is the same as the position indicated by (5). For this reason, after releasing a plurality of keys, the key moves from the position indicated by (4) to the position indicated by (1).
[0065]
As described above, the movement of the finger is expressed by a moving image by moving the hand part or changing the state of each finger part.
FIG. 9 is a diagram illustrating an actual display example.
As shown in FIG. 9, actually, not only the right hand but also the left hand is displayed. In order to make it easy for the user to determine whether or not the key is being pressed, the key being pressed is expressed with a different display color. The display color can be changed only when the key is pressed (sounding starts) until the key is released (mute), but the key to be pressed is notified in advance or the key to be released is changed. The display color may be changed to a plurality of colors in order to notify in advance. Although a detailed description is omitted, in the present embodiment, the size of each part of the fingers is changed, that is, enlarged or reduced, the display of each part is transparently displayed, or the display is changed to the wire frame display. The angle can be changed. If the user has a keyboard that is actually operated, the playback speed of the musical tone / fingering data (including the display speed of the performance operation) may be changed according to the performance speed of the user.
[0066]
Figure 9 The operation display of the finger part as shown in FIG. 6 is performed when the user operates the operation unit 106 to instruct the reproduction of the musical tone / fingering data stored in the RAM 103. When the user gives the instruction, the CPU 101 processes the musical tone / fingering data (here, only musical tone data excluding the fingering data is targeted) and the operation control data B generated based on the musical tone / fingering data. . Thereby, the operation of each part of the finger synchronized with the sound generation is displayed on the display unit 105. In the present embodiment, in addition to this, a musical score indicating the performance content is displayed from the musical sound data.
[0067]
FIG. 10 is a functional block diagram of the performance operation display device according to the present embodiment.
As shown in FIG. 10, the performance display device basically has a data generation unit 801 that generates operation control data from musical tone / fingering data, and musical / fingering data and operation control. A real-time processing unit 802 that reproduces data is included. In the data generation unit 801, the operation control data generation unit 803 generates the operation control data from the musical tone / fingering data. In FIG. 1, for example, the CPU 101, the ROM 102, the RAM 103, the data input unit 104, the display unit 105, and the operation unit 106 correspond to the data generation unit 801.
[0068]
One real-time processing unit 802 is a data transmission unit (sequence processing unit) 804 that processes the operation control data and musical tone data generated by the data generation unit 801, and the movement of the finger according to the operation control data transmitted from the data transmission unit 804. The operation display unit 805 for displaying the sound, and the sound for releasing the musical sound according to the musical sound data sent from it Source 806 and a score display unit 807 for displaying a score in accordance with the musical tone data sent therefrom. In FIG. 1, for example, a CPU 101, a ROM 102, a RAM 103, a display unit 105, an operation unit 106, a sound source 107, and a sound system 108 correspond.
[0069]
Next, the operation of the CPU 101 that realizes the generation and reproduction of the operation control data described above will be described in detail with reference to various operation flowcharts shown in FIGS.
FIG. 11 is an operation flowchart of the operation control data generation process. This generation process is performed when the user operates the operation unit 106 to designate (select) one of the musical tone / fingering data stored in the RAM 103 and instruct the generation of the operation control data. This process is realized by executing a program stored in the ROM 102. The data generation unit 801 illustrated in FIG. 10 is realized by executing the generation process. First, the generation process will be described in detail with reference to FIG.
[0070]
In this generation process, the unit musical tone data and the finger number data attached thereto are sequentially read from the musical tone / fingering data designated by the user, and the event represented by the unit musical tone data is generated by the finger designated by the finger number data. Operation control data for displaying the state of the operation is generated. Here, the flow of processing is shown with an emphasis on note-on events and note-off events as the types of events represented by unit musical sound data.
[0071]
First, in step 901, initial setting is performed. By the initial setting, initial values are assigned to various variables, and an area for storing operation control data is secured in the RAM 103. The variable pe for managing the unit musical sound data read from the musical sound / fingering data is substituted with the address value storing the unit musical sound data located at the head thereof.
[0072]
In step 902 following step 901, it is determined whether or not the musical tone / fingering data has been completed. For example, unique data (hereinafter referred to as end data) indicating the end of the data is added to the end of the musical tone / fingering data. For this reason, when the data designated by the value of the variable pe is the end data, the determination is YES, and the series of processing ends here. Otherwise, the determination is no and the process moves to step 903.
[0073]
In step 903, after substituting the value of the variable tktime for the variable tkold, the value of the time data of the unit musical sound data specified by the variable pe for the value up to that variable tktime. tkt The value obtained by adding is substituted. In the following step 904, it is determined whether or not the event represented by the unit musical tone data designated by the value of the variable pe is a note-on event. If the unit musical sound data represents a note-on event, the determination is yes and the process proceeds to step 905, and if not, the determination is no and the process proceeds to step 915. As is clear from the accumulation of the time data values of each unit musical sound data, the value of the variable tktime is a value indicated by the time (absolute time) that has elapsed since the reproduction of the musical sound data was started. .
[0074]
In steps 905 to 909, processing for corresponding to unit musical tone data representing a note-on event is performed.
First, in step 905, various settings are made based on the unit musical tone data designated by the value of the variable pe. Thereby, the value of the finger number data is substituted into the variable fig, the pitch data (keyboard number) is substituted into the variable note, and the unit operation data A is generated and stored from these values. After such substitution is completed, the process proceeds to step 906. The unit motion data A generated here includes time data, variable designation data designating an array element note [fig] designated by the value of the variable fig, and value data (variable variable) of the array element note [fig]. (note number of the key to be pressed by the finger part specified by the value of fig) (see FIG. 7A).
[0075]
In step 906, when a note-on event represented by the unit musical tone data designated by the value of the variable pe occurs, it is determined whether another note-on event is occurring, that is, whether another key is depressed. To do. If no other key is pressed, the determination is yes and the process proceeds to step 907. If not, the determination is no and the process proceeds to step 909 described later. Note that the key depression determination is based on the assumption of a virtual performance represented by musical tone / fingering data. For the sake of convenience, the description will be made on the assumption unless otherwise specified.
[0076]
In step 907, the y position processing of the hand for determining the position of the hand part on the y axis is executed. In the subsequent step 908, hand z position processing for determining the position of the hand part on the z axis is executed. In step 909, the note-on main process is executed to determine the content for operating each part of the finger in accordance with the note-on event represented by the unit musical sound data while considering the relationship with other events. After the note-on main process is executed, the process proceeds to step 910.
[0077]
In step 910, it is determined whether or not a value representing “TRUE” is assigned to the variable b chord. If it is determined that the note event represented by the unit musical sound data is for generating a chord during the immediately preceding note-on main process, a value representing “TRUE” is assigned to the variable b chord. For this reason, when it is determined that the unit musical sound data is for generating a chord when the note-on main process is executed, the determination is YES and the process proceeds to step 913. Otherwise, the determination is no and the process moves to step 911.
[0078]
In step 911, x position processing of the hand for determining the position of the hand part on the x axis is executed. In the subsequent step 912, the y-position reprocessing of the hand for determining the position of the hand part on the y-axis again is executed. After the processing is executed, other processing is executed in step 913, and in the subsequent step 914, the address of the next unit musical sound data is substituted for the variable pe, and then the processing returns to step 902.
[0079]
In the above steps 907 to 909, 911, 912 and step 917 described later, part motion data is generated by focusing on parameters (variables or elements of array variables) accompanied by specific motions, which are unit motions. Added to data A. As a result, at the time of shifting to step 913, it is determined in what state each part of the finger is to be transferred. For this reason, in step 913, step operation data is generated from the unit operation data A and stored in the RAM 103. In the present embodiment, the generation is performed by dividing the time interval specified by the operation time data into a plurality of times and interpolating between the previous state and the state after the transition with a straight line. In step 913, unit musical tone data representing events other than the note-on event and the note-off event is also processed.
[0080]
On the other hand, in step 915 where the determination in step 904 is NO and the process proceeds to step 915, it is determined whether the unit musical sound data designated by the value of the variable pe represents a note-off event. If the unit musical sound data represents a note-off event, the determination is yes and the process moves to step 916. Otherwise, the process proceeds to step 913.
[0081]
In step 916, various settings are made based on the unit musical tone data specified by the value of the variable pe. Thereby, the value of the finger number data is substituted into the variable fig, the pitch data (keyboard number) is substituted into the variable note, and the unit operation data A is generated and stored from these values. After such substitution is completed, the process proceeds to step 906. The unit motion data A generated here is time data, variable designation data designating an array element note [fig] designated by the value of the variable fig, and value data of the array element note [fig] (here Then it is 0 because it is a key release).
[0082]
In subsequent step 917, note off main processing for generating motion control data (part motion data to be added to unit motion data A) for operating each part of the finger at the time of a note off event is executed. Thereafter, the process proceeds to step 910.
[0083]
As described above, in the motion control data generation process, motion control data is generated while sequentially changing the unit musical tone data for which motion control data is generated and the finger number data added thereto. Thereby, the operation control data is generated in units of performance events.
[0084]
Next, various subroutine processes executed in the operation control data generation process will be described in detail with reference to the operation flowcharts shown in FIGS.
FIG. 12 is an operation flowchart of the hand y position process executed as step 907. In the subroutine processing, first, the y position processing of the hand will be described in detail with reference to FIG.
[0085]
A value indicating the position of the base point 301 on the y-axis is held in the variable hynew. In this type of y position processing, a position where the base point 301 is to be placed next is obtained, and a value indicating the position is substituted into a variable hynew.
First, in step 1001, initialization is performed, and the value of the variable hynew is substituted into the variable hynow. In the next step 1002, the current unit musical tone data and data after the finger number data are read out, and then the thumb or little finger presses the black key before all keys are released. Judge whether or not. Next, if there is unit musical tone data having 0 or 4 as finger number data before all keys are released, the determination is YES and the process proceeds to step 1005. Otherwise, the determination is no and the process moves to step 1003.
[0086]
In step 1003, it is determined whether or not a value indicating the position YPOS1 (see FIG. 4) is substituted for the variable hynow. If the value is assigned to the variable hynow, the determination is yes, and the series of processing ends here. Otherwise, the determination is no, and in step 1004, a value indicating the position YPOS2 is substituted for the variable hynew, and the movement to the position YPOS1 is performed from the processing timing of the previous unit musical sound data to the processing timing of the current unit musical sound data. Is generated, and is added to the unit operation data A, and then the series of processes is terminated.
[0087]
On the other hand, in step 1005 where the determination in step 1002 is YES and the process proceeds to step 1005, it is determined whether or not a value indicating the position YPOS1 (see FIG. 4) is substituted for the variable hynow. If the value has not been assigned to the variable hynow, the determination is no and the series of processes ends here. Otherwise, the determination is yes, and in step 1006, a value indicating the position YPOS1 is substituted into the variable hynew, and the movement to the position YPOS2 is performed from the processing timing of the previous unit musical sound data to the processing timing of the current unit musical sound data. After generating the part motion data for completing the process, the series of processes is terminated.
[0088]
As described above, in the y position processing of the hand, when the user has to press the black key with the thumb or the little finger, the hand part is moved to the position YPOS2 so as to approach the keyboard 300 in advance. . Including this time, when all the keys are released without using the thumb and little finger, the hand part is positioned at the position YPOS1.
[0089]
In addition to pressing the black key with the thumb or little finger, if a plurality of keys are pressed with the fingers wide open, the distance on the y-axis between the hand and the keyboard becomes small. The position adjustment of the hand part base point 301 on the y-axis to cope with such a situation is performed by the hand y-position re-processing executed in step 912.
[0090]
FIG. 13 is an operation flowchart of the hand z-position process executed as step 908 in the operation control data generation process shown in FIG. Next, the processing will be described in detail with reference to FIG.
A value indicating the position on the z-axis where the base point 301 should exist at the present time is held in the variable hznow. The value of the variable tktime when the immediately preceding unit musical tone data is processed is held in the variable tkold. As shown in FIG. 4, the base point 301 of the hand part takes either the position ZPOS1 or the position ZPOS2 on the z-axis. When the hand z-position process is executed, there is no pressed key.
[0091]
First, in step 1101, it is determined whether or not a value indicating the position ZPOS1 is substituted for the variable hznow. If the value is assigned to the variable hznow, the determination is yes, and the series of processing ends here. If this is not the case, that is, if the base point 301 of the hand part is located at the position ZPOS2, the determination is no, the process proceeds to step 1102, and the value of the variable tktime indicates from the timing indicated by the value of the variable tkold. By the timing, part operation data for moving the base point 301 from the position ZPOS2 to the position ZPOS1 is created, and is added to the unit operation data A and stored in the RAM 103. After it is finished, a series of processing is finished.
[0092]
FIG. 14 is an operation flowchart of the note-on main process executed as step 909 in the operation control data generation process shown in FIG. Next, the processing will be described in detail with reference to FIG.
A value (“TRUE” or “FALSE”) indicating whether or not a chord (code) is sounding is actually held in the variable b chord when actually processing, ie, reproducing, the unit musical tone data to be processed. . If a chord is sounding, the address of the unit musical sound data of the musical sound that begins to be sounded last among the musical sounds constituting the chord is held in the variable pchordend. In the note-on main process, the values of various variables including such variables are referred to.
[0093]
First, in step 1201, it is determined whether or not the value of the variable b chord is “TRUE”. If it is assumed that a chord is sounded in the situation where the unit musical sound data to be processed is reproduced, “TRUE” is assigned to the variable b chord, so the determination is YES and the process proceeds to Step 1207. Otherwise, the determination is no and the process moves to step 1202.
[0094]
In step 1202, it is determined whether or not the value of the variable balloff is “TRUE”. If there is a key pressed in a situation where the unit musical sound data to be processed is reproduced, the determination is no and the process proceeds to step 1206. Otherwise, the determination is yes and the process moves to step 1203.
[0095]
In step 1203, a chord determination process for determining whether or not a chord is generated by the unit musical tone data to be processed and the subsequent unit musical tone data is executed. In the chord determination process, when it is determined that a chord is generated by the unit musical tone data, “TRUE” is substituted for the variable b chord. After the execution, the process proceeds to step 1204.
[0096]
In step 1204, it is determined whether or not the value of the variable b chord is “TRUE”. As a result of executing the chord determination process, if it is determined that a new chord is generated, the determination is YES, and after executing the chord operation process for determining the content of the operation that causes the chord to be generated in step 1205, The process ends. Otherwise, the determination is no, and a note-on operation process for determining the content of the key pressing operation is executed in step 1206, and then the series of processes is terminated.
[0097]
On the other hand, in step 1207 where the determination in step 1201 is YES and the process proceeds, it is determined whether or not the value of variable pchordend is equal to the value of variable pe. The unit musical tone data designated by the value of the variable pe, that is, the unit musical tone data that is currently processed, is used to instruct the start of the musical tone that is to be pronounced last among the musical tones that are considered to constitute chords. If YES in step 1208, “FALSE” is assigned to the variable b chord and NULL (null value) is assigned to the variable p chordend in step 1208, and then the series of processing ends. Otherwise, the determination is no and the series of processes ends here.
[0098]
In this way, in the note-on main process, the process is branched depending on whether or not the musical sound whose unit musical sound data instructs the start of pronunciation constitutes a chord. As a result, each part of the finger is operated according to whether a chord is sounded or a musical sound is simply sounded.
[0099]
Here, various subroutine processes executed in the note-on main process will be described in detail with reference to FIGS.
FIG. 15 is an operation flowchart of the chord determination process executed as step 1203. In the subroutine processing executed in the note-on main processing, the chord determination processing will be described in detail first with reference to FIG.
[0100]
First, in step 1301, initial setting is performed. By performing the initial setting, a value indicating in absolute time the processing timing of the unit musical sound data for instructing the start of sound generation first after the unit musical sound data specified by the value of the variable pe is assigned to the variable tknext. The variable tknextoff is assigned a value indicating in absolute time the processing timing of the unit musical sound data that first instructs the muting of the musical sound after the unit musical sound data specified by the value of the variable pe.
[0101]
In step 1302 following step 1301, it is determined whether or not the value of the variable tknext is smaller than the value obtained by adding the value of the variable tkchord to the value of the variable tktime. A value indicating a sounding start interval between musical tones, which serves as a reference for determining whether or not a chord is composed, is substituted for the variable tkchord. For this reason, if the next musical tone starts to be played within that interval, the determination is yes and the process moves to step 1303. If not, the determination is no and the series of processes ends here. To do.
[0102]
In step 1303, it is determined whether the value of the variable tknexttoff is greater than the value obtained by adding the value of the variable tkchord to the value of the variable tktime. If there is no musical sound to be muted before the time indicated by the value of the variable tkchord has elapsed, the determination is yes, and after assigning “TRUE” to the variable bchord in step 1304, the series of processing ends. Otherwise, the determination is no and the series of processing ends here.
[0103]
Thus, in this embodiment, if there are a plurality of key presses (note-on events) within the time indicated by the value of the variable tkchord and no key release (note-off event) exists within that time, Musical sounds that begin to be generated within that time are considered to constitute chords.
[0104]
FIG. 16 is an operation flowchart of the chord operation process executed as step 1205 in the note-on main process shown in FIG. Next, the chord operation process will be described in detail with reference to FIG.
First, in step 1401, initialization processing is executed. By executing the initialization process, the value of the variable tktime is substituted for the variable tktime0, the value of the variable pe is substituted for the variable pe0, and NULL is substituted for the variable porderend. In step 1402 and subsequent steps following step 1401, while the value of variable pe0 is sequentially incremented, processing for specifying the range of musical tones regarded as chords and determining the operation content for producing the chords is performed.
[0105]
In step 1402, it is determined whether or not the musical tone / fingering data has been completed. If the data specified by the value of the variable pe0 is end data located at the end of the musical tone / fingering data, the determination is yes and the process proceeds to step 1410; otherwise, the determination is no. Control goes to step 1403.
[0106]
In step 1403, it is determined whether or not the value of the variable pe0 is equal to the value of the variable pe. If the values are equal, the determination is yes and the process moves to step 1405. Otherwise, the determination is no, and in step 1404, a value obtained by adding the value of the time data of the unit musical sound data designated by the value of the variable pe0 to the variable tktime0 is substituted in the step 1405. Migrate to In this way, a value indicating in absolute time the timing at which unit musical sound data after the unit musical sound data specified by the value of the variable pe is to be processed is substituted into the variable tktime0.
[0107]
In step 1405, it is determined whether or not the value of the variable tktime0 is smaller than the value obtained by adding the value of the variable tkcode to the value of the variable tktime. If the processing timing of the unit musical sound data specified by the values of the variables pe0 and pe is not within the time specified by the value of the variable tkchord, the determination is no and the process proceeds to step 1410. Otherwise, the determination is yes and the process moves to step 1406.
[0108]
In Step 1406, it is determined whether or not the unit musical tone data designated by the value of the variable pe0 represents a key depression (note on event). If the unit musical sound data represents a note-on event, the determination is YES, the value of variable pe0 is substituted in variable pchordend in step 1407, note-on operation processing is executed in subsequent step 1408, and then the process proceeds to step 1409 To do. Otherwise, the determination is no and the process moves to step 1409.
[0109]
In step 1409, the address of the next unit musical sound data is substituted into the variable pe0. After that, the process returns to step 1402.
In this way, by repeatedly executing the processing loop formed in steps 1402 to 1409 until the determination in step 1402 is YES or the determination in step 1405 is NO, the variable pchordend has a musical tone regarded as constituting a chord. In particular, the address value of the unit musical tone data of the musical tone that begins to sound last is substituted.
[0110]
On the other hand, in step 1410 in which the determination in step 1402 is YES or the determination in step 1405 is NO and the process proceeds, the hand part moves on the z axis (in this case, from the position ZPOS1 to the position ZPOS2 shown in FIG. 4). Part motion data expressing the motion that moves). By creating the motion data, the base point 301 of the hand part starts moving at the timing indicated by the value of the variable tkstart0 and is positioned at the timing indicated by the value of the variable tktime. Z The movement to POS2 is terminated. After such part motion data is added to the unit motion data A, a series of processing is terminated.
[0111]
The timing indicated by the value of the variable tkstart0 is the timing of starting the operation of the finger part that generates the first sound to be generated among the tones that make up the chord, or shifts from key release to key press of each finger part. If the time until the key is relatively long, the timing is indicated by a value obtained by subtracting a value indicating the reference time from the start of the key pressing operation until the key is pressed from the value of the variable tktime. Thereby, according to the situation where a chord is sounded, the operation of each part of the finger for sounding it is made different. In the example shown in FIG. 8, the former value is substituted into the variable tkstart0, that is, the value representing the time corresponding to the value is set in the operation time data in the part operation data. In addition, the movement of the hand part on the z-axis is started, and the movement on the z-axis is ended at the start of the sound generation of the musical sound “D #”. Note that a value indicating the reference time is assigned to the variable tkcost. A value indicating a reference time from the start of the key release operation to the completion of the operation is assigned to the variable tkoffcost.
[0112]
Next, note-on operation processing executed as step 1206 in step 1408 or the note-on main processing shown in FIG. 14 will be described in detail with reference to the operation flowcharts shown in FIG. 17 and FIG. In this process, the finger number data added to the unit musical tone data is substituted for the variable fig, and the pitch data in the unit musical tone data is substituted for the variable note.
[0113]
First, in step 1501, initial setting is performed. In the initial setting, a value indicating the processing timing of the unit musical sound data immediately before the note-off event, to which the value of the variable fig is added as finger number data, in absolute time is obtained, and the obtained value is substituted into the variable tkfoff. Is done.
[0114]
In step 1502 following step 1501, it is determined whether or not the value obtained by subtracting the value of variable tkfoff from the value of variable tktime is smaller than the value obtained by adding the value of variable tkoffcost to the value of variable tkcost. That is, the time from the start of the key release operation of the finger part specified by the variable fig to the time of pressing the finger part is shorter than the time obtained by adding the reference time of the key release operation and the reference time of the key press operation. It is determined whether or not. If the former time is longer than the latter time, the determination is no, and in step 1503, a value obtained by subtracting the value of the variable tkoffcost from the value of the variable tktime is substituted into the variable tkstart, and then the process proceeds to step 1504. If not, that is, if there is no room for performing the key release operation or the key press operation for the reference time, the determination is YES and step 150 is performed. 5 Migrate to
[0115]
In step 1504, the value of the variable tktime is substituted into the variable tkend as a value indicating the timing at which the key pressing operation ends. In subsequent step 1508 of FIG. 18, it is determined whether or not the number of musical tones during note-on is one or less. If there are two or more finger parts pressing the key, the determination is no and the process moves to step 1509. Otherwise, the determination is yes and the process moves to step 1510.
[0116]
In step 1509, the finger part specified by the value of the variable fig starts the key pressing operation for the key indicated by the value of the variable note at the timing indicated by the value of the variable tkstart, and performs the operation at the timing indicated by the value of the variable tkend. Part motion data for completing the completion, that is, the operation of pressing the key, is created and added to the unit motion data A. The time indicated by the value of the operation time data in the part operation data is the time indicated by the value of the variable tkoffcost. After the creation / addition, a series of processing is terminated.
[0117]
On the other hand, in steps 1510 to 1519, it is necessary to refer to the unit musical tone data processed immediately before and the finger number data added thereto to perform an operation in the form of crossing the finger parts such as finger penetration or finger straddle. The process for creating the part motion data and adding it to the unit motion data A according to the determination result is performed.
[0118]
First, in step 1510, the finger number data added to the unit musical tone data processed immediately before is substituted for the variable figa, and the pitch data in the unit musical tone data is substituted for the variable notea. In step 1511 which shifts after the substitution, it is determined whether or not the musical sounds in which the pitch data is substituted into the variables note and nota are both chord constituent sounds. If one of those musical tones is a constituent sound of a chord, that is, if the constituent sound is pronounced to play a chord, or if a chord is played again after a chord is played, the determination is It becomes NO and moves to step 1509 and executes it. Otherwise, the determination is yes and the process moves to step 1512.
[0119]
In step 1512, the timing for note-off of the musical sound in which the pitch data is substituted for the variable note is later than the timing for note-on of the musical tone in which the pitch data is substituted for the variable note, that is, the two musical sounds are generated. It is determined whether the periods to be overlapped or the time interval for note-on of the former and note-on of the latter is within a predetermined time. If neither of these two conditions is satisfied, the determination is no and the process moves to step 1509. If not, that is, if one of these two conditions is satisfied, the determination is yes and the process moves to step 1513.
[0120]
In step 1513, it is determined whether or not the finger part specified by the finger number data respectively assigned to the variables fig and figa has any relationship among the thumb, forefinger, middle finger, and ring finger. If the relationship is not satisfied, the determination is no and the process moves to step 1509. Otherwise, the determination is yes and the process moves to step 1514.
[0121]
In step 1514, it is determined whether or not the finger number data of the variable fig indicates the thumb, and the pitch data of the variable note indicates a pitch higher than the pitch data of the variable note. A thumb is designated by the finger number data of the variable fig, and a key having a pitch higher than the pitch of the key that is currently on or has just been turned off is made to turn on the thumb. If yes, the determination is yes and the process moves to step 1515. Otherwise, the determination is no and the process moves to step 1517.
[0122]
In step 1515, it is assumed that the condition for performing the finger penetration that passes under the finger part such as the index finger part and presses the key to be pressed next to the thumb part is satisfied, and “TRUE” is set in the variable kuguru. Assign the value to represent. In the following step 1516, the operation of passing the thumb part specified by the value of the variable fig and pressing the key indicated by the value of the variable note is started at the timing indicated by the value of the variable tkstart, and the timing indicated by the value of the variable tkend. Then, part motion data for completing the motion, that is, ending the motion of pressing the key, is created and added to the unit motion data A. The time indicated by the value of the operation time data in the part operation data is the time indicated by the value of the variable tkoffcost. After the creation / addition, a series of processing is terminated.
[0123]
In step 1517 where the determination in step 1514 is NO and the process proceeds to step 1517, the finger number data in the variable figa is the thumb, and the pitch data in the variable note indicates a higher pitch than the pitch data in the variable note. Determine whether or not. When the thumb is specified by the finger number data of the variable figa, and a key whose pitch is lower than the pitch of the key currently pressed or released just before the thumb is to be turned on The determination is YES and the process proceeds to step 1518. Otherwise, the determination is no and the process moves to step 1509.
[0124]
In step 1518, it is assumed that the condition for performing the finger straddling on the thumb part over the finger part such as the index finger part and the next key to be depressed is satisfied, and the variable “MATGU” is set to “TRUE”. "Is substituted. In the following step 1519, the operation of making the finger part specified by the value of the variable fig stride over the thumb part and pressing the key indicated by the value of the variable note is started at the timing indicated by the value of the variable tkstart, Part motion data for completing the operation at the timing indicated by the value of the variable tkend, that is, ending the key pressing operation is created and added to the unit motion data A. The time indicated by the value of the operation time data in the part operation data is the time indicated by the value of the variable tkoffcost. After the creation / addition, a series of processing is terminated.
[0125]
In this way, in the present embodiment, it is determined whether or not it is a situation in which the next key should be pressed by performing finger penetration or stroking, and part motion data is created according to the determination result. . Thereby, the performance operation including the operation of crossing such finger parts is displayed.
[0126]
If the hand part is not moved, it may not be possible to press the key with the finger part specified by the value of the variable fig. The rotation angle frz of each finger part cannot be determined unless the position of the hand part is determined. For this reason, only part operation data for performing the key pressing operation is generated here. Part motion data for moving the finger part horizontally is created as necessary when the x-position processing of the hand in step 911 in the motion control data generation processing shown in FIG. 11 is executed. The part motion data created here is also corrected if necessary. For this purpose, the variables kuguru and mategu are referred to when the X position process of the hand is executed.
[0127]
In step 1505 where the determination in step 1502 of FIG. 17 is YES and the process proceeds to step 1505, whether or not the value obtained by multiplying the value of the variable tktime by the value of the variable tkfoff is multiplied by 0.2 is greater than the value of the variable tkoffcost. To determine. If the time obtained by multiplying the time from the key release start to the next key press by 0.2 is longer than the reference time of the key release operation, the determination is YES, and in step 1506, the variable tkstart is set to the value of the variable tkfoff. After substituting the value obtained by adding the value of the variable tkoffcost to, the process proceeds to step 1504. Otherwise, the determination is no, and in step 1507, a value obtained by adding the value of the variable tkoffoff to the value obtained by multiplying the value of the variable tkoffcost by 0.8 is substituted for the variable tkstart, and the process proceeds to step 1504.
[0128]
If the process proceeds to step 1504 after executing step 1506 or 1507, the value of the operation time data set when executing step 1509, 1516 or 1519 has shifted from step 1506 to step 1504. If there is, the value obtained by subtracting the value of the variable tkfoff from the value of the variable tktime and further subtracting the value of the variable tkoffcost from the subtraction result. If the process proceeds from step 1507 to step 1504, the value obtained by subtracting the value of the variable tkfoff from the value of the variable tktime, and further subtracting the value obtained by multiplying the value of the variable tkoffcost by 0.8.
[0129]
If the event represented by the unit musical sound data processed immediately before is a note-off event and if step 1516 or 1519 is executed, the operation of the finger part that passes or crosses when the unit musical sound data is processed Part motion data for starting the process is generated. Therefore, steps 1516 and 151 9 Then, the part motion data is created in such a manner that the motion represented by the generated part motion data is continued.
[0130]
As described above, when the key release and the key press by the same finger part are performed within a short time, the operation is expressed by adjusting at least one of the time required for the key release operation and the time required for the key press operation. I am doing so.
In the note-on main process shown in FIG. 14, the various subroutine processes described above are executed. Thereby, part motion data for expressing an operation of pressing the finger part is generated in a subroutine processing unit and added to the unit motion data A. In these part motion data, variable hz, array variable f Any of rx1 to rx1 is a value change target.
[0131]
FIG. 19 is an operation flowchart of the note-off main process executed as step 917 in the operation control data generation process shown in FIG. Next, the note-off main process will be described in detail with reference to FIG.
A value (“TRUE” or “FALSE”) indicating whether or not there is a chord to be muted when actually processing, ie, reproducing, the unit musical tone data currently being processed is held in the variable b chordoff. ing. If the chord is present, the address of the unit musical tone data of the musical tone to be muted last among the musical tones constituting the chord is held in the variable pchordendoff. In the note-off main process, the values of various variables including such variables are referred to.
[0132]
First, in step 1601, it is determined whether or not the value of the variable b chordoff is “TRUE”. If it is assumed that there is a chord to be muted in the situation where the unit musical sound data to be processed is played back, “TRUE” is assigned to the variable b chordoff, so the determination is YES and the process moves to Step 1606. Otherwise, the determination is no and the process moves to step 1602.
[0133]
In step 1602, a chord off determination process is executed to determine whether or not the chord is muted by the unit musical tone data to be processed and the subsequent unit musical tone data, that is, whether all the constituent sounds of the chord are muted. In the chord off determination process, if it is determined that the chord is muted by the unit musical tone data, “TRUE” is substituted for the variable b chordoff. After the execution, the process proceeds to step 1603.
[0134]
In Step 1603, it is determined whether or not the value of the variable b chordoff is “TRUE”. If it is determined that the chord is to be silenced as a result of executing the chord off determination process, the determination is YES, and after executing the chord off operation process for determining the content of the operation for silencing the chord in step 1604, a series of processes Exit. Otherwise, the determination is no, and after performing note-off operation processing for determining the content of the key release operation in step 1605, a series of processing is terminated.
[0135]
On the other hand, in step 1606 where the determination in step 1601 is YES and the process proceeds, it is determined whether or not the value of variable pchordendoff is equal to the value of variable pe. If the unit musical tone data designated by the value of the variable pe, that is, the unit musical tone data that is currently processed, indicates that the musical tone that is to be muted last among the musical tones that make up the chord is instructed, In step 1607, “FALSE” is substituted for the variable b chordoff and NULL is substituted for the variable pchordendoff, and then the series of processing ends. Otherwise, the determination is no and the series of processes ends here.
[0136]
As described above, in the note-off main process, the process is branched depending on whether or not the musical sound whose unit musical sound data instructs to mute constitutes a chord. Thereby, the contents to be operated for each part of the finger are determined in accordance with whether the musical sound constituting the chord is to be muted or simply to be muted.
[0137]
Here, various subroutine processes executed in the note-off main process will be described in detail with reference to FIGS.
FIG. 20 is an operation flowchart of the chord off determination process executed as step 1602. In the subroutine processing executed in the note-off main processing, the chord off determination processing will be described in detail first with reference to FIG.
[0138]
First, in step 1701, initial setting is performed. By performing the initial setting, the variable tknext is substituted with a value indicating the processing timing of the unit musical sound data for instructing the start of musical sound first after the unit musical sound data specified by the variable pe in the absolute time. A value indicating in absolute time the processing timing of the unit musical sound data for instructing the muting of the musical sound first after the unit musical sound data specified by the variable pe is substituted for tknextoff.
[0139]
In Step 1702 following Step 1701, it is determined whether or not the value of the variable tknexttoff is smaller than the value obtained by adding the value of the variable tkchord to the value of the variable tktime. If there is no musical sound to be muted before the time indicated by the value of the variable tk chord has elapsed, the determination is no and the series of processing ends here. Otherwise, the determination is yes and the process moves to step 1703.
[0140]
In step 1703, it is determined whether or not the value of the variable tknext is larger than the value obtained by adding the value of the variable tkchod to the value of the variable tktime. If the next musical tone begins to be sounded before the time indicated by the value of the variable tkchord has elapsed, the determination is no, and the series of processing ends here. Otherwise, the determination is yes, and after assigning “TRUE” to the variable b chordoff in step 1704, the series of processing is terminated.
[0141]
As described above, in this embodiment, a plurality of musical sounds are silenced (note-on event) within the time indicated by the value of the variable tkchord, and a musical sound (note-off event) that starts sounding within that time exists. Otherwise, it is said that the musical sound considered as a constituent sound of the chord has to be muted.
[0142]
FIG. 21 is an operation flowchart of the chord off operation process executed as step 1604 in the note off main process shown in FIG. Next, the chord off operation process will be described in detail with reference to FIG.
First, in step 1801, initialization processing is executed. By executing the initialization process, the value of the variable tktime is substituted for the variable tktime0, the value of the variable pe is substituted for the variable pe0, and NULL is substituted for the variable porderendoff. In step 1802 and subsequent steps following step 1801, while the value of the variable pe0 is sequentially incremented, processing for specifying the range of musical tones regarded as a chord and determining the operation content for muting the chord is performed.
[0143]
In step 1802, it is determined whether or not the musical tone / fingering data has been completed. If the data specified by the value of variable pe0 is end data located at the end of the musical tone / fingering data, the determination is yes and the process moves to step 1810; otherwise, the determination is no. Control goes to step 1803.
[0144]
In step 1803, it is determined whether or not the value of the variable pe0 is equal to the value of the variable pe. If the values are equal, the determination is yes and the process moves to step 1805. Otherwise, the determination is no, and in step 1804, a value obtained by adding the value of the time data of the unit musical sound data specified by the value of the variable pe0 to the variable tktime0 is substituted in the step 1805. Migrate to In this way, a value indicating in absolute time the timing at which unit musical sound data after the unit musical sound data specified by the value of the variable pe is to be processed is substituted into the variable tktime0.
[0145]
In step 1805, it is determined whether or not the value of the variable tktime0 is smaller than the value obtained by adding the value of the variable tkcode to the value of the variable tktime. If the processing timing of the unit musical tone data specified by the values of the variables pe0 and pe is not within the time specified by the value of the variable tkchord, the determination is no and the process proceeds to step 1810. Otherwise, the determination is yes and the process moves to step 1806.
[0146]
In step 1806, it is determined whether or not the unit musical tone data designated by the value of the variable pe0 represents the muting of a musical tone (note off event). If the unit musical sound data represents a note-off event, the determination is YES, the value of variable pe0 is substituted into variable pchordendoff at step 1807, and then note-off operation processing is executed at step 1808, and then to step 1809. Transition. Otherwise, the determination is no and the process moves to step 1809.
[0147]
In step 1809, the address of the next unit musical sound data is substituted into the variable pe0. After that, the process returns to step 1802.
In this way, by repeatedly executing the processing loop formed in steps 1802 to 1809 until the determination in step 1802 is YES or the determination in step 1805 is NO, the variable pchordendoff has a musical tone that is considered to constitute a chord. In particular, the address value of the unit musical tone data of the musical tone to be muted last is substituted.
[0148]
On the other hand, in step 1810 where the determination in step 1802 is YES or the determination in step 1805 is NO and the process moves, the hand part moves on the z axis (here, from position ZPOS2 to position ZPOS1 shown in FIG. 4). Create part motion data that specifies the content (moving motion). The movement data is created so that the movement starts at the timing indicated by the value of the variable tktime and reaches the position ZPOS1 at a predetermined speed. After the part motion data is generated and added to the unit motion data A in this way, a series of processing is terminated.
[0149]
As the chord silencing operation content, the part motion data designating the movement content of the hand part on the z-axis is generated as described above. Accordingly, in the example shown in FIG. 8, the movement of the hand part on the z-axis starts in accordance with the key release start of the key to which the thumb part is assigned the pitch “D #”.
[0150]
Next, note-off operation processing executed as step 1605 in step 1808 or note-off main processing shown in FIG. 19 will be described in detail with reference to the operation flowcharts shown in FIG. 22 and FIG. In this process, the finger number data added to the unit musical tone data is substituted for the variable fig, and the pitch data in the unit musical tone data is substituted for the variable note.
[0151]
First, in step 1901, initialization is performed. In the initial setting, the pitch data in the unit musical tone data representing the note-on event to which the value of the variable fig is added as the finger number data after the unit musical tone data designated by the value of the variable pe is extracted. For example, the extracted pitch data is substituted into a variable nextnote.
[0152]
In step 1902, following step 1901, it is determined whether or not the finger part designated by the value of the variable fig is being used for key depression. When the musical tone designated by the value of the variable note is not actually pronounced, that is, there is no unit musical tone data for instructing the start of the musical tone generation, or even if the unit musical tone data exists. If the value of the variable fig is not added as finger number data, the determination is no and the series of processing ends here. Otherwise, the determination is yes and the process moves to step 1903.
[0153]
In step 1903, it is determined whether or not the value of the variable note is equal to the value of the variable nextnote. If these values are not equal, that is, if the user has to press a key different from the key that the user has previously pressed, the determination is no and the process moves to step 1905 in FIG. Otherwise, the determination is yes and the process moves to step 1904 where the finger part specified by the value of the variable fig simply starts the key release operation at the timing specified by the value of the variable tktime. After generating, the series of processing ends. In the operation data, even if the space between the finger part for starting the key release operation and the adjacent finger part is widened, the space between them is not narrowed.
[0154]
For example, when a key with a higher pitch than the key is pressed with the thumb immediately after the index finger being pressed is released, it is necessary to start a thumb-punching operation before releasing the index finger. Therefore, in steps 1905 to 1917 in FIG. 23, it is determined whether or not there is a need to start a finger-pushing or stroking operation for the next key depression, and part motion data is generated according to the determination result. Then, a process for adding to the unit operation data A is performed.
[0155]
First, in step 1905, it is determined whether or not only the finger part designated by the value of the variable fig is depressed. If other finger parts are pressed, that is, if a plurality of finger parts are pressed, the determination is no and the process moves to step 1906. Otherwise, the determination is yes and the process moves to step 1907.
[0156]
In step 1906, after the finger part specified by the value of the variable fig generates part operation data for starting the key release operation at the timing specified by the value of the variable tktime, the series of processing ends. If the movement data is widened between the finger part that starts the key release operation and the adjacent finger part, the movement data is also made to perform an operation of narrowing the gap and returning to the relaxed state.
[0157]
As described above, in the present embodiment, the state of the finger part after the key is released is determined in consideration of whether or not to use it for the next key depression. As a result, it is avoided that the finger part that is not used for the next key depression is kept open forever. For this reason, the finger part is not simply moved from the start of the key release to the end of the next key press. As a result, not only can the performance behavior be expressed in a more natural way, but also the movement of the finger part that generates a key pressing event or a key release event and the movement of other finger parts associated with that movement can be made more conspicuous. .
[0158]
On the other hand, in step 1907, it is determined whether or not the event represented by the unit musical tone data to be processed next is a note-on event. If the event represented by the data is not a note-on event, the determination is no and the process moves to step 1906. Otherwise, the determination is yes and the process moves to step 1908.
[0159]
In step 1908, the finger number data added to the unit musical tone data to be processed next is substituted into the variable figa, and the pitch data in the unit musical tone data is substituted into the variable notea. In step 1909, the process proceeds after the assignment, it is determined whether or not the musical sounds in which the pitch data is assigned to the variables note and nota are both chord constituent sounds. If one of those musical tones is a chord component, the determination is no and the process moves to step 1906. Otherwise, the determination is yes and the process moves to step 1910.
[0160]
In step 1910, it is determined whether or not the time interval between the note-on timing of the musical tone in which the pitch data is assigned to the variable note and the timing interval of the note-off timing of the musical tone in which the pitch data is assigned to the variable note is within a predetermined time. If the finger part specified by the value of the variable fig is released and then the finger part specified by the value of the variable figa is pressed immediately, the determination is yes and the process moves to step 1911. Otherwise, the determination is no and the process moves to step 1906.
[0161]
In step 1911, it is determined whether or not the finger part specified by the values (finger number data) substituted for the variables fig and figa has any relationship among the thumb, forefinger, middle finger, and ring finger. . If the relationship is not satisfied, the determination is no and the process moves to step 1906. Otherwise, the determination is yes and the process moves to step 1912.
[0162]
In step 1912, it is determined whether or not the finger number data of the variable figa is the thumb and the pitch data of the variable note indicates a pitch higher than the pitch data of the variable note. When the thumb is designated by the finger number data of the variable figa, and the key whose pitch is higher than the pitch of the key to be released this time is pressed by the thumb, the determination is YES and step 1913 is performed. Migrate to Otherwise, the determination is no and the process moves to step 1915.
[0163]
In step 1913, assuming that the condition for performing the finger penetration that causes the thumb part to press the key to be pressed next by passing under the finger part such as the index finger part is satisfied, “TRUE” is set to the variable kuguru. Assign the value to represent. In the following step 1914, the operation of passing the thumb part specified by the value of the variable figa is started, and the key release operation of the finger part specified by the finger number data of the variable fig is started at the timing indicated by the value of the variable tkstart. Part motion data is created and added to unit motion data A. After the creation / addition, a series of processing is terminated.
[0164]
The timing for starting the operation of the thumb part, that is, the operation time data in the part operation data is determined in consideration of the timing at which the operation immediately before the thumb part is ended. If the time interval between the end of the immediately preceding operation and the timing at which the finger part specified by the finger number data of the variable fig is released is within a predetermined time, the operation is continued to that operation. That is, the timing at which the previous operation is ended is set as the timing at which a new operation is started. If these time intervals are not within a predetermined time, for example, a key for releasing the finger part and a key for pressing the thumb part from the timing of releasing the finger part specified by the finger number data of the variable fig. The previous timing is set according to the pitch difference. The time is determined with reference to a table in which the relationship between the pitch difference and time is defined in advance. The variable frz, which is a target variable for causing the thumb part to perform a lateral movement, is set to the finger of the variable fig on the assumption that the lateral movement is performed at a constant speed until the thumb part is depressed. Set the value when the finger part specified by the number data is released. In step 1914, such part motion data is generated.
[0165]
In step 1915 where the determination of step 1912 is NO and the process proceeds to step 1915, the finger number data of the variable fig is designated by the thumb, and the pitch data of the variable note indicates a pitch higher than the pitch data of the variable notea. Determine whether or not. If the finger is specified by the finger number data of the variable fig, the thumb is specified, and if a key having a pitch lower than the pitch of the key currently pressed on the thumb is to be turned on, the determination is YES and the step is performed. Transition to 1916. Otherwise, the determination is no and the process moves to step 1906.
[0166]
In step 1916, it is assumed that the condition for performing the finger straddling on the thumb part so as to straddle the finger part such as the index finger part and press the key to be pressed next is satisfied. "Is substituted. In the following step 1917, the thumb part designated by the value of the variable fig is used. upon The Again Part motion data for starting the key release operation of the finger part specified by the finger number data of the variable fig at the timing indicated by the value of the variable tkstart is created and added to the unit motion data A. The creation is performed in the same manner as in step 1914 described above. After creating / adding such part motion data, a series of processing ends.
[0167]
In this way, in the present embodiment, it is determined whether or not a situation in which a finger should be passed or straddled for the key depression to be performed next to the key to be released this time, and according to the determination result. Part motion data is created. Thereby, the performance operation including the operation of crossing such finger parts is displayed.
[0168]
In the note-off main process shown in FIG. 19, the various subroutine processes described above are executed. Thereby, part motion data for expressing the motion of releasing the finger part is generated in a subroutine processing unit and added to the unit motion data A. In those motion data, variable hz, array variable f Any one of rx1 to 3 and frz is a value change target.
[0169]
FIG. 24 is an operation flowchart of the hand x-position process executed as step 911 in the operation control data generation process shown in FIG. Next, with reference to FIG. 24, the x position processing of the hand will be described in detail. As described above, the x-position processing of this type includes the variables kuguru and mategu to which values are substituted when the note-on operation processing shown in FIGS. 17 and 18 or the note-off operation processing shown in FIGS. 22 and 23 is executed. Is passed as an argument.
[0170]
First, in step 2001, it is determined whether or not a value representing “TRUE” is assigned to one of the variables kuguru and matsugu. As a result of executing the note-on operation process shown in FIG. 17 and FIG. 18 or the note-off operation process shown in FIG. 22 and FIG. 23, a value representing “TRUE” was assigned to one of the variables kuguru and matsugu. If yes, the determination is yes and the process proceeds to step 2002. Otherwise, the determination is no and the process moves to step 2003.
[0171]
In step 2002, based on the key pressed or pressed by the finger part, its arrangement, the key pressing position on the key, the length of each finger part, the range that can be moved to the side of each finger part, etc. The rotation angle hrz about the z-axis with the base point 301 (wrist) of the hand part as an axis is obtained while the rotation angles frz of the finger parts other than the thumb part are all within a small range. This prevents each finger part from moving sideways beyond the range in which the actual finger moves sideways.
[0172]
Thus, in the present embodiment, the thumb part is handled separately from the other four finger parts, and the rotation angle hrz is obtained. This is because the rotation angle frz of the thumb part must be larger than that of the other finger parts in the finger hole and the finger straddle. The four finger parts other than the thumb part have a large gap between adjacent finger parts. Unfolding is not normal. This is because the tendency is seen.
[0173]
On the other hand, in step 2003, around the z-axis about the base point 301 (wrist) of the hand part that makes the maximum angle (absolute value) of the rotation angles frz of the finger parts when moved laterally the minimum. The rotation angle hrz is obtained. Thus, it is possible to avoid making one finger part perform excessive movements so that each part of the fingers is in a more comfortable state as a whole.
[0174]
By executing the step 2002 or 2003, the arrangement of the hand part and each finger part on the xy plane is determined. Therefore, in step 2004, which is executed after executing one of them, the key that each finger part presses or presses, the key arrangement, the key pressing position on the key (FIG. 5). Reference), the length of each finger part, its rotation angle frz, the rotation angle hrz of the hand part, the length La of the hand part (see FIG. 3), etc. hx is obtained (see FIG. 6). Thereafter, the process proceeds to step 2005.
[0175]
In step 2005, from the timing specified by the value of variable tkold to the timing specified by the value of variable tktime, the base point 301 of the hand part is moved to the position hx obtained in step 2004, or in step 2002 or 2003 Part motion data to be used for the obtained rotation angle hrz is generated as necessary and added to the unit motion data A. If it is not necessary to change both the position hx and the rotation angle hrz, those part motion data are not created.
[0176]
As shown in FIG. 5, when a plurality of reference key pressing positions are set in advance and one of them is selected as the key pressing position, when a plurality of finger parts are pressed, one or more finger parts are assigned. There is a high possibility that an unreasonable or burdensome operation must be performed. However, an operation that is unreasonable or has a large burden is often not impossible by slightly shifting the key pressing position, or the burden is often greatly reduced. Therefore, in steps 2002 and 2003, the key pressing position is also corrected as necessary. When the correction is made, it is usually necessary to correct the way of bending the finger part and the rotation angle frz. For this reason, in step 2005, correction of the already created part operation data is performed as necessary.
[0177]
In step 2006 following step 2005, a value representing “FALSE” is substituted for both variables kuguru and mategu. The series of processing is finished thereafter.
When the x-position processing of the hand is executed, various variables that specify the state of each part of the finger when the event represented by the unit musical tone data specified by the value of the variable pe or after the event, and various array variables Among them, all values except for the variable hy are determined. The value of the variable hy is determined by the hand y position reprocessing executed as step 912 after the x value processing of the hand.
[0178]
FIG. 25 is an operation flowchart of the sequence process. For example, when the user operates the operation unit 106 to instruct reproduction of musical sound / fingering data designated (selected) in advance, the CPU 101 executes a program stored in the ROM 102. This process is realized. The real-time processing unit 802 shown in FIG. 10 is realized by executing the sequence process.
[0179]
The motion control data B shown in FIG. 7B is stored in a different area from the musical tone / fingering data. Of course, the stage operation data constituting the operation control data B is larger than the number of unit musical sound data constituting the musical tone / fingering data, and the processing timing thereof usually does not coincide with the processing timing of the unit musical tone data. . Therefore, the operation control data B and the musical tone / fingering data are processed in parallel.
[0180]
First, in step 2101, substitution of values for various variables such as substituting 0 for variables tktimeE, tktimeM, and clock, and substituting initial values for variables pe and pm, and a hard timer (not shown) in particular. The initial setting is made such that the interrupt signal to be output at a predetermined time interval is enabled and the prohibition of execution of the timer interrupt process is canceled. By canceling the prohibition of execution, the value of the variable clock is incremented every time the timer interrupt process is executed.
[0181]
In step 2102 following step 2101, an operation using the value of the variable clock or the value of the tempo data is performed to calculate a value indicating the value of the variable clock in the unit of time data in the musical sound / fingering data. Assign the result to the variable tktime. Thereafter, the process proceeds to step 2103.
[0182]
In steps 2103 to 2109, processing relating to reproduction of musical tone / fingering data is executed.
First, in step 2103, it is determined whether or not the musical tone / fingering data has been completed. If the data specified by the value of the variable pe is end data located at the end of the musical tone / fingering data, the determination is yes and the process moves to step 2110. Otherwise, the determination is no. Control goes to step 2104.
[0183]
In step 2104, it is determined whether or not the value obtained by adding the time data value in the unit musical tone data designated by the value of the variable pe to the value of the variable tktimeE is equal to or greater than the value of the variable tktime. The variable tktimeE is substituted with a value obtained by accumulating the time data values in the unit musical tone data processed so far, that is, a value indicating the processing timing of the unit musical tone data processed immediately before in absolute time. For this reason, when it is time to process the unit musical tone data designated by the value of the variable pe, the determination is YES and the process proceeds to step 2105. Otherwise, the determination is no and the process moves to step 2110.
[0184]
In step 2105, a value obtained by adding the value of time data in the unit musical sound data specified by the value of the variable pe to the previous value is substituted for the variable tktimeE. Thereby, after substituting a value indicating the timing at which the next unit time data should be processed into the variable tktimeE, the unit musical sound data at the processing timing is processed according to the type of event represented by the processing, and As the performance progresses, the display page is switched, the display color of the note corresponding to the newly sounded tone is changed, and the address value advanced by one event from the previous address value to the variable pe. After substituting (steps 2106 to 2109), the process proceeds to step 2110. The processing of unit musical tone data is performed by the CPU 101 generating and sending a command to be sent to the sound source 107 from the data.
[0185]
In steps 2101 to 2115, processing for operating each part of the finger according to the operation control data B is performed.
First, in step 2110, it is determined whether or not the operation control data B has been completed. If the stage motion data specified by the value of the variable pm does not exist in the motion control data B, the determination is yes and the process moves to step 2115. Otherwise, the determination is no and the process proceeds to step 2111. Transition.
[0186]
In step 2111, it is determined whether or not the value obtained by adding the time data value in the stage action data specified by the value of the variable pm to the value of the variable tktimeM is equal to or greater than the value of the variable tktime. Similarly to the variable tktimeE, the variable tktimeM has a value obtained by accumulating the time data values in the stage action data processed so far, that is, a value indicating the processing timing of the stage action data processed immediately before in absolute time. Assigned. For this reason, when it is time to process the stage operation data specified by the value of the variable pm, the determination is YES and the process proceeds to step 2112. Otherwise, the determination is no and the process returns to step 2102 above.
[0187]
In step 2112, a value obtained by adding the value of the time data in the stage operation data specified by the value of the variable pm to the previous value is substituted for the variable tktimeM. As a result, when a value indicating the timing at which the next stage motion data is to be processed is substituted into variable tktimeM, the process proceeds to step 2113, and the state is changed in each part of the finger according to the stage motion data at the processing timing. A performance operation display update process is executed to update the display content indicating the performance operation by changing the state of the part to be performed. After the execution, the address value advanced by one event from the previous address value is assigned to the variable pm in step 2114, and then the process returns to step 2102. The display content is updated by, for example, the CPU 101 reading out the image data of the portion of the image data stored in the memory of the display unit 105 from which data is to be rewritten from the ROM 102 or using it to generate the data. This is done by overwriting the image data obtained in this way on the portion of the memory where the image data is to be rewritten.
[0188]
On the other hand, in step 2115 where the determination in step 2110 is YES and the process proceeds, it is determined whether or not the musical sound / fingering data has ended. If the data specified by the value of the variable pe is end data located at the end of the musical tone / fingering data, the determination is YES and the series of processes is terminated. Otherwise, the determination is NO. The process returns to step 2102.
[0189]
By executing the above-described sequence processing, an image as shown in FIG. 9 is displayed on the display unit 105, and each part of the finger displayed thereon operates as shown in FIG.
In the present embodiment, as shown in FIG. 8, the hand part is basically started to operate at the processing timing of the unit musical sound data, but this is not necessarily required. As an operation during performance, for example, the horizontal operation is completed before the start of the key pressing operation (Sekiguchi, Eiho: Generation and display of piano performance operation in virtual space, Information Processing Society of Japan Vol. 99, No. 16). (1999)). For this reason, for example, in key pressing, for example, after the movement of the hand part or finger part is completed, each part of the finger is divided into a plurality of phases, such as starting the key pressing operation by bending the finger part at the joint. You may make it operate.
[0190]
Although there are only two positions on the z-axis where the base point 301 of the hand part can be taken, the position ZPOS1 or ZPOS2, the positions may be set to three or more or arbitrarily set. The same applies to the position on the y-axis where the base point 301 can be taken. In such a case, it is possible to more appropriately represent the movement of a finger passing or straddling another finger.
[0191]
In this embodiment, a keyboard is assumed as a group of performance operators, and the performance operation for the keyboard is displayed. However, the performance operation for a group of performance operators other than the keyboard may be displayed.
In this embodiment, the present invention is applied to a device on which the sound source 107 and the display unit 105 are mounted. However, a device to which the present invention can be applied is not limited to a device on which these are mounted. The sound source 107 may be omitted, and the display unit 105 may be omitted as long as it can be connected to an external display device.
[0192]
The program for realizing the operation of the performance operation display device may be distributed by being recorded on a recording medium such as a CD-ROM, a flexible disk, or a magneto-optical disk. Alternatively, part or all of the program may be distributed via a transmission medium used in a public network or the like. In such a case, the user can apply the present invention to the device by acquiring the program and loading it into an arbitrary performance operation display device or a data processing device such as a computer. Therefore, the recording medium may be accessible by a device that distributes the program.
[0194]
【The invention's effect】
As described above, according to the present invention, a plurality of reference positions serving as a reference for bringing a finger into contact with a key on a keyboard are determined in advance, and the position at which the finger is brought into contact with the key for key pressing is determined by the position of the hand. And fingers to use With the key to be pressed Based on the above, one of the predetermined reference positions is selected and determined. In this way, since the range to be considered in determining the contact position of the finger is limited, the contact position can be determined more easily and in a short time.
[Brief description of the drawings]
FIG. 1 is a circuit configuration diagram of a performance operation display device according to the present embodiment.
FIG. 2 is a diagram illustrating a configuration of musical sound / fingering data.
FIG. 3 is a diagram illustrating the structure of a finger for display.
FIG. 4 is a diagram for explaining a movement range of a hand.
FIG. 5 is a diagram illustrating a position where a key to be changed according to a situation is pressed.
FIG. 6 is a diagram for explaining how to obtain a position on the x-axis of a hand.
FIG. 7 is a diagram illustrating the configuration of operation control data.
FIG. 8 is a diagram illustrating an example of a finger operation display.
FIG. 9 is a diagram illustrating an actual display example.
FIG. 10 is a functional block diagram of a performance operation display device according to the present embodiment.
FIG. 11 is an operation flowchart of operation control data generation processing;
FIG. 12 is an operation flowchart of a hand y-position processing process.
FIG. 13 is an operation flowchart of z position processing of a hand.
FIG. 14 is an operation flowchart of note-on main processing.
FIG. 15 is an operation flowchart of a chord determination process.
FIG. 16 is an operation flowchart of a chord operation process.
FIG. 17 is an operation flowchart of note-on operation processing;
FIG. 18 is an operation flowchart of note-on operation processing (continued).
FIG. 19 is an operation flowchart of note-off main processing;
FIG. 20 is an operation flowchart of a chord off determination process.
FIG. 21 is an operation flowchart of chord off operation processing;
FIG. 22 is an operation flowchart of note-off operation processing;
FIG. 23 is an operation flowchart of note-off operation processing (continued).
FIG. 24 is an operation flowchart of x-position processing of a hand.
FIG. 25 is an operation flowchart of sequence processing.
[Explanation of symbols]
101 CPU
102 ROM
103 RAM
104 Data input section
105 display
106 Operation unit
107 sound source
108 sound system
300 keyboard
301-306 base point
801 Data generation unit
802 Real-time processing unit
803 Operation control data generation unit
804 Data transmission unit
805 Operation display section
806 Sound generator
807 Music score display

Claims (2)

演奏の進行に応じて演奏者が鍵盤を操作していく際の手指の動作画像を鍵盤画像とともに表示する装置であって、
前記鍵盤上で発生させるべきイベントの内容を表すイベントデータ、該イベントデータの発生タイミングを示す時間データ、及び該イベントの発生に使用すべき指を指定する指データから構成される楽音・運指データが複数個集合してなる演奏データを取得する演奏データ取得手段と、
前記演奏データ取得手段が取得した演奏データに基づいて、前記鍵盤の鍵を押鍵するとき、或いは離鍵した後の手指の位置を、前記楽音・運指データ単位で決定する状態決定手段と、
前記状態決定手段が決定した手指の位置に順次移行させることにより、前記鍵盤を操作していく手指の動作を動画表示する動画表示手段と
を具備し、
前記状態決定手段は、押鍵するときの手の位置を決定したら、該手の位置と押鍵に使用すべき指と押鍵すべき鍵とに基づいて、指を接触させる鍵上の位置を、予め定められた複数の基準位置の中から一つ選択する
ことを特徴とする演奏動作表示装置。
A device that displays an operation image of fingers when the player operates the keyboard as the performance progresses, together with the keyboard image,
Musical sound / fingering data composed of event data representing the contents of an event to be generated on the keyboard, time data indicating the timing of the event data generation, and finger data designating a finger to be used for the event generation A performance data acquisition means for acquiring performance data comprising a plurality of sets,
Based on the performance data the performance data acquisition means has acquired, when depressed the key of the keyboard, or the position of the fingers after the key-off, and a state determining means for determining by the tone-fingering data units,
Moving image display means for displaying a motion of the finger operating the keyboard by sequentially shifting to the finger position determined by the state determining means;
Said state determining means, upon determining the position of the hand at the time of key depression, on the basis of the key to be the finger and depressed to be used for position and depressed the該手, the position on the key for contacting a finger A performance operation display device that selects one of a plurality of predetermined reference positions.
演奏の進行に応じて演奏者が鍵盤を操作していく際の手指の動作画像を鍵盤画像とともに表示する装置に実行させるプログラムであって、
前記鍵盤上で発生させるべきイベントの内容を表すイベントデータ、該イベントデータの発生タイミングを示す時間データ、及び該イベントの発生に使用すべき指を指定する指データから構成される楽音・運指データが複数個集合してなる演奏データを取得する機能と、
前記取得する機能により取得した演奏データに基づいて、前記鍵盤の鍵を押鍵するとき、或いは離鍵した後の手指の位置を、前記楽音・運指データ単位で決定する機能と、
前記決定する機能により決定した手指の位置に順次移行させることにより、前記鍵盤を操作していく手指の動作を動画表示する機能と
を実現させるためのプログラムであって、
前記決定する機能は、押鍵するときの手の位置を決定したら、該手の位置と押鍵に使用すべき指と押鍵すべき鍵とに基づいて、指を接触させる鍵上の位置を、予め定められた複数の基準位置の中から一つ選択する
ことを特徴とするプログラム。
A program that causes a device that displays an operation image of a finger together with a keyboard image when a performer operates the keyboard as the performance progresses,
Musical sound / fingering data composed of event data representing the contents of an event to be generated on the keyboard, time data indicating the timing of the event data generation, and finger data designating a finger to be used for the event generation A function for acquiring performance data consisting of a plurality of
Based on the performance data obtained by the function of the acquiring, when depressed the key of the keyboard, or the position of the fingers after the key release, a function of determining by said tone-fingering data units,
A program for realizing a function of displaying a motion of a finger operating the keyboard by moving sequentially to a finger position determined by the determined function,
Function of the determined, After determining the position of the hand at the time of key depression, on the basis of the key to be the finger and depressed to be used for position and depressed the該手, the position on the key for contacting a finger A program for selecting one of a plurality of predetermined reference positions.
JP2001237820A 2001-08-06 2001-08-06 Performance operation display device and program Expired - Fee Related JP4337288B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001237820A JP4337288B2 (en) 2001-08-06 2001-08-06 Performance operation display device and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001237820A JP4337288B2 (en) 2001-08-06 2001-08-06 Performance operation display device and program

Publications (2)

Publication Number Publication Date
JP2003050577A JP2003050577A (en) 2003-02-21
JP4337288B2 true JP4337288B2 (en) 2009-09-30

Family

ID=19068835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001237820A Expired - Fee Related JP4337288B2 (en) 2001-08-06 2001-08-06 Performance operation display device and program

Country Status (1)

Country Link
JP (1) JP4337288B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4684168B2 (en) * 2006-05-30 2011-05-18 ローランド株式会社 Keyboard display device and keyboard display program
JP6069841B2 (en) * 2012-02-06 2017-02-01 カシオ計算機株式会社 Performance operation display device, method and program
JP2015069170A (en) * 2013-09-30 2015-04-13 カシオ計算機株式会社 Performance operation guide device, method, and program

Also Published As

Publication number Publication date
JP2003050577A (en) 2003-02-21

Similar Documents

Publication Publication Date Title
JP3601350B2 (en) Performance image information creation device and playback device
JP2705568B2 (en) Automatic performance device
US7514622B2 (en) Musical sound production apparatus and musical
US7960639B2 (en) Electronic music apparatus and tone control method
US20150103019A1 (en) Methods and Devices and Systems for Positioning Input Devices and Creating Control
JP3728942B2 (en) Music and image generation device
JPH03184095A (en) Electronic musical instrument
JP3521838B2 (en) Performance operation display device and recording medium
JP4337288B2 (en) Performance operation display device and program
JP3622275B2 (en) Automatic performance control data input method and automatic performance apparatus
JP3684774B2 (en) Performance instruction device and medium recording program
JP3528051B2 (en) Performance operation display device and recording medium
JP3548825B2 (en) Performance operation display device and recording medium
Berdahl et al. Force-feedback instruments for the laptop orchestra of louisiana
JP3799711B2 (en) Musical sound generation method and musical sound generator
JP2002099275A (en) Playing action display device and recording medium
JP3760714B2 (en) Musical sound control parameter generation method, musical sound control parameter generation device, and recording medium
JP7107720B2 (en) fingering display program
JP3267226B2 (en) Automatic accompaniment device and medium recording automatic accompaniment control program
JP5277814B2 (en) Electronic music apparatus and program
JP2003029743A (en) Playing action display device, and recording medium
JP5272599B2 (en) Electronic music apparatus and program
JP7092537B2 (en) Fingering display device and fingering display program
JP3794303B2 (en) Performance information editing apparatus and performance information editing program
JP4162766B2 (en) Performance information generating apparatus and automatic performance apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081215

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: 20090609

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: 20090622

R150 Certificate of patent or registration of utility model

Ref document number: 4337288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130710

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees