(57)【要約】      （修正有）【課題】音源部が読み出す波形サンプルデータとＣＰＵが読み出すプログラムの両方を記憶するメモリとしてシリアルフラッシュを利用して基板をコンパクトに構成するとともに、シリアルフラッシュを利用しても従来と同等程度の楽音発生ｃｈの数を確保できるような、音発生装置を提供する。【解決手段】複数の波形サンプルからなる波形データと、複数のプログラムコードからなる制御プログラムとを記憶するシリアルメモリ１２１と、音源部１０２〜１０７とプロセッサとを備える。アクセス部１０８は、音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された波形サンプルを音源部に供給するとともに、プロセッサから発行されるフェッチ要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出されたプログラムコードをプロセッサに供給する。【選択図】図１
2014112198.tif 000002
【特許請求の範囲】
【請求項１】
複数の波形サンプルからなる波形データと、複数のプログラムコードからなる制御プログラムとを記憶するシリアルメモリと、
前記シリアルメモリへの読み出しアクセスを行うアクセス部と、
各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給される波形サンプルに基づいて、音信号を生成する音源部と、
前記アクセス部に対して１つの読み出しアドレスＣＡを含むプログラムコードのフェッチ要求を発行し、該フェッチ要求に応じて前記アクセス部から供給される１つ以上のプログラムコードを取り込んで前記制御プログラムを実行し前記音源部を制御するプロセッサと
を備えており、
前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された波形サンプルを前記音源部に供給するとともに、前記プロセッサから発行されるプログラムコードのフェッチ要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された１つ以上のプログラムコードを前記プロセッサに供給する
ことを特徴とする音発生装置。
【請求項２】
複数の波形サンプルからなる波形データと、複数のプログラムコードからなる制御プログラムとを記憶するシリアルメモリと、
前記シリアルメモリへの読み出しアクセスを行うアクセス部と、
各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給されるｎ個（ｎは１以上の整数）の波形サンプルに基づいて、音信号を生成する音源部と、
前記アクセス部に対してプログラムカウンタが示す１つの読み出しアドレスＣＡを含むプログラムコードのフェッチ要求を発行し、該フェッチ要求に応じて前記アクセス部から供給される１つ以上のプログラムコードを取り込んで前記制御プログラムを実行し前記音源部を制御するプロセッサと
を備えており、
前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出されたｎ個の波形サンプルを前記音源部に供給するとともに、前記プロセッサから発行されるプログラムコードのフェッチ要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された１つ以上のプログラムコードを前記プロセッサに供給する
ことを特徴とする音発生装置。
【請求項３】
請求項１または２に記載の音発生装置において、
前記シリアルメモリに記憶されている波形データはデータ圧縮されており、
前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて、当該波形サンプルに対応する圧縮データを読み出し、デコードして得た波形サンプルを前記音源部に出力するものである
ことを特徴とする音発生装置。
【請求項４】
請求項１から３の何れか１つに記載の音発生装置において、
前記シリアルメモリは、第１回目の読み出しでは、命令コードとアドレスを受け付けて当該アドレスのデータを出力し、第２回目以降の読み出しでは、命令コードを省略してアドレスのみを受け付けて当該アドレスのデータを出力する、継続読出モードを設定できるものであり、
前記アクセス部は、電源投入時またはリセット時の最初の読み出しにおいて、前記シリアルメモリを前記継続読出モードに設定し、前記音源部からの前記各チャンネル毎の波形サンプル要求に応じて、命令コードを省略したアドレスのみによるアクセスを行うことにより、前記先頭アドレスＳＡからの波形サンプルを読み出して前記音源部に供給し、前記プロセッサからのプログラムコードのフェッチ要求に応じて、命令コードを省略したアドレスのみによるアクセスを行うことにより、前記プログラムコードを読み出して前記プロセッサに供給する
ことを特徴とする音発生装置。
【請求項５】
請求項１から４の何れか１つに記載の音発生装置において、
前記アクセス部における各チャンネルのタイムスロットは、前記音源部からの波形サンプル要求が発生したときに、前記プロセッサからのプログラムコードのフェッチ要求に応じたプログラムコードの読み出しが行われていたとしても、そのプログラムコードの読み出しが終わったあとに、前記音源部からの波形サンプル要求に応じた波形サンプルの読み出しを、その同じタイムスロット内で完了できるに十分の時間長を有している
ことを特徴とする音発生装置。
【請求項６】
請求項１から５の何れか１つに記載の音発生装置において、
前記アクセス部は、前記波形サンプル要求に応じて、１回の読み出しアクセスで、「１波形サンプルのビット長×ｎ個」のデータを連続的に読み出す
ことを特徴とする音発生装置。
【請求項７】
請求項６に記載の音発生装置において、
前記シリアルメモリに記憶されている波形データは、ループスタートサンプルからループエンドサンプルまでの波形サンプルを繰り返し読み出して連続的に音信号生成を行うためのループ用サンプルデータを含み、かつ、ループエンドサンプルの次のｎ−１個のアドレスには前記ループスタートサンプルからのｎ−１個のサンプルデータと同じデータを設定しておくものとし、
前記音源部は、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行する際、そのアドレスＳＡが前記ループエンドサンプルのアドレスを超えたとき、そのアドレスＳＡから前記ループ用サンプルデータの長さを減算して新たなアドレスＳＡを求め、求めたアドレスＳＡで波形サンプル要求を発行するものであり、
前記アクセス部は、前記音源部から発行される波形サンプル要求のアドレスＳＡが前記ループスタートサンプルのアドレスからループエンドサンプルのアドレスまでに含まれているときは、１回の読み出しアクセスで、該アドレスＳＡから前記ｎ個の波形サンプルを連続的に読み出すものである
ことを特徴とする音発生装置。
【請求項８】
請求項１から７の何れか１つに記載の音発生装置において、
前記アクセス部は、前記プログラムコードのフェッチ要求に応じて、１回の読み出しアクセスで、「１プログラムコードのビット長」のデータを連続的に読み出すものであり、該１プログラムコードのビット長は各プログラムコードのフェッチ要求毎に変化するものである
ことを特徴とする音発生装置。
【請求項９】
請求項１から７の何れか１つに記載の音発生装置において、
前記アクセス部は、前記プログラムコードのフェッチ要求に応じて、１回の読み出しアクセスで、「１プログラムコードのビット長×ｍ個」のデータを連続的に読み出すものであり、
前記プロセッサは、前記「１プログラムコードのビット長×ｍ個」のデータを連続的に取り込むものである
ことを特徴とする音発生装置。
【請求項１０】
複数の波形サンプルからなる波形データを記憶するシリアルメモリと、
前記シリアルメモリへの読み出しアクセスを行うアクセス部と、
各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給される波形サンプルに基づいて、音信号を生成する音源部と
を備えており、
前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで前記シリアルメモリから「１波形サンプルのビット長×ｎ個」のデータを連続的に読み出し、読み出した波形サンプルを前記音源部に供給する
ことを特徴とする音発生装置。
【請求項１１】
請求項１０に記載の音発生装置において、
前記シリアルメモリに記憶されている波形データは、ループスタートサンプルからループエンドサンプルまでの波形サンプルを繰り返し読み出して連続的に音信号生成を行うためのループ用サンプルデータを含み、かつ、ループエンドサンプルの次のｎ−１個のアドレスには前記ループスタートサンプルからのｎ−１個のサンプルデータと同じデータを設定しておくものとし、
前記音源部は、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行する際、そのアドレスＳＡが前記ループエンドサンプルのアドレスを超えたとき、そのアドレスＳＡから前記ループ用サンプルデータの長さを減算して新たなアドレスＳＡを求め、求めたアドレスＳＡで波形サンプル要求を発行するものであり、
前記アクセス部は、前記音源部から発行される波形サンプル要求のアドレスＳＡが前記ループスタートサンプルのアドレスからループエンドサンプルのアドレスまでに含まれているときは、１回の読み出しアクセスで、該アドレスＳＡから前記ｎ個の波形サンプルを連続的に読み出すものである
ことを特徴とする音発生装置。
【請求項１２】
請求項１０または１１に記載の音発生装置において、
前記シリアルメモリに記憶されている波形データはデータ圧縮されており、
前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて、当該波形サンプルに対応する圧縮データを読み出し、デコードして得た波形サンプルを前記音源部に出力するものである
ことを特徴とする音発生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、端子数が少ないシリアルフラッシュメモリを利用した音発生装置に関する。
【背景技術】
【０００２】
従来より、楽音信号を生成するための、いわゆる波形メモリ音源が知られている。波形メモリ音源では、楽音発生指示に応じて波形メモリから波形データを読み出すことにより楽音信号を生成する。波形データを記憶しておく波形メモリとしては、例えば、ＲＯＭ（リードオンリメモリ）、フラッシュメモリ、ＲＡＭ（ランダムアクセスメモリ）などの各種の記憶装置が用いられる。
【０００３】
下記特許文献１は、内部にＣＰＵと音源部とを備える１チップの音源ＬＳＩを開示する。この音源ＬＳＩには、前記ＣＰＵが実行するプログラムと前記音源部が楽音生成に使用する波形サンプルデータを記憶した読み出し専用メモリが接続される。前記音源部は、時分割処理で複数チャンネル（ｃｈ）の楽音生成を行うため、各ｃｈのタイムスロットで、複数ビットパラレルのアドレスによって前記読み出し専用メモリをアクセスし、複数ビットパラレルのデータである波形サンプルを読み出す。並行して、前記ＣＰＵは、各種の制御動作を実行するために、複数ビットパラレルのアドレスによって前記読み出し専用メモリをアクセスし、複数ビットパラレルのデータである、制御プログラムの各プログラム命令を読み出して実行する。
【０００４】
一方、基板上の配置面積を押さえ、配線も少なくできる半導体記憶装置として、いわゆるシリアルフラッシュメモリ（以下、単に「シリアルフラッシュ」と呼ぶ）が知られている（例えば、下記非特許文献１参照）。シリアルフラッシュは、端子（ピン）の数を少なくし、各ピンに複数の役割を持たせた記憶装置である。例えば、８ピンの素子で、電源供給用のＶＣＣピン、接地用のＧＮＤピン、チップセレクト信号用の／ＣＳピン、クロック信号用のＣＬＫピンのほか、データ入出力などに共用するＩＯ１〜ＩＯ４ピンを備えたものなどがある。シリアルフラッシュは、設定したモードや指定した命令によって幾つかの異なる態様でのデータ読み出しを行うことができる。また、シリアルフラッシュはピン数が少なく、結果的に配線も少なくなって実装面積を狭くすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３１５２１９８号公報
【非特許文献】
【０００６】
【非特許文献１】http://www.winbond.com/hq/enu/ProductAndSales/ProductLines/FlashMemory/SerialFlash/W25Q64BV.htm
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した従来の波形メモリ音源では、波形サンプルデータを記憶する波形メモリとしてアドレス端子とデータ入出力端子とを備えるピン数の多いメモリを使用していたため、音源ＬＳＩと波形メモリの各チップサイズは大きくなり、その間の配線の本数が多くなり、結果的に実装面積が広くなって、大型のプリント回路基板が必要になるという問題があった。音源ＬＳＩおよび波形メモリの各チップサイズを小さくし、基板をコンパクトにするために、上述のピン数が少ないシリアルフラッシュに波形データを記憶することが考えられる。しかし、シリアルフラッシュはシリアルデータでデータ読み出しを行うため、当然ながら読み出し速度は遅く、普通に波形サンプルデータを読み出していたのでは、発音ｃｈ数が少なくなってしまうという問題がある。
【０００８】
特に、上述の特許文献１に記載されているような読み出し専用メモリに波形サンプルデータとＣＰＵが実行するプログラムを記憶するタイプの電子楽器では、波形サンプルデータの読み出しと並行してＣＰＵによるプログラムの読み出しも行われるので、さらに波形サンプルデータの読み出し速度が抑えられてしまう。
【０００９】
本発明は、音源部が読み出す波形サンプルデータを記憶するメモリとしてシリアルフラッシュを利用して基板をコンパクトに構成するとともに、シリアルフラッシュを利用しても従来と同等程度の楽音発生ｃｈの数を確保できるような、音発生装置を提供することを目的とする。また、本発明は、音源部が読み出す波形サンプルデータとＣＰＵが読み出すプログラムの両方を記憶するメモリとしてシリアルフラッシュを利用して基板をコンパクトに構成するとともに、シリアルフラッシュを利用しても従来と同等程度の楽音発生ｃｈの数を確保できるような、音発生装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、請求項１に係る音発生装置は、複数の波形サンプルからなる波形データと、複数のプログラムコードからなる制御プログラムとを記憶するシリアルメモリと、前記シリアルメモリへの読み出しアクセスを行うアクセス部と、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給される波形サンプルに基づいて、音信号を生成する音源部と、前記アクセス部に対して１つの読み出しアドレスＣＡを含むプログラムコードのフェッチ要求を発行し、該フェッチ要求に応じて前記アクセス部から供給される１つ以上のプログラムコードを取り込んで前記制御プログラムを実行し前記音源部を制御するプロセッサとを備えており、前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された波形サンプルを前記音源部に供給するとともに、前記プロセッサから発行されるプログラムコードのフェッチ要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された１つ以上のプログラムコードを前記プロセッサに供給することを特徴とする。
【００１１】
請求項２に係る音発生装置は、複数の波形サンプルからなる波形データと、複数のプログラムコードからなる制御プログラムとを記憶するシリアルメモリと、前記シリアルメモリへの読み出しアクセスを行うアクセス部と、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給されるｎ個（ｎは１以上の整数）の波形サンプルに基づいて、音信号を生成する音源部と、前記アクセス部に対してプログラムカウンタが示す１つの読み出しアドレスＣＡを含むプログラムコードのフェッチ要求を発行し、該フェッチ要求に応じて前記アクセス部から供給される１つ以上のプログラムコードを取り込んで前記制御プログラムを実行し前記音源部を制御するプロセッサとを備えており、前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出されたｎ個の波形サンプルを前記音源部に供給するとともに、前記プロセッサから発行されるプログラムコードのフェッチ要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで読み出された１つ以上のプログラムコードを前記プロセッサに供給することを特徴とする。
【００１２】
上記請求項１および２の「複数の波形サンプルからなる波形データ」はデータ圧縮されているものを含む。この場合、アクセス部が、波形サンプル要求に応じて、シリアルメモリから必要な圧縮データを読み出し、デコードして得た波形サンプルを音源部に供給する。請求項３に係る発明は、請求項１または２に記載の音発生装置において、前記シリアルメモリに記憶されている波形データはデータ圧縮されており、前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて、当該波形サンプルに対応する圧縮データを読み出し、デコードして得た波形サンプルを前記音源部に出力するものであることを特徴とする。
【００１３】
請求項４に係る発明は、請求項１から３の何れか１つに記載の音発生装置において、前記シリアルメモリは、第１回目の読み出しでは、命令コードとアドレスを受け付けて当該アドレスのデータを出力し、第２回目以降の読み出しでは、命令コードを省略してアドレスのみを受け付けて当該アドレスのデータを出力する、継続読出モードを設定できるものであり、前記アクセス部は、電源投入時またはリセット時の最初の読み出しにおいて、前記シリアルメモリを前記継続読出モードに設定し、前記音源部からの前記各チャンネル毎の波形サンプル要求に応じて、命令コードを省略したアドレスのみによるアクセスを行うことにより、前記先頭アドレスＳＡからの波形サンプルを読み出して前記音源部に供給し、前記プロセッサからのプログラムコードのフェッチ要求に応じて、命令コードを省略したアドレスのみによるアクセスを行うことにより、前記プログラムコードを読み出して前記プロセッサに供給することを特徴とする。
【００１４】
請求項５に係る発明は、請求項１から４の何れか１つに記載の音発生装置において、前記アクセス部における各チャンネルのタイムスロットは、前記音源部からの波形サンプル要求が発生したときに、前記プロセッサからのプログラムコードのフェッチ要求に応じたプログラムコードの読み出しが行われていたとしても、そのプログラムコードの読み出しが終わったあとに、前記音源部からの波形サンプル要求に応じた波形サンプルの読み出しを、その同じタイムスロット内で完了できるに十分の時間長を有していることを特徴とする。
【００１５】
請求項６に係る発明は、請求項１から５の何れか１つに記載の音発生装置において、前記アクセス部は、前記波形サンプル要求に応じて、１回の読み出しアクセスで、「１波形サンプルのビット長×ｎ個」のデータを連続的に読み出すことを特徴とする。
【００１６】
請求項７に係る発明は、請求項６に記載の音発生装置において、前記シリアルメモリに記憶されている波形データは、ループスタートサンプルからループエンドサンプルまでの波形サンプルを繰り返し読み出して連続的に音信号生成を行うためのループ用サンプルデータを含み、かつ、ループエンドサンプルの次のｎ−１個のアドレスには前記ループスタートサンプルからのｎ−１個のサンプルデータと同じデータを設定しておくものとし、前記音源部は、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行する際、そのアドレスＳＡが前記ループエンドサンプルのアドレスを超えたとき、そのアドレスＳＡから前記ループ用サンプルデータの長さを減算して新たなアドレスＳＡを求め、求めたアドレスＳＡで波形サンプル要求を発行するものであり、前記アクセス部は、前記音源部から発行される波形サンプル要求のアドレスＳＡが前記ループスタートサンプルのアドレスからループエンドサンプルのアドレスまでに含まれているときは、１回の読み出しアクセスで、該アドレスＳＡから前記ｎ個の波形サンプルを連続的に読み出すものであることを特徴とする。
【００１７】
請求項８に係る発明は、請求項１から７の何れか１つに記載の音発生装置において、前記アクセス部は、前記プログラムコードのフェッチ要求に応じて、１回の読み出しアクセスで、「１プログラムコードのビット長」のデータを連続的に読み出すものであり、該１プログラムコードのビット長は各プログラムコードのフェッチ要求毎に変化するものであることを特徴とする。
【００１８】
請求項９に係る発明は、請求項１から７の何れか１つに記載の音発生装置において、前記アクセス部は、前記プログラムコードのフェッチ要求に応じて、１回の読み出しアクセスで、「１プログラムコードのビット長×ｍ個」のデータを連続的に読み出すものであり、前記プロセッサは、前記「１プログラムコードのビット長×ｍ個」のデータを連続的に取り込むものであることを特徴とする。
【００１９】
請求項１０に係る発明は、複数の波形サンプルからなる波形データを記憶するシリアルメモリと、前記シリアルメモリへの読み出しアクセスを行うアクセス部と、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行し、該波形サンプル要求に応じて前記アクセス部から供給される波形サンプルに基づいて、音信号を生成する音源部とを備えており、前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて１回の読み出しアクセスを行い、該読み出しアクセスで前記シリアルメモリから「１波形サンプルのビット長×ｎ個」のデータを連続的に読み出し、読み出した波形サンプルを前記音源部に供給することを特徴とする。
【００２０】
請求項１１に係る発明は、請求項１０に記載の音発生装置において、前記シリアルメモリに記憶されている波形データは、ループスタートサンプルからループエンドサンプルまでの波形サンプルを繰り返し読み出して連続的に音信号生成を行うためのループ用サンプルデータを含み、かつ、ループエンドサンプルの次のｎ−１個のアドレスには前記ループスタートサンプルからのｎ−１個のサンプルデータと同じデータを設定しておくものとし、前記音源部は、各時分割チャンネル毎に、前記アクセス部に対して１つの読み出しアドレスＳＡを含む波形サンプル要求を発行する際、そのアドレスＳＡが前記ループエンドサンプルのアドレスを超えたとき、そのアドレスＳＡから前記ループ用サンプルデータの長さを減算して新たなアドレスＳＡを求め、求めたアドレスＳＡで波形サンプル要求を発行するものであり、前記アクセス部は、前記音源部から発行される波形サンプル要求のアドレスＳＡが前記ループスタートサンプルのアドレスからループエンドサンプルのアドレスまでに含まれているときは、１回の読み出しアクセスで、該アドレスＳＡから前記ｎ個の波形サンプルを連続的に読み出すものであることを特徴とする。
【００２１】
請求項１２に係る発明は、請求項１０または１１に記載の音発生装置において、前記シリアルメモリに記憶されている波形データはデータ圧縮されており、前記アクセス部は、前記音源部から発行される波形サンプル要求に応じて、当該波形サンプルに対応する圧縮データを読み出し、デコードして得た波形サンプルを前記音源部に出力するものであることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、波形データを記憶する媒体としてシリアルメモリを採用し、シリアルメモリから波形データを時分割で読み出しながら動作できる音発生装置を提供することができる。また、波形データと動作プログラムを記憶する媒体としてシリアルメモリを採用し、シリアルメモリから波形データと動作プログラムとを時分割で読み出しながら動作できる音発生装置を提供することができる。これにより、シリアルメモリ、音源部、プロセッサ部の各サイズが小さくなり、さらに、シリアルメモリと、音源部ないしプロセッサ間の配線の本数が少なくなるので、結果的に、これらシリアルメモリ、音源部、プロセッサで構成される音発生回路のプリント回路基板上の実装面積が極めて小さくなる。また、音源部で各時分割ｃｈ毎に発生する波形サンプル要求と、ＣＰＵのプログラムカウンタの進行で発生するプログラムコードのフェッチ要求とに応じて、シリアルメモリに対して波形サンプル読み出しとプログラムコード読み出しとがそれぞれ１回行われることにより、音源部のより多くの同時発音数と、ＣＰＵのより高速な動作とがそれぞれ実現される。
【００２３】
さらに、電源投入あるいはリセット時に継続読出モードを設定するとともに、音源の各ｃｈの波形サンプルの読み出しを、命令コードを省略したアドレスによるアクセスで行うことにより、ｃｈ当たりのメモリアクセス時間が短縮され、音源部の同時発音数を増やすことができる。さらに、各ｃｈのタイムスロットを、ＣＰＵからのプログラムコードの読み出しが行われていても、そのプログラムコードの読み出しが終わった後に、音源部からの要求に応じた波形サンプルの読み出しがそのタイムスロット内で完了できるだけの十分な時間長を確保することで、プロセッサからのシリアルメモリアクセスがあっても、音源部の各ｃｈにおける音の生成が破綻しないようにできる。
【００２４】
さらに、波形データがループ部を含む場合、ループ部の最後のサンプルの次に必要な数のループ部の先頭部分のサンプルの複製を設定しておくことで、常に１回の読み出し要求でループ部のサンプルの読み出しが行えるようにでき、破綻なく発音数を増やすことができる。また、波形データを圧縮した場合でも、アクセス部で必要な圧縮データを読み出してデコードすることで必要なサンプルを得ることができる。
【図面の簡単な説明】
【００２５】
【図１】この発明を適用した一実施形態である電子楽器のハードウェア構成図
【図２】シリアルフラッシュのメモリアクセスのタイミング図
【図３】ＣＰＵとシリアルフラッシュのアクセスタイミング図
【図４】ＣＰＵが実行するプログラムのフローチャート図
【図５】波形データの読み出し例を示す図
【図６】波形データの読み出し例（４点補間の場合）を示す図
【発明を実施するための形態】
【００２６】
以下、図面を用いて本発明の実施の形態を説明する。
【００２７】
図１は、本発明の音発生装置を適用した一実施形態である電子楽器のハードウェア構成を示す。この電子楽器は、基板上に、それぞれが１つの半導体チップである音源ＬＳＩ（Large Scale Integrated-circuit）１００とシリアルフラッシュメモリ１２１を搭載し、さらに周辺回路として、ＬＰＦ（ローパスフィルタ）１２２、アンプおよびスピーカからなるサウンドシステム１２３、送信用のドライバや受信用のフォトカプラを含むＭＩＤＩ端子１２４、スキャン用配線およびそのドライバを含む操作子１２５、並びに、表示器１２６などを備える。シリアルフラッシュメモリ１２１には、音源ＬＳＩ１００のＣＰＵ１０１が実行するプログラム、および、音源ＬＳＩ１００が楽音信号を生成するために利用する波形サンプルデータが記憶されている。
【００２８】
音源ＬＳＩ１００の内部構成を説明する。中央処理装置（ＣＰＵ）１０１は、シリアルフラッシュ１２１等に記憶されているプログラムを読み込んで実行することにより、電子楽器全体や音源ＬＳＩ１００全体の動作を制御する処理装置である。１０２〜１０７は音源部を構成する各要素である。この音源部は、時分割動作で、複数チャンネル（ｃｈ）の楽音生成処理を行う。すなわち、この音源部は、いわゆる１ＤＡＣ周期（１サンプリング周期）をｃｈ数で分割した各時間区間（タイムスロット）で各ｃｈの楽音生成処理を行うものである。
【００２９】
音源レジスタ１０２は、各ｃｈの楽音生成処理を制御するための各種制御パラメータデータをセットする複数ｃｈ分の記憶領域を備えたレジスタである。ＣＰＵ１０１は、この音源レジスタ１０２の各ｃｈの領域に、そのｃｈの楽音生成を制御するための制御パラメータを書き込むことにより、音源部の各ｃｈの楽音生成処理を制御する。例えば、ＣＰＵ１０１は、新たな楽音の発音命令（その楽音の音高や強度などのデータを含むノートオンイベント）を受けたとき、その発音用に、音源部の複数のｃｈのいずれか１つを割り当て、音源レジスタ１０２のその割り当てたｃｈの領域に、生成すべき楽音の音高や強度を含むパラメータを設定し、さらに当該ｃｈに発音の開始を指示する発音指示を書き込む（ノートオンイベント処理）。これにより、音源部は、そのｃｈのタイムスロットでの楽音生成処理を開始する。なお、前記発音命令は、他の機器からＭＩＤＩ端子１２４経由で受信する場合もあるし、操作子１２５に含まれる鍵盤の鍵の操作に応じて、ＣＰＵ１０１自身が発生する場合もある。
【００３０】
発音指示が書き込まれたときの、その発音指示されたｃｈのタイムスロットにおける、音源部の各部１０２〜１０７の動作を説明する。アドレス発生部１０３は、音源レジスタ１０２に設定された開始アドレスを初期値として、サンプリング周期毎に、指定されたピッチシフト量に応じた速度で変化する読み出しアドレスを発生し、発生した読み出しアドレスの整数部を、２Ｗ（２ワード）要求の波形アドレスとして、シリアルフラッシュＩ／Ｆ１０８に対して波形サンプル要求を出力する。シリアルフラッシュＩ／Ｆ１０８（アクセス部）は、受け取った波形アドレス（２Ｗ要求）に応じて、シリアルフラッシュ１２１に対して２Ｗアクセス（後述する図２（ｂ））を行い、その波形アドレスを先頭とする２波形サンプルを連続的に読み出す。補間部１０４は、該読み出された２波形サンプル間を、前記読み出しアドレスの小数部に応じて補間し、補間サンプルを生成する。音量変化制御部１０５は、音源レジスタ１０２に設定された音量エンベロープパラメータに基づいて、楽音の立ち上がりから立ち下がりまでの音量変化を表す音量エンベロープを発生し、サンプリング周期毎に入力する補間サンプルの振幅を、その音量エンベロープに基づいて制御する。このようにして、当該ｃｈの楽音波形サンプルが生成される。生成された当該ｃｈの楽音波形サンプルは、混合部１０６にて、他のｃｈで生成された楽音波形サンプルと混合され、さらに、ＤＡＣ部１０７にて、その混合サンプルがアナログ波形に変換され、ＬＰＦ１２２で雑音成分が除去され、サウンドシステム１２３にて放音される。
【００３１】
減衰指示が書き込まれたときの、その減衰指示されたｃｈのタイムスロットにおける、音源部の各部１０２〜１０７の動作を説明する。ＣＰＵ１０１は、生成中の楽音の減衰命令（その減衰すべき楽音の音高を含むノートオフイベント）を受けたとき、その減衰命令に含まれる音高で現在発音中のｃｈを探索し、そのｃｈが見つかれば、音源レジスタ１０２のそのｃｈの領域に楽音の減衰の開始または加速を指示する減衰指示を書き込む（ノートオフイベント処理）。これにより、音源部の音量変化制御部１０５は、そのｃｈの音量エンベロープの減衰を開始または加速し、その結果、そのｃｈの楽音波形サンプルの減衰が開始または加速される。音量エンベロープが所定値以下（聞こえない程度）に十分低下したｃｈは、発音停止状態とする。すなわち、音源部は、そのｃｈのタイムスロットでの楽音生成処理を停止し、アドレス発生部１０３からの波形アドレス（２Ｗ要求）が出力されなくなるので、シリアルフラッシュＩ／Ｆ１０８は、当該ｃｈについて、フラッシュメモリ１２１に対するアクセスを行わなくなる。当該ｃｈの読み出しは、次に同ｃｈが楽音生成に割り当てられて発音開始が指示されるまで停止される。
【００３２】
ノートオンやノートオフ以外の各種の楽音制御についても同様に、ＣＰＵ１０１が、音源レジスタ１０２の制御すべき楽音を生成中のｃｈの領域に、その楽音を制御するためのパラメータを書き込むことで、その楽音の特性を制御する。
【００３３】
ＭＩＤＩ端子１２４は、ＭＩＤＩ規格に準拠した不図示の外部ＭＩＤＩ機器を接続するための端子である。ＭＩＤＩ Ｉ／Ｏ１０９は、ＣＰＵ１０１の制御の下で、ＭＩＤＩ端子１２４に接続された外部ＭＩＤＩ機器から入力されるＭＩＤＩデータを音源ＬＳＩ１００に入力し、また、音源ＬＳＩ１００で生成されたＭＩＤＩデータをＭＩＤＩ端子１２４に接続された外部ＭＩＤＩ機器に出力するためのインターフェースである。操作子１２５は、電子楽器の操作パネル上に配置された各種パラメータの値を設定するための操作子や、演奏者が演奏情報を入力するための演奏操作子（鍵盤など）である。操作子Ｉ／Ｏ１１０は、ＣＰＵ１０１の指示に基づき、操作子１２５の操作状態をスキャンして、操作情報を入力するためのインターフェースである。表示器１２６は、ＣＰＵ１０１の指示に応じて各種のデータを表示するディスプレイである。表示Ｉ／Ｏ１１１は、表示器１２６に表示データを出力するためのインターフェースである。内部ＲＯＭ１１２は、ＣＰＵ１０１が起動時に実行するプログラムや、音源部の制御に用いる各種定数データや変換カーブなどを記憶した不揮発性のリードオンリメモリである。内部ＲＡＭ１１３は、ＣＰＵ１０１がワークエリアとして利用する揮発性メモリであり、ＣＰＵ１０１が実行するプログラムや、音源部の制御に用いる各種パラメータなどを記憶するために用いられる。これらメモリ１１２，１１３は、それぞれ、パラレルアドレスでアクセスすることにより、パラレルデータの読み出しないし書き込みを行える、通常のパラレル型メモリである。１１４は、これら各部を接続するバスラインであり、コントロールバス、データバス、およびアドレスバスを総称したものである。
【００３４】
シリアルフラッシュ１２１について詳しく説明する。上述したように、シリアルフラッシュ１２１は、各アドレスに１バイトのデータを記憶する不揮発性のメモリであって、それぞれＣＰＵ１０１が実行する一連の複数のプログラム命令からなる１乃至複数のプログラムと、それぞれ音源部が楽音生成に使用する一連の複数波形サンプルからなる１乃至複数の波形データとを記憶している。各プログラム命令のデータ長は、１ワード（１Ｗ）または２ワード（２Ｗ）であり、各波形サンプルのデータ長は２ワード（２Ｗ）である。通常のＮＯＲ型フラッシュメモリは、アドレスビット長に対応する数のアドレス端子と、データビット長に対応する数のデータ入出力用端子を備えるが、本実施形態で用いるシリアルフラッシュメモリ１２１は端子数が少なく、その少ない数の端子をアドレスやデータの入出力に共用してシリアルデータでアドレスやデータの入出力を行うシリアルメモリの一種である。本実施形態では、シリアルフラッシュメモリ１２１として８端子のものを用いる。図１では６本の端子（ピン）の名称を図示した。ＣＬＫはクロック信号を入力するピン、ＣＳはチップセレクト信号を入力するピン、ＩＯ１〜ＩＯ４はアドレスやデータの入出力に使用する４本のピンを示す。シリアルフラッシュメモリ１２１は、これらの６本のピンのほか、電源供給用のＶＣＣピンと接地用のＧＮＤピンを備える。
【００３５】
ＣＳピンに入力するチップセレクト信号は、デバイス操作の有効／無効を切り替える信号である。ＣＳピンが“１”のとき（ＣＳピンに所定の高レベル電圧を印加したとき）、シリアルフラッシュメモリ１２１は非選択状態すなわち読み出しや書き込みの動作をせずスタンバイしている状態にある。シリアルフラッシュメモリ１２１からデータを読み出すときは、ＣＳピンを“０”とし（ＣＳピンに所定の低レベル電圧を印加する）、次の８クロックを使って、ＩＯ１ピンにシリアルデータで８ビットの命令コードを入力する。読み出し命令としては、Read Data（命令コードは０３ｈ）、Fast Read（命令コードは０Ｂｈ）、Fast Read Dual IO（命令コードはＢＢｈ）、および、Fast Read Quad IO（命令コードはＥＢｈ）などがある。なお、ｘｘｈは１６進表記を示すものである。
【００３６】
Read Dataの場合、命令コード０３ｈの入力の後、２４クロックを使ってＩＯ１ピンにシリアルデータで２４ビットの初期アドレスを入力すると、次の８クロックでＩＯ２ピンから当該初期アドレスの１バイトがシリアルデータで出力される。その後は、ＣＳピンが“０”である間は、アドレスを入力しなくても、読み出しアドレスが前記初期アドレスから自動でインクリメントされ、連続するアドレスの各バイトデータがＩＯ２ピンからシリアルデータで出力される。ＣＳピンが“１”にされると、ＩＯ２ピンからのデータの出力が停止する。
【００３７】
なお、上述のＣＳピンが“０”である間、個別にアドレス指定することなく、読み出しアドレスが自動でインクリメントされて連続する各バイトデータを読み出す機能をSequential Readと呼ぶ。以下で説明するどの読み出し命令でもSequential Readを実行できる。
【００３８】
Fast Readは、上記Read Dataと同様に動作する読み出し命令であるが、Fast Readでは、アドレス入力の後、８クロックのダミークロックが挿入された後にＩＯ２ピンからのデータ出力が行われる。Fast Readでは、Read Dataよりクロックの周波数を高くすることができるので、連続するアドレスの一連のデータを高速に読み出すことができる。
【００３９】
Fast Read Dual IOの場合、命令コードＢＢｈの入力の後、２ピンを用いて２４ビットの初期アドレスを入力する。具体的には、ＩＯ１ピンとＩＯ２ピンを用いて、１クロックで並列に２ビット入力できるので、命令コードの後の１２クロックで２４ビットの初期アドレスを入力し、さらにその後の４クロックでモードを入力する。モードの入力の後、ＩＯ１ピンとＩＯ２ピンの機能が入力から出力へと切り替わり、次の４クロックで前記初期アドレスの１バイトがＩＯ１ピンとＩＯ２ピンから出力され、さらにSequential Readが行われる。
【００４０】
前記モードについて説明する。モードとしては、１６進のＡｘｈ（上位４ビットがＡｈであれば下位４ビットは任意の値で良い）かそれ以外の値（上位４ビットがＡｈ以外）を指定する。モードとしてＡｘｈが入力された場合、Continuous Read Mode（継続読出モード）となる。このモードに入った場合、ＣＳピンが“１”にされてデータ出力が一旦停止された後、再びFast Read Dual IOを発行するときは命令コードの入力を省略することができる。すなわち、ＣＳピンを“０”とした後（命令コードの入力を省略して）、ＩＯ１ピンとＩＯ２ピンを用いて１２クロックで２４ビットのアドレスを入力し、さらに４クロックで８ビットのモードを入力（引き続きContinuous Read Modeを続けたいときはＡｘｈを入力し、該モードをオフしたいときはＡｘｈ以外の値を入力）することで、ＩＯ１ピンとＩＯ２ピンから前記アドレスのデータを読み出すことができ、さらに引き続くデータをSequential Readで読み出せる。Continuous Read Modeによれば、命令コードを省略できるので、高速なランダムアクセスが実現できる。
【００４１】
Fast Read Quad IOは、Fast Read Dual IOと同様に動作する読み出し命令（命令コードＥＢｈ）である。Fast Read Dual IOではＩＯ１ピンとＩＯ２ピンの２ピンを利用してアドレスとモードの入力とデータ出力を行うが、Fast Read Quad IOではＩＯ１〜ＩＯ４の４ピンを用いてそれらの入出力を行う。また、Fast Read Dual IOではモード入力のための４クロックの後、直ちにＩＯ１ピンとＩＯ２ピンの機能が入力から出力に切り替えられてデータ出力が始まるが、Fast Read Quad IOではモード入力のための２クロックの後、ダミーの４クロックが挿入されてからＩＯ１〜ＩＯ４の機能が切り替えられてデータ出力が開始される。その後、引き続くデータをSequential Readで読み出せる。また、Fast Read Quad IOでもContinuous Read Modeの指定が可能である。なお、ＩＯ１〜ＩＯ４の４ピンを用いてデータ入出力を行うQuad命令を利用する場合は、シリアルフラッシ１２１内のステータスビット中のＱＥ（Quadイネーブル）モードを予めオンに設定しておく必要がある。
【００４２】
図２は、シリアルフラッシュ１２１におけるメモリアクセスのタイミング図である。シリアルフラッシュ１２１は、各アドレスに１バイトのデータが記憶されている。すなわち、アドレスを指定することでバイト単位でデータを読み出せるものとする。
【００４３】
比較のため、図２（ｃ）に、従来より使われているＮＯＲ型フラッシュメモリ（ＳＲＡＭタイプ）の２ワードアクセスのタイミング図を示す。このフラッシュメモリは、２４本のアドレス端子と１６本のデータ端子を備え、該アドレス端子に２４ビットパラレルのアドレスを入力して、データ端子からは当該アドレスに記憶された１ワード（１６ビット）をパラレルデータとして読み出すものである。「ＭＣＫ」はクロック信号を示す。ここでは３３ＭＨｚ強の周波数のクロック信号とする。「アドレス」は２４ビットのアドレスを入力するタイミング、「データ」は当該アドレスのデータが出力されるタイミングを示す。
【００４４】
図２（ａ）は本実施形態のシリアルフラッシュ１２１の第１回目の１ワードアクセスのタイミング図、図２（ｂ）は本実施形態のシリアルフラッシュ１２１の第２回目以降の２ワードアクセスのタイミング図を示す。ここでは、Fast Read Quad IO命令でContinuous Read Modeを指定する場合を例として説明する。
【００４５】
図２（ａ）および（ｂ）の「ＣＬＫ」はクロック信号を示す。図２（ｃ）の従来例のクロック信号ＭＣＫが３３ＭＨｚ強であったのに対し、本実施形態の音源ＬＳＩのクロック信号ＣＬＫは、その２倍の６６ＭＨｚ強の周波数のクロック信号とした。図２（ａ）〜（ｃ）は、ほぼ同じタイムスケールで図示している。
【００４６】
図２（ａ）の第１回目のアクセスでは、２０１の時点でＣＳを“０”とし、次の８クロックの期間２０２でＩＯ１ピンにＥＢｈ（Fast Read Quad IOの命令コード）を入力し、次の６クロックの期間２０３でＩＯ１〜ＩＯ４の４ピンを使って２４ビットのアドレスを入力し、次の２クロックの期間２０４でＩＯ１〜ＩＯ４の４ピンを使って８ビットのモードを入力する。モードは、Continuous Read Modeを指定するＡｘｈを入力する。ダミー期間２０５の後、次の４クロックの期間２０６でＩＯ１〜ＩＯ４の４ピンを使って前記アドレスの１バイトおよび次のアドレスの１バイト（合わせて１６ビット）を読み出している。２０７の時点でＣＳを“１”として、第１回目の１ワードアクセスを終える。もちろんＣＳを“０”のままにすれば、Sequential Readにより連続してデータを読み出すことができる。
【００４７】
Continuous Read Modeが指定されているので、これに続けて行われる、Fast Read Quad IO 命令を用いた第２回目以降のアクセスでは命令コードの入力を省略できる。従って、図２（ｂ）では、２１１の時点でＣＳを“０”とした後、命令コードの入力を省略して、直ちに８クロックの期間２１２で２４ビットのアドレスと８ビットのモードの入力を行える。ダミーの期間２１３の後、８クロックの期間２１４で前記アドレスから連続する２ワード（１６ビット×２）を読み出している。
【００４８】
図２（ｂ）から分かるようにContinuous Read Modeを使うことで、２０クロック強で２ワードを読み出すことができる（マージンは１〜数クロック）。ほぼ同じ時間スケールの図２（ｃ）の従来のパラレルメモリのアクセスでも同じ程度の時間で２ワードを読み出している。すなわち、シリアルフラッシュを利用して、従来のパラレルメモリと同程度のアクセス速度を確保することができる。パラレルメモリを使うと長い配線のラインを生じ、それが放射される電磁波（ノイズとなる）の量を増やす原因になる場合があるが、本実施形態のようなシリアルフラッシュを利用すればチップのピン数が少ないので配線を短くすることができ、不要な電磁波の放射量を抑えることができる。
【００４９】
図３は、ＣＰＵ１０１と音源部（のアドレス発生部１０３）によるシリアルフラッシュ１２１のアクセスタイミング例を示す。３０１は、音源部のアドレス発生部１０３で波形の読み出しアドレス（波形アドレス）を出力して波形サンプル要求（２Ｗ要求）をシリアルフラッシュＩ／Ｆ１０８に発行し、該波形サンプル要求に応じてシリアルフラッシュＩ／Ｆ１０８から出力される当該波形アドレスからの２波形サンプル（２ワード）を音源部で受け取る、アクセスタイミング例を示す。３０２は、ＣＰＵ１０１が、プログラムカウンタが示す読み出しアドレス（命令アドレス）を出力してフェッチ要求（１Ｗ要求または２Ｗ要求）をシリアルフラッシュＩ／Ｆ１０８に発行し、該フェッチ要求に応じてシリアルフラッシュＩ／Ｆ１０８から出力される当該命令アドレスを先頭とするプログラム命令（１ワードまたは２ワード）をＣＰＵ１０１が取り込む、アクセスタイミング例を示す。３０３は、シリアルフラッシュＩ／Ｆ１０８が、上記波形サンプル要求やフェッチ要求を受け、シリアルフラッシュ１２１にアクセスして１ワードないし２ワードのデータを読み出している期間（１Ｗないし２Ｗアクセス期間）を示す。
【００５０】
図３に示される動作に先立って、図２（ａ）のFast Read Quad IO 命令を用いた１回目のアクセスが、シリアルフラッシュ１２１に対して行われており、そこでContinuous Read Mode が指定されているので、ここでは、シリアルフラッシュ１２１に対するFast Read Quad IOアクセスが、全て図２（ｂ）のContinuous Read Modeの態様で行われる。また、図３では、音源部の第２ｃｈと第３ｃｈとで楽音生成が進行中であり、アドレス発生部１０３は、第２ｃｈと第３ｃｈのタイムスロットにおいて、それぞれ２Ｗ要求の波形アドレスをシリアルフラッシュＩ／Ｆ１０８に対して出力（波形サンプル要求）する。ここでの波形アドレスが「２Ｗ要求」であるのは、補間部１０４でのサンプル間補間用に、連続する２波形サンプルを供給するためである。波形アドレス（２Ｗ要求）を受け取ったシリアルフラッシュＩ／Ｆ１０８は、同じｃｈのタイムスロット内において、シリアルフラッシュ１２１に対して２Ｗアクセス（図２（ｂ））を行い、その波形アドレスを先頭とする２ワード（２波形サンプル）を読み出して補間部１０４に供給する。なお、シリアルフラッシュＩ／Ｆ１０８は、発音していないｃｈのタイムスロットでは、シリアルフラッシュ１２１に対して全くアクセスしない。
【００５１】
一方で、ＣＰＵ１０１は、シリアルフラッシュ１２１から動作プログラムを読み出して実行する。動作プログラムには、１ワードのプログラム命令と、２ワードのプログラム命令が混在している。ＣＰＵ１０１からの１Ｗ要求の命令アドレスの出力（フェッチ要求）に応じて、シリアルフラッシュＩ／Ｆ１０８は、シリアルフラッシュ１２１に対して１Ｗアクセス（図２（ｂ）の例より４クロック短い）を行い、その命令アドレスを先頭とする１ワード（１プログラム命令）を読み出してＣＰＵ１０１に供給する。また、ＣＰＵ１０１からの２Ｗ要求の命令アドレスの出力（フェッチ要求）に応じて、シリアルフラッシュＩ／Ｆ１０８は、シリアルフラッシュ１２１に対して２Ｗアクセス（図２（ｂ））を行い、その命令アドレスを先頭とする２ワード（１プログラム命令）を読み出してＣＰＵ１０１に供給する。
【００５２】
矢印３１１は、音源部のアドレス発生部１０３から第２ｃｈのタイムスロットで出力された第２ｃｈの波形アドレス（２Ｗ要求）が、シリアルフラッシュＩ／Ｆ１０８に受け付けられた時点を示す。この場合は、ＣＰＵ１０１からシリアルフラッシュ１２１へのアクセスがなされていなかったため、出力された２Ｗ要求は、当該タイムスロットの開始時点で直ちにシリアルフラッシュＩ／Ｆ１０８によって受け付けられる。そして、シリアルフラッシュＩ／Ｆ１０８は、時点３１１からの２０クロック強の期間３１２に、シリアルフラッシュ１２１に対する２Ｗアクセス３１２を行い、当該波形アドレスを先頭とする２ワード（２波形サンプル）を読み出す。読み出された２波形サンプルは、２Ｗアクセス３１２が完了した時点で、補間部１０４の読み出しバッファ（図示せず）に一時的に記憶される。補間部１０４は、アドレス発生部１０３のタイムスロット（第iｃｈ）より１ｃｈ分遅れたタイムスロット（第i-1ｃｈ）で動作しており、各タイムスロット（第i-1ｃｈ）の先頭からの所定期間（例えば、図３の期間３１４）に、読み出しバッファに格納されている２波形サンプルを用いて、第i-1ｃｈの補間サンプル（図３では、第２ｃｈの補間サンプル）生成のためのサンプル間補間処理を実行する。そのため、各タイムスロットの補間処理に用いる２波形サンプルは、その補間処理の開始時点までに読み出しバッファに用意しておく必要がある。
【００５３】
一方、ＣＰＵ１０１は、音源部とは独立に、動作プログラムの各プログラム命令の読み出し要求（フェッチ要求）を行う。期間３１５は、ＣＰＵ１０１が読み出しアドレスである命令アドレス（１Ｗ要求）をシリアルフラッシュＩ／Ｆ１０８に対して出力する期間である。ＣＰＵ１０１がその１Ｗ要求を出力し始めた時点（期間３１５の先頭）では、音源部のためのフラッシュメモリ１２１に対するアクセス３１２がなされており、それが終わるまで当該１Ｗ要求に応じたアクセスは待たされる。そして、アクセス３１２終了後の時点３１６で、当該１Ｗ要求がシリアルフラッシュＩ／Ｆ１０８に受け付けられる。シリアルフラッシュＩ／Ｆ１０８は、続く１６クロック強の期間３１７に、シリアルフラッシュ１２１に対する１Ｗアクセス３１７を行い、当該命令アドレスを先頭とする１ワード長の１プログラム命令を読み出す。該読み出しの完了時点（期間３１７の末尾）で、フラッシュメモリＩ／Ｆ１０８からＣＰＵ１０１に、読み出されたプログラム命令が供給され、ＣＰＵ１０１はそのプログラム命令をフェッチする。ＣＰＵ１０１は、フェッチした当該プログラム命令を自装置内の制御手順に従ってデコード・実行する。
【００５４】
この１Ｗ要求に続けて、ＣＰＵ１０１は、次の命令アドレス（２Ｗ要求）を出力する。この時点（期間３１８の先頭）では、音源部のためのフラッシュメモリ１２１アクセスは行われていないので、当該２Ｗ要求は、シリアルフラッシュＩ／Ｆ１０８によって直ちに受け付けられ、続く２０クロック強の期間３１９に、フラッシュメモリ１２１に対して、対応する２Ｗアクセス３１９が行われる。シリアルフラッシュＩ／Ｆ１０８は、期間３１９の終わりに、２Ｗアクセス３１９により読み出された２ワード長の１プログラム命令をＣＰＵ１０１に供給し、ＣＰＵ１０１はそのプログラム命令をフェッチする。
【００５５】
さらに、第３ｃｈのタイムスロットの開始時点で、音源部のアドレス発生部１０３は、第３ｃｈの波形アドレス（２Ｗ要求）をシリアルフラッシュＩ／Ｆ１０８に対して出力するが、ＣＰＵ１０１のためのフラッシュメモリ１２１に対する２Ｗアクセス３１９が行われており、第３ｃｈの２Ｗ要求は、そのアクセス３１９が終わるまで待たされる。期間３１９の終了後の時点３２０で、シリアルフラッシュＩ／Ｆ１０８は、第３ｃｈの２Ｗ要求を受け付け、２０クロック強の２Ｗアクセス３２１を実行する。これにより、フラッシュメモリ１２１から第３ｃｈの補間処理に用いる２波形サンプル（２ワード）が読み出され、読み出しバッファに格納される。
【００５６】
以上のような音源部とＣＰＵ１０１によるシリアルフラッシュ１２１へのアクセスの競合は、シリアルフラッシュＩ／Ｆ１０８により調停される。特に、音源部からの２Ｗ要求に応じた２Ｗアクセスは、補間部１０４の補間処理の開始まで、というデッドラインがあるため、ＣＰＵ１０１からの１Ｗ要求ないし２Ｗ要求に応じたアクセスより優先的に実行される。すなわち、シリアルフラッシュ１２１に対して新たなアクセスを行える時点において、音源部からの２Ｗ要求と、ＣＰＵ１０１からの１Ｗ要求または２Ｗ要求とが共に出力されていた場合、シリアルフラッシュＩ／Ｆ１０８は、音源部からの２Ｗ要求に応じた２Ｗアクセスを実行する。ただし、図３で説明したように、ＣＰＵ１０１のためのフラッシュメモリ１２１アクセス中に、音源からの２Ｗ要求が出力されても、その２Ｗ要求に応じた２Ｗアクセスを割り込み実行することはない。また、１ｃｈ分のタイムスロットは、アドレス発生部１０４のあるｃｈのタイムスロットの開始時点で、運悪く、フラッシュメモリＩ／Ｆ１０８がＣＰＵ１０１のための最長のアクセス（ここでは２Ｗアクセス）を開始したとしても、同じタイムスロット内にそのｃｈのための所定ビット長のアクセス（ここでは２Ｗアクセス）が完了できるよう、該最長のアクセスと該所定長のアクセスとが行えるだけの時間長（ここでは２Ｗアクセス×２回に１〜１０クロック程度のマージンを加えた時間長）を有するよう設計されている。
【００５７】
図４（ａ）は、本実施形態の電子楽器の電源オンあるいはリセット時にＣＰＵ１０１が実行する起動プログラムの動作を示す。この起動プログラムは内部ＲＯＭ１１２に記憶されており、電源オンあるいはリセット時には、ＣＰＵ１０１が当該起動プログラムを実行するように設定されている。ＣＰＵ１０１は、ステップ４０１でシリアルフラッシュ１２１の状態をリセット（格納されているデータは不変）し、ステップ４０２で、シリアルフラッシュＩ／Ｆ１０８を用いて、シリアルフラッシュ１２１から、モードを初期化するためのプログラムを読み出して内部ＲＡＭ１１３にロードし、プログラムカウンタが示す命令アドレス（ＣＰＵ１０１が実行するプログラム命令のアドレス）を、該ロードした初期化プログラムの開始点（最初に実行すべきプログラム命令のアドレス）にジャンプさせる。これにより、ＣＰＵ１０１は、内部ＲＡＭ１１３から初期化プログラムのプログラム命令を１つずつ順次読み出して実行するようになる。なお、ステップ４０２における、シリアルフラッシュ１２１に対する読み出しアクセスには、何らモードを設定しなくても実行可能な読み出し命令（例えば、命令コード０３ｈのRead Data）が用いられる。
【００５８】
図４（ｂ）は、上記内部ＲＡＭ１１３にロードして実行される初期化プログラムの処理手順を示す。ステップ４１１では、ＣＰＵ１０１は、シリアルフラッシュＩ／Ｆ１０８を用いて、シリアルフラッシュ１２１のレジスタから、メーカー名、メモリタイプ、容量等の情報と、現在の各種ステータスを示すステータスビット（複数ビット）とを読み出して、Fast Read Quad IO命令を有効にするモード（ＱＥモード）を特定する。ここで特定されるＱＥモードは、メーカーやメモリタイプによって異なる場合がある。ステップ４１２で、ＱＥモードのステータスビットが「１」であるか否か、すなわち、シリアルフラッシュ１２１が既にＱＥモードに設定されているか否かを判定する。ＱＥモードに設定されていなければ、ＣＰＵ１０１は、ステップ４１３で、シリアルフラッシュＩ／Ｆ１０８を用いて、フラッシュメモリ１２１をＱＥモードに初期設定する。ステップ４１４では、シリアルフラッシュＩ／Ｆ１０８に、シリアルフラッシュメモリ１２１に対する、Fast Read Quad IO命令（ＥＢｈ）を用いた第１回目のワードアクセス（図２（ａ））を行わせる。この読み出しアクセスはダミーであり、読み出されたデータは使用してもしなくても良い。また、この読み出しアクセスは、モードとしてContinuous Read Mode（Ａｘｈ）を指定したものであり、これ以降のシリアルフラッシュＩ／Ｆ１０８によるフラッシュメモリ１２１からのデータ読み出しは、全て、図２（ｂ）で説明した命令コード（ＥＢｈ）を省略したFast Read Quad IO命令による読み出しアクセスとされる。
【００５９】
その後、ＣＰＵ１０１は、プログラムカウンタの示す命令アドレスを、シリアルフラッシュ１２１に格納されている制御プログラムの開始点にジャンプさせる。これにより、ＣＰＵ１０１は、フラッシュメモリ１２１に記憶された制御プログラムのプログラム命令を１つずつ順次実行するようになる。より詳細に述べると、ＣＰＵ１０１は、プログラムカウンタの示す命令アドレスが変化する毎に、そのアドレスの１ワードないし２ワードのプログラム命令を要求する命令アドレスをシリアルフラッシュＩ／Ｆ１０８に対して出力（フェッチ要求）する。シリアルフラッシュＩ／Ｆ１０８は、該命令アドレス（１Ｗ要求ないし２Ｗ要求）に応じて、フラッシュメモリ１２１に対する命令コードを省略したFast Read Quad IOアクセス（図２（ｂ））を行い、フラッシュメモリ１２１から１ワードないし２ワードの１プログラム命令を読み出す。そして、読み出された１プログラム命令が、ＣＰＵ１０１によってフェッチされ実行される。
【００６０】
図４（ｃ）は、ＣＰＵ１０１によって、図４（ｂ）の初期化プログラムの後に実行される当該制御プログラムの手順を示す。まずステップ４２１で初期設定を実行する。ステップ４２２で、操作子１２５の操作や、ＭＩＤＩ Ｉ／Ｏ１２４等でのデータ受信や、音源からの状態通知や、図示しないタイマによる時間割込などの各種イベントの発生を検出し、ステップ４２３でイベントがあったとき、ステップ４２４でそのイベントに応じた処理を実行する。その後はステップ４２２に戻り、イベントの検出からの処理を繰り返す。ここでの処理の具体例としては、既に説明したノートオンイベントに応じたノートオンイベント処理、ノートオフイベントに応じたノートオフイベント処理以外にも、操作子の操作に応じて音色を調整する音色エディット処理や、タイマ割込に応じた自動演奏や自動伴奏の処理などがある。
【００６１】
なお、上記実施形態では、電源投入後の、シリアルフラッシュＩ／Ｆ１０８による、シリアルフラッシュ１２１をContinuous Read Modeに設定するための最初のダミーリードが、ＣＰＵ１０１の指示で行われていたが、音源部からの指示に応じて行われるようにしてもよい。また、上記実施形態では、ＱＥモードによる４ＩＯ読み出し命令（上述のFast Read Quad IO命令のようにシリアルフラッシュのピンを４本使用してアドレス指定とデータ出力とをそれぞれ（１クロックで）４ビットずつ行う４ピン双方向高速読み出し命令を「４ＩＯ読み出し命令」と呼ぶ。同様に、ピンをｎ本使用してアドレス指定とデータ出力とをそれぞれｎビットずつ行うｎピン双方向高速読み出し命令を「ｎＩＯ読み出し命令」と呼ぶ。）を使用したが、２ＩＯ読み出し命令を使用しても良い。また、将来、シリアルフラッシュに、６ＩＯ読み出し命令や８ＩＯ読み出し命令等が実装されたときには、４ＩＯ読み出し命令の代わりにそれらを使用してもよい。
【００６２】
上記実施形態では、ＣＰＵ１０１がシリアルフラッシュ１２１から読み出しつつ実行するプログラムの１つのプログラム命令は１Ｗ命令または２Ｗ命令としたが、１つのプログラム命令の長さは任意である。また、ＣＰＵ１０１は、１度の読み出しアクセスでシリアルフラッシュ１２１から複数のプログラム命令を読み出して一時記憶しておき、順次実行するようにしてもよい。例えば、上記実施形態では、次に読み出すべきプログラム命令が１Ｗ命令ならＣＰＵ１０１からフラッシュメモリ１２１に１Ｗ要求を発行して１Ｗのプログラム命令をフェッチし、次に読み出すべきプログラム命令が２Ｗ命令ならＣＰＵ１０１からフラッシュメモリ１２１に２Ｗ要求を発行して２Ｗのプログラム命令をフェッチしているが、次およびその次に読み出すべきプログラム命令が何れも１Ｗ命令であったとき、ＣＰＵ１０１からフラッシュメモリ１２１に２Ｗ要求を発行して２つの１Ｗのプログラム命令をフェッチし順次実行するようにしても良い。
【００６３】
ＣＰＵによっては、１回のフェッチで複数ワードのプログラムコードを読み込み、ＣＰＵ内部の命令バッファに補充して保持しておき、順次、命令をデコード・実行するものがあるので、ＣＰＵ１０１としてそのような機能を持つものを使用すれば、１度の読み出しアクセスでシリアルフラッシュ１２１から複数ワードのプログラムコードを読み出し、順次デコード・実行させることができる。この場合、シリアルフラッシュ１２１から読み出されるプログラムコードは、命令バッファの空きやＣＰＵ内部の実行のスケジューリングに応じて補充するものであるので、必ずしも命令単位の読み出しでなくてもよい。読み出すべきプログラムコードは、プログラムカウンタの進行に応じたアドレスに格納されているが、必ずしもプログラムカウンタで指し示すアドレスから読み出しが開始されるとは限らず、１度の読み出しで、複数ワードからなる１命令の途中から読み出しを開始したり、あるいは１つの命令の途中で読み出しを終えたりしてもよい。従って、ＣＰＵ１０１からフラッシュメモリ１２１へのプログラムコードの読み出し要求は、１Ｗであったり２Ｗであったりする可変長であるが、命令単位とは限らない。
【００６４】
また、上記実施形態では図３の期間３１５や３１８でＣＰＵ１０１がフェッチ要求を発行してプログラム命令をフェッチすると説明したが、ＣＰＵ１０１内にフェッチされた当該命令の「デコード」や「実行」は、必ずしもプログラム命令をフェッチしたのと同じタイムスロット内で行われるとは限らない。ＣＰＵによってはパイプライン処理を行うものもあるので、フェッチしたタイミングより所定クロック後にデコードや実行が為される場合もある。フェッチが為された後のデコードや実行などの処理は、ＣＰＵの内部的な制御手順によれば良い。
【００６５】
また、シリアルフラッシュ１２１に格納されたプログラムは命令を表すコードのみならず定数データを表すコードを含んでいてもよい。例えば、シリアルフラッシュ１２１にはプログラムの一部として読み出し専用の定数データが納められており、プロセッサはそのデータをロードする命令を実行することがある。その場合、プロセッサは命令をフェッチし、デコードし、デコード結果に応じてシリアルフラッシュ１２１からデータを読み出してレジスタに格納する。このような定数データを表すプログラムコードを読み出す場合も、ＣＰＵ１０１からフラッシュメモリ１２１に読み出し要求を発行して読み出すようにしてよく、その一度に読み出すデータサイズも実行状況によって１Ｗであったり２Ｗであったりする。
【００６６】
上記実施形態では、波形サンプルと制御プログラムを記憶する記憶装置としてシリアルフラッシュを使用したが、シリアルフラッシュの代わりに、アドレスとデータのビット数分のピンが設けられたパラレルにデータ読み出し可能なメモリ（ただし、Sequential ReadやContinuous Read Modeの機能を備えたものとする）を使用しても良い。その場合、基板上の配線はコンパクトにはできないが、Sequential ReadやContinuous Read Modeの機能により、メモリアクセス時間が短縮されるので、音源部の同時発音数を増やすことができる。
【００６７】
次に、上記実施形態における波形データの読み出しについてさらに詳しく説明する。
【００６８】
図５（ａ）は、本実施形態におけるシリアルフラッシュメモリ１２１に記憶されている波形データの読み出し例１を示す。既に説明したように本実施形態では、１つの波形サンプルデータが１Ｗ（ワード）長であり、１つのｃｈに着目したとき、サンプリング周期の当該ｃｈの各タイムスロット毎に、連続する２Ｗを読み出し、それらの２Ｗから得られる連続する２つの波形サンプルデータを２点補間して、各タイムスロット毎の１つの波形サンプルデータを得ている。
【００６９】
図５（ａ）において、５０１はアタック部の一連の波形サンプル、５０２はループ部の一連の波形サンプルである。各矩形は１Ｗ長の１つの波形サンプルを示す。ＡＳはアタック部５０１の先頭の波形サンプルデータであり、該波形サンプルデータＡＳに引き続いてアタック部の以降の波形サンプルデータが記憶されている。ＡＥはアタック部５０１の最後の波形サンプルデータであり、該波形サンプルデータＡＥに引き続いてループ部５０２の波形サンプルデータが記憶されている。ＬＳはループ部５０２の先頭の波形サンプルデータ（ループスタートサンプル）、ＬＥはループ部５０２の最後の波形サンプルデータ（ループエンドサンプル）を示す。さらに本実施形態では、ループ部５０２の最後の波形サンプルデータＬＥの次に、ループ部５０２の先頭の波形サンプルデータＬＳと同じデータＬＳ’を設定してある。ＯＵＴで示すそれ以降の領域は、本波形データとは別の波形データあるいはダミーデータであり、本波形データとは無関係である。
【００７０】
あるｃｈでこの波形データを用いる発音指示が為された場合、まず最初のサンプリング周期の当該ｃｈのタイムスロットで、アドレス発生部１０３からシリアルフラッシュＩ／Ｆ１０８に、読み出しアドレスとして当該波形データの先頭アドレス（サンプルＡＳのアドレス）を渡して、２Ｗの読み出し要求を出力する。（なお、初回の読み出しでは小数部の値は０であるので補間部１０４には小数部として０が与えられ、また読み出しアドレスの整数部は当該波形データの先頭アドレスそのものであるので、シリアルフラッシュＩ／Ｆ１０８には整数部として当該先頭アドレスが与えられる。）シリアルフラッシュＩ／Ｆ１０８は、受け取った当該波形データの先頭アドレスでシリアルフラッシュ１２１に対して２Ｗアクセス（図２（ｂ））を行い、矢印５１１に示す２波形サンプルを連続的に読み出し、補間部１０４に渡す。そして、補間部１０４以降の処理により当該ｃｈの楽音波形データを生成する。シリアルフラッシュＩ／Ｆ１０８は、補間に必要なサンプル数である２サンプルが読み出し終わったタイミングでＣＳを“１”として、シリアルフラッシュ１２１に対して読み出しの終了を指示する。該指示に応じて、シリアルフラッシュ１２１は読み出し動作を終了する。
【００７１】
アドレス発生部１０３は、次のサンプリング周期の当該ｃｈのタイムスロットにおける読み出しのために読み出しアドレスを更新する。この処理は、現読み出しアドレスに、発音すべき楽音の音高に応じたピッチシフト量（いわゆる「周波数ナンバ」と呼ばれ、小数部分を含む値である）を加算する処理である。アドレス発生部１０３は、更新された読み出しアドレスの整数部をシリアルフラッシュＩ／Ｆ１０８に渡して２Ｗの読み出し要求を出力するとともに、更新された読み出しアドレスの小数部を補間部１０４に出力する。これにより、シリアルフラッシュ１２１から２波形サンプル（矢印５１２に示す２サンプル）が読み出されて補間部１０４に入力し、補間部１０４以降の処理で当該サンプリング周期における楽音波形データの生成が行われる。以下同様にして、サンプリング周期毎に現読み出しアドレスに対する周波数ナンバの累算が行われ、２波形サンプルデータの読み出し（矢印５１３，…）と補間部１０４以降の処理による楽音波形データの生成が引き続き実行される。
【００７２】
なお、周波数ナンバの値は、楽音に対する効果付与のために変動させる場合がある。従って、もともと小数部分を含みかつ変動する周波数ナンバの値を累算していくので、その累算結果の整数部、すなわちシリアルフラッシュＩ／Ｆ１０８に出力されるアドレスは、サンプリング周期毎に幾つ進むかは区々である。
【００７３】
図５（ａ）では、５１１〜５１３のように波形サンプルの読み出しが開始され、サンプリング周期毎に周波数ナンバの累算が行われて読み出しアドレスが徐々に進んでいく。そして、当該読み出しアドレスはアタック部５０１からループ部５０２へと進行する。さらにループ部５０２の波形サンプルが読み出されていき、５２１に示す２波形サンプル、５２２に示す２波形サンプルが読み出される。その次のサンプリング周期で、読み出しアドレスがサンプルＬＳ’のアドレス（すなわち、サンプルＬＳ’とその次のサンプルの２サンプルの読み出し要求）になったとする。本実施形態では、読み出しアドレスがサンプルＬＥのアドレスを超えたとき、当該読み出しアドレスからループ部５０２の長さ（サンプルＬＳからＬＥの長さ）を減算（読み出しアドレスの小数部の値は保持する）する。これにより、読み出す２波形サンプルは、矢印５２３の２サンプルではなく、ループ部５０２の先頭部分に戻って、矢印５３１の２サンプルが読み出し対象となる。そして、引き続き矢印５３２の２サンプル…というように読み出しが進んでいく。
【００７４】
図５（ｂ）は、本実施形態における別の読み出し例２を示す。波形データの構成は図５（ａ）と同じである。アタック部５０１からの読み出しは、矢印５４１〜５４３に示すように図５（ａ）と同様に進んだとする。さらにアタック部５０１からループ部５０２の読み出しへ進み、あるサンプリング周期で矢印５５１の２波形サンプルが読み出されたとする。その次のサンプリング周期では、読み出しアドレスの整数部が波形サンプルＬＥのアドレスとなり、矢印５５２に示す２サンプルが読み出される。このとき、ループ部５０２の最後のサンプルＬＥの次にループ部５０２の先頭のサンプルＬＳと同じＬＳ’が記憶されているので、矢印５５２に示す２サンプルの読み出しは問題なく行われる。次のサンプリング周期では、読み出しアドレスの更新処理により、読み出しアドレスの整数部がサンプルＬＳ’のアドレスになったとする。これは、矢印５５３に示す２サンプルを読み出し対象とすることを意味するが、このとき読み出しアドレスはループ部５０２の最後のサンプルＬＥのアドレスを超えているので、該読み出しアドレスからループ部５０２の長さ（サンプルＬＳからＬＥの長さ）を減算（読み出しアドレスの小数部の値は保持する）する。これにより、読み出す２波形サンプルは、矢印５５３の２サンプルではなく、ループ部５０２の先頭部分に戻って、矢印５６１の２サンプルが読み出し対象となる。そして、引き続き矢印５６２の２サンプル…というように読み出しが進んでいく。
【００７５】
上記実施形態では２点補間を前提としたので、ループ部５０２の最後のサンプルＬＥから２サンプルが連続して読み出せるようにＬＳ’を設定したが、３点以上の補間の場合も同様である。一般的に、ｎ点補間の場合はループ部５０２の最後のサンプルＬＥの次からｎ−１個のサンプル（ループスタートからのｎ−１個のサンプルの複製）を設定しておけば良い。
【００７６】
図６は、４点補間の場合の読み出し例を示す。６０１はアタック部の一連の波形サンプル、６０２はループ部の一連の波形サンプルである。４点補間であるので、ループ部６０２の最後の波形サンプルＬＥの次に３点分の波形サンプルＬＳ’と（ＬＳ＋１）’と（ＬＳ＋２）’を設定している。ＬＳ’はループ部５０２の先頭の波形サンプルデータＬＳの複製、（ＬＳ＋１）’はループ部５０２の先頭から２番目の波形サンプルデータ（ＬＳ＋１）の複製、（ＬＳ＋２）’はループ部５０２の先頭から３番目の波形サンプルデータ（ＬＳ＋２）の複製である。
【００７７】
読み出しの処理は、上述の２点補間の実施形態と同様である。ただし、４点補間であるので、指定された整数部のアドレスから連続する４個の波形サンプルが読み出される。例えば、発音指示があった初回の読み出しでは、アドレス発生部１０３からシリアルフラッシュＩ／Ｆ１０８に当該波形データの先頭アドレス（サンプルＡＳのアドレス）が渡され４Ｗの読み出し要求が出力されるが、これに応じて、矢印６１１に示す４波形サンプルが読み出される。サンプリング周期毎に読み出しアドレスが進み、ループ部６０２の後半に至ると、例えば、あるサンプリング周期で矢印６２１の４サンプルが読み出され、次のサンプリング周期で矢印６２２の４サンプルが読み出され、さらに次のサンプリング周期で矢印６２３の４サンプルが読み出され、というように読み出しが進行する。さらにその次のサンプリング周期で、読み出しアドレスの整数部がサンプルＬＳ’のアドレスになったとする。これは、矢印６２４に示す４サンプルを読み出し対象とすることを意味するが、このとき読み出しアドレスはループ部６０２の最後のサンプルＬＥのアドレスを超えているので、該読み出しアドレスからループ部６０２の長さ（サンプルＬＳからＬＥの長さ）を減算（読み出しアドレスの小数部の値は保持する）する。これにより、読み出す４波形サンプルは、矢印６２４の４サンプルではなく、ループ部６０２の先頭部分に戻って、矢印６３１の４サンプルが読み出し対象となる。そして、引き続き矢印６３３の４サンプル、矢印６３４の４サンプル…というように読み出しが進んでいく。
【００７８】
以上のように、ループ部の最後のサンプルの直後にループ部の先頭のサンプルの複製（ｎ点補間の場合、ｎ−１個の複製）を設定しているので、ループ部の後半でも１回の読み出し処理でｎ点の連続するサンプルを読み出すことができ、ループさせる場合でも破綻無く発音数を増やすことができる。
【００７９】
なお、上記実施形態では、各サンプリング周期において、毎回必ず補間に必要な個数の波形サンプルの読み出しを行うものとして説明した。しかし、シリアルフラッシュＩ／Ｆ１０８に、前に読み込んだ所定数の波形サンプルを保持しておく機構を設け、シリアルフラッシュＩ／Ｆ１０８からシリアルフラッシュメモリ１２１に波形サンプルの読み出し要求を出力する際に、既に保持している波形サンプルデータを使い回すことができる場合はそれらのサンプルの読み出し要求を省略するようにしてもよい。このように重複した読み込みを省略することにより、毎回補間に必要な個数のサンプルを読みこむ必要はなく、保持されていない分だけを読みこめばよいので、シリアルフラッシュメモリ１２１へのアクセス時間の短縮を図ることができる。なお、あるサンプリング周期において、保持されている波形サンプルデータが補間に使えるか否かは、ピッチシフト量による読み出しアドレスの進み具合によって変わる。そのため、一回の読み出しで読み出すワード数は０〜Ｍ個の値をとり得る。例えば、ピッチシフト量が小さく読み出しアドレスがほとんど進まなければ、保持してある波形サンプルデータをそのまま使いまわして補間処理ができるので読み出すワード数は０になることがある。また、ピッチシフト量が正に大きくて読み出しアドレスが大きく進むと、保持してある波形サンプルデータは使いまわすことができなくて新たな波形サンプルデータを読み出さなくてはならず、読み出すワード数はＭになることがある。
【００８０】
上記実施形態では、１波形サンプルデータが１Ｗである場合を例として説明したが、波形データは圧縮された形式でもよい。データを圧縮することにより、１Ｗの中に複数の波形サンプルに対応する差分データを含めることができる。この場合、圧縮データには、デコードのためのパラメータと、波形サンプルデータに対応した差分データが含まれる。ある１つの差分データから対応する波形サンプルデータをデコード（復元）するには、その差分データが含まれる１Ｗ以前の所定数のワードデータに含まれるパラメータを利用するものとする。言い替えると、各ワードデータには、その後のワードデータに含まれる差分データをデコードするためのパラメータを設定しておくものとする。また、パラメータデータは、ワードデータを読み出した際に、アクセス部であるシリアルフラッシュＩ／Ｆ１０８内のバッファに一時記憶しておき、その後のワードデータの差分データのデコードに使用できるようにする。すなわち、波形サンプル要求に応じて、シリアルフラッシュＩ／Ｆ１０８が、必要な差分データを含むワードデータを読み込み、バッファに一時記憶してあるパラメータを利用してデコードして必要な波形サンプルデータを求める。
【００８１】
圧縮された形式の波形データとする場合でも、上述のループ部の後にループ部先頭の波形サンプル（圧縮された形式）の複製を設定しておく手法をとることができる。この場合、ループ部の後に追加したワードデータのパラメータ領域には、ループスタートのワードデータのパラメータを複製しておけばよい。ループ部の後に追加したワードデータが読み込まれたとき、そのパラメータが一時記憶され、ループスタートに戻ったときにもデコードは破綻することなく継続できる。
【符号の説明】
【００８２】
１０１…中央処理装置（ＣＰＵ）、１０２…音源レジスタ、１０３…アドレス発生部、１０４…補間部、１０５…音量変化制御部、１０６…混合部、１０７…ＤＡＣ（デジタルアナログ変換器）、１０８…シリアルフラッシュＩ／Ｆ、１０９…ＭＩＤＩ Ｉ／Ｏ、１１０…操作子Ｉ／Ｏ、１１１…表示Ｉ／Ｏ、１１２…内部ＲＯＭ、１１３…内部ＲＡＭ、１１４…内部バスライン、１２１…シリアルフラッシュメモリ、１２２…ＬＰＦ、１２３…サウンドシステム。
【図１】
2014112198.tif 000003
【図２】
2014112198.tif 000004
【図３】
2014112198.tif 000005
【図４】
2014112198.tif 000006
【図５】
2014112198.tif 000007
【図６】
2014112198.tif 000008