(57)【特許請求の範囲】
【請求項１】
楽音を発生するための楽音波形データが記憶された第１の記憶手段から、楽音波形データを読み出し、第２の記憶手段に記憶された楽音を発生するためのプログラムに基づき生成されたパラメータに応じて、楽音波形データを加工して時分割で複数の楽音を発生するための楽音発生手段と、
上記第１の記憶手段及び第２の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスすると共に、キャッシュミスヒット信号の受信により、上記楽音発生手段による楽音波形データの読み出しを中断させ、且つ読み出しの中断された楽音波形データを欠損値として送出するバスコントローラと、
読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
上記キャッシュ手段のキャッシュミスヒットを検知し、キャッシュミスヒットが検知された際に、上記バスコントローラにキャッシュミスヒット信号を送信すると共に、バスコントローラによる楽音波形データ読み出しが中断された際に、上記制御手段による第２の記憶手段へのアクセスを許可して、同時に読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と、
該バスコントローラにより楽音波形データの読み出しが中断された場合に、該中断発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間を修復補間する補間手段と
を有し、
上記補間手段は、上記修復補間処理を、読み出される楽音波形データが読み出される一定の量毎に付加されたチェック用データを用いて行うことを特徴とする１チップ電子楽音発生器。
【請求項２】
上記補間手段による修復補間処理は、上記楽音波形データが読み出される一定の量毎に上記第１の記憶手段に挿入記憶されたチェック用データを用いて行われることを特徴とする請求項１記載の１チップ電子楽音発生器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１チップ電子楽音発生器に関する。
【背景技術】
【０００２】
従来の電子学音発生器では、音源に使用されるＣＰＵなどの制御手段が、決まったタイムスロットに、音源制御用のプログラムが記憶された記憶装置にアクセスし、必要なプログラムの読み込みを行っていた（下記特許文献１参照）。
【特許文献１】特開平０２−１７９６９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上記従来技術の構成では、ＣＰＵなどの制御手段によるタイムスロットの使用が、トーンジェネレータなどの楽音発生手段によって使用されるべきタイムスロットを圧迫し、同時発音数が少なくなると言う不具合を生じていた。
【０００４】
本発明は、以上のような問題に鑑み創案されたもので、楽音発生手段による楽音波形データの読み出しを中断させて、ＣＰＵなどの制御手段が記憶手段へアクセスすることができるようにしつつ、時分割で行われる複数の楽音発生には影響がないようにする１チップ電子楽音発生器を提供せんとするものである。
【課題を解決するための手段】
【０００５】
本発明に係る１チップ電子楽音発生器の構成は、
楽音を発生するための楽音波形データが記憶された第１の記憶手段から、楽音波形データを読み出し、第２の記憶手段に記憶された楽音を発生するためのプログラムに基づき生成されたパラメータに応じて、楽音波形データを加工して時分割で複数の楽音を発生するための楽音発生手段と、
上記第１の記憶手段及び第２の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスすると共に、キャッシュミスヒット信号の受信により、上記楽音発生手段による楽音波形データの読み出しを中断させ、且つ読み出しの中断された楽音波形データを欠損値として送出するバスコントローラと、
読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
上記キャッシュ手段のキャッシュミスヒットを検知し、キャッシュミスヒットが検知された際に、上記バスコントローラにキャッシュミスヒット信号を送信すると共に、バスコントローラによる楽音波形データ読み出しが中断された際に、上記制御手段による第２の記憶手段へのアクセスを許可して、同時に読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と、
該バスコントローラにより楽音波形データの読み出しが中断された場合に、該中断発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間を修復補間する補間手段と
を有し、
上記補間手段は、上記修復補間処理を、読み出される楽音波形データが読み出される一定の量毎に付加されたチェック用データを用いて行う
ことを基本的特徴としている。
【０００６】
上記構成によれば、メモリ管理手段により、キャッシュ手段のキャッシュミスヒットが検知されると、バスコントローラにより、上記楽音発生手段による楽音波形データ読み出しが中断せしめられて、上記制御手段による第２の記憶手段へのアクセスが許可され、同時に読み出されたプログラムが上記キャッシュ手段に記憶せしめられる。また、該バスコントローラにより、読み出しの中断された楽音波形データが、欠損値として上記補間手段に送出される。他方、この楽音波形データの読み出しが中断された場合に、上記補間手段により、該中断発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間が修復補間されることになる。
【０００７】
すなわち、キャッシュ手段のキャッシュミスヒットの時には、楽音波形データの読み出しを中断させて、制御手段によるプログラムの読み出しを優先させ、その中断の際に生じる楽音波形データの欠損は、上記補間手段により、読み出される楽音波形データが読み出される一定の量毎に付加されたチェック用データを用いて修復補間処理で補うことになる。そのため、楽音発生手段による楽音波形データの読み出しをバスコントローラが中断させて、ＣＰＵなどの制御手段が記憶手段へアクセスすることができるようにしつつ、時分割で行われる複数の楽音発生には影響がないようにすることが可能となる。
【０００８】
上記補間手段による修復補間処理は、上記楽音波形データが読み出される一定の量毎に上記第１の記憶手段に挿入記憶されたチェック用データを用いて行われると、中断が行われたことが直ぐに分かると共に、また修復補間処理が正しく簡単にできるようになる。そのようなチェック用データとしては、後述するようなパリティデータやその正しさをチェックできるその他の真否チェック用データが適している。
【発明の効果】
【０００９】
上記本発明の１チップ電子楽音発生器によれば、キャッシュミスヒット時に、楽音発生手段による楽音波形データの読み出しをバスコントローラが中断させて、ＣＰＵなどの制御手段が記憶手段へアクセスすることができるようにしつつ、その中断で欠損した分の楽音波形データは読み出される楽音波形データが読み出される一定の量毎に付加されたチェック用データを用いて修復補間処理で補われるため、時分割で行われる複数の楽音発生には影響がでないようにすることが可能になるという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を、次の図示する例と共に説明する。
【実施例１】
【００１１】
図１は、本発明の一実施例に係る１チップ電子楽音発生器と周辺回路を含む電子学音発生装置の構成を示す回路図である。
【００１２】
同図に示すように、本発明の電子学音発生器は、キャッシュ付きコアＣＰＵを内蔵した１チップＬＳＩで構成されており、その外部には、外部バスを介して、ＲＯＭ及びＲＡＭ、さらに外部機器へのインターフェースＩ／Ｆが接続されている。
【００１３】
すなわち、ＬＳＩ−ＣＨＩＰで示される本実施例の１チップ電子楽音発生器は、ＣＰＵ、トーンジェネレータ（ＴＧ）、メモリマネージングユニット（ＭＭＵ）、データキャッシュ（Ｃ１）が、内部バス１００を介してつながっている。
【００１４】
またプログラムキャッシュ（Ｃ０）が、上記メモリマネージングユニット（ＭＭＵ）に対して入出力が２系統、すなわちデュアル接続されていて、該メモリマネージングユニット（ＭＭＵ）によって、一方の入出力が、内部バス１００を介して、ＣＰＵへ、また他方の入出力がバスコントローラ（ＢＣ）、外部バス２００を介してＲＯＭやＲＡＭの外部記憶装置に接続されている。従って、プログラムキャッシュ（Ｃ０）は、ＣＰＵとこれらの外部記憶装置の間で、楽音発生用のプログラムのキャッシュを行う構成である。
【００１５】
上記ＣＰＵは、ＬＳＩ−ＣＨＩＰ内においてマイクロコンピュータコアで構成されており、楽音発生用のプログラムに応じて、楽音を生成するためのパラメータを作成し、トーンジェネレータ（ＴＧ）に供給している。また、後述するように、キャッシュミスヒットにより、楽音波形データの読み出しが中断され、該ＣＰＵがバスコントローラ（ＢＣ）、外部バス２００を介してＲＯＭやＲＡＭの外部記憶装置にプログラムの読み出しに行く際、後述するトーンジェネレータ（ＴＧ）に楽音波形データの欠損部の補間処理を指令する。
【００１６】
他方、トーンジェネレータ（ＴＧ）は、例えばサンプル時間１／５００００ｓｅｃとして１６音の楽音波形データを時分割で発生する音源構成であり、デコーダ・バッファ（Ｄ／Ｂ）、上記バスコントローラ（ＢＣ）、外部バス２００を介して、同じくＲＯＭやＲＡＭの外部記憶装置に接続されている。ここでは、これらの外部記憶装置に記憶されている楽音波形データが読み出されて、ＣＰＵから供給されたパラメータに基づいて、楽音が発生せしめられ、外部に出力される。またトーンジェネレータ（ＴＧ）のパラメータレジスタは、内部バス１００を介してＣＰＵに接続されている。従って該レジスタは、ＣＰＵからはＲＡＭとしてアクセスされる。さらに、該トーンジェネレータ（ＴＧ）は、後述する補間部１５を構成しており、楽音波形データの読み出しが中断された場合に、上記ＣＰＵの指令に基づき、欠損データフラグをチェックし、楽音波形データの必要な補間処理を行う。
【００１７】
上記デコーダ・バッファ（Ｄ／Ｂ）は、上記外部記憶装置とトーンジェネレータ（ＴＧ）との間に介在し、外部記憶装置から１チャンネル当たり例えば８ワードの楽音波形データの読み出しを行ってバッファリングしており、しかもその波形データがＡＤＰＣＭのように圧縮されている場合は、通常のＰＣＭへのデーコード処理がなされ、一つ一つ読み出されて伸張せしめられ、補間処理が行われ、ＰＣＭ形式にデコードされる。すなわち、読み出された楽音波形データに対して、補間処理（上記トーンジェネレータで行われる補間処理とは異なる）が行われる。そしてトーンジェネレータ（ＴＧ）の波形読み出しに応じて該デコーダ・バッファ（Ｄ／Ｂ）により補間された楽音波形データは、トーンジェネレータ（ＴＧ）に送られる。その際、トーンジェネレータ（ＴＧ）から出力されるＡＣＣ信号は、該トーンジェネレータ（ＴＧ）のチャンネルが発音中でない［後述する図１４の振幅エンベロープ（ＥＧ−２）１１１２又は音量Ｌｏｕｄｎｅｓｓ（ＬＤ）１１１４がゼロ］ことを示している。またこのデコーダ・バッファ（Ｄ／Ｂ）から、バスコントローラ（ＢＣ）に出されるＲＥＱ信号は、該デコーダ・バッファ（Ｄ／Ｂ）がバッファデータ入替を要求していることを示す。
【００１８】
他方、メモリマネージングユニット（ＭＭＵ）は、上記ＣＰＵがアクセスするバスを内部バス１００と外部バス２００で切り替える構成であり、内部バス１００に切り替えられた場合、ＣＰＵがプログラムキャッシュ（Ｃ０）にアクセスするようになり、また外部バス２００に切り替えられた場合、ＣＰＵが外部バス２００を介して外部記憶装置にアクセスするようになる。その際、該メモリマネージングユニット（ＭＭＵ）を介して、外部記憶装置から読み出される楽音発生用のプログラムは、プログラムキャッシュ（Ｃ０）にも記憶される。
【００１９】
このメモリマネージングユニット（ＭＭＵ）からバスコントローラ（ＢＣ）に出されるＣＴＲ信号は、ＣＰＵがキャッシュのミスヒットを行ったことを示す信号（本発明に規定されたキャッシュミスヒット信号）であり、またメモリマネージングユニット（ＭＭＵ）からＣＰＵに出力されるＷ０信号は、後述するバスコントローラ（ＢＣ）を介して外部バス２００がデコーダ・バッファ（Ｄ／Ｂ）によって使用中である時［該バスコントローラ（ＢＣ）からメモリマネージングユニット（ＭＭＵ）にＷＡＩＴ信号が出される時］、外部バス２００を介してＣＰＵが外部記憶装置をアクセスすることに対してウェイトをかけるための信号である。
【００２０】
さらにバスコントローラ（ＢＣ）は、外部バス２００への接続を、プログラムキャッシュ（Ｃ０）、メモリマネージングユニット（ＭＭＵ）、及びデコーダ・バッファ（Ｄ／Ｂ）のいずれかに切り替える切り替え制御構成である。
【００２１】
バスコントローラ（ＢＣ）からメモリマネージングユニット（ＭＭＵ）に出されるＷＡＩＴ信号は、外部バス２００がデコーダ・バッファ（Ｄ／Ｂ）によって使用中であることを示す信号であり、その信号が出されると、メモリマネージングユニット（ＭＭＵ）からＣＰＵにＷ０信号が出力され、外部バス２００を介して外部記憶装置をアクセスすることにつき、ＣＰＵにウェイトがかけられることになる。
【００２２】
上記ＲＯＭは、ＣＰＵ用のプログラムとトーンジェネレータ（ＴＧ）用の楽音波形データを記憶する外部記憶装置である。
【００２３】
上記ＲＡＭは、ＣＰＵ用のプログラムとパラメータやフラグなどのデータを一時的に記憶しておく外部記憶装置である。
【００２４】
上記インターフェース（Ｉ／Ｆ）は、電子楽器の鍵盤やパネルなどをＣＰＵがアクセスするためのインターフェースである。
【００２５】
本発明構成は、図２に示すように、前図の各部によって構成される、以下の機能ブロックで構成されている。すなわち、本実施例構成は、楽音を発生するための楽音波形データが記憶された第１の記憶部２１０から、楽音波形データを読み出し、第２の記憶部２１１に記憶された楽音を発生するためのプログラムに基づき生成されたパラメータに応じて、楽音波形データを加工して時分割で複数の楽音を発生するための楽音発生部１０と、上記第１の記憶部２１０及び第２の記憶部２１１に対し、外部バス２００を介してこれらの記憶部に時分割でアクセスすると共に、キャッシュミスヒット信号（図中ＣＴＲ信号）の受信により、上記楽音発生部１０による楽音波形データの読み出しを中断させ、且つ読み出しの中断された楽音波形データを欠損値として送出するバスコントローラ１１と、読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生部１０に供給する制御部１２と、上記バスコントローラ１１と制御部１２との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ部１３と、上記キャッシュ部１３のキャッシュミスヒットを検知し、キャッシュミスヒットが検知された際に、上記バスコントローラ１１にキャッシュミスヒット信号（同ＣＴＲ信号）を送信すると共に、バスコントローラ１１による楽音波形データ読み出しが中断された際に、上記制御部１２による第２の記憶部２１１へのアクセスを許可して、同時に読み出されたプログラムを上記キャッシュ部１３に記憶させるメモリ管理部１４と、該バスコントローラ１１により楽音波形データの読み出しが中断された場合に、該中断発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間を補間する補間部１５との構成を有している。
【００２６】
上記第１の記憶部２１０は楽音波形データを記憶する上記ＲＯＭで構成され、上記第２の記憶部２１１はＣＰＵ用のプログラムを記憶する上記ＲＯＭ及びＲＡＭで構成されている。
【００２７】
上記楽音発生部１０は、トーンジェネレータ（ＴＧ）で構成され、同じく補間部１５も、トーンジェネレータ（ＴＧ）で構成されている。
【００２８】
上記バスコントローラ１１は上記バスコントローラ（ＢＣ）で構成される。またこのバスコントローラ１１と上記楽音発生部１０及び補間部１５との間には、上記デコーダ・バッファ１６が介在しており、上記デコーダ・バッファ（Ｄ／Ｂ）で構成される。
【００２９】
上記制御部１２はＣＰＵで構成され、上記キャッシュ部１３は上記プログラムキャッシュ（Ｃ０）で構成される。
【００３０】
上記メモリ管理部１４はメモリマネージングユニット（ＭＭＵ）で構成される。
【００３１】
そして、上記楽音発生部１０、上記制御部１２及び上記メモリ管理部１４は、内部バス１００を介して、接続され、データなどのやりとりができる。
【００３２】
尚図中１７は、図１の（Ｃ１）に相当するデータキャッシュ部である。
【００３３】
上記電子学音発生装置では、上記インターフェース（Ｉ／Ｆ）側から押鍵データなどが受信されると、メモリ管理部１４によって、上記制御部１２に対し、第２の記憶部２１１から、ＣＰＵ用のプログラムが読み出される。その際に、そのプログラムの一部（使用頻度の高いものが望ましい）乃至全部が、ページロードされて、メモリ管理部１４により、キャッシュ部１３に格納される。
【００３４】
一方上記楽音発生部１０に対し、バスコントローラ１１により、外部バス２００を介して、第１の記憶部２１０から楽音波形データが読み出される。その途中、デコーダ・バッファ１６に読み出された楽音波形データが一時的に格納され、デコードされて、時分割で処理され、同時発音される系列毎に、そこから楽音発生部１０に供給される。
【００３５】
さらに、上記ＣＰＵ用プログラムが実行される制御部１２により、楽音を生成するためのパラメータが作成されて、内部バス１００を介して、上記楽音発生部１０に供給される。
【００３６】
上記楽音発生部１０は、読み出された上記楽音波形データに、さらに生成・供給されたパラメータに応じて加工を施して、時分割で複数の楽音を発生せしめ、外部に楽音を発生する。
【００３７】
その間一旦読み出されて、上記キャッシュ部１３に格納されたと同じプログラムが、上記制御部１２により読み出される場合、すなわち、キャッシュがヒットしている場合、メモリ管理部１４により、内部バス１００は、キャッシュ部１３に接続され、制御部１２の指定するアドレスは、メモリ管理部１４によって自動的にキャッシュ部１３のアドレスに読み替えられ、キャッシュ部１３から上記プログラムが読み出される。この時メモリ管理部１４は、制御信号ＣＴＲをＯＦＦにする（キャッシュヒットの状態）。
【００３８】
一方、バスコントローラ１１は、楽音発生部１０が読み出す楽音波形データの一時格納部となっているデコーダ・バッファ１６にアクセス権を優先して与える。もし楽音発生部１０における現在のタイムスロットのＴＧチャンネルが発音中であり（後述する図３参照）、デコーダ・バッファ１６の更新を必要としていれば、ＲＥＱ＝ＯＮが送られてくるので、外部バス２００をデコーダ・バッファ１６に接続する。
【００３９】
図３は、上述のように、キャッシュがヒットしている場合の各信号、バス、及びＴＧチャンネル（楽音発生部１０の同時発音チャンネル）のタイムチャートを示している。
【００４０】
同図に示されるように、本装置では、サンプリング時間＝２０μｓｅｃとし、その間に時分割チャンネル時間を１.２５μｓｅｃとして、１サンプリング時間内に、同自発音数１６の時分割発音チャンネル（ＴＧチャンネル）があり、これらの全てのチャンネルが時分割処理され、１６音が同時発音している状態になっている（図中０ｘ０〜０ｘＦで示される）。
【００４１】
この時、バスコントローラ１１からメモリ管理部１４へのＷＡＩＴ信号、（メモリ管理部１４から制御部１２へのＷＯ信号）及びメモリ管理部１４からバスコントローラ１１へのＣＴＲ信号は、ＯＦＦ状態であるが、上記デコーダ・バッファ１６からバスコントローラ１１へのＲＥＱ信号は、常に複数の系列の楽音波形データの読み出しが行われるため、同図に示すようなＯＮ状態が繰り返されるととになる。
【００４２】
さらに、メモリ管理部１４によって、内部バス１００にはキャッシュ部１３のプログラムが読み出されており（図中Ｃ０で示される）、即ち、キャッシュがヒットした状態となっている。
【００４３】
他方、ＲＥＱ信号を受けたバスコントローラ１１により、外部バス２００には第１の記憶部２１０から楽音波形データが読み出され、上記デコーダ・バッファ１６に一時的に格納されている（図中Ｄ／Ｂで示されている）。
【００４４】
図４は、キャッシュがミスヒットして、楽音波形データの読み出しが中断され、プログラム更新中の場合のタイムチャートを示している。また、図５は、上記場合の本発明構成の機能ブロックを示す説明図である。
【００４５】
キャッシュがミスヒットした場合、即ち、制御部１２が必要とするアドレスをメモリ管理部１４に指定して、キャッシュ部１３にプログラムの読み出しをかけた場合に、そのキャッシュ部１３に、そのアドレスに対応するキャッシュ上のアドレスが無く、該キャッシュ部１３に該当するプログラムが存在しない場合を、これらの図は示している。
【００４６】
そのような場合に、まずメモリ管理部１４は、バスコントローラ１１に対し、ＣＴＲ信号（上述のように該制御信号ＣＴＲは、制御部１２からのアクセスでキャッシュミスヒットをメモリ管理部１４で検知した場合に該メモリ管理部１４からバスコントローラ１１に出されるキャッシュミスヒットをしたことを示す信号＝キャッシュミスヒット信号）を出力する。
【００４７】
この時、バスコントローラ１１は、該ＣＴＲ信号を受信して、図５に示すように、デコーダ・バッファ１６からの上記ＲＥＱ信号の受信を遮断することで、楽音発生部１０による楽音波形データの読み出しを中断させる。そして、該バスコントローラ１１は、同図に示すように、読み出しの中断された楽音波形データを、欠損値として、該楽音発生部１０に送出する。
【００４８】
バスコントローラ１１による楽音波形データ読み出しが中断された際に、上記メモリ管理部１４により、図４及び図５に示すように、上記制御部１２による第２の記憶部２１１へのアクセスを許可して、制御部１２は、メモリ管理部１４を介して、内部バス１００を外部バス２００に接続させ、外部バス２００をアクセスしようとする。それによって、制御部１２は、第２の記憶部２１１から、必要とするプログラムをロードする。
【００４９】
同時に、メモリ管理部１４は、ロードされるプログラムを、上記キャッシュ部１３にもページロードさせる。
【００５０】
他方、上述のタイミングのバスコントローラ１１に機能については、該バスコントローラ１１自身は、デコーダ・バッファ１６にアクセス権を優先して与えているが、ＣＴＲ信号を受信するまでは、メモリ管理部１４にＷＡＩＴを出力しつつ、外部バス２００を、デコーダ・バッファ１６側に接続し、その間にも各チャンネルの楽音波形データの読み出しに使用させる。その間ＷＡＩＴは、メモリ管理部１４で処理され、（ＷＯ信号として）制御部１２には送られない。
【００５１】
そして、キャッシュミスヒットが発生して、ＣＴＲ信号がＯＮになったタイミングで（図４のＣＴＲ信号ＯＮ時）、外部バス２００は、図５に示すように、メモリ管理部１４経由で内部バス１００に接続され、制御部１２は、第２の記憶部２１１から、必要とするプログラムのロードを行う。この時、メモリ管理部１４により、同時に、ロードされるプログラムが、上記キャッシュ部１３にページロードされる。
【００５２】
以上の例では、キャッシュミスヒット時に、空きチャンネルがあろうが、なかろうが、強制的に、バスコントローラ１１により、楽音発生部１０への楽音波形データの読み出しが中断され、且つ読み出しの中断された楽音波形データが、欠損値として補間部１５に送出される。
【００５３】
以上のように、本実施構成によれば、キャッシュミスヒット時に、空きチャンネルがあろうが、なかろうが、メモリ管理部１４は、バスコントローラ１１に指令を出し、強制的に、バスコントローラ１１により、楽音発生部１０への楽音波形データの読み出しが中断され、内部バス１００は外部バス２００に接続され、制御部１２には、第２の記憶部２１１から、必要とするプログラムがロードされる。同時に、メモリ管理部１４により、ロードされるプログラムが、上記キャッシュ部１３にもページロードされる。また、その間に欠損するはずの楽音波形データは、バスコントローラ１１により欠損値を受信した補間部１５により、楽音波形データの読み出し中断の発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間が補間される。そのため、読み出される楽音波形データに欠損を生じず、同時発音数を減らすことなく、アクセス時間が許す限り多くの発音ができるようになる。
【００５４】
図５につき、さらに詳述する。メモリ管理部１４は、キャッシュのミスヒットがあってから（ＣＴＲ信号がＯＮになってから）１サンプル時間だけ連続して、デコーダ・バッファ１６のアクセス権を奪って、外部バス２００をアクセスする［楽音発生部１０が外部バス２００を占拠していない時間帯に外部メモリをアクセスするのではなく、少なくともｎ（楽音波形データに周期的に現れる後述するパリティデータの頻度に等しい数；本例の場合４）サンプルに１回は制御部１２が強制的に楽音発生部１０のアクセスを奪う］。そして、１サンプル時間（１／４４１００秒）後にはアクセス権は失われて、ＷＡＩＴ信号がアクティブになる。ＷＡＩＴ信号がアクティブになってから（図の例では）３サンプル時間の間は、ＷＡＩＴ信号がアクティブになり続けるので、メモリ管理部１４が外部バス２００をアクセスすることはできない。
【００５５】
一方ＷＡＩＴ信号は、初期状態でアクティブである。サンプル時間毎のカウンタを持ち、アクティブになってから、３サンプル時間の間は強制的にアクティブであり続ける。それを過ぎると、ＣＴＲ信号がアクティブになった瞬間に、１サンプル時間の間だけ、外部バス２００をメモリ管理部１４に開放する。この間にデコーダ・バッファ１６は楽音波形データを取りこぼすことになるが、上述のように、補間部１５によって取りこぼしたデータは再現される。
【００５６】
上述したように、ある発音系列（ＴＧ  Ｃｈａｎｎｅｌ）に着目すれば、連続した４サンプルのうち、１サンプルを取り落とすことはあっても、必ず他の３サンプルは読み出すことができ、取り落とした１サンプルは、上記補間部１５により補間されるので、発音が途切れることなく、かつ制御部１２も動作を続けることが可能となる。
【００５７】
上記補間部１５による補間処理につき、以下に説明する。
【００５８】
読み出される楽音波形データについて、図６に示されるように、読み出される一定の量毎に、チェック用のパリティデータが付加されている。すなわち、同図に示す場合は、（３＋１）の発音系列として、ｄａｔａ  ｎ＋３、ｎ＋２、ｎ＋１、ｎの系列順で楽音波形データが、時分割で読み出される。ここでは、パリティデータは４サンプルに１回出現するので、「ｎ＝４」となり、メモリ管理部１４は、４サンプルに１回、外部メモリをアクセスできる。パリティデータが、６サンプルに１回出現するなら、メモリ管理部１４は、６サンプルに１回、パリティデータが１１サンプルに１回出現するなら、メモリ管理部１４は１１サンプルに１回外部メモリをアクセスできることになる。
【００５９】
ＣＴＲ信号がアクティブ（キャッシュミスヒット）の間、図７に示すように、デコーダ・バッファ１６は読み出せなかった（同図ｘｘで示す）楽音波形データの代わりに、欠損データフラグｂｆがアクティブ（＝１）となったデータを作る。このデータはデコーダ・バッファ１６では無視され、補間部１５により、他のサンプルとパリティデータから当該無視されたデータを補間によって発生する。すなわち、同図に示すデータを例にすれば、補間部１５により、補間されるデータは＝ｂｐ−ｂ０−ｂ２で求められ、その欠損データ（ｘｘ）が修復・補間される。
【００６０】
一方、図８に示すように、楽音波形データに欠損がない場合［そのデータの欠損データフラグｂｆは非アクティブ（＝０）］や、欠損が生じたデータがパリティデータの場合［そのデータの欠損データフラグｂｆは非アクティブ０でもアクティブ１でも良い（図中ｘｘで示される）］は、取り出された楽音波形データには何ら問題はないので、そのままデコーダ・バッファ１６に転送され、補間処理は行われない。
【００６１】
図９は、上記実施例１の、制御部１２のメインフローを示す図面である。
【００６２】
同図に示すように、制御部１２により、キャッシュ部１３、デコーダ・バッファ１６、データキャッシュ部１７、及び第２の記憶部２１１の一部を構成するＲＡＭなどが初期化される（ステップＳ１００）。
【００６３】
そしてイベントがあるか否かが検出され（ステップＳ１０２）、イベントがあれば（ステップＳ１０２；Ｙ）、ステップＳ１０６に移行する。
【００６４】
反対にイベントがなければ（ステップＳ１０２；Ｎ）、イベントの処理がなされる（ステップＳ１０４）。
【００６５】
そして、ステップＳ１０６では、イベント外の処理（時間経過による処理）がなされる。
【００６６】
図１０は、上記図９のステップＳ１００で示される制御部１２による初期化処理の処理フローを示している。
【００６７】
該初期化処理では、インターバルタイマ割込ルーチンＴＩＮＴ（）、外部割込等が禁止される（ステップＳ２００）。
【００６８】
次にスタックポインタ等の変数が初期化される（ステップＳ２０２）。
【００６９】
さらに上記楽音発生部１０の全チャンネル消音する等のデバイス設定がなされる（ステップＳ２０４）。
【００７０】
そして上記キャッシュ部１３に、キャッシュのゼロペイジ（外部バス２００アクセスのための楽音発生部１０の消音ルーチンが格納されている）がロードされる（ステップＳ２０６）。
【００７１】
その後プログラム定数が、第２の記憶部２１１からデータキャッシュ部１７（Ｃ１）にロードされ、プログラム定数ポインタが該データキャッシュ部１７（Ｃ１）エリアに設定される（ステップＳ２０８）。
【００７２】
さらにプログラム変数の初期値がセットされる（ステップＳ２１０）。
【００７３】
最後に、上述したインターバルタイマ割込ルーチンＴＩＮＴ（）、外部割込等が可能な許可設定がなされる（ステップＳ２１２）。以上で初期化処理ルーチンが終了する。
【００７４】
図１１は、インターバルタイマ割込ルーチンＴＩＮＴ（）の内容を示すフローチャートである。該インターバルタイマ割込ルーチンＴＩＮＴ（）では、タイマカウンタＴをインクリート（１だけ増加）する処理がなされる（ステップＳ３００）。以上でインターバルタイマ割込ルーチンＴＩＮＴ（）が終了する。
【００７５】
図１２は、上記図９の制御部１２のメイン処理フローにおいて、ステップＳ１０４で行われるイベント処理（doEvent）の処理フローを示している。
【００７６】
そのイベントがキーイベントであるか否かがチェックされる（ステップＳ４００）。そのイベントがキーイベントであった場合（ステップＳ４００；Ｙ）、図示しないキースキャナからの押鍵・離鍵イベントに応じて、発音処理・消音処理がなされる（ステップＳ４０２）。
【００７７】
上記ステップＳ４００で、そのイベントがキーイベントでなかった場合（ステップＳ４００；Ｎ）、そのイベントがパネルイベントであるか否かがチェックされる（ステップＳ４０４）。そのイベントがパネルイベントであった場合（ステップＳ４０４；Ｙ）、図示しないパネルスキャナからのパネルイベントに応じて、音色等の発音パラメータが変更される（ステップＳ４０６）。
【００７８】
上記ステップＳ４０４で、そのイベントがパネルイベントでなかった場合（ステップＳ４０４；Ｎ）、そのイベントがＭＩＤＩイベントであるか否かがチェックされる（ステップＳ４０８）。そのイベントがＭＩＤＩイベントであった場合（ステップＳ４０８；Ｙ）、図示しない外部割込で受信されるＭＩＤＩ入力に応じて、ＭＩＤＩ処理が行われる（ステップＳ４１０）。
【００７９】
上記ステップＳ４０８で、そのイベントがＭＩＤＩイベントでなかった場合（ステップＳ４０８；Ｎ）、その他のイベント処理がなされる（ステップＳ４１２）。
【００８０】
さらに図１３は、上記図９の制御部１２のメイン処理フローにおいて、ステップＳ１０６で行われるタイマカウンタＴに基づく処理（doTVar）の処理フローを示している。
【００８１】
まずタイマカウンタＴが参照され、自動演奏が実行される（ステップＳ５００）。
【００８２】
そしてエクスプレッションペダルなどのアナログ入力が読み取られ、それに基づく処理が実行される（ステップＳ６０２）。
【００８３】
次にタイマカウンタＴが参照されて、変調用のＬＦＯの歩進処理がなされる（ステップＳ５０４）。
【００８４】
続いて、離鍵後又は減衰音の押鍵後、ＥＧ−２のレベルがゼロになっているものを探して処理がなされる（ステップＳ５０６）。
【００８５】
図１４は、上記実施例１の、楽音発生部１０の詳細な構成を示す説明図である。
【００８６】
同図に示すように、楽音発生部１０は、パラメータレジスタ（ＰＲ）１１００と、ウェイブアドレスジェネレータ（ＷＡＧ）１１０２と、インターポレイタ（ＩＰ）１１０４と、ＤＣＦ１１０６と、第１のエンベロープジェネレータ（ＥＧ−１）１１０８と、ＤＣＡ１１１０と、第２のエンベロープジェネレータ（ＥＧ−２）１１１２と、ラウドネス回路（ＬＤ）１１１４と、論理和回路（ＯＲ）１１１６と、パンコントローラ１１１８と、ミキサ１１２０と、エフェクト付与回路（ＥＦＰ）１１２２とを有している。また、図示しないが、ＣＰＵは、ウェイブアドレスジェネレータ（ＷＡＧ）１１０２などと同様に、第１のエンベロープジェネレータ（ＥＧ−１）１１０８、第２のエンベロープジェネレータ（ＥＧ−２）１１１２、ラウドネス回路（ＬＤ）１１１４、エフェクト付与回路（ＥＦＰ）１１２２などとも、パラメータレジスタ（ＰＲ）１１００を介してパラメータの交換を行ってもよい。
【００８７】
そのうち、プログラムレジスタ（ＰＲ）１１００は、制御部１２から各発音チャンネルの波形読出開始アドレス、ループ開始アドレス、ループ終端アドレス、波形読出レート、ＤＣＦオフセット周波数、ＥＧ−１目標値、ＥＧ−１レート、音量、ＰＡＮ係数などのパラメータを受け取って、各部に供給すると共に、各部の演算による現在値を保存する機能を有している。
【００８８】
上記ウェイブアドレスジェネレータ（ＷＡＧ）１１０２は、波形読出開始アドレスから順にループ開始アドレスを経てループ終端アドレスに到達し、以後ループ開始アドレスとループ終端アドレスの間を繰り返し読み出すためのアドレスを発生する機能を有している。読出速度は波形読出レート（Ｆナンバ）に応じて変更される。
【００８９】
上記インターポレイタ（ＩＰ）１１０４は、読み出された波形データを受け取って補間を行う機能を有している。
【００９０】
上記ＤＣＦ１１０６は、波形データにフィルタ処理を行うデジタルコントロールドフィルタである。
【００９１】
上記第１のエンベロープジェネレータ（ＥＧ−１）１１０８は、ＤＣＦ１１０６のカットオフ周波数に時間エンベロープを与える機能を有している。
【００９２】
上記ＤＣＡ１１１０は、波形データの振幅を制御するデジタルコントロールドアンプリファイアである。
【００９３】
上記第２のエンベロープジェネレータ（ＥＧ−２）１１１２は、ＤＣＡ１１１０の振幅に時間エンベロープを与えると共に、振幅ゼロ検出信号を、論理和回路（ＯＲ）１１１６に出力する機能を有している。
【００９４】
上記ラウドネス回路（ＬＤ）１１１４は、波形データの音量を制御するとともに、音量ゼロ検出信号を論理和回路（ＯＲ）１１１６に出力する機能を有している。
【００９５】
上記論理和回路（ＯＲ）１１１６は、第２のエンベロープジェネレータ（ＥＧ−２）１１１２とラウドネス回路（ＬＤ）１１１４のゼロ検出信号の論理和を出力する回路である。
【００９６】
上記パンコントローラ１１１８は、波形データのステレオ定位を制御する機能を有している。
【００９７】
上記ミキサ１１２０は、例えば本実施例装置のチャンネル数が１６チャンネルある場合に、その１６チャンネルの各発音チャンネルの波形データを系列加算するミキシング回路である。
【００９８】
上記エフェクト付与回路（ＥＦＰ）１１２２は、系列加算された波形データにエフェクトを付与する機能を有している。
【００９９】
図１５は、上記実施例１の、メモリ管理部１４とキャッシュ部（Ｃ０）１３の詳細な構成を示す説明図である。
【０１００】
同図に示すように、これらの回路構成のうち、キャッシュ部（Ｃ０）１３は、例えば０〜Ｆまでの１６ライン構成であり、１ラインあたりの容量は４０９６バイトとする仮定する。その場合のキャッシュ部１３の容量は６５５３６バイトとなる。
【０１０１】
以上の各部の動作について説明する。
【０１０２】
１）制御部１２から内部バス１００へ外部メモリ（第１及び第２の記憶部２１０及び２１１）へのアドレス(例えば３２ビット)が送出される。
【０１０３】
２）キャッシュ部１３の各ライン（ＣａｃｈｅＬｉｎｅ０〜Ｆ）のラインアドレスセレクタ１４００（ＬＡＳ−０〜ＬＡＳ−Ｆ）がこれを受け取り、上位（例えば２０）ビットを見て自分がレジストしているラインに対応するアドレスの上位（例えば２０）ビットと比較する。この比較のためにラインアドレスセレクタ１４００は（例えば２０ビットの）上位アドレスレジスタを備えている。レジスタの内容は、ラインが更新される際に書き換えられる。
【０１０４】
３）一致結果はＨＩＴ信号としてラインセレクタ１４０６（ＬＳ）に送出される。ＨＩＴ＝ＯＮの場合は下位（例えば１２）ビットのアドレスがラインメモリ１３００（ＬＭ−０〜ＬＭ−Ｆ）に送出される。ＨＩＴ＝ＯＦＦの場合、アドレスは送出されない。
【０１０５】
４）各ラインのＨＩＴ信号は全てラインセレクタ１４０６（ＬＳ）に集められる。
【０１０６】
４−１）全てのＨＩＴがＯＦＦであれば、ラインセレクタ１４０６（ＬＳ）は、（０）ＣＴＲ＝ＯＮ（制御部１２がキャッシュミスヒットした場合に出力される信号）を出力し、（１）適切な（例えば最後にアクセスされた時期が最も古い）キャッシュラインを選び、（２）当該ラインのデータバスセレクタ１４０２（ＤＢＳ）をＯＣＴ信号を用いて「外部−内部直結」に切り替え、（３）当該ラインのラインメモリ１３００（ＬＭ）をＣＣＴ信号を用いて書込モードで選択状態にし、（４）ラインアドレスセレクタ１４００（ＬＡＳ）をＩＣＴ信号を用いて強制的に内部バス１００選択状態にし、（５）プリロードアドレスジェネレータ１４０４（ＰＡＧ）にスタートアドレスのクリアを要求する。
【０１０７】
４−２）いずれかのラインがＨＩＴ＝ＯＮを示しており、かつ前回のライン処理完了時までにプリロードアドレスジェネレータ１４０４（ＰＡＧ）が更新されなかった場合は、ラインセレクタ１４０６（ＬＳ）は、（０）ＣＴＲ＝ＯＦＦを出力し、（１）ＨＩＴ＝ＯＮであるラインのラインメモリ１３００（ＬＭ）をＣＣＴ信号を用いて読出モードで選択状態にし、（２）当該ラインのデータバスセレクタ１４０２（ＤＢＳ）をＯＣＴ信号を用いて「内部」のみ接続状態とする。  ４−３）いずれかのラインがＨＩＴ＝ＯＮを示しており、かつ前回のライン処理完了時までにプリロードアドレスジェネレータ１４０４（ＰＡＧ）が更新された場合は、ラインセレクタ１４０６（ＬＳ）は、（０）ＣＴＲ＝ＯＮを出力し、（１）ＨＩＴ＝ＯＮであるラインのラインメモリ１３００（ＬＭ）をＣＣＴ信号を用いて読出モードで選択状態にし、（２）当該ラインのデータバスセレクタ１４０２（ＤＢＳ）をＯＣＴ信号を用いて「内部」のみ接続状態とし、（３）適切な（例えば最後にアクセスされた時期が最も古い）キャッシュラインを選び、（４）当該ラインのデータバスセレクタ１４０２（ＤＢＳ）をＯＣＴ信号を用いて「外部」のみ接続状態に切り替え、（５）当該ラインのラインメモリ１３００（ＬＭ）をＣＣＴ信号を用いて書込モードで選択状態にし、（６）ラインアドレスセレクタ１４００（ＬＡＳ）をＩＣＴ信号を用いて強制的に内部バス１００選択状態にし、（７）プリロードアドレスジェネレータ１４０４（ＰＡＧ）にスタートアドレスのクリアを要求する。
【０１０８】
５）外部バス２００のデータはデータアナライザ１４０８（ＤＡ）によって解析される。もしデータ（プログラムデータ）中にジャンプもしくはコール命令が存在していたら、データアナライザ１４０８（ＤＡ）はその飛び先アドレスの上位（例えば２０）ビットを取得し、プリロードアドレスジェネレータ１４０４（ＰＡＧ）に送出する。
【０１０９】
６）プリロードアドレスジェネレータ１４０４（ＰＡＧ）は、ラインセレクタ１４０６（ＬＳ）によってラインメモリ１３００（ＬＭ）の書き換えを実行中にデータアナライザ１４０８（ＤＡ）から飛び先アドレスが送られてきたら、その下位（例えば１２）ビットに“０”を付加してプリロードスタートアドレスとしてレジストする。その後ラインセレクタ１４０６（ＬＳ）によって当該ラインの転送が終了したら、図示しないクロックに応じてプリロードアドレスを１ずつインクリメントしながら送出する。
【０１１０】
ここでライン１がＨＩＴした場合の例を説明する。
【０１１１】
ラインアドレスセレクタ１４００（ＬＡＳ−１）はインターナルアドレスを選択し、それ以外のラインアドレスセレクタ１４００は非接続に設定される。そして、ラインメモリ１３００（ＬＭ−１）は上記ラインアドレスセレクタ１４００（ＬＡＳ−１）からの下位アドレスに従って読出処理を実行し、それ以外のラインメモリ１３００は非選択状態となる。その後データバスセレクタ１４０２（ＤＢＳ−１）はラインメモリ１３００（ＬＭ−１）を内部バス１００に接続し、それ以外のラインメモリ１３００は非接続状態にされる。
【０１１２】
反対にキャッシュがミスヒットした場合について説明する。
【０１１３】
一旦、全てのラインアドレスセレクタ１４００がＨＩＴ＝ＯＦＦを出力するので、ＣＴＲ信号が出力される。バスコントローラ１１（ＢＣ）によって楽音発生部１０とバスタイミングが競合すると、該バスコントローラ１１（ＢＣ）が外部バス２００をメモリ管理部１４に接続する。
【０１１４】
バスコントローラは上記接続を図示しないクロックのカウントにより１サンプル時間維持する。この間に外部バスに接続された、上記外部メモリ（第２の記憶部２１１など）からデータがラインに記憶されつつ、制御部１２も動作し、この間ジャンプまたはコール命令があれば更にプリロードアドレスが記憶される。
【０１１５】
上記１サンプル時間が経過すると、バスコントローラ１１（ＢＣ）はＷＡＩＴ信号を出力し、外部バス２００の接続をメモリ管理部１４からデコーダ／バッファ１６に戻し、最小でも、例えば３サンプル時間の間この接続を維持する。
【０１１６】
この後、更にメモリ管理部１４からＣＴＲ信号による接続要求があれば、上記の処理を、接続要求がなくなるまで繰り返す。ここでバスコントローラ１１（ＢＣ）が接続をデコーダ／バッファ１６に戻して維持する時間は、例えば波形データ中に周期的に出現するチェック用データ（パリティデータ）の間のデータ列（通常の波形データ）のワード数に等しくすることができる。
【０１１７】
上記のラインが終端に達したら、次のラインを探す。次がＨＩＴであれば、制御部１２はキャッシュを読んで動作し、同時にプリロードアドレスジェネレータ１４０４（ＰＡＧ）を用いてジャンプ先のペイジがプリロードされ、ＨＩＴしなければプリロードは実行されずに、次のラインが読み込まれる。
【０１１８】
図１６は、上記実施例１のデコーダ・バッファ（Ｄ／Ｂ）１６の構成を示す回路図である。
【０１１９】
楽音発生部１０の上記ウェイブアドレスジェネレータ（ＷＡＧ）１１０２（図１４参照）が発生した波形読出アドレスは、バッファセレクタ（ＢＳ）１５００を通じてウェイブデータバッファ（ＷＤＢ−０／１）１５０２ａ及び１５０２ｂに与えられる。現在波形が外部バス２００から読み込まれていない側のウェイブデータバッファ（ＷＤＢ−０／１）１５０２ａ又は１５０２ｂから波形が楽音発生部１０のインターポレイタ（ＩＰ）１１０４（図１４参照）へ送出される。
【０１２０】
上記楽音発生部１０に波形が送出されていない側のウェイブデータバッファ（ＷＤＢ−０／１）１５０２ａ又は１５０２ｂは、外部バス２００から波形データがウェイブリーダレジスタ（ＷＲＲ）１５１０を通じて読み込まれる。
【０１２１】
このウェイブリーダレジスタ（ＷＲＲ）１５１０は、バスコントローラ１１を介して外部メモリ（第１の記憶部２１０）から１ブロック分（図６に拠れば８ｂｉｔ×４ｗｏｒｄ）を読出し、記憶する。実体は１ビットのメモリをｂｉｔ幅×ｗｏｒｄ数だけ備えたメモリである。外部メモリから読むときは、通常通りｗｏｒｄアドレス（ｒｏｗ）を上位、ｂｉｔアドレス（ｃｏｌｕｍｎ）を下位アドレスとして記憶するが、補間ユニット（ＩＰＵｎｉｔ；ＩＵ）１５０６に送出する際は、ウェイブリーダレジスタ（ＷＲＲ）１５１０の書込／読出アドレスを、ｒｏｗとｃｏｌｕｍｎで入れ替え制御するアドレスＲ／Ｃエクスチェンジャ（ＡＲＣＥ）１５０８によって、ｒｏｗアドレスとｃｏｌｕｍｎアドレスを入れ替えて読み出される。該アドレスＲ／Ｃエクスチェンジャ（ＡＲＣＥ）１５０８によって、図７のように記憶したデータが読み出される。また上記補間ユニット（ＩＰＵｎｉｔ；ＩＵ）１５０６は、ウェイブリーダレジスタ（ＷＲＲ）１５１０から読み出されたデータのうち、欠損データがある場合に、上述の図７のようにして、他のデータから復元する。
【０１２２】
読み出されたデータは、ウェイブデコーダ（ＷＤ）１５０４によってデコードされる。このとき、楽音波形データの読出速度（例えばチャンネル時間あたり２バイト）と圧縮比（例えば１／２）によって得られるウェイブデータバッファ（ＷＤＢ−０／１）１５０２ａ及び１５０２ｂのバッファ速度（例えばチャンネル時間あたり４バイト）がウェイブアドレスジェネレータ（ＷＡＧ）１１０２の波形読出速度以上（例えば２．０バイト／チャンネル時間以下）ならば、バッファサイズ分の楽音波形データの読出が終わった後は空き時間となる。この間はＲＥＱ＝ＯＦＦとなって、制御部１２が外部バス２００を直接アクセス可能となる。
【０１２３】
ウェイブアドレスジェネレータ（ＷＡＧ）１１０２からアドレスが送出されない場合もＲＥＱ＝ＯＦＦとなって、制御部１２が外部バス２００を直接アクセス可能となる。
【０１２４】
図１７は、バスコントローラ（ＢＣ）１１の構成を示す回路図であり、また図１８は、その図の中で示されるバスセレクトコントロール（ＢＳＣ）１６００の真理値表である。
【０１２５】
該バスセレクトコントロール（ＢＳＣ）１６００は、エクスターナルアドレスセレクタ（ＥＡＬ）１６０２、エクスターナルデータセレクタ（ＥＤＬ）１６０４及びエクスターナルコントロールセレクタ（ＥＣＬ）１６０６に接続され、これらの信号を出力する。
【０１２６】
上記バスセレクトコントロール（ＢＳＣ）１６００は、メモリ管理部１４からのＣＴＲ信号とデコーダ・バッファ１６からのＲＥＱ信号が入力され、上記各部へセレクト信号を出力するほか、メモリ管理部１４へのＷＡＩＴ信号の出力を行う。
【０１２７】
エクスターナルアドレスセレクタ（ＥＡＬ）１６０２は、上記セレクト信号の他、メモリ管理部１４からのメモリアドレス及びデコーダ・バッファ１６からのメモリアドレスを指定する信号を受信し、第１の記憶部２１０又は第２の記憶部２１１の所定のアドレスを指定する信号を送出する。
【０１２８】
エクスターナルデータセレクタ（ＥＤＬ）１６０４は、上記セレクト信号の他、メモリ管理部１４と外部バス２００間でやりとりされるべきデータの送受信とデコーダ・バッファ１６と外部バス２００間でやりとりされるべきデータの送受信がなされ、さらにこれらのデータが外部バス２００との間で送受信される。
【０１２９】
エクスターナルコントロールセレクタ（ＥＣＬ）１６０６は、上記セレクト信号の他、メモリ管理部１４からの制御（Ｃｏｎｔｒｏｌ）信号とデコーダ・バッファ１６からの制御（Ｃｏｎｔｒｏｌ）信号が入力され、第１の記憶部２１０又は第２の記憶部２１１に対しての制御（Ｃｏｎｔｒｏｌ）信号を出力する。
【０１３０】
図１８は、上述のように、バスセレクトコントロール（ＢＳＣ）１６００の真理値表である。
【０１３１】
同図によれば、バスコントローラ１１は、ＣＴＲ信号及びＲＥＱ信号のいずれもＯＦＦの場合、外部バス２００はメモリ管理部１４にもデコーダ・バッファ１６にも接続されず、上記ＷＡＩＴ信号はＯＮ状態に設定される。
【０１３２】
またＣＴＲ信号＝ＯＦＦで、ＲＥＱ信号＝ＯＮの場合、外部バス２００はデコーダ・バッファ１６に接続され、上記ＷＡＩＴ信号はＯＮ状態に設定される。
【０１３３】
さらにＣＴＲ信号＝ＯＮで、ＲＥＱ信号＝ＯＦＦの場合、外部バス２００はメモリ管理部１４に接続され、上記ＷＡＩＴ信号はＯＦＦ状態に設定される。
【０１３４】
そしてＣＴＲ信号及びＲＥＱ信号のいずれもＯＮの場合、外部バス２００はメモリ管理部１４に接続され、上記ＷＡＩＴ信号はＯＦＦ状態に設定される。このＷＡＩＴ信号がＯＦＦの状態が１サンプル時間経過する（この間に制御部１２が動作すると同時にキャッシュ部１３が更新される）と、ＷＡＩＴ信号が再度ＯＮとなり、その後、最小、例えば３サンプル時間（３ＳＴ）の間、外部バス２００はデコーダ／バッファ１６に接続され続ける。この図１８のＣＴＲ信号及びＲＥＱ信号のいずれもＯＮの場合における、「３サンプル時間（３ＳＴ）の間、外部バス２００はデコーダ／バッファ１６に接続され続ける」の「３」は図６の波形データの「パリティデータ」と次の「パリティデータ」の間のデータ列のワード数に等しい。さらにＣＴＲ信号及びＲＥＱ信号が競合している間は、上記の処理を繰り返す。
【０１３５】
本実施例構成によれば、メモリ管理部１４により、キャッシュ部１３のキャッシュミスヒットが検知されると、バスコントローラ１１により、楽音発生部１０による楽音波形データ読み出しが中断せしめられて、制御部１２による第２の記憶部２１１へのアクセスが許可され、同時に読み出されたプログラムが上記キャッシュ部１３に記憶せしめられる。また、該バスコントローラ１１により、読み出しの中断された楽音波形データが、欠損値として補間部１５に送出される。他方、この楽音波形データの読み出しが中断された場合に、上記補間部１５により、該中断発生前及び発生後に読み出される楽音波形データの値によって、上記欠損値との間が補間されることになる。
【０１３６】
すなわち、キャッシュ部１３のキャッシュミスヒットの時には、バスコントローラ１１により、楽音波形データの読み出しを中断させて、制御部１２によるプログラムの読み出しを優先させ、その中断の際に生じる楽音波形データの欠損は、上記補間部１５による補間処理で補うことになる。そのため、楽音発生部１０による楽音波形データの読み出しをバスコントローラ１１が中断させて、制御部１２が第２の記憶部２１１へアクセスすることができるようにしつつ、その中断で欠損した分の楽音波形データは補間部１５で補われるため、時分割で行われる複数の楽音発生には影響がでないようにすることが可能となる。
【０１３７】
上記補間部１５による補間処理は、読み出される楽音波形データが、読み出される一定の量毎にチェック用のパリティデータが用いられて行われると、中断が行われたことが直ぐに分かると共に、また補間処理が正しく簡単にできるようになる。
【０１３８】
尚、本発明の１チップ電子楽音発生器は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えばキャッシュ（Ｃ０）及びデータキャッシュ（Ｃ１）をチップに組み込まずに外装してもよい。また、ゼロペイジプログラムはキャッシュ（Ｃ０）でなく、データキャッシュ（Ｃ１）または内部バス上に配置される他の記憶手段に記憶されてもよい。キャッシュ（Ｃ０）の各ラインのうち、ライン０を書き換え不能、またはペイジアウト不能としてもよい。データキャッシュ（Ｃ１）はキャッシュ（Ｃ０）と同様に扱われてもよい。データキャッシュ（Ｃ１）を廃してプログラムコードとプログラムデータをキャッシュ（Ｃ０）に混在させてもよい。第１の記憶部と第２の記憶部は同一の記憶手段の別エリアであってもよい。
【産業上の利用可能性】
【０１３９】
本発明に係る１チップ電子楽音発生器の構成は、電子楽器などに利用できるほか、電子ゲームやその他電子的に楽音を発生できるものには利用可能である。
【図面の簡単な説明】
【０１４０】
【図１】本発明の一実施例に係る１チップ電子楽音発生器と周辺回路を含む電子学音発生装置の構成を示す回路図である。
【図２】本発明の実施例１の構成を有する電子学音発生装置の機能ブロック図である。
【図３】キャッシュがヒットしている場合の各信号、バス、及びＴＧチャンネルのタイムチャートである。
【図４】発音チャンネル０ｘ３が消音し、他が発音中である時に、キャッシュがミスヒットしてプログラム更新中の場合のタイムチャートである。
【図５】発音チャンネル０ｘ３が消音し、他が発音中である時に、キャッシュがミスヒットしてプログラム更新中の場合の機能ブロックを示す説明図である。
【図６】補間部１５による補間処理の説明を行う説明図である。
【図７】補間部１５による補間処理の説明の続きを行う説明図である。
【図８】補間部１５による補間処理の説明のさらに続きを行う説明図である。
【図９】制御部１２のメインフローを示すフローチャートである。
【図１０】図９のステップＳ１００で示される制御部１２による初期化処理の処理フローを示すフローチャートである。
【図１１】インターバルタイマ割込ルーチンＴＩＮＴ（）の内容を示すフローチャートである。
【図１２】図９の制御部１２のメイン処理フローにおいて、ステップＳ１０４で行われるイベント処理（doEvent）の処理フローを示すフローチャートである。
【図１３】図９の制御部１２のメイン処理フローにおいて、ステップＳ１０６で行われるタイマカウンタＴに基づく処理（doTVar）の処理フローを示すフローチャートである。
【図１４】楽音発生部１０の詳細な構成を示す説明図である。
【図１５】メモリ管理部１４とキャッシュ部（Ｃ０）１３の詳細な構成を示す説明図である。
【図１６】デコーダ・バッファ（Ｄ／Ｂ）１６の構成を示す回路図である。
【図１７】バスコントローラ（ＢＣ）１１の構成を示す回路図である。
【図１８】図１７のバスセレクトコントロール（ＢＳＣ）１６００の真理値表である。
【符号の説明】
【０１４１】
１０      楽音発生部
１１      バスコントローラ
１２      制御部
１３      キャッシュ部
１４      メモリ管理部
１５      補間部
１６      デコーダ・バッファ
１７      データキャッシュ部
１００      内部バス
２００      外部バス
２１０      第１の記憶部
２１１      第２の記憶部
１１００    パラメータレジスタ
１１０２    ウェイブアドレスジェネレータ
１１０４    インターポレイタ
１１０６    ＤＣＦ
１１０８、１１１２  エンベロープジェネレータ
１１１０    ＤＣＡ
１１１４    ラウドネス回路
１１１６    論理和回路
１１１８    パンコントロール
１１２０    ミキサ
１１２２    エフェクト付与回路
１３００    ラインメモリ
１４００    ラインアドレスセレクタ
１４０２    データバスセレクタ
１４０４    プリロードアドレスジェネレータ
１４０６    ラインセレクタ
１４０８    データアナライザ
１５００    バッファセレクタ
１５０２ａ、１５０２ｂ  ウェイブデータバッファ
１５０４    ウェイブデコーダ
１５０６    補間ユニット
１５０８    アドレスＲ／Ｃエクスチェンジャ
１５１０    ウェイブリーダレジスタ
１６００    バスセレクトコントロール
１６０２    エクスターナルアドレスセレクタ
１６０４    エクスターナルデータセレクタ
１６０６    エクスターナルコントロールセレクタ
【図１】
0005229993.tif 000002
【図２】
0005229993.tif 000003
【図３】
0005229993.tif 000004
【図４】
0005229993.tif 000005
【図５】
0005229993.tif 000006
【図６】
0005229993.tif 000007
【図７】
0005229993.tif 000008
【図８】
0005229993.tif 000009
【図９】
0005229993.tif 000010
【図１０】
0005229993.tif 000011
【図１１】
0005229993.tif 000012
【図１２】
0005229993.tif 000013
【図１３】
0005229993.tif 000014
【図１４】
0005229993.tif 000015
【図１５】
0005229993.tif 000016
【図１６】
0005229993.tif 000017
【図１７】
0005229993.tif 000018
【図１８】
0005229993.tif 000019