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