(57)【特許請求の範囲】
【請求項１】
複数のチャンネルを備え、それらの各チャンネルでそれぞれ楽音を生成する楽音生成装置であって、
複数の各波形データの一連のサンプルデータを、仮想アドレス空間で連続する複数のページに、各ページデータが次ページへのポインタである実ページアドレスを含むようにして、記憶した外部メモリと、楽音波形を生成する楽音生成部と、入力された演奏情報に応じて前記楽音生成部を制御する制御部とを備え、
前記楽音生成部は、
各波形データの先頭ページのサンプルデータを記憶した先頭波形領域と、各チャンネルのバッファ領域とを有する波形メモリと、
前記制御部が発音開始を指示する際にパラメータを設定する制御レジスタであって、各チャンネルごとの領域に、少なくとも、発音する楽音の音高に応じた速度情報、発音に使用する波形データの前記波形メモリの先頭波形領域を指す先頭波形アドレス、および発音する楽音の振幅を規定する振幅制御情報が設定される、制御レジスタと、
各チャンネルごとに、発音開始の指示に応じて前記速度情報の示す速度で増加するカウント値を生成するとともに、該カウント値が１ページ分進行するごとに転送指示を発生する、ピッチカウンタと、
各チャンネルごとに、前記カウント値に応じて、前記波形メモリから、まず、前記先頭波形アドレスの示す波形データの先頭ページのサンプルデータを読出し、その後、当該チャンネルのバッファ領域からサンプルデータを繰り返し読出す、読出部と、
各チャンネルの、前記発音開始の指示と前記転送指示とに応じて、当該チャンネルのチャンネル番号を取り込む、転送待ちキューと、
各チャンネルの、前記外部メモリから次に読出すべきページの実ページアドレスを記憶する次ページアドレス記憶部と、
各チャンネルの発音開始時に、最初に転送すべきページの実ページアドレスを前記次ページアドレス記憶部に書き込む、第１回目次ページアドレス設定手段と、
前記転送待ちキューから、前記取り込まれたチャンネル番号を先入れ先出しの態様で順次取り出し、前記次ページアドレス記憶部に設定されている当該チャンネルで次に読出すべき実ページアドレスのページのサンプルデータを、前記外部メモリからバースト読出して、前記波形メモリの該チャンネル番号の示すチャンネルのバッファ領域に書込む、転送部と、
各チャンネルごとに、前記転送部により次ページのサンプルデータを前記外部メモリから読出したとき、読出したページに含まれる次ページの実ページアドレスを、前記次ページアドレス記憶部に上書きする次ページアドレス設定部と、
各チャンネルごとに、前記振幅制御情報に応じて、前記読出部が読出したサンプルデータの振幅を制御し、楽音波形のサンプルデータを形成する、振幅制御部と
を備え、
前記制御部は、
入力された新たな楽音の音高と発音開始を示す演奏情報に応じて、前記複数のチャンネルの１つを割り当て、前記制御レジスタの該チャンネルの領域に、該音高に応じた前記速度情報、前記先頭波形アドレス、および前記振幅制御情報を設定し、さらに、該チャンネルの前記発音開始を指示する
ことを特徴とする楽音生成装置。
【請求項２】
請求項１に記載の楽音生成装置において、
前記楽音生成部は、各波形データごとに、前記仮想アドレス空間上の先頭ページが再生されている間に次に読出すべき第２ページの仮想ページアドレス（ＶＰアドレス）を実ページアドレスに変換するためのアドレス変換テーブルを備え、
前記制御部は、前記制御レジスタの割り当てたチャンネルの領域に、前記演奏情報に応じて、発音に使用する波形データの前記外部メモリ中の位置を示す波形位置情報を設定するものであり、
前記第１回目次ページアドレス設定手段は、発音開始時に、前記波形位置情報により前記アドレス変換テーブルを参照して、最初に転送すべき第２ページの実ページアドレスを取得し、前記次ページアドレス記憶部に書き込むものである
ことを特徴とする楽音生成装置。
【請求項３】
請求項１に記載の楽音生成装置において、
前記制御部が、各波形データごとに、前記外部メモリから最初に読出してバッファ領域に転送すべき第２ページの実ページアドレスを保持しており、発音開始時に、該第２ページの実ページアドレスを前記第１回目次ページアドレス設定手段に供給し、前記第１回目次ページアドレス設定手段は、該供給された実ページアドレスを前記次ページアドレス記憶部に書き込む
ことを特徴とする楽音生成装置。
【請求項４】
請求項１から３の何れか１つに記載の楽音生成装置において、
前記楽音生成部は、
前記転送部により前記外部メモリから読出したページのデータに対して、エラー訂正コードを利用して該ページのサンプルデータのエラーの検出を行い、エラーの有無およびエラーが有った場合にはエラー訂正の可否を決定すると共に、検出されたエラーが訂正可である場合はその訂正を実行する、エラー訂正部と、
前記エラー訂正部により訂正可なエラーが検出されたとき、その旨およびエラーが発生した前記外部メモリ上のページを特定する情報を含むエラー通知を前記制御部に送るエラー検出部と
を備え、
前記制御部は、
（１）前記訂正可のエラーが発生した当該ページを特定する情報を代替待ちページとして記録し、
（２）前記代替待ちページとして記録されているページがあるとき、自動的に起動されたバックグラウンド処理で、または、ユーザの指示により起動された処理で、前記外部メモリ上に代替ページを確保し、前記代替待ちページとして記録されているページのデータを読出し、該読出しでエラーが発生した場合はエラー訂正を行って適正なデータを求め、該適正なデータを前記代替ページに格納して、エラーが発生したページを置き換え、
（３）前記代替待ちページの前ページに含まれる次ページの実ページアドレスを、前記代替ページの実ページアドレスに修正する
ことを特徴とする楽音生成装置。
【請求項５】
請求項１から４の何れか１つに記載の楽音生成装置において、
前記外部メモリは、独立した集積回路で構成されるＮＡＮＤ型フラッシュメモリであることを特徴とする楽音生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、波形メモリ方式の楽音生成装置に関し、特に、ＮＡＮＤ型フラッシュメモリ等に波形データを格納しておき、そこから波形データをバッファ経由で波形メモリに読出しつつ再生を行う楽音生成装置に関する。
【背景技術】
【０００２】
従来より、ハードディスク（ＨＤ）に波形データを格納しておき、該ＨＤからバッファに波形データを読出しつつ、該バッファから波形データを波形メモリに読出して、再生する楽音生成装置が知られている（例えば、特許文献１，２）。このような楽音生成装置では、発音指示があってからＨＤ上の波形データをバッファ経由で波形メモリに読出して再生するのでは発音開始に遅れがでてしまうので、装置の電源オン時に、予め各波形データの先頭部を波形メモリ上に読込むようにしている。そして、発音指示があったとき、直ちに波形メモリ上の当該先頭部のデータの再生を開始し、その先頭部の再生を行っている間に、引き続く波形データをＨＤからバッファ経由で波形メモリに読出す。先頭部の再生が終わった後は、前記波形メモリに読出してある波形データの再生を行いつつ、その再生の間に、次にさらに引き続く波形データをＨＤからバッファ経由で波形メモリに読出す。このような処理を繰り返して、再生を続ける。これにより、発音指示があったときに遅れなく発音開始することができる。
【０００３】
上記の方式では、バッファに読込まれた１クラスタ分の波形データ（サンプルデータ）が波形メモリに読出されるごとに（すなわち、バッファが空になると）、ＣＰＵに対して転送要求割込みが発生する。該転送要求割込みに応じて、ＣＰＵは、次に読出すべきＨＤ上の１クラスタを特定して、そのクラスタのＨＤからバッファへの転送を転送部に指示する。従って、ＣＰＵの割り込み処理は必須である。
【０００４】
また、バースト転送を利用した波形メモリ音源として、下記特許文献３に記載の技術がある。これは、波形メモリから読出した波形サンプルを一旦バッファメモリに記憶し、バッファメモリから必要な波形サンプルを選択的に読出して楽音生成するものである。波形メモリからバッファメモリへの波形サンプルの読出しは、複数サンプル単位でバースト転送する。バースト転送することにより、アクセス時間を短縮することができる。
【０００５】
一方、近年ではＮＡＮＤ型フラッシュメモリの大容量化およびコスト低下が進み、種々の装置で、大容量のデータ格納手段として、ＨＤとともにＮＡＮＤ型フラッシュメモリを使用する試みが為されている。ＮＡＮＤ型フラッシュメモリは、ページ（ＨＤのクラスタに相当する）の頭出しに時間がかかるが、読出しが始まった後のデータ転送速度は速い。また、エラー訂正コードによるエラー訂正が必須である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２６７１７４７号公報
【特許文献２】特許第４０８９６８７号公報
【特許文献３】特許第３１６３９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のＨＤを利用した楽音生成装置では、ＨＤのアクセス速度がボトルネックとなり、同時に再生できるｃｈ数が制限されるという問題がある。楽音生成装置では、できる限り同時発音ｃｈ数を増やすことが望まれる。そこで、ＨＤを利用する代わりにＮＡＮＤ型フラッシュメモリを使用することが考えられる。ＮＡＮＤ型フラッシュメモリは、ＨＤと比べてデータの転送速度が格段に速いため、読出しの単位であるクラスタ（ページ）のサイズを大幅に小さくする（１０分の１以下）ことができる。しかしながら、その場合、ＣＰＵに対する転送要求の割込みの頻度が大幅に増加してしまう（１０倍以上）。すなわち、音源で使用する波形データを格納するメモリとしてＮＡＮＤ型フラッシュメモリを使用する場合は、音源を制御するＣＰＵによる制御が必要とされる頻度が高くなり、ＣＰＵにかかる負荷が大きく増加するという問題がある。そのため、従来のＨＤを利用した楽音生成装置ではＣＰＵが処理プログラムに従って行っていた制御を、ＮＡＮＤ型フラッシュメモリを利用した楽音生成装置では音源のハードウェアに実行させ、ＣＰＵ負荷を下げることが望まれる。
【０００８】
また、ＮＡＮＤ型フラッシュメモリでは、他のメモリと比べて読出されるデータにエラーが含まれる可能性が高く、そのためデータを記憶する際には、ページ毎に適宜エラー訂正コードを付与して記憶することが必須である。ＨＤにも同様のデータエラーの問題があったが、従来のＨＤを利用した楽音生成装置では、ＨＤ装置内のプロセッサのファームウェア処理としてデータ訂正が自動的に行われていた。そのため、その介在するプロセッサのためにアドレスを供給してからデータが得られるまでの時間遅れを生じていた。ＮＡＮＤ型フラッシュメモリを利用した楽音生成装置では、アクセスの高速化のため、ＮＡＮＤ型フラッシュメモリのＬＳＩと楽音生成装置のＬＳＩとの間にプロセッサを介在させないことが望まれる。その場合、ＮＡＮＤ型フラッシュメモリ自身ではデータ訂正を行うことができない。
【０００９】
現在、市場には、ＮＡＮＤ型フラッシュメモリに波形データを記憶した音源（楽音発生装置）があるが、その音源では、音源の楽音生成動作に先立って、ＣＰＵが、予めＮＡＮＤ型フラッシュメモリから必要とされる波形データを全て読出し、エラー訂正して、ＲＡＭで構成される波形メモリに記憶するようになっている。この場合、波形データのサイズは、ＲＡＭで構成される波形メモリのサイズにより制限されてしまうという問題がある。
【００１０】
本発明は、ＮＡＮＤ型フラッシュメモリ等に波形データを格納しておき、そこから波形データをバッファ経由で波形メモリに読出しつつ再生を行う楽音生成装置において、ＣＰＵにかかる負荷を軽減することを目的とする。また、本発明は、ＮＡＮＤ型フラッシュメモリ等から読出したデータについてのエラー検出と訂正を、ＣＰＵやフラッシュメモリ内のプロセッサを利用することなく、楽音生成部内のハードウェアを利用して実現できるようにするとともに、エラーが発生したページを新たなページに代替させることができるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１に係る発明は、制御部（ＣＰＵ）への割り込み無しで、ＮＡＮＤ型フラッシュメモリ等に格納した波形データのページ単位での読出しを行い、波形メモリのバッファにサンプル補充ができるようにしたことを特徴とする。まず、外部メモリ（ＮＡＮＤ型フラッシュメモリ等）に、複数の各波形データの一連のサンプルデータを、仮想アドレス空間で連続する複数のページに、各ページデータが次ページへのポインタである実ページアドレスを含むようにして、記憶しておく。制御部が発音開始を指示する際には、制御レジスタに、発音する楽音の音高に応じた速度情報、発音に使用する波形データの波形メモリの先頭波形領域を指す先頭波形アドレス、および発音する楽音の振幅を規定する振幅制御情報を設定する。発音開始時には、最初に転送すべきページの実ページアドレスを次ページアドレス記憶部に書き込む。また、発音開始時には、予め波形データの先頭ページのサンプルデータを記憶した先頭波形領域からサンプルデータを読出し、その先頭ページの読出しが終了する前に、次に読出すべきページをバッファに読込んでおく。次に読出すべきページの実ページアドレスは、次ページアドレス設定部が、前記外部メモリからページを読出したときに該ページに含まれる次ページの実ページアドレスを次ページアドレス記憶部に上書きするので、転送部は、この次ページアドレス記憶部の実ページアドレスで、次に読出すべきページのデータを読出すことができる。以後は、同様にしてページ内の次ページへのポインタを辿り、１ページ分の読出しが終了するごとに次のページのサンプルをバッファに読込みつつ再生を続ける。
【００１２】
請求項２に係る発明は、請求項１において、前記楽音生成部は、各波形データごとに、前記仮想アドレス空間上の先頭ページが再生されている間に次に読出すべき第２ページの仮想ページアドレス（ＶＰアドレス）を実ページアドレスに変換するためのアドレス変換テーブルを備え、前記制御部は、前記制御レジスタの割り当てたチャンネルの領域に、前記演奏情報に応じて、発音に使用する波形データの前記外部メモリ中の位置を示す波形位置情報を設定するものであり、前記第１回目次ページアドレス設定手段は、発音開始時に、前記波形位置情報により前記アドレス変換テーブルを参照して、最初に転送すべき第２ページの実ページアドレスを取得し、前記次ページアドレス記憶部に書き込むものであることを特徴とする。
【００１３】
請求項３に係る発明は、請求項１において、前記制御部が、各波形データごとに、前記外部メモリから最初に読出してバッファ領域に転送すべき第２ページの実ページアドレスを保持しており、発音開始時に、該第２ページの実ページアドレスを前記第１回目次ページアドレス設定手段に供給し、前記第１回目次ページアドレス設定手段は、該供給された実ページアドレスを前記次ページアドレス記憶部に書き込むことを特徴とする。
【００１４】
請求項４に係る発明は、請求項１〜３において、楽音生成部は、転送部により外部メモリから読出したページのデータに対して、エラー訂正コードを利用して該ページのサンプルデータのエラーの検出を行い、エラーの有無およびエラーが有った場合にはエラー訂正の可否を決定すると共に、検出されたエラーが訂正可である場合はその訂正を実行する、エラー訂正部と、エラー訂正部により訂正可なエラーが検出されたとき、その旨およびエラーが発生した外部メモリ上のページを特定する情報を含むエラー通知を制御部に送るエラー検出部とを備え、制御部は、（１）前記訂正可のエラーが発生した当該ページを特定する情報を代替待ちページとして記録し、（２）前記代替待ちページとして記録されているページがあるとき、自動的に起動されたバックグラウンド処理で、または、ユーザの指示により起動された処理で、前記外部メモリ上に代替ページを確保し、前記代替待ちページとして記録されているページのデータを読出し、該読出しでエラーが発生した場合はエラー訂正を行って適正なデータを求め、該適正なデータを前記代替ページに格納して、エラーが発生したページを置き換え、（３）前記代替待ちページの前ページに含まれる次ページの実ページアドレスを、前記代替ページの実ページアドレスに修正することを特徴とする。
【００１５】
請求項５に係る発明は、請求項１〜４において、前記外部メモリは、独立した集積回路で構成されるＮＡＮＤ型フラッシュメモリであることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、外部メモリに、複数の各波形データの一連のサンプルデータを、各ページデータが次ページへのポインタである実ページアドレスを含むようにして記憶しているので、該ポインタを辿ることで、次に読出すべきページの実アドレスを取得でき、これにより、転送部は、転送待ちキューからの指示に応じて、該次ページアドレスで外部メモリからページを読出して波形メモリに転送できる。従って、制御部（ＣＰＵ）に対する割り込みを行うことなしに、ハードウエアにより自動的に転送が行われ、制御部の負荷は軽減できる。
【００１７】
また、エラー訂正部やエラー検出部を設けることで、波形データの読出しエラーの検出と訂正可であった場合の訂正が自動で行われるので、そのようなエラーがあった場合でも楽音生成を継続することができる。また、訂正可のエラーが発生した場合、該エラーがあったページの記録をとっておき、後の適宜のタイミングでエラーページの代替を行うことができる。この場合、次ページへのポインタでページがリンクされているので、エラーページの前ページに含まれている次ページへのポインタを書き替えることで、エラーページの代替ページへの置き換えは容易に行うことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係る楽音信号生成システムの全体構成図
【図２】ＮＡＮＤ型フラッシュメモリのメモリマップを示す図
【図３】波形メモリのメモリマップを示す図
【図４】波形データの転送のタイミングを説明するためのタイムチャート図
【図５】音源部と転送制御部に関する詳細図
【図６】発音開始以降の各種アドレスの時間変化（１ｃｈ分）を示す図
【図７】メイン処理およびノートオンイベント処理のフローチャート
【図８】転送指示発生氏のＶＰアドレス発生部の処理およびＢ→Ｍ転送部の処理のフローチャート
【図９】代替待ちページの登録がある場合の処理のフローチャート
【発明を実施するための形態】
【００１９】
以下、図面を用いて本発明の実施の形態を説明する。
【００２０】
図１は、本発明の実施の形態に係る楽音生成装置の全体構成を示す。この楽音生成装置は、楽器用ＬＳＩ（Large Scale Integrated circuit）１００にメモリ等の所定の周辺機器を接続して構成される。
【００２１】
ＣＰＵ１０１は、装置全体の動作を制御する処理装置である。メモリＩ／Ｆ（インターフェース）１０２は、本ＬＳＩ１００にＮＯＲ型フラッシュメモリ１２１を接続するためのインターフェースである。ＮＯＲ型フラッシュメモリ１２１は、ＣＰＵ１０１が実行するプログラムや音色データなどの各種のデータを格納した書き替え可能な不揮発性メモリである。ランダムアクセスメモリ（ＲＡＭ）１０３は、各種ワーク領域に使用する揮発性メモリである。表示器Ｉ／Ｆ１０４、パラレルＩ／Ｆ１０５、およびシリアルＩ／Ｆ１０６は、それぞれ、表示器１２２、操作子１２３、およびＭＩＤＩ  Ｉ／Ｏ１２４を接続するためのインターフェースである。表示器１２２は、各種の情報を表示するためのディスプレイである。操作子１２３は、外部パネル等に設けられた各種のスイッチなどの操作子である。ＭＩＤＩ  Ｉ／Ｏ１２４は、各種のＭＩＤＩ機器と接続しＭＩＤＩ信号を入出力するインターフェースである。
【００２２】
メモリＩ／Ｆ１０７は、ＮＡＮＤ型フラッシュメモリ１２５にアクセスするためのインターフェースである。ＮＡＮＤ型フラッシュメモリ１２５は、複数の波形データ等を格納した書き替え可能な不揮発性メモリであり、ページ単位でデータが読み書きされる。１ページのページデータの容量は２１１２バイトである。ページ単位のデータ読出しは、バースト転送で高速に行うことができる。ＮＡＮＤ型フラッシュメモリ１２５のメモリマップは、図２で詳しく説明する。転送バッファ１０９は、ＮＡＮＤ型フラッシュメモリ１２５から波形メモリ１２６への波形データ転送用のバッファメモリであり、同時読み書きが可能なデュアルポート（２−ｐｏｒｔ）の半導体メモリにより構成されている。その容量は、１ページ分２１１２バイトである。転送バッファ１０９は、スタティックＲＡＭ（ＳＲＡＭ）で構成されている。波形メモリ１２６は、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）で構成されている。波形メモリ１２６のメモリマップは、図３で詳しく説明する。メモリＩ／Ｆ１１２は、波形メモリ１２６にアクセスするためのインターフェースである。なお、転送バッファ１０９と波形メモリ１２６とは、ランダムアクセス（個別にアドレスを指定して行う読出しまたは書込み）を、フラッシュメモリ１２５に比較して、極めて高速に行うことができる。さらに、連続したアドレスへのアクセスは、バーストモードを用いて高速化することができる。
【００２３】
Ｆ→Ｂ転送部１０８は、ＮＡＮＤ型フラッシュメモリ１２５から転送バッファ１０９にページデータをページ単位で転送する処理を行う。Ｂ→Ｍ転送部１１０は、転送バッファ１０９から波形メモリ１２６に波形データを（１ページ分を所定回数に分けて）転送する処理を行う。エラー訂正部１１１は、フラッシュメモリ１２５から読出したデータに対するエラー検出や訂正等の処理を行う。これらの転送部１０８，１１０およびエラー訂正部１１１は、転送制御部１１３による制御の元で動作する。転送の動作のタイミングについては、図４などで詳しく説明する。転送制御部１１３は、フラッシュメモリ１２５から転送バッファ１０９への転送と転送バッファ１０９から波形メモリ１２６への転送とを制御する。複数の転送要求が生じた場合は、（１度に１ページしか転送できないので）先着順に１ページずつ転送するよう制御する。なお、現在入手できるＮＡＮＤ型フラッシュメモリのデータ幅は８ビットに限定される。そのため、Ｆ→Ｂ転送部１０８は、ＮＡＮＤ型フラッシュメモリ１２５の連続する２アドレスから読出した２データをつなげて１６ビットのデータに変換し、データ幅が１６ビットである転送バッファ１０９に書込む。また、波形メモリ１２６のデータ幅も１６ビットであり、各アドレスに１６ビットのデータが記憶される。従って、Ｂ→Ｍ転送部１１０は、上記Ｆ→Ｂ転送部１０８で行っているような変換を行わなくてよい。
【００２４】
音源１１４は、複数の発音ｃｈ（ここでは１２８ｃｈとする）を備えており、各発音ｃｈ毎に読出しアドレスを生成して波形メモリ１２６から波形データ（波形サンプルデータ）を読出し、読出された波形データに対してエンベロープ付与を行い、各発音ｃｈ毎の楽音信号を生成する。さらに、音源１１４は、生成された複数ｃｈの楽音信号を混合し、混合された楽音信号に対してリバーブなどの効果を付与する。音源１１４から出力された楽音信号は、ＤＡＣ（ディジタルアナログ変換器）１２７によりアナログ音響信号に変換され、サウンドシステム１２８により放音される。１１５は各部を相互に接続するバスラインであり、コントロールバス、データバス、およびアドレスバスを総称したものである。
【００２５】
図２を参照して、ＮＡＮＤ型フラッシュメモリ１２５のメモリマップを説明する。ＮＡＮＤ型フラッシュメモリは、マスクＲＯＭよりもコストが安く、ページの頭出し（ここで言う「頭出し」とは、フラッシュメモリにリードコマンドとリードアドレスが与えられてからデータ読出しが開始されるまでの時間区間あるいはそこで行われる処理を指すものとする）に時間が掛かるが、読出しが始まった後のデータ転送速度は速い（バースト転送）という特徴を有する。ＮＡＮＤ型フラッシュメモリ１２５の読出しと書込みはページ単位で行われる。
【００２６】
フラッシュメモリ１２５上の１ページのページデータ２１１２バイトは、２０４８バイトをデータエリアに、６４バイトを付加情報に、それぞれ利用する。付加情報はエラー訂正コードを含む。データエリアに２０４８バイトのデータを書込む際には、その書込みデータから所定の演算によりエラー訂正コードを生成し、付加情報内に書込む。ページデータの読出し時には、付加情報内のエラー訂正コードにより、データエリアから読出した２０４８バイトのデータにエラーが無いかチェックすることができ、さらにエラーがある場合には（エラーのビット数が所定数以下であれば）訂正処理を行うことができる。なお、エラー訂正コードの生成には、ハミング符号法やＢＣＨ法等の周知の方法に基づく生成演算式を用いればよい。一般的に、各生成演算式毎に、エラーが生じた場合のエラーの状態（何ビットのエラーか、訂正できるか）を算出するエラー検出演算式、および、訂正できる場合の訂正すべきビット位置を算出するエラー訂正演算式が決まっている。演算式毎に、βビットのエラー訂正コードにより、データエリア内のαバイトのデータのうちの最大何ビットのエラーまで訂正できるかが決まっている。
【００２７】
図２（ａ）は、フラッシュメモリ１２５の全体のメモリマップを示す。フラッシュメモリ１２５は、実ページアドレスでアクセスできる複数の実ページを備え、それらのページにデータを格納する。フラッシュメモリ１２５には、予めアドレス変換テーブル（Ａ変換ＴＢＬ）２０１と波形データ（広義）２０２を格納しておく。アドレス変換テーブル２０１と波形データ２０２とはページを分けて格納するものとする。
【００２８】
図２（ａ）の波形データ（広義）２０２の実ページアドレス空間に対し、実ページアドレスと仮想ページアドレスが１対１に対応するように仮想ページアドレス空間を設定する。ここでは実ページアドレス空間と仮想ページアドレス空間は、何れも２０ビットのページアドレスでアクセスできる範囲を想定するものとする。
【００２９】
図２（ｂ）は、波形データの仮想アドレス空間上でのデータ構造を示す。波形データ２０２の領域には、複数の波形データＷａｖｅ１，Ｗａｖｅ２，…が格納されている。各波形データは、例えば図中のＷａｖｅ２に示すように、仮想ページアドレスで連続する複数のページＷ２（０）＋Ｉｎｆ，Ｗ２（１）＋Ｉｎｆ，…に順に格納されている。各波形データＷａｖｅｘ（ｘは１，２，…）の仮想ページアドレスで連続する各ページのデータエリア、あるいは該データエリアに記憶する波形サンプルデータ（１０２４ワード）を、Ｗｘ（０），Ｗｘ（１），…と表記する。１ページデータは、そのようなデータエリアの波形サンプルデータに付加情報Ｉｎｆ（６４バイト）を付加したものであるので、各データエリアの記号に「＋Ｉｎｆ」を付けて表記した。上述したとおり、付加情報Ｉｎｆはエラー訂正コードを含む。各波形データＷａｖｅｘは仮想ページアドレスで連続する複数のページに格納されているので、例えばＷａｖｅ２を読出す場合、先頭のページＷ２（０）＋Ｉｎｆの仮想ページアドレスＰが与えられれば、引き続く各ページＷ２（１）＋Ｉｎｆ，Ｗ２（２）＋Ｉｎｆ，…は、それぞれ仮想ページアドレスＰ＋１，Ｐ＋２，…で読出せる。なお、図２（ｂ）では、各波形データＷａｖｅ１，Ｗａｖｅ２，…の間に空きページが無いかのように図示したが、空きページがあってもよい。１つの波形データが仮想ページアドレス上で連続していればよい。図２（ｂ）中、ＷＡは、波形データの第２仮想ページＷｘ（１）＋Ｉｎｆの仮想ページアドレスを設定する制御レジスタの１つである（後に詳しく説明する）。
【００３０】
上記では「仮想ページアドレスで各ページを読出せる」と説明したが、実際には、与えられた仮想ページアドレスを実ページアドレスに変換して、フラッシュメモリ１２５からページを読出す必要がある。本実施形態のＬＳＩ１００では、仮想ページアドレスと実ページアドレスとの変換方式として、モード１と２の２方式のうちの何れかを指定できる。
【００３１】
モード１について説明する。モード１では、図２（ｃ）に示すように、連続する１６ページを１ブロックとするブロックの概念を導入する。図２（ａ）の波形データ２０２の領域は、ブロック単位に分けて使用するものとし、１ブロック内では実ページアドレスの昇順に波形データを連続して格納する。例えば、１つの波形データＷａｖｅ２をフラッシュメモリ１２５に格納する際には、該波形データを格納するのに必要な数のブロックをフラッシュメモリ１２５内に確保し、第１のブロックに先頭ページＷ２（０）＋ＩｎｆからＷ２（１５）＋Ｉｎｆを順に格納し、次のブロックにＷ２（１６）＋ＩｎｆからＷ２（３１）＋Ｉｎｆを格納し、…というように格納すればよい。別の波形データ（例えば、Ｗａｖｅ１とＷａｖｅ２）は異なるブロックに格納するものとする。なお、ブロックは、ブロック同士の境界が１６ページ単位でバウンダリ調整されるように設定する。
【００３２】
図２（ｄ）に、モード１における仮想ページアドレスから実ページアドレスへの変換の具体的な手法を示す。２０ビットの仮想ページアドレス（ページ番号）２２１が与えられたとする。該アドレス２２１の上位１６ビットはブロックを特定するための仮想ブロック番号であり、下位４ビットはそのブロック内の１６ページの中から１つのページを特定するデータである。上位１６ビットの仮想ブロック番号は、アドレス変換テーブル２２２を用いて、実ページアドレス２２３の上位１６ビットに変換される。仮想ページアドレス２２１の下位４ビットは、ブロック内の１６ページの中から１つのページを特定するデータとして、そのまま実ページアドレス２２３の下位４ビットとされる。以上のようにして得た実ページアドレス２２３によりフラッシュメモリ１２５をアクセスして、当該仮想ページアドレス２２１のページデータを読出す。
【００３３】
アドレス変換テーブル２２２は、システム立ち上げ時にフラッシュメモリ１２５の領域２０１から読出して波形メモリ１２６に設定し、利用する。図２（ａ）では単に「アドレス変換テーブル２０１」と表記したが、実際には、この領域２０１の複数ページのデータエリア内のデータを合せることにより有意なアドレス変換テーブルが得られる。領域２０１の複数ページのデータエリアには、予めフラッシュメモリ１２５に波形データを格納したときに、仮想ブロック番号と実ブロック番号との対応関係を全て登録しておく。領域２０１を構成する複数ページの実ページアドレスは予め決めておく。なお、図２（ｂ）の付加情報Ｉｎｆ中の「次ページへのポインタＮＰ」は、次のモード２において利用するデータであり、モード１では不要である。
【００３４】
モード２について説明する。モード２の場合は、波形データをフラッシュメモリ１２５に格納する際に、図２（ｂ）に示すように、各ページデータの付加情報Ｉｎｆ内に３バイトの「次ページへのポインタＮＰ」を設定する。この「次ページへのポインタＮＰ」には、波形データの進行順で次ページ（当該ページの次の波形サンプルが格納されているページ）の実ページアドレスを設定しておく。図２（ｅ）に、Ｗａｖｅ２のモード２における実アドレス上のページのデータ構造例を示す。仮想ページの先頭ページであるＷ２（０）＋Ｉｎｆの実ページアドレスが与えられれば、該ページデータ中の「次ページへのポインタＮＰ」を参照して次の仮想ページＷ２（１）＋Ｉｎｆにアクセスでき、以下同様にしてページを辿ることができ、波形データを順に読出すことができる。
【００３５】
なお、詳しくは後述するが、モード１，２の何れの場合も各波形データＷａｖｅ１，２，…の全ての先頭ページＷｘ（０）がシステム立上げ時に波形メモリ１２６のプリロード領域に設定されているので、モード２の場合、第２仮想ページＷｘ（１）＋Ｉｎｆの仮想ページアドレスＷＡから開始して次ページへのポインタＮＰによりページを辿ることになる。最初に与えられた第２仮想ページアドレスＷＡから実ページアドレスへの変換は、波形メモリ１２６上に読出されているアドレス変換テーブルを利用して行う。逆に言えば、アドレス変換テーブルには、各波形データＷａｖｅ１，Ｗａｖｅ２，…の第２仮想ページアドレスと、その第２仮想ページアドレスを変換した実ページアドレスとを対応付けて格納しておけばよい。図２（ｄ）で説明したモード１の場合のアドレス変換テーブルは、アドレスとして１６ビットの仮想ブロック番号を与えると、そのアドレスに記憶されている１６ビットの実ブロック番号を出力するテーブルであるが、モード２の場合は、各波形データＷａｖｅ１，Ｗａｖｅ２，…の２０ビットの第２仮想ページアドレスを与えると、アドレス変換テーブルに記憶されている第２仮想ページアドレス中から一致する第２仮想ページアドレスをサーチして、一致する第２仮想ページアドレスが見つかれば、その第２仮想ページアドレスに対応付けられ記憶されている２０ビットの実ページアドレスを出力するテーブルである。図２（ａ）の領域２０１には、予めフラッシュメモリ１２５に波形データを格納したときに、上記第２仮想ページアドレスと実ページアドレスとの対応関係を全て登録しておく。
【００３６】
上記モード１および２では、何れも１つの波形が仮想アドレス上で連続した複数のページに記憶されているので、どのページを読出すかページ毎に指示しなくてもよく、ｃｈ毎に読出し開始時に読出し対象の波形データの最初の仮想ページアドレスを指示するだけで済む。なお、ＮＡＮＤ型フラッシュメモリ１２５は、８ビット幅でデータを読み書きするものとする。
【００３７】
図３は、波形メモリ１２６のメモリマップを示す。波形メモリ１２６には、アドレス変換テーブル領域３０１、プリロード領域３０２、バッファ領域３０３、および次ページアドレス領域（ＮＰＡ）３０４が設けられている。アドレス変換テーブル領域３０１には、システム立ち上げ時に、図２（ａ）のフラッシュメモリ１２５の所定領域２０１から読出したアドレス変換テーブルを設定する。プリロード領域３０２は、図２（ｂ）に示したＮＡＮＤ型フラッシュメモリ１２５に記憶されている波形データＷａｖｅ１，２，…の数分の各先頭ページの波形データＷ１（０），Ｗ２（０），Ｗ３（０），…を記憶する領域である。プリロード領域３０２への各先頭ページの波形データの記憶は、システム立ち上げ時に行われる。バッファ領域３０３には、発音ｃｈ数×２のバッファ、すなわち各発音ｃｈ毎の２つのバッファ（１つのバッファの大きさは１ページ＝１０２４ワードである）が設けられている。発音ｃｈｉ（ｉは１，２，…，１２８）に対応する領域をＢｉａ，Ｂｉｂで表す。Ｂｉａ，Ｂｉｂは、波形メモリ１２６のアドレス空間内に連続して配置される。
【００３８】
なお、「ページ」および「ページデータ」の語は、フラッシュメモリ１２５および転送バッファ１０９上では、付加情報Ｉｎｆを含む２１１２バイトのページおよび該ページ中のデータを示すものであるが、波形メモリ１２６上では、付加情報Ｉｎｆを含まない１０２４ワードのデータエリアおよび該データエリア中の波形サンプルデータを示すものとする。要するに、フラッシュメモリ１２５や転送バッファ１０９上の「ページ」は読出しや書込みを行うときの単位に注目しており、フラッシュメモリ１２５から読出されエラー訂正され波形メモリ１２６に設定されたときには１ページが１０２４ワードの波形サンプルデータとしてとらえているものである。
【００３９】
システム立ち上げ時に実行する、波形メモリ１２６のアドレス変換テーブル領域３０１へのアドレス変換テーブルの設定、および、各波形データの先頭ページＷｘ（０）のプリロード領域３０２への設定は、主として転送制御部１１３の初期設定処理により実行される。このプリロード領域３０２の初期設定処理を簡易に行うために、各波形データＷａｖｅ１，２，…のそれぞれの先頭ページをフラッシュメモリ１２５の実ページアドレスで連続する所定領域にまとめて記憶するようにしてもよい。
【００４０】
図３（ａ）中、ＰＡは、音源１１４が波形メモリ１２６から波形サンプルを読出す際、最初に読出すべきプリロード領域３０２中の先頭ページの読出しアドレスを設定する制御レジスタの１つである。この図では第２ｃｈで波形データＷａｖｅ３の再生が指定されたケースを示しており、ＰＡで波形メモリ１２６上のその先頭ページの波形データＷ３（０）が指定されている。矢印３１１は、音源１１４が当該先頭ページの波形サンプルを読出す際の読出しアドレス（ピッチカウンタ）の進行方向を示す。ＢＡは、前記プリロード領域３０２の先頭ページを読み終えた後、バッファ領域３０３中のどのバッファから波形サンプルを読出すかを示す読出しアドレスを設定する制御レジスタの１つである。この図では第２ｃｈでの再生が指定されているので、ページＷ３（０）を読み終えた時点の初期値として、ＢＡには、第２ｃｈが使用するバッファＢ２ａ，Ｂ２ｂの先頭アドレスが設定される。矢印３１２は、読出しアドレス（ピッチカウンタ）の進行方向を示す。矢印３１２のようにバッファＢ２ａとＢ２ｂを読出した後、引き続きバッファの先頭に戻って矢印３１３，３１４のように読出しを続ける。このような波形メモリの読出しを行うためには、プリロード領域Ｗ３（０）の読出しを行っている間に、次に読出すべき波形サンプルデータをバッファＢ２ａに格納し、さらにバッファＢ２ａを読出している間にバッファＢ２ｂに波形サンプルデータを格納し、次にバッファＢ２ｂを読出している間にバッファＢ２ａに波形サンプルデータを格納し、…というようにバッファＢ２ａとＢ２ｂとを交互に使用して再生を続ける。なお、各ｃｈのバッファ数は３以上であってもよい。また、波形メモリ１２６は、１６ビット幅でデータを読み書きするものとする。
【００４１】
次ページアドレス領域（ＮＰＡ）３０４には、各発音ｃｈの次ページアドレスを格納する。図３（ｂ）にＮＰＡ３０４のマップを示す。ＮＰＡｉが、第ｉｃｈの次ページアドレスを示す。次ページアドレスＮＰＡｉとは、第ｉｃｈについて、次にフラッシュメモリ１２５から波形メモリ１２６のバッファ領域に読出すべきページの、フラッシュメモリ１２５上の実ページアドレスである。次ページアドレスＮＰＡｉの設定のタイミングや設定データの詳細については後に詳しく説明する。
【００４２】
図４は、転送制御部１１３の制御の元で転送部１０８，１１０が実行する波形データの転送のタイミングを説明するためのタイムチャートである。矢印ｔの向きに時間が進むものとする。複数の縦線４０１はサンプリングクロックの発生タイミングを示し、隣り合う縦線４０１の間の区間が１サンプリング周期（以下、１ＤＡＣという）を示している。本実施形態では、１ＤＡＣは２２．６７ｎ秒である。「ＮＡＮＤ型フラッシュ→転送バッファ」と記載したタイムチャートは、Ｆ→Ｂ転送部１０８によりＮＡＮＤ型フラッシュメモリ１２５から転送バッファ１０９に１ページ分の波形サンプルと付加情報を転送する処理のタイムチャートである。「転送バッファ→波形メモリ」と記載したタイムチャートは、Ｂ→Ｍ転送部１１０により転送バッファ１０９から波形メモリ１２６のバッファ領域３０３（その中の指定したｃｈに対応するバッファ）に、１ページ分の波形サンプルを転送する処理、および、音源１１４が波形メモリ１２６から波形サンプルを読出す処理のタイムチャートである。
【００４３】
４１１は、ＮＡＮＤ型フラッシュメモリ１２５に実ページアドレスを供給し始めてから、同メモリ１２５内にてその実ページアドレスが示すページのデータの出力準備が完了するまでの、ページ頭出しを行っている期間を示す。頭出し４１１の後、４１２，４１３に示すように、１ページ分のデータ（データエリアの２０４８バイトおよび付加情報Ｉｎｆの６４バイト）がページ読出し（バースト転送）される。本実施形態では、４１１〜４１３に示すように、４ＤＡＣでＮＡＮＤ型フラッシュメモリ１２５から１ページのデータおよび付加情報を読出して転送バッファ１０９に書込むことができる。この４ＤＡＣという転送時間は、ＮＡＮＤ型フラッシュメモリ１２５のページ読出し（バースト転送）に関する仕様に基づいて決まるものである。
【００４４】
４２１は、音源１１４が楽音生成のために波形メモリ１２６から１２８ｃｈ分の波形サンプルを読出す期間である。４２２は、転送バッファ１０９上のデータエリアの１ページ分の波形サンプルを波形メモリ１２６の対応するｃｈのバッファに転送する期間を示す。この転送は、ＬＳＩ１００の内部レジスタからＤＲＡＭへのデータ転送であり、バーストモードによる高速なデータ転送を行うものとする。４２３は、波形メモリ１２６のリフレッシュを行う期間である。リフレッシュ４２３の区間の時間長さは、波形メモリ１２６の仕様により決まる。１ＤＡＣからリフレッシュ４２３の区間を除いた区間を、波形サンプル読出し区間４２１とバースト転送区間４２２とで分けあう。
【００４５】
１ＤＡＣ中の波形サンプル読出し区間４２１の時間長さは、本装置で何ｃｈの楽音生成を行うか、および、各ｃｈで何点補間を行うかという要求仕様、並びに、音源１１４が時分割で各ｃｈの波形サンプルを波形メモリ１２６から読出すときにどれ程の時間分解能で１ＤＡＣ中に何サンプル読出し可能かという仕様に基づいて、設計者が決める。１ＤＡＣ中のバースト転送４２２の区間の時間長さは、この区間で何サンプルの転送を行う必要があるかという要求仕様、および、転送バッファ１０９から波形メモリ１２６へのバースト転送に関する速度の仕様に基づいて、設計者が決める。ただし、転送バッファ１０９は読出しと書込みが同時に実行可能なメモリで、その大きさは１ページ分の波形データ＋付加情報分であるから、フラッシュメモリ１２５から転送バッファ１０９へ読出した１ページ分の波形サンプル（２０４８バイト）は、基本的にフラッシュメモリ１２５から転送バッファ１０９へのページ読出しにかかるＤＡＣ数と同じＤＡＣ数で、転送バッファ１０９から波形メモリ１２６に転送する必要がある。従って、１回のバースト転送４２２の区間では、１ページデータのサンプル数を前記ＤＡＣ数で割ったサンプル数（小数点以下切上げ）の転送を行う必要がある。本実施形態では、フラッシュメモリ１２５の１ページ分のデータエリアのデータ２０４８バイト＝１０２４サンプルを転送バッファ１０９に読出すのに４ＤＡＣかかるので、転送バッファ１０９に読出された１ページ分の波形サンプルを波形メモリ１２６に転送するのも４ＤＡＣに分けて行う。従って、１回のバースト転送区間４２２では、１ページ分のデータ２０４８バイト＝１０２４サンプルの４分の１に当たる２５６サンプルを転送する。
【００４６】
本実施形態では、各ｃｈは２点補間を行い、全部で１２８ｃｈの楽音生成を行うことを前提とし、その処理を可能にするために必要な波形サンプル読出し区間４２１の時間長さが確保されているものとする。また、１ＤＡＣから波形サンプル読出し区間４２１とリフレッシュ４２３を除いた区間４２２で、２５６サンプル（ワード）のバースト転送が可能なハードウェアを用いているものとする。
【００４７】
ここで、エラー訂正部１１１によるエラー訂正処理について説明する。区間４１２，４１３のフラッシュメモリ１２５から転送バッファ１０９へのデータ転送は、Ｆ→Ｂ転送部１０８により行われるが、該転送中に、エラー訂正部１１１は、その転送データを解析してエラー訂正演算処理を行う。４３１は該エラー訂正演算処理を行う時間区間を示す。エラー訂正演算処理は、転送しているデータに所定の演算を施すことによりエラー訂正コードを算出し、付加情報Ｉｎｆに記録されているエラー訂正コードと比較することにより、転送データ中のエラーを検出し、検出されたエラーが訂正可能か否かを判定し、訂正可能である場合は該エラーが検出されたビット位置を特定する処理である。エラー検出処理は、区間４１２のフラッシュメモリ１２５から転送バッファ１０９へのデータ転送が開始された直後から順次行うことができるので、区間４１２のデータ転送の開始タイミングの直後からエラー訂正演算処理４３１を開始している。エラー訂正部１１１は、データ転送４１２の進行とともにエラー訂正演算処理４３１の区間でエラー検出の処理を実行してエラー訂正コードを算出し、付加情報Ｉｎｆの転送４１３が終了すると、該算出されたエラー訂正コードと該付加情報Ｉｎｆに含まれるエラー訂正コードとに基づいて所定のエラー判定演算を行い、最終的にエラーの有無とエラーがあった場合のエラー訂正の可否とエラー訂正が可の場合のエラー訂正箇所を確定する。一方、エラーの有無にかかわらず、Ｂ→Ｍ転送部１１０は、転送バッファ１０９上の１０２４サンプルを４回の区間４２２で波形メモリ１２６に書込む。エラー訂正部１１１は、エラー訂正演算処理４３１の結果に基づいて、エラーが検出され該エラーの訂正箇所が取得されている場合は、区間４２５で波形メモリ１２６上の当該波形データに対してエラー訂正を施す。なお、エラー訂正する対象は、モード１の場合はデータエリアの２０４８バイトのデータ、モード２の場合はデータエリアの２０４８バイトと次ページへのポインタＮＰを合わせたデータである。すなわち、モード２の場合は、データエリアと次ページへのポインタＮＰを合わせたデータに対するエラー訂正コードが各ページに格納されているものとする。
【００４８】
また、転送バッファ→波形メモリのバースト転送は、ＮＡＮＤ型フラッシュ→転送バッファの転送が開始されたタイミングから２ＤＡＣ遅れたＤＡＣ周期から開始する。これは、付番４１２に示した２０４８バイト＝１０２４サンプルの１ページデータを付番４２２に示したバースト転送で２５６サンプルずつ４回に分けて転送することが可能となるように（要するに４回のバースト転送４２２のそれぞれについて、そのバースト転送が開始するまでに、そのバースト転送で転送する２５６サンプルのデータがＮＡＮＤ型フラッシュメモリ１２５から転送バッファ１０９に転送し終えているように）、２ＤＡＣ遅れさせているものである。従って、転送バッファ１０９は、２−ｐｏｒｔでなくとも良く、例えば２個のＲＡＭで読出しと書込みを交互に切り替えるものでも良いが、ここでは書込みと読出しを安全に行うために２−ｐｏｒｔのＲＡＭを用いた。
【００４９】
図５は、音源部１１４と転送制御部１１３に関する詳細図である。本図では、主としてアドレスの入出力を表す矢印は普通の矢印で、アドレス以外のデータの入出力を表す矢印は先頭部を塗りつぶした三角形とした矢印で、それぞれ表している。
【００５０】
音源部１１４は、モードレジスタ５０１を備える。該レジスタ５０１は、仮想ページアドレスから実ページアドレスへの変換方式を規定するモード１または２の何れかを指定するモード情報Ｍをセットするレジスタである。予め本ＬＳＩ１００をモード１と２のどちらで動作させるかは設計者により決められている。また、そのモードに応じたデータ構造でフラッシュメモリ１２５にアドレス変換テーブルと波形データが格納されている。システム立ち上げ時に、レジスタ５０１にそのモード情報が設定される。
【００５１】
音源部１１４は、制御レジスタ（音源レジスタ）５０２を備える。制御レジスタ５０２は、各ｃｈ毎のパラメータおよびノートオンＮＯＮを記憶するレジスタである。ＣＰＵ１０１は、例えばＭＩＤＩ  Ｉ／Ｏ１２４経由で楽音発生指示を受けたとき、楽音生成するｃｈを割り当て、そのｃｈに対応する制御レジスタ５０２に、その演奏情報に基づくパラメータを設定してノートオンを書込む。これにより、音源１１４は、そのｃｈでの楽音生成処理を開始する。各レジスタの詳細を以下に示す。
【００５２】
（１）ＷＡ：図２（ｂ）で説明したＮＡＮＤ型フラッシュメモリ１２５中の当該ｃｈで読出す波形データＷａｖｅｘの第２ページＷｘ（１）＋Ｉｎｆの仮想ページアドレスをセットする。
（２）ＰＡ：図３（ａ）で説明した波形メモリ１２６のプリロード領域３０２中の当該ｃｈで読出す波形データＷａｖｅｘの先頭ページＷｘ（０）のアドレスをセットする。システム立ち上げ時に、ＮＡＮＤ型フラッシュメモリ１２５の全波形データＷａｖｅ１，２，…の先頭ページＷ１（０），Ｗ２（０），…が、プリロード領域３０２に格納される。
（３）ＢＡ：図３（ａ）で説明した波形メモリ１２６のバッファ領域３０３中の当該ｃｈに対応する１組のダブルバッファＢｎａ，Ｂｎｂのアドレスをセットする。
（４）Ｆ：Ｆナンバをセットする。Ｆナンバは、整数部と小数部とを有し、読出される波形データのピッチをシフトするパラメータであり、その値は発生させたい楽音のピッチ（音高）に応じて決定される。すなわち、Ｆナンバの値は、波形データのピッチからシフトしなくてよい場合は「１」とされ、ピッチアップしたいときは「１」より大きな値とされ、ピッチダウンしたいときは「１」より小さな値とされる。
（５）ＩＬ，ＨＴ，１ＤＲ，１ＤＬ，２ＤＲ，２ＤＬ，ＲＲ：楽音のエンベロープを制御するためのパラメータをセットするレジスタである。ＩＬはイニシャルレベル、ＨＴはホールドタイムを示す。これらは、楽音発生開始からホールドタイムＨＴの時間区間は、エンベロープ波形として、イニシャルレベルＩＬを固定的に出し続けることを指示するパラメータである。ＮＡＮＤ型フラッシュメモリ１２５に用意してある波形データは、何れも、その立ち上がり部分については元のサンプリング波形における音量変化をそのまま利用する方がリアルな楽音が得られるような波形データとしてある。そこで、その立ち上がり部分のホールドタイムＨＴだけの時間区間ではイニシャルレベルＩＬをエンベロープ波形としている。１ＤＲは１ｓｔディケイレート、１ＤＬは１ｓｔディケイレベルである。ホールドタイムＨＴの後、１ｓｔディケイレート１ＤＲの変化率で目標値１ｓｔディケイレベル１ＤＬに至るエンベロープ波形を出力するためのパラメータである。２ｎｄディケイレート２ＤＲと２ｎｄディケイレベル２ＤＬも同様であり、１ｓｔディケイの後、２ｎｄディケイレート２ＤＲの変化率で目標値２ｎｄディケイレベル２ＤＬに至るエンベロープ波形を出力するためのパラメータである。２ｎｄディケイの後、ノートオフが来たら、リリースレートＲＲの変化率で徐々に音量レベルを減少させていく。音量レベルが所定レベル以下になったら消音する。
（６）ＮＯＮ：楽音の発生開始を指示するノートオンをセットするレジスタである。
【００５３】
ＣＰＵ１０１が、あるｃｈに対応する制御レジスタ５０２にノートオンＮＯＮも含めて上記パラメータをセットすると、音源部１１４は当該ｃｈにおける楽音発生の処理を開始する。なお、図５の音源部１１４内に示されている各種パラメータは、それぞれ、その時点で処理中のｃｈのパラメータを示している。すなわち、処理するｃｈが変われば、それに応じてパラメータの値も変化する。
【００５４】
以下、音源部１１４等の各ブロックにおける１ｃｈ分の処理を説明する。同様の処理が、各ＤＡＣ毎に、時分割で全１２８ｃｈに対して行われ、複数の楽音が並行して生成される。
【００５５】
ピッチカウンタ５０４には、ノートオンＮＯＮおよびＦナンバが入力する。ピッチカウンタ５０４は、ノートオン時点でゼロリセットされ、その後、１ＤＡＣ毎にＦナンバを累算する。この累算値は、整数部アドレスと小数部アドレスとして出力される。累算値の整数部の下位１０ビットを除いたデータ（「整数部上位ビット」と呼ぶ）は、ＶＰアドレス発生部５０５およびＰＢアドレス発生部５０６に入力する。累算値の整数部の下位１０ビット（「整数部下位１０ビット」と呼ぶ）は読出部５０７に入力する。累算値の小数部は、補間部５０８に入力する。ピッチカウンタ５０４は、所定のタイミングで転送指示信号をＶＰアドレス発生部５０５および転送待ちキュー５２１に出力する。上述の整数部や小数部の時間変化や転送指示のタイミング等については図６で詳しく説明する。ピッチカウンタ５０４は、ノートオフ後も累算を続けるが、そのｃｈの楽音生成処理が停止されると累算を停止する。
【００５６】
ＰＢアドレス発生部５０６は、上記制御レジスタの（２）と（３）で説明したアドレスＰＡ（発音開始直後に読出すべき波形メモリ１２６のプリロード領域３０２の先頭ページのアドレス（図３（ａ）））とＢＡ（波形メモリ１２６の当該ｃｈに対応するバッファアドレス（図３（ａ）））を入力し、ＰＢアドレスを読出部５０７に出力する。ＰＢアドレスは、波形メモリ１２６中の読出すべき領域の先頭を指定するための上位アドレスである（実際にはＰＢアドレスは上位部分のみであるので、このＰＢアドレスの下位に１０ビット分の０を付けたアドレスが波形メモリ１２６中の読出すべき領域の先頭を指定する絶対アドレスになる）。具体的には、ＰＢアドレス発生部５０６は、発音開始直後はＰＡをＰＢアドレスとして出力し、該ＰＡで指定された波形メモリ１２６のプリロード領域３０２の先頭ページの波形サンプルデータを読み終えたら、ＢＡをＰＢアドレスとして出力し、該ＢＡで指定された波形メモリ１２６のバッファ領域３０３の当該ｃｈに対応するバッファＢｉａ（ｉはｃｈ番号）の波形サンプルデータを読み終えたら、ＢＡ＋１をＰＢアドレスとして出力し（上述したようにＢＡは下位１０ビット以下を除いた上位部分であるので、ＢＡ＋１はバッファＢｉｂを指すことになる）、該ＢＡ＋１で指定された波形メモリ１２６のバッファ領域３０３の当該ｃｈに対応するバッファＢｉｂの波形サンプルデータを読み終えたら、再びＢＡをＰＢアドレスとして出力し、以後、バッファＢｉａとＢｉｂを交互に読出すようにＢＡとＢＡ＋１を交互にＰＢアドレスとして出力する。このようなＰＢアドレスの下位に、ピッチカウンタ５０４から出力される整数部下位１０ビットを付加し、読出しアドレス（絶対アドレス）が生成される。読出部５０７は、メモリＩ／Ｆ１１２を介して波形メモリ１２６から、該読出しアドレスで当該ｃｈの波形サンプルデータを読出す。ここでは該読出しアドレスの波形サンプルとその次の波形サンプルの２サンプルを読出すものとする。なお、波形メモリ１２６のデータ長は１ワードであり、各アドレスには１サンプルの波形データが記憶されている。
【００５７】
補間部５０８は、１ＤＡＣ毎に、読出された２サンプルの間を小数部アドレス（ピッチカウンタ５０４から出力されたもの）に応じて２点補間（直線補間）して、１つの補間サンプルを算出する。楽音生成処理が停止されたｃｈについては、補間サンプル「０」を出力する。
【００５８】
振幅エンベロープジェネレータ（ＥＧ）５０３は、当該ｃｈのエンベロープ波形生成用のパラメータに基づいて、振幅エンベロープ（ＡＥ）波形を生成し、音量制御部５０９に出力する。音量制御部５０９は、１ＤＡＣ毎に、補間サンプルの振幅をＡＥ波形の値に基づいて制御し、当該ｃｈの楽音サンプルとして出力する。累算部５１０は、１ＤＡＣ毎に、全ｃｈの各楽音サンプルを累算し、全ｃｈを混合した結果の楽音サンプルとして出力する。なお、不図示の効果付与部でリバーブその他の効果を付与して出力しても良い。
【００５９】
ピッチカウンタ５０４から出力された整数部上位ビットは、ＶＰアドレス発生部５０５およびＰＢアドレス発生部５０６に入力する。ＶＰアドレス発生部５０５には、ＮＡＮＤ型フラッシュメモリ１２５中の当該ｃｈで読出している波形データの第２仮想ページアドレスＷＡが入力する（図２（ｂ））。ＶＰアドレス発生部５０５は、入力したデータに基づいてＶＰアドレスを生成する。ＶＰアドレスは、ＮＡＮＤ型フラッシュメモリ１２５の波形データの当該ｃｈで次に読出すべきページを特定する仮想ページアドレスである。ノートオン直後で音源１１４が波形メモリ１２６のプリロード領域３０２のアドレスＰＡで特定されるページから波形サンプルを読出している間にフラッシュメモリ１２５から読出すべきページはアドレスＷＡで特定されるフラッシュメモリ１２５上のページであるから、このときのＶＰアドレスはＷＡである。図２で説明したように、波形データは仮想ページアドレス空間で連続したページに格納されているから、これ以降、ＶＰアドレスは、ＷＡ＋１，ＷＡ＋２，ＷＡ＋３，…と推移していく。ＶＰアドレスの変化については、図６で詳しく説明する。
【００６０】
また、モード１の場合、ＶＰアドレス発生部５０５は、転送指示が入力される毎に、メモリＩ／Ｆ１１２を介して波形メモリ１２６のアドレス変換テーブル３０１にアクセスし、その時点でのＶＰアドレスに対応する実ページアドレスを求め、該実ページアドレスを波形メモリ１２６上の当該ｃｈのＮＰＡｉに書込む。従って、モード１の場合は、ＶＰアドレス発生部５０５が「次ページアドレス設定部」として機能する。モード２の場合、ＶＰアドレス発生部５０５は、第１回目のＶＰアドレス（その値がＷＡのときが第１回目であり、初回の転送指示のときである）に対しては、上記モード１と同様にアドレス変換テーブル３０１を参照し、該ＶＰアドレスに対応する実ページアドレスを求め、該実ページアドレスを波形メモリ１２６上の当該ｃｈのＮＰＡｉに書込む。モード２の場合は、それ以降、ＶＰアドレスがＷＡ＋１，ＷＡ＋２，ＷＡ＋３，…と推移した場合の当該ｃｈのＮＰＡｉの設定は、Ｂ→Ｍ転送部１１０で行うので、ＶＰアドレス発生部５０５では行わない。従って、モード２の場合、（第１回目を除き、）Ｂ→Ｍ転送部１１０が「次ページアドレス設定部」として機能する。波形メモリ１２６のＮＰＡに設定するアドレスの変化については、図６などで詳しく説明する。
【００６１】
転送待ちキュー５２１は、先入れ先出しのキューである。ピッチカウンタ５０４から転送指示が出力されたとき、転送待ちキュー５２１は、ＶＰアドレス発生部５０５から出力されるｃｈ番号を取り込んでキューに登録する。そのタイミングについては、図６で詳しく説明する。転送待ちキュー５２１に登録されたｃｈ番号は、要するに、当該ｃｈ番号のｃｈについて、その時点で波形メモリ１２６から読出し再生しているページデータの読出しが終わるまでに、波形メモリ１２６の当該ｃｈのＮＰＡｉに設定されている実ページアドレスのページデータをＮＡＮＤ型フラッシュメモリ１２５から転送バッファ１０９経由で波形メモリ１２６に転送しておく必要がある、ということを意味している。図４で説明した、Ｆ→Ｂ転送部１０８による転送とＢ→Ｍ転送部１１０による転送とは、転送待ちキュー５２１から順次出力されるｃｈ番号をトリガとして実行される。複数のｃｈ番号が登録されている場合、転送待ちキュー５２１からは、先に登録されたｃｈ番号から順番にｃｈ番号が出力され、それに応じて、Ｆ→Ｂ転送部１０８とＢ→Ｍ転送部１１０とは、それぞれ、該出力されたｃｈ番号に応じた転送を実行する。
【００６２】
Ｆ→Ｂ転送指示部５２２は、ＮＡＮＤ型フラッシュメモリ１２５から転送バッファ１０９へのページデータの転送が行われていないとき、転送待ちキュー５２１からｃｈ番号ｉを取り出し、Ｆ→Ｂ転送部１０８にそのｃｈ番号ｉを送って、ＮＡＮＤ型フラッシュメモリ１２５中の次に読出すべきページデータを転送バッファ１０９へ転送する指示を出す。この指示に応じて、Ｆ→Ｂ転送部１０８は、メモリＩ／Ｆ１１２経由で波形メモリ１２６の当該ｃｈ番号ｉの次ページアドレスＮＰＡｉを読出し、フラッシュメモリ１２５にその次ページアドレスＮＰＡｉを指定した読出し命令を出力する。該読出し命令に応じて、フラッシュメモリ１２５から１ページデータ（２１１２バイト）がバースト転送されるので、Ｆ→Ｂ転送部１０８は、その転送データを転送バッファ１０９へ書込む。これにより、図４の「ＮＡＮＤ型フラッシュ→転送バッファ」のタイムチャートで説明した１ページデータの転送（付番４１１〜４１３）が行われる。
【００６３】
また、Ｆ→Ｂ転送指示部５２２は、Ｆ→Ｂ転送部１０８に転送指示を出したとき、Ｂ→Ｍ転送指示部５２３に対して該転送指示とｃｈ番号を伝える。Ｂ→Ｍ転送指示部５２３は、この転送指示を受けて、Ｂ→Ｍ転送部１１０に当該ｃｈ番号と転送指示を出力し、Ｂ→Ｍ転送部１１０が転送バッファ１０９のページデータ（データエリアの２０４８バイト）を波形メモリ１２６の当該ｃｈに対応するバッファにバースト転送するように制御する。Ｂ→Ｍ転送部１１０は、Ｂ→Ｍ転送指示部５２３からｃｈ番号と転送指示を受けると、その転送指示のタイミングから２ＤＡＣ周期後の１ＤＡＣ周期の区間で、音源１１４による波形メモリ１２６のアクセス期間（図４の４２１）の後に、転送バッファ１０９にページデータのアドレスを指定した読出し命令を出力する。これにより、転送バッファ１０９から当該ページデータのうちの先頭の２５６ワードがバースト転送されてくるので、その転送データを波形メモリ１２６の当該ｃｈのバッファ領域へ図４の４２２に示したように書込む。さらに、引き続く２５６ワード×３ブロックのデータについても、Ｂ→Ｍ転送部１１０の制御の元で、引き続く３ＤＡＣの区間を利用して、バースト転送により波形メモリ１２６の当該ｃｈのバッファ領域へ書込む。以上により、図４の「転送バッファ→波形メモリ」のタイムチャートで説明した転送バッファ１０９から波形メモリ１２６のバッファ領域へのバースト転送（付番４２２）が行われる。また、モード２の場合、Ｂ→Ｍ転送部１１０は、転送バッファ中のデータの「次ページへのポインタＮＰ」を、波形メモリ１２６の当該ｃｈｉのＮＰＡｉに書込む処理を行う。このＮＰＡｉへの書込み処理は、図４の区間４２５のタイミング（ただし、エラー訂正書込みが行われる前とする）で行う。
【００６４】
なお、転送バッファ→波形メモリのバースト転送で、２５６ワードを当該ｃｈの波形メモリ１２６のバッファ領域に転送する際、当該ｃｈのバッファはＢｉａ，Ｂｉｂの２つあり、どちらに転送するかを決めておく必要がある。本実施形態のシステムでは、その時点で、当該ｃｈについて波形メモリ１２６のプリロード領域３０２またはバッファＢｉａ，Ｂｉｂの何れかから波形サンプルの音源１１４による読出しが行われているはずであるから、プリロード領域３０２またはバッファＢｉａから読出しが行われているならバッファＢｉｂをバースト転送先とし、バッファＢｉｂから読出しが行われているならバッファＢｉａをバースト転送先としている。
【００６５】
エラー訂正部１１１は、上述のＮＡＮＤ型フラッシュ→転送バッファの転送が行われているとき、その転送データを解析し、図４の４３１に示したエラー訂正演算処理を実行する。付加情報ＩＮＦの転送４１３まで終了したら、エラー訂正部１１１は、該転送データに関する、エラー発生の有無と、エラーが有った場合のエラー訂正の可否と、エラー訂正が可の場合のエラー訂正箇所とを確定する。エラーが有りそのエラーが訂正可でその訂正箇所が算出された場合、エラー訂正部１１１は、図４の区間４２５で、メモリＩ／Ｆ１１２経由で波形メモリ１２６の当該訂正箇所の訂正命令を発行しエラー訂正を実行する。モード２の場合は、ＮＰＡｉもエラー訂正の対象になるので、このエラー訂正でＮＰＡｉが訂正されることがある。
【００６６】
エラー訂正部１１１は、訂正可のエラーが発生した旨を示すエラー訂正情報をエラー検出部５２４に出力する（点線５４１）。同様に、エラーが有りそのエラーが訂正不可である場合、エラー訂正部１１１は、訂正不可のエラーが発生した旨を示すエラー訂正情報をエラー検出部５２４に出力する（点線５４１）。なお、訂正が可／不可いずれの場合も、エラー訂正情報には、エラーが発生したフラッシュメモリ１２５上の実ページアドレスを含めるものとする。
【００６７】
エラー検出部５２４は、エラー訂正部１１１からのエラー訂正情報を入力する。訂正可のエラー訂正情報が入力した場合、エラー検出部５２４は、該エラー訂正情報をＣＰＵ１０１に通知する（点線５４２）。訂正不可のエラー訂正情報が入力した場合、エラー検出部５２４は、振幅ＥＧ５０３に対して当該ｃｈのフォースダンプを指示して当該ｃｈの楽音を急速減衰させる（点線５４５）とともに、該エラー訂正情報をＣＰＵ１０１に通知する（点線５４２）。
【００６８】
エラー検出部５２４には、読出部５０７から、現在音源１１４が読出しを実行している波形メモリ１２６上のバッファ領域を特定するアドレスであるＰＢアドレス（これを「読出ＰＢアドレス」と呼ぶ）が入力する（点線５４４）。また、エラー検出部５２４には、Ｂ→Ｍ転送部１１０から、現在転送バッファ１０９からの転送の転送先となっている波形メモリ１２６上のバッファ領域を特定するアドレス（これを「転送中ＰＢアドレス」と呼ぶ）と該転送が終了したときその旨を示す転送済み信号が入力する（点線５４３）。あるｃｈについて、波形メモリ１２６上のバッファＢｉａとＢｉｂを用いた転送と読出しが正常に行われている場合、いま読出ＰＢアドレスがＢｉａである状態とすると、次に転送中ＰＢアドレスがＢｉｂとなって転送が始まり、その転送が終了して転送済み信号が入力し、次に読出ＰＢアドレスがＢｉｂとなってＢｉｂからの読出しが開始し、次に転送中ＰＢアドレスがＢｉａとなって転送が始まり、その転送が終了して転送済み信号が入力し、次に読出ＰＢアドレスがＢｉａとなってＢｉａからの読出しが開始し、…というように処理が進むはずである。もし何らかの理由で転送が間に合わないと、転送中ＰＢアドレスがＢｉｂの状態からその転送済み信号が発生する前に読出ＰＢアドレスがＢｉｂとなる、または、転送中ＰＢアドレスがＢｉａの状態からその転送済み信号が発生する前に読出ＰＢアドレスがＢｉａとなってしまう。エラー検出部５２４は、このような転送エラーのチェックを行い、転送エラーが発生したときには、点線５４５に示すように、振幅ＥＧ５０３に対して当該ｃｈの強制的なダンプ（フォースダンプ）を指示して当該ｃｈの楽音を急速減衰させる。また、エラー検出部５２４は、上記転送エラーが発生した旨をそのｃｈ番号とともにＣＰＵ１０１に通知する（点線５４２）。
【００６９】
図６は、発音開始以降の各種アドレスの時間変化（１ｃｈ分）を示す。図中、「整数部下位１０ｂｉｔｓ＆小数部」は、図５のピッチカウンタ５０４で当該ｃｈのＦナンバを累算した累算結果の整数部下位１０ビットおよび小数部の時間変化を示す。Ｆナンバの累算に応じて値が増加していき、整数部下位１０ビットが１０２３を越えたとき桁上がりが生じ、０に戻って（厳密には小数部の値が残っているので１以下の値である）再び増加する。これにより、図のような鋸歯状の変化を示す。「整数部上位ｂｉｔｓ」は、ピッチカウンタ５０４の整数部上位ビット（累算結果から整数部の下位１０ビットおよび小数部を除いた上位部分）の時間変化を示す。発音開始直後は０であり、以後、「整数部下位１０ｂｉｔｓ＆小数部」の桁上がりが生じる毎に、１ずつ増加していく。
【００７０】
「転送指示」は、図５のピッチカウンタ５０４から転送待ちキュー５２１に出力される転送指示信号を示す。発音開始時に付番６０１のように出力され、以後、当該ｃｈの「整数部下位１０ｂｉｔｓ＆小数部」の桁上がりが生じる毎に付番６０２，６０３のように出力される。「ＰＢアドレス」は、図５のＰＢアドレス発生部５０６から出力される当該ｃｈのＰＢアドレスの時間変化を示す。発音開始直後はＰＢアドレスとしてＰＡ（波形メモリ１２６のプリロード領域３０２の先頭ページを指すアドレス（図３（ａ）））が出力され、以後は、「整数部上位ｂｉｔｓ」がカウントアップされる毎にＢＡとＢＡ＋１（ＢＡは当該ｃｈに対応するバッファＢｉａのアドレス、ＢＡ＋１は当該ｃｈに対応するバッファＢｉｂのアドレス）が交互にＰＢアドレスとして出力される。
【００７１】
「ＶＰアドレス」は、図５のＶＰアドレス発生部５０５が内部的に生成する当該ｃｈのＶＰアドレスの時間変化を示す。発音開始直後は、次に波形メモリ１２６に読出しておくべきページは、当該波形データの第２ページアドレスＷＡで指されるページであるから（図２（ｂ））、ＶＰアドレスとしてＷＡが出力され、以後は、「整数部上位ｂｉｔｓ」がカウントアップされる毎に１ずつ増加していく。ＶＰアドレス発生部５０５は、当該ｃｈの転送指示が来る毎に、当該ｃｈのＷＡに当該ｃｈの「整数部上位ｂｉｔｓ」の値を加算して当該ｃｈのＶＰアドレスを生成する。なお、波形データは仮想ページアドレスで連続するページに順に格納されているので、ＶＰアドレスは、転送指示が来る毎にＷＡからインクリメントして生成してもよい。図２（ｂ）の例で言えば、ＷＡで第２ページＷ２（１）＋Ｉｎｆを指し、ＷＡ＋１で第３ページＷ２（２）＋Ｉｎｆを指し、…という対応となる。
【００７２】
「Ｐ１アドレス（モード１）」は、モード１の場合に、ＶＰアドレス発生部５０５が各時間区間で生成する仮想ページアドレスである当該ｃｈのＶＰアドレスに対応する実ページアドレスを示す。モード１の場合、仮想ページアドレスに対応する実ページアドレスはアドレス変換テーブル３０１を参照して求めるのが基本的な処理である。ＰＢアドレス＝ＰＡで当該ｃｈの先頭ページＷｘ（０）の波形サンプルを音源１１４が読出している間は、次にフラッシュメモリ１２５から読出すべきページの仮想ページアドレスであるＶＰアドレスはＷＡで与えられているから、ＶＰアドレス発生部５０５は、アドレス変換テーブル３０１を参照してＷＡに対応する実ページアドレスＴ（ＷＡ）を求め、該実ページアドレスを波形メモリ１２６の当該ｃｈのＮＰＡｉに書込む。なお、Ｔ（＊）はアドレス変換テーブル３０１により求めた仮想ページアドレス＊に対応する実ページアドレスを示す。同様にして、ＶＰアドレス発生部５０５は、転送指示がある毎に、ＶＰアドレスＷＡ＋１，ＷＡ＋２，…に対応する実ページアドレスを求めて、波形メモリ１２６のＮＰＡｉに設定する。
【００７３】
「Ｐ２アドレス（モード２）」は、モード２の場合に、ＶＰアドレス発生部５０５が各時間区間で生成する当該ｃｈのＶＰアドレスに対応する実ページアドレスを示す。モード２の場合、フラッシュメモリ１２５から読出したページの付加情報Ｉｎｆ内の「次ページへのポインタＮＰ」を辿って次に読出すべき実ページアドレスを取得するのが基本的な処理である。ＰＢアドレス＝ＰＡで当該ｃｈの先頭ページＷｘ（０）の波形サンプルを音源１１４が読出している間は、次にフラッシュメモリ１２５から読出すべきページの仮想ページアドレスであるＶＰアドレスはＷＡで与えられているから、ＶＰアドレス発生部５０５は、アドレス変換テーブル３０１を参照してＷＡに対応する実ページアドレスＴ（ＷＡ）を求め、該実ページアドレスを波形メモリ１２６の当該ｃｈのＮＰＡｉに書込む。後述する転送実行タイミング６１１で当該実ページアドレスＮＰＡｉのページデータがフラッシュメモリ１２５から読出されて波形メモリ１２６のバッファに格納されるが、このときＢ→Ｍ転送部１１０は、転送バッファ１０９に読出されたページデータの付加情報Ｉｎｆ中の「次ページへのポインタＮＰ」を波形メモリ１２６の当該ｃｈのＮＰＡｉに設定する。このＮＰＡｉに設定された「次ページへのポインタＮＰ」が、次のＶＰアドレス＝ＷＡ＋１に対応する実ページアドレスとなる。次の転送指示６０２でＶＰアドレス＝ＷＡ＋１と更新されたときには、既に当該ｃｈのＮＰＡｉの設定は済んでいることになる。以下同様にして、各転送実行タイミング６１２，６１３，…で実行される転送において、「次ページへのポインタＮＰ」が波形メモリ１２６のＮＰＡｉに設定され、これにより実質的に各ＶＰアドレスに対応する実ページアドレスがＮＰＡｉに設定されるようにしている。
【００７４】
「転送実行タイミング」は、当該ｃｈに関して、図５のＦ→Ｂ転送指示部５２２およびＢ→Ｍ転送指示部５２３からの指示に応じて、Ｆ→Ｂ転送部１０８及びＢ→Ｍ転送部１１０が、図４で説明した転送を実際に実行するタイミングを示す。先述したように、Ｆ→Ｂ転送部およびＢ→Ｍ転送部による転送は、転送待ちキュー５２１にｃｈ番号が登録された順に実行されるので、転送指示６０１が出力され、転送待ちキュー５２１に当該ｃｈのｃｈ番号が登録されたとしても、その時点で他のｃｈのｃｈ番号が転送待ちキュー５２１に登録されていれば、登録されているｃｈ番号に応じた転送が全て実行された後に、少し遅れた付番６１１のタイミングで当該ｃｈのｃｈ番号が転送待ちキュー５２１から出力され、対応する転送が行われる。同様に、転送指示６０２で転送待ちキュー５２１に登録されたｃｈ番号の転送は付番６１２で、転送指示６０３で転送待ちキュー５２１に登録されたｃｈ番号の転送は付番６１３で、…というように、転送指示から少し遅れて転送が実行される。その遅れは、他のｃｈで実行されている転送の混み具合によるので、一定ではない。もちろん、転送指示６０１で転送待ちキュー５２１に登録した転送は転送指示６０２が来る前に実行し、転送指示６０２で転送待ちキュー５２１に登録した転送は転送指示６０３が来る前に実行し、…というように、次の転送指示が来る前に実行する必要はある。
【００７５】
次に、波形メモリ１２６のアクセスに関するタイミング設計について説明する。
【００７６】
本実施形態のシステムでは、１単位アクセス（フラッシュメモリ１２５からの１ページデータの読出し）で転送バッファ１０９に転送された１０２４サンプルを、４ＤＡＣに分けて２５６サンプル（５１２バイト）ずつ転送バッファ１０９から波形メモリ１２６のバッファへバースト転送している（図４）。４ＤＡＣに分けて２５６サンプルずつバースト転送するのは、１単位アクセスに４ＤＡＣかかることに合わせたものである。１ＤＡＣ周期からこのバースト転送の期間と波形メモリ１２６のリフレッシュの期間を除いた期間が、音源１１４が各発音ｃｈの楽音生成のために波形サンプルを読出す期間になる。従って、バースト転送の期間を大きく取らなければならないようなケースでは、発音ｃｈのための読出し期間を減らさないといけないので、それに応じて発音可能ｃｈ数を減らすように設計する必要がある。逆に、バースト転送の期間をもっと減らすことができれば、それに応じて発音可能ｃｈ数を増加することができる。
【００７７】
ここで、「帯域幅」と「全帯域幅」について説明しておく。「全帯域幅」とは、基本再生期間（１ページ分のサンプルデータをサンプリング周期ごとに１サンプルの速度で再生した場合の再生時間）にフラッシュメモリ１２５から読出し可能な最大ページ数（言い替えると、基本再生期間に転送指示を出すことができる回数の上限値）である。本実施形態では、基本再生期間が１０２４ＤＡＣで、フラッシュメモリ１２５から１ページ読出しするのに４ＤＡＣかかるので、全帯域幅は２５６である。「帯域幅」とは、ある１つのｃｈで、基本再生期間に、フラッシュメモリ１２５から読出す最大ページ数（当該ｃｈが転送指示を出す最大回数）である。例えば、あるｃｈにおいて、Ｆナンバ＝１で楽音生成するなら、基本再生期間１０２４ＤＡＣの間に１回だけ転送指示を出せば、その１回の転送で波形メモリに書込まれた１０２４サンプルで基本再生期間内におけるＦナンバ＝１の再生がまかなえるので、当該ｃｈの帯域幅は１である。もしＦナンバ＝２なら帯域幅は２である。もしＦナンバ＝１．１なら、基本再生期間の１０期間分で１１回の転送指示（１１ページ分の転送）が必要だから、前記１０期間のうちのどこかで２回の転送指示を出さなければならず、当該ｃｈの帯域幅は２となる。従って、Ｆナンバの小数部を切り上げた値が、そのｃｈの帯域幅となる。また、全ｃｈの帯域幅の和が全帯域幅を越えることがないようにすることが必要である。越えてしまうと、何れかのｃｈで発生した転送要求が処理できなくなるからである。
【００７８】
本実施形態のシステムでは、ＣＰＵ１０１が各ｃｈに割り当てた帯域幅を管理する。予め各種設計条件に基づいて全帯域幅Ｔｂｗを決定しておく。また、割り当て済みの総帯域幅を示す内部変数Ａｂｗと第ｉｃｈに割り当てた帯域幅を示す内部変数Ｃｂｗ（ｉ）を設けておき、ＣＰＵ１０１は、初期設定時にこれらの内部変数を全て０に初期設定する。ＣＰＵ１０１は、発音のためにｃｈを割り当てるときには、該ｃｈの帯域幅ｂｗと、全帯域幅Ｔｂｗから割り当て済み総帯域幅Ａｂｗを減算した値（空きの帯域幅を示している）とを比較し、前者が後者以下であることを確認する（前者が後者より大きければ、当該ｃｈの帯域幅を割り当てることができない）。前者が後者以下なら、割り当てる帯域幅があるということだから、割り当て済み総帯域幅Ａｂｗに該ｃｈの帯域幅ｂｗを加算し、Ｃｂｗ（ｉ）にｂｗを記憶しておく。該ｃｈが消音して開放されたときには、ＡｂｗからＣｂｗ（ｉ）を減算し、Ｃｂｗ（ｉ）を０にリセットする。このようにして、常に、割り当て済み帯域幅Ａｂｗと割り当て可能な帯域幅Ｔｂｗ−Ａｂｗを管理する。本実施形態の方式では、Ｆナンバ上限値を制限せず、基本再生期間において全ｃｈについての単位アクセスの回数（帯域幅）の合計は上限である全帯域幅に抑えるようにしている。要するに、基本再生期間において、ピッチアップしたｃｈについては多くの回数の単位アクセスが必要になるが、逆にピッチダウンしたｃｈについては単位アクセスの数は減らせるので、全体として基本再生期間における単位アクセスの上限の数（全帯域幅）に抑えるようにしている。
【００７９】
図７（ａ）は、本実施形態のシステムの電源オン時あるいはリセット時にＣＰＵ１０１が実行するメイン処理のフローチャートである。ステップ７０１で初期設定を行い、ステップ７０２で転送制御部１１３に指示してアドレス変換テーブルと各波形データの先頭ページの波形メモリ１２６への転送を行う。また、モード１またはモード２を示すモード情報Ｍをモードレジスタ５０１に初期設定する。図２に関連して説明したように、ここで転送されるアドレス変換テーブルは、設定されるモード情報Ｍに応じて異なる。すなわち、モード１の場合は、１６ビット入力１６ビット出力のテーブルが転送され、モード２の場合は、２０ビット入力２０ビット出力のテーブルが転送される。以上の初期設定処理の後、ステップ７０３でイベントを検出し、イベントがあるときはステップ７０５でそのイベント処理を実行する処理を繰り返す。
【００８０】
図７（ｂ）は、ノートオンイベント処理のフローチャートである。この処理は、ＣＰＵ１０１が、例えばＭＩＤＩ  Ｉ／Ｏ１２４からＭＩＤＩノートオンイベントを入力したときに、ステップ７０５で実行する処理である。ステップ７１１では、入力したＭＩＤＩノートオンイベントの演奏情報に基づいて、ノートナンバとベロシティをレジスタｎｎ，ｖｅｌにセットする。ステップ７１２では、フラッシュメモリ１２５中の現在選択されている音色に対応する複数の波形データの中から、ｎｎ，ｖｅｌに応じた１つの波形データを決定（選択）する。図１のＮＯＲ型フラッシュメモリ１２１には、各音色の音色データが用意されており、その音色データ中にはｎｎ，ｖｅｌに応じた波形データを選択するための波形選択情報が含まれている。ステップ７１３では、発音ｃｈの割当てを行い、割り当てたｃｈ番号をレジスタａにセットする。
【００８１】
なお、ステップ７１３では、上述した帯域幅の確保を行う。すなわち、ｂｗ≦Ｔｂｗ−Ａｂｗであることを確認し、Ｃｂｗ（ａ）←ｂｗ、Ａｂｗ←Ａｂｗ＋ｂｗとする。ｂｗ＞Ｔｂｗ−Ａｂｗのとき、すなわち割り当て可能な帯域幅に割り当てるべき帯域幅が無かったときは、発音中のｃｈから消音するｃｈを決定し、該ｃｈの楽音を急速減衰させて該ｃｈを開放し、Ａｂｗからそのｃｈの帯域幅を減算し、そのｃｈのＣｂｗを０としてから、再度、帯域幅の確保を行う。割り当てるべき空きｃｈが無かったときは、何れかの発音中のｃｈを消音して解放し、割り当てることができるようにする。
【００８２】
ステップ７１４では、音源１１４の制御レジスタ５０２のａ ｃｈの領域に各種パラメータを設定する。ピッチシフトを制御するＦナンバは、決定された波形データをピッチシフトしない場合のピッチ（セント）と、ノートナンバｎｎの示すピッチ（セント）との音高差（セント）から決めることができる。上述したＷＡ，ＰＡやエンベロープ関連のパラメータは音色データに含まれている。ＢＡは、割り当てられたｃｈ番号から決めることができる。最後に、ステップ７１５で、ノートオンＮＯＮにａ ｃｈの発音開始指示を書込み、処理を終了する。
【００８３】
以上により、ａ ｃｈについてノートオンＮＯＮを含む音源レジスタにデータが設定されたので、これ以後は図１〜図６で説明した動作によりａ ｃｈでの発音が行われる。この発音処理は、図１のＮＡＮＤ型フラッシュメモリ１２５から音源１１４に至るハードウェアで実行され、ＣＰＵ１０１に割込みがかかることはない。
【００８４】
図８（ａ）は、あるｃｈの転送指示を受けたときのＶＰアドレス発生部５０５の処理を示す。この処理は、ハードウェアにより実行される処理である。ステップ８０１で、図６で説明したように、ＷＡに「整数部上位ｂｉｔｓ」の値を加算してＶＰアドレスを生成する。ステップ８０２でモード１のとき、または、モード２でかつステップ８０３で１回目の処理のときは、ステップ８０４に進む。ステップ８０３で１回目でないときは、ステップ８０６に進む。ステップ８０４では、アドレス変換テーブル（図３（ａ）の３０１）を参照して、ＶＰアドレスに対応する実ページアドレス（Ｐアドレス）を取得する。このＰアドレスは、図６に示したモード１の場合のＰ１アドレスまたはモード２の場合の初回のＰ２アドレスに相当する。ステップ８０５では、ＮＰＡの当該ｃｈ領域ＮＰＡｉに、該Ｐアドレスを書込む。ステップ８０６では、ｃｈ番号を転送待ちキュー５２１に出力する。
【００８５】
図８（ｂ）は、Ｂ→Ｍ転送指示部５２３からの転送指示を受けたときのＢ→Ｍ転送部１１０の処理（ただしエラー検出部５２４へ転送中ＰＢアドレス等を出力する処理などは除く）を示す。この処理は、ハードウェアにより実行される処理である。ステップ８１１で、Ｂ→Ｍ転送指示部５２３から渡されるｃｈ番号を取得する。ステップ８１２で、転送バッファ１０９上の１ページ分の波形データ１０２４ワードを、２５６ワードずつ４回に分けて波形メモリ１２６の当該ｃｈのバッファ領域へ転送する。転送のタイミングは図４の４２２で説明したように制御する。次に、ステップ８１３でモード２の場合、ステップ８１４で、転送バッファ１０９上の「次ページへのポインタＮＰ」を、波形メモリ１２６の当該ｃｈのＮＰＡｉに書込む。
【００８６】
次に、エラーが発生した場合のＣＰＵ１０１の処理について説明する。図５のエラー訂正部１１１およびエラー検出部５２４で説明したように、本システムでは、（１）フラッシュメモリ１２５から読出したデータに訂正可のエラーが発生して該エラーを訂正した場合のエラー訂正情報、（２）フラッシュメモリ１２５から読出したデータに訂正不可のエラーが発生した旨を示すエラー訂正情報、（３）転送エラーが発生した旨を示すエラー訂正情報を、ＣＰＵ１０１に通知する。該エラー訂正情報は、そのエラーが発生したｃｈおよびフラッシュメモリ１２５の実ページアドレスを含んでいる。
【００８７】
まず、上記（１）の訂正可のエラーの場合について説明する。この場合、当該ｃｈでの楽音生成は、訂正された波形データで継続される。このエラー通知を受けたＣＰＵ１０１は、割込処理で、当該エラーが生じた実ページアドレスをＮＯＲ型フラッシュ１２１に「代替待ちページ」として登録する。訂正された波形データで楽音生成は継続されるので、訂正可のエラーが発生した旨を、即時にメッセージ表示や所定音の出力などでユーザに通知することはしない。ただし、楽音生成処理が終了した後に、そのような通知を行う。通知を受けたユーザは、フラッシュメモリ１２５へのアクセスが無いときに、所定の操作で（あるいはバックグラウンドで自動的に）図９の「代替待ちページ」の登録が有る場合の処理を起動する。
【００８８】
図９（ａ）は、モード１の場合のＣＰＵ１０１の処理である。ステップ９０１で、「代替待ちページ」に登録されているエラーページを含む１ブロックをフラッシュメモリ１２５からメモリＩ／Ｆ１０７経由で読出し、ＲＡＭ１０３上で該ブロック内の該エラーページのデータ訂正を行う。訂正したデータにエラー訂正コードを付して、適正な１ページデータ（２１１２バイト）を得る。なお、エラーページだけでなく、当該ブロックの他のページについてもエラー訂正コードを用いてエラーチェックおよび訂正を行ってもよい。当該ブロック全体の適正なデータが得られたら、ステップ９０２で、フラッシュメモリ１２５上の未使用の実ブロックを１つ選択する。ステップ９０３で、前記訂正した１ブロック分のデータを、メモリＩ／Ｆ１０７経由で、前記選択した未使用ブロック（代替ブロックと呼ぶ）に書込む。ステップ９０４で、フラッシュメモリ１２５上のアドレス変換テーブルの前記エラーページを含む１ブロックの仮想ブロックアドレスが指す実ブロックアドレスを、前記代替ブロックの実ブロックアドレスに、変更する。以上により、エラーページを含む１ブロックを、代替ブロックで代替させることができる。
【００８９】
モード１の場合、予め、ＮＯＲ型フラッシュ１２１（あるいはＲＡＭ１０３上でもよい）に、ＮＡＮＤ型フラッシュ１２５内のアドレス変換テーブルと同じデータおよび未使用の実ブロックの所在を管理するための管理データを格納しておく。ＣＰＵ１０１は、これらのデータを用いて、ＮＡＮＤ型フラッシュ１２５の波形データの各ページの使用状況を常に管理している。
【００９０】
図９（ｂ）は、モード２の場合のＣＰＵ１０１の処理である。ステップ９１１で、「代替待ちページ」に登録されているエラーページをフラッシュメモリ１２５からメモリＩ／Ｆ１０７経由で読出し、ＲＡＭ１０３上で該エラーページのデータ訂正を行う。訂正したデータにエラー訂正コードを付して、適正な１ページデータ（２１１２バイト）を得る。ステップ９１２で、フラッシュメモリ１２５上の未使用ページを１つ選択する。ステップ９１３で、前記訂正後のページデータを前記未使用ページ（代替ページと呼ぶ）に書込み、かつ、当該ページの前ページの「次ページへのポインタＮＰ」が前記代替ページを指すように更新する。なお、当該エラーページがその波形データの先頭ページの場合は、前ページの「次ページへのポインタＮＰ」を更新する代わりに、フラッシュメモリ１２５上のアドレス変換テーブルの前記エラーページの仮想ページアドレスが指す実ページアドレスを、前記代替ページの実ページアドレスに、変更する。以上により、エラーページを代替ページで代替させることができる。
【００９１】
モード２の場合、予め、ＮＯＲ型フラッシュ１２１（あるいはＲＡＭ１０３上でもよい）に、ＮＡＮＤ型フラッシュ１２５内のアドレス変換テーブルと同じデータおよび未使用の実ページの所在を管理するための管理データを格納しておく。ＣＰＵ１０１は、ＮＯＲ型フラッシュ１２１内のアドレス変換テーブルを参照して、エラーページを含む波形データの先頭ページの実アドレスを取得でき、その先頭ページから「次ページへのポインタＮＰ」を辿ってエラーページの前ページを特定することができる。なお、ＮＯＲ型フラッシュ１２１に、各波形データにおける実ページの順序（ページ間のリンクの状況）を管理する管理データを設けておき、これによりエラーページの前ページを求めるようにしてもよい。また、付加情報Ｉｎｆに「次ページへのポインタＮＰ」だけでなく「前ページへのポインタ」も含めるようにすれば、エラーページの前ページの実アドレスが直ぐに分かるので容易に前ページにアクセスできる。
【００９２】
なお、ＮＡＮＤ型フラッシュメモリは、１動作では上書きを行うことができず、書込みたいページを含む連続する複数ページ（例えば３２ページや６４ページ）のブロック（図２（ｃ）で説明したブロックと区別するためここでは「メモリブロック」と呼ぶものとする）を消去した後に書込みを行う必要がある。従って、上記ステップ９０３，９０４，９１３でのＮＡＮＤ型フラッシュメモリ１２５への書込みは、書込みたいページを含むメモリブロックのデータをＲＡＭ１０３上に一旦読出した後、該メモリブロックを消去し、ＲＡＭ１０３上で読出したデータ中の必要な部分を変更し、変更後のデータを該消去済みのメモリブロックに書き戻す手順で実行する。
【００９３】
次に、上記（２）の訂正不可のエラーの場合について説明する。この場合、上述したように当該ｃｈで生成中の楽音は、（ＣＰＵ１０１からの指示なしに）自動的にフォースダンプされる。このエラー通知を受けたＣＰＵ１０１は、割込処理で、当該ｃｈを開放ｃｈとして発音割り当てできるようにし、また当該ｃｈに割り当てた帯域幅を割り当て可能な帯域幅に戻すとともに、その旨をメッセージ表示や所定音の出力などでユーザに通知する。この通知は、即時に行う代わりに、楽音生成処理が終了した後に行ってもよい。通知を受けたユーザは、（訂正不可のエラーが発生した場合はフラッシュメモリ１２５が不良であると思われるので、）メーカに修理を依頼する。
【００９４】
なお、フラッシュメモリ１２５の１つのページに着目すると、エラー無しで正常に読出せている状態から訂正不可のエラーが突然発生する確率は極めて低く、まず訂正可能なエラーが何回か発生し、その後、訂正不可のエラーが発生するのが通常である。従って、訂正可能なエラーが発生したときに、該エラーを起こしたページを代替ページ（あるいは代替ブロック）に置き換えることで、訂正不可なエラーの発生を抑えることができる。
【００９５】
次に、上記（３）の転送エラーの場合について説明する。この場合、上述したように当該ｃｈで生成中の楽音はフォースダンプされる。このエラー通知を受けたＣＰＵ１０１は、割込処理で、当該ｃｈを開放ｃｈとして発音割り当てできるようにし、当該ｃｈに割り当てた帯域を割り当て可能な帯域幅に戻す。また、全帯域幅Ｔｂｗの値を所定数だけ下げて、帯域の制限をきつくし、転送エラーが起きにくくなるようにする。
【００９６】
なお、上記実施形態における各種の値は、それぞれ適宜変更することができる。フラッシュメモリ１２５のページのサイズは２１１２バイトに限らず任意のサイズであってよい例えば、データエリアを１０２４バイトや４０９６バイトとし、付加情報Ｉｎｆも任意のサイズとしてよい（フラッシュメモリ１２５の仕様による）。また、データ幅も８ビットには限らず、４ビット、１６ビット等でもよい。図２（ｃ）で説明したモード１の場合の１ブロックの大きさも１６ページとは限らず、３２ページや６４ページ（２の累乗）などでもよい。また、１ブロックを１ページとしてもよい（この場合は結果としてブロックの概念が無いということになる）。基本再生期間における単位アクセス回数は２５６に限らず、３００、４５０、５１２等、任意の数であってよい（フラッシュメモリ１２５の仕様による）。波形メモリ１２６からの読出しサンプルデータ数は２５６（１ｃｈ当たり２サンプルで１２８ｃｈ分）に限らず、３１０、４６０、５１２等、任意の数であってよい（音源１１４が波形メモリ１２６から波形サンプルを読出す際、どれほどの分解能のタイムスロットで１サンプル読出し可能かの仕様による）。発音可能ｃｈ数も１２８ｃｈに限らず、（上述のボトルネックとなる種々の条件のもとで）６４、８０、１６０等、任意の数で設計することが可能である。１サンプルのビット数も、１６ビットに限らず、１２ビット、１４ビット等であってもよい。
【００９７】
図２（ｂ）の例では、２０４８バイトの波形データの後にエラー訂正コードを設けるフォーマットとしたが、エラー訂正コードは任意の位置に配置してよいし分割して配置してもよい。例えば、エラー訂正演算を行う単位が２５６バイトであれば、２５６バイトの波形データの後に該２５６バイトのエラー訂正コードを配置してもよい。
【００９８】
また、上記実施形態において、補間部５０８による補間処理は２点補間であったが、３点補間、４点補間等、任意数の点間の補間であってよい。ただし、例えば４点補間を行う場合は、各ｃｈで波形メモリ１２６から波形サンプルを読出すときに、１回の読出しで連続する４サンプルを読出すことになるので、発音可能ｃｈ数を減らさなければならない場合はある。波形メモリ１２６から複数サンプルを読出す場合、バーストモードにより高速に読出すようにしてもよい。補間部５０８を、サンプルバッファを備えた補間部としてもよい。
【００９９】
また、上記実施形態において、読出部５０７は、各ＤＡＣの期間に、波形メモリ１２６を１ｃｈあたり２回アクセスして、そのｃｈの補間処理に必要な２サンプルを波形メモリ１２６から読み出すようになっていたが、特許２８８２４６４に開示されているように、読出部５０７の内部に、過去に読み出したサンプルのうちの最新のｎ個（ｎは補間処理に必要な数）を記憶する補間バッファ（先願のサンプルＲＡＭ１２０５に相当）を設けて、１ｃｈあたりの波形メモリ１２６のアクセス回数を減らすようにしてもよい。この場合、１ｃｈあたりの波形メモリ１２６のアクセス回数は、ピッチカウンタ５０４が出力する各ｃｈの整数部アドレスの進行数となる。例えば、各ｃｈのＦナンバを「１」以下に制限すれば、上記実施形態と同じく１ＤＡＣあたり２５６回のアクセスによって、２５６ｃｈ分のサンプルを読み出すことができるので、この音源ＬＳＩ１００は、最大発音可能ｃｈ数を２５６として設計される。Ｆナンバを制限しない場合は、各ｃｈに設定されるＦナンバの小数部を切り上げた数の和の最大値に応じて、最大発音可能ｃｈ数が動的に変化する。何れで設計する場合であっても、フラッシュメモリ１２５の「帯域幅」（実施形態では２５６）と波形メモリのアクセス回数（実施形態では２５６回）とが、一致するよう設計するのが最適である。
【０１００】
上記実施形態では、モード２の場合、フラッシュメモリ１２５から最初に転送するページの仮想アドレスから実アドレスへの変換（図６におけるＰ２アドレスのＴ（ＷＡ）の取得）は、ＣＰＵ１０１によらずＶＰアドレス発生部５０５により自動的に行うようにしていたが（図８（ａ）の８０３，８０４の処理）、この初回のアドレス変換は、ＣＰＵ１０１で行ってもよい。そのためには、ＣＰＵ１０１側で各波形データの仮想アドレスＷＡに対応する実アドレス（Ｔ（ＷＡ）に相当するデータ）を保持しておき、例えば発音開始指示の際に制御レジスタ５０２経由で波形メモリ１２６のＮＰＡｉに該実アドレスを設定するようにすればよい。モード１の場合に同様にしてもよい。第２ページ以降を転送する際に、ＣＰＵ１０１に割り込みがかからないことが重要であり、第１ページについては、多少の処理が増えても余り影響がない。割り込みでは、ＣＰＵ１０１のレジスタの退避等が必要なため、負荷が大きい。
【０１０１】
また上記実施形態では、ＮＡＮＤ型フラッシュメモリに波形データを記憶するようになっていたが、記憶媒体はＮＡＮＤ型フラッシュメモリに限らない。本発明は、ページ単位のアクセスを高速に行うことができ、かつ、データ訂正を必要とする程度のデータエラーを生じる各種の半導体メモリに波形データを記憶する場合に広く適用することができる。
【０１０２】
上記実施形態では、１ワードが１サンプルのリニアな波形データを例として説明したが、波形データは任意の形式で圧縮したものでもよい。その場合、１ページ１０２４ワードのサンプル数が区々になるので上述の帯域幅を正確に算出することが難しくなるが、予め各波形データの１ページの平均的なサンプル数を求めておき、それを用いて帯域幅を計算するようにすればよい。
【０１０３】
上記実施形態では、波形メモリ内にアドレス変換テーブルを配置しているが、波形メモリ内ではなく、ＬＳＩ１００の内部にアドレス変換テーブルを記憶するための記憶部を設けてもよい。また、音源ＬＳＩ１００の内部にＣＰＵ１０１を内蔵する構成としたが、ＣＰＵ１０１を内蔵する代わりにＣＰＵとのインターフェースを行うＣＰＵ＿Ｉ／Ｆ部を内蔵し、該ＣＰＵ＿Ｉ／Ｆ部を介して外部のＣＰＵ１０１’から制御される構成としてもよい。さらに、メモリＩ／Ｆ部１０２、ＲＡＭ１０３、表示器Ｉ／Ｆ部１０４、パラレルＩ／Ｆ部１０５、シリアルＩ／Ｆ部１０６のうちの任意の１ないし複数を、音源ＬＳＩ１００に内蔵しない構成としてもよい。逆に、波形メモリ１２６は、スタティックメモリ型に変更して音源ＬＳＩ１００の内部に取り込んでもよい。
【符号の説明】
【０１０４】
１０１…ＣＰＵ、１０３…ＲＡＭ、１０３…ＲＡＭ、１０４…表示器Ｉ／Ｆ、１０５…パラレルＩ／Ｆ、１０６…シリアルＩ／Ｆ、１０７…メモリＩ／Ｆ、１０８…Ｆ→Ｂ転送部、１０９…転送バッファ、１１０…Ｂ→Ｍ転送部、１１１…エラー訂正部、１１２…メモリＩ／Ｆ、１１３…転送制御部、１１４…音源、１２１…ＮＯＲ型フラッシュメモリ、１２２…表示器、１２３…操作子、１２４…ＭＩＤＩ  Ｉ／Ｏ、１２５…ＮＡＮＤ型フラッシュメモリ、１２６…波形メモリ、１２７…ＤＡＣ、１２８…サウンドシステム。
【図１】
0005510815.tif 000002
【図２】
0005510815.tif 000003
【図３】
0005510815.tif 000004
【図４】
0005510815.tif 000005
【図５】
0005510815.tif 000006
【図６】
0005510815.tif 000007
【図７】
0005510815.tif 000008
【図８】
0005510815.tif 000009
【図９】
0005510815.tif 000010