(57)【特許請求の範囲】
【請求項１】
複数の鍵を有する鍵盤と、
前記鍵盤の各鍵に対応して設けられ、前記鍵盤の押鍵速度に対応する時間間隔で順次オンする第１及び第２のスイッチと、
前記第１及び第２のスイッチが順次オンする時間間隔に対応するカウント値をカウントするカウント手段と、
前記カウント値をリニア−ログ変換テーブルのアドレスに変換するカウント−アドレス変換手段と、
前記時間間隔のばらつきに応じて、前記変換されたアドレスに対して、前記鍵盤の押鍵された鍵毎の補正値を加算又は減算することにより補正する補正手段と、
前記補正されたアドレスを中間ベロシティに変換するリニア−ログ変換テーブルと、
タッチ変換テーブル指定情報に応じてタッチの軽重が異なるように前記中間ベロシティを最終ベロシティに変換するタッチ変換テーブルとを有し、
前記補正手段は、前記補正値を加算又は減算することにより、前記リニア−ログ変換テーブルの前記アドレスに対する前記中間ベロシティの変換特性を前記アドレス方向に前記補正値だけ平行移動させるように補正することを特徴とする電子鍵盤楽器。
【請求項２】
複数の鍵を有する鍵盤と、
前記鍵盤の各鍵に対応して設けられ、前記鍵盤の押鍵速度に対応する時間間隔で順次オンする第１及び第２のスイッチと、
前記第１及び第２のスイッチが順次オンする時間間隔に対応するカウント値をカウントするカウント手段と、
前記カウント値をリニア−ログ変換テーブルのアドレスに変換するカウント−アドレス変換手段と、
前記時間間隔のばらつきに応じて、前記変換されたアドレスに対して、前記鍵盤の押鍵された鍵毎の補正倍率を乗算することにより補正する補正手段と、
前記補正されたアドレスを中間ベロシティに変換するリニア−ログ変換テーブルと、
タッチ変換テーブル指定情報に応じてタッチの軽重が異なるように前記中間ベロシティを最終ベロシティに変換するタッチ変換テーブルとを有し、
前記補正手段は、前記補正倍率を乗算することにより、前記リニア−ログ変換テーブルの前記アドレスに対する前記中間ベロシティの変換特性を前記アドレス方向に前記補正倍率だけ伸縮させるように補正することを特徴とする電子鍵盤楽器。
【請求項３】
前記補正手段は、前記鍵盤の鍵毎の補正値を補正倍率に変換し、前記補正倍率を乗算することを特徴とする請求項２記載の電子鍵盤楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子鍵盤楽器に関する。
【背景技術】
【０００２】
電子鍵盤楽器では、鍵操作から音量データを得る際、まず２個のセンサ間をシャッタが通過する時間をカウントし、そのカウント値を指数関数テーブルで聴覚を考慮した値に変換した後、さらに音量調整用のタッチカーブに通し、最終的な音量データを得ている。
【０００３】
ところが、現実には、タッチ検出センサやシャッタの取り付け誤差によって見かけ上のセンサ間隔が変動してしまうため、カウント値の取り得る範囲も同様に変動してしまう。
【０００４】
タッチカーブは、最大音量〜最小音量に該当するカウント値（２個のセンサ間をシャッタが通過する時間）が一定であることを前提としたものなので、タッチ検出センサやシャッタの取り付け誤差によってカウント値の取り得る範囲が変動してしまうと、カウント値がタッチカーブの適用範囲外に出てしまう。
【０００５】
現状では、カウント値がタッチカーブの適用範囲外に出ても、その不具合を無視して無理やり変換しているため、取り付け誤差に起因する発音量のばらつきを吸収できていない。アクション挙動の違いによるばらつきも、同様の理由で吸収できていない。
【０００６】
また、下記の特許文献１には、設定モードにおいて、鍵操作の操作速度や操作強度を検出する第１接点と第２接点のストローク差に基づいて、各鍵毎にそのストローク差のずれによる検出ベロシティ値を補正するためのベロシティ変換テーブル及びそのベロシティ変換テーブルを指定する指示情報を記憶するタッチレスポンス装置が記載されている。
【０００７】
また、下記の特許文献２には、標準的な鍵盤を想定してあらかじめ作成されているタッチカーブを補正する電子鍵盤楽器用の音量補正装置が記載されている。
【０００８】
また、下記の特許文献３には、複数の鍵を有する鍵盤、前記鍵盤の各鍵に対応して設けられた複数の接点を有するスイッチ、前記スイッチの接点の接触時間差により押鍵速度情報を得るキータッチ検出回路と、前記スイッチの各鍵毎の接点間の距離の差で生ずる時間差のばらつきをばらつきデータとして記憶する第１のメモリを有する鍵盤部と、前記第１のメモリに記憶されたばらつきデータを第２のメモリに転送するデータ転送回路と、前記キータッチ検出回路で得た押鍵速度情報を前記第２のメモリからのばらつきデータにより補正するキータッチ補正回路とを備えた電子鍵盤楽器が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】実開平６−２５８９５号公報
【特許文献２】特開２０００−８９７５８号公報
【特許文献３】特許第２７６３５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、スイッチ（センサ）の間隔にばらつきがある場合にも正確な音量制御をすることができる電子鍵盤楽器を提供することである。
【課題を解決するための手段】
【００１１】
本発明の電子鍵盤楽器は、複数の鍵を有する鍵盤と、前記鍵盤の各鍵に対応して設けられ、前記鍵盤の押鍵速度に対応する時間間隔で順次オンする第１及び第２のスイッチと、前記第１及び第２のスイッチが順次オンする時間間隔に対応するカウント値をカウントするカウント手段と、前記カウント値をリニア−ログ変換テーブルのアドレスに変換するカウント−アドレス変換手段と、前記時間間隔のばらつきに応じて、前記変換されたアドレスに対して、前記鍵盤の押鍵された鍵毎の補正値を加算又は減算することにより補正する補正手段と、前記補正されたアドレスを中間ベロシティに変換するリニア−ログ変換テーブルと、タッチ変換テーブル指定情報に応じてタッチの軽重が異なるように前記中間ベロシティを最終ベロシティに変換するタッチ変換テーブルとを有し、前記補正手段は、前記補正値を加算又は減算することにより、前記リニア−ログ変換テーブルの前記アドレスに対する前記中間ベロシティの変換特性を前記アドレス方向に前記補正値だけ平行移動させるように補正することを特徴とする。
【００１２】
また、本発明の電子鍵盤楽器は、複数の鍵を有する鍵盤と、前記鍵盤の各鍵に対応して設けられ、前記鍵盤の押鍵速度に対応する時間間隔で順次オンする第１及び第２のスイッチと、前記第１及び第２のスイッチが順次オンする時間間隔に対応するカウント値をカウントするカウント手段と、前記カウント値をリニア−ログ変換テーブルのアドレスに変換するカウント−アドレス変換手段と、前記時間間隔のばらつきに応じて、前記変換されたアドレスに対して、前記鍵盤の押鍵された鍵毎の補正倍率を乗算することにより補正する補正手段と、前記補正されたアドレスを中間ベロシティに変換するリニア−ログ変換テーブルと、タッチ変換テーブル指定情報に応じてタッチの軽重が異なるように前記中間ベロシティを最終ベロシティに変換するタッチ変換テーブルとを有し、前記補正手段は、前記補正倍率を乗算することにより、前記リニア−ログ変換テーブルの前記アドレスに対する前記中間ベロシティの変換特性を前記アドレス方向に前記補正倍率だけ伸縮させるように補正することを特徴とする。
【発明の効果】
【００１３】
第１及び第２のスイッチの取り付けの不具合等により第１及び第２のスイッチが順次オンする時間間隔がばらついた場合にも、正確なベロシティに変換し、音量制御を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態による電子鍵盤楽器の構成例を示すブロック図である。
【図２】鍵毎の鍵スイッチの配置例を示す図である。
【図３】鍵スイッチの構成例を示す回路図である。
【図４】鍵スイッチの動作例を示すタイムチャートである。
【図５】鍵スイッチの出力例を示すタイムチャートである。
【図６】ハンマの移動速度を得るために使うカウント値の変化例を示す図である。
【図７】カウント値の変化範囲を示す図である。
【図８】カウント値をリニア−ログ変換テーブル用アドレスに変換する例を示す図である。
【図９】リニア−ログ変換テーブルの例を示す図である。
【図１０】タッチカーブの例を示す図である。
【図１１】３個のタッチカーブによる音量調整結果のイメージを示す図である。
【図１２】図１２（Ａ）及び（Ｂ）は、鍵スイッチでハンマの動きを検出し、ハンマの移動速度をベロシティとして得る例を示す図である。
【図１３】図１３（Ａ）〜（Ｄ）は、鍵スイッチで鍵盤の鍵の動きを検出し、鍵の移動速度をベロシティとして得る例を示す図である。
【図１４】鍵スイッチ間の距離の伸張を考慮したリニア−ログ変換テーブルの例を示す図である。
【図１５】比較例による音量補正のイメージを示す図である。
【図１６】本実施形態による平行移動処理を使った音量補正のイメージを示す図である。
【図１７】本実施形態による伸縮処理を使った音量補正のイメージを示す図である。
【図１８】本実施形態による伸縮処理で用いる伸縮倍率の例を示す図である。
【図１９】図１５の比較例におけるベロシティ取得までのデータフローのイメージを示す図である。
【図２０】図１６で説明した本実施形態による平行移動処理におけるベロシティ取得までのデータフローのイメージを示す図である。
【図２１】図１７で説明した本実施形態による伸縮処理におけるベロシティ取得までのデータフローのイメージを示す図である。
【図２２】図１の電子鍵盤楽器の処理方法のメインルーチンを示すフローチャートである。
【図２３】図２２のステップＳ２２０２のイベント検出処理の詳細を示すフローチャートである。
【図２４】図２２でのステップＳ２２０３のイベント実行処理の詳細を示すフローチャートである。
【図２５】図２２のステップＳ２２０４のパネル操作の解釈処理の詳細を示すフローチャートである。
【図２６】図２４のステップＳ２４０３の発音イベント処理の詳細を示すフローチャートである。
【図２７】図２６のステップＳ２６０３のアドレス変換処理の詳細を示すフローチャートである。
【図２８】図２６のステップＳ２６０３の他のアドレス変換処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１５】
図１は、本発明の実施形態による電子鍵盤楽器の構成例を示すブロック図である。１０１は、電子鍵盤楽器全体の制御を行うプログラムを実行するためのＣＰＵである。前記プログラムで、鍵盤１０２やパネルスイッチ１０４の操作状態を把握し、音源回路１０９を制御する。
【００１６】
１０２は、鍵盤或いは鍵盤の動きに連動して回動するハンマやウィペンに代表される部材の操作状態と操作速度とを得るための鍵スイッチ及び鍵盤である。鍵盤１０２は、複数の鍵を有する。鍵スイッチ１０２は、例えば鍵盤の鍵（又は、鍵盤の鍵に対応するハンマ）毎に２個スイッチを設けており、ＣＰＵ１０１から供給された鍵スイッチスキャン信号を基に、スキャン対象として指定された鍵盤の鍵に対応した鍵スイッチの状態（オン／オフ）を検出し、検出結果を後述の鍵タッチ検出手段１０３に出力する。
【００１７】
１０３は、鍵スイッチ１０２から出力されてきた鍵スイッチの状態を基に２個のスイッチ出力が共にオンとなる時間差をカウントし、前記カウント値をＣＰＵ１０１に出力する鍵タッチ検出手段である。カウントの方法としては、例えば２個のスイッチのうち手前側に設けたスイッチＳ１（図２）の状態がオフからオンに変化したタイミングでカウント値を最大値に初期化し、その後一定間隔毎にカウント値を減算し、奥側に設けたスイッチＳ２（図２）がオフからオンに変化したタイミングのカウント値を鍵タッチ検出手段１０３からＣＰＵ１０１に出力するように構成しておく。このように構成することにより、カウント値の大小から２個のスイッチＳ１及びＳ２の状態変化の時間差、即ち鍵盤の操作速度に該当する操作速度情報を把握することができる。前記操作速度情報は一時的に鍵タッチ検出手段１０３上のバッファに蓄えられ、データバス１１３を介してＣＰＵ１０１に読み出される。ＣＰＵ１０１は、操作速度情報を補正し、ベロシティに変換する。
【００１８】
１０４は、電子鍵盤楽器に関わる機能を設定／切り替えするために使う複数のパネルスイッチである。電子鍵盤楽器の利用者は、パネルスイッチ１０４を操作し、音色の変更やタッチカーブの選択、に代表される各種設定操作や、本実施形態で使用する鍵毎の音量補正値の設定、を実施する。パネルスイッチ１０４は、ＣＰＵ１０１から供給されたパネルスイッチスキャン信号を基に、スキャン対象として指定されたスイッチの状態（オン／オフ）を検出し、検出結果を後述のパネルスイッチ状態検出手段１０５に出力する。
【００１９】
１０５は、パネルスイッチ１０４から出力されてきたパネルスイッチの検出結果を一時的に記憶し、データバス１１３を介して前記検出結果をＣＰＵ１０１に出力するためのパネルスイッチ状態検出手段である。
【００２０】
１０６は、ＣＰＵ１０１上で動作するプログラムや、本実施形態で使うテーブル類等を記憶するための不揮発性メモリ（例えば第１のＲＯＭ）である。
【００２１】
１０７は、ＣＰＵ１０１上で動作するプログラムが作業領域として使うための揮発性メモリ（例えば第１のＲＡＭ）である。
【００２２】
１０８は、本実施形態で使うテーブルアドレスの補正値等を記憶するための、不揮発性メモリ（例えば第２のＲＡＭ）である。なお、不揮発性メモリ１０８は、電子鍵盤楽器の動作中に内容を書き換えられるよう、フラッシュメモリやＥＥＰＲＯＭ等のように、ＣＰＵ１０１からデータの書き換えができる素子を選択する。
【００２３】
１０９は、データバス１１３を介してＣＰＵ１０１により設定された音源制御パラメータ（ベロシティを含む）の内容に従い、楽音信号を発生する音源回路である。音源回路１０９は、ベロシティを基に、音量を制御して楽音信号を生成する。
【００２４】
また、１１０は、音源回路１０９が利用する楽音信号波形を記憶するための不揮発性メモリ（例えば第２のＲＯＭ）である。音源回路１０９で生成した楽音信号は、オーディオ回路１１１上のＤ／Ａコンバータ及びアンプを介してスピーカ１１２に出力され、電子鍵盤楽器外部に発音される。
【００２５】
電子鍵盤楽器の利用者は、鍵盤１０２を操作して演奏を実施する。その際、ＣＰＵ１０１は、鍵スイッチ１０２及び鍵タッチ検出手段１０３を介して得た鍵スイッチの操作状態や、パネルスイッチ１０４及びパネルスイッチ状態検出手段１０５を介して得た各種設定を基に音源制御パラメータを生成し、音源回路１０９に音源制御パラメータを出力することで、最終的にスピーカ１１２から発音される。
【００２６】
図２は、鍵毎の鍵スイッチ１０２の配置例を示す図である。鍵スイッチ１０２は、鍵毎に２個の鍵スイッチＳ１及びＳ２を有する。２０１は配線基板、２０２はシャッタ、２０３はキャッチャ、２０４はハンマである。鍵スイッチＳ１及びＳ２は、例えば光の透過／遮断を検出するフォトインタラプタ３００（図３）なる素子を使う。図３に示すように、フォトインタラプタ３００は、発光ダイオード３０１とフォトトランジスタ３０２を１つながりの筐体に収めたもので、カタカナのコの字状の形態をしている。
【００２７】
図２の例では、鍵盤の鍵に連動して回動するハンマ２０４毎に取り付けたシャッタ２０２の回動軌跡上に２個ずつフォトインタラプタ３００を並べ、１枚のシャッタ２０２で２個のフォトインタラプタ３００を横切るよう配置してある。シャッタ２０２は、着色した樹脂や金属等光を透過させず硬質な材質を使い、板状に成型する。色は、黒等濃い色が望ましい。取り付けは、ハンマシャンク及びキャッチャシャンクを挿入するバットと、キャッチャ２０３と、に跨って取り付ける。
【００２８】
図３は、鍵スイッチＳ１の構成例を示す回路図である。鍵スイッチＳ２も鍵スイッチＳ１と同じ構成を有する。フォトインタラプタ３００は、発光ダイオード３０１及びフォトトランジスタ３０２を有する。電源電圧Ｖｃｃ及びグランド電位間に、発光ダイオード３０１及び抵抗３０３の直列接続回路と、フォトトランジスタ３０２及び抵抗３０４の直列接続回路とが並列に接続される。コの字状のフォトインタラプタ３００の中央部に設けられた空間をシャッタ２０２が横切ると、出力電圧ＯＵＴが変動する。
【００２９】
図４は、鍵スイッチＳ１及びＳ２の動作例を示すタイムチャートである。シャッタ２０２がフォトインタラプタ３００内の発光ダイオード３０１とフォトトランジスタ３０２の間に無い場合、光が透過し、出力電圧ＯＵＴは電源電圧Ｖｃｃに近い値を示す。この出力電圧ＯＵＴの状態をスイッチオンとして扱う。逆に、シャッタ２０２がフォトインタラプタ３００内の発光ダイオード３０１とフォトトランジスタ３０２の間に有る場合、光は遮断され、出力電圧ＯＵＴはグランド電位に近い値を示す。この出力電圧ＯＵＴの状態をスイッチオフとして扱う。
【００３０】
図５は、鍵スイッチＳ１及びＳ２の出力例を示すタイムチャートである。図２のように鍵スイッチＳ１及びＳ２を配置した場合、シャッタ２０２と鍵スイッチ（フォトインタラプタ）Ｓ１，Ｓ２との位置関係は、次の様になる。
【００３１】
・非押鍵状態では、シャッタ２０２が２つのスイッチＳ１及びＳ２の光軸を共に遮らない。
・鍵盤の鍵を押し下げていくと、ハンマ２０４が回動し、シャッタ２０２が２つの鍵スイッチＳ１及びＳ２の光軸を、Ｓ１→Ｓ２の順で遮る。
・更に鍵盤の鍵を押し下げていくと、シャッタ２０２が２つの鍵スイッチＳ１及びＳ２の光軸を通り過ぎ、Ｓ1→Ｓ２の順で光透過状態になる。
・鍵盤の鍵を押し切った状態では、シャッタ２０２が２つの鍵スイッチＳ１及びＳ２の光軸を共に遮らない。
・鍵盤の鍵を戻すときはその逆の順に変化していく。
【００３２】
時刻ｔａ〜ｔｂの区間でシャッタ２０２の移動速度を検出し、時刻ｔｂでその移動速度に応じたベロシティの音量で発音する。その後、一旦スイッチＳ１及びＳ２が共にオフされた状態を経て、時刻ｔｃのようにスイッチＳ１及びＳ２が共にオンに戻ったら発音を停止するように消音処理する。なお、時刻ｔａ〜ｔｂの区間は、押鍵時の力をハンマ２０４に伝える部材（ジャック）がハンマ２０４の取り付け土台であるバットから離れた後の区間になるよう設定し、時刻ｔａ〜ｔｂの区間はシャッタ２０２が等速度で移動するようにしておく。
【００３３】
図６は、ハンマ２０４の移動速度を得るために使うカウント値の変化例を示す図である。鍵タッチ検出手段１０３は、図５の時刻ｔａからｔｂまでの時間をカウントし、カウント値を出力する。図５上の時刻ｔａのタイミングでカウンタを最大値ｃ＿ｍａｘにリセットし、その後一定時間毎にカウンタを減算していき、時刻ｔｂのタイミングで値を確定させる。確定した値は、次回リセットされるまで保持しておく。カウンタが減算を実施する時間間隔とスイッチＳ１からＳ２までの距離は予め判っているので、保持されたカウント値が最大値からどれくらい減ったかを調べれば、シャッタ２０２がスイッチＳ１からＳ２までを横切った速度、即ちハンマ２０４の移動速度が判る。
【００３４】
電子鍵盤楽器は、鍵毎に音量を把握するため、少なくとも鍵の数以上の数のカウンタ及び前記カウンタの出力であるカウント値を記憶する領域を有する。
【００３５】
図７は、カウント値の変化範囲を示す図である。既に述べたように、カウント値は、図５上の時刻ｔａのタイミングで最大値ｃ＿ｍａｘに初期化する。その後、所定時間ｔ＿ｍａｘをかけて、カウント値が０になるまで一定間隔で減算する。
【００３６】
後述するが、カウント値はリニア−ログ変換テーブル（図９）を参照する際のアドレスとして利用する。そのため、カウント値の最大値ｃ＿ｍａｘは、リニア−ログ変換テーブルの大きさａ＿ｍａｘよりも大きくなるよう設定しておく。また、得られるアドレスがリニア−ログ変換テーブルの範囲を超えることがないよう、演奏操作で得られるカウント値が図７の太線部（カウント値：（ｃ＿ｍａｘ−ａ＿ｍａｘ）〜ｃ＿ｍａｘ）に収まるよう、鍵スイッチＳ１及びＳ２の間隔並びにカウント値を減算する時間間隔と、リニア−ログ変換テーブルの大きさａ＿ｍａｘと、の関係を設定しておく。
【００３７】
図８は、カウント値をリニア−ログ変換テーブル用アドレスに変換する例を示す図である。カウント値が０〜（ｃ＿ｍａｘ−ａ＿ｍａｘ）の間はアドレスを最大値ａ＿ｍａｘで一定にし、カウント値が（ｃ＿ｍａｘ−ａ＿ｍａｘ）〜（ｃ＿ｍａｘ）の間は、０以上の範囲のアドレスに単調減少させる。この変換は、図８のような形態の変換テーブルを使っても良いし、演算で行っても良い。演算で求める場合は、ａ＿ｍａｘ以上の値をａ＿ｍａｘに置き換え、値の範囲を制限する。
【００３８】
シャッタ２０２の移動速度が速い時はカウント値の減算があまり行われないので、得られるカウント値が大きい。図８に示すような変換を行うと小さいアドレスが得られ、図９のリニア−ログ変換テーブルの出力である中間ベロシティは大きい値となる。逆に、シャッタ２０２の移動速度が遅い時はカウント値の減算が多く行われるので、得られるカウント値が小さくなり、結果的に中間ベロシティは小さい値となる。
【００３９】
図９は、リニア−ログ変換テーブルの例を示す図である。リニア−ログ変換テーブルは、図８のアドレスから中間アドレスに変換するためのテーブルである。また、リニア−ログ変換テーブルは、時間軸に対してリニアに出力されたカウント値を、人間の聴覚にあわせてログに変換するというものである。図８で説明した方法でカウント値をアドレスに変換し、図９のリニア−ログ変換テーブルを参照する。リニア−ログ変換テーブルの出力（中間ベロシティ）は、ＭＩＤＩのベロシティがとる値の範囲（０〜１２７）に収めておくと良い。
【００４０】
アドレス値ａ＿ｔｏｐは、シャッタ２０２が最短時間でスイッチＳ１からＳ２までを横切った場合のカウント値から得た値であり、リニア−ログ変換テーブルの出力が１２７以下に変わる変化点となる。アドレス値ａ＿ｔｏｐは、標準となる鍵、例えばキーナンバが４０の鍵を最強の力で打鍵した時に得られるアドレス値、あるいは前記アドレス値より少し小さめの値に設定しておく。アドレス値ａ＿ｅｎｄは、中間ベロシティが０になるアドレス値である。
【００４１】
図１０は、タッチカーブの例を示す図である。横軸は中間ベロシティを示し、縦軸は最終ベロシティを示す。このタッチカーブは、電子鍵盤楽器の音量特性の調整で用いられる変換テーブルであり、カウント値を図９のリニア−ログ変換テーブルで変換して得た中間ベロシティを電子鍵盤楽器の発音音量として使えるよう調整するためのものである。
【００４２】
タッチカーブ１００１を使うと、中間ベロシティはそれまでより大きな値に変更されるため、電子鍵盤楽器の発音量も大きくなる。このような場合、電子鍵盤楽器で容易に大きな音量で発音できるようになるため、演奏者は鍵盤のタッチレスポンスが軽くなったと感じる。逆に、タッチカーブ１００３を使うと、中間ベロシティはそれまでより小さな値に変更されるため、電子鍵盤楽器の発音量も小さくなる。このような場合、電子鍵盤楽器で大きな音量を出すには大きな打鍵力を必要とするようになるため、演奏者は鍵盤のタッチレスポンスが重くなったと感じる。タッチカーブ１００２は、中間ベロシティと最終ベロシティが同じなるようにしたものである。
【００４３】
図１１は、３個のタッチカーブ１００１〜１００３による音量調整結果のイメージを示す図である。横軸はアドレスを示し、縦軸は中間ベロシティを示す。実際にはタッチの軽重を変更する処理はタッチカーブ１００１〜１００３によって中間ベロシティを増減させて行っているが、この調整をリニア−ログ変換テーブル上で実施した場合は、リニア−ログ変換テーブルを図１１のように変化させたことと等価になる。
【００４４】
図１２（Ａ）、（Ｂ）及び図１３（Ａ）〜（Ｄ）に、鍵スイッチＳ１及びＳ２周辺における部品の取り付け状態の例を示す。取り付けの際、鍵スイッチ（フォトインタラプタ）Ｓ１，Ｓ２又はシャッタ２０２の取り付け位置や角度が誤差を持つと、下記の理由によってシャッタ２０２が鍵スイッチＳ１からＳ２までを横切る時間が変化する。
【００４５】
図１２（Ａ）及び（Ｂ）は、鍵スイッチＳ１及びＳ２でハンマ２０４の動きを検出し、ハンマの移動速度をベロシティとして得る例を示す図である。２０１は配線基板、２０２はシャッタ、２０３はキャッチャ、２０４はハンマである。図１２（Ａ）は正常時の鍵スイッチＳ１及びＳ２の取り付け状態を示す図であり、図１２（Ｂ）は異常時の鍵スイッチＳ１及びＳ２の取り付け状態を示す図である。
【００４６】
配線基板２０１上に設けた鍵スイッチＳ１及びＳ２の取り付け方法が悪いと、図１２（Ｂ）の様に鍵スイッチＳ１及び／又はＳ２が傾いたり位置がずれたりするため、結果的に鍵スイッチＳ１及びＳ２間の距離が増減する。これにより、シャッタ２０２が鍵スイッチＳ１からＳ２までを横切るのに要する時間も増減する。
【００４７】
図１３（Ａ）〜（Ｄ）は、鍵スイッチＳ１及びＳ２で鍵盤の鍵の動きを検出し、鍵の移動速度をベロシティとして得る例を示す図である。２０１は配線基板、２０２はシャッタ、１３０１は鍵盤の鍵である。図１３（Ａ）は正常時のシャッタ２０２の取り付け状態を示す図であり、図１３（Ｃ）は図１３（Ａ）の状態のシャッタ２０２の段差ｄ１を示す図である。図１３（Ｂ）は異常時のシャッタ２０２の取り付け状態を示す図であり、図１３（Ｄ）は図１３（Ｂ）の状態のシャッタ２０２の段差ｄ２を示す図である。
【００４８】
鍵盤の各鍵１３０１の下に設けたシャッタ２０２の取り付け方法が悪いと、図１３（Ｂ）の様にシャッタ２０２が傾いたり位置がずれたりするため、結果的に、図１３（Ｄ）の鍵スイッチＳ１及びＳ２間の距離ｄ２が増減する。これにより、シャッタ２０２が鍵スイッチＳ１からＳ２までを横切るのに要する時間も増減する。
【００４９】
図１４は、鍵スイッチＳ１及びＳ２間の距離の増加を考慮したリニア−ログ変換テーブルの例を示す図である。横軸はアドレスを示し、縦軸は中間ベロシティを示す。極端な例として、鍵スイッチＳ１及びＳ２の間隔が２倍に広がった場合を考えると、既に述べたように速度検出区間においてはシャッタ２０２が等速度で移動するため鍵スイッチＳ１及びＳ２間を移動する時間が２倍になり、鍵タッチ検出手段１０３の出力（カウント値）が取り得る範囲も２倍に増える。カウント値の変化範囲が２倍になれば、それを変換して得られるアドレス値の取り得る範囲も２倍になるので、例えば図１４のリニア−ログ変換テーブル１４０１が適用されていた鍵スイッチＳ１及びＳ２の間隔が２倍になった場合は、リニア−ログ変換テーブル１４０２のように、アドレスを２倍に伸ばして対応するのが好ましい。逆に、鍵スイッチＳ１及びＳ２の間隔が半分に縮まった場合は、カウント値も半分に減る。そのため、図示しないが変換テーブルは、変換テーブル１４０１の半分に縮めて対応するのが好ましい。
【００５０】
図１５は、比較例による音量補正のイメージを示す図である。横軸はアドレスを示し、縦軸は中間ベロシティを示す。実際には鍵毎の音量補正を図１０のタッチカーブ上で実施しているが、図１５では話を判り易くするため、リニア−ログ変換テーブルの特性を変えて同じ効果を得る場合のイメージを示している。
【００５１】
比較例では、鍵盤毎に−１．０〜＋１．０の範囲の補正値αを設定しておき、図１０のタッチカーブを通して得た最終ベロシティｖｅｌｏを用いて、ｖｅｌｏ＋ｖｅｌｏ×αなる演算を実施し、最終ベロシティｖｅｌｏを（０×ｖｅｌｏ）〜（２×ｖｅｌｏ）の範囲の値に補正する。最終ベロシティ補正値は、演算結果が０未満の場合は０に、１２７以上の場合は１２７にして、出力が０〜１２７の範囲に収まるよう制限する。
【００５２】
しかし、図１３（Ａ）〜（Ｄ）で説明した理由により、この補正方法は現状を反映できていない。また、補正値αを０よりも小さい値に補正した場合、ベロシティの最大値が１２７よりも必ず小さくなってしまうという問題もある。
【００５３】
図１６は、本実施形態による平行移動処理を使った音量補正のイメージを示す図である。横軸はアドレスを示し、縦軸は中間ベロシティを示す。実際にはリニア−ログ変換テーブルを参照するアドレスを、図１６の真中の太線で示した基準となるリニア−ログ変換テーブルの有効範囲に入るよう修正することで鍵毎の音量補正を実施するが、話を判り易くするため、リニア−ログ変換テーブルの特性を変えて同じ効果を得る場合のイメージを示している。
【００５４】
この補正方法は、見かけ上リニア−ログ変換テーブルを鍵毎に持ち、夫々のリニア−ログ変換テーブルを平行移動させるようにしたことと同じになる。リニア−ログ変換テーブルのアドレス値が小さい範囲はベロシティの変化幅が大きく、数カウントの増減でもベロシティに与える影響が大きいが、アドレス値が大きい範囲ではベロシティの変化幅が小さく、かつベロシティの値自体も小さいので差が判りにくい、という特性に着目した方法である。
【００５５】
鍵毎に補正値βを持ち、図８のようにカウント値を変換して得たリニア−ログ変換テーブルのアドレスに対して、前記補正値βを直接加減算するという方法で補正する。補正値βの取り得る範囲は、鍵スイッチＳ１及びＳ２の間隔やカウンタの演算速度によるが、１バイト程度のデータに収まる範囲（−６４〜＋６３）もあれば十分である。補正値βが正の場合は減算によってアドレスが小さくなるため、リニア−ログ変換テーブルの出力である中間ベロシティの値は大きくなる。逆に、補正値βが負の場合は減算によってアドレスが大きくなるため、リニア−ログ変換テーブルの出力である中間ベロシティの値は小さくなる。
【００５６】
この補正方法は、図１４で説明した現象に厳密には対応できていないが、鍵スイッチ間隔の取り付け誤差に起因するカウント値のばらつきが比較的小さい場合に適用できる。
【００５７】
図１７は、本実施形態による伸縮処理を使った音量補正のイメージを示す図である。横軸はアドレスを示し、縦軸は中間ベロシティを示す。図１６の場合と同じように、実際にはリニア−ログ変換テーブルを参照するアドレスを、図１７の真中の太線で示した基準となるリニア−ログ変換テーブルの有効範囲に入るよう修正することで鍵毎の音量補正を実施するが、話を判り易くするため、リニア−ログ変換テーブルの特性を変えて同じ効果を得る場合のイメージを示している。
【００５８】
この補正方法は、見かけ上リニア−ログ変換テーブルを鍵毎に持ち、夫々のリニア−ログ変換テーブルを伸縮させられるようにしたことと同じになる。
【００５９】
この補正方法は、鍵毎に補正値βを持ち、前記補正値βを加味した伸縮倍率でリニア−ログ変換テーブルのアドレスを乗算して補正を行うというものであり、乗算手段が必要な分平行移動による方法よりコストは高くなるものの、図１４で説明した現象に比較的よく対応できる。
【００６０】
図１８は、本実施形態による伸縮処理で用いる伸縮倍率の例を示す図である。補正値β（−ｖａｌ＿ｍａｘ〜＋ｖａｌ＿ｍａｘ）の値から、リニア−ログ変換テーブルのアドレスに対する伸縮倍率を求める。図１８の直線１８０１のような変換を行った場合は０〜２.０倍の伸縮倍率が得られ、直線１８０２のような変換を行った場合は０.５〜１.５倍の伸縮倍率が得られる。伸縮倍率の範囲は、正の値に限定しておく。図では伸縮倍率を２種類提示しているが、実際には鍵スイッチＳ１及びＳ２のばらつき具合を基に１種類だけ設定しておけば良い。補正値が正の場合は伸縮倍率が１未満になるので乗算によってアドレスが小さくなり、リニア−ログ変換テーブルの出力である中間ベロシティの値は大きくなる。逆に、補正値が負の場合は伸縮倍率が１以上になるので乗算によってアドレスが大きくなり、リニア−ログ変換テーブルの出力である中間ベロシティの値は小さくなる。
【００６１】
図１９は、図１５の比較例におけるベロシティ取得までのデータフローのイメージを示す図である。既に説明したが、この方法ではタッチカーブによるベロシティ変換を実施した後で、鍵毎の音量補正を行う。
【００６２】
鍵毎の鍵スイッチスキャン手段１９０１は、鍵スイッチＳ１及びＳ２の状態をスキャンする。次に、鍵毎の鍵スイッチの時間差カウント手段１９０２は、鍵スイッチＳ１がオンになってから鍵スイッチＳ２がオンになるまでの時間ｔｂ−ｔａをカウントする。次に、カウント−アドレス変換手段１９０３は、図８のように、カウント値からアドレスに変換する。次に、数値の丸め手段１９０４は、アドレスを０〜ａ＿ｍａｘの範囲に制限する。次に、リニア−ログ変換テーブル１９０５は、図９に示すように、アドレス値から中間ベロシティに変換し、出力する。
【００６３】
パネルスイッチスキャン手段１９０６は、パネルスイッチ１０４の状態をスキャンする。次に、パネル操作の解釈手段１９０７は、パネルスイッチ１０４の状態に応じて、パネル操作の解釈を行う。ユーザは、パネルスイッチ１０４を操作することにより、３個のタッチ変換テーブル１９１０〜１９１２の中の１つを選択し、ベロシティ補正値を指定することができる。タッチ変換テーブル指定種類の記憶手段１９０８は、パネル操作の解釈手段１９０７の出力に応じて、切り替え手段１９０９を制御する。切り替え手段１９０９は、リニア−ログ変換テーブル１９０５が出力する中間ベロシティを、３個のタッチ変換テーブル１９１０〜１９１２の中の１つに切り替えて出力する。
【００６４】
タッチ変換テーブル１９１０は、軽いタッチ用のタッチ変換テーブル１００１（図１０）に対応し、中間ベロシティを最終ベロシティに変換する。タッチ変換テーブル１９１１は、標準のタッチ用のタッチ変換テーブル１００２（図１０）に対応し、中間ベロシティを最終ベロシティに変換する。タッチ変換テーブル１９１２は、重いタッチ用のタッチ変換テーブル１００３（図１０）に対応し、中間ベロシティを最終ベロシティに変換する。
【００６５】
鍵毎のベロシティ補正値の記憶手段１９１３は、パネル操作の解釈手段１９０７の出力に応じて、鍵毎のベロシティ補正値（−１．０〜＋１．０）を出力する。乗算器１９１４は、タッチ変換テーブル１９１０〜１９１２の中の切り替え手段１９０９により選択されたものが出力する最終ベロシティと記憶手段１９１３が出力するベロシティ補正値とを乗算し、出力する。加算器１９１５は、タッチ変換テーブル１９１０〜１９１２の中の切り替え手段１９０９により選択されたものが出力する最終ベロシティと乗算器１９１４の出力値とを加算し、最終ベロシティ補正値を出力する。次に、数値の丸め手段１９１６は、加算器１９１５の出力値を０〜１２７の範囲に制限し、鍵毎のベロシティ（音量）を出力する。
【００６６】
図２０は、図１６で説明した本実施形態による平行移動処理におけるベロシティ取得までのデータフローのイメージを示す図である。既に説明したが、この方法は図１９の比較例よりも現実に近い音量補正結果を得るため、リニア−ログ変換テーブルを参照する時点で鍵毎の音量補正を行い、その後タッチカーブによるベロシティ変換を実施するものである。
【００６７】
図２０は、図１９に対して、記憶手段１９１３、乗算器１９１４及び加算器１９１５を削除し、記憶手段２００１及び減算器２００２を追加したものである。以下、図１９と異なる点を説明する。記憶手段２００１は、鍵毎のベロシティ補正値βを記憶し、パネル操作の解釈手段１９０７の出力に応じて、鍵毎のベロシティ補正値βを出力する。減算器２００２は、カウント−アドレス変換手段１９０３が出力するアドレスに対して、記憶手段２００１が出力するベロシティ補正値βを減算し、数値の丸め手段１９０４に出力する。タッチ変換テーブル１９１０〜１９１２の中の切り替え手段１９０９により選択されたものが出力する最終ベロシティが、鍵毎の最終的なベロシティ（音量）となる。
【００６８】
図２１は、図１７で説明した本実施形態による伸縮処理におけるベロシティ取得までのデータフローのイメージを示す図である。この方法も、本実施形態の平行移動処理（図２０）と同じ理由で、リニア−ログ変換テーブルを参照する時点で鍵毎の音量補正を行い、その後タッチカーブによるベロシティ変換を実施する。
【００６９】
図２１は、図２０に対して、減算器２００２を削除し、変換手段２１０１及び乗算器２１０２を追加したものである。以下、図２０と異なる点を説明する。変換手段２１０１は、図１８に示すように、記憶手段２００１が出力する補正値βを伸縮倍率（例えば、０．５〜１．５）に変換し、出力する。乗算器２１０２は、カウント−アドレス変換手段１９０３が出力するアドレスに対して、変換手段２１０１が出力する伸縮倍率を乗算し、数値の丸め手段１９０４に出力する。タッチ変換テーブル１９１０〜１９１２の中の切り替え手段１９０９により選択されたものが出力する最終ベロシティが、鍵毎の最終的なベロシティ（音量）となる。
【００７０】
図２２は、図１の電子鍵盤楽器の処理方法のメインルーチンを示すフローチャートである。この電子鍵盤楽器の処理は、ＣＰＵ１０１がメモリ１０６内のプログラムを実行することにより行われる。
【００７１】
ステップＳ２２０１では、ＣＰＵ１０１は、イニシャル処理により各種パラメータを初期化する。次に、ステップＳ２２０２では、発音／消音に関するイベント検出処理を行う。次に、ステップＳ２２０３では、イベント実行処理を行う。次に、ステップＳ２２０４では、パネル操作の解釈処理（パネルスイッチ検出処理を含む）を行う。次に、ステップＳ２２０５では、その他の処理を行う。その後、ステップＳ２２０２に戻り、電子鍵盤楽器の電源がオフされるまで続ける。その他の処理については詳細な説明を省略するが、例えばＭＩＤＩ送受信の制御、デモ曲再生の制御、演奏内容の記録、といった処理を行う。
【００７２】
図２３は、図２２のステップＳ２２０２のイベント検出処理の詳細を示すフローチャートである。まず、ステップＳ２３０１では、ＣＰＵ１０１は、鍵変数ｋｅｙを０に設定する。次に、ステップＳ２３０２では、ＣＰＵ１０１は、鍵タッチ検出手段１０３を介して、鍵毎の鍵タッチ検出処理を行う。具体的には、鍵スイッチＳ１及びＳ２の状態を検出する。次に、ステップＳ２３０３では、ＣＰＵ１０１は、鍵変数ｋｅｙをインクリメントする。次に、ステップ２３０４では、ＣＰＵ１０１は、鍵変数ｋｅｙが８８以上であるか否かをチェックする。８８以上でない場合にはステップＳ２３０２に戻り、８８以上である場合には処理を終了する。
【００７３】
ここでは、演奏操作に伴う発音関係のイベントを検出するための処理を、メインルーチンが一周する度に８８鍵分のタッチ検出処理を実施する場合の処理を示したが、メインルーチンが数周かけて回る間に８８鍵分の処理を分割して実施するような構成にしても構わない。
【００７４】
図２４は、図２２でのステップＳ２２０３のイベント実行処理の詳細を示すフローチャートである。まず、ステップＳ２４０１では、ＣＰＵ１０１は、鍵タッチ検出手段１０３を介して、鍵変数ｋｅｙに対応した鍵スイッチＳ１及びＳ２の状態を取得する。次に、ステップＳ２４０２では、ＣＰＵ１０１は、発音イベントが発生しているか否かをチェックする。発音イベントが発生していればステップＳ２４０３に進み、発音イベントが発生していなければステップＳ２４０４に進む。ステップＳ２４０３では、ＣＰＵ１０１は、音源回路１０９に対して発音イベント処理を行い、処理を終了する。ステップＳ２４０４では、ＣＰＵ１０１は、消音イベントが発生しているか否かをチェックする。消音イベントが発生していればステップＳ２４０５に進み、消音イベントが発生していなければステップＳ２４０６に進む。ステップＳ２４０５では、ＣＰＵ１０１は、音源回路１０９に対して消音イベント処理を行い、処理を終了する。ステップＳ２４０６では、ＣＰＵ１０１は、その他のイベント処理を行い、処理を終了する。
【００７５】
ここでは、図２３と同様に、指定した鍵変数ｋｅｙについて、図５で説明した鍵スイッチＳ１及びＳ２の状態と、図６で説明したカウント値と、をみて電子音の発音及び消音を実施する。図２４では発音イベントや消音イベントの判定内容まで記載していないので、以下に更に詳細な処理内容を説明する。
【００７６】
通常の発音タイミングでは、鍵スイッチＳ１及びＳ２間の距離に応じて減算処理が実施されるため、必ず最大値より小さいカウント値ｃｏｕｎｔ［ｋｅｙ］が得られる。これに対し、発音タイミング以外の場合は、カウンタのリセット直後に演算結果が維持されることになるため、結果的にリセット値である最大カウント値（＝ｃ＿ｍａｘ）が得られる。従って、鍵スイッチＳ１及びＳ２が共にオンであることを認識した後、カウント値ｃｏｕｎｔ［ｋｅｙ］が最大値か否かを調べれば、発音処理をすべきか消音処理をすべきかを判断できる。
【００７７】
発音指示を記録する際はカウント値も同時に記録し、後でハンマ２０４の移動速度即ち発音強度を算出できるよう準備しておく。消音指示も、発音指示と同じ形式で記録しておくと、後の処理が簡単になる。消音イベントが発生したときのカウント値は最大値となっているが、これを０に変えた上で発音指示として記録すれば良い。
【００７８】
図２５は、図２２のステップＳ２２０４のパネル操作の解釈処理の詳細を示すフローチャートである。まず、ステップＳ２５０１では、ＣＰＵ１０１は、パネルスイッチ状態検出手段１０５を介して、パネルスイッチ１０４の操作状態を取得する。ユーザは、パネルスイッチ１０４を操作することにより、音量補正したい鍵、その補正値、又はタッチカーブの種類（図１０）を指定することができる。次に、ステップＳ２５０２では、ＣＰＵ１０１は、上記のパネルスイッチ１０４の操作状態に応じて、鍵毎の音量の補正対象を変更するか否かを判断する。補正対象を変更する場合にはステップＳ２５０３に進み、補正対象を変更しない場合にはステップＳ２５０４に進む。ステップＳ２５０３では、ＣＰＵ１０１は、パネルスイッチ１０４の操作状態に応じて鍵毎の音量の補正対象の鍵番号ｖｏｌ＿ｋｅｙを更新し、処理を終了する。ステップＳ２５０４では、ＣＰＵ１０１は、上記のパネルスイッチ１０４の操作状態に応じて、鍵毎の音量の補正値を変更するか否かを判断する。補正値を変更する場合にはステップＳ２５０５に進み、補正値を変更しない場合にはステップＳ２５０６に進む。ステップＳ２５０５では、ＣＰＵ１０１は、パネルスイッチ１０４の操作状態に応じて鍵毎の音量の補正値β［ｖｏｌ＿ｋｅｙ］を更新し、処理を終了する。ステップＳ２５０６では、ＣＰＵ１０１は、パネルスイッチ１０４の操作状態に応じて、タッチカーブの種類を変更するか否かを判断する。タッチカーブの種類を変更する場合にはステップＳ２５０７に進み、タッチカーブの種類を変更しない場合にはステップＳ２５０８に進む。ステップＳ２５０７では、ＣＰＵ１０１は、パネルスイッチ１０４の操作状態に応じてタッチカーブの指定値ｔｏｕｃｈを更新し、処理を終了する。ステップＳ２５０８では、ＣＰＵ１０１は、パネルスイッチ１０４の操作状態に応じてその他の処理（音色番号ｔｏｎｅの変更等）を行い、処理を終了する。
【００７９】
ここでは、本実施形態の処理で用いる鍵毎の音量補正値β[ｖｏｌ＿ｋｅｙ]と、全鍵共通のタッチカーブの種類を指定するパラメータｔｏｕｃｈと、ピアノやオルガンといった音色を指定するパラメータｔｏｎｅ等の更新と記録を実施する。音量補正対象となる鍵を示すｖｏｌ＿ｋｅｙは、既に説明した鍵変数ｋｅｙと同様に鍵ナンバ０〜８７に一対一で対応させておき、１鍵ずつ補正値を設定できるようにする。この時、全ての鍵を対象とするような値を設定可能にしておいても良い。例えば、鍵変数ｋｅｙに鍵ナンバ８８以上の値を設定可能な構成にし、８８以上の設定値が入力された後は、補正値β［０］〜β［８７］全てに同じ補正量を加減算する。
【００８０】
タッチカーブは、例えば図１０のタッチカーブ１００１を軽いタッチカーブｔｃｈ＿ｔｂｌＬ［］、タッチカーブ１００２を標準のタッチカーブｔｃｈ＿ｔｂｌＭ［］、タッチカーブ１００３を重いタッチカーブｔｃｈ＿ｔｂｌＨ［］として予め用意しておく。タッチカーブの種類を示すパラメータｔｏｕｃｈは、軽いタッチカーブ１００１を指定する場合は１、標準のタッチカーブ１００２を指定する場合は２、重いタッチカーブ１００３を指定する場合は３、を記録する。
【００８１】
詳細な説明は省略するが、音色を指定するパラメータｔｏｎｅや、説明を省略するパラメータも、同様に対応する項目と設定値を一対一で対応させ、適宜記録しておけば良い。
【００８２】
図２６は、図２４のステップＳ２４０３の発音イベント処理の詳細を示すフローチャートである。まず、ステップＳ２６０１では、ＣＰＵ１０１は、鍵タッチ検出手段１０３を介して、図５の時刻ｔａから時刻ｔｂまでの時間に対応する鍵変数ｋｅｙのカウント値ｃｏｕｎｔ［ｋｅｙ］を取得する。次に、ステップＳ２６０２では、ＣＰＵ１０１は、図７及び図８に示すように、上記のｃｏｕｎｔ［ｋｅｙ］がｃ＿ｍａｘ−ａ＿ｍａｘより大きいか否かを判断する。大きければステップＳ２６０３に進み、大きくなければステップＳ２６１１に進む。ステップＳ２６０３では、ＣＰＵ１０１は、図８に示すように、上記のカウント値ｃｏｕｎｔ［ｋｅｙ］をアドレスａｄｄｒに変換する。次に、ステップＳ２６０４では、ＣＰＵ１０１は、図１６又は図１７に示すように、リニア−ログ変換テーブルｌｉ＿ｌｇ＿ｔｂｌ［］を用いてアドレスａｄｄｒを中間ベロシティｔ＿ｖｅｌｏ（＝ｌｉ＿ｌｇ＿ｔｂｌ［ａｄｄｒ］）に変換する。次に、ステップＳ２６０５では、ＣＰＵ１０１は、タッチカーブの指定値ｔｏｕｃｈの記録を取得する。次に、ステップＳ２６０６では、ＣＰＵ１０１は、タッチカーブの指定値ｔｏｕｃｈが標準のタッチカーブを指定しているか否かを判断する。標準のタッチカーブを指定している場合にはステップＳ２６０８に進み、標準のタッチカーブを指定していない場合にはステップＳ２６０７に進む。ステップＳ２６０８では、ＣＰＵ１０１は、図１０に示すように、標準のタッチカーブｔｃｈ＿ｔｂｌＭ［］を用いて中間ベロシティｔ＿ｖｅｌｏを最終ベロシティｖｅｌｏ（＝ｔｃｈ＿ｔｂｌＭ［ｔ＿ｖｅｌｏ］）に変換し、ステップＳ２６１１に進む。ステップＳ２６０７では、ＣＰＵ１０１は、タッチカーブの指定値ｔｏｕｃｈが軽いタッチカーブを指定しているか否かを判断する。軽いタッチカーブを指定している場合にはステップＳ２６０９に進み、軽いタッチカーブを指定していない場合にはステップＳ２６１０に進む。ステップＳ２６０９では、ＣＰＵ１０１は、図１０に示すように、軽いタッチカーブｔｃｈ＿ｔｂｌＬ［］を用いて中間ベロシティｔ＿ｖｅｌｏを最終ベロシティｖｅｌｏ（＝ｔｃｈ＿ｔｂｌＬ［ｔ＿ｖｅｌｏ］）に変換し、ステップＳ２６１１に進む。ステップＳ２６１０では、ＣＰＵ１０１は、図１０に示すように、重いタッチカーブｔｃｈ＿ｔｂｌＨ［］を用いて中間ベロシティｔ＿ｖｅｌｏを最終ベロシティｖｅｌｏ（＝ｔｃｈ＿ｔｂｌＨ［ｔ＿ｖｅｌｏ］）に変換し、ステップＳ２６１１に進む。ステップＳ２６１１では、ＣＰＵ１０１は、音源回路１０９に対して、鍵番号ｋｅｙ、音量（最終ベロシティ）ｖｅｌｏ及び音色ｔｏｎｅを基に楽音信号を生成させ、スピーカ１１２から発音させる。
【００８３】
ここでは、まず図２３と同様に、指定した鍵変数ｋｅｙについて、鍵変数ｋｅｙに対応した２つの鍵スイッチＳ１及びＳ２をシャッタ２０２が横切る時間に該当するカウント値ｃｏｕｎｔ［ｋｅｙ］を取得する。次に、図８で説明したカウント値−アドレス値の変換を行い、アドレスａｄｄｒを得る。この変換は単純なので、プログラムで実施しても良いし、カウント値−アドレス値変換テーブルｃｔ＿ａｄｄｒ＿ｔｂｌ［］を用意しておき、これをカウント値ｃｏｕｎｔ［ｋｅｙ］で参照することで実施しても良い。更に、図９で説明したリニア−ログ変換テーブルｌｎ＿ｌｇ＿ｔｂｌ［］をアドレスａｄｄｒで参照すれば中間ベロシティｔ＿ｖｅｌｏが得られる。
【００８４】
その後、図２５の処理で記録しておいたタッチカーブの種類の指定値ｔｏｕｃｈを取得し、予め記録しておいた軽いタッチカーブｔｃｈ＿ｔｂｌＬ［］、標準のタッチカーブｔｃｈ＿ｔｂｌＭ［］、重いタッチカーブｔｃｈ＿ｔｂｌＨ［］のどれを参照したら良いかを把握する。タッチカーブの種類が決まれば、その種類のタッチカーブで、先程求めた中間ベロシティｔ＿ｖｅｌｏを変換すれば、音源制御で使える発音量としての最終ベロシティｖｅｌｏが求められる。
【００８５】
最後に、ＣＰＵ１０１は、鍵番号ｋｅｙと、音量（最終ベロシティ）ｖｅｌｏと、図２５の処理で記録しておいた音色指定ｔｏｎｅと、の値を参考にしながら、必要なパラメータを生成して音源回路１０９に出力する。ここで音源回路１０９に出力するパラメータは、使用する音源回路１０９によって異なるので、ここでは説明を省略する。
【００８６】
図２７は、図２６のステップＳ２６０３のアドレス変換処理の詳細を示すフローチャートであり、図１６で説明した方法を使い、見かけ上リニア−ログ変換テーブルが平行移動したかのように処理する場合の処理例である。まず、ステップＳ２７０１では、ＣＰＵ１０１は、鍵変数ｋｅｙの音量補正値β［ｋｅｙ］の記録を取得する。次に、ステップＳ２７０２では、ＣＰＵ１０１は、カウント値ｃｏｕｎｔ［ｋｅｙ］から補正値β［ｋｅｙ］を減算したアドレスａｄｄｒ（＝ｃｏｕｎｔ［ｋｅｙ］−β［ｋｅｙ］）を演算する。次に、ステップＳ２７０３では、ＣＰＵ１０１は、アドレスａｄｄｒが０より小さいか否かを判断する。０より小さい場合にはステップＳ２７０４に進み、０より小さくない場合にはステップＳ２７０５に進む。ステップＳ２７０４では、ＣＰＵ１０１は、アドレスａｄｄｒに０を設定し、処理を終了する。ステップＳ２７０５では、ＣＰＵ１０１は、アドレスａｄｄｒが最大値ａ＿ｍａｘ以上であるか否かを判断する。最大値ａ＿ｍａｘ以上である場合にはステップＳ２７０６に進み、最大値ａ＿ｍａｘ以上でない場合には処理を終了する。ステップＳ２７０６では、ＣＰＵ１０１は、アドレスａｄｄｒに（ａ＿ｍａｘ−１）の値を設定し、処理を終了する。
【００８７】
以上のように、まず、処理対象となる鍵変数ｋｅｙについて図２５の処理で記録した鍵毎の音量の補正値β［ｋｅｙ］を求め、それをカウント値ｃｏｕｎｔ［ｋｅｙ］から減じ、リニア−ログ変換テーブルを参照するアドレスａｄｄｒを得る。最後に、アドレスａｄｄｒがリニア−ログ変換テーブルの範囲を超えないよう、０〜１２７の範囲で制限する処理を行う。
【００８８】
図２８は、図２６のステップＳ２６０３の他のアドレス変換処理の詳細を示すフローチャートであり、図１７で説明した方法を使い、見かけ上リニア−ログ変換テーブルが伸縮したかのように処理する場合の処理例である。まず、ステップＳ２８０１では、ＣＰＵ１０１は、鍵変数ｋｅｙの音量補正値β［ｋｅｙ］の記録を取得する。次に、ステップＳ２８０２では、ＣＰＵ１０１は、図１８に示すように、変換テーブルｘ＿ｔｂｌ［］を用いて補正値β［ｋｅｙ］から伸縮倍率Ｘ（＝ｘ＿ｔｂｌ［β［ｋｅｙ］］）に変換する。次に、ステップＳ２８０３では、ＣＰＵ１０１は、カウント値ｃｏｕｎｔ［ｋｅｙ］に伸縮倍率Ｘを乗算したアドレスａｄｄｒ（＝ｃｏｕｎｔ［ｋｅｙ］×Ｘ）を演算する。次に、ステップＳ２８０４では、ＣＰＵ１０１は、アドレスａｄｄｒが最大値ａ＿ｍａｘ以上であるか否かを判断する。最大値ａ＿ｍａｘ以上である場合にはステップＳ２８０５に進み、最大値ａ＿ｍａｘ以上でない場合には処理を終了する。ステップＳ２８０５では、ＣＰＵ１０１は、アドレスａｄｄｒに（ａ＿ｍａｘ−１）の値を設定し、処理を終了する。
【００８９】
以上のように、まず、処理対象となる鍵変数ｋｅｙについて図２５の処理で記録した鍵毎の音量の補正値β［ｋｅｙ］を求め、更に図１８で説明した音量補正値−伸縮倍率変換テーブルｘ＿ｔｂｌ［］を前記補正値β［ｋｅｙ］で参照し、伸縮倍率Ｘを求める。更に、求めた伸縮倍率Ｘをカウント値ｃｏｕｎｔ［ｋｅｙ］に対して乗算し、リニア−ログ変換テーブルを参照するアドレスａｄｄｒを得る。最後に、アドレスａｄｄｒがリニア−ログ変換テーブルの範囲を超えないよう、０〜１２７の範囲で制限する処理を行う。変換倍率Ｘは正の範囲に設定してあるので、演算結果が０以下になった場合の制限処理は不要である。
【００９０】
以上のように、本実施形態の電子鍵盤楽器は、複数の鍵を有する鍵盤１０２と、前記鍵盤１０２の各鍵に対応して設けられ、前記鍵盤１０２の押鍵速度に対応する時間間隔で順次オンする第１のスイッチＳ１及び第２のスイッチＳ２とを有する。カウント手段１９０２（鍵タッチ検出手段１０３）は、カウントステップにおいて、第１のスイッチＳ１及び第２のスイッチＳ２が順次オンする時間間隔に対応するカウント値をカウントする。補正手段は、補正ステップにおいて、前記時間間隔のばらつきに応じて前記カウント値又はそれに応じた値を補正する。具体的には、前記補正手段は、前記カウント値をアドレスに変換し、前記アドレスを補正する。ベロシティ変換手段は、リニア−ログ変換テーブル１９０５及びタッチ変換テーブル１９１０〜１９１２を含み、ベロシティ変換ステップにおいて、前記補正された値をベロシティに変換する。
【００９１】
前記補正手段は、図１６及び図１７に示すように、前記ベロシティの最小値（例えば０）に対応する補正対象の値ａ＿ｅｎｄ及び前記ベロシティの最大値（例えば１２７）に対応する補正対象の値ａ＿ｔｏｐがシフトするように補正する。
【００９２】
図１６、図２０及び図２７の場合、前記補正手段は、前記カウント値又はそれに応じた値に補正値βを加算又は減算することにより補正を行う。具体的には、前記補正手段は、前記鍵盤１０２の押鍵された鍵毎の補正値を加算又は減算する。また、記憶手段２００１は、前記鍵盤１０２の鍵毎の前記補正値を記憶する。
【００９３】
図１７、図２１及び図２８の場合、前記補正手段は、前記カウント値又はそれに応じた値に補正倍率Ｘを乗算することにより補正を行う。具体的には、前記補正手段は、前記鍵盤１０２の押鍵された鍵毎の補正倍率Ｘを乗算する。また、前記補正手段は、前記鍵盤１０２の鍵毎の補正値βを補正倍率Ｘに変換し、前記補正倍率Ｘを乗算する。また、記憶手段２００１は、前記鍵盤１０２の鍵毎の前記補正値βを記憶する。
【００９４】
図２及び図１２（Ａ）、（Ｂ）の場合、第１のスイッチＳ１及び第２のスイッチＳ２は、前記鍵盤１０２の押鍵に伴うハンマ２０４の移動速度に対応する時間間隔で順次オンする。また、図１３（Ａ）〜（Ｄ）の場合、第１のスイッチＳ１及び第２のスイッチＳ２は、前記鍵盤１０２の押鍵に伴う鍵１３０１の移動速度に対応する時間間隔で順次オンする。
【００９５】
本実施形態によれば、第１のスイッチＳ１及び第２のスイッチＳ２の取り付けの不具合又はシャッタ２０２の取り付けの不具合により、第１のスイッチＳ１及び第２のスイッチＳ２が順次オンする時間間隔がばらついた場合にも、正確なベロシティに変換し、音量制御を行うことができる。
【００９６】
本実施形態は、コンピュータ（電子鍵盤楽器）がプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００９７】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９８】
１０１  ＣＰＵ
１０２  鍵スイッチ（鍵盤）
１０３  鍵タッチ検出手段
１０４  パネルスイッチ
１０５  パネルスイッチ状態検出手段
１０６〜１０８，１１０  メモリ
１０９  音源回路
１１１  オーディオ回路
１１２  スピーカ
【図１】
0005739395.tif 000002
【図２】
0005739395.tif 000003
【図３】
0005739395.tif 000004
【図４】
0005739395.tif 000005
【図５】
0005739395.tif 000006
【図６】
0005739395.tif 000007
【図７】
0005739395.tif 000008
【図８】
0005739395.tif 000009
【図９】
0005739395.tif 000010
【図１０】
0005739395.tif 000011
【図１１】
0005739395.tif 000012
【図１２】
0005739395.tif 000013
【図１３】
0005739395.tif 000014
【図１４】
0005739395.tif 000015
【図１５】
0005739395.tif 000016
【図１６】
0005739395.tif 000017
【図１７】
0005739395.tif 000018
【図１８】
0005739395.tif 000019
【図１９】
0005739395.tif 000020
【図２０】
0005739395.tif 000021
【図２１】
0005739395.tif 000022
【図２２】
0005739395.tif 000023
【図２３】
0005739395.tif 000024
【図２４】
0005739395.tif 000025
【図２５】
0005739395.tif 000026
【図２６】
0005739395.tif 000027
【図２７】
0005739395.tif 000028
【図２８】
0005739395.tif 000029