(57)【要約】  【課題】フレットから指が離された場合でも違和感のない音高の楽音を形成する電子弦楽器を提供すること。  【解決手段】今回検出したピッチの値とリングバッファＢに記憶されたピッチの値とを比較し、ピッチが略半音下降したか否かを判断する（Ｓ２４）。比較されるのはリングバッファＢに記憶された所定周期前に検出されたピッチの値である。この判断において、今回検出されたピッチが略半音下降したと判断した場合（Ｓ２４：Ｙｅｓ）は、その所定周期前に検出されたピッチに最も近い音階の音高をＲＯＭ５２に記憶されているピッチと音階との関係を表すテーブルから読出すことによりクオンタイズし、その音高に対応するベンド情報を送信する（Ｓ２６）。次に、ノートオン情報に含まれていたノートと同じノートのノートオフ情報を送信する（Ｓ２８）。  【選択図】    図５
2005189600.tif 000002
【特許請求の範囲】
【請求項１】
弦振動のピッチを所定時間毎に検出するピッチ検出手段と、
その弦振動のエンベロープレベルを検出するレベル検出手段と、
前記ピッチ検出手段が検出したピッチと前記レベル検出手段が検出したエンベロープレベルとに基づいて楽音の発音開始を指示する発音開始指示手段と、  
前記ピッチ検出手段が検出したピッチを順次記憶する記憶手段と、
前記レベル検出手段が検出したエンベロープレベルに基づいて前記発音開始指示手段により発音開始を指示した楽音の発音停止を指示する発音停止指示手段と、
前記発音停止指示手段が、発音停止を指示するとき、前記ピッチ検出手段が検出したピッチが、前記記憶手段に記憶され所定時間前に検出されたピッチより略半音低い場合は、前記記憶手段に記憶され所定時間前に検出されたピッチに基づいて音高を指示する音高指示手段とを備えていることを特徴とする電子弦楽器。
【請求項２】
前記音高指示手段は、所定時間前に検出され前記記憶手段に記憶されたピッチに近い音階の音高を指示するものであることを特徴とする請求項１記載の電子楽器。
【請求項３】
弦振動のピッチを所定時間毎に検出するピッチ検出手段と、
その弦振動のエンベロープレベルを所定時間毎に検出するレベル検出手段と、
前記ピッチ検出手段が前回検出したピッチを記憶するピッチ記憶手段と、
前記レベル検出手段が前回検出したエンベロープレベルを記憶するレベル記憶手段と、
（１）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルが第１の所定値より小さい場合、又は、（２）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルと前記レベル記憶手段に記憶されたエンベロープレベルとの差が第２の所定値より大きい場合は、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行なわず、前記ピッチ検出手段が今回検出したピッチが前記ピッチ記憶手段に記憶されたピッチと異なり、前記（１）および（２）以外の場合には、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行う音高指示手段とを備えていること特徴とする電子弦楽器。
【請求項４】
前記音高指示手段は、今回検出したピッチに対応する音高の指示を行わない場合、それ以降の所定期間は、前記ピッチ検出手段により検出されたピッチが前記今回検出したピッチと略同一の場合には、前記ピッチ検出手段により検出されたピッチに対応する音高の指示を行わないものであることを特徴とする請求項３に記載の電子弦楽器。
【請求項５】
弦振動のピッチを所定時間毎に検出するピッチ検出手段と、
その弦振動のエンベロープレベルを所定時間毎に検出するレベル検出手段と、
前記ピッチ検出手段が前回検出したピッチを記憶するピッチ記憶手段と、
前記レベル検出手段が前回検出したエンベロープレベルを記憶するレベル記憶手段と、
前記ピッチ検出手段が今回検出したピッチが、前記ピッチ記憶手段に記憶されたピッチより所定値以上に上昇した場合は、その時以降に検出されたピッチに応じた音高の音高指示を行い、前記ピッチ検出手段が今回検出したピッチが、前記ピッチ記憶手段に記憶されたピッチより前記所定値以上に上昇したことがない場合であって、
（１）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルが第１の所定値より小さい場合、又は、（２）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルと前記レベル記憶手段に記憶されたエンベロープレベルとの差が第２の所定値より大きい場合は、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行なわず、前記ピッチ検出手段が今回検出したピッチが前記ピッチ記憶手段に記憶されたピッチと異なり、前記（１）および（２）以外の場合には、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行う音高指示手段とを備えていること特徴とする電子弦楽器。
【請求項６】
前記音高指示手段は、今回検出したピッチに対応する音高の指示を行わない期間が所定期間を越えた場合、その時以降は、前記ピッチ検出手段により今回検出されたピッチに対応する音高の指示を行うものであること特徴とする請求項５記載の電子弦楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子弦楽器に関し、特に、弦振動のピッチとエンベロープレベルを検出し、そのピッチとエンベロープレベルに応じた新たな楽音を形成するよう制御する電子弦楽器に関する。
【背景技術】
【０００２】
特開平７−１１０６８７号公報（特許文献１）には、電子弦楽器などにおける弦振動をピックアップにて検出し、ＤＳＰ（Digital Signal Processor）を用いてデジタル的にピッチ検出を行なうピッチ情報検出装置が開示されている。特許文献１に記載されるピッチ情報検出装置を有するギターシンセサイザーのような電子弦楽器では、ピッチ情報検出装置により検出されたピッチ情報と弦振動のエンベロープレベルに基づいて音源が駆動され、それによって新たな楽音の発音が行なわれる。
【特許文献１】特開平７−１１０６８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載されるピッチ情報検出装置を有する電子弦楽器においては、所定の弦をフレット上で押圧して発音しているとき、フレットから指を離すと、弦の振動が停止されるが、その瞬間に少しピッチが下がる。これは、フレットに弦を押しつけていた時は、フレットを端点として弦が振動していたが、フレットから指を離すと弦がフレットから離れた瞬間に、弦に接触している指が振動の端点になるためである。
【０００４】
したがって、上記のような電子弦楽器は、このピッチが下降したことを検出し、音源から発生される楽音のピッチも下げることになる。弦の振動は、フレットから指が離されると急速にエンベロープレベルが小さくなるため、弦の振動のみが楽音として発生されている場合は、多少音程が下がっても問題にならないが、検出されたピッチに応じて発音するギターシンセサイザーの場合は、楽音の停止を指示された後のエンベロープレベルの減衰が緩やかな場合があり、音高が低くなった状態でエンベロープレベルが緩やかに減衰すると所望のピッチとは異なるので違和感があった。特に、和音で演奏しているような場合に指を離すと、各弦それぞれが異なるピッチだけ下降するので、和音の調和が取れないという問題点があった。
【０００５】
本発明は、上述した問題点を解決するためになされたものであり、フレットから指が離された場合でも違和感のない音高の楽音を形成する電子弦楽器を提供することを目的としている。
【課題を解決するための手段】
【０００６】
この目的を達成するために、請求項１記載の電子弦楽器は、弦振動のピッチを所定時間毎に検出するピッチ検出手段と、その弦振動のエンベロープレベルを検出するレベル検出手段と、前記ピッチ検出手段が検出したピッチと前記レベル検出手段が検出したエンベロープレベルとに基づいて楽音の発音開始を指示する発音開始指示手段と、前記ピッチ検出手段が検出したピッチを順次記憶する記憶手段と、前記レベル検出手段が検出したエンベロープレベルに基づいて前記発音開始指示手段により発音開始を指示した楽音の発音停止を指示する発音停止指示手段と、前記発音停止指示手段が、発音停止を指示するとき、前記ピッチ検出手段が検出したピッチが、前記記憶手段に記憶され所定時間前に検出されたピッチより略半音低い場合は、前記記憶手段に記憶され所定時間前に検出されたピッチに基づいて音高を指示する音高指示手段とを備えている。
【０００７】
請求項１記載の電子弦楽器によれば、検出されたエンベロープレベルが所定値以下になり、発音停止を指示する場合に、検出されたピッチが所定時間前に検出されたピッチより略半音低い場合は、所定時間前に検出されたピッチに基づく音高の指示を行うものである。
【０００８】
請求項２記載の電子弦楽器は、請求項１記載の電子弦楽器において、前記音高指示手段は、所定時間前に検出され前記記憶手段に記憶されたピッチに近い音階の音高を指示するものである。
【０００９】
請求項３記載の電子弦楽器は、弦振動のピッチを所定時間毎に検出するピッチ検出手段と、その弦振動のエンベロープレベルを所定時間毎に検出するレベル検出手段と、前記ピッチ検出手段が前回検出したピッチを記憶するピッチ記憶手段と、前記レベル検出手段が前回検出したエンベロープレベルを記憶するレベル記憶手段と、（１）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルが第１の所定値より小さい場合、又は、（２）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルと前記レベル記憶手段に記憶されたエンベロープレベルとの差が第２の所定値より大きい場合は、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行なわず、前記ピッチ検出手段が今回検出したピッチが前記ピッチ記憶手段に記憶されたピッチと異なり、前記（１）および（２）以外の場合には、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行う音高指示手段とを備えている。
【００１０】
請求項３記載の電子弦楽器によれば、今回検出されたピッチが前回検出されたピッチより略半音低く、且つ、今回検出されたエンベロープレベルが所定値より小さい場合、又は今回検出されたピッチが前回検出されたピッチより略半音低く、且つ、エンベロープレベルが急激に減衰した場合は、今回検出されたピッチに対応する音高の指示を行わないものである。
【００１１】
請求項４記載の電子弦楽器は、請求項３記載の電子弦楽器において、前記音高指示手段は、今回検出したピッチに対応する音高の指示を行わない場合、それ以降の所定期間は、前記ピッチ検出手段により検出されたピッチが前記今回検出したピッチと略同一の場合には、前記ピッチ検出手段により検出されたピッチに対応する音高の指示を行わないものである。
【００１２】
請求項５記載の電子弦楽器は、弦振動のピッチを所定時間毎に検出するピッチ検出手段と、その弦振動のエンベロープレベルを所定時間毎に検出するレベル検出手段と、前記ピッチ検出手段が前回検出したピッチを記憶するピッチ記憶手段と、前記レベル検出手段が前回検出したエンベロープレベルを記憶するレベル記憶手段と、前記ピッチ検出手段が今回検出したピッチが、前記ピッチ記憶手段に記憶されたピッチより所定値以上に上昇した場合は、その時以降に検出されたピッチに応じた音高の音高指示を行い、前記ピッチ検出手段が今回検出したピッチが、前記ピッチ記憶手段に記憶されたピッチより前記所定値以上に上昇したことがない場合であって、（１）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルが第１の所定値より小さい場合、又は、（２）前記ピッチ検出手段が今回検出したピッチが、前記記憶手段に記憶されたピッチより略半音低く、且つ、前記レベル検出手段が今回検出したエンベロープレベルと前記レベル記憶手段に記憶されたエンベロープレベルとの差が第２の所定値より大きい場合は、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行なわず、前記ピッチ検出手段が今回検出したピッチが前記ピッチ記憶手段に記憶されたピッチと異なり、前記（１）および（２）以外の場合には、前記ピッチ検出手段が今回検出したピッチに対応する音高の指示を行う音高指示手段とを備えている。
【００１３】
請求項５記載の電子弦楽器によれば、今回検出されたピッチが、前回検出されたピッチより所定値以上上昇した場合は、それ以降はピッチが変化した場合は、変化したピッチに対応する音高の指示を行うが、検出されたピッチが前記所定値以上に上昇したことがない場合には、今回検出されたピッチが前回検出されたピッチより略半音低く、且つ、今回検出されたエンベロープレベルが所定値より小さい場合、又は今回検出されたピッチが前回検出されたピッチより略半音低く、且つ、エンベロープレベルが急激に減衰した場合は、今回検出されたピッチに対応する音高の指示を行わないものである。
【００１４】
請求項６記載の電子弦楽器は、請求項５記載の電子弦楽器において、前記音高指示手段は、今回検出したピッチに対応する音高の指示を行わない期間が所定期間を越えた場合、その時以降は、前記ピッチ検出手段により今回検出されたピッチに対応する音高の指示を行うものである。
【発明の効果】
【００１５】
請求項１記載の電子弦楽器によれば、弦楽器の弦振動のエンベロープレベルが小さくなり発音の停止を指示する場合に、ピッチが略半音下がった場合は、記憶手段に記憶している所定時間前に検出されたピッチに対応する音高を指示するので、弦楽器のフレットから指が離されることにより弦の振動のピッチが下降しても、発生される楽音の音高の下降を防止することができるという効果がある。
【００１６】
請求項２記載の電子弦楽器によれば、請求項１記載の電子弦楽器の奏する効果に加え、指示される音高は、記憶手段に記憶されたピッチに近い音階の音高であるので、音階上の楽音が発生されるという効果がある。特に、和音が演奏された場合のように複数の弦の振動に基づいて複数の楽音が形成されている場合には、和音の調和が維持されるという効果がある。
【００１７】
請求項３記載の電子弦楽器によれば、弦振動のピッチが略半音下降し、エンベロープレベルが所定値以下であるか、エンベロープレベルの減衰が所定値以上である場合は、検出されたピッチに応じた音高の指示を行わないので、弦楽器のフレットから指が離されることにより、検出されたピッチが下降しても、発生される楽音の音高の下降を防止することができるという効果がある。
【００１８】
請求項４記載の電子弦楽器によれば、請求項３記載の電子弦楽器の奏する効果に加え、検出されたピッチが略半音下降した場合に、下降したピッチに対応する音高の指示を行わず、引き続き所定の期間は、検出されたピッチが略同一のピッチであれば、音高の指示を行わないので、フレットから指を離したことにより検出されたピッチが下降した場合に、所定の期間は音高の下降を防止することができるという効果がある。また、所定の期間を、弦の振動がほぼ停止するまでの期間に設定することにより、音源には、フレットから指を離したことによる下降した音高の指示をすることなく楽音の停止を指示できるという効果がある。
【００１９】
請求項５記載の電子弦楽器によれば、検出されたピッチが所定値以上上昇した場合は、それ以降にピッチが下降することがあっても、検出されたピッチに対応する音高の指示を行うので、ビブラート演奏やハンマリングオンなどのように、演奏者が意図してピッチを所定値以上に上昇させた場合には、ピッチの変化が忠実に楽音に反映され、誤って指離しと判断されることを防止できるという効果がある。
【００２０】
一方、検出されたピッチが所定値以上上昇することがなく、弦振動のピッチが略半音下降し、エンベロープレベルが所定値以下であるか、エンベロープレベルの減衰が所定値以上である場合は、検出されたピッチに応じた音高の指示を行わないので、弦楽器のフレットから指が離されることにより、検出されたピッチが下降しても、発生される楽音の音高の下降を防止することができるという効果がある。
【００２１】
請求項６記載の電子弦楽器によれば、請求項５記載の電子弦楽器の奏する効果に加え、所定期間を越えて音高の指示を行わない場合は、それ以降音高の指示を行うので、指離しではなく、トリルなどの演奏が行われた場合にも、所定期間以降は、演奏による音高変化に音源の音高変化を追従させることができるという効果がある。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の好ましい実施例について、添付図面を参照して説明する。図１は、本発明の電子弦楽器１の構成を示すブロック図である。
【００２３】
図１に示すように、ピックアップ４によって検出された弦の振動は、アンチエイリアス用のローパスフィルタ（ＬＰＦ）６を介してＡ／Ｄ変換器（Ａ／Ｄ）８に供給される。Ａ／Ｄ変換器は、所定のサンプリング周期（例えば３２ＫＨｚ）で弦振動をデジタル化し、デジタル弦信号としてＤＳＰ１０に供給する。なお、図１には、ピックアップ４と、ＬＰＦ６と、Ａ／Ｄ変換器８とを示したが、実際には、これらは電子弦楽器１の全ての弦にそれぞれ設けられ、デジタル化された各弦の信号がそれぞれＤＳＰ１０に供給される。ＤＳＰ１０は、各弦について、ピッチおよびエンベロープレベルを検出し、これらの検出値をＣＰＵ５０に供給する。
【００２４】
ＣＰＵ５０は、これらの検出値を入力し、所定の処理を行って、ＭＩＤＩインタ−フェイス５８を介して、ノートオン、ノートオフ、ベンドなどのＭＩＤＩメッセージを出力する。これらのＭＩＤＩメッセージは、図示しない音源に入力され、音源は、これらのメッセージに対応する楽音を発生する。
【００２５】
ＲＯＭ５２は、このＣＰＵ５０が実行するプログラムや、検出されたピッチと音階との対応関係を示すテーブルや固定値などを記憶するものである。ＲＡＭ５４は、ＣＰＵ５０がプログラムを実行する際に使用するワークエリアとして使用される読み書きのできるメモリであり、後述する各種フラグが記憶されたり、リングバッファとして使用される。
【００２６】
操作子５６は、演奏者が各種パラメータを設定するもので、音量を設定するボリュームや、音色を選択するスイッチなどが備えられ、ＣＰＵ５０がこれらの操作子の設定状態を読み込んで音源に送るＭＩＤＩメッセージのパラメータを制御する。
【００２７】
以下の説明では、一つの弦から得られるデジタル弦信号について説明するが、他の弦についてはそれぞれ独立して同じ処理が行われるものである。
【００２８】
図２は、ＤＳＰ１０の処理機能を説明するもので、図３に示すＤＳＰ１０の各部の波形と対比しながら説明する。Ａ／Ｄ変換器８から供給されたデジタル弦信号は、乗算器１１、１２、１３、１４、１５と、１サンプル遅延回路１６、１７、１８、１９と、加算器２０とによって構成されるローパスフィルタ２１に供給される。このローパスフィルタ２１は、デジタル弦信号を波形成形するために設けられている。このローパスフィルタ２１の出力信号は、正のピーク検出手段２２と、負のピーク検出手段２４とに供給される。正のピーク検出手段２２は、加算器２６を有し、この加算器２６の減算入力端子にローパスフィルタ２１の出力信号が供給されている。この加算器２６の出力信号には、乗算器２８によって係数Ｋが乗算される。この係数（０＜Ｋ＜１）は、制御部３０から供給される。制御部３０は、加算器２６の出力信号が負のとき、大きな値のＫ（例えば、０．９９）を乗算器２８に供給し、加算器２６の出力信号が正のとき、小さな値のＫ（例えば、０．０１）を乗算器２８に供給する。
【００２９】
この乗算器２８の出力信号は、加算器３２の減算入力端子に供給され、この加算器３２の出力信号は、１サンプル遅延回路３４（遅延回路３４）に供給され、この遅延回路３４の出力信号は、加算器３２の加算入力端子に供給されている。また、この遅延回路３４の出力信号は、加算器２６の加算入力端子にも供給されている。従って、これら加算器２６、３２と、乗算器２８と、遅延回路３４とは、回帰型デジタルフィルタを構成している。
【００３０】
ピーク検出手段２２において、Ｋの値が０に近ければ、加算器２６の出力は、入力値と今までの積分値（現サンプルまでの積分値）との差に近い値となり、Ｋの値が１に近ければ、加算器２６の出力は、入力値とその１サンプル前の値との差に近い値になる。
【００３１】
ここで、仮に、図３Ａに示すような正弦波信号がローパスフィルタ２１から加算器２６に入力された場合、当初には遅延回路３４の出力は零であるので、加算器２６の出力は、零から入力正弦波を減算した値となり、これは、図３Ｂに示すように負となる。従って、Ｋの値は大きく、例えば１に近い値となる。そのため、積分回路の積分作用が小さくなり、図３Ｃに示すように、正弦波の値が大きくなるに従って、加算器３２の出力も大きくなる。この加算器３２の出力を遅延回路３４で１サンプル遅延させた信号から入力正弦波を減算した加算器２６の出力は、入力正弦波が正のピークに到達するまでは負の値を維持する。
【００３２】
入力正弦波が正のピークに到達し、以後、入力正弦波の値が小さくなると、加算器２６の出力信号が負から正に変化し、Ｋの値は０に近い値となる。これによって積分回路の積分作用が大きくなり、加算器３２の出力信号は、図３Ｂに示すように、入力正弦波の正のピーク値までを積分した値から徐々に値が小さくなっていく。これは、Ｋの値が完全に１ではないからである。この間、加算器３２の出力の遅延回路３４による遅延出力（正の値）から、入力正弦波（正のピークから値が減少しつつある）を加算器２６によって減算するので、加算器２６の出力は正の値を維持している。
【００３３】
そして、入力正弦波が負のピークを越えて、増加に転じると、加算器２６の出力も正の値であるが、減少を始め、入力正弦波が負から正に変わった頃に、加算器２６の出力は負の値となる。これによって、Ｋの値は１に近い値となり、積分回路の積分機能は小さくなり、加算器３２の出力は入力正弦波に追従して値が大きくなる。この間、加算器２６の出力は負の値を維持し、入力正弦波が正のピークに到達すると、加算器２６の出力は負から正に変化する。
【００３４】
以下、同様にして動作するので、入力正弦波の正のピークが、加算器２６の出力の負から正への変化点（零クロス点）に対応する。
【００３５】
また、ピーク検出手段２４は、ピーク検出手段２２とほぼ同様に構成されている。同等部分には、同一符号の末尾にａの符号を付して、その説明を省略する。但し、ピーク検出手段２２では、加算器２６の減算入力端子にデジタル弦信号を、加算端子に遅延回路３４の出力信号が供給されていたのに対し、ピーク検出手段２４では、加算器２６ａの２つの加算入力端子に遅延回路３４ａの出力信号及びデジタル弦信号が供給されている点で異なる。これは、ローパスフィルタ２１の出力信号の負のピークを検出するためである。
【００３６】
なお、参考のため、図３Ｄに加算器２６ａの出力を、図３Ｅに加算器３２ａの出力を示す。図３Ｄ及び図３Ｅからも、加算器２６ａの出力が負から正に変化する変化点（零クロス点）が、入力信号のピークに対応することが判る。
【００３７】
これらのピーク検出手段２２、２４の出力信号は、ピッチ測定手段３６に供給される。ピッチ測定手段３６は、零クロス検出手段３８、４０（ゼロクロス３８、４０）を有し、零クロス検出手段３８は、ピーク検出手段２２からの出力信号を受け、これが負から正に変化する零クロスのとき、出力信号を発生する。同様に、零クロス検出手段４０は、ピーク検出手段２４からの出力信号を受け、これが負から正に変化する零クロスのとき、出力信号を発生する。
【００３８】
零クロス検出手段３８の出力信号は、ＳＲフリップ・フロップ４２のＲ入力端子に供給され、零クロス検出手段４０の出力信号は、ＳＲフリップ・フロップ４２のＳ入力端子に供給されている。従って、このＳＲフリップ・フロップ４２のＱ出力端子は、図３Ｆに示すように、ローパスフィルタ２１の出力信号の負のピークから正のピークへ向かうまでの間、出力信号を発生する。
【００３９】
このＳＲフリップ・フロップ４２の出力信号は、カウント手段４３（カウンタ４３）に供給される。カウント手段４３は、ＳＲフリップ・フロップ４２のＱ出力端子のハイの期間およびローの期間のサンプル数をカウントする。このカウント値によって弦の振動のピッチを検出することができる。但し、サンプル数は、サンプリング周波数による分解能しか持たないため、ピッチ検出の精度が不足する場合がある。そのような場合には、上記したような零クロス検出において、サンプル間の補間をし、サンプル数の少数部分として拡張すればよい。このようにして検出されたピッチは、ＰＩＴＣＨ出力からバスを介してＣＰＵ５０に供給され、ＳＲフリップ・フロップ４２の出力信号Ｆは、ＣＰＵ５０に対する割り込み信号ＩＮＴとして供給される。
【００４０】
一方、Ａ／Ｄ変換器８から供給されたデジタル弦信号は、エンベロープフォロア４６に入力され、エンベロープレベルが検出される。このエンベロープフォロア４６は、供給されたデジタル弦信号を整流し、さらに積分するものであって、検出されたエンベロープレベルは、ＥＮＶ出力からバスを介してＣＰＵ５０に供給される。
【００４１】
次に、図４を参照して、フレット付きの弦楽器における弦振動のピッチとエンベロープレベルの変化について説明する。図４は、所定の弦がフレット上で指で押さえられている状態で弦がはじかれて振動を開始し、その指がフレットから離されること（以下、指離しという）により消音されるまでの時間経過に従って、エンベロープレベル（ａ）とピッチ（ｂ）が変化する様子を同じ時間軸を用いて対比して表すものである。時刻０に弦がはじかれるとエンベロープレベル（ａ）は、急激に大きくなり、最大レベルに達するとすぐに減衰が始まる。一方ピッチ（ｂ）は、時刻０から時刻ｔ１までの間、変動する。時刻ｔ１を過ぎると、エンベロープレベルは、ゆっくり減衰を始め、ピッチは一定値を保つ。時刻ｔ２に、所定のフレットを押さえていた指が離されると、ピッチが下がり初め、続いてエンベロープレベルが、急速に減衰し始める。時刻ｔ３に至ると、エンベロープレベルは、ほぼ０になり、ピッチは約半音下がる。
【００４２】
しかしながら、上記のような典型的な指離しにより略半音ピッチが下降する場合もあるが、フレットから指を離す速さや、その時の弦の振幅の大きさや弦の太さなどにより、種々の場合がある。比較的、エンベロープレベルが大きい状態で、ピッチが略半音降下し、エンベロープレベルも減衰する場合もある。
【００４３】
本発明は、このような弦の振舞いに着目し、フレットから指が離される際に、エンベロープレベルとピッチの変化に基づいて、ピッチが下がっても、音源から発生される楽音は、違和感のない音高の楽音を形成するよう制御するものである。以下、ＣＰＵ５０が実行する処理について、フローチャートを参照して説明する。
【００４４】
図５は、ＤＳＰ１０のＳＲフリップ・フロップ４２の出力信号により起動される割り込みルーチンを表すフローチャートである。この電子弦楽器の電源が投入されることにより起動されるメインルーチンは、図示しないが、メインルーチンでは、操作子５６により設定されたパラメータを読み込んだり、ここで説明する割り込みルーチンを受け付けるように設定するなどの処理を行う。このメインルーチンは、本発明の要旨ではないので、その説明を省略する。
【００４５】
この割り込み処理では、まず、エンベロープフォロア４６が供給するエンベロープレベルをリングバッファＡに記憶する（Ｓ２）。このリングバッファＡは、検出されたエンベロープレベルの値を数十個記憶するものであり、ＲＡＭ５４の内部に記憶領域が設定されている。
【００４６】
次にフラグであるＧＡＴＥが１に設定されているか否かを判断する（Ｓ４）。フラグＧＡＴＥが１ではない場合（Ｓ４：Ｎｏ）は、リングバッファＡを調べ、エンベロープレベルが急激に大きくなったかを否かを判断する（Ｓ６）。エンベロープレベルが急激に大きくなったと判断した場合（Ｓ６：Ｙｅｓ）は、フラグＧＡＴＥを１に設定し（Ｓ８）、ピッチが確定したか否かを判断する（Ｓ１０）。このピッチが確定したか否かを判断する処理は、カウント手段４３がカウントした値が、安定した値を供給するようになったか否かを判断するものであるが、本発明の要旨ではないので、詳細な説明は省略する。
【００４７】
ピッチが確定したと判断した場合（Ｓ１０：Ｙｅｓ）は、フラグであるNoteStateを１に設定し（Ｓ１２）、その確定したピッチに対応する音階（ノートナンバー）と、エンベロープレベルに対応するベロシティ値を取得し、これらのパラメータを含むノートオンメッセージをＭＩＤＩインターフェイス５８から出力する（Ｓ１４）。確定したピッチに対応する音階は、ＲＯＭ５２に記憶されているピッチと音階の関係を表すテーブルから読出すことにより取得される。また、ピッチが確定した時は、すでにエンベロープレベルが最大値をとっていることがあるので、ベロシティ値は、リングバッファＡに記憶されているエンベロープレベル値のうち最大値に基づいて決定される。この処理は、図４に示されるほぼ時刻ｔ１に行われるもので、ピッチは不安定であるが、極力早く確定するのが望ましい。
【００４８】
次にピッチ変化防止カウント値、指離し処理カウント値およびベンドダウン値を「０」にセットし、リングバッファＢをクリアする（Ｓ１５）。ピッチ変化防止カウント値、指離し処理カウント値、ベンドダウン値およびリングバッファＢについては、後述する。
【００４９】
なお、Ｓ６の処理で、エンベロープレベルが急激に大きくなったと判断しなかった場合（Ｓ６：Ｎｏ）とＳ１０の処理でピッチが確定されなかったと判断した場合（Ｓ１０：Ｎｏ）は、このルーチンを終了する。
【００５０】
Ｓ４の処理で、フラグＧＡＴＥが１に設定されていると判断した場合（Ｓ４：Ｙｅｓ）は、リングバッファＡを調べ、エンベロープレベルが所定の閾値Ａより小さくなったか、またはエンベロープレベルは閾値Ａより大きくても減衰が急であるか否かを判断する（Ｓ１６）。エンベロープレベルが閾値Ａより小さくなった、またはエンベロープレベルは閾値Ａより大きいが減衰が急であると判断した場合（Ｓ１６：Ｙｅｓ）は、フラグＧＡＴＥを「０」に設定する（Ｓ１８）。
【００５１】
次に、フラグNoteStateが１に設定されているか否かを判断する（Ｓ２０）。フラグNoteStateが１に設定されていないと判断した場合（Ｓ２０：Ｎｏ）は、このルーチンを終了する。これは、一度エンベロープレベルが急激に大きくなったが、すぐに小さくなった場合であり、ノイズなどが入力されたためである。
【００５２】
一方、Ｓ２０の処理で、フラグNoteStateが１に設定されていると判断した場合（Ｓ２０：Ｙｅｓ）は、フラグNoteStateを０に設定し（Ｓ２２）、今回検出したピッチの値とリングバッファＢに記憶されたピッチの値とを比較し、ピッチが略半音下降したか否かを判断する（Ｓ２４）。このリングバッファＢは、ＲＡＭ５４の内部に記憶領域が設定されているもので、後述するＳ３７の処理において、送信されたベンド情報として記憶されたものである。また、比較されるのは、リングバッファＢに記憶された所定周期前に検出されたベンド情報の値に対応するピッチの値であり、略半音下降とは、そのピッチの値の７０セント低いピッチから１３０セント低いピッチまでの範囲に下降することである。なお、１００セントは、半音である。
【００５３】
この判断において、今回検出されたピッチは、略半音下降したと判断した場合（Ｓ２４：Ｙｅｓ）は、その所定周期前に検出されたピッチに最も近い音階の音高をＲＯＭ５２に記憶されているピッチと音階との関係を表すテーブルから読出すことによりクオンタイズし、その音高に対応するベンド情報を送信する（Ｓ２６）。次に、ノートオン情報に含まれていたノートと同じノートのノートオフ情報を送信する（Ｓ２８）。この処理は、図４における時刻ｔ２の少し後の時刻に行われる処理である。このことにより、音源は、発音していた楽音の減衰を開始すると共に、その楽音の音高は、ベンド情報により指示される音階の音高に設定されることになる。なお、ベンド情報は、ノートオン情報に含まれるノートが示す音階のピッチと実際に発音させたいピッチとの差を表す情報である。
【００５４】
Ｓ２４の処理で、今回検出されたピッチは、略半音下降したと判断しなかった場合（Ｓ２４：Ｎｏ）は、Ｓ２８のノートオンを送信したノートと同じノートのノートオフ情報を送信する処理を行ってこの処理を終了する。
【００５５】
一方、Ｓ１６の処理で、エンベロープレベルが閾値Ａより大きく、且つ減衰が急ではないと判断した場合（Ｓ１６：Ｎｏ）は、ピッチが確定したか否かを判断する（Ｓ３０）。ピッチが確定していないと判断した場合（Ｓ３０：Ｎｏ）は、何もせずにこの処理を終了し、ピッチが確定したと判断した場合（Ｓ３０：Ｙｅｓ）は、フラグNoteStateが１か否かを判断する（Ｓ３２）。このフラグNoteStateが１ではない場合（Ｓ３２：Ｎｏ）は、エンベロープレベルは急激に大きくなったが、まだピッチが確定されていなかったということであるので、フラグNoteStateを１に設定し（Ｓ３８）、その確定したピッチに対応する音階（ノートナンバー）と、エンベロープレベルに対応するベロシティ値を得、これらのパラメータを含むノートオンメッセージをＭＩＤＩインターフェイス５８から出力する（Ｓ４０）。次にピッチ変化防止カウント値、指離し処理カウント値およびベンドダウン値を「０」にセットし、リングバッファＢをクリアする（Ｓ４１）。ピッチ変化防止カウント値、指離し処理カウント値およびベンドダウン値については、後述する。
【００５６】
Ｓ３２の処理でNoteStateが１であると判断した場合（Ｓ３２：Ｙｅｓ）は、今回検出したピッチが前回検出したピッチ（リングバッファＢに記憶）と比較し、変化したか否かを判断する（Ｓ３３）。ピッチが変化していないと判断した場合（Ｓ３３：Ｎｏ）は、この処理を終了し、ピッチが変化したと判断した場合（Ｓ３３：Ｙｅｓ）は、指離しベンドダウンか否かを判断する（Ｓ３４）。この判断処理については、その詳細を図６および図７に記載のフローチャートを参照して後述する。この判断処理において、指離しベンドダウンであると判断した場合（Ｓ３４：Ｙｅｓ）は、この処理を終了し、指離しベンドダウンではないと判断した場合（Ｓ３４：Ｎｏ）は、今回検出されたピッチに対応するベンド情報を音源へ送信し（Ｓ３６）、このベンド情報をＲＡＭ５４に設けられたリングバッファＢに記憶し（Ｓ３７）この処理を終了する。このリングバッファＢは、リングバッファＡと同様に送信されたベンド情報を順次記憶するもので、数十個のベンド情報を記憶する領域が確保されている。
【００５７】
図６に記載のフローチャートは、上記Ｓ３４の処理の第１の実施例であり、図７に記載のフローチャートは上記Ｓ３４の処理の第２の実施例を表すものである。これらの処理では、ピッチが変化した原因が、フレットから指が離されたためなのか、ビブラートや、トレモロアームが操作されたためなのかを種々の状態に基づいて判断し、フレットから指が離されたと判定した場合は、音高を変更しないように制御し、指が離されたのではないと判定した場合は、変化したピッチに追従して音高を制御する。
【００５８】
まず、図６に記載された第１の実施例について説明する。今回検出されたピッチは、ベンドダウン値に対応するピッチと略同一か否かを判断する（Ｓ５０）。このベンドダウン値は、ＲＡＭ５４に記憶され、前述の通りノートオン情報を音源へ送信したときに初期化されたもので、後述するＳ６８の処理で更新記憶される値である。次にピッチ変化防止カウントを初期化（０に設定）する。このピッチ変化防止カウントの値もＲＡＭ５４に記憶されるものである。
【００５９】
Ｓ５０の判断処理で、今回検出したピッチは、ベンドダウン値と略同一ではないと判断した場合（Ｓ５０：Ｎｏ）は、ピッチ変化防止カウントを初期化し（Ｓ５６）、続いてリングバッファＢから前回送信されたベンド情報を読出し（Ｓ５８）、今回検出されたピッチが、そのベンド情報に対応するピッチより略半音下降したか否かを判断する（Ｓ６０）。略半音下降とは、ベンド情報に対応するピッチより７０セント低いピッチとベンド情報に対応するピッチより１３０セント低いピッチの範囲に下降することである。
【００６０】
今回検出されたピッチがベンド情報に対応するピッチより略半音下降したものである場合（Ｓ６０：Ｙｅｓ）は、今回検出されたエンベロープレベルが、所定の閾値Ｂより小さいか否かを判断する（Ｓ６２）。なお、この閾値Ｂは、閾値Ａより大きいエンベロープレベル値である。この今回検出されたエンベロープレベルが閾値Ｂより小さい場合（Ｓ６２：Ｙｅｓ）、または、今回検出されたエンベロープレベルが閾値Ｂより大きい場合（Ｓ６２：Ｎｏ）であって、前回検出されたエンベロープレベルとの差が所定の閾値より大きい場合（Ｓ６４：Ｙｅｓ）は、今回検出されたピッチに対応するベンド情報をベンドダウン値として記憶する（Ｓ６８）。すなわち、今回検出されたピッチが前回のピッチより下降したものであって、その差が所定の閾値より小さく、今回検出されたエンベロープレベルが、閾値Ｂより小さいか、今回検出されたエンベロープレベルの減衰が大きい場合は、そのピッチの値に対応するベンド値をベンドダウン値として記録し、音源には音高の指示を行わない。従って、検出されたピッチが下降しても、音源から発生される楽音のピッチは下降しないことになる。
【００６１】
一方、Ｓ５０の判断処理で今回のピッチがベンドダウン値として記憶されたピッチと略同一であると判断した場合（Ｓ５０：Ｙｅｓ）は、ピッチ変化防止カウントをインクリメントし（Ｓ５２）、そのインクリメントした値がオーバーフローしたか否かを判断する（Ｓ５４）。オーバーフローした場合（Ｓ５４：Ｙｅｓ）は、Ｓ５６へ進み、オーバーフローしていない場合（Ｓ５４：Ｎｏ）は、指離しベンドダウンであるとしてこのルーチンを終了する。この処理では、検出されたピッチが一度下降した後、ピッチが安定していれば、その期間は、指離しにより検出されたピッチが下がったものと判断して検出されたピッチに対応する音高の指示を行わない。従って、音源から発生される楽音のピッチは下降しない。しかし、この期間がピッチ変化防止カウントでカウントされる期間を越えた場合は、再び検出されたピッチがリングバッファＢに記憶された以前のピッチと比較される。ピッチが下降した原因が指離しであれば、この期間の間にエンベロープレベルが急速に減衰するので、減衰した時点で図５に示されるフローチャートのＳ１６の判断がＹｅｓとなりノートオフの処理が行われ、音源から発生される楽音のピッチは、音階の音高に指示される。
【００６２】
一方、指離しではなく、トリルやビブラートなどの演奏が行われた場合は、再度検出されたピッチに追従して音源のピッチを制御するようにするものである。ここで、トリル演奏とは、押圧しているフレットの隣のフレットを指で素早く押さえたり（ハンマリングオン）離したり（プリングオフ）する奏法で、ビブラートは、押圧しているフレット上で弦を押し上げたり押し下げたりする奏法である。
【００６３】
Ｓ６０の判断処理で、今回検出されたピッチがベンド情報に対応するピッチより略半音下降したものではない場合（Ｓ６０：Ｎｏ）、またはＳ６４の処理において前回検出されたエンベロープレベルとの差が所定の閾値より小さい場合（Ｓ６４：Ｎｏ）は、ＲＡＭ５４に記憶されているベンドダウン値を０に初期化し（Ｓ７０）、指離しベンドダウンではないと判断したので、今回検出されたピッチの値に対応するベンド情報を音源に送信し、その送信したベンド情報をリングバッファＢに記憶して（Ｓ３７）この割込処理を終了する。
【００６４】
従って、トリル演奏やビブラート演奏やトレモロアームが操作されたことなどが原因で検出されたピッチが下降した場合は、検出されたピッチに追従して音源のピッチも変更される。
【００６５】
上記実施例１では、今回検出したピッチが前回のピッチより所定範囲以内で下降したか否かを検出し、所定範囲以内で下降した場合は、エンベロープレベルに基づいて指離しベンドダウンか否かを判断したが、トリル演奏やビブラート演奏などの場合には、指離しの場合に近いピッチとエンベロープの振る舞いをする場合がある。特にゆるくプリングオフした場合には、指離しの場合に酷似したピッチとエンベロープレベルの振る舞いをする。そのため、トリル演奏やビブラート演奏を指離しと誤って検出する可能性がある。
【００６６】
そこで、次に説明する第２実施例では、今回検出したピッチが前回検出したピッチより所定範囲以上に上昇したか否かを判断し、所定範囲以上にピッチが上昇した場合は、ビブラート演奏あるいはベンド演奏が行われたものとして、それ以降はピッチが下降した場合であっても検出されたピッチに追従するようにする。
【００６７】
さらに、ピッチが所定範囲以上に上昇したことがない場合であって、ピッチが略半音下降し、指離しと判断された場合は、所定期間、検出されたピッチに対応する音高の指示を行わないようにし、さらに、その所定期間経過後は、指離しと判断しないようにすることで、トリル演奏などの場合に、最初ピッチが下げられた場合には、指離しと判断されて、音源から発生される楽音のピッチは下げられないが、所定期間後には、ピッチが下がる方向にも追従するようになるので、演奏上の問題は殆どない。
【００６８】
図７は、上記処理を表すフローチャートで、まず、指離し処理カウントがオーバーフローしているか否かを判断する（Ｓ８０）。指離し処理カウントがオーバーフローしていると判断した場合（Ｓ８０：Ｙｅｓ）は、指離しによるベンドダウンではないという判断であり、図５に示すフローチャートのＳ３６へ進む。
【００６９】
Ｓ８０の判断処理で、指離し処理カウントがオーバーフローしていないと判断した場合（Ｓ８０：Ｎｏ）は、リングバッファＢから前回Ｓ３７の処理で送信したベンド値を読出し（Ｓ８２）、今回検出したピッチが、前回送信したベンド値に対応するピッチより所定値以上上昇したか否かを判断する（Ｓ８４）。この所定値は、例えば５０セントである。
所定値以上上昇したと判断した場合（Ｓ８４：Ｙｅｓ）は、指離しカウントをオーバーフローさせる（Ｓ９０）。ここで、オーバーフローさせるとは、カウンタが所定ビットより構成され、最上位ビットが１に設定されるとオーバーフローしたものとし、オーバーフローさせるとは、その最上位ビットを１に設定することである。
【００７０】
Ｓ８４の処理で、今回検出したピッチが、前回送信したベンド値に対応するピッチより所定値以上上昇したのではないと判断した場合（Ｓ８４：Ｎｏ）は、指離しされたとして図６に示すフローチャートのＳ５０の処理へ進む（Ｓ８６）。このＳ８６の処理は、図６に記載のフローチャートを含むもので、Ｓ８６の分岐のＹｅｓが、図６に記載のフローチャートの出口である「指離しベンドダウン」に該当し、Ｓ８６の分岐のＮｏが、図６に記載のフローチャートの出口である「指離しベンドダウンではない」に該当する。
【００７１】
図６のフローチャートの処理により指離し処理ベンドダウンと判断された場合（Ｓ８６：Ｙｅｓ）は、指離し処理カウントをインクリメントし、この処理を終了する。図６のフローチャートの処理で指離しベンドダウンではないと判断した場合（Ｓ８６：Ｎｏ）は、図７のフローチャートを終了し、図５のフローチャートのＳ３６の処理へ進む。
【００７２】
従って、今回検出されたピッチが所定値以上上昇した場合には、それ以降指離しとは判断されない。また、検出されたピッチが所定値以上上昇したことがない場合には、指離しであると判断されることがあるが、指離しであると判断され、所定期間を経過した後は、指離しと判断されることはない。
【００７３】
以上、実施例を用いて説明したように、エンベロープレベルが比較的大きい状態でピッチが略半音下降し、エンベロープレベルが所定値より低いか急激に減衰した場合は、図６に記載のフローチャートに従って、ピッチが下降しないように制御され、さらにエンベロープレベルが減衰して、図５に記載のフローチャートのＳ２４の処理において所定時間前のピッチから略半音下降したと判断された場合は、その所定時間前のピッチに近い音階のピッチに修正されることになる。この場合には、ピッチが下降を開始する直前のピッチが維持され、最終的に音階のピッチにクオンタイズされるので、ピッチの変動が最小限に押さえられる。
【００７４】
一方、エンベロープレベルが比較的大きい状態で指離しをしたにもかかわらず指離しと判断されなかった場合には、ピッチが少し下げられ、エンベロープレベルが減衰した段階で、図５に記載のフローチャートのＳ２４の処理により指離しと判断されて所定時間前のピッチに近い音階上のピッチに戻される。
【００７５】
なお、請求項１記載の発音開始指示手段は、図５に記載のフローチャートのＳ１４およびＳ４０が該当し、発音停止指示手段は、同図、Ｓ２８が該当し、音高指示手段は、同図、Ｓ２６およびＳ３６が該当する。
【００７６】
以上、実施例に基づき本発明を説明したが、本発明は上述した実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
【００７７】
例えば、上記実施例における図５に示すフローチャートのＳ２６の処理では、前に検出されたピッチをそのピッチに近い音階の音高にクオンタイズし、そのクオンタイズした音高に対応するベンド情報を送信するものとしたが、クオンタイズせずに、前に検出したピッチに対応するベンド情報を送信してもよい。
【００７８】
また、リングバッファＢには、送信したベンド情報を記憶するものとしたが、ベンド情報に対応するピッチ、または、ピッチ検出手段により検出され、確定されたピッチを記憶するようにしてもよい。
【００７９】
また、図６に記載のフローチャートのＳ５８、Ｓ６０の処理で、今回のピッチがリングバッファに記憶された前回送信したベンド値より略半音下降したか否かを判断するようにしたが、ここでは処理の負荷を抑えるために簡単な方法としているのであり、ＣＰＵの能力が十分に高い場合には、リングバッファに記憶されている所定時間内のベンド値と比較して判断してもよく、このようにすると指離し検出制度の一層の向上が期待できる。
【図面の簡単な説明】
【００８０】
【図１】本発明の電子弦楽器１の構成を示すブロック図である。
【図２】ＤＳＰの処理機能を説明する図である。
【図３】ＤＳＰにおいて処理された各部の波形を示す図である。
【図４】弦振動のピッチとエンベロープレベルの変化を表す図である。
【図５】ＣＰＵの割り込みルーチンを表すフローチャートである。
【図６】図５に示されるフローチャートの詳細であって実施例１を表すフローチャートである。
【図７】実施例２の処理を表すフローチャートである。
【符号の説明】
【００８１】
１                      電子弦楽器
１０                    ＤＳＰ
４４                    カウンタ（ピッチ検出手段）
４６                    エンベロープフォロア（レベル検出手段）
５０                    ＣＰＵ
５２                    ＲＯＭ
５４                    ＲＡＭ（ピッチ記憶手段、レベル記憶手段）
【図１】
2005189600.tif 000003
【図２】
2005189600.tif 000004
【図３】
2005189600.tif 000005
【図４】
2005189600.tif 000006
【図５】
2005189600.tif 000007
【図６】
2005189600.tif 000008
【図７】
2005189600.tif 000009