(57)【要約】  【課題】弦が素早く連続して弾かれても精度良くトリガを検出することのできる電子弦楽器を提供すること。  【解決手段】時刻ｔ６において形成される負のピークｍＰ３と次に時刻ｔ７において形成される正のピークｐＰ４とを結ぶ直線を斜辺とする直角三角形の直角を挟む２辺の比は、それまでの直角三角形の直角を挟む２辺の比に比べ、大きく変化している。以下の実施例では、これらの直角三角形の直角を挟む２辺の比を順次比較することによりリトリガを検出する。  【選択図】    図４
2005195917.tif 000002
【特許請求の範囲】
【請求項１】
弦振動を入力する入力手段と、
その入力手段に入力された弦振動のピッチを所定時間毎に検出するピッチ検出手段と、
その弦振動のエンベロープレベルを検出するレベル検出手段と、
前記ピッチ検出手段が検出したピッチと前記レベル検出手段が検出したエンベロープレベルとに基づき楽音の発音開始を指示する発音開始指示手段と、
前記入力手段に入力された弦振動の波形パターンを抽出する波形パターン抽出手段と、
その波形パターン抽出手段が、前回抽出した波形パターンと今回抽出した波形パターンとを比較し、波形パターンの変化に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御する制御手段とを備えていることを特徴とする電子弦楽器。
【請求項２】
前記制御手段は、前記波形パターン抽出手段が抽出した波形パターンの変化率に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御するものであることを特徴とする請求項１記載の電子弦楽器。
【請求項３】
前記制御手段は、前記波形パターン抽出手段が抽出した波形パターンの変化率が所定値より大きい場合に楽音の発音開始を指示するように前記発音開始指示手段を制御するものであることを特徴とする請求項２記載の電子弦楽器。
【請求項４】
前記入力手段に入力された弦振動波形のピーク値を検出するピーク値検出手段と、
そのピーク値検出手段がピーク値を検出したピーク時刻を検出するピーク時刻検出手段とを備え、
前記波形パターン抽出手段は、前記ピーク値検出手段により検出されたピーク値と、前記ピーク時刻検出手段により検出されたピーク時刻とに基づき波形パターンを特定するものであることを特徴とする請求項１から３のいずれかに記載の電子弦楽器。
【請求項５】
前記波形パターン抽出手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比に基づき波形パターンを特定するものであることを特徴とする請求項４記載の電子弦楽器。
【請求項６】
前記制御手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比の変化率に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御するものであることを特徴とする請求項５記載の電子弦楽器。
【請求項７】
前記制御手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比の変化率が所定値より大きい場合に楽音の発音開始を指示するように前記発音開始指示手段を制御するものであることを特徴とする請求項５又は６記載の電子弦楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子弦楽器に関し、特に弦振動のピッチとエンベロープレベルとを検出し、そのピッチとエンベロープレベルとに応じた新たな楽音を形成するよう制御する電子弦楽器に関する。
【背景技術】
【０００２】
特開平２０００−１０５５８９号公報（特許文献１）には、特にベースシンセサイザにおける弦振動をピックアップにより検出し、波形のピークを検出するとその値（リジェクトレベル）を所定の時定数により減少させ、そのピークを検出してから検出されたピッチに対応する周期より長い期間の間に検出された最大のピーク値を次のリジェクトレベルとすることにより、小さなピークのトリガでも精度良く検出できる電子弦楽器が開示されている。
【特許文献１】特開平２０００−１０５５８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載されている電子弦楽器においては、弦を素早く連続して弾いた場合には、ピーク値はあまり変動しないので、トリガとして検出されないことがあるという問題点があった。
【０００４】
本発明は、上述した問題点を解決するためになされたものであり、弦が素早く連続して弾かれても確実にトリガを検出することのできる電子弦楽器を提供することを目的としている。なお、弦が振動している時に、すなわち振動が停止する前に再度弦が弾かれることをリトリガと称する。
【課題を解決するための手段】
【０００５】
この目的を達成するために、請求項１記載の電子弦楽器は、弦振動を入力する入力手段と、その入力手段に入力された弦振動のピッチを所定時間毎に検出するピッチ検出手段と、その弦振動のエンベロープレベルを検出するレベル検出手段と、前記ピッチ検出手段が検出したピッチと前記レベル検出手段が検出したエンベロープレベルとに基づき楽音の発音開始を指示する発音開始指示手段と、前記入力手段に入力された弦振動の波形パターンを抽出する波形パターン抽出手段と、その波形パターン抽出手段が、前回抽出した波形パターンと今回抽出した波形パターンとを比較し、波形パターンの変化に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御する制御手段とを備えている。
【０００６】
請求項１記載の電子弦楽器によれば、弦振動の波形パターンを抽出し、その波形パターンの変化に基づき楽音の発音開始を指示する制御手段を備えている。
【０００７】
請求項２記載の電子弦楽器は、請求項１記載の電子弦楽器において、前記制御手段は、前記波形パターン抽出手段が抽出した波形パターンの変化率に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御するものである。
【０００８】
請求項３記載の電子弦楽器は、請求項２記載の電子弦楽器において、前記制御手段は、前記波形パターン抽出手段が抽出した波形パターンの変化率が所定値より大きい場合に楽音の発音開始を指示するように前記発音開始指示手段を制御するものである。
【０００９】
請求項４記載の電子弦楽器は、請求項１から３のいずれかに記載の電子弦楽器において、前記入力手段に入力された弦振動波形のピーク値を検出するピーク値検出手段と、そのピーク値検出手段がピーク値を検出したピーク時刻を検出するピーク時刻検出手段とを備え、前記波形パターン抽出手段は、前記ピーク値検出手段により検出されたピーク値と、前記ピーク時刻検出手段により検出されたピーク時刻とに基づき波形パターンを特定するものである。
【００１０】
請求項５記載の電子弦楽器は、請求項４記載の電子弦楽器において、前記波形パターン抽出手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比に基づき波形パターンを特定するものである。
【００１１】
請求項６記載の電子弦楽器は、請求項５記載の電子弦楽器において、前記制御手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比の変化率に基づき楽音の発音開始を指示するように前記発音開始指示手段を制御するものである。
【００１２】
請求項７記載の電子弦楽器は、請求項５又は６記載の電子弦楽器において、前記制御手段は、前記ピーク値検出手段により検出された今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比の変化率が所定値より大きい場合に楽音の発音開始を指示するように前記発音開始指示手段を制御するものである。
【発明の効果】
【００１３】
請求項１記載の電子弦楽器によれば、弦振動の波形パターンを抽出し、その波形パターンの変化に基づいて楽音の発音開始を指示するので、連続して弦が弾かれ、エンベロープレベルや、波形のピーク値や、そのピーク値が発生した時間間隔があまり変動しない場合であっても、リトリガされたことを精度良く検出することができるという効果がある。
【００１４】
請求項２および３記載の電子弦楽器によれば、請求項１記載の電子弦楽器の奏する効果に加え、波形パターンの変化率に基づき楽音の発音開始を指示するので、簡単な演算で、精度良くリトリガされたことを検出することができるという効果がある。
【００１５】
請求項４記載の電子弦楽器によれば、請求項１から３のいずれかに記載の電子弦楽器の奏する効果に加え、波形パターンは、弦振動波形のピーク値と、そのピーク値を検出したピーク時刻とに基づいて特定されるので、簡単な検出手段により得られたパラメータにより波形パターンを特定することができるという効果がある。
【００１６】
請求項５記載の電子弦楽器によれば、請求項４記載の電子弦楽器の奏する効果に加え、波形パターンは、今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比に基づいて特定されるので、簡単な演算で波形パターンを特定することができるという効果がある。
【００１７】
請求項６および７記載の電子弦楽器によれば、請求項５記載の電子弦楽器の奏する効果に加え、今回のピーク値と前回のピーク値との差に対応する数値と、前記ピーク時刻検出手段により検出された今回のピーク時刻と前回のピーク時刻との時間に対応する数値との比の変化率に基づいて波形パターンが変化したか否かを判断するので、簡単な演算で波形パターンの変化を検出することができるという効果がある。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の好ましい実施例について、添付図面を参照して説明する。図１は、本発明の電子弦楽器１の構成を示すブロック図である。
【００１９】
図１に示すように、ピックアップ４によって検出された弦の振動は、アンチエイリアス用のローパスフィルタ（ＬＰＦ）６を介してＡ／Ｄ変換器（Ａ／Ｄ）８に供給される。Ａ／Ｄ変換器は、所定のサンプリング周期（例えば３２ＫＨｚ）で弦振動をデジタル化し、デジタル弦信号としてＤＳＰ１０に供給する。なお、図１には、ピックアップ４と、ＬＰＦ６と、Ａ／Ｄ変換器８とを示したが、実際には、これらは電子弦楽器１の全ての弦にそれぞれ設けられ、デジタル化された各弦の信号がそれぞれＤＳＰ１０に供給される。ＤＳＰ１０は、各弦について、ピッチおよびエンベロープレベルを検出し、これらの検出値をＣＰＵ５０に供給する。
【００２０】
ＣＰＵ５０は、これらの検出値を入力し、所定の処理を行って、ＭＩＤＩインタ−フェイス５８を介して、ノートオン、ノートオフ、ベンドなどのＭＩＤＩメッセージを出力する。これらのＭＩＤＩメッセージは、図示しない音源に入力され、音源は、これらのメッセージに対応する楽音を発生する。また、ＣＰＵ５０は、内部にタイマを保有し、時刻を計時している。
【００２１】
ＲＯＭ５２は、このＣＰＵ５０が実行するプログラムや、検出されたピッチと音階との対応関係を示すテーブルや固定値などを記憶するものである。ＲＡＭ５４は、ＣＰＵ５０がプログラムを実行する際に使用するワークエリアとして使用される読み書きのできるメモリであり、後述する各種フラグが記憶されたり、リングバッファとして使用される。
【００２２】
操作子５６は、演奏者が各種パラメータを設定するもので、音量を設定するボリュームや、音色を選択するスイッチなどが備えられ、ＣＰＵ５０がこれらの操作子の設定状態を読み込んで音源に送るＭＩＤＩメッセージのパラメータを制御する。
【００２３】
以下の説明では、一つの弦から得られるデジタル弦信号について説明するが、他の弦についてはそれぞれ独立して同じ処理が行われるものである。
【００２４】
図２は、ＤＳＰ１０の処理機能を説明するもので、図３に示すＤＳＰ１０の各部の波形と対比しながら説明する。Ａ／Ｄ変換器８から供給されたデジタル弦信号は、乗算器１１，１２，１３，１４，１５と、１サンプル遅延回路１６，１７，１８，１９と、加算器２０とによって構成されるローパスフィルタ２１に供給される。このローパスフィルタ２１は、デジタル弦信号を波形成形するために設けられている。このローパスフィルタ２１の出力信号は、正のピーク検出手段２２と、負のピーク検出手段２４とに供給される。正のピーク検出手段２２は、加算器２６を有し、この加算器２６の減算入力端子にローパスフィルタ２１の出力信号が供給されている。この加算器２６の出力信号には、乗算器２８によって係数Ｋが乗算される。この係数（０＜Ｋ＜１）は、制御部３０から供給される。制御部３０は、加算器２６の出力信号が負のとき、大きな値のＫ（例えば、０．９９）を乗算器２８に供給し、加算器２６の出力信号が正のとき、小さな値のＫ（例えば、０．０１）を乗算器２８に供給する。
【００２５】
この乗算器２８の出力信号は、加算器３２の減算入力端子に供給され、この加算器３２の出力信号は、１サンプル遅延回路３４（遅延回路３４）に供給され、この遅延回路３４の出力信号は、加算器３２の加算入力端子に供給されている。また、この遅延回路３４の出力信号は、加算器２６の加算入力端子にも供給されている。従って、これら加算器２６，３２と、乗算器２８と、遅延回路３４とは、回帰型デジタルフィルタを構成している。
【００２６】
ピーク検出手段２２において、Ｋの値が０に近ければ、加算器２６の出力は、入力値と今までの積分値（現サンプルまでの積分値）との差に近い値となり、Ｋの値が１に近ければ、加算器２６の出力は、入力値とその１サンプル前の値との差に近い値になる。
【００２７】
ここで、仮に、図３Ａに示すような正弦波信号がローパスフィルタ２１から加算器２６に入力された場合、当初には遅延回路３４の出力は零であるので、加算器２６の出力は、零から入力正弦波を減算した値となり、これは、図３Ｂに示すように負となる。従って、Ｋの値は大きく、例えば１に近い値となる。そのため、積分回路の積分作用が小さくなり、図３Ｃに示すように、正弦波の値が大きくなるに従って、加算器３２の出力も大きくなる。この加算器３２の出力を遅延回路３４で１サンプル遅延させた信号から入力正弦波を減算した加算器２６の出力は、入力正弦波が正のピークに到達するまでは負の値を維持する。
【００２８】
入力正弦波が正のピークに到達し、以後、入力正弦波の値が小さくなると、加算器２６の出力信号が負から正に変化し、Ｋの値は０に近い値となる。これによって積分回路の積分作用が大きくなり、加算器３２の出力信号は、図３Ｂに示すように、入力正弦波の正のピーク値までを積分した値から徐々に値が小さくなっていく。これは、Ｋの値が完全に１ではないからである。この間、加算器３２の出力の遅延回路３４による遅延出力（正の値）から、入力正弦波（正のピークから値が減少しつつある）を加算器２６によって減算するので、加算器２６の出力は正の値を維持している。
【００２９】
そして、入力正弦波が負のピークを越えて、増加に転じると、加算器２６の出力も正の値であるが、減少を始め、入力正弦波が負から正に変わった頃に、加算器２６の出力は負の値となる。これによって、Ｋの値は１に近い値となり、積分回路の積分機能は小さくなり、加算器３２の出力は入力正弦波に追従して値が大きくなる。この間、加算器２６の出力は負の値を維持し、入力正弦波が正のピークに到達すると、加算器２６の出力は負から正に変化する。
【００３０】
以下、同様にして動作するので、入力正弦波の正のピークが、加算器２６の出力の負から正への変化点（零クロス点）に対応する。
【００３１】
また、ピーク検出手段２４は、ピーク検出手段２２とほぼ同様に構成されている。同等部分には、同一符号の末尾にａの符号を付して、その説明を省略する。但し、ピーク検出手段２２では、加算器２６の減算入力端子にデジタル弦信号を、加算端子に遅延回路３４の出力信号が供給されていたのに対し、ピーク検出手段２４では、加算器２６ａの２つの加算入力端子に遅延回路３４ａの出力信号及びデジタル弦信号が供給されている点で異なる。これは、ローパスフィルタ２１の出力信号の負のピークを検出するためである。
【００３２】
なお、参考のため、図３Ｄに加算器２６ａの出力を、図３Ｅに加算器３２ａの出力を示す。図３Ｄ及び図３Ｅからも、加算器２６ａの出力が負から正に変化する変化点（零クロス点）が、入力信号のピークに対応することが判る。
【００３３】
これらのピーク検出手段２２，２４の出力信号は、ピッチ測定手段３６に供給される。ピッチ測定手段３６は、零クロス検出手段３８，４０（ゼロクロス３８，４０）を有し、零クロス検出手段３８は、ピーク検出手段２２からの出力信号を受け、これが負から正に変化する零クロスのとき、出力信号を発生する。同様に、零クロス検出手段４０は、ピーク検出手段２４からの出力信号を受け、これが負から正に変化する零クロスのとき、出力信号を発生する。
【００３４】
零クロス検出手段３８の出力信号は、ＳＲフリップ・フロップ４２のＲ入力端子に供給され、零クロス検出手段４０の出力信号は、ＳＲフリップ・フロップ４２のＳ入力端子に供給されている。従って、このＳＲフリップ・フロップ４２のＱ出力端子は、図３Ｆに示すように、ローパスフィルタ２１の出力信号の負のピークから正のピークへ向かうまでの間、出力信号を発生する。
【００３５】
このＳＲフリップ・フロップ４２の出力信号は、カウント手段４３（カウンタ４３）に供給される。カウント手段４３は、ＳＲフリップ・フロップ４２のＱ出力端子のハイの期間およびローの期間のサンプル数をカウントする。このカウント値によって弦の振動のピッチを検出することができる。但し、サンプル数は、サンプリング周波数による分解能しか持たないため、ピッチ検出の精度が不足する場合がある。そのような場合には、上記したような零クロス検出において、サンプル間の補間をし、サンプル数の少数部分として拡張すればよい。このようにして検出されたピッチは、ＰＩＴＣＨ出力からバスを介してＣＰＵ５０に供給され、ＳＲフリップ・フロップ４２の出力信号Ｆは、ＣＰＵ５０に対する割り込み信号ＩＮＴとして供給される。
【００３６】
一方、Ａ／Ｄ変換器８から供給されたデジタル弦信号は、エンベロープフォロア４６に入力され、エンベロープレベルが検出される。このエンベロープフォロア４６は、供給されたデジタル弦信号を整流し、さらに積分するものであって、検出されたエンベロープレベルは、ＥＮＶ出力からバスを介してＣＰＵ５０に供給される。
【００３７】
次に、図４を参照して、本発明の概略を説明する。図４は、横軸を時間、縦軸を振幅値としてギターがリトリガされた場合の弦振動の様子を表すもので、波形パターンが変化する様子が模擬的に示されている。同図において、波形の振幅値は、時刻ｔ１に正のピーク値ｐＰ１を、時刻ｔ２に負のピーク値ｍＰ１、時刻ｔ３に正のピーク値ｐＰ２を、時刻ｔ４に負のピーク値ｍＰ２を、時刻ｔ５には正のピーク値ｐＰ３，時刻ｔ６に負のピーク値ｍＰ３を、時刻ｔ７に正のピーク値ｐＰ４を、時刻ｔ８に負のピークｍＰ４を形成している。この図では、時刻ｔ６の直後にリトリガされた場合を示しており、時刻ｔ６とｔ７の間隔が少しそれまでの間隔より狭くなり、ピーク値ｐＰ４もそれまでの正のピーク値であるｐＰ１、ｐＰ２およびｐＰ３より少し大きくなっている。
【００３８】
このように、連続して弦が弾かれた場合は、ピーク値やピークが発生した時刻の間隔からは、リトリガされたことを判別するのは難しい。本発明は、波形パターンがリトリガにより変化することに着目し、波形パターンを抽出して、その波形パターンの変化が著しい場合は、リトリガされたものと判断する。この実施例では、その波形パターンを特定する値として、この図に示すように、ピーク値とピーク時刻が形成する直角三角形に着目する。正のピーク値ｐＰ１と負のピーク値ｍＰ１とを結ぶ直線を斜辺とする直角三角形に着目すると、この直角三角形の直角を挟む２辺は、ｔ２−ｔ１とｐＰ１−ｍＰ１で表される。また、負のピーク値ｍＰ１と正のピーク値ｐＰ２とを結ぶ直線を斜辺とする直角三角形では、直角を挟む２辺は、ｔ３−ｔ２とｐＰ２−ｍＰ１で表される。
【００３９】
時刻ｔ６において形成される負のピークｍＰ３と次に時刻ｔ７において形成される正のピークｐＰ４とを結ぶ直線を斜辺とする直角三角形の直角を挟む２辺の比は、それまでの直角三角形の直角を挟む２辺の比に比べ、大きく変化している。以下の実施例では、この直角三角形の直角を挟む２辺の比を順次比較することによりリトリガを検出する。比を比較する方法としては、今回得られた比と前回得られた比との差の変化を検出する。この今回得られた比と前回得られた比との差の変化は、前回得られた差と今回得られた差の差分により演算で求められ、この値が直角を挟む２辺の比の変化率であり、この変化率が所定の閾値より大きい場合に、リトリガされたものと判断する。
【００４０】
以下、ＣＰＵ５０が実行する処理について、フローチャートを参照して説明する。図５は、ＤＳＰ１０のＳＲフリップ・フロップ４２の出力信号により起動される割り込みルーチンを表すフローチャートである。この電子弦楽器の電源が投入されることにより起動されるメインルーチンは、図示しないが、メインルーチンでは、操作子５６により設定されたパラメータを読み込んだり、ここで説明する割り込みルーチンを受け付けるように設定するなどの処理を行う。このメインルーチンは、本発明の要旨ではないので、その説明を省略するが、電源が投入された時、フラグＧＡＴＥ、ＲＩＴ，NoteStateは、すべて０に設定される。
【００４１】
フラグＧＡＴＥは、エンベロープレベルが急激に大きくなったとき１に設定され、エンベロープレベルが、所定の値より小さくなった時０に設定されるフラグである。また、フラグＲＩＴは、リトリガされた場合に１に設定され、リトリガと判断された後、ピッチが確定された場合またはピッチが確定せずにエンベロープレベルが小さくなった場合に０に設定されるフラグである。また、フラグNoteStateは、ノートオンを送信した場合に１に設定され、ノートオフを送信した場合に０に設定されるフラグである。
【００４２】
この割り込み処理では、まず、エンベロープフォロア４６が供給するエンベロープレベルと、この割り込みが入った時刻とを対にしてリングバッファに記憶する（Ｓ２）。割り込みが入った時刻は、ＣＰＵ２２が保有するタイマから取得される。なお、このリングバッファは、検出されたエンベロープレベルと時刻の対を数十組記憶するものであり、ＲＡＭ５４の内部に記憶領域が設定されている。
【００４３】
次にフラグであるＧＡＴＥが１に設定されているか否かを判断する（Ｓ４）。フラグＧＡＴＥが１ではない場合（Ｓ４：Ｎｏ）は、リングバッファを調べ、エンベロープレベルが急激に大きくなったかを否かを判断する（Ｓ６）。エンベロープレベルが急激に大きくなったと判断した場合（Ｓ６：Ｙｅｓ）は、フラグＧＡＴＥを１に設定し（Ｓ８）、ピッチが確定したか否かを判断する（Ｓ１０）。このピッチが確定したか否かを判断する処理は、カウント手段４３がカウントした値が、安定した値を供給するようになったか否かを判断するものであるが、本発明の要旨ではないので、詳細な説明は省略する。
【００４４】
ピッチが確定したと判断した場合（１０：Ｙｅｓ）は、フラグであるNoteStateを１に設定し（Ｓ１２）、その確定したピッチに対応する音階（ノートナンバー）と、エンベロープレベルに対応するベロシティ値を取得し、これらのパラメータを含むノートオンメッセージをＭＩＤＩインターフェイス５８から出力する（Ｓ１４）。確定したピッチに対応する音階は、ＲＯＭ５２に記憶されているピッチと音階の関係を表すテーブルから読出すことにより取得される。また、ピッチが確定した時は、すでにエンベロープレベルが最大値をとっていることがあるので、ベロシティ値は、リングバッファに記憶されているエンベロープレベル値のうち最大値に基づいて決定される。なお、Ｓ６の処理で、エンベロープレベルが急激に大きくなったと判断しなかった場合（Ｓ６：Ｎｏ）とＳ１０の処理でピッチが確定されなかったと判断した場合（Ｓ１０：Ｎｏ）は、このルーチンを終了する。
【００４５】
Ｓ４の処理で、フラグＧＡＴＥが１に設定されていると判断した場合（Ｓ４：Ｙｅｓ）は、フラグＲＩＴが１に設定されているか否かを判断する（Ｓ２０）。フラグＲＩＴが１に設定されていないと判断した場合（Ｓ２０：Ｎｏ）は、リトリガされたか否かを判断する（Ｓ２２）。この判断処理については、図６を参照して後述する。リトリガされたと判断した場合（Ｓ２２：Ｙｅｓ）は、フラグＲＩＴを１に設定する（Ｓ２４）。Ｓ２４の処理の次、およびＳ２０の処理でフラグＲＩＴが１であると判断した場合（Ｓ２０：Ｙｅｓ）は、リングバッファを調べ、今回検出されたエンベロープレベルが所定の閾値より小さくなったか、またはエンベロープレベルは閾値より大きくても減衰が急であるか否かを判断する（Ｓ２６）。この判断処理で、エンベロープレベルが所定の閾値より小さい、またはエンベロープレベルは閾値より大きくても減衰が急であると判断した場合（Ｓ２６：Ｙｅｓ）は、フラグＲＩＴを「０」に設定し（Ｓ２７）、Ｓ５４の処理へ進む。
【００４６】
Ｓ２６の処理でエンベロープレベルが所定の閾値より大きく、且つ減衰が急ではないと判断した場合（Ｓ２６：Ｎｏ）は、Ｓ１０の処理と同様にピッチが確定したか否かを判断する（Ｓ２８）。ピッチが確定していないと判断した場合（Ｓ２６：Ｎｏ）は、このルーチンを終了し、ピッチが確定したと判断した場合（Ｓ２８：Ｙｅｓ）は、先に送信したノートオンのノートナンバーと同じノートナンバーのノートオフを送信し（Ｓ３０）、今回確定されたピッチに対応するノートナンバーのノートオンを送信した後（Ｓ３２）、フラグＲＩＴを０に設定して（Ｓ３４）このルーチンを終了する。
【００４７】
Ｓ２２の処理で、リトリガされたと判断しなかった場合（Ｓ２２：Ｎｏ）は、リングバッファを調べ、エンベロープレベルが所定の閾値より小さくなったか、またはエンベロープレベルは閾値より大きくても減衰が急であるか否かを判断する（Ｓ４０）。
【００４８】
この判断処理で、エンベロープレベルが閾値より大きく、且つ減衰が急ではないと判断した場合（Ｓ４０：Ｎｏ）は、Ｓ１０と同様にピッチが確定したか否かを判断する（Ｓ４２）。ピッチが確定していないと判断した場合（Ｓ４２：Ｎｏ）は、このルーチンからリターンし、ピッチが確定したと判断した場合（Ｓ４２：Ｙｅｓ）は、フラグNoteStateが１か否かを判断する（Ｓ４４）。このフラグNoteStateが１であると判断した場合（Ｓ４４：Ｙｅｓ）は、確定されたピッチが前回確定されたピッチから変化しているか否かを判断し（Ｓ４６）、変化したと判断した場合（Ｓ４６：Ｙｅｓ）は、変化したピッチに対応するベンド情報を送信し（Ｓ４８）、変化していないと判断した場合（Ｓ４６：Ｎｏ）は、このルーチンを終了する。
【００４９】
ここで、ベンド情報とは、先に送信したノートオン情報に含まれるノートナンバーが示す音階のピッチとの差を表す情報であり、音源は、この情報を受信すると、発生している楽音のピッチをこの情報が示すピッチに変化させるように構成されている。
【００５０】
一方、Ｓ４４の判断処理でフラグNoteStateが１でないと判断した場合（Ｓ４４：Ｎｏ）は、フラグNoteStateを１に設定し（Ｓ５０）、確定されたピッチに対応するノートナンバーのノートオンを送信し（Ｓ５２）このルーチンを終了する。
【００５１】
Ｓ４０の判断処理で、エンベロープレベルが所定の閾値より小さくなった場合、またはエンベロープレベルは閾値より大きくても減衰が急であると判断した場合（Ｓ４０：Ｙｅｓ）は、フラグＧＡＴＥを０に設定し（Ｓ５４）、次に、フラグNoteStateが１か否かを判断する（Ｓ５６）。このフラグNoteStateが１である場合（Ｓ５６：Ｙｅｓ）は、フラグNoteStateを０に設定し（Ｓ５８）、先に送信したノートオンのノートナンバーと同じノートナンバーのノートオフを送信し（Ｓ６０）、このルーチンを終了する。このことにより、このノートオフを受信した音源は、発音を停止する。
【００５２】
Ｓ５６の判断処理でフラグNoteStateが１ではないと判断した場合（Ｓ５６：Ｎｏ）は、このルーチンを終了する。これは、一度エンベロープレベルが急激に大きくなってフラグＧＡＴＥが１に設定されたが、ピッチが確定されないでエンベロープレベルが小さくなった場合である。
【００５３】
図６は、上記図５に記載のフローチャートのＳ２２の処理であるリトリガされたか否かを判断する処理を詳細に説明するフローチャートである。
【００５４】
まず、今回検出されたピーク値の極性をcurPolに代入する（Ｓ６２）。ピーク値が正の値である場合は、curPolを０に、ピーク値の値が負である場合は、curPolを１に設定する。次に、今回検出されたcurPolが０（正）か否かを判断し（Ｓ６４）、０の場合（Ｓ６４：Ｙｅｓ）は、Ｓ６６の処理へ進み、０でない場合（Ｓ６４：Ｎｏ）はＳ８０の処理へ進む。
【００５５】
Ｓ６６の処理では、前回検出されたピーク値の極性であるprePolが０（正）か否かを判断する。０の場合（Ｓ６６：Ｙｅｓ）は、リトリガされたのではないと判断し、図６に記載のルーチンを終了して図５に記載のルーチンの処理Ｓ４０へ進む。これは、今回検出されたピーク値が正であり、前回検出されたピーク値も正であったので、今回検出されたピーク値を、無視するためである。
【００５６】
Ｓ６６の判断処理において、prePolが０ではない場合（Ｓ６６：Ｎｏ）は、今回検出されたピーク値をpPeakとし（Ｓ６８）、そのピーク値を検出した時刻をpTimeとし（Ｓ６９）、pmPeakとして、pPeakと前回検出された負のピークであるmPeakとの差を演算で求める（Ｓ７０）。なお、mPeakは、後述するＳ８２の処理で、代入されたものである。
【００５７】
同様に、pmTimeは、pTimeから前回検出された負のピークの時刻であるmTimeを引いて求める（Ｓ７１）。なお、mTimeは、後述するＳ８３の処理で代入されたものである。  次にpT[i]として、pmPeakとpmTimeの比を求める（Ｓ７２）。ここで求められた比が、正のピークと負のピークにより形成される直角三角形の直角を挟む２辺の比である。
【００５８】
次に、今回求めたpT[i]と前回求めたpT[i-1]との差をｐSa1[i]とし（Ｓ７３）、更に今回求めたpSa1[i]と前回求めたpSa1[i-1]との差の絶対値をｐSa2とし（Ｓ７４）、変数ｉを「１」進め（Ｓ７５）、curPolをprePolとし（Ｓ７６）pSa2が所定の閾値を越えたか否かを判断する（Ｓ７７）。pSa2が所定の閾値を越えた場合（Ｓ７７：Ｙｅｓ）は、リトリガされたものとして、図５に記載のフローチャートのＳ２４の処理へ進み、pSa2が所定の閾値を越えていない場合（Ｓ７７：Ｎｏ）は、図５に記載のフローチャートのＳ４０の処理へ進む。
【００５９】
一方、Ｓ６４の判断処理でcurPolが０でない場合（Ｓ６４：Ｎｏ）は、前回検出されたピーク値の極性であるprePolが０（正）か否かを判断する（Ｓ８０）。０でない場合（Ｓ８０：Ｎｏ）は、リトリガされたのではないと判断し、図６に記載のルーチンを終了して図５に記載のルーチンの処理Ｓ４０へ進む。これは、今回検出されたピーク値が負であり、前回検出されたピーク値も負であったので、今回検出されたピーク値を、無視するためである。
【００６０】
Ｓ８０の判断処理において、prePolが０ある場合（Ｓ８０：Ｙｅｓ）は、今回検出されたピーク値をmPeakとし（Ｓ８２）、そのピーク値を検出した時刻をmTimeとし（Ｓ８３）、mpPeakとして、-mPeakと前回検出された正のピークであるpPeak との差を演算で求める（Ｓ８４）。なお、pPeakは、Ｓ６８の処理で、代入されたものである。
【００６１】
同様に、mpTimeは、mTimeから前回検出された正のピークの時刻であるpTimeを引いて求める（Ｓ８５）。なお、pTimeは、Ｓ６９の処理で代入されたものである。次にmT[j]として、mpPeakとmpTimeの比を求める（Ｓ８６）。ここで求められた比が、負のピークと正のピークにより形成される直角三角形の直角を挟む２辺の比である。
【００６２】
次に、今回求めたmT[j]と前回求めたmT[j-1]との差をmSa1[j] とし（Ｓ８７）、更に今回求めたmSa1[j]と前回求めたmSa1[j-1]との差の絶対値をmSa2とし（Ｓ８８）、変数ｊを１進め（Ｓ８９）、curPolをprePolとし（Ｓ９０）mSa2が所定の閾値を越えたか否かを判断する（Ｓ９１）。mSa2が所定の閾値を越えた場合（Ｓ９１：Ｙｅｓ）は、リトリガされたものとして、図５に記載のフローチャートのＳ２４の処理へ進み、mSa2が所定の閾値を越えていない場合（Ｓ９１：Ｎｏ）は、図５に記載のフローチャートのＳ４０の処理へ進む。
【００６３】
以上、図５および図６に記載のフローチャートを用いて説明したように、正のピーク値とその時刻およびその時刻の次に発生された負のピーク値とその時刻により形成される直角三角形を順次比較し、同様に、負のピーク値とその時刻およびその時刻の次に発生された正のピーク値とその時刻により形成される直角三角形の直角を挟む２辺の比を順次比較することによりリトリガされたことを検出する方法について説明した。
【００６４】
なお、請求項１記載の発音開始指示手段は、図５に記載のフローチャートのＳ１４およびＳ５３が該当し、波形パターン抽出手段は、図６に記載のフローチャートのＳ７２およびＳ８６が該当し、制御手段は、同図、Ｓ７７およびＳ９１が該当する。また、請求項２および請求項６記載の「変化率」は、図６のフローチャートＳ７４、Ｓ８８で求められるpSa2およびmSa2が該当する。
【００６５】
以上、実施例に基づき本発明を説明したが、本発明は上述した実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
【００６６】
例えば、上記実施例における図６に示すフローチャートのＳ７３またはＳ８７の処理で、今回のピーク値とピーク時間との比から前回のピーク値とピーク時間との比の差を求め、さらにＳ７４またはＳ８８の処理で、今回の求めた差と前回求めた差との差の絶対値を求め、その絶対値が所定の閾値を越えた場合にリトリガと判断しているが、Ｓ７３またはＳ８７の処理で求めた差の絶対値が所定の閾値を越えた場合にリトリガと判断するようにしてもよい。
【図面の簡単な説明】
【００６７】
【図１】本発明の電子弦楽器１の構成を示すブロック図である。
【図２】ＤＳＰの処理機能を説明する図である。
【図３】ＤＳＰにおいて処理された各部の波形を示す図である。
【図４】弦振動のピークとエンベロープレベルの変化を表す図である。
【図５】ＣＰＵの割り込みルーチンを表すフローチャートである。
【図６】図５に示されるフローチャートのリトリガを検出する処理を表すフローチャートである。
【符号の説明】
【００６８】
１                      電子弦楽器
１０                    ＤＳＰ
４４                    カウンタ（ピッチ検出手段）
４６                    エンベロープフォロア（レベル検出手段）
５０                    ＣＰＵ
５２                    ＲＯＭ
５４                    ＲＡＭ
【図１】
2005195917.tif 000003
【図２】
2005195917.tif 000004
【図３】
2005195917.tif 000005
【図４】
2005195917.tif 000006
【図５】
2005195917.tif 000007
【図６】
2005195917.tif 000008