(57)【特許請求の範囲】
【請求項１】
楽音を生成する音源内で使用する変調波形を発生する変調波形発生装置であって、
自動演奏のテンポに応じた時間間隔で発生されるテンポ信号を受信する受信手段と、
テンポ信号が発生される周期よりも短い周期である所定周期でクロック信号を発生するクロック信号発生手段と、
テンポ信号を受信するごとに、トリガーカウンタアップ値だけ、値をカウントアップするトリガーカウンタであって、その値が最大値に達したときにその値を初期化するものと、
変調波形のベースとなるベース波形の１周期で前記トリガーカウンタの値が最大値となるように、前記トリガーカウンタアップ値を決定するトリガーカウントアップ値決定手段と、
前記クロック信号が発生されるごとに、補間レートだけ、値をカウントアップする共通カウンタであって、共通カウンタの値が最大値に達したときにその値を初期化するものと、
前記トリガーカウンタアップ値よりも小さい値である補間レートを、自動演奏テンポに応じて決定する補間レート決定手段と、
前記トリガーカウンタの値がカウントアップされるごとに、新たなトリガーカウンタの値を、前記共通カウンタにおけるカウントアップの目標値として設定する目標値設定手段と、
前記共通カウンタの値が前記目標値に達したときには、前記目標値が新たな値に設定されるまでの間、前記共通カウンタの値を目標値に一致させておき、前記共通カウンタの値が前記目標値に達する前に、前記目標値が新たな値に設定されたときには、その時点で、前記共通カウンタの値を、新たに設定される前の目標値の値へ変更する、共通カウンタ制御手段と、
前記クロック信号が発生されるごとに、前記共通カウンタの値をベース波形として出力するベース波形出力手段と、
前記ベース波形に基づいて変調波形を発生する変調波形発生手段と
を備えたことを特徴とする変調波形発生装置。
【請求項２】
請求項１に記載の変調波形発生装置において、
前記補間レート決定手段は、前記テンポ信号を受信するごとに、および／または、テンポの変更を指示するテンポチェンジを受信するごとに、前記補間レートを決定することを特徴とする変調波形発生装置。
【請求項３】
請求項１または２に記載の変調波形発生装置において、
前記トリガーカウンタは、ベース波形の１周期内のすべてのテンポ信号の受信タイミングで前記カウントアップを行なう代わりに、ベース波形の１周期内の任意のテンポ信号を間引き、間引いたテンポ信号以外のテンポ信号の受信タイミングで前記カウントアップを行なうものとし、そのときにカウントアップするトリガーカウンタアップ値は前記間引いたテンポ信号の受信タイミングでカウントアップすべきであった値に基づいて変更するものであることを特徴とする変調波形発生装置。
【請求項４】
請求項１から３の何れか１つに記載の変調波形発生装置において、
前記クロック信号は、楽音生成処理を行なう際の基準タイミング信号であるサンプリングクロック、またはＮ個（Ｎは自然数）のサンプリングクロックごとに１回取り出したクロック信号であることを特徴とする変調波形発生装置。
【請求項５】
請求項１から４の何れか１つに記載の変調波形発生装置において、
前記変調波形発生手段では、生成した変調波形の平滑化を行ない、平滑化後の変調波形を発生することを特徴とする変調波形発生装置。
【請求項６】
音源で使用する変調波形を発生する変調波形発生部を備えた自動演奏装置であって、
自動演奏のテンポに応じた時間間隔でテンポ信号を発生するテンポ発生手段と、
テンポ信号に応じて、テンポ変更イベントを含む曲データの自動演奏を行なう自動演奏手段と、
テンポ信号が発生される周期よりも短い周期である所定周期でクロック信号を発生するクロック信号発生手段と、
テンポ信号を受信するごとに、トリガーカウンタアップ値だけ、値をカウントアップするトリガーカウンタであって、その値が最大値に達したときにその値を初期化するものと、
変調波形のベースとなるベース波形の１周期で前記トリガーカウンタの値が最大値となるように、前記トリガーカウンタアップ値を決定するトリガーカウントアップ値決定手段と、
前記クロック信号が発生されるごとに、補間レートだけ、値をカウントアップする共通カウンタであって、共通カウンタの値が最大値に達したときにその値を初期化するものと、
前記トリガーカウンタアップ値よりも小さい値である補間レートを、自動演奏テンポに応じて決定する補間レート決定手段と、
前記トリガーカウンタの値がカウントアップされるごとに、新たなトリガーカウンタの値を、前記共通カウンタにおけるカウントアップの目標値として設定する目標値設定手段と、
前記共通カウンタの値が前記目標値に達したときには、前記目標値が新たな値に設定されるまでの間、前記共通カウンタの値を目標値に一致させておき、前記共通カウンタの値が前記目標値に達する前に、前記目標値が新たな値に設定されたときには、その時点で、前記共通カウンタの値を、新たに設定される前の目標値の値へ変更する、共通カウンタ制御手段と、
前記クロック信号が発生されるごとに、前記共通カウンタの値をベース波形として出力するベース波形出力手段と、
前記ベース波形に基づいて変調波形を発生する変調波形発生手段と
を備えたことを特徴とする自動演奏装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電子楽器などに適用する変調波形発生装置に関する。
【０００２】
【従来の技術】
電子楽器の発生する楽音に対しては、振幅、周波数、パン（ステレオ音における左右の音量バランス）、あるいは音色などを変動させて特殊効果を付与することが多い。そのような特殊効果の付与を行なうため、変調波（低周波）波形発生器、いわゆるＬＦＯが設けられる。楽音に対する特殊効果の周期は、このＬＦＯから出力される変調波形の周期によって決定される。
【０００３】
一方、近年の電子楽器は自動演奏や自動伴奏の機能を備えたものが多い。自動演奏や自動伴奏では、自動演奏・伴奏におけるテンポが指定される。例えば、ＭＩＤＩ（Musical Instruments Digital Interface）データで表現された自動演奏データでは、曲の先頭や途中にテンポを指定するデータをセットし、曲の先頭や途中でのテンポの設定を行なう。
【０００４】
そのような自動演奏・伴奏の側でのテンポのタイミングと特殊効果のタイミングが一致しないと楽音が不自然になる。そこで、特殊効果の周期を規定するＬＦＯと自動演奏・伴奏のテンポとを同期させるための技術が提案されている。例えば、特許第２６２１６６９号には、指示手段による楽音信号発生指示に応じて第１の楽音信号を発生し、テンポ設定手段で設定されたテンポにしたがって自動的に第２の楽音信号を発生し、さらに前記テンポ設定手段で設定されたテンポに応じた周期の変調信号を発生し、その変調信号に基づき第１の楽音信号を変調するようにした電子楽器が開示されている。これによれば、第２の楽音信号（自動伴奏）のテンポはテンポ設定手段で設定されたテンポにしたがい、さらにそのテンポに応じた周期の変調信号で第１の楽音信号を変調するので、変調信号の周期を自動伴奏のテンポに対応させることができ、第１の楽音信号の変調を自動伴奏に同期させることができる。なお、以下では、自動演奏や自動伴奏のテンポに同期した周期の変調信号を発生するＬＦＯを「テンポ同期ＬＦＯ」と呼ぶ。
【０００５】
【発明が解決しようとする課題】
上記特許第２６２１６６９号に記載のものは、数値として与えられたテンポに対して同期した変調信号を発生するものであり、実際にテンポを規定するテンポクロック（例えば、ＭＩＤＩデータで入力してくるテンポクロック）に対して同期した変調信号を発生するものではない。特に、自動演奏（以下、単に自動演奏というときは自動伴奏も含むものとする）のテンポを規定するテンポクロックの時間間隔が変動する場合、従来のテンポ同期ＬＦＯでは、その周期が変動するテンポクロックに対して同期することは困難である。また、従来のテンポ同期ＬＦＯでは、仮に、自動演奏手段からテンポクロックとともに数値としてのテンポ値を供給しても、テンポの変化タイミングを互いに完全一致させることはできないので、厳密な意味での同期はとれていない。
【０００６】
さらに、その指定されたテンポに応じて変調波形を発生するＬＦＯ（音源内のＬＦＯ）が自動演奏手段（一般にＣＰＵ）とは独立した発振器である場合には、たとえテンポ値が固定であっても、テンポクロックと変調波形が時間とともに少しずつずれていくという問題がある。ＣＰＵにテンポ同期ＬＦＯの波形発生処理を受け持たせることも考えられるが、そうするとＣＰＵは、各サンプリング周期ごとに発音チャンネル数分のＬＦＯ処理を行なうことになり、負担が大きい。
【０００７】
この発明は、上述の従来技術における問題点に鑑み、ＬＦＯと自動演奏手段とが独立して設けられている場合でも、自動演奏のテンポに同期した変調波形を発生することができる変調波形発生装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この目的を達成するため、請求項１に係る発明は、楽音を生成する音源内で使用する変調波形を発生する変調波形発生装置において、自動演奏のテンポに応じた時間間隔で発生されるテンポ信号を受信し、前記テンポ信号が発生される周期よりも短い周期である所定周期でクロック信号を発生する。またトリガーカウンタを用意し、テンポ信号を受信するごとにトリガーカウンタアップ値だけ該トリガーカウンタの値をカウントアップするようにし、そのトリガーカウンタアップ値は、変調波形のベースとなるベース波形の１周期でトリガーカウンタの値が最大値となるように決定する。トリガーカウンタの値は、最大値に達したときに初期化する。さらに共通カウンタを用意し、前記クロック信号が発生されるごとに補間レートだけ該共通カウンタの値をカウントアップし、その補間レートは、トリガーカウンタアップ値よりも小さい値とし、自動演奏テンポに応じて決定する。共通カウンタの値は、最大値に達したときに初期化する。そして、トリガーカウンタの値がカウントアップされるごとに、新たなトリガーカウンタの値を、前記共通カウンタにおけるカウントアップの目標値として設定し、前記共通カウンタの値が前記目標値に達したときには、前記目標値が新たな値に設定されるまでの間、前記共通カウンタの値を目標値に一致させておき、前記共通カウンタの値が前記目標値に達する前に、前記目標値が新たな値に設定されたときには、その時点で、前記共通カウンタの値を、新たに設定される前の目標値の値へ変更する。前記クロック信号が発生されるごとに、前記共通カウンタの値をベース波形として出力し、そのベース波形に基づいて変調波形を発生する。
テンポとは、例えば１分間の４分音符の数で表される音楽的なテンポであり、テンポ信号は該テンポに応じて変化する時間間隔で繰り返し発生される。このテンポ信号ごとにトリガーカウンタアップ値を累算することにより、階段状に変化していく目標値を得る。一方、クロック信号はテンポ信号が発生される周期よりも短い周期で発生するものとし、そのクロック信号が発生されるごとに補間レートだけ共通カウンタの値をカウントアップする。補間レートは、トリガーカウンタアップ値よりも小さい値とし、自動演奏テンポに応じて決定する。以上のようにして、テンポ信号ごとに階段状に目標値を変化させ、テンポ信号とテンポ信号の間は、クロック信号ごとに補間レートを累算してその時点の目標値に向かって近づいていく共通カウンタの値を求め、その共通カウンタの値をベース波形とし、該ベース波形に基づいて変調波形を生成する。
要するに、ベース波形の１周期をテンポ信号で区切り、区切った各区間において目標値（トリガーカウンタの値）に近づく共通カウンタの値を求めている。１周期を区切った各区間において目標値に近づく共通カウンタの値を求めているので、途中でテンポが変化しても、そのテンポの変化に応じて補間レートが変更され、そのような補間レートを累算して共通カウンタの値を求めるので、テンポに同期したベース波形（およびそれから作られる変調波形）が得られる。
共通カウンタ制御手段は、前記共通カウンタの値が前記目標値に達したときには、前記目標値が新たな値に設定されるまでの間、前記共通カウンタの値を目標値に一致させておく。また、前記共通カウンタの値が前記目標値に達する前に、前記目標値が新たな値に設定されたときには、その時点で、前記共通カウンタの値を、新たに設定される前の目標値の値へ変更する。このようにして、テンポ信号ごとに共通カウンタの値を目標値に一致させる（いわばテンポ信号ごとに共通カウンタの値を目標値に修正する）ので、上述のベース波形の１周期を区切った各区間において目標値に近づく共通カウンタの値を求めていることと合わせることで、テンポが変化した場合でも、より正確にそのテンポに同期した変調波形が得られるものである。
なお、トリガーカウンタの値および共通カウンタの値は所定の条件下で初期化されるので、ベース波形は鋸歯状波の繰り返しとなり、そのようなベース波形に基づいて変調波形が繰り返し出力されることになる。
【０００９】
請求項２に係る発明は、請求項１において、前記補間レート決定手段は、前記テンポ信号を受信するごとに、および／または、テンポの変更を指示するテンポチェンジを受信するごとに、前記補間レートを決定することを特徴とする。
【００１０】
請求項３に係る発明は、請求項１または２において、前記トリガーカウンタは、ベース波形の１周期内のすべてのテンポ信号の受信タイミングで前記カウントアップを行なう代わりに、ベース波形の１周期内の任意のテンポ信号を間引き、間引いたテンポ信号以外のテンポ信号の受信タイミングで前記カウントアップを行なうものとし、そのときにカウントアップするトリガーカウンタアップ値は前記間引いたテンポ信号の受信タイミングでカウントアップすべきであった値に基づいて変更するものであることを特徴とする。
【００１１】
請求項４に係る発明は、請求項１から３の何れか１つにおいて、前記クロック信号は、楽音生成処理を行なう際の基準タイミング信号であるサンプリングクロック、またはＮ個（Ｎは自然数）のサンプリングクロックごとに１回取り出したクロック信号であることを特徴とする。
請求項５に係る発明は、請求項１から４の何れか１つにおいて、前記変調波形発生手段では、生成した変調波形の平滑化を行ない、平滑化後の変調波形を発生することを特徴とする。
請求項６に係る発明は、請求項１に係る変調波形発生装置を備えた自動演奏装置である。
【００１２】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【００１３】
図１は、この発明の変調波形発生装置を適用した電子楽器のブロック構成を示す。この電子楽器は、中央処理装置（ＣＰＵ）１０１、リードオンリメモリ（ＲＯＭ）１０２、ランダムアクセスメモリ（ＲＡＭ）１０３、タイマ１０４、ドライブ装置１０５、ＭＩＤＩインターフェース１０７、ネットワークインターフェース１０８、パネルスイッチ１０９、パネル表示器１１０、音源１２０、波形メモリ１２８、ディジタルアナログ変換器（ＤＡＣ）１３０、およびサウンドシステム１３１を備える。
【００１４】
ＣＰＵ１０１は、この電子楽器全体の動作を制御するための処理装置である。ＲＯＭ１０２は、ＣＰＵ１０１が実行するプログラムや各種の定数データなどを格納した不揮発メモリである。ＲＡＭ１０３は、ＣＰＵ１０１が実行するプログラムのロード領域や各種のワークメモリ領域に使用する揮発性のメモリである。タイマ１０４は、所定周期のクロック信号を供給するタイマである。ドライブ装置１０５は、外部記録媒体であるディスク１０６を挿入し、ＣＰＵ１０１の指示に応じて各種のデータを読み書きする装置である。ＭＩＤＩインターフェース１０７は、外部のＭＩＤＩ機器と接続しＭＩＤＩ規格にしたがって信号のやり取りを行なうインターフェースである。ネットワークインターフェース１０８は、外部のネットワークに接続するためのインターフェースである。パネルスイッチ１０９は、この電子楽器の外部パネル上に設けられている各種のスイッチなどの操作子を示す。パネル表示器１１０は、この電子楽器のパネル上に設けられている表示器である。
【００１５】
音源１２０は、音源制御レジスタ１２１、ＬＦＯ（変調波形発生部）１２２、アドレス発生部１２３、補間部１２４、ＤＣＦ（周波数特性制御部）１２５、ＥＧ（エンベロープジェネレータ）１２６、およびミキサ＆ＤＳＰ１２７を備える。音源１２０は、複数チャンネルについて時分割で動作する。すなわち、いわゆる１ＤＡＣ周期（１サンプリング周期）をチャンネルの数で分割し、分割した各時間区間で各チャンネルの楽音生成処理を行なうものである。
【００１６】
音源制御レジスタ１２１は、ＣＰＵ１０１と音源１２０との間のインターフェースの役割を果たす。ＣＰＵ１０１は、音源制御レジスタ１２１の中の所定のレジスタに所定の値を書き込むことにより、音源１２０に各種の指示命令を出す。音源制御レジスタ１２１については、後に詳しく説明する。アドレス発生部１２３は、ＣＰＵ１０１の指示に応じて波形メモリ１２８中の所定の波形データを読み出すアドレスを発生する。読み出された波形データは補間部１２４で補間処理され、ＤＣＦ１２５に入力する。ＤＣＦ１２５は、入力信号に対し音色変化を与える。ＥＧ付与部１２６は、入力信号に対してエンベロープを付与する。ミキサ＆ＤＳＰ１２７は、入力信号をミキシングし各種の効果付与などを行なった後、最終的な音源出力として楽音信号をＤＡＣ１３０に出力する。ＤＡＣ１３０は、入力したディジタル楽音信号をアナログ楽音信号に変換する。変換されたアナログ楽音信号はサウンドシステム１３１により放音される。
【００１７】
ＬＦＯ１２２で発生したＬＦＯ波形は、アドレス発生部１２３、ＤＣＦ１２５、ＥＧ付与部１２６、およびミキサ＆ＤＳＰ１２７に入力する。アドレス発生部１２３に入力するＬＦＯ波形は、アドレスを周波数変調するピッチ変調波形の役割を果たす。ＤＣＦ１２５に入力するＬＦＯ波形は、音色を変化させる音色変調波形の役割を果たす。ＥＧ付与部１２６に入力するＬＦＯ波形は、エンベロープを付与する際の振幅変調波形の役割を果たす。ミキサ＆ＤＳＰ１２７に入力するＬＦＯ波形は、パンの変化に利用したり、リバーブやコーラスなどの各種のエフェクト処理に利用する。
【００１８】
図２は、ＬＦＯ１２２で発生するＬＦＯ波形の例を示す。５線譜と音符は自動演奏の楽音を示す。その下の波形２０１は、この自動演奏のテンポに同期して発生されるＬＦＯ波形の例である。例えば、１小節の開始位置でパンポット（音像の位置）を左側に定位（ステレオのＬ側の音量レベルが最大でＲ側の音量レベルが０の状態）させ、小節内では徐々にパンポットを左側から右側に移動させ、小節終了位置ではパンポットを右側に定位させるようなパンニングを行ないたいときには、このＬＦＯ波形２０１をミキサ＆ＤＳＰ１２７のパンニング回路に供給する。ＬＦＯ波形２０１はパンポットの定位する位置を規定する波形の役割を果たし、ＬＦＯ波形２０の最下位レベルで一番左、最上位レベルで一番右に定位するものとする。このようなパンニングを行なう場合、自動演奏のテンポとＬＦＯ波形が同期していないと、各小節で所望のパンニングを行なうことができない。本実施形態では、自動演奏のテンポに同期したＬＦＯ波形を発生するので、各小節で自動演奏のテンポに同期したパンニングを行なうことができる。
【００１９】
自動演奏のテンポに同期したＬＦＯ波形２０１を発生するため、ＣＰＵ１０１側からＬＦＯ１２２にテンポクロックであるＦ８信号に基づくテンポ同期トリガーを供給する。すなわち、ＣＰＵ１０１は、後述するようにＦ８信号のタイミングでテンポ同期トリガーを音源１２０に供給する。ＬＦＯ１２２は、Ｆ８信号に基づくテンポ同期トリガーを受けたとき、カウンタの次の目標値に変えるなどのテンポに対する同期ずれを補正する処理を行ない、これによりできる限りＦ８信号のテンポに同期したＬＦＯ波形を出力するように処理する。この処理については、後述する。
【００２０】
図３は、図１のＬＦＯ１２２の詳細な構成を示す。ＬＦＯ１２２は、トリガーカウンタ３０１、共通カウンタ３０２、各チャンネル用低周波発振部３０３、およびＤＳＰ用各低周波発振部３０５を備える。トリガーカウンタ３０１と共通カウンタ３０２は、ＬＦＯ１２２内に１つずつ設けられている。各チャンネル用低周波発振部３０３は、各発音チャンネルごとに設けられている。ここでは１２８チャンネル分のチャンネル用低周波発振部３０３が設けられている。ＤＳＰ用各低周波発振部３０５は、ミキサ＆ＤＳＰ１２７で使用する複数の変調波形を生成するため複数設けられている。ここでは６４チャンネル分のＤＳＰ用各低周波発振部３０５が設けられている。
【００２１】
各発音チャンネル用低周波発振部３０３は、Ｎ倍処理部３３１、リセット制御部３３２、オフセット付加部３３３、形状変形部３３４、直線補間部３３５、位相反転部３３６，３３８，３４０、デプス制御部３３７，３３９，３４１、および非同期カウンタ３４２を備える。各ＤＳＰ用各低周波発振部３０５は、Ｎ倍処理部３５１、リセット制御部３５２、オフセット付加部３５３、形状変形部３５４、１次ＬＰＦ３５５、および非同期カウンタ３５６を備える。
【００２２】
トリガーカウンタ３０１と共通カウンタ３０２は、出力するＬＦＯ波形の元になる基本的な鋸歯状波（ベース波形と呼ぶ）を生成するためのそれぞれ整数部１７ビットと小数部１０ビットで構成されるカウンタである。これらにより生成したベース波形を、各チャンネル用低周波発振部３０３やＤＳＰ用各低周波発振部３０５で加工することにより、所望のＬＦＯ波形を得る。
【００２３】
トリガーカウンタ３０１は、ＣＰＵ１０１からテンポ同期トリガーが供給されるごとに、トリガーカウンタアップ値を現在値に加算し、加算後の値を新たな現在値として出力するカウンタである。トリガーカウンタ３０１の現在値は、共通カウンタ３０２の目標値となる。テンポ同期トリガーとは、Ｆ８信号のタイミングでＣＰＵ１０１から音源１２０に供給されるトリガーであり、後述するトリガーアクションのことである。トリガーカウンタアップ値は、ＣＰＵ１０１が算出して設定する。
【００２４】
共通カウンタ３０２は、各サンプリング周期ごとに共通カウンタ補間レートを累算するカウンタである。共通カウンタ補間レートは、ＣＰＵ１０１が算出して設定する。次のテンポ同期トリガーが来る前に、共通カウンタ３０２の累算値がトリガーカウンタ３０１の値に到達したら、そこで共通カウンタ３０２のサンプリング周期ごとの累算を停止する。次のテンポ同期トリガーが来たときに、共通カウンタ３０２の累算値が未だトリガーカウンタ３０１の値に到達していなかったら、共通カウンタ３０２の累算値を、それまで目標値としていたトリガーカウンタ３０１の値に強制的に設定する。共通カウンタ３０２の出力は、図２に示したようなベース波形（鋸歯状波）２０１になる。
【００２５】
共通カウンタ３０２からのベース波形（整数部１７ビット＋小数部１０ビット）は、各チャンネルの低周波発振部３０３のＮ倍処理部３３１に入力する。Ｎ倍処理部３３１は、共通カウンタ３０２の出力波形をＮ倍（但し、整数部のビット数は増やさない）する。乗算結果のうちの小数部は切り捨てられ、整数部１７ビットのみからなる、ベース波形の周期の１／Ｎの周期の鋸歯状波を生成する。乗数Ｎは、各発音チャンネルごとに独立にＣＰＵ１０１が設定する。
【００２６】
Ｎ倍処理部３３１の出力は、リセット制御部３３２に入力する。なお、リセット制御部３３２以降における各ブロックの波形データは全て整数部１７ビットのみから構成される。リセット制御部３３２は、キーオンと同時にＬＦＯ波形を初期位相に設定することを指示するキーオンリセットフラグが「有効」に設定されている場合、各発音チャンネルがノートオンされたときその時点のＮ倍出力が「０」となるように制御する。具体的には、各発音チャンネルがノートオンされたときのＮ倍出力値をレジスタに取り込み、それ以降のＮ倍出力値からそのレジスタの値を整数部の減算（但し、整数部のビット数は増やさない）するような動作を行なう。これにより、リセット制御部３３２の出力は、強制的に０から開始される波形となる。なお、上記キーオンリセットフラグが「無効」と設定されている場合は、上記「Ｎ倍出力値のレジスタへの取り込み」を行なわない。すなわち、ノートオン時に過去にレジスタに取り込まれている値は変更せず、そのレジスタの値をＮ倍出力値から減算して出力する処理を継続する。
【００２７】
リセット制御部３３２の出力は、オフセット付加部３３３に入力する。オフセット付加部３３３は、入力する波形に、各発音チャンネルごとに設定されたオフセット値を加算（但し、整数部のビット数は増やさない）する。このオフセット値は、上記キーオンリセットフラグが「有効」でリセットされた場合の初期位相になる。このオフセット値は、ＣＰＵ１０１が設定する。リセット制御部３３２とオフセット付加部３３３により、任意の初期位相から開始するＬＦＯ波形を生成できる。
【００２８】
オフセット付加部３３３の出力は、形状変形部３３４に入力する。形状変形部３３４は、形状選択情報に応じて、入力した鋸歯状波を、三角波、矩形波、およびサイン波などの各種の形状の波形に変換して出力する。ここで、鋸歯状波は各種の形状の波形を生成するための位相データとして働く。従って、この変換では、周期は同じままで形状のみが変換され、あるいは、鋸歯状波をそのまま出力することもできる。形状選択情報は、発音チャンネルごとにＣＰＵ１０１が設定する。
【００２９】
形状変形部３３４の出力は、直線補間部３３５に入力する。直線補間部３３５は、入力波形の傾き（変化）が、設定された波形補間レート以下になるように制御する。波形補間レートは、発音チャンネルごとにＣＰＵ１０１が設定する。直線補間部３３５による補間は、ノイズ除去を目的とする波形の平滑化のためである。
【００３０】
直線補間部３３５の出力は、位相反転部３３６，３３８，３４０にそれぞれ入力する。位相反転部３３６，３３８，３４０では、各発音チャンネルの出力先（アドレス発生部１２３、ＤＣＦ１２５、ＥＧ付与部１２６）ごとに、位相の反転（正相／逆相）を選択可能である。例えば、ピッチと振幅の変調を同位相の変調にしたり、逆位相にしたりできる。また、複数の発音チャンネルで生成する音の振幅変調を互いに同位相（スルー）にしたり逆位相（全ビット反転）にしたりできる。位相の反転を行なうか否かは、ＣＰＵ１０１が設定する。
【００３１】
位相反転部３３６，３３８，３４０の出力は、それぞれデプス制御部３３７，３３９，３４１に入力する。デプス制御部３３７，３３９，３４１では、各発音チャンネルの出力先（アドレス発生部１２３、ＤＣＦ１２５、ＥＧ付与部１２６）ごとに変調の深さを設定することができる。変調の深さの設定は、ＣＰＵ１０１が行なう。デプス制御部３３７，３３９，３４１の出力は、それぞれ、ピッチ変調波形としてアドレス発生部１２３に、音色変調波形としてＤＣＦ１２５に、振幅変調波形としてＥＧ付与部１２６に、それぞれ入力する。
【００３２】
各発音チャンネルの低周波発振部３０３は、発音チャンネルごとの設定に応じて、テンポ同期ＬＦＯとして動作させることもできるし、テンポ非同期ＬＦＯとして動作させることもできる。その指定は、ＣＰＵ１０１により行なう。非同期カウンタ３４２は、テンポ非同期ＬＦＯとして動作するとき、設定された周波数データに対応した周波数の変調波形を発生するために使用するカウンタである。テンポ非同期ＬＦＯとして動作するよう設定されたＬＦＯ３０３では、発生するＬＦＯ波形の周期の単位は周期時間または周波数で指定する。この周期時間または周波数は、ＣＰＵ１０１が指定する。非同期カウンタ３４２は、指定された周期時間または周波数に対応した周波数の変調波形を発生する。
【００３３】
なお、ある発音チャンネルの低周波発振部３０３をテンポ非同期ＬＦＯとして動作させるときには、そのチャンネルのＮ倍処理部３３１やリセット制御部３３２は不要である。そこで、リセット制御部３３２のレジスタを、非同期カウンタ３４２の現在値を保持するレジスタとして兼用している。また、Ｎ倍処理部３３１の乗数Ｎを保持するレジスタを、ＣＰＵ１０１が指定した「周期時間または周波数」を保持するレジスタとして兼用している。
【００３４】
ＤＳＰ用各低周波発振部３０５の内部構成は、上述の各発音チャンネルの低周波発振部３０３と同様である。Ｎ倍処理部３５１はＮ倍処理部３３１に、リセット制御部３５２はリセット制御部３３２に、オフセット付加部３５３はオフセット付加部３３３に、形状変形部３５４は形状変形部３３４に、非同期カウンタ３５６は非同期カウンタ３４２に、それぞれ相当する。ただし、直線補間部３３５以降の部分の代わりに、平滑化のための１次ＬＰＦ３５５を備えている。低周波発振部３０５で発生するＬＦＯ波形の振幅レベルは、ＤＳＰでマイクロプログラムにより実現されるアルゴリズムの中の乗算器で制御される。この構成により、ミキサ＆ＤＳＰ１２７における各エフェクト処理に割り当てて使用する複数ＬＦＯ波形を発生する。
【００３５】
なお、上述したように各エフェクトに割り当てて使用する複数ＬＦＯとともに、ＤＳＰには複数ＥＧが備えられている。該複数ＬＦＯと該複数ＥＧは、ＤＳＰで実行される個々のエフェクトで必要とされる数ずつ各エフェクトに割り当てて使用され、そのため、それぞれ１つずつ個別にトリガーをかけることができるようになっている。例えば、３つのＬＦＯを使用するコーラス効果の場合、その３つのＬＦＯは、相互に位相を１２０度ずつずらせて動作させる必要がある。これは、３ＬＦＯチャンネル分のＬＦＯについて、オフセット付加部３５３で１２０度ずつ異なる初期位相を設定し、同時にリセットをかけることにより実現できる。トリガーを使えば、ＤＳＰでエフェクトの代りに（波形発生部と同じような）波形発生処理を実行させることも可能である。
【００３６】
次に、テンポ同期ＬＦＯに関係するレジスタやフラグについて説明する。トリガーカウンタ３０１と共通カウンタ３０２については図３で説明したので、それ以外のレジスタやフラグ（音源制御レジスタ１２１）について次の（１）〜（１４）で説明する。
【００３７】
（１）トリガーカウンタアップ値レジスタ：トリガーカウンタ３０１にＦ８信号（テンポ同期トリガー）ごとに加算する値を保持するレジスタである。ここに書き込んだ値により何回のトリガーで一周期まわるかが決まる。ここでは、トリガーカウンタ３０１は、その整数部１７ビットで２の17乗−１＝131071まで、小数部込みで約２の17乗＝約131072までカウントアップできるレジスタであるので、この最大値をベース波形の１周期内のＦ８信号の数で割ることにより、トリガーカウンタアップ値が求められる。ＣＰＵ１０１は、そのように算出した値を音源１２０に送って、トリガーカウンタアップ値レジスタに保持させる。なお、トリガーカウンタアップ値の算出で割り切れない場合は、その商を切り上げるものとする。切り上げることにより、ベース波形の１周期内の最後のＦ８信号ではトリガーカウンタ３０１が必ずオーバフローするようになり、この時点でオーバーフローしたあふれ分は切り捨てられ、トリガーカウンタ３０１は０に初期化される。したがって、割り切れない場合の誤差が蓄積されることはない。
【００３８】
ＣＰＵ１０１によるトリガーカウンタアップ値の算出例を説明する。ＣＰＵ１０１は、出力させたいＬＦＯ波形に応じてベース波形の周期を決める。例えば、テンポを１分間に４分音符１２０個のテンポとし、Ｆ８信号を１小節で９６個発生させるものとし、ベース波形の周期を１小節（４部音符が４つ分とする）単位とする場合を考える。この場合、１小節内のＦ８信号の個数は９６個であるから、ここからＦ８信号ごとにトリガーカウンタ３０１に加算されるトリガーカウンタアップ値が算出できる。すなわち、トリガーカウンタ３０１の最大値が２の17乗＝131072であるから、131072／96≒1365.3333とし、この値を切り上げて、トリガーカウンタアップ値とする。例えば、トリガーカウンタアップ値が指数部４ビットと仮数部１２ビットであれば、切り上げた値は1365.5となる。なお、実際には、トリガーカウンタ３０１やトリガーカウンタアップ値レジスタは浮動小数点の２進数で値を格納するので、切り上げも２進数での切り上げである。このように、トリガーカウンタアップ値は、ベース波形の１周期におけるＦ８信号の数に基づいて、ＲＵ（最大値／Ｆ８信号の回数）の式で算出される。ここで、ＲＵ（）は切り上げを示す。
【００３９】
（２）共通カウンタ補間レートレジスタ：共通カウンタ３０２は、１ＤＡＣサイクルごとに、トリガーカウンタ３０１の値を目標値として直線的に補間する補間器である。この補間器に対して補間速度を指定するのが、共通カウンタ補間レートである。共通カウンタ補間レートレジスタは、この共通カウンタ補間レートを保持するレジスタである。共通カウンタ補間レートは、上記トリガーカウンタアップ値によって決定したステップ幅（分割数）と、そのステップ幅をどれだけの時間、つまりどれだけのテンポに合わせて補間するかを考慮して指定する必要がある。
【００４０】
上記（１）のトリガーカウンタアップ値の算出例のケースで、ＣＰＵ１０１が共通カウンタ補間レートを算出する例を説明する。まず、上記のケースでは、４分音符１つ分は、60sec／120≒0.5secの時間長さになる。４分音符１つはＦ８信号２４個分の時間間隔であるから、Ｆ８信号１つ分の時間間隔（Ｆ８信号から次のＦ８信号までの時間間隔）は、0.5sec／24≒0.0208secである。ベース波形の周期を１小節（Ｆ８信号で９６個分の時間間隔）としたいのであるから、0.0208sec×96≒2secがベース波形の周期である。音源内のサンプリング周波数を44100Hzとすると、その周期は22μsecであるから、上記ベース波形の１周期の時間内では、2sec／22μsec≒88200回だけ共通カウンタ３０２への累算が行なわれることになる。共通カウンタ３０２の最大値は２の17乗＝131072であるから、131072／88200≒1.4861であり、共通カウンタ補間レートが指数部４ビットと仮数部１２ビットで構成されるとすると、２進で切り上げた約1.4863がその値となる。このように、共通カウンタレートは、ベース波形の１周期のサンプル回数に基づいて、ＲＵ（最大値／サンプル回数）の式で算出される。
【００４１】
（３）トリガーアクションフラグ：トリガーアクションは、ＣＰＵ１０１からのテンポ同期のためのイベントを与えるトリガー（テンポ同期トリガー）である。ＣＰＵ１０１からこのトリガーアクションフラグに１を書き込むと、テンポ同期トリガーがＬＦＯ１２２に供給されたことになる。このトリガーにより、上記トリガーカウンタ３０１にトリガーカウンタアップ値が加算され、その値が新たな目標値となって、該目標値に向かって共通カウンタ３０２による補間が始まる。
【００４２】
（４）トリガーカウンタリセットフラグ：テンポ同期トリガーにより加算されるトリガーカウンタ３０１をリセットするフラグである。テンポ同期などの初期化時に使用する。１を書き込むとそのタイミングでリセット状態となり、０を書きこむ必要はない。
【００４３】
（５）共通カウンタリセットフラグ：直線補間器である共通カウンタ３０２をリセットするフラグである。テンポ同期などの初期化時に使用する。１を書き込むとそのタイミングでリセット状態となり、その後すぐに、設定されている共通カウンタ補間レートで共通カウンタ３０２のカウントアップが開始する。０を書きこむ必要はない。
【００４４】
（６）フリーランモードフラグ：通常、共通カウンタ３０２は、トリガーカウンタ３０１の値を目標値として動作するが、このフリーランモードフラグを１に設定すると、共通カウンタ３０２は、目標値を無視して常に与えられたレートで補間し続ける。これにより、テンポ同期のイベントがなくなっても、テンポ同期のときとほぼ同じ速度で共通カウンタ３０２が動作する。一方、共通カウンタ３０２が通常のテンポ同期動作を行なうときは、フリーランモードフラグが０に設定される。フリーランモードフラグを０にすると、共通カウンタ３０２による補間処理は停止し、停止した時点の値を出力し続ける。
【００４５】
（７）チャンネル別テンポ同期フラグ：各チャンネル別の低周波発振部３０３に対して、チャンネル独立の周波数設定で動作するか（従来形）、テンポ同期の共通カウンタ３０２に同期して動作するかを切替えるフラグである。このフラグを１に設定すると共通カウンタ３０２に同期し（すなわち図３で、Ｎ倍処理部３３１→リセット制御部３３２→オフセット付加部３３３の流れで生成される波形を使う）、０に設定するとチャンネル独立の周波数設定のＬＦＯ（すなわち図３で、非同期カウンタ３４２→オフセット付加部３３３の流れで生成される波形を使う）になる。
【００４６】
（８）チャンネル別Ｎ倍設定レジスタ：テンポ同期ＬＦＯとして使用するとき、各チャンネル別にＮ倍処理部３３１の乗数Ｎの値を設定するレジスタである。このレジスタは、テンポ非同期ＬＦＯとして使用するときのチャンネル別の周波数レジスタと共用している。
【００４７】
（９）キーオンリセットフラグ：キーオン（ノートオンと同義）と同時にＬＦＯ波形を初期位相に設定するかどうかを決めるフラグである。０のときは「無効」、すなわちキーオンでリセットしない。１のときは「有効」、すなわちキーオンでリセットする。
【００４８】
（１０）オフセット値レジスタ：オフセット付加部３５３でＬＦＯ波形に加算するオフセット値を保持するレジスタである。
【００４９】
（１１）波形選択レジスタ：形状変形部３３４で変換出力する波形形状の形状選択情報を保持するレジスタである。選択できる波形については、後に詳しく説明する。
【００５０】
（１２）波形補間レートレジスタ：直線補間部３３５において補間を行なうときの補間レートを保持するレジスタである。
【００５１】
（１３）位相反転指定レジスタ：位相反転部３３６，３３８，３４０において、位相の反転（正相／逆相）を選択するための選択情報を保持するレジスタである。
【００５２】
（１４）デプス指定レジスタ：デプス制御部３３７，３３９，３４１における変調の深さを設定するレジスタである。
【００５３】
なお、上記のレジスタやフラグのうち、（１）〜（６）はシステム内でそれぞれ１つずつ設けられているものである。（７）〜（１４）はチャンネルごとに（チャンネルとは、各発音チャンネルの低周波発振部３０３では発音チャンネル、ＤＳＰ用各低周波発振部３０５では各ＬＦＯチャンネルである）設けられているものである。ただし、ＤＳＰ用各低周波発振部３０５は、（１２）〜（１４）のレジスタは持っていない。
【００５４】
図４は、トリガーカウンタ３０１と共通カウンタ３０２によるカウントアップの様子を示す。図４（ａ）は、Ｆ８信号（テンポ同期トリガー）が等間隔で供給される場合を示す。ここで、ＣＰＵ１０１は、Ｆ８信号の発生に応じて音源１２０のＬＦＯ１２２に対してトリガーアクションを与えるので、Ｆ８信号の発生するタイミングはトリガーアクションのタイミングと等価である。音源１２０内ではトリガーアクションのタイミングとして認識しているが、図４では説明の簡単化のためＦ８信号でそのタイミングを示すものとする。ここでは、説明の簡単化のため、ベース波形の１周期あたりのＦ８信号の発生回数を４回としているが、通常のＦ８信号の発生回数はこれよりかなり多い。
【００５５】
Ｆ８信号が供給されるタイミングで階段状に変化しているグラフ４０１は、トリガーカウンタ３０１の値を示す。トリガーカウンタ３０１の値は、ベース波形の１周期における最初のＦ８信号のタイミングでトリガーカウンタアップ値となり、その後、Ｆ８信号が来るごとにその値に対してトリガーカウントアップ値が加算される。共通カウンタ３０２は、トリガーカウンタ３０１の値を目標値として細かく補間されてカウントアップされる。４０２は、目標値に向かって理想的にカウントアップされていく共通カウンタ３０２の値を示す。４０３は、次のＦ８信号のタイミングで共通カウンタ３０２の累算値が未だトリガーカウンタ３０１の目標値に到達していない場合、共通カウンタ３０２の累算値を、目標値であるトリガーカウンタ３０１の値に強制的に設定しているグラフを示す。４０４は、次のＦ８信号のタイミングに至る前に共通カウンタ３０２の累算値がトリガーカウンタ３０１の目標値に到達し、そこからは共通カウンタ３０２の累算を停止して、その目標値を出力し続けているグラフを示す。
【００５６】
４１０はカウンタの最大値である２の17乗＝131072のレベルを示す。ベース波形の１周期における最後のＦ８信号（この図では４回目）のタイミングにおいてトリガーカウンタ３０１はオーバーフローし、該オーバーフローに応じて、トリガーカウンタ３０１の内部値は０にリセットされる一方、共通カウンタに対して最大値（約１３１０７２）を出力する。なお、この図の例でトリガーカウンタアップ値の計算は割り切れている（131072/4＝32768）が、その場合であっても、最後のＦ８信号に応じた加算によりその加算結果は整数部の１７ビットを超えてオーバーフローが発生する。共通カウンタ３０２の値は、最大値131072に至った後は、その最大値を続けて出力する。
【００５７】
図４（ｂ）は、Ｆ８信号が不規則な場合を示す。自動演奏のテンポは任意に変動できるものであるので、Ｆ８信号も不規則に発生される場合がある。Ｆ８信号が不規則な場合でもカウントアップの動作は同様であるので、図４（ａ）と同じ番号を付した。図４（ｂ）では、Ｆ８信号４１１のタイミングでトリガーカウンタ３０１が０にリセットされ、そこから共通カウンタ３０２は共通カウンタ補間レートの累算を継続しているが、共通カウンタ３０２の値が最大値に至る前に次のＦ８信号４１２が来ており、ここで共通カウンタ３０２は０にリセットされている。
【００５８】
図５は、トリガーカウンタ３０１と共通カウンタ３０２を用いたカウントアップの各種の例を示す。上述したように、ＣＰＵ１０１は、ベース波形の周期を決め、その周期内のＦ８信号の数を求め、Ｆ８信号ごとのトリガーカウンタ３０１への加算量を算出し、共通カウンタ補間レートを算出する。この場合、ＣＰＵ１０１側からＬＦＯ１２２に対して等間隔でＦ８信号を送る必要がある。図５（ａ）は、ベース波形の１周期を細かく等分したタイミングでＦ８信号を送っている例である。複数の横線５０１は、トリガーカウンタ３０１が階段状にカウントアップされる各レベルを示す。Ｆ８信号は５０２に示すように等間隔でＬＦＯ１２２に供給され、各Ｆ８信号のタイミングで、カウンタ３０１が階段状にカウントアップされている。５０３は共通カウンタ３０２のグラフである。このように、細かい周期でＦ８信号を送っている場合には、ベース波形の１周期の途中に起こる様々なテンポの変動に対して精密に追従していくことができる。
【００５９】
図５（ｂ）は、Ｆ８信号を間引く例を示す。ベース波形の各周期の途中であまりテンポが変動しないことが判っている場合には、このように途中のＦ８信号を間引くことができる。ＣＰＵ１０１は、ベース波形の周期を決め、その周期内でＦ８信号を何個にするかを決定する。この際、本来のＦ８信号の数から幾つかのＦ８信号を間引く。間引いたあとに残ったＦ８信号に基づいて、Ｆ８信号ごとの加算量であるトリガーカウンタアップ値を算出する。この場合、ベース波形の１周期ごとにＦ８信号は１回しか発生しないので、トリガーカウンタアップ値は最初の加算でオーバーフローを発生するような特殊な最大値にする。また、図５（ａ）の例からＦ８信号を間引いただけであり、ベース波形の傾きは同じなので共通カウンタ補間レートも図５（ａ）の場合と同じ値でよい。この例では、ＣＰＵ１０１は、ベース波形の１周期ごとに１回だけＬＦＯ１２２にトリガーアクションを与えればよく、ＣＰＵ１０１にかかる負担が少ない。
【００６０】
図５（ｃ）は、ベース波形の１周期の途中で共通カウンタ補間レートを変更する例を示す。ＣＰＵ１０１は、ベース波形の周期を決め、その周期内でＦ８信号を何個にするかを決定する。そして、Ｆ８信号ごとの加算量であるトリガーカウンタアップ値を算出する。この図の例では、３等分して加算量を求めている。一方、共通カウンタ補間レートは、ベース波形の１周期の前半ではトリガーカウンタアップ値の２倍をタイミング５２１〜５２２までのサンプル回数で割った商として、後半ではトリガーカウンタアップ値をタイミング５２２〜５２３までのサンプル回数で割った商として算出する。図のように、ＣＰＵ１０１は、ベース波形の各周期において不等間隔でトリガーアクションを与える。また、ＣＰＵ１０１は、ベース波形の１周期の先頭の５２１、５２３のタイミングでは前記前半の共通カウンタ補間レートを与え、真中の５２２のタイミングでは前記後半の共通カウンタ補間レートを与える。
【００６１】
図５（ｄ）は、図５（ｃ）において、さらにベース波形の１周期の途中でトリガーカウンタアップ値を変更する代わりに、Ｆ８信号を間引けるようにした例である。この場合も、ベース波形の傾きは図５（ｃ）と同じなので、共通カウンタ補間レートは図５（ｃ）の場合と同じでよい。一方、トリガーカウンタアップ値は、ベース波形の１周期の前半が最大値の３分の２、後半が３分の１として算出される。ＣＰＵ１０１は、ベース波形の１周期の先頭の５３１、５３３のタイミングでは前記前半のベースカウンタアップ値を与え、真中の５２２のタイミングでは前記後半のベースカウンタアップ値を与える。また、ベース波形の１周期の先頭の５３４、５３６のタイミングでは前記前半の共通カウンタ補間レートを与え、真中の５３５のタイミングでは前記後半の共通カウンタ補間レートを与える。このように、１周期の途中で共通カウンタ補間レートを変更するベース波形を生成する場合、ＣＰＵ１０１は、その変更するタイミングについて、トリガーアクション、ベースカウンタアップ値、共通カウンタ補間レートの制御を行なうだけでよい。
【００６２】
図６は、Ｆ８信号が途絶えた場合の処理方法を示す。曲の終わりなどではテンポカウンタであるＦ８信号が途絶える場合がある。この場合、上述のフリーランモードフラグにより、図６（ａ）か図６（ｂ）の何れかの処理方法を採ることができる。図６（ａ）は、Ｆ８信号が途絶えた後もフリーランモードフラグを０のまま放置した場合である。この場合、Ｆ８信号が途絶えたタイミングでトリガーカウンタ３０１の値が増加しなくなるのに応じ、共通カウンタの値もそれと同じ値から変化しなくなる。図６（ｂ）は、ＣＰＵ１０１がＦ８が途絶えたことを検出した時点でフリーランモードフラグに１を設定した場合である。この場合、共通カウンタ３０２は、目標値を無視して常に与えられた共通カウンタ補間レートで補間し続ける。これにより、曲が終わった後に出力されているような楽音に対しても、引き続きＬＦＯ波形を適用できる。
【００６３】
図７は、上述のＮ倍処理部３３１，３５１による処理例を示す。７０１は、共通カウンタ３０２からＮ倍処理部３３１，３５１に入力するベース波形を示す。Ｎ倍処理部３３１，３５１での乗数Ｎが９であったとすると、Ｎ倍処理部３３１，３５１の出力は波形７０２のようになる。この波形７０３の周波数は、ベース波形７０１の周波数の９倍になっている。
【００６４】
図８は、上述のＮ倍処理部３３１，３５１の乗数Ｎの一覧を示す。表の最上位行の「４分音符基準個数」は、ベース波形の１周期が４分音符の何個分になるかの場合分けを示す。４分音符４個で１小節とするので、その下の行の「小節」に示すように、小節数でベース波形の１周期の長さを表せる。４分音符１個でＦ８信号が２４個分であるから、それぞれの場合のベース波形の１周期内のＦ８信号数が求められる。「Ｆ８信号数」の行は、その値を示す。
【００６５】
左側の「４分×３２（８小節）」や「４分×１６（４小節）」などの記載は、各発音チャンネルないし各ＬＦＯチャンネルにおいて発生させたいＬＦＯ波形の周期を示す。例えば、「４分音符基準個数」が３個の場合、ベース波形の１周期が４分音符３個分になり、このベース波形に対し「全音符３連」の周期の波形を発生させたい場合は、Ｎ＝1.125と設定すればよいことが分かる。同様に、この一覧表に基づいて、ベース波形の周期と発生させたい波形の周期から乗数Ｎを求めることができる。なお、図８に記載した以外であっても、任意の長さのベース波形の周期と任意の長さの発生させたい波形の周期から乗数Ｎを求めることができる。
【００６６】
図９は、形状変形部３３４，３５４で各チャンネル毎に選択可能な波形形状の例を示す。形状変形部３３４，３５４は、入力したベース波形に基づいて、三角波９０１、矩形波９０２、鋸歯状波９０３、サイン波９０４、およびランダム波９０５などを生成出力することができる。ここに挙げた波形は一例であり、他の任意の波形を選択できるようにしてもよい。
【００６７】
図１０は、直線補間部３３５による直線補間の例を示す。直線補間部３３５は、入力した波形の傾きが設定された補間レート以下になるよう制限する補間を行なう。ＣＰＵ１０１は、この補間レートを、ＬＦＯ１２２の当該発音チャンネルないしＬＦＯチャンネルにおいて選択された波形形状や設定されたＮ倍の値に応じて決定し、直線補間部３３５に与える。例えば、入力波形が１００１に示すような鋸歯状波の場合、補間レートの値を小さくすると波形１００２のような波形が出力される。この補間により、ＬＦＯ波形の急激に変化する部分でノイズが発生するのを防止できる。
【００６８】
次に、フローチャートを参照してＣＰＵ１０１が実行する処理手順を説明する。
【００６９】
図１１は、ＣＰＵ１０１が実行するメイン処理の流れを示す。ステップ１１０１で初期設定を行ない、ステップ１１０２で起動要因（イベント）の発生をチェックする。ステップ１１０３で何らかの起動要因があれば、ステップ１１０４に進む。起動要因がなければ、ステップ１１０２に戻り、起動要因チェックを継続する。ステップ１１０４では、何の要因かを判別し、その要因別にステップ１１０５〜１１０９の何れかに分岐する。パネル操作イベントがあったときは、ステップ１１０５に進み、パネル処理を行なった後、ステップ１１０２に戻る。ＭＩＤＩイベントがあったときは、ステップ１１０６に進み、ＭＩＤＩイベント処理を行なった後、ステップ１１０２に戻る。テンポ割込イベントがあったときは、ステップ１１０７に進み、自動演奏のテンポ割込処理を行なった後、ステップ１１０２に戻る。その他のイベントのときは、ステップ１１０８に進み、そのイベントに応じた処理を行なった後、ステップ１１０２に戻る。電源スイッチのオフイベントであったときは、ステップ１１０９で終了処理を行なった後、本処理を終了する。
【００７０】
図１２は、ステップ１１０６のＭＩＤＩイベント処理のうち、ＭＩＤＩインターフェース１０７を介して他のＭＩＤＩ機器からのＦ８信号を受信したときの動作を示す。これは、この電子楽器がスレーブ動作する場合である。すなわち、他のＭＩＤＩ機器が出力する自動演奏データに基づいて、この電子楽器で自動演奏を行なう場合であり、テンポクロックであるＦ８信号は、他のＭＩＤＩ機器からこの電子楽器に供給される。
【００７１】
ステップ１２０１では、過去のＦ８信号の時間間隔に基づき現在のテンポ値を推定し変数ＧＴに格納する。ステップ１２０２では、現在のテンポ値ＧＴに基づき、共通カウンタ補間レートを算出して音源１２０のＬＦＯ１２２に供給する。共通カウンタ補間レートの算出方法についてはすでに説明した。次に、ステップ１２０３で、音源１２０のＬＦＯ１２２にテンポ同期トリガーを供給する。これは、トリガーアクションフラグに１を書き込むことで行なう。
【００７２】
図１３は、ステップ１１０６のＭＩＤＩイベント処理のうち、ＭＩＤＩインターフェース１０７から自動演奏のノートオンを受信したときの動作を示す。ステップ１３０１で、受信したノートオンのパート番号を変数ＰＴに、ノート番号を変数ＮＮに、ベロシティを変数ＶＥＬに、それぞれ格納する。ステップ１３０２では、発音チャンネルの割り当て処理を行なう。ステップ１３０３では、パートＰＴで選択されている現在の音色とノートオンのノート番号およびベロシティに従い、音源レジスタ１２１の割り当てたチャンネルに各種パラメータを設定する。すなわち、波形選択情報、Ｆナンバ、各種ＥＧパラメータ、ＬＦＯパラメータ、各種センドレベル等が設定される。ここで、該ＬＦＯパラメータには、テンポ同期フラグ、倍数Ｎないし周波数、補間レート、ピッチ変調度ＰＭＤ、音色変調度ＣＭＤ、振幅変調度ＡＭＤ等が含まれる。パートＰＴにおいてＬＦＯ波形をテンポ同期させるよう設定された音色が選択されている場合には、テンポ同期フラグが立てられる。ステップ１３０４で、当該チャンネルにノートオン信号（発音開始トリガー）を供給する。ノートオン信号が供給された発音チャンネルでは、設定されたパラメータに応じた楽音信号の形成処理を開始される。すなわち、アドレス発生部１２３と補間部１２４による波形メモリからの波形データの読み出しが開始され、ＤＣＦ１２５では読み出された波形データに対して音色変化が与えられ、更に、ＥＧ付与部１２６では立ち上がりから立ち下がりまでの音量変化が付与される。ＬＦＯ１２２の発生するＬＦＯ波形は、アドレス発生部１２３、ＤＣＦ１２５、ＥＧ付与部１２６に供給されており、当該チャンネルで発生する楽音波形の各種特性を制御する。
【００７３】
図１４は、ステップ１１０６のＭＩＤＩイベント処理のうち、ＭＩＤＩインターフェース１０７からバリエーションタイプを受信したときの動作を示す。バリエーションタイプとは、楽音に付与するエフェクトの種類を指定する情報である。ステップ１４０１で、受信したバリエーションタイプを変数ＶＴに格納する。ステップ１４０２では、ＭＰ（マイクロプログラム）番号、ＭＰ記憶領域、ＬＦＯ、およびＥＧなどを割り当てる。ＤＳＰ１２７は、複数のマイクロプログラム記憶領域を備えており、それらの領域にＭＰ番号を割り当ててマイクロプログラムを設定し、実行させることにより、任意のエフェクト処理を組み合わせて実行できる。ステップ１４０２のＭＰ番号とＭＰ記憶領域の割り当ては、バリエーションタイプで指定されたエフェクトのマイクロプログラムをロードする領域を番号を割り当てるものである。ＬＦＯの割り当ては、指定されたエフェクトに必要な数のＬＦＯを、図３の３０５に示した複数のＬＦＯチャンネルに相当する低周波発振部の中から割り当てるものである。また、ＥＧ（エンベロープジェネレータ）の割り当ては、指定されたエフェクトに必要な数のＥＧを、ＤＳＰ１２７が備えている複数のＥＧの中から割り当てるものである。
【００７４】
次に、ステップ１４０３で、割り当てたＭＰ番号のエフェクトをミュートする。これは、そのＭＰ番号のエフェクト処理が実行中であった場合に、マイクロプログラムの入れ替えでノイズが発生しないようにミュートするものである。ステップ１４０４では、指定されたバリエーションタイプのエフェクトを付与する処理を行なうマイクロプログラムをＤＳＰ１２７に設定する。ステップ１４０５では、割り当てたＬＦＯチャンネルに対し、テンポ同期フラグ、倍数Ｎ（テンポ非同期で用いる場合は周波数）、ＬＰＦ係数、キーオンリセットフラグなどを設定する。ステップ１４０６でＥＧの設定を行ない、ステップ１４０７で各種の係数を設定する。ステップ１４０８では、その他の必要な処理（遅延メモリの処理など）を行なう。ステップ１４０９では、ステップ１４０３でかけたミュートを解除し、マイクロプログラムの実行を開始するようにトリガーをかけて、処理終了する。
【００７５】
図１５（ａ）は、図１１のステップ１１０７の自動演奏のテンポ割込処理の手順を示す。自動演奏中は、現在のテンポに応じた周期でタイマ割込が発生し、そのときこのテンポ割込処理が実行される。これは、この電子楽器がマスタ動作する場合である。すなわち、この電子楽器が自動演奏データを読み込んで、自動演奏する場合であり、Ｆ８信号はこの電子楽器で発生して他のＭＩＤＩ機器に供給する。テンポ割り込みの時間間隔は、Ｆ８信号と同じ４分音符あたり２４回の割り込みが発生するように設定しても良いし、それより細かい分解能で、例えば、４分音符あたり９６回の割り込みが発生するように設定しても良い。
【００７６】
まずステップ１５０１で、テンポカウンタをカウントアップする。テンポカウンタは、ＣＰＵ１０１側で自動演奏のテンポを規定するカウンタである。次に、ステップ１５０２で、音源１２０のＬＦＯ１２２にテンポ同期トリガーを供給する。ステップ１５０３では、Ｆ８信号をＭＩＤＩ出力端子に出力する。なお、テンポ割込がＦ８信号より細かい分解能で発生する場合は、ステップ１５０２では何回かに１回テンポ同期トリガーを供給すればよいし、ステップ１５０３ではやはり何回かに１回Ｆ８信号を出力すればよい。例えば、４分音符あたり９６回の割り込みが発生するように設定された場合には、４回の割り込み毎に１回Ｆ８信号を出力する。ステップ１５０４では、当該自動演奏データのイベントタイミングに至ったかを判定する。イベントタイミングに至ったときは、ステップ１５０５で当該イベントを再生し、ステップ１５０６で次イベントまでのデュレーションを設定して、処理終了する。ステップ１５０４でイベントタイミングでないときは、そのまま処理終了する。
【００７７】
ステップ１５０５のイベント再生処理では、例えば、ノートオンイベントであれば、そのノートオン処理を行なう。ステップ１５０５でノートオンの再生まで行なってしまってもよいし、ステップ１５０５ではノートオンをバッファに積むだけとし、別処理ルーチンでそのバッファからノートオンを取り出して処理しても良い。
【００７８】
ステップ１５０５のイベントがテンポチェンジであったときは、図１５（ｂ）の処理が行なわれる。まずステップ１５２１で、指定されたテンポ値を変数ＴＭＰに格納する。ステップ１５２２では、そのテンポ値ＴＭＰに応じてテンポタイマの速度を設定変更する。次にステップ１５２３で、音源１２０のＬＦＯ１２２に、テンポ値ＴＭＰに応じた共通カウンタ補間レートを供給し、処理を終了する。
【００７９】
なお、上記実施形態において、テンポクロックは、必ずしもＭＩＤＩの「Ｆ８信号」（分解能が１拍の１／２４）でなくてもよい。分解能は、例えば、１拍の１／２、１／９６などでもよい。共通カウンタ３０２に加算する共通カウンタ補間レートの値は、テンポクロックの直前の時間間隔に基づいて自動決定してもよい。また、上記実施形態では、共通カウンタで各サンプリング周期ごとに補間演算（累算）を行なっていたが、サンプリング周期ごとに行なわなくてもよい。例えば、２サンプリング周期に１回とか、８サンプリング周期に１回、補間演算を行なうようにしてもよい。また、「Ｆ８信号」の受信間隔に基づくテンポの推定をＣＰＵ１０１で行なわず、音源１２０内の演算回路で行ない、音源１２０内で共通カウンタ補間レートを算出するようにしてもよい。テンポの推定は、直前に受信した２つの「Ｆ８信号」の時間間隔のみから（直線的に）推定してもよいし、直前の３つ以上の「Ｆ８信号」の複数時間間隔からラグランジェ補間などを使用して（曲線的に）推定してもよい。
【００８０】
なお、Ｆ８信号は、ＣＰＵ１０１がタイマ１０４を用いて生成するようにしても良いし、外部で生成されてＭＩＤＩインターフェース１０７やネットワークインターフェース１０８から入力するようになっていてもよい。
【００８１】
本実施形態では、Ｆ８信号をテンポ信号としていたが、それ以外のリズムを制御するあらゆる種類のタイミング信号を同期のためのテンポ信号としてよい。
【００８２】
また本実施形態では、自動演奏ないし自動伴奏との同期をとるためにテンポを示すＦ８信号を使用していたが、本発明をこのようなＦ８信号に限定する必要はない。この信号は、自動演奏ないし自動伴奏のテンポとベース波形が同期するように補正を掛けるタイミングを示す信号であれば何でも良く、Ｆ８信号以外のタイプのテンポ信号であっても良いし、自動演奏に同期して定期的にないし不定期的に発生する同期制御信号であってもよい。
【００８３】
リセット制御部３３２では、ノートオンに応じて０にリセットされるようになっていたが、０以外の所定値にリセットされるようにしてもよい。
【００８４】
本実施形態では、ベース波形は整数部１７ビットと小数部１０ビットで構成されていたが、このビット数に限られるものではなく、必要に応じて増減してよい。
【００８５】
図６では、自動演奏の終了に伴いＦ８信号が途切れた場合を示したが、エラーによりＦ８信号が取りこぼされる場合も考えられる。その場合は、ＣＰＵ１０１がダミーのＦ８信号を生成して、ＬＦＯ波形が途切れないようにしてもよい。
【００８６】
【発明の効果】
以上説明したように、この発明によれば、テンポ信号ごとに所定値を累算する累算手段を備え、この累算値を時間的に補間しその補間値から変調波形を生成しているので、ＬＦＯと自動演奏手段とが独立して設けられている場合でも、自動演奏のテンポに同期した変調波形を発生することができる。
【図面の簡単な説明】
【図１】この発明の変調波形発生装置を適用した電子楽器のブロック構成図
【図２】ＬＦＯで発生するＬＦＯ波形の例を示す図
【図３】ＬＦＯの詳細な構成を示す図
【図４】トリガーカウンタと共通カウンタによるカウントアップの様子を示す図
【図５】トリガーカウンタと共通カウンタを用いたカウントアップの各種の例を示す図
【図６】Ｆ８信号が途絶えた場合の処理方法を示す図
【図７】Ｎ倍処理部による処理例を示す図
【図８】Ｎ倍処理部の乗数Ｎの一覧を示す図
【図９】形状変形部で選択可能な波形形状の例を示す図
【図１０】直線補間部による直線補間の例を示す図
【図１１】メイン処理のフローチャート図
【図１２】ＭＩＤＩインターフェース１０７からＦ８信号を受信したときのフローチャート図
【図１３】ＭＩＤＩインターフェース１０７から自動演奏のノートオンを受信したときのフローチャート図
【図１４】ＭＩＤＩインターフェース１０７からバリエーションタイプを受信したときのフローチャート図
【図１５】自動演奏のテンポ割込処理のフローチャート図
【符号の説明】
１０１…中央処理装置（ＣＰＵ）、１０２…リードオンリメモリ（ＲＯＭ）、１０３…ランダムアクセスメモリ（ＲＡＭ）、１０４…タイマ、１０５…ドライブ装置、１０７…ＭＩＤＩインターフェース、１０８…ネットワークインターフェース、１０９…パネルスイッチ、１１０…パネル表示器、１２０音源、１２８…波形メモリ、１３０…ディジタルアナログ変換器（ＤＡＣ）、１３１…サウンドシステム。
【図１】
0003871119.tif 000002
【図２】
0003871119.tif 000003
【図３】
0003871119.tif 000004
【図４】
0003871119.tif 000005
【図５】
0003871119.tif 000006
【図６】
0003871119.tif 000007
【図７】
0003871119.tif 000008
【図８】
0003871119.tif 000009
【図９】
0003871119.tif 000010
【図１０】
0003871119.tif 000011
【図１１】
0003871119.tif 000012
【図１２】
0003871119.tif 000013
【図１３】
0003871119.tif 000014
【図１４】
0003871119.tif 000015
【図１５】
0003871119.tif 000016