説明

鍵盤楽器

【課題】動作ルールに基づいて鍵を動作させて演奏をするときに、利用者の演奏操作などにより実際に動作した鍵の動作内容を反映して、続いて動作させる鍵の動作内容を決定すること。
【解決手段】本発明の一実施形態に係る自動演奏ピアノは、過去の鍵の動作内容に対して次に動作すべき鍵の動作内容を規定した動作ルールにしたがって自動演奏を行うパッセージ演奏モードにおいて、動作ルールにしたがって動作すべき鍵の動作内容と、実際に動作した鍵の動作内容とを比較して、動作ルールを変更することができる。これにより、利用者の鍵の演奏操作により、自動演奏の内容をリアルタイムに変更していくことができる。また、動作ルールにしたがった自動演奏による実際に動作した鍵の動作内容が、目標とする動作内容とずれる場合においても動作ルールの変更を行って、このようなずれを少なくするように補正することもできる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、鍵盤楽器における自動演奏を制御する技術に関する。
【背景技術】
【0002】
ピアノなどの鍵盤楽器においては、演奏者が演奏する場合に限らず、楽曲データなどに基づいて自動演奏を行うものも存在する。このような自動演奏を行う場合には、電子的に音を発音させるために、楽曲データに基づいてオーディオデータを生成するものや、楽曲データに基づいてピアノの各鍵をソレノイドなどにより電気的に駆動し、発音機構を動作させて打弦することで発音させるものがある。このように、鍵を駆動することができるピアノは、様々な鍵の動きを再現することにより、本格的な自動演奏を楽しむこともできる。
このような鍵を駆動することができるピアノにおいては、演奏者の演奏と複合して用いられることにより、演奏者の演奏を支援するものとしても用いられる。例えば、特許文献1には、演奏者が簡単な演奏操作を行うだけで、高度な演奏技術を用いた演奏をしているかのように、鍵を駆動することが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−20455号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ピアノに自動演奏をさせている場合に、その聴取者は、自らもそのピアノを用いて演奏をしてアンサンブルを楽しむことができる。一方、このような自動演奏は予め決められた楽曲データにしたがって行われるため、自らの演奏をどのように行っても自動演奏に反映されることはない。すなわち、自らが演奏をしている途中、また演奏後においても、楽曲データにしたがって自動演奏が続くことになっていた。
本発明は、上述の事情に鑑みてなされたものであり、動作ルールに基づいて鍵を動作させて演奏をするときに、利用者の演奏操作などにより実際に動作した鍵の動作内容を反映して、続いて動作させる鍵の動作内容を決定することを目的とする。
【課題を解決するための手段】
【0005】
上述の課題を解決するため、本発明は、鍵を複数有する鍵盤と、前記鍵の動作内容を検出する検出手段と、指示に応じて前記鍵を駆動して動作させる駆動手段と、過去の前記鍵の動作内容または過去に決定した前記鍵の動作内容に応じて次に動作させる鍵の動作内容を定めた動作ルールに基づいて、次に動作させる鍵の動作内容を決定する決定手段と、前記決定された動作内容で前記鍵が動作するように、前記駆動手段に指示を行う指示手段と、前記検出された動作内容と前記決定された動作内容とを比較し、比較結果に応じて前記動作ルールを変更する変更手段とを具備することを特徴とする鍵盤楽器を提供する。
【0006】
また、別の好ましい態様において、前記指示手段は、前記変更手段による比較対象となった前記決定された動作内容に係る指示をしていない場合には、当該内容に係る指示を中止することを特徴とする。
【0007】
また、別の好ましい態様において、前記変更手段は、前記検出された動作内容が前記駆動手段による鍵の駆動に対して検出された動作内容である場合には、前記動作ルールを変更しないことを特徴とする。
【0008】
また、別の好ましい態様において、前記変更手段は、前記検出された動作内容が前記駆動手段による鍵の駆動に対して検出された動作内容である場合には、当該検出された動作内容と当該駆動を行うために前記決定手段により決定された動作内容とを比較することを特徴とする。
【0009】
また、本発明は、鍵を複数有する鍵盤と、前記鍵の動作内容を検出する検出手段と、指示に応じて前記鍵を駆動して動作させる駆動手段と、予め決められたルールに基づいて、次に動作させる鍵の動作内容を決定する決定手段と、前記決定された動作内容で前記鍵が動作するように、前記駆動手段に指示を行う指示手段と、前記検出された動作内容と前記決定された動作内容とを比較し、比較結果に応じて、追加して動作させる鍵の動作内容を決定する追加決定手段とを具備し、前記指示手段は、前記追加決定手段による決定があった場合には、当該決定された動作内容を前記決定手段によって決定された動作内容に追加した動作内容で前記鍵が動作するように、前記駆動手段に指示を行うことを特徴とする鍵盤楽器を提供する。
【発明の効果】
【0010】
本発明によれば、動作ルールに基づいて鍵を動作させて演奏をするときに、利用者の演奏操作などにより実際に動作した鍵の動作内容を反映して、続いて動作させる鍵の動作内容を決定することができる。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施形態に係る自動演奏ピアノの外観を示す斜視図である。
【図2】本発明の一実施形態に係る自動演奏ピアノの主要部の電気的構成を示すブロック図である。
【図3】本発明の一実施形態に係る自動演奏ピアノの機械的構成および電気的構成との関係を説明する図である。
【図4】本発明の一実施形態に係るサーボコントローラの構成を示すブロック図である。
【図5】本発明の一実施形態に係るモーションコントローラの構成を示すブロック図である。
【図6】本発明の一実施形態に係るカウント部におけるカウント処理を説明するフローチャートである。
【図7】本発明の一実施形態に係る差分算出部における差分算出処理を説明するフローチャートである。
【図8】本発明の一実施形態に係る自動演奏ピアノにおける鍵10の動作例を説明する図である。
【図9】変形例1に係る鍵の動作例を説明する図である。
【図10】変形例2に係る鍵の動作例を説明する図である。
【図11】本発明の変形例3に係る自動演奏ピアノの機械的構成および電気的構成との関係を説明する図である。
【図12】本発明の変形例3に係るモーションコントローラの構成を示すブロック図である。
【図13】変形例3に係る鍵の動作例を説明する図である。
【図14】変形例4に係るモーションコントローラの構成を示すブロック図である。
【図15】鍵の離鍵動作が終了する前に、演奏者が同じ鍵を押鍵した場合の演奏検出処理を説明するフローチャートである。
【図16】図15に示すフローチャートに続く部分のフローチャートである。
【図17】鍵の離鍵動作が終了する前に、演奏者が異なる鍵を押鍵した場合に用いられる別モジュール起動処理を説明するフローチャートである。
【発明を実施するための形態】
【0012】
<実施形態>
[全体構成]
図1は、本発明の一実施形態に係る自動演奏ピアノ1の外観を示す斜視図である。自動演奏ピアノ1は、その前面に演奏者によって演奏操作がなされる鍵10が複数配列された鍵盤を有する。演奏者から見て鍵10の手前側の前端が押し下げられる動作を「押鍵動作」といい、その状態から元に戻る、すなわち押し上げられる動作を「離鍵動作」という。また、自動演奏ピアノ1は、ディスクドライブ120および操作パネル130を有する。
【0013】
図2は、自動演奏ピアノ1の主要部の電気的構成を示すブロック図である。また、図3は、自動演奏ピアノ1の機械的構成および電気的構成との関係を説明する図である。自動演奏ピアノ1は、バスにより互いに接続されたコントローラ110、ディスクドライブ120、操作パネル130、電子音発生部140、PWM(Pulse Width Modulation)信号発生部150、A/D変換部161、162、および通信I/F170を有するとともに、PWM信号発生部150に接続されたソレノイド50、A/D変換部161に接続された鍵センサ61、およびA/D変換部162に接続されたハンマセンサ62を有する。PWM信号発生部150、A/D変換部161、162、ソレノイド50、鍵センサ61、ハンマセンサ62は、それぞれ、各鍵10に対応して設けられる。すなわち、鍵盤が有する鍵10の数が88鍵であれば、88組存在する。
【0014】
コントローラ110は、CPU(Central Processing Unit)111などの演算装置、ROM(Read Only Memory)112、およびRAM(Random Access Memory)113などの記憶装置を有する。コントローラ110は、記録装置に記憶されている制御プログラムや制御データに基づいて、自動演奏ピアノ1の各部を制御する。この例においては、コントローラ110は、制御プログラムの実行により、図3に示すように演奏検出部200、モーションコントローラ300およびサーボコントローラ400の各機能を実現する。なお、これらの各機能の一部または全部をソフトウエアではなくハードウエアにより実現してもよい。
【0015】
ディスクドライブ120は、DVD(Digital Versatile Disk)やCD(Compact Disk)などの記録媒体に記録された各種データを読み出し、読み出したデータをコントローラ110に出力する。このデータとしては、楽曲データ、制御プログラムなどがある。この例においては、制御プログラムの実行において用いられる動作ルール情報、初期設定情報を含むものとする。動作ルール情報は、後述するように、特定の演奏モード(この例においては、パッセージ演奏モードという)において、鍵10の動作内容を決定するための動作ルールが規定されている情報である。
【0016】
この動作ルールは、過去の鍵10の動作に応じて次に動作させる鍵10(鍵番号)およびその鍵10の軌道(押鍵から離鍵までの鍵10の動き)を定めたものである。詳細については後述する。動作内容とは、動作させる鍵10とその鍵10の軌道を特定するための内容である。また、初期設定情報とは、パッセージ演奏モードにおいて最初に動作させる鍵10の動作内容を定めた情報である。
【0017】
ここで、パッセージ演奏モードとは、以下のような処理を行う自動演奏のモードである。まず、動作ルールにしたがって鍵10が動作するように自動演奏を行う。また、その自動演奏中に、動作ルールにしたがって決められた鍵10の動作内容と、実際に動作した鍵10の動作内容(利用者の演奏操作による鍵10の動作内容および動作ルールにしたがった自動演奏による鍵10の動作内容)との関係から動作ルールが変更される。以降の自動演奏は、変更された動作ルールにしたがって自動演奏が行われ、この処理が繰り返される。
【0018】
操作パネル130は、液晶ディスプレイなどの表示画面、および表示画面の表面部分にはタッチセンサなどの操作部を有するタッチパネルである。この表示画面には、コントローラ110の制御により、各種動作モードの設定などを行う設定画面、楽譜などの各種情報が表示される。また、タッチセンサにより利用者の操作が受け付けられると、操作に応じた操作信号がコントローラ110に出力される。これらの操作には、動作モードをパッセージ演奏モードに設定し、パッセージ演奏モードによる演奏開始タイミングを指定する操作が含まれる。
【0019】
電子音発生部140は、コントローラ110の制御により電子的な楽音を発生させる装置である。電子楽音発生部140は、例えば、コントローラ110の制御により電子的な楽音を示すオーディオ信号を生成する音源、およびそのオーディオ信号を放音するスピーカなどを有する。この電子音発生部140は、後述するハンマ25が弦40を打撃することによる発音以外に音を発生させたい場合、例えば、自動演奏におけるピアノ音以外での伴奏の発音、消音モード(ハンマ25の打弦を阻止するモード)などにおけるピアノ音の発音などに用いられる。
【0020】
PWM信号発生部150は、コントローラ110の制御により、PWM形式の駆動電流をソレノイド50に供給する。ソレノイド50は、PWM信号発生部150から供給される駆動電流によりプランジャが動作し、鍵10を駆動する。ソレノイド50は、プランジャが上昇することで鍵10が押鍵動作をするように駆動し、プランジャが下降することで離鍵動作をするように駆動する。具体的には、ソレノイド50は、演奏者から見て各鍵10の奥側の後端側下方に配置されている。このソレノイド50は、プランジャを上昇させて鍵10の後端を突き上げると、鍵10がバランスピンPを中心に回動して鍵10の前端側が押し下げられ、鍵10が押鍵動作をする。この押鍵動作に連動してアクションメカニズム20が作動し、ダンパ30が弦40から離れるとともに、ハンマ25が回動して弦40を打撃して発音する。その後プランジャが下降すると鍵10の前端側が押し上げられ、鍵10が離鍵動作をする。
【0021】
ここでは、ソレノイド50により鍵10が駆動された場合を説明したが、演奏者が鍵10を演奏操作して駆動することにより、鍵10が押鍵動作、離鍵動作を行った場合においても同様である。すなわち、押鍵動作、離鍵動作のための鍵10の駆動を行うのが、ソレノイド50であるか演奏者であるかの違いだけである。
【0022】
鍵センサ61は、鍵10が駆動することにより移動した量(以下、押鍵量(この例においては、0から10mm)という)を検出し、検出結果に応じた検出信号を出力する。鍵センサ61は、例えば、発光ダイオード、発光ダイオードの光を受光し受光量に応じた検出信号を出力する光センサ、および鍵10の押鍵量に応じて受光センサへの受光量を変化させる遮光板を有する。A/D変換部161は、鍵センサ61から出力されるアナログ信号である検出信号をデジタル信号に変換した鍵位置検出データをコントローラ110に出力し、コントローラ110に鍵10の押鍵量を認識させる。
【0023】
ハンマセンサ62は、ハンマ25による弦40の打撃を検出するセンサであり、検出結果に応じた検出信号を出力する。なお、鍵センサ61と同様に、ハンマ25の位置を検出し、その検出結果に応じた検出信号を出力するようにしてもよい。A/D変換部162は、ハンマセンサ62から出力されるアナログ信号である検出信号をデジタル信号に変換したハンマ検出データをコントローラ110に出力し、コントローラ110にハンマ25による弦40の打撃を認識させる。
【0024】
通信I/F(インターフェイス)170は、無線、有線などにより他の装置と通信を行うインターフェイスである。各種データ、制御プログラムについては、ディスクドライブ120を用いて取得するだけでなく通信I/F170を用いて、他の装置から受信することにより、コントローラ110に取得させてもよい。
【0025】
[演奏検出部200の構成]
演奏検出部200は、A/D変換部161、162から鍵検出データ、ハンマ検出データを取得して、各鍵10の動作内容を検出し、鍵10の動作内容を示すパラメータとして位置(鍵番号k)および鍵10の軌道を示す演奏パラメータを生成してモーションコントローラ300に出力する。鍵番号kは、鍵盤の各鍵10ごとに割り当てられ、この例においては、最低音に対応する鍵10を「k=1」とし、半音高くなるごとに鍵番号が1ずつ増加し、最高音に対応する鍵10を「k=88」とする。
【0026】
また、鍵10の軌道を示す演奏パラメータとしては、この例においては、押鍵時刻tp、押鍵速度vp、離鍵時刻tn、離鍵速度vnである。ここで、押鍵時刻tpおよび離鍵時刻tnとは、それぞれ、予め決められたタイミング(この例においては、パッセージ演奏モードを開始したタイミング)を基準とした時刻(単位はmsec.とする)で表されるパラメータである。そして、押鍵時刻tpは押鍵動作を開始したタイミングを示し、離鍵時刻tnは離鍵動作を開始したタイミングである。例えば、tp=1000であれば、パッセージ演奏モードを開始してから1000msec.経過後のタイミングに押鍵動作を開始したことを示す。この経過した時間の測定は図示しないタイマなどにより行う。
【0027】
押鍵速度vp、離鍵速度vnは、それぞれ押鍵動作、離鍵動作における鍵10の速度を示す演奏パラメータであり、「1」から「127」の範囲を取り、数値が大きいほど速い動作であることを示す。押鍵速度vpは、押鍵動作において例えば鍵10の押鍵量が、1mmから9mmまでに変化するまでに要した時間に応じて決められ、MIDI(Musical Instrument Digital Interface)データにおけるベロシティに対応する演奏パラメータである。離鍵速度vnについては、離鍵動作において例えば鍵10の押鍵量が、9mmから1mmまでに変化するまでに要した時間に応じて決められる。
【0028】
演奏検出部200は、これらの演奏パラメータをA/D変換部161、162から取得した各データから決定して出力するが、A/D変換部162から取得したハンマ検出データを用いなくてもよい。すなわち、鍵10の押鍵量(鍵検出データ)のみから演奏パラメータを生成してもよい。
【0029】
演奏検出部200は、鍵10の押鍵動作、離鍵動作が行われると、演奏パラメータとしてまず、鍵番号kおよび押鍵時刻tpを生成し、その後、押鍵量が増加することで押鍵速度vpを生成する。そして、離鍵動作が開始されると離鍵時刻tnを生成し、押鍵量が減少することで離鍵速度vnが生成される。このように、一度の押鍵動作、離鍵動作によって、各演奏パラメータが生成されるタイミングが異なるが、演奏検出部200は、演奏パラメータを生成するたびに順次出力していく。ただし、演奏検出部200は、1つの鍵10における一連の押鍵動作、離鍵動作に対して生成した演奏パラメータについては、それぞれ異なるタイミングに出力されても互いの対応関係が認識できるようにして出力する。
次に、サーボコントローラ400の構成について、図4を用いて説明する。
【0030】
[サーボコントローラ400の構成]
図4は、サーボコントローラ400の構成を示すブロック図である。サーボコントローラ400は、正規化部410、位置生成部420、速度生成部430、減算部440、増幅部450および加算部460を有する。これらの各構成は、各鍵10に対応して設けられている。
正規化部410は、A/D変換部161から出力された鍵検出データを取得して、予め決められた正規化処理を行い出力する。位置生成部420は、正規化部410から出力されたデータから、鍵10の位置に対応した鍵位置値yxを生成して、モーションコントローラ300に出力する。速度生成部430は、正規化部410から出力されたデータの時間変化から、鍵10の速度に対応した鍵速度値yvを生成して、モーションコントローラ300に出力する。
【0031】
減算部440は、後述するようにモーションコントローラ300から出力される鍵位置指示値rxと、位置生成部420から出力される鍵位置値yxとを取得し、鍵位置指示値rxから鍵位置値yxを減算して位置差分値を出力する。増幅部450は、減算部440から出力された位置差分値を予め決められた増幅率で増幅して、位置制御信号uxとして出力する。加算部460は、増幅部450から出力された位置制御信号uxと、モーションコントローラ300から出力される電流オフセットufとを取得し、それぞれ加算してソレノイド制御信号uとして出力する。
このソレノイド制御信号uがPWM信号発生部150に入力されると、PWM形式の駆動電流に変換してソレノイド50に供給する。これによりソレノイド50は、順次出力される鍵指示値rxに応じて鍵10が動作するように、鍵10を駆動する。
次に、モーションコントローラ300の構成について、図5を用いて説明する。
【0032】
[モーションコントローラ300の構成]
図5は、モーションコントローラ300の構成を示すブロック図である。ここで説明するモーションコントローラ300の構成については、自動演奏ピアノ1がパッセージ演奏モードで動作する場合を示す。モーションコントローラ300は、動作ルール情報310、初期設定情報320、鍵動作決定部330、鍵動作指示部340、カウント部350、差分算出部360および動作ルール変更部370を有する。
【0033】
動作ルール情報310は、上述したように、パッセージ演奏モードにおいて、鍵10の動作内容を決定するための動作ルールが規定されている情報であり、この動作ルールは、過去の鍵10の動作内容に応じて次に動作させる鍵10の動作内容を定めたものである。この例においては、次に動作させるべき鍵10の動作内容のパラメータについて、最後に動作させた鍵10に対する変位量として規定した予定変位量ベクトルg[i]が動作ルールとして規定されている。この例においては、予定変位量ベクトルg[i]のパラメータは、鍵番号の予定変位量gk[i](−87〜+87)、押鍵時刻の予定変位量gtp[i](単位msec.)、押鍵速度の予定変位量gvp[i](−126〜+126)、離鍵時刻の予定変位量gtn[i](単位msec.)、離鍵速度の予定変位量gvn[i](−126〜+126)である。
【0034】
「i」は、パッセージ演奏モードが開始されてから鍵10の動作回数を示すものであり、「i=0」は初期値、「i=1」からはパッセージ演奏モードによる鍵10の動作に応じて増加するカウント数を示す。後述するように、動作ルール情報310におけるg[i]は、「i」のカウントにしたがって動作ルール変更部370によって変更処理がなされ、最新のg[i]が鍵動作決定部330に読み出される。すなわち、動作ルール情報310は、まず、g[0]が規定され、続いてg[1]、g[2]、・・・といったように変更処理がなされて、g「1]から順次鍵動作決定部330に読み出されていく。
【0035】
初期設定情報320は、鍵10の駆動目標量ベクトルr[i]の初期値r[0]が規定された情報である。ここで、駆動目標量ベクトルr[i]とは、ソレノイド50により鍵10を駆動するときの動作内容を定めたものである。この例においては、駆動目標量ベクトルr[i]のパラメータは、目標鍵番号rk[i](1〜88)、目標押鍵時刻rtp[i](単位msec.)、目標押鍵速度rvp[i](1〜127)、目標離鍵時刻rtn[i](単位msec.)、目標離鍵速度rvn[i](1〜127)である。すなわち、初期設定情報320には、rk[0]、rtp[0]、rvp[0]、rtn[0]、rvn[0]が規定されている。
【0036】
鍵動作決定部330は、パッセージ演奏モードが指定されると初期設定情報320からr[0]を読み出し、差分算出部360に出力する。また、鍵動作決定部330は、パッセージ演奏モードの演奏開始タイミングを基準として、rtp[0]に規定された時刻に応じてr[0]を鍵動作指示部340に出力する。例えば、rtp[0]に規定された時刻に鍵10の押鍵動作が開始されるように、rtp[0]が規定する時刻に応じて出力する。
【0037】
さらに、鍵動作決定部330は、後述するようにして差分算出部360から出力されるy[0]を取得する。ここで、駆動結果検出量ベクトルy[i]とは、鍵10が動作した結果、鍵センサ61によって検出された結果、すなわち演奏検出部200から出力される演奏パラメータにより得られる鍵10の動作内容を定めたものである。この例においては、駆動結果検出量ベクトルy[i]のパラメータは、検出鍵番号yk[i](1〜88)、検出押鍵時刻ytp[i](単位msec.)、検出押鍵速度yvp[i](1〜127)、検出離鍵時刻ytn[i](単位msec.)、検出離鍵速度yvn[i](1〜127)である。
【0038】
y[0]を取得すると、鍵動作決定部330は、動作ルール情報310からg[1]を読み出す。鍵動作決定部330は、取得したg[1]、y[0]に応じて、次に動作させる鍵10についてのr[1]を決定する。そして、鍵動作決定部330は、r[1]を差分算出部360に出力し、rtp[1]に規定された時刻に応じてr[1]を鍵動作指示部340に出力する。このr[1]は、以下の式(1)で算出される。
r[1]=y[0]+g[1] ・・・(1)
ここではi=0、1の場合について説明したが、一般化したi=mである場合においては、以下のような処理となる。
【0039】
鍵動作決定部330は、差分算出部360からy[m]を取得すると、動作ルール情報310からg[m+1]を読み出し、以下の式(2)によりr[m+1]を決定する。そして、鍵動作決定部330は、r[m+1]を差分算出部360に出力し、rtp[m+1]に規定された時刻に応じてr[m+1]を鍵動作指示部340に出力する。
r[m+1]=y[m]+g[m+1] ・・・(2)
各パラメータとしては、
rk[m+1]=yk[m]+gk[m+1]
rtp[m+1]=ytp[m]+gtp[m+1]
rvp[m+1]=yvp[m]+gvp[m+1]
rtn[m+1]=ytn[m]+gtn[m+1]
rvn[m+1]=yvn[m]+gvn[m+1]
である。
【0040】
ここで、鍵動作決定部330は、後述するように差分算出部360から中止情報Cs[m+1]が入力されたときに、鍵動作決定部330が鍵動作指示部340にr[m+1]を出力する前である場合には、そのr[m+1]の出力を中止する。この場合、i=m+1に係る鍵10の動作は行われない。このように、中止情報Cs[m]は、鍵動作決定部330から鍵動作指示部340に対してr[m]の出力がされていない場合に、その出力の中止してi=mに係る鍵10の動作の中止を指示するものである。一方、r[m]の出力がされた後である場合には、出力の中止は不可能であるため、その指示は無視される。
【0041】
鍵動作指示部340は、鍵動作決定部330からr[i]を取得して、r[i]に示すパラメータで鍵10が動作するように、動作させる鍵10に対応したサーボコントローラ400に対して予め決められたサーボ制御周期で鍵位置指示値rxおよび電流オフセットufを出力する。このとき、鍵動作指示部340は、対応するサーボコントローラ400から鍵位置値yxおよび鍵速度値yvを取得し、現在の鍵位置、鍵速度を認識することにより電流オフセット出力値に反映させる。
なお、自動演奏ピアノ1がパッセージ演奏モードではなく、MIDIデータなどの楽音データにしたがって自動演奏させる通常自動演奏モードである場合には、鍵動作指示部340における鍵位置指示値rx、電流オフセットufについては、自動演奏に用いられる楽音データにしたがって出力される。
【0042】
カウント部350は、演奏検出部200から出力される演奏パラメータを取得し、「i」のカウントを行うとともにy[i]の出力を行う。この処理をカウント処理という。カウント処理の開始は、パッセージ演奏モードの開始に伴って行われる。カウント部350の具体的なカウント処理について、図6を用いて説明する。
【0043】
図6は、カウント部350におけるカウント処理を説明するフローチャートである。まず、カウント部350は、「i」のカウント数「m=0」として初期化を行う(ステップS110)。続いて、カウント部350は、演奏検出部200から出力される演奏パラメータの取得を待つ(ステップS120;No)。演奏パラメータを取得すると(ステップS120;Yes)、カウント部350は、y[m]の各パラメータのうち、取得した演奏パラメータを、対応したパラメータに設定し(ステップS130)、y[m]のうち設定したパラメータを差分算出部360に出力する(ステップS140)。例えば、取得した演奏パラメータが鍵番号kであれば、その値をyk[m]に設定して、差分算出部360に出力する。
【0044】
続いて、カウント部350は、y[m]について全てのパラメータを出力したかを判定する(ステップS150)。全てのパラメータを出力していないと判定した場合(ステップS150;No)には、ステップS120に戻る。
ここで、上述したように、一度の押鍵、離鍵操作により、カウント部350は、演奏パラメータとして、まず、鍵番号kおよび押鍵時刻tpを取得する。そして、押鍵速度vp、離鍵時刻tn、離鍵速度vnの順に取得する。このように、カウント部350は、各演奏パラメータの取得について時間差を持って行うことになり、y[m]の各パラメータの出力も時間差を持って行われることになる。例えば、カウント部350は、yk[m]、ytp[m]は、yvp[m]、ytn[m]、yvn[m]に先立って出力する。
【0045】
そして、カウント部350は、y[m]について全パラメータの出力が終了したと判定する(ステップS150;Yes)と、後述するように差分算出部360から出力される指示情報Ps[m]の取得を待つ(ステップS160;No)。
カウント部350は、指示情報Ps[m]を取得する(ステップS160;Yes)と、その値が「Ps[m]=1」であるか否(「Ps[m]=0」)かを判定する(ステップS170)。カウント部350は、「Ps[m]=1」であると判定した場合(ステップS170;Yes)は、「m=m+1」と「i」のカウント数「m」を増加させる(ステップS181)一方、「Ps[m]=0」であると判定した場合(ステップS170;No)は、「m=m+0」と「i」のカウント数「m」を増加させない(ステップS182)。このように、指示情報Ps[m]は、「i」のカウント数「m」を「1」増加させるか否かを指示するものである。
そして、カウント部350は、このように決定した「i」のカウント数「m」により、再びステップS120からの処理を続ける。以上が、カウント部350におけるカウント処理の説明である。
【0046】
図5に戻って説明を続ける。差分算出部360は、カウント部350からy[i]、鍵動作決定部330からr[i]を取得し、取得に伴って開始される差分算出処理を行って、カウント部350へ指示情報Ps[i]、鍵動作決定部330へy[i]および中止情報Cs[i]、動作ルール変更部370に差分量ベクトルe[i]を出力する。
ここで、差分量ベクトルe[i]とは、以下の式(3)により表される。
e[m]=y[m]−r[m] ・・・(3)
この例においては、差分量ベクトルe[i]のパラメータは、差分鍵番号ek[i]、差分押鍵時刻etp[i]、差分押鍵速度evp[i]、差分離鍵時刻etn[i]、差分離鍵速度evn[i]である。したがって、各パラメータとしては、
ek[m]=yk[m]−rk[m]
etp[m]=ytp[m]−rtp[m]
evp[m]=yvp[m]−rvp[m]
etn[m]=ytn[m]−rtn[m]
evn[m]=yvn[m]−rvn[m]
である。
差分算出部360における差分算出処理について図7を用いて説明する。
【0047】
図7は、差分算出部360における差分算出処理を説明するフローチャートである。まず、差分算出部360は、取得したy[m]のうちytp[m]と、取得したr[m−1]のうちrtp[m−1]とを比較して、y[m]に係る実際に動作した鍵10の動作内容が、r[m−1]に係る目標として動作させた鍵10の動作内容を比較対象とするものかr[m]に係る目標として動作させる鍵10の動作内容を比較対象とするものかについて判定する。この例においては、どちらの押鍵時刻に近いかを判定するものとし、具体的には、差分算出部360は、ytp[m]>rtp[m−1]+αを満たすか否かの判定を行う(ステップS210)。この例においては、α=(rtp[m]−rtp[m−1])/2とするが、α=200(msec.)など固定値としてもよい。
【0048】
差分算出部360は、この条件を満たす場合、すなわち、ytp[m]がrtp[m−1]よりrtp[m]に近い場合(ステップS210;Yes)には、指示情報Ps[m]=1としてカウント部350へ出力する(ステップS220)。一方、差分算出部360は、この条件を満たさない場合、すなわち、ytp[m]がrtp[m]よりrtp[m−1]に近い場合(ステップS210;No)には、指示情報Ps[m]=0としてカウント部350へ出力する(ステップS310)。このように出力される指示情報Ps[m]は、上述したようにカウント部350において「i」のカウント数「m」を増加させるか否かの指示となる。
【0049】
次に、ステップS220における処理が行われた場合に、続いて行われる処理を説明する。差分算出部360は、中止情報Cs[m]を鍵動作決定部330に出力する(ステップS230)。このように出力される中止情報Cs[m]は、上述したように鍵動作決定部330において、鍵動作指示部340へのr[m]の出力を中止する指示となる。
例えば、r[m]に基づいて次に動作させる鍵10の押鍵動作が開始する直前に利用者が鍵10の押鍵動作を行うと、その結果として差分算出部360がy[m]を取得してCs[m]が出力され、鍵動作決定部330によるr[m]の鍵動作指示部340への出力が中止されるから、次に動作させる鍵10の押鍵動作が中止されることになる。一方、r[m]に基づいて次に動作させる鍵10の押鍵動作が開始され、その結果として差分算出部360がy[m]を取得した場合においても中止情報Cs[m]を出力するが、鍵動作決定部330は、r[m]を既に出力した後であるため、上述したように、この中止情報Cs[m]は無視される。
【0050】
続いて、差分算出部360は、カウント部350からy[m]の全てのパラメータが取得されるのを待つ(ステップS240;No)。差分算出部360は、y[m]の全てのパラメータを取得する(ステップS240;Yes)と、上述したように、比較対象であるy[m]およびr[m]の差分を示すe[m](=y[m]−r[m])を算出する(ステップS250)。そして、差分算出部360は、算出したe[m]を動作ルール変更部370に出力し(ステップS260)、取得したy[m]を鍵動作決定部330に出力し(ステップS270)、差分算出処理を終了する。
【0051】
次に、ステップS310における処理が行われた場合に、続いて行われる処理を説明する。差分算出部360は、カウント部350からy[m]の全てのパラメータが取得されるのを待つ(ステップS320;No)。差分算出部360は、y[m]の全てのパラメータを取得する(ステップS320;Yes)と、y[m]をy[m−1]に代入(y[m−1]=y[m])する(ステップS330)。これは、ステップS210で判定されたように、取得したy[m]に係る実際に動作した鍵10の動作内容が、r[m−1]に係る目標として動作させた鍵10の動作内容を比較対象とするものであるから、y[m]の「m」を「m−1」に置き換えるものである。
【0052】
続いて、差分算出部360は、y[m−1]およびr[m−1]とを比較して、これらの差分を示すe[m−1](=y[m−1]−r[m−1])を算出する(ステップS340)。そして、差分算出部360は、算出したe[m−1]を動作ルール変更部370に出力し(ステップS350)、取得したy[m−1]を鍵動作決定部330に出力し(ステップS360)、差分算出処理を終了する。以上が差分算出部360における差分算出処理の説明である。
【0053】
図5に戻って説明を続ける。動作ルール変更部370は、差分算出部360から出力されるe[i]を取得し、動作ルール情報310におけるg[i]を変更する。
ここで、g[m+1]=g[m]+e[m]であり、各パラメータとしては、
gk[m+1]=gk[m]+ek[m]
gtp[m+1]=gtp[m]+etp[m]
gvp[m+1]=gvp[m]+evp[m]
gtn[m+1]=gtn[m]+etn[m]
gvn[m+1]=gvn[m]+evn[m]
である。
ここで、動作ルール変更部370は、差分算出部360から出力されたe[m−1]を取得した場合には、g[m+1]に変更するのではなく、すでに存在するg[m]の内容を変更することになる。そして、鍵動作決定部330は、再びg「m」を読み出して、r[m]の内容を変更することになる。以上がモーションコントローラ300の構成の説明である。
【0054】
[動作例]
次に、パッセージ演奏モードにおける自動演奏ピアノ1の具体的な動作例を説明する。利用者は、操作パネル130を操作して動作モードをパッセージ演奏モードとし、演奏開始タイミングを指定する。これにより、鍵動作決定部330は、初期設定情報320からr[0]を読み出して、演奏開始タイミングになったら上述した処理を開始する。ここで、r[0]の各パラメータは、rk[0]=40、rtp[0]=1000、rvp[0]=64、rtn[0]=1500、rvn[0]=64であるものとする。また、動作ルール情報310におけるg[0]の各パラメータは、gk[0]=0、gtp[0]=1000、gvp[0]=0、gtn[0]=1000、gvn[0]=0であるものとする。この場合、g[i]の各パラメータの値が変更されない場合には、鍵番号40(鍵盤中央のC)の鍵10の押鍵動作を1000(msec.)間隔で行い、押鍵動作開始から離鍵動作開始まで500(msec.)となる。また、押鍵動作、離鍵動作ともに鍵速度は64となる。そのため、Cの発音が1秒ごとに行われることになる。
【0055】
図8は、自動演奏ピアノ1における鍵10の動作例を説明する図である。図8に示す表は、「i」のカウント数の増加にしたがって、変化する各パラメータの値を示している。この例においては、演奏開始タイミングから1000(msec.)後、2000(msec.)後とCの発音が行われ、r[2]に係る3000(msec.)後に鍵番号40の鍵10が押鍵動作を開始する直前に、利用者が鍵番号42の鍵10の押鍵動作を開始したものとする。ここで、説明を簡易にするために、利用者による押鍵動作は、r[2]に係る押鍵動作直前ではあるものの、ytp[2]=3000として検出されたものとし、他の動作内容は、図8に示すようにyk[2]=42、ytp[2]=64、ytn[2]=3500、yvn[2]=64である。
【0056】
このように利用者が鍵番号42の鍵10の押鍵動作を開始したことにより、r[2]に係る鍵番号40の鍵10の動作は中止される。なお、既にr[2]に係る動作が行われ、その直後に利用者が鍵番号42の鍵10の押鍵動作を開始した場合には、利用者の鍵10の演奏操作によっては、カウント部350からy「3」の各パラメータとして出力されるが、差分算出部360においてy[2]の各パラメータであるものとして修正される(図7ステップS330)。また、カウント部350から次に出力されるパラメータについては、「i」のカウント数が増加せず、再びy[3]となる。
【0057】
利用者の鍵10の演奏操作により、ek[2]=2となり、動作ルール変更部370によりgk[2]=0であったものがgk[3]=2に変更される。そのため、演奏開始タイミングから4000(msec.)後、5000(msec.)後においては、E(鍵番号44)の発音、F#(鍵番号46)の発音と続くことになる。
同様に、演奏開始タイミングから7000(msec.)後において、利用者が鍵番号47の鍵10の押鍵動作を開始したものとすると、ek[6]=−3となり、動作ルール変更部370によりgk[6]=2であったものがgk[7]=−1に変更される。そのため、演奏開始タイミングから8000(msec.)後、9000(msec.)後においては、F#(鍵番号46)の発音、F(鍵番号45)の発音と続くことになる。なお、図8における太枠で囲った部分は、利用者の演奏操作によりy[i]がr[i]と異なるものとなった部分を示している。
以上が、自動演奏ピアノ1における動作例の説明である。
【0058】
以上、本発明の一実施形態に係る自動演奏ピアノ1は、過去の鍵10の動作内容に対して次に動作すべき鍵10の動作内容を規定した動作ルールにしたがって自動演奏を行うパッセージ演奏モードにおいて、動作ルールにしたがって動作すべき鍵10の動作内容と、実際に動作した鍵10の動作内容とを比較して、動作ルールを変更することができる。これにより、利用者の鍵10の演奏操作により、自動演奏の内容をリアルタイムに変更していくことができる。また、鍵10の駆動機構の影響により、動作ルールにしたがった自動演奏による実際に動作した鍵10の動作内容(y[i])が、目標とする動作内容(r[i])と異なる場合もあるが、その場合にも動作ルールの変更を行うことができるから、動作ルールの変更条件によっては、このようなずれを少なくするように補正することもできる。
【0059】
<変形例>
以上、本発明の実施形態について説明したが、本発明は以下のように、さまざまな態様で実施可能である。
[変形例1]
上述した実施形態において、r[i]の各パラメータがg[i]の各パラメータにしたがって決定される場合に、計算式上、r[i]の各パラメータの上限、下限を超えるような場合には、上限値、下限値を維持するようにしてもよい。このような処理を行った場合の自動演奏ピアノ1における鍵10の動作例について、図9を用いて説明する。
【0060】
図9は、変形例1に係る鍵10の動作例を説明する図である。図8における場合と同様に、太枠で囲った部分は、利用者の演奏操作によりy[i]がr[i]と異なるものとなった部分を示している。この例においては、実施形態における場合のr[0]が異なり、また、利用者の演奏操作により、鍵番号だけでなく、鍵10の軌道の一部(押鍵速度、離鍵速度)にも変更が加えられたものとする。
ここで、図9に示すように、rvp[8]=127に続くrvp[9]は計算上「144」となるが上限値が「127」であるため、rvp[9]=127として決定される。rk[10]についても、rvn[10]についても同様である。なおrvn[9]については、計算上「−12」となるが下限値が「1」であるため、rvn[9]=1として決定される。
【0061】
[変形例2]
上述した実施形態においては、鍵動作決定部330は、r[m+1]=y[m]+g[m+1]として、次に動作させる鍵10の動作内容を決定していたが、r[m+1]=r[m]+g[m+1]としてもよい。すなわち、実施形態の場合においては、実際に動作した鍵10の動作内容に動作ルールを適用して次に動作させる鍵10の動作内容を決定していたが、本変形例の場合においては、動作させようとしていた鍵10が実際には動作しなくても、その動作をさせようとしていた鍵10の動作内容に動作ルールを適用して次に動作させる鍵10の動作内容を決定するものである。このような処理を行った場合の自動演奏ピアノ1における鍵10の動作例について、図10を用いて説明する。
【0062】
図10は、変形例2に係る鍵10の動作例を説明する図である。図8における場合と同様に、太枠で囲った部分は、利用者の演奏操作によりy[i]がr[i]と異なるものとなった部分を示している。図10におけるr[i]の変化は、r[m+1]=r[m]+g[m+1]により決められていること以外は実施形態における場合と同様であるため、詳細の説明を省略する。
このように、動作ルールを適用する基準となる鍵10は、様々な場合に適用可能である。変形例2における場合に限らず、例えば、過去に動作した鍵10のいずれかの動作内容を基準として動作ルールを適用してもよいし、過去に動作した複数の鍵10の動作内容に予め決められた演算処理を施して、その演算結果を基準として動作ルールを適用してもよい。
【0063】
[変形例3]
上述した実施形態においては、鍵10の軌道は、押鍵時刻、押鍵速度、離鍵時刻、離鍵速度により決められていたため、例えば、押鍵動作においては、鍵10のレスト位置(押鍵量が0)からエンド位置(押鍵量が最大)に至るまでは一定の押鍵速度で動作するものとしたが、押鍵速度が変化する場合、すなわち、押鍵量の連続値をパラメータにもつようにしてもよい。その場合には、実施形態におけるコントローラ110を、図11に示すコントローラ110Bとし、コントローラ110Bにおけるモーションコントローラ300Bを図12に示す構成とすればよい。そして、コントローラ100Bにおいて用いる各パラメータを以下のようにすればよい。なお、コントローラ110Bのうち、サーボコントローラ400Bについては、実施形態におけるサーボコントローラ400と同様な構成であるため、説明を省略する。また、モーションコントローラ300Bにおける各構成についても、演奏検出部200Bからカウント部350Bに入力されるパラメータが異なるだけであり、同様な構成であるため説明を省略する。
【0064】
まず、演奏検出部200Bから出力され、カウント部350Bに入力される鍵10の動作内容を示す演奏パラメータとして、鍵番号kのほか、鍵10の軌道を示す演奏パラメータとして、レスト位置から鍵10が移動開始した時刻(レスト位置出発時刻)tpr、エンド位置へ鍵10が到達した時刻(エンド位置到着時刻)tpe、レスト位置からエンド位置への移動(押鍵動作)における鍵10の押鍵量の時間変化(押鍵時軌道)xp[t]、エンド位置から鍵10が移動開始した時刻(エンド位置出発時刻)tne、レスト位置へ鍵10が到達した時刻(レスト位置到着時刻)tnr、エンド位置からレスト位置への移動(離鍵動作)における鍵10の押鍵量の時間変化(離鍵時軌道)xn[t]とする。この例においては、押鍵時軌道xp[t]、離鍵時軌道xn[t]は、それぞれ1msec.単位で、0mm(レスト位置)から10mm(エンド位置)の押鍵量が定められたものである。ここで、xp[t]における「t」はtprを基準とした時刻であり、xn[t]における「t」はtneを基準とした時刻である。
なお、レスト位置出発時刻tprは押鍵時刻tpに対応し、エンド位置出発時刻tneは離鍵時刻tnに対応し、定義は異なるものの意味は互いに相当している。
【0065】
g[i]、r[i]、y[i]、e[i]などについても、演奏パラメータと同様に規定される。例えば、y[i]の各パラメータは、各演奏パラメータに対応して、yk[i]、ytpr[i]、ytpe[i]、yxp[t][i]、ytne[i]、ytnr[i]、yxn[t][i]として規定される。
このようにして規定した場合の具体例について、図13を用いて説明する。
【0066】
図13は、変形例3における鍵10の動作例を説明する図である。図13は、押鍵動作時における鍵10の軌道を示す図である。図13(a)は、rxp[t][m]を示す図である。このときのgxp[t][m]は全ての「t」に対して「0」であるものとする。図13(b)は、鍵10の動作内容としてyxp[t][m]を示す。この図13(b)におけるrxp[t][m]は、yxp[t][m]と差分を算出する対象となるものであり、鍵10の押鍵動作の時間に合わせるように伸縮している。具体的には、以下の式(4)により時間軸が変換される。
rxp[ytpr[m]+(ytpe[m]−ytpr[m])/(rtpe[m]−rtpr[m])×t][i] ・・・(4)
差分の算出を行うときのrxp[t][i]については、このように時間軸方向に伸縮して鍵10の押鍵動作の時間および基準とした時刻を対応させてから、実施形態における差分算出処理を行う。
【0067】
図13(c)は、図13(b)に示す関係において差分算出処理を行って動作ルールを変更した結果、次に動作すべき鍵10の動作内容としてrxp[t][m+1]を示す。実施形態における各処理に対応して決定されるrxp[t][m+1]は、ytpr[m]からytpe[m]までの時間長となるため、図13(c)に示すrxp[t][m+1]は、rtpr[m+1]からrtpe[m+1]までの時間長になるように伸縮するとともに、基準となる時刻をrtpr[m+1]としている。具体的には、以下の式(5)により時間軸を変換している。
rxp[rtpr[m+1]+(rtpe[m+1]−rtpr[m+1])/(ytpe[m]−ytpr[m])×t][m+1] ・・・(5)
【0068】
このように、本変形例において押鍵時軌道については、差分算出などの各計算処理においては、双方の時間軸を一致させる伸縮を適宜行ってから処理するものとする。以上、押鍵時について動作例を示したが、離鍵時についても同様である。
なお、rtpe[i]−rtpr[i]については、時間が長くなりすぎると発音がされない状態となるため、上限(例えば500msec.)を設けてもよい。また、軌道を表すためのパラメータはこれらに限らず、別のパラメータにより特定されるようにしてもよい。
【0069】
[変形例4]
上述した実施形態においては、差分算出処理における結果に応じて、動作ルールの変更が行われるようにしていたが、動作ルールの変更ではなく、動作ルールにしたがった鍵10の駆動による発音とは別に、差分算出処理の結果に応じた発音がなされるようにしてもよい。
【0070】
この場合には、実施形態における場合のように、過去の鍵10の動作内容に応じて次に動作させる鍵10の動作内容を定めた動作ルールにしたがった鍵10の動作でなくてもよい。すなわち、過去の鍵10の動作にかかわらず、予め決められた動作ルールにしたがった鍵10の動作内容が決定されるものであってもよく、例えば、MIDIデータのように演奏パターンが決められているものとすればよい。そして、利用者の演奏操作による鍵10の動作内容と、動作ルールにしたがった鍵10の動作内容との比較結果に応じて鍵10の動作内容を決定し、動作ルールにしたがった鍵10の動作内容に加えて、発音されるようにすればよい。
このような場合におけるモーションコントローラ300Aの構成について、図14を用いて説明する。
【0071】
図14は、変形例4に係るモーションコントローラ300Aの構成を示すブロック図である。モーションコントローラ300Aは、動作ルール情報310A、鍵動作決定部330A、鍵動作指示部340A、カウント部350、差分算出部360Aおよび追加決定部380を有する。カウント部350については、実施形態と同様な構成であるため説明を省略する。
【0072】
動作ルール情報310Aは、上述したMIDIデータなどの演奏パターンが決められた動作ルールを示している。鍵動作決定部330Aは、動作ルール情報310Aにおける動作ルールにしたがって次に動作させる鍵10の動作内容(r[i])を決定して、鍵動作指示部340Aに出力する。
差分算出部360Aは、r[i]およびy[i]に基づいてe[i]を算出し、追加決定部380に出力する。具体的な差分算出処理の方法は実施形態の方法に準じたものである。追加決定部380は、e[i]に基づいて追加して動作させる鍵10の動作内容を規定するアルゴリズムを記憶している。追加決定部380は、e[i]を取得すると、e[i]に基づいて追加して動作させる鍵10の動作内容を決定し、決定した内容を示す情報を鍵動作指示部340Aに出力する。鍵動作指示部340Aは、実施形態における処理に加えて、追加決定部380から出力された情報にしたがって鍵10が動作するように、動作させる鍵10に対応したサーボコントローラ400に対して予め決められたサーボ制御周期で鍵位置指示値rxおよび電流オフセットufを出力する。以上がモーションコントローラ300Aの構成についての説明である。
なお、追加決定部380から出力される情報に基づいて、鍵10を駆動して発音するのではなく、電子音発生部140から発音させるようにしてもよい。
【0073】
[変形例5]
上述した実施形態において、鍵動作決定部330において決定された鍵10の動作内容に応じて鍵10が実際に動作した結果得られるy[i]については、差分算出部360における差分算出処理において、e[i]の全てのパラメータを「0」としてもよい。すなわち、鍵動作決定部330において決定された鍵10の動作内容により駆動した鍵10の動作内容については、動作ルールを変更する対象として扱わないようにしてもよい。
【0074】
この処理は、例えば、差分算出処理により得られるe[i]について、ek[i]=0であり、かつ他のパラメータ(etp[i]、evp[i]、etn[i]、evn[i])の値が予め決められた値より小さい場合には、e[i]の各パラメータが全て「0」であるものとすればよい。
このようにすれば、利用者による演奏操作に対してのみ動作ルールが変更されるようにすることができる。
【0075】
[変形例6]
上述した実施形態においては、r[i]とy[i]との比較は差分算出処理によって行っていたが、差分に限らず予め決められた演算処理にしたがって比較するものであれば、どのような処理により比較してもよい。
【0076】
[変形例7]
上述した実施形態においては、動作ルールの内容を変更する処理について、g[m+1]=g[m]+e[m]として行っていたが、このような計算式による処理に限られず、予め決められた演算処理にしたがったものであればよい。例えば、g[m+1]=g[0]+e[m]、g[m+1]=g[m]−e[m]としてもよいし、軌道に関するパラメ
ータについては変更を行わないようにしてもよい。
このようにすれば、様々な態様での自動演奏を楽しむことができる。
【0077】
[変形例8]
上述した実施形態において、r[i]に基づいて動作した鍵10と同一の鍵10を、その動作中に利用者が演奏操作した場合、r[i]に基づいて決まる鍵10の軌道と、実際の動作における軌道とが、予め決められた時間(例えば10msec.)にわたって異なる場合には、r[i]に基づく鍵10の駆動を停止して、利用者の演奏操作で鍵10が動作するようにしてもよい。
【0078】
[変形例9]
上述した実施形態において、鍵10の動作内容をRAM113、ディスクドライブ120の記録媒体などに記録するようにしてもよい。
【0079】
[変形例10]
上述した実施形態においては、動作ルールはr[m+1]=y[m]+g[m+1]として決められていたが、他の態様で動作ルールを定めてもよい。例えば、白鍵のみ、黒鍵のみを動作させるルール、長調、短調など調性にしたがって動作させるルール、5度圏サイクルで動作させるルール、民族音階(都節音階、律音階、琉球音階、民謡音階など)で動作させるルールなどである。
【0080】
[変形例11]
上述した実施形態において、パッセージ演奏モードを終了させる条件を定めてもよい。これは、操作パネル130で終了操作をした場合、r[i]のパラメータが上限下限のいずれかに達した場合、利用者による演奏操作が予め決められた態様で行われた場合などにおいて終了するようにすればよい。
利用者の演奏操作により終了させる場合としては、例えば、r[m]に係る押鍵動作が開始する前に、その鍵10を演奏操作してr[m]に係る離鍵動作が終了するまで利用者が押鍵を続けた場合、また、r[m]における押鍵動作が開始された後、離鍵動作が開始される前に、利用者がその鍵10を演奏操作して押鍵して、r[m+1]の押鍵動作か開始される時刻まで押鍵を続けた場合などである。
【0081】
[変形例12]
上述した実施形態においては、説明の簡略化のためパッセージ演奏モードにおける自動演奏は単音で行われるものとしたが、複数の音が同時に発音されるように構成されていてもよい。その場合であっても、利用者の演奏操作による鍵10の動作内容と、自動演奏による鍵10の動作内容とを比較して、予め決められた演算処理により得られた結果に基づいて、動作ルールを変更するようにすればよい。
【0082】
[変形例13]
上述した実施形態において、演奏検出部200は、鍵10の押鍵動作、離鍵動作が行われると、演奏パラメータを生成して出力する演奏検出処理をしていた。このとき、鍵10の離鍵動作が終了する前に、演奏者によって鍵10の押鍵動作が開始された場合については、以下に説明するようにして、演奏パラメータを生成して出力するようにしてもよい。離鍵動作が終了する前の鍵10と、離鍵動作が終了する前に演奏者に押鍵される鍵10とが、同一の鍵である場合(ハーフストローク打鍵)と異なる鍵である場合とに分けて、演奏検出処理を説明する。まず、同一の鍵である場合についての演奏検出処理について、図15、図16を用いて説明する。
【0083】
図15、図16は、鍵10の離鍵動作が終了する前に、演奏者が同じ鍵10を押鍵した場合の演奏検出処理を説明するフローチャートである。まず、演奏検出部200は、鍵10の押鍵動作が開始されるのを待つ(ステップS410;No)。演奏検出部200は、押鍵動作が開始されたことを検出する(ステップS410;Yes)と、押鍵された鍵10に対応する鍵番号k、および押鍵時刻tpを出力する(ステップS411)。
演奏検出部200は、鍵10が押鍵速度検出開始位置(押鍵量1mm)まで押下されるのを待つ(ステップS412;No)。演奏検出部200は、鍵10が押鍵速度検出開始位置まで押下されたことを検出した場合、すなわち、押鍵量が1mmを上回った場合(ステップS412;Yes)、その時点の押鍵量xp0および時刻tp0を記憶する(ステップS413)。
【0084】
演奏検出部200は、鍵10が離鍵速度検出確定位置(押鍵量1mm)に戻されるか、押鍵速度検出確定位置(押鍵量9mm)まで押下されるのを待つ(ステップS420;No、ステップS430;No)。演奏検出部200は、鍵10が離鍵速度検出確定位置に戻されたことを検出した場合、すなわち、押鍵量が1mmを下回った場合(ステップS420;Yes)、押鍵速度vpを出力する(ステップS421)。押鍵速度vpは、検出時点における押鍵量をxp1、時刻tp1とした場合、(xp1−xp0)/(tp1−tp0)として算出される。演奏検出部200は、時刻tp1を離鍵時刻tnとして出力し(ステップS422)、その時点での押鍵量xn0および時刻tn0を記憶し(ステップS423)、後述するステップS440(図16)へ進む。
【0085】
演奏検出部200は、ステップS430において、鍵10が押鍵速度検出確定位置まで押下されたことを検出した場合、すなわち、押鍵量が9mmを上回った場合(ステップS430;Yes)、押鍵速度vpを出力する(ステップS431)。この押鍵速度vpは、検出時点における押鍵量をxp2、時刻tp2とした場合、(xp2−xp0)/(tp2−tp0)として算出される。続いて、演奏検出部200は、押鍵動作が終了するのを待ち(ステップS432;No)、押鍵量が10mmに至って押鍵動作が終了すると(ステップS432;Yes)、続いて、離鍵動作が開始されるのを待つ(ステップS433;No)。
【0086】
演奏検出部200は、押鍵量が10mmを下回って離鍵動作が開始されると(ステップS433;Yes)、その時刻を離鍵時刻tnとして出力し(ステップS434(図16))、鍵10が離鍵速度検出開始位置(押鍵量9mm)に戻されるのを待つ(ステップS435;No)。演奏検出部200は、鍵10が離鍵速度検出開始位置に戻されたことを検出した場合、すなわち、押鍵量が9mmを下回った場合(ステップS435;Yes)、その時点での押鍵量xn0および時刻tn0を記憶する(ステップS436)。
【0087】
演奏検出部200は、ステップS423またはステップS436における処理が終了すると、鍵10が押鍵速度検出確定位置(押鍵量9mm)に押下されるか、離鍵速度検出確定位置(押鍵量1mm)まで戻されるのを待つ(ステップS440;No、ステップS450;No)。演奏検出部200は、鍵10が押鍵速度検出確定位置に押下されたことを検出した場合、すなわち、押鍵量が9mmを上回った場合(ステップS440;Yes)、離鍵速度vnを出力する(ステップS441)。離鍵速度vnは、検出時点における押鍵量をxn1、時刻tn1とした場合、(xn1−xn0)/(tn1−tn0)として算出される。演奏検出部200は、時刻tn1を押鍵時刻tpとして出力し(ステップS442)、その時点での押鍵量xp0および時刻tp0を記憶し(ステップS443)、ステップS420に戻って処理を続ける。なお、演奏検出部200は、ステップS442において押鍵時刻tpを出力するときに、鍵番号kをあわせて出力してもよい。
【0088】
演奏検出部200は、ステップS450において、鍵10が離鍵速度検出確定位置まで戻されたことを検出した場合、すなわち、押鍵量が1mmを下回った場合(ステップS450;Yes)、離鍵速度vnを出力する(ステップS451)。この離鍵速度vnは、検出時点における押鍵量をxn2、時刻tn2とした場合、(xn2−xn0)/(tn2−tn0)として算出される。続いて、演奏検出部200は、離鍵動作が終了するのを待ち(ステップS452;No)、押鍵量が0mmに至って離鍵動作が終了する(ステップS452;Yes)と、ステップS410に戻って処理を続ける。
以上が、鍵10の離鍵動作が終了する前に、演奏者が同じ鍵10を押鍵した場合の演奏検出処理についての説明である。
【0089】
続いて、鍵10の離鍵動作が終了する前に、演奏者が異なる鍵10を押鍵した場合について説明する。この場合には、演奏検出部200は、演奏検出処理を実行する処理モジュールを複数(この例においては2つ)有する。複数の処理モジュールは並列して演奏検出処理を実行可能である。そのため、カウント部350は、図6に示すステップS120において、双方の処理モジュールから同種の演奏パラメータが取得することになるが、同種の演奏パラメータについては、後着を優先させて処理する。
鍵10の離鍵動作が終了する前に、演奏者が異なる鍵10を押鍵した場合においても、一つの処理モジュールが行う演奏検出処理は、同じ鍵10を押鍵した場合と同様であるが、ステップS412、S420、S430、S432、S433、S435、S440、S450のように、押鍵量に基づく判定を行っている場合においては、図17に示す別モジュール起動処理についても並行して処理が開始される。
【0090】
図17は、鍵10の離鍵動作が終了する前に、演奏者が異なる鍵10を押鍵した場合に用いられる別モジュール起動処理を説明するフローチャートである。別モジュール起動処理が開始されると、演奏検出部200は、動作中の処理モジュールの他に別の処理モジュールが動作中であるかを判定し(ステップS510)、動作中(2つの処理モジュールが動作中)である場合(ステップS510;Yes)には、別モジュール起動処理を終了する。一方、別の処理モジュールが動作していない場合(ステップS510;No)には、他の鍵10の押鍵動作が開始されるのを待つ(ステップS520;No)。演奏検出部200は、他の鍵10の押鍵動作が開始されたことを検出する(ステップS520;Yes)と、別の処理モジュールを起動し(ステップS530)、別モジュール起動処理を終了する。
【0091】
このように別の処理モジュールが起動されると、その処理モジュールにおいては、起動する要因となった他の鍵10の鍵番号k’、および押鍵時刻tp’を、鍵番号kおよび押鍵時刻tpとして設定して出力(ステップS411に相当)し、ステップS412の処理から開始する。これにより、複数の処理モジュールが並行して動作し、鍵10ごとに演奏検出処理が実行されることになる。
そして、演奏検出部200は、先に演奏検出処理を実行していた処理モジュールにおいてステップS451の処理が行われると、別の処理モジュールによって演奏検出処理が並行して実行されている場合には、並行して演奏検出処理を実行している別の処理モジュールの動作を継続したまま、先に演奏検出処理を実行していた処理モジュール(ステップS451の処理を行った処理モジュール)の動作を停止させる。
以上が、鍵10の離鍵動作が終了する前に、演奏者が異なる鍵10を押鍵した場合の演奏検出処理についての説明である。
【0092】
[変形例14]
上述した実施形態においては、自動演奏ピアノ1として説明したが、利用者の演奏操作によらずに駆動可能な鍵10が複数設けられた鍵盤を有する鍵盤楽器であれば、電子ピアノ、キーボードであってもよい。キーボードなどにおいては、MIDIコントローラなどの発音する音源を有さないものであってもよい。また、消音可能なアコースティックピアノなどであってもよい。
【符号の説明】
【0093】
1…自動演奏ピアノ、10…鍵、20…アクションメカニズム、25…ハンマ、30…ダンパ、40…弦、50…ソレノイド、61…鍵センサ、62…ハンマセンサ、110,110B…コントローラ、111…CPU、112…ROM、113…RAM、140…電子音発生部、150…PWM信号発生部、161,162…A/D変換部、120…ディスクドライブ、130…操作パネル、200,200B…演奏検出部、300,300A,300B…モーションコントローラ、310,310A,310B…動作ルール情報、320,320B…初期設定情報、330,330A,330B…鍵動作決定部、340,340A,340B…鍵動作指示部、350,350B…カウント部、360,360A,360B…差分算出部、370,370B…動作ルール変更部、380…追加決定部、400,400B…サーボコントローラ、410…正規化部、420…位置生成部、430…速度生成部、440…減算部、450…増幅部、460…加算部

【特許請求の範囲】
【請求項1】
鍵を複数有する鍵盤と、
前記鍵の動作内容を検出する検出手段と、
指示に応じて前記鍵を駆動して動作させる駆動手段と、
過去の前記鍵の動作内容または過去に決定した前記鍵の動作内容に応じて次に動作させる鍵の動作内容を定めた動作ルールに基づいて、次に動作させる鍵の動作内容を決定する決定手段と、
前記決定された動作内容で前記鍵が動作するように、前記駆動手段に指示を行う指示手段と、
前記検出された動作内容と前記決定された動作内容とを比較し、比較結果に応じて前記動作ルールを変更する変更手段と
を具備することを特徴とする鍵盤楽器。
【請求項2】
前記指示手段は、前記変更手段による比較対象となった前記決定された動作内容に係る指示をしていない場合には、当該内容に係る指示を中止する
ことを特徴とする請求項1に記載の鍵盤楽器。
【請求項3】
前記変更手段は、前記検出された動作内容が前記駆動手段による鍵の駆動に対して検出された動作内容である場合には、前記動作ルールを変更しない
ことを特徴とする請求項1または請求項2に記載の鍵盤楽器。
【請求項4】
前記変更手段は、前記検出された動作内容が前記駆動手段による鍵の駆動に対して検出された動作内容である場合には、当該検出された動作内容と当該駆動を行うために前記決定手段により決定された動作内容とを比較する
ことを特徴とする請求項1または請求項2に記載の鍵盤楽器。
【請求項5】
鍵を複数有する鍵盤と、
前記鍵の動作内容を検出する検出手段と、
指示に応じて前記鍵を駆動して動作させる駆動手段と、
予め決められたルールに基づいて、次に動作させる鍵の動作内容を決定する決定手段と、
前記決定された動作内容で前記鍵が動作するように、前記駆動手段に指示を行う指示手段と、
前記検出された動作内容と前記決定された動作内容とを比較し、比較結果に応じて、追加して動作させる鍵の動作内容を決定する追加決定手段と
を具備し、
前記指示手段は、前記追加決定手段による決定があった場合には、当該決定された動作内容を前記決定手段によって決定された動作内容に追加した動作内容で前記鍵が動作するように、前記駆動手段に指示を行う
ことを特徴とする鍵盤楽器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate