(57)【特許請求の範囲】
【請求項１】
楽音データと当該楽音データの読出し制御用の制御プログラムとが格納された内部のメモリから、当該楽音データを読み出し、アナログ信号である楽音信号に変換して出力する楽音出力装置であって、
水晶振動子を用いて基準クロックを生成するクロック発振器と、
前記基準クロックを逓倍して逓倍クロックを生成する逓倍回路と、
前記逓倍クロックに基づく信号に同期したタイミングで前記メモリに格納された前記楽音データを内部のバッファに格納し、所定のタイミングで当該バッファに格納された前記楽音データを転送する制御回路と、
前記逓倍クロックに基づく信号に同期して動作し、前記メモリに格納された前記制御プログラムを実行することにより、前記制御回路に前記楽音データを転送させるよう制御するＣＰＵと、
前記制御回路から転送された前記楽音データを前記基準クロックに同期したタイミングで、前記楽音信号に変換して出力するＤＡ変換器と、
前記メモリと、前記制御回路と、前記ＣＰＵとに接続し、当該メモリに格納された前記楽音データについての当該制御回路への転送、又は、前記制御プログラムについての当該ＣＰＵへの転送を媒介するデータバスとを備え、
前記ＣＰＵの制御は、当該データバスの使用権の調整に係る制御を含むものであって、
前記制御回路は、
前記ＣＰＵの制御を受け、前記データバスの使用権を得ると、読出し許可信号を送出する読出し調整回路と、
前記読出し許可信号を受領すると、前記メモリに対し、前記楽音データが格納されたアドレスと、当該アドレスに格納された楽音データの送出を指示する読出し信号とを送出する送出指示処理を行う送出指示回路と、
前記読出し許可信号を受領し、前記データバスに前記楽音データが送出されると、当該データバスから当該楽音データを前記バッファに格納する格納処理を行い、当該バッファに格納された楽音データを前記ＤＡ変換器に転送するデータ制御回路とからなるものであって、
前記メモリは、前記送出指示回路から前記読出し信号を受領すると、指定されたアドレスに格納された前記楽音データを前記データバスに送出し、
前記楽音データは、複数のサンプリングデータから構成され、所定の圧縮率で圧縮されたものであり、
前記データ制御回路の前記バッファは、前記データバスから前記楽音データを格納する第１バッファ領域と、楽音データを退避する第２バッファ領域とからなるものであって、
前記楽音出力装置は、更に
前記サンプリングデータの圧縮後のデータサイズを記憶し、当該データサイズを示す圧縮率信号を前記データ制御回路に送出する圧縮率切替えレジスタを備え、
前記データ制御回路は、前記第１バッファ領域に格納された楽音データを前記圧縮率切替えレジスタが送出した前記圧縮率信号が示すデータサイズ毎に転送し、前記圧縮率信号に示すサイズに満たない残データが生じた場合には、当該残データを前記第２バッファ領域に格納し、当該第２バッファ領域に格納された残データと次に前記第１バッファ領域に格納された楽音データの一部とを合わせて前記圧縮率信号が示すデータサイズにして転送する
ことを特徴とする楽音出力装置。
【請求項２】
楽音データと当該楽音データの読出し制御用の制御プログラムとが格納された内部のメモリから、当該楽音データを読み出し、アナログ信号である楽音信号に変換して出力する楽音出力装置であって、
水晶振動子を用いて基準クロックを生成するクロック発振器と、
前記基準クロックを逓倍して逓倍クロックを生成する逓倍回路と、
前記逓倍クロックに基づく信号に同期したタイミングで前記メモリに格納された前記楽音データを内部のバッファに格納し、所定のタイミングで当該バッファに格納された前記楽音データを転送する制御回路と、
前記逓倍クロックに基づく信号に同期して動作し、前記メモリに格納された前記制御プログラムを実行することにより、前記制御回路に前記楽音データを転送させるよう制御するＣＰＵと、
前記制御回路から転送された前記楽音データを前記基準クロックに同期したタイミングで、前記楽音信号に変換して出力するＤＡ変換器と、
前記メモリと、前記制御回路と、前記ＣＰＵとに接続し、当該メモリに格納された前記楽音データについての当該制御回路への転送、又は、前記制御プログラムについての当該ＣＰＵへの転送を媒介するデータバスとを備え、
前記ＣＰＵの制御は、当該データバスの使用権の調整に係る制御を含むものであって、
前記制御回路は、
前記ＣＰＵの制御を受け、前記データバスの使用権を得ると、読出し許可信号を送出する読出し調整回路と、
前記読出し許可信号を受領すると、前記メモリに対し、前記楽音データが格納されたアドレスと、当該アドレスに格納された楽音データの送出を指示する読出し信号とを送出する送出指示処理を行う送出指示回路と、
前記読出し許可信号を受領し、前記データバスに前記楽音データが送出されると、当該データバスから当該楽音データを前記バッファに格納する格納処理を行い、当該バッファに格納された楽音データを前記ＤＡ変換器に転送するデータ制御回路とからなるものであって、
前記メモリは、前記送出指示回路から前記読出し信号を受領すると、指定されたアドレスに格納された前記楽音データを前記データバスに送出し、
前記楽音データは、圧縮率の異なる複数のフレーズデータからなり、各フレーズデータは、複数のサンプリングデータからなるものであり、
前記楽音出力装置は、更に
前記フレーズデータ毎の圧縮後のサンプリングデータのデータサイズを記憶し、前記データ制御回路が、前記バッファに格納したフレーズデータに対応する前記データサイズ示す圧縮率信号を当該データ制御回路に送出する圧縮率切替え制御回路を備え、
前記データ制御回路は、前記バッファに格納した前記フレーズデータを前記圧縮率信号が示すデータサイズ毎に転送する
ことを特徴とする楽音出力装置。
【請求項３】
楽音データと当該楽音データの読出し制御用の制御プログラムとが格納された内部のメモリから、当該楽音データを読み出し、アナログ信号である楽音信号に変換して出力する楽音出力装置であって、
水晶振動子を用いて基準クロックを生成するクロック発振器と、
前記基準クロックを逓倍して逓倍クロックを生成する逓倍回路と、
前記逓倍クロックに基づく信号に同期したタイミングで前記メモリに格納された前記楽音データを内部のバッファに格納し、所定のタイミングで当該バッファに格納された前記楽音データを転送する制御回路と、
前記逓倍クロックに基づく信号に同期して動作し、前記メモリに格納された前記制御プログラムを実行することにより、前記制御回路に前記楽音データを転送させるよう制御するＣＰＵと、
前記制御回路から転送された前記楽音データを前記基準クロックに同期したタイミングで、前記楽音信号に変換して出力するＤＡ変換器と、
前記メモリと、前記制御回路と、前記ＣＰＵとに接続し、当該メモリに格納された前記楽音データについての当該制御回路への転送、又は、前記制御プログラムについての当該ＣＰＵへの転送を媒介するデータバスとを備え、
前記ＣＰＵの制御は、当該データバスの使用権の調整に係る制御を含むものであって、
前記制御回路は、
前記ＣＰＵの制御を受け、前記データバスの使用権を得ると、読出し許可信号を送出する読出し調整回路と、
前記読出し許可信号を受領すると、前記メモリに対し、前記楽音データが格納されたアドレスと、当該アドレスに格納された楽音データの送出を指示する読出し信号とを送出する送出指示処理を行う送出指示回路と、
前記読出し許可信号を受領し、前記データバスに前記楽音データが送出されると、当該データバスから当該楽音データを前記バッファに格納する格納処理を行い、当該バッファに格納された楽音データを前記ＤＡ変換器に転送するデータ制御回路とからなるものであって、
前記メモリは、前記送出指示回路から前記読出し信号を受領すると、指定されたアドレスに格納された前記楽音データを前記データバスに送出し、
前記楽音データのデータサイズが、前記データバスのバス幅の整数倍でない場合であって、
前記楽音出力装置は、更に
前記楽音データのデータサイズと、前記データ制御回路が１回に転送する楽音データのサイズである転送サイズとを記憶し、内部にカウンタ回路を有し、前記カウンタ回路の値が前記楽音データのサイズと一致すると前記データ制御回路に終了検知信号を送出する終了制御回路を備え、
前記データ制御回路は、前記終了検知信号を受領するまで、前記バッファに格納されたデータを転送し、データを転送する毎にデータを送出したことを示すデータ送出信号を前記終了制御回路に送出し、
前記終了制御回路は、前記データ送出信号を受領すると、前記カウンタを前記転送サイズ分計数する
ことを特徴とする楽音出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音信号を出力する楽音出力装置及び楽音出力用集積回路に関し、特にＣＰＵによる制御と楽音信号出力とを並列して実行する技術に関する。
【背景技術】
【０００２】
楽音出力部による楽音信号出力とＣＰＵによる楽音信号出力に用いるデータ指定等の制御を含むシステム制御とを並列して実行する楽音出力装置では、楽音出力部は、楽音信号再生用の比較的低い周波数のクロックにより動作させ、ＣＰＵは、その性能を発揮するため、一般的に、楽音出力部よりも高い周波数のクロックにより動作させる必要がある。
そのため、楽音出力部用のクロックを生成する発振器とＣＰＵ用のクロックを生成する発振器とをそれぞれ用意し、必要なクロックを生成する方法が考えられるが、発振器を複数使用するため、半導体チップの集積度が低下し、また、コストがかかるというデメリットがある。
【０００３】
そのため、１つの発振器により生成されたクロックから、楽音出力部とＣＰＵとに必要なクロックを発生させ、それぞれを動作させる方法が考えられる（例えば、特許文献１参照）。
一般的に、１つの発振器から生成されたクロックを基に複数の周波数のクロックを発生させるためには、ＰＬＬ（Phase Locked Loop）やリングオシレータ等のクロック発生回路を使用する。
【特許文献１】特開平９−１９８０４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ＰＬＬ等のクロック発生回路により生成されるクロックは、比較的周波数ジッタが大きく、クロック発生回路により生成されたクロックにより楽音出力部を動作させると、生成される楽音の音質が低下する原因となる。
そこで、本発明はかかる問題に鑑みてなされたものであり、１つの発振器のみで動作させながらも、ＣＰＵの性能を限定することなく、出力する楽音信号の音質の低下を抑えた楽音出力装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明にかかる楽音出力装置は、楽音データと当該楽音データの読出し制御用の制御プログラムとが格納された内部のメモリから、当該楽音データを読み出し、アナログ信号である楽音信号に変換して出力する楽音出力装置であって、水晶振動子を用いて基準クロックを生成するクロック発振器と、前記基準クロックを逓倍して逓倍クロックを生成する逓倍回路と、前記逓倍クロックに基づく信号に同期したタイミングで前記メモリに格納された前記楽音データを内部のバッファに格納し、所定のタイミングで当該バッファに格納された前記楽音データを転送する制御回路と、前記逓倍クロックに基づく信号に同期して動作し、前記メモリに格納された前記制御プログラムを実行することにより、前記制御回路に前記楽音データを転送させるよう制御するＣＰＵと、前記制御回路から転送された前記楽音データを前記基準クロックに基づく信号に同期したタイミングで、前記楽音信号に変換して出力するＤＡ変換器とを備えることを特徴とする。
【０００６】
また、上記課題を解決するために、楽音出力装置に用いられる本発明にかかる楽音出力用集積回路は、楽音データと当該楽音データの読出し制御用の制御プログラムとが格納された内部のメモリから、当該楽音データを読み出し、アナログ信号である楽音信号に変換して出力する楽音出力用集積回路であって、前記メモリに格納された前記楽音データを内部のバッファに格納し、当該バッファ格納された当該楽音データを転送する制御回路と、前記メモリに格納された前記制御プログラムを実行することにより、前記制御回路に前記楽音データを転送させるよう制御するＣＰＵと、前記楽音信号に変換して出力するＤＡ変換器とを備えることを特徴とする。
【発明の効果】
【０００７】
上述の構成を備える本発明に係る楽音出力装置、及び、楽音出力用集積回路において、ＤＡ変換器は、水晶振動子を用いて生成された比較的周波数ジッタの少ない基準クロックに基づく信号に同期したタイミングで楽音信号を出力するため、周波数ジッタによる音質の低下を抑えた楽音信号を出力することできる。
また、ＣＰＵは逓倍クロックに基づく信号に同期して動作するため、逓倍回路がＣＰＵの動作に必要な周波数の逓倍クロックを生成することにより、ＣＰＵは、動作クロックにより性能を制限されることなく、動作することができる。
【０００８】
また、前記制御回路は、前記基準クロックに基づくタイミング信号を生成する転送タイミング補正回路を含み、当該タイミング信号に同期したタイミングを前記所定のタイミングとして前記バッファに格納された前記楽音データを転送するものであって、前記楽音出力装置は、更に、前記基準クロックの所定の基準位置と前記逓倍クロックの所定の基準位置とのずれが所定程度生じていることを検出すると、前記転送タイミング補正回路にずれを検出した旨のリセット信号を送出するずれ検出回路を備え、前記転送タイミング補正回路は、前記リセット信号を受領すると、前記制御回路が前記楽音データを前記バッファに格納するタイミングと所定の関係を有するよう前記タイミング信号の生成を調整することとしてもよい。
【０００９】
これにより、基準クロックの基準位置と逓倍クロックの基準位置とが所定値以上ずれた場合に、転送タイミング補正回路は、制御回路がバッファに楽音データを格納するタイミングと所定の関係を有するよう、例えば、メモリに格納された楽音データを所定単位の単位データ毎に制御回路のバッファに格納する場合に、次の単位データがバッファに格納される前に既に格納されている単位データを転送するようタイミング信号の生成を調整するため、クロックレーシングの発生による楽音信号の音質低下を防止することができる。
【００１０】
ここで、基準位置とは、基準クロック、及び、逓倍クロックの所定の立ち上がり、又は、立ち下がりのエッジをいう。
一般的に逓倍クロックは、ＰＬＬやリングオシレータ等のクロック発生回路を用いて生成されるが、クロック発生回路によって生成される逓倍クロックは、水晶振動子により生成された基準クロックに比べ、周波数ジッタが大きく、基準クロックの基準位置と逓倍クロックの基準位置とを合わせようとしても、ずれを生じる場合がある。
【００１１】
また、前記制御回路は、前記バッファに格納された前記楽音データをオーバーサンプリングするために、当該楽音データを構成する複数のサンプリングデータについて、それぞれ複数回転送するものであることとしてもよい。
これにより、制御回路はオーバーサンプリングするために各サンプリングデータを複数回転送するため、出力される楽音信号は音質の低下を抑えたものにすることができる。
【００１２】
また、前記楽音出力装置は、更に、前記メモリと、前記制御回路と、前記ＣＰＵとに接続し、当該メモリに格納された前記楽音データについての当該制御回路への転送、又は、前記制御プログラムについての当該ＣＰＵへの転送を媒介するデータバスを有し、前記ＣＰＵの制御は、当該データバスの使用権の調整に係る制御を含むものであって、前記制御回路は、前記ＣＰＵの制御を受け、前記データバスの使用権を得ると、読出し許可信号を送出する読出し調整回路と、前記読出し許可信号を受領すると、前記メモリに対し、前記楽音データが格納されたアドレスと、当該アドレスに格納された楽音データの送出を指示する読出し信号とを送出する送出指示処理を行う送出指示回路と、前記読出し許可信号を受領し、前記データバスに前記楽音データが送出されると、当該データバスから当該楽音データを前記バッファである第1バッファに格納し、当該第1バッファに格納された楽音データを随時転送する第１データ制御回路と、前記第1バッファとは異なる第２バッファを有し、前記第１データ制御回路から転送された前記楽音データを当該第２バッファに格納し、当該第２バッファに格納された楽音データをサンプリング周期に同期したタイミングで前記ＤＡ変換器に転送する第２データ制御回路とからなるものであって、前記メモリは、前記送出指示回路から前記読出し信号を受領すると、指定されたアドレスに格納された前記楽音データを前記データバスに送出することとしてもよい。
【００１３】
これにより、データバスに送出された楽音データは、それぞれバッファを有する第1データ制御回路と第２データ制御回路とを経由してＤＡ変換器に転送され、読出し調整回路は、常に一定の周期でデータバスの使用権を得られなくても、第２データ制御装置は、サンプリング周期に同期した一定の周期で楽音データを転送することができるため、楽音再生時の波形歪みの発生を低減することができる。
【００１４】
また、前記楽音出力装置は、更に、前記メモリと、前記制御回路と、前記ＣＰＵとに接続し、当該メモリに格納された前記楽音データについての当該制御回路への転送、又は、前記制御プログラムについての当該ＣＰＵへの転送を媒介するデータバスを有し、前記ＣＰＵの制御は、当該データバスの使用権の調整に係る制御を含むものであって、前記制御回路は、前記ＣＰＵの制御を受け、前記データバスの使用権を得ると、読出し許可信号を送出する読出し調整回路と、前記読出し許可信号を受領すると、前記メモリに対し、前記楽音データが格納されたアドレスと、当該アドレスに格納された楽音データの送出を指示する読出し信号とを送出する送出指示処理を行う送出指示回路と、前記読出し許可信号を受領し、前記データバスに前記楽音データが送出されると、当該データバスから当該楽音データを前記バッファに格納する格納処理を行い、当該バッファに格納された楽音データを前記ＤＡ変換器に転送するデータ制御回路とからなるものであって、前記メモリは、前記送出指示回路から前記読出し信号を受領すると、指定されたアドレスに格納された前記楽音データを前記データバスに送出することとしてもよい。
【００１５】
これにより、１つのメモリに楽音データと楽音データの読出し制御用の制御プログラムが格納されている場合であっても、読出し調整回路が、ＣＰＵによる制御を受けてデータバスの使用権を得た後、データ制御回路は、データバスから楽音データをバッファに格納するため、ＣＰＵとデータバスの競合を起こすことなく、楽音データを取得することができる。
【００１６】
また、前記楽音出力装置は、前記読出し調整回路が、前記データバスの使用権を得て、前記読出し許可信号を送出すると、１回の前記読出し許可信号の受領に対し、前記送出指示回路による前記送出指示処理と、前記データ制御回路による前記格納処理とを複数回行うこととしてもよい。
これにより、読出し調整回路がデータバスの使用権を１回得るのに対し、データ制御回路は複数回の格納処理を行うため、格納処理回数あたりのバス使用権の調整回数を減らし、データバスを有効に活用することができる。
【００１７】
なお、データバスの使用権を得る際には、ＣＰＵと読出し調整回路との間で、データバスの使用権をどちらが得るかを調整する必要があり、バス使用権の調整中は、ＣＰＵもデータ制御回路もデータバスを使用することができない。
また、前記楽音データは、複数のサンプリングデータから構成され、所定の圧縮率で圧縮されたものであり、前記データ制御回路の前記バッファは、前記データバスから前記楽音データを格納する第１バッファ領域と、楽音データを退避する第２バッファ領域とからなるものであって、前記楽音出力装置は、更に前記サンプリングデータの圧縮後のデータサイズを記憶し、当該データサイズを示す圧縮率信号を前記データ制御回路に送出する圧縮率切替えレジスタを備え、前記データ制御回路は、前記第１バッファ領域に格納された楽音データを前記圧縮率切替えレジスタが送出した前記圧縮率信号が示すデータサイズ毎に転送し、前記圧縮率信号に示すサイズに満たない残データが生じた場合には、当該残データを前記第２バッファ領域に格納し、当該第２バッファ領域に格納された残データと次に前記第１バッファ領域に格納された楽音データの一部とを合わせて前記圧縮率信号が示すデータサイズにして転送することとしてもよい。
【００１８】
これにより、データ制御回路は、１回に第１バッファ領域に格納する楽音データのサイズが、１回に転送する楽音データのサイズの整数倍でない場合でも、１回に転送する楽音データのサイズに満たない残データが生じたときはこれを退避し、次にバッファに格納した楽音データと合わせて１回に転送する楽音データのサイズにして転送するため、ＤＡ変換器に正しく楽音データを送出することができる。
【００１９】
また、前記楽音データは、圧縮率の異なる複数のフレーズデータからなり、各フレーズデータは、複数のサンプリングデータからなるものであり、前記楽音出力装置は、更に前記フレーズデータ毎の圧縮後のサンプリングデータのデータサイズを記憶し、前記データ制御回路が、前記バッファに格納したフレーズデータに対応する前記データサイズ示す圧縮率信号を当該データ制御回路に送出する圧縮率切替え制御回路を備え、前記データ制御回路は、前記バッファに格納した前記フレーズデータを前記圧縮率信号が示すデータサイズ毎に転送することとしてもよい。
【００２０】
これにより、フレーズ毎に圧縮率の異なる楽音データであっても、データ制御回路は、各フレーズの圧縮率に対応したサイズ毎に楽音データを転送するため、ＤＡ変換器に正しく楽音データを送出することができる。
また、前記楽音データのデータサイズが、前記データバスのバス幅の整数倍でない場合であって、前記楽音出力装置は、更に、前記楽音データのデータサイズと、前記データ制御回路が１回に転送する楽音データのサイズである転送サイズとを記憶し、内部にカウンタ回路を有し、前記カウンタ回路の値が前記楽音データのサイズと一致すると前記データ制御回路に終了検知信号を送出する終了制御回路を備え、前記データ制御回路は、前記終了検知信号を受領するまで、前記バッファに格納されたデータを転送し、データを転送する毎にデータを送出したことを示すデータ送出信号を前記終了制御回路に送出し、前記終了制御回路は、前記データ送出信号を受領すると、前記カウンタを前記転送サイズ分計数することとしてもよい。
【００２１】
これにより、楽音データのデータサイズが、データバスのバス幅の整数倍でない場合でも、データ制御回路が楽音データサイズ分のデータの転送を完了すると、終了制御回路が終了検出信号をデータ制御回路に送出し、データ制御回路はＤＡ変換器への転送を停止するため、バッファに残った楽音データ以外のデータをＤＡ変換器へ転送することを防止することができる。
【００２２】
また、前記データ制御回路のバッファが１回に格納可能な楽音データのサイズと、メモリの２アドレス分のサイズとが等しい場合であって、前記楽音出力装置は、更に、前記楽音データのデータサイズと、前記メモリの２アドレス分のサイズとを記憶し、当該楽音データのサイズを当該メモリの２アドレス分のサイズで除算し、剰余がゼロでない場合に、前記データ制御回路に終了検出信号を送出する終了制御回路を備え、前記データ制御回路は、前記終了検知信号を受領すると、最後に前記バッファに格納した楽音データを１アドレス分のみ送出することとしてもよい。
【００２３】
これにより、データ制御回路が１回にバッファに楽音データを格納するサイズが、メモリの２アドレス分のサイズと等しい場合に、終了制御回路は、楽音データのサイズとメモリの１アドレス分のサイズとから、楽音データが奇数アドレス分であるかを判定し、奇数アドレス分である場合に、データ制御回路に終了検出信号を送出するため、データ制御回路は、終了検出信号を受領した場合には、最後に格納した楽音データを１アドレス分のみ転送することで、バッファに残った楽音データ以外のデータをＤＡ変換器へ転送することを防止することができる。
【００２４】
また、前記楽音出力装置は、更に、当該楽音出力装置の外部から取得した楽音データを、前記メモリの所定の開始アドレスから所定の終了アドレスまでの領域に格納するデータ転送回路を備え、前記送出指示回路は、前記開始アドレスから順次アドレスを送出し、前記終了アドレス以前の所定のアドレスを送出すると、前記データ転送回路に楽音データの格納を許可する格納許可信号を送出し、前記終了アドレスを送出すると、再度前記開始アドレスからアドレスの送出を開始するものであって、前記データ転送回路は、前記格納許可信号を受領すると、前記メモリの前記開始アドレスから前記終了アドレスまでの領域に楽音データを格納することとしてもよい。
【００２５】
これにより、送出指示回路が、例えば、終了アドレスの１つ前のアドレスを送出すると、データ転送回路に格納許可信号を送出するようにすることによって、メモリに格納済みの楽音データのうち、データ制御回路がバッファに格納していない楽音データの残りが少なくなると、データ転送回路は外部から楽音データを取得してメモリへの格納を行うため、メモリの格納サイズを超える長大なサイズの楽音データであっても、途切れなく楽音信号として出力することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態に係る楽音出力装置ついて説明する。
≪実施の形態１≫
＜概要＞
実施の形態１の楽音出力装置は、ＣＰＵが使用する制御プログラム及び制御用データ（以下、「制御プログラム等」という）とデータ制御回路が使用する楽音データとが格納されたメモリから、ＣＰＵとのバス使用権を調整し、楽音データを読み出し、ＤＡ変換を行って楽音信号として出力する。
【００２７】
また、楽音出力装置において、ＤＡ変換器は、水晶振動子により生成した基準クロックを分周したクロックに同期したタイミングで動作し、ＣＰＵは、基準クロックを逓倍した逓倍クロックから生成した各回路の動作に必要な周波数のクロックに同期したタイミングで動作する。
ＤＡ変換器は、水晶振動子により生成した基準クロックを分周した周波数ジッタの少ないクロックにより動作するため、出力する楽音信号の音質の低下を防ぐことができる。また、ＣＰＵは、楽音信号再生用の比較的遅いクロックではなく、逓倍クロックから生成したＣＰＵの動作に必要な周波数のクロックを動作クロックとするため、性能を制限されることなく動作することができる。
【００２８】
また、逓倍クロックは、逓倍回路（ＰＬＬ）を使用して生成するため、水晶振動子から直接生成した基準クロックより周波数ジッタが高く、逓倍クロックの基準位置と基準クロックの基準位置とを合わせようとしてもずれを生じる場合がある。
そこで、楽音出力装置は、基準クロックから生成されるずれ監視信号と逓倍クロックから生成されるマスク信号とを用いて、基準クロックの基準位置と逓倍クロックの基準位置との間に所定以上のずれが発生しているかを判定し、ずれが発生している場合には、楽音データを格納し、ＤＡ変換器へ送出するタイミングを調整する。なお、ずれ監視信号とマスク信号とについては後述する。
【００２９】
これにより、クロックレーシングの発生を防ぎ、メモリに格納された楽音データを適切なタイミングでＤＡ変換器に送出できるため、音質を維持して楽音信号を出力することができる。
＜構成＞
図１は、実施の形態１に係る楽音出力装置１００の構成図である。
【００３０】
楽音出力装置１００は同図に示すように、水晶１０１、発振器１０２、逓倍回路１０３、タイミング制御回路１０４、ＣＰＵ１０５、読出し調整回路１０６、アドレスバス１０７、アドレス制御回路１０８、読出し制御回路１０９、データバス１１０、メモリ１１１、データ制御回路１１２、取込み回数可変回路１１３、タイミング補正回路１１４、ＤＡ変換器１１５から構成される。
【００３１】
ここで、水晶１０１は、通常の水晶振動子であり、発振器１０２は、水晶１０１を用いた発振回路であり、クロック１４１を送出する。クロック１４１は、逓倍回路１０３の基準クロックであり、ＤＡ変換器１１５の動作タイミングを決定するクロックであり、取込み回数可変回路１１３が生成する後述するずれ監視信号１３９の基となるクロックである。
【００３２】
逓倍回路１０３は、発振器１０２から受領したクロック１４１の整数倍の周波数のクロックを生成することのできるクロック生成回路であり、逓倍回路１０３が送出するクロック１４２は、タイミング制御回路１０４の基準クロックである。
タイミング制御回路１０４は、逓倍回路１０３から受領したクロック１４２を基に、各回路の動作タイミングを決定するタイミング信号１５０〜１５４を生成し、各回路に送出する回路である。
【００３３】
また、タイミング制御回路１０４は、後述するタイミング補正回路１１４のずれ検出処理において使用されるマスク信号１３８を生成し、タイミング補正回路１１４へ送出する回路である。タイミング補正回路１１４が、クロック１４１の基準位置とクロック１４２の基準位置とのずれを検出した場合に、タイミング補正回路１１４から同期リセット信号１４０を受領すると、タイミング制御回路１０４は、マスク信号１３８がアサートされるタイミングをリセットし、クロック１４１の基準位置とクロック１４２の基準位置とのずれが発生していないときの状態（以下、「初期状態」という）に戻す。
【００３４】
以下、簡単にタイミング制御回路１０４が生成する信号について説明する。
タイミング信号１５０は、ＣＰＵ１０５の動作クロックであり、タイミング信号１５１は、読出し調整回路１０６の動作タイミングを決定するタイミング信号である。タイミング信号１５０の周波数とタイミング信号１５１の周波数は等しく、サンプリング周波数に比べ、十分高い周波数の信号である。例えば、サンプリング周波数を１０ＫＨｚとすると、数ＭＨｚ程度の信号である。
【００３５】
タイミング信号１５２は、アドレス制御回路１０８の動作タイミングを決定するタイミング信号であり、タイミング信号１５３は、読出し制御回路１０９の動作タイミングを決定するタイミング信号である。タイミング信号１５２の周波数とタイミング信号１５３の周波数は等しく、サンプリング周波数の整数倍の周波数の信号である。
タイミング信号１５４は、データ制御回路１１２の動作タイミングを決定するタイミング信号であり、サンプリング周波数と等しい周波数の信号である。
【００３６】
マスク信号１３８は、サンプリング周期毎に一定の幅でアサートされる信号であり、タイミング補正回路１１４へ送出され、後述するタイミング補正回路１１４のずれ検出処理に使用される。なお、以下では、マスク信号１３８においてアサートされていない部分をマスク信号１３８の基準位置という。
クロック１４２は、水晶振動子から生成したクロック１４１に比べ、周波数ジッタの大きいクロックであるため、クロック１４２を基に生成したマスク信号１３８がアサートされるタイミングにずれが生じる場合がある。
【００３７】
ＣＰＵ１０５は、タイミング制御回路１０４から受領したタイミング信号１５０を動作クロックとして、メモリ１１１に格納された制御プログラムに従い、システム全体の制御の他、初期パラメータの設定、楽音信号出力の開始指示、バス使用権の調整といった楽音データ読出しのための制御を行う回路である。
楽音データ読出しのための制御について、具体的には、ＣＰＵ１０５がシステム全体の制御を行っている際に、楽音再生の要求が発生すると、初期パラメータとして、アドレス制御回路１０８に所望の楽音データが格納されているメモリ１１１上のアドレス値を、データ制御回路１１２に１回に送出する楽音データのサイズ（サンプリングデータのデータサイズ）を設定した上で、読出し調整回路１０６に楽音信号出力の開始を指示する再生要求信号１３１を送出する。
【００３８】
また、ＣＰＵ１０５は、読出し調整回路１０６から後述するバス調停信号１３２を受領すると、実行している制御に支障を来さないタイミングでバスを解放することで、バスの使用権の調整を行う。
読出し調整回路１０６は、タイミング制御回路１０４から受領したタイミング信号１５１に同期したタイミングで、ＣＰＵ１０５に対し、バスの使用権を要求するバス調停信号１３２を送出し、ＣＰＵ１０５がバスを解放すると、アドレス制御回路１０８、読出し制御回路１０９、及び、データ制御回路１１２に楽音データの読出しを指示する読出し許可信号１３４を送出する回路である。
【００３９】
アドレスバス１０７は、ＣＰＵ１０５が所望の制御プログラム等が格納されたアドレス値を、又は、アドレス制御回路１０８が所望の楽音データが格納されたアドレス値を、メモリ１１１に対して指定するためのバスである。
アドレス制御回路１０８は、所望の楽音データが格納されているメモリ１１１のアドレス値をアドレスバス１０７に送出する回路である。
【００４０】
具体的には、アドレス制御回路１０８は、読出し調整回路１０６から読出し許可信号１３４を受領すると、タイミング制御回路１０４から受領したタイミング信号１５２に同期したタイミングで、予めＣＰＵ１０５から内部のレジスタに設定されたメモリ１１１上の所望の楽音データが格納されている領域のスタートアドレスからエンドアドレスまでのアドレス値を、順次変化させながらアドレスバス１０７に送出する。
【００４１】
なお、楽音データが、メモリ１１１の連続した領域に格納されている場合には、１対のスタートアドレスとエンドアドレスとが内部のレジスタに設定され、複数の領域にまたがって格納されている場合には、複数の対となるスタートアドレスとエンドアドレスとが内部のレジスタに設定される。
読出し制御回路１０９は、読出し調整回路１０６から読出し許可信号１３４を受領すると、タイミング制御回路１０４から受領したタイミング信号１５３に同期したタイミングで、メモリ１１１にデータバス１１０へのデータの送出を求める読出し信号１３５を送出する回路である。
【００４２】
データバス１１０は、メモリ１１１が、アドレスバス１０７に指定されたアドレスに格納されている制御プログラム等、又は、楽音データを送出するバスである。ＣＰＵ１０５はメモリ１１１に格納された制御プログラム等を、データ制御回路１１２はメモリ１１１に格納された楽音データを、データバス１１０を介して受領することができる。
メモリ１１１は、ＣＰＵ１０５が使用する制御プログラム等、及び、楽音データを任意のアドレスに格納する不揮発性のメモリである。
【００４３】
メモリ１１１は、読出し制御回路１０９から読出し信号１３５を受領すると、
アドレスバス１０７に送出されたアドレス値が示すアドレスに格納された楽音データをデータバス１１０に送出する。
データ制御回路１１２は、タイミング制御回路１０４から受領したタイミング信号１５４に同期したタイミングで、メモリ１１１からデータバス１１０に送出された楽音データを内部に有するバッファに格納し、バッファに格納された楽音データを、予めＣＰＵ１０５により内部のレジスタに設定された１回に送出する楽音データのサイズ（サンプリングデータのサイズ）毎に、取込み回数可変回路１１３へ送出する回路である。
【００４４】
取込み回数可変回路１１３は、水晶振動子により生成したクロックであるクロック１４１を基にサンプリング周期毎にアサートされるタイミング信号１５５（図３参照）を生成し、タイミング信号１５５に同期したタイミングで、データ制御回路１１２から送出された楽音データを内部に有するバッファに格納し、取込み回数可変回路１１３の内部で生成したタイミング信号１５６に同期したタイミングで、予め設定されたオーバーサンプリング数に従って、バッファに格納された楽音データをタイミング補正回路１１４に送出する回路である。タイミング信号１５６は、タイミング信号１５５がアサートされる間隔（サンプリング周期と等しい間隔）にオーバーサンプリング数個のクロックを出力するものである。
【００４５】
ここで、取込み回数可変回路１１３は、データ制御回路１１２が送出する楽音データの切り替わりで楽音データをバッファに格納することのないようにする必要がある。切り替わりの楽音データは安定していないため、これを用いて楽音信号を生成してしまうと、音質が低下する原因となるためである。
そのため、タイミング信号１５５は、データ制御回路１１２が送出する楽音データが切り替わってから所定の時間経過したタイミングでアサートされる必要があり、タイミング信号１５５は、データ制御回路１１２が楽音データを送出するタイミングと上述のような所定の関係を有するものである。
【００４６】
また、取込み回数可変回路１１３は、水晶振動子により生成したクロックであるクロック１４１を基にずれ監視信号１３９を生成し、タイミング補正回路１１４に送出する。ずれ監視信号１３９は、サンプリング周期毎にアサートされる信号であり、後述するタイミング補正回路１１４のずれ検出処理において使用される。なお、以下では、ずれ監視信号１３９においてアサートされている部分をずれ監視信号１３９の基準位置という。初期状態において、ずれ監視信号１３９の基準位置は、マスク信号１３８の基準位置内に位置する。
【００４７】
タイミング補正回路１１４が、クロック１４１の基準位置とクロック１４２の基準位置とのずれを検出した場合に、タイミング補正回路１１４から同期リセット信号１４０を受領すると、取込み回数可変回路１１３は、タイミング信号１５５の出力タイミングが、データ制御回路１１２が送出する楽音データの切り替わりのタイミングと一致しないよう調整し、また、タイミング信号１５６の出力タイミングについても、あわせて調整する。
【００４８】
また、タイミング補正回路１１４から同期リセット信号１４０を受領した取込み回数可変回路１１３は、ずれ監視信号１３９がアサートされるタイミングをリセットし、初期状態に戻す。
タイミング補正回路１１４は、取込み回数可変回路１１３から受領した楽音データをＤＡ変換器１１５に転送すると共に、取込み回数可変回路１１３から受領したずれ監視信号１３９とタイミング制御回路１０４から受領したマスク信号１３８とを用いて、水晶振動子により生成したクロックであるクロック１４１の基準位置とクロック１４１を逓倍した送出したクロックであるクロック１４２の基準位置とのずれを検出する回路である。
【００４９】
タイミング補正回路１１４は、ずれ監視信号１３９の基準位置とマスク信号１３８の基準位置とがずれ、クロック１４１の基準位置とクロック１４２の基準位置とに一定以上のずれが発生していることを検出すると、タイミング制御回路１０４と取込み回数可変回路１１３とに、ずれを検出した旨の同期リセット信号１４０を送出する。
なお、マスク信号１３８の基準位置は所定の幅を有しており、タイミング補正回路１１４は、マスク信号１３８の基準位置内でのずれ監視信号１３９のずれを許容する。マスク信号１３８の基準位置の幅は、クロックレーシングが発生しないように設計されており、マスク信号１３８の基準位置内でのずれであれば、大きな影響を与えることはないためである。
【００５０】
ＤＡ変換器１１５は、通常のＤＡ変換器と同様に、デジタルデータをアナログ信号に変換し、出力する回路である。ＤＡ変換器１１５は、タイミング補正回路１１４から受領したタイミング信号１５７に同期したタイミングで、タイミング補正回路１１４から楽音データを受領し、楽音データの補間を行い、発振器１０２から受領したクロック１４１を分周したクロックに同期したタイミングで、楽音データをアナログ信号である楽音信号に変換し、出力する。
＜バス使用権の調整及び楽音データ読出しの動作＞
以下、上記構成を備えた楽音出力装置１００において、ＣＰＵ１０５と読出し調整回路１０６とのバス使用権の調整の動作、及び、メモリ１１１に格納されている楽音データを、データ制御回路１１２がデータバス１１０を介してバッファに格納し、送出データ１２０として取込み回数可変回路１１３に送出する動作について説明する。
【００５１】
以下の説明では、楽音データはメモリ１１１上に連続して格納されているものとする。また、データ制御回路１１２が１回にバッファに格納する楽音データのサイズと、データ制御回路１１２がバッファから取込み回数可変回路１１３に送出する楽音データのサイズは同一であり、かつ、これらのサイズは、メモリ１１１の１アドレス分のサイズと同一であるとする。
【００５２】
＜バス使用権の調整＞
ＣＰＵ１０５は、楽音再生の要求が発生すると、所望の楽音データの格納されているメモリ１１１上の領域のスタートアドレスとエンドアドレスをアドレス制御回路１０８に設定し、また、データ制御回路１１２が内部のバッファから１回に取込み回数可変回路１１３に送出する楽音データのサイズをデータ制御回路１１２に設定する。
【００５３】
ＣＰＵ１０５は、タイミング制御回路１０４から受領したタイミング信号１５０に同期したタイミングで、読出し調整回路１０６に再生要求信号１３１を送出する。
読出し調整回路１０６は、ＣＰＵ１０５から再生要求信号１３１を受領すると、タイミング制御回路１０４から受領したタイミング信号１５１に同期したタイミングで、ＣＰＵ１０５に対し、バス調停信号１３２を送出する。
【００５４】
ＣＰＵ１０５は、読出し調整回路１０６からバス調停信号１３２を受領すると、実行している制御に支障を来さないタイミングでバスを解放し、タイミング制御回路１０４から受領したタイミング信号１５０に同期したタイミングで、読出し調整回路１０６にバス解放信号１３３を送出する。
＜楽音データの読出し＞
読出し調整回路１０６は、ＣＰＵ１０５からバス解放信号１３３を受領すると、アドレス制御回路１０８、読出し制御回路１０９、及び、データ制御回路１１２に、読出し許可信号１３４を送出する。
【００５５】
アドレス制御回路１０８は、読出し許可信号１３４を受領すると、タイミング制御回路１０４から受領したタイミング信号１５２に同期したタイミングで、ＣＰＵ１０５から設定されたアドレス値を変化させながらアドレスバス１０７に送出する。
読出し制御回路１０９は、読出し許可信号１３４を受領すると、タイミング制御回路１０４から受領したタイミング信号１５３に同期したタイミングで、メモリ１１１に読出し信号１３５を送出する。
【００５６】
メモリ１１１は、読出し信号１３５を受領すると、アドレス制御回路１０８によりアドレスバス１０７に送出されたアドレス値を取得し、取得したアドレス値が示すアドレスに格納された楽音データをデータバス１１０へ送出する。
データ制御回路１１２は、タイミング制御回路１０４から受領したタイミング信号１５４に同期したタイミングで、メモリ１１１からデータバス１１０に送出された楽音データをバッファに格納し、データ制御回路１１２に読出し完了信号１３６を送出する。
【００５７】
読出し完了信号１３６を受領した読出し調整回路１０６は、バスを解放する。
また、データ制御回路１１２は、バッファに格納したデータを、ＣＰＵ１０５から設定された１回に送出する楽音データのサイズ毎に取込み回数可変回路１１３に送出し、タイミング制御回路１０４から受領したタイミング信号１５４に同期したタイミングで、読出し調整回路１０６にバス調停要望信号１３７を送出する。
【００５８】
以降、上述の動作を繰り返すことで、メモリ１１１に格納された所望の楽音データ全体を取込み回数可変回路１１３に送出することができる。
＜タイミングチャートを用いた説明＞
上述の動作について、図２に示すタイミングチャートを使用して説明する。
以下では、ＣＰＵ１０５が読み込む制御プログラム等をＳＹＤ１、ＳＹＤ２、ＳＹＤ３、ＳＹＤ４とし、楽音データをＳＵＤ１、ＳＵＤ２として説明する。なお、制御プログラム等はＣＰＵ１０５の制御の内容によって、サイズが異なるものである。
【００５９】
Ｔ１は、読出し調整回路１０６が、ＣＰＵ１０５からの再生要求信号１３１（図示しない）を受領した直後のタイミング信号１５１の立ち上がりのタイミングであり、読出し調整回路１０６は、ＣＰＵ１０５にバス調停信号１３２を送出する。
Ｔ２は、ＣＰＵ１０５が、読出し調整回路１０６からバス調停信号１３２を受領した後、ＣＰＵ１０５がバスを解放できるようになったタイミングであり、ＣＰＵ１０５は、読出し調整回路１０６にバス解放信号１３３を送出する。ＣＰＵ１０５は、実行している制御に支障を来さないタイミングでバスを解放するため、読み込む制御プログラム等の内容により、Ｔ１−Ｔ２間の長さは異なる。
【００６０】
Ｔ３は、読出し調整回路１０６が、ＣＰＵ１０５からバス解放信号１３３を受領した直後のタイミング信号１５１の立ち上がりのタイミングであり、読出し調整回路１０６は、アドレス制御回路１０８と、読出し制御回路１０９と、データ制御回路１１２とに読出し許可信号１３４を送出する。
Ｔ４は、アドレス制御回路１０８が、読出し調整回路１０６から読出し許可信号１３４を受領した直後のタイミング信号１５２の立ち上がりのタイミングであり、アドレス制御回路１０８は、所望の楽音データのメモリ上のアドレス値（ＳＵＤ１のアドレス）をアドレスバス１０７に送出する。
【００６１】
Ｔ５は、読出し制御回路１０９が、読出し調整回路１０６から読出し許可信号１３４を受領した直後のタイミング信号１５３の立ち下がりのタイミングであり、読出し制御回路１０９は、メモリ１１１に読出し信号１３５を送出する。
読出し制御回路１０９から読出し信号１３５を受領したメモリ１１１は、データバス１１０からアドレス値を取得し、取得したアドレス値が示すアドレスに格納された楽音データ（ＳＵＤ１）をデータバス１１０に送出する。
【００６２】
Ｔ６は、データ制御回路１１２が、読出し制御回路１０９から読出し信号１３５を受領した直後のタイミング信号１５４の立ち下がりのタイミングであり、データ制御回路１１２は、データバス１１０から楽音データ（ＳＵＤ１）をバッファに格納し、送出データ１２０として送出する。
また、Ｔ６において、データ制御回路１１２は、読出し完了信号１３６（図示しない）を読出し調整回路１０６に送出する。
【００６３】
Ｔ７は、読出し制御回路１０９が、読出し信号１３５を送出してから一定期間経過したタイミングであり、読出し制御回路１０９は、メモリ１１１への読出し信号１３５の送出を終了する。
Ｔ８は、読出し調整回路１０６が、読出し許可信号１３４を送出してから一定期間経過したタイミングであり、読出し調整回路１０６は、アドレス制御回路１０８と、読出し制御回路１０８と、データ制御回路１１２への読出し許可信号１３４の送出を終了し、また、ＣＰＵ１０５へのバス調停信号１３２の送出を終了する。
【００６４】
Ｔ９は、読出し調整回路１０６がバス調停信号１３２の送出を終了してから一定期間経過したタイミングであり、ＣＰＵ１０５は、読出し調整回路１０６へのバス解放信号１３３の送出を終了する。
Ｔ１０は、データ制御回路１１２が、バッファに楽音データを格納し、送出したタイミング（Ｔ６）の次のタイミング信号１５４の立ち上がりのタイミングであり、次の楽音データの読出しのため、データ制御回路１１２は、読出し調整回路１０６にバス調停要望信号１３７を送出する。
【００６５】
Ｔ１１は、読出し調整回路１０６がバス調停要望信号１３７を受領した直後のタイミング信号１５１の立ち上がりのタイミングであり、読出し調整回路１０６は、ＣＰＵ１０５にバス調停信号１３２を送出する。
Ｔ１２は、読出し調整回路１０６が、アドレス制御回路１０８と、読出し制御回路１０９と、データ制御回路１１２とに読出し許可信号１３４を送出するタイミングであり、データ制御回路１１２は、読出し調整回路１０６へのバス調停要望信号１３７の送出を終了する。
【００６６】
以降、Ｔ１〜Ｔ１２の動作を繰り返すことで、所望の楽音データ全体を取込み回数可変回路１１３に送出することができる。
＜楽音信号の出力とずれ検出時の動作＞
以下、上記構成を備えた楽音出力装置１００において、データ制御回路１１２が送出した楽音データ（送出データ１２０）をＤＡ変換器１１５が楽音信号として出力する動作と、基準クロックの基準位置と逓倍クロックの基準位置とにずれが生じた場合にこれを検出し、データ制御回路１１２が送出した楽音データ（送出データ１２０）をバッファに格納するタイミング、及び、オーバーサンプリング数に応じてＤＡ変換器１１５に送出するタイミングを調整し、マスク信号１３８とずれ監視信号１３９とがアサートされるタイミングを初期状態にリセットする動作について説明する。
【００６７】
＜楽音信号の出力＞
取込み回数可変回路１１３は、クロック１４１を基に生成したタイミング信号１５５に同期したタイミングで、データ制御回路１１２から楽音データ（送出データ１２０）を受領し、バッファに格納する。
また、取込み回数可変回路１１３は、タイミング信号１５６を生成し、生成したタイミング信号１５６と共に、タイミング信号１５６に同期したタイミングで、バッファに格納した楽音データ（送出データ１２１）をオーバーサンプリング数に従って、タイミング補正回路１１４に送出する。
【００６８】
タイミング補正回路１１４は、取込み回数可変回路１１３から受領したタイミング信号１５６に同期したタイミングで、取込み回数可変回路１１３から楽音データ（送出データ１２１）を受領し、タイミング信号１５６と等しい周波数のタイミング信号１５７と共に、受領した楽音データを送出データ１２２としてＤＡ変換器１１５に送出する。
ＤＡ変換器１１５は、タイミング補正回路１１４から受領したタイミング信号１５７に同期したタイミングで、楽音データ（送出データ１２２）を受領し、受領した楽音データの補間を行い、クロック１４１を分周したクロックに同期したタイミングで、アナログ信号である楽音信号に変換し、出力する。
【００６９】
＜ずれの検出及び検出後の動作＞
タイミング制御回路１０４は、逓倍回路１０３が送出するクロック１４２からマスク信号１３８を生成し、タイミング補正回路１１４に送出する。
取込み回数可変回路１１３は、発振器１０２が送出するクロック１４１からずれ監視信号１３９を生成し、タイミング補正回路１１４に送出する。
【００７０】
タイミング補正回路１１４は、取込み回数可変回路１１３から受領したずれ監視信号１３９の基準位置が、タイミング制御回路１０４から受領したマスク信号１３８の基準位置にあるかを確認する。
ずれ監視信号１３９の基準位置が、マスク信号１３８の基準位置からずれた場合には、タイミング補正回路１１４はこれを検出し、同期リセット信号１４０をタイミング制御回路１０４と取込み回数可変回路１１３とへ送出する。
【００７１】
取込み回数可変回路１１３は、同期リセット信号１４０を受領すると、タイミング信号１５５の出力タイミングが、データ制御回路１１２が送出する楽音データの切り替わりのタイミングと一致しないよう調整し、あわせて、タイミング信号１５６の出力タイミングを調整する。
また、取込み回数可変回路１１３は、ずれ監視信号１３９がアサートされるタイミングを初期状態にリセットする。
【００７２】
また、同期リセット信号１４０を受領したタイミング制御回路１０４は、マスク信号１３８がアサートされるタイミングを初期状態にリセットする。
＜タイミングチャートを用いた説明＞
上述の動作について、図３、図４に示すタイミングチャートを使用して説明する。
以下では、楽音のサンプリング周波数を１０ＫＨｚ、オーバーサンプリング数を７、ＤＡ変換器の分解能を１２値、クロック１４１を４ＭＨｚ、逓倍回路１０３は４逓倍するものでクロック１４２は１６ＭＨｚとして説明する。
【００７３】
また、以下では、タイミング制御回路１０４の内部において、クロック１４２を分周した信号（以下、「タイミング制御回路内部信号」という）を、取込み回数可変回路の１０９の内部において、クロック１４１を分周した信号（以下、「可変回路内部信号」という）を生成しているとして説明する。
タイミング制御回路内部信号と可変回路内部信号とは、タイミング信号１５６やタイミング信号１５７と同様に、１サンプリング周期あたりオーバーサンプリング数個のクロックを出力するものである。
【００７４】
＜ずれが発生しない場合＞
図３は、ずれ監視信号１３９の基準位置（Ｈｉｇｈの部分）とマスク信号１３８の基準位置（Ｌｏｗの部分）との間にずれが発生していない、即ち、クロック１４１の基準位置とクロック１４２の基準位置との間にずれが発生していない場合のタイミングチャートである。
【００７５】
Ｔ１は、タイミング制御回路内部信号（図示しない）の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の２周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４にマスク信号１３８を送出する。
Ｔ２は、タイミング信号１５４（図示しない）の立ち下がりのタイミングであり、データ制御回路１１２は、送出データ１２０として楽音データ（ＳＵＤ２）を送出する。
【００７６】
Ｔ３は、タイミング制御回路内部信号の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の４周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４へのマスク信号１３８の送出を終了する。
このように、マスク信号１３８は、送出データ１２０の切り替わりのタイミング前後（Ｔ１〜Ｔ３）でアサート信号である。
【００７７】
タイミング補正回路１１４は、マスク信号１３８がアサートされているＴ１〜Ｔ３において、ずれ監視信号１３９がアサートされていないため、クロック１４１の基準位置とクロック１４２の基準位置との間にずれは発生していないと判定し、同期リセット信号１４０はＬｏｗのままである。
Ｔ４は、可変回路内部信号（図示しない）の７周期分を１サイクルとした場合に、可変回路内部信号の７周期目の立ち上がりのタイミングであり、取込み回数可変回路１１３は、タイミング補正回路１１４にずれ監視信号１３９を送出し、また、タイミング信号１５５を立ち上げる。
【００７８】
Ｔ５は、可変回路内部信号の７周期分を１サイクルとした場合に、可変回路内部信号の７周期目の立ち下がりのタイミングであり、取込み回数可変回路１１３は、タイミング補正回路１１４へのずれ監視信号１３９の送出を終了する。
このように、ずれ監視信号１３９は、初期状態において、マスク信号１３８の基準位置にアサートされる信号である。
【００７９】
また、Ｔ５は、タイミング信号１５５の立ち下がりのタイミングであり、取込み回数可変回路１１３は、データ制御回路１１２から送出された楽音データ（ＳＵＤ２）をバッファに格納する。
このように、タイミング信号１５５は、初期状態において、マスク信号１３８の基準位置にアサートされる信号である。
【００８０】
Ｔ６は、取込み回数可変回路１１３が、楽音データ（ＳＵＤ２）をバッファに格納した直後のタイミング信号１５６の立ち上がりのタイミングであり、取込み回数可変回路１１３は、バッファに格納した楽音データ（ＳＵＤ２）をオーバーサンプリング数に応じて、送出データ１２１（Ｕ２−１）として送出する。
以降、取込み回数可変回路１１３は、タイミング信号１５６の立ち上がりのタイミングで、バッファに格納した楽音データ（ＳＵＤ２）を送出データ１２１（Ｕ２−２〜Ｕ２−７）として送出する。
【００８１】
＜ずれが発生する場合＞
図４は、ずれ監視信号１３９とマスク信号１３８との間にずれが発生する、即ち、クロック１４１の基準位置とクロック１４２の基準位置との間にずれが発生する場合のタイミングチャートである。
なお、クロック１４１の基準位置とクロック１４２の基準位置との間にずれが発生しているため、クロック１４１を基に生成する可変回路内部信号の基準位置とクロック１４２を基に生成するタイミング制御回路内部信号の基準位置との間にもずれが生じている。
【００８２】
Ｔ１は、可変回路内部信号（図示しない）の７周期分を１サイクルとした場合に、可変回路内部信号の７周期目の立ち上がりのタイミングであり、取込み回数可変回路１１３は、タイミング補正回路１１４にずれ監視信号１３９を送出し、また、タイミング信号１５５を立ち上げる。
Ｔ２は、可変回路内部信号の７周期分を１サイクルとした場合に、可変回路内部信号の７周期目の立ち下がりのタイミングであり、取込み回数可変回路１１３は、タイミング補正回路１１４へのずれ監視信号１３９の送出を終了する。
【００８３】
また、Ｔ２は、タイミング信号１５５の立ち下がりのタイミングであり、取込み回数可変回路１１３は、データ制御回路１１２から送出された楽音データ（ＳＵＤ１）をバッファに格納する。
また、Ｔ２は、タイミング制御回路内部信号（図示しない）の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の２周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４にマスク信号１３８を送出する。
【００８４】
Ｔ３は、取込み回数可変回路１１３が、楽音データ（ＳＵＤ１）をバッファに格納した直後のタイミング信号１５６の立ち上がりのタイミングであり、取込み回数可変回路１１３は、バッファに格納した楽音データ（ＳＵＤ１）をオーバーサンプリング数に応じて送出データ１２１（Ｕ１−１）として送出する。
以降、取込み回数可変回路１１３は、タイミング信号１５６の立ち上がりのタイミングで、バッファに格納した楽音データ（ＳＵＤ１）を送出データ１２１（Ｕ１−２〜Ｕ１−７）として送出する。
【００８５】
Ｔ４は、タイミング信号１５４（図示しない）の立ち下がりのタイミングであり、データ制御回路１１２は、送出データ１２０として楽音データ（ＳＵＤ２）を送出する。
Ｔ５は、タイミング制御回路内部信号の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の４周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４へのマスク信号１３８の送出を終了する。
【００８６】
タイミング補正回路１１４は、マスク信号１３８がアサートされているＴ２からＴ５において、ずれ監視信号１３９がアサートされていないため、クロック１４１の基準位置とクロック１４２の基準位置との間にずれは発生していないと判定し、同期リセット信号１４０はＬｏｗのままである。
Ｔ６は、タイミング制御回路内部信号の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の２周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４にマスク信号１３８を送出する。
【００８７】
また、Ｔ６は、可変回路内部信号の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の７周期目の立ち上がりのタイミングであり、取込み回数可変回路１１３は、タイミング補正回路１１４にずれ監視信号１３９を送出する。
Ｔ６において、マスク信号１３８のＨｉｇｈの部分に、ずれ監視信号の基準位置が重なっているので、タイミング補正回路１１４は、クロック１４１の基準位置とクロック１４２の基準位置との間にずれが発生したと判定する。
【００８８】
また、Ｔ６において、取込み回数可変回路１１３は、タイミング信号１５５を立ち上げる。
Ｔ７は、タイミング補正回路１１４がクロック１４１の基準位置とクロック１４２の基準位置との間にずれが発生したと判定した直後のタイミング信号１５６の立ち上がりのタイミングであり、タイミング補正回路１１４は、タイミング制御回路１０４と取込み回数可変回路１１３とに同期リセット信号１４０を送出する。
【００８９】
また、Ｔ７は、タイミング信号１５５の立ち下がりのタイミングであり、取込み回数可変回路１１３は、データ制御回路１１２から楽音データ（ＳＵＤ２）を受領し、バッファに格納する。
また、Ｔ７は、取込み回数可変回路１１３が、楽音データ（ＳＵＤ２）をバッファに格納した直後のタイミング信号１５６の立ち上がりのタイミングであり、取込み回数可変回路１１３は、バッファに格納した楽音データ（ＳＵＤ２）を、送出データ１２１（Ｕ２−１）として送出する。
【００９０】
以降、取込み回数可変回路１１３は、タイミング信号１５６の立ち上がりのタイミングで、バッファに格納した楽音データ（ＳＵＤ２）を送出データ１２１（Ｕ２−２〜Ｕ２−５）として送出する。
Ｔ８は、タイミング制御回路内部信号の７周期分を１サイクルとした場合に、タイミング制御回路内部信号の４周期目の立ち下がりのタイミングであり、タイミング制御回路１０４は、タイミング補正回路１１４へのマスク信号１３８の送出を終了する。
【００９１】
Ｔ９は、タイミング制御回路１０４が、マスク信号１３８の送出を終了した直後のタイミング補正回路１１４が受領したクロック１４１（図示しない）の立ち上がりのタイミングであり、タイミング補正回路１１４は、タイミング制御回路１０４と取込み回数可変回路１１３とへの同期リセット信号１４０の送出を終了する。
同期リセット信号１４０の送出が終了すると、楽音データの送出するタイミングを調整するため、タイミング信号１５６について、次のクロックを立ち上げる。これにより、送出データ１２１のＵ２−２の送信終了タイミングが正常時に比べて縮小される。
【００９２】
タイミング信号１５７は、タイミング信号１５６と同期した信号であるため、タイミング信号１５６と同様に次のクロックを立ち上げる。
Ｔ１０は、Ｔ９におけるリセットを受け、タイミング信号１５５と、ずれ監視信号１３９とが立ち上がるタイミングである。Ｔ９におけるリセットにより、タイミング信号１５５とずれ監視信号１３９がアサートされるタイミングは初期状態に戻り、それぞれマスク信号１３８の基準位置内にアサートされる。
【００９３】
このように、クロック１４１の基準位置とクロック１４２の基準位置との間に一定以上のずれが発生した場合に、タイミング信号１５５がアサートされるタイミングを初期状態に戻すことによって、クロックレーシングの発生を防ぐことができる。
≪変形例１≫
＜概要＞
実施の形態１において、楽音データの読出しは、読出し調整回路１０６とＣＰＵ１０５とのバス使用権の調整が終了した後に開始される。
【００９４】
バス使用権の調整は、読出し調整回路１０６がＣＰＵ１０５にバス調停信号１３２を送出することで開始し、ＣＰＵ１０５がバス解放信号１３３を読出し調整回路１０６に送出することで終了する。
しかし、ＣＰＵ１０５は、バス使用権の調整を開始した時点で行っている制御に支障を来さないタイミングでバスを解放し、読出し調整回路１０６にバス解放信号１３３を送出するため、読出し調整回路１０６がバス調停信号１３２を送出してから、ＣＰＵ１０５がバス解放信号１３３を送出するまでの時間は常に一定ではない。
【００９５】
従って、データ制御回路１１２は読み出した楽音データをサンプリング周期と同期した一定の間隔で送出することができない恐れがあり、ＤＡ変換器１１５も、サンプリング周期に従ったタイミングでＤＡ変換ができず、出力した楽音信号に波形歪が生じ、音質が低下を招く恐れがある。
変形例１のデータ制御回路は、それぞれ内部にバッファを有する第１データ制御回路と第２データ制御回路とからなるものである。
【００９６】
第１データ制御回路は、ＣＰＵとのバス使用権の調整が終了した後、データバスから受領した楽音データを第２データ制御回路に送出し、第２データ制御回路は、第１データ制御回路から受領した楽音データをサンプリング周波数に同期したタイミングで送出する。
そのため、バス使用権の調整を開始してからバス解放信号を送出するまでの時間が常に一定でない場合でも、データ制御回路から取込み回数可変回路１１３への楽音データの送出は一定周期で行うことができるものである。これにより、ＤＡ変換器が出力する楽音信号の波形歪の発生を防ぐことができる。
＜構成＞
変形例１に係る楽音出力装置は、実施の形態１に係る楽音出力装置１００のデータ制御回路１１２をデータ制御回路２０１に変えて構成したものである。
【００９７】
ここで、データ制御回路２０１以外については、実施の形態１と同様であるため、説明は省略する。
図５は、データ制御回路２０１の構成図である。
データ制御回路２０１は、第１データ制御回路２０２、第２データ制御回路２０３、タイミング調整回路２０４から構成される。
【００９８】
第１データ制御回路２０２は、タイミング調整回路２０４から送出された後述のタイミング信号２０７に同期したタイミングで、メモリ１１１からデータバス１１０に送出された楽音データを内部に有するバッファに格納し、バッファに格納された楽音データを送出データ２０５として後述の第２データ制御回路２０３に送出する回路である。
第２データ制御回路２０３は、タイミング調整回路２０４から送出された後述するタイミング信号２０８に同期したタイミングで、第１データ制御回路２０２から送出された楽音データ（送出データ２０５）を内部に有するバッファに格納し、バッファに格納された楽音データを送出データ２０６として取込み回数可変回路１１３に送出する回路である。
【００９９】
タイミング調整回路２０４は、サンプリング周波数と等しい周波数のタイミング信号１５４からタイミング信号２０７とタイミング信号２０８を生成する回路である。タイミング信号２０７とタイミング信号２０８の内容については、タイミングチャートを用いた動作の説明の中で説明する。
＜動作＞
データ制御回路２０１の動作について、タイミングチャートを用いて説明する。図６はデータ制御回路２０１の動作を示すタイミングチャートである。
【０１００】
以下では、第１データ制御回路２０２が１回に格納する楽音データのサイズと、送出データ２０５として１回に送出する楽音データのサイズと、第２データ制御回路２０３が１回に格納する楽音データのサイズと、送出データ２０６として１回に送出する楽音データのサイズは同一であるとして説明する。
また、ＣＰＵ１０５が読み込む制御プログラム等をＳＹＤ１、ＳＹＤ２、ＳＹＤ３、ＳＹＤ４とし、楽音データをＳＵＤ０、ＳＵＤ１、ＳＵＤ２、ＳＵＤ３として説明する。なお、制御プログラム等は、ＣＰＵ１０５の制御の内容によって、サイズが異なるものとする。
【０１０１】
Ｔ１は、タイミング信号１５４が立ち上がるタイミングであり、タイミング信号１５４が立ち上がると、タイミング信号２０７とタイミング信号２０８とが立ち上がり、タイミング信号２０８の立ち上がりで、第２データ制御回路２０３は、第１データ制御回路２０２から楽音データ（ＳＵＤ０）を受領してバッファに格納し、バッファに格納した楽音データ（ＳＵＤ０）を送出データ２０６として送出する。
【０１０２】
Ｔ２は、ＣＰＵ１０５が、読出し調整回路１０６にバス解放信号１３３（図示しない）を送出するタイミングであり、メモリ１１１は、データバス１１０への制御プログラム等（ＳＹＤ１）の送出を終了する。制御プログラム等のデータ量は制御の内容により異なるため、Ｔ２は、Ｔ１から不定量ずれたタイミングとなる。
Ｔ３は、読出し制御回路１０９が、メモリ１１１に読出し信号１３５（図示しない）を送出するタイミングであり、メモリ１１１は、データバス１１０に楽音データ（ＳＵＤ１）を送出する。
【０１０３】
Ｔ４は、タイミング調整回路２０４が、読出し許可信号１３４を受領してから一定期間経ったタイミングであり、タイミング信号２０７が立ち下がり、第１データ制御回路２０２は、データバス１１０から楽音データ（ＳＵＤ１）を受領してバッファに格納し、バッファに格納した楽音データ（ＳＵＤ１）を送出データ２０５として送出する。
また、Ｔ４は、タイミング信号１５４が立ち下がるタイミングであり、タイミング信号２０８も立ち下がる。
【０１０４】
Ｔ５は、読出し調整回路１０６が、アドレス制御回路１０８と、読出し制御回路１０９と、データ制御回路２０１とへの読出し許可信号１３４の送出を終了するタイミングであり、メモリ１１１は、データバス１１０への楽音データ（ＳＵＤ１）の送出を終了する。
Ｔ６は、ＣＰＵ１０５が、読出し調整回路１０６へのバス解放信号１３３（図示しない）の送出を終了するタイミングであり、メモリ１１１は、データバス１１０に制御プログラム等（ＳＹＤ２）の送出をする。
【０１０５】
以降、楽音データの再生が終了するまで、このＴ１からＴ６までの動作と同様の動作が繰り返される。
ここで、送出データ２０５における楽音データの送出開始タイミングの間隔（ＳＵＤ１とＳＵＤ２の長さ）は、一定になっていない。これは、実施の形態１のデータ制御回路１１２の送出データ１２０と同様に、ＣＰＵ１０５がバス使用権の調整を開始した時点で行っている制御に支障を来さないタイミングでバスを解放するためである。
【０１０６】
一方、第２データ制御回路２０３の送出データ２０６における楽音データの送出開始タイミングの間隔（ＳＵＤ０とＳＵＤ１の長さ）は等しく、また、サンプリング周期に同期したタイミングで送出されているため、楽音再生時の波形歪を抑えることが可能となる。
≪変形例２≫
＜概要＞
実施の形態１では、データ制御回路１１２が、データバス１１０を介してメモリ１１１から１回楽音データを取得するのに対して、楽音データの取得の前後にそれぞれ１回のバス使用権の調整を必要とする。
【０１０７】
バス使用権の調整中は、ＣＰＵ１０５もデータ制御回路１１２もデータバス１１０からデータを取得することができないため、データバス１１０を使用できない期間が多く発生していた。
変形例２のデータ制御回路は、データバスを介してメモリから複数回続けて楽音データを取得するのに対し、楽音データの取得の前後にそれぞれ１回のバス使用権の調整を行うものであり、データバス１１０を有効に活用できる。
＜構成＞
変形例２に係る楽音出力装置は、実施の形態１に係る楽音出力装置１００のデータ制御回路１１２をデータ制御回路３０１に変えて構成したものである。データ制御回路３０１以外については、実施の形態１と同様であるため、説明は省略する。
【０１０８】
なお、以下の説明では、データ制御回路３０１は、データバス１１０を介してメモリ１１１から２回続けて楽音データを取得するものとする。
図７は、データ制御回路３０１の構成図である。
データ制御回路３０１は、バッファ３０２、制御回路３０３から構成される。
バッファ３０２は、基本的には、実施の形態１のデータ制御回路１１２が有するバッファと同様のものであるが、データバス１１０から楽音データを取得する回数に応じて容量を増加させたものである。バッファ３０２は、制御回路３０３の制御を受け、後述するタイミング信号３０４に同期したタイミングで楽音データを格納し、後述するタイミング信号３０５に同期したタイミングで楽音データを送出する。
【０１０９】
制御回路３０３は、バッファ３０２の楽音データの格納、送出についての制御を行う他、サンプリング周波数と等しい周波数のタイミング信号１５４からタイミング信号１５４の４倍の周波数のタイミング信号３０４と、タイミング信号１５４と等しい周波数のタイミング信号３０５とを生成する。
＜動作＞
図８は、変形例２に係るデータ制御回路３０１の動作を示すタイミングチャートである。以下では、データ制御回路３０１が１回にバッファ３０２に格納する楽音データのサイズと、データ制御回路３０１が取込み回数可変回路１１３に送出する楽音データのサイズは同一であるとして説明する。
【０１１０】
また、ＣＰＵ１０５が読み込む制御プログラム等をＳＹＤ１、ＳＹＤ２、ＳＹＤ３、ＳＹＤ４、ＳＹＤ５、ＳＹＤ６、ＳＹＤ７とし、楽音データをＳＵＤ１、ＳＵＤ２として説明する。なお、制御プログラム等は、ＣＰＵ１０５の制御の内容によって、サイズが異なるものとする。
Ｔ１は、読出し調整回路１０６が、ＣＰＵ１０５からバス解放信号１３３（図示しない）を受領した直後のタイミング信号１５１（図示しない）の立ち上がりのタイミングであり、読出し調整回路１０６は、アドレス制御回路１０８と、読出し制御回路１０９と、データ制御回路３０１とに読出し許可信号１３４を送出する。
【０１１１】
Ｔ２は、読出し調整回路１０６が、読出し許可信号１３４を送出した直後のタイミング信号３０４の立ち上がりのタイミングであり、データ制御回路３０１は、データバス１１０から楽音データ（ＳＵＤ１）をバッファ３０２（図示しない）に格納する。
Ｔ３は、読出し調整回路１０６が、読出し許可信号１３４を送出した後のタイミング信号３０４の２つ目の立ち上がりのタイミングであり、データ制御回路３０１は、データバス１１０から楽音データ（ＳＵＤ２）をバッファ３０２に格納する。
【０１１２】
Ｔ４は、読出し調整回路１０６が、読出し許可信号１３４を送出した直後のタイミング信号１５４の立ち下がりのタイミングであり、タイミング信号３０５も立ち下がり、データ制御回路３０１は、バッファ３０２から楽音データ（ＳＵＤ１）を送出データ３０６として送出する。
Ｔ５は、読出し調整回路１０６が、読出し許可信号１３４を送出した後のタイミング信号１５４の２つ目の立ち下がりのタイミングであり、タイミング信号３０５も立ち下がり、データ制御回路３０１は、バッファ３０２から楽音データ（ＳＵＤ２）を送出データ３０６として送出する。
≪実施の形態２≫
＜概要＞
実施の形態１の楽音出力装置１００は、非圧縮の楽音データを楽音信号として出力するものである。
【０１１３】
一般的に、楽音データを半導体メモリに格納する場合、データサイズを抑制するために圧縮して格納する場合が多く、また、その際の楽音データの圧縮率は、楽音データ毎に異なる。
実施の形態２の楽音出力装置は、種々の圧縮率により圧縮された楽音データを、楽音信号として出力できるようにしたものである。
【０１１４】
また、データ制御回路のバッファに、１回に格納する楽音データのサイズが、データ制御回路のバッファから１回に送出する楽音データのサイズの整数倍でない場合に、データ制御回路のバッファに格納した楽音データを順次送出していくと、最後に１回に送出する楽音データのサイズに満たない楽音データ（以下、「残データ」という）がバッファに残る。
【０１１５】
実施の形態２の楽音出力装置は、この残データの処理を適切に行い、正常に楽音信号を送出することができるものである。
＜構成＞
図９は、実施の形態２に係る楽音出力装置４００の構成図である。
楽音出力装置４００は同図に示すように、水晶１０１、発振器１０２、逓倍回路１０３、ＣＰＵ１０５、読出し調整回路１０６、アドレスバス１０７、アドレス制御回路１０８、読出し制御回路１０９、データバス１１０、メモリ１１１、取込み回数可変回路１１３、タイミング補正回路１１４、ＤＡ変換器１１５、送出サイズ切替えレジスタ４０１、データ制御回路４０２、復号化回路４０３、タイミング制御回路４０４から構成される。
【０１１６】
なお、送出サイズ切替えレジスタ４０１、データ制御回路４０２、復号化回路４０３、タイミング制御回路４０４以外は、実施の形態１と同様であるため説明は省略する。
ここで、実施の形態２における楽音データは、一定の圧縮率で圧縮されたものである。
送出サイズ切替えレジスタ４０１は、楽音データを構成するサンプリングデータの圧縮後のデータサイズを記憶するレジスタである。
【０１１７】
サンプリングデータの圧縮後のデータサイズ（以下、「送出サイズ」という）は、予めＣＰＵ１０５により設定され、送出サイズ切替えレジスタ４０１は、送出サイズを示す送出サイズ信号４３１を後述するデータ制御回路４０２に送出する。
データ制御回路４０２は、基本的には、実施の形態１に示すデータ制御回路１１２と同様の回路であるが、送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ毎に、バッファに格納しているデータを送出データ４２０として、後述する復号化回路４０３に送出する点で、データ制御回路１１２とは異なる。
【０１１８】
また、データ制御回路４０２のバッファに１回に格納した楽音データのサイズが、送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズの整数倍でない場合には、バッファに残データが残る。
残データが残ると、データ制御回路４０２は、データバス１１０に送出された楽音データを格納するバッファ領域とは別のバッファ領域に残データを退避する点で、データ制御回路１１２とは異なる。
【０１１９】
ここで、残データを退避するバッファ領域は、データバス１１０に送出された楽音データを格納するバッファと物理的には同一のバッファ内のデータバス１１０に送出された楽音データを格納する領域とは別の領域であることを想定している。
以下では、データバス１１０に送出された楽音データを格納するバッファ領域を「第１バッファ領域」と、残データを退避するバッファ領域を「第２バッファ領域」として説明する。
【０１２０】
データ制御回路４０２は、残データを第２バッファ領域に退避している場合に、次に、データバス１１０からデータ制御回路４０２の第１バッファ領域に楽音データを格納すると、残データと第１バッファ領域に格納した楽音データとをあわせて送出サイズ信号４３１が示す送出サイズにして送出データ４２０として復号化回路４０３へ送出する。
復号化回路４０３は、タイミング制御４０４から受領した後述するタイミング信号４５０に同期したタイミングで、データ制御回路４０２から受領した圧縮された楽音データを順次復号し、取込み回数可変回路１１３に送出する回路であり、一般的な復号化回路と同様のものである。
【０１２１】
タイミング制御回路４０４は、基本的には、実施の形態１のタイミング制御回路１０４と同様の回路であるが、逓倍回路１０３から受領したクロック１４２を基にタイミング信号４５０を生成し、タイミング信号４５０を復号化回路４０３へ送出する点でタイミング制御回路１０４とは異なる。
タイミング信号４５０は、復号化回路４０３の動作タイミングを決定するタイミング信号であり、サンプリング周波数と等しい周波数の信号である。
＜動作＞
以下、上記構成を備えた楽音出力装置４００において、データ制御回路４０２が内部のバッファに格納した楽音データを送出する際の動作について、説明する。
【０１２２】
なお、データ制御回路４０２がデータバス１１０に送出された楽音データを第１バッファ領域に格納するまでの動作は実施の形態１と同様であるため、説明は省略する。
以下の説明では、データ制御回路４０２に１回に格納する楽音データのサイズを１６ビット、送出サイズ切替えレジスタ４０２が送出する送出サイズ信号４３１が示す送出サイズを３ビットとする。
【０１２３】
＜１回目に格納した楽音データの送出＞
まず、データ制御回路４０２が、１回目に第１バッファ領域に格納した楽音データを、復号化回路４０３へ送出する動作について説明する。
なお、送出サイズ切替えレジスタ４０１は、ＣＰＵ１０５からサンプリングデータの圧縮後のデータサイズ（３ビット）が設定された際に、予め送出サイズ（３ビット）を示す送出サイズ信号４３１をデータ制御回路４０２に送出してあるものとする。
【０１２４】
データ制御回路４０２は、第１バッファ領域に１回目の楽音データの格納を行うと、タイミング制御回路４０４から受領したタイミング信号１５４に同期したタイミングで、第１バッファ領域に格納している楽音データを送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ（３ビット）毎に、送出データ４２０として、復号化回路４０３へ送出する。
【０１２５】
データ制御回路４０２は、５回目の送出を行うと、１ビットが残データとなるため、データ制御回路４０２は、第２バッファ領域に残データ１ビットを格納する。
＜２回目に格納した楽音データの送出＞
次に、データ制御回路４０２が、２回目に第１バッファ領域に格納した楽音データを、復号化回路４０３へ送出する動作について説明する。
【０１２６】
データ制御回路４０２は、第１バッファ領域に２回目の楽音データの格納を行うと、タイミング制御回路４０４から受領したタイミング信号１５４に同期したタイミングで、第２バッファ領域に格納された残データ１ビットと、第１バッファ領域に格納した楽音データの先頭２ビットとを合わせて送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ（３ビット）とした楽音データを送出データ４２０として、復号化回路４０３へ６回目の送出を行う。
【０１２７】
データ制御回路４０２は、第１バッファ領域に残っている楽音データについて、タイミング制御回路４０４から受領したタイミング信号１５４に同期したタイミングで、送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ（３ビット）毎に、復号化回路４０３へ送出していく。
データ制御回路４０２は、１０回目の送出を行うと、２ビットが残データとなるため、残データ２ビットを第２データバッファ領域に格納する。
【０１２８】
＜３回目に格納した楽音データの送出＞
次に、データ制御回路４０２が、３回目に第１バッファ領域に格納した楽音データを、復号化回路４０３へ送出する動作について説明する。
データ制御回路４０２は、第１バッファ領域に３回目の楽音データの格納を行うと、タイミング制御回路４０４から受領したタイミング信号１５４に同期したタイミングで、第２バッファ領域に格納された残データ２ビットと、第１バッファ領域に格納した楽音データの先頭１ビットとを合わせて送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ（３ビット）とした楽音データを送出データ４２０として、復号化回路４０３へ１１回目の送出を行う。
【０１２９】
データ制御回路４０２は、タイミング制御回路４０４から受領したタイミング信号４５０に同期したタイミングで、第１バッファ領域に格納している残りの楽音データを、送出サイズ切替えレジスタ４０１から受領した送出サイズ信号４３１が示す送出サイズ（３ビット）毎に、送出データ４２１として、復号化回路４０３へ送出していくと、残データは発生せず、第１バッファ領域に格納した楽音データは全て送出される。
【０１３０】
以降、上記の１回目から３回目までのデータ送出を繰り返すことにより、データ制御回路４０２に格納した楽音データのサイズが、１回に送出する楽音データのサイズの整数倍になっていない場合であっても、正常に楽音信号を送出することが可能である。
≪変形例３≫
＜概要＞
実施の形態２の楽音出力装置４００は、データ制御回路４０２のバッファに格納した圧縮された楽音データを、送出サイズ切替えレジスタ４０１が送出する送出サイズ信号４３１が示す一定の送出サイズ毎に、送出するものである。
【０１３１】
メモリに格納する楽音データのデータサイズを抑制するためには、より高い圧縮率で圧縮するのが望ましいが、圧縮率が高い程、元の楽音波形を再現することが困難となり、音質が低下してしまう。
従って、音質が低下しても全体の音質に影響が出にくい部分と、高い音質を確保しなければ全体の音質に影響が出る部分とで圧縮率を変えた楽音データについて、楽音信号として出力できるようにすれば、全体としての音質は維持しつつ、ある程度データサイズを抑制することもできる。
【０１３２】
変形例３の楽音出力装置は、複数のフレーズデータからなる音声データを例に、高い音質を確保しなければならないフレーズデータと比較的低い音質でもよいフレーズデータとで圧縮率を変えた音声データを音声信号として出力できるようにしたものである。
＜構成＞
図１０は、変形例３に係る楽音出力装置５００の構成図である。
【０１３３】
楽音出力装置５００は、実施の形態２に係る送出サイズ切替えレジスタ４０１を送出サイズ切替え制御回路５０１に、実施の形態２のデータ制御回路４０２をデータ制御回路５０２に変えて構成したものである。
圧縮率切替え制御回路５０１とデータ制御回路５０２以外は、実施の形態２と同様であるため、説明は省略する。
【０１３４】
ここで、変形例３における音声データを構成する各フレーズデータは、それぞれ異なる所定の圧縮率で圧縮されたものである。
送出サイズ切替え制御回路５０１は、各フレーズデータを構成するサンプリングデータの圧縮後のデータサイズ（以下、「送出サイズ」という）をフレーズデータ毎に記憶し、各フレーズデータの送出前に、送出サイズ信号５３１としてデータ制御回路５０２に送出する回路である。各フレーズデータの送出サイズは、ＣＰＵ１０５により予め内部のレジスタに設定される。
【０１３５】
送出サイズ切替え制御回路５０１は、ＣＰＵ１０５から各フレーズデータの送出サイズを設定されると、最初のフレーズデータの送出サイズを送出サイズ信号５３１として、データ制御回路５０２に送出する。また、データ制御回路５０２から後述する送出完了信号５３２を受領すると、次のフレーズデータの送出サイズを送出サイズ信号５３１として、データ制御回路５０２に送出する。
【０１３６】
データ制御回路５０２は、基本的には実施の形態２のデータ制御回路４０２と同様の回路であるが、ＣＰＵから各フレーズデータのデータサイズが予め内部のレジスタに設定され、バッファに格納した楽音データを送出データ５２０として復号化回路４０３へ送出していき、各フレーズのデータサイズ分のデータの送出が完了すると、送出サイズ切替え制御回路５０１に送出完了信号５３２を送出する点でデータ制御回路４０２とは異なる。
＜動作＞
以下、上記構成を備えた楽音出力装置５００において、データ制御回路５０２が内部のバッファに格納された楽音データを送出する際の動作について、説明する。
【０１３７】
なお、データ制御回路５０２がデータバス１１０に送出された楽音データをバッファに格納するまでの動作は実施の形態１と同様であるため、説明は省略する。
以下の説明では、データ制御回路５０２が１回に格納する音声データのサイズは１２ビットであって、音声データは、第１から第４までの４つのフレーズデータからなるものとする。
【０１３８】
また、第１から第４のフレーズデータは、それぞれ「今日」、「は」、「晴れ」、「です」を表す音声データであって、第１から第４の順番に再生することで、「今日は晴れです」という文章を再生するものとする。
また、第１フレーズデータと第３フレーズデータとは２４ビットからなるデータであり、フレーズデータを構成するサンプリングデータの圧縮後のデータサイズを４ビットとする。
【０１３９】
また、第２フレーズデータと第４フレーズデータは１２ビットからなるデータであり、フレーズデータを構成するサンプリングデータの圧縮後のデータサイズを３ビットとする。
＜第１フレーズデータの送出＞
まず第１フレーズデータを復号化回路４０３へ送出する動作について説明する。
【０１４０】
なお、ＣＰＵ１０５から各フレーズデータを構成するサンプリングデータの圧縮後のデータサイズが設定された際に、送出サイズ切替え制御回路５０１は、第１フレーズデータの送出サイズ（４ビット）を示す送出サイズ信号５３１を、予めデータ制御回路５０２に送出してあるものとする。
また、データ制御回路５０２には、ＣＰＵ１０５から各フレーズデータのデータサイズが設定されているものとする。
【０１４１】
データ制御回路５０２は、第１フレーズデータについて、１回目のバッファへの格納を行うと、バッファに格納した第1フレーズデータを、送出サイズ切替え制御回路５０１から受領した送出サイズ信号５３１が示す送出サイズ（４ビット）毎に、タイミング制御回路４０４から受領したタイミング信号４５０に同期したタイミングで、送出データ５２０として復号化回路４０３へ送出する。
【０１４２】
データ制御回路５０２は、同様に第１フレーズデータについて、２回目のバッファへの格納を行うと、送出サイズ信号５３１が示す送出サイズ（４ビット）毎に、復号化回路４０３へ送出すると、ＣＰＵ１０５により設定された第１フレーズデータのサイズ分（２４ビット）の送出が完了するため、送出サイズ切替え制御回路５０１に送出完了信号５３２を送出する。
【０１４３】
＜第２フレーズデータの送出＞
送出サイズ切替え制御回路５０１は、データ制御回路５０２から送出完了信号５３２を受領すると、第２フレーズデータの送出サイズ（３ビット）を示す送出サイズ信号５３１をデータ制御回路５０２に送出する。
データ制御回路５０２は、第２フレーズデータについて、バッファへの格納を行うと、バッファに格納した第２フレーズデータを、送出サイズ切替え制御回路５０１から受領した送出サイズ信号５３１が示す送出サイズ（３ビット）毎に、タイミング制御回路４０４から受領したタイミング信号４５０に同期したタイミングで、送出データ５２０として復号化回路４０３へ送出する。
【０１４４】
バッファに格納した第２フレーズデータを全て送出すると、第２フレーズデータのサイズ分（１２ビット）の送出が完了するため、送出サイズ切替え制御回路５０１に送出完了信号５３２を送出する。
＜第３、第４フレーズデータの送出＞
第１、第２フレーズデータの送出と同様に送出サイズ切替え制御回路５０１とデータ制御回路５０２とは動作し、第３、第４フレーズデータを送出する。
【０１４５】
上記のように変形例３係る楽音出力装置５００によれば、文章のキーワードとなる「今日」と「晴れ」のフレーズデータの圧縮率を下げることで音質を高め、それ以外のフレーズデータの圧縮率を高めて音質を下げることで、実聴における音質低下を感じさせずに、データサイズを抑制し、メモリの格納効率を向上することが可能となる。
≪実施の形態３≫
＜概要＞
実施の形態１では、データバス１１０のバス幅は、ＣＰＵ１０５が処理をするのに必要なｍビット（ｍは整数）で構成されている。読出し制御回路１０９が読出し信号１３５を送出すると、メモリ１１１は、バス幅に合わせて１回にｍビットのデータをデータバス１１０に送出する。
【０１４６】
従って、メモリ１１１に格納される楽音データのデータサイズが、ｍビットの整数倍でない場合には、最後の読出し時に楽音データと一緒に不要なデータも読み出される。
読み出されたデータをそのまま楽音信号に変換してしまうと、楽音信号には、本来の楽音以外の誤った信号が含まれてしまい、音質低下の原因となる。
これに対して、楽音データの最後に、例えば、無音になる楽音データを付け、楽音データのデータサイズが、バス幅ｍビットの整数倍になるようにしてメモリ１１１に格納する方法が考えられるが、メモリの格納効率が低下するため好ましくない。
【０１４７】
そこで、実施の形態３に係る楽音出力装置は、データ制御回路のバッファに格納された楽音データを取込み回数可変回路１１３に送出していき、楽音データのデータサイズ分の送出が完了すると、データ制御回路のバッファにデータが残っていても送出しないよう制御することで、必要な楽音データだけを楽音信号として出力するものである。
＜構成＞
図１１は、実施の形態３に係る楽音出力装置６００の構成図である。
【０１４８】
楽音出力装置６００は同図に示すように、水晶１０１、発振器１０２、逓倍回路１０３、タイミング制御回路１０４、ＣＰＵ１０５、読出し調整回路１０６、アドレスバス１０７、アドレス制御回路１０８、読出し制御回路１０９、データバス１１０、メモリ１１１、取込み回数可変回路１１３、タイミング補正回路１１４、ＤＡ変換器１１５、終了制御回路６０１、データ制御回路６０２から構成される。
【０１４９】
なお、終了制御回路６０１、データ制御回路６０２以外は、実施の形態１と同様であるため、説明は省略する。
終了制御回路６０１は、データ制御回路６０２が楽音データのサイズ分の楽音データを送出すると、データ制御回路６０２に対し、送出を停止するよう制御する回路である。
具体的には、終了制御回路６０１は、所望の楽音データのデータサイズが予めＣＰＵ１０５により内部のレジスタに設定されており、また、データ制御回路６０２から後述するデータ送出信号６３１を受領すると１つ増加するカウンタを備え、カウンタ値が、ＣＰＵ１０５により設定された楽音データのデータサイズに対応するカウント数を超えると、終了検知信号６３２をデータ制御回路６０２に送出することにより、データ制御回路６０２に対し、データの送出を停止させる。
【０１５０】
ここで、終了制御回路６０１が備えるカウンタは、例えば、第１レジスタと第２レジスタの２つのレジスタから構成されるプログラマブルカウンタである。
第１レジスタには、ＣＰＵから設定された楽音データのデータサイズを１アドレス分のデータサイズで割った商を設定する。第２レジスタは、データ制御回路６０２から後述するデータ送出信号６３１を受領する毎にカウントを１つ増加するようにし、第２レジスタの値が、第１のレジスタに設定された値以上になった場合にオーバーフローするようにする。
【０１５１】
なお、プログラマブルカウンタは、周知技術であるため、詳細な説明は省略する。
データ制御回路６０２は、基本的には、実施の形態１に示すデータ制御回路１１２と同様の回路であるが、終了制御回路６０１から終了検知信号６３２を受領すると、バッファにデータが残っていたとしても、以降のデータの送出を停止する点で、データ制御回路１１２とは異なる。
【０１５２】
また、データ制御回路６０２は、１アドレス分の楽音データを送出する毎に
終了制御回路６０１にデータを送出した旨のデータ送出信号６３１を送出する点でも、データ制御回路１１２とは異なる。
＜動作＞
以下、上記構成を備えた楽音出力装置６００において、データ制御回路６０２が内部のバッファに格納された楽音データを送出する際の動作について、説明する。
【０１５３】
なお、データ制御回路６０２がデータバス１１０に送出された楽音データを内部のバッファに格納するまでの動作は実施の形態１と同様であるため、説明は省略する。
以下の説明では、データバス１１０のバス幅を２４ビット、メモリ１１１の１アドレス分のデータサイズを１バイト、楽音データのデータサイズを４０ビットとし、データ制御回路６０２はバッファに格納した楽音データを１バイトずつ送出するものとする。
【０１５４】
また、４０ビットの楽音データは、メモリ１１１のアドレス‘０１’から‘０５’に１バイトずつ配置され、メモリ１１１のアドレス‘０６’には制御プログラムが配置されているものとする。
また、終了制御回路６０１には、ＣＰＵ１０５により、楽音データのデータサイズ４０ビットが設定され、カウンタは、初期値として０が設定されており、楽音データのデータサイズ４０ビットをメモリ１１１の１アドレスに格納されるデータサイズ１バイト（８ビット）で割った商５以上になった場合にオーバーフローするものとする。
【０１５５】
＜１回目に格納された楽音データの送出＞
まず、データ制御回路６０２が、１回目に格納した楽音データを取込み回数可変回路１１３へ送出する動作について説明する。
終了制御回路６０１のカウンタには、初期値として０が設定されており、データ制御回路６０２のバッファには、メモリ１１１のアドレス‘０１’から‘０３’に配置されていた楽音データが格納されている。
【０１５６】
データ制御回路６０２は、格納している楽音データをタイミング制御回路６０３から受領したタイミング信号１５４に同期したタイミングで、１バイトずつ送出データ６２０として取込み回数可変回路１１３へ送出し、１バイト送出する毎に、終了制御回路６０１にデータ送出信号６３１を送出する。
終了制御回路６０１は、データ制御回路６０２からデータ送出信号６３１を受領する毎にカウンタを１つ増加させる。
【０１５７】
データ制御回路６０２が、格納されている楽音データについて、取込み回数可変回路１１３への３回目の送出を行うと、楽音データが格納されていたバッファは空になる。この時点で、終了制御回路６０１のカウンタは３であり、５以上でないため、オーバーフローしない。
＜２回目に格納された楽音データの送出＞
次にデータ制御回路６０２が、２回目に格納した楽音データを取込み回数可変回路１１３へ送出する動作について説明する。
【０１５８】
終了制御回路６０１のカウンタには、３が設定されており、データ制御回路６０２のバッファには、メモリ１１１のアドレス‘０４’及び‘０５’に配置されていた楽音データと、アドレス‘０６’に配置されていた制御プログラムが格納されている。
データ制御回路６０２は、１回目に格納された楽音データの送出と同様にタイミング制御回路６０３から受領したタイミング信号１５４に同期したタイミングで、バッファに格納しているデータのうち先頭２バイト（アドレス‘０４’及び‘０５’に配置されていた楽音データ）まで送出を完了する。
【０１５９】
終了制御回路６０１のカウンタは５となり、５以上であるため、オーバーフローし、終了制御回路６０１は、終了検知信号６３２をデータ制御回路６０２に送出する。
終了検知信号６３２を受領したデータ制御回路６０２は、取込み回数可変回路１１３への楽音データの送出を停止し、バッファに残っている楽音データ以外のデータ（アドレス‘０６’に配置されていた制御プログラム）を送出しないため、ＤＡ変換器１１５において、楽音データのみが楽音信号に変換され出力される。
≪変形例４≫
＜概要＞
変形例４に係る楽音出力装置７００の終了制御回路７０１は、実施の形態３に係る楽音出力装置６００の終了制御回路６０１を変形したものであって、データ制御回路６０２に１回に格納できる楽音データのサイズが、メモリ１１１の１アドレス分のデータサイズの２倍である場合に、カウンタを用いることなくより簡単に構成したものである。
【０１６０】
終了制御回路７０１は、終了制御回路６０２に比べ、より簡単な構成となっているため、低コスト化を図ることができる。
＜構成＞
図１２は、変形例４に係る楽音出力装置７００の構成図である。
楽音出力装置７００は、実施の形態３に係る楽音出力装置６００の終了制御回路６０１を終了制御回路７０１に変えて構成したものである。
【０１６１】
終了制御回路７０１以外は、実施の形態３と同様であるため、説明は省略する。
終了制御回路７０１は、所望の楽音データのデータサイズとデータ制御回路６０２に１回に格納できる楽音データのサイズとが予めＣＰＵ１０５により設定されており、これらからメモリ１１１に格納された楽音データが奇数アドレス分であるか、偶数アドレス分であるかを判定し、判定結果を終了検知信号７３１としてデータ制御回路６０２に送出する回路である。
【０１６２】
判定は、ＣＰＵ１０５により設定された楽音データのデータサイズをデータ制御回路６０２に１回に格納できる楽音データのサイズで割った余りによって行い、余りが“０”の場合には、偶数アドレス分であると判定し、余りが“０”でない場合には、奇数アドレス分であると判定する。
終了制御回路７０１は、偶数アドレス分であると判定した場合には“０”を、奇数アドレス分であると判定した場合には“１”を終了検知信号７３１として送出する。
＜動作＞
以下、上記構成を備えた楽音出力装置７００において、データ制御回路６０２がバッファに格納した楽音データを送出する際の動作について、説明する。
【０１６３】
なお、データ制御回路６０２がデータバス１１０に送出された楽音データをバッファに格納するまでの動作は実施の形態１と同様であるため、説明は省略する。
以下の説明では、データバスのバス幅を１６ビット、データ制御回路６０２に１回に格納できる楽音データのサイズを１６ビット、メモリ１１１の１アドレス分のデータサイズを１バイト、楽音データのデータサイズを４０ビットとし、データ制御回路６０２はバッファに格納した楽音データを１バイトずつ送出するものとする。
【０１６４】
また、４０ビットの楽音データは、メモリ１１１のアドレス‘０１’から‘０５’に１バイトずつ配置され、メモリ１１１のアドレス ‘０６’には制御プログラムが配置されているものとする。
また、終了制御回路７０１には、ＣＰＵ１０５により、データ制御回路６０２に１回に格納できる楽音データのサイズ１６ビットと、楽音データのデータサイズ４０ビットとが設定されているものとする。
【０１６５】
＜１回目、２回目に格納された楽音データの出力＞
まず、データ制御回路６０２が、１回目、２回目に格納した楽音データを取込み回数可変回路１１３へ送出する動作について説明する。
なお、終了制御回路７０１は、ＣＰＵ１０５によりデータ制御回路６０２が１回に格納できる楽音データのサイズ１６ビットと、楽音データのデータサイズ４０ビットとが設定された際に、楽音データのデータサイズ４０ビットを、データ制御回路６０２が１回に格納できる楽音データのサイズ１６ビットで割った余りを求め、余りが“８”であるため、メモリ１１１に格納された楽音データが奇数アドレス分であることを示す“１”を終了検知信号７３１として、予めデータ制御回路６０２に送出してあるものとする。
【０１６６】
データ制御回路６０２は、メモリ１１１のアドレス‘０１’ 及び‘０２’に配置されていた楽音データをバッファに格納すると、バッファに格納している楽音データを１バイトずつ、タイミング制御回路６０３から受領したタイミング信号１５４に同期したタイミングで、取込み回数可変回路１１３へ送出する。
同様に、メモリ１１１のアドレス‘０３’ 及び‘０４’に配置されていた楽音データについても送出する。
【０１６７】
＜３回目に格納された楽音データの出力＞
次に、データ制御回路６０２が、３回目に格納した楽音データを取込み回数可変回路１１３へ送出する動作について説明する。
データ制御回路６０２は、メモリ１１１のアドレス‘０５’に配置されていた楽音データと、アドレス‘０６’に配置されていた制御プログラムをバッファに格納すると、バッファに格納しているデータのうち先頭１バイト（アドレス‘０３’に配置されていた楽音データ）を、タイミング制御回路６０３から受領したタイミング信号１５４に同期したタイミングで、取込み回数可変回路１１３へ送出する。
【０１６８】
データ制御回路６０２は、終了制御回路７０１から受領した終了検知信号７３１が“１”であることから、取込み回数可変回路１１３への楽音データの送出を停止する。
このように、変形例４に係る楽音出力装置７００は、終了制御回路７０１にカウンタを備えることなく、データ制御回路６０２のバッファに残っている制御プログラムの送出を停止することができるという実施の形態と同様の効果を奏することができる。
≪実施の形態４≫
＜概要＞
実施の形態１の楽音出力装置１００は、予めメモリ１１１に格納された楽音データを楽音信号として出力するものであり、メモリ１１１の容量を超える楽音データを楽音信号として出力することはできない。
【０１６９】
実施の形態４の楽音出力装置は、楽音出力装置の外部の装置から読み込んだ外部楽音データをメモリに格納しながら、楽音信号として出力できるようにしたものであり、メモリの容量を超える長大な楽音データを楽音信号として出力することができる。
＜構成＞
図１３は、実施の形態４に係る楽音出力装置８００の構成図である。
【０１７０】
楽音出力装置８００は同図に示すように、水晶１０１、発振器１０２、逓倍回路１０３、タイミング制御回路１０４、ＣＰＵ１０５、読出し調整回路１０６、アドレスバス１０７、データバス１１０、データ制御回路１１２、取込み回数可変回路１１３、タイミング補正回路１１４、ＤＡ変換器１１５、メモリ８０１、アドレス制御回路８０２、読出し制御回路８０３、データ転送回路８０４から構成される。
【０１７１】
メモリ８０１、アドレス制御回路８０２、読出し制御回路８０３、データ転送回路８０４以外は、実施の形態１と同様であるため説明は省略する。
メモリ８０１は、基本的には、実施の形態１におけるメモリ１１１と同様のメモリであるが、メモリ８０１内の特定の格納領域に、データ転送回路８０４により後述する外部楽音データ８２０が格納される点で、メモリ１１１とは異なる。
【０１７２】
アドレス制御回路８０２は、基本的には、実施の形態１におけるアドレス制御回路１０８と同様の回路であるが、メモリ８０１に格納されている楽音データの格納アドレスとして、予めＣＰＵ１０５から内部のレジスタにスタートアドレスとエンドアドレスとが設定されており、スタートアドレスからエンドアドレスまで順次変化させながらアドレス値を送出し、エンドアドレス送出後は再度スタートアドレスから送出する点でアドレス制御回路１０８とは異なる。
【０１７３】
また、アドレス制御回路８０２は、所定のアドレスデータ、例えば、エンドアドレスデータより１つ前のアドレスデータを送出した場合に、読出し制御回路８０３に後述する通信許可信号８３２の送出を求める通信許可要望信号８３１を送出する点でもアドレス制御回路１０８とは異なる。
読出し制御回路８０３は、基本的には、実施の形態１における読出し制御回路１０９と同様の回路であるが、アドレス制御回路８０２から通信許可要望信号８３１を受領すると、データ転送回路８０４に後述する外部楽音データ８２０をメモリ８０１に格納するよう指示する通信許可信号８３２を送出する点で、読出し制御回路１０９とは異なる。
【０１７４】
データ転送回路８０４は、読出し制御回路８０３から通信許可信号８３２を受領すると、楽音出力装置８００の外部の装置、例えば、ＣＤ−ＲＯＭドライブ（以下、「外部装置」という）と同期を取りながら、外部装置から受領した外部楽音データ８２０を内部に有するバッファに格納し、バッファに格納された外部楽音データ８２０を予めＣＰＵ１０５から内部のレジスタに設定されたメモリ８０１のスタートアドレスからエンドアドレスまでの領域に転送する回路である。
【０１７５】
また、データ転送回路８０４は、順次外部楽音データ８２０をメモリ８０１に格納していき、エンドアドレスに外部楽音データ８２０を格納すると、一旦格納を停止し、読出し制御回路８０３から通信許可信号８３２を受領すると、再度、メモリ８０１のスタートアドレスからエンドアドレスまでの領域への外部楽音データ８２０の格納を開始し、上記動作を繰り返す。
【０１７６】
なお、データ転送回路８０４は、データ制御回路１１２が読み出していない楽音データが配置されたメモリ８０１上の領域を新たな外部楽音データ８２０で上書きすることがないよう、通常のフロー制御がなされているものとする。
＜動作＞
以下、上記構成を備えた楽音出力装置８００について、外部楽音データ８２０のメモリ８０１への格納と読出しの動作を説明する。
【０１７７】
以下の説明では、アドレス制御回路８０２は、エンドアドレスより１つ前のアドレス値を送出した場合に、通信許可要望信号８３１を送出するものとする。
なお、バス使用権の調整については、実施の形態１と同様であるため、説明は省略する。
＜１回目の外部楽音データ８２０の格納＞
ＣＰＵ１０５は、楽音再生の要求が発生すると、アドレス制御回路８０２とデータ転送回路８０４とにメモリ８０１上のスタートアドレスとエンドアドレスを設定する。
【０１７８】
データ転送回路８０４は、ＣＰＵ１０５からメモリ８０１のスタートアドレスとエンドアドレスを設定されると、外部装置から受領した外部楽音データ８２０をバッファに格納し、バッファに格納された外部楽音データ８２０をメモリ８０１のスタートアドレスから順に格納をしていき、エンドアドレスに格納すると、一旦格納を停止する。
＜１回目の楽音データの読出し＞
アドレス制御回路８０２が、エンドアドレスの１つ前のアドレス値をアドレスバス１０３に送出するまでは、実施の形態１と同様に楽音データの読出しが行われる。
【０１７９】
アドレス制御回路８０２が、エンドアドレスの１つ前のアドレス値をアドレスバス１０３に送出すると、アドレス制御回路８０２は、読出し制御回路８０３に通信許可要望信号８３１を送出する。
読出し制御回路８０３は、通信許可要望信号８３１を受領すると、データ転送回路８０４に通信許可信号８３２を送出する。
【０１８０】
アドレス制御回路８０２は、エンドアドレスを送出し、実施の形態１と同様に楽音データの読出しが行われる。
＜２回目の外部楽音データ８２０の格納＞
データ転送回路８０４は、読出し制御回路８０３から通信許可信号８３２を受領すると、１回目の外部楽音データ８２０の格納と同様に外部装置から受領した外部楽音データ８２０を、メモリ８０１のスタートアドレスからエンドアドレスまでの領域に格納し、エンドアドレスまで格納すると、一旦格納を停止する。
【０１８１】
以降、１回目の楽音データの読出しと同様に、２回目の楽音データの読出しが行われ、上記の動作を繰り返すことにより、外部から入力される長大な楽音データを再生し続ける事が出来る。
＜補足＞
以上、本発明に係る楽音出力装置について実施形態に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した実施形態で示した通りの楽音出力装置に限られないことは勿論である。
（１）実施の形態１の取込み回数可変回路１１３は、予め設定されたオーバーサンプリング数に従って楽音データを送出データ１２１として送出するものとしたが、発振器１０２が送出するクロック１４１の周波数と、逓倍回路１０３が送出するクロック１４２の周波数との関係から、オーバーサンプリング数を適切な値に設定できるものとしてもよい。
【０１８２】
具体的なオーバーサンプリング数の設定値について、楽音のサンプリング周波数を１０ＫＨｚ、通常のオーバーサンプリング数を３２回、ＤＡ変換器の分解能を１２値、クロック１４１を６ＭＨｚ、逓倍回路１０３は２逓倍するものでクロック１４２は１２ＭＨｚとした場合を例に説明する。
まず、ＤＡ変換器１１５に必要なクロック周波数を算出する。ＤＡ変換器１１５に必要なクロック周波数は、楽音のサンプリング周波数、通常のオーバーサンプリング数、及び、ＤＡ変換器の分解能から算出でき、１０ＫＨｚ×３２回×１２値≒４ＭＨｚとなる。
【０１８３】
しかし、ＤＡ変換器１１５が実際に受領するクロック１４１は、６ＭＨｚであるため、取込み回数可変回路１５９は、オーバーサンプリング数を通常のオーバーサンプリング数３２回から適切なオーバーサンプリング数に変更する必要がある。
変更後のオーバーサンプリング数は、通常のオーバーサンプリング数、ＤＡ変換器が受領するクロック周波数、及び、ＤＡ変換器に必要なクロック周波数から算出でき、３２回×６ＭＨｚ／４ＭＨｚ＝４８回となる。
（２）実施の形態２のデータ制御回路４０２は、１つのバッファの中に、残データを格納するバッファ領域とデータバス１１０に送出された楽音データを格納するバッファ領域とを設けることとしたが、それぞれ専用のバッファを設けることとしてもよい。
（３）実施の形態３では、データ制御回路６０２は、終了制御回路６０１から終了検知信号６３２を受領すると、バッファに送出されていないデータが残っていたとしても以降のデータ送出を停止するとしたが、残ったデータがある場合には、残ったデータの値に関わらず無音データを送出するとしてもよい。
（４）実施の形態３では、データバス１１０のバス幅とメモリ１１１の１アドレス分のデータサイズとが異なる例で説明したが、データバス１１０のバス幅とメモリ１１１の１アドレス分のデータサイズとが同一の場合（実施の形態３の例では２４ビット）としてもよい。
（５）実施の形態４のメモリ８０１は、外部楽音データ８２０を格納できるものであれば、不揮発性のメモリであっても、揮発性のメモリであってもよい。なお、揮発性のメモリである場合、メモリ８０１上のデータが失われた場合には、ＣＰＵ１０５が使用する制御プログラム等を、外部の記憶装置等に記憶しておき、その記憶装置等からメモリ８０１に書き込んで使用する必要がある。
（６）実施の形態４では、フロー制御により、データ制御回路１１２が読み出していない楽音データが配置されたメモリ８０１上の領域に、データ転送回路８０４が新たな外部楽音データ８２０を上書きすることがないようにしているが、外部楽音データ８２０を格納する領域として、メモリ８０２上に２つの領域を設けることにより、上書きを回避することとしてもよい。
【０１８４】
例えば、アドレス制御回路８０２が一方の領域のスタートアドレスを送出すると、読出し制御回路８０３に通信許可要望信号８３１を送出し、通信許可要望信号８３１を受領した読出し制御回路８０３はデータ転送回路８０４に通信許可信号８３２を送出する。
通信許可信号８３２を受領したデータ転送回路８０４は、アドレス制御回路８０２が送出しているアドレス値が属する領域とは異なる他方の領域に外部楽音データ８２０を格納するようにすればよい。
【産業上の利用可能性】
【０１８５】
本発明に係る楽音出力装置は、楽音データと制御プログラムが格納されたメモリから、楽音データを読み出してアナログ信号に変換して出力するために利用されるものである。
【図面の簡単な説明】
【０１８６】
【図１】実施の形態１に係る楽音出力装置１００の構成図である。
【図２】実施の形態１に係る楽音出力装置１００のバス使用権の調整及び楽音データの読出しの動作を示すタイミングチャートである。
【図３】ずれが発生しない場合の実施の形態１に係るタイミング補正回路１１４の動作を示すタイミングチャートである。
【図４】ずれが発生する場合の実施の形態１に係るタイミング補正回路１１４の動作を示すタイミングチャートである。
【図５】変形例１に係るデータ制御回路２０１の構成図である。
【図６】変形例１に係るデータ制御回路２０１の動作を示すタイミングチャートである。
【図７】変形例２に係るデータ制御回路３０１の構成図である。
【図８】変形例２に係るデータ制御回路３０１の動作を示すタイミングチャートである。
【図９】実施の形態２に係る楽音出力装置４００の構成図である。
【図１０】変形例３に係る楽音出力装置５００の構成図である。
【図１１】実施の形態３に係る楽音出力装置６００の構成図である。
【図１２】変形例４に係る楽音出力装置７００の構成図である。
【図１３】実施の形態４に係る楽音出力装置８００の構成図である。
【符号の説明】
【０１８７】
１００、４００、５００、６００、７００、８００    楽音出力装置
１０１    水晶
１０２    発振器
１０３    逓倍回路
１０４、４０４    タイミング制御回路
１０５    ＣＰＵ
１０６    読出し調整回路
１０７    アドレスバス
１０８、８０２    アドレス制御回路
１０９、８０３    読出し制御回路
１１０    データバス
１１１、８０１    メモリ
１１２、２０１、３０１、４０２、５０２、６０２    データ制御回路
１１３    取込み回数可変回路
１１４    タイミング補正回路
１１５    ＤＡ変換器
２０２    第１データ制御回路
２０３    第２データ制御回路
２０４、３０５  タイミング調整回路
３０２    バッファ
３０３    制御回路
４０１    送出サイズ切替えレジスタ
４０３    復号化回路
５０１    送出サイズ切替え制御回路
６０１、７０１    終了制御回路
８０４    データ転送回路
【図１】
0004778872.tif 000002
【図２】
0004778872.tif 000003
【図３】
0004778872.tif 000004
【図４】
0004778872.tif 000005
【図５】
0004778872.tif 000006
【図６】
0004778872.tif 000007
【図７】
0004778872.tif 000008
【図８】
0004778872.tif 000009
【図９】
0004778872.tif 000010
【図１０】
0004778872.tif 000011
【図１１】
0004778872.tif 000012
【図１２】
0004778872.tif 000013
【図１３】
0004778872.tif 000014