(57)【特許請求の範囲】
【請求項１】
楽音信号を通過させるフィルタの周波数特性を該楽音信号に応じて変化させることで音響的効果を得る音響効果装置において、
前記楽音信号のエンベロープを抽出するエンベロープ抽出手段と、
このエンベロープ抽出手段により抽出されたエンベロープを解析してアタック区間及びディケイ区間を検出するエンベロープ解析手段と、
このエンベロープ解析手段により検出されたディケイ区間内において、予め設定されたディケイレート値に基づいてエンベロープのディケイ部分を生成するディケイエンベロープ生成手段と、
前記エンベロープ解析手段により検出されたアタック区間においては、前記エンベロープ抽出手段にて抽出されたエンベロープのアタック部分の変化に応答して前記フィルタの周波数特性を変化させるとともに、前記検出されたディケイ区間においては、前記ディケイエンベロープ生成手段にて生成されたエンベロープのディケイ部分の変化に応答して前記フィルタの周波数特性を変化させる周波数特性変化手段と、
を有することを特徴とする音響効果装置。
【請求項２】
前記音響効果装置はさらに、周期的な振動信号を生成するＬＦＯ手段を有し、
前記周波数特性変化手段は、前記検出されたディケイ区間において、このＬＦＯ手段にて生成された振動信号の変化に応答して前記フィルタの周波数特性を変化させることを特徴とする請求項１に記載の音響効果装置。
【請求項３】
前記音響効果装置はさらに、前記楽音信号のピッチを検出するピッチ検出手段を有し、
前記周波数特性変化手段は、前記検出されたディケイ区間において、このピッチ検出手段にて検出されたピッチの変化に応答して前記フィルタの周波数特性を変化させることを特徴とする請求項１に記載の音響効果装置。
【請求項４】
前記楽音信号は、弦楽器の撥弦操作により生成されるものであり、
前記音響効果装置はさらに、該弦楽器の撥弦の方向を検出する撥弦方向検出手段を有し、
前記周波数特性変化手段は、前記検出されたディケイ区間において、この撥弦方向検出手段にて検出された撥弦方向の変化に応じて予め設定されている前記フィルタの周波数特性を選択することにより、前記フィルタの周波数特性を変化させることを特徴とする請求項１に記載の音響効果装置。
【請求項５】
前記周波数特性変化手段は、前記撥弦の方向に応じて前記フィルタの通過域を示す周波数の値を増減させることを特徴とする請求項４に記載の音響効果装置。
【請求項６】
楽音信号を通過させるフィルタの周波数特性を該楽音信号に応じて変化させることで音響的効果を得る音響効果付加方法であって、
前記楽音信号のエンベロープを抽出し、
この抽出されたエンベロープを解析してアタック区間及びディケイ区間を検出し、
この検出されたディケイ区間内において、予め設定されたディケイレート値に基づいてエンベロープのディケイ部分を生成し、
前記検出されたアタック区間においては、前記抽出されたエンベロープのアタック部分の変化に応答して前記フィルタの周波数特性を変化させるとともに、  前記検出されたディケイ区間においては、前記生成されたエンベロープのディケイ部分の変化に応答して前記フィルタの周波数特性を変化させる、
ことを特徴とする音響効果付加方法。
【請求項７】
楽音信号を通過させるフィルタの周波数特性を該楽音信号に応じて変化させることで音響的効果を得る音響効果装置に適用されるコンピュータに、
前記楽音信号のエンベロープを抽出するエンベロープ抽出手段により抽出されたエンベロープを解析してアタック区間及びディケイ区間を検出するエンベロープ解析ステップと、
この検出されたディケイ区間内において、予め設定されたディケイレート値に基づいてエンベロープのディケイ部分を生成するステップと、
前記検出されたアタック区間においては、前記エンベロープ抽出手段にて抽出されたエンベロープのアタック部分の変化に応答して前記フィルタの周波数特性を変化させるとともに、前記検出されたディケイ区間においては、前記生成されたエンベロープのディケイ部分の変化に応答して前記フィルタの周波数特性を変化させるステップと、
を実行させる音響効果処理のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電気信号化した楽音信号を加工することにより該楽音信号に音響的な効果を与える技術に関し、特に、楽音信号を通過させるフィルタの周波数特性を該楽音信号に応じて変化させることにより該楽音信号に音響的な効果を与える技術に関する。
【０００２】
【従来の技術】
弦楽器、特にギター等の撥弦楽器の演奏で用いられるエフェクタ（音響効果装置）にオートワウというものがある。オートワウは、入力された楽音信号の大きさに応じ、その楽音信号を通過させるフィルタ（主にバンドパスフィルタ）の通過域を変化させることにより、ダイナミックな音色変化が得られるというものである。オートワウを撥弦楽器で使用すると、撥弦の強さによってその音色を制御できるという特殊な効果を得ることができる。
【０００３】
バンドパスフィルタを用いて構成されている一般的なオートワウでは、制御パラメータとして、無入力時のバンドパスフィルタの通過域の中央の周波数である中心周波数、入力される楽音信号の大きさに対する通過域の変化の大きさを示す入力感度、通過域に対して行う変化の方向（通過域の周波数を上げる方向に変化させるか、下げる方向に変化させるか）を示すポラリティ、などが設定可能である。また、中には、ＬＦＯ（低周波発振器：Low Frequency Oscillator）を装備し、その出力信号で常に通過域の周波数を振動（変調、モジュレーションなどともいう）させておくことで、更なる音響効果を付加することのできる製品もある。
【０００４】
【発明が解決しようとする課題】
弦楽器に張られている複数の弦はそれぞれ異なる音高にチューニングがなされており、撥弦の強さに対する発生音の大きさやその発生音の減衰の速度が弦により異なっている。そのため、入力信号の大きさに応じてフィルタの周波数特性を変化させるオートワウ（これを特にレベル追従型のオートワウと称する）では、得られる音色変化が発音させる弦により著しく異なってしまっていた。また、弦にうなりが発生した場合には、発生音の大きさが不安定となるため、予期しない音色変化をオートワウが楽音に与えてしまうことがあった。
【０００５】
ところで、オートワウにはＱの高いバンドパスフィルタが用いられることが多い。そのため、音域の広い楽曲を演奏する場合などにフィルタを低い音高でセッティングすると、そのセッティングから大きく外れた高い音高の楽音信号の出力レベルが無視できないほどに低下してしまい、オートワウにより得られる音響的効果がその音高により予期しない変化を起こすことがあった。このように、入力信号の大きさのみに応じてフィルタの周波数特性を変化させるレベル追従型のオートワウでは所望の効果の期待できる範囲がある程度限定されてしまっていた。
【０００６】
また、前述したＬＦＯを備えているオートワウでは、フィルタの通過域の周波数に対して演奏とは無関係に常に変調が行なわれているため、無機的で単調な印象を演奏に与えてしまうことがあった。
【０００７】
これらはいずれも演奏者の意図していない音色変化を起こしたものであり、結果として演奏表現の幅を狭めるものとなっていた。
以上の問題を鑑み、楽器演奏に幅広い演奏表現を与えることのできる音響効果を提供することが、本発明が解決しようとする課題である。
【０００８】
【課題を解決するための手段】
前述の課題を解決するため、本発明では、楽音信号を通過させるフィルタの周波数特性を該楽音信号に応じて変化させることで音響的効果を得る音響効果装置において、前記楽音信号のエンベロープを抽出するエンベロープ抽出手段と、このエンベロープ抽出手段により抽出されたエンベロープを解析してアタック区間及びディケイ区間を検出するエンベロープ解析手段と、このエンベロープ解析手段により検出されたディケイ区間内において、予め設定されたディケイレート値に基づいてエンベロープのディケイ部分を生成するディケイエンベロープ生成手段と、前記エンベロープ解析手段により検出されたアタック区間においては、前記エンベロープ抽出手段にて抽出されたエンベロープのアタック部分の変化に応答して前記フィルタの周波数特性を変化させるとともに、前記検出されたディケイ区間においては、前記ディケイエンベロープ生成手段にて生成されたエンベロープのディケイ部分の変化に応答して前記フィルタの周波数特性を変化させる周波数特性変化手段と、を有するように構成する。
【０００９】
図１は、本発明の原理構成を示す図である。同図において、音響効果装置１が本発明を実施するものであり、入力された楽音信号に音響的効果を与えて出力するものである。
【００１０】
音響効果装置１はフィルタ２を有している。フィルタ２は、その周波数特性を音響効果装置１に入力される楽音信号に応じて変化させることで音響的効果をその楽音信号に与えるものであり、音響効果装置１をオートワウとする場合にはバンドパスフィルタを用いることが一般的ではあるが、他の例えばローパスフィルタ、ハイパスフィルタ、バンドエリミネーションフィルタなどを用いるものであってもよい。
【００１１】
本発明の第一の態様においては、ディケイ特性制御手段３ａが音響効果装置１に備えられる。ディケイ特性制御手段３ａは音響効果装置１に入力された楽音信号の有する楽器音の楽音信号のエンベロープのディケイ部分の減衰特性を制御するものである。
【００１２】
そして、本発明の第一の態様においては、周波数特性変化手段４はディケイ特性制御手段３ａによりエンベロープのディケイ部分の制御された楽音信号に応じてフィルタ２の周波数特性を変化させる。
【００１３】
この構成では、例えば楽器音の楽音信号が元々有していた特性に関わらずに一律な減衰特性となるようにディケイ部分を制御した楽音信号に応じてフィルタ２の周波数特性を変化させる。その結果、楽器音の楽音信号のアタック部分には従来の音響効果装置と同様の音響的効果が付加されることに加え、ディケイ部分では減衰特性が音高により異なっている楽器の楽器音に付加される音響的効果の音高の違いによるばらつきを少なくすることができる。
【００１４】
また、この発明において、前記音響効果装置はさらに、周期的な振動信号を生成するＬＦＯ手段を有し、前記周波数特性変化手段は、前記検出されたディケイ区間において、このＬＦＯ手段にて生成された振動信号の変化に応答して前記フィルタの周波数特性を変化させるように構成すると、楽器への演奏操作に応じて発生する楽器音のディケイ部分でフィルタの周波数特性を振動させることができるようになるので、変化に富んだ暖かみのある効果を演奏音に与えることが期待できる。
【００１８】
また、この発明において、前記音響効果装置はさらに、前記楽音信号のピッチを検出するピッチ検出手段を有し、前記周波数特性変化手段は、前記検出されたディケイ区間において、このピッチ検出手段にて検出されたピッチの変化に応答して前記フィルタの周波数特性を変化させるように構成する。
【００１９】
本発明では、図１において、ディケイ特性制御手段３ａに代えて、ピッチ検出手段３ｂが音響効果装置１に備えられるように構成する。ピッチ検出手段３ｂは、音響効果装置１に入力された楽音信号のピッチを検出するものである。
【００２０】
そして、本発明においては、周波数特性変化手段４は、ピッチ検出手段３ｂにより検出された楽音信号のピッチに応じてフィルタ２の周波数特性を変化させる。
【００２１】
この構成では、たとえフィルタ２としてＱの高いバンドパスフィルタを用いたオートワウを構成する場合であっても、楽音の音高により異なる音響的効果を所望のものとして与えることができるようになるので、効果の期待できる範囲が広がる。
【００２２】
また、本発明においては、前記楽音信号は、弦楽器の撥弦操作により生成されるものであり、前記音響効果装置はさらに、該弦楽器の撥弦の方向を検出する撥弦方向検出手段を有し、前記周波数特性変化手段は、前記検出されたディケイ区間において、この撥弦方向検出手段にて検出された撥弦方向の変化に応じて予め設定されている前記フィルタの周波数特性を選択することにより、前記フィルタの周波数特性を変化させるように構成する。
【００２３】
本発明においては、図１において、ディケイ特性制御手段３ａに代えて、撥弦方向検出手段３ｃが音響効果装置１に備えられる。撥弦方向検出手段３ｃは、音響効果装置１に入力された楽音信号の有する弦楽器の楽音信号から該弦楽器の撥弦の方向を検出するものである。
【００２４】
そして、本発明においては、周波数特性変化手段４は、撥弦方向検出手段３ｃにより検出された撥弦の方向に応じてフィルタ２の周波数特性を変化させる。
【００２５】
この構成では、弦楽器の撥弦の方向に応じて異なる音響的効果を演奏音に与えることができるので、演奏者は撥弦の方向を変化させるだけで異なる演奏表現を行なうことができるようになる。
【００２６】
また、前述の本発明において、前記周波数特性変化手段は、前記撥弦の方向に応じて前記フィルタの通過域を示す周波数の値を増減させるように構成すれば、制御パラメータのひとつであるポラリティを撥弦の方向の変化のみで切り替えることとなり、便利である。
【００２７】
以上のように、本発明のいずれの態様の実施によっても、楽器演奏に幅広い演奏表現を与えることのできる音響効果を提供することが可能となる。
なお、本発明に係る音響的効果を得る音響効果付加方法、及びコンピュータに実行させることにより本発明をコンピュータに実施させる音響効果付加プログラムを記憶した記憶媒体も本発明の技術的範囲に含まれるものである。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。なお、ここでは、主にギター演奏に用いられるオートワウにおいて本発明を実施する例について説明する。
【００２９】
図２は、本発明を実施するオートワウの内部構成を示す図である。同図に示すオートワウ（以下、本装置ともいう）は、ギターの弦の振動をピックアップ等で変換して得られる電気信号である楽音信号がプリアンプを介して入力され、その楽音信号に音響的効果を付加してギターアンプ等に出力するものである。
【００３０】
以下、図２に示す本装置を構成する各要素について説明する。
ＶＣＦ（Voltage Controlled Filter ）１１は、本実施の形態においてはバンドパスフィルタを構成し、後述するＤＡコンバータ５４の出力するアナログ電圧値に応じてフィルタの中心周波数やＱが設定されるものである。
【００３１】
出力バッファ１２は、本装置の出力に接続されるギターアンプ等の機器の入力特性がＶＣＦ１１の構成するフィルタの特性に影響を及ぼすことを防止するために設けられている、いわゆるバッファアンプである。
【００３２】
エンベロープ検出部２０は入力された楽音信号のエンベロープを取得するものである。
図３はエンベロープ検出部２０の構成を示す図である。同図に示すように、エンベロープ検出部２０は、第１ＬＰＦ２１、全波整流器２２、第２ＬＰＦ２３より構成される。
【００３３】
まず、第１ＬＰＦ２１において、入力された楽音信号からギターの演奏音のエンベロープの検出には不必要な高域の周波数成分、例えば可聴周波数以上の成分を除去し、除去した結果の楽音信号（波形（１））を全波整流器２２に送る。
【００３４】
全波整流器２２では送られてきた楽音信号を全波整流し、その楽音信号の波高の絶対値（波形（２））を第２ＬＰＦ２３に渡す。
第２ＬＰＦ２３は第１ＬＰＦ２１よりもかなり低い遮断周波数に設定されており、全波整流器２２から渡される波高の絶対値を平均化して出力する。この出力の電圧値を時間の経過に応じて繰り返し測定することによってエンベロープ波形（波形（３））が得られる。
【００３５】
後述するＣＰＵ５１は、エンベロープ検出部２０の作用により得られた入力された楽音信号のエンベロープ波形を無音区間、アタック区間、ディケイ区間の３種類の区間に分割する。ここで、この分割の手法について予め説明しておく。
【００３６】
図４は、エンベロープ波形を分割する手法を説明する図である。同図に示すエンベロープ波形は（Ａ）〜（Ｆ）までの６つの区間に分割される。
無音区間とはエンベロープ値が所定のレベルを下回っている区間である。同図に示す区間（Ａ）は、エンベロープ波形がゼロレベルを示しており、無音区間である。
【００３７】
アタック区間とはエンベロープ波形が上昇傾向を示している区間であり、同図に示す区間（Ｂ）はアタック区間である。無音区間からアタック区間への遷移の判定は、エンベロープ波形が所定の変化基準レベル▲１▼を上回ったことを以って行なう。
【００３８】
ディケイ区間とはエンベロープ波形が下降傾向を示している区間であり、同図に示す区間（Ｃ）はディケイ区間である。ディケイ区間は必ずアタック区間の次に出現し、エンベロープ波形が変化基準レベル▲２▼を下回り、且つエンベロープにおけるアタックのピークから所定時間（図４には判断区間（ａ）として図示）以上継続してエンベロープが減少し続けたことを以って判定する。
【００３９】
なお、同図に示す区間（Ｄ）のように、アタック区間がディケイ区間の次に出現する場合もある。ディケイ区間からアタック区間への遷移の判定は、エンベロープ波形が変化基準レベル▲３▼を上回り、且つそのディケイ区間内におけるエンベロープ波形の最小値から所定時間（図４には判断区間（ｂ）として図示）以上継続してエンベロープが上昇し続けたことを以って判定する。
【００４０】
以上の判定基準に従えば、区間（Ｅ）は、アタック区間（Ｄ）において、エンベロープ波形が変化基準レベル▲４▼（この値は変化基準レベル▲２▼に等しい）を下回り、且つエンベロープにおけるアタックのピークから所定時間（図４には判断区間（ｃ）として図示）以上継続してエンベロープが減少し続けたことにより、ディケイ区間と判定されることは明らかである。
【００４１】
また、区間（Ｆ）は、ディケイ区間（Ｅ）におけるエンベロープ波形が変化基準レベル▲５▼を下回ったので、無音区間に遷移したと判定される。なお、この変化基準レベル▲５▼（ディケイ区間から無音区間への遷移の判断基準となるレベル）と前述した変化基準レベル▲１▼（無音区間からアタック区間への遷移の判断基準となるレベル）とは異なる値を設定できるようにしてもよいが、本実施の形態では同じ値を設定することとする。
【００４２】
以上のようにして、後述するＣＰＵ５１は、得られたエンベロープ波形を３種類の区間に分割する。
図２の説明に戻る。ピッチ−電圧変換部３０は入力された楽音信号のピッチを検出し、そのピッチに応じた電圧値を出力するものである。
【００４３】
ピッチ−電圧変換部３０の構成を図５に示す。同図に示すように、ピッチ−電圧変換部３０は、第１ＬＰＦ３１、コンパレータ３２、単安定マルチバイブレータ３３、第２ＬＰＦ３４より構成される。
【００４４】
まず、第１ＬＰＦ３１において、入力された楽音信号からギターの演奏音のエンベロープの検出には不必要な高域の周波数成分、例えば可聴周波数以上の成分を除去し、除去した結果の楽音信号（波形（１））をコンパレータ３２に送る。
【００４５】
コンパレータ３２では、送られてきた楽音信号を、例えば交流成分の正負に応じて２値化し、得られた２値化波形  （波形（２））を単安定マルチバイブレータ３３に渡す。
【００４６】
単安定マルチバイブレータ３３では、渡された２値化波形の例えば立ち上がりエッジのみにおいて一定幅のパルス（波形（３））を出力する。このパルスの単位時間当たりの数は元の楽音信号のピッチに比例した値となる。
【００４７】
第２ＬＰＦ３４は、単安定マルチバイブレータ３３から出力されるパルス波を積分する。第２ＬＰＦ３４より出力されるアナログ電圧値（波形（４））はパルスの単位時間当たりの数に応じた値となるので、この電圧値を測定すれば元の楽音信号のピッチを求めることができる。
【００４８】
図２の説明を続ける。＋ピークホールド検出部４０ａ及び−ピークホールド検出部４０ｂは、ＣＰＵ５１により指示されたサンプル期間内において入力された楽音信号の信号レベルの正あるいは負のピークの電圧値を保持するものであり、楽音信号の元であるギター演奏における弦のピッキング（撥弦）の方向を検出するために用いられるものである。
【００４９】
本装置において採用するピッキングの方向の検出手法について説明する。
図６は、ピッキングの方向とピックアップの出力波形との関係を示す図であり、ブリッジ６１でギターのボディに固定されている弦をピック６２を用いてピッキングを行なっている状態を示したものである。同図（ｉ）はギター正面から見た図を示しており、また同図（ii）はピッキング操作を行なっている様子を弦に対して垂直な方向から見た断面図として描いたものである。また、同図（iii ）は、ギターに備えられているピックアップがピッキングの結果として出力する出力波形を示すものである。
【００５０】
ギターの演奏技法では、実線矢印に示すピッキングの方向により、弦を上方（図６においては右方向）にピッキングするピッキングアップ（同図（Ａ））と、弦を下方（図６においては左方向）にピッキングするピッキングダウン（同図（Ｂ））とがある。そして、同図（iii ）に示すように、ピックアップからの出力波形は、ピッキングアップとピッキングダウンとで初期の波形の符号が正負反対になる。ギターのピックアップは弦の振動によって起こる磁界の変化をとらえて電気信号として出力するものが一般的であり、ピッキング直後の磁界中における弦の移動方向の違いがこの出力波形の違いとして現れるのである。
【００５１】
ピックアップからの出力波形の振幅はピッキング直後の最初の半波が最大となる。従って、この出力波形の波高値の最大値をその出力波形の正側と負側で別々に測定し、その波高値の最大値が出力波形の正側と負側とでどちらが大きいかを判定することにより、ピッキング方向の違いを検出することができる。本装置ではこの手法を用いてピッキングの方向を検出する。
【００５２】
図７はピークホールド部の詳細構成を示す図である。同図と図２との関係を説明すると、図２における＋ピークホールド部４０ａが図７における半波整流器４２ａ及びピークホールド回路４３ａに相当し、図２における−ピークホールド部４０ｂが図７におけるインバータ４１、半波整流器４２ｂ、及びピークホールド回路４３ｂに相当する。以下、図７について説明する。
【００５３】
インバータ４１は、入力された楽音信号（１）の符号を反転し、逆相の楽音信号（２）として出力する反転増幅器である。
半波整流器４２ａ及び４２ｂは、入力された信号を半波整流し、その入力信号の負側がカットされた信号（３ａ、３ｂ）として出力する。
【００５４】
ピークホールド回路４３ａ及び４３ｂは、後述するＣＰＵ５１の制御に従い、入力された信号の指示期間中の最大値をホールドして出力するものである。ここで、後述するＣＰＵ５１によるピークホールド回路４３ａ及び４３ｂの制御について図８を用いて説明する。
【００５５】
図８に（ａ）として示すように、ＣＰＵ５１は前述したエンベロープ波形におけるアタック区間でピークホールド回路４３ａ及び４３ｂに対し非ホールド（サンプル）指示、すなわちこの区間内における入力信号の最大値に相当する電圧値を出力するように指示する。そして、図８に（ｂ）として示すように、前述したエンベロープ波形におけるディケイ区間でＣＰＵ５１はピークホールド回路４３ａ及び４３ｂに対してホールド、すなわち直前の非ホールド区間における入力信号の最大値に相当する電圧値の出力を維持するように指示する。ＣＰＵ５１は、このホールド区間においてピークホールド回路４３ａ及び４３ｂの両者から後述するＡＤコンバータ５６を介して電圧値を取得し、両者の電圧値、すなわちの直前の非ホールド区間における楽音信号の正側と負側とのレベルの最大値の大小を比較することによりピッキング方向の違いを検出する。
【００５６】
図２の説明に戻る。これより説明するＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、ＤＡコンバータ５４、ＡＤコンバータ５５、インタフェース部５７はいずれもバス５９を介して相互に接続されている。
【００５７】
ＣＰＵ５１は、ＲＯＭ５２に記憶された制御プログラムに従って、ＲＡＭ５３をワークエリアとして使用しながら、本装置全体の動作を制御する中央演算処理装置である。
【００５８】
ＲＯＭ５２は、ＣＰＵ５１で実行される本装置全体の制御のための制御プログラムや、後述する各種の信号波形データ等の各種テーブルが予め格納されているリードオンリメモリである。
【００５９】
ＲＡＭ５３は、ＣＰＵ１１による処理のためのワークエリアとして、また各種の設定パラメータの記憶用として用いられるランダムアクセスメモリである。
ＤＡコンバータ５４は、ＣＰＵ５１から送られてくるデジタルデータに対応するアナログ電圧を出力してＶＣＦ１１のフィルタ特性を設定するものである。
【００６０】
ＡＤコンバータ５５は、入力されたアナログ電圧値をサンプリングし、ＣＰＵ５１で処理可能なデジタルデータに変換するものである。
アナログマルチプレクサ５６は、ＣＰＵ５１からの指示に従い、エンベロープ検出部２０、ピッチ−電圧変換部３０、ピークホールド部（４０ａ、４０ｂ）のそれぞれの出力から１つを選択し、選択された出力であるアナログ電圧をＡＤコンバータ５５に渡すものである。
【００６１】
インタフェース部５７は、ＣＰＵ５１による制御指示をピークホールド部（４０ａ、４０ｂ）もしくはアナログマルチプレクサ５６に伝えるものであり、また、ＣＰＵ５１と表示・操作部５８とのデータのやり取りの橋渡しを行なうものである。
【００６２】
表示・操作部５８は、本装置の動作状態を使用者に伝えるための表示を行なったり、操作によって入力される使用者の本装置に対する指示を取得するものである。表示・操作部５８に相当する本装置表面のパネル７０の概要を図９に示す。本装置はギター演奏を行なう場所のフロアに置かれ、演奏者がパネル７０に設けられている各種のペダルスイッチを足で踏む（あるいは手で押す）ことにより本装置への指示が行なわれる。
【００６３】
パネル７０に備えられている各スイッチ・表示器について説明する。
メモリ切り替えスイッチ７１は、パラメータの値の組を選択するためのスイッチであり、各組に対してメモリ番号（メモリ切替えスイッチ７１に付されている番号）が対応づけられている。
【００６４】
図１０は、使用者によって設定される本装置の動作制御パラメータの一覧を示す図である。本装置では使用者により設定されるこれらの各パラメータの値を４組記憶させることができる。これらの各パラメータ値の組の記憶は、ＲＡＭ５３の所定領域への各パラメータ値の格納処理をＣＰＵ５１が実行することにより行なわれる。図９に示すメモリ切り替えスイッチ７１は、これらのパラメータの値の組を選択するためのスイッチである。
【００６５】
図１０に示した各パラメータについては後に説明することとして、図９の説明に戻る。
液晶表示部７２は、本装置の動作モードのひとつである、前述した各パラメータに値を設定してメモリ番号毎に記憶させるエディットモードにおいて、各パラメータの設定内容を表示するものである。
【００６６】
メモリ番号表示７３は７セグメントのＬＥＤであり、選択されているメモリ番号を数字で表示するものである。
パラメータ選択スイッチ７４は、前述したエディットモードにおいて、設定を行なうパラメータを選択するためのスイッチである。
【００６７】
バリューエントリスイッチ７５は、前述したエディットモードにおいて、各パラメータに具体的な値を設定するために用いられるスイッチである。
書き込みスイッチ７６は、前述したエディットモードにおいて、各パラメータに対して設定した値を実際にＲＡＭ５３の所定領域に格納することを指示するためのスイッチである。
【００６８】
エディットモード切替えスイッチ７７は、前述したエディットモードと、音響的効果を楽音信号に付加して出力するプレイモードとを切替えるためのスイッチである。
【００６９】
次に、図１０に示した各種パラメータについて説明する。
図１０では、各パラメータをその用途に応じてブロック分けして示している。ブロックＦＩＬＴＥＲには、ＶＣＦ１１が構成するバンドパスフィルタ（以下、「ＢＰＦ」と略す）の基本的な特性に関するパラメータがまとめられている。図１１を参照しながらブロックＦＩＬＴＥＲの各パラメータを説明する。
【００７０】
Ｆｒｅｑは、ＢＰＦの通過帯域の中央の周波数、すなわち中心周波数に関するパラメータであり、０から１００までの整数の範囲で値が設定される。
Ｐｅａｋは、ＢＰＦのＱの大きさに関するパラメータであり、０から１００までの整数の範囲で値が設定され、大きな値ほど急峻な特性となる。
【００７１】
Ｓｅｎｓｅは、本装置のＬＦＯ機能及びＥＧ機能によるＢＰＦの中心周波数の変化の程度を設定するパラメータであり、−１００から＋１００までの整数の範囲で値が設定される。この値が正の場合にはＢＰＦの中心周波数を高める方向に変化させ、負の場合には中心周波数を低める方向に変化させる。また、この値の絶対値が大きいほど変化の程度が大きくなる。
【００７２】
図１０の説明に戻る。ブロックＬＦＯは、ＶＣＦ１１が構成するＢＰＦの中心周波数を振動させるＬＦＯ機能に関する設定パラメータがまとめられている。図１２を用いてブロックＬＦＯの各パラメータを説明する。
【００７３】
Ｔｒｉｇ  Ｍｏｄｅは、ＬＦＯの動作形態を設定するパラメータである。このパラメータは０、１、２のいずれかの値が設定され、０の場合はＬＦＯの動作停止（ＯＦＦモード）を、１の場合は常時動作（ＡＬＷＡＹＳモード）を、また、２の場合は入力された楽音信号のエンベロープのディケイ区間のみでの動作（ＤＥＣＡＹモード）をそれぞれ示している。なお、図１２に示しているＬＦＯの出力波形はＤＥＣＡＹモード時におけるものを示している。
【００７４】
Ｒｉｓｅ  Ｔｉｍｅ及びＤｅｌａｙ  Ｔｉｍｅの２つのパラメータは、ＤＥＣＡＹモード時での動作にのみ用いられるものである。
Ｒｉｓｅ  Ｔｉｍｅは、図１２に示すように、ＬＦＯ機能により振動波の発生を開始させてから定常のレベルまで振動波の振動幅（振幅）が増大するまでに要する時間を設定するものである。この時間設定を用いて、発生開始から所定の振動幅までの振動波のレベルの増加を滑らかに増加させるようにすることにより、オートワウの効果を楽音信号のディケイ区間のみに与えたことによる違和感を軽減させることができる。
【００７５】
Ｄｅｌａｙ  Ｔｉｍｅは、図１２に示すように、入力された楽音信号の波形のエンベロープがディケイ区間となってからＬＦＯが発振を開始するまでの遅延時間を設定するものである。この遅延時間の設定により、楽音本来の印象が薄らぎつつあるディケイ部分の後半部のみを強調することができるようになる。
【００７６】
このＲｉｓｅ  Ｔｉｍｅ及びＤｅｌａｙ  Ｔｉｍｅの両者は、０から１００までの整数の範囲で値が設定される。
Ｗａｖｅ  Ｆｏｒｍは、ＬＦＯにより発生させる信号の波形を設定するパラメータである。このパラメータは０、１、２のいずれかの値が設定され、０の場合は正弦波（Ｓｉｎｅ）を、１の場合は鋸歯状波（Ｓａｗ）を、また、２の場合はパルス波（Ｐｕｌｓｅ）をそれぞれ示している。なお、図１２に示しているＬＦＯの出力波形はこのパラメータに正弦波の出力設定がなされた場合のものを示している。
【００７７】
なお、本実施の形態においては、ＬＦＯにより発振させる信号の発振周期及び定常の発振振幅レベルは予め設定されており、変更できないものとしている。もちろん、これらの変更ができるような構成としてもよい。
【００７８】
図１０の説明に戻る。ブロックＥＧは、ＶＣＦ１１が構成するＢＰＦの中心周波数を変化させる基とするエンベロープカーブを生成するエンベロープジェネレータ機能に関する設定パラメータがまとめられている。図１３を用いてブロックＥＧの各パラメータを説明する。
【００７９】
Ｔｒｉｇ  Ｍｏｄｅは、エンベロープジェネレータ（以下、「ＥＧ」と略す）機能の動作形態を設定するパラメータである。このパラメータは０、１、２のいずれかの値が設定され、０の場合はＥＧ機能の動作停止（ＯＦＦモード）を、１の場合は入力の楽音信号のエンベロープ波形におけるいずれの区間でも動作させる常時動作（ＡＬＷＡＹＳモード）を、また、２の場合はそのエンベロープ波形のディケイ区間のみでの動作（ＤＥＣＡＹモード）をそれぞれ示している。なお、図１３において、同図（ａ）には入力された楽音信号のエンベロープ波形が、同図（ｂ）にはＤＥＣＡＹモードにおけるＥＧ機能によるＢＰＦの周波数の変化幅を示す波形が、また、同図（ｃ）にはＡＬＷＡＹＳモードにおけるＥＧ機能によるＢＰＦの周波数の変化幅を示す波形が、それぞれ示されている。
【００８０】
Ａｔｔａｃｋ  Ｌｅｖｅｌ及びＡｔｔａｃｋ  Ｒａｔｅの２つのパラメータは、前述のＡＬＷＡＹＳモード時での動作にのみ用いられるものである。
Ａｔｔａｃｋ  Ｌｅｖｅｌは、図１３（ｃ）に示すように、ＥＧ機能によって生成されるエンベロープカーブの最大の値を設定するパラメータである。
【００８１】
Ａｔｔａｃｋ  Ｒａｔｅは、図１３（ｃ）に示すように、ＥＧ機能によって生成されるエンベロープカーブのアタック部分の増加の割合を設定するパラメータである。
【００８２】
このＡｔｔａｃｋ  Ｌｅｖｅｌ及びＡｔｔａｃｋ  Ｒａｔｅの両者は、０から１００までの整数の範囲で値が設定される。
なお、図１３（ｂ）に示すように、ＤＥＣＡＹモードにおいては、アタック部のエンベロープカーブは入力された楽音信号のエンベロープ波形（同図（ａ））のアタック部分をそのままＢＰＦの特性変化に使用し、楽音信号のエンベロープがディケイ区間となった以降については、楽音信号のエンベロープ波形のピークから始まるエンベロープカーブをＥＧ機能が生成してＢＰＦの特性変化に使用する。
【００８３】
Ｄｅｃａｙ  Ｒａｔｅは、図１３（ｂ）及び（ｃ）に示すように、ＥＧによって生成されるエンベロープカーブのディケイ部分の減少の割合を設定するパラメータであり、０から１００までの整数の範囲で値が設定される。
【００８４】
なお、図１３に示すように、入力された楽音信号のエンベロープ波形が無音区間に移行した後には、ＥＧ機能により生成されるエンベロープは所定の減衰特性で減少してゼロに落ち着く。
【００８５】
図１０の説明に戻る。ブロックＰＩＴＣＨ  ＣＴＲＬには、ＶＣＦ１１が構成するＢＰＦの中心周波数を、入力された楽音信号のピッチに応じて変化させるピッチ制御機能に関するパラメータが示されている。
【００８６】
Ｆｒｅｑ  Ｓｃａｌｉｎｇは、ＢＰＦの中心周波数を、入力された楽音信号のピッチに応じて変化させる変化の割合を設定するパラメータである。このパラメータには−１００から＋１００までの整数の範囲で値が設定される。図１４に示すように、この値が正の場合には入力された楽音信号のピッチが高いほどＢＰＦの中心周波数を高める方向に変化させ、負の場合には入力された楽音信号のピッチが高いほど中心周波数を低める方向に変化させる制御がなされる。また、この値の絶対値が大きいほど変化の程度が大きくなる。
【００８７】
ブロックＰＩＣＫ  ＤＩＲＥＣＴＩＯＮ  ＣＴＲＬは、ＶＣＦ１１が構成するＢＰＦの特性をギター演奏のピッキング方向の違いによって変化させるピッキング制御機能に関するパラメータがまとめられている。
【００８８】
Ｍｏｄｅは、ピッキング検出により行なわせるＢＰＦの特性変化の内容を設定するパラメータである。このパラメータには０から４のいずれかの整数値が設定される。この値が０の場合は何も変化を発生させない（ＯＦＦモード）。１の場合にはピッキングアップの検出時に前述したパラメータＳｅｎｓの正負を示す符号を反転して扱い（Ｐｏｌ＋モード）、２の場合にはピッキングダウンの検出時に前述したパラメータＳｅｎｓの正負を示す符号を反転して扱う（Ｐｏｌ−モード）。また、３の場合にはピッキングダウンの検出時に前述したパラメータＦｒｅｑに後述するＯｆｆｓｅｔ  Ｖａｌｕｅの値を加算し（Ｆｒｅｑ  Ｏｆｆｓｅｔモード）、４の場合にはピッキングダウンの検出時に前述したパラメータＰｅａｋに後述するＯｆｆｓｅｔ  Ｖａｌｕｅの値を加算する（Ｐｅａｋ  Ｏｆｆｓｅｔモード）。
【００８９】
Ｏｆｆｓｅｔ  Ｖａｌｕｅは、前述したＦｒｅｑ  ＯｆｆｓｅｔモードあるいはＰｅａｋ  Ｏｆｆｓｅｔモードでのみに用いられる、加算値を設定するパラメータであり、−１００から＋１００までの整数の範囲で値が設定される。
【００９０】
以上の各種パラメータが使用者により設定される。
なお、図１０の右端の欄に示されているＰＡＲＡＭ＿ＳＥＬ値については、後に説明する。
【００９１】
次に、図２に示すＣＰＵ５１が行なう制御について説明する。
図１５は、ＣＰＵ５１が、電源投入直後よりＲＯＭ５２に記憶されている制御プログラムを読み出して実行することにより行われる、ＣＰＵ５１による本装置全体の制御処理を示すフローチャートである。ＣＰＵ５１による制御動作を同図に従って説明する。
【００９２】
まず、Ｓ１０１において、電源投入直後に初期化処理が実行され、ＣＰＵ５１の有する内部レジスタやＲＡＭ５３のイニシャライズ、及び後述する各種処理において用いられる各種の変数への初期値の代入などといった処理が行なわれる。
【００９３】
Ｓ１０２では、図１０に示した各パラメータに使用者の所望するパラメータ値を設定し、その設定内容をパラメータの組毎にＲＡＭ５３に格納する処理である、エディットモード処理が行なわれる。
【００９４】
Ｓ１０３では、音響的効果を楽音信号に付加して出力する機能を本装置に行なわせる処理である、プレイモード処理が行なわれる。以降、エディットモード処理とプレイモード処理とが交互に行なわれる。
【００９５】
次に、図１５のＳ１０２において行われるエディットモード処理の詳細について説明する。図１６はエディットモード処理の処理内容を示すフローチャートである。
【００９６】
まず、  Ｓ１１１において、前回のメモリ切替えスイッチ７１に対する操作によって現在選択されているメモリ番号（この値は変数ＭＥＭ＿ＳＥＬに格納されているものとする）に対応させてＲＡＭ５３に格納されているパラメータ値の組におけるパラメータFreqの現在の設定値を取得し、図９の液晶表示部７２に、“Freq＝XXX ”などというように、パラメータとその設定値との関係が把握できるように表示させる。なお、図１５にＳ１０１で示した初期化処理には、上述した変数ＭＥＭ＿ＳＥＬに１を代入し、メモリ番号表示７３に“１”を表示させる処理がある。
【００９７】
Ｓ１１２では、パネル７０に設けられている各種のスイッチが操作されたか否かを調べる。Ｓ１１３において、スイッチ操作が検出されればＳ１１４に進む。一方、スイッチ操作が検出されなかったのであればＳ１１２へ戻り、スイッチ操作の検出処理を繰り返す。
【００９８】
Ｓ１１４では、Ｓ１１３で検出されたスイッチ操作がメモリ切替えスイッチ７１に対してのものであったか否かを判定する。メモリ切替えスイッチ７１が操作されていたのであればＳ１１５に進み、操作されていなかったのであればＳ１１６に進む。
【００９９】
Ｓ１１５では、操作されたメモリ切替えスイッチ７１の各々に付されているメモリ番号に相当する整数を変数ＭＥＭ＿ＳＥＬに代入し、そのメモリ番号をメモリ番号表示７３である７セグメントＬＥＤに表示させる。この処理を終えた後には、Ｓ１１１へ戻って前述した処理を繰り返す。
【０１００】
Ｓ１１６では、Ｓ１１３で検出されたスイッチ操作がパラメータ選択スイッチ７４に対してのものであったか否かを判定する。パラメータ選択スイッチ７４が操作されていたのであればＳ１１７に進み、パラメータ選択処理を行なう。その後はＳ１１２へ戻って上述した処理を繰り返す。一方、パラメータ選択スイッチ７４が操作されていなかったのであればＳ１１８に進む。パラメータ選択処理の詳細については後述する。
【０１０１】
Ｓ１１８では、Ｓ１１３で検出されたスイッチ操作がバリューエントリスイッチ７５に対してのものであったか否かを判定する。バリューエントリスイッチ７５が操作されていたのであればＳ１１９に進み、パラメータ値変更処理を行なう。その後はＳ１１２へ戻って上述した処理を繰り返す。一方、バリューエントリスイッチ７５が操作されていなかったのであればＳ１２０に進む。パラメータ値変更処理の詳細についても後述する。
【０１０２】
Ｓ１２０では、Ｓ１１３で検出されたスイッチ操作が書き込みスイッチ７６に対してのものであったか否かを判定する。書き込みスイッチ７６が操作されていたのであればＳ１２１に進み、操作されていなかったのであればＳ１２２に進む。
【０１０３】
Ｓ１２１では、パラメータ値変更処理（Ｓ１１９）によって設定された各パラメータ値の変更内容（後述する変数ＴＥＭＰの内容）を、変数ＭＥＭ＿ＳＥＬの現在の値で示されるメモリ番号であって現在選択中のパラメータに対応するＲＡＭ５３上の所定領域に格納し、その後Ｓ１１２へ戻って上述した処理を繰り返す。
【０１０４】
Ｓ１２２では、Ｓ１１３で検出されたスイッチ操作がエディットモード切替えスイッチ７７に対してのものであったか否かを判定する。エディットモード切替えスイッチ７７が操作されていたのであれば、Ｓ１２３で液晶表示器７２への現在の表示を中止し、そして、今回のエディットモード処理を終了してプレイモード処理（図１５のＳ１０３）に移行する。一方、エディットモード切替えスイッチ７７が操作されていなかったのであれば、Ｓ１１３の判定処理は誤判定であったとみなし、Ｓ１１２へ戻って上述した処理を繰り返す。
【０１０５】
以上の処理がエディットモード処理である。
次に、前述したエディットモード処理でのＳ１１７におけるパラメータ選択処理について説明する。パラメータ選択処理は、本装置がエディットモード動作を行なっているときにパラメータ選択スイッチ７４が操作されると実行される処理であり、液晶表示部７２に表示されている、設定対象のパラメータ名とその現在設定値の表示を切り替える処理である。
【０１０６】
図１７はパラメータ選択処理の処理内容を示すフローチャートである。
同図において、まずＳ１３１で、直前のステップ（図１６のＳ１１６）で操作有りと検出されたパラメータ選択スイッチ７４が、“＋”（プラス）表示のあるものであったか否かを判別し、＋表示のあるものが操作されていたのであればＳ１３２に進み、そうでない場合、すなわち“−”（マイナス）表示のあるものが操作されていたのであればＳ１３５に進む。
【０１０７】
Ｓ１３２では、変数ＰＡＲＡＭ＿ＳＥＬを１だけ増加させる。ここで、変数ＰＡＲＡＭ＿ＳＥＬとは、図１０に示すように、本装置の使用者により設定可能な各種パラメータに０から１３までの番号を対応付け、数字により各種パラメータを参照できるようにするための変数であり、値の範囲は図１０より０以上１３以下の整数である。この各種パラメータと変数ＰＡＲＡＭ＿ＳＥＬとの対応関係はＲＯＭ５２の所定領域に予め格納されて示されている。なお、変数ＰＡＲＡＭ＿ＳＥＬは、初期化処理（図１５のＳ１０１）では０に設定されている。
【０１０８】
Ｓ１３３では、変数ＰＡＲＡＭ＿ＳＥＬと１３との数の大小を判別する。変数ＰＡＲＡＭ＿ＳＥＬが１３を超えてしまった場合にのみ、Ｓ１３４で、変数ＰＡＲＡＭ＿ＳＥＫＬに０を代入する。この処理により、パラメータ選択スイッチ７４による順方向のサイクリックなパラメータ選択が行なえる。この処理の後はＳ１３８に進む。
【０１０９】
ところで、Ｓ１３１において、−表示のあるパラメータ選択スイッチ７４が操作されていたと判定された場合には、Ｓ１３５で、変数ＰＡＲＡＭ＿ＳＥＬを１だけ減少させる。
【０１１０】
Ｓ１３６では、変数ＰＡＲＡＭ＿ＳＥＬと０との数の大小を判別する。変数ＰＡＲＡＭ＿ＳＥＬが０を下回ってしまった場合にのみ、Ｓ１３７で、変数ＰＡＲＡＭ＿ＳＥＫＬに１３を代入する。この処理では、パラメータ選択スイッチ７４による逆方向のサイクリックなパラメータ選択が実現される。
【０１１１】
Ｓ１３８では、ＲＯＭ５２及びＲＡＭ５３を参照して変数ＰＡＲＡＭ＿ＳＥＬの現在の値に対応するパラメータ名とそのパラメータの現在の設定値を取得し、取得結果を液晶表示器７２に表示させ、今回のパラメータ選択処理を終了してエディットモード処理へ戻る。
【０１１２】
以上までの処理がパラメータ選択処理である。
次に、前述したエディットモード処理でのＳ１１９（図１６）におけるパラメータ値変更処理について説明する。パラメータ値変更処理は、本装置がエディットモード動作を行なっているときにバリューエントリスイッチ７５が操作されると実行される処理であり、液晶表示部７２で示されている、前述したパラメータ選択処理で選択された設定対象のパラメータの値の変更についての使用者からの指示を受け取る処理である。
【０１１３】
図１８はパラメータ値変更処理の処理内容を示すフローチャートである。
同図において、まずＳ１４１で、変数ＰＡＲＡＭ＿ＳＥＬの値で示されている、現在選択中であって液晶表示器７２にも現在表示中であるパラメータの現在の値を変数ＴＥＭＰに代入する。
【０１１４】
Ｓ１４２では、直前のステップ（図１６のＳ１１８）で操作が検出されたバリューエントリスイッチ７５は、“＋”（プラス）表示のあるものであったか否かを判別し、＋表示のあるものが操作されていたのであればＳ１４３に進み、そうでない場合、すなわち“−”（マイナス）表示のあるものが操作されていたのであればＳ１４４に進む。
【０１１５】
Ｓ１４３では、変数ＴＥＭＰを１だけ増加させ、Ｓ１４５に進む。
Ｓ１４４では、変数ＴＥＭＰを１だけ減少させる。
Ｓ１４５では、現在の変数ＴＥＭＰの値が現在選択中のパラメータの変域を外れてしまっているか否かを調べる。外れてしまっているのであればＳ１４６に進み、外れていないのであればＳ１４７に進む。
【０１１６】
Ｓ１４６では、現在選択中のパラメータの現在の値を変数ＴＥＭＰに改めて代入し直す。このステップの処理により、設定パラメータの設定内容がそのパラメータの許容する変域外の値となってしまうことを防止している。
【０１１７】
Ｓ１４７では、ＲＯＭ５２及びＲＡＭ５３を参照して変数ＰＡＲＡＭ＿ＳＥＬの現在の値に対応するパラメータ名を取得し、そのパラメータ名と変数ＴＥＭＰの現在の値とを液晶表示器７２に表示させ、今回のパラメータ値変更処理を終了してエディットモード処理へ戻る。
【０１１８】
以上までの処理がパラメータ値変更処理である。
次に、図１５のＳ１０３において行われるプレイモード処理の詳細について説明する。図１９はプレイモード処理の処理内容を示すフローチャートである。
【０１１９】
まず、Ｓ２０１で、エディットモード処理の説明の際に述べた変数ＭＥＭ＿ＳＥＬで示される現在選択中のメモリ内容を、プレイモード処理のためにＲＡＭ５３の所定領域に設定される一時記憶領域（これをテンポラリメモリと呼ぶ）に複写し格納する。
【０１２０】
Ｓ２０２では、パネル７０に設けられている各種のスイッチが操作されたか否かを調べる。Ｓ２０３において、スイッチ操作が検出されればＳ２０４に進み、スイッチ操作が検出されなかったのであればＳ２０８に進む。
【０１２１】
Ｓ２０４では、前ステップで検出されたスイッチ操作がエディットモード切替えスイッチ７７に対してのものであったか否かを判定する。エディットモード切替えスイッチ７７が操作されていたのであれば今回のエディットモード処理を終了し、エディットモード処理（図１５のＳ１０２）に移行する。一方、エディットモード切替えスイッチ７７が操作されていなかったのであれば、Ｓ２０５に進む。
【０１２２】
Ｓ２０５では、Ｓ２０３で検出されたスイッチ操作がメモリ切替えスイッチ７１に対してのものであったか否かを判定する。メモリ切替えスイッチ７１が操作されていたのであればＳ２０６に進み、操作されていなかったのであればＳ２０８に進む。
【０１２３】
Ｓ２０６では、操作されたメモリ切替えスイッチ７１の各々に付されているメモリ番号を変数ＭＥＭ＿ＳＥＬに代入し、そのメモリ番号をメモリ番号表示７３である７セグメントＬＥＤに表示させる。
【０１２４】
Ｓ２０７では、前ステップで変更された変数ＭＥＭ＿ＳＥＬで示される現在選択中のメモリ内容を、テンポラリメモリに複写し格納する。
Ｓ２０８では、本装置に入力された楽音信号の解析を行なう処理である入力信号解析処理を行なう。入力信号解析処理の詳細は後述する。
【０１２５】
Ｓ２０９では、エディットモード処理により使用者に設定された各種パラメータであって現在テンポラリメモリに格納されているその各種パラメータと、前ステップの入力信号解析処理により得られた解析結果と、に基づいてＶＣＦ１１を制御する処理であるＶＣＦ制御処理を行なう。ＶＣＦ制御処理の詳細も後述する。
【０１２６】
Ｓ２０９の処理を終えた後には、Ｓ２０２へ戻り、前述した処理を繰り返す。
以上の処理がプレイモード処理である。
次に、前述したプレイモード処理でのＳ２０８における入力信号解析処理について説明する。この入力信号解析処理と後述するＶＣＦ制御処理とが本発明に直接関係する処理である。
【０１２７】
図２０は入力信号解析処理の処理内容を示すフローチャートである。
まず、Ｓ２１１では、図２に示したエンベロープ検出部２０、ピッチ−電圧変換部３０、ピークホールド部（４０ａ、４０ｂ）の各部の出力するアナログ電圧の電圧値をデジタルデータとしてＣＰＵ５１に取得させる処理である入力信号データ取得処理が行なわれる。
【０１２８】
Ｓ２１２では、現在入力されている楽音信号が前述の楽音信号のエンベロープを分割する３つの区間（無音区間、アタック区間、ディケイ区間）のいずれに含まれるかを、エンベロープ検出部２０より取得したデータに基づいて判別する処理であるエンベロープ解析処理が行なわれる。
【０１２９】
Ｓ２１３では、現在入力されている楽音信号のピッチを、ピッチ−電圧変換部３０より取得したデータより検出する処理であるピッチ検出処理が行なわれる。
Ｓ２１４では、入力された楽音信号の元であるギター演奏における弦のピッキングの方向を、ピークホールド部（４０ａ、４０ｂ）より取得したデータより検出する処理である、ピッキング方向検出処理が行なわれる。
【０１３０】
以上のＳ２１２からＳ２１４にかけての各処理の詳細は後で述べる。
Ｓ２１４の処理を終えた後には、今回の入力信号解析処理を終了し、プレイモード処理へ戻る。
【０１３１】
以上の処理が入力信号解析処理である。
次に、前述した入力信号解析処理でのＳ２１１における入力信号データ取得処理について説明する。図２１は入力信号データ取得処理の処理内容を示すフローチャートである。
【０１３２】
まず、Ｓ２２１では、変数ＡＮＡ＿ＭＰＸに１を代入する。ここで、変数ＡＮＡ＿ＭＰＸとは、アナログマルチプレクサによる信号の切替の選択のために用いられる変数であり、１から４までのいずれかの整数を値とする。そして、この値が１の場合にはエンベロープ検出部２０の出力、２の場合にはピッチ−電圧変換部３０の出力、３の場合には＋ピークホールド部４０ａの出力、４の場合には−ピークホールド部４０ｂの出力、を選択することをそれぞれ示す。
【０１３３】
Ｓ２２２では、アナログマルチプレクサ５６の４系統の入力をＩ／Ｆ部５７を介して切替制御し、変数ＡＮＡ＿ＭＰＸの現在の値により示される出力信号がＡＤコンバータ５５の変換アナログ電圧入力に与えられるようにする。
【０１３４】
Ｓ２２３では、ＡＤコンバータ５５の現在の変換デジタルデータ出力を取得し、取得したデータを変数ＡＤ＿ＶＡＬＵＥ（ＡＮＡ＿ＭＰＸ）に代入する。後述する各処理においては、この変数ＡＤ＿ＶＡＬＵＥ  （ＡＮＡ＿ＭＰＸ）を参照することで各部の現在の出力アナログ電圧値のＡＤ変換データの参照が可能になる。
【０１３５】
Ｓ２２４では、変数ＡＮＡ＿ＭＰＸを１だけ増加させる。
Ｓ２２５では、変数ＡＮＡ＿ＭＰＸと４との数の大小を判別する。変数ＡＮＡ＿ＭＰＸが４を超えてしまったならば、今回の入力信号データ取得処理を終了し、入力信号解析処理へ戻る。一方、変数ＡＮＡ＿ＭＰＸが４を超えていないのであればＳ２２２へ戻り、上述した処理を繰り返してデータの取得を続ける。
【０１３６】
以上の処理が入力信号データ取得処理である。
次に、前述した入力信号解析処理でのＳ２１２（図２０）におけるエンベロープ解析処理について説明する。図２２はエンベロープ解析処理の処理内容を示すフローチャートである。
まず、Ｓ２３１では、変数ＡＤ＿ＶＡＬＵＥ（１）の値、すなわちデジタルデータであるエンベロープ検出部２０の出力電圧値と、エンベロープ波形における無音区間の判定基準レベル（図４における変化基準レベル▲１▼あるいは▲５▼）との大小を比較する。変数ＡＤ＿ＶＡＬＵＥ（１）の値が無音区間の判定基準レベルを下回っているのであればＳ２３２に進み、変数ＡＤ＿ＶＡＬＵＥ（１）の値が無音区間の判定基準レベルを下回っていないのであればＳ２３９に進む。
【０１３７】
Ｓ２３２では変数ＥＮＶ＿ＰＥＲＩＯＤに０を代入する。ここで、変数ＥＮＶ＿ＰＥＲＩＯＤとは、現在入力されている楽音信号が前述の楽音信号のエンベロープを分割する３つの区間のいずれに含まれているかを示す変数であり、０、１、２のいずれかの値をとる。そして、この値が０である場合には現在の楽音信号のエンベロープが無音区間に含まれていることを示し、この値が１である場合にはアタック区間に含まれていることを、また、２である場合にはディケイ区間に含まれていることを、それぞれ示している。
【０１３８】
Ｓ２３３では、変数ＥＮＶ＿ＭＡＸの初期化、すなわち０の代入を行なう。
Ｓ２３４では、変数ＥＮＶ＿ＭＩＮの初期化、すなわちＡＤコンバータ５５の出力する最大値のデータを代入する。
【０１３９】
Ｓ２３５及びＳ２３６では、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ及び変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの初期化、すなわち両者への０の代入を行なう。
Ｓ２３７及びＳ２３８では、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＤＥＣＡＹ＿ＴＩＭＥＲの初期化、すなわち両者への０の代入を行ない、Ｓ２４４に進む。
【０１４０】
以上のＳ２３３からＳ２３８にかけての処理で用いられている各変数については、後述するアタック区間内解析処理もしくはディケイ区間内解析処理で説明する。
【０１４１】
ところで、Ｓ２３１における判断処理で変数ＡＤ＿ＶＡＬＵＥ（１）の値が無音区間の判定基準レベルを下回っていないと判定された場合には、Ｓ２３９では、変数ＥＮＶ＿ＰＥＲＩＯＤの値が０であるか否かを調べる。つまり、エンベロープ解析処理の前回の解析結果として、前回処理時における楽音信号のエンベロープが無音区間に含まれていると判定されていたか否かを調べる。その結果、変数ＥＮＶ＿ＰＥＲＩＯＤの値が０、すなわち、前回処理時における楽音信号のエンベロープは無音区間に含まれていると判定されていたのであればＳ２４０に進む。一方、変数ＥＮＶ＿ＰＥＲＩＯＤの値が０でない、すなわち、前回処理時には無音区間に含まれていると判定されていなかったのであればＳ２４１に進む。
【０１４２】
Ｓ２４０では、前回処理時には無音区間に含まれていた楽音信号のエンベロープが今回は無音区間の判定基準レベル以上となり、アタック区間に含まれるようになったと判定し、変数ＥＮＶ＿ＰＥＲＩＯＤの値を１に設定する。その後、Ｓ２４４に進む。
【０１４３】
Ｓ２４１では、変数ＥＮＶ＿ＰＥＲＩＯＤの値が１であるか否かを調べ、エンベロープ解析処理の前回実行時の解析結果として、前回実行時における楽音信号のエンベロープはアタック区間に含まれていると判定されていたか否かを調べる。その結果、変数ＥＮＶ＿ＰＥＲＩＯＤの値が１、すなわち、前回処理時にはアタック区間に含まれていると判定されていたのであればＳ２４２に進み、アタック区間内においてのエンベロープの解析を行なう処理であるアタック区間内解析処理を行なった後、Ｓ２４４に進む。一方、Ｓ２４１における判断処理の結果、変数ＥＮＶ＿ＰＥＲＩＯＤの値が１ではなく、また、Ｓ２３９における判断処理によってその値が０でもない、すなわち、前回処理時における楽音信号はディケイ区間に含まれていると判定されていたのであればＳ２４３に進み、ディケイ区間内においてのエンベロープの解析を行なう処理であるディケイ区間内解析処理を行なう。
【０１４４】
Ｓ２４４では、変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥに変数ＡＤ＿ＶＡＬＵＥ（１）の値を代入する。変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥは、変数ＡＤ＿ＶＡＬＵＥ（１）の今回の値、すなわち、デジタルデータであるエンベロープ検出部２０の現在の出力電圧値が代入される。この変数は次回にエンベロープ解析処理が実行される際に後述するアタック区間内解析処理もしくはディケイ区間内解析処理で用いられる変数である。なお、図１５にＳ１０１で示した初期化処理ではこの変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥに０を代入して初期化する処理が含まれている。
【０１４５】
Ｓ２４４の処理の後には、今回のエンベロープ解析処理を終了して入力信号解析処理へ戻る。
以上までの処理がエンベロープ解析処理である。
【０１４６】
次に、エンベロープ解析処理でのＳ２４２におけるアタック区間内解析処理について説明する。図２３はアタック区間内解析処理の処理内容を示すフローチャートである。
【０１４７】
まず、Ｓ２５１において、変数ＡＤ＿ＶＡＬＵＥ（１）と変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥとの値の大小を比較する。その結果、変数ＡＤ＿ＶＡＬＵＥ（１）の値が変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥの値よりも小さい、すなわちエンベロープ検出部２０の現在の出力電圧値が前回の値よりも減少しているのであればＳ２５２に進み、減少しなかったのであればＳ２５９に進む。
【０１４８】
Ｓ２５２では、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆに１を代入する。
ここで、変数ＤＥＣＡＹ＿ＴＩＭＥＲ及び変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆについて説明する。変数ＤＥＣＡＹ＿ＴＩＭＥＲは、アタック区間において、エンベロープが継続して減少し続けたときの継続時間を測定するためのカウンタであり、アタック区間からディケイ区間への遷移の判定のために用いられる変数である。変数ＤＥＣＡＹ＿ＴＩＭＥＲは、後述するタイマ割り込み処理により、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施される。従って、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆに１以外の値、本実施の形態においては０が代入された場合には、変数ＤＥＣＡＹ＿ＴＩＭＥＲの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理では、この変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＤＥＣＡＹ＿ＴＩＭＥＲに０を代入して初期化する処理が含まれている。
【０１４９】
Ｓ２５３では、変数ＤＥＣＡＹ＿ＴＩＭＥＲの値と、エンベロープ波形におけるアタック区間からディケイ区間へ遷移したことを判定する基準となるディケイ区間判定基準時間（図４における判断区間（ａ）もしくは（ｃ）の時間）との値の大小を判定する。変数ＤＥＣＡＹ＿ＴＩＭＥＲの値がディケイ区間判定基準時間を超えたのであればＳ２５５に進む。一方、変数ＤＥＣＡＹ＿ＴＩＭＥＲの値がディケイ区間判定基準時間を未だ超えていないのであれば今回のアタック区間内解析処理を終了し、エンベロープ解析処理へ戻る。
【０１５０】
Ｓ２５４では、変数ＥＮＶ＿ＭＡＸの値から変数ＡＤ＿ＶＡＬＵＥ（１）の値を減じた結果の値と、エンベロープ波形におけるアタック区間からディケイ区間へ遷移したことを判定する基準となるディケイ区間判定基準レベル（図４における変化基準レベル▲２▼もしくは▲４▼）との値の大小を判定する。ここで、変数ＥＮＶ＿ＭＡＸとは、現在入力されている楽音信号が含まれている今回のアタック区間内において、今まで観測した変数ＡＤ＿ＶＡＬＵＥ（１）の値の最大値が代入される変数である。従って、変数ＥＮＶ＿ＭＡＸの値から変数ＡＤ＿ＶＡＬＵＥ（１）の値を減じた結果の値とは今回のアタック区間内において今までに観測されたエンベロープの最大レベルからの減少分を示しており、また、この結果の値が負となる場合には現在の楽音信号のエンベロープが増加中であることを示している。
【０１５１】
なお、図１５にＳ１０１で示した初期化処理では、この変数ＥＮＶ＿ＭＡＸに０を代入して初期化する処理が含まれている。
このＳ２５４の判断処理の結果、変数ＥＮＶ＿ＭＡＸの値から変数ＡＤ＿ＶＡＬＵＥ（１）の値を減じた結果の値がディケイ区間判定基準レベルよりも大きいと判断したならばＳ２５５に進む。一方、その結果の値がディケイ区間判定基準レベルよりも大きくはないと判断したならば今回のアタック区間内解析処理を終了し、エンベロープ解析処理へ戻る。
【０１５２】
Ｓ２５５では、エンベロープ検出部２０の現在の出力電圧値がアタック区間からディケイ区間への区間遷移の判定基準を満たしていると判定し、変数ＥＮＶ＿ＰＥＲＩＯＤの値を２に設定する。
【０１５３】
Ｓ２５６、Ｓ２５７、２５８では、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ、変数ＤＥＣＡＹ＿ＴＩＭＥＲ、変数ＥＮＶ＿ＭＡＸの各々に順に０を代入して各変数の初期化を行ない、その後、今回のアタック区間内解析処理を終了してエンベロープ解析処理へ戻る。
【０１５４】
ところで、Ｓ２５１の判断処理において、変数ＡＤ＿ＶＡＬＵＥ（１）の値が変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥの値よりも小さくない、すなわちエンベロープ検出部２０の現在の出力電圧値が前回の値よりも減少しなくなったと判定された場合には、Ｓ２５９及びＳ２６０で変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＤＥＣＡＹ＿ＴＩＭＥＲに順に０を代入して各変数の初期化を行なう。
【０１５５】
Ｓ２６１では、変数ＡＤ＿ＶＡＬＵＥ（１）と変数ＥＮＶ＿ＭＡＸとの値の大小を判定する。その結果、変数ＡＤ＿ＶＡＬＵＥ（１）が変数ＥＮＶ＿ＭＡＸよりも大きな値となった場合にのみ、Ｓ２６２において変数ＥＮＶ＿ＭＡＸに変数ＡＤ＿ＶＡＬＵＥ（１）の値を代入し、今回のアタック区間におけるエンベロープの観測最大値の更新を行なう。
【０１５６】
以上の処理の終了後には今回のアタック区間内解析処理を終了してエンベロープ解析処理へ戻る。
以上までの処理がアタック区間内解析処理である。
【０１５７】
次に、エンベロープ解析処理でのＳ２４３（図２２）におけるディケイ区間内解析処理について説明する。図２４はディケイ区間内解析処理の処理内容を示すフローチャートである。
【０１５８】
まず、Ｓ２７１において、変数ＡＤ＿ＶＡＬＵＥ（１）と変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥとの値の大小を比較し、変数ＡＤ＿ＶＡＬＵＥ（１）の値が変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥの値よりも大きい、すなわちエンベロープ検出部２０の現在の出力電圧値が前回の値よりも増加しているのであればＳ２７２に進み、増加しなかったのであればＳ２７９に進む。
【０１５９】
Ｓ２７２では、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆに１を代入する。
変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ及び変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆについて説明すると、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲは、ディケイ区間において、エンベロープが継続して増加し続けたときの継続時間を測定するためのカウンタであり、ディケイ区間からアタック区間への遷移の判定のために用いられる変数である。変数ＡＴＴＣＫ＿ＴＩＭＥＲは、後述するタイマ割り込み処理により、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施され、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆに１以外の値、例えば０が代入された場合には変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理では、この変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ及び変数ＡＴＴＡＣＫ＿ＴＩＭＥＲに０を代入して初期化する処理が含まれている。
【０１６０】
Ｓ２７３では、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの値と、エンベロープ波形におけるディケイ区間からアタック区間へ遷移したことを判定する基準となるアタック区間判定基準時間（図４における判断区間（ｂ）の時間）との値の大小を判定する。変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの値がアタック区間判定基準時間を超えたのであればＳ２７４に進む。一方、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの値がアタック区間判定基準時間を未だ超えていないのであれば今回のディケイ区間内解析処理を終了し、エンベロープ解析処理へ戻る。
【０１６１】
Ｓ２７４では、変数ＡＤ＿ＶＡＬＵＥ（１）の値から変数ＥＮＶ＿ＭＡＸの値を減じた結果の値と、エンベロープ波形におけるディケイ区間からアタック区間へ遷移したことを判定する基準となるアタック区間判定基準レベル（図４における変化基準レベル▲３▼）との値の大小を判定する。ここで、変数ＥＮＶ＿ＭＩＮとは、現在入力されている楽音信号が含まれている今回のディケイ区間内において、今まで観測した変数ＡＤ＿ＶＡＬＵＥ（１）の値の最小値が代入される変数である。従って、変数ＡＤ＿ＶＡＬＵＥ（１）の値から変数ＥＮＶ＿ＭＩＮの値を減じた結果の値とは今回のディケイ区間内において観測されたエンベロープの最小レベルからの増加分を示しており、また、この結果の値が負となる場合には現在の楽音信号のエンベロープが減少中であることを示している。
【０１６２】
なお、図１５にＳ１０１で示した初期化処理では、この変数ＥＮＶ＿ＭＩＮにＡＤコンバータ５５の出力する最大値のデータを代入して初期化する処理が含まれている。
【０１６３】
このＳ２７４の判断処理の結果、変数ＡＤ＿ＶＡＬＵＥ（１）の値から変数ＥＮＶ＿ＭＡＸの値を減じた結果の値がアタック区間判定基準レベルよりも大きいと判断したならばＳ２７５に進み、その結果の値がアタック区間判定基準レベルよりも大きくはないと判断したならば今回のディケイ区間内解析処理を終了し、エンベロープ解析処理へ戻る。
【０１６４】
Ｓ２７５では、エンベロープ検出部２０の現在の出力電圧値がディケイ区間からアタック区間への区間遷移の判定基準を満たしていると判定し、変数ＥＮＶ＿ＰＥＲＩＯＤの値を１に設定する。
【０１６５】
Ｓ２７６、Ｓ２７７、Ｓ２７８では、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ、変数ＥＮＶ＿ＭＩＮの各々を初期化する。ここで、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＤＥＣＡＹ＿ＴＩＭＥＲには順に０を代入するが、変数ＥＮＶ＿ＭＩＮにはＡＤコンバータ５５の出力可能な最大値のデータを代入する。
【０１６６】
その後、今回のアタック区間内解析処理を終了してエンベロープ解析処理へ戻る。
ところで、Ｓ２７１の判断処理において、変数ＡＤ＿ＶＡＬＵＥ（１）の値が変数ＥＮＶ＿ＬＡＳＴＶＡＬＵＥの値よりも大きくない、すなわちエンベロープ検出部２０の現在の出力電圧値が前回の値よりも増加しなくなったと判定された場合には、Ｓ２７９及びＳ２８０で変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ及び変数ＡＴＴＡＣＫ＿ＴＩＭＥＲに順に０を代入して各変数の初期化を行なう。
【０１６７】
Ｓ２８１では、変数ＡＤ＿ＶＡＬＵＥ（１）と変数ＥＮＶ＿ＭＩＮとの値の大小を判定する。その結果、変数ＡＤ＿ＶＡＬＵＥ（１）が変数ＥＮＶ＿ＭＩＮよりも小さな値となった場合にのみ、Ｓ２８２において変数ＥＮＶ＿ＭＩＮに変数ＡＤ＿ＶＡＬＵＥ（１）の値を代入し、今回のディケイ区間におけるエンベロープの最小値の更新を行なう。
【０１６８】
以上の処理の終了後には今回のディケイ区間内解析処理を終了してエンベロープ解析処理へ戻る。
以上までの処理がディケイ区間内解析処理である。
【０１６９】
次に、入力信号解析処理でのＳ２１３（図２０）におけるピッチ検出処理について説明する。図２５はピッチ検出処理の処理内容を示すフローチャートである。
【０１７０】
まず、Ｓ２９１では、ＲＯＭ５２の所定の領域に予め格納されているＡＤ値−ピッチ変換テーブルを参照する。このＡＤ値−ピッチ変換テーブルは、既知のピッチである試験信号を入力した場合にピッチ−電圧変換部３０から出力されるアナログ電圧をＡＤコンバータ５５がＡＤ変換したときに出力されるデジタルデータを観測し、入力の試験信号のピッチと出力データとの関係をテーブルとしてＲＯＭ５２に格納したものである。
【０１７１】
Ｓ２９２では、このＡＤ値−ピッチ変換テーブルから変数ＡＤ＿ＶＡＬＵＥ（２）の値、すなわちピッチ−電圧変換部３０の現在の出力電圧値に対応するピッチの値を取得し、変数ＰＩＴＣＨに代入する。この後に行われる処理においては、この変数ＰＩＴＣＨの値を参照することによって現在の楽音信号のピッチの値を取得することができる。
【０１７２】
以上の処理の終了後には今回のピッチ検出処理を終了して入力信号解析処理へ戻る。
以上までの処理がピッチ検出処理である。
【０１７３】
次に、入力信号解析処理でのＳ２１４（図２０）におけるピッキング方向検出処理について説明する。図２６はピッキング方向検出処理の処理内容を示すフローチャートである。
【０１７４】
まず、Ｓ３０１では、変数ＥＮＶ＿ＰＥＲＩＯＤが２であるか否か、すなわちエンベロープ解析処理の結果、現在の楽音信号がディケイ区間に含まれているか否かを判定する。変数ＥＮＶ＿ＰＥＲＩＯＤが２であればＳ３０２に進み、２ではないのであればＳ３０６に進む。
【０１７５】
Ｓ３０２では、変数ＨＯＬＤ＿ＣＴＲＬに１を代入する。変数ＨＯＬＤ＿ＣＴＲＬは、ピークホールド部（４０ａ、４０ｂ）でのアナログ電圧のホールド・非ホールド（サンプル）を制御する変数であり、この変数に１を代入すると、ピークホールド回路（４３ａ、４３ｂ）に対してそれまでに与えられたアナログ電圧の最大値の出力を保持させるホールド制御がなされる。また、この変数に０を代入すると、ピークホールド回路（４３ａ、４３ｂ）に対してそれまでに与えられたアナログ電圧の最大値を出力させる非ホールド（サンプル）制御がなされる。なお、図１５にＳ１０１で示した初期化処理では、この変数ＨＯＬＤ＿ＣＴＲＬに０を代入して初期化する処理が含まれている。
【０１７６】
Ｓ３０３では、変数ＡＤ＿ＶＡＬＵＥ（３）と変数ＡＤ＿ＶＡＬＵＥ（４）との値の大小を判定する。変数ＡＤ＿ＶＡＬＵＥ（３）の値が変数ＡＤ＿ＶＡＬＵＥ（４）の値以上である、すなわち＋ピークホールド部４０ａの現在の出力電圧値が−ピークホールド部４０ｂの現在の出力電圧値以上である場合には、Ｓ３０４において、変数ＰＩＣＫＩＮＧに０を代入する。一方、変数ＡＤ＿ＶＡＬＵＥ（３）の値が変数ＡＤ＿ＶＡＬＵＥ（４）の値よりも小さい、すなわち＋ピークホールド部４０ａの現在の出力電圧が−ピークホールド部４０ｂの現在の出力電圧よりも小さい場合には、Ｓ３０５において、変数ＰＩＣＫＩＮＧに１を代入する。この後に行われる処理においては、この変数ＰＩＣＫＩＮＧの値を参照することにより、値が０の場合にはピッキングアップの奏法で現在演奏がなされていることを認識し、また、値が１の場合にはピッキングダウンの奏法で現在演奏がなされていることを認識することができる。
【０１７７】
この処理の後は、今回のピッキング方向検出処理を終了して入力信号解析処理へ戻る。
ところで、Ｓ３０１の判断処理において、変数ＥＮＶ＿ＰＥＲＩＯＤが２ではない、すなわちエンベロープ解析処理の結果、現在の楽音信号がディケイ区間に含まれていないと判定されると、Ｓ３０６で、変数ＨＯＬＤ＿ＣＴＲＬが１であるか否かを判定する。この結果、変数ＨＯＬＤ＿ＣＴＲＬが１である、すなわちこの時点まではピークホールド部（４０ａ、４０ｂ）に対してホールド制御が行われていた、つまり、この時点までは楽音信号がディケイ区間に含まれていたと判定された場合にのみ、Ｓ３０７において、ピークホールド部（４０ａ、４０ｂ）をリセットし、更にＳ３０８において、変数ＨＯＬＤ＿ＣＴＲＬに０を代入して非ホールド制御を行なう。なお、ピークホールド部（４０ａ、４０ｂ）は、リセットされることにより今まで出力していたアナログ電圧の最大値の出力の保持が解放され、出力のアナログ電圧値が一旦ゼロとなる。
【０１７８】
この処理の後は、今回のピッキング方向検出処理を終了して入力信号解析処理へ戻る。
以上までの処理がピッキング方向検出処理である。
【０１７９】
次に、プレイモード処理でのＳ２０９（図１９）におけるＶＣＦ制御処理について説明する。このＶＣＦ制御処理も、前述した入力信号解析処理と共に、本発明に直接関係している処理である。
【０１８０】
図２７はＶＣＦ制御処理の処理内容を示すフローチャートである。
まず、Ｓ３１１において、ＶＣＦ１１が構成するＢＰＦの中心周波数を振動させるＬＦＯ機能を本装置で実現するための処理であるＬＦＯ処理が行なわれる。
【０１８１】
Ｓ３１２では、ＶＣＦ１１が構成するＢＰＦの中心周波数の変化の基とするエンベロープカーブを生成するＥＧ（エンベロープジェネレータ）機能を本装置で実現するための処理であるＥＧ処理が行なわれる。
【０１８２】
Ｓ３１３では、ＶＣＦ１１が構成するＢＰＦの中心周波数を入力された楽音信号のピッチに応じて変化させる機能であるピッチ制御機能を本装置で実現するための処理であるピッチ制御処理が行なわれる。
【０１８３】
Ｓ３１４では、ＶＣＦ１１が構成するＢＰＦの特性をギター演奏のピッキング方向の違いによって変化させるピッキング制御機能を本装置で実現するための処理であるピッキング制御処理が行なわれる。
【０１８４】
以上のＳ３１１からＳ３１４にかけての各処理の詳細は後述する。
Ｓ３１５では、Ｆｐｉｔｃｈ×｛１＋Ｓ×（ＬＦＯ＋ＥＧ）×１／２｝＋Ｆｏｆｆｓｅｔで求まる値を変数Ｆに代入する。変数ＦはＶＣＦ１１への制御アナログ電圧を設定するための変数であり、ＶＣＦ１１が構成するＢＰＦの中心周波数の設定値である。このステップにおいて用いられる各変数については、後述するＳ３１１からＳ３１４にかけての各処理の詳細説明において説明する。
【０１８５】
Ｓ３１６では、ＲＯＭ５２に予め格納されている、ＶＣＦ１１へ印加する制御電圧とＶＣＦ１１で構成するＢＰＦの中心周波数若しくはＱの高さの設定値との対応関係が示されているＶＣＦ制御データテーブルを参照する。そして、Ｓ３１７で、変数Ｆ及び変数Ｐに対応する制御値をこのテーブルから求め、得られた制御データををＤＡコンバータ５４に与え、ＤＡ変換させる。変換されたアナログ電圧はＶＣＦ１１に与えられ、ＶＣＦ１１で構成されるＢＰＦの特性が設定される。なお、ＤＡコンバータ５４は、新たなデジタルデータが与えられるまでの期間には前回に与えられたデジタルデータに対応するアナログ電圧値の出力が継続し、そのためＶＣＦ１１が構成するＢＰＦの特性はその期間には変化しないものとする。
【０１８６】
変数Ｐについては後述するＳ３１１からＳ３１４にかけての各処理の詳細説明において併せて説明する。
この処理の終了後は、今回のＶＣＦ制御処理を終了してプレイモード処理へ戻る。
【０１８７】
以上までの処理がＶＣＦ制御処理である。
次に、ＶＣＦ制御処理でのＳ３１１におけるＬＦＯ処理について説明する。図２８はＬＦＯ処理の処理内容を示すフローチャートである。
【０１８８】
まず、Ｓ３２１において、図１０に示した使用者によって設定される本装置の動作制御パラメータのひとつであって、前述したプレイモード処理のＳ２０１もしくはＳ２０７（図１９）の処理によりテンポラリメモリに格納されているブロックＬＦＯのＴｒｉｇ  Ｍｏｄｅの設定内容を参照する。その結果、Ｔｒｉｇ  Ｍｏｄｅの値が０、すなわちＬＦＯ機能が動作停止（ＯＦＦ）モードに設定されているのであればＳ３２２に進み、値が１、すなわちＡＬＷＡＹＳモードに設定されているのであればＳ３２３に進み、値が２、すなわちＤＥＣＡＹモードに設定されているのであればＳ３３０に進む。
【０１８９】
Ｔｒｉｇ  Ｍｏｄｅの値が０、すなわちＬＦＯ機能が動作停止モードに設定されている場合、Ｓ３２２において変数ＬＦＯに０．０を代入する。ここで、変数ＬＦＯとは、ＶＣＦ１１が構成するＢＰＦの中心周波数に対してのＬＦＯ機能による制御量を設定するパラメータであり、０．０以上１．０以下の値が設定され、値が大きいほど大きく中心周波数を変化させる制御が行われる。また、この値を０．０に設定した場合にはＬＦＯ機能による前述のＢＰＦの中心周波数の変化が起きないようになる。
【０１９０】
Ｓ３２２の処理の後には今回のＬＦＯ処理を終了してＶＣＦ制御処理へ戻る。
ところで、Ｓ３２１において、Ｔｒｉｇ  Ｍｏｄｅの値が１、すなわちＬＦＯ機能がＡＬＷＡＹＳモードに設定されていると判断された場合、Ｓ３２３において変数ＲＩＳＥ＿ＣＯＥＦに１．０を代入する。ここで、変数ＲＩＳＥ＿ＣＯＥＦとは、ＬＦＯ機能により発生させる振動波の振動幅を設定する変数であり、０．０以上１．０以下の値が設定され、値が大きいほど大きな振動幅の振動波を発生させることを示す。
【０１９１】
Ｓ３２４では、変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆに１を代入する。
ここで、変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆ及び変数ＡＤＤＲ＿ＣＯＵＮＴについて説明する。変数ＡＤＤＲ＿ＣＯＵＮＴとは、後述するＯＳＣテーブルに格納されている１周期分の振動波形データを繰り返し読み出すためのリングカウンタとして用いられる変数であり、後述するタイマ割り込み処理により変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施される。従って、変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆに１以外の値、例えば０が代入された場合には、変数ＡＤＤＲ＿ＣＯＵＮＴの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理ではこの変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆ及び変数ＡＤＤＲ＿ＣＯＵＮＴに０を代入して初期化する処理が含まれている。
【０１９２】
Ｓ３２５では、変数ＡＤＤＲ＿ＣＯＵＮＴの値と後述するＯＳＣテーブルに格納されている振動波形データの１周期分のデータ数とを比較し、変数ＡＤＤＲ＿ＣＯＵＮＴの値が波形データのデータ数を超えてしまった場合のみ、Ｓ３２６においてその値から前述の波形データのデータ数を減じた値を改めて変数ＡＤＤＲ＿ＣＯＵＮＴに代入する。この処理により、変数ＡＤＤＲ＿ＣＯＵＮＴがリングカウンタとして機能する。
【０１９３】
Ｓ３２７では、変数ＡＤＤＲ＿ＣＯＵＮＴとＡＤＤＲ＿ＯＦＦＳＥＴ（Ｗａｖｅ  Ｆｏｒｍ）との和を変数ＡＤＤＲに代入する。ここで、変数ＡＤＤＲとは、ＲＯＭ５２上に格納されている振動波形データを読み出すための参照アドレスが設定される変数であり、リングカウンタである変数ＡＤＤＲ＿ＣＯＵＮＴの作用により１周期分の波形データを繰り返し読み出すことができる。また、ＡＤＤＲ＿ＯＦＦＳＥＴ（Ｗａｖｅ  Ｆｏｒｍ）は、前述したテンポラリメモリに格納されているブロックＬＦＯのパラメータＷａｖｅ  Ｆｏｒｍで示される信号波形の波形データが格納されている、ＲＯＭ５２上の格納領域の位置を示すものであり、Ｗａｖｅ  Ｆｏｒｍの値毎に対応した適切な値が予め設定されている。
【０１９４】
Ｓ３２８では、ＲＯＭ５２に予め格納されている振動波形データのテーブルであるＯＳＣテーブルを参照する。
ここで、振動波形データについて説明する。振動波形データは各波形とも同一のデータ数が格納されており、各データは０．０から１．０までのいずれかの値をとる。また、各データの先頭は０．０のデータ値から始まるようにしておく。こうしておくことで、後に説明するＤＥＣＡＹモードによる動作であっても、振動波の発生開始時に滑らかなＢＰＦの中心周波数の制御が行なえる。
【０１９５】
Ｓ３２９では、変数ＡＤＤＲのアドレスに格納されている振動波形データの内容であるＯＳＣ（ＡＤＤＲ）と変数ＲＩＳＥ＿ＣＯＥＦとの積を算出して変数ＬＦＯの値とし、今回のＬＦＯ処理を終了してＶＣＦ制御処理へ戻る。
【０１９６】
ところで、Ｓ３２１において、Ｔｒｉｇ  Ｍｏｄｅの値が２、すなわちＬＦＯ機能がＤＥＣＡＹモードに設定されていると判断された場合、Ｓ３３０において前述した変数ＥＮＶ＿ＰＥＲＩＯＤの値が２であるか否か、すなわち現在入力されている楽音信号のエンベロープがディケイ区間に含まれているか否かを判断する。その結果、変数ＥＮＶ＿ＰＥＲＩＯＤ値が２であればＳ３３５に進み、２でなければＳ３３１に進む。
【０１９７】
前ステップの判断処理により、現在入力されている楽音信号のエンベロープがディケイ区間でないと判定された場合には、Ｓ３３１からＳ３３４にかけて変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆ及び変数ＡＤＤＲ＿ＣＯＵＮＴ、そして後述する変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆ及び変数ＬＦＯ＿ＴＩＭＥＲの各々に０を順に代入し、初期化する。そして、その後はＳ３２２に進み、前述の動作停止モードと同様の処理を行ない、その結果、変数ＬＦＯには０．０が代入される。
【０１９８】
一方、Ｓ３３０の判断処理により現在入力されている楽音信号のエンベロープがディケイ区間であると判定された場合には、Ｓ３３５において変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆに１を代入する。
【０１９９】
変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆ及び変数ＬＦＯ＿ＴＩＭＥＲについて説明すると、変数ＬＦＯ＿ＴＩＭＥＲとは、ＤＥＣＡＹモードにおいて、入力されている楽音信号が今回のディケイ区間に含まれるようになってからの経過時間を測定するためのカウンタであり、後述するタイマ割り込み処理により、変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施される。また、変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆに１以外の値、例えば０が代入された場合には、変数ＬＦＯ＿ＴＩＭＥＲの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理では、この変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆ及び変数ＬＦＯ＿ＴＩＭＥＲに０を代入して初期化する処理が含まれている。
【０２００】
Ｓ３３６では、変数ＬＦＯ＿ＴＩＭＥＲの値が、前述したテンポラリメモリに格納されているブロックＬＦＯのパラメータＤｅｌａｙ  Ｔｉｍｅを過ぎたか否かを調べ、変数ＬＦＯ＿ＴＩＭＥＲの値が設定されたＬＦＯ機能による振動波の発生開始までの遅延時間を過ぎているのであればＳ３３７に進む。一方、ＬＦＯ＿ＴＩＭＥＲの値がその遅延時間を過ぎていないのであれば、Ｓ３２２に進み、前述の動作停止モードと同様の処理を行ない、その結果、変数ＬＦＯには０．０が代入される。
【０２０１】
Ｓ３３７では、変数ＬＦＯ＿ＴＩＭＥＲの値が、前述のパラメータＤｅｌａｙＴｉｍｅと、前述したテンポラリメモリに格納されているブロックＬＦＯのパラメータＲｉｓｅ  Ｔｉｍｅとの合計時間を経過したか否かを調べ、経過前であるならば、Ｓ３３８において、前述した振動波の振幅を設定する変数ＲＩＳＥ＿ＣＯＥＦに（ＬＦＯ＿ＴＩＭＥＲ−Ｄｅｌａｙ＿Ｔｉｍｅ）／（Ｒｉｓｅ  Ｔｉｍｅ）なる式の結果の値を代入する。この処理により、振動波の発生開始から定常の振動幅となるまでの振動幅の変化を滑らかにすることができるようになる。この処理の後には、Ｓ３２４に進み、Ｓ３３８の処理により設定された変数ＲＩＳＥ＿ＣＯＥＦに基づいたＬＦＯの値が以降の処理により設定される。
【０２０２】
一方、Ｓ３３７の判断処理において、ＬＦＯ＿ＴＩＭＥＲの値が、パラメータＤｅｌａｙ  ＴｉｍｅとパラメータＲｉｓｅ  Ｔｉｍｅとの合計時間を経過していたと判定された場合にはＳ３２３に進み、前述のＤＥＣＡＹモードと同様の処理を行ない、その結果、変数ＬＦＯにはＤＥＣＡＹモードと同様の値が代入される。
【０２０３】
以上までの処理がＬＦＯ処理である。
次に、ＶＣＦ制御処理でのＳ３１２（図２７）におけるＥＧ処理について説明する。図２９及び図３０はＥＧ処理の処理内容を示すフローチャートである。
【０２０４】
まず、図２９のＳ３４１において、図１０に示した使用者によって設定される本装置の動作制御パラメータのひとつであって、前述したプレイモード処理でテンポラリメモリに格納されているブロックＥＧのＴｒｉｇ  Ｍｏｄｅの設定内容を参照する。その結果、Ｔｒｉｇ  Ｍｏｄｅの値が０、すなわちＥＧ機能が動作停止（ＯＦＦ）モードに設定されているのであればＳ３４２に進み、値が１、すなわちＡＬＷＡＹＳモードに設定されているのであればＳ３６０（図３０）に進み、値が２、すなわちＤＥＣＡＹモードに設定されているのであればＳ３４３に進む。
【０２０５】
Ｔｒｉｇ  Ｍｏｄｅの値が０、すなわちＥＧ機能が動作停止モードに設定されている場合、Ｓ３４２において変数ＥＧに０．０を代入する。ここで、変数ＥＧとは、ＶＣＦ１１が構成するＢＰＦの中心周波数に対してのＥＧ機能による制御量を設定するパラメータであり、０．０以上１．０以下の値が設定される。そして、この値が大きいほど大きく中心周波数を変化させる制御が行われ、その一方でこの値を０．０に設定した場合にはＥＧ機能による前述のＢＰＦの中心周波数の変化が起きないようになる。
【０２０６】
Ｓ３４２の処理の後には、今回のＥＧ処理を終了してＶＣＦ制御処理へ戻る。ところで、Ｓ３４１において、Ｔｒｉｇ  Ｍｏｄｅの値が２、すなわちＥＧ機能がＤＥＣＡＹモードに設定されていると判断された場合、Ｓ３４３において前述した変数ＥＮＶ＿ＰＥＲＩＯＤの値を調べる。その結果、その値が１、すなわち現在入力されている楽音信号のエンベロープがアタック区間に含まれているのであればＳ３４４に進み、値が２、すなわちディケイ区間に含まれているのであればＳ３４９に進み、値が０、すなわち無音区間に含まれているのであればＳ３５６に進む。
【０２０７】
前ステップの判断処理によって現在入力されている楽音信号のエンベロープがアタック区間に含まれていると判定された場合には、Ｓ３４４で、エンベロープ検出部２０の出力電圧値が代入されている変数ＡＤ＿ＶＡＬＵＥ（１）をＡＤコンバータ５５の出力可能な最大値のデータで割った値を前述した変数ＥＧに代入する。この処理により、変数ＥＧは、アタック区間においては楽音信号のエンベロープに従って変化するようになる。
【０２０８】
Ｓ３４５では、変数ＬＡＳＴＡＴＴＡＣＫ＿ＥＧに変数ＥＧの現在の値を代入する。変数ＬＡＳＴＡＴＴＡＣＫ＿ＥＧは、後述するディケイ区間内における処理で必要となる、アタック区間におけるエンベロープの最大値を保存するための変数である。
その後、Ｓ３４６からＳ３４８にかけて、後に説明する数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ、変数ＬＡＳＴ＿ＴＩＭＥの各々に０を順に代入して初期化し、その後は今回のＥＧ処理を終了してＶＣＦ制御処理へ戻る。
【０２０９】
ところで、Ｓ３４３の判断処理により現在入力されている楽音信号のエンベロープがディケイ区間であると判定された場合には、Ｓ３４９において変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆに１を代入する。
【０２１０】
ここで、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲについて説明すると、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲとは、入力されている楽音信号が今回のディケイ区間に含まれるようになってからの経過時間を測定するためのカウンタであり、後述するタイマ割り込み処理により、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施され、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆに１以外の値が代入された場合には、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理では、この変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆ及び変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲに０を代入して初期化する処理が含まれている。
【０２１１】
Ｓ３５０では、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲの現在の値を変数ＬＡＳＴ＿ＴＩＭＥに代入する。変数ＬＡＳＴ＿ＴＩＭＥについては後述する。
Ｓ３５１では、変数ＬＡＳＴ＿ＴＩＭＥとＩＮＴ（１００／Ｄｅｌａｙ  Ｒａｔｅ）との積を変数ＥＧＡＤＤＲに代入する。ここで、変数ＥＧＡＤＤＲとは、ＲＯＭ５２上に格納されているディケイ部分のみのエンベロープの波形データを読み出すための参照アドレスが設定される変数である。また、Ｄｅｌａｙ  Ｒａｔｅは、前述したテンポラリメモリに格納されているブロックＥＧのパラメータＤｅｌａｙ  Ｒａｔｅの設定値である。なお、関数ＩＮＴ（）は、括弧内の計算結果の整数部分のみを取り出す関数である。このステップの処理により、毎回のＥＧ処理の度に次々に変更される変数ＥＧＡＤＤＲの値の数値間隔をパラメータＤｅｌａｙ  Ｒａｔｅの値で変化させることができるようになり、その結果、ディケイ部分のエンベロープの波形データが変数ＥＧＡＤＤＲによる飛び飛びの読み出しアドレスの設定で読み出されるので、エンベロープの減衰特性が変更されることになるのである。
【０２１２】
Ｓ３５２では、前述の変数ＥＧＡＤＤＲの値と、ＲＯＭ５２上のディケイ部分のみのエンベロープの波形データのデータ数との大小を調べる。その結果、変数ＥＧＡＤＤＲの値が波形データ数を超えてしまったのであれば、生成中のディケイ部分のエンベロープ波形は充分に減衰したものとみなし、Ｓ３５３において変数ＥＧに０．０を代入し、そして今回のＥＧ処理を終了してＶＣＦ制御処理へ戻る。一方、変数ＥＧＡＤＤＲの値が波形データ数を超えていないのであればＳ３５４に進む。
【０２１３】
Ｓ３５４では、ＲＯＭ５２に予め格納されている、ディケイ部分のみのエンベロープの波形データ群であるディケイカーブテーブルを参照する。このディケイカーブテーブルの内容を説明すると、各データは０．０以上１．０以下の値であり、ディケイ曲線の先頭データが１．０であるようにしておく。
【０２１４】
Ｓ３５５では、Ｓ３４５で前述した変数ＬＡＳＴＡＴＴＡＣＫ＿ＥＧとＤ＿ＣＵＲＶＥ（ＥＧＡＤＤＲ）との積を変数ＥＧに代入し、今回のＥＧ処理を終了してＶＣＦ制御処理へ戻る。ここで、Ｄ＿ＣＵＲＶＥ（ＥＧＡＤＤＲ）とは、前述したディケイカーブテーブルにおいて変数ＥＧＡＤＤＲを読み出しアドレスとして読み出した時のデータ値である。この処理により、生成するエンベロープのアタック部分とディケイ部分とが違和感なく連続させることができるようになる。
【０２１５】
ところで、Ｓ３４３の判断処理により現在入力されている楽音信号のエンベロープが無音区間であると判定された場合には、Ｓ３５６において変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆに１を代入する。この処理は、楽音信号のエンベロープがアタック区間からディケイ区間に遷移せずに無音区間に遷移してしまった場合  （アタック区間からディケイ区間への遷移の判定条件を満たさないまま、無音区間に移行してしまう場合があり得る）を考慮したものである。
【０２１６】
Ｓ３５７では、定数ＤＥＣＡＹ＿ＣＯＥＦと（ＥＧＤＡＥＣＡＹ＿ＴＩＭＥＲ−ＬＡＳＴ＿ＴＩＭＥ）との積を変数ＥＧの現在の値から引き算し、その結果を改めて変数ＥＧに代入する。定数ＤＥＣＡＹ＿ＣＯＥＦは、無音区間におけるエンベロープの生成波形の減衰の程度を示す、予め設定されている定数である。ここで、変数ＬＡＳＴ＿ＴＩＭＥは前回のＥＧ処理の実行時におけるＥＧＤＥＣＡＹ＿ＴＩＭＥＲの値を保存しておく変数であり、従って、変数ＥＧＤＡＥＣＡＹ＿ＴＩＭＥＲから変数ＬＡＳＴ＿ＴＩＭＥを引いた結果の値は、ＥＧ処理の前回の処理時刻から今回の処理時刻までの経過時間を示すものである。このステップの処理により、変数ＥＧの値は無音区間においては時間の経過に応じて一定の割合で小さくなるように設定される。
【０２１７】
Ｓ３５８では、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲの値を変数ＬＡＳＴ＿ＴＩＭＥに代入する。
Ｓ３５９では、Ｓ３５７で設定された変数ＥＧの値が０．０を下回ってしまったか否かを調べる。その結果、変数ＥＧの値が０．０を下回ってしまった場合のみ、Ｓ３５３において変数ＥＧを０．０に設定する。この処理の後には、今回のＥＧ処理を終了してＶＣＦ制御処理へ戻る。
【０２１８】
ところで、前述したＳ３４１の判断処理において、Ｔｒｉｇ  Ｍｏｄｅの値が２、すなわちＥＧ機能がＡＬＷＡＹＳモードに設定されていると判断された場合には、図３０のＳ３６０において前述した変数ＥＮＶ＿ＰＥＲＩＯＤの値を調べ、その値が０、すなわち現在入力されている楽音信号のエンベロープが無音区間に含まれているのであればＳ３６９に進み、それ以外の場合にはＳ３６１に進む。
【０２１９】
Ｓ３６１では、変数ＥＧ＿Ｆが０であるか否かを調べる。変数ＥＧ＿Ｆは、ＥＧ機能がＡＬＷＡＹＳモードに設定されている場合にのみ使用される変数であり、０あるいは１の値をとる。変数ＥＧ＿Ｆが０に設定されている場合にはＥＧ機能はエンベロープ波形のアタック部分を生成している（あるいは未生成）ことを示しており、変数ＥＧ＿Ｆが１に設定されている場合にはディケイ部分を生成していることを示している。なお、図１５にＳ１０１で示した初期化処理では、この変数ＥＧ＿Ｆに０を代入して初期化する処理が含まれている。
【０２２０】
ＥＧ機能がエンベロープ波形のアタック部分を生成していると判定されると、Ｓ３６２において変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆに１を代入する。
ここで、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ及び変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲについて説明すると、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲとは、入力されている楽音信号が無音区間から今回のアタック区間に含まれるようになってからの経過時間を測定するためのカウンタであり、後述するタイマ割り込み処理により、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆが１のときにのみ一定時間毎に値を１ずつ増加させる処理が施され、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆに１以外の値が代入された場合には、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲの値の増加を停止させることができる。なお、図１５にＳ１０１で示した初期化処理では、この両変数に０を代入して初期化する処理が含まれている。
【０２２１】
Ｓ３６３では、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲを定数ＡＴＴＡＣＫ＿ＣＯＥＦとＡｔｔａｃｋ  Ｒａｔｅとの積で割った値と、変数ＥＧの現在の値との和を改めて変数ＥＧに代入する。定数ＤＥＣＡＹ＿ＣＯＥＦは、ＥＧ機能がＡＬＷＡＹＳモードに設定されている場合におけるエンベロープのアタック部分の生成波形の上昇の程度の基準を示す、予め設定されている定数である。また、Ａｔｔａｃｋ  Ｒａｔｅは、前述したテンポラリメモリに格納されているブロックＥＧのパラメータＡｔｔａｃｋ  Ｒａｔｅの設定値である。このステップの処理により、変数ＥＧの値が入力の楽音信号のエンベロープの立ち上がりとはに無関係な独自のエンベロープに基づいて設定される。
【０２２２】
Ｓ３６４では、変数ＥＧが、前述したテンポラリメモリに格納されているブロックＥＧのパラメータＡｔｔａｃｋ  Ｌｅｖｅｌを１００で割った値を超えてしまったか否かを調べ、超えてしまった場合のみ、Ｓ３６５からＳ３６８にかけての処理を行なう。
【０２２３】
Ｓ３６５では、前述のパラメータＡｔｔａｃｋ  Ｌｅｖｅｌを１００で割った値を変数ＥＧに改めて代入する。
Ｓ３６６では、生成中のエンベロープがアタックの最大値に達したので、変数ＥＧ＿Ｆの値を１に設定し、次回以降のＥＧ処理ではディケイ部分を生成させるようにする。
【０２２４】
Ｓ３６７及びＳ３６８では、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆ及び変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲにに０を順に代入して初期化する。
以上の処理の後には、Ｓ３４５（図２９）に進み、ＤＥＣＡＹモードにおけるアタック区間の処理と同様の処理を行なう。
【０２２５】
ところで、Ｓ３６１の判断処理において、変数ＥＧ＿Ｆの値が０でないと判定された場合には、エンベロープ波形のディケイ部分を生成させる処理を行なうために、Ｓ３４９（図２９）に進み、ＤＥＣＡＹモードにおけるディケイ区間の処理と同様の処理を行なう。
【０２２６】
また、Ｓ３６０の判断処理において、変数ＥＮＶ＿ＰＥＲＩＯＤの値が０、すなわち現在入力されている楽音信号のエンベロープが無音区間に含まれていると判定された場合には、Ｓ３６９において、変数ＥＧ＿Ｆを０に設定した後に、エンベロープ波形の無音区間における生成処理を行なうために、Ｓ３５６（図２９）に進み、ＤＥＣＡＹモードにおける無音区間の処理と同様の処理を行なう。
【０２２７】
以上までの処理がＥＧ処理である。
次に、ＶＣＦ制御処理でのＳ３１３（図２７）におけるピッチ制御処理について説明する。図３１はピッチ制御処理の処理内容を示すフローチャートである。
【０２２８】
まず、Ｓ３７１において、ＲＯＭ５２に予め格納されているピッチ制御テーブルを参照する。ピッチ制御テーブルの内容を図１４を用いて説明すると，ピッチ制御テーブルは、前述したテンポラリメモリに格納されているブロックＰＩＴＣＨ  ＣＴＲＬのパラメータＦｒｅｑ  Ｓｃａｌｉｎｇと、ピッチ検出処理（図２５）で設定されている入力中の楽音信号の現在のピッチを示す変数ＰＩＴＣＨの値（図１４の横軸）とから、ピッチ制御処理による制御量であるＶＣＦ１１で構成されるＢＰＦの中心周波数の本装置の使用者による設定値からの加算値が示されるテーブルである。
【０２２９】
Ｓ３７２では、この加算値をテーブル参照により求め（図３１ではこの値をＦｔａｂｌｅ（Ｆｒｅｑ  Ｓｃａｌｉｎｇ，ＰＩＴＣＨ）と示している）、この値を前述したテンポラリメモリに格納されているブロックＦＩＬＴＥＲのパラメータＦｒｅｑと加算し、結果を変数Ｆｐｉｔｃｈに代入する。この値が、本装置のピッチ制御機能による制御を伴ったＶＣＦ１１によるＢＰＦの中心周波数に関する値となる。
【０２３０】
この処理の後には、今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
以上までの処理がピッチ制御処理である。
次に、ＶＣＦ制御処理でのＳ３１４（図２７）におけるピッキング制御処理について説明する。図３２はピッキング制御処理の処理内容を示すフローチャートである。
【０２３１】
まず、Ｓ３８１において、前述したテンポラリメモリに格納されているブロックＦＩＬＴＥＲのパラメータであって、本装置のＬＦＯ機能及びＥＧ機能によるＢＰＦの中心周波数の変化の程度を設定するパラメータであるＳｅｎｓを１００で割った値を変数Ｓに代入する。
【０２３２】
Ｓ３８２では、前述したテンポラリメモリに格納されているブロックＦＩＬＴＥＲのパラメータであって、ＶＣＦ１１の構成するＢＰＦのＱの高さを設定するパラメータであるＰｅａｋを変数Ｐに代入する。
【０２３３】
Ｓ３８３では、変数Ｆｏｆｆｓｅｔに０．０を代入する。変数ＦｏｆｆｓｅｔはＶＣＦ１１の構成するＢＰＦの中心周波数の設定を変化させるために使用される変数であり、この変数の値が前述したＶＣＦ制御処理のＳ３１５（図２７）において本装置の他の機能により制御されている中心周波数に加算される。
【０２３４】
Ｓ３８４では、前述したテンポラリメモリに格納されているブロックＰＩＣＫＤＩＲＥＣＴＩＯＮ  ＣＴＲＬのパラメータＭｏｄｅの設定値が０、すなわちＯＦＦモードに設定されているか否かを判別する。その結果、パラメータＭｏｄｅの設定値が０であるならば今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
【０２３５】
Ｓ３８５では、パラメータＭｏｄｅの設定値が１、すなわちＰｏｌ＋モードに設定されているか否かを判別する。Ｐｏｌ＋モードに設定されているのであればＳ３８６に進み、そうでなければＳ３８８に進む。
【０２３６】
Ｓ３８６では、ピッキング方向検出処理（図２６）において元のギター演奏におけるピッキングの方向に応じて設定されている変数ＰＩＣＫＩＮＧの値を調べ、その値が０、すなわち、元の演奏がピッキングアップにより行なわれている場合にのみＳ３８７において変数Ｓの符号を反転する。その後、今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
【０２３７】
Ｓ３８８では、前述の変数ＰＩＣＫＩＮＧの値を調べ、その値が１、すなわち、元の演奏がピッキングダウンにより行なわれている場合にはＳ３８９に進み、そうでない場合には今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
【０２３８】
Ｓ３８９では、パラメータＭｏｄｅの設定値が２、すなわちＰｏｌ−モードに設定されているか否かを判別し、Ｐｏｌ−モードに設定されている場合にのみＳ３８７において変数Ｓの符号を反転し、今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
【０２３９】
Ｓ３９０では、パラメータＭｏｄｅの設定値が３、すなわちＦｒｅｑ  Ｏｆｆｓｅｔモードに設定されているか否かを判別し、Ｆｒｅｑ  Ｏｆｆｓｅｔモードに設定されている場合には前述したテンポラリメモリに格納されているブロックＰＩＣＫ  ＤＩＲＥＣＴＩＯＮ  ＣＴＲＬのパラメータＯｆｆｓｅｔ  Ｖａｌｕｅの設定値を前述した変数Ｆｏｆｆｓｅｔに代入し、今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。一方、パラメータＭｏｄｅの設定値が３でない場合（この場合は設定値が４、すなわちＰｅａｋ  Ｏｆｆｓｅｔモードに設定されている場合のみである）には、前述したテンポラリメモリに格納されているブロックＰＩＣＫ  ＤＩＲＥＣＴＩＯＮ  ＣＴＲＬのパラメータＯｆｆｓｅｔ  Ｖａｌｕｅの設定値と前述した変数Ｐとを加算して変数Ｐに改めて代入し、今回のピッチ制御処理を終了してＶＣＦ制御処理へ戻る。
【０２４０】
以上までの処理がピッキング制御処理である。
次にＣＰＵ５１で実行するタイマ割り込み処理について説明する。本実施の形態では、今までに説明した各処理で経過時間の計測のために用いているいくつかの変数をタイマ割り込みによって一定時間毎に値を増加させるようにしている。
【０２４１】
一定時間を計時するタイマはＣＰＵ５１の外部にタイマ装置を備える構成とするか、あるいはＣＰＵ５１の動作クロックの一定数回のカウント毎にタイマ割り込みを発生させるなどの方法で実現する。この時間間隔の値の設定は任意であり、間隔の時間が短いほど細かい時間の計測が可能ではあるが、タイマ割り込み処理の実行時には他の処理の実行が停止してしまうので、両者のバランスを考えて時間間隔の値を設定する。
【０２４２】
図３３はタイマ割り込み処理の処理内容を示すフローチャートである。
まず、Ｓ４０１では、変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆが１に設定されているか否かを調べ、１に設定されている場合にのみ、Ｓ４０２において変数ＡＴＴＡＣＫ＿ＴＩＭＥＲの値を１だけ増加させる。
【０２４３】
以降、Ｓ４０３からＳ４１２にかけての処理により、変数ＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆと変数ＤＥＣＡＹ＿ＴＩＭＥＲとの組、変数ＡＤＤＲ＿ＣＯＵＮＴ＿Ｆと変数ＡＤＤＲ＿ＣＯＵＮＴとの組、変数ＬＦＯ＿ＴＩＭＥＲ＿Ｆと変数ＬＦＯ＿ＴＩＭＥＲとの組、変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲ＿Ｆと変数ＥＧＤＥＣＡＹ＿ＴＩＭＥＲとの組、変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆと変数ＥＧＡＴＴＡＣＫ＿ＴＩＭＥＲとの組、のそれぞれについて上述した変数ＡＴＴＡＣＫ＿ＴＩＭＥＲ＿Ｆと変数ＡＴＴＡＣＫ＿ＴＩＭＥＲとの組に対して行われたものと同様の処理が施され、タイマ割り込み処理が終了する。
【０２４４】
以上までに説明した各処理をＣＰＵ５１が実行することにより、本装置が本発明に係る各種機能を実現する。
なお、本実施の形態においては、図２に示したエンベロープ検出部２０、ピッチ−電圧変換部３０、ピークホールド部（４０ａ、４０ｂ）をアナログ回路の構成により実現し、各部の出力するアナログ電圧をＡＤコンバータ５５でＡＤ変換したデータをＣＰＵ５１が各種制御に用いるように構成したが、入力された楽音信号をまずＡＤ変換してデジタル信号データとしてＣＰＵ５１が取り込むようにし、前述した各部が行なっている処理を全てＣＰＵ５１によりデジタル処理するように構成することも可能である。
【０２４５】
また、ＣＰＵ５１が行なうこれらの処理をコンピュータに実行させる音響効果付加プログラムを作成してコンピュータ読み取り可能な記憶媒体に記憶させ、そのプログラムを記憶媒体からコンピュータに読み出させて実行させることにより、コンピュータに本装置の有する機能を行なわせることも可能である。図３４に音響効果付加プログラムを記憶するコンピュータ読み取り可能な記憶媒体の例を示す。同図に示すように、記憶媒体としては、例えば、コンピュータ８１に内蔵若しくは外付けの付属装置として備えられるＲＯＭやハードディスク装置などの記憶装置８２、フロッピーディスク、ＭＯ（光磁気ディスク）、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどといった携帯可能な記憶媒体８３、あるいは、コンピュータ８１とネットワーク８４を介して接続されるコンピュータであるプログラムサーバ８５に付属する記憶装置８６、等が利用できる。
【０２４６】
【発明の効果】
以上詳細に説明したように、本発明では、入力された楽音信号のエンベロープを解析してアタック区間及びディケイ区間を検出し、検出されたディケイ区間内において予め設定されたディケイレート値に基づいてエンベロープのディケイ部分を生成し、検出されたアタック区間では抽出されたエンベロープのアタック部分の変化に応答して前記フィルタの周波数特性を変化させるとともに、ディケイ区間においては、生成されたエンベロープのディケイ部分の変化に応答して前記フィルタの周波数特性を変化させるので、楽器音の楽音信号のアタック部分には従来の音響効果装置と同様の音響的効果が付加されることに加え、ディケイ部分では減衰特性が音高により異なっている楽器の楽器音に付加される音響的効果の音高の違いによるばらつきを少なくすることができる。
【図面の簡単な説明】
【図１】本発明の原理構成を示す図である。
【図２】本発明を実施するオートワウの内部構成を示す図である。
【図３】エンベロープ検出部の構成を示す図である。
【図４】エンベロープ波形を分割する手法を説明する図である。
【図５】ピッチ−電圧変換部の構成を示す図である。
【図６】ピッキングの方向とピックアップの出力波形との関係を示す図である。
【図７】ピークホールド部の詳細構成を示す図である。
【図８】ＣＰＵによるピークホールド回路の制御を説明する図である。
【図９】オートワウの表面パネルの概要を示す図である。
【図１０】使用者によって設定される本装置の動作制御パラメータの一覧を示す図である。
【図１１】ＦＩＬＴＥＲのパラメータを説明する図である。
【図１２】ＬＦＯのパラメータを説明する図である。
【図１３】ＥＧのパラメータを説明する図である。
【図１４】パラメータＦｒｅｑ  Ｓｃａｌｉｎｇを説明する図である。
【図１５】本実施の形態のオートワウの制御プログラムの実行によりＣＰＵが行なう処理の処理内容を示すフローチャートである。
【図１６】エディットモード処理の処理内容を示すフローチャートである。
【図１７】パラメータ選択処理の処理内容を示すフローチャートである。
【図１８】パラメータ値変更処理の処理内容を示すフローチャートである。
【図１９】プレイモード処理の処理内容を示すフローチャートである。
【図２０】入力信号解析処理の処理内容を示すフローチャートである。
【図２１】入力信号データ取得処理の処理内容を示すフローチャートである。
【図２２】エンベロープ解析処理の処理内容を示すフローチャートである。
【図２３】アタック区間内解析処理の処理内容を示すフローチャートである。
【図２４】ディケイ区間内解析処理の処理内容を示すフローチャートである。
【図２５】ピッチ検出処理の処理内容を示すフローチャートである。
【図２６】ピッキング方向検出処理の処理内容を示すフローチャートである。
【図２７】ＶＣＦ制御処理の処理内容を示すフローチャートである。
【図２８】ＬＦＯ処理の処理内容を示すフローチャートである。
【図２９】ＥＧ処理の処理内容を示すフローチャート（その１）である。
【図３０】ＥＧ処理の処理内容を示すフローチャート（その２）である。
【図３１】ピッチ制御処理の処理内容を示すフローチャートである。
【図３２】ピッキング制御処理の処理内容を示すフローチャートである。
【図３３】タイマ割り込み処理の処理内容を示すフローチャートである。
【図３４】音響効果付加プログラムを記憶する記憶媒体の例を示す図である。
【符号の説明】
１  音響効果装置
２  フィルタ
３ａ  ディケイ特性制御手段
３ｂ  ピッチ検出手段
３ｃ  撥弦方向検出手段
４  周波数特性変化手段
【図１】
0004066554.tif 000002
【図２】
0004066554.tif 000003
【図３】
0004066554.tif 000004
【図４】
0004066554.tif 000005
【図５】
0004066554.tif 000006
【図６】
0004066554.tif 000007
【図７】
0004066554.tif 000008
【図８】
0004066554.tif 000009
【図９】
0004066554.tif 000010
【図１０】
0004066554.tif 000011
【図１１】
0004066554.tif 000012
【図１２】
0004066554.tif 000013
【図１３】
0004066554.tif 000014
【図１４】
0004066554.tif 000015
【図１５】
0004066554.tif 000016
【図１６】
0004066554.tif 000017
【図１７】
0004066554.tif 000018
【図１８】
0004066554.tif 000019
【図１９】
0004066554.tif 000020
【図２０】
0004066554.tif 000021
【図２１】
0004066554.tif 000022
【図２２】
0004066554.tif 000023
【図２３】
0004066554.tif 000024
【図２４】
0004066554.tif 000025
【図２５】
0004066554.tif 000026
【図２６】
0004066554.tif 000027
【図２７】
0004066554.tif 000028
【図２８】
0004066554.tif 000029
【図２９】
0004066554.tif 000030
【図３０】
0004066554.tif 000031
【図３１】
0004066554.tif 000032
【図３３】
0004066554.tif 000033
【図３４】
0004066554.tif 000034
【図３２】
0004066554.tif 000035