(57)【特許請求の範囲】
【請求項１】
接続された音源が供給されたピッチに対応する楽音を発音している発音状態にあるか否かを判別する判別手段と、
この判別手段により発音状態にないと判別されている状態で、張設された弦の振動を検出するピックアップからの波形信号に基づき、当該波形信号の周期に基づいたピッチを検出するピッチ検出手段と、
このピッチ検出手段によりピッチが検出された後、上記判別手段により発音状態にないと判別されている状態でかつ上記ピックアップからの波形信号レベルが第１のレベル以上である場合に、上記音源に対して検出されたピッチ及び発音開始指示を供給して発音状態にする発音指示手段と、
上記判別手段により上記音源が発音状態にあると判別されている状態でかつ上記ピックアップからの波形信号レベルが第２のレベル以下である場合に、上記音源に対して消音指示を供給して非発音状態とする消音指示手段と、
を有する入力制御装置。
【請求項２】
張設された弦の振動を検出するピックアップと、入力される発音指示に応答して供給されたピッチの楽音を発音するとともに入力される消音指示に応答して楽音の発音を停止する音源とが接続された入力制御装置として用いられるコンピュータに、
接続された上記音源が楽音を発音している発音状態にあるか否かを判別する判別ステップと、
この判別ステップにより発音状態にないと判別されている状態で、張設された弦の振動を検出するピックアップからの波形信号に基づき、当該波形信号の周期に基づいたピッチを検出するピッチ検出ステップと、
このピッチ検出ステップによりピッチが検出された後、上記判別ステップにより発音状態にないと判別されている状態でかつ上記ピックアップからの波形信号レベルが第１のレベル以上である場合に、上記音源に対して検出されたピッチ及び発音開始指示を供給して発音状態にする発音指示ステップと、
上記判別ステップにより上記音源が発音状態にあると判別されている状態でかつ上記ピックアップからの波形信号レベルが第２のレベル以下である場合に、上記音源に対して消音指示を供給して非発音状態とする消音指示ステップと、
を実行させる入力制御処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子ギターに用いて好適な入力制御装置および入力制御プログラムに関する。
【背景技術】
【０００２】
入力される波形信号のピッチを抽出し、抽出したピッチに対応する楽音の発音を指示する入力制御装置が知られている。この種の装置として、例えば特許文献１には、入力波形信号の最大値検出直後の波形ゼロクロス周期と最小値検出直後の波形ゼロクロス周期とを検出し、両周期が略一致した場合にその検出した周期に対応するピッチの楽音の発音を指示したり、あるいは入力波形信号の最大値検出周期と最小値検出周期とを検出し、両周期が略一致した場合にその検出した周期に対応するピッチの楽音の発音を指示する技術が開示されている。
【０００３】
【特許文献１】特開昭６３−１３６０８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の入力制御装置を適用した電子ギターでは、各弦毎に配設されるピックアップコイルにより弾弦（ピッキング）後の弦振動を入力波形信号として検出する。ピッキング後の入力波形信号からピッチ抽出する為には、最低１．５波長分の時間が必要とされる。例えば５弦解放のギター演奏では、１１０Ｈｚのピッキング音となるが、このピッキング音のピッチ抽出に要する時間（１．５波長分）は１３．６３ｍｓｅｃとなり、これにノイズによるエラー訂正等の処理時間を加えると、都合２０ｍｓｅｃ程度のピッチ抽出遅延に成り得る。ピッチ抽出遅延は、発音遅れとして認識され、とりわけピッキング音が低音になるほど顕著になり、ギター演奏に不自然さや違和感を与えてしまうという問題がある。
【０００５】
そこで本発明は、このような事情に鑑みてなされたもので、発音遅れを解消することができる入力制御装置および入力制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、接続された音源が供給されたピッチに対応する楽音を発音している発音状態にあるか否かを判別する判別手段と、この判別手段により発音状態にないと判別されている状態で、張設された弦の振動を検出するピックアップからの波形信号に基づき、当該波形信号の周期に基づいたピッチを検出するピッチ検出手段と、このピッチ検出手段によりピッチが検出された後、上記判別手段により発音状態にないと判別されている状態でかつ上記ピックアップからの波形信号レベルが第１のレベル以上である場合に、上記音源に対して検出されたピッチ及び発音開始指示を供給して発音状態にする発音指示手段と、上記判別手段により上記音源が発音状態にあると判別されている状態でかつ上記ピックアップからの波形信号レベルが第２のレベル以下である場合に、上記音源に対して消音指示を供給して非発音状態とする消音指示手段と、を有することを特徴とする。
【０００７】
請求項２に記載の発明は、張設された弦の振動を検出するピックアップと、入力される発音指示に応答して供給されたピッチの楽音を発音するとともに入力される消音指示に応答して楽音の発音を停止する音源とが接続された入力制御装置として用いられるコンピュータに、接続された上記音源が楽音を発音している発音状態にあるか否かを判別する判別ステップと、この判別ステップにより発音状態にないと判別されている状態で、張設された弦の振動を検出するピックアップからの波形信号に基づき、当該波形信号の周期に基づいたピッチを検出するピッチ検出ステップと、このピッチ検出ステップによりピッチが検出された後、上記判別ステップにより発音状態にないと判別されている状態でかつ上記ピックアップからの波形信号レベルが第１のレベル以上である場合に、上記音源に対して検出されたピッチ及び発音開始指示を供給して発音状態にする発音指示ステップと、上記判別ステップにより上記音源が発音状態にあると判別されている状態でかつ上記ピックアップからの波形信号レベルが第２のレベル以下である場合に、上記音源に対して消音指示を供給して非発音状態とする消音指示ステップとを実行させることを特徴とする。
【発明の効果】
【００１１】
請求項１に記載の発明によれば、弾弦に先行して行われるフレット操作に応じて発生するタッチ音の周期を検出し、検出された周期に対応した音高の楽音の発音を指示するので、弾弦で生じるピッキング音からのピッチ抽出よりも早期に発音ピッチを確定できる結果、発音遅れを解消することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。
Ａ．構成
図１は、本発明の実施の一形態による入力制御装置を備えた電子ギターの要部構成を示すブロック図である。この図において、ピッチ抽出部Ｐ１〜Ｐ６は、電子ギター本体（不図示）に張設される各弦に対応して設けられ、入力波形ＰＯの周期計測に必要な各種信号を発生してＣＰＵ１００に供給する。入力波形ＰＯとは、各弦毎に配設されるピックアップコイル（不図示）から出力される波形信号を指す。ピッチ抽出部Ｐ１〜Ｐ６は、それぞれ構成要素２〜１４から構成される。
【００１５】
ピッチ抽出部Ｐ１〜Ｐ６において、アンプ２は、ピックアップコイルから供給される入力波形ＰＯをレベル増幅して出力する。ローパスフィルタ（ＬＰＦ）３は、レベル増幅された入力波形ＰＯの高周波成分を除去する。最大ピーク検出回路（ＭＡＸ）４は、入力波形ＰＯの最大ピークを検出して最大ピーク検出信号を発生する。最小ピーク検出回路（ＭＩＮ）５は、入力波形ＰＯの最小ピークを検出して最小ピーク検出信号を発生する。ゼロクロス検出回路（Ｚｅｒｏ）６は、入力波形ＰＯのゼロクロスを検出してゼロクロス検出信号を発生する。
【００１６】
Ａ／Ｄ変換器７は、入力波形ＰＯをＡ／Ｄ変換して入力波形データを出力する。フリップフロップ（ＦＦ）８は、最大ピーク検出回路（ＭＡＸ）４から供給される最大ピーク検出信号の立ち下がりに同期してＨｉｇｈレベルの出力を発生し、ＣＰＵ１００から供給されるクリア信号ＣＬａに同期してその出力をＬｏｗレベルに設定する。フリップフロップ（ＦＦ）１０は、最小ピーク検出回路（ＭＩＮ）５から供給される最小ピーク検出信号の立ち下がりに同期してＨｉｇｈレベルの出力を発生し、ＣＰＵ１００から供給されるクリア信号ＣＬａに同期してその出力をＬｏｗレベルに設定する。
【００１７】
インバータ１０は、ゼロクロス検出回路（Ｚｅｒｏ）６から出力されるゼロクロス検出信号を反転出力する。アンドゲート１１は、フリップフロップ（ＦＦ）８の出力とインバータ１０の出力とのＡＮＤ出力を割込み信号ＩＮＴａとしてＣＰＵ１００に供給する。つまり、アンドゲート１１は、最大ピーク検出後の波形ゼロクロス時点に割込み信号ＩＮＴａをＣＰＵ１００に供給する。なお、ＣＰＵ１００は割込み信号ＩＮＴａの入力に応じて、クリア信号ＣＬａを発生してフリップフロップ（ＦＦ）８に供給する。
【００１８】
アンドゲート１２は、フリップフロップ（ＦＦ）９の出力とゼロクロス検出信号とのアンド出力を割込み信号ＩＮＴｂとしてＣＰＵ１００に供給する。つまり、アンドゲート１２は、最小ピーク検出後の波形ゼロクロス時点に割込み信号ＩＮＴｂをＣＰＵ１００に供給する。なお、ＣＰＵ１００は割込み信号ＩＮＴｂの入力に応じて、クリア信号ＣＬｂを発生してフリップフロップ（ＦＦ）９に供給する。オアゲート１３は、フリップフロップ（ＦＦ）８、９のＯＲ出力をラッチ信号Ｌとしてラッチ回路１４およびＣＰＵ１００に供給する。ラッチ回路１４は、ラッチ信号Ｌが供給される毎、すなわち最大ピーク検出時点もしくは最小ピーク検出時点の入力波形データをラッチしてＣＰＵ１００に供給する。
【００１９】
このように、ピッチ抽出部Ｐ１〜Ｐ６では、例えば図２（ａ）に図示する入力波形ＰＯが供給されると、同図（ｂ）〜（ｄ）に図示するタイミングで生成される最大ピーク検出信号、ゼロクロス検出信号およびフリップフロップ（ＦＦ）８の出力に基づき、同図（ｅ）に図示するように、最大ピーク検出後の波形ゼロクロスに同期した割込み信号ＩＮＴａをＣＰＵ１００に供給する。
【００２０】
また、図示していないが、最小ピーク検出信号、ゼロクロス検出信号およびフリップフロップ（ＦＦ）９の出力に基づき、最小ピーク検出後の波形ゼロクロスに同期した割込み信号ＩＮＴｂをＣＰＵ１００に供給する。さらに、ラッチ回路１４が最大ピーク検出時点もしくは最小ピーク検出時点の入力波形データをＣＰＵ１００に供給するようになっている。
【００２１】
再び図１を参照して構成の説明を続ける。ＣＰＵ１００は、ピッチ抽出部Ｐ１〜Ｐ６からそれぞれ供給される各信号（割込み信号ＩＮＴａ、ＩＮＴｂおよび入力波形データＤＡＴＡ）に基づき各弦毎の発音又は消音を音源１０４に指示する。具体的には、入力波形データＤＡＴＡが所定レベルＶ１を超えた時に、割込み信号ＩＮＴａ、ＩＮＴｂの発生周期で定まる音高の楽音の発音を音源１０４に指示する一方、入力波形データＤＡＴＡが所定レベルＶ２以下になった時に、音源１０４に消音を指示する。
【００２２】
このようなＣＰＵ１００の処理において、本発明の特徴は、弾弦（ピッキング）以前に行われるフレット操作（弦を指で抑えて音高指定する操作）の時に、弦がフレットに接触して発生する所謂「タッチ音」の入力波形ＰＯを用いてピッチ抽出することにある。このようにすることで弾弦で生じるピッキング音からのピッチ抽出よりも早期に発音ピッチを確定して発音遅れを解消するようになっている。こうしたＣＰＵ１００の処理動作の詳細については追って述べる。
【００２３】
ＲＯＭ１０２は、ＣＰＵ１００が実行する各種制御プログラムの他、ピッチ変換テーブルを記憶する。ＲＯＭ１０２に記憶される各種制御プログラムとは、後述するメインルーチン、ｎ弦処理、ＩＮＴａ割込み処理およびＩＮＴｂ割込み処理を含む。また、ＲＯＭ１０２に記憶されるピッチ変換テーブルとは、割込み信号ＩＮＴａ、ＩＮＴｂの発生周期を読み出しアドレスとして、対応するピッチ（音高）を読み出すデータテーブルである。
【００２４】
ＲＡＭ１０３は、バッファエリアおよびワークエリアを備える。ＲＡＭ１０３のバッファエリアには、ピッチ抽出部Ｐ１〜Ｐ６から取り込む入力波形データＤＡＴＡが格納される。ＲＡＭ１０３のワークエリアには、割込み信号ＩＮＴａ、ＩＮＴｂの発生周期を計時するカウンタとして機能するタイマレジスタ等の各種レジスタやフラグが一時記憶される。音源１０４は、周知の波形メモリ読み出し方式で構成され、ＣＰＵ１００から供給される演奏情報に応じた楽音データを発生する。サウンドシステム１０５は、音源７から出力される楽音データをアナログ変換した後、信号増幅したり不要ノイズ等を除去するフィルタリングを施してスピーカから放音させる。
【００２５】
Ｂ．動作
次に、図３〜図７を参照して実施形態の動作を説明する。以下では、最初にメインルーチンの動作について説明した後、ＩＮＴａ割込み処理、ＩＮＴｂ割込み処理およびｎ弦処理の各動作について説明する。
【００２６】
（１）メインルーチンの動作
上記構成による電子ギターに電源が投入されると、ＣＰＵ１００は図３に図示するメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ１０３に設けられる各種レジスタ・フラグ類をゼロリセットしたり、初期値セットするイニシャライズを行った後、ステップＳＡ２に処理を進める。ステップＳＡ２では、処理対象となる弦を指定するポインタｎに「１」をセットする。次いで、ステップＳＡ３では、ポインタｎの値で指定される弦の状態に応じた演奏情報を発生して音源１０４に与えるｎ弦処理を実行する。ｎ弦処理の詳細については後述する。
【００２７】
そして、ｎ弦処理が完了すると、ステップＳＡ４に進み、ポインタｎをインクリメントして歩進させ、続くステップＳＡ５では、歩進されたポインタｎの値が「６」を超えたか、つまり、第１弦から第６弦までの全ての弦について処理し終えたか否かを判断する。全ての弦について処理し終えていなければ、判断結果が「ＮＯ」となり、ステップＳＡ３に処理を戻す。以後、全ての弦について処理し終えるまでステップＳＡ３〜ＳＡ５を繰り返す。そして、全ての弦について処理し終えると、上記ステップＳＡ５の判断結果が「ＹＥＳ」となり、上述のステップＳＡ２に処理を戻して再び第１弦からｎ弦処理を行う。以後、電源スイッチがオフ操作されるまで、第１弦〜第６弦について順次ｎ弦処理を繰り返す。
【００２８】
（２）ＩＮＴａ割込み処理の動作
次に、図４を参照してＩＮＴａ割込み処理の動作を説明する。上述のメインルーチン実行中にピッチ抽出部側から割込み信号ＩＮＴａが供給されると、ＣＰＵ１００は図４に図示するＩＮＴａ割込み処理を実行してステップＳＢ１に処理を進める。ステップＳＢ１では、オンフラグＯＮＦが「０」であるか否かを判断する。オンフラグＯＮＦは、後述するｎ弦処理にて設定されるフラグであり、「０」の場合に音源１０４が消音中であることを表し、「１」の場合に音源１０４が発音中であることを表す。
【００２９】
したがって、このステップＳＢ１では、音源１０４が消音中であるかどうかを判断する。ここで、音源１０４が発音中であると、判断結果は「ＮＯ」になり、周期計測を行わずに本処理を完了させる。一方、音源１０４が消音中であれば、判断結果は「ＹＥＳ」になり、次のステップＳＢ２に進む。ステップＳＢ２では、クリア信号ＣＬａを発生してピッチ抽出部Ｐｎのフリップフロップ（ＦＦ）８をリセットすると共に、割込み信号ＩＮＴａの発生タイミングを計時するカウンタの値を読み込む。
【００３０】
続いて、ステップＳＢ３では、カウンタ値読み込みが１回目でないか否かを判断する。カウンタ値の読み込みが初回であると、判断結果は「ＮＯ」になり、ステップＳＢ８に進み、フラグＦＦに「１」をセットする一方、カウンタをクリアして本処理を終える。これにより、初回の割込み信号ＩＮＴａが供給された場合に、ＣＰＵ１００は最大ピーク検出後の波形ゼロクロス時点のカウンタ値を保持する。なお、上記フラグＦＦは、「１」の場合にＩＮＴａ割込み処理完了を表し、「０」の場合に後述のＩＮＴｂ割込み処理完了を表す。
【００３１】
さて一方、カウンタ値の読み込みが初回以降であると、上記ステップＳＢ３の判断結果が「ＹＥＳ」となり、ステップＳＢ４に進む。ステップＳＢ４では、フラグＦＦが「０」であるか否かを判断する。フラグＦＦは、ＩＮＴａ割込み処理による周期計測が行われた時に「１」となり、ＩＮＴｂ割込み処理による周期計測が行われた時に「０」となるフラグである。また、図２（ｅ）に図示するように、周期ｔ１を計測するＩＮＴａ割込み処理と、周期ｔ２を計測するＩＮＴｂ割込み処理とは、理想的には交互に行われる。したがって、ＩＮＴａ割込み処理とＩＮＴｂ割込み処理とが順当に実行されると、フラグＦＦはその都度反転するが、例えば入力波形ＰＯにノイズが重畳する等して最大ピークあるいは最小ピークの検出が行えない状況であれば、ＩＮＴａ割込み処理とＩＮＴｂ割込み処理とが交互に実行されない事態も起こり得る。そこで、ステップＳＢ４では、フラグＦＦが「０」であるか否かで順当にＩＮＴｂ割込み処理が実行されたかどうかを判断している。
【００３２】
順当にＩＮＴｂ割込み処理が実行されていなければ、フラグＦＦは「１」のままだから、上記ステップＳＢ４の判断結果は「ＮＯ」になり、この場合、周期計測不可と見做して何も行わずに本処理を完了させる。これに対し、順当にＩＮＴｂ割込み処理が実行されていると、後述するように、フラグＦＦは「０」にセットされるので、上記ステップＳＢ４の判断結果が「ＹＥＳ」になり、ステップＳＢ５に進む。
【００３３】
ステップＳＢ５では、前回取り込んだカウンタ値と今回取り込んだカウンタ値とに応じて割込み信号ＩＮＴａの発生周期を算出する。続いて、ステップＳＢ６では、そうして算出した周期をレジスタＴＩＭＥ１にストアする。次に、ステップＳＢ７では、割込み信号ＩＮＴａの周期計測が適正に行われた旨を表す為にフラグＴＩＭＥ１Ｆに「１」をセットする。この後、ステップＳＢ８に進み、ＩＮＴａ割込み処理完了を表す為にフラグＦＦに「１」をセットすると共に、カウンタをクリアして本処理を終える。
【００３４】
（３）ＩＮＴｂ割込み処理の動作
次に、図５〜図６を参照してＩＮＴｂ割込み処理の動作を説明する。前述のメインルーチン実行中にピッチ抽出部側から割込み信号ＩＮＴｂが供給されると、ＣＰＵ１００は図５に図示するＩＮＴａ割込み処理を実行してステップＳＣ１に処理を進める。ステップＳＣ１では、オンフラグＯＮＦが「０」であるか否か、すなわち音源１０４が消音中であるかどうかを判断する。ここで、音源１０４が発音中であると、判断結果は「ＮＯ」になり、期計測を行わずに本処理を完了させる。一方、音源１０４が消音中であれば、判断結果は「ＹＥＳ」になり、次のステップＳＣ２に進む。
【００３５】
ステップＳＣ２では、クリア信号ＣＬｂを発生してピッチ抽出部Ｐｎのフリップフロップ（ＦＦ）９をリセットすると共に、割込み信号ＩＮＴｂの発生タイミングを計時するカウンタの値を読み込む。続いて、ステップＳＣ３では、カウンタ値読み込みが１回目でないか否かを判断する。カウンタ値の読み込みが初回であると、その判断結果は「ＮＯ」になり、後述するステップＳＣ８に進む。
【００３６】
一方、カウンタ値の読み込みが初回以降であると、上記ステップＳＣ３の判断結果が「ＹＥＳ」となり、ステップＳＣ４に進む。ステップＳＣ４では、上述したＩＮＴａ割込み処理と同様、フラグＦＦが「１」であるか否かで順当にＩＮＴａ割込み処理が実行されたかどうかを判断する。順当にＩＮＴａ割込み処理が実行されていなければ、フラグＦＦは「０」のままだから、上記ステップＳＣ４の判断結果は「ＮＯ」になり、この場合、周期計測不可と見做して何も行わずに本処理を完了させる。
【００３７】
これに対し、順当にＩＮＴａ割込み処理が実行されていると、前述したステップＳＢ８（図４参照）によりフラグＦＦは「１」にセットされる為、上記ステップＳＣ４の判断結果が「ＹＥＳ」になり、ステップＳＣ５に進む。ステップＳＣ５では、前回取り込んだカウンタ値と今回取り込んだカウンタ値とに応じて割込み信号ＩＮＴｂの発生周期を算出し、続くステップＳＣ６では、算出した周期をレジスタＴＩＭＥ２にストアする。そして、ステップＳＣ７では、割込み信号ＩＮＴｂの周期計測が適正に行われた旨を表す為にフラグＴＩＭＥ２Ｆに「１」をセットする。この後、ステップＳＣ８に進み、ＩＮＴｂ割込み処理完了を表す為にフラグＦＦをゼロリセットすると共に、カウンタをクリアする。
【００３８】
次いで、図６に図示するステップＳＣ９に進み、フラグＴＩＭＥ１ＦおよびフラグＴＩＭＥ２Ｆが共に「１」、つまり割込み信号ＩＮＴａ、ＩＮＴｂの各周期が計測済みであるか否かを判断する。両周期が計測済みでなければ、判断結果は「ＮＯ」になり、本処理を完了させる。これに対し、両周期が計測済みであると、判断結果は「ＹＥＳ」となり、ステップＳＣ１０に進む。ステップＳＣ１０では、レジスタＴＩＭＥ１に格納される割込み信号ＩＮＴａの周期と、レジスタＴＩＭＥ２に格納される割込み信号ＩＮＴｂの周期とが略一致するかどうかを判断する。
【００３９】
両周期が略一致しない場合には、判断結果が「ＮＯ」となり、後述のステップＳＣ１３に進む。一方、両周期が略一致すると、上記ステップＳＣ１０の判断結果が「ＹＥＳ」になり、ステップＳＣ１１に進む。ステップＳＣ１１では、レジスタＴＩＭＥ１に格納される割込み信号ＩＮＴａの周期を、レジスタＴＩＭＥにストアする。次いで、ステップＳＣ１２では、フラグＴＯＵＣＨＦに「１」をセットする。これにより、弾弦に先行するフレット操作で生じたタッチ音に基づきピッチ抽出（周期計測）が完了した旨を表す。この後、ステップＳＣ１３に進み、フラグＴＩＭＥ１Ｆをゼロリセットし、続くステップＳＣ１４では、フラグＴＩＭＥ２Ｆをゼロリセットして本処理を終える。
【００４０】
（４）ｎ弦処理の動作
次に、図７を参照してｎ弦処理の動作を説明する。上述したメインルーチンのステップＳＡ３（図３参照）を介して本処理が実行されると、ＣＰＵ１００は図７に図示するステップＳＤ１に進み、ポインタｎの値に対応したピッチ抽出部Ｐｎ（ｎ＝１〜６）のラッチ回路１４から入力波形データＤＡＴＡを取り込み、ＲＡＭ１０３のバッファエリアに格納する。続いて、ステップＳＤ２では、オンフラグＯＮＦが「０」であるか否か、すなわち消音中であるかどうかを判断する。以下、音源１０４が消音中の場合と、音源１０４が発音中の場合とに分けて動作を説明する。
【００４１】
＜音源１０４が消音中の場合＞
音源１０４が消音中であると、ステップＳＤ２の判断結果は「ＹＥＳ」になり、ステップＳＤ３に進む。ステップＳＤ３では、上記ステップＳＤ１において取り込んだ入力波形データＤＡＴＡのレベルが所定値Ｖ１以上であるか否かを判断する。入力波形データＤＡＴＡのレベルが所定値Ｖ１以上でなければ、判断結果は「ＮＯ」となり、本処理を終える。つまり、入力波形データＤＡＴＡのレベルが所定値Ｖ１以上でなければ、タッチ音と判断しないようになっている。
【００４２】
一方、入力波形データＤＡＴＡのレベルが所定値Ｖ１以上であると、上記ステップＳＤ３の判断結果が「ＹＥＳ」になり、ステップＳＤ４に進む。ステップＳＤ４では、フラグＴＯＵＣＨＦが「１」であるか否か、すなわち弾弦に先行するフレット操作で生じたタッチ音に基づきピッチ抽出（周期計測）が完了した状態であるかどうかを判断する。タッチ音に基づくピッチ抽出が完了していなければ、判断結果は「ＮＯ」になり、本処理を終える。
【００４３】
これに対し、タッチ音に基づくピッチ抽出が完了していると、上記ステップＳＤ４の判断結果が「ＹＥＳ」になり、ステップＳＤ５に進む。ステップＳＤ５では、レジスタＴＩＭＥに格納される周期に対応した音高をＲＯＭ１０２に記憶されるピッチ変換テーブルから読み出し、読み出した音高の楽音の発音開始を音源１０４に指示する。これにより、音源１０４は、タッチ音から抽出した周期に対応するピッチの楽音を発音する。したがって、従来のように、弾弦で生じたピッキング音からのピッチ抽出よりも早期に発音ピッチを確定できる為、発音遅れを解消し得るようになる。この後、ステップＳＤ６に進み、オンフラグＯＮＦに「１」をセットして音源１０４が発音中にある旨を表してから本処理を完了させる。
【００４４】
＜音源１０４が発音中の場合＞
さて、以上のようにして音源１０４が発音を開始した後に本処理が実行されると、前述したステップＳＤ２の判断結果が「ＮＯ」になり、ステップＳＤ７に処理を進める。ステップＳＤ７では、入力波形データＤＡＴＡの波形レベルが所定値Ｖ２以下であるか否かを判断する。入力波形データＤＡＴＡの波形レベルが所定値Ｖ２以下であると、判断結果は「ＹＥＳ」になり、ステップＳＤ８に進み、音源１０４に消音を指示する。そして、ステップＳＤ９では、消音に応じてオンフラグＯＮＦをゼロリセットして本処理を終える。一方、入力波形データＤＡＴＡの波形レベルが所定値Ｖ２を超えていると、上記ステップＳＤ７の判断結果が「ＮＯ」となり、ステップＳＤ１０に進み、波形読み出し周波数を一定にして持続音発音させる周波数制御を音源１０４に指示して本処理を完了させる。
【００４５】
以上説明したように、本実施形態では、ＩＮＴａ割込み処理により弾弦に先行して行われるフレット操作で生じるタッチ音の最大ピーク検出後の波形ゼロクロス毎に発生する割込み信号ＩＮＴａの発生周期をタッチ音の周期ＴＩＭＥ１として検出すると共に、ＩＮＴｂ割込み処理によりタッチ音の最小ピーク検出後の波形ゼロクロス毎に発生する割込み信号ＩＮＴｂの発生周期をタッチ音の周期ＴＩＭＥ２として検出し、検出した周期ＴＩＭＥ１と周期ＴＩＭＥ２とが略一致する場合にその周期ＴＩＭＥ１に対応した音高の楽音を発音させるので、従来のように、弾弦で生じるピッキング音からのピッチ抽出よりも早期に発音ピッチを確定できる結果、発音遅れを解消することができる。
【００４６】
なお、上述した実施の形態では、割込み信号ＩＮＴａの発生周期から検出したタッチ音の周期ＴＩＭＥ１と、割込み信号ＩＮＴｂの発生周期から検出したタッチ音の周期ＴＩＭＥ２とが略一致した場合に周期ＴＩＭＥ１側をタッチ音の周期として選択したが、これに替えて周期ＴＩＭＥ２側をタッチ音の周期として選択する態様としても構わない。また、割込み信号ＩＮＴａの発生周期から検出したタッチ音の周期ＴＩＭＥ１と、割込み信号ＩＮＴｂの発生周期から検出したタッチ音の周期ＴＩＭＥ２とが略一致した場合に、両周期ＴＩＭＥ１、ＴＩＭＥ１の平均値を算出し、それをタッチ音の周期として設定する態様にすることもできる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の一形態の構成を示すブロック図である。
【図２】ピッチ抽出部Ｐ１〜Ｐ６における入出力信号を説明する波形図である。
【図３】メインルーチンの動作を示すフローチャートである。
【図４】ＩＮＴａ割込み処理の動作を示すフローチャートである。
【図５】ＩＮＴｂ割込み処理の動作を示すフローチャートである。
【図６】ＩＮＴｂ割込み処理の動作を示すフローチャートである。
【図７】ｎ弦処理の動作を示すフローチャートである。
【符号の説明】
【００４８】
Ｐ１〜Ｐ６  ピッチ抽出部
１００  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  音源
１０５  サウンドシステム
【図１】
0004484071.tif 000002
【図２】
0004484071.tif 000003
【図３】
0004484071.tif 000004
【図４】
0004484071.tif 000005
【図５】
0004484071.tif 000006
【図６】
0004484071.tif 000007
【図７】
0004484071.tif 000008