(57)【特許請求の範囲】
【請求項１】
デジタル処理により所定の制御波形を発生する制御波形発生過程と、
前記制御波形における立上りまたは立下がり点を含む時間範囲において前記制御波形を修正することによって帯域制限し、修正された制御波形を楽音信号として出力する楽音信号発生過程と、
倍音成分を制御する楽音パラメータに対応して、前記時間範囲を設定する時間範囲設定過程とを有することを特徴とする波形発生方法。
【請求項２】
前記制御波形の周波数が高くなるほど前記制御波形の一周期内において前記時間範囲が占める割合が広くなるように、前記時間範囲を調節する周波数特性付与過程を有することを特徴とする請求項１記載の波形発生方法。
【請求項３】
前記制御波形は鋸歯状波であり、前記時間範囲設定過程は該鋸歯状波の立上りまたは立下がり部分のうち急峻な側に対して前記時間範囲を設定することを特徴とする請求項２記載の波形発生方法。
【請求項４】
前記制御波形は台形波であり、前記時間範囲設定過程は該台形波の立上りおよび立下がり部分に対して前記時間範囲を設定することを特徴とする請求項２記載の波形発生方法。
【請求項５】
請求項１ないし４の何れかに記載の波形発生方法を実行するプログラムを記録したことを特徴とする記録媒体。
【請求項６】
請求項１ないし４の何れかに記載の波形発生方法を実行することを特徴とする波形発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音を発生させる種々の装置（電子楽器、パーソナルコンピュータ、ゲーム機器、カラオケ装置等）における楽音波形の合成に用いて好適な波形発生方法、記録媒体、波形発生装置およびプログラムの配布方法に関する。
【０００２】
【従来の技術】
従来より、鋸歯状波を発生させてその周波数特性を制御することによって様々な楽音信号を発生させるアナログシンセサイザが知られている。近年は、性能やフレキシビリティが高く、周辺機器との親和性も高いデジタルシンセサイザが主流となっているが、アナログシンセサイザの独特の音色には根強い支持があり、アナログシンセサイザの機能を忠実にシミュレートできるデジタルシンセサイザが望まれている。
デジタルシンセサイザを用いてアナログシンセサイザの機能をシミュレートする方式としては、以下のニ方式が代表的なものとして知られている。
【０００３】
(１)フィードバックＦＭ方式（特開平９−１８５３８０号公報等）。
フィードバックＦＭ方式においては、まず原波形（例えば正弦波）が生成され、この原波形がフィードバックループに入力される。そして、このフィードバックループにおける種々の係数を制御することにより、鋸歯状波を含めて様々な波形を生成することができる。しかし、これら係数の設定状況によっては、フィードバックループの動作が不安定になり、あるいは波形の位相がずれる等の不具合が発生する。
【０００４】
(２)帯域制限方式（特開平１０−１９８３７８号公報等）。
帯域制限方式においては、まず理想的な鋸歯状波（一定の傾きで徐々に立ち上り、急峻に立下がる波形）が生成される。次に、この鋸歯状波のエッジ部分（立下がり部分およびその周辺）においてエッジを鈍らせることによって、該鋸歯状波の帯域が制限される。具体的には、このエッジ部分における波形が鈍るような入出力特性（窓関数という）をルックアップテーブルに予め記憶させ、上記鋸歯状波のエッジ部分の波形値としてこのルックアップテーブルを通した値を用いるとよい。
【０００５】
帯域制限方式は楽音信号に対するフィードバックループを持たないため、フィードバックＦＭ方式と比較してきわめて安定性が高い。しかし、様々な音色の波形を得ようとすると、音色の種類に応じてその都度ルックアップテーブルを用意する必要があり、事実上の波形のバリエーションが少なくなる。
【０００６】
なお、上記特開平特開平１０−１９８３７８号には、アナログシンセサイザの楽音合成方法として知られる「ＯＳＣ（オシレータ）シンク方式」をディジタルシンセサイザに適用させた例、および、このＯＳＣシンク方式に上記帯域制限方式を適用させた例が開示されている。
このＯＳＣシンク方式においては、マスター周波数ｆｍおよびスレーブ周波数ｆｓの２系統の基本波形（典型的には鋸歯状波）が生成される。そして、スレーブ周波数ｆｓの基本波形のレベルは、マスター周波数ｆｍの基本波形の周期１／ｆｍ毎に強制的に「０」にリセットされる。この結果得られる波形は、ピッチ周波数がマスター周波数ｆｍ、スペクトル特性構造がスレーブ周波数ｆｓを有する波形となる。
【０００７】
【発明が解決しようとする課題】
以上述べたように、帯域制限方式はフィードバックＦＭ方式と比較して安定性に優れるものの、事実上の波形のバリエーションは少なくなる。この発明は上述した事情に鑑みてなされたものであり、安定度が高く、かつ、多彩なバリエーションの波形を得ることができる波形発生方法、記録媒体および波形発生装置を提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記課題を解決するため請求項１記載の構成にあっては、デジタル処理により所定の制御波形を発生する制御波形発生過程と、前記制御波形における立上りまたは立下がり点を含む時間範囲において前記制御波形を修正することによって帯域制限し、修正された制御波形を楽音信号として出力する楽音信号発生過程と、倍音成分を制御する楽音パラメータに対応して、前記時間範囲を設定する時間範囲設定過程とを有することを特徴とする。
さらに、請求項２記載の構成にあっては、請求項１記載の波形発生方法において、前記制御波形の周波数が高くなるほど前記制御波形の一周期内において前記時間範囲が占める割合が広くなるように、前記時間範囲を調節する周波数特性付与過程を有することを特徴とする。
さらに、請求項３記載の構成にあっては、請求項２記載の波形発生方法において、前記制御波形は鋸歯状波であり、前記時間範囲設定過程は該鋸歯状波の立上りまたは立下がり部分のうち急峻な側に対して前記時間範囲を設定することを特徴とする。
さらに、請求項４記載の構成にあっては、請求項２記載の波形発生方法において、前記制御波形は台形波であり、前記時間範囲設定過程は該台形波の立上りおよび立下がり部分に対して前記時間範囲を設定することを特徴とする。
また、請求項５記載の構成にあっては、請求項１ないし４の何れかに記載の波形発生方法を実行するプログラムを記録したことを特徴とする。
また、請求項６記載の構成にあっては、請求項１ないし４の何れかに記載の波形発生方法を実行することを特徴とする。
【０００９】
【発明の実施の形態】
１．実施形態の構成
次に、本発明の一実施形態の構成を図１を参照し説明する。なお、本実施形態は汎用パーソナルコンピュータ２０によって楽音信号生成装置を実現したものである。パーソナルコンピュータ２０の内部において９はＣＰＵであり、後述する制御プログラムによりパーソナルコンピュータ２０内の各部を制御する。
【００１０】
１はネットワークインターフェースであり、ネットワーク２５との間で各種の情報をやりとりする。２はＭＩＤＩインターフェースであり、鍵盤あるいは音源等のＭＩＤＩ機器に接続され、ＭＩＤＩデータのやりとりを行う。３は表示器であり、ユーザに対して各種の情報を表示する。４は入力装置であり、キーボードおよびマウス等から構成され、ユーザの操作に基づいてＣＰＵ９に対して各種の操作情報を供給する。
【００１１】
１０はＲＯＭであり、パーソナルコンピュータ２０を起動させるためのイニシャルプログラムローダ等が記憶されている。１１はＲＡＭであり、ＣＰＵ９によって読出しおよび書込み可能になっている。５は波形インターフェースであり、マイク等を介してアナログの楽音信号を収集しこれをＰＣＭ情報に変換してＲＡＭ１１に記憶させるとともに、ＲＡＭ１１上のＰＣＭ情報をアナログ信号に変換し、図示せぬサウンドシステムを介して発音させる。
【００１２】
６はハードディスクであり、ＲＡＭ１１に展開されるオペレーティングシステム、ドライバ、アプリケーションプログラム、音源プログラム等が記憶される。７はディスクドライブであり、ＣＤ−ＲＯＭ、フロッピーディスク等のリムーバルディスク１２に対してデータの読み書きを行う。８はタイマであり、所定時間毎にＣＰＵ９に対してタイマ割込みを発生させる。３０はサーバーであり、ネットワーク２５に対して各種データの送受信を行うデータ送受信部３１と、ユーザに提供されるソフトウエアを格納するデータ記憶装置３２とから構成されている。
【００１３】
２．実施形態の動作
２．１．動作の概要
本実施形態において、パーソナルコンピュータ２０上でハードウエアの音源装置の動作をシミュレートするソフトウエアが動作する。このソフトウエアを「音源モジュール」と称する。なお、音源モジュールは、リムーバルディスク１２あるいはネットワーク２５を介してパーソナルコンピュータ２０にインストゥールされる。
【００１４】
音源モジュールは、電子楽器ソフトやゲームソフト等のアプリケーションプログラムによって生成されたＭＩＤＩデータ、あるいはＭＩＤＩインターフェース２を介して受信したＭＩＤＩデータに基づいて楽音信号のＰＣＭ情報を生成し、これをＲＡＭ１１上に展開する。展開された波形データは、波形インターフェース５のデバイスドライバによって波形インターフェース５に転送される。
【００１５】
上記ＭＩＤＩデータにおいては、パートナンバ、ノートナンバ、ベロシティ等が含まれており、音源モジュールにおいては、これらのパラメータに基づいて、ピッチ周波数等の楽音生成用パラメータが生成される。そして、音源モジュールにおいては波形生成ルーチンが起動され、該楽音生成用パラメータに基づいて実際の楽音波形が生成される。本実施形態においては、波形生成ルーチンは複数のものの中から上記パートナンバに対応するものが選択される。そこで、以下、波形生成ルーチンの種類に応じて、これらの動作を詳述する。
【００１６】
なお、上記楽音生成用パラメータは使用される波形生成ルーチンに応じて異なるため、波形生成ルーチンの動作とともに説明する。また、波形生成ルーチンのプログラムの内容は、機能ブロック図を用いて説明する。すなわち、機能ブロック図の説明においては、例えば「加算器」、「乗算器」のようなハードウエア的な表現を用いるが、これは実際に専用のハードウエアが設けられているという意味ではなく、ソフトウエアによって等価なステップが実行されるという意味である。
【００１７】
また、各機能ブロック図に用いられる各演算器等は各々所定の有効桁を有し、これによって演算結果として出力できる最大値が決定される。ここで、演算結果がオーバーフローした時の動作によって「モジュロ型（図中でmoと表記）」および「オーバーフロー検出型（図中でovと表記）」に分類される。「モジュロ型」においては、演算結果が有効桁をオーバーフローした時に、有効桁内の数値、すなわち本来的な演算結果を最大値で除算した値が演算結果として出力される。一方、「オーバーフロー検出型」においては、演算結果が有効桁をオーバーフローした時に、上記最大値が演算結果として出力される。
【００１８】
２．２．第１の波形生成ルーチン
第１の波形生成ルーチンの機能ブロック図を図２に示す。
図において４１はモジュロ型の加算器、４２は記憶素子であり、両者によって鋸歯状波発生回路４３が構成されている。鋸歯状波発生回路４３に、ピッチ周波数に対応するパラメータである周波数ナンバｆｎ（但し、−１≦ｆｎ≦＋１）が供給されると、該周波数ナンバｆｎに応じた周期の鋸歯状波Ｓ4（図３(d)参照）が出力される。なお、鋸歯状波Ｓ4等の信号に対して、最大値を「＋１」、最小値を「−１」と表現する。
【００１９】
４４は絶対値テーブルであり、周波数ナンバｆｎの絶対値｜ｆｎ｜を出力する。４５は逆数テーブルであり、「Ｒ／｜ｆｎ｜」（但し、Ｒは定数）となる信号Ｓ1を出力する。但し、逆数テーブル４５はオーバーフロー検出型であり、信号Ｓ1は、「Ｒ／｜ｆｎ｜」の算出結果が「＋１」を超える場合は、「＋１」に固定される。ここで、絶対値｜ｆｎ｜に対する信号Ｓ1の値を図３(a)に示す。図示のように、絶対値｜ｆｎ｜が定数Ｒ以下である場合に信号Ｓ1は常に「＋１」になる。従って、定数Ｒは、「信号Ｓ1として逆数が得られる最低周波数」に等しくなる。
【００２０】
次に、４６は減算器であり、信号Ｓ1から定数Ｌを減算する。４７は半波整流器であり、減算器４６の減算結果が「０」未満である場合はこれを「０」に変更し、その結果を信号Ｓ2（図３(b)参照）として出力する。ここで、信号Ｓ2が「０」になる絶対値｜ｆｎ｜の範囲で絶対値｜ｆｎ｜の最小値を「可制御最大周波数ｆh」という。従って、上記定数Ｌは、可制御最大周波数ｆhを決定するためのパラメータになる。
【００２１】
次に、４８は変換テーブルであり、定数Ｅmが入力されると、これに基づいてパラメータｅを出力する。パラメータｅは、例えば、「ｅ＝２r(E-1)」のような変換式で求めるとよい。ここでｒは定数であり、パラメータｅが「０≦ｅ≦１」の範囲に収まるように設定される。パラメータｅは楽音波形の倍音成分を制御するパラメータであり、「０」の場合は最も倍音成分が少なく、「１」の場合は最も倍音成分が多くなる。なお、その理由については後述する。
【００２２】
次に、４９は乗算器であり、パラメータｅと信号Ｓ2を乗算する。５０は減算器であり、この乗算結果から信号Ｓ2を減算する。５１はオーバーフロー検出型の加算器であり、信号Ｓ1と減算器５０の出力信号とを加算し、その結果を信号Ｓ3として出力する。従って、信号Ｓ3は、「Ｓ3＝Ｓ1＋ｅＳ2−Ｓ2」なる式によって表現される。ここで、絶対値｜ｆｎ｜が可制御最大周波数ｆh以上である場合は、信号Ｓ2は「０」であるから、「Ｓ3＝Ｓ1」が成立する。一方、絶対値｜ｆｎ｜が可制御最大周波数ｆh未満である場合は、「Ｓ2＝Ｓ1−Ｌ」であるから、「Ｓ3＝ｅＳ2＋Ｌ＝ｅ（Ｓ1−Ｌ）＋Ｌ＝ｅＳ1＋（１−ｅ）Ｌ」が成立する。
【００２３】
換言すれば、絶対値｜ｆｎ｜が可制御最大周波数ｆh未満である場合は、パラメータｅが「０」の時は信号Ｓ3は定数Ｌに一致し、パラメータｅが「１」である場合は信号Ｓ3は信号Ｓ1に一致する。そして、パラメータｅが「０＜ｅ＜１」の範囲においては、図３(c)に示すように、パラメータｅの値に応じて信号Ｓ3が決定される。５２はモジュロ型の加算器であり、ここで鋸歯状波Ｓ4に「−１」が加算され、その結果が鋸歯状波Ｓ5として出力される。従って、図３(e)に示すように、鋸歯状波Ｓ5は鋸歯状波Ｓ4と同一の波形で位相が１８０°異なる信号になる。
【００２４】
５３は乗算器であり、鋸歯状波Ｓ5と信号Ｓ3とを乗算する。図３(c)に示したように、信号Ｓ3の採りうる範囲は「Ｒ≦Ｓ3≦１」であるから、この乗算結果は鋸歯状波Ｓ5と等しいか、あるいは鋸歯状波Ｓ5を減衰させた信号になる。次に、５４はオーバーフロー検出型の乗算器であり、乗算器５３の出力信号に対して定数Ｍを乗算する。
【００２５】
ここで、定数Ｍは「１／Ｓ3」に対して充分大きくなるように設定されており、乗算器５４の出力信号は、鋸歯状波Ｓ5を増幅した信号になる。但し、乗算結果が「＋１」を超えあるいは「−１」未満になる場合は乗算器５４の出力信号は「＋１」あるいは「−１」にされるから、乗算器５４の出力信号は台形波になる。
【００２６】
次に、５５は絶対値テーブルであり、この台形波の絶対値を窓信号Ｓ6（図３(f)参照）として出力する。窓信号Ｓ6は、一周期における波形が左右対称になっており、この立上りおよび立下がり部分が、鋸歯状波Ｓ4の帯域制限を行うための「窓」として用いられる。この窓幅は、信号Ｓ3が低くなるほど（従ってパラメータｅの値が低くなるほど）広くなる。また、窓幅は、定数Ｍが大きくなるほど狭くなる。
【００２７】
次に、５６は窓関数テーブルであり、窓信号Ｓ6（但し０≦Ｓ6≦１）が入力されると、窓関数値Ｓ7（但し０≦Ｓ7≦１）を出力する。この窓関数値Ｓ7は、窓信号Ｓ6のレベルが低い場合は窓信号Ｓ6に対して単調増加し、ある窓信号Ｓ6においてピーク値「１」に達し、そのピーク値以上においては窓信号Ｓ6に対して緩やかに単調減少する値になる。従って、窓関数値Ｓ7の波形は、図３(g)に示すように、窓信号Ｓ6のエッジ部分を丸め、定常部分のレベルをやや下げたような波形になる。次に、５７は乗算器であり、鋸歯状波Ｓ4と窓関数値Ｓ7とを乗算し、その結果を楽音信号Ｓ8として出力する。
【００２８】
楽音信号Ｓ8の波形の例を図３(h)に示す。同図に示すように本波形生成ルーチンによれば、窓関数テーブル５６としては同一のものを用いながらパラメータｅによって窓関数の幅を変化させることにより、楽音信号Ｓ8の高調波成分を様々に変化させることができる。しかも、楽音信号Ｓ8に対してフィードバックを施す必要が無いから、きわめて安定した波形を得ることができる。
【００２９】
２．３．第２の波形生成ルーチン
次に、第２の波形生成ルーチンの要部の機能ブロック図を図４に示す。なお、第２の波形生成ルーチンは、第１の波形生成ルーチンに対して逆数テーブル４５から乗算器５３に至るまでの部分を改変したものであるため、それ以外の部分については図示を省略している。
【００３０】
図において６０は最小値出力回路であり、信号Ｓ1およびパラメータｅのうち小さい方の値を信号Ｓ31として出力する。この信号Ｓ31は、図２における信号Ｓ3に代えて乗算器５３に供給される。上記以外の構成は図２と同様である。なお、パラメータｅの最小値は定数Ｌ以上になるように設定しておくと好適である。
【００３１】
本波形生成ルーチンによれば、周波数ナンバの絶対値｜ｆｎ｜に対して信号Ｓ31のレベルは図５のように設定される。図５の信号Ｓ31と図３(c)の信号Ｓ3とを比較すると、信号Ｓ31は中音域（Ｒ≦｜ｆｎ｜≦ｆhの範囲）において信号Ｓ3よりも高いレベルを有している。すなわち、信号Ｓ31は、信号Ｓ3と比較して、中音域における窓関数の幅が比較的広くなり、中音域における倍音成分がより抑制されることになる。
【００３２】
２．４．第３の波形生成ルーチン
次に、第３の波形生成ルーチンの要部の機能ブロック図を図６に示す。この第３の波形生成ルーチンも、第１の波形生成ルーチンに対して逆数テーブル４５から乗算器５３に至るまでの部分を改変したものであるため、それ以外の部分については図示を省略している。
【００３３】
図において６１は最小値出力回路であり、信号Ｓ1および可制御最大周波数ｆhを決定するための定数Ｌのうち小さい方を信号Ｓ32として出力する（図７(a)参照）。６２は乗算器であり、信号Ｓ1にパラメータｅを乗算して出力する。６３は最大値出力回路であり、上記信号Ｓ32および乗算器６２の出力信号のうち大きい方を信号Ｓ33として出力する。そして、この信号Ｓ33は、図２における信号Ｓ3に代えて乗算器５３に供給される。
【００３４】
本波形生成ルーチンによれば、周波数ナンバの絶対値｜ｆｎ｜に対して信号Ｓ33のレベルは図７(b)のように設定される。図７(b)の信号Ｓ33と図３(c)の信号Ｓ3とを比較すると、信号Ｓ33は中音域（Ｒ≦｜ｆｎ｜≦ｆhの範囲）において信号Ｓ3よりも低いレベルを有している。すなわち、信号Ｓ33は、信号Ｓ3と比較して、中音域における窓関数の幅が比較的狭くなり、中音域における倍音成分がより多くなる。
【００３５】
２．５．第４の波形生成ルーチン
次に、第４の波形生成ルーチンの要部の機能ブロック図を図８に示す。この第４の波形生成ルーチンには、上述した周波数ナンバｆｎに代えて、これを対数表現したログ周波数ナンバｌnが供給される。
【００３６】
図において７０は指数テーブルであり、上記ログ周波数ナンバｌnを周波数ナンバｆｎに変換する。なお、指数テーブル７０の出力値は正数に限られるため、第１の波形生成ルーチンの絶対値テーブル４４は設けられていない。鋸歯状波発生回路７３は鋸歯状波発生回路４３と同様に、加算器７１と記憶素子７２とから構成され、鋸歯状波Ｓ4を出力する。鋸歯状波Ｓ4は、第１の波形生成ルーチン（図２）と同様に加算器５２および乗算器５７に供給され、加算器５２からは鋸歯状波Ｓ5が出力される。
【００３７】
７４は減算器であり、上述した可制御最大周波数ｆhを対数表現したログ可制御最大周波数ｌhからログ周波数ナンバｌnを減算する。７５はオーバーフロー検出型の加算器であり、減算器７４の出力信号にパラメータＷを加算し、その結果を信号Ｓ11として出力する。なお、このパラメータＷは、ログ可制御最大周波数ｌhにおける窓幅を決定するためのパラメータである。
【００３８】
７６，７７は乗算器であり、ログ周波数ナンバｌnおよびログ可制御最大周波数ｌhに対して各々パラメータＥgを乗算して出力する。なお、パラメータＥgは、楽音波形の倍音成分を制御するためのパラメータであり、「−１≦Ｅg≦＋１」の範囲で設定される。７８は減算器であり、「Ｅg・ｌh−Ｅg・ｌn」を出力する。７９はオーバーフロー検出型の加算器であり、この減算結果に上記パラメータＷを加算し、その結果を信号Ｓ12として出力する。
【００３９】
ここで、ログ周波数ナンバｌnに対応する信号Ｓ11，Ｓ12の例を図９(a)に示す。次に、８０は最小値出力回路であり、信号Ｓ11，Ｓ12のうち小さい方を信号Ｓ13として出力する。従って、図９(a)から明らかなように、ログ周波数ナンバｌnがログ可制御最大周波数ｌh未満である場合は信号Ｓ12が出力され、それ以外の場合は信号Ｓ11が出力される。ここで、種々のパラメータＥg対応する信号Ｓ13の値を図９(b)に示しておく。
【００４０】
次に、８１は指数テーブルであり、信号Ｓ31の指数関数である信号Ｓ14を出力する。そして、信号Ｓ14は、図２における信号Ｓ3に代えて乗算器５３に供給される。乗算器５３以降の構成は図２と同様であるが、信号Ｓ14は指数演算の結果として得られたものであり、必ず正値になるから、図２における絶対値テーブル５５は省略されている。
【００４１】
本波形生成ルーチンによれば、第１〜第３の波形生成ルーチンと同様に、信号Ｓ14に基づいて窓幅が決定される。但し、本波形生成ルーチンによれば、パラメータＥgに対して窓幅は指数関数的に変化するため、パラメータＥgのリニアな動きに対してより自然な変化を得ることができる。具体的には、パラメータＷの指数変換結果をＷSとすると、窓幅のサンプル数は「２／（ｆh・ＷS・Ｍ）」によって求められる。さらに、ログ周波数ナンバｌnに対しても窓幅は指数関数的に変化するから、自然なキースケールを実現することができる。
【００４２】
２．６．第５の波形生成ルーチン
次に、第５の波形生成ルーチンの要部の機能ブロック図を図１０に示す。この第５の波形生成ルーチンには、上述した周波数ナンバｆｎに代えて、外部位相入力Ｐxすなわち鋸歯状波Ｓ4そのものが入力される。これは、例えば波形インターフェース５を介して入力された鋸歯状波と同一のピッチを有する楽音波形を生成すべき場合等に特に有効である。
【００４３】
図において９１は記憶素子、９２はモジュロ型の加算器であり、これらによって微分回路９３が構成されている。微分回路９３は、外部位相入力Ｐxの傾きを周波数ナンバｆxとして出力する。周波数ナンバｆxおよび鋸歯状波Ｓ4の双方が得られた後の動作は第１の波形生成ルーチンと同様である。
【００４４】
２．７．第６の波形生成ルーチン
次に、第６の波形生成ルーチンの機能ブロック図を図１１に示す。第６の波形生成ルーチンはＯＳＣシンク方式であり、そのマスター側として外部位相入力Ｐxが用いられ、スレーブ側として周波数ナンバｆｎが用いられている。そして、マスター側には、上記第５の波形生成ルーチンと同様に、記憶素子９１および加算器９２から成る微分回路９３が設けられ、ここに外部位相入力Ｐxが供給されると、マスター側の周波数ナンバｆxが出力される。
【００４５】
９４はオーバーフロー検出器であり、加算器９２におけるオーバーフローを検出すると、リセット命令を発生する。なお、リセット命令の用途については後述する。微分回路９３から出力された周波数ナンバｆxは、絶対値テーブル４４を介して逆数テーブル４５に供給され、第１の波形生成ルーチンと同様に信号Ｓ1（＝Ｒ／｜ｆｎ｜）が出力される。
【００４６】
次に、９５は窓幅制御部であり、図１０において一点鎖線Ａで囲った部分、すなわち構成要素４６〜５１の部分と同様に構成され、信号Ｓ3（図３(c)参照）を出力する。そして、乗算器５４、絶対値テーブル５５および窓関数テーブル５６から成る回路は第１の波形生成ルーチンと同様に構成され、窓関数テーブル５６からマスター側の窓関数値Ｓ7が出力される。
【００４７】
次に、９６は乗算器であり、鋸歯状波Ｓ5と「Ｒ／｜ｆｘ｜」との乗算結果を出力する。９７は乗算器であり、この乗算結果にさらに定数Ｑを乗算する。９８は絶対値テーブルであり、乗算器９７の出力信号の絶対値「｜ＱＲＳ5／ｆｘ｜」を出力する。この値は、オーバーフロー検出器９４からリセット命令が出力される際にスレーブ側の回路で使用される値であるため、このリセット命令が出力される際の動作について、図１３を参照してさらに詳細に説明しておく。
【００４８】
図１３(a)は本実施形態におけるサンプリングクロックCLKを示しており、その立上り時刻t0, t1, t2, ……に同期して波形生成ルーチンの各回路が動作する。同図(b)および(c)は、時間軸上で拡大した鋸歯状波Ｓ4，Ｓ5の波形を示す。これらの図において破線の特性はサンプリング周波数が無限大であると仮定した時の理想的な波形であり、階段波状の実線の特性は、実際にサンプリングクロックCLKに同期して得られる波形である。
【００４９】
同図(b)において鋸歯状波Ｓ4の理想波形は時刻t01において立下がるから、本来リセット命令を出力すべきタイミングもこれと同時刻になる筈である。しかし、実際にオーバーフローが発生してリセット命令が出力されるタイミングは、次のサンプリングクロックCLKの立上り時刻t2になる。このずれにより、楽音信号のピッチが定まらないような不具合が発生する。そこで、本波形生成ルーチンにおいては、両者のタイミングの差を「位相補正値Ｔf」として求め、スレーブ側に供給することによりピッチ精度を高めることとした。
【００５０】
同図(b)によれば、鋸歯状波Ｓ4の傾きは「２／Ｔx＝２ｆx」であり、鋸歯状波Ｓ5の傾きもこれに等しい。そして、同図(c)によれば、リセット命令が発生する時刻t2においては、「Ｔf＝Ｓ5／（２ｆx）」が成立する。また、上述したように絶対値テーブル９８からは「｜ＱＲＳ5／ｆｘ｜」なる値が出力される。従って、定数Ｑ，Ｒに対して「ＱＲ＝１／２」の関係を付与しておくことにより、絶対値テーブル９８の出力値は上記位相補正値Ｔfに等しくなる。
【００５１】
次に、第６の波形生成ルーチンのスレーブ側の構成を説明する。図において周波数ナンバｆｎは、マスター側の周波数ナンバｆxの数倍程度に設定される。１０５はスイッチであり、常時は“０”側に接続され、オーバーフロー検出器９４からリセット命令が発生したサンプリング期間のみ“１”側に接続される。１０３は加算器、１０４は記憶素子であり、スイッチ１０５が“０”側に接続されている限り、第１の波形生成ルーチンにおける加算器４１および記憶素子４２と同様に鋸歯状波発生回路を構成する。すなわち、スイッチ１０５が“０”側に接続されている限り、スイッチ１０５からは、マスター側の鋸歯状波Ｓ4の数倍程度の周波数を有する鋸歯状波Ｓ15が出力されることになる。
【００５２】
次に、第６の波形生成ルーチンのスレーブ側の構成を説明する。図において周波数ナンバｆｎは、マスター側の周波数ナンバｆxの数倍程度に設定される。１０５はスイッチであり、常時は“０”側に接続され、オーバーフロー検出器９４からリセット命令が発生したサンプリング期間のみ“１”側に接続される。１０３はモジュロ型の加算器、１０４は記憶素子であり、スイッチ１０５が“０”側に接続されている限り、第１の波形生成ルーチンにおける加算器４１および記憶素子４２と同様に鋸歯状波発生回路を構成する。すなわち、スイッチ１０５が“０”側に接続されている限り、記憶素子１０４からは、マスター側の鋸歯状波Ｓ4の数倍程度の周波数を有する鋸歯状波Ｓ15が出力されることになる。
【００５３】
１０１は乗算器であり、スレーブ側の周波数ナンバｆｎと上記位相補正値Ｔfとを乗算する。従って、乗算器１０１からは、位相補正値Ｔfに応じた、鋸歯状波Ｓ15の初期レベルの補正値が出力される。次に、１０２はモジュロ型の加算器であり、乗算器１０１の乗算結果と、初期位相パラメータＰiとを加算する。従って、オーバーフロー検出器９４からリセット命令が出力されると、記憶素子１０４には「Ｐi＋ｆｎ・Ｔf」がセットされ、この値を初期値として鋸歯状波Ｓ15の発生が続行されることになる。従って、鋸歯状波Ｓ15は、図１２(c)に示すように、鋸歯状波Ｓ4の立下がりに同期して上記初期値にリセットされる鋸歯状波になる。
【００５４】
次に、絶対値テーブル１０７、逆数テーブル１０８、窓幅制御部１０９，加算器１１０、乗算器１１１、乗算器１１２、絶対値テーブル１１３および窓関数テーブル１１４は、各々マスター側における構成要素４４，４５，９５，５２，５３，５４，５５，５６と同様に構成され、鋸歯状波Ｓ15の立下がりに同期して立下がる窓関数値Ｓ16（図１２(d)参照）を出力する。１１５，１１６は乗算器であり、鋸歯状波Ｓ15に対して窓関数値Ｓ16およびＳ7を順次乗算し、楽音信号Ｓ17（図１２(e)参照）として出力する。
【００５５】
なお、マスター側の窓関数値Ｓ7（リセット窓）およびスレーブ側の窓関数値Ｓ16（波形窓）の窓幅は乗算器５４，１１２に供給される定数Ｍm, Ｍsによって決定される。図１２(b)〜(e)においては、両窓幅を共に小とした場合および共に大とした場合の各部の波形を示す。また、一方の窓幅を大とし、他方の窓幅を小とした場合の各部の波形を同図(f)〜(i)に示す。
【００５６】
２．８．第７の波形生成ルーチン
次に、第７の波形生成ルーチンの機能ブロック図を図１４に示す。第７の波形生成ルーチンはＯＳＣシンク方式であり、そのマスター側として外部位相入力Ｐxが用いられ、スレーブ側として周波数ナンバｆｎが用いられている。そして、マスター側は上記第６の波形生成ルーチンと同様に構成されている。
【００５７】
すなわち、窓関数テーブル５６は窓関数値Ｓ7（リセット窓）を出力し、加算器９２のオーバーフローが検出される毎にオーバーフロー検出器９４はリセット命令を出力し、絶対値テーブル９８は位相補正値Ｔfを出力する。なお、窓関数テーブル５６の内容としては、入力信号ｘ（＝Ｓ6）および出力信号ｙ（＝Ｓ7）に対して例えば「ｙ＝（1−cos（πｘ））／２」のような関数が好適であるが、他の関数を用いてもよいことは言うまでもない。
【００５８】
一方、スレーブ側にはフィードバックＦＭ方式が採用されている。スレーブ側において１２３はモジュロ型の加算器、１２４は記憶素子であり、スイッチ１２５が“０”側に接続されている限り、周波数ナンバｆｎに応じた周期の鋸歯状波Ｓ15を出力する。また、オーバーフロー検出器９４からリセット命令が出力されると、スイッチ１２５は“１”側に接続され、位相補正値Ｔfと周波数ナンバｆｎとの乗算結果が記憶素子１２４に記憶され、その値を初期値として鋸歯状波Ｓ15の出力が続行される。
【００５９】
１２５はモジュロ型の加算器であり、フィードバック信号Ｓ18と上記鋸歯状波Ｓ15とを加算し、その結果をサインテーブル１２７に供給する。サインテーブル１２７は、入力信号ｘ（＝Ｓ15＋Ｓ18）に対して「ｙ＝−sin(πｘ)」となる出力信号ｙ（＝Ｓ19）を出力する。
【００６０】
１２８はローパスフィルタであり、信号Ｓ19をフィルタリングして出力する。ローパスフィルタ１２８のカットオフ周波数はここに供給されるパラメータａによって決定される。なお、パラメータａは、発振が発生しない程度の値に設定される。１２２は乗算器であり、このフィルタリング結果に対して帰還量パラメータｆbを乗算し、その結果を上記フィードバック信号Ｓ18として出力する。
【００６１】
ここで、帰還量パラメータｆbが「０」またはそれに近い値であれば、信号Ｓ19は正弦波状の信号になる。一方、帰還量パラメータｆbが大きくなるほど信号Ｓ19は鋸歯状波に近い信号になる（図１５(d)参照）。１２９は乗算器であり、信号Ｓ19と窓関数値Ｓ7とを乗算し、その結果を楽音信号Ｓ20（図１５(e)参照）として出力する。
【００６２】
なお、本波形生成ルーチンにおいてはスレーブ側でフィードバックＦＭ方式が採用されたため、パラメータａの設定の仕方等に応じて発振等が発生する可能性がある。しかし、少なくともリセット時においては様々な窓関数値Ｓ7を発生することができるから、これによって多彩な波形制御を安定して実行することができる。
【００６３】
２．９．第８の波形生成ルーチン
次に、第８の波形生成ルーチンの機能ブロック図を図１６に示す。先の第１〜第７の波形生成ルーチンは、鋸歯状波を発生し、その帯域を制限するために窓関数値を用いたが、この第８の波形生成ルーチンは、窓関数値自体を楽音信号として用いようとするものである。
【００６４】
図において鋸歯状波発生回路４３は、第１の波形生成ルーチン（図２参照）と同様に鋸歯状波Ｓ4を出力する。１３１は絶対値テーブルであり、鋸歯状波Ｓ4の絶対値を出力する。１３２はオーバーフロー検出型の加算器であり、上記絶対値から「０．５」を減算し、その結果を三角波Ｓ21（図１７(b)参照）として出力する。
【００６５】
次に、構成要素４４〜５１の区間は第１の波形生成ルーチンと同様に構成され、加算器５１から信号Ｓ3（図３(c)参照）が出力される。乗算器５３においては三角波Ｓ21と信号Ｓ3とが乗算される。さらに、乗算器５４においては、その乗算結果に対して定数Ｍが乗算される。この定数Ｍは、充分大きな値に設定されているため、乗算器５４の出力信号Ｓ22は、図１７(c)に示すような台形波になる。
【００６６】
１３３は窓関数テーブルであり、台形波Ｓ22の全レベル（−１〜＋１）に渡る窓関数が記憶されている。そして、窓関数テーブル１３３に台形波Ｓ22が入力されると、窓幅すなわち台形波の傾斜部分の幅に応じて帯域制限された楽音信号Ｓ23が出力される。その例を図１７(d)に示す。
【００６７】
本波形生成ルーチンにおいては、台形波の立上りと立下がりの双方において窓関数が施されるため、窓関数を完全に読むことができる周波数をｆhとすると、「ｆh＝１／Ｎ」となる。ここでＮは窓幅（サンプル数）であり、「Ｎ＝２／（Ｒ・Ｍ）」によって求められる。
【００６８】
３．変形例
本発明は上述した実施形態に限定されるものではなく、例えば以下のように種々の変形が可能である。
【００６９】
（１）第６の波形生成ルーチンにおいては、マスター側の窓関数値Ｓ7（リセット窓）およびスレーブ側の窓関数値Ｓ16（波形窓）を発生するために個別の窓関数テーブル５６および窓関数テーブル１１４を用いた。しかし、絶対値テーブル５５，１１３の出力値のうち何れか小さい方を選択し、共通の窓関数テーブルをアクセスするように構成してもよい。その場合、乗算器１１５，１１６において実行された２回の乗算を１回で済ませることもできる。
【００７０】
（２）上記第１〜第７の波形生成ルーチンにおいては、徐々に立上り急峻に立下がる鋸歯状波を制御波形として用いたが、これに代えて急峻に立上り徐々に立下がる鋸歯状波を制御波形として用いてもよい。この場合、窓関数は鋸歯状波の立上り部分およびその近傍に対して施されることは言うまでもない。
【００７１】
（３）上記実施形態においては波形生成をソフトウエア（波形生成ルーチン）によって実現したが、パーソナルコンピュータ２０あるいは電子楽器に装着されるハードウエアによって同等の機能を実現してもよい。
【００７２】
【発明の効果】
以上述べたように本発明によれば、制御波形を修正する時間範囲を楽音パラメータに対応して設定できるから、安定度が高く、かつ、多彩なバリエーションの波形を得ることができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態のハードウエアのブロック図である。
【図２】  上記実施形態における第１の波形生成ルーチンの機能ブロック図である。
【図３】  第１の波形生成ルーチンにおける各部の波形図である。
【図４】  上記実施形態における第２の波形生成ルーチンの機能ブロック図である。
【図５】  第２の波形生成ルーチンにおける楽音パラメータの特性を示す図である。
【図６】  上記実施形態における第３の波形生成ルーチンの機能ブロック図である。
【図７】  第３の波形生成ルーチンにおける楽音パラメータの特性を示す図である。
【図８】  上記実施形態における第４の波形生成ルーチンの機能ブロック図である。
【図９】  第４の波形生成ルーチンにおける楽音パラメータの特性を示す図である。
【図１０】  上記実施形態における第５の波形生成ルーチンの機能ブロック図である。
【図１１】  上記実施形態における第６の波形生成ルーチンの機能ブロック図である。
【図１２】  第６の波形生成ルーチンにおける各部の波形図である。
【図１３】  第６の波形生成ルーチンにおける要部の波形図である。
【図１４】  上記実施形態における第７の波形生成ルーチンの機能ブロック図である。
【図１５】  第７の波形生成ルーチンにおける各部の波形図である。
【図１６】  上記実施形態における第８の波形生成ルーチンの機能ブロック図である。
【図１７】  第８の波形生成ルーチンにおける各部の波形図である。
【符号の説明】
１……ネットワークインターフェース、２……ＭＩＤＩインターフェース、３……表示器、４……入力装置、５……波形インターフェース、６……ハードディスク、７……ディスクドライブ、８……タイマ、９……ＣＰＵ、１０……ＲＯＭ、１１……ＲＡＭ、１２……リムーバルディスク、２０……パーソナルコンピュータ、２５……ネットワーク、３０……サーバー、３１……データ送受信部、３２……データ記憶装置、４１……加算器、４２……記憶素子、４３……鋸歯状波発生回路（制御波形発生過程）、４４……絶対値テーブル、４５……逆数テーブル（時間範囲設定過程，周波数特性付与過程）、４６……減算器、４７……半波整流器、４９……乗算器、５０……減算器、５１，５２……加算器、５３，５４……乗算器、５５……絶対値テーブル、５６……窓関数テーブル、５７……乗算器（楽音信号発生過程）、６１……最小値出力回路、６２……乗算器、６３……最大値出力回路、７０……指数テーブル、７１……加算器、７２……記憶素子、７３……鋸歯状波発生回路、７４……減算器、７５……加算器、７６，７７……乗算器、７８……減算器、８０……最小値出力回路、８１……指数テーブル、９１……記憶素子、９２……加算器、９３……微分回路、９４……オーバーフロー検出器、９５……窓幅制御部、９６，９７……乗算器、９８……絶対値テーブル、１０１……乗算器、１０２，１０３……加算器、１０４……記憶素子、１０５……スイッチ、１０７……絶対値テーブル、１０８……逆数テーブル、１０９……窓幅制御部、１１０……加算器、１１１，１１２……乗算器、１１３……絶対値テーブル、１１４……窓関数テーブル、１１５，１１６……乗算器、１２３……加算器、１２４……記憶素子、１２５……スイッチ、１２７……サインテーブル、１２８……ローパスフィルタ、１３１……絶対値テーブル、１３２……加算器、１３３……窓関数テーブル。
【図１】
0003799896.tif 000002
【図２】
0003799896.tif 000003
【図３】
0003799896.tif 000004
【図４】
0003799896.tif 000005
【図５】
0003799896.tif 000006
【図６】
0003799896.tif 000007
【図７】
0003799896.tif 000008
【図８】
0003799896.tif 000009
【図９】
0003799896.tif 000010
【図１０】
0003799896.tif 000011
【図１１】
0003799896.tif 000012
【図１２】
0003799896.tif 000013
【図１３】
0003799896.tif 000014
【図１４】
0003799896.tif 000015
【図１５】
0003799896.tif 000016
【図１６】
0003799896.tif 000017
【図１７】
0003799896.tif 000018