(57)【要約】【課題】  音源における処理動作の負荷低減を図りつつ、同じフォルマントを異なるピッチで発音させたり、同じフレーズを異なるフォルマントで発音させる楽音発生装置を実現する。【解決手段】  音源１０では、モード値Ｖｅが「２」の場合、固定的なフォルマント成分のエンベロープ波形データ（変調波形）によって、押鍵に応じたピッチを有する各フォルマント成分の波形（被変調波形）を変調するので、同じフォルマントを異なるピッチで発音させる。モード値Ｖｅが「３」の場合には、読み出し速度Ｖｍｓで読み出される原波形データから抽出した各フォルマント成分のエンベロープ波形データ（変調波形）によって、原波形データのオリジナルピッチで読み出される固定的なフォルマント成分の分析波形データ（被変調波形）を変調する。従って、演奏操作に応じて変調波形を異ならせれば、同じフレーズを異なるフォルマントで発音させるようになる。【選択図】  図１
2006323166.tif 000002
【特許請求の範囲】
【請求項１】
人声のフォルマント成分毎の変調波形を記憶する記憶手段と、
演奏操作に対応して生成される楽音波形を、人声のフォルマント成分別に濾波して被変調波形を形成する被変調波形形成手段と、
演奏操作に対応して前記記憶手段から読み出される人声のフォルマント成分毎の変調波形によって、前記被変調波形発生手段が形成する被変調波形を変調してボコーダ音を発生するボコーダ音発生手段と
を具備することを特徴とする楽音発生装置。
【請求項２】
前記ボコーダ音発生手段は、全鍵離鍵状態からの押鍵に応じて、前記記憶手段から読み出す変調波形を先頭にリセットすることを特徴とする請求項１記載の楽音発生装置。
【請求項３】
楽音波形を人声のフォルマント成分別に濾波した被変調波形を記憶する記憶手段と、
演奏操作に対応して人声のフォルマント成分毎の変調波形を発生する変調波形発生手段と、
演奏操作に対応して前記記憶手段から読み出される人声のフォルマント成分別に濾波した被変調波形を、前記変調波形発生手段が発生する人声のフォルマント成分毎の変調波形により変調してボコーダ音を発生するボコーダ音発生手段と
を具備することを特徴とする楽音発生装置。
【請求項４】
前記変調波形発生手段は、全鍵離鍵状態からの押鍵に応じて、発生する変調波形を先頭にリセットすることを特徴とする請求項３記載の楽音発生装置。
【請求項５】
演奏操作に対応して生成される楽音波形を、人声のフォルマント成分別に濾波して被変調波形を形成する被変調波形形成処理と、
予め記憶された人声のフォルマント成分毎の変調波形を演奏操作に対応して読み出し、読み出された人声のフォルマント成分毎の変調波形によって、前記被変調波形発生処理にて形成される被変調波形を変調してボコーダ音を発生するボコーダ音発生処理と
をコンピュータで実行させることを特徴とする楽音発生プログラム。
【請求項６】
前記ボコーダ音発生処理は、全鍵離鍵状態からの押鍵に応じて、読み出す変調波形を先頭にリセットすることを特徴とする請求項５記載の楽音発生プログラム。
【請求項７】
演奏操作に対応して人声のフォルマント成分毎の変調波形を発生する変調波形発生処理と、
楽音波形を人声のフォルマント成分別に濾波した被変調波形を記憶しておき、演奏操作に対応して読み出した被変調波形を、前記変調波形発生手段が発生する人声のフォルマント成分毎の変調波形により変調してボコーダ音を発生するボコーダ音発生処理と
をコンピュータで実行させることを特徴とする楽音発生プログラム。
【請求項８】
前記変調波形発生処理は、全鍵離鍵状態からの押鍵に応じて、発生する変調波形を先頭にリセットすることを特徴とする請求項７記載の楽音発生プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ボコーダ音を発生する楽音発生装置および楽音発生プログラムに関する。
【背景技術】
【０００２】
人声音の変調波形と演奏操作に対応した楽器音の被変調波形とを発生させ、人声音の変調波形から抽出したフォルマント成分を、楽器音の被変調波形に変調して、あたかも人の声のような楽器音（ボコーダ音）を発生する楽音発生装置が知られており、この種の装置については、例えば特許文献１に開示されている。
【０００３】
【特許文献１】特開２００４−２７９７５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置は、リアルタイムに周波数分析を行って人声音の変調波形からフォルマント成分を抽出するとともに、楽器音の被変調波形もリアルタイムに周波数分析を行う構成なので、音源における処理動作の負荷が高い場合は、同じフォルマントを異なるピッチで発音させたり、同じフレーズを異なるフォルマントで発音させることが出来ない、という問題がある。
【０００５】
本発明は、このような事情に鑑みてなされたもので、音源における処理動作の負荷低減を図りつつ、同じフォルマントを異なるピッチで発音させたり、同じフレーズを異なるフォルマントで発音させることができる楽音発生装置および楽音発生プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、人声のフォルマント成分毎の変調波形を記憶する記憶手段と、演奏操作に対応して生成される楽音波形を、人声のフォルマント成分別に濾波して被変調波形を形成する被変調波形形成手段と、演奏操作に対応して前記記憶手段から読み出される人声のフォルマント成分毎の変調波形によって、前記被変調波形発生手段が形成する被変調波形を変調してボコーダ音を発生するボコーダ音発生手段とを具備することを特徴とする。
【０００７】
上記請求項１に従属する請求項２に記載の発明では、前記ボコーダ音発生手段は、全鍵離鍵状態からの押鍵に応じて、前記記憶手段から読み出す変調波形を先頭にリセットすることを特徴とする。
【０００８】
請求項３に記載の発明では、楽音波形を人声のフォルマント成分別に濾波した被変調波形を記憶する記憶手段と、演奏操作に対応して人声のフォルマント成分毎の変調波形を発生する変調波形発生手段と、演奏操作に対応して前記記憶手段から読み出される人声のフォルマント成分別に濾波した被変調波形を、前記変調波形発生手段が発生する人声のフォルマント成分毎の変調波形により変調してボコーダ音を発生するボコーダ音発生手段とを具備することを特徴とする。
【０００９】
上記請求項３に従属する請求項４に記載の発明では、前記変調波形発生手段は、全鍵離鍵状態からの押鍵に応じて、発生する変調波形を先頭にリセットすることを特徴とする。
【００１０】
請求項５に記載の発明では、演奏操作に対応して生成される楽音波形を、人声のフォルマント成分別に濾波して被変調波形を形成する被変調波形形成処理と、予め記憶された人声のフォルマント成分毎の変調波形を演奏操作に対応して読み出し、読み出された人声のフォルマント成分毎の変調波形によって、前記被変調波形発生処理にて形成される被変調波形を変調してボコーダ音を発生するボコーダ音発生処理とをコンピュータで実行させることを特徴とする。
【００１１】
上記請求項５に従属する請求項６に記載の発明では、前記ボコーダ音発生処理は、全鍵離鍵状態からの押鍵に応じて、読み出す変調波形を先頭にリセットすることを特徴とする。
【００１２】
請求項７に記載の発明では、演奏操作に対応して人声のフォルマント成分毎の変調波形を発生する変調波形発生処理と、楽音波形を人声のフォルマント成分別に濾波した被変調波形を記憶しておき、演奏操作に対応して読み出した被変調波形を、前記変調波形発生手段が発生する人声のフォルマント成分毎の変調波形により変調してボコーダ音を発生するボコーダ音発生処理とをコンピュータで実行させることを特徴とする。
【００１３】
上記請求項７に従属する請求項８に記載の発明では、前記変調波形発生処理は、全鍵離鍵状態からの押鍵に応じて、発生する変調波形を先頭にリセットすることを特徴とする。
【発明の効果】
【００１４】
請求項１、５に記載の発明によれば、演奏操作に対応して生成される楽音波形を、人声のフォルマント成分別に濾波して被変調波形を形成する一方、予め記憶された人声のフォルマント成分毎の変調波形を演奏操作に対応して読み出し、読み出された人声のフォルマント成分毎の変調波形によって被変調波形を変調してボコーダ音を発生するので、音源における処理動作の負荷低減を図りつつ、同じフォルマントを異なるピッチで発音させることができる。
【００１５】
請求項２、６に記載の発明によれば、全鍵離鍵状態からの押鍵に応じて、読み出す変調波形を先頭にリセットするので、特別な操作を行うことなく変調波形のリセットを行うことができる。
【００１６】
請求項３、７に記載の発明によれば、楽音波形を人声のフォルマント成分別に濾波した被変調波形を記憶しておき、演奏操作に対応して読み出す被変調波形を、演奏操作に対応して発生する人声のフォルマント成分毎の変調波形により変調してボコーダ音を発生する。したがって、演奏操作に応じて変調波形を異ならせれば、音源における処理動作の負荷低減を図りつつ、同じフレーズを異なるフォルマントで発音させることができる。
【００１７】
請求項４、８に記載の発明によれば、全鍵離鍵状態からの押鍵に応じて、発生する変調波形を先頭にリセットするので、特別な操作を行うことなく変調波形のリセットを行うことができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の実施の一形態について説明する。
Ａ．構成
（１）全体構成
図１は、実施の一形態による電子楽器の全体構成を示すブロック図である。この図において、鍵盤１は、押離鍵操作（演奏操作）に応じたキーオン／キーオフイベントおよび鍵番号、ベロシティ等からなる演奏情報を発生する。スイッチ部２は、楽器パネルに配設される各種スイッチを備え、操作されたスイッチに対応したスイッチイベントを発生する。本発明の要旨に係わるスイッチとして、スイッチ部２には動作モードを設定するモードスイッチ（不図示）が設けられている。このモードスイッチの操作により動作モードを表すモード値Ｖｅが「０」〜「４」のいずれかに設定される。これらモード値Ｖｅが意図する内容については追って述べる。
【００１９】
ＣＰＵ３は、主にスイッチ部２が発生するスイッチイベントに応じてスイッチ処理（後述する）や、鍵盤１から供給される演奏情報に応じて鍵盤処理（後述する）を実行して音源１０に楽音形成を指示する。本発明の要旨に係わるＣＰＵ３の処理動作については追って詳述する。ＲＯＭ４は、プログラムエリアおよびデータエリアを備える。ＲＯＭ４のプログラムエリアには、ＣＰＵ３が実行する各種制御プログラムが記憶される。各種制御プログラムとは、後述のメインルーチン、スイッチ処理および鍵盤処理を含む。ＲＯＭ４のデータエリアには、複数種の波形パラメータＷＰが記憶される。波形パラメータＷＰの構成については後述する。
【００２０】
ＲＡＭ５は、ワークエリアおよびデータエリアを備える。ＲＡＭ５のワークエリアには、ＣＰＵ３が使用する各種レジスタ・フラグデータが一時記憶される。ＲＡＭ５に設けられる主要レジスタの構成については追って述べる。表示部６は、ＣＰＵ３から供給される表示制御信号に応じて楽器各部の動作状態やパラメータ設定状態などを表示する。ＭＩＤＩインタフェース７は、ＣＰＵ３の制御の下に、外部ＭＩＤＩ機器とＭＩＤＩデータ（ＭＩＤＩメッセージ）をシリアル形式で入出力する。マイク８は入力される音声を音声信号に変換して出力する。Ａ／Ｄ変換器９は、マイク８から入力される音声信号をＡ／Ｄ変換し、これを入力波形データとして出力する。Ａ／Ｄ変換器９が出力する入力波形データは、ＣＰＵ３の制御の下に、例えばＲＡＭ５のデータエリアに格納される。
【００２１】
音源１０は、ＣＰＵ３から供給される波形パラメータＷＰおよびモードスイッチ操作で設定されるモード値Ｖｅに対応した波形発生態様に従い、鍵盤１からの演奏情報に基づきＣＰＵ３が発生する楽音パラメータ（ノートオン／ノートオフコマンド等）に従って楽音形成する。音源１０の構成については後述する。波形ＲＯＭ１１は、上述したＲＯＭ４に格納された１２８種類の波形パラメータＷＰ［０］〜ＷＰ［１２７］に対応する波形データを記憶する。サウンドシステム１２は、音源１０から出力される楽音出力ｏｕｔをアナログ形式の波形信号にＤ／Ａ変換すると共に、Ｄ／Ａ変換された波形信号から不要ノイズを除去する等のフィルタリングを施してから信号増幅してスピーカから発音させる。
【００２２】
（２）音源１０の構成
次に、図２を参照して音源１０の構成を説明する。図２は音源１０の構成を示すブロック図である。この図に示す音源１０は、「波形発生部」、「選択部ＳＥＬ」、「分析部」および「合成部」に大別される。
【００２３】
波形発生部は、波形発生器ＯＳＣ１〜ＯＳＣ３２から構成される。波形発生器ＯＳＣ１〜ＯＳＣ３２は、それぞれ周知の波形メモリ読み出し方式にて構成され、ＣＰＵ３から供給される波形パラメータＷＰにより指定される波形データ（後述の原波形データ、分析波形データおよびエンベロープ波形データのいずれか）を波形ＲＯＭ１１から読み出して波形発生する。これら波形発生器ＯＳＣ１〜ＯＳＣ３２では、８つの波形発生器を１組とし、波形発生器ＯＳＣ１〜ＯＳＣ８、ＯＳＣ９〜ＯＳＣ１６、ＯＳＣ１７〜ＯＳＣ２４、ＯＳＣ２５〜ＯＳＣ３２の４組を形成している。
【００２４】
選択部ＳＥＬは、ＣＰＵ３から供給されるモード値Ｖｅに従って波形発生器ＯＳＣ１〜ＯＳＣ３２の各波形出力経路を選択する複数のセレクタから構成される。すなわち、選択部ＳＥＬでは、モード値Ｖｅが「０」の場合には、全ての波形発生器ＯＳＣ１〜ＯＳＣ３２の各波形出力を合成部の加算器Ｋ２５に直接入力する経路を選択する。
【００２５】
モード値Ｖｅが「１」の場合には、波形発生器ＯＳＣ１の波形出力を分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に入力すると共に、他の波形発生器ＯＳＣ２〜ＯＳＣ３２の波形出力を合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８に入力する経路を選択する。
【００２６】
モード値Ｖｅが「２」の場合には、波形発生器ＯＳＣ１〜ＯＳＣ８の波形出力を分析部の加算器Ｋ１〜Ｋ８にそれぞれ入力すると共に、他の波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８に入力する経路を選択する。
【００２７】
モード値Ｖｅが「３」の場合には、波形発生器ＯＳＣ１の波形出力を分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に入力すると共に、波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部の加算器Ｋ９〜Ｋ１６を介して当該合成部の加算器Ｋ１７〜Ｋ２４にそれぞれ入力する経路を選択する。なお、この場合、波形発生器ＯＳＣ２〜ＯＳＣ８は不使用になる。
【００２８】
モード値Ｖｅが「４」の場合には、波形発生器ＯＳＣ１〜ＯＳＣ８の波形出力を分析部の加算器Ｋ１〜Ｋ８にそれぞれ入力すると共に、波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部の加算器Ｋ９〜Ｋ１６を介して当該合成部の加算器Ｋ１７〜Ｋ２４にそれぞれ入力する経路を選択する。
【００２９】
分析部は、バンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８と、これらバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８の各後段にそれぞれ設けられるエンベロープ検出器ＥＮＶと、加算器Ｋ１〜Ｋ８とから構成される。バンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８は、それぞれ人声のフォルマント周波数に対応させた通過周波数帯域を有し、波形発生器ＯＳＣ１から入力される波形のフォルマント成分を抽出する。
【００３０】
エンベロープ検出器ＥＮＶは、整流器を含む絶対値回路およびＬＰＦを含む平滑化回路から構成され、バンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８において各々抽出されるフォルマント成分のエンベロープレベルを検出して出力する。加算器Ｋ１〜Ｋ８は、波形発生器ＯＳＣ１〜ＯＳＣ８の波形出力とエンベロープ検出器ＥＮＶの出力とを加算して合成部の乗算器Ｊ１〜Ｊ８に供給する。加算器Ｋ１〜Ｋ８の各出力を変調波形と称す。
【００３１】
合成部は、加算器Ｋ９〜Ｋ１６、バンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８、加算器Ｋ１７〜Ｋ２４、乗算器Ｊ１〜Ｊ８および加算器Ｋ２５を備える。加算器Ｋ９は、波形発生器ＯＳＣ９、ＯＳＣ１７、ＯＳＣ２５の各波形出力を加算して加算器Ｋ１７に供給する。加算器Ｋ１０は、波形発生器ＯＳＣ１０、ＯＳＣ１８、ＯＳＣ２６の各波形出力を加算して加算器Ｋ１８に供給する。加算器Ｋ１１＋ｎ（ｎ＝０〜５）も同様に、波形発生器ＯＳＣ１１＋ｎ、ＯＳＣ１９＋ｎ、ＯＳＣ２７＋ｎの各波形出力を加算して加算器Ｋ１９＋ｎにそれぞれ供給する。
【００３２】
バンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８は、上述した分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８と同一の通過周波数帯域を有し、モード値「１」であれば、波形発生器ＯＳＣ２〜ＯＳＣ３２から入力される波形を、モード値「２」であれば、波形発生器ＯＳＣ９〜ＯＳＣ３２から入力される波形を、８個の通過周波数帯域に分割濾波する。加算器Ｋ１７〜Ｋ２４は、加算器Ｋ９〜Ｋ１６の各出力とバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８の各出力とを加算する。加算器Ｋ１７〜Ｋ２４の各出力を被変調波形と称す。乗算器Ｊ１〜Ｊ８は、加算器Ｋ１７〜Ｋ２４の各出力に対し、上述した分析部の加算器Ｋ１〜Ｋ８の各出力を乗算する。加算器２５は、乗算器Ｊ１〜Ｊ８の各出力を加算して楽音出力ｏｕｔを発生する。
【００３３】
このように、音源１０では、分析部から出力される変調波形により合成部で生成される被変調波形を変調（乗算）する構成を有し、こうした構成において分析部から出力される変調波形および合成部にて生成される被変調波形の各波形内容がＣＰＵ３から供給されるモード値Ｖｅに応じて選択されることに特徴があり、そうしたことが意図するところについては追って述べる。
【００３４】
（３）ＲＯＭ４の構成
次に、図３を参照してＲＯＭ４のデータエリアに格納される波形パラメータＷＰの構成について説明する。図３は、ＲＯＭ４のデータエリアに１２８種類の波形パラメータＷＰ［０］〜ＷＰ［１２７］が格納された一例を図示している。１つの波形パラメータＷＰは、波形ＲＯＭ１１に格納される原波形データの読み出し属性を表す原波形パラメータＰｔ０〜Ｌｅａ０と、波形ＲＯＭ１１に格納される分析波形データの読み出し属性を表す分析波形パラメータＳａ１［０］〜Ｌｅａ１［７］と、波形ＲＯＭ１１に格納されるエンベロープ波形データの読み出し属性を表すエンベロープ波形パラメータＳａ２［０］〜Ｌｅａ２［７］とから構成される。
【００３５】
原波形パラメータＰｔ０〜Ｌｅａ０は、対応する原波形データのピッチを表すオリジナルピッチＰｔ０、原波形データの読み出し開始アドレスＳａ０、ループ読み出し開始アドレスＬｓａ０およびループ読み出し終了アドレスＬｅａ０から構成される。
【００３６】
分析波形データとは、分析フィルタバンク（前述したバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に相当）を用いて事前に原波形データを周波数分析し、人声のフォルマント周波数に対応させた通過周波数帯域毎のフォルマント成分を表すデータである。つまり、分析波形データは８つの通過周波数帯域に対応した８つのフォルマント成分の波形データとなる。
【００３７】
各フォルマント成分の分析波形パラメータＳａ１［０］〜Ｌｅａ１［７］は、対応する分析波形データの読み出し開始アドレスＳａ１［０］〜Ｓａ１［７］と、ループ読み出し開始アドレスＬｓａ１［０］〜Ｌｓａ１［７］と、ループ読み出し終了アドレスＬｅａ１［０］〜Ｌｅａ１［７］とから構成される。
【００３８】
エンベロープ波形データとは、分析フィルタバンク（前述したバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に相当）を用いて事前に原波形データを周波数分析し、人声のフォルマント周波数に対応させた通過周波数帯域毎のフォルマント成分を表す分析波形データからエンベロープ検出した波形データである。ここで、エンベロープ波形データの一例を図４に図示する。図４は、モード値Ｖｅが「２」又は「４」の場合に、音源１０の波形発生器ＯＳＣ１〜ＯＳＣ８（図２参照）に割り当てる各フォルマント成分のエンベロープ波形データを図示したものである。
【００３９】
各フォルマント成分のエンベロープ波形パラメータＳａ２［０］〜Ｌｅａ２［７］は、対応するエンベロープ波形データの読み出し開始アドレスＳａ２［０］〜Ｓａ２［７］、ループ読み出し開始アドレスＬｓａ２［０］〜Ｌｓａ２［７］およびループ読み出し終了アドレスＬｅａ２［０］〜Ｌｅａ２［７］から構成される。
【００４０】
（４）ＲＡＭ５の構成
次に、図５を参照してＲＡＭ５の主要レジスタの構成について説明する。図５において、レジスタＶｅにはモードスイッチ操作により設定されるモード値Ｖｅが格納される。レジスタＶｍｐには変調波形番号が格納される。レジスタＶｍｐに格納される変調波形番号は、人声音の原波形データ、分析波形データおよびエンベロープ波形データのいずれかを指定する。レジスタＶｍｓには変調波形読み出し速度が格納される。
【００４１】
レジスタＶｃｐには被変調波形番号が格納される。レジスタＶｃｐに格納される被変調波形番号は、楽器音の原波形データ、分析波形データおよびエンベロープ波形データのいずれかを指定する。カウンタＫｃは押鍵数を計数する。レジスタＣｏｓには被変調波形を発生するように割当てられた波形発生器ＯＳＣの先頭番号が格納される。レジスタＮｎ［０］〜Ｎｎ［３１］には、各波形発生器ＯＳＣ１〜ＯＳＣ３２に割当てられた鍵番号ｋが各々格納される。
【００４２】
レジスタＣａ［０］〜Ｃａ［３１］には、各波形発生器ＯＳＣ１〜ＯＳＣ３２における現在読み出しアドレスが各々格納される。レジスタＬｓａ［０］〜Ｌｓａ［３１］には各波形発生器ＯＳＣ１〜ＯＳＣ３２に割当てられたループ読み出し開始アドレスが各々格納される。レジスタＬｅａ［０］〜Ｌｅａ［３１］には各波形発生器ＯＳＣ１〜ＯＳＣ３２に割当てられたループ読み出し終了アドレスが各々格納される。レジスタＰｔ［０］〜Ｐｔ［３１］には各波形発生器ＯＳＣ１〜ＯＳＣ３２における波形読み出し速度が各々格納される。
【００４３】
Ｂ．動作
次に、図６〜図１１を参照して、上記構成による実施形態の動作を説明する。以下では、最初に全体の概略動作としてＣＰＵ３が実行するメインルーチンの動作を説明した後、このメインルーチンを構成するスイッチ処理および鍵盤処理、並びに音源１０が所定周期毎に実行する発音タイマ処理の各動作について説明する。
【００４４】
（１）メインルーチンの動作
上記構成による電子楽器がパワーオンされると、ＣＰＵ３は図６に示すメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ５に格納される各種レジスタやフラグ類をリセットしたり初期値をセットする他、音源１０にイニシャライズを指示する初期化処理を行う。そして、イニシャライズ完了後、ステップＳＡ２に進み、スイッチ部２のスイッチ操作に応じたスイッチ処理、例えばモードスイッチ操作に応じて動作モードを設定する等の処理を実行する。
【００４５】
続いて、ステップＳＡ３では、鍵盤１の押離鍵操作に応じた楽音の発音／消音を音源１０に指示する鍵盤処理を実行する。そして、ステップＳＡ４では、例えば上記ステップＳＡ２のスイッチ処理にて設定された動作モードの内容を表示部６に表示する処理等の、その他の処理を実行する。以後、電源がオフされるまで上述のステップＳＡ２〜ＳＡ４を繰り返し実行する。
【００４６】
（１）スイッチ処理の動作
次に、図７を参照してスイッチ処理の動作を説明する。上述したメインルーチンのステップＳＡ２（図６参照）を介して本処理が実行されると、ＣＰＵ３は図７に図示するステップＳＢ１に進み、モードスイッチ操作によりモード値Ｖｅが変更されたか否かを判断する。モードスイッチ操作が行われず、モード値Ｖｅに変更が無ければ、判断結果は「ＮＯ」となり、ステップＳＢ７に進む。ステップＳＢ７では、例えば音色パラメータ選択スイッチの操作により設定される変調波形番号や被変調波形番号を、それぞれレジスタＶｍｐ、レジスタＶｃｐにストアしたり、変調波形音高指定スイッチ操作により設定される基準音高に対応した変調波形読み出し速度をレジスタＶｍｓにストアする等の、その他のスイッチ処理を実行して本処理を終える。
【００４７】
一方、モードスイッチ操作によりモード値Ｖｅが変更されると、上記ステップＳＢ１の判断結果が「ＹＥＳ」になり、ステップＳＢ２に進む。ステップＳＢ２では、音源１０にオールノートオフイベントを供給し、当該音源１０の波形発生部が備える波形発生器ＯＳＣ１〜ＯＳＣ３２に波形発生停止を指示する全ＯＳＣ消音処理を行う。また、ステップＳＢ２では、全ＯＳＣ消音処理に伴い、各波形発生器ＯＳＣ１〜ＯＳＣ３２の現在読み出しアドレスを一時記憶するレジスタＣａ［０］〜Ｃａ［３１］に波形発生停止中を表す値「−１」をストアする。次いで、ステップＳＢ３以降では、モードスイッチ操作に応じて変更されたモード値Ｖｅに対応する処理を実行する。以下、モード値Ｖｅ別に動作を説明する。
【００４８】
＜モード値Ｖｅが「０」の場合＞
前述したように、モード値Ｖｅが「０」の場合には、音源１０における波形発生部の波形発生器ＯＳＣ１〜ＯＳＣ３２（図２参照）の波形出力を、音源１０の合成部の加算器Ｋ２５に直接入力する形態である。つまり、被変調波形を変調波形にて変調してボコーダ音を形成する形態ではなく、全ての波形発生器ＯＳＣ１〜ＯＳＣ３２を楽器音形成に割り当て可能な状態なので、ステップＳＢ４に進み、被変調波形用ＯＳＣ先頭番号を保持するレジスタＣｏｓに「０」をストアした後、上述のステップＳＢ７を実行してから本処理を終える。
【００４９】
＜モード値Ｖｅが「１」の場合＞
モード値Ｖｅが「１」の場合には、音源１０における波形発生器ＯＳＣ１の波形出力を分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に入力すると共に、他の波形発生器ＯＳＣ２〜ＯＳＣ３２の波形出力を合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８に入力する形態である。つまり、被変調波形は波形発生器ＯＳＣ２〜ＯＳＣ３２に割り当て可能になるので、ステップＳＢ５に進み、波形発生器ＯＳＣ２を指定する被変調波形用ＯＳＣ先頭番号「１」をレジスタＣｏｓにストアした後、上述のステップＳＢ７を実行してから本処理を終える。
【００５０】
＜モード値Ｖｅが「２」の場合＞
モード値Ｖｅが「２」の場合には、音源１０における波形発生器ＯＳＣ１〜ＯＳＣ８の波形出力を分析部の加算器Ｋ１〜Ｋ８にそれぞれ入力すると共に、他の波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８に入力する形態である。つまり、被変調波形は波形発生器ＯＳＣ９〜ＯＳＣ３２に割り当て可能になるので、ステップＳＢ６に進み、波形発生器ＯＳＣ９を指定する被変調波形用ＯＳＣ先頭番号「８」をレジスタＣｏｓにストアした後、上述のステップＳＢ７を実行してから本処理を終える。
【００５１】
＜モード値Ｖｅが「３」の場合＞
モード値Ｖｅが「３」の場合には、音源１０における波形発生器ＯＳＣ１の波形出力を分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８に入力すると共に、波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部の加算器Ｋ９〜Ｋ１６を介して当該合成部の加算器Ｋ１７〜Ｋ２４にそれぞれ入力する形態である。つまり、被変調波形は波形発生器ＯＳＣ９〜ＯＳＣ３２に割り当て可能になるので、ステップＳＢ６に進み、波形発生器ＯＳＣ９を指定する被変調波形用ＯＳＣ先頭番号「８」をレジスタＣｏｓにストアした後、上述のステップＳＢ７を実行してから本処理を終える。
【００５２】
＜モード値Ｖｅが「４」の場合＞
モード値Ｖｅが「４」の場合には、音源１０における波形発生器ＯＳＣ１〜ＯＳＣ８の波形出力を分析部の加算器Ｋ１〜Ｋ８にそれぞれ入力すると共に、波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力を合成部の加算器Ｋ９〜Ｋ１６を介して当該合成部の加算器Ｋ１７〜Ｋ２４にそれぞれ入力する形態である。つまり、被変調波形は波形発生器ＯＳＣ９〜ＯＳＣ３２に割り当て可能になるので、ステップＳＢ６に進み、波形発生器ＯＳＣ９を指定する被変調波形用ＯＳＣ先頭番号「８」をレジスタＣｏｓにストアした後、上述のステップＳＢ７を実行してから本処理を終える。
【００５３】
（２）鍵盤処理の動作
次に、図８〜図９を参照して鍵盤処理の動作を説明する。上述したメインルーチンのステップＳＡ３（図６参照）を介して本処理が実行されると、ＣＰＵ３は図８に図示するステップＳＣ１に進み、鍵盤１の鍵状態を検出する鍵走査を行い、この鍵走査により得られた鍵状態が「鍵変化無し」、「鍵番号ｋの押鍵」および「鍵番号ｋの離鍵」のいずれであるかを判断する。鍵変化無しの場合には、何も行わずに本処理を完了させる。鍵番号ｋの押鍵の場合には、ステップＳＣ２〜ＳＣ１０を実行する。鍵番号ｋの離鍵の場合には、ステップＳＣ１１〜ＳＣ１５を実行する。以下、鍵番号ｋの押鍵の場合と、鍵番号ｋの離鍵の場合とに分けて説明を進める。
【００５４】
ａ．鍵番号ｋの押鍵の場合
鍵番号ｋの押鍵であると、ステップＳＣ２に進み、押鍵数を計数するカウンタＫｃ（以後、押鍵数Ｋｃと記す）をインクリメントして歩進させる。次いで、ステップＳＣ３では、歩進された押鍵数Ｋｃが「１」、すなわち全鍵離鍵状態からの押鍵であるか否かを判断する。以下、全鍵離鍵状態からの押鍵の場合と、そうでない場合とに分けて動作を説明する。
【００５５】
＜全鍵離鍵状態からの押鍵である場合＞
この場合、ステップＳＣ３の判断結果が「ＹＥＳ」になり、ステップＳＣ４に進み、現在設定されているモード値Ｖｅを判断する。モード値Ｖｅが「０」であると、全鍵離鍵状態からの押鍵でない場合（後述する）と同様に、図９に示すステップＳＣ７に進む。
【００５６】
モード値Ｖｅが「１」又は「３」であると、ステップＳＣ５に進む。ステップＳＣ５では、ＲＯＭ４に格納される波形パラメータＷＰ［０］〜ＷＰ［１２７］の内、レジスタＶｍｐに格納される変調波形番号で指定される波形パラメータＷＰ［Ｖｍｐ］における、原波形データの読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｓａ０をレジスタＣａ［０］に、原波形データのループ読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｌｓａ０をレジスタＬｓａ［０］に、原波形データのループ読み出し終了アドレスＷＰ［Ｖｍｐ］．Ｌｅａ０をレジスタＬｅａ［０］にストアすると共に、レジスタＶｍｓに格納される変調波形読み出し速度をレジスタＰｔ［０］にストアした後、後述のステップＳＣ７に進む。
【００５７】
これにより、モード値Ｖｅが「１」又は「３」の場合には、全鍵離鍵状態からの押鍵に応じて、音源１０の波形発生器ＯＳＣ１に割り当てる波形属性が設定され、この波形属性を参照して波形発生器ＯＳＣ１が波形出力する。
【００５８】
すなわち、音源１０の波形発生器ＯＳＣ１は、レジスタＣａ［０］の読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｓａ０、レジスタＬｓａ［０］のループ読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｌｓａ０およびレジスタＬｅａ［０］のループ読み出し終了アドレスＷＰ［Ｖｍｐ］．Ｌｅａ０により指定される原波形データを、レジスタＰｔ［０］の変調波形読み出し速度に従って波形ＲＯＭ１１から読み出して波形出力する。
【００５９】
これに対し、モード値Ｖｅが「２」又は「４」であると、ステップＳＣ６に進む。ステップＳＣ６では、ＲＯＭ４の波形パラメータＷＰ［０］〜ＷＰ［１２７］の内、変調波形番号Ｖｍｐで指定される波形パラメータＷＰ［Ｖｍｐ］における、各フォルマント成分のエンベロープ波形データの読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｓａ２［０］〜ＷＰ［Ｖｍｐ］．Ｓａ２［７］をそれぞれレジスタＣａ［０］〜Ｃａ［７］に、ループ読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｌｓａ２［０］〜ＷＰ［Ｖｍｐ］．Ｌｓａ２［７］をそれぞれレジスタＬｓａ［０］〜Ｌｓａ［７］に、ループ読み出し終了アドレスＷＰ［Ｖｍｐ］．Ｌｅａ２［０］〜ＷＰ［Ｖｍｐ］．Ｌｅａ２［７］をそれぞれレジスタＬｅａ［０］〜Ｌｅａ［７］にストアすると共に、対応する原波形データのオリジナルピッチＷＰ［Ｖｍｐ］．Ｐｔ０をレジスタＰｔ［０］〜Ｐｔ［７］にストアした後、後述のステップＳＣ７に進む。
【００６０】
これにより、モード値Ｖｅが「２」又は「４」の場合には、全鍵離鍵状態からの押鍵に応じて、音源１０の波形発生器ＯＳＣ１〜ＯＳＣ８に割り当てる波形属性が設定され、この波形属性を参照して波形発生器ＯＳＣ１〜ＯＳＣ８が波形出力する。
【００６１】
すなわち、音源１０の波形発生器ＯＳＣ１〜ＯＳＣ８は、レジスタＣａ［０］〜Ｃａ［７］の読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｓａ２［０］〜ＷＰ［Ｖｍｐ］．Ｓａ２［７］、レジスタＬｓａ［０］〜Ｌｓａ［７］のループ読み出し開始アドレスＷＰ［Ｖｍｐ］．Ｌｓａ２［０］〜ＷＰ［Ｖｍｐ］．Ｌｓａ２［７］およびレジスタＬｅａ［０］〜Ｌｅａ［７］のループ読み出し終了アドレスＷＰ［Ｖｍｐ］．Ｌｅａ２［０］〜ＷＰ［Ｖｍｐ］．Ｌｅａ２［７］により指定される各フォルマント成分のエンベロープ波形データを、レジスタＰｔ［０］〜Ｐｔ［７］のオリジナルピッチＷＰ［Ｖｍｐ］．Ｐｔ０に従って波形ＲＯＭ１１から読み出して波形出力する。
【００６２】
＜全鍵離鍵状態からの押鍵でない場合＞
この場合、ステップＳＣ３の判断結果が「ＮＯ」になり、図９に図示するステップＳＣ７に進む。ステップＳＣ７では、レジスタＣｏｓに格納される被変調波形用ＯＳＣ先頭番号から「３１」の範囲でレジスタＣａ［ｓ］＝−１なるポインタｓが存在するか否か、つまりレジスタＣｏｓに格納される被変調波形用ＯＳＣ先頭番号で指定される波形発生器ＯＳＣ（Ｃｏｓ＋１）から波形発生器ＯＳＣ３２の内から発音割り当てされていない波形発生器ＯＳＣを検索する。該当する波形発生器ＯＳＣが存在しなければ、判断結果は「ＮＯ」になり、本処理を完了させるが、発音割り当てされていない波形発生器ＯＳＣが存在すると、上記ステップＳＣ７の判断結果は「ＹＥＳ」になり、ステップＳＣ８に進み、現在のモード値Ｖｅを判断する。
【００６３】
モード値Ｖｅが「０」、「１」、「２」のいずれかであると、ステップＳＣ９に進む。ステップＳＣ９では、押鍵された鍵の鍵番号ｋを、発音割り当てされていない波形発生器ＯＳＣ（ｓ＋１）を表すポインタｓで指定されるレジスタＮｎ［ｓ］にストアする。また、ステップＳＣ９では、ＲＯＭ４に格納される波形パラメータＷＰ［０］〜ＷＰ［１２７］の内、レジスタＶｃｐに格納される被変調波形番号で指定される波形パラメータＷＰ［Ｖｃｐ］における、原波形データの読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｓａ０をレジスタＣａ［ｓ］に、原波形データのループ読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｌｓａ０をレジスタＬｓａ［ｓ］に、原波形データのループ読み出し終了アドレスＷＰ［Ｖｃｐ］．Ｌｅａ０をレジスタＬｅａ［ｓ］にストアすると共に、押鍵された鍵の鍵番号ｋに対応するピッチ（被変調波形読み出し速度）をレジスタＰｔ［ｓ］にストアして本処理を終える。
【００６４】
これにより、モード値Ｖｅが「０」、「１」、「２」のいずれかの場合には、押鍵に応じて、発音割り当てされていない波形発生器ＯＳＣ（ｓ＋１）を探し出し、この波形発生器ＯＳＣ（ｓ＋１）に割り当てる波形属性が設定され、この波形属性を参照して波形発生器ＯＳＣ（ｓ＋１）が波形出力する。
【００６５】
すなわち、押鍵時点で発音割り当てされていない音源１０の波形発生器ＯＳＣ（ｓ＋１）は、押鍵に応じて、レジスタＣａ［ｓ］の読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｓａ０、レジスタＬｓａ［ｓ］のループ読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｌｓａ０およびレジスタＬｅａ［ｓ］のループ読み出し終了アドレスＷＰ［Ｖｃｐ］．Ｌｅａ０により指定される原波形データを、レジスタＰｔ［ｓ］の被変調波形読み出し速度に従って波形ＲＯＭ１１から読み出して波形出力する。
【００６６】
モード値Ｖｅが「３」又は「４」の場合には、ステップＳＣ１０に進む。ステップＳＣ１０では、押鍵された鍵の鍵番号ｋを、発音割り当てされていない波形発生器ＯＳＣ（ｓ＋１）を表すポインタｓで指定されるレジスタＮｎ［ｓ］〜Ｎｎ［ｓ＋７］にストアする。また、ステップＳＣ１０では、ＲＯＭ４に格納される波形パラメータＷＰ［０］〜ＷＰ［１２７］の内、レジスタＶｃｐに格納される被変調波形番号で指定される波形パラメータＷＰ［Ｖｃｐ］における、各フォルマント成分の分析波形データの読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｓａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｓａ１［ｓ＋７］をレジスタＣａ［ｓ］〜Ｃａ［ｓ＋７］に、各フォルマント成分の分析波形データのループ読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｌｓａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｌｓａ１［ｓ＋７］をレジスタＬｓａ［ｓ］〜Ｌｓａ［ｓ＋７］に、各フォルマント成分の分析波形データのループ読み出し終了アドレスＷＰ［Ｖｃｐ］．Ｌｅａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｌｅａ１［ｓ＋７］をレジスタＬｅａ［ｓ］〜Ｌｅａ［ｓ＋７］にそれぞれストアすると共に、対応する原波形データのオリジナルピッチＷＰ［Ｖｃｐ］．Ｐｔ０をレジスタＰｔ［ｓ］〜Ｐｔ［ｓ＋７］にストアして本処理を終える。
【００６７】
これにより、モード値Ｖｅが「３」又は「４」の場合には、押鍵に応じて、発音割り当てされていない波形発生器ＯＳＣ（ｓ＋１）を探し出し、この波形発生器ＯＳＣ（ｓ＋１）から連続する８個の波形発生器ＯＳＣにそれぞれ割り当てる波形属性が設定され、これら波形属性を参照して波形発生器ＯＳＣ（ｓ＋１）から連続する８個の波形発生器ＯＳＣが各々波形出力する。
【００６８】
すなわち、波形発生器ＯＳＣ（ｓ＋１）から連続する８個の波形発生器ＯＳＣは、押鍵に応じて、レジスタＣａ［ｓ］〜Ｃａ［ｓ＋７］の読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｓａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｓａ１［ｓ＋７］、レジスタＬｓａ［ｓ］〜Ｌｓａ［ｓ＋７］のループ読み出し開始アドレスＷＰ［Ｖｃｐ］．Ｌｓａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｌｓａ１［ｓ＋７］、レジスタＬｅａ［ｓ］〜Ｌｅａ［ｓ＋７］のループ読み出し終了アドレスＷＰ［Ｖｃｐ］．Ｌｅａ１［ｓ］〜ＷＰ［Ｖｃｐ］．Ｌｅａ１［ｓ＋７］により指定される各フォルマント成分の分析波形データを、レジスタＰｔ［ｓ］〜Ｐｔ［ｓ＋７］のオリジナルピッチＷＰ［Ｖｃｐ］．Ｐｔ０に従って波形ＲＯＭ１１から読み出して波形出力する。
【００６９】
ｂ．鍵番号ｋの離鍵の場合
鍵番号ｋの離鍵であると、図８に示すステップＳＣ１１に進み、押鍵数Ｋｃをデクリメントする。次いで、ステップＳＣ１２では、レジスタＣｏｓに格納される被変調波形用ＯＳＣ先頭番号から「３１」の範囲でレジスタＮｎ［ｓ］＝ｋなるポインタｓが存在するか否か、つまりレジスタＣｏｓに格納される被変調波形用ＯＳＣ先頭番号で指定される波形発生器ＯＳＣ（Ｃｏｓ＋１）から波形発生器ＯＳＣ３２の内、離鍵された鍵の鍵番号ｋが割り当てられた波形発生器ＯＳＣを検索する。該当する波形発生器ＯＳＣが存在しなければ、判断結果は「ＮＯ」になり、本処理を完了させるが、離鍵された鍵の鍵番号ｋが割り当てられた波形発生器ＯＳＣが存在すると、上記ステップＳＣ１２の判断結果は「ＹＥＳ」になり、ステップＳＣ１３に進み、現在のモード値Ｖｅを判断する。
【００７０】
モード値Ｖｅが「０」、「１」、「２」のいずれかであると、ステップＳＣ１４に進む。ステップＳＣ１４では、ポインタｓで指定され、離鍵された鍵の鍵番号ｋが割り当てられた波形発生器ＯＳＣ（ｓ＋１）の消音を音源１０に指示すると共に、レジスタＣａ［ｓ］に波形発生停止中を表す値「−１」をストアして本処理を終える。これにより、音源１０では、離鍵された鍵の鍵番号ｋが割り当てられた波形発生器ＯＳＣ（ｓ＋１）の波形発生を停止させる。
【００７１】
モード値Ｖｅが「３」又は「４」の場合には、ステップＳＣ１５に進む。ステップＳＣ１５では、ポインタｓ〜ｓ＋７で指定され、離鍵された鍵の鍵番号ｋが割り当てられた８つの波形発生器ＯＳＣ（ｓ＋１）〜ＯＳＣ（ｓ＋８）の消音を音源１０に指示すると共に、レジスタＣａ［ｓ］〜Ｃａ［ｓ＋７］に波形発生停止中を表す値「−１」をストアして本処理を終える。これにより、音源１０では、離鍵された鍵の鍵番号ｋが割り当てられた８つの波形発生器ＯＳＣ（ｓ＋１）〜ＯＳＣ（ｓ＋８）の波形発生を停止させる。
【００７２】
（３）発音タイマ処理の動作
次に、図１０〜図１１を参照して音源１０が実行する発音タイマ処理の動作を説明する。音源１０はタイマ割込みにより所定周期毎に本処理を実行しており、その実行タイミングになると、図１０に図示するステップＳＤ１に進む。ステップＳＤ１では、レジスタＡｄ、Ａｃｔ、Ａｍｔ、Ａｃ［０］〜Ａｃ［７］、Ａｍ［０］〜Ａｍ［７］およびポインタｎをゼロリセットする。
【００７３】
なお、レジスタＡｄは、音源１０の合成部の加算器Ｋ２５（図２参照）に直接入力される波形値を保持する。レジスタＡｃｔは、音源１０の合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８（図２参照）に入力される波形値を保持する。レジスタＡｍｔは、音源１０の分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８（図２参照）に入力される波形値を保持する。レジスタＡｃ［０］〜Ａｃ［７］は、音源部１０の合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力される波形値を保持する。レジスタＡｍ［０］〜Ａｍ［７］は、音源部１０の分析部の加算器Ｋ１〜Ｋ８（図２参照）にそれぞれ入力される波形値を保持する。ポインタｎは、音源１０の波形発生器ＯＳＣ１〜ＯＳＣ３２を指定する。
【００７４】
次いで、ステップＳＤ２では、ポインタｎで指定されるレジスタＣａ［ｎ］の値が波形発生停止中を表す値「−１」であるか否か、つまりポインタｎで指定される波形発生器ＯＳＣ（ｎ＋１）が消音中であるかどうかを判断する。波形発生器ＯＳＣ（ｎ＋１）が消音中であれば、判断結果は「ＹＥＳ」になり、ステップＳＤ１１に進み、ポインタｎをインクリメントして歩進させる。そして、ステップＳＤ１２では、歩進されたポインタｎの値が「３２」に達したか否か、すなわち全ての波形発生器ＯＳＣ１〜ＯＳＣ３２について消音中か否かをチェックし終えたかどうかを判断する。チェックし終えていなければ、判断結果は「ＮＯ」になり、再びステップＳＤ２に処理を戻す。
【００７５】
そして、ステップＳＤ２において、発音中（波形発生中）の波形発生器ＯＳＣが見つかると、当該ステップＳＤ２の判断結果が「ＮＯ」になり、ステップＳＤ３に進む。ステップＳＤ３では、ポインタｎで指定されるレジスタＣａ［ｎ］にレジスタＰｔ［ｎ］の波形読み出し速度を加算し、レジスタＣａ［ｎ］の現在読み出しアドレスを更新する。また、ステップＳＤ３では、波形読み出し速度Ｐｔ［ｎ］を加算した現在読み出しアドレスＣａ［ｎ］がループ読み出し終了アドレスＬｅａ［ｎ］を超えた場合には、現在読み出しアドレスＣａ［ｎ］からループ読み出し終了アドレスＬｅａ［ｎ］を減算した値にループ読み出し開始アドレスＬｓａ［ｎ］を加算し、これを現在読み出しアドレスＣａ［ｎ］として更新する。
【００７６】
次いで、ステップＳＤ４では、上記ステップＳＤ３にて更新された現在読み出しアドレスＣａ［ｎ］に応じて波形ＲＯＭ１１から波形データを読み出し、読み出した波形データに補間処理を施して波形値ｄを発生する。なお、ここで言う補間処理とは、整数部アドレスで読み出した波形データを小数部アドレスで内挿する処理を指す。こうして、ポインタｎで指定される波形発生器ＯＳＣ（ｎ＋１）における新たな波形値ｄが生成されると、ステップＳＤ５以降を実行してモード値Ｖｅに応じた波形形成を行う。以下、モード値Ｖｅ別の波形形成動作について述べる。
【００７７】
＜モード値Ｖｅが「０」の場合＞
この場合、ステップＳＤ５を介してステップＳＤ６に進み、上記ステップＳＤ４にて生成した波形値ｄをレジスタＡｄに加算した後、上述したステップＳＤ１１に進む。
したがって、モード値Ｖｅが「０」であると、全ての波形発生器ＯＳＣ１〜ＯＳＣ３２の各波形出力がレジスタＡｄで累算される。
【００７８】
＜モード値Ｖｅが「１」の場合＞
この場合、ステップＳＤ５を介してステップＳＤ７に進む。ステップＳＤ７では、ポインタｎの値が「０」であれば、波形発生器ＯＳＣ１が発生した波形値ｄをレジスタＡｍｔにストアし、ポインタｎの値が「０」より大きければ、波形発生器ＯＳＣ２〜ＯＳＣ３２が発生した波形値ｄをレジスタＡｃｔに加算した後、上述したステップＳＤ１１に進む。
したがって、モード値Ｖｅが「１」であると、波形発生器ＯＳＣ１の波形出力がレジスタＡｍｔに保持され、波形発生器ＯＳＣ２〜ＯＳＣ３２の各波形出力がレジスタＡｃｔで累算される。
【００７９】
＜モード値Ｖｅが「２」の場合＞
この場合、ステップＳＤ５を介してステップＳＤ８に進む。ステップＳＤ８では、ポインタｎの値が「０」〜「７」であれば、そのポインタｎで指定されるレジスタＡｍ［０］〜Ａｍ［７］に、波形発生器ＯＳＣ１〜ＯＳＣ８が発生した波形値ｄをそれぞれストアし、ポインタｎの値が「８」以上では、波形発生器ＯＳＣ９〜ＯＳＣ３２が発生した各波形値ｄをレジスタＡｃｔに加算した後、上述したステップＳＤ１１に進む。
したがって、モード値Ｖｅが「２」であれば、波形発生器ＯＳＣ１〜ＯＳＣ８の各波形出力がレジスタＡｍ［０］〜Ａｍ［７］に保持され、波形発生器ＯＳＣ９〜ＯＳＣ３２の各波形出力がレジスタＡｃｔで累算される。
【００８０】
＜モード値Ｖｅが「３」の場合＞
この場合、ステップＳＤ５を介してステップＳＤ９に進む。ステップＳＤ９では、ポインタｎの値が「０」であれば、波形発生器ＯＳＣ１が発生した波形値ｄをレジスタＡｍｔにストアする。また、ステップＳＤ９では、ポインタｎの値が「８」以上であれば、ポインタｎの「８」の剰余で指定されるレジスタＡｃ［０］〜Ａｃ［７］に、対応する波形発生器ＯＳＣ９〜ＯＳＣ３２が発生した波形値ｄを加算する。すなわちレジスタＡｃ［０］では、波形発生器ＯＳＣ９、ＯＳＣ１７およびＯＳＣ２５の各波形値ｄを加算し、レジスタＡｃ［１］では、波形発生器ＯＳＣ１０、ＯＳＣ１８およびＯＳＣ２６の各波形値ｄを加算する。以後、同様にして、レジスタＡｃ［７］では、波形発生器ＯＳＣ１６、ＯＳＣ２４およびＯＳＣ３２の各波形値ｄを加算する。
したがって、モード値Ｖｅが「３」であれば、波形発生器ＯＳＣ１の波形出力がレジスタＡｍｔに保持され、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力される波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力がレジスタＡｃ［０］〜Ａｃ［７］にて加算される。
【００８１】
＜モード値Ｖｅが「４」の場合＞
この場合、ステップＳＤ５を介してステップＳＤ１０に進む。ステップＳＤ１０では、ポインタｎの値が「０」〜「７」であれば、そのポインタｎで指定されるレジスタＡｍ［０］〜Ａｍ［７］に、波形発生器ＯＳＣ１〜ＯＳＣ８が発生した波形値ｄをそれぞれストアする。また、ステップＳＤ１０では、ポインタｎの値が「８」以上であれば、ポインタｎの「８」の剰余で指定されるレジスタＡｃ［０］〜Ａｃ［７］に、対応する波形発生器ＯＳＣ９〜ＯＳＣ３２が発生した波形値ｄを加算する。すなわちレジスタＡｃ［０］では、波形発生器ＯＳＣ９、ＯＳＣ１７およびＯＳＣ２５の各波形値ｄを加算し、レジスタＡｃ［１］では、波形発生器ＯＳＣ１０、ＯＳＣ１８およびＯＳＣ２６の各波形値ｄを加算する。以後、同様にして、レジスタＡｃ［７］では、波形発生器ＯＳＣ１６、ＯＳＣ２４およびＯＳＣ３２の各波形値ｄを加算する。
したがって、モード値Ｖｅが「４」であれば、波形発生器ＯＳＣ１〜ＯＳＣ８の各波形出力がレジスタＡｍ［０］〜Ａｍ［７］に保持され、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力される波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力がレジスタＡｃ［０］〜Ａｃ［７］にて加算される。
【００８２】
以上のようにして、モード値Ｖｅに応じた波形発生器ＯＳＣ１〜ＯＳＣ３２の波形形成を終えると、ステップＳＤ１２の判断結果が「ＹＥＳ」となり、音源１０は図１１に図示するステップＳＤ１３に進む。ステップＳＤ１３以降では、モード値Ｖｅに応じて波形出力する。以下、モード値Ｖｅ別の波形出力動作について述べる。
【００８３】
＜モード値Ｖｅが「０」の場合＞
この場合、ステップＳＤ１３を介してステップＳＤ１４に進む。ステップＳＤ１４では、レジスタＡｄにて累算された波形発生器ＯＳＣ１〜ＯＳＣ３２の各波形出力をレジスタＯｕｔｐｕｔにストアし、続くステップＳＤ１５では、そのレジスタＯｕｔｐｕｔの内容を楽音出力ｏｕｔとして出力する。
【００８４】
＜モード値Ｖｅが「１」の場合＞
この場合、ステップＳＤ１３を介してステップＳＤ１６に進む。ステップＳＤ１６では、レジスタＡｍｔに格納される波形発生器ＯＳＣ１の波形出力を、分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８（図２参照）に入力し、さらにバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８の各後段に設けられるエンベロープ検出器ＥＮＶにてそれぞれ抽出されるフォルマント成分のエンベロープ波形を、分析部の加算器Ｋ１〜Ｋ８（図２参照）にそれぞれ入力する波形としてレジスタＡｍ［０］〜Ａｍ［７］にストアする。
【００８５】
また、ステップＳＤ１６では、レジスタＡｃｔにて累算された波形発生器ＯＳＣ２〜ＯＳＣ３２の各波形出力を、合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８（図２参照）に入力して抽出される各フォルマント成分を、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力する波形としてレジスタＡｃ［０］〜Ａｃ［７］にストアする。
【００８６】
次いで、ステップＳＤ１７では、合成部の乗算器Ｊ１〜Ｊ８（図２参照）において、分析部の加算器Ｋ１〜Ｋ８の各出力（変調波形）によって合成部の加算器Ｋ１７〜Ｋ２４の各出力（被変調波形）を乗算（変調）して変調後波形データを生成し、レジスタＯｕｔｐｕｔにストアした後、ステップＳＤ１５に進み、レジスタＯｕｔｐｕｔに格納された変調後波形データを楽音出力ｏｕｔとして出力する。
【００８７】
上記ステップＳＤ１７において、モード値Ｖｅが「１」であると、変調波形はレジスタＡｍ［０］〜Ａｍ［７］に格納され、波形発生器ＯＳＣ１の波形出力から抽出した各フォルマント成分のエンベロープ波形である。一方、被変調波形はレジスタＡｃ［０］〜Ａｃ［７］に格納され、波形発生器ＯＳＣ２〜ＯＳＣ３２の各波形累算値から抽出した各フォルマント成分の波形である。
【００８８】
＜モード値Ｖｅが「２」の場合＞
この場合、ステップＳＤ１３を介してステップＳＤ１８に進む。ステップＳＤ１８では、レジスタＡｃｔにて累算された波形発生器ＯＳＣ９〜ＯＳＣ３２の各波形出力を、合成部のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８（図２参照）に入力して抽出される各フォルマント成分を、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力する波形としてレジスタＡｃ［０］〜Ａｃ［７］にストアする。
【００８９】
そして、ステップＳＤ１７に進み、合成部の乗算器Ｊ１〜Ｊ８において、分析部の加算器Ｋ１〜Ｋ８の各出力（変調波形）によって合成部の加算器Ｋ１７〜Ｋ２４の各出力（被変調波形）を乗算（変調）して変調後波形データを生成し、レジスタＯｕｔｐｕｔにストアした後、ステップＳＤ１５に進み、レジスタＯｕｔｐｕｔに格納された変調後波形データを楽音出力ｏｕｔとして出力する。
【００９０】
上記ステップＳＤ１７において、モード値Ｖｅが「２」であると、変調波形は前述したステップＳＤ８（図１０参照）においてレジスタＡｍ［０］〜Ａｍ［７］に格納され、波形発生器ＯＳＣ１〜ＯＳＣ８の各波形出力である。一方、被変調波形は、レジスタＡｃ［０］〜Ａｃ［７］に格納され、波形発生器ＯＳＣ９〜ＯＳＣ３２の各波形累算値から抽出した各フォルマント成分の波形である。
【００９１】
＜モード値Ｖｅが「３」の場合＞
この場合、ステップＳＤ１３を介してステップＳＤ１９に進む。ステップＳＤ１９では、レジスタＡｍｔに格納される波形発生器ＯＳＣ１の波形出力を、分析部のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８（図２参照）に入力し、さらにバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８の各後段に設けられるエンベロープ検出器ＥＮＶにてそれぞれ抽出されるフォルマント成分のエンベロープレベル（エンベロープ波形）を、分析部の加算器Ｋ１〜Ｋ８（図２参照）にそれぞれ入力する波形としてレジスタＡｍ［０］〜Ａｍ［７］にストアする。
【００９２】
次いで、ステップＳＤ１７では、合成部の乗算器Ｊ１〜Ｊ８において、分析部の加算器Ｋ１〜Ｋ８の各出力（変調波形）によって合成部の加算器Ｋ１７〜Ｋ２４の各出力（被変調波形）を乗算（変調）して変調後波形データを生成し、レジスタＯｕｔｐｕｔにストアした後、ステップＳＤ１５に進み、レジスタＯｕｔｐｕｔに格納された変調後波形データを楽音出力ｏｕｔとして出力する。
【００９３】
上記ステップＳＤ１７において、モード値Ｖｅが「３」であると、変調波形はレジスタＡｍ［０］〜Ａｍ［７］に格納され、波形発生器ＯＳＣ１の波形出力から抽出した各フォルマント成分のエンベロープ波形である。一方、被変調波形は前述したステップＳＤ９（図１０参照）においてレジスタＡｃ［０］〜Ａｃ［７］に格納され、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力される波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力である。
【００９４】
＜モード値Ｖｅが「４」の場合＞
この場合、ステップＳＤ１３を介してステップＳＤ１７に進む。ステップＳＤ１７では、合成部の乗算器Ｊ１〜Ｊ８において、分析部の加算器Ｋ１〜Ｋ８の各出力（変調波形）によって合成部の加算器Ｋ１７〜Ｋ２４の各出力（被変調波形）を乗算（変調）して変調後波形データを生成し、レジスタＯｕｔｐｕｔにストアした後、ステップＳＤ１５に進み、レジスタＯｕｔｐｕｔに格納された変調後波形データを楽音出力ｏｕｔとして出力する。
【００９５】
上記ステップＳＤ１７において、モード値Ｖｅが「４」であると、変調波形は前述したステップＳＤ１０（図１０参照）においてレジスタＡｍ［０］〜Ａｍ［７］に格納され、波形発生器ＯＳＣ１〜ＯＳＣ８の各波形出力である。一方、被変調波形はレジスタＡｃ［０］〜Ａｃ［７］に格納され、合成部の加算器Ｋ１７〜Ｋ２４（図２参照）にそれぞれ入力される波形発生器ＯＳＣ９〜ＯＳＣ３２の波形出力である。
【００９６】
以上説明したように、本実施の形態では、モード値Ｖｅが「２」の場合には、一定の読み出し速度で波形発生器ＯＳＣ１〜ＯＳＣ８が発生する固定的なフォルマント成分のエンベロープ波形データ（変調波形）によって、押鍵に応じたピッチで波形発生器ＯＳＣ９〜ＯＳＣ３２が発生する各波形の累算値から抽出した各フォルマント成分の波形（被変調波形）を変調するので、同じフォルマントを異なるピッチで発音させることができる。加えて、モード値Ｖｅが「２」の場合には、音源１０のバンドパスフィルタＢＰＦ  Ｍ１〜ＢＰＦ  Ｍ８を用いたリアルタイムの周波数分析を行わない為、音源１０における処理動作の負荷低減を図ることもできる。
【００９７】
また、モード値Ｖｅが「３」の場合には、予め設定した読み出し速度Ｖｍｓで波形発生器ＯＳＣ１が発生する原波形データから抽出した各フォルマント成分のエンベロープ波形データ（変調波形）によって、原波形データのオリジナルピッチで波形発生器ＯＳＣ９〜ＯＳＣ３２が発生する固定的なフォルマント成分の分析波形データ（被変調波形）が変調される。上述の実施形態では、説明の簡略化を図る為、読み出し速度Ｖｍｓを固定的なものとしたが、例えば押鍵される鍵の鍵番号ｋに応じて読み出し速度Ｖｍｓを変化させたり、あるいは押鍵される鍵に応じて変調波形番号Ｖｍｐを変化させ、演奏操作に応じて変調波形を異ならせる態様とすれば、同じフレーズを異なるフォルマントで発音させることができる。加えて、モード値Ｖｅが「３」の場合には、音源１０のバンドパスフィルタＢＰＦ  Ｃ１〜ＢＰＦ  Ｃ８を用いたリアルタイムの周波数分析を行わない為、音源１０における処理動作の負荷低減を図ることもできる。
【００９８】
なお、上述した実施形態では、モード値Ｖｅが「２」又は「４」の場合に、波形ＲＯＭ１１に記憶した各フォルマント成分のエンベロープ波形データを読み出して変調波形として使用するようにしたが、これに替えて各フォルマント成分の分析波形データを波形ＲＯＭ１１から読み出して分析部のエンベロープ検出器ＥＮＶに入力させ、これにより各フォルマント成分のエンベロープ波形データからなる変調波形を形成する態様としても構わない。このようにすれば、各フォルマント成分のエンベロープ波形データを波形ＲＯＭ１１に記憶する必要がなくなる為、波形ＲＯＭ１１のメモリ容量を削減できる。
【００９９】
また、本実施の形態では、ユーザ操作でモード値Ｖｅを選択するようにしたが、これに替えて音源１０の負荷に応じてＣＰＵ３が自動的に選択する態様、例えば、同時発音数が多い高負荷時にはフォルマント成分をリアルタイム抽出する周波数分析を行わないモード値Ｖｅ「４」を選択し、負荷が低い時にはモード値「１」を選択することも可能である。
【０１００】
さらに、被変調用に分析波形データを使用する際には、被変調波形の各フォルマント成分の振幅値にかかわらず常に８個の波形発生器ＯＳＣを占有するようにしたが、被変調波形の振幅値が小さいフォルマント成分については対応する波形発生器ＯＳＣの波形発生を停止させるようにしてもよい。このようにすれば、波形発生器ＯＳＣの占有率が低減する為、同時発音数を増加させることが可能になる。
【０１０１】
加えて、本実施形態では、波形ＲＯＭ１１に原波形データ、分析波形データおよびエンベロープ波形データを予め記憶しておく態様としたが、これに限らず、マイク８およびＡ／Ｄ変換器９を用いてサンプリングした原波形データをＲＡＭ５のデータエリアに保存しておき、音源１０の分析部を用いてＲＡＭ５に保存した原波形データに周波数分析およびエンベープ検出を施して分析波形データおよびエンベロープ波形データを生成してＲＡＭ５のデータエリアに保存する態様とすることも可能である。
【図面の簡単な説明】
【０１０２】
【図１】本発明による一実施形態の全体構成を示すブロック図である。
【図２】音源１０の構成を示すブロック図である。
【図３】ＲＯＭ４に記憶される波形パラメータＷＰの構成を示す図である。
【図４】波形発生器ＯＳＣ１〜ＯＳＣ８に割り当てた各フォルマント成分のエンベロープ波形データの一例を示す図である。
【図５】ＲＡＭ５に設けられる主要レジスタ構成を示す図である。
【図６】メインルーチンの動作を示すフローチャートである。
【図７】スイッチ処理の動作を示すフローチャートである。
【図８】鍵盤処理の動作を示すフローチャートである。
【図９】鍵盤処理の動作を示すフローチャートである。
【図１０】発音タイマ処理の動作を示すフローチャートである。
【図１１】発音タイマ処理の動作を示すフローチャートである。
【符号の説明】
【０１０３】
１  鍵盤
２  スイッチ部
３  ＣＰＵ
４  ＲＯＭ
５  ＲＡＭ
６  表示部
７  ＭＩＤＩインタフェース
８  マイク
９  Ａ／Ｄ変換器
１０  音源
１１  波形ＲＯＭ
１２  サウンドシステム
【図１】
2006323166.tif 000003
【図２】
2006323166.tif 000004
【図３】
2006323166.tif 000005
【図４】
2006323166.tif 000006
【図５】
2006323166.tif 000007
【図６】
2006323166.tif 000008
【図７】
2006323166.tif 000009
【図８】
2006323166.tif 000010
【図９】
2006323166.tif 000011
【図１０】
2006323166.tif 000012
【図１１】
2006323166.tif 000013