JP2003050577A - 演奏動作表示装置、及びプログラム - Google Patents

演奏動作表示装置、及びプログラム

Info

Publication number
JP2003050577A
JP2003050577A JP2001237820A JP2001237820A JP2003050577A JP 2003050577 A JP2003050577 A JP 2003050577A JP 2001237820 A JP2001237820 A JP 2001237820A JP 2001237820 A JP2001237820 A JP 2001237820A JP 2003050577 A JP2003050577 A JP 2003050577A
Authority
JP
Japan
Prior art keywords
data
finger
variable
key
unit
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.)
Granted
Application number
JP2001237820A
Other languages
English (en)
Other versions
JP4337288B2 (ja
Inventor
Naoyuki Komata
直幸 小股
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/ja
Publication of JP2003050577A publication Critical patent/JP2003050577A/ja
Application granted granted Critical
Publication of JP4337288B2 publication Critical patent/JP4337288B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】 演奏中における手指の動作をユーザが容易に
理解できる形で表示するための技術を提供する。 【解決手段】 手首から先は、手パートと5本の指パー
トに分け、各指パートは、3つの部分に更に分けてい
る。指パートによる押鍵動作は、対応する楽音の発音開
始前に開始し、離鍵動作は、楽音の消音時に開始する。
指くぐり、或いは指またぎさせての押鍵動作は、予め定
めた条件が全て満たされている状況のときに行わせる。
離鍵させた指パートは、次の押鍵に使わなければ、弛緩
状態にさせる。手パートは、押鍵すべき鍵の位置、その
鍵の押鍵に用いる指パートの種類などに応じてxy平面
上を移動させる。和音の構成音を発音させるために複数
の鍵を押鍵する動作は、手パートのz軸上の位置を移動
させて表現する。そのようにして、演奏動作の一連の流
れを動画で表示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、鍵盤などの演奏操
作の対象となる演奏操作子群に対し、演奏の進行に応じ
て操作していく際の動作を表示するための技術に関す
る。
【0002】
【従来の技術および発明が解決しようとする課題】現在
では、多くの鍵盤楽器に、演奏の進行に応じて押鍵(操
作)すべき鍵を順次、ユーザ(演奏者)に通知していく
ナビゲーション機能が搭載されている。しかし、ナビゲ
ーション機能を利用するユーザの多くは技術的に未熟で
あり、そのナビゲーション機能によって次に押鍵すべき
鍵を知ることができても、その鍵をどの指で押鍵すべき
かが判らないのが実状である。このことから、鍵の押鍵
に使うべき指を表示する装置(演奏動作表示装置)を搭
載した鍵盤楽器も製品化されている。その演奏動作表示
装置を利用することにより、指の運び方を意識した演奏
を行えるため、ユーザにとってはより効率的な練習(学
習)を行うことができる。
【0003】演奏動作表示装置の多くは、次の押鍵(操
作)に使うべき指を単に表示するだけである。しかし、
押鍵(操作)すべき鍵への指の運び方は、その鍵に単に
指を運ぶだけではない。別の指の下をくぐらせて指を運
んだり、別の指の上をまたいで指を運んだりすることも
ある。これは、単に指だけを表示した場合、その指をど
のように運んで押鍵(操作)するべきなのかをユーザが
直ちに理解できるとは限らないことを意味する。このこ
とから、例えば特開平10−39739号公報に開示さ
れているように、使う指だけでなく、その指の運び方を
より理解しやすい形で表示する演奏動作表示装置が創案
されている。
【0004】その特開平10−39739号公報に開示
された従来の演奏動作表示装置では、押鍵時の手指(手
首から先の部分)を表示することにより、押鍵に使うべ
き指をどのような形で使うべきかをユーザに知らせるよ
うになっている。しかし、次に押鍵すべき鍵が現在、押
鍵している鍵と離れているような場合、普通、手や指を
大きく動かさなければならない。これは、押鍵時の手指
を表示しても、その表示された手指の形にどのようにし
て移行させるのかをユーザが直ちに理解できるとは限ら
ないことを意味する。このため、従来の演奏動作表示装
置には、全体的な手指の動作が判りにくいという問題点
があった。
【0005】なお、上記従来の演奏動作表示装置では、
コンピュータ・グラフィクス(以降、CGと略記する)
技術を用いて、押鍵に使う指を動かしている。その指の
動きにより、押鍵に使うべき指をユーザは知ることがで
きる。しかし、その指の動きは、押鍵時の手指の形を作
った後の動きである。このため、その指の動きによっ
て、押鍵時の手指の形にどのようにして移行させるかを
ユーザに知らせることはできない。
【0006】本発明の課題は、演奏中における手指の動
作をユーザが容易に理解できる形で表示するための技術
を提供することにある。
【0007】
【課題を解決するための手段】本発明の第1の態様の演
奏動作表示装置は、演奏操作の対象となる演奏操作子群
に対し、演奏の進行に応じて演奏者が操作していく際の
動作を表示する装置であることを前提とし、演奏操作子
群上で発生させるべきイベントの内容を表すイベントデ
ータ、該イベントの発生タイミングを示す時間データ、
及び該イベントの発生に使用すべき指を指定する指デー
タを少なくとも有するデータ群を単位楽音・運指データ
として構成されている楽音・運指データを取得する楽音
・運指データ取得手段と、楽音・運指データ取得手段が
取得した楽音・運指データを参照して、単位楽音・運指
データで指定される操作を演奏操作子群に対して行う際
に指を交差させるべきか否か判定し、該判定結果に従っ
て、該演奏操作子群中の演奏操作子を操作したとき、或
いは該操作を解除した後の手指の状態を、該手指を複数
のパートに分けて該単位楽音・運指データ単位で決定す
る状態決定手段と、その状態決定手段が決定した状態に
パート単位で順次、移行させることにより、演奏操作子
群を操作していく手指の動作を動画表示する動作表示手
段と、を具備する。
【0008】なお、上記の構成において、状態決定手段
は、イベントデータに付加された時間データを基に、単
位楽音・運指データ単位で決定した状態に移行を開始す
べき動作開始タイミング、及び該移行に要する動作時間
をパート別に決定し、動作表示手段は、状態決定手段が
決定した動作開始タイミング、及び動作時間に従って、
手指を構成する各パートを該状態決定手段が決定した状
態に移行させることにより動画表示を行う、ことが望ま
しい。
【0009】また、上記演奏操作子群は鍵盤であり、上
記状態決定手段は、鍵盤の鍵を押鍵させるために指を接
触させる位置を、該鍵に指を接触させる基準となる位置
として予め定められた複数の基準位置のなかから一つを
選択して、該選択した基準位置を基準に決定する、こと
が望ましい。
【0010】本発明の第2の態様の演奏動作表示装置
は、演奏操作の対象となる鍵盤に対し、演奏の進行に応
じて演奏者が操作していく際の動作を表示する装置であ
ることを前提とし、鍵盤上で発生させるべきイベントの
内容を表すイベントデータ、該イベントの発生タイミン
グを示す時間データ、及び該イベントの発生に使用すべ
き指を指定する指データを少なくとも有するデータ群を
単位楽音・運指データとして構成されている楽音・運指
データを取得する楽音・運指データ取得手段と、楽音・
運指データ取得手段が取得した楽音・運指データに基づ
いて、鍵盤中の鍵を押鍵したとき、或いは離鍵した後の
手指の状態を、該鍵に指を接触させる基準となる位置と
して予め定められた複数の基準位置を参照しつつ、該手
指を複数のパートに分けて該単位楽音・運指データ単位
で決定する状態決定手段と、状態決定手段が決定した状
態にパート単位で順次、移行させることにより、鍵盤を
操作していく手指の動作を動画表示する動作表示手段
と、を具備する。
【0011】本発明の第1、及び第2の態様のプログラ
ムは、それぞれ上記第1、及び第2の態様の演奏動作表
示装置を実現させるための機能を実現させるものであ
る。各プログラムは、それぞれ以下のような機能を実現
させる。第1の態様のプログラムは、演奏操作子群上で
発生させるべきイベントの内容を表すイベントデータ、
該イベントの発生タイミングを示す時間データ、及び該
イベントの発生に使用すべき指を指定する指データを少
なくとも有するデータ群を単位楽音・運指データとして
構成されている楽音・運指データを取得する機能と、取
得する機能により取得した楽音・運指データを参照し
て、単位楽音・運指データで指定される操作を演奏操作
子群に対して行う際に指を交差させるべきか否か判定
し、該判定結果に従って、該演奏操作子群中の演奏操作
子を操作したとき、或いは該操作を解除した後の手指の
状態を、該手指を複数のパートに分けて該単位楽音・運
指データ単位で決定する機能と、決定する機能により決
定した状態にパート単位で順次、移行させることによ
り、演奏操作子群を操作していく手指の動作を動画表示
する機能と、を実現させる。
【0012】第2の態様のプログラムは、鍵盤上で発生
させるべきイベントの内容を表すイベントデータ、該イ
ベントの発生タイミングを示す時間データ、及び該イベ
ントの発生に使用すべき指を指定する指データを少なく
とも有するデータ群を単位楽音・運指データとして構成
されている楽音・運指データを取得する機能と、取得す
る機能により取得した楽音・運指データに基づいて、鍵
盤中の鍵を押鍵したとき、或いは離鍵した後の手指の状
態を、該鍵に指を接触させる基準となる位置として予め
定めた複数の基準位置を参照しつつ、該手指を複数のパ
ートに分けて該単位楽音・運指データ単位で決定する機
能と、決定する機能により決定した状態にパート単位で
順次、移行させることにより、鍵盤を操作していく手指
の動作を動画表示する機能と、を実現させる。
【0013】本発明では、手指を複数のパート(オブジ
ェクト)に分け、楽音・運指データを基に、演奏操作子
群上で生じさせるべきイベント単位で、演奏操作子群の
操作を行う際に指を交差させるべきか否か判定し、その
判定結果に従って、イベントを生じさせた後(演奏操作
子群が鍵盤であれば押鍵終了時、或いは離鍵後が対応)
の手指の状態を各パート毎に求め、求めた状態にパート
単位で順次、移行させることにより、手指による演奏動
作を動画表示する。そのようにして、演奏動作の一連の
流れを動画で表現することにより、ユーザに演奏中にお
ける手指の動作を容易に理解させることが可能となる。
また、イベント単位で手指の状態を確定させることか
ら、長い時間をかけて1イベントを生じさせるための指
の動作を表現するようなことは回避される。その結果、
動画表示させる演奏動作もより自然な形となる。
【0014】本発明では、鍵盤上の鍵に指を接触させる
うえで基準となる基準位置を予め複数、定めておき、押
鍵のために指を鍵に接触させる位置を、予め定められた
基準位置を参照して決定する。例えば予め定められた基
準位置のなかから一つを選択し、選択した基準位置、或
いはその近傍を指の接触位置として決定する。そのよう
にして、指の接触位置を決定する範囲を制限することに
より、各指などのパートが取れる状態は制限され(パー
トの状態を決定するうえでの選択肢が少なくなり)、接
触位置を決定するうえで必要な計算量は少なくなる。こ
の結果、接触位置をより容易、且つ短時間に決定するこ
とが可能となる。
【0015】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。図1は、本実
施の形態による演奏動作表示装置の回路構成図である。
この演奏動作表示装置は、後述する楽音・運指データを
外部から取得し、取得した楽音・運指データに基づいて
演奏中の手指の動作を動画で表示する装置として実現さ
れている。
【0016】上記演奏動作表示装置は、図1に示すよう
に、装置全体の制御を行うCPU101と、そのCPU
101が実行するプラグラムや各種制御データ(画像表
示用の各種データを含む)などを格納したROM102
と、そのCPU101がワーク用に用いるRAM103
と、上記楽音・運指データを含む各種データを取得する
ためのデータ入力部104と、CPU101から送られ
たデータを画面上に表示する表示部105と、ユーザが
操作の対象とする操作部106と、CPU101の指示
に従って楽音の波形データを生成する音源107と、そ
の音源107が出力した波形データをサウンドに変換し
て放音するサウンドシステム108と、CPU101を
各部102〜107と接続するバス109と、を備えて
構成されている。
【0017】上記データ入力部104は、例えばフレキ
シブルディスクドライブ(FDD)である。表示部10
5は、例えばCRT、或いは液晶表示装置などの表示装
置である。操作部106は、例えば各種スイッチやキー
等の複数の操作子、及びそれら操作子への操作を検出す
る検出回路から構成された入力装置である。サウンドシ
ステム108は、例えばD/Aコンバータ、アンプ、及
びスピーカからなるシステムである。なお、データ入力
部104は、外部機器が出力した信号を少なくとも受信
できるインターフェース、或いは所定のネットワークと
の通信を行う通信制御装置であっても良い。
【0018】上記楽音・運指データは、図2に示すよう
に、楽音データに運指データを付加する形で構成されて
いる。楽音データは、通常は演奏の再生に使用される演
奏データ(シーケンスデータ)であり、楽音の音階(音
高)データ、その楽音の発音が開始(ノートオンイベン
ト)か消音(ノートオフイベント)かを含むイベントの
種別を表す種別データ、及び楽音の音高データと種別デ
ータによって特定されるイベントが発生したタイミング
を示す時間データを1単位のデータ(以降、便宜的に単
位楽音データと呼ぶ)として、その単位楽音データをイ
ベントの発生順に並べた形で構成されている。運指デー
タは、単位楽音データ毎に付加された、その単位楽音デ
ータが表すイベントを発生させるために用いるべき指を
示す指番号データからなるデータである。指番号とし
て、親指には0、人差し指には1、中指には2、薬指に
は3、小指には4がそれぞれ割り当てられている。
【0019】上記運指データには、通常、指番号データ
の他に、少なくとも、動かす指が右手か左手かを示す手
データが存在し、単位楽音データ毎に、それらのデータ
が付加される。しかし、ここでは、混乱を避けて理解を
容易とするために、右手のみに着目して手データ等は考
慮しないことにする。上記時間データは、イベント間の
時間間隔(デルタタイム)でそのイベントの発生タイミ
ングを表すデータであり、種別データ、及び音高データ
は、例えばMIDIデータを構成するデータである。
【0020】なお、上記楽音データ(演奏データ)で
は、楽音の発音開始(オン)、その楽音の消音(オフ)
をそれぞれ別のイベントとして扱い、楽音の発音期間は
それらのイベントによって指定されるようになっている
が、楽音データはそれらのイベントを一つにまとめたも
のであっても良い。即ち単位楽音データは、例えば音高
データ、その音高データで指定される楽音の発音開始タ
イミングを指定する時間データ、及びその楽音を発音さ
せている時間長(ゲートタイム)を指定する時間長デー
タから構成されるものであっても良い。このことから明
らかなように、楽音データの形式は特に限定されるもの
ではない。
【0021】以上の構成において、その動作を説明す
る。CPU101は、電源がオンされると、ROM10
2に格納されているプログラムを読み出して実行するこ
とにより、装置全体の制御を開始し、表示部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にデータを読み出させるファ
イルの指定は、特に詳細な説明は省略するが、操作部1
06を操作してファイル名を入力するか、或いはFDに
格納されたファイルの一覧を表示部105に表示させ
て、そのなかからファイルを選択することで行うように
なっている。その一覧に表示させるファイル名は、CP
U101が、データ入力部104にFDに格納されたフ
ァイル名を読み出させて受け取ったものである。
【0025】特開平10−39739号公報に開示され
た従来の演奏動作表示装置のように、基本的には押鍵時
における手指の形だけを表示させるのでは、その形に移
行するまでの手指の動かし方をユーザは理解しにくい。
このことから、本実施の形態では、イベント単位で、そ
れまでの手指の状態から、そのイベントを生じさせる手
指の状態に移行するまでの動作を動画で表示するように
している。即ち手をどこからどこまで移動させるか、ど
の指の状態をどのように変化せるか、といったことを動
画で表示するようにしている。そのようにして、演奏中
における一連の手指の動作を細かく表示した場合、どの
ように手指を動作させれば良いのかを考えさせることな
くユーザに理解させることができる。
【0026】演奏中における手指の動作を動画で表示さ
せるためには、そのためのデータ(以降、動作制御デー
タと呼ぶ)を生成しなければならない。そのデータは、
楽音・運指データから生成するが、対象となる楽音・運
指データによってはその生成に重い負荷がかかる。これ
は、動作制御データを生成しつつ、楽音・運指データ
(楽音データ)を再生させようとすると、楽音の発音や
画像の表示に不具合を生じさせる可能性があることを意
味する。即ち、楽音を発音させるべきタイミングで発音
させられなかったり、手指の動作をスムーズに表示させ
られないといったことが生じる可能性がある。このこと
から、本実施の形態では、動作制御データの生成は楽音
・運指データの再生とは別に行うようにしている。
【0027】動作制御データの生成は、例えばRAM1
03にファイル形式で格納された楽音・運指データを対
象に行うようにしている。ユーザが操作部106を操作
して、RAM103に格納された楽音・運指データのな
かから一つを指定(選択)し、動作制御データの生成を
指示した場合、CPU101は、以下のようにしてユー
ザが指定した楽音・運指データの動作制御データを生成
する。なお、楽音・運指データの指定方法は、基本的に
FDから読み出すファイルを指定する場合と同じであ
る。
【0028】図3は、表示用の手指の構造を説明する図
である。身体の各部は、関節を曲げて動かすことができ
る。これは、手指においても同じである。このことか
ら、本実施の形態では、図3に示すように、手首から先
を、手と5本の指に分けている。各指は、3関節の曲げ
動作が行えることから、3つの部分に更に分けている。
以降、表示する手指については、実際の手指のそれと区
別するために「パート」を最後に付けて表記することに
する。指の関節については、手に近いほうから第1関
節、第2関節、第3関節と呼ぶことにする。
【0029】図3中の301〜306は、各部分を動か
すうえでの基点である。具体的には、基点301は手パ
ートの基点であり、手首(の関節)に対応する。基点3
02は親指パートの基点であり、その第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の値は、そ
れぞれ、用意した変数に代入させることで保持させてい
る。それらの値は各指パート毎に保持しなければならな
いことから、その変数は配列変数とし、指番号で指定さ
れる要素に、対応する値を代入させている。以降、fr
z、及び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軸上の位置としてYPOS
1、その鍵盤300に近づけた場合の位置としてYPO
S2を定めている。
【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にある場合に、親指、或いは
小指で押鍵するとき 点D:手が位置YPOS1にある場合に、人差し指、中
指、或いは薬指で押鍵するとき。その手が位置YPOS
2にある場合には、親指、或いは小指で押鍵するとき 点E:手が位置YPOS2にある場合に、人差し指、中
指、或いは薬指で押鍵するとき 図6は、手のx軸上の位置hxの求め方を説明するため
の図である。同図(a)は、指パートで鍵(白鍵)を押
鍵している様子を横から見た側面図、同図(b)は、そ
の様子を上から見た上面図である。
【0041】図5(a)及び(b)から明らかなよう
に、鍵の押鍵位置によってその鍵を押し下げなければな
らないz軸上の距離は長くなる。指のxy平面上におけ
る長さは押鍵時の形によって変化する。このことから、
手のx軸上における位置hxは、以下のようにして求め
ている。図6を参照して具体的に説明する。
【0042】図6(a)において、ktopZは、押鍵
したときに指パートと接触している鍵の押鍵位置のz軸
上における高さ(基準となる位置からの距離)を示すシ
ンボルである。その高さktopZは、基準押鍵位置毎
に異なることから、基準押鍵位置毎に、それと対応付け
られた配列変数の要素に用意している。hzは手パート
のz軸上における高さ(基準となる位置からの距離)を
示すシンボルであり、その高さhzは、位置ZPOS
1、或いはZPOS2に対応する。fzは、手パートの
高さhzと押鍵させる指パートの基点のz軸上における
高さ(基準となる位置からの距離)との差を示すシンボ
ルである。差fzはマイナスの値である。flenZ
は、押鍵させる指パートのz軸上における長さを示すシ
ンボルである。その長さflenZを得るために、第1
関節の角度frx1、更には第2、第3関節の角度fr
x2、frx3を調整することになる。topZは指パ
ートの指先に当たる第3パートにおいて、その中央から
鍵に接触させる部分までの第3関節を折り曲げる方向上
における厚さを示すシンボルである。
【0043】指パートを押鍵させるために必要なz軸上
における長さをftokZで表すと、そのftokZ
は、手パートの高さhzから、差fz、及び高さkto
pZを引いた分の高さ(=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を代入して求められる長さf
lenZが長さ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軸上の位置note
Xを基準にする形で、上述したようにして算出される長
さlenXYを用いて次の式より求めている。
【0048】fbaseX=lenXY×sin(hr
z+frz)+noteX 図6(b)に示す状態では、回転角hrz、frzはそ
れぞれ負の値となる。このため、上記式より算出される
位置fbaseXの値は、位置noteXのそれよりも
小さくなる。
【0049】手パートの基点301のx軸上の位置hx
は、以下の式より求めている。 hx=La×sin(hrz)+fbaseX+fle
nX×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]を指定し、値データは配列要素f
rx1[1]の値として10を、配列変数note
[1]の値として64をそれぞれ指定し、動作時間デー
タは配列要素frx1[1]では−5、配列要素not
e[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である。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)中の時点〜
における手パートの基点(手首)301の位置を示す図
である。それらの時点〜におけるxy平面上の位置
は、それぞれ、〜で示してある。図8(b)に示す
ように、手パートは、始めにで示す位置からで示す
位置にまで移動する。次には複数鍵を同時に押鍵するた
めに、で示す位置に移動する。そので示す位置と
で示す位置が同じことから明らかなように、複数鍵を押
鍵している間はその位置にとどまる。で示す位置は
で示す位置と同じである。このことから、複数鍵を離鍵
後は、で示す位置からで示す位置に移動する。
【0065】上述したように、手パートを移動させた
り、各指パートの状態を変化させることで手指の動作を
動画で表現している。図9は、実際の表示例を示す図で
ある。図9に示すように、実際には、右手だけでなく、
左手も表示している。押鍵中か否かをユーザが判りやす
いように、押鍵中の鍵は他と表示色を変えて表現してい
る。その表示色の変更は、押鍵時(発音開始時)から離
鍵時(消音時)の間だけ行っても良いが、押鍵すべき鍵
を事前に通知する、或いは離鍵すべき鍵を事前に通知す
る、といったことのために、表示色を複数の色に変更す
るようにしても良い。なお、特に詳細な説明は省略する
が、本実施の形態では、手指の各パートのサイズの変
更、即ち拡大、或いは縮小や、各パートの表示の透過表
示、或いはワイヤーフレーム表示への変更、表示角度の
変更、なども行えるようになっている。ユーザが実際に
操作する鍵盤を備えている場合には、ユーザの演奏速度
に応じて、楽音・運指データの再生速度(演奏動作の表
示速度を含む)を変更するようにしても良い。
【0066】図8に示すような手指パートの動作表示
は、ユーザが操作部106を操作して、RAM103に
格納された楽音・運指データの再生を指示した場合に行
われる。その指示をユーザが行うと、CPU101は、
楽音・運指データ(ここでは運指データを除いた部分で
ある楽音データのみが対象)とそれを基に生成した動作
制御データBを並行に処理する。それにより、楽音の発
音と同期した手指の各パートの動作を表示部105に表
示させる。本実施の形態では、それ以外に、楽音データ
から演奏内容を示す楽譜を表示するようになっている。
【0067】図10は、本実施の形態による演奏動作表
示装置の機能ブロック図である。図10に示すように、
上記演奏動作表示装置は、機能的に見て、基本的に、楽
音・運指データから動作制御データを生成するデータ生
成部801、及び楽音・運指データや動作制御データを
再生するリアルタイム処理部802から構成されてい
る。データ生成部801において、楽音・運指データか
ら動作制御データを生成するのは動作制御データ生成部
803によって行われる。そのデータ生成部801に
は、図1において、例えばCPU101、ROM10
2、RAM103、データ入力部104、表示部10
5、及び操作部106が対応する。
【0068】一方のリアルタイム処理部802は、デー
タ生成部801が生成した動作制御データや楽音データ
を処理するデータ送出部(シーケンス処理部)804、
そのデータ送出部804から送られた動作制御データに
従って手指の動作を表示する動作表示部805、それか
ら送られた楽音データに従って楽音を放音する音減歩8
06、及びそれから送られた楽音データに応じて楽譜を
表示する楽譜表示部807を備えたものである。図1に
おいて、例えばCPU101、ROM102、RAM1
03、表示部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の値を代入した後、その変数tktim
eに、それまでの値に変数peが指定する単位楽音デー
タの時間データの値を加算した値を代入する。続くステ
ップ904では、その変数peの値が指定する単位楽音
データが表すイベントがノートオンイベントか否か判定
する。その単位楽音データがノートオンイベントを表す
ものであった場合、判定はYESとなってステップ90
5に移行し、そうでない場合には、判定は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となってステップ9
07に移行し、そうでない場合には、判定はNOとなっ
て後述するステップ909に移行する。なお、上記押鍵
の判定は、楽音・運指データが表す仮想的な演奏を想定
しての判定である。以降も便宜的に、特に断らない限
り、その想定で説明を行うことにする。
【0076】ステップ907では、手パートのy軸上の
位置を決定する手のy位置処理を実行する。続くステッ
プ908では、手パートのz軸上の位置を決定する手の
z位置処理を実行する。その後に移行するステップ90
9では、他のイベントとの関係を考慮しつつ、単位楽音
データが表すノートオンイベントに応じて手指の各パー
トを動作させる内容を決定するノートオンメイン処理を
実行する。そのノートオンメイン処理を実行した後はス
テップ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、9
12、及び後述するステップ917では、それぞれ、特
定の動作が伴うパラメータ(変数、或いは配列変数の要
素)に着目したパート動作データの生成が行われ、それ
が単位動作データAに追加される。それにより、ステッ
プ913に移行時には、手指の各パートをどのような状
態に移行させるかが確定するようになっている。このた
め、ステップ913では、単位動作データAから段階動
作データを生成し、それをRAM103に格納すること
を行っている。その生成は、本実施の形態では、動作時
間データで指定される時間間隔を複数に区切り、それま
での状態と移行後の状態の間を直線で補間することで行
っている。また、そのステップ913では、ノートオン
イベント、及びノートオフイベント以外のイベントを表
す単位楽音データの処理も行っている。
【0080】一方、上記ステップ904の判定がNOと
なって移行するステップ915では、変数peの値で指
定される単位楽音データがノートオフイベントを表して
いるか否か判定する。その単位楽音データがノートオフ
イベントを表している場合、判定はYESとなってステ
ップ916に移行する。そうでない場合には、上記ステ
ップ913に移行する。
【0081】ステップ916では、変数peの値で指定
される単位楽音データを基に、各種の設定を行う。それ
により、変数figに指番号データの値を代入し、変数
noteには音高データ(鍵盤号)を代入するととも
に、それらの値から単位動作データAを生成して保存す
る。そのような代入が終了した後はステップ906に移
行する。なお、ここで生成される単位動作データAは、
時間データ、変数figの値で指定される配列要素no
te[fig]を指定する変数指定データ、及びその配
列要素note[fig]の値データ(ここでは離鍵な
ので0である)である。
【0082】それに続くステップ917では、ノートオ
フイベント時に手指の各パートを動作させるための動作
制御データ(単位動作データAに追加するパート動作デ
ータ)を生成するノートオフメイン処理を実行する。そ
の後は上記ステップ910に移行する。
【0083】上述したようにして、動作制御データ生成
処理では、動作制御データの生成の対象とする単位楽音
データ、及びそれに付加した指番号データを順次、変更
しながら動作制御データを生成する。それにより、動作
制御データは演奏上のイベント単位で生成するようにな
っている。
【0084】次に、上記動作制御データ生成処理内で実
行される各種サブルーチン処理について、図12〜図2
4に示すその動作フローチャートを参照しながら詳細に
説明する。図12は、上記ステップ907として実行さ
れる手のy位置処理の動作フローチャートである。サブ
ルーチン処理では、始めに図12を参照して、手のy位
置処理について詳細に説明する。
【0085】基点301のy軸上の位置を示す値は、変
数hynewに保持されている。この手のy位置処理で
は、基点301を次に配置すべき位置を求め、その位置
を示す値を変数hynewに代入することが行われる。
先ず、ステップ1001では、初期設定を行い、変数h
ynewの値を変数hynowに代入する。続くステッ
プ1002では、現在、対象としている単位楽音デー
タ、及び指番号データ以降のデータを読み出し、次に全
ての鍵が離鍵するまでに親指か小指が黒鍵を押鍵するよ
うになっているか否か判定する。次に全ての鍵が離鍵す
るまでに、0、或いは4を指番号データとする単位楽音
データが存在していた場合、判定はYESとなってステ
ップ1005に移行する。そうでない場合には、判定は
NOとなってステップ1003に移行する。
【0086】ステップ1003では、変数hynowに
位置YPOS1(図4参照)を示す値が代入されている
か否か判定する。その値が変数hynowに代入されて
いた場合、判定はYESとなり、ここで一連の処理を終
了する。そうでない場合には、判定はNOとなり、ステ
ップ1004で変数hynewに位置YPOS2を示す
値を代入し、直前の単位楽音データの処理タイミングか
ら今回の単位楽音データの処理タイミングまでに位置Y
POS1への移動を完了させるパート動作データを生成
し、それを単位動作データAに追加した後、一連の処理
を終了する。
【0087】一方、ステップ1002の判定がYESと
なって移行するステップ1005でも、変数hynow
に位置YPOS1(図4参照)を示す値が代入されてい
るか否か判定する。その値が変数hynowに代入され
ていなかった場合、判定はNOとなり、ここで一連の処
理を終了する。そうでない場合には、判定はYESとな
り、ステップ1006で変数hynewに位置YPOS
1を示す値を代入し、直前の単位楽音データの処理タイ
ミングから今回の単位楽音データの処理タイミングまで
に位置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では、変数hzn
owに位置ZPOS1を示す値が代入されているか否か
判定する。その値が変数hznowに代入されていた場
合、判定はYESとなり、ここで一連の処理を終了す
る。そうでない場合には、即ち手パートの基点301が
位置ZPOS2に位置している場合には、判定はNOと
なり、ステップ1102に移行して、変数tkoldの
値が示すタイミングから変数tktimeの値が示すタ
イミングまでに、基点301を位置ZPOS2から位置
ZPOS1に移動させるパート動作データを作成し、そ
れを単位動作データAに追加する形でRAM103に格
納する。それが終了した後に一連の処理を終了する。
【0092】図14は、図11に示す動作制御データ生
成処理内でステップ909として実行されるノートオン
メイン処理の動作フローチャートである。次に、図14
を参照して、その処理について詳細に説明する。現在、
処理対象としている単位楽音データを実際に処理、即ち
再生する際に、和音(コード)が発音中か否かを示す値
(「TRUE」或いは「FALSE」)は変数bcho
rdに保持されている。和音が発音中であれば、その和
音を構成する楽音のなかで最後に発音が開始する楽音の
単位楽音データのアドレスは変数pchordendに
保持されている。ノートオンメイン処理では、そのよう
な変数を含む各種変数の値が参照される。
【0093】先ず、ステップ1201では、変数bch
ordの値が「TRUE」か否か判定する。処理対象と
している単位楽音データを再生する状況で和音を発音さ
せているとみなしていた場合、その変数bchordに
は「TRUE」が代入されていることから、判定はYE
Sとなってステップ1207に移行し、そうでない場合
には、判定はNOとなってステップ1202に移行す
る。
【0094】ステップ1202では、変数ballof
fの値が「TRUE」か否か判定する。処理対象として
いる単位楽音データを再生する状況で押鍵されている鍵
が存在している場合、判定はNOとなってステップ12
06に移行する。そうでない場合には、判定はYESと
なってステップ1203に移行する。
【0095】ステップ1203では、処理対象としてい
る単位楽音データ、及びそれに続く単位楽音データによ
って和音が発音されるか否か判定する和音判定処理を実
行する。その和音判定処理において、それらの単位楽音
データによって和音が発音されると判定すると、変数b
chordには「TRUE」が代入されることになる。
その実行後は、ステップ1204に移行する。
【0096】ステップ1204では、変数bchord
の値が「TRUE」か否か判定する。上記和音判定処理
を実行した結果、新たに和音が発音されるとみなした場
合、判定はYESとなり、ステップ1205でその和音
を発音させる動作の内容を決定する和音動作処理を実行
した後、一連の処理を終了する。そうでない場合には、
判定はNOとなり、ステップ1206で押鍵動作の内容
を決定するノートオン動作処理を実行した後、一連の処
理を終了する。
【0097】一方、上記ステップ1201の判定がYE
Sとなって移行するステップ1207では、変数pch
ordendの値が変数peの値と等しいか否か判定す
る。変数peの値が指定する単位楽音データ、即ち現
在、処理対象としている単位楽音データが、和音を構成
しているとみなす楽音のなかで最後に発音される楽音の
発音開始を指示するものであった場合、判定はYESと
なり、ステップ1208で変数bchordに「FAL
SE」、変数pchordendにNULL(空値)を
それぞれ代入した後、一連の処理を終了する。そうでな
い場合には、判定はNOとなって、ここで一連の処理を
終了する。
【0098】このように、ノートオンメイン処理では、
単位楽音データが発音開始を指示する楽音が和音を構成
しているか否かにより処理を分岐させている。それによ
り、和音を発音させるのか単に楽音を発音させるのかに
応じて、手指の各パートを動作させるようにしている。
【0099】ここで、上記ノートオンメイン処理内で実
行される各種サブルーチン処理について、図15〜図1
8を参照して詳細に説明する。図15は、上記ステップ
1203として実行される和音判定処理の動作フローチ
ャートである。ノートオンメイン処理内で実行されるサ
ブルーチン処理では、図15を参照して、始めに和音判
定処理について詳細に説明する。
【0100】先ず、ステップ1301では、初期設定を
行う。その初期設定を行うことにより、変数tknex
tには、変数peの値で指定される単位楽音データ以降
で最初に楽音の発音開始を指示する単位楽音データの処
理タイミングを絶対時間で示す値が代入され、変数tk
nextoffには、変数peの値で指定される単位楽
音データ以降で最初に楽音の消音を指示する単位楽音デ
ータの処理タイミングを絶対時間で示す値が代入され
る。
【0101】ステップ1301に続くステップ1302
では、変数tknextの値が、変数tktimeの値
に変数tkchordの値を加算した値より小さいか否
か判定する。その変数tkchordには、和音を構成
しているか否か判定するうえで基準となる、楽音間の発
音開始間隔を示す値が代入されている。このことから、
その間隔以内に次の楽音の発音が開始する場合、判定は
YESとなってステップ1303に移行し、そうでない
場合には、判定はNOとなって、ここで一連の処理を終
了する。
【0102】ステップ1303では、変数tknext
offの値が、変数tktimeの値に変数tkcho
rdの値を加算した値より大きいか否か判定する。変数
tkchordの値が示す時間が経過する前に、消音さ
れる楽音が存在していない場合、判定はYESとなり、
ステップ1304で変数bchordに「TRUE」を
代入した後、一連の処理を終了する。そうでない場合に
は、判定はNOとなり、ここで一連の処理を終了する。
【0103】このように、本実施の形態では、変数tk
chordの値が示す時間内に複数の押鍵(ノートオン
イベント)があり、且つその時間内に離鍵(ノートオフ
イベント)が存在していなければ、その時間内に発音開
始される楽音は和音を構成しているとみなすようにして
いる。
【0104】図16は、図14に示すノートオンメイン
処理内でステップ1205として実行される和音動作処
理の動作フローチャートである。次に図16を参照し
て、和音動作処理について詳細に説明する。先ず、ステ
ップ1401では、初期化処理を実行する。その初期化
処理を実行することにより、変数tktime0には、
変数tktimeの値が代入され、変数pe0には変数
peの値が代入され、変数pchordendにはNU
LLが代入される。ステップ1401に続くステップ1
402以降は、変数pe0の値を順次、インクリメント
しながら、和音とみなす楽音の範囲の特定や、その和音
を鳴らす動作内容を決定するための処理が行われる。
【0105】ステップ1402では、楽音・運指データ
が終了したか否か判定する。変数pe0の値が指定する
データが楽音・運指データの最後に位置するエンドデー
タであった場合、判定はYESとなってステップ141
0に移行し、そうでない場合には、判定はNOとなって
ステップ1403に移行する。
【0106】ステップ1403では、変数pe0の値が
変数peの値と等しいか否か判定する。それらの値が等
しい場合、判定はYESとなってステップ1405に移
行する。そうでない場合には、判定はNOとなり、ステ
ップ1404で変数tktime0に、それまでの値に
変数pe0の値が指定する単位楽音データの時間データ
の値を加算した値を代入した後、そのステップ1405
に移行する。そのようにして、変数tktime0に
は、変数peの値が指定する単位楽音データ以降の単位
楽音データを処理すべきタイミングを絶対時間で示す値
が代入される。
【0107】ステップ1405では、変数tktime
0の値が、変数tktimeの値に変数tkchord
の値を加算した値よりも小さいか否か判定する。変数p
e0、及び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から位置Z
POS2に移動していく動作である)を表現するパート
動作データを作成する。その動作データを作成すること
により、手パートの基点301が、変数tkstart
0の値が示すタイミングで移動を開始し、変数tkti
meの値が示すタイミングで位置YPOS2への移動が
終了するようにさせる。そのようなパート動作データを
単位動作データAに追加した後、一連の処理を終了す
る。
【0111】上記変数tkstart0の値が示すタイ
ミングは、和音を構成する楽音のなかで最初に発音され
る楽音を発音させる指パートの動作を開始するタイミン
グか、或いは各指パートの離鍵から押鍵に移行するまで
の時間が比較的に長ければ、変数tktimeの値か
ら、押鍵動作を開始してから押鍵するまでの基準時間を
示す値を引いた値が示すタイミングである。それによ
り、和音を鳴らす状況に応じて、それを鳴らすための手
指の各パートの動作を異ならせるようにしている。図8
に示す例では、変数tkstart0に前者の値が代
入、即ちパート動作データ中の動作時間データにその値
に対応する時間を表す値が設定された結果、親指パート
の押鍵動作の開始に合わせて手パートのz軸上の移動が
開始し、そのz軸上の移動が「D#」の楽音の発音開始
時に終了していることを表している。なお、その基準時
間を示す値は変数tkcostに代入されている。離鍵
動作を開始してからその動作が完了するまでの基準時間
を示す値は変数tkoffcostに代入されている。
【0112】次に、上記ステップ1408、或いは図1
4に示すノートオンメイン処理内でステップ1206と
して実行されるノートオン動作処理処理について、図1
7、及び図18に示すその動作フローチャートを参照し
て詳細に説明する。なお、この処理内では、単位楽音デ
ータに付加された指番号データは変数figに、その単
位楽音データ中の音高データは変数noteに代入され
ている。
【0113】先ず、ステップ1501では、初期設定を
行う。その初期設定では、変数figの値を指番号デー
タとして付加された、ノートオフイベントを表す直前の
単位楽音データの処理タイミングを絶対時間で示す値を
求め、その求めた値を変数tkfoffに代入すること
が行われる。
【0114】ステップ1501に続くステップ1502
では、変数tktimeの値から変数tkfoffの値
を引いた値が、変数tkcostの値に変数tkoff
costの値を加算した値より小さいか否か判定する。
即ち変数figで指定される指パートの離鍵動作を開始
させてからその指パートを押鍵させるまでの時間が、離
鍵動作の基準時間と押鍵動作の基準時間を足した時間よ
りも短いか否か判定する。前者の時間が後者の時間より
も長い場合、判定はNOとなり、ステップ1503で変
数tkstartに、変数tktimeの値から変数t
koffcostの値を引いた値を代入した後、ステッ
プ1504に移行する。そうでない場合には、即ち離鍵
動作、或いは押鍵動作を基準時間で行わせる余裕がない
場合には、判定はYESとなってステップ1506に移
行する。
【0115】ステップ1504では、変数tkend
に、押鍵動作が終了するタイミングを示す値として変数
tktimeの値を代入する。続く図18のステップ1
508では、ノートオン中の楽音は1つ以下か否か判定
する。鍵を押鍵させている指パートが2つ以上であった
場合、判定はNOとなってステップ1509に移行す
る。そうでない場合には、判定はYESとなってステッ
プ1510に移行する。
【0116】ステップ1509では、変数figの値で
指定される指パートが、変数tkstartの値が示す
タイミングで変数noteの値が示す鍵に対する押鍵動
作を開始し、変数tkendの値が示すタイミングでそ
の動作を完了、即ち押鍵する動作を終了させるためのパ
ート動作データを作成し単位動作データAに追加する。
そのパート動作データ中の動作時間データの値が示す時
間は、変数tkoffcostの値が示す時間である。
その作成・追加を行った後に、一連の処理を終了する。
【0117】一方、ステップ1510〜1519では、
直前に処理した単位楽音データ、及びそれに付加された
指番号データを参照して、指くぐり、或いは指またぎと
いった指パートを交差させる形での動作を行わせる必要
性の有無を判定し、その判定結果に応じてパート動作デ
ータを作成し単位動作データAに追加するための処理が
行われる。
【0118】先ず、ステップ1510では、直前に処理
した単位楽音データに付加された指番号データを変数f
igaに、その単位楽音データ中の音高データを変数n
oteaにそれぞれ代入する。その代入後に移行するス
テップ1511では、変数note、noteaに音高
データが代入された楽音は共に和音の構成音ではないか
否か判定する。それらの楽音のうちの一方でも和音の構
成音であった場合、即ち和音を鳴らすためにその構成音
を発音させている、或いは和音を鳴らした後、再度、和
音を鳴らすような場合、判定はNOとなってステップ1
509に移行して、それを実行する。そうでない場合に
は、判定はYESとなってステップ1512に移行す
る。
【0119】ステップ1512では、変数noteaに
音高データが代入された楽音をノートオフさせるタイミ
ングが変数noteに音高データが代入された楽音をノ
ートオンさせるタイミングより後になっているか、即ち
それら2つの楽音を発音させる期間が重なっているか、
或いは前者をノートオフさせてから後者をノートオンさ
せる時間間隔が所定時間内か否か判定する。それら2つ
の条件のうちの何れもが満たされていない場合、判定は
NOとなって上記ステップ1509に移行する。そうで
ない場合には、即ちそれら2つの条件のうちの一方が満
たされている場合には、判定はYESとなってステップ
1513に移行する。
【0120】ステップ1513では、変数fig、fi
gaにそれぞれ代入された指番号データで指定される指
パートが親指と、人差し指、中指、及び薬指のうちの何
れかの関係となっているか否か判定する。その関係が満
たされていない場合、判定はNOとなって上記ステップ
1509に移行する。そうでない場合には、判定はYE
Sとなってステップ1514に移行する。
【0121】ステップ1514では、変数figの指番
号データで指定されるのが親指で変数noteの音高デ
ータは変数noteaの音高データより高い音高を示し
ているか否か判定する。変数figの指番号データで指
定されるのが親指であり、その親指に、現在、ノートオ
ンさせている、或いは直前にノートオフさせた鍵の音高
よりも高い音高の鍵をノートオンさせる場合、判定はY
ESとなってステップ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では、変数fi
gの値で指定される指パートを、親指パートの上をまた
がせて変数noteの値が示す鍵を押鍵させる動作を変
数tkstartの値が示すタイミングで開始させ、変
数tkendの値が示すタイミングでその動作を完了、
即ち押鍵する動作を終了させるためのパート動作データ
を作成し単位動作データAに追加する。そのパート動作
データ中の動作時間データの値が示す時間は、変数tk
offcostの値が示す時間である。その作成・追加
を行った後に、一連の処理を終了する。
【0125】このようにして、本実施の形態では、指く
ぐり、或いは指またぎを行わせて次の鍵を押鍵させるべ
き状況か否か判定し、その判定結果に応じてパート動作
データを作成している。それにより、そのような指パー
トを交差させる動作を含め、演奏動作を表示させてい
る。
【0126】手パートを移動させなければ変数figの
値で指定される指パートで鍵を押鍵させることができな
いこともある。各指パートの回転角frzは、その手パ
ートの位置が確定していなければ確定させることはでき
ない。このようなことから、ここでは単に押鍵する動作
を行わせるためのパート動作データだけを作成してい
る。指パートを横に動作させるためのパート動作データ
は、図11に示す動作制御データ生成処理内のステップ
911の手のx位置処理を実行した際に、必要に応じて
作成する。ここで作成したパート動作データも必要に応
じて修正する。そのために、上記変数kuguru、m
ataguは、手のX位置処理の実行時に参照される。
【0127】図17のステップ1502の判定がYES
となって移行するステップ1505では、変数tkti
meの値から変数tkfoffの値を引いた値に0.2
を掛けた値が、変数tkoffcostの値よりも大き
いか否か判定する。離鍵開始から次の押鍵までの時間に
0.2を掛けて得られる時間が、離鍵動作の基準時間よ
りも長い場合、判定はYESとなり、ステップ1506
で変数tkstartに、変数tkfoffの値に変数
tkoffcostの値を加算した値を代入した後、上
記ステップ1504に移行する。そうでない場合には、
判定はNOとなり、ステップ1507で変数tksta
rtに、変数tkoffcostの値に0.8を掛けた
値に変数tkfoffの値を加算した値を代入した後、
ステップ1504に移行する。
【0128】上記ステップ1506、或いは1507を
実行した後にステップ1504に移行したのであれば、
ステップ1509、1516、或いは1519を実行し
た際に設定される動作時間データの値は、ステップ15
06からステップ1504に移行したのであれば、変数
tktimeの値から変数tkfoffの値を減算し、
その減算結果から更に変数tkoffcostの値を減
算した値である。ステップ1507からステップ150
4に移行したのであれば、変数tktimeの値から変
数tkfoffの値を減算し、その減算結果から更に、
変数tkoffcosutの値に0.8を掛けた値を減
算した値である。
【0129】直前に処理した単位楽音データが表すイベ
ントがノートオフイベントであり、ステップ1516、
或いは1519を実行したのであれば、その単位楽音デ
ータを処理した際に、くぐらせる、或いはまたがせる指
パートの動作を開始させるパート動作データを生成する
ようになっている。このため、ステップ1516、及び
1516では、その生成したパート動作データで表され
る動作を継続させる形でパート動作データを作成してい
る。
【0130】このように、同じ指パートによる離鍵、押
鍵を短い時間内に行わせる場合、離鍵動作に要する時
間、及び押鍵動作に要する時間の少なくとも一方を調整
して、それらの動作を表現するようにしている。図14
に示すノートオンメイン処理では、上述した各種サブル
ーチン処理が実行される。それにより、指パートを押鍵
させる動作を表現するためのパート動作データをサブル
ーチン処理単位で生成し単位動作データAに追加してい
る。それらのパート動作データでは、変数hy、hz、
配列変数hrx1〜3のうちの何れかが値の変更対象で
ある。
【0131】図19は、図11に示す動作制御データ生
成処理内でステップ917として実行されるノートオフ
メイン処理の動作フローチャートである。次に、図19
を参照して、ノートオフメイン処理について詳細に説明
する。現在、処理対象としている単位楽音データを実際
に処理、即ち再生する際に、消音すべき和音(コード)
があるか否かを示す値(「TRUE」或いは「FALS
E」)は変数bchordoffに保持されている。そ
の和音があれば、その和音を構成する楽音のなかで最後
に消音する楽音の単位楽音データのアドレスは変数pc
hordendoffに保持されている。ノートオフメ
イン処理では、そのような変数を含む各種変数の値が参
照される。
【0132】先ず、ステップ1601では、変数bch
ordoffの値が「TRUE」か否か判定する。処理
対象としている単位楽音データを再生する状況で消音す
べき和音があるとみなしていた場合、その変数bcho
rdoffには「TRUE」が代入されていることか
ら、判定はYESとなってステップ1606に移行し、
そうでない場合には、判定はNOとなってステップ16
02に移行する。
【0133】ステップ1602では、処理対象としてい
る単位楽音データ、及びそれに続く単位楽音データによ
って和音が消音、即ちその和音の構成音が全て消音され
るか否か判定する和音オフ判定処理を実行する。その和
音オフ判定処理において、それらの単位楽音データによ
って和音が消音されると判定すると、変数bchord
offには「TRUE」が代入されることになる。その
実行後は、ステップ1603に移行する。
【0134】ステップ1603では、変数bchord
offの値が「TRUE」か否か判定する。上記和音オ
フ判定処理を実行した結果、和音を消音させると決定し
た場合、判定はYESとなり、ステップ1604でその
和音を消音させる動作の内容を決定する和音オフ動作処
理を実行した後、一連の処理を終了する。そうでない場
合には、判定はNOとなり、ステップ1605で離鍵動
作の内容を決定するノートオフ動作処理を実行した後、
一連の処理を終了する。
【0135】一方、上記ステップ1601の判定がYE
Sとなって移行するステップ1606では、変数pch
ordendoffの値が変数peの値と等しいか否か
判定する。変数peの値が指定する単位楽音データ、即
ち現在、処理対象としている単位楽音データが、和音を
構成する楽音のなかで最後に消音される楽音の消音を指
示するものであった場合、判定はYESとなり、ステッ
プ1607で変数bchordoffに「FALS
E」、変数pchordendoffにNULLをそれ
ぞれ代入した後、一連の処理を終了する。そうでない場
合には、判定はNOとなって、ここで一連の処理を終了
する。
【0136】このように、ノートオフメイン処理では、
単位楽音データが消音を指示する楽音が和音を構成して
いるか否かにより処理を分岐させている。それにより、
和音を構成する楽音を消音させるのか単に楽音を消音さ
せるのかに応じて、手指の各パートを動作させる内容を
決定している。
【0137】ここで、上記ノートオフメイン処理内で実
行される各種サブルーチン処理について、図20〜図2
3を参照して詳細に説明する。図20は、上記ステップ
1602として実行される和音オフ判定処理の動作フロ
ーチャートである。ノートオフメイン処理内で実行され
るサブルーチン処理では、図20を参照して、始めに和
音オフ判定処理について詳細に説明する。
【0138】先ず、ステップ1701では、初期設定を
行う。その初期設定を行うことにより、変数tknex
tには、変数peで指定される単位楽音データ以降で最
初に楽音の発音開始を指示する単位楽音データの処理タ
イミングを絶対時間で示す値が代入され、変数tkne
xtoffには、変数peで指定される単位楽音データ
以降で最初に楽音の消音を指示する単位楽音データの処
理タイミングを絶対時間で示す値が代入される。
【0139】ステップ1701に続くステップ1702
では、変数tknextoffの値が、変数tktim
eの値に変数tkchordの値を加算した値より小さ
いか否か判定する。変数tkchordの値が示す時間
が経過する前に、消音される楽音が存在していない場
合、判定はNOとなり、ここで一連の処理を終了する。
そうでない場合には、判定はYESとなってステップ1
703に移行する。
【0140】ステップ1703では、変数tknext
の値が、変数tktimeの値に変数tkchordの
値を加算した値より大きいか否か判定する。変数tkc
hordの値が示す時間が経過する前に、次の楽音の発
音が開始する場合、判定はNOとなり、ここで一連の処
理を終了する。そうでない場合には、判定はYESとな
り、ステップ1704で変数bchordoffに「T
RUE」を代入した後、一連の処理を終了する。
【0141】このように、本実施の形態では、変数tk
chordの値が示す時間内に複数の楽音の消音(ノー
トオンイベント)があり、且つその時間内に発音開始す
る楽音(ノートオフイベント)が存在していなければ、
和音の構成音とみなした楽音は消音すべき状況になった
としている。
【0142】図21は、図19に示すノートオフメイン
処理内でステップ1604として実行される和音オフ動
作処理の動作フローチャートである。次に図21を参照
して、和音オフ動作処理について詳細に説明する。先
ず、ステップ1801では、初期化処理を実行する。そ
の初期化処理を実行することにより、変数tktime
0には、変数tktimeの値が代入され、変数pe0
には変数peの値が代入され、変数pchordend
offにはNULLが代入される。ステップ1801に
続くステップ1802以降では、変数pe0の値を順
次、インクリメントしながら、和音とみなす楽音の範囲
の特定や、その和音を消音させる動作内容を決定するた
めの処理が行われる。
【0143】ステップ1802では、楽音・運指データ
が終了したか否か判定する。変数pe0の値が指定する
データが楽音・運指データの最後に位置するエンドデー
タであった場合、判定はYESとなってステップ181
0に移行し、そうでない場合には、判定はNOとなって
ステップ1803に移行する。
【0144】ステップ1803では、変数pe0の値が
変数peの値と等しいか否か判定する。それらの値が等
しい場合、判定はYESとなってステップ1805に移
行する。そうでない場合には、判定はNOとなり、ステ
ップ1804で変数tktime0に、それまでの値に
変数pe0の値が指定する単位楽音データの時間データ
の値を加算した値を代入した後、そのステップ1805
に移行する。そのようにして、変数tktime0に
は、変数peの値が指定する単位楽音データ以降の単位
楽音データを処理すべきタイミングを絶対時間で示す値
が代入される。
【0145】ステップ1805では、変数tktime
0の値が、変数tktimeの値に変数tkchord
の値を加算した値よりも小さいか否か判定する。変数p
e0、及びpeの値がそれぞれ指定する単位楽音データ
の各処理タイミングが、変数tkchordの値で指定
される時間内でなかった場合、判定はNOとなって上記
ステップ1810に移行する。そうでない場合には、判
定はYESとなってステップ1806に移行する。
【0146】ステップ1806では、変数pe0の値が
指定する単位楽音データは楽音の消音(ノートオフイベ
ント)を表すものであるか否か判定する。その単位楽音
データがノートオフイベントを表していた場合、判定は
YESとなり、ステップ1807で変数pchorde
ndoffに変数pe0の値を代入し、次にステップ1
808でノートオフ動作処理を実行した後、ステップ1
809に移行する。そうでない場合には判定はNOとな
り、そのステップ1809に移行する。
【0147】ステップ1809では、変数pe0に次の
単位楽音データのアドレスを代入する。それを行った
後、上記ステップ1802に戻る。このように、ステッ
プ1802〜1809で形成される処理ループをステッ
プ1802の判定がYES、或いはステップ1805の
判定がNOとなるまで繰り返し実行することにより、変
数pchordendoffには、和音を構成するとみ
なす楽音のなかで最後に消音する楽音の単位楽音データ
のアドレス値が代入されることになる。
【0148】一方、ステップ1802の判定がYES、
或いはステップ1805の判定がNOとなって移行する
ステップ1810では、手パートがz軸上を移動してい
く動作(ここでは図4に示す位置ZPOS2から位置Z
POS1に移動していく動作である)内容を指定するパ
ート動作データを作成する。その動作データの作成は、
変数tktimeの値が示すタイミングで移動を開始
し、所定の速度で位置ZPOS1に達するように行う。
そのようにしてパート動作データを生成し単位動作デー
タAに追加した後、一連の処理を終了する。
【0149】和音の消音動作内容として、手パートをz
軸上における移動内容を指定するパート動作データは上
述したようにして生成される。それにより、図8に示す
例では、親指パートが「D#」の音高が割り当てられた
鍵の離鍵開始に合わせて、手パートのz軸上の移動が開
始している。
【0150】次に、上記ステップ1808、或いは図1
9に示すノートオフメイン処理内でステップ1605と
して実行されるノートオフ動作処理処理について、図2
2、及び図23に示すその動作フローチャートを参照し
て詳細に説明する。なお、この処理内では、単位楽音デ
ータに付加された指番号データは変数figに、その単
位楽音データ中の音高データは変数noteに代入され
ている。
【0151】先ず、ステップ1901では、初期設定を
行う。その初期設定では、変数peの値で指定される単
位楽音データ以降で、変数figの値が指番号データと
して付加されているノートオンイベントを表す単位楽音
データ中の音高データを抽出し、その抽出した音高デー
タを変数nextnoteに代入することなどが行われ
る。
【0152】ステップ1901に続くステップ1902
では、変数figの値が指定する指パートが押鍵に使用
中か否か判定する。変数noteの値で指定される楽音
を実際には発音させないような場合、即ちその楽音の発
音開始を指示する単位楽音データが存在していない、或
いはその単位楽音データが存在していても、それに変数
figの値が指番号データとして付加されていないよう
な場合、判定はNOとなり、ここで一連の処理を終了す
る。そうでない場合には、判定はYESとなってステッ
プ1903に移行する。
【0153】ステップ1903では、変数noteの値
が変数nextnoteの値と等しいか否か判定する。
それらの値が等しくない場合、即ちユーザがそれまで押
鍵していた鍵とは異なる鍵を同じ指で押鍵しなければな
らない場合、判定はNOとなって図23のステップ19
05に移行する。そうでない場合には、判定はYESと
なってステップ1904に移行し、変数figの値で指
定される指パートが、変数tktimeの値で指定され
るタイミングで単に離鍵動作を開始させるパート動作デ
ータを生成した後、一連の処理を終了する。その動作デ
ータでは、離鍵動作を開始させる指パートと隣の指パー
トとの間を広げさせていても、その間を狭くさせること
は行わせない。
【0154】例えば押鍵中の人差し指を離鍵した直後
に、親指でその鍵よりも高音の鍵を押鍵する場合、その
人差し指を離鍵させる前に親指の指くぐり動作を開始さ
せる必要がある。このことから、図23のステップ19
05〜1917では、次の押鍵に向けて指くぐり、或い
は指またぎさせる動作を開始させる必要性の有無を判定
し、その判定結果に応じてパート動作データを作成し単
位動作データAに追加するための処理が行われる。
【0155】先ず、ステップ1905では、変数fig
の値で指定される指パートのみを押鍵させているか否か
判定する。それ以外の指パートも押鍵させていた場合、
即ち複数の指パートを押鍵させていた場合、判定はNO
となってステップ1906に移行する。そうでない場合
には、判定はYESとなってステップ1907に移行す
る。
【0156】ステップ1906では、変数figの値で
指定される指パートが、変数tktimeの値で指定さ
れるタイミングで離鍵動作を開始させるパート動作デー
タを生成した後、一連の処理を終了する。その動作デー
タは、離鍵動作を開始させる指パートと隣の指パートと
の間を広げさせていれば、その間を狭くさせて弛緩状態
に戻す動作も行わせるものである。
【0157】このように、本実施の形態では、指パート
の離鍵後の状態は、それを次の押鍵に使用するか否かを
考慮して決定している。それにより、次の押鍵に使わな
い指パートをいつまでも広げた状態にしておくようなこ
とは回避させている。このため、指パートを離鍵開始時
から次の押鍵終了時まで単に動かすようなことは無くな
る。その結果、より自然な形で演奏動作を表現できるだ
けでなく、押鍵イベント、或いは離鍵イベントを発生さ
せる指パートの動作や、その動作に伴う他の指パートの
動作をより目立たせることができる。
【0158】一方、ステップ1907では、次に処理す
る単位楽音データが表すイベントはノートオンイベント
か否か判定する。そのデータが表すイベントがノートオ
ンイベントでなかった場合、判定はNOとなって上記ス
テップ1906に移行する。そうでない場合には、判定
はYESとなってステップ1908に移行する。
【0159】ステップ1908では、次に処理する単位
楽音データに付加された指番号データを変数figa
に、その単位楽音データ中の音高データを変数note
aにそれぞれ代入する。その代入後に移行するステップ
1909では、変数note、noteaに音高データ
が代入された楽音は共に和音の構成音ではないか否か判
定する。それらの楽音のうちの一方でも和音の構成音で
あった場合、判定はNOとなって上記ステップ1906
に移行する。そうでない場合には、判定はYESとなっ
てステップ1910に移行する。
【0160】ステップ1910では、変数noteaに
音高データが代入された楽音をノートオンさせるタイミ
ングと変数noteに音高データが代入された楽音をノ
ートオフさせるタイミングの時間間隔が所定時間内か否
か判定する。変数figの値で指定される指パートを離
鍵させた後、変数figaの値で指定される指パートを
直ちに押鍵させるような場合、判定はYESとなってス
テップ1911に移行する。そうでない場合には、判定
はNOとなって上記ステップ1906に移行する。
【0161】ステップ1911では、変数fig、fi
gaにそれぞれ代入された値(指番号データ)で指定さ
れる指パートが親指と、人差し指、中指、及び薬指のう
ちの何れかの関係となっているか否か判定する。その関
係が満たされていない場合、判定はNOとなって上記ス
テップ1906に移行する。そうでない場合には、判定
はYESとなってステップ1912に移行する。
【0162】ステップ1912では、変数figaの指
番号データで指定されるのが親指で変数noteaの音
高データは変数noteの音高データより高い音高を示
しているか否か判定する。変数figaの指番号データ
で指定されるのが親指であり、その親指に、今回、離鍵
させる鍵の音高よりも高い音高の鍵を押鍵させる場合、
判定はYESとなってステップ1913に移行する。そ
うでない場合には、判定はNOとなってステップ191
5に移行する。
【0163】ステップ1913では、人差し指パートな
どの指パートの下をくぐらせて親指パートに次に押鍵す
べき鍵を押鍵させる指くぐりを行うべき条件が満たされ
ているとして、変数kuguruに「TRUE」を表す
値を代入する。続くステップ1914では、変数fig
aの値で指定される親指パートをくぐらせる動作を開始
させ、変数tkstartの値が示すタイミングで変数
figの指番号データで指定される指パートの離鍵動作
を開始させるためのパート動作データを作成し単位動作
データAに追加する。その作成・追加を行った後に、一
連の処理を終了する。
【0164】上記親指パートの動作を開始させるタイミ
ング、即ちパート動作データ中の動作時間データは、そ
の親指パートの直前の動作を終了させたタイミングを考
慮して決定する。直前の動作を終了させてから変数fi
gの指番号データで指定される指パートを離鍵させるタ
イミングまでの時間間隔が予め定めた時間内であれば、
その動作に続ける形で動作させる。即ち直前の動作を終
了させたタイミングを、新たな動作を開始させるタイミ
ングとする。それらの時間間隔が予め定めた時間内でな
ければ、変数figの指番号データで指定される指パー
トを離鍵させるタイミングから、例えばその指パートを
離鍵させる鍵と親指パートを押鍵させる鍵の音高差に応
じた時間だけ前のタイミングとする。その時間は、例え
ば音高差と時間の関係を予め定義したテーブルを参照し
て決定する。親指パートに横の動きを行わせるための対
象変数である変数frzには、例えば親指パートを押鍵
させるまでの間、その横の動きを一定速度で行わせると
の前提で、変数figの指番号データで指定される指パ
ートを離鍵させる時点での値を設定する。そのようなパ
ート動作データをステップ1914では生成する。
【0165】上記ステップ1912の判定がNOとなっ
て移行するステップ1915では、変数figの指番号
データで指定されるのが親指で変数noteの音高デー
タは変数noteaの音高データより高い音高を示して
いるか否か判定する。変数figの指番号データで指定
されるのが親指であり、その親指に現在、押鍵させてい
る鍵の音高よりも低い音高の鍵をノートオンさせる場
合、判定はYESとなってステップ1916に移行す
る。そうでない場合には、判定はNOとなって上記ステ
ップ1906に移行する。
【0166】ステップ1916では、親指パートの上を
人差し指パートなどの指パートにまたがせて、次に押鍵
すべき鍵を押鍵させる指またぎを行うべき条件が満たさ
れているとして、変数mataguに「TRUE」を表
す値を代入する。続くステップ1917では、変数fi
gの値で指定される親指パートをくぐらせる動作を開始
させ、変数tkstartの値が示すタイミングで変数
figの指番号データで指定される指パートの離鍵動作
を開始させるためのパート動作データを作成し単位動作
データAに追加する。その作成は、上記ステップ191
4と同様にして行う。そのようなパート動作データを作
成・追加した後に、一連の処理を終了する。
【0167】このようにして、本実施の形態では、今
回、離鍵させる鍵の次に行う押鍵に向けて、指くぐり、
或いは指またぎを行わせるべき状況か否か判定し、その
判定結果に応じてパート動作データを作成している。そ
れにより、そのような指パートを交差させる動作を含
め、演奏動作を表示させている。
【0168】図19に示すノートオフメイン処理では、
上述した各種サブルーチン処理が実行される。それによ
り、指パートを離鍵させる動作を表現するためのパート
動作データをサブルーチン処理単位で生成し単位動作デ
ータAに追加している。それらの動作データでは、変数
hy、hz、配列変数hrx1〜3、及びfrzのうち
の何れかが値の変更対象である。
【0169】図24は、図11に示す動作制御データ生
成処理内でステップ911として実行される手のx位置
処理の動作フローチャートである。次に、図24を参照
して、手のx位置処理について詳細に説明する。上述し
たように、この手のx位置処理には、図17及び図18
に示すノートオン動作処理、或いは図22及び図23に
示すノートオフ動作処理の実行時に値が代入される変数
kuguru、mataguが引数として渡される。
【0170】先ず、ステップ2001では、変数kug
uru、及びmataguのうちの一方に「TRUE」
を表す値が代入されているか否か判定する。図17及び
図18に示すノートオン動作処理、或いは図22及び図
23に示すノートオフ動作処理を実行した結果、変数k
uguru、及びmataguのうちの一方に「TRU
E」を表す値が代入されていた場合、判定は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、手パートの回転角hr
z、及び手パートの長さLa(図3参照)などを基に、
手パートの基点301のx軸上の位置hxを求める(図
6参照)。その後はステップ2005に移行する。
【0175】ステップ2005では、変数tkoldの
値で指定されるタイミングから変数tktimeの値で
指定されるタイミングまでに、手パートの基点301を
ステップ2004で求めた位置hxまで移動させたり、
ステップ2002、或いは2003で求めた回転角hr
zにさせるパート動作データをそれぞれ必要に応じて生
成し単位動作データAに追加する。位置hx、及び回転
角hrzを共に変化させる必要がなければ、それらのパ
ート動作データは作成しない。
【0176】図5に示すように基準押鍵位置を複数、予
め設定し、そのなかの一つを押鍵位置として選択する
と、複数の指パートを押鍵させるような場合に、1つ以
上の指パートに無理、或いは負担の大きい動作を行わせ
なければならなくなる可能性が高くなる。しかし、無
理、或いは負担の大きい動作は、押鍵位置を僅かにずら
すだけで無理でなくなる、或いは負担が大きく軽減する
ことが多い。このことから、ステップ2002、200
3では、鍵の押鍵位置の修正も必要に応じて行うように
している。その修正を行うと、通常、指パートの曲げ方
やその回転角frzなども修正しなければならなくな
る。このため、ステップ2005では、必要に応じて、
既に作成したパート動作データの修正なども合わせて行
っている。
【0177】ステップ2005に続くステップ2006
では、変数kuguru、及びmataguの両方に
「FALSE」を表す値を代入する。一連の処理はその
後に終了する。上記手のx位置処理を実行すると、変数
peの値で指定される単位楽音データが表すイベントの
発生時、或いはそのイベント後の手指の各パートの状態
を指定する各種変数、及び各種配列変数のなかで、変数
hyの除く全てのものの値が確定することになる。その
変数hyの値は、この手のx値処理の次にステップ91
2として実行される手のy位置再処理によって確定され
る。
【0178】図25は、シーケンス処理の動作フローチ
ャートである。このシーケンス処理は、例えばユーザが
操作部106を操作して、予め指定(選択)した楽音・
運指データの再生を指示した場合に、CPU101が、
ROM102に格納されているプログラムを実行するこ
とで実現される処理である。図10に示すリアルタイム
処理部802はそのシーケンス処理を実行することによ
って実現される。
【0179】図7(b)に示す動作制御データBは、楽
音・運指データとは別の領域に格納されている。動作制
御データBを構成する段階動作データは、当然のことな
がら、楽音・運指データを構成する単位楽音データの数
よりも多く、その処理タイミングは、通常、単位楽音デ
ータの処理タイミングと一致しない。このようなことか
ら、動作制御データB、及び楽音・運指データは、それ
ぞれ、並行に処理している。
【0180】先ず、ステップ2101では、変数tkt
imeE、tktimeM、及びclockにそれぞれ
0を代入したり、変数pe、及びpmにそれぞれ初期値
を代入するといった各種変数への値の代入や、特には図
示しないハードタイマが所定時間間隔で出力する割り込
み信号を有効にして、タイマインタラプト処理の実行禁
止を解除するといった初期設定を行う。その実行禁止を
解除することによって、変数clockの値は、タイマ
インタラプト処理が実行される度にインクリメントされ
る。
【0181】ステップ2101に続くステップ2102
では、変数clockの値やテンポデータの値を用いた
演算を行って、変数clockの値を楽音・運指データ
中の時間データの単位で示す値を算出し、その算出結果
を変数tktimeに代入する。その後はステップ21
03に移行する。
【0182】ステップ2103〜2109では、楽音・
運指データの再生に係わる処理が実行される。先ず、ス
テップ2103では、楽音・運指データが終了したか否
か判定する。変数peの値が指定するデータが楽音・運
指データの最後に位置するエンドデータであった場合、
判定はYESとなってステップ2110に移行し、そう
でない場合には、判定はNOとなってステップ2104
に移行する。
【0183】ステップ2104では、変数peの値で指
定される単位楽音データ中の時間データの値を変数tk
timeEの値に加算した値が、変数tktimeの値
以上か否か判定する。変数tktimeEには、それま
でに処理した単位楽音データ中の時間データの値を累算
した値、即ち直前に処理した単位楽音データの処理タイ
ミングを絶対時間で示す値が代入されている。このた
め、変数peの値で指定される単位楽音データを処理す
べきタイミングとなった場合、判定はYESとなってス
テップ2105に移行する。そうでない場合には、判定
はNOとなってステップ2110に移行する。
【0184】ステップ2105では、変数tktime
Eに、それまでの値に変数peの値が指定する単位楽音
データ中の時間データの値を加算した値を代入する。そ
れにより、次の単位時間データを処理すべきタイミング
を示す値を変数tktimeEに代入した後は、処理タ
イミングとなった単位楽音データをそれが表すイベント
の種類に応じて処理を行い、その処理による演奏の進行
に応じて、表示ページの切り換え、新たに発音させた楽
音に対応する音符の表示色の変更などを行い、更に変数
peに、それまでのアドレス値から1イベント分だけ進
めたアドレス値を代入した(以上、ステップ2106〜
2109)後、ステップ2110に移行する。なお、単
位楽音データの処理は、CPU101が、そのデータか
ら音源107に送出すべきコマンドを生成して送出する
ことで行われる。
【0185】ステップ2110〜2115では、動作制
御データBに従って手指の各パートを動作させるための
処理が行われる。先ず、ステップ2110では、動作制
御データBが終了したか否か判定する。変数pmの値が
指定する段階動作データが動作制御データB中に存在し
ていない場合、判定はYESとなってステップ2115
に移行し、そうでない場合には、判定はNOとなってス
テップ2111に移行する。
【0186】ステップ2111では、変数pmの値で指
定される段階動作データ中の時間データの値を変数tk
timeMの値に加算した値が、変数tktimeの値
以上か否か判定する。変数tktimeMには、上記変
数tktimeEと同様に、それまでに処理した段階動
作データ中の時間データの値を累算した値、即ち直前に
処理した段階動作データの処理タイミングを絶対時間で
示す値が代入されている。このため、変数pmの値で指
定される段階動作データを処理すべきタイミングとなっ
た場合、判定はYESとなってステップ2112に移行
する。そうでない場合には、判定はNOとなって上記ス
テップ2102に戻る。
【0187】ステップ2112では、変数tktime
Mに、それまでの値に変数pmの値が指定する段階動作
データ中の時間データの値を加算した値を代入する。そ
れにより、次の段階動作データを処理すべきタイミング
を示す値を変数tktimeMに代入すると、ステップ
2113に移行して、処理タイミングとなった段階動作
データに従って、手指の各パートのなかで状態を変化さ
せるべきパートの状態を変化させて演奏動作を示す表示
内容を更新する演奏動作表示更新処理を実行する。その
実行後は、ステップ2114で変数pmに、それまでの
アドレス値から1イベント分だけ進めたアドレス値を代
入した後、上記ステップ2102に戻る。なお、表示内
容の更新は、例えばCPU101が、表示部105のメ
モリに格納された画像データ中でデータを書き換えるべ
き部分の画像データをROM102から読み出すか、或
いはそれを用いて生成し、そのようにして得た画像デー
タを、そのメモリ中の画像データを書き換えるべき部分
に上書きすることで行われる。
【0188】一方、上記ステップ2110の判定がYE
Sとなって移行するステップ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、フレキシブルディ
スク、或いは光磁気ディスク等の記録媒体に記録させて
配布しても良い。或いは、公衆網等で用いられる伝送媒
体を介して、そのプログラムの一部、若しくは全部を配
信するようにしても良い。そのようにした場合には、ユ
ーザはプログラムを取得して任意の演奏動作表示装置、
或いはコンピュータ等のデータ処理装置にロードするこ
とにより、その装置に本発明を適用させることができ
る。このことから、記録媒体は、プログラムを配信する
装置がアクセスできるものであっても良い。
【0193】
【発明の効果】以上、説明したように本発明は、手指を
複数のパート(オブジェクト)に分け、楽音・運指デー
タを基に、演奏操作子群上で生じさせるべきイベント単
位で、演奏操作子群の操作を行う際に指を交差させるべ
きか否か判定し、その判定結果に従って、イベントを生
じさせた後(演奏操作子群が鍵盤であれば押鍵終了時、
或いは離鍵後が対応)の手指の状態を各パート毎に求
め、求めた状態にパート単位で順次、移行させることに
より、手指による演奏動作を動画表示する。このため、
ユーザに演奏中における手指の動作を容易に理解させる
ことができる。
【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 楽譜表示部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 演奏操作の対象となる演奏操作子群に対
    し、演奏の進行に応じて演奏者が操作していく際の動作
    を表示する装置であって、 前記演奏操作子群上で発生させるべきイベントの内容を
    表すイベントデータ、該イベントの発生タイミングを示
    す時間データ、及び該イベントの発生に使用すべき指を
    指定する指データを少なくとも有するデータ群を単位楽
    音・運指データとして構成されている楽音・運指データ
    を取得する楽音・運指データ取得手段と、 前記楽音・運指データ取得手段が取得した楽音・運指デ
    ータを参照して、前記単位楽音・運指データで指定され
    る操作を前記演奏操作子群に対して行う際に指を交差さ
    せるべきか否か判定し、該判定結果に従って、該演奏操
    作子群中の演奏操作子を操作したとき、或いは該操作を
    解除した後の手指の状態を、該手指を複数のパートに分
    けて該単位楽音・運指データ単位で決定する状態決定手
    段と、 前記状態決定手段が決定した状態に前記パート単位で順
    次、移行させることにより、前記演奏操作子群を操作し
    ていく手指の動作を動画表示する動作表示手段と、 を具備することを特徴とする演奏動作表示装置。
  2. 【請求項2】 前記状態決定手段は、前記イベントデー
    タに付加された時間データを基に、前記単位楽音・運指
    データ単位で決定した状態に移行を開始すべき動作開始
    タイミング、及び該移行に要する動作時間を前記パート
    別に決定し、 前記動作表示手段は、前記状態決定手段が決定した動作
    開始タイミング、及び動作時間に従って、前記手指を構
    成する各パートを該状態決定手段が決定した状態に移行
    させることにより前記動画表示を行う、 ことを特徴とする請求項1記載の演奏動作表示装置。
  3. 【請求項3】 前記演奏操作子群は鍵盤であり、 前記状態決定手段は、前記鍵盤の鍵を押鍵させるために
    指を接触させる位置を、該鍵に指を接触させる基準とな
    る位置として予め定められた複数の基準位置のなかから
    一つを選択して、該選択した基準位置を基準に決定す
    る、 ことを特徴とする請求項1、または2記載の演奏動作表
    示装置。
  4. 【請求項4】 演奏操作の対象となる鍵盤に対し、演奏
    の進行に応じて演奏者が操作していく際の動作を表示す
    る装置であって、 前記鍵盤上で発生させるべきイベントの内容を表すイベ
    ントデータ、該イベントの発生タイミングを示す時間デ
    ータ、及び該イベントの発生に使用すべき指を指定する
    指データを少なくとも有するデータ群を単位楽音・運指
    データとして構成されている楽音・運指データを取得す
    る楽音・運指データ取得手段と、 前記楽音・運指データ取得手段が取得した楽音・運指デ
    ータに基づいて、前記鍵盤中の鍵を押鍵したとき、或い
    は離鍵した後の手指の状態を、該鍵に指を接触させる基
    準となる位置として予め定められた複数の基準位置を参
    照しつつ、該手指を複数のパートに分けて該単位楽音・
    運指データ単位で決定する状態決定手段と、 前記状態決定手段が決定した状態に前記パート単位で順
    次、移行させることにより、前記鍵盤を操作していく手
    指の動作を動画表示する動作表示手段と、 を具備することを特徴とする演奏動作表示装置。
  5. 【請求項5】 演奏操作の対象となる演奏操作子群に対
    し、演奏の進行に応じて演奏者が操作していく際の動作
    を表示する装置に実行させるプログラムであって、 前記演奏操作子群上で発生させるべきイベントの内容を
    表すイベントデータ、該イベントの発生タイミングを示
    す時間データ、及び該イベントの発生に使用すべき指を
    指定する指データを少なくとも有するデータ群を単位楽
    音・運指データとして構成されている楽音・運指データ
    を取得する機能と、 前記取得する機能により取得した楽音・運指データを参
    照して、前記単位楽音・運指データで指定される操作を
    前記演奏操作子群に対して行う際に指を交差させるべき
    か否か判定し、該判定結果に従って、該演奏操作子群中
    の演奏操作子を操作したとき、或いは該操作を解除した
    後の手指の状態を、該手指を複数のパートに分けて該単
    位楽音・運指データ単位で決定する機能と、 前記決定する機能により決定した状態に前記パート単位
    で順次、移行させることにより、前記演奏操作子群を操
    作していく手指の動作を動画表示する機能と、 を実現させるためのプログラム。
  6. 【請求項6】 演奏操作の対象となる鍵盤に対し、演奏
    の進行に応じて演奏者が操作していく際の動作を表示す
    る装置に実行させるプログラムであって、 前記鍵盤上で発生させるべきイベントの内容を表すイベ
    ントデータ、該イベントの発生タイミングを示す時間デ
    ータ、及び該イベントの発生に使用すべき指を指定する
    指データを少なくとも有するデータ群を単位楽音・運指
    データとして構成されている楽音・運指データを取得す
    る機能と、 前記取得する機能により取得した楽音・運指データに基
    づいて、前記鍵盤中の鍵を押鍵したとき、或いは離鍵し
    た後の手指の状態を、該鍵に指を接触させる基準となる
    位置として予め定めた複数の基準位置を参照しつつ、該
    手指を複数のパートに分けて該単位楽音・運指データ単
    位で決定する機能と、 前記決定する機能により決定した状態に前記パート単位
    で順次、移行させることにより、前記鍵盤を操作してい
    く手指の動作を動画表示する機能と、 を実現させるためのプログラム。
JP2001237820A 2001-08-06 2001-08-06 演奏動作表示装置、及びプログラム Expired - Fee Related JP4337288B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001237820A JP4337288B2 (ja) 2001-08-06 2001-08-06 演奏動作表示装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001237820A JP4337288B2 (ja) 2001-08-06 2001-08-06 演奏動作表示装置、及びプログラム

Publications (2)

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

Family

ID=19068835

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001237820A Expired - Fee Related JP4337288B2 (ja) 2001-08-06 2001-08-06 演奏動作表示装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP4337288B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007322447A (ja) * 2006-05-30 2007-12-13 Roland Corp 鍵盤表示装置および鍵盤表示プログラム
JP2013160948A (ja) * 2012-02-06 2013-08-19 Casio Comput Co Ltd 演奏動作表示装置、方法及びプログラム
JP2015069170A (ja) * 2013-09-30 2015-04-13 カシオ計算機株式会社 演奏操作ガイド装置、方法、およびプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007322447A (ja) * 2006-05-30 2007-12-13 Roland Corp 鍵盤表示装置および鍵盤表示プログラム
JP4684168B2 (ja) * 2006-05-30 2011-05-18 ローランド株式会社 鍵盤表示装置および鍵盤表示プログラム
JP2013160948A (ja) * 2012-02-06 2013-08-19 Casio Comput Co Ltd 演奏動作表示装置、方法及びプログラム
JP2015069170A (ja) * 2013-09-30 2015-04-13 カシオ計算機株式会社 演奏操作ガイド装置、方法、およびプログラム

Also Published As

Publication number Publication date
JP4337288B2 (ja) 2009-09-30

Similar Documents

Publication Publication Date Title
JP2705568B2 (ja) 自動演奏装置
JP6344578B2 (ja) 電子楽器を演奏する方法
EP1575027B1 (en) Musical sound reproduction device and musical sound reproduction program
JP3538242B2 (ja) 楽譜表示装置
JP4702160B2 (ja) 楽音合成装置及びプログラム
JP3521838B2 (ja) 演奏動作表示装置、及び記録媒体
JP4561636B2 (ja) 楽音合成装置及びプログラム
JP3622275B2 (ja) 自動演奏の制御データ入力方法および自動演奏装置
JP3843735B2 (ja) 演奏ガイド方法、演奏ガイド装置および記録媒体
JP3528051B2 (ja) 演奏動作表示装置、及び記録媒体
JP2003050577A (ja) 演奏動作表示装置、及びプログラム
JP2013152395A (ja) 電子楽器及びプログラム
JP3972899B2 (ja) 楽譜表示装置
JP3548825B2 (ja) 演奏動作表示装置、及び記録媒体
JP3656507B2 (ja) 演奏情報編集装置
JP2003114674A (ja) 演奏情報表示装置、及びプログラム
JP5277814B2 (ja) 電子音楽装置及びプログラム
JP6132052B2 (ja) 電子楽器及びプログラム
JP2003029743A (ja) 演奏動作表示装置、及び記録媒体
JP2002099275A (ja) 演奏動作表示装置、及び記録媒体
JP7107720B2 (ja) 運指表示プログラム
JP7008560B2 (ja) 運指表示装置及び運指表示プログラム
JP2003108119A (ja) 演奏情報表示装置、及びプログラム
JP5272599B2 (ja) 電子音楽装置及びプログラム
JP3794303B2 (ja) 演奏情報編集装置及び演奏情報編集プログラム

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