(57)【特許請求の範囲】
【請求項１】
上下限位置間の操作位置に操作可能な操作子にパラメータを割り当てて、該パラメータの割り当て当初のパラメータ値を、該操作子の操作前の操作位置で出力するパラメータ値として対応させ、該パラメータの取り得る最小のパラメータ値を、該操作子の下限位置で出力するパラメータ値として対応させ、該パラメータの取り得る最大のパラメータ値を、該操作子の上限位置で出力するパラメータ値として対応させ、その対応関係に合わせて該操作子の操作後の操作位置に対応するパラメータ値を出力するようにしたパラメータ値修正出力装置であって、
割り当て当初の操作子の位置から操作子の下限位置までの変化量に対する、割り当て当初のパラメータ値から該最小のパラメータ値までの変化量が所定値よりも大きい場合には、該操作子の下限位置に対応するパラメータ値を該最小のパラメータ値よりも大きい値に設定し、割り当て当初の操作子の位置から操作子の上限位置までの変化量に対する、割り当て当初のパラメータ値から該最大のパラメータ値までの変化量が所定値よりも大きい場合には、該操作子の上限位置に対応するパラメータ値を該最大のパラメータ値よりも小さい値に設定する設定手段と、
割り当て当初の操作子の位置に対応するパラメータ値と、該設定手段により設定された該操作子の下限位置に対応するパラメータ値または該操作子の上限位置に対応するパラメータ値とに基づき、その対応関係に合わせて該操作子の操作後の操作位置に対応するパラメータ値を決定する決定手段と
を備えたパラメータ値修正出力装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は例えば電子楽器等の電子機器におけるパラメータ等の調整に用いるパラメータ値修正出力装置に関する。
【０００２】
従来、例えば電子楽器等において、既に設定されている何らかのパラメータ（例えばプリセットされているパラメータ）の値を修正したい場合には、そのパラメータを読み出してきて操作子を用いてその値を変えている。この操作子としては、操作のし易さから、スライド形や回転形の抵抗器（スライダやポテンショメータ等）がよく用いられる。この場合に問題となるのは、修正の際における操作子のノブの操作位置と読み出してきたパラメータの値との対応関係である。すなわち、操作子は下限端と上限端の間でノブが動されて設定がされ、その操作位置に応じて操作子からの出力が決まる。一方、修正のために読み出してきたパラメータの値は、通常その読出時の操作子のノブの位置とは無関係であり、両者に対応関係がない。
【０００３】
そこで、従来の一般的な方法としては、パラメータを読み出してきた後、その値を修正するために操作子を操作したら、その時点でその読み出したパラメータの値を操作子の操作位置に対応した値に切り換え、以降、操作子でその値を所望の値に調整している。しかし、この方法では、操作子を最初に操作した時点で、読み出してきたパラメータの値が操作子で決まる他の値に突然に変わってしまうので、パラメータの変化の仕方が把握しずらく、調整に違和感があるという問題がある。
【０００４】
このような問題に対処する方法として、本出願人は特開平５−１３４６６６号公報で開示したパラメータ修正方法を提案している。この方法は、パラメータを読み出した時の操作子の操作位置に対して、読み出したパラメータの値をその時の操作子出力として割り当て、操作子を例えば下限方向に操作する場合には、パラメータ読出し時の操作子の操作位置と下限位置との間のストロークで操作子を操作することで、パラメータの値を読出し時の値と最小値との範囲で変化するように、操作子の操作位置とその出力との関係を修正するものである。
【０００５】
例えば、０〜１００の操作範囲で動く操作子で、０〜１００の値の範囲のパラメータを調整する場合、読み出してきたパラメータの値が７０、その読出し時の操作子の操作位置が３０とすると、操作子を下限方向に操作する場合には、操作子の３０〜０の操作範囲に対して、パラメータの値が７０〜０の範囲で変化するように、対応関係を修正するものである。よって、操作子の操作位置が３０の時にはパラメータ値として７０が出力され、操作子の操作位置を１５に操作した時にはパラメータ値として３５が出力され、操作子の操作位置を０に操作した時にはパラメータ値として０が出力されるようになる。
【０００６】
【発明が解決しようとする課題】
上述の方法によれば、読み出してきたパラメータの値とその時の操作子の操作位置との対応関係をとることで操作子の操作時にパラメータの値が突然に変化することを防止でき、これによりパラメータの変化の仕方の把握が容易になり、調整の違和感をなくせる。
【０００７】
しかしながら、この方法の場合でも、読み出してきたパラメータの値とその読出時の操作子の操作位置とが大きく隔たっている場合には不自然さがまだ残る。例えば、上述の例では、読み出してきたパラメータの値が８０、その時の操作子の操作位置が１０であるとすると、操作子の０〜１０の操作範囲に対してパラメータ値が０〜８０の範囲にわたって変化することになり、操作子の操作位置が１０の時にはパラメータ値は８０、操作位置が５の時にはパラメータ値は４０というように、操作子を少し動かしただけでパラメータ値が大きく変化してしまう。すなわち、操作子の操作量に対するパラメータ値の分解能が粗くなってしまうもので、精密な調整が難しくなり、不自然な操作感になる。
【０００８】
本発明はかかる問題点に鑑みてなされたものであり、操作子の操作量に対するパラメータ値の分解能を高く保って精密な調整ができるようにするとともに、操作感に不自然さのないようにすることを目的とする。
【０００９】
【課題を解決するための手段および作用】
上述の課題を解決するために、本発明のパラメータ値修正出力装置は、上下限位置間の操作位置に操作可能な操作子にパラメータを割り当てて、該パラメータの割り当て当初のパラメータ値を、該操作子の操作前の操作位置で出力するパラメータ値として対応させ、該パラメータの取り得る最小のパラメータ値を、該操作子の下限位置で出力するパラメータ値として対応させ、該パラメータの取り得る最大のパラメータ値を、該操作子の上限位置で出力するパラメータ値として対応させ、その対応関係に合わせて該操作子の操作後の操作位置に対応するパラメータ値を出力するようにしたパラメータ値修正出力装置であって、割り当て当初の操作子の位置から操作子の下限位置までの変化量に対する、割り当て当初のパラメータ値から該最小のパラメータ値までの変化量が所定値よりも大きい場合には、該操作子の下限位置に対応するパラメータ値を該最小のパラメータ値よりも大きい値に設定し、割り当て当初の操作子の位置から操作子の上限位置までの変化量に対する、割り当て当初のパラメータ値から該最大のパラメータ値までの変化量が所定値よりも大きい場合には、該操作子の上限位置に対応するパラメータ値を該最大のパラメータ値よりも小さい値に設定する設定手段と、割り当て当初の操作子の位置に対応するパラメータ値と、該設定手段により設定された該操作子の下限位置に対応するパラメータ値または該操作子の上限位置に対応するパラメータ値とに基づき、その対応関係に合わせて該操作子の操作後の操作位置に対応するパラメータ値を決定する決定手段とを備えた。これにより、操作子の操作量に対するパラメータの変化量を小さく抑えることができ、よって操作量に対する分解能を高く保つことができる。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１には本発明に係る一実施例としてのパラメータ値修正出力装置を搭載した電子楽器が示される。図１において、ＣＰＵ（中央処理装置）１は電子楽器の全体の制御を行うものである。プログラムメモリ２はＲＯＭからなり、全体的動作制御のための制御プログラムおよびプログラム実行時に使用される各種データを格納する。ワークエリアメモリ３はＲＡＭからなり、後述する各種レジスタ群の設定などワークエリアとして用いられる。パラメータメモリ４はＲＡＭからなり、楽音発生に必要なデータ、例えば音量を制御するエンベロープデータ等を格納する。鍵盤装置５は演奏操作によって音高情報および音量情報等をＣＰＵ１へ入力するものである。表示器７はパラメータの値等を数値あるいはグラフィック等で表示してその調整などを行えるようにするものである。楽音発生装置８は波形メモリを読み出す方式等により楽音信号を形成するもの、音響装置９はアンプおよびスピーカ等からなり、楽音発生装置８からの楽音信号を放音する。
【００１４】
操作子６はユーザが操作してパラメータ設定などを行うためのものであり、図中には楽音信号のエンベロープを設定するための操作子部分を示してあり、他の操作子については本発明の説明上必要がないので図示を省略してある。操作子６Ａはスライド形の操作子であり、下限端ＬＯＷと上限端ＨＩＧＨの間でノブを連続的にスライドして移動することで、そのノブの位置に対応した出力を取り出せるものである。
【００１５】
６Ｂはパラメータ選択スイッチであり、楽音信号のエンベロープ波形を設定する際に当該エンベロープ波形のどの部分を調整するかを選択するものである。すなわち、パラメータ選択スイッチ６Ｂはエンベロープ波形を構成する４つのパラメータであるアタックタイムＡ、ディケイタイムＤ、サステインレベルＳ、リリースタイムＲに対応した４つのスイッチ、すなわちアタックタイムスイッチ６Ｂａ、ディケイタイムスイッチ６Ｂｄ、サステインレベルスイッチ６Ｂｓ、リリースタイムスイッチ６Ｂｒからなり、これらのスイッチを押すことで対応するパラメータをデータ修正のために選択することができる。これらのパラメータ選択スイッチ６Ｂで選択されたパラメータの既設定値（例えばプリセット値）は、表示器７に表示されるようになっており、その値は前述の操作子６Ａを操作することで変化させることができる。
【００１６】
また、パラメータ変更スイッチ６Ｃはパラメータ選択スイッチ６Ｂで選択し読み出したパラメータの値を、操作子６Ａの操作位置とは無関係に増減させるためのものであり、パラメータ値を漸増させるためのアップスイッチ６Ｃｕ、漸減させるためのダウンスイッチ６Ｃｄからなる。
【００１７】
ＣＰＵ１はこれらの操作子６のいずれが操作されたかを検出し、その操作情報に基づいて以下に詳述する初期化ルーチンと計算ルーチンを実行する。また、ワークエリア３内に設定されるレジスタ群はＣＰＵ１がプログラムメモリ２内に格納された制御プログラムを実行する際に発生する各種データを一時記憶するためのものである。本発明に関連するデータ（またはレジスタ）には以下のものがある。なお、以下の説明では、各レジスタの名称とその内容（データ）とは原則として同一のラベル名で表すものとする。
【００１８】
（１）操作子６Ａの現在位置ＰNOW ：操作子６Ａの現在の操作位置。
（２）操作子６Ａの前回位置ＰOLD ：前回の計算サイクルでの操作子６Ａの操作位置。
（３）操作子６Ａの基準位置ＰBAS ：操作子６Ａのパラメータ読出時の操作位置またはその後の操作における操作方向が変化した時点の操作位置。
（４）操作子６Ａの上限位置ＰHIGH：操作子６Ａの操作の上限端ＨＩＧＨの位置。
（５）操作子６Ａの下限位置ＰLOW ：操作子６Ａの操作の下限端ＬＯＷの位置。
【００１９】
（６）パラメータの現在値ＶNOW ：操作子６Ａの現在位置ＰNOW に対して割り当てられたパラメータの値。
（７）パラメータの基準値ＶBAS ：操作子６Ａの基準位置ＰBAS に対して割り当てられたパラメータの値。すなわちパラメータ読出時あるいは操作子６Ａの操作方向が変化した時点のパラメータの値。
（８）パラメータの最大値ＶMAX ：選択されたパラメータがとりうる最大値。
（９）パラメータの最小値ＶMIN ：選択されたパラメータがとりうる最小値。
（１０）パラメータの上限値ＶHIGH：操作子６Ａの上限位置ＰHIGHに対して割り当てられたパラメータの値。
（１１）パラメータの下限値ＶLOW ：操作子６Ａの下限位置ＰLOW に対して割り当てられたパラメータの値。
【００２０】
（１２）操作子の操作方向ＤＲＣ：操作子６Ａの操作方向であり、初期値は「０」で、「＋１」で上限方向への操作を、「−１」で下限方向への操作を表す。（１３）操作子６Ａの基準位置比率ＲPOS ：操作子６Ａの全ストローク（ＰHIGH−ＰLOW ）に対する基準位置ＰBAS の比率。すなわち、
ＲPOS ＝（ＰBAS −ＰLOW ）／（ＰHIGH−ＰLOW ）
で求められる比率。
（１４）パラメータの基準値比率ＲVAL ：パラメータの全範囲（ＶMAX −ＶMIN ）に対する基準値ＶBAS の比率。すなわち、
ＲVAL ＝（ＶBAS −ＶMIN ）／（ＶMAX −ＶMIN ）
で求められる比率。
（１５）比率差ＤＦＦ：基準値比率ＲVAL と基準位置比率ＲPOS との差。すなわち、上限方向への操作時には，
ＤＦＦHIGH＝ＲPOS −ＲVAL 
下限方向への操作時には、
ＤＦＦLOW ＝ＲVAL −ＲPOS 
で求められる値。
【００２１】
まず、この実施例装置の動作を概略的に説明する。この実施例装置では、操作子６中のパラメータ選択スイッチ６Ｂａ、６Ｂｄ、６Ｂｓ、６ＢｒによりアタックタイムＡ、ディケイタイムＤ、サステインレベルＳ、リリースタイムＲのうちのいずれかのパラメータをデータ修正するために選択してデータを読み出し、その読み出したパラメータの値を表示器７に表示してこの表示をみながらその修正をする。このパラメータ読出時における操作子６Ａの操作位置を基準位置ＰBAS とし、その基準位置ＰBAS に対して、読み出したパラメータの値ＶBAS を割り当てる。そして、操作子６Ａを操作したときにその操作量に対してパラメータ値の変化が急激となるような場合、具体的には例えば上限方向への操作では前述の比率差ＤＦＦHIGH（＝ＲPOS −ＲVAL ）が正となる場合には、操作子６Ａの上限位置ＰHIGHに対して割り当てるパラメータの値をパラメータの最大値ＶMAX とするのではなく、それよりも小さい値の上限値ＶHIGHにし、操作子６Ａの上限方向への操作に対してパラメータ値が急激に変化しないようにする。すなわち、上記の場合には、操作子の基準位置ＰBAS から上限位置ＰHIGHへの操作に対して、パラメータは基準値ＶBAS から上限値ＶHIGH（＜最大値ＶMAX ）の範囲で変化することになる。
【００２２】
そして、操作子６Ａの操作方向を途中で変えた場合には、その変えた時の操作位置を新たな基準位置ＰBAS 、その時のパラメータ値を新たな基準値ＶBAS として、それらの値に基づいて今度は反転操作方向の下限値ＶLOW を設定しなおす。この操作を操作方向を変えることに繰り返すことにより、やがて、パラメータの上限値ＶHIGHがパラメータの最大値ＶMAX に、パラメータの下限値ＶLOW がパラメータの最小値ＶMIN に一致していき、操作子６Ａの全ストロークにパラメータの全範囲が対応するようになる。
【００２３】
上限値ＶHIGHまたは下限値ＶLOW は種々の決め方が可能であり、要は、操作子６Ａの操作量に対してパラメータの値が急激に変化しないように値を決めればよいのである。以下に２つの例を示すことにする。
【００２４】
（１）１番目の方法は、操作子６Ａの基準位置比率ＲPOS とパラメータの基準値比率ＲVAL の比率差ＤＦＦを求め、操作子６Ａを例えば上限方向に操作する場合にはその上限方向ストローク（ＰHIGH−ＰBAS ）に対してパラメータの変化量を（ＶMAX −ＶBAS ）×（１−ＤＦＦHIGH）とし、下限方向に操作する場合にはその下限方向ストローク（ＰBAS −ＰLOW ）に対してパラメータの変化量を（ＶBAS −ＶMIN ）×（１−ＤＦＦLOW ）とする方法である。
【００２５】
図２を参照して具体例で説明する。いま、操作子６Ａが「０〜１」の範囲で操作可能であり、パラメータが「０〜１００」の範囲の値とし、読み出したパラメータの値が「１０」、パラメータ読出時における操作子６Ａの位置が「０．５」とする。よって基準位置ＰBAS は当初は「０．５」であり、図２（ａ）に示すように、この操作子６Ａの現在位置ＰNOW （＝ＰBAS ＝０．５）に対して割り当てられるパラメータ値は「１０」となる。
【００２６】
この状態から、操作子６Ａを上限方向に操作するものとする。この場合、上限値は、
0003844149.tif 000002
で求める。つまり、操作子の基準位置比率ＲPOS は５０％であり、パラメータの基準値比率ＲVAL は１０％であるので、その比率差ＤＦＦHIGHは４０％であり、これを最大値ＶMAX と基準値ＶBAS との差「９０」に乗じて「３６」を求め、これを最大値ＶMAX ＝１００から減じることで、上限値ＶHIGH＝６４を決める。すなわち、操作子６Ａの「０．５」から「１」への操作に対して、パラメータの値は「１０」から「６４」まで変化するようになり、パラメータ値は最大値ＶMAX ＝１００までは変化しない。
【００２７】
いま、操作子６Ａの現在位置ＰNOW が、図２（ｂ）に示すように０．５と１との中間の「０．７５」である場合、上記の比率配分から分かるように、パラメータの現在値ＶNOW は「１０＋（６４−１０）÷２＝３７」となる。操作子６Ａの現在値ＰNOW が図２（ｃ）に示すように上限位置ＰHIGHの「１」まで操作された場合にはパラメータの値は上限値ＶHIGH＝６４となる。この位置では、操作子６Ａは下限方向にだけ操作可能である。この下限方向への操作では、操作子６Ａの操作量に対してパラメータ値の変化が急激とはならないので、この場合には下限値ＶLOW は前述の特開平５−１３４６６６号公報と同様に最小値ＶMIN に設定し、下限方向ストローク「１→０」に対してパラメータを「６４→０」と変化させる。従って、図２（ｄ）に示すように、操作子６Ａを下限方向に現在位置ＰNOW ＝０．５まで操作した時のパラメータ値は「６４〜０」のパラメータ変化範囲の半分の値、すなわち「３２」となり、さらに図２（ｅ）に示すように操作子６Ａを下限位置ＰLOW ＝０まで操作した時のパラメータ値は「０」となる。以降、パラメータの上限値ＶHIGHはパラメータの最大値ＶMAX に一致し、パラメータの下限値ＶLOW はパラメータの最小値ＶMIN に一致するようになり、操作子６Ａの全ストロークにパラメータの全範囲が対応するようになる。
【００２８】
（２）２番目の方法は、上限方向への操作の場合には、比率差ＤＦＦHIGHが正であれば、上限値ＶHIGHを
ＶHIGH＝ＶBAS ＋（１−ＲPOS ）×（ＶMAX −ＶMIN ）
とし、下限方向への操作の場合には、比率差ＤＦＦLOW が正であれば、下限値ＶLOW を
ＶLOW ＝ＶBAS −ＲPOS ×（ＶMAX −ＶMIN ）
とする方法である。すなわち，基準値ＶBAS から、操作子６Ａの基準位置比率ＲPOS に応じたパラメータ幅分を加算／減算して上限値ＶHIGH、下限値ＶLOW とするものである。
【００２９】
図３を参照して具体例で説明する。前述同様、操作子６Ａが「０〜１」の範囲で操作可能であり、パラメータが「０〜１００」の範囲の値とし、読み出したパラメータの値が「１０」、パラメータ読出時における操作子６Ａの位置が「０．５」とする。よって基準位置ＰBAS は当初は「０．５」であり、図３（ａ）に示すように、この操作子６Ａの現在位置ＰNOW （＝ＰBAS ＝０．５）に対して割り当てられるパラメータ値は「１０」となる。
【００３０】
この状態から、操作子６Ａを上限方向に操作するものとする。この場合、上限値ＶHIGHは、
ＶHIGH＝ＶBAS ＋（１−ＲPOS ）×（ＶMAX −ＶMIN ）
＝１０＋（１−０．５）×（１００−０）＝６０
で求める。すなわち、操作子６Ａの「０．５」から「１」への操作に対して、パラメータの値は「１０」から「６０」まで変化するようになり、最大値ＶMAX ＝１００までは変化しない。
【００３１】
いま、操作子６Ａの現在位置ＰNOW が、図３（ｂ）に示すように０．５と１の中間の「０．７５」である場合、上記の比率配分から分かるように、パラメータの現在値ＶNOW は「１０＋（６０−１０）÷２＝３５」となる。操作子６Ａの現在値ＰNOW が図３（ｃ）に示すように上限位置ＰHIGHの「１」まで操作された場合にはパラメータの値は上限値ＶHIGH＝６０となる。この位置では、前述の１番目の方法の場合と同様に、操作子６Ａは下限方向にだけ操作可能である。この下限方向への操作では、操作子６Ａの操作量に対してパラメータ値の変化が急減とはならないので、この場合には下限値ＶLOW は前述の特開平５−１３４６６６号公報と同様に最小値ＶMIN に設定し、下限方向ストローク「１→０」に対してパラメータを「６０→０」と変化させる。従って、図３（ｄ）に示すように、操作子６Ａを下限方向に現在位置ＰNOW ＝０．５まで操作した時のパラメータ値は「６０〜０」のパラメータ変化範囲の半分の値、すなわち「３０」となり、さらに図３（ｅ）に示すように操作子６Ａを下限位置ＰLOW ＝０まで操作した時のパラメータ値は「０」となる。以降、パラメータの上限値ＶHIGHはパラメータの最大値ＶMAX に一致し、パラメータの下限値ＶLOW はパラメータの最小値ＶMIN に一致するようになり、操作子６Ａの全ストロークにパラメータの全範囲が対応するようになる。
【００３２】
以下、フローチャートを参照して本発明の実施例装置の詳細な動作を説明する。まず初めに、上述の（１）の方法により上限値ＶHIGHと下限値ＶLOW を決める実施例について説明する。
操作子６のいずれかが操作されると、ＣＰＵ１はこれらの操作子６のいずれが操作されたかを検出し、その操作情報に基づいて以下に詳述する初期化ルーチンあるいは計算ルーチンを実行する。
【００３３】
図４には初期化ルーチンのフローチャートが示される。この初期化ルーチンはパラメータ選択スイッチ６Ｂが操作されてパラメータが選択されることで、操作子６Ａに割り当てるパラメータの種類が変更された場合に実行される。この初期化ルーチンにおいては、操作子の操作方向ＤＲＣを「０」とし、操作子６Ａの現在の位置を前回位置ＰOLD とし、選択されたパラメータの最小値と最大値をプログラムメモリ２から読み出してそれぞれ最小値ＶMIN と最大値ＶMAX とする。さらに、読み出したパラメータの値をパラメータの現在値ＶNOW とする。
【００３４】
図５には計算ルーチンのフローチャートが示される。この計算ルーチンはパラメータの上限値ＶHIGHと下限値ＶLOW 、基準値ＶBAS などを算出し、これらの値に基づいて操作子６Ａの現在位置ＰNOW に割り当てるパラメータの現在値ＶNOW を計算し出力するための処理であり、操作子６Ａが操作されたとき、あるいは一定周期毎たとえば図示しないインターバルタイマにより発生されるインターバルクロックがＣＰＵ１に到来する毎に実行される。
【００３５】
まず、操作子６Ａの現在の操作位置を現在位置ＰNOW とし（ステップＳ１）、この現在位置ＰNOW が操作子６Ａの前回位置ＰOLD と同じか否かを判定する（ステップＳ２）。同じである場合には、操作子６Ａがまだ操作されていないことを意味するので、この計算ルーチンを終了する。この場合、パラメータ値は変更されない。
【００３６】
操作子６Ａの現在位置ＰNOW と前回位置ＰOLD が異なる場合は（ステップＳ２）、パラメータ選択後から最初にこのルーチンが実行されるまでの間あるいはこのルーチンが前回実行されてから今回実行されるまでの間に前回操作子６Ａが操作されたことを意味する。この場合、現在のパラメータの値が現在値ＶNOW に等しいかを判定する（ステップＳ３）。この処理は、パラメータ選択スイッチ６Ｂで選択したパラメータの値を操作子６Ａではなくパラメータ変更スイッチ６Ｃで変更した場合に、その変更後のパラメータ現在値が初期化ルーチンでセットしたパラメータ現在値ＶNOW と不一致となるので、不一致であった場合に両者を一致させるためのものであり、不一致であった場合には操作方向ＤＲＣを「０」にするとともに、その不一致であったパラメータの現在値を現在値ＶNOW にセットして両者を一致させる（ステップＳ４）。従って、ステップＳ３で両者が一致している場合にはステップＳ４の処理は飛び越す。
【００３７】
次いで、操作子６Ａの現在位置ＰPOS と前回位置ＰOLD を比較する（ステップＳ５）。現在位置ＰPOS ＜前回位置ＰOLD であれば操作子６Ａは下限方向に、現在位置ＰPOS ≧前回位置ＰOLD であれば上限方向に操作されていると判断される。
【００３８】
下限方向に操作されていると判断された場合には、さらに操作方向ＤＲＣが「−１」かを判定する（ステップＳ６）。操作方向ＤＲＣが「−１」とは前回の計算サイクルにおいて操作子６Ａが下限方向へ操作されていたことを意味するから、操作子６Ａが前回に引き続いて下限方向に操作され続けていることを意味し、一方、操作方向ＤＲＣが「−１」でないとは前回の操作方向が停止（ＤＲＣ＝０）あるいは上限方向（ＤＲＣ＝１）であり、これに対して今回の操作方向が下限方向に変わったことを意味する。このように、操作方向が変わった場合には以下の各種データの再計算を行い、下限値ＶLOW の設定を行う。
【００３９】
すなわち、
・操作方向ＤＲＣを「−１」にし、
・操作子６Ａの前回位置ＰOLD の値を基準位置ＰBAS とし、
・パラメータの現在値ＶNOW の値を基準値ＶBAS とし、
・操作子６Ａの基準位置比率ＲPOS を、
ＲPOS ＝（ＰBAS −ＰLOW ）／（ＰHIGH−ＰLOW ）
で求め、
・パラメータの基準値比率ＲVAL を、
ＲVAL ＝（ＶBAS −ＶMIN ）／（ＶMAX −ＶMIN ）
で求め、
・比率差ＤＦＦLOW を、
ＤＦＦLOW ＝ＲVAL −ＲPOS 
で求める（ステップＳ７）。
【００４０】
そして、比率差ＤＦＦLOW が０より大きいか判定する（ステップＳ８）。０以下の場合には、操作子６Ａの下限方向ストローク（すなわち、ＰBAS →ＰLOW のストローク）に対してパラメータの変化量（すなわち、ＶBAS →ＶMIN の変化量）が小さいことを意味しており、この場合には、操作子６Ａの操作量に対してパラメータが急激に変化する恐れはないので、操作子６Ａの下限位置ＰLOW に割り当てるパラメータの下限値ＶLOW をパラメータの最小値ＶMIN の値とする（ステップＳ１０）。
【００４１】
一方、比率差ＤＦＦLOW が０より大きい場合（ステップＳ８）、操作子６Ａの操作量に対してパラメータが急激に変化する恐れがあることを意味しており、この場合には下限値ＶLOW をパラメータの最小値ＶMIN の値よりも大きい値とする（ステップＳ９）。この下限値ＶLOW は、
ＶLOW ＝ＤＦＦLOW ×ＶBAS ＋（１−ＤＦＦLOW ）×ＶMIN 
により求める。
【００４２】
この下限値ＶLOW の設定が終了した後、あるいは前出のステップＳ６で操作方向が変わってないと判定された時は、操作子６Ａの現在位置ＰNOW に割り当てられるパラメータの現在値ＶNOW を、以下の計算式により求める。
ＶNOW ＝｛ＶBAS ×（ＰNOW −ＰLOW ）＋ＶLOW ×（ＰBAS −ＰNOW ）｝／（ＰBAS −ＰLOW ）
【００４３】
一方、操作子６Ａの現在位置ＰPOS と前回位置ＰOLD を比較するステップＳ５において、現在位置ＰPOS ≧前回位置ＰOLD すなわち上限方向に操作されていると判断された場合には、さらに操作方向ＤＲＣが「１」かを判定する（ステップＳ１２）。この判定の意味は前述のステップＳ８と同様であり、操作方向ＤＲＣが「１」であれば操作子６Ａが前回に引き続いて上限方向に操作され続けており、「１」でなければ今回の操作方向が上限方向に変わったものであることを意味し、操作方向が変わった場合には、上限値ＶHIGHの設定を行う。
【００４４】
すなわち、
・操作方向ＤＲＣを「１」にし、
・操作子６Ａの前回位置ＰOLD の値を基準位置ＰBAS とし、
・パラメータの現在値ＶNOW の値を基準値ＶBAS とし、
・操作子６Ａの基準位置比率ＲPOS を、
ＲPOS ＝（ＰBAS −ＰLOW ）／（ＰHIGH−ＰLOW ）
で求め、
・パラメータの基準値比率ＲVAL を、
ＲVAL ＝（ＶBAS −ＶMIN ）／（ＶMAX −ＶMIN ）
で求め、
・比率差ＤＦＦHIGHを、
ＤＦＦHIGH＝ＲPOS −ＲVAL 
で求める（ステップＳ１３）。
【００４５】
そして、比率差ＤＦＦHIGHが０より大きいか判定する（ステップＳ１４）。０以下の場合には、操作子６Ａの上限方向ストローク（すなわち、ＰBAS →ＰHIGHのストローク）に対してパラメータの変化量（すなわち、ＶBAS →ＶMAX の変化量）が小さいことを意味しており、この場合には、操作子６Ａの操作量に対してパラメータが急激に変化する恐れはないので、操作子６Ａの上限位置ＰHIGHに割り当てるパラメータの上限値ＶHIGHをパラメータの最大値ＶMAX の値とする（ステップＳ１６）。
【００４６】
一方、比率差ＤＦＦHIGHが０より大きい場合（ステップＳ１４）、操作子６Ａの操作量に対してパラメータが急激に変化する恐れがあることを意味しており、この場合には上限値ＶHIGHをパラメータの最大値ＶMAX の値よりも小さい値とする（ステップＳ１５）。この上限値ＶHIGHは、
ＶHIGH＝ＤＦＦHIGH×ＶBAS ＋（１−ＤＦＦHIGH）×ＶMAX 
により求める。
【００４７】
この上限値ＶHIGHの設定が終了した後、あるいは前出のステップＳ１２で操作方向が変わってないと判定された時は、操作子６Ａの現在位置ＰNOW に割り当てられるパラメータの現在値ＶNOW を、以下の計算式により求める。
ＶNOW ＝｛ＶBAS ×（ＰHIGH−ＰNOW ）＋ＶHIGH×（ＰNOW −ＰBAS ）｝／（ＰHIGH−ＰBAS ）
【００４８】
この後、操作子６Ａの現在位置ＰNOW を前回位置ＰOLD とし、パラメータの現在値ＶNOW の値を操作子６Ａから現在出力されるパラメータの値とする（ステップＳ１８）。
【００４９】
次に、前述の（２）の方法により上限値ＶHIGHと下限値ＶLOW を決める実施例について説明する。図６はこの場合の計算ルーチンを示すフローチャートである。初期化ルーチンは前述の図４のものと同じである。図６のフローチャートが１番目の実施例の図５のフローチャートと相違するところは、ステップＳ９とステップＳ１５の処理であり、その他のステップは同じものである。すなわち、この実施例では、操作子６Ａの操作が下限方向に変化した際に求める下限値ＶLOW は、
ＶLOW ＝ＶBAS −ＲPOS ×（ＶMAX −ＶMIN ）
であり（ステップＳ９’）、一方、操作子６Ａの操作が上限方向に変化した際に求める上限値ＶHIGHは、
ＶHIGH＝ＶBAS ＋（１−ＲPOS ）×（ＶMAX −ＶMIN ）
であり（ステップＳ１５’）、これにより前述の方法（２）で説明したような操作子６Ａの操作に対するパラメータの変化を得ることができる。
【００５０】
以上の実施例は、基準位置ＰBAS を、パラメータ読出時の操作子６Ａの位置とその後の操作方向が反転した時の操作子６Ａの位置として、それぞれ上限値ＶHIGH、下限値ＶLOW を計算したが、本発明はこれに限られない。例えば、前述の特開平５−１３４６６６号公報に開示されているように、この基準位置ＰBAS として前回の操作位置ＰOLD を用い、常時、上限値ＶHIGHと下限値ＶLOW を計算し直し、それに応じてパラメータの現在値を求めるものであってもよい。
【００５１】
図７は上記の前回位置ＰOLD を基準位置ＰBAS とする場合の実施例のフローチャートであり、前述の方法（２）を用いて上限値ＶHIGHと下限値ＶLOW を計算するものである。この図７の実施例のフローチャートが図６の実施例のフローチャートと相違する点は、図６のフローチャートにおける操作方向ＤＲＣにより処理を変えるステップＳ６とＳ１２を削除し、これに伴って、ステップＳ４でＤＲＣ＝０とする処理を削除し、またステップＳ７とステップＳ１３における操作方向ＤＲＣの設定処理（ステップＳ７でのＤＲＣ＝−１、ステップＳ１３でのＤＲＣ＝１）をなくしていることであり、その他のステップは同じものである。
【００５２】
図８は上記の前回位置ＰOLD を基準位置ＰBAS とする場合の実施例のフローチャートであり、前述の方法（１）を用いて上限値ＶHIGHと下限値ＶLOW を計算するものである。この図８の実施例のフローチャートが図５の実施例のフローチャートと相違する点は、図５のフローチャートにおける操作方向ＤＲＣにより処理を変えるステップＳ６とＳ１２を削除し、これに伴って、ステップＳ４でＤＲＣ＝０とする処理を削除し、またステップＳ７とステップＳ１３における操作方向ＤＲＣの設定処理（ステップＳ７でのＤＲＣ＝−１、ステップＳ１３でのＤＲＣ＝１）をなくしていることであり、その他のステップは同じものである。なお、図４の初期化ルーチンにおいても、操作方向ＤＲＣの初期設定（ＤＲＣ＝０）は削除する。
【００５３】
以上に述べたものの他にも、本発明においては他の種々の実施形態が可能である。例えば、上述の実施例では操作子の操作量に対してパラメータの変化量が急激になるか否かを、比率差ＤＦＦHIGHまたはＤＦＦLOW が０より大きいか否かで判定したが、もちろんこれに限らず、０以上の所定値以上か否かで判定するよう構成することもでき、これによりパラメータの変化量がより急激になる時にだけ、上限値ＶHIGHまたは下限値ＶLOW を最大値ＶMAX 以下の値または最小値ＶMIN 以上の値に設定して、パラメータの急激な変化を抑えるようにすることができる。
【００５４】
また、下限値ＶLOW または上限値ＶHIGHの計算方法は上述の実施例のものに限られるものではなく、要は、操作子の操作量に対してパラメータの変化量が急激にならないように、下限値については最小値以上のある値、上限値については最大値以下のある値にすればよい。例えば、前述の実施例におけるステップＳ９またはステップＳ１５の計算を行う時に、比率差ＤＦＦLOW またはＤＦＦHIGHに所定の係数αを乗算して得た値を新たな比率差ＤＦＦLOW またはＤＦＦHIGHとしてそのステップの計算をするようなものであってもよい。
【００５５】
また、上述の実施例では、複数種類のパラメータの中からいずれかをパラメータ値修正用の操作子６Ａに割り当ててその値を修正する場合に関して説明したが、これに限られるものではなく、同じ種類のパラメータの値を複数種類プリセットしておき、その中から選択したものをパラメータ値修正用の操作子６Ａに割り当ててその値を修正する場合にも、本発明を適用できる。
また、実施例に示された計算式の計算をするにあたって、計算手順などを変形して実質的に同じ計算を行うものも本発明の範囲に含まれる。
【００５６】
また、図７または図８の実施例では、基準値ＶBAS を前回値ＶOLD としたが、これに限らず、前々回の値を基準値ＶBAS としたり、前回値と前々回値の平均値を基準値ＶBAS としたりすることも可能である。
【００５７】
【発明の効果】
以上に説明したように、本発明によれば、操作子を少し動かしただけでパラメータ値が大きく変化してしまう、すなわち操作子の操作量に対するパラメータ値の分解能が粗くなってしまうことを防止でき、これにより精密な調整が可能になり、また操作子の操作感を自然なものにできる。
【図面の簡単な説明】
【図１】本発明に係る一実施例としてのパラメータ値修正出力装置を搭載した電子楽器の全体構成を示す図である。
【図２】実施例装置における方法（１）により決定された上下限値に基づき操作子の操作位置に対応して出力されるパラメータ値の変化の様子を示す図である。
【図３】実施例装置における方法（２）により決定された上下限値に基づき操作子の操作位置に対応して出力されるパラメータ値の変化の様子を示す図である。
【図４】実施例装置における初期化ルーチンのフローチャートである。
【図５】実施例装置における方法（１）に従う計算ルーチンのフローチャートである。
【図６】実施例装置における方法（２）に従う計算ルーチンのフローチャートである。
【図７】他の実施例装置における方法（２）に従う計算ルーチンのフローチャートである。
【図８】他の実施例装置における方法（１）に従う計算ルーチンのフローチャートである。
【符号の説明】
１  ＣＰＵ（中央処理装置）
２  プログラムメモリ
３  ワークエリアメモリ
４  パラメータメモリ
５  鍵盤装置
６  操作子
６Ａ  スライド形操作子
６Ｂ  パラメータ選択スイッチ
６Ｃ  パラメータ変更スイッチ
７  表示器
８  楽音発生装置
９  音響装置
【図１】
0003844149.tif 000003
【図２】
0003844149.tif 000004
【図３】
0003844149.tif 000005
【図４】
0003844149.tif 000006
【図５】
0003844149.tif 000007
【図６】
0003844149.tif 000008
【図７】
0003844149.tif 000009
【図８】
0003844149.tif 000010