(57)【要約】【課題】電子楽器におけるベロシティ制御技術に関し、連続した押鍵のベロシティ値のばらつきが少なくなるように制御を行うことにより、楽器初心者でもテンポの速い曲やフレーズで音の強弱をそろえて演奏できるようにする。【解決手段】今回の押鍵のベロシティ値が算出された後に（ベロシティ値算出処理）、今回の押鍵と前回の押鍵の時間差が算出される（時間差算出処理）。次に、時間差が所定最大時間に比較して短いときに、時間差に応じたベロシティ変動閾値が算出される（ベロシティ変動閾値算出処理）。このとき更に、今回の押鍵と前回の押鍵のベロシティ値の変動度合いがベロシティ変動閾値に比較して大きく、かつ所定のベロシティ変動度合いの最大値に比較して小さい場合に、変動度合いがベロシティ変動閾値に等しくなるように、今回の押鍵のベロシティ値が修正して出力される（ベロシティ修正処理）。【選択図】図１
2017173383.tif 000002
【特許請求の範囲】
【請求項１】
発音指示が入力される毎にベロシティ値を取得するベロシティ取得処理と、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得する時間差取得処理と、
前記取得された時間差が第１の時間差を越えない場合でかつ、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正するベロシティ修正処理と、
を実行する処理部と、
を有するベロシティ修正装置。
【請求項２】
前記処理部は、前記ベロシティ修正処理において、前記取得された時間差が前記第１の時間差を越えない場合、前記取得された差分値が前記第１の差分ベロシティの変動閾値以下である場合及び前記取得された差分値が前記第１の差分ベロシティの最大変動閾値以上である場合の少なくとも一方の場合は、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行する請求項１に記載のベロシティ修正装置。
【請求項３】
前記処理部は、前記ベロシティ修正処理において、前記第１の発音指示の入力により取得されたベロシティ値が前記第２の発音指示の入力により取得されたベロシティ値より大きい場合は、前記第１の発音指示の入力により取得されたベロシティ値を、前記第２の発音指示の入力により取得されたベロシティ値に前記第１の差分ベロシティの変動閾値を加算した値に修正する一方、前記第１の発音指示の入力により取得されたベロシティ値が前記第２の発音指示の入力により取得されたベロシティより小さい場合は、前記第１の発音指示の入力により取得されたベロシティ値を、前記第２の発音指示の入力により取得されたベロシティから前記第１の差分ベロシティの変動閾値を減算した値に修正する処理を実行する、請求項１または２に記載のベロシティ修正装置。
【請求項４】
前記処理部はさらに、前記取得された時間差が前記第１の時間差を越えない場合に、前記取得された時間差に基づいて、前記変動閾値を決定するベロシティ変動閾値決定処理を実行する、請求項１乃至３のいずれかに記載のベロシティ修正装置。
【請求項５】
前記処理部は、前記ベロシティ変動閾値決定処理において、前記取得された時間差が小さくなるに従って、値の小さくなるベロシティ変動係数を取得する処理を実行する、請求項４に記載のベロシティ修正装置。
【請求項６】
前記処理部は、前記ベロシティ変動閾値決定処理において、前記変動閾値に対して前記ベロシティ変動係数を乗算する処理を実行する、請求項５に記載のベロシティ修正装置。
【請求項７】
前記処理部は、前記ベロシティ変動閾値決定処理において、前記ベロシティ変動閾値に対して前記ベロシティ変動閾値を加算する処理を実行する、請求項５に記載のベロシティ修正装置。
【請求項８】
前記処理部は、前記時間差取得処理において、前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとして、前記第１の発音指示の入力より以前でかつ直近の発音指示入力のタイミングを取得する、請求項１乃至７のいずれかに記載のベロシティ修正装置。
【請求項９】
前記処理部は、前記ベロシティ修正処理において、前記取得された時間差が予め定められた第２の時間差より小さい場合は、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行する、請求項１乃至８のいずれかに記載のベロシティ修正装置。
【請求項１０】
前記処理部は、前記ベロシティ修正処理において、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行した後、前記予め定められた第２の時間差より短い時間差で新たな発音指示の入力があった場合は、前記新たな発音指示の入力により取得されたベロシティ値を、前記第１の発音指示の入力により取得されたベロシティ値と前記第１の発音指示の入力より以前の第２の発音指示の入力により取得されたベロシティ値とに基づいて修正する処理を実行する、請求項９に記載のベロシティ修正装置。
【請求項１１】
前記処理部は、前記ベロシティ修正処理において、前記新たな発音指示の入力により取得されたベロシティ値を、前記第１の発音指示の入力により取得されたベロシティ値と前記第１の発音指示の入力より以前の第２の発音指示の入力により取得されたベロシティ値との平均値に基づいて修正する処理を実行する、請求項１０に記載のベロシティ修正装置。
【請求項１２】
ベロシティ修正装置が、
発音指示が入力される毎にベロシティを取得し、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得し、
前記取得された時間差が第１の時間差を越えない場合に、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分ベロシティ値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正する、ベロシティ修正方法。
【請求項１３】
ベロシティ修正装置として用いられるコンピュータに、
発音指示が入力される毎にベロシティを取得するベロシティ取得ステップと、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得する時間差取得ステップと、
前記取得された時間差が第１の時間差を越えない場合に、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正するベロシティ修正ステップと、
を実行させるプログラム。
【請求項１４】
請求項１に記載のベロシティ修正装置と、
前記ベロシティ修正装置に対して、発音指示を供給する発音指示部と、
前記ベロシティ修正装置により修正されたベロシティ値に基づいた楽音を生成する音源と、
を有する電子楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベロシティ修正装置、ベロシティ修正方法、プログラム及び電子楽器に関する。
【背景技術】
【０００２】
ベロシティ検出機能を有する電子ピアノ、電子キーボード等の電子楽器が従来から知られている。これらの電子楽器は、鍵盤の各鍵毎に、複数の接点及びセンサの組を有し、鍵の押鍵時にセンサが感知する時間差から押鍵の速度に対応するベロシティ値を算出し、その算出されたベロシティ値に応じた強度と押鍵された鍵盤に対応する音高で、楽音を発音している。鍵が弱く（遅く）弾かれれば小さく、強く（速く）弾かれれば大きく楽音が発音されるので、演奏者はより豊かに演奏表現を行うことができる。
【０００３】
ここで、上述のようなベロシティ付き電子楽器は豊かな演奏表現が可能になるが、初心者の場合、テンポの速い曲やフレーズを演奏すると、指をうまく動かすことができず意図せず音量がばらばらになってしまうことがある
【０００４】
このような課題を解決する従来技術として、以下のようなものが知られている（例えば特許文献１に記載の技術）。演奏操作子が操作された際のベロシティ値だけではなく、それ以前の異なる時点に存在したベロシティ値をも加味して演算されたベロシティ値に基づき、発音される楽音が制御される。具体的には、演奏操作子が操作された際のベロシティ値と直前に発音されたときのベロシティ値とを例えば７対１の割合で混合した結果が、今回のベロシティ値とされる。これにより、発音される楽音のベロシティ値において、１／８の割合で含まれる前回のベロシティ値によって演奏操作の速度や圧力の相違によるベロシティ値の無用な変動を抑制しつつ、７／８の割合で含まれる今回のベロシティ値によって演奏者の意図する演奏操作を今回のベロシティ値に反映させることを可能にする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１９４９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
この従来技術は、今回の演奏により取得されるベロシティ値は、その前、特に直前の演奏の状態が反映されることを前提としている。このために、今回の演奏により取得されたベロシティ値を決定する際に、前回の演奏により得られたベロシティ値を反映させているのである。
【０００７】
しかしながら、この反映の度合いは常に一定であり、仮に演奏者が意図して直前のベロシティを反映させないような演奏をしたとしても、直前の演奏のベロシティは反映されてしまう。
【０００８】
また、通常楽曲の演奏においては、前回の演奏のタイミングと今回の演奏のタイミングとの時間差が短い場合は、時間差が長い場合と比べてベロシティの変動度合いは小さくなることが知られている。特に、テンポの速い曲やフレーズを演奏するために鍵盤を連打するような場合には、連続する押鍵間のベロシティ値はできる限り一定になるようにしたほうが演奏上好ましい結果となる。しかも、連打の速度が速いときにはほとんど一定となり、遅いときには少し幅があってよいという程度に、ベロシティ値が収まることが望ましい。しかしながら、上述したような、前回のベロシティ値と今回のベロシティ値を単に一定の割合で混合させるような従来技術では、演奏間隔に応じてベロシティの変動度合いを制御することは行うことはできないという課題があった。
【０００９】
そこで、本発明は、演奏により連続して入力されるベロシティの演奏者の意図していないばらつきのみを減らすことができるベロシティ修正装置、ベロシティ修正方法、プログラム及び電子楽器を提供することを目的とする。
【課題を解決するための手段】
【００１０】
態様の一例では、発音指示が入力される毎にベロシティ値を取得するベロシティ取得処理と、第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得する時間差取得処理と、前記取得された時間差が第１の時間差を越えない場合でかつ、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正するベロシティ修正処理と、を実行する処理部と、を備える。
【発明の効果】
【００１１】
本発明によれば、連続した押鍵のベロシティ値における演奏者の意図しないばらつきが少なくなるように制御を行うことにより、楽器初心者でもテンポの速い曲やフレーズで音の強弱をそろえて演奏することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】今回の押鍵のベロシティ値が前回の押鍵のベロシティ値より大きい場合の本実施形態の動作説明図である。
【図２】今回の押鍵のベロシティ値が前回の押鍵のベロシティ値より小さい場合の本実施形態の動作説明図である。
【図３】前回と今回との押鍵の時間差ｔに応じて、ベロシティ変動閾値Ｄの変化の状態を表わす本実施形態の動作説明図である。
【図４】電子楽器の実施形態のハードウェア構成例を示す図である。
【図５】メイン処理の例を示すフローチャートである。
【図６】鍵盤処理の例を示すフローチャートである。
【図７】タイマ処理の例を示すフローチャートである。
【図８】変換処理１の例を示すフローチャートである。
【図９】変換処理２の例を示すフローチャートである。
【図１０】変換処理３において、前回と今回との押鍵の時間差ｔが予め定められた第２の時間ＩＮ＿ＴＩＭＥ以下であった場合の動作説明図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。本実施形態では、演奏者の演奏操作により発生する押鍵（発音指示）に基づいて発音される楽音のベロシティを制御する電子楽器である。
【００１４】
本実施形態では、発音指示が入力される毎に前記発音指示の入力に対応したベロシティを取得し（ベロシティ取得処理）、今回の発音指示の入力のタイミングと今回の発音指示の入力より以前の発音指示の入力のタイミングとの時間差を取得する（時間差取得処理）。そして、取得された時間差が予め定められた第１の時間差を越えない場合に、今回の発音指示の入力により取得されたベロシティ値と以前の発音指示の入力により取得されたベロシティ値との差分ベロシティ値が、予め定められた上限ベロシティ値と下限ベロシティ値とに基づいて決定された差分ベロシティの範囲内である場合に、今回の発音指示の入力により取得されたベロシティ値を前記以前の発音指示の入力により取得されたベロシティ値に基づいて修正する（ベロシティ修正処理）。
【００１５】
図１〜図３は、本実施形態の動作説明図である。図１〜図３において縦軸はベロシティ値、横軸は押鍵に伴う時間の経過を表わす。そして、Ｖｐは前回の押鍵のベロシティ値、Ｖｎは今回の押鍵のベロシティ値を表わす。
【００１６】
図１（ａ）、（ｂ）、（ｃ）及び（ｄ）は、今回の押鍵のベロシティ値Ｖｎが前回の押鍵のベロシティ値Ｖｐより大きい場合を表わす。図１（ａ）は、前回と今回との押鍵の時間差ｔが予め定められた第１の時間ＭＡＸ＿ＴＩＭＥより小さく、かつ今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘよりも大きい場合を示す。この場合は、今回の押鍵のベロシティ値Ｖｎは修正されずにそのまま出力される。
【００１７】
図１（ｂ）は、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘ以下でかつベロシティ変動閾値Ｄ以下の場合を示す。この場合も、今回の押鍵のベロシティ値Ｖｎは、修正されずにそのまま出力される。
【００１８】
図１（ｃ）は、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘ以下でかつベロシティ変動閾値Ｄより大きい場合を示す。この場合も、今回の押鍵のベロシティ値Ｖｎ‘は、前回の押鍵のベロシティ値Ｖｐにベロシティ変動閾値Ｄを加算した値になる。
【００１９】
図１（ｄ）は、前回と今回との押鍵の時間差ｔが予め定められた第１の時間ＭＡＸ＿ＴＩＭＥ以上である場合を示す。この場合は今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差如何に係らず、今回の押鍵のベロシティ値Ｖｎは修正されずにそのまま出力される。
【００２０】
図２（ａ）、（ｂ）、（ｃ）及び（ｄ）は、今回の押鍵のベロシティ値Ｖｎが前回の押鍵のベロシティ値Ｖｐより小さい場合を表わす。
【００２１】
図２（ａ）は、前回と今回との押鍵の時間差ｔが予め定められた第１の時間ＭＡＸ＿ＴＩＭＥより小さく、かつ今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘよりも大きい場合を示し、図２（ｂ）は、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘ以下でかつベロシティ変動閾値Ｄ以下の場合を示す。さらに図２（ｄ）は、これらいずれの場合も、今回の押鍵のベロシティ値Ｖｎは、修正されずにそのまま出力される。
【００２２】
図２（ｃ）は、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差が、ベロシティ変動閾値の最大値Ｄｍａｘ以下でかつベロシティ変動閾値Ｄより大きい場合を示す。この場合は、今回の押鍵のベロシティ値Ｖｎ‘’は、前回の押鍵のベロシティ値Ｖｐにベロシティ変動閾値Ｄを減算した値になる。
【００２３】
図２（ｄ）は、前回と今回との押鍵の時間差ｔが予め定められた第１の時間ＭＡＸ＿ＴＩＭＥ以上である場合を示す。この場合は今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差如何に係らず、今回の押鍵のベロシティ値Ｖｎは修正されずにそのまま出力される。
【００２４】
図３は、前回と今回との押鍵の時間差に応じて、ベロシティ変動閾値Ｄの変化の状態を表わす図である。
【００２５】
図３（ａ）は、時間差Ｔが小さい場合を示し、図３（ｂ）は時間差Ｔ‘が大きい場合を示す。ベロシティ変動閾値Ｄは、図３（ａ）の場合と比べて図３（ｂ）の場合は大きくなる。これは、前回と今回との押鍵間隔が大きくなるにつれて、今回の押鍵のベロシティ値は、前回の押鍵のベロシティ値の影響をうけにくくなることを意味する。
【００２６】
・    このような処理により、連続した押鍵（連打）のベロシティ値における演奏者の意図しないばらつきが少なくなるように連打時のベロシティ値が揃えられる。この結果、楽器初心者でもテンポの速い曲やフレーズで音の強弱をそろえて演奏することが可能となる。
【００２７】
図４は、電子楽器の実施形態のハードウェア構成例を示す図である。図４において、電子楽器１００は、例えば電子ピアノとして実現され、ＣＰＵ（中央演算処理装置）２０１、プログラムＲＯＭ（リードオンリーメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、鍵盤部２０４、スイッチ部２０５、および音源２０６を備え、それらがシステムバス２０８によって相互に接続された構成を有する。また、音源２０６の出力はサウンドシステム２０７に入力する。
【００２８】
ＣＰＵ２０１は、ワークＲＡＭ２０３を作業用メモリとして使用しながらプログラムＲＯＭ２０２に記憶された制御プログラムを実行することにより、図４の電子楽器１００の制御動作を実行する。
【００２９】
鍵盤部２０４は、演奏者による各鍵の押鍵または離鍵の操作を検出すると共に、押鍵の速さをベロシティとして検出し、発音指示／消音指示とベロシティを、ＣＰＵ２０１に通知する。
【００３０】
スイッチ部２０５は、演奏者による各種スイッチの操作を検出し、ＣＰＵ２０１に通知する。
【００３１】
音源２０６は、ＣＰＵ２０１から入力する発音指示データに基づいて、ベロシティを制御しながら、デジタル楽音波形データを生成し、サウンドシステム２０７に出力する。サウンドシステム２０７は、音源２０６から入力したデジタル楽音波形データをアナログ楽音波形信号に変換した後、そのアナログ楽音波形信号を内蔵のアンプで増幅して内蔵のスピーカから放音する。
【００３２】
本実施形態による電子楽器１００は、後述する図５〜図９のフローチャート等で実現される機能を搭載した制御プログラムをＣＰＵ２０１が実行することで実現される。その制御プログラムは、例えば特には図示しない可搬記録媒体に記録して配布し、あるいは特には図示しない通信インタフェースによりネットワークから取得して、プログラムＲＯＭ２０２に記憶できるようにしてもよい。
【００３３】
図５は、図４のＣＰＵ２０１がプログラムＲＯＭ２０２に記憶された制御プログラムを実行する動作として実現されるメイン処理の処理例を示すフローチャートである。図４のスイッチ部２０５内の特には図示しない電源スイッチがオンされると、ＣＰＵ２０１は、図５のフローチャートで例示されるメイン処理をスタートさせる。
【００３４】
ＣＰＵ２０１はまず、初期化処理を実行し、ワークＲＡＭ２０３内の変数群の初期化等を行う（ステップＳ３０１）。
【００３５】
その後、ＣＰＵ２０１は、ステップＳ３０２の鍵盤処理およびステップＳ３０３のその他の処理を、繰り返し実行する。ステップＳ３０３では、図４のスイッチ部２０５の操作状態の取込みとそれに対応する処理等が実行される。
【００３６】
図６は、図５のステップＳ３０２の鍵盤処理の例を示すフローチャートである。
【００３７】
まず、ＣＰＵ２０１は、図６の鍵盤２０４の押鍵又は離鍵の状態をスキャンする（ステップＳ４０１）。
【００３８】
ステップＳ４０１でのスキャンの結果、演奏者による押鍵が発生した場合には、ＣＰＵ２０１は、押鍵された鍵のノートナンバーと共に、ベロシティ値ｖｅｌｏｃｉｔｙを取得し、ワークＲＡＭ２０３内の今回の押鍵のベロシティ値を保持する変数Ｖｎに格納する（ステップＳ４０２）。
【００３９】
次に、ＣＰＵ２０１は、ワークＲＡＭ２０３内の前回の押鍵時からの時間を保持する変数ｔの値を参照する。ＣＰＵ２０１は、押鍵が発生する毎に、変数ｔの値を取り込んだ後にこの変数ｔの値をクリアする。その後、ＣＰＵ２０１は、スイッチ部２０５で演奏者により指定されたテンポと、ＣＰＵ２０１内の特には図示しないハードウェアタイマの出力に基づいて、４分音符を４８０の精度で分解したｔｉｃｋと呼ばれる単位で、割込みを発生させる。この割込みにより、図７のフローチャートで例示されるタイマ処理が実行される。この結果、ＣＰＵ２０１は、ｔｉｃｋの分解能で、変数ｔの値を＋１ずつインクリメントする（図７のステップＳ５０１）。この結果、変数ｔには、前回の押鍵発生時からの経過時間が保持されることになる。図６の説明に戻り、ＣＰＵ２０１は、変数ｔの値を参照した結果、今回の押鍵と前回の押鍵の時間差ｔの値が、プログラムＲＯＭ２０２に記憶されている予め定められた第１の時間ＭＡＸ＿ＴＩＭＥより短いか否かを判定する（ステップＳ４０３）。
【００４０】
ステップＳ４０３の判定がＹＥＳならば、ＣＰＵ２０１は更に、ワークＲＡＭ２０３に保持されている前回の押鍵のベロシティ値Ｖｐの値が０であるか否かを判定する（ステップＳ４０４）。
【００４１】
ステップＳ４０４の判定がＮＯならば、ＣＰＵ２０１は、今回のベロシティ値を修正するための変換処理を実行する（ステップＳ４０５）。その後、ＣＰＵ２０１は、ステップＳ４０６に移行する。
【００４２】
ステップＳ４０３の判定がＮＯの場合又はステップＳ４０４の判定がＹＥＳの場合には、ＣＰＵ２０１は、ステップＳ４０５は実行せずにステップＳ４０６に移行する。ステップＳ４０３の判定がＮＯとなる場合は、今回の押鍵と前回の押鍵の時間差ｔの値が第１の時間ＭＡＸ＿ＴＩＭＥ以上となる場合であって、この場合には、ＣＰＵ２０１は、連続した押鍵（連打）では無いと判断して、今回の押鍵のベロシティ値Ｖｎはそのままで発音指示を行うことになる。ステップＳ４０４の判定がＹＥＳとなる場合は、起動後最初の押鍵でワークＲＡＭ２０３内の前回の押鍵のベロシティ値が０となる場合であり、この場合も、ＣＰＵ２０１は、連続した押鍵（連打）では無いと判断して、今回の押鍵のベロシティ値Ｖｎはそのままで発音指示を行うことになる。
【００４３】
ステップＳ４０６において、ＣＰＵ２０１は、前回の押鍵のベロシティ値を保持するワークＲＡＭ２０３内の変数Ｖｐに、今回の押鍵のベロシティ値を格納する。
【００４４】
その後、ＣＰＵ２０１は、ワークＲＡＭ２０３内の変数ｔの値を０に初期化する（ステップＳ４０７）。
【００４５】
最後に、ＣＰＵ２０１は、ワークＲＡＭ２０３内の変数Ｖｎに保持されている今回の押鍵のベロシティ値と、図４の鍵盤２０４から別途取得しているノートナンバーを指定して、図４の音源２０６に発音指示を行う（ステップＳ４０８）。以上の動作により、ＣＰＵ２０１は、図６のフローチャートで示される図５のステップＳ３０２の鍵盤処理を終了する。
【００４６】
次に、図６の変換処理の第１の実施形態（以下「変換処理１」と記載する）について説明する。ここではまず、時間差に応じたベロシティ変動閾値を算出する処理の第１の例として、下記（１）式に示されるように、ワークＲＡＭ２０３内の変数ｔの値として得られる時間差ｔに、正値である第１の係数αを乗算した結果に正値である第２の係数βを加算して得た値が、ベロシティ変動閾値として算出される。
【００４７】
Ｄ＝Ｆ（ｔ）＝α×ｔ＋β  （α＞０，β＞０)  ・・・（１）
【００４８】
この例では、押鍵の間隔が小さいほどベロシティ変動閾値Ｄが小さくなって、今回のベロシティ値が前回のベロシティ値に近づけられることになる。時間差ｔが長ければ長いほど遅めの連打を、逆に、時間差ｔが短ければ短いほど速めの連打を、判定することになる。
【００４９】
次に、変換処理１では、時間差ｔが所定最大時間ＭＡＸ＿ＴＩＭＥに比較して短いときに（前述した図６のステップＳ４０３参照）、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差の絶対値｜Ｖｎ−Ｖｐ｜が、変動度合いとして算出される。そして、この差の絶対値｜Ｖｎ−Ｖｐ｜が（１）式で算出されたベロシティ変動閾値Ｄに比較して大きく、かつベロシティ変動度合いの最大値Ｄｍａｘに比較して小さい場合に、差の絶対値｜Ｖｎ−Ｖｐ｜がベロシティ変動閾値Ｄに等しくなるように、今回の押鍵のベロシティ値Ｖｎが修正されて出力される。すなわち、以下の条件でベロシティ値が変換される。
【００５０】
Ｄ＜｜Ｖｎ−Ｖｐ｜＜Ｄｍａｘ  ・・・（２）
ならば、
【００５１】
｜Ｖｎ−Ｖｐ｜＝Ｄ  ・・・（３）
【００５２】
上記（２）式の条件判断において、差の絶対値｜Ｖｎ−Ｖｐ｜がベロシティ変動閾値Ｄ以下の場合は、演奏者が前回の押鍵時と同じ程度のベロシティ値で今回の押鍵を行ったと判定されて、今回のベロシティ値Ｖｎはそのまま修正されずに出力される。また、差の絶対値｜Ｖｎ−Ｖｐ｜がベロシティ変動度合いの最大値Ｄｍａｘ以上である場合は、演奏者が意識してベロシティ値を変えたとみなされ、やはり今回のベロシティ値Ｖｎはそのまま修正されずに出力される。
【００５３】
ここで、Ｖｎ≧Ｖｐの場合には、（２）式は、次式のように書き換えられる。
【００５４】
Ｄ＜Ｖｎ−Ｖｐ＜Ｄｍａｘ
∴Ｖｐ＋Ｄ＜Ｖｎ＜Ｖｐ＋Ｄｍａｘ  ・・・（４）
【００５５】
上記（４）式が成立するならば、（３）式より、今回のベロシティ値Ｖｎは、次式により修正される。
【００５６】
Ｖｎ＝Ｖｐ＋Ｄ  ・・・（５）
【００５７】
一方、Ｖｐ＞Ｖｎの場合には、（２）式は、次式のように書き換えられる。
【００５８】
Ｄ＜Ｖｐ−Ｖｎ＜Ｄｍａｘ
∴Ｖｐ−Ｄｍａｘ＜Ｖｎ＜Ｖｐ−Ｄ  ・・・（６）
【００５９】
上記（６）式が成立するならば、（３）式より、今回のベロシティ値Ｖｎは、次式により修正される。
【００６０】
Ｖｎ＝Ｖｐ−Ｄ・・・（７）
【００６１】
図８は、図６のステップＳ４０５の変換処理の詳細例である変換処理１の例を示すフローチャートである。
【００６２】
まず、ＣＰＵ２０１は、前述した（１）式によりベロシティ変動閾値Ｄを算出し、ワークＲＡＭ２０３内の同名の変数Ｄに格納する（ステップＳ６０１）。
【００６３】
次に、ＣＰＵ２０１は、前回の押鍵のベロシティ値Ｖｐが今回の押鍵のベロシティ値Ｖｎよりも大きいか否か、即ち、Ｖｐ＞Ｖｎであるか否かを判定する（ステップＳ６０２）。
【００６４】
ステップＳ６０２の判定がＮＯの場合、即ち、Ｖｎ≧Ｖｐである場合には、ＣＰＵ２０１は、前述した（４）式の条件が成立するか否かを判定する（ステップＳ６０３）。
【００６５】
ステップＳ６０３の判定がＹＥＳならば、ＣＰＵ２０１は、前述した（５）式により、今回の押鍵のベロシティ値Ｖｎを修正する（ステップＳ６０４）。
【００６６】
ステップＳ６０３の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ６０４の処理はスキップして、今回の押鍵のベロシティ値Ｖｎは修正せずに、そのままとする。
【００６７】
以上の処理の後、ＣＰＵ２０１は、図８のフローチャートで例示される図６のステップＳ４０５の変換処理を終了する。
【００６８】
一方、ステップＳ６０２の判定がＹＥＳの場合、即ち、Ｖｐ＞Ｖｎである場合には、ＣＰＵ２０１は、前述した（６）式の条件が成立するか否かを判定する（ステップＳ６０５）。
【００６９】
ステップＳ６０５の判定がＹＥＳならば、ＣＰＵ２０１は、前述した（７）式により、今回の押鍵のベロシティ値Ｖｎを修正する（ステップＳ６０６）。
【００７０】
ステップＳ６０５の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ６０６の処理はスキップして、今回の押鍵のベロシティ値Ｖｎは修正せずに、そのままとする。
【００７１】
以上の処理の後、ＣＰＵ２０１は、図８のフローチャートで例示される図６のステップＳ３０５の変換処理を終了する。
【００７２】
次に、図６の変換処理の第２の実施形態（以下「変換処理２」と記載する）について説明する。ここではまず、時間差に応じたベロシティ変動閾値を算出する処理の第２の例として、下記（８）式に示されるように、ワークＲＡＭ２０３内の変数ｔの値として得られる時間差ｔを所定最大時間ＭＡＸ＿ＴＩＭＥで除算して得た値が、ベロシティ変動閾値Ａとして算出される。
【００７３】
Ａ＝Ｆ（ｔ）＝ｔ／ＭＡＸ＿ＴＩＭＥ  ・・・（８）
【００７４】
この第２の例においても、第１の例の場合と同様に、押鍵の間隔が小さいほどベロシティ変動閾値Ａが小さくなって、今回のベロシティ値が前回のベロシティ値に近づけられることになる。時間差ｔが長ければ長いほど遅めの連打を、逆に、時間差ｔが短ければ短いほど速めの連打を、判定することになる。
【００７５】
次に、変換処理２では、時間差ｔが所定最大時間ＭＡＸ＿ＴＩＭＥに比較して短いときに（前述した図６のステップＳ３０３参照）、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差の絶対値｜Ｖｎ−Ｖｐ｜の前回の押鍵のベロシティ値Ｖｐに対する変動比率｜Ｖｎ−Ｖｐ｜／Ｖｐが、変動度合いとして算出される。そして、この変動比率｜Ｖｎ−Ｖｐ｜／Ｖｐが（８）式で算出されたベロシティ変動閾値Ａに比較して大きく、かつベロシティ変動度合いの最大値Ａｍａｘに比較して小さい場合に、変動比率｜Ｖｎ−Ｖｐ｜／Ｖｐがベロシティ変動閾値Ａに等しくなるように、今回の押鍵のベロシティ値Ｖｎが修正されて出力される。すなわち、以下の条件でベロシティ値が変換される。
【００７６】
Ａ＜｜Ｖｎ−Ｖｐ｜／Ｖｐ＜Ａｍａｘ  ・・・（９）
ならば、
【００７７】
｜Ｖｎ−Ｖｐ｜／Ｖｐ＝Ａ  ・・・（１０）
【００７８】
上記（９）式のような条件判断により、ベロシティ値の差の値だけではなくベロシティ値自身の値によっても、連打によりベロシティ値を一定に近づけるための閾値の判断基準を変えることが可能となる。
【００７９】
上記（９）式の条件判断において、変動比率｜Ｖｎ−Ｖｐ｜／Ｖｐがベロシティ変動閾値Ａ以下の場合は、演奏者が前回の押鍵時と同じ程度のベロシティ値で今回の押鍵を行ったと判定されて、今回のベロシティ値Ｖｎはそのまま修正されずに出力される。また、差の変動比率｜Ｖｎ−Ｖｐ｜／Ｖｐがベロシティ変動度合いの最大値Ａｍａｘ以上である場合は、演奏者が意識してベロシティ値を変えたとみなされ、やはり今回のベロシティ値Ｖｎはそのまま修正されずに出力される。
【００８０】
ここで、Ｖｎ≧Ｖｐの場合には、（９）式は、次式のように書き換えられる。
【００８１】
Ａ＜Ｖｎ−Ｖｐ／Ｖｐ＜Ａｍａｘ
∴ＡＶｐ＋Ｖｐ＜Ｖｎ＜ＡｍａｘＶｐ＋Ｖｐ
∴（１＋Ａ）Ｖｐ＜Ｖｎ＜（１＋Ａｍａｘ）Ｖｐ  ・・・（１１）
【００８２】
上記（１１）式が成立するならば、（１０）式より、今回のベロシティ値Ｖｎは、次式により修正される。
【００８３】
（Ｖｎ−Ｖｐ）／Ｖｐ＝Ａ
∴Ｖｎ−Ｖｐ＝ＡＶｐ
∴Ｖｎ＝ＡＶｐ＋Ｖｐ
∴Ｖｎ＝（１＋Ａ）Ｖｐ  ・・・（１２）
【００８４】
一方、Ｖｐ＞Ｖｎの場合には、（９）式は、次式のように書き換えられる。
【００８５】
Ａ＜Ｖｐ−Ｖｎ／Ｖｐ＜Ａｍａｘ
∴ＡＶｐ−Ｖｐ＜−Ｖｎ＜ＡｍａｘＶｐ−Ｖｐ
∴Ｖｐ−ＡｍａｘＶｐ＜Ｖｎ＜Ｖｐ−ＡＶｐ
∴（１−Ａｍａｘ）Ｖｐ＜Ｖｎ＜（１−Ａ）Ｖｐ  ・・・（１３）
【００８６】
上記（１３）式が成立するならば、（１０）式より、今回のベロシティ値Ｖｎは、次式により修正される。
【００８７】
（Ｖｐ−Ｖｎ）／Ｖｐ＝Ａ
∴Ｖｐ−Ｖｎ＝ＡＶｐ
∴Ｖｎ＝Ｖｐ−ＡＶｐ
∴Ｖｎ＝（１−Ａ）Ｖｐ  ・・・（１４）
【００８８】
図９は、図６のステップＳ３０５の変換処理の詳細例である変換処理２の例を示すフローチャートである。
【００８９】
まず、ＣＰＵ２０１は、前述した（８）式によりベロシティ変動閾値Ａを算出し、ワークＲＡＭ２０３内の同名の変数Ｄに格納する（ステップＳ７０１）。
【００９０】
次に、ＣＰＵ２０１は、前回の押鍵のベロシティ値Ｖｐが今回の押鍵のベロシティ値Ｖｎよりも大きいか否か、即ち、Ｖｐ＞Ｖｎであるか否かを判定する（ステップＳ７０２）。
【００９１】
ステップＳ７０２の判定がＮＯの場合、即ち、Ｖｎ≧Ｖｐである場合には、ＣＰＵ２０１は、前述した（１１）式の条件が成立するか否かを判定する（ステップＳ７０３）。
【００９２】
ステップＳ７０３の判定がＹＥＳならば、ＣＰＵ２０１は、前述した（１２）式により、今回の押鍵のベロシティ値Ｖｎを修正する（ステップＳ７０４）。
【００９３】
ステップＳ７０３の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ７０４の処理はスキップして、今回の押鍵のベロシティ値Ｖｎは修正せずに、そのままとする。
【００９４】
以上の処理の後、ＣＰＵ２０１は、図９のフローチャートで例示される図６のステップＳ３０５の変換処理を終了する。
【００９５】
一方、ステップＳ７０２の判定がＹＥＳの場合、即ち、Ｖｐ＞Ｖｎである場合には、ＣＰＵ２０１は、前述した（１３）式の条件が成立するか否かを判定する（ステップＳ７０５）。
【００９６】
ステップＳ７０５の判定がＹＥＳならば、ＣＰＵ２０１は、前述した（１４）式により、今回の押鍵のベロシティ値Ｖｎを修正する（ステップＳ７０６）。
【００９７】
ステップＳ７０５の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ７０６の処理はスキップして、今回の押鍵のベロシティ値Ｖｎは修正せずに、そのままとする。
【００９８】
以上の処理の後、ＣＰＵ２０１は、図９のフローチャートで例示される図６のステップＳ３０５の変換処理を終了する。
【００９９】
次に、変換処理の第３の実施形態（以下これを「変換処理３」と記載する）について説明する。演奏において、例えば３音が同時に押鍵される場合がある。そのような同時押鍵に続いて今回の押鍵が連打されるような場合には、今回の押鍵のベロシティ値は、その前の同時に押鍵された例えば３音の押鍵の各ベロシティ値に基づいて修正されることが望ましい。また、同時に押鍵される例えば３音については、それらのベロシティ値は修正されないことが望ましい。
【０１００】
そこで、変換処理３ではまず、同時発音の状態が検出される。まず、前回の押鍵と今回の押鍵との時間差ｔが所定最大時間ＭＡＸ＿ＴＩＭＥよりも短い所定最小時間ＭＩＮ＿ＴＩＭＥに比較して短いときに、前回の押鍵と今回の押鍵はほぼ同時に押鍵されたと判定される。この場合には、前述したベロシティ値修正処理は実行されずに、今回の押鍵と前回の押鍵に同時発音状態が記録される（同時発音記録処理）。具体的には、例えば図４のＣＰＵ２０１は、ワークＲＡＭ２０３に、同時発音数を保持する変数に、２音が同時発音されたことを示す値２を格納する。さらに、次の押鍵でも同様の条件が成立すれば、ＣＰＵ２０１は、ワークＲＡＭ２０３内の同時発音数を保持する変数の値を、値２に対して＋１インクリメントして３音が同時発音されたことを示す値３にする。
【０１０１】
図１０は、前回と今回との押鍵の時間差ｔが予め定められた第２の時間ＩＮ＿ＴＩＭＥ以下であった場合を示す。この場合は図１０（ａ）に示すように、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐの差如何に係らず、今回の押鍵のベロシティ値Ｖｎは修正されずにそのまま出力される。
【０１０２】
その後、時間差ｔが所定最大時間ＭＡＸ＿ＴＩＭＥよりも短いが、前述した所定最小時間ＭＩＮ＿ＴＩＭＥよりは長くなったときには、前回までの同時発音に続いて連打が行われたと判定される。この場合には、前回の押鍵以前で同時発音状態が連続して記録されている各押鍵の各ベロシティ値から演算して得られるベロシティ値が、前回の押鍵のベロシティ値とされる。例えば、ワークＲＡＭ２０３内の同時発音数を保持する変数の値が３であれば、例えばワークＲＡＭ２０３に保持されている過去３音分のベロシティ値から、新たなベロシティ値が算出される。例えば同時発音された各ベロシティ値の平均値が算出される。或いは、同時発音された各ベロシティ値の中央値が算出される。このようにして算出された新たなベロシティ値が、前回の押鍵のベロシティ値とされる。
【０１０３】
図１０（ｂ）は、図１０（ａ）の状態から、第２の時間ＩＮ＿ＴＩＭＥ以上経過した時点でさらに新たな押鍵によるベロシティ値Ｖｎ‘が取得された場合を示している。このベロシティ値Ｖｎ‘を今回の押鍵によるベロシティ値とした場合は、今回の押鍵のベロシティ値Ｖｎと前回の押鍵のベロシティ値Ｖｐとの平均値を前回の押鍵のベロシティ値とみなして、今回の押鍵のベロシティ値Ｖｎ‘を修正する。
【０１０４】
これ以降の動作は、前述した変換処理１又は２と同様である。
【０１０５】
このようにして、変換処理３では、複数鍵が同時に押鍵される同時発音が行われた場合であっても、連打時のベロシティ値を適切に修正することが可能となる。
【０１０６】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
発音指示が入力される毎にベロシティ値を取得するベロシティ取得処理と、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得する時間差取得処理と、
前記取得された時間差が第１の時間差を越えない場合でかつ、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正するベロシティ修正処理と、
を実行する処理部と、
を有するベロシティ修正装置。
（付記２）
前記処理部は、前記ベロシティ修正処理において、前記取得された時間差が前記第１の時間差を越えない場合、前記取得された差分値が前記第１の差分ベロシティの変動閾値以下である場合及び前記取得された差分値が前記第１の差分ベロシティの最大変動閾値以上である場合の少なくとも一方の場合は、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行する付記１に記載のベロシティ修正装置。
（付記３）
前記処理部は、前記ベロシティ修正処理において、前記第１の発音指示の入力により取得されたベロシティ値が前記第２の発音指示の入力により取得されたベロシティ値より大きい場合は、前記第１の発音指示の入力により取得されたベロシティ値を、前記第２の発音指示の入力により取得されたベロシティ値に前記第１の差分ベロシティの変動閾値を加算した値に修正する一方、前記第１の発音指示の入力により取得されたベロシティ値が前記第２の発音指示の入力により取得されたベロシティより小さい場合は、前記第１の発音指示の入力により取得されたベロシティ値を、前記第２の発音指示の入力により取得されたベロシティから前記第１の差分ベロシティの変動閾値を減算した値に修正する処理を実行する、付記１または２に記載のベロシティ修正装置。
（付記４）
前記処理部はさらに、前記取得された時間差が前記第１の時間差を越えない場合に、前記取得された時間差に基づいて、前記変動閾値を決定するベロシティ変動閾値決定処理を実行する、付記１乃至３のいずれかに記載のベロシティ修正装置。
（付記５）
前記処理部は、前記ベロシティ変動閾値決定処理において、前記取得された時間差が小さくなるに従って、値の小さくなるベロシティ変動係数を取得する処理を実行する、付記４に記載のベロシティ修正装置。
（付記６）
前記処理部は、前記ベロシティ変動閾値決定処理において、前記変動閾値に対して前記ベロシティ変動係数を乗算する処理を実行する、付記５に記載のベロシティ修正装置。
（付記７）
前記処理部は、前記ベロシティ変動閾値決定処理において、前記ベロシティ変動閾値に対して前記ベロシティ変動閾値を加算する処理を実行する、付記５に記載のベロシティ修正装置。
（付記８）
前記処理部は、前記時間差取得処理において、前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとして、前記第１の発音指示の入力より以前でかつ直近の発音指示入力のタイミングを取得する、付記１乃至７のいずれかに記載のベロシティ修正装置。
（付記９）
前記処理部は、前記ベロシティ修正処理において、前記取得された時間差が予め定められた第２の時間差より小さい場合は、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行する、付記１乃至８のいずれかに記載のベロシティ修正装置。
（付記１０）
前記処理部は、前記ベロシティ修正処理において、前記第１の発音指示の入力により取得されたベロシティ値をそのまま出力する処理を実行した後、前記予め定められた第２の時間差より短い時間差で新たな発音指示の入力があった場合は、前記新たな発音指示の入力により取得されたベロシティ値を、前記第１の発音指示の入力により取得されたベロシティ値と前記第１の発音指示の入力より以前の第２の発音指示の入力により取得されたベロシティ値とに基づいて修正する処理を実行する、付記９に記載のベロシティ修正装置。
（付記１１）
前記処理部は、前記ベロシティ修正処理において、前記新たな発音指示の入力により取得されたベロシティ値を、前記第１の発音指示の入力により取得されたベロシティ値と前記第１の発音指示の入力より以前の第２の発音指示の入力により取得されたベロシティ値との平均値に基づいて修正する処理を実行する、付記１０に記載のベロシティ修正装置。
（付記１２）
ベロシティ修正装置が、
発音指示が入力される毎にベロシティを取得し、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得し、
前記取得された時間差が第１の時間差を越えない場合に、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分ベロシティ値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正する、ベロシティ修正方法。
（付記１３）
ベロシティ修正装置として用いられるコンピュータに、
発音指示が入力される毎にベロシティを取得するベロシティ取得ステップと、
第１の発音指示の入力のタイミングと前記第１の発音指示の入力より以前の第２の発音指示の入力のタイミングとの時間差を取得する時間差取得ステップと、
前記取得された時間差が第１の時間差を越えない場合に、前記第１の発音指示の入力により取得されたベロシティ値と前記第２の発音指示の入力により取得されたベロシティ値との差分値が、第１の差分ベロシティの変動閾値以上である場合に、前記第１の発音指示の入力により取得されたベロシティ値を前記第２の発音指示の入力により取得されたベロシティ値に基づいて修正するベロシティ修正ステップと、
を実行させるプログラム。
（付記１４）
付記１に記載のベロシティ修正装置と、
前記ベロシティ修正装置に対して、発音指示を供給する発音指示部と、
前記ベロシティ修正装置により修正されたベロシティ値に基づいた楽音を生成する音源と、
を有する電子楽器。
【符号の説明】
【０１０７】
１００  電子楽器
２０１  ＣＰＵ
２０２  プログラムＲＯＭ
２０３  ワークＲＡＭ
２０４  鍵盤
２０５  スイッチ部
２０６  音源
２０７  サウンドシステム
【図１】
2017173383.tif 000003
【図２】
2017173383.tif 000004
【図３】
2017173383.tif 000005
【図４】
2017173383.tif 000006
【図５】
2017173383.tif 000007
【図６】
2017173383.tif 000008
【図７】
2017173383.tif 000009
【図８】
2017173383.tif 000010
【図９】
2017173383.tif 000011
【図１０】
2017173383.tif 000012