(57)【要約】【課題】波形メモリに対するアクセス速度を向上して、発音チャンネル数を増やす。【解決手段】高速ページアクセス可能な波形メモリ９は、８アドレス単位のページサイズｐでページ分けされ、各ページの最終アドレスに記憶されたサンプルは、その次のページの先頭アドレスに重複して記憶されている。アドレスカウンタ１１は、各発音チャンネルの読み出しレートを累算して、サンプルアドレスを生成し、メモリアドレス生成部１２は、サンプルアドレスの整数部ＳＡｉとＩｎｔ［ＳＡｉ／（ｐ−１）］を加算して、メモリアドレスＭＡを生成する。メモリアドレスＭＡを用いて波形メモリをページアクセスしＭＡと（ＭＡ＋１）とから２サンプルを読み出して、読み出した２サンプル間をサンプルアドレスの小数部ＳＡｆに基づいて補間して、各発音チャンネルの補間済み波形サンプルを累算して、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する。【選択図】図３
2010039266.tif 000002
【特許請求の範囲】
【請求項１】
波形メモリに記憶された波形データに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成装置であって、
アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリであって、各アドレスに前記波形データを１サンプルずつ記憶しており、各ページの最終アドレスに記憶されたサンプルは、その次のページの先頭アドレスにも重複して記憶した波形メモリと、
各サンプリング周期毎に、各発音チャンネルの読み出しレートを累算して、整数部と小数部からなるサンプルアドレスを各発音チャンネル毎に生成するアドレスカウンタと、
各サンプリング周期毎に、前記アドレスカウンタで生成したサンプルアドレスの整数部を、各ページの最終アドレスに対応する値を飛び越すメモリアドレスに変換するメモリアドレス生成部と、
各サンプリング周期毎に、前記メモリアドレス生成部により生成された各発音チャンネルのメモリアドレスを用いて前記波形メモリをページアクセスし、前記メモリアドレスからの連続する２つのアドレスに記憶された２つのサンプルを読み出す読み出し部と、
各サンプリング周期毎に、前記読み出し部により読み出された各発音チャンネル毎の２個のサンプル間を、前記アドレスカウンタで生成した前記サンプルアドレスの小数部に基づいてサンプル間補間して、該補間されたサンプルを各発音チャンネル毎に生成する補間部と、
前記補間部により補間された各発音チャンネル毎のサンプルに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成部と
を具えることを特徴とする楽音信号生成装置。
【請求項２】
前記ページサイズの所定アドレス数をｐとすると、
前記メモリアドレス生成部は、アドレスカウンタで生成したサンプルアドレスの整数部ＳＡｉと該整数部ＳＡｉの関数である［ＳＡｉ／（ｐ−１）］の整数部とを加算した結果に基づきメモリアドレスを生成するものであることを特徴とする請求項１に記載の楽音信号生成装置。
【請求項３】
波形メモリに記憶された波形データに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成装置であって、
アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリであって、各アドレスに前記波形データを１サンプルずつ記憶しており、各ページの最終からｎ−１個の各アドレスに記憶された波形データのサンプルは、その次のページの先頭からｎ−１個の各アドレスにも重複して記憶した波形メモリと、
各サンプリング周期毎に、各発音チャンネルの読み出しレートを累算して、整数部と小数部からなるサンプルアドレスを各発音チャンネル毎に生成するアドレスカウンタと、
各サンプリング周期毎に、前記アドレスカウンタで生成したサンプルアドレスの整数部を、各ページの最終からｎ−１個のアドレスに対応する値を飛び越すメモリアドレスに変換するメモリアドレス生成部と、
各サンプリング周期毎に、前記メモリアドレス生成部により生成された各発音チャンネルのメモリアドレスを用いて前記波形メモリをページアクセスし、前記メモリアドレスからの連続するｎ個のアドレスに記憶されたｎ個のサンプルを読み出す読み出し部と、
各サンプリング周期毎に、前記読み出し部により読み出された各発音チャンネル毎のｎ個のサンプル間を、前記アドレスカウンタで生成した前記サンプルアドレスの小数部に基づいてサンプル間補間して、該補間されたサンプルを各発音チャンネル毎に生成する補間部と、
前記補間部により補間された各発音チャンネル毎のサンプルに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成部と
を具えることを特徴とする楽音信号生成装置。
【請求項４】
前記ページサイズの所定アドレス数をｐとすると、
前記メモリアドレス生成部は、アドレスカウンタで生成したサンプルアドレスの整数部ＳＡｉと、該整数部ＳＡｉの関数である［ＳＡｉ／（ｐ−ｎ＋１）］の整数部に（ｎ−１）を乗算した値とを加算した結果に基づき、メモリアドレスを生成するものであることを特徴とする請求項３に記載の楽音信号生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、波形メモリ方式の楽音信号生成装置に関し、特に、波形メモリからのデータ読み出し法を改良し、それに伴い波形メモリのデータの記憶法を改良することにより波形メモリのアクセス速度を向上できるようにしたものである。
【背景技術】
【０００２】
従来より、波形メモリ方式の音源（波形メモリ音源）により構成される楽音信号生成装置が知られている。波形メモリ音源は、波形メモリの各アドレスに１サンプルずつ記憶された波形データに基づいて楽音信号を生成するものであって、発音チャンネルごとに時分割動作することにより、サンプリング周期毎に、所定の複数の発音チャンネル分の楽音信号を同時に生成することができた。すなわち、１サンプリング周期を均等に分割した各発音チャンネルに対応するタイムスロット毎に波形メモリに対してアクセスが行われて、波形メモリから波形サンプルが読み出され、このようにして読み出された連続する何点かの波形サンプルを用いてサンプル間補間することにより、各発音チャンネルごとに１サンプリング周期分の波形サンプルを生成し、複数の発音チャンネルごとの波形サンプルをサンプリング周期毎に累算することで、全体として複数の発音チャンネル分の楽音信号を生成する。
【０００３】
上記構成の波形メモリ音源において、波形メモリから波形サンプルを読み出す方式として、「単発読み出し型」方式が従来あった。「単発読み出し型」の場合は、波形メモリへの１度のアクセスごとに、１つのアドレス信号を出力して、１つのアドレスにアクセスし、該アドレス信号に特定される１つのアドレスに記憶された波形サンプルを読み出す。なお、アドレス信号により波形メモリ上の記憶位置（アドレス）を特定し、その特定したアドレスに直接アクセスする方法を、一般に、ランダムアクセスという。
【０００４】
また、波形メモリから波形サンプルを読み出す方式の別の例として、「連続読み出し型」方式が従来あった。「連続読み出し型」場合は、波形メモリにおいて、連続する複数アドレスを１フレームとするフレーム単位で波形サンプルを記憶しており、波形メモリに対する１度のアクセスにより、１フレームを構成する複数アドレス分の複数の波形サンプルを読み出す（例えば、下記特許文献１を参照）。このように１度のアクセスで複数の波形サンプルを読み出すことをバースト読み出しという。
【０００５】
また、下記特許文献２には、バースト読み出しを行うための構成として、波形メモリの各アドレス毎に、波形サンプルを複数サンプルずつ記憶しておき、波形メモリに対する１度のアクセス毎に、複数サンプル単位で読み出しを行うことが記載されている。
【特許文献１】特開２００４‐１２６１２７号公報
【特許文献２】特開平１０‐２０８６０号公報
【０００６】
ところで、上述した通り波形メモリ音源は、時分割動作により複数の発音チャンネル分の楽音信号を生成することを実現している。従って、音源のサンプリング周期毎の発音チャンネル数は、音源の波形メモリに対するアクセス速度によって制限される。つまり、波形メモリに対するアクセス速度が、発音チャンネル数を制限するボトルネックとなっている要素である。従って、波形メモリに対するアクセス速度を向上すれば、結果的に発音チャンネル数を増やすことが可能となる。
【０００７】
しかし、上記従来の「単発読み出し型」の波形メモリ音源では、ランダムアクセスにより１度のアクセスごとに１アドレスから波形サンプルを読み出していたので、波形メモリに対するアクセス速度の向上をすることに限度があった。その結果、「単発読み出し型」の波形メモリ音源においては、発音チャンネル数を増やすことが著しく制限されていたという不都合があった。
【０００８】
また、上記単発読み出し型の波形メモリ音源が、サンプル間補間用のバッファを持たない構成の場合、１回の読み出しタイミング毎に補間演算に使うための複数点の波形サンプルを読み出すために、波形メモリに対して複数回アクセスしなければならない。例えば２サンプルを用いた２点補間（直線補間）を行うとすると、各サンプリング周期の各発音チャンネルの読み出しタイミング毎に、波形メモリに対して２回アクセスする必要がある。すなわち、サンプル間補間用のバッファを設けないことでコストを下げることができるが、その反面、波形サンプルの読み出し効率が悪くなり、発音チャンネル数がより一層制限される。
【０００９】
これに対して、上記従来の「連続読み出し型」の波形メモリ音源では、１度のアクセスごとに複数個の波形サンプルを読み出していたので、波形メモリに対するアクセス速度を向上することはできるが、１度のアクセスで波形メモリから読み出す複数個の波形サンプルに相当するデータ量（フレームサイズ）以上のデータ容量のバッファを、音源部に設けなければならない。すなわち、従来の複数サンプルをバースト読み出する方式では、バースト読み出しするデータサイズに対応するデータ容量のバッファが必要となり、構成が複雑化し回路規模が大きくなるという不都合があった。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
この発明は、上記の点に鑑みてなされたもので、波形メモリに対するアクセス速度を向上して、それにより発音チャンネル数を増やすことができる楽音信号生成装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明は、波形メモリに記憶された波形データに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成装置であって、アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリであって、各アドレスに前記波形データを１サンプルずつ記憶しており、各ページの最終アドレスに記憶されたサンプルは、その次のページの先頭アドレスにも重複して記憶した波形メモリと、各サンプリング周期毎に、各発音チャンネルの読み出しレートを累算して、整数部と小数部からなるサンプルアドレスを各発音チャンネル毎に生成するアドレスカウンタと、各サンプリング周期毎に、前記アドレスカウンタで生成したサンプルアドレスの整数部を、各ページの最終アドレスに対応する値を飛び越すメモリアドレスに変換するメモリアドレス生成部と、各サンプリング周期毎に、前記メモリアドレス生成部により生成された各発音チャンネルのメモリアドレスを用いて前記波形メモリをページアクセスし、前記メモリアドレスからの連続する２つのアドレスに記憶された２つのサンプルを読み出す読み出し部と、各サンプリング周期毎に、前記読み出し部により読み出された各発音チャンネル毎の２個のサンプル間を、前記アドレスカウンタで生成した前記サンプルアドレスの小数部に基づいてサンプル間補間して、該補間されたサンプルを各発音チャンネル毎に生成する補間部と、前記補間部により補間された各発音チャンネル毎のサンプルに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成部とを具えることを特徴とする楽音信号生成装置である。
【００１２】
波形メモリは、アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリであって、各アドレスに前記波形データを１サンプルずつ記憶しており、各ページの最終アドレスに記憶されたサンプルは、その次のページの先頭アドレスにも重複して記憶されている。各サンプリング周期毎に、各発音チャンネルの読み出しレートを累算して、整数部と小数部からなるサンプルアドレスを各発音チャンネル毎に生成し、該生成したサンプルアドレスの整数部を、各ページの最終アドレスに対応する値を飛び越すメモリアドレスに変換して、各発音チャンネルのメモリアドレスを用いて波形メモリをページアクセスし、該メモリアドレスからの連続する２つのアドレスに記憶された２つのサンプルを読み出して、読み出された各発音チャンネル毎の２個のサンプル間を、サンプルアドレスの小数部に基づいてサンプル間補間して、各発音チャンネル毎の補間済みサンプルに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する。よって、各サンプリング周期毎の各発音チャンネルのページアクセスで、補間に必要な２つの波形サンプルを読み出せる。また、メモリアドレスは各ページの最終アドレスに対応する値を飛び越すので、メモリアドレスからの連続する２つのアドレスは常に同一ページ内のアドレスとなる。メモリアドレスは各ページの最終アドレスを指すことがなくなるが、各ページの最終アドレスに記憶されたサンプルは、その次のページの先頭アドレスにも重複して記憶されているので、該最終アドレスのサンプルとその次のサンプル間の補間ができるようになっている。
【００１３】
前記メモリアドレス生成部の構成例として、前記ページサイズの所定アドレス数をｐとおくと、アドレスカウンタで生成したサンプルアドレスの整数部ＳＡｉと該整数部ＳＡｉの関数である［ＳＡｉ／（ｐ−１）］の整数部とを加算した結果に基づきメモリアドレスＭＡを生成するよう構成することで、サンプルアドレスの整数部を、各ページの最終アドレスに対応する値を飛び越すメモリアドレスに変換できる。
【００１４】
また、この発明は、波形メモリに記憶された波形データに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成装置であって、アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリであって、各アドレスに前記波形データを１サンプルずつ記憶しており、各ページの最終からｎ−１個の各アドレスに記憶された波形データのサンプルは、その次のページの先頭からｎ−１個の各アドレスにも重複して記憶した波形メモリと、各サンプリング周期毎に、各発音チャンネルの読み出しレートを累算して、整数部と小数部からなるサンプルアドレスを各発音チャンネル毎に生成するアドレスカウンタと、各サンプリング周期毎に、前記アドレスカウンタで生成したサンプルアドレスの整数部を、各ページの最終からｎ−１個のアドレスに対応する値を飛び越すメモリアドレスに変換するメモリアドレス生成部と、各サンプリング周期毎に、前記メモリアドレス生成部により生成された各発音チャンネルのメモリアドレスを用いて前記波形メモリをページアクセスし、前記メモリアドレスからの連続するｎ個のアドレスに記憶されたｎ個のサンプルを読み出す読み出し部と、各サンプリング周期毎に、前記読み出し部により読み出された各発音チャンネル毎のｎ個のサンプル間を、前記アドレスカウンタで生成した前記サンプルアドレスの小数部に基づいてサンプル間補間して、該補間されたサンプルを各発音チャンネル毎に生成する補間部と、前記補間部により補間された各発音チャンネル毎のサンプルに基づいて、サンプリング周期毎に複数発音チャンネルの楽音信号を生成する楽音信号生成部とを具えることを特徴とする楽音信号生成装置である。
【００１５】
ページアクセスによりページ内の所定のｎ個のサンプルずつ読み出す場合には、波形メモリの各ページの最終からｎ−１個の各アドレスに記憶された波形データのサンプルは、その次のページの先頭からｎ−１個の各アドレスにも重複して記憶される。メモリアドレス生成部は、アドレスカウンタで生成したサンプルアドレスの整数部を、各ページの最終からｎ−１個のアドレスに対応する値を飛び越すメモリアドレスに変換する。そして、各サンプリング周期毎に、各発音チャンネルのメモリアドレスを用いて、波形メモリをページアクセスし、該メモリアドレスからの連続するｎ個のアドレスに記憶されたｎ個のサンプルを読み出して、読み出された各発音チャンネル毎のｎ個のサンプル間を、サンプルアドレスの小数部に基づいてサンプル間補間して、補間された各発音チャンネル毎のサンプルに基づいて、複数発音チャンネルの楽音信号を生成する。
【００１６】
上記のページアクセスによりページ内の所定のｎ個のサンプルずつ読み出す場合には、メモリアドレス生成部の構成例として、前記ページサイズの所定アドレス数をｐとおくと、アドレスカウンタで生成したサンプルアドレスの整数部ＳＡｉと、該整数部ＳＡｉの関数である［ＳＡｉ／（ｐ−ｎ＋１）］の整数部に（ｎ−１）を乗算した値とを加算した結果に基づき、メモリアドレスを生成するよう構成することで、サンプルアドレスの整数部を、各ページの最終からｎ−１個のアドレスに対応する値を飛び越すメモリアドレスに変換できる。
【発明の効果】
【００１７】
この発明によれば、波形メモリとして、アドレス空間がページサイズｐでページ分けされ、各ページ内のアドレスに記憶されたデータを高速ページアクセス可能な波形メモリを用いて、各ページの最終アドレス（最終からｎ−１個の各アドレス）に記憶されたサンプルは、その次のページの先頭アドレスにも重複して記憶しておくとともに、各発音チャンネルで各ページの最終アドレス（最終からｎ−１個のアドレス）を避けたメモリアドレスを生成することで、各サンプリング周期内の各発音チャンネル毎のアクセスタイミングで、ページアクセスを用いて、波形メモリの同一ページ内の連続する２アドレス（ｎ個のアドレス）から２つのサンプル（ｎ個のサンプル）を高速で読み出すことができる。
各発音チャンネルのサンプル間補間に用いるサンプルは、サンプリング周期毎に、波形メモリから読み出すようになっているので、発音チャンネル毎のバッファメモリが不要であり、その分だけ楽音信号生成装置の構成を簡単化することができる。
従って、この発明にかかる楽音信号生成装置によれば、簡単な構成で、波形メモリ９に対するアクセス速度を向上して、発音チャンネル数を増やすことができるという優れた効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下、この発明の一実施例について図面を参照して詳細に説明する。この実施例では、この発明に係る波形メモリ音源（楽音信号生成装置）を電子楽器に適用した例について説明する。
【００１９】
図１は、本発明の波形メモリ音源（楽音信号生成装置）を適用した電子楽器の全体構成を示すブロック図である。図１において、電子楽器は、ＣＰＵ１、フラッシュメモリ２、ＲＡＭ３、演奏操作子４、操作子５、表示器６、データ入出力インターフェース（Ｉ／Ｏ）７、音源部８、波形メモリ９、およびサウンドシステム１０を含んで構成される。ＣＰＵ１には、データおよびアドレスバスライン１Ｂを介して、フラッシュメモリ２、ＲＡＭ３、演奏操作子４、操作子５、表示器６、入出力Ｉ／Ｏ７、および音源部８の各デバイスが接続されており、バスライン１Ｂを介して接続された各デバイスとの間でアドレス信号を含む各種データを通信する。
【００２０】
ＣＰＵ１、フラッシュメモリ２、およびＲＡＭ３は電子楽器の動作を制御する制御部である。フラッシュメモリ２には、ＣＰＵ１が実行する各種プログラムを記憶されており、ＣＰＵ１は、フラッシュメモリ２に記憶されたプログラムをＲＡＭ３に読み出し、該読み出したプログラムを実行する。
【００２１】
演奏操作子４は、ユーザが演奏操作を入力するための操作子と、該演奏操作を検出するための検出機構とを含み、例えば、複数の鍵からなる鍵盤により構成される。ユーザは、演奏操作子４を用いて、楽音の発音及び止音を指示し、また、発音すべき楽音の音高とベロシティ（音量）とを指示することができる。ＣＰＵ１は、演奏操作子４の操作に応じた検出信号をバスライン１Ｂを介して受信して、受信した検出信号に基づき該演奏操作子４の操作に応じた演奏イベントデータを発生する。
【００２２】
操作子５は、ユーザが音色の選択や選択された音色の各種パラメータの値の入力等を行うための操作子と、その操作を検出するための検出機構とを含む。前記音色の各種パラメータには、例えば楽音の音量を制御する音量パラメータや、楽音に対して効果付与するための各種エフェクタを設定するパラメータなどが含まれる。ユーザは、操作子５を操作して、音色の選択、音量の調整、あるいは各種エフェクタのパラメータの値の調整等を含む各種パラメータの設定を行うことができる。ＣＰＵ１は、操作子５の操作に応じた検出信号をバスライン１Ｂを介して受信して、該受信した検出信号に基づき操作子５の操作に応じた各種データを発生する。
【００２３】
表示器６は、電子楽器の操作パネルに配置され、ＣＰＵ１による表示制御に基づき各種情報を表示する表示器であって、例えば液晶ディスプレイ等で構成される。また、電子楽器は、入出力Ｉ／Ｏ７を介して各種外部の装置とデータ通信可能に接続される。入出力Ｉ／Ｏ７は、例えばＭＩＤＩ規格の信号を送受信するためのＭＩＤＩインターフェースや、あるいはＥｔｈｅｒｎｅｔ（登録商標）規格の通信インターフェースなど、従来から知られる適宜の規格のデータ入出力インターフェースにより構成される。
【００２４】
波形メモリ９は、複数の音色に対応する複数の波形データを記憶したメモリであって、詳しくは後述する通り、データの読み出し方式として「高速ページモード」によるアクセス（ページアクセス）が可能なメモリによって構成される。波形メモリ９は、書き換え可能な不揮発性メモリ（フラッシュメモリ）やダイナミックＲＡＭ（ＤＲＡＭ）により構成されてもよいし、書き換え不可能な不揮発性メモリ（ＲＯＭ）により構成されてもよい。波形データは、アナログ音響信号を、所定のサンプリングレートで標本化(サンプリング)し、サンプリング点ごとの瞬時振幅を示す標本値を、固定ビット数のデジタルデータとして記録したデータである。この明細書では、サンプリング点ごとの瞬時振幅を示す標本値（波形データのサンプル）のことを「波形サンプル」という。
【００２５】
音源部８は、サンプリング周期毎に波形メモリ９にアクセスし、該波形メモリ９から波形サンプルを読み出して、該読み出した波形サンプルを用いて楽音信号を生成する波形メモリ音源である。音源部８は、所定の複数の発音チャンネルを有しており、時分割動作することにより、サンプリング周期毎に、複数の発音チャンネル分の楽音信号を同時に生成することができる。音源部８で生成された楽音信号は、アンプおよびスピーカを含んで構成されるサウンドシステム１０に供給され、該サウンドシステム１０から発音される。
【００２６】
この発明によれば、詳しくは後述する通り、波形メモリ９からのデータ読み出し法を改良し、それに伴い波形メモリ９の波形サンプルの記憶法を改良することにより、波形メモリ９をアクセスする手法としてページアクセスを適用することを可能とし、もって音源部８の波形メモリ９に対するアクセス速度を向上し、その結果として、サンプリグ周期毎の発音チャンネル数を増やすことができる。
【００２７】
図２は、波形メモリ９の構成例を示す図である。波形メモリ９には、複数のＮ個の波形データ（「波形データ１」、「波形データ２」、「波形データ３」…「波形データＮ」）が記憶されている。電子楽器のユーザは、操作子５の操作等により、用意されている複数の音色（音色データ）の中から演奏に用いる１つのを選択することができる。各音色データは、波形データを選択するための波形選択情報、音量変化を制御する音量エンベロープパラメータ等を含む。波形選択情報に基づいて、Ｎ個の波形データの中から、演奏される楽音の音高や強度に応じて、異なる波形データが選択される。
【００２８】
図２おいて、１つの波形データ（「波形データ２」）の構成を詳細に示す。１つの波形データは、複数ＷＳ個の波形サンプル（「サンプル０」、「サンプル１」、「サンプル２」…「サンプル（ＷＳ−１）」）からなり、波形サンプルの１つずつが波形メモリ９のアドレス番号「０」、「１」、「２」…「（ＷＳ−１）」の１アドレス毎に記憶されている。各波形サンプルは、基本的には、アドレス番号順に読み出すことでサンプリング元となった楽音信号（波形データ）を再生できるよう、時系列順に並べて記憶されている。すなわち、アドレス番号の順序が波形データの瞬時位相の時間的進展に対応する。なお、図２において、アドレス番号「０」、「１」、「２」…「（ＷＳ−１）」は、各波形サンプルが記憶されたアドレスの番号を、当該波形データの先頭の波形サンプル「サンプル０」のアドレスを起点（「０」）とする相対的なアドレス番号により１０進数で表現している。
【００２９】
ＷＳは、１つの波形データのデータサイズ（波形サイズ）を表すパラメータであって、１つの波形データを構成する波形サンプルの数に対応する。波形メモリ９には、１つのアドレスに１つの波形サンプルが記憶されているので、１つの波形データの波形サイズＷＳは、当該波形データを記憶したアドレス数に対応する。従って、波形サイズＷＳがわかれば、その波形データの最終アドレスを特定することができる。図２において、波形データ２の先頭の波形サンプルのアドレス番号が「０」から始まっているので、波形データ２の最終アドレスは「（ＷＳ−１）」と表現される。ここでは、説明を簡単にするため、波形データはワンショット読み出しされるタイプとする。なお、本発明は、アタック部とループ部とを有しアタック部が一通り読み出された後、ループ部が繰り返し読み出されるタイプの波形データ等、その他のタイプの波形データにも適用可能である。
【００３０】
また、先頭アドレスＴＡは、波形データの先頭の波形サンプルが記憶されたアドレスを、波形メモリ９上で特定するポインタである。従って、或る波形データの或る波形サンプルの波形メモリ９上での絶対的な記憶位置は、当該波形データの先頭アドレスＴＡと、その波形サンプルのアドレスとの組み合わせにより特定できる。
【００３１】
波形メモリ９は、「ページアクセス」が可能なメモリであるので、そのアドレス空間は、所定アドレス数のページサイズｐ毎の複数のページにページ分けされている。図２に示す通り、この実施例では、波形メモリ９のアドレス空間は、１ページあたり８アドレス毎のページにページ分けされている。例えば、アドレス番号０、１、２…７までの８アドレスが第１ページｐ１を構成し、アドレス番号８、９、１０…１５までの８アドレスが第２ページｐ２を構成する。
【００３２】
「高速ページモード」によるアクセスは、波形メモリ９の何れかのアドレスに最初にアクセスした後であれば、その最初のアクセスより短いアクセス時間で、そのアドレスと同じページ内のアドレスに順次アクセスできるものである。この明細書では、その最初のアクセスとそれに続くｎ−１個のアクセスをまとめて「ページアクセス」と呼ぶことにする。なお、「ｎ」は正の整数である。この実施例では、ページアクセスの一例として、１度のアクセス毎に、１つのページ内の２つのアドレスに記憶された２つの波形サンプルを読み出すものとする。なお、メモリを「ページアクセス」することによりデータを高速読み出しする技術自体は、マスクＲＯＭやフラッシュメモリなどにおけるデータ高速読み出し技術として、従来から知られている。
【００３３】
波形メモリ９の各ページの最終アドレスに記憶された波形サンプルは、その次のページの先頭アドレスにも重複して記憶されている。このように、各ページの最終アドレスと、その次のページの先頭アドレスとに、同じ波形サンプルを重複して記憶しておくことは、各サンプリング周期の各発音チャンネルのページアクセスで、補間に必要な２つの波形サンプルが読み出せるようにする工夫である。
例えば、第１ページｐ１の最終アドレスであるアドレス番号７に記憶された「サンプル７」は、その次の第２ページｐ２の先頭アドレスであるアドレス番号８にも記憶されており、アドレス番号８に続くアドレス番号９以降に「サンプル７」に続く「サンプル８」以降の波形サンプルが順次記憶される。同様に、ページｐ２の最終アドレスであるアドレス番号１５に記憶された「サンプル１４」は、その次のページｐ３の先頭アドレスであるアドレス番号１６にも記憶されており、アドレス番号１７以降に「サンプル１４」に続く「サンプル１５」以降の波形サンプルが順次記憶される。
つまり、各ページの最終アドレスに記憶された波形サンプルが、次のページの先頭アドレスに重複して記憶されていることを除けば、各波形サンプルは、アドレス番号の順に、波形データの瞬時位相の時間的進展に従って１つずつ時系列順に並べて記憶されている。
【００３４】
図３は、図１に示す音源部８の詳細な構成を示すブロック図である。音源部８は、アドレスカウンタ１１、メモリアドレス生成部１２、サンプル間補間部１３、音量エンベロープ付与（音量ＥＧ）部１４、ミキサ１５、デジタルアナログ変換部（ＤＡＣ）１６、および制御レジスタ１７を含んで構成されている。音源部８の各部は、図示外のクロック発生器で発生したシステムクロックを動作基準にして動作する。音源部８が波形データを処理するサンプリング周期は、システムクロックを分周して生成される。
また、音源部８は、システムクロックに基づき、サンプリング周期を、所定複数の発音チャンネルに対応するタイムスロットごとに等分割して、各タイムスロットごとの時分割チャンネルタイミングにおいて、それぞれ対応する発音チャンネルの処理を実行することで、複数の発音チャンネルの時分割動作を行う。具体的には、アドレスカウンタ１１、メモリアドレス生成部１２、サンプル間補間部１３、および音量ＥＧ付与部１４が、それぞれ、所定の複数発音チャンネルの時分割動作を行う。そして、ミキサ１５がサンプリング周期毎に該所定の複数発音チャンネルのデータを累算することで、音源部８は、全体として、サンプリング周期毎に複数発音チャンネル分の楽音信号を生成する処理を行う。
【００３５】
制御レジスタ１７は、アドレスカウンタ１１、メモリアドレス生成部１２、サンプル間補間部１３、音量ＥＧ部１４、およびミキサ１５の各部の動作に用いる各種パラメータの値を格納するレジスタであって、バスライン１Ｂを介してＣＰＵ１に接続されている。制御レジスタ１７には、前記所定複数発音チャンネル毎の記憶領域が設けられており、後述するノートオンイベント処理によりＣＰＵＩが生成する各発音チャンネル毎の各種パラメータの値が該所定複数発音チャンネル毎の記憶領域に設定される。制御レジスタ１７に設定される各種パラメータは、発音すべき楽音の周波数（音高）に対応する読み出しレート（Ｆナンバ）、波形データのサイズＷＳ、波形データの先頭アドレスＴＡ、音量の時間的な変化を制御するための音量エンベロープパラメータＡＥＧの係数などである。
【００３６】
アドレスカウンタ１１は、各サンプリング周期毎に、制御レジスタ１７に設定された各発音チャンネルの読み出しレート（Ｆナンバ）を累算して、その累算値を当該発音チャンネルのサンプルアドレスＳＡとして出力するカウンタである。Ｆナンバは、各発音チャンネルで生成する楽音信号の音高に対応して、波形サンプルの読み出しレート（サンプルアドレスＳＡの進行レート）を制御するパラメータである。アドレスカウンタ１１は、各発音チャンネル毎の発音開始時にリセットされ、その後、各サンプリング周期ごとに、各発音チャンネルのＦナンバを累算することで、「０」を初期値とし、各発音チャンネル毎の波形データサイズＷＳによって特定される最終アドレス（ＷＳ−１）をカウント上限値として、Ｆナンバの値に応じたレートで進行するサンプルアドレスＳＡを、各発音チャンネル毎に生成する。サンプルアドレスＳＡは、整数部ＳＡｉと小数部ＳＡｆからなり、整数部ＳＡｉはメモリアドレス生成部１２に供給され、小数部ＳＡｆはサンプル間補間部１３に供給される。
【００３７】
メモリアドレス生成部１２は、各サンプリング周期毎に、前記アドレスカウンタ１１で生成された各発音チャンネルのサンプルアドレス整数部ＳＡｉと、各発音チャンネルの先頭アドレスＴＡと、波形メモリ９のページサイズｐとに基づいて、発音チャンネルメモリアドレスＭＡを求める演算を行い、メモリアドレスＭＡを波形メモリ９に出力する。メモリアドレスＭＡは、アクセスすべき波形メモリ９のアドレス番号を示すデータである。
メモリアドレスＭＡを求めるために行われる演算式は、
ＭＡ＝ＴＡ＋ＳＡｉ＋Ｉｎｔ［ＳＡｉ／（ｐ−１）］…（式１）
である。
この演算式（１）において、「ＴＡ」は、波形データの先頭アドレスであり、何れかのページの先頭になるよう調整されている。「ＳＡｉ」はアドレスカウンタ１１から供給されたサンプルアドレスの整数部である。「ｐ」はページサイズ（１ページのアドレス数）である。Ｉｎｔ［ＳＡｉ／（ｐ−１）］はサンプルアドレス整数部ＳＡｉの関数であって、計算式［ＳＡｉ／（ｐ−１）］の整数部を求める関数である。（式１）により、サンプルアドレス整数部ＳＡｉは、先頭アドレスＴＡを初期値とし、且つ、Ｉｎｔ［ＳＡｉ／（ｐ−１）］が加算されたメモリアドレスＭＡに変換される。
この（式１）によりサンプルアドレス整数部ＳＡｉに基づくメモリアドレスＭＡを生成することで、詳しくは後述する通り、各ページの最終アドレスに対応する値となるところで、次のページの先頭アドレスとなるよう後ろにシフトして、該最終アドレスに対応する値を飛び越す（避ける）よう変換して該メモリアドレスＭＡを生成することができる。これにより、該メモリアドレスを用いてアクセスされる２サンプルが、波形メモリ９の２つのページ境界をまたがないものとなる。この変換は、ページアクセスによる２サンプルの読み出しを実現するために必須である。
【００３８】
音源部８は、各サンプリング周期毎に、前記メモリアドレス生成部１２において上記演算により求めた各発音チャンネルのメモリアドレスＭＡを用いて波形メモリ９に対して時分割でページアクセスして、メモリアドレスＭＡとそれに続くメモリアドレス（ＭＡ＋１）との２つの連続するアドレスに記憶された２サンプル分の波形サンプル（メモリデータＭＤ）を各発音チャンネル毎に読み出す。これにより、各サンプリング周期の時分割チャンネルタイミング毎に、各発音チャンネルの波形サンプルを２サンプルずつ読み出すことができる。各サンプリング周期毎の、当該発音チャンネルのタイムスロットでページアクセスされた当該発音チャンネルの２つの波形サンプルは、それぞれ波形メモリ９から出力されるタイミングで、符号１８，１９で示す第１のラッチＬ１及び第２のラッチＬ２にラッチされる。
【００３９】
サンプル間補間部１３は、サンプリング周期毎に、アドレスカウンタ１１から供給される各発音チャンネルのサンプリングアドレス小数部ＳＡｆに基づき、符号１８，１９で示す第１ラッチＬ１及び第２ラッチＬ２にラッチされた当該発音チャンネルの２つの波形サンプルを用いたサンプル間補間演算を行い、当該発音チャンネルのサンプルアドレスＳＡの示すサンプリング点に対応する補間済み波形サンプルを出力する。
音量ＥＧ部１４は、各サンプリング周期毎に、制御レジスタ１７に設定された各発音チャンネル毎の音量エンベロープパラメータに基づいて当該発音チャンネルの音量の時間変化を示す音量エンベロープ波形ＡＥＧを生成し、サンプル間補間部１３から出力された当該発音チャンネルの補間済み波形サンプルの音量を、該音量エンベロープ波形ＡＥＧで制御する。
【００４０】
ミキサ１５は、各サンプリング周期毎に、音量ＥＧ部１４から出力される各発音チャンネルの波形サンプルを累算（ミキシング）して、そのミキシング結果として得られる複数発音チャンネル分の波形サンプルからなる楽音信号を、サンプリング周期毎に、ＤＡＣ１６に出力する。ＤＡＣ１６は、サンプリング周期毎に、ミキサ１５から出力された楽音信号をアナログ音響信号に変換して、該アナログ変換したアナログ音響信号を、サンプリング周期毎にサウンドシステム１０へ出力する。
【００４１】
上記構成からなる音源部８において、各発音チャンネルの楽音信号生成に用いる各種パラメータは、演奏データ（ＭＩＤＩデータ）のイベントに応じてＣＰＵ１が実行するノートオンイベント処理によって制御レジスタ１７に設定される。図４は、そのようなイベント処理の一例であり、新たな楽音の発音を指示するノートオンイベントが供給されたときに、ＣＰＵ１が実行するノートオンイベント処理の手順を示すフローチャートである。ＣＰＵ１は、演奏操作子４の発音操作（例えば鍵盤の押鍵）が検出されたときに、該発音操作された演奏操作子４に応じた音高（押鍵された鍵の音高）の発音を指示するノートオンイベントが生じたものとして、ノートオンイベント処理を実行する。
【００４２】
ステップＳ１において、ＣＰＵ１は、発音指示された音高（押鍵された鍵の音高）をノートナンバレジスタＮＮに、発音指示された強度（押鍵速度）をベロシティレジスタＶＥＬにそれぞれ取り込む。
【００４３】
ステップＳ２において、ＣＰＵ１は、音源部８の複数の発音チャンネルの中から、前記検出された発音指示に応じた楽音信号生成に使用する発音チャンネルを選択し（割り当て）、該選択した発音チャンネルのチャンネル番号を、割当チャンネルレジスタａに代入する。
【００４４】
ステップＳ３において、ＣＰＵ１は、現在選択されている音色の波形選択情報に基づき、前記Ｎ個の波形データの中から、ノートナンバＮＮおよびベロシティＶＥＬに応じた波形データを選択する。これは、同じ音色の波形データであっても、音高の違いおよび音量の違いに応じて、波形の形状が異なっているためである。
【００４５】
ステップＳ４において、ＣＰＵ１は、前記ステップＳ３で選択された波形データの原ピッチと、ノートナンバＮＮと音高差（セント単位）に基づき、Ｆナンバを生成する。原ピッチは、波形データをサンプリングしたときのオリジナルの音高（ピッチ）であり、波形選択情報内に記憶されている。Ｆナンバは、各発音チャンネルで、ノートナンバＮＮに応じた音高の楽音信号を生成するために、選択された波形データの原ピッチの音高をずらす量（セント単位）に応じて決定される読み出しレートである。このＦナンバの値により、各発音チャンネル毎の波形サンプルの読み出しレート（サンプルアドレスＳＡの進行レート）が制御される。
【００４６】
ステップＳ５において、ＣＰＵ１は、レジスタａの値に応じて、制御レジスタ１７の発音チャンネルａの記憶領域に、前記ステップＳ４で決定したＦナンバ、前記ステップＳ３で選択した波形データの先頭アドレスＴＡ、該波形データの波形サイズＷＳ、現在選択されている音色の音量エンベロープパラメータなどを含む楽音信号の生成に必要な各種パラメータの値を設定する。
【００４７】
そして、ステップＳ６において、ＣＰＵ１は、レジスタａの値に従い、発音チャンネルａにおける楽音信号の生成開始（発音開始）を、音源部８に対して指示する。これにより、音源部８は、楽音信号が割り当てられた発音チャンネルａを用いて、制御レジスタ１７に設定された各種パラメータに基づく楽音信号を生成する処理を開始する。
【００４８】
すなわち、アドレスカウンタ１１の当該発音チャンネルａのカウント値ＳＡ（ａ）は、当該発音チャンネルａの発音開始時にリセットされ、その後、各サンプリング周期毎に、制御レジスタ１７に設定された発音チャンネルａのＦナンバを累積して、Ｆナンバに応じたレートで進行する発音チャンネルａのサンプルアドレスＳＡ（ａ）を生成する。メモリアドレス生成部１２は、各サンプリング周期毎に、発音チャンネルａのサンプルアドレス整数部ＳＡｉ（ａ）を、上述した（式１）による演算によりメモリアドレスＭＡ（ａ）に変換する。すなわち、メモリアドレス生成部１２は、制御レジスタ１７に設定された先頭アドレスＴＡ（ａ）を初期値とし、且つ、サンプルアドレス整数部ＳＡｉ（ａ）に加算値Ｉｎｔ［ＳＡｉ（ａ）／（ｐ−１）］を加算したメモリアドレスＭＡ（ａ）を生成する。アドレスカウンタ１１が、発音チャンネルａの発音開始時にリセットされ、Ｆナンバに応じたレートで進行するので、発音チャンネルａのメモリアドレスＭＡ（ａ）は、先頭アドレスＴＡ（ａ）を初期値として、Ｆナンバに応じたレートで進行する。
【００４９】
従って、音源部８は、各サンプリング周期毎に、生成される当該発音チャンネルａのメモリアドレスＭＡ（ａ）を用いて、波形メモリ９をページアクセスして、波形メモリ９からアドレス番号ＭＡ（ａ）とアドレス番号（ＭＡ（ａ）＋１）との連続する２アドレス分の波形サンプルを読み出す処理を繰り返す。
【００５０】
各サンプリング周期毎に、前記ページアクセスにより、波形メモリ９から出力される当該発音チャンネルａの２つの波形サンプルは、各サンプリング周期の時分割チャンネルタイミング毎に、符号１８，１９で示す第１及び第２のラッチＬ１，Ｌ２にラッチされる。サンプル間補間部１３は、各サンプリング周期毎に、第１及び第２のラッチＬ１，Ｌ２にラッチされる当該発音チャンネルａの２つの波形サンプルを用いて、アドレスカウンタ１１から供給された小数部ＳＡｆに基づくサンプル間補間演算（２点補間）を行うことで、サンプルアドレスＳＡ（ａ）に応じたサンプリング点の補間済みの波形サンプルを生成する。このように、音源部８は、各サンプリング周期毎に、波形メモリ９をページアクセスして、各発音チャンネルのサンプル間補間に必要な波形サンプルを読み出すように構成されているので、サンプル間補間用の発音チャンネル毎のバッファメモリを設けなくてもよい。
【００５１】
上記において、波形サンプルの読み出し速度（Ｆナンバ）は、ノートオンイベントにより発音指示された音高（ノートナンバＮＮ）と、当該発音チャンネルに割り当てられた波形データの原ピッチの音高差に応じた値に設定されているので、波形メモリに記憶されている該波形データは、波形メモリ９から読み出されて２点補間される過程で、発音指示された音高の楽音信号となるようピッチシフトされる。なお、ここでの波形メモリの読み出し方式は、一定のサンプリング周期に同期したピッチ非同期方式であるが、本発明をピッチ同期方式に適用してもよい。
【００５２】
サンプリング周期毎に、サンプル間補間部１３から出力される当該発音チャンネルａの波形サンプルは、音量ＥＧ部１４において、制御レジスタ１７に設定された当該発音チャンネルａの音量エンベロープパラメータに基づいて生成された音量エンベロープ波形ＡＥＧにより音量の時間変化が制御され、ミキサ１５に出力される。ミキサ１５は、各サンプリング周期毎に、音量ＥＧ部１４から出力される複数発音チャンネル（当該発音チャンネルａを含む）の波形サンプルを累算して、複数発音チャンネル分の波形サンプルを累算した楽音信号をＤＡＣ１６に出力する。そして、ＤＡＣ１６において、サンプリング周期毎に、ミキサ１５から出力された複楽音信号をアナログ音響信号に変換して、サウンドシステム１０に出力する。かくして、音源部８は、ユーザによって発音指示された楽音信号を、ユーザが指定した音高で再生することができる。
【００５３】
図５は、この実施例にかかるページアクセスによる波形サンプル読み出し動作を、サンプルアドレスＳＡの値に対応付けて説明するための図である。図５を参照して、１つの発音チャンネルの波形データの読み出し動作を詳細に説明する。図５において、右端の列には、波形サイズＷＳの１つの波形データを構成する波形サンプル０、波形サンプル１、波形サンプル２、…波形サンプル（ＷＳ−１）が縦に並べて描かれており、各波形サンプルに対応して、各波形サンプルが記憶されたアドレス番号０、アドレス番号１、アドレス番号２…アドレス番号（ＷＳ−１）が示されている。波形メモリ９は、図２を参照して説明した通り、１ページのアドレス数を８アドレスとするページ単位に区分されており、各ページの最終アドレスと後続のページの先頭アドレスには同じ波形サンプルが重複して記憶されている。
【００５４】
図５の左端の列には、アドレスカウンタ１１から出力されるサンプルアドレス整数部ＳＡｉが縦に並べて示されており、ＳＡｉ列の左隣には、各サンプルアドレス整数部ＳＡｉに対する加算値Ｉｎｔ［ＳＡｉ／（ｐ−１）］が示されている。また、Ｉｎｔ［ＳＡｉ／（ｐ−１）］列の左隣には、同じ行に示されたＳＡｉとＩｎｔ［ＳＡｉ／（ｐ-1）］を式（１）に代入した結果として出力されるメモリアドレスＭＡの値が示されている。すなわち、図５の各行には、サンプルアドレス整数部ＳＡｉの値と、それに対応するメモリアドレスＭＡの値、そして、そのメモリアドレスＭＡの値に対応する波形メモリ９のアドレス番号と、そのメモリアドレスＭＡを用いたページアクセスにより読み出される２サンプル分の波形サンプルの対応関係が示されている。
【００５５】
例えば、ＳＡｉの値が「０」のときは、ＳＡｉに対する加算値は、Ｉｎｔ［０／（８−１）］＝０であるから、メモリアドレスＭＡの値は「０」である。なお、実際にメモリアドレス生成部１２から出力されるメモリアドレスＭＡの値は、現音色の波形データの先頭アドレスＴＡを初期値とする値、すなわち「ＳＡｉ＋Ｉｎｔ［ＳＡｉ／（ｐ−１）］」に先頭アドレスＴＡを加算した値となるが、ここでは説明の便宜上、先頭アドレスＴＡの値を「０」として説明している。なお、先頭アドレスＴＡは、ページの先頭アドレスとなるよう調整されているので、先頭アドレスＴＡが「０」以外の場合であっても、メモリアドレスＭＡがシフトされるだけであり、ページアクセスの状況は基本的には同じである。
各サンプリング周期毎に、音源部８から波形メモリ９に対して、時分割で複数発音チャンネル分のページアクセスが行われる。当該発音チャンネルのページアクセスでは、まず最初のアクセスでアドレス信号としてメモリアドレスＭＡの値「０」が出力され、上位アドレス「０」（４ビット目以上）で選択されたページの、下位アドレス「０」（３ビット）で選択されたデータ、すなわち、アドレス番号「０」の「サンプル０」が読み出される。次の第２のアクセスでメモリアドレス「１」が出力されるが、最初のアクセスと同一ページ内のアドレスであるので、高速ページモードでのアクセスが可能であり、最初のアクセスより短いアクセス時間で、アドレス番号１の「サンプル１」が読み出される。図５において、楕円図像は、波形メモリ９に対する１度のページアクセスにより波形メモリ９から読み出される２アドレス分の波形サンプルを明示するものであって、メモリアドレスＭＡとして「０」が出力されたときに読み出される２つの波形サンプルを示す楕円図像に符号３０を付与している。
【００５６】
当該発音チャンネルのサンプルアドレスＳＡは、サンプリング周期毎に、当該発音チャンネルの読み出しレート（Ｆナンバ）ずつ進行する。例えば、次のサンプリング周期でも、ＳＡｉの値が変わらず「０」のままであれば、上述した動作を繰り返し、ページアクセスにより「サンプル０」と「サンプル１」が読み出される。ＳＡｉの値が「１」〜「６」の何れかに進行した場合は、ＳＡｉに対する加算値はＩｎｔ［ＳＡｉ／（８−１）］＝０であるから、メモリアドレスＭＡの値はＳＡｉの値に対応する「１」〜「６」のいずれかの値となる。例えば、当該発音チャンネルのＳＡｉが「２」となったときは、ページアクセスにより「サンプル２」と「サンプル３」が読み出される。
【００５７】
上記の通り、ページアクセスは、１つのページ内の２アドレスの波形サンプルを高速で読み出す方式であるから、１度のページアクセスで、２つのページ境界にまたがる２アドレスの波形サンプルを読み出すことはできない。例えば、１度のアクセスで、第１ページｐ１の最終アドレス（アドレス番号７）と第２ページｐ２の先頭アドレス（アドレス番号８）とからデータを読み出すことはできない。
このため、メモリアドレスＭＡを求める演算式（１）において、サンプルアドレス整数部ＳＡｉにＩｎｔ［ＳＡｉ／（ｐ−１）］を加算することで、順番に進行させて行くと、各ページの最終アドレスとなってしまうＭＡを次のページの先頭アドレスへシフトして、メモリアドレスＭＡとして各ページの最終アドレスに該当する値が生成されないようになっている。
【００５８】
図５において、メモリアドレスＭＡの列に示された数字を見れば、ＭＡの値として、ページの最終アドレスに該当する「７」、「１５」…が含まれていないことがわかる。これにより、メモリアドレスＭＡが各ページの最終アドレスとなることはなくなり、メモリアドレスＭＡとＭＡ＋１は同一ページ内のアドレスとなる。つまり、１度のページアクセスで、各発音チャンネルの２サンプルの読み出しができるようになる。メモリアドレスＭＡは各ページの最終アドレスを指すことがなくなるが、その場合でも、該最終アドレスの波形サンプルと、その次の波形サンプルの間の補間ができるように、その次のページの先頭アドレスには、該最終アドレスの波形サンプルが重複して記憶されている。各発音チャンネルについて、同じページ内の２サンプルをページアクセスで読み出す方式では、サンプルアドレスＳＡｉから各ページの最終アドレスを避けたメモリアドレスＭＡを生成しただけでは、読み出され補間される波形サンプルの連続性が損なわれてしまうが、各ページの最終アドレスの波形サンプルを、その次のページの先頭アドレスにも記憶しておくことで、そのような不都合が生じない。
【００５９】
例えば、ＳＡｉが「７」まで進行した場合は、ＳＡｉに対する加算値がＩｎｔ［７／（８−１）］＝１となるため、メモリアドレスＭＡの値は「８」である。波形メモリ９においては、該メモリアドレスＭＡの値「８」に該当するアドレス番号８を含む第２ページｐ２がアクセス対象に選択され、該選択されたページｐ２内のアドレス番号８が選択される。ここで、波形メモリ９は、第１ページｐ１の最終のアドレス番号７に記憶された「サンプル７」を、次の第２ページｐ２の先頭のアドレス番号８にも記憶しているので、音源部８は、メモリアドレスＭＡの値「８」を用いた波形メモリ９に対するページアクセスにより、符号３１で示す通り、第２ページｐ２の先頭のアドレス番号８に記憶された「サンプル７」と、それに連続するアドレス番号９に記憶された「サンプル８」との２つの波形サンプルを読み出す。
【００６０】
その他のページの最終アドレスのアドレス番号１５、２３…についても、メモリアドレスＭＡとして、その値が生成されないようになっており、且つ、これら各ページの最終アドレスのそれぞれに記憶された波形サンプルと同じ波形サンプルが次のページの先頭アドレスにそれぞれ記憶されている。これにより、ＳＡｉを「８」以降に進行させていった場合でも、生成されるＭＡの値がページの最終アドレスになることはなく、波形メモリ９の１回のページアクセスによって、サンプル間補間に必要な２サンプルを読み出すことができる。
【００６１】
図６は、高速ページモードによるアクセスの一例を示すタイミングチャートである。１つの発音チャンネルあたりの２サンプルの読み出しは、高速ページモードを用いて行われる。図６において、アクセス時間は、音源部８のシステムクロックのクロック数で表現されている。第１タイミング４０では、或るページ対する最初のアクセスであるため、メモリアドレスＭＡを用いたアドレス指定により、ＭＡの上位ビット（４ビット目以上）で指定されたページの、ＭＡの下位ビット（３ビット）で特定されるアドレスの波形サンプルが読み出される。この最初のアクセスでは、通常モードでのアクセスと同等の８クロック時間がかかる。そして、次回の第２タイミング４１では、メモリアドレスＭＡ＋１を用いた第２のアクセスで、同一ページ内の、ＭＡ＋１の下位ビット（３ビット）で特定されるアドレスの波形サンプルが読み出されるが、高速ページモードでの同一ページ内アクセスであるので、これには３クロック時間だけしか掛からない。以下、第３タイミング４２以降のアクセスも、アドレスが同一ページ内である限り、高速ページモードでの同一ページ内アクセスとすることができ、３クロック時間での読み出しができる。
【００６２】
このように、ページアクセスでは、同一ページ内で読み出す波形サンプルの数を増やすほど、１波形サンプルあたりのアクセス時間を短縮することができる。各発音チャンネルについて、サンプル間補間に必要な波形サンプルを読み出す時間が短縮されるので、サンプリング周期が同じであれば、音源部８の発音チャンネル数をより多い数とすることができる。逆に、発音チャンネル数を同じとすれば、音源部８における生成楽音のサンプリング周波数をより高くすることができる。
例えば、音源部８のシステムクロックを１４ナノ秒（１４ｎｓ）、１サンプリング周期のシステムクロック数を１５３６クロック（サンプリング周波数は４６．５ｋＨｚ）とすると、図６の例では、最初のアクセスに８クロック、第２のアクセスに３クロック掛かるので、各発音チャンネルのページアクセスにかかるクロック数は、「８＋３」＝「１１クロック」である。従って、この条件では、音源部８に設けられる最大発音チャンネル数は、１５３６／「８＋３」＝１３９チャンネルとなる。
対するに、従来の通常モードでのアクセスでは、２回のアクセスにそれぞれ８クロック掛かるので、発音チャンネルあたりでは「８＋８」＝「１６クロック」掛かり、最大発音チャンネル数は、１５３６／「８＋８」＝９６チャンネルとなる。このことから、ページアクセスで発音チャンネルあたりのアクセス時間を短縮することで、音源部８の発音チャンネル数を増加できることが理解できる。
【００６３】
以上説明した通り、本実施例によれば、波形メモリ９として、ページアクセスが可能なメモリを用いて、各ページ境界の２アドレスの波形サンプルは前後のページの両方に記憶しておくとともに、各発音チャンネルで各ページの最終アドレスを避けたメモリアドレスＭＡを生成することで、各サンプリング周期内の各発音チャンネル毎のアクセスタイミングで、ページアクセスを用いて波形メモリ９の同一ページ内の連続する２アドレスから波形サンプルを高速で読み出すことができる。
また、各発音チャンネルのサンプル間補間に用いる波形サンプルは、サンプリング周期毎に、波形メモリ９から読み出すようになっているので、発音チャンネル毎のバッファメモリが不要であり、その分だけ音源部８の構成を簡単化することができる。
従って、この実施例にかかる音源部８によれば、簡単な構成で、波形メモリ９に対するアクセス速度を向上して、発音チャンネル数を増やすことができるという優れた効果を奏する。
【００６４】
なお、上記実施例では、波形メモリ９に対する１度のアクセス毎に、連続する２アドレスから２つの波形サンプルを読み出す例について説明した。ページアクセスにより、１度のアクセス毎に読み出すサンプル数は、２つに限らず、１度のページアクセス毎に、連続するｎアドレスからｎ個の連続する波形サンプルを読み出すよう構成されてよい（ｎは正の整数）。１度のページアクセス毎に、ｎ個の波形サンプルずつ読み出すよう設計されている場合には、波形メモリ９は、各ページの最終から（ｎ−１）アドレスと、次のページの先頭から（ｎ−１）アドレスに、それぞれ同じ波形サンプルを重複して記憶しておく。そして、メモリアドレス生成部１２は、下記演算式（２）によりメモリアドレスＭＡを生成する。
ＭＡ＝ＴＡ＋ＳＡｉ＋Ｉｎｔ［ＳＡｉ／｛ｐ−（ｎ−１）｝］×（ｎ−１）
＝ＴＡ＋ＳＡｉ＋Ｉｎｔ［ＳＡｉ／（ｐ−ｎ＋１）］×（ｎ−１）…（式２）
これにより、メモリアドレスＭＡを用いて波形メモリ９をページアクセスし、１度のアクセス毎に、メモリアドレスＭＡから（ＭＡ−ｎ＋１）までの連続するｎ個のアドレスから、ｎ個の連続する波形サンプルを各発音チャンネル毎に読み出すことができる。この場合、音源部８は、波形サンプルをラッチするラッチをｎ個具備して、各サンプリング周期毎に、各発音チャンネル毎に読み出した該ｎ個の波形サンプルを用いて、サンプルアドレス小数部ＳＡｆに基づくサンプル間補間を行い、当該発音チャンネルのサンプルアドレスＳＡに応じた補間済み波形サンプルを得て、更に、当該発音チャンネルの音量エンベロープパラメータに応じた音量の時間変化を付与することで、当該発音チャンネルの波形サンプルを形成する。そして、各サンプリング周期毎に、形成される複数の発音チャンネルの波形サンプルは累算され、複数発音チャンネル分の楽音信号としてＤＡＣ１６に出力される。この場合、各発音チャンネルのページアクセスに掛かるクロック数は「８＋３×（ｎ−１）」である。例えば、ｎを４として場合は、「８＋３×３」＝「１７クロック」となり、最大発音チャンネル数は、１５３６／１７＝９０チャンネルである。対するに、ページアクセスを用いない場合の最大発音チャンネル数は、１５３６／「８×４」＝４８チャンネルであり、本発明では、それに比べて４２チャンネルも増やせることになる。
【００６５】
また、上記実施例では、波形メモリ９のページサイズｐを１ページあたり８アドレスとする例について説明したが、波形メモリ９として、ページサイズｐが、例えば１ページあたり１６アドレス等、その他任意のアドレス数のメモリを用いることができる。
【００６６】
なお、上記の実施例においては、波形メモリ９の１アドレスに記憶された１つの波形サンプルが有意のデータとして読み書きされるので、１アドレスが１ワードに対応していた。従って、上記実施例の説明中の、例えば、「１度のページアクセス毎に、連続するｎアドレスからｎ個の波形サンプルを読み出す」や、「ページサイズｐを１ページあたり８アドレス」などという記載は、「アドレス」という文言を「ワード」という文言に置き換えれば、「１度のページアクセス毎に、連続するｎワードの波形サンプルを読み出す」や、「ページサイズｐを１ページあたり８ワード」と表現される。
【００６７】
また、上記実施例では、本発明の楽音信号生成装置（波形メモリ音源）を電子楽器に適用する例について説明したが、この発明にかかる楽音信号生成装置（波形メモリ音源）は、電子楽器に限らず、音源として楽音信号生成装置（波形メモリ音源）を登載するいかなる装置に適用することも可能である。
【００６８】
また、上記実施例の波形メモリでは、第２のアクセス以降でもアドレス指定を行う高速ページモードによる読み出し機能を備えたメモリを用いていた。しかしながら、本発明の第２のアクセス以降では、最初のアクセスに連続するアドレスから順次読み出すのであるから、高速ページモードを備えたメモリに代えて、最初のアクセスに続くアドレスのデータを、第２アクセス以降、アドレス信号なしで読み出すことができるバースト読み出しの機能を備えたメモリを用いることもできる。
また、上記実施例では、サンプルアドレスＳＡは、発音開始時に「０」リセットされるようになっていたが、「０」以外の値（−Ｔｏｆｆ）をセットして発音を始めるようにしてもよい。その場合、波形データの先頭アドレスＴＡは、「ＴＡ＋Ｔｏｆｆ」になる。
また、上記実施例では、波形データの先頭アドレスＴＡを、何れかのページの先頭アドレスとしていたが、必ずしもページの先頭アドレスとしなくてもよい。
【図面の簡単な説明】
【００６９】
【図１】この発明に係る楽音信号生成装置を適用した電子楽器の全体構成例を示すブロック図。
【図２】図１の波形メモリの構成例を説明する図。
【図３】図１の音源部の構成例を説明するブロック図。
【図４】発音指示に応じてＣＰＵが実行するノートオンイベント処理の手順の一例を示すフローチャート。
【図５】図３の音源部のページアクセスによる波形サンプル読み出し動作をサンプルアドレスＳＡの値に対応付けて説明するための図。
【図６】高速ページモードによるアクセスの一例を示すタイミングチャート。
【符号の説明】
【００７０】
１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  演奏操作子、５  操作子、６  表示器、７  入出力Ｉ／Ｏ、８  音源部、９  波形メモリ、１０  サウンドシステム、１１  アドレスカウンタ、１２  メモリアドレス生成部、１３  サンプル間補間部、１４  音量ＥＧ部、１５  ミキサ、１６  デジタルアナログ変換部
【図１】
2010039266.tif 000003
【図２】
2010039266.tif 000004
【図３】
2010039266.tif 000005
【図４】
2010039266.tif 000006
【図５】
2010039266.tif 000007
【図６】
2010039266.tif 000008