(57)【特許請求の範囲】
【請求項１】
第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、
乗算係数を指定する乗算係数指定手段と、
前記範囲指定手段により指定された開始次数のスペクトルレベルを発生する開始レベル発生手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数指定手段により指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するスペクトル表示手段と
を具備することを特徴とするスペクトル設定装置。
【請求項２】
第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上に設けられ、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、
前記スペクトル設定画面上に設けられ、乗算係数を指定する乗算係数指定手段と、
前記スペクトル設定画面上に設けられ、差分値を指定する差分指定手段と、
前記範囲指定手段により指定された開始次数のスペクトルレベルを発生する開始レベル発生手段と、
前記乗算係数指定手段が指定する乗算係数を基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前次数の乗算係数から前記差分指定手段により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生手段が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示手段と
を具備することを特徴とするスペクトル設定装置。
【請求項３】
第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上に設けられ、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、
前記スペクトル設定画面上に設けられ、乗算係数を指定する乗算係数指定手段と、
前記スペクトル設定画面上に設けられ、差分値を指定する差分指定手段と、
前記スペクトル設定画面上に設けられ、間隔値を指定する間隔指定手段と、
前記乗算係数指定手段が指定する乗算係数を基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数に達するまで前記間隔指定手段により指定される間隔値に相当する数の次数が進む毎に、当該間隔値に相当する数の次数を進める前の乗算係数から前記差分指定手段により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生手段が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、
前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示手段と
を具備することを特徴とするスペクトル設定装置。
【請求項４】
第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、
乗算係数を指定する乗算係数指定過程と、
前記範囲指定過程により指定された開始次数のスペクトルレベルを発生する開始レベル発生過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数指定過程により指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するスペクトル表示過程と
を具備することを特徴とするスペクトル設定方法。
【請求項５】
第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上で、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、
前記スペクトル設定画面上で乗算係数を指定する乗算係数指定過程と、
前記スペクトル設定画面上で差分値を指定する差分指定過程と、
前記範囲指定過程により指定された開始次数のスペクトルレベルを発生する開始レベル発生過程と、
前記乗算係数指定過程が指定する乗算係数を基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前次数の乗算係数から前記差分指定過程により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生過程が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示過程と
を具備することを特徴とするスペクトル設定方法。
【請求項６】
第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上で、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、
前記スペクトル設定画面上で乗算係数を指定する乗算係数指定過程と、
前記スペクトル設定画面上で差分値を指定する差分指定過程と、
前記スペクトル設定画面上で間隔値を指定する間隔指定過程と、
前記乗算係数指定過程が指定する乗算係数を基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数に達するまで前記間隔指定過程により指定される間隔値に相当する数の次数が進む毎に、当該間隔値に相当する数の次数を進める前の乗算係数から前記差分指定過程により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生過程が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、
前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示過程と
を具備することを特徴とするスペクトル設定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、倍音合成方式で楽音を発生する楽音発生装置に用いて好適なスペクトル設定装置およびスペクトル設定方法に関する。
【０００２】
【従来の技術】
正弦波形などの基本波とその倍音成分（整数次倍音）とを重ね合わせて任意の倍音構造の楽音を発生する倍音合成方式の楽音発生装置が従来より知られている。この種の装置では、基本波およびその倍音成分毎のスペクトル（振幅値）を設定するスペクトル設定装置を備えている場合が多い。
【０００３】
【発明が解決しようとする課題】
従来のスペクトル設定装置では、基本波およびその倍音成分毎のスペクトル（振幅値）を一つ一つ個別に設定するように構成されている。この為、とりわけ高次の倍音成分を持つような倍音構造を設定するには、それらのスペクトルを一々設定しなければならず操作が煩わしいという問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、倍音構造を一括して簡単に設定することができるスペクトル設定装置およびスペクトル設定方法を提供することを目的としている。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、乗算係数を指定する乗算係数指定手段と、前記範囲指定手段により指定された開始次数のスペクトルレベルを発生する開始レベル発生手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数指定手段により指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するスペクトル表示手段とを具備することを特徴とする。
【０００５】
請求項２に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上に設けられ、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、前記スペクトル設定画面上に設けられ、乗算係数を指定する乗算係数指定手段と、前記スペクトル設定画面上に設けられ、差分値を指定する差分指定手段と、前記範囲指定手段により指定された開始次数のスペクトルレベルを発生する開始レベル発生手段と、前記乗算係数指定手段が指定する乗算係数を基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前次数の乗算係数から前記差分指定手段により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生手段が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示手段とを具備することを特徴とする。
【０００６】
請求項３に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上に設けられ、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定手段と、前記スペクトル設定画面上に設けられ、乗算係数を指定する乗算係数指定手段と、前記スペクトル設定画面上に設けられ、差分値を指定する差分指定手段と、前記スペクトル設定画面上に設けられ、間隔値を指定する間隔指定手段と、前記乗算係数指定手段が指定する乗算係数を基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数に達するまで前記間隔指定手段により指定される間隔値に相当する数の次数が進む毎に、当該間隔値に相当する数の次数を進める前の乗算係数から前記差分指定手段により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定手段により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生手段が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出手段と、前記開始レベル発生手段が発生する開始次数のスペクトルレベルと、前記スペクトル算出手段により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示手段とを具備することを特徴とする。
【０００７】
請求項４に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、乗算係数を指定する乗算係数指定過程と、前記範囲指定過程により指定された開始次数のスペクトルレベルを発生する開始レベル発生過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数指定過程により指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するスペクトル表示過程とを具備することを特徴とする。
【０００８】
請求項５に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上で、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、前記スペクトル設定画面上で乗算係数を指定する乗算係数指定過程と、前記スペクトル設定画面上で差分値を指定する差分指定過程と、前記範囲指定過程により指定された開始次数のスペクトルレベルを発生する開始レベル発生過程と、前記乗算係数指定過程が指定する乗算係数を基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前次数の乗算係数から前記差分指定過程により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生過程が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示過程とを具備することを特徴とする。
【０００９】
請求項６に記載の発明では、第１次倍音から第ｎ次倍音までの各倍音成分を表示可能なスペクトル設定画面上で、これら各倍音成分の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定する範囲指定過程と、前記スペクトル設定画面上で乗算係数を指定する乗算係数指定過程と、前記スペクトル設定画面上で差分値を指定する差分指定過程と、前記スペクトル設定画面上で間隔値を指定する間隔指定過程と、前記乗算係数指定過程が指定する乗算係数を基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数に達するまで前記間隔指定過程により指定される間隔値に相当する数の次数が進む毎に、当該間隔値に相当する数の次数を進める前の乗算係数から前記差分指定過程により指定された差分値を減算して現次数の乗算係数を発生する乗算係数発生過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルを基準に用い、前記範囲指定過程により指定された開始次数の次の次数から終了次数まで次数を進める毎に、前記乗算係数発生過程が発生する現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出するスペクトル算出過程と、前記開始レベル発生過程が発生する開始次数のスペクトルレベルと、前記スペクトル算出過程により算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを前記スペクトル設定画面に画面表示するスペクトル表示過程とを具備することを特徴とする。
【００１２】
本発明では、第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定すると共に、乗算係数を指定すると、開始次数のスペクトルレベルが生成され、この開始次数のスペクトルレベルを基準に用い、開始次数の次の次数から終了次数まで次数を進める毎に、指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出する。そして、生成された開始次数のスペクトルレベルと、算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するので、従来のように、倍音成分毎のスペクトルを個別に設定する必要がなく、倍音構造を一括して簡単に設定することが可能になる。
【００１３】
【発明の実施の形態】
本発明によるスペクトル設定装置は、倍音合成方式の楽音発生装置や電子楽器、あるいはパーソナルコンピュータを用いたＤＴＭ装置などに適用され得る。以下では、本発明の実施の形態によるスペクトル設定装置を搭載した楽音発生装置を実施例とし、これについて図面を参照して説明する。
【００１４】
Ａ．構成
図１は実施例の構成を示すブロック図である。この図において、１は装置各部を制御するＣＰＵである。具体的には、スイッチ操作に応じて発生するイベントに基づき装置各部の動作状態を設定したり、アイコン操作（後述する）に応じて発生するイベントに従って基本波およびその倍音成分毎のスペクトル値を設定する。また、ＣＰＵ１では後述するＭＩＤＩインタフェース４を介して外部から供給されるＭＩＤＩデータを受信して発音指示コマンドや消音指示コマンド等の楽音パラメータを生成して音源８に送出する。２は上記ＣＰＵ１にロードされる各種制御プログラムを記憶するＲＯＭである。
【００１５】
３はバッファエリアＢＥ、データエリアＤＥおよびワークエリアＷＥを備えるＲＡＭである。ここで、図２を参照してＲＡＭ３のメモリ構造について説明する。バッファエリアＢＥには、ＭＩＤＩインタフェース４を介して外部から供給されるＭＩＤＩデータが一時記憶される。データエリアＤＥには、基本波および倍音成分毎の振幅値を表すスペクトル（１）〜（１５）が一時記憶される。
これらスペクトル（１）〜（１５）は、例えば８ビット長であれば正規化された振幅値「２５５」がそれぞれデフォルト値としてセットされる。デフォルト値としてセットされたスペクトル（１）〜（１５）は、後述するスペクトル設定処理により所望の倍音構造となるようレベル設定される。ワークエリアＷＥには、レジスタＨＡＮＩＡ，ＨＡＮＩＢ，ＫＥＩＳＨＡ，ＳＡＢＵＮおよびＫＡＮＫＡＫＵ等が設けられており、これらレジスタに格納されるデータが意図するところについては追って説明する。
【００１６】
ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、ＭＩＤＩ楽器から供給されるＭＩＤＩデータを受信してＲＡＭ３のバッファエリアＢＥに転送する。５は例えばクリック操作される左右スイッチを備えたマウスである。６は装置パネルに配設されるパネルスイッチ群であり、各スイッチ操作に応じたスイッチイベントを発生する。図示していないが、パネルスイッチ群６には、例えば電源をオンオフする電源スイッチや動作モードを切換えるモードスイッチ等が設けられている。７はＬＣＤパネル等から構成される表示部であり、ＣＰＵ１から供給される表示制御信号に応じて装置各部の動作状態や設定状態等を画面表示する。
【００１７】
ここで、図３を参照して表示部７の表示画面の構成について説明する。ＣＰＵ１が後述するスペクトル設定モード下にある場合、表示部７には図３に示すスペクトル設定画面ＳＳＧが画面表示される。スペクトル設定画面ＳＳＧは、スペクトル表示エリアＳＤＥとアイコンＡ〜Ｉとから構成される。
スペクトル表示エリアＳＤＥには、基本波およびその倍音成分のスペクトル値をそれぞれ表すスペクトルバーが表示される。この図に示す一例では、最大値に正規化された１次スペクトルバー〜１０次スペクトルバーが表示されている。
【００１８】
アイコンＡ，Ｂはクリック操作に応じて、選択状態にあるスペクトルバーのレベルを増減する。アイコンＣ，Ｄはクリック操作に応じて、選択状態にあるスペクトルバーの次数を増減させる。例えばアイコンＣがクリック操作された場合には、先に選択状態にあったスペクトルバーの左隣のスペクトルバーを選択状態に設定する。一方、アイコンＤがクリック操作された場合には、先に選択状態にあったスペクトルバーの右隣のスペクトルバーを選択状態に設定する。
【００１９】
アイコンＥ，Ｆは複数の倍音成分について一括してスペクトル設定する際の範囲を指定するアイコンである。アイコンＥではマウス５の右スイッチのクリック操作（以下、右クリックと称す）あるいは左スイッチのクリック操作（以下、左クリックと称す）に応じて、開始点となる倍音次数（以下、開始次数と称す）が増減され、その次数はアイコンＥ中の表示フィールドに表示される。
同様に、アイコンＦでは右クリックあるいは左クリックに応じて、終了点となる倍音次数（以下、終了次数と称す）が増減され、その次数はアイコンＦ中の表示フィールドに表示される。
これらアイコンＥ，Ｆのクリック操作により指定される開始次数および終了次数は、それぞれ前述したＲＡＭ３のワークエリアＷＥ（図２参照）に設けられるレジスタＨＡＮＩＡ，ＨＡＮＩＢにストアされる。
【００２０】
アイコンＧは、上記アイコンＥ，Ｆによって指定された範囲に含まれる複数の倍音次数のスペクトルレベルを減衰させる乗算係数（傾斜）を指定するアイコンである。乗算係数はアイコンＧ中の表示フィールドにパーセント表示されるようになっており、その値は右クリックに応じてインクリメントされ、左クリックに応じてデクリメントされる。こうしたクリック操作により指定される乗算係数は、前述したＲＡＭ３のワークエリアＷＥ（図２参照）に設けられるレジスタＫＥＩＳＨＡにストアされる。
【００２１】
アイコンＨは、上記アイコンＧのクリック操作により指定される乗算係数を倍音次数毎に変化させる際の差分（つまり階差に相当）を指定するアイコンである。差分はアイコンＨ中の表示フィールドに表示されるようになっており、その値は右クリックに応じてインクリメントされ、左クリックに応じてデクリメントされる。こうしたクリック操作により指定される差分は、前述したＲＡＭ３のワークエリアＷＥ（図２参照）に設けられるレジスタＳＡＢＵＮにストアされる。
【００２２】
アイコンＩは、上記アイコンＨのクリック操作により指定される差分（階差）の間隔を指定するアイコンである。間隔はアイコンＩ中の表示フィールドに表示されるようになっており、その値は右クリックに応じてインクリメントされ、左クリックに応じてデクリメントされる。こうした操作により指定される間隔は、前述したＲＡＭ３のワークエリアＷＥ（図２参照）に設けられるレジスタＫＡＮＫＡＫＵにストアされる。
【００２３】
次に、再び図１を参照して実施例の構成について説明を進める。８は音源であり、後述のスペクトル設定処理にて設定される基本波およびその倍音成分毎のスペクトルに基づき倍音合成してなる楽音出力Ｗを発生する。９は音源８が発生する楽音出力Ｗをアナログ波形信号に変換して不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカＳＰから発音させるサウンドシステムである。
【００２４】
Ｂ．動作
次に、上記構成による実施例の動作について説明する。
（１）メインルーチンの動作
最初に、図４〜図５を参照してメインルーチンの動作について説明する。まず実施例に電源が投入されると、ＣＰＵ１はＲＯＭ２から所定の制御プログラムを読み出して自身にロードした後、図４に示すメインルーチンを実行してステップＳＡ１に処理を進める。ステップＳＡ１に進むと、ＣＰＵ１は図５に示すステップＳＢ１〜ＳＢ５からなるイニシャライズを実行してＲＡＭ３に初期値をセットする。
【００２５】
すなわち、ステップＳＢ１では、ＲＡＭ３のデータエリアＤＥに設けられ、基本波および倍音成分毎の振幅値を表すスペクトル（１）〜（１５）に、それぞれ所定値（デフォルト値）をストアする。次いで、ステップＳＢ２〜ＳＢ５では、ＲＡＭ３のワークエリアＷＥに設けられ、前述の開始次数および終了次数が格納されるレジスタＨＡＮＩＡ，ＨＡＮＩＢに「１」を、前述の減衰レート（傾斜）が格納されるレジスタＫＥＩＳＨＡに「１００」を、前述の差分（階差）が格納されるレジスタＳＡＢＵＮに「０」を、前述の間隔が格納されるレジスタＫＡＮＫＡＫＵに「１」をそれぞれストアする。そして、ステップＳＢ６では、音源８に対して内部レジスタのゼロリセットや初期値セットを指示する。
【００２６】
こうして、装置各部の初期化が完了すると、ＣＰＵ１はステップＳＡ２に進み、フラグＭＯＤＥが「０」であるか否か、すなわち、発音モードに設定されているかどうかを判断する。フラグＭＯＤＥが「０」となる発音モード下であれば、判断結果は「ＹＥＳ」となり、ステップＳＡ３に処理を進める。ステップＳＡ３では、ＭＩＤＩインタフェース４を介して外部から供給されるノートオン／オフイベントに応じて、倍音合成された楽音Ｗを発音／消音する発音処理を実行する。
一方、フラグＭＯＤＥが「１」となるスペクトル設定モード下であると、判断結果が「ＮＯ」となり、ステップＳＡ４に処理を進め、前述したスペクトル設定画面ＳＳＧにおけるアイコンＡ〜Ｉのクリック操作により各倍音成分毎のスペクトルを設定するスペクトル設定処理を実行する。
【００２７】
発音処理あるいはスペクトル設定処理が行われた後は、ステップＳＡ５に進み、モードスイッチがオン操作されたかどうかを判断する。モードスイッチがオン操作されると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＡ６に処理を進めてフラグＭＯＤＥを反転させた後、ステップＳＡ７に進み、その他の処理を実行する。
一方、モードスイッチがオン操作されない場合には、上記ステップＳＡ５の判断結果が「ＮＯ」となり、ステップＳＡ７に進む。そして、ステップＳＡ７のその他の処理が完了すると、上述したステップＳＡ２に処理を戻し、以後、上述した動作を繰り返す。
【００２８】
（２）スペクトル設定処理の動作
次に、図６〜図２２を参照してスペクトル設定処理の動作について説明する。モードスイッチのオン操作に応じて、フラグＭＯＤＥが「１」となるスペクトル設定モードになると、上述したステップＳＡ４を介してスペクトル設定処理が実行され、図６のステップＳＣ１に処理を進める。
ステップＳＣ１では、ＲＡＭ３に格納されるスペクトル（１）〜（１５）およびレジスタＨＡＮＩＡ，ＨＡＮＩＢ，ＫＥＩＳＨＡ，ＳＡＢＵＮ，ＫＡＮＫＡＫＵの各値に基づきスペクトル設定画面ＳＳＧを形成して表示部７に画面表示した後、倍音次数ｎに対応した値を格納するレジスタｎに初期値「１」をセットする。続いて、ステップＳＣ２では、レジスタｎに対応した倍音次数ｎ、すなわち起動時には基本波（倍音次数１）に対応したスペクトルバーについて、例えば反転表示する等の表示変更を施して選択状態にある旨を表す。
【００２９】
次いで、ステップＳＣ３以降では、スペクトル設定画面ＳＳＧに表示されるアイコンＡ〜Ｉのクリック操作に応じてアイコンＡ処理〜アイコンＩ処理が実行される。
（ａ）アイコンＡ処理の動作
アイコンＡがクリック操作されると、ステップＳＣ３の判断結果が「ＹＥＳ」となり、ステップＳＣ４を介して図８に示すアイコンＡ処理のステップＳＤ１に処理を進める。ステップＳＤ１では、表示変更されて選択状態にあるスペクトルバー、つまりレジスタｎに対応した倍音次数ｎのスペクトルバーのレベルが最大値「２５５」より小さいか否かを判断する。最大値「２５５」を超えていれば、判断結果は「ＮＯ」となり、この場合、クリック操作を無効として本ルーチンを完了させる。
一方、最大値「２５５」より小さければ、判断結果が「ＹＥＳ」となり、ステップＳＤ２に進み、レジスタｎに対応した倍音次数ｎのスペクトルバーのレベルをインクリメントし、続くステップＳＤ３ではインクリメントしたレベルに応じてスペクトルバーを表示更新して本ルーチンを完了させる。
【００３０】
（ｂ）アイコンＢ処理の動作
アイコンＢがクリック操作されると、ステップＳＣ５の判断結果が「ＹＥＳ」となり、ステップＳＣ６を介して図９に示すアイコンＢ処理のステップＳＥ１に処理を進める。ステップＳＥ１では、表示変更されて選択状態にあるスペクトルバー、つまりレジスタｎに対応した倍音次数ｎのスペクトルバーのレベルが最小値「０」より大きいか否かを判断する。最小値「０」であれば、判断結果は「ＮＯ」となり、この場合、クリック操作を無効として本ルーチンを完了させる。
一方、最小値「０」より大きければ、判断結果が「ＹＥＳ」となり、ステップＳＥ２に処理を進め、レジスタｎに対応した倍音次数ｎのスペクトルバーのレベルをデクリメントし、続くステップＳＥ３ではデクリメントしたレベルに応じてスペクトルバーを表示更新して本ルーチンを完了させる。
【００３１】
（ｃ）アイコンＣ処理の動作
アイコンＣがクリック操作されると、図６のステップＳＣ７の判断結果が「ＹＥＳ」となり、ステップＳＣ８を介して図１０に示すアイコンＣ処理のステップＳＦ１に処理を進める。ステップＳＦ１では、レジスタｎの値が「１」より大きいか否か、つまり、倍音次数１（基本波）のスペクトルバーが現在選択状態にあるかどうかを判断する。ここで、倍音次数１のスペクトルバーが選択状態にあれば、判断結果は「ＮＯ」となり、この場合、クリック操作を無効として本ルーチンを完了させる。
一方、倍音次数１のスペクトルバーが選択状態になければ、判断結果は「ＹＥＳ」となり、ステップＳＦ２に処理を進め、レジスタｎの値をデクリメントし、続くステップＳＦ３では、デクリメントされたレジスタｎの値に対応した倍音次数のスペクトルバーを表示変更して選択状態に設定して本ルーチンを完了させる。
したがって、例えば倍音次数２のスペクトルバーが選択状態にあるときにアイコンＣがクリック操作されると、その左隣の倍音次数１のスペクトルバーが新たに選択状態に設定される。
【００３２】
（ｄ）アイコンＤ処理の動作
アイコンＤがクリック操作されると、図６のステップＳＣ９の判断結果が「ＹＥＳ」となり、ステップＳＣ１０を介して図１１に示すアイコンＤ処理のステップＳＧ１に処理を進める。ステップＳＧ１では、レジスタｎの値が「１５」より小さいか否か、つまり、倍音次数１５のスペクトルバーが現在選択状態にあるかどうかを判断する。ここで、倍音次数１５のスペクトルバーが選択状態にあれば、判断結果は「ＮＯ」となり、この場合、クリック操作を無効として本ルーチンを完了させる。
一方、倍音次数１５のスペクトルバーが選択状態になければ、判断結果は「ＹＥＳ」となり、ステップＳＧ２に処理を進め、レジスタｎの値をインクリメントし、続くステップＳＧ３では、インクリメントされたレジスタｎの値に対応した倍音次数のスペクトルバーを表示変更して選択状態に設定して本ルーチンを完了させる。
したがって、例えば倍音次数１４のスペクトルバーが選択状態にあるときにアイコンＤがクリック操作されると、その右隣の倍音次数１５のスペクトルバーが新たに選択状態に設定される。
【００３３】
（ｅ）アイコンＥ処理の動作
アイコンＥがクリック操作されると、図６のステップＳＣ１１の判断結果が「ＹＥＳ」となり、ステップＳＣ１２を介して図１２に示すアイコンＥ処理のステップＳＨ１に処理を進める。ステップＳＨ１では、クリック操作が左クリックであるか否かを判断する。以下、左クリックされた場合と右クリックされた場合とに分けて動作説明する。
【００３４】
▲１▼左クリックされた場合
左クリックされると、ステップＳＨ１の判断結果は「ＹＥＳ」となり、次のステップＳＨ２に進む。ステップＳＨ２では、レジスタＨＡＮＩＡに格納される開始次数が「１５」より小さいか否かを判断する。開始次数が「１５」であると、それ以上開始次数をインクリメント出来ない為、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
一方、開始次数が「１５」より小さければ、判断結果は「ＹＥＳ」となり、次のステップＳＨ３に処理を進める。ステップＳＨ３では、レジスタＨＡＮＩＡに格納される開始次数をインクリメントして歩進させ、続くステップＳＨ４では、その歩進された開始次数をアイコンＥ中の表示フィールドに表示する。
【００３５】
次いで、ステップＳＨ５では、歩進された開始次数がレジスタＨＡＮＩＢに格納される終了次数より大きいか否かを判断する。開始次数が終了次数より小さければ、適正な範囲指定なので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
これに対し、開始次数が終了次数より大きく、開始次数と終了次数とが逆転する場合には、判断結果が「ＹＥＳ」となり、ステップＳＨ６に処理を進め、レジスタＨＡＮＩＡに格納された開始次数をレジスタＨＡＮＩＢにストアする。つまり、終了次数を超えた開始次数が設定された場合には、その開始次数を自動的に終了次数としてセットするようにしている。
【００３６】
▲２▼右クリックされた場合
右クリックされると、上記ステップＳＨ１の判断結果が「ＮＯ」となり、ステップＳＨ８に進む。ステップＳＨ８では、レジスタＨＡＮＩＡに格納される開始次数が「１」より大きいか否かを判断する。開始次数が「１」であると、これ以下には設定し得ないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、開始次数が「１」より大きければ、判断結果は「ＹＥＳ」となり、次のステップＳＨ９に進む。ステップＳＨ９では、レジスタＨＡＮＩＡに格納される開始次数をデクリメントし、続くステップＳＨ１０では、デクリメントした開始次数をアイコンＥ中の表示フィールドに表示して本ルーチンを完了させる。
【００３７】
（ｆ）アイコンＦ処理の動作
アイコンＦがクリック操作されると、図６のステップＳＣ１３の判断結果が「ＹＥＳ」となり、ステップＳＣ１４を介して図１３に示すアイコンＦ処理のステップＳＪ１に処理を進める。ステップＳＪ１では、クリック操作が左クリックであるか否かを判断する。以下、左クリックされた場合と右クリックされた場合とに分けて動作説明する。
【００３８】
▲１▼左クリックされた場合
左クリックされると、ステップＳＪ１の判断結果は「ＹＥＳ」となり、次のステップＳＪ２に進む。ステップＳＪ２では、レジスタＨＡＮＩＢに格納される終了次数が「１５」より小さいか否かを判断する。終了次数が「１５」であると、それ以上終了次数をインクリメント出来ない為、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
一方、終了次数が「１５」より小さければ、判断結果は「ＹＥＳ」となり、次のステップＳＪ３に進む。ステップＳＪ３では、レジスタＨＡＮＩＢに格納される終了次数をインクリメントして歩進させ、続くステップＳＪ４では、その歩進された終了次数をアイコンＦ中の表示フィールドに表示する。
【００３９】
▲２▼右クリックされた場合
右クリックされると、上記ステップＳＪ１の判断結果が「ＮＯ」となり、ステップＳＪ５に進む。ステップＳＪ５では、レジスタＨＡＮＩＢに格納される終了次数が「１」より大きいか否かを判断する。終了次数が「１」であると、これ以下には設定出来ないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、終了次数が「１」より大きければ、判断結果は「ＹＥＳ」となり、次のステップＳＪ６に進む。ステップＳＪ６では、レジスタＨＡＮＩＢに格納される終了次数をデクリメントし、続くステップＳＪ７では、デクリメントした終了次数をアイコンＦ中の表示フィールドに表示する。
【００４０】
次いで、ステップＳＪ８では、デクリメントされた終了次数がレジスタＨＡＮＩＡに格納される開始次数より小さいか否かを判断する。開始次数が終了次数より小さければ、適正な範囲指定なので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
これに対し、開始次数が終了次数より大きく、開始次数と終了次数とが逆転する場合には、判断結果が「ＹＥＳ」となり、ステップＳＪ９に処理を進め、レジスタＨＡＮＩＢに格納された終了次数をレジスタＨＡＮＩＡにストアする。つまり、開始次数より小さい終了次数が設定された場合には、その終了次数を自動的に開始次数としてセットするようにしている。
【００４１】
（ｇ）アイコンＧ処理の動作
アイコンＧがクリック操作されると、図７のステップＳＣ１５の判断結果が「ＹＥＳ」となり、ステップＳＣ１６を介して図１４に示すアイコンＧ処理のステップＳＫ１に処理を進める。ステップＳＫ１では、クリック操作が左クリックであるか否かを判断する。左クリックされた場合には、判断結果が「ＹＥＳ」となり、次のステップＳＫ２に進み、レジスタＫＥＩＳＨＡに格納される乗算係数が「１００」より小さいか否かを判断する。乗算係数が「１００」である場合、つまりスペクトルに傾斜を与えない設定であれば判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、乗算係数が「１００」より小さい場合には、上記ステップＳＫ２の判断結果は「ＹＥＳ」となり、ステップＳＫ３に処理を進め、レジスタＫＥＩＳＨＡに格納される乗算係数をインクリメントし、続くステップＳＫ４では、インクリメントした乗算係数をアイコンＧ中の表示フィールドに表示する。
【００４２】
これに対し、右クリックされた場合には、上記ステップＳＫ１の判断結果が「ＮＯ」となり、ステップＳＫ５に進む。ステップＳＫ５では、レジスタＫＥＩＳＨＡに格納される乗算係数が「０」より大きいか否かを判断する。乗算係数が「０」であると、これ以下には設定出来ないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、乗算係数が「０」より大きければ、判断結果は「ＹＥＳ」となり、次のステップＳＫ６に進み、レジスタＫＥＩＳＨＡに格納される乗算係数をデクリメントする。そして、ステップＳＫ４に進み、デクリメントした乗算係数をアイコンＦ中の表示フィールドに表示して本ルーチンを完了させる。
【００４３】
（ｈ）アイコンＨ処理の動作
アイコンＨがクリック操作されると、図７のステップＳＣ１７の判断結果が「ＹＥＳ」となり、ステップＳＣ１８を介して図１５に示すアイコンＨ処理のステップＳＬ１に処理を進める。ステップＳＬ１では、クリック操作が左クリックであるか否かを判断する。左クリックされた場合には、判断結果が「ＹＥＳ」となり、次のステップＳＬ２に進み、レジスタＳＡＢＵＮに格納される差分が「５０」より小さいか否かを判断する。差分が「５０」であれば判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、差分が「５０」より小さい場合には、上記ステップＳＬ２の判断結果は「ＹＥＳ」となり、ステップＳＬ３に処理を進め、レジスタＳＡＢＵＮに格納される差分をインクリメントし、続くステップＳＬ４では、インクリメントした差分をアイコンＨ中の表示フィールドに表示する。
【００４４】
これに対し、右クリックされた場合には、上記ステップＳＬ１の判断結果が「ＮＯ」となり、ステップＳＬ５に進む。ステップＳＬ５では、レジスタＳＡＢＵＮに格納される差分が「０」より大きいか否かを判断する。差分が「０」であると、これ以下には設定出来ないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、差分が「０」より大きければ、判断結果は「ＹＥＳ」となり、次のステップＳＬ６に進み、レジスタＳＡＢＵＮに格納される差分をデクリメントする。そして、ステップＳＬ４に進み、デクリメントした差分をアイコンＨ中の表示フィールドに表示して本ルーチンを完了させる。
【００４５】
（ｉ）アイコンＩ処理の動作
アイコンＩがクリック操作されると、図７のステップＳＣ１９の判断結果が「ＹＥＳ」となり、ステップＳＣ２０を介して図１６に示すアイコンＩ処理のステップＳＭ１に処理を進める。ステップＳＭ１では、クリック操作が左クリックであるか否かを判断する。左クリックされた場合には、判断結果が「ＹＥＳ」となり、次のステップＳＭ２に進み、レジスタＫＡＮＫＡＫＵに格納される間隔が「１５」より小さいか否かを判断する。間隔が「１５」であれば判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。一方、間隔が「１５」より小さい場合には、上記ステップＳＭ２の判断結果は「ＹＥＳ」となり、ステップＳＭ３に処理を進め、レジスタＫＡＮＫＡＫＵに格納される間隔をインクリメントし、続くステップＳＭ４では、インクリメントした間隔をアイコンＩ中の表示フィールドに表示する。
【００４６】
これに対し、右クリックされた場合には、上記ステップＳＭ１の判断結果が「ＮＯ」となり、ステップＳＭ５に進む。ステップＳＭ５では、レジスタＫＡＮＫＡＫＵに格納される間隔が「０」より大きいか否かを判断する。間隔が「０」であると、これ以下には設定出来ないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させ、クリック操作を無効にする。
一方、間隔が「０」より大きければ、判断結果は「ＹＥＳ」となり、次のステップＳＭ６に進み、レジスタＫＡＮＫＡＫＵに格納される間隔をデクリメントする。そして、ステップＳＭ４に進み、デクリメントした間隔をアイコンＩ中の表示フィールドに表示して本ルーチンを完了させる。
【００４７】
（ｊ）表示切替処理の動作
さて、上述したアイコンＥ処理からアイコンＩ処理の何れかが実行されると、ＣＰＵ１は図６に示すステップＳＣ２１を介して図１７に示す表示切替処理のステップＳＮ１に処理を進める。ステップＳＮ１では、スペクトル設定画面ＳＳＧのスペクトル表示エリアＳＤＥに表示される一連のスペクトルバーを消去する表示クリアを行う。次に、ステップＳＮ２では、ＲＡＭ３に格納されるスペクトル（１）〜（１５）を一旦ゼロクリアする。続くステップＳＮ３では、レジスタｎに「１」を、レジスタｍをゼロリセットする。
【００４８】
こうして表示切替えを行う前の初期設定が完了すると、ステップＳＮ４に処理を進め、レジスタＨＡＮＩＡに格納される開始次数とレジスタｎの値とが一致するか否かを判断する。一致しなければ判断結果は「ＮＯ」となり、ステップＳＮ５に進み、レジスタｎの値をインクリメントして歩進させ、再びステップＳＮ４に処理を戻す。
以後、レジスタＨＡＮＩＡに格納される開始次数とレジスタｎの値とが一致するまでステップＳＮ４，ＳＮ５を繰り返し、レジスタｎの値が開始次数になると、ステップＳＮ４の判断結果が「ＹＥＳ」となり、ステップＳＮ６に進む。ステップＳＮ６では、開始次数のスペクトル（ｎ）に最大「２５５」をストアする。
【００４９】
次いで、ステップＳＮ７では、レジスタｎの値をインクリメントして歩進させ、続くステップＳＮ８では、歩進したレジスタｎの値が、レジスタＨＡＮＩＢに格納される終了次数以下であるか否かを判断する。終了次数を超えると、判断結果は「ＮＯ」となり、本ルーチンを完了させるが、終了次数以下であれば、判断結果が「ＹＥＳ」となり、図１８に示すステップＳＮ９に処理を進め、レジスタｍの値をインクリメントする。次に、ステップＳＮ１０に進むと、歩進したレジスタｍの値が、レジスタＫＡＮＫＡＫＵに格納される間隔に一致するか否かを判断する。一致する場合には、次のステップＳＮ１１に処理を進めるが、一致しない場合には後述のステップＳＮ１５に処理を進める。
【００５０】
ステップＳＮ１１では、レジスタＫＥＩＳＨＡに格納される乗算係数からレジスタＳＡＢＵＮに格納される差分を減算した値を、レジスタＫＥＩＳＨＡにストアし直して乗算係数を更新する。次に、ステップＳＮ１２では、更新した乗算係数が「５０」より小さいかどうかを判断し、そうであれば次のステップＳＮ１３に処理を進めて乗算係数を「５０」に再度設定し直してからステップＳＮ１４に進む。一方、更新した乗算係数が「５０」より小さくなければ、判断結果は「ＮＯ」となり、再設定することなくステップＳＮ１４に進む。
【００５１】
ステップＳＮ１４では、レジスタｍに格納された間隔をゼロリセットし、続くステップＳＮ１５では、レジスタＫＥＩＳＨＡに格納された乗算係数をスペクトル（ｎ）に乗算した値でスペクトル（ｎ）を更新する。そして、ステップＳＮ１６では、更新されたスペクトル（ｎ）を、倍音次数ｎのスペクトルバーとしてスペクトル設定画面ＳＳＧのスペクトル表示エリアＳＤＥに表示する。
この後、上述したステップＳＮ７に処理を戻し、レジスタｎをインクリメントして歩進させ、歩進させたレジスタｎの値がレジスタＨＡＮＩＢに格納される終了次数を超えるまで上述したステップＳＮ７〜ＳＮ１６を繰り返す。そして、レジスタｎの値がレジスタＨＡＮＩＢに格納される終了次数を超えると、ステップＳＮ８の判断結果が「ＮＯ」となり、本ルーチンを完了させる。
【００５２】
以上説明した表示切替処理の具体的な一例について説明する。スペクトル設定画面ＳＳＧにおいてアイコンＥ〜Ｉをクリック操作して、例えば図１９に示すように、開始次数「１」、終了次数「１０」、傾斜「８５％（乗算係数）」、差分「０」および間隔「１」が設定されたとする。そうすると、前述の表示切替処理に基づき、基本波（倍音次数１）のスペクトル（１）は最大値「２５５」に設定され、倍音次数２〜１０の各スペクトル（２）〜（１０）はそれぞれ前次数のスペクトルレベルより１５％ずつ低減するよう一括して自動設定される。
【００５３】
したがって、従来のように、基本波およびその倍音成分毎のスペクトル（振幅値）を一つ一つ個別に設定する必要がなくなる為、倍音構造を一括して簡単に設定することが可能になる訳である。
なお、図１９に図示したスペクトル設定画面ＳＳＧでは、説明の都合上、各スペクトルバー毎にスペクトル（振幅値）や乗算係数を表示している。本実施例では、各スペクトルバー毎にスペクトル（振幅値）や乗算係数を表示する構成を有していないが、図１９に図示したような画面表示を行う構成にしても構わない。
【００５４】
また、図１９に図示した一例において、アイコンＨをクリック操作して差分「０」から差分「１」に設定変更したとする。そうすると、図２０に図示する通り、倍音次数２〜１０にそれぞれ対応する各乗算係数が１％分ずつ増加し、それに連れて各スペクトル（２）〜（１０）も自動的に設定変更されるようになっている。
【００５５】
さらに、図２０に図示した一例において、アイコンＩをクリック操作して間隔「１」から間隔「２」に設定変更したとする。そうすると、図２１に図示する通り、倍音次数２〜１０では、２つおきに乗算係数が１％分ずつ増加し、それに応じた各スペクトル（２）〜（１０）も自動的に設定変更されるようになっている。
【００５６】
加えて、図１９に図示した一例において、アイコンＥをクリック操作して開始次数「１」から開始次数「６」に設定変更したとする。そうすると、図２２に図示する通り、基本波（倍音次数１）から倍音次数６の各スペクトル（１）〜（６）はそれぞれ最大値「２５５」に設定され、倍音次数７以降では前次数のスペクトルレベルより８５％づつ低減するよう自動的に設定される。
【００５７】
（３）発音処理の動作
次に、図２３を参照して、ＣＰＵ１および音源８が協働して実行する発音処理の動作について説明する。
さて、モードスイッチがオン操作されてフラグＭＯＤＥが「０」に設定されると、前述したメインルーチン（図４参照）のステップＳＡ３を介して図２３の発音処理が実行され、ＣＰＵ１はステップＳＣ１に処理を進める。ステップＳＣ１では、ＭＩＤＩインタフェース４への入力の有無を判断する。ＭＩＤＩ入力が無ければ、判断結果は「ＮＯ」となり、一旦本ルーチンを完了させる。
一方、ＭＩＤＩ入力が有れば、判断結果は「ＹＥＳ」となり、ＣＰＵ１は次のステップＳＰ２に処理を進め、ＭＩＤＩ入力がノートオンイベントであるか否かを判断する。以下、ノートオンイベントの場合とノートオフイベントの場合とに分けて動作説明する。
【００５８】
▲１▼ノートオンイベントの場合
ＭＩＤＩ入力がノートオンイベントであると、ステップＳＰ２の判断結果が「ＹＥＳ」となり、ＣＰＵ１はステップＳＰ３に処理を進め、そのノートオンイベントから抽出したノートオンナンバをレジスタＮＯＴＥにセットする。次いで、ステップＳＰ４では、楽音Ｗを保持するレジスタＷをゼロリセットし、続くステップＳＰ５では倍音次数を格納するレジスタｎに初期値「１」をセットする。こうして楽音発生の準備が整うと、ＣＰＵ１はレジスタＮＯＴＥ，Ｗ，ｎの内容を音源８に送出して楽音発生を指示する。これにより、音源８はステップＳＰ６〜ＳＰ１０にてＭＩＤＩ入力に対応した楽音を発生する。
【００５９】
すなわち、ステップＳＰ６では、レジスタｎの値に対応した倍音次数ｎの波形（第ｎ次波形と称す）を発生する。音源８には、第１次波形（基本波）から第ｎ次波形の正弦波データが予め記憶されており、それらの内からレジスタｎの値に対応した次数の正弦波データを読み出すことで波形発生する。次に、ステップＳＰ７では、前述したスペクトル設定処理にて設定されたスペクトル（ｎ）を、生成した第ｎ次波形に乗算してレジスタＷに加算する。
【００６０】
次いで、ステップＳＰ８では、レジスタｎに格納される倍音次数ｎを歩進させ、続くステップＳＰ９では歩進された倍音次数ｎが「１５」を超えたか、つまり、倍音合成し終えたかどうかを判断する。倍音合成し終えていなければ、判断結果が「ＮＯ」となり、ステップＳＰ６に処理を戻す。
以後、スペクトル（ｎ）が乗算された第ｎ次波形をレジスタＷに累算する倍音合成が終了すると、ステップＳＰ９の判断結果が「ＹＥＳ」となり、ステップＳＰ１０に進み、倍音合成によりレジスタＷに格納された楽音Ｗを、レジスタＮＯＴＥに対応した音高で出力する。
【００６１】
▲２▼ノートオフイベントの場合
ＭＩＤＩ入力がノートオフイベントであると、ステップＳＰ１１の判断結果が「ＹＥＳ」となり、ＣＰＵ１はステップＳＰ１２に処理を進め、そのノートオフイベントから抽出したノートオフナンバをレジスタＮＯＴＥにセットする。次いで、ステップＳＰ１３では、レジスタＮＯＴＥに対応した音高の楽音Ｗの消音を音源８に指示する。
【００６２】
以上説明したように、本実施例によれば、基本波である第１次倍音からその整数次倍音となる第ｎ次倍音までの内からスペクトル設定したい倍音範囲を開始次数および終了次数で指定すると共に、その指定した倍音範囲におけるスペクトルレベルを減衰させる乗算係数を指定すると、開始次数のスペクトルレベルを基準に、次数が進む毎に前次数のスペクトルレベルに前記乗算係数を乗算して得たスペクトルレベルを終了次数まで自動的に設定し、その結果をスペクトル設定画面ＳＳＧに画面表示するので、倍音構造を一括して簡単に設定することが可能になっている。
【００６３】
また、本実施例では、乗算係数を次数毎に変化させる差分（階差）を指定し得るので、指定された乗算係数により得られるスペクトルレベルの減衰レート、つまり、指定された倍音範囲のスペクトル傾斜を簡単に変更することも可能になっている。さらに、本実施例では、差分（階差）の間隔を指定し得るので、指定された乗算係数および差分にて定まるスペクトル傾斜を微調整することも可能になる。
【００６４】
なお、上述した実施例では、第１次倍音から第ｎ次倍音までの内からスペクトル設定したい、唯一の倍音範囲を指定するようにしたが、これに限らず、倍音範囲を複数指定し、かつ、それら複数の倍音範囲毎に、乗算係数、差分および間隔を個別指定することも可能であり、このようにすれば、複雑な倍音構造であっても簡単に設定することが出来る。
【００６５】
また、この実施例では、第１次倍音から第ｎ次倍音までの倍音成分が単調減少する倍音構造を対象としているが、これに限らず、倍音成分が単調増加するようなプロファイルの倍音構造を設定し得るように、乗算係数、差分および間隔を変化させることも可能である。
【００６６】
さらに、本実施例では、各倍音次数のスペクトルをバー表示するようにしたが、これに替えて、例えば各倍音次数のスペクトルレベルを包絡するエンベロープ形状として画面表示し、そのエンベロープ形状について範囲指定し、指定した範囲で形状変化させるようにしても倍音構造を一括して簡単に設定することができる。
【００６７】
【発明の効果】
請求項１，４に記載の発明によれば、第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定すると共に、乗算係数を指定すると、開始次数のスペクトルレベルが生成され、この開始次数のスペクトルレベルを基準に用い、開始次数の次の次数から終了次数まで次数を進める毎に、指定された乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出する。そして、生成された開始次数のスペクトルレベルと、算出される開始次数の次の次数から終了次数までの各スペクトルレベルとを画面表示するので、倍音構造を一括して簡単に設定することができる。
請求項２，５に記載の発明によれば、スペクトル設定画面において第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定すると共に、乗算係数と差分値とを指定すると、指定された乗算係数を基準に用い、開始次数の次の次数から終了次数まで次数を進める毎に、前次数の乗算係数から差分値を減算して現次数の乗算係数を発生する。また、生成される開始次数のスペクトルレベルを基準に用い、開始次数の次の次数から終了次数まで次数を進める毎に、上記現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出する。そして、開始次数のスペクトルレベルと、算出される開始次数の次の次数から終了次数までの各スペクトルレベルとをスペクトル設定画面に画面表示するので、スペクトル設定画面を見ながら所望の倍音構造を一括して設定でき、しかも乗算係数を次数毎に変化させる差分値を指定する為、開始次数から終了次数までの各スペクトルの傾斜を一括して簡単に変更することができる。
請求項３，６に記載の発明によれば、スペクトル設定画面において第１次倍音から第ｎ次倍音までの各倍音の内からスペクトルレベル設定する範囲を開始次数および終了次数で指定すると共に、乗算係数、差分値および間隔値指定すると、指定された乗算係数を基準に用い、開始次数の次の次数から終了次数に達するまで間隔値に相当する数の次数が進む毎に、当該間隔値に相当する数の次数を進める前の乗算係数から差分値を減算して現次数の乗算係数を発生する。また、生成される開始次数のスペクトルレベルを基準に用い、開始次数の次の次数から終了次数まで次数を進める毎に、上記現次数の乗算係数を、前次数のスペクトルレベルに乗算して現次数のスペクトルレベルを算出する。そして、開始次数のスペクトルレベルと、算出される開始次数の次の次数から終了次数までの各スペクトルレベルとをスペクトル設定画面に画面表示するので、スペクトル設定画面を見ながら所望の倍音構造を一括して設定でき、しかも差分（階差）の間隔を指定する為、乗算係数および差分にて定まる開始次数から終了次数までの各スペクトルの傾斜を一括して微調整することもできる。
【図面の簡単な説明】
【図１】本発明による一実施例の構成を示すブロック図である。
【図２】ＲＡＭのメモリ構成を示す図である。
【図３】スペクトル設定画面ＳＳＧの一構成例を示す図である。
【図４】メインルーチンの動作を示すフローチャートである。
【図５】イニシャライズ処理の動作を示すフローチャートである。
【図６】スペクトル設定処理の動作を示すフローチャートである。
【図７】スペクトル設定処理の動作を示すフローチャートである。
【図８】アイコンＡ処理の動作を示すフローチャートである。
【図９】アイコンＢ処理の動作を示すフローチャートである。
【図１０】アイコンＣ処理の動作を示すフローチャートである。
【図１１】アイコンＤ処理の動作を示すフローチャートである。
【図１２】アイコンＥ処理の動作を示すフローチャートである。
【図１３】アイコンＦ処理の動作を示すフローチャートである。
【図１４】アイコンＧ処理の動作を示すフローチャートである。
【図１５】アイコンＨ処理の動作を示すフローチャートである。
【図１６】アイコンＩ処理の動作を示すフローチャートである。
【図１７】表示切替処理の動作を示すフローチャートである。
【図１８】表示切替処理の動作を示すフローチャートである。
【図１９】スペクトル設定処理の動作を説明するためのスペクトル設定画面ＳＳＧの一例を示す図である。
【図２０】スペクトル設定処理の動作を説明するためのスペクトル設定画面ＳＳＧの一例を示す図である。
【図２１】スペクトル設定処理の動作を説明するためのスペクトル設定画面ＳＳＧの一例を示す図である。
【図２２】スペクトル設定処理の動作を説明するためのスペクトル設定画面ＳＳＧの一例を示す図である。
【図２３】発音処理の動作を示すフローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  パネルスイッチ群
７  表示部
８  音源
９  サウンドシステム
【図１】
0003862156.tif 000002
【図２】
0003862156.tif 000003
【図３】
0003862156.tif 000004
【図４】
0003862156.tif 000005
【図５】
0003862156.tif 000006
【図６】
0003862156.tif 000007
【図７】
0003862156.tif 000008
【図８】
0003862156.tif 000009
【図９】
0003862156.tif 000010
【図１０】
0003862156.tif 000011
【図１１】
0003862156.tif 000012
【図１２】
0003862156.tif 000013
【図１３】
0003862156.tif 000014
【図１４】
0003862156.tif 000015
【図１５】
0003862156.tif 000016
【図１６】
0003862156.tif 000017
【図１７】
0003862156.tif 000018
【図１８】
0003862156.tif 000019
【図１９】
0003862156.tif 000020
【図２０】
0003862156.tif 000021
【図２１】
0003862156.tif 000022
【図２２】
0003862156.tif 000023
【図２３】
0003862156.tif 000024