以下、本発明における実施形態について図面を参照して説明する。
<鍵盤楽器の機械的構成>
図1は、本実施形態にかかる鍵盤楽器の機械的構成を示す図である。この図に示されるように、鍵盤楽器100には、棚板110が設けられている。棚板110の上面には、紙面垂直方向に延在するように筬中120が配置されている。筬中120の上面には、複数のバランスピン125が立設しており、88個の鍵130の各々が、各バランスピン125に貫通された状態で、筬中120の上面に並設されている。これらの鍵130には、音高を示す「1」から「88」までのノート番号が割り当てられている。また、各鍵130は、バランスピン125に貫通される位置を、おおよその支点として揺動可能に保持されており、演奏者は、鍵130の前方を押下することにより演奏(押鍵)する。
鍵130の後方近傍には、鍵130の揺動に応じて駆動するアクション機構140が設けられている。アクション機構140は、「1」から「88」までのノート番号が割り当てられた88個のハンマ142を含んでおり、押鍵と連動してハンマ142が弦170を打撃する。ハンマ142によって弦170が打撃されると、弦振動が生じ、その振動は、駒(不図示)を介して響板(不図示)に伝搬し、楽音が発生する。
ところで、演奏者(操作者)は、ひとつの鍵130に関する押鍵であっても、微妙なニュアンスを表現すべく、多種多様な鍵操作を行う。さらに詳述すると、演奏者は、押鍵ごとに押鍵速度を異ならせるのみならず、1回の押鍵についても、初め遅くて次第に速くなる押鍵や、その逆の押鍵などの様々な鍵操作を行う。また、この他にも、鍵130がエンド位置(鍵130を押し切った位置)に到達する前に、離鍵を開始するハーフストロークなどの奏法も用いられる。アクション機構140は、これらの微妙な鍵操作の違いに応じて打弦し、結果として、微妙な押鍵操作の違いに応じた楽音が発せられる。
しかしながら、演奏情報をMIDIデータとして生成する場合、例えば押鍵操作については、鍵が、ある2点間の距離の移動に要した時間を検出し、2点間の距離と検出された時間とから求めた速度を、当該押鍵操作にかかるベロシティとする。このため、MIDIデータにおいては、一回の押鍵操作につき、単一のベロシティが規定されるのみであり、演奏操作の一部しか反映されなかった。それゆえ、演奏者による微妙なニュアンスを、十分に表現することができなかった。
そこで、鍵盤楽器100は、微妙なニュアンスが反映された演奏情報を生成すべく、鍵操作を検出するキーセンサとして、鍵130のレスト位置(離鍵されている位置)からエンド位置までの連続的な位置を検出するセンサを備えている。より具体的には、鍵130の上方には、キーセンサ310を支持するための支持部材300が設けられている。図2は、キーセンサ310および鍵130の斜視図である。この図に示されるように、キーセンサ310は、88個の鍵130の各々に対応するように、各鍵130の上面に配置された被検出部材135と対向する位置に設けられている。
図3は、キーセンサ310の構成を示す図である。この図に示されるように、キーセンサ310は、発光素子312と受光素子314とを含んでいる。このうち、発光素子312は、被検出部材135に向けて光を照射する。一方、受光素子314は、発光素子312から被検出部材135に照射された光の反射光を受光する。キーセンサ310は、受光素子314の受光量に応じて、被検出部材135までの距離を、0.001mm単位で検出する。
鍵130が押下されると、図3および図4における二点鎖線により示すように、被検出部材135が下方に移動する。キーセンサ310は、キーセンサ310から被検出部材135までの距離を検出することにより、鍵130の位置を連続的に検出する。これにより、鍵130の位置を、レスト位置からエンド位置に至るまで連続的に検出することができる。このようなキーセンサ310を採用することにより、演奏者による微妙な鍵操作を正確に検出し、その検出値から、微妙なニュアンスが反映された演奏情報を生成することが可能となる。
図5は、ハンマ142およびその周辺の構成を示す図である。この図に示されるように、アクション機構140に含まれるハンマフレンジ146には、ハンマシャンク143がピン144を支点として回動可能に取り付けられている。ハンマシャンク143は、ハンマウッド141を介してハンマ142を保持しており、押鍵されると、図中二点鎖線で示される位置に反時計回りに回動し、ハンマ142が打弦する。
ハンマシャンク143の上面には、被検出部材145が固定されている。また、ハンマシャンク143の上方には、88個のハンマ142に対応した88個のハンマセンサ410を支持するための支持部材400が設けられている。ハンマセンサ410は、上述したキーセンサ310と同様な構成をしており、対応するハンマシャンク143に設置された被検出部材145の位置を、0.001mm単位で検出する。この際、ハンマセンサ410は、ハンマ142の位置をレスト位置(離鍵時の位置)からエンド位置(打弦位置)まで連続的に検出する。これにより、ハンマ142の微妙な動作の変化を取り逃がすことなく、ハンマ142の動作が検出されることとなる。
説明を再び図1に戻す。鍵盤楽器100の下方には、3個のペダル150が揺動可能に設けられている。より詳細には、ダンパペダル、ソフトペダルおよびソステヌートペダルが設けられており、この順で、ペダル番号として「1」「2」および「3」が割り当てられている。各ペダル150の上方には、3個のペダルに対応した3個のペダルセンサ510を支持するための支持部材500が設けられている。これらのペダルセンサ510は、上述したキーセンサ310と同様に、対応するペダル150の位置を、0.001mm単位で検出する。この際、ペダルセンサ510は、レスト位置(ペダルが踏まれていない状態)からエンド位置(ペダルが踏み込まれた位置)まで連続的にペダル位置を検出する。
また、ダンパ160は、複数の弦170の各々に対応して88個設けられており、各々のダンパ160は、音高を示す「1」から「88」までのノート番号が割り当てられている。各ダンパ160は、離鍵時においては、弦170に接触するように位置する一方、押鍵時においては、押鍵された鍵130に対応するダンパ160のみが弦170から離れる。ただし、ダンパペダルが踏み込まれた場合には、全てのダンパ160が、ダンパペダルの押下量に応じて上方に移動し、弦170から離れる。これにより、倍音の効果によって、楽音の響きが豊かになる。逆に、ダンパペダルの踏み込みが解除されると、ダンパ160が弦170に接し、弦振動が減衰され、この結果、音が抑制される。
ダンパ160の上方には、各ダンパ160に対応した88個のダンパセンサ610を支持する支持部材600が設けられている。図6はダンパ160およびその周辺構成を示す図である。この図に示されるように、ダンパペダルが押下されると、その押下量に応じて、ダンパ160は、二点鎖線で示されるように上方に移動する。ダンパセンサ610は、上述したキーセンサ310と同様な構成をしており、ダンパ160の上面に設けられた被検出部材165の位置を検出し、ダンパ160の位置を、0.001mm単位で検出する。これにより、音の減衰に影響を与えるダンパ160が、弦170に接触しているか否かを詳細に表現する演奏情報を生成することができる。
<鍵盤楽器の電気的構成>
図7は、鍵盤楽器100の電気的構成を示す図である。この図において、CPU200は、バスBを介して構成各部を制御する。RAM210は、CPU200のワークエリアとして使用され、後述する時間データなどを一時的に記憶する。ROM220は、CPU200が演奏情報生成・記録処理を実行するためのプログラムなどの各種プログラムを記録する。ここで、演奏情報生成・記録処理とは、鍵盤楽器100における演奏者の演奏中に、4種類の移動部材(鍵130、ハンマ142、ペダル150およびダンパ160)の位置を検出し、各移動部材の動作を示す演奏情報の生成および記録を行う処理である。
操作部230は、ユーザが各種操作を入力するスイッチなどから構成され、演奏情報生成・記録処理の開始を指示する開始信号や、同処理の終了を指示する終了信号などを、バスBを介してCPU200に供給する。
また、時計部240は、現在時刻を表す時刻情報をCPU200に供給する。CPU200は、時刻情報を受け取ると、その情報を用いて、移動部材の移動期間を示す時間データや、移動部材の速度を示す速度データなどを生成する。
88個のキーセンサ310の各々は、検出した各鍵130の位置を示すアナログ位置信号を、A/D変換部250Kに入力する。A/D変換部250Kは、各キーセンサ310からアナログ位置信号を受け取ると、その信号をデジタル変換し、デジタル位置信号としてCPU200に供給する。
88個のハンマセンサ410の各々は、検出した各ハンマ142の位置を示すアナログ位置信号を、A/D変換部250Hに入力する。A/D変換部250Hは、各ハンマセンサ410からアナログ位置信号を受け取ると、その信号をデジタル変換し、デジタル位置信号としてCPU200に供給する。
3個のペダルセンサ510の各々は、検出した各ペダル150の位置を示すアナログ位置信号を、A/D変換部250Pに入力する。A/D変換部250Pは、各ペダルセンサ510からアナログ位置信号を受け取ると、その信号をデジタル変換し、デジタル位置信号としてCPU200に供給する。
88個のダンパセンサ610の各々は、検出した各ダンパ160の位置を示すアナログ位置信号を、A/D変換部250Hに入力する。A/D変換部250Hは、各ダンパセンサ610からアナログ位置信号を受け取ると、その信号をデジタル変換し、デジタル位置信号としてCPU200に供給する。
CPU200は、各A/D変換部250K、250H、250P、250Dからのデジタル位置信号、および、時計部240からの時刻情報を入力すると、それらの情報を用いて、各移動部材の移動距離や、当該距離だけ移動するために要した時間、移動速度などを求め、各移動部材の位置が時系列的に規定された移動部材別ファイルを、演奏情報として生成する。この際、CPU200は、移動部材別ファイルを、鍵130、ハンマ142およびダンパ160の各々についてはノート番号別に、また、ペダル150については、ペダル番号別に生成する。
記憶部260は、例えば、ハードディスクなどの書き換え可能な記憶手段であり、演奏情報フォルダなどを記憶する。ここで、演奏情報フォルダとは、楽曲別に記憶部260に記録され、当該楽曲の演奏情報として、全ての移動部材に対応する移動部材別ファイルが格納されるものである。
図8は、演奏情報フォルダに格納されるひとつの移動部材別ファイルの構成を示す図である。この図に示されるように、移動部材別ファイルfは、大別して、属性データ群と位置・時間データ群とを含んでいる。属性データ群には、当該移動部材ファイルfがいずれの移動部材に対応する移動部材ファイルfであるかを示す情報などが格納される。一方、位置・時間データ群には、移動部材の位置が時系列的に規定された情報、すなわち、移動部材の動作を示す情報が格納される。以下、属性データ群および位置・時間データ群に含まれるデータ要素の詳細について説明する。
属性データ群は、データ要素として、ノートID/ペダルIDと、移動部材IDと、下位周期Lと、上位周期Hとを含む。このうち、移動部材IDは、移動部材の種類を特定するための情報であり、鍵130、ハンマ142、ペダル150およびダンパ160のいずれに対応する移動部材ファイルfであるかを示す情報である。また、ノートID/ペダルIDは、移動部材IDにより、移動部材の種類が鍵130、ハンマ142、ダンパ160のいずれかに特定された場合、いずれのノート番号に対応する移動部材ファイルfであるかを示し、移動部材の種類がペダル150であると特定された場合、いずれのペダルに対応する移動部材別ファイルfであるかを示す。
下位周期Lおよび上位周期Hは、これら2つにより、位置・時間データ群を生成する際に用いられるサンプリング周期を表す。下位周期Lおよび上位周期Hの各々は、演奏者が設定可能であり、操作部230を介して、移動部材ごとに異なるサンプリング周期を設定することができる。
図9は、属性データ群に含まれるデータ要素のフォーマットを示す図である。この図に示されるように、各データ要素は、16ビットデータとして規定されている。まず、移動部材IDは、上位12ビットに、その識別子となる「1100
0001 0000」が格納され、「wwww」で示される下位4ビットに、鍵130を示す「0001」、ハンマ142を示す「0010」、ダンパ160を示す「0011」、および、ペダル150を示す「0000」のいずれかが格納される。
ノートID/ペダルIDは、上位8ビットに、その識別子となる「1100 0000」が格納され、「kkkk kkkk」で示される下位8ビットに、ノート番号あるいはペダルを特定するための情報が格納される。より具体的には、下位8ビットには、ノート番号を示す「00000001(10進表記における1)」から「0101 1000(10進表記における88)」までのいずれか、もしくは、ラウドペダルを示す「10000000」、ソステヌートペダルを示す「1000 0010」、および、シフトペダルを示す「10000011」のいずれかが格納される。
下位周期Lには、上位8ビットに、その識別子となる「1100 0010」が格納され、「tLtLtLtL tLtLtLtL」で示される下位8ビットに、サンプリング周期の下位8ビットを示す情報が格納される。一方、上位周期Hには、上位8ビットに、その識別子となる「11000011」が格納され、「tHtHtHtH tHtHtHtH」で示される下位8ビットに、サンプリング周期の上位8ビットを示す情報が格納される。これにより、サンプリング周期は、16ビットの「tHtHtHtH tHtHtHtH tLtLtLtL tLtLtLtL」によって規定される。ここで、サンプリング周期の1ビットは、0.001mSを示しており、サンプリング周期によって、0.000mSから65.535mSまでの周期を、0.001mS単位で表現することができる。
なお、サンプリング周期は、下位周期Lのみ、あるいは、上位周期Hのみで規定する構成としても良い。さらに詳述すると、下位周期Lのみを用いた場合、サンプリング周期は、8ビットの「tLtLtLtL tLtLtLtL」によって規定され、0.001mSから0.255mSまでの周期を、0.001mS単位で表現することができる。一方、上位周期Hのみを用いた場合、サンプリング周期は、16ビットの「tHtHtHtH tHtHtHtH 0000 0000」によって規定され、0.256mSから65.280mSまでの周期を、0.256mS単位で表現することができる。
再び図8において、属性データ群に含まれる移動部材IDは、その下位4ビットにより「0001」を示し、ノートID/ペダルIDは、その下位8ビットにより10進表記の「60」を示している。また、サンプリング周期は、下位周期Lおよび上位周期Hから、「00000011 1110 1000」に規定され、10進表記による「1000」を示している。これらにより、この移動部材別ファイルfが、ノート番号が「60」の鍵130に関する移動部材ファイルfであることが特定され、また、位置・時間データ群で用いられるサンプリング周期は、「1mS」であることが特定される。
このような属性データ群に続き、位置・時間データ群が格納される。位置・時間データ群は、データ要素として、位置データ、速度データおよび時間データを含む。このうち、位置データは、移動部材の位置を示すデータである。また、速度データは、ある期間内における移動部材の速度を示すデータである。時間データは、移動部材が、等速運動あるいは停止した期間を示すデータである。
図10は、位置・時間データの各データ要素のフォーマットを示す図である。この図に示されるように、位置データは、上位2ビットに、その識別子として「00」が格納され、「xxxxxx xxxx xxxx」で示される下位14ビットに、移動部材の位置を表す情報が格納される。位置データの1ビットは、0.001mmを示し、位置データによって、−4.096mmから12.287mmまでの1634段階の位置を表現することができる。
速度データは、上位2ビットに、その識別子として「01」が格納され、「vv vvvv vvvv vvvv」で示される下位14ビットに、移動部材の速度を示す情報が格納される。速度データの1ビットは、1mm/Sを示す。
時間データは、上位2ビットに、その識別子として「10」が格納され、「tt tttt tttt tttt」で示される下位14ビットには、時間を示す情報が格納される。ここで、時間データの1ビットは、0.001mSを示し、時間データによって、0.000mSから16.383mSまでの時間を表現することができる。
これらの位置データ、時間データおよび速度データの各々は、定周期配列、等速配列および停止配列のいずれかの配列に従って配列されることにより、移動部材の位置を時系列的に規定する情報となる。CPU200は、3種類の移動部材の動作状況に応じて、いずれかの配列を生成し、位置・時間データ群に格納する。
図11(a)、(b)および(c)は、移動部材の3種類の動作状況を示す図である。これらの図において、縦軸は、移動部材の位置を示している。また、横軸は、時間軸であり、横軸の1目盛は、1サンプリング周期を示している。まず、図11(a)に示されるように、移動部材が、等速でない速度、すなわち、加速度が0でない速度によって移動している場合、CPU200は、定周期配列を生成し、位置・時間データ群に格納する。より具体的には、定周期配列は、図8に示すように、位置データが連続して配列されたものである。この配列において、各位置データは、順番に、一定期間(サンプリング周期)経過するごとの移動部材の位置を示している。
次に、図11(b)に示されるように、移動部材が、等速運動をしている場合、CPU200は、等速配列と生成し、位置・時間データ群に格納する。より具体的には、等速配列は、図8に示すように、位置データ、速度データおよび時間データが、この順で並んだものである。この配列においては、移動部材が、位置データによって示される位置から、速度データによって示される速度にて、時間データによって示される期間だけ移動したことを示す。このようなデータ表記方法によれば、移動部材が、長時間等速運動している場合であっても、その状況を3個の要素データのみによって表現することができる。例えば、図11(a)と(b)とを比較してみる。定周期配列であれば、期間t(サンプリング周期の20倍)における移動部材の動作を表現しようとすれば、20個の位置データを配列する必要がある。これに対し、等速配列によれば、同一期間の動作を表現するにあたり、わずか3個のデータ要素の配列によって表現することができる。これにより、サンプリング周期毎に、移動部材の位置を配列する形式(定周期配列)と比較して、そのデータ量が大幅に削減されることとなる。
そして、図11(c)に示されるように、移動部材が停止している場合、CPU200は、停止配列を生成し、位置・時間データ群に格納する。より具体的には、等速配列は、図8に示すように、位置データ、時間データおよび位置データが、この順で並んだものである。この配列においては、先頭の位置データと、後尾の位置データとが同一の位置を示し、移動部材が、その位置に、時間データによって示される期間だけ停止することを示す。このようなデータ表記方法によれば、移動部材が、長時間停止していたとしても、3つの要素データのみによって、その状況を表現することができる。このため、サンプリング周期毎に、移動部材の位置を配列する形式(定周期配列)と比較して、格段にそのデータ量が低減されることとなる。
<鍵盤楽器の動作>
次に、CPU200が実行する演奏情報生成・記録処理について、図12を参照して説明する。この演奏情報生成・記録処理は、演奏者による鍵盤楽器100の演奏中に、各移動部材の位置を検出し、検出結果から移動部材ファイルfを生成し、記憶部260に記録する処理である。CPU200は、操作部230から入力される開始信号をトリガとして演奏情報生成・記録処理を開始する。また、この処理は、タイマ割り込みされ、CPU200は、処理の開始時にタイマをリセットする。
まず、CPU200は、操作部230から開始信号が入力されると、初期化処理を実行する(ステップS1)。さらに詳述すると、CPU200は、記憶部260に演奏情報フォルダを記録し、当該演奏情報フォルダに、全ての移動部材に関する移動部材別ファイルfを格納する。また、開始信号には、下位周期Lおよび上位周期Hが付加されており、CPU200は、それらを、移動部材別ファイルfの属性データ群に格納する。なお、この時点においては、各移動部材別ファイルfには、属性データ群しか記録されておらず、位置・時間データ群に関する情報は、何も記録されていない。
次に、CPU200は、鍵データ生成・記録処理を実行する(ステップS2)。この鍵データ生成・記録処理は、88個の鍵130の各々について、鍵130の位置が時系列的に規定された位置・時間データ群を生成し、記憶部260に記憶される演奏情報フォルダに含まれる移動部材別ファイルfに、生成した位置・時間データ群を格納する処理である。この鍵データ生成・記録処理の詳細については、後述することとする。
次いで、CPU200は、ハンマデータ生成・記録処理を実行する(ステップS3)。この処理は、88個のハンマ142の各々について、位置・時間データ群を生成し、演奏情報フォルダに含まれる移動部材別ファイルfに、該位置・時間データ群を格納する処理である。
次に、CPU200は、ダンパデータ生成・記録処理を実行する(ステップS4)。この処理は、88個のダンパ160の各々について、位置・時間データ群を生成し、演奏情報フォルダに含まれる移動部材別ファイルfに、該位置・時間データ群を格納する処理である。
次に、CPU200は、ペダルデータ生成・記録処理を実行する(ステップS5)。この処理は、3個のペダル150の各々について、位置・時間データ群を生成し、演奏情報フォルダに含まれる移動部材別ファイルfに、該位置・時間データ群を格納する処理である。
次に、CPU200は、操作部230から終了信号を受信したか否かを判定する(ステップS6)。この判定結果が否定的であれば、CPU200は、タイマにおいて一定時間が経過したかを判定する(ステップS7)。この判定結果が否定的であれば、CPU200は、一定時間経過するまで待機すべく、ステップS7の判定を続ける。一方、ステップS7の判定結果が肯定的となれば、タイマをリセットした後、処理手順をステップS2に戻す。
一方、ステップS6における判定結果が肯定的であれば、すなわち、終了信号を受信したらならば、CPU200は、演奏情報生成・記録処理を終了する。
次に、上述した鍵データ生成・記録処理(図12のステップS2)を、図13を参照して説明する。この処理は、88個の鍵130に関して個別に位置・時間データ群を生成し、記憶部260に記録するための処理である。
はじめに、CPU200は、カウント値を「1」に設定する(ステップS21)。このカウント値は、鍵130のノート番号を示すものであり、88個の鍵130のうち、いずれの鍵130に関する処理を実行しているのかを示すポインタとして機能する。
次に、CPU200は、現在のカウント値より特定される鍵130の位置を示すアナログ位置信号を、デジタル変換する(ステップS22)。この際、CPU200は、該鍵130に対応するキーセンサ310から入力されるアナログ位置信号を、該鍵130に対応する移動部材別ファイルfに格納されるサンプリング周期(下位周期Lおよび上位周期H)に従って、A/D変換部250Kによりデジタル位置信号に変換する。
次に、CPU200は、変換したデジタル位置信号について正規化処理を実行する(ステップS23)。正規化処理とは、鍵盤楽器の個体差を吸収するための処理である。より詳細には、押鍵速度や打弦速度などは、各鍵盤楽器の機械的な誤差などにより、個体差が生じる。このため、標準となる鍵盤楽器を想定し、デジタル位置信号を、その標準となる鍵盤楽器に対応するものに変換(正規化)する。
次に、CPU200は、正規化されたデジタル位置信号から、着目する鍵130の動作状況に応じて、位置・時間データ群を生成し、移動部材別ファイルfに格納する生成・記憶処理を実行する(ステップS24)。より具体的には、CPU200は、正規化されたデジタル位置信号から、移動部材の速度に応じて、定周期配列、等速配列および停止配列のいずれかを生成し、該配列を、移動部材別ファイルfに格納する。なお、この生成・記録処理の詳細な説明については後述することとする。
次に、CPU200は、カウント値を「1」だけインクリメントする(ステップS25)。次いで、CPU200は、インクリメントされたカウント値が「88」に達したか否か、すなわち、全ての鍵130について、ステップS22からステップS25までの処理を実行したか否かを判定する(ステップS26)。この判定結果が否定的であれば、CPU200は、カウント値が「88」に達するまで、ステップS22からステップS25までの処理を繰り返す。
一方、ステップS26の判定結果が肯定的であれば、CPU200は、処理手順を、演奏情報生成・記録処理(図12)のステップS3に移行する。このように、鍵データ生成・記録処理においては、各ノート番号の鍵130について個別に、位置・時間データ群の生成および記録が行われる。このため、生成された演奏情報フォルダによれば、演奏者などのユーザは、各移動部材ついて個別に、移動部材別ファイルfの削除や差し替えなどを容易に行うことができる。これにより、各移動部材についての演奏情報が混在するMIDIデータなどの演奏情報と比較して、移動部材別の演奏情報の修正が容易なものとなる。
なお、鍵130以外の移動部材(ハンマ142、ダンパ160およびペダル150)についてのハンマデータ生成・記録処理(図12中ステップS3)、ダンパデータ生成・記録処理(同ステップS4)およびペダルデータ生成・記録処理(同ステップS5)の各々においても、鍵データ生成・記録処理と同様に、ノート番号あるいはペダル番号順に、位置・時間データ群を生成し、位置・時間データ群を個別に移動部材別ファイルfに格納する。
次に、鍵データ生成・記録処理に含まれる生成・記録処理(図13のステップS24)の動作を、図14を参照して説明する。この生成・記録処理は、ひとつの鍵130に着目して実行される処理であり、鍵130の移動速度に応じて、定周期配列、等速配列および停止配列のいずれかを生成し、移動部材別ファイルfに格納する処理である。この処理の開始時に、CPU200は、あらかじめ、経過時間が「0」を示す時間データをRAM210に記録する。
はじめに、CPU200は、鍵130の速度が変化しているか否かを判定する(ステップS241)。ここで、速度が変化している状況とは、加速度が「0」以外である状態を意味する。このため、速度が変化していない状況には、鍵130が等速運動をしている状況の他、停止している状況も含まれる。このステップS241における判定処理を詳述すると、まず、CPU200は、直前のサンプリング周期中における鍵130の変位から、該サンプリング周期中における平均速度を計測する。この際、CPU200は、時計部240から供給された時刻情報、および、A/D変換部250Kから供給されたデジタル位置信号から、鍵130の速度を求める。次に、CPU200は、計測された速度が、前回に計測された速度と異なるか否かによって、移動部材の速度が変化しているか否かを判定する。なお、前回の速度が存在しない場合、すなわち、速度の計測が第1回目の場合には、ステップS241の判定結果は肯定的になるものとする。
さて、ステップS241の判定結果が否定的であれば、CPU200は、RAM210に記憶される時間データを、時計部240から供給される時刻情報に従って、インクリメントする(ステップS242)。ここで、RAM210に記憶される時間データについて説明する。時間データは、ステップS241の判定結果が肯定的であれば、すなわち、鍵130の速度が変化すれば、CPU200によって、そのカウント値が初期化される。このため、時間データにより示される時間は、鍵130が連続して等速運動している期間、あるいは、鍵130が連続して停止している期間のうちいずれかを示すこととなる。
次に、CPU200は、鍵130の速度が「0」であるか、すなわち、鍵130が停止しているか否かを判定する(ステップS243)。この判定結果が肯定的であれば、すなわち、鍵130が停止していれば、CPU200は、停止配列を生成し、移動部材別ファイルfへの停止配列の格納、または、移動部材別ファイルfに格納される停止配列の更新を行う(ステップS244)。より具体的には、図15に示されるように、移動部材別ファイルfに含まれる位置・時間データ群の最後尾に停止配列が書き込まれていなければ、すなわち、最後尾が定周期配列あるいは等速配列のいずれかであれば、CPU200は、新たな停止配列を生成すべく、位置データおよび時間データを書き込む。なお、この図においては、ステップS244の実行前の位置・時間データ群の最後尾は、定周期配列である例が示されている。
一方、図16に示されるように、位置・時間データ群の最後尾に、既に停止配列が書き込まれていれば、CPU200は、当該停止配列に含まれる時間データを更新する。この際、CPU200は、当該停止配列に含まれる時間データに、ステップS242においてインクリメントしたRAM210に記録される時間データを上書きする。これにより、移動部材が長時間停止した場合においても、位置データ、時間データおよび位置データの3つのデータ要素のみによって、その状況を表現することができるため、サンプリング周期ごとに位置データを記録するデータ構造と比較して、データ量が大きくなる心配がない。従って、記憶部260の記憶容量を小さなものとすることができる。言い換えれば、一定の記憶容量をもつ記憶部260に、より多くの演奏情報フォルダを記録することが可能となる。
一方、ステップS243の判定結果が否定的であれば、すなわち、鍵130が等速運動しているならば、CPU200は、等速配列を生成し、移動部材別ファイルfへの等速配列の格納、または、移動部材別ファイルfに格納される等速配列の更新を行う(ステップS245)。さらに詳述すると、CPU200は、図17に示されるように、位置・時間データ群の最後尾に等速配列が書き込まれていなければ、すなわち、最後尾が定周期配列あるいは停止配列のいずれかであれば、等速配列を生成すべく、速度データおよび時間データを書き込む。なお、この図においては、ステップS245の実行前の位置・時間データ群の最後尾は、定周期配列である例が示されている。
一方、図18に示されるように、位置・時間データ群の最後尾に、既に、等速配列が格納されていれば、CPU200は、当該等速配列に含まれる時間データを更新する。この際、CPU200は、当該等速配列に含まれる時間データに、ステップS242においてインクリメントしたRAM210に記憶される時間データを上書きする。これにより、移動部材が長時間等速運動したとしても、位置データ、速度データおよび時間データの3つのデータ要素のみで動作状況を表現することができるため、結果として、演奏情報フォルダのデータ量が低減されることとなる。
一方、ステップS241の判定結果が肯定的であれば、すなわち、鍵130が等速変化しながら移動していれば、CPU200は、RAM210に記憶される時間データをリセットした後、定周期配列を生成し、記憶部260に記録する。具体的には、CPU200は、移動部材別ファイルfに含まれる位置・時間データ群の最後尾に、現在の鍵130の位置を示す位置データを追記する。これにより、レスト位置からエンド位置まで連続した鍵130の位置を示す演奏情報が記録されることとなる。
このように、生成・記録処理においては、移動部材の移動速度に応じて、定周期配列、等速配列および停止配列のいずれかを生成し、記録する。これにより、データ量を抑えつつ、微妙なニュアンスを表現することができる演奏情報を生成することが可能となる。
なお、ハンマデータ生成・記録処理(図12中ステップS2)、ダンパデータ生成・記録処理(同ステップS3)およびペダルデータ生成・記録処理(同ステップS4)の各々にも生成・記録処理が含まれるが、それらの生成・記録処理は鍵130に関する生成・記録処理(図14)と同様の処理であるため、説明を省略することとする。
以上説明したように、本実施形態における鍵盤楽器100によれば、最短0.001mmの精度で移動部材の位置を検出し、最短0.001mSのサンプリング周期によって位置・時間データ群を生成することができる。これにより、各移動部材の動作状況を、詳細かつ忠実に捉えることができ、MIDIデータなどと比較して、奏者の個性や奏法などが反映された演奏情報を生成することができる。このような利点を有するため、鍵盤楽器100の使用方法として、以下のような例が考えられる。
例えば、著名な演奏者による演奏操作を、鍵盤楽器100において記録しても良い。これにより、自動演奏鍵盤楽器などにおいて、該演奏者による演奏操作を再生したり、また、該演奏操作を文化遺産として後世に残したりすることが可能となる。
くわえて、正確な演奏情報を生成することができるため、鍵盤楽器100を演奏指導に用いることにより、指導効率を向上させることが可能である。より詳しくは、鍵盤楽器100によって生徒の演奏操作を記録すれば、指導者は、記録された演奏情報を用いて、生徒の表現法や、弱点、くせなどの演奏技術を評価することができる。一方、指導者の演奏操作を記録すれば、生徒は、記録された演奏情報を、演奏練習の見本にすることができる。また、鍵盤楽器100によれば、演奏情報が移動部材別に記録される。このため、指導者あるいは生徒は、特定の移動部材(鍵130やペダル150など)に着目して、演奏の評価あるいは演奏の参考にすることができる。
しかも、演奏情報生成・記録処理においては、演奏情報として、時系列的に規定された移動部材の位置(位置・時間データ群)そのものを生成する。このため、仕様が複雑なイベント形式のMIDIデータと比較して、演奏操作をイベントデータへ変換する処理が不要となり、また正規化処理も単純なものとなる。これにより、演奏情報の生成に関する処理および構成が、簡易なものとなる。また、鍵盤楽器100により記録された演奏情報を、自動演奏楽器などにおいて再生する場合においても、単に、位置・時間データ群に従って、移動部材を駆動させるだけの処理で良いものとなる。これにより、再生時において、イベントデータから移動部材を駆動させるためのデータへのデータ変換処理や、イベントデータに従って、移動部材を駆動させるタイミング制御などが不要となり、演奏情報の再生にかかる処理および構成が簡易なものとなる。
くわえて、生成・記録処理においては、移動部材の速度に応じて、定周期配列、等速配列および停止配列のいずれかが選択され、位置・時間データ群が生成される。このため、移動部材の等速運動時および停止時においては、3つのデータ要素のみによって動作状況を表すことができる。一般に、演奏中であっても、多くの移動部材は停止期間が長いため、停止配列により演奏情報を生成することにより、演奏情報のデータ量を大幅に削減することが可能となる。
また、演奏情報生成・記録処理においては、1楽曲の演奏操作を記録するにあたり、移動部材別に演奏操作を記録する。このため、記録された演奏情報について、移動部材別の演奏ミスの削除や差し替えなどの修正作業、および、移動部材別の演奏情報の追加や、移動などの編集作業を容易に行うことができる。これにより、各移動部材についての情報が混在し、同一操作子イベント間の時間検出や、イベント列検出に手間がかかるMIDIデータと比較して、修正作業や編集作業などが簡便なものとなる。
なお、上述した実施形態においては、1つのファイルにつき、1つの移動部材についての動作情報(位置・時間データ群)を格納する例を示したが、単一ファイルであっても、動作情報を別個独立に記録するならば、同様な効果が得られる。要は、移動部材別に動作情報を記録できる方式であれば、いかなるものであってもよい。
さらに、鍵盤楽器100において記録した演奏情報の全てあるいは一部を、イベントデータに変換することが可能である。この際、ひとつのイベントデータに対して複数のベロシティを設定可能な高精度なイベントデータに変換することも可能である。これにより、特殊な奏法を、正確にイベントデータへ変換することが可能となる。また、演奏時間の長い楽曲であっても、一旦、演奏情報フォルダとして記録し、別の時期に、該演奏情報フォルダを分割するなどしてイベントデータに変換することも可能である。
また、鍵盤楽器100によれば、ハンマ142やダンパ160などの移動部材の位置を正確に記録することができる。これにより、鍵盤楽器100の特性を把握することができ、また、演奏情報フォルダを経年変化による移動部材の劣化や故障などの判断材料とすることができる。
<変形例>
なお、上述した実施形態に限られず、種々の応用・改良変形等を加えることが可能である。
例えば、上述した実施形態にあっては、鍵盤楽器100において生成された演奏情報(位置・時間データ群)を記憶部260に記憶する例を示したが、演奏情報を外部機器に出力する構成としても良い。さらに説明すると、図19に示すように、鍵盤楽器100の電気的構成において、上述した記憶部260に替えて、外部インターフェース270を備える構成としても良い。外部インターフェース270は、CPU200によって生成された位置・時間データ群を、外部機器に出力するためのインターフェースである。この外部インターフェース270に接続される外部機器としては、位置・時間データ群に従ってリアルタイムで自動演奏する自動演奏楽器や、位置・時間データ群の加工・編集を行うことができるパーソナルコンピュータなどが考えられる。
このような構成にした場合、CPU200は、上述した生成・記録処理(図14参照)において、位置・時間データ群を、記憶部260に記録する替わりに、外部インターフェース270を介して出力する。この際、生成・記録処理のステップS244およびS245においては、既に外部機器に出力された等速配列および停止配列の更新(上書き)処理が実行できない。このため、外部インターフェース270を介して等速配列および停止配列を出力する場合、以下のような手順に従う。
すなわち、等速配列の出力については、CPU200は、移動部材が等速で動作している場合には、RAM210において等速配列の記録および更新を行い、ステップS241において等速でないと判定すると、RAM210に記録される等速配列を、外部インターフェース270から出力する。また、停止配列の出力についても同様に、CPU200は、移動部材が停止している場合には、RAM210において停止配列を記録・更新し、移動部材が移動を始めたときに、外部インターフェース270を介して停止配列を出力する。
また、等速配列の出力に関する代替的な処理として、以下の処理を適用しても良い。すなわち、まず、CPU200は、等速運動の開始を検出したら、等速配列のデータ要素のうち位置データおよび速度データのみを出力し、当該等速運動の終了を検出したら、残りのデータ要素である時間データを出力する。このような処理にすれば、速度情報が、等速運動の開始とともに出力されるため、外部機器において、位置・時間データ群をリアルタイムで再生することが可能となる。
鍵盤楽器100から位置・時間データ群が伝送された外部機器(例えば、パーソナルコンピュータ)においては、該位置・時間データ群を利用して、各種処理を実行することが可能となる。例えば、外部機器の表示装置に、移動部材の時系列的な位置を示す波形を表示することができる。この際、位置・時間データ群が、時間および位置の各々について関して連続しているため、データ格納順に位置をプロットするだけの処理で済む。また、表計算アプリケーションによる位置・時間データ群に関する各種処理も容易に行うことができる。
さらに、鍵盤楽器100によれば、移動部材の速度に応じて定周期配列、等速配列および停止配列のいずれかが選択されるため、演奏情報を示す位置・時間データ群のデータ量が低減され、鍵盤楽器100と外部機器とを接続するネットワークトラッフィックが抑制されることとなる。
また、上述した実施形態においては、移動部材が等速運動している状態を等速配列で示し、停止している状態を停止配列で示したが、これに限られない。例えば、両方の状態を、等速配列あるいは停止配列のいずれか一方で表現する構成としても良い。より詳細には、位置データ、時間データおよび位置データの順からなる停止配列によって、等速運動している状況を示す場合には、先頭の位置データに、等速運動の開始位置を示す情報を格納し、時間データに、等速運動の期間を示す情報を格納し、後尾の位置データに、等速運動の終了位置を示す情報を格納すれば良い。
一方、位置データ、速度データおよび時間データの順からなる等速配列によって、停止している状況を示す場合には、位置データに、停止位置を示す情報を格納し、速度データに、速度が「0」であることを示す情報を格納し、時間データに、停止時間を示す情報を格納すれば良い。
また、移動部材の速度が変化していない(移動部材が等速運動、あるいは、停止している)状態を表す配列のデータ要素は、位置データ、時間データおよび速度データの3つに限られない。例えば、速度が変化していない期間における移動部材の変位を表す差分データなど、データ要素として組み合わせることにより、速度が変化していない期間と、当該期間における変位とを特定することができるデータであれば、任意に移動部材の速度が変化していない状態を表す配列のデータ要素とすることができる。
上述した実施形態においては、演奏情報の生成にかかるセンサ(例えばキーセンサ310など)および電気的構成(図7および図9参照)を、鍵盤楽器100に内蔵する構成としたが、これらの演奏情報の生成にかかる各構成は、鍵盤楽器100と別体とする構成としても良い。これにより、演奏情報を生成する機能を有しない鍵盤楽器であっても、移動部材の詳細な動作を表す演奏情報(位置・時間データ)を作成することができる。例えば、骨董的や歴史的な価値を有する鍵盤楽器における演奏情報を作成することも可能となる。
上述した実施形態においては、各移動部材の位置を検出するセンサとして、光により距離を検出する検出する光反射センサを用いる例を示したがこれに限られない。例えば、磁気的に距離を検出する磁気センサなど、各被検出体の位置を連続的に検出することができる検出手段であれば、本発明を任意に適用可能である。また、各移動部材の位置を検出するセンサの代わりに各移動部材の速度や加速度などの移動部材の運動に関する物理量を検出するセンサを備え、検出された物理量から各移動部材の位置を求める構成としても良い。
上述した実施形態においては、1楽曲にかかる全ての演奏操作を位置・時間データ群として記録する例を説明したが、これに限られない。例えば、演奏操作の一部(特定の移動部材に関する演奏操作など)を、位置・時間データ群として記録し、その他の演奏操作を、イベント形式の演奏情報として記録する構成としても良い。
上述した実施形態においては、ひとつの移動部材別ファイルfにつき、ひとつのサンプリング周期をとる例を示したが、これに限られない。例えば、ハンマ142が打弦位置近傍に位置する場合や、鍵130が下連打時において向き(揺動角度)を変える近傍に位置する場合、ペダル150がハーフペダル領域近傍に位置する場合などの、演奏情報として重要な領域に移動部材が位置する場合のサンプリング周期が、それ以外の領域におけるサンプリング周期よりも短いものとなるような構成としても良い。また、鍵130がレスト位置にある場合には、サンプリング周期を長くする構成としても良い。これにより、データ量や処理量などを抑えつつ、演奏操作における重要な部分については、動作状況を詳細に表現する演奏情報を生成することができる。さらに、楽曲の途中であっても、演奏者や、移動状況(例えば、停止しているか否か)などに応じて、サンプリング周期を変更可能な構成にしても良い。
なお、サンプリング周期を変化させた場合には、その動作情報は、停止配列と同様の、位置データ、時間データおよび位置データからなる配列により表すことができる。この配列においては、先頭の位置データにより示される位置から、時間データにより示される時間(変化後のサンプリング周期)だけ経過した後に、後尾の位置データにより示される位置に移動したことを示している。
上述した実施形態においては、位置・時間データの記録にあたり、サンプリング周期が経過するたびにデータ要素を書き足しながら記憶部260に記録したが、これに限られない。例えば、RAM210において、演奏中に、位置・時間データ群の生成および更新を行い、演奏終了時にまとめて記憶部260に書き込む構成としても良い。
上述した実施形態においては、演奏情報フォルダを記憶部260に記録する例を示したがこれに限られない。例えば、鍵盤楽器100に、フレキシブルディスクや光ディスクなどの記録媒体に対してデータの読み書きを行うデータ記録再生装置を備え、該データ記録再生装置を介して、記録媒体に演奏情報フォルダを記録する構成としても良い。これにより、パーソナルコンピュータなどの外部機器とデータの授受を行うことが可能となる。
上述した実施形態における鍵盤楽器100の構成に加え、さらに、液晶ディスプレイなどの表示装置を備える構成としても良い。このような構成にすると、表示装置に位置・時間データ群を表示し、視覚的に演奏情報を表示させることが可能となる。
上述した実施形態においては、鍵130、ハンマ142、ペダル150およびダンパ160の位置・時間データ群を生成する例を説明した。しかし、鍵盤楽器に設けられ、演奏者(操作者)の操作に応じて移動する移動部材であれば、当該移動部材の動作状況を、演奏情報として生成することがきる。
上述した実施形態においては、移動部材の速度が変化している場合のみ、定周期配列により演奏情報を生成したが、さらに、移動部材が等速で移動している場合に、定周期配列により演奏情報を生成しても良い。
100…鍵盤楽器、110…棚板、120…筬中、130…鍵、135,145,155,165…被検出部材、140…アクション機構、150…ペダル、142…ハンマ、S…弦、200…CPU、210…RAM、220…ROM、230…操作部、240…時計部、250K,250H,250P,250D…A/D変換部、260…記憶部、270…外部インターフェース、300,400,500,600…支持部材、310…キーセンサ、410…ハンマセンサ、510…ペダルセンサ、610…ダンパセンサ