説明

楽音発生装置

【課題】楽音発生処理によって生じるマイクロコンピュータへの負荷を軽減し、効率的に楽音を発生することができる楽音発生装置を提供する。
【解決手段】CPU102は、サンプリング周期の2倍周期毎にインバータ300から出力されるクロック信号Cに従って、格納領域200_1及び200_2に順にサンプルデータを格納する。一方、バッファ部21は、サンプリング周期毎にタイマ501から出力されるクロック信号Aに従って、先頭の格納領域200_1に格納されているサンプルデータをDAC601へと出力し、2番目の格納領域200_2に格納されているサンプルデータを先頭の格納領域200_1に転送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、楽音発生装置に関し、より特定的には、マイクロコンピュータによって楽音サンプルデータの作成と、サンプルデータ出力処理とを行うための楽音発生装置に関するものである。
【背景技術】
【0002】
従来、CDやMD等を再生するオーディオ製品においては、楽音処理専用のハードウェアを備えるLSIが楽音発生装置として使用されている。楽音処理専用の楽音発生装置は、音質を向上させるために、オーバーサンプリング処理や、より高いサンプリング周期でのサンプルデータの出力を行うことができる。
【0003】
一方、報知器や冷蔵庫のような家電システムは、ユーザに操作説明を促す等の目的で、楽音データとして用意された音声を再生する場合がある。家電システムに音声再生機能を付加する場合、コスト抑制の観点から、オーディオ製品に用いられるような高価な専用LSIを使用することができない場合がある。
【0004】
そこで、家電システム等においては、安価な汎用マイクロコンピュータを用いるソフトウェア処理によって、楽音データが再生される場合がある(例えば、特許文献1参照)。
【0005】
図9は、従来の楽音発生装置の概略構成を示すブロック図であり、図10は、図9に示される楽音発生装置のタイミングチャートである。
【0006】
図9に示される楽音発生装置は、マイクロコンピュータによって実現され、圧縮された楽音データを記憶する楽音メモリ101と、CPU102と、楽音データのサンプリング周期毎にクロック信号を出力するタイマ501と、DAC601とを備える。
【0007】
CPU102は、タイマ501が出力するクロック信号毎に割り込み処理を実行することによって、楽音データの再生を行う。より詳細には、図10のA欄に示されるように、楽音発生装置は、クロック信号Aの立ち上がりタイミング毎に、CPU102に対して割り込み要求を発行する。CPU102は、割り込み要求に応答して、楽音メモリ101に記憶されている楽音データをデコードし、サンプルデータを生成する。次に、CPU102は、図10のB欄に示されるように、割り込み要求毎に、生成されたサンプルデータをDAC(D/Aコンバータ)601に出力する。その後、DAC601は、入力されたサンプルデータをアナログ変換することによって得られたアナログデータを、外部端子602を介して外部に出力する。
【0008】
また、楽音データの再生音質を向上させるために、マイクロコンピュータを用いるソフトウェア処理によって、オーバーサンプリング処理が実行される場合がある。
【0009】
図11は、従来の楽音発生装置における割り込み処理を示すフローチャートである。尚、オーバーサンプリング処理が実行される場合、楽音発生装置は、オーバーサンプリング周期毎に、CPUに対して割り込み要求を発行する。
【0010】
CPUは、割り込み要求に応答して、メモリに記憶されている楽音データをデコードする(ステップS1101)。次に、CPUは、サンプルデータと補間データとを交互に出力するために、割り込み要求のタイミングがサンプリング周期と一致するか否かを判定する(ステップS1102)。割り込み要求のタイミングがサンプリング周期と一致しない場合(ステップS1102でNo)、CPUは、補間処理を行う(ステップS1103)。より詳細には、CPUは、前回の割り込み処理時に生成されたサンプルデータと、ステップS1101において生成されたサンプルデータとの補間データを作成する。その後、CPUは、作成された補間データを出力し(ステップS1105)、割り込み処理を終了する。
【0011】
一方、割り込み要求のタイミングがサンプリング周期と一致する場合(ステップS1102でYes)、CPUは、デコードされたサンプルデータを出力対象として選択する(ステップS1104)。そして、CPUは、ステップS1101において生成されたサンプルデータを出力し(ステップS1105)、割り込み処理を終了する。
【特許文献1】特開平5−061460号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
上記の楽音発生装置のように、マイクロコンピュータによって楽音の出力を行うためには、メモリからの圧縮楽音データの読み出しと、読み出された圧縮楽音データのデコードと、デコードによって生成されたサンプルデータの出力とがソフトウェア処理によって実行される必要がある。
【0013】
しかしながら、マイクロコンピュータは、楽音データのデコードによるサンプルデータの生成処理と、生成されたサンプルデータの出力処理のために、その処理能力の大部分を割り当てる。そのため、マイクロコンピュータは、楽音を出力する処理と、それ以外の他の処理とを同時に実行することが困難であった。
【0014】
また、決められたサンプリング周期毎にサンプルデータを出力する必要があるため、サンプルデータを生成及び出力させるための割込み処理を最優先で実行できるようにシステムを構成する必要があった。そのため、サンプルデータ出力以外で時間的な制約のある処理(例えば、家電製品等の機能を実現するための制御処理)を同時に実行させることが困難であった。
【0015】
一般に、CPUは、割り込み処理を実行するために、処理中のデータを一時的に待避して実行すべき処理を切り替えるためのオーバーヘッド時間を必要とする。上記のような従来の楽音発生装置は、サンプリング周期またはオーバーサンプリング周期毎に割り込み要求を発行するので、割り込み回数に応じて、必要なオーバーヘッド時間の占める割合が増加する。その結果、CPUの使用効率が低下する。
【0016】
更に、マイクロコンピュータによって高品質な楽音を出力するために、オーバーサンプリング処理が実行される場合、マイクロコンピュータは、更に、補間データの作成処理と、デコードデータ及び補間データの出力の切り替え処理とをソフトウェア処理によって実行する必要がある。この結果、マイクロコンピュータへの負荷が更に増大する。
【0017】
それ故に、本発明は、楽音発生処理によって生じるハードウェアへの負荷を軽減し、効率的に楽音を発生することができる楽音発生装置を提供することを目的とする。
【課題を解決するための手段】
【0018】
第1の局面は、メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置に向けられている。当該楽音発生装置は、楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に第2クロック信号を出力する第2クロック信号生成部と、m個(ただし、mは2以上の整数とする)以上のサンプルデータを格納し、第1クロック信号に従って、格納されているサンプルデータの各々を所定順序で1つずつ出力するバッファ部と、メモリに記憶されている楽音データをデコードすることによって、複数のサンプルデータを生成し、第2クロック信号に従って、m個(ただし、mは2以上の整数とする)以上のサンプルデータをバッファ部に格納する演算部とを備える。
【0019】
この場合、第2クロック信号生成部は、サンプリング周期の2倍の周期毎に第2クロック信号を出力し、バッファ部は、サンプルデータを1つずつ格納する2つの格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目の格納領域に格納されているサンプルデータを先頭の格納領域に転送し、演算部は、2つのサンプルデータを先頭の格納領域から所定順序で格納しても良い。
【0020】
あるいは、第2クロック信号生成部は、サンプリング周期のm倍(ただし、mは3以上の整数とする)の周期毎に第2クロック信号を出力し、バッファ部は、サンプルデータを1つずつ格納するm個(ただし、mは3以上の整数とする)の格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域に格納されているサンプルデータの各々を、先頭の格納領域に向かって所定順序で1つずつ転送し、演算部は、m個(ただし、mは3以上の整数とする)のサンプルデータを先頭の格納領域から所定順序で格納しても良い。
【0021】
あるいは、第2クロック信号生成部は、サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に第2クロック信号を出力し、バッファ部は、サンプルデータを1つずつ格納する(m+1)個(ただし、mは2以上の整数とする)の格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域に格納されているサンプルデータの各々を、先頭の格納領域に向かって所定順序で1つずつ転送し、演算部は、m個(ただし、mは2以上の整数とする)のサンプルデータを2番目の格納領域から所定順序で格納しても良い。
【0022】
第2の局面は、メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置に向けられている。当該楽音生成装置は、楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、第1クロック信号の周期の半分の周期毎に第2クロック信号を出力する第2クロック信号生成部と、2つ以上のサンプルデータを格納し、第1クロック信号に従って、格納されているサンプルデータの各々を所定順序で1つずつ出力するバッファ部と、メモリに記憶されている楽音データをデコードすることによって、複数のサンプルデータを生成し、第1クロック信号に従って、1つ以上のサンプルデータをバッファ部に格納する演算部と、バッファ部に2つ以上のサンプルデータが格納されているときに、先頭から連続する2つのサンプルデータから補間データを生成し、補間データを出力する補間データ生成部と、第2クロック信号に従って、バッファ部からの出力と、補間データ生成部からの出力とを交互に選択して出力する出力選択部とを備える。
【0023】
この場合、バッファ部は、サンプルデータを1つずつ格納する2つの格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目の格納領域に格納されているサンプルデータを先頭の格納領域に転送し、演算部は、第1クロック信号に従って、1つのサンプルデータを2番目の格納領域に所定順序で格納しても良い。
【0024】
第3の局面は、メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置であって、楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、第1クロック信号の周期の半分の周期毎に第2クロック信号を出力する第2クロック信号生成部と、サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に第2クロック信号を出力する第2クロック信号生成部と、m個(ただし、mは2以上の整数とする)以上のサンプルデータを格納し、第1クロック信号に従って、格納されているサンプルデータの各々を所定順序で1つずつ出力するバッファ部と、メモリに記憶されている楽音データをデコードすることによって、複数のサンプルデータを生成し、第3クロック信号に従って、m個(ただし、mは2以上の整数とする)以上のサンプルデータをバッファ部に格納する演算部と、バッファ部に2つ以上のサンプルデータが格納されているときに、先頭から連続する2つのサンプルデータから補間データを生成し、補間データを出力する補間データ生成部と、第2クロック信号に従って、バッファ部からの出力と、補間データ生成部からの出力とを交互に選択して出力する出力選択部とを備える。
【0025】
この場合、第3クロック信号生成部は、サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に、第3クロック信号を出力し、バッファ部は、サンプルデータを1つずつ格納する(m+1)個(ただし、mは2以上の整数とする)の格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域に格納されているサンプルデータの各々を、先頭の格納領域に向かって所定順序で1つずつ転送し、演算部は、第3クロック信号に従って、m個(ただし、mは2以上の整数とする)のサンプルデータを2番目以降の格納領域から所定順序で格納しても良い。
【0026】
あるいは、第3クロック信号生成部は、サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に、第3クロック信号を出力し、バッファ部は、サンプルデータを1つずつ格納する(m+2)個(ただし、mは2以上の整数とする)の格納領域を含み、第1クロック信号に従って、先頭の格納領域に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域に格納されているサンプルデータを、先頭の格納領域に向かって所定順序で1つずつ転送し、演算部は、第3クロック信号に従って、m個(ただし、mは2以上の整数とする)のサンプルデータを3番目の格納領域から所定順序で格納しても良い。
【発明の効果】
【0027】
第1の局面に係る楽音発生装置によれば、演算部への割込み処理がサンプリング周期によって制限されないため、楽音出力処理の優先度に左右されない楽音発生装置を実現することが可能となる。また、割込み処理の回数が間引きされるため、割込み処理によって生じていた演算部の負荷を軽減することが可能となる。
【0028】
第2の局面に係る楽音発生装置によれば、オーバーサンプリング処理が実行される際に、演算部への割り込み処理の回数がオーバーサンプリング周期によって制限されないため、楽音出力処理の優先度に左右されず、かつ、より高音質な楽音を再生する楽音発生装置を実現することが可能となる。また、補間処理がハードウェアによって実行されるため、オーバーサンプリング処理によって生じる演算部への負荷を軽減することができる。その結果、演算部は、楽音発生処理以外の他の処理を同時に効率的に実行することも可能となる。
【0029】
第3の局面に係る楽音発生装置によれば、オーバーサンプリング処理が実行される際に、演算部への割り込み処理の回数をサンプリング周波数より少なくなるので、演算部の負荷を一層軽減し、かつ、より高音質な楽音を再生する楽音発生装置を実現することが可能となる。また、補間処理がハードウェアによって実行されるため、オーバーサンプリング処理によって生じる演算部への負荷を軽減することができる。その結果、演算部は、楽音発生処理以外の他の処理を同時かつ効率的に実行することも可能となる。
【発明を実施するための最良の形態】
【0030】
以下、図面を参照しながら、各実施形態について説明する。また、各図面において、同一符号は、同一または相当部分を示す。
【0031】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る楽音発生装置の概略構成を示すブロック図であり、図2は、図1に示される楽音発生装置のタイミングチャートである。
【0032】
図1に示される楽音発生装置11は、タイマ501と、フリップフロップ502と、インバータ300と、バッファ部21と、CPU102とを備える。
【0033】
タイマ501は、楽音メモリ101に記憶されている楽音データのサンプリング周期毎に、第1クロック信号Aを出力する。尚、本実施形態においては、タイマ501は、サンプリング周期毎に第1クロック信号Aを出力する第1クロック信号生成部に相当する。
【0034】
フリップフロップ(FF)502は、楽音データのサンプリング周期の2倍の周期毎にクロック信号Bを出力する。インバータ300は、クロック信号Bを反転させることによって得られる第2クロック信号Cを出力する。尚、本実施形態において、フリップフロップ(FF)502と、インバータ300とは、第2クロック信号Cを出力するための第2クロック信号生成部に相当する(ただし、nは、2以上の整数とする)。
【0035】
バッファ部21は、CPU102によって生成される2つ以上のサンプルデータを、サンプルデータが生成された順に格納する。また、バッファ部21は、第1クロック信号Aに従って、格納されている2つのサンプルデータの各々を、サンプルデータが生成された順に1つずつ出力する機能を有する。
【0036】
より特定的には、本実施形態に係るバッファ部21は、サンプルデータを1つずつ格納する2つの格納領域200_1及び200_2を含む。バッファ部21は、第1クロック信号Aにしたがって、先頭の格納領域200_1に格納されているサンプルデータを出力し、かつ、2番目の格納領域200_2に格納されているサンプルデータを先頭の格納領域200_1へと転送する。
【0037】
CPU102は、楽音メモリ101に記憶されている楽音データをデコードすることによって複数のサンプルデータを生成する。そして、CPU102は、第2クロック信号Cに従って、生成されたサンプルデータを格納領域200_1及び200_2の各々に、サンプルデータが生成された順に格納する。
【0038】
本実施形態に係る楽音発生装置11は、例えば家電装置等に制御装置として含まれるマイクロコンピュータを利用して実現される。したがって、CPU102は、楽音発生処理に加えて、家電装置の機能を実現するために必要な制御処理を併せて実行することができる。
【0039】
尚、楽音メモリ101は、楽音データを記憶する。また、DAC(D/Aコンバータ)601は、楽音発生装置11から出力されたサンプルデータをアナログ変換することによって得られるアナログ信号を、外部端子602に出力する。
【0040】
ここで、本実施形態に係る楽音発生装置11による楽音出力動作について説明する。
【0041】
まず、CPU102は、処理の空き時間に楽音データをデコードすることによって予め所定数のサンプルデータを予め生成する。尚、CPU102は、バッファ部21に一度に格納する個数以上のサンプルデータを作成しておけばよい。次にCPU102は、時刻t1において、第2クロック信号Cの立ち下がりに応答して、予め作成されたサンプルデータを格納領域200_1及び200_2の各々に格納する。
【0042】
次に、バッファ部21は、時刻t1において、タイマ501から出力される第1クロック信号Aの立ち上がりに応答して、先頭の格納領域200_1に格納されたサンプルデータをDAC601へと出力する。ほぼ同時に、バッファ部21は、2番目の格納領域200_2に格納されているサンプルデータを先頭の格納領域200_1に転送する。
【0043】
次に、バッファ部21は、時刻t2において、第1クロック信号Aの立ち上がりに応答して、格納領域200_1に格納されているサンプルデータをDAC601へと出力する。
【0044】
尚、時刻t3以降においては、CPU102及び楽音発生装置11は、上記の時刻t1〜t2までの期間と同様の処理を繰り返す。これにより、楽音発生装置11は、楽音データをデコードすることによって生成されたサンプルデータを、格納領域200_1及び200_2を介して連続してDAC601に連続して出力することができる。
【0045】
尚、本実施形態においては、CPU102は、第2クロック信号Cの立ち下がりに応答して、格納領域200_1及び200_2にサンプルデータを格納するが、CPU102は、第2クロック信号Cの立ち下がりによって規定される期間(図2のD欄に示される更新期間)内に、格納領域200_1及び200_2の各々に順にサンプルデータを格納しても良い。
【0046】
以上のように、本実施形態に係る楽音発生装置11は、楽音データのサンプリング周期毎に、先頭の格納領域200_1に格納されているサンプリングデータをDAC601へと出力する。これに対して、CPU102は、処理の空き時間に予め生成したサンプルデータを、第2クロック信号Cの周期、すなわち、サンプリング周期の2倍の周期毎に格納領域200_1及び200_2の各々に、サンプルデータが生成された順序で格納する。
【0047】
したがって、本実施形態に係る楽音発生装置11によれば、CPU102への割り込み要求回数は、サンプリング周波数の半分に間引きされる。割り込み要求回数が減少するにつれて、CPUが割り込み処理を実行する時に生じるオーバーヘッド時間が減少する。よって、CPU102は、必要な処理を効率的に実行することが可能となる。
【0048】
また、本実施形態に係る楽音発生装置によれば、サンプルデータを生成し出力するための割込み処理は、サンプリング周期によって制限されない。したがって、楽音出力処理の優先度に左右されない楽音発生装置を実現することが可能となる。
【0049】
(第2の実施形態)
図3は、本発明の第2の実施形態に係る楽音発生装置の概略構成を示すブロック図であり、図4は、図3に示される楽音発生装置のタイミングチャートである。
【0050】
図3に示される楽音発生装置12は、タイマ501と、カウンタ505と、分周数データ503が入力されるコンパレータ504と、インバータ300と、バッファ部22と、CPU102とを備える。以下では、本実施形態と第1の実施形態との相違点を中心に説明する。
【0051】
本実施形態に係るバッファ部21は、サンプルデータを1つずつ格納する(m+1)個の格納領域200_1〜200_(m+1)を含む(ただし、mは2以上の整数とする)。バッファ部21は、第1クロック信号Aに従って、先頭の格納領域200_1に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域200_2及び200_(m+1)に格納されているサンプルデータの各々を、先頭の格納領域200_1へ向かって、サンプルデータが生成された順序で1つずつ転送する。
【0052】
カウンタ(CNT)505は、タイマ501から入力される第1クロック信号Aの立ち上がりをカウントする。コンパレータ504は、分周数データ503と、カウンタ505の出力とを比較し、カウンタ505の出力と分周数データ503とが一致するときに立ち上がるクロック信号Bをインバータ300へと出力する。また、インバータ300は、クロック信号Bを反転させることによって得られる第2クロック信号Cを出力する。尚、本実施形態においては、タイマ501と、カウンタ505と、分周数データ503が入力されるコンパレータ504とは、サンプリング周期のm倍の周期毎に第2クロック信号Cを生成する第2クロック信号生成部に相当する(ただし、mは2以上の整数とする)。
【0053】
CPU102は、楽音メモリ101に記憶されている楽音データをデコードすることによって複数のサンプルデータを生成する。そして、CPU102は、第2クロック信号Cに従って、生成されたサンプルデータを順に、2番目以降の格納領域200_2〜200_(m+1)の各々に格納する。
【0054】
ここで、本実施形態に係る楽音発生装置12による楽音出力動作について説明する。尚、本実施形態においては、一例として、バッファ部22が5つの格納領域200_1〜200_5を含み、かつ、分周数データが4に設定されている場合(mが4に設定されている場合)を想定する。
【0055】
まず、CPU102は、空き時間に楽音データをデコードすることによって複数のサンプルデータを生成する。次に、CPU102は、時刻t1において、第2クロック信号Cの立ち下がりに応答して、4つのサンプルデータの各々を、2番目以降の格納領域200_2〜200_5の各々に、当該サンプルデータが生成された順に格納する。
【0056】
次に、バッファ部22は、時刻t1において、第1クロック信号Aの立ち上がりに応答して、2番目以降の格納領域200_2〜203_5の各々に格納されているサンプルデータを、先頭の格納領域に向かって、順に1つずつ転送する。すなわち、楽音発生装置12は、格納領域200_2〜200_5に格納されているサンプルデータの各々を、それぞれ、格納領域200_1〜200_4へと順に転送する。
【0057】
次に、バッファ部22は、時刻t2において、第1クロック信号Aの立ち上がりに応答して、格納領域200_1に格納されているサンプルデータをDAC601へと出力する。ほぼ同時に、楽音発生装置12は、2番目以降の格納領域200_2〜200_4に格納されているサンプルデータの各々を、それぞれ、格納領域200_1〜200_3に順に転送する。
【0058】
以下同様に、バッファ部22は、時刻t3及びt4において、格納領域200_1に格納されているサンプルデータをDAC601に出力し、格納領域200_2及び200_3に格納されているサンプルデータの各々を順に先頭の格納領域200_1へと1つずつ転送する。この結果、時刻t1において格納領域200_2〜200_5に格納された4つのサンプルデータの各々は、時刻t2〜t5の各々において順にDAC601へと出力される。
【0059】
尚、以降においては、CPU102及びバッファ部22は、上記の時刻t1〜t4までの期間と同様の処理を繰り返す。これにより、楽音発生装置12は、楽音データをデコードすることによって生成されたサンプルデータを、バッファ部22を介して連続してDAC601に出力することができる。
【0060】
尚、本実施形態においては、CPU102は、第2クロック信号Cの立ち下がりに応答して、格納領域200_2〜200_(m+1)にサンプルデータを格納するが、CPU102は、第2クロック信号Cの立ち下がりによって規定される期間(図4のD欄に示される更新期間)内に、格納領域200_2〜200_(m+1)の各々に順にサンプルデータを格納しても良い。
【0061】
以上のように、本実施形態に係る楽音発生装置12は、楽音データのサンプリング周期毎に、格納領域200_1に格納されているサンプリングデータをDAC601へと出力する。これに対して、CPU102は、処理の空き時間に予め生成したサンプルデータを、第2クロック信号Cの周期、すなわち、サンプリング周期のm倍の周期毎にバッファ部22へと格納する(ただし、mは2以上の整数とする)。したがって、楽音発生装置12によれば、CPU102への割り込み要求回数は、サンプリング周波数の1/mに間引きされる。割り込み要求回数が減少するにつれて、CPU102が割り込み処理を実行する時に生じるオーバーヘッド時間の占める割合が減少する。よって、CPU102は、楽音発生処理と他の必要な処理とを並列的かつ効率的に実行することが可能となる。
【0062】
(第3の実施形態)
図5は、本発明の第3の実施形態に係る楽音発生装置の概略構成を示すブロック図であり、図6は、図5に示される楽音発生装置のタイミングチャートである。
【0063】
図5に示される楽音発生装置13は、逓倍器506と、補間データ生成器301と、セレクタ401とを更に備える点で、第1の実施形態と相違する。以下では、本実施形態と第1の実施形態との相違点を中心に説明する。
【0064】
タイマ501は、第1の実施形態と同様に、楽音データのサンプリング周期毎クロック信号Aを出力する。逓倍器506は、タイマ501から出力されたクロック信号Aを逓倍することによって得られる第2クロック信号Eを出力する。より特定的には、逓倍器506は、クロック信号Aの周期、すなわち、サンプリング周期を2倍にし、オーバーサンプリング周期を生成する。尚、本実施形態において、タイマ501と逓倍器506とは、第2クロック信号Eを出力するための第2クロック信号生成部に相当する。
【0065】
フリップフロップ502は、逓倍器506から出力されたクロック信号Eを(1/2)に分周することによって得られるクロック信号Bを出力する。インバータ300は、クロック信号Bを反転させることによって得られる第1クロック信号Cを出力する。尚、本実施形態において、フリップフロップ502及びインバータ300は、サンプリング周期毎に第1クロック信号Cを出力するための第1クロック信号生成部に相当する。また、本実施形態においては、バッファ部23は、第1クロック信号Cの代わりに、クロック信号Aを用いても良い。
【0066】
補間データ生成器301は、格納領域200_1及び200_2の各々に格納されているサンプルデータの各々を加算した後、加算されたデータを1/2にすることによって、直線補間サンプルデータを生成する。また、補間データ生成器301は、生成された補間サンプルデータをセレクタ401へと出力する。
【0067】
セレクタ401は、第2クロック信号Eの立ち上がりに応答して、バッファ部23から出力されたサンプルデータと、補間データ生成器301から出力された直線補間データとを交互に選択して出力する。
【0068】
CPU102は、楽音メモリ101に記憶されている楽音データをデコードすることによって複数のサンプルデータを順に生成する。そして、CPU102は、第2クロック信号Cに従って、1つのサンプルデータを順に格納領域200_2に格納する。
【0069】
ここで、本実施形態に係る楽音発生装置13による楽音出力動作について説明する。
【0070】
まず、CPU102は、処理の空き時間に、楽音メモリ101に記憶されているデコードデータをデコードすることによって、所定数のサンプルデータを予め作成する。次にCPU102は、時刻t1において、第2クロック信号Cの立ち下がりに応答して、予め作成されたサンプルデータを格納領域200_2に格納する。
【0071】
次に、時刻t1からサンプリング周期が経過した時刻t3において、バッファ部23は、第1クロック信号Cの立ち下がりに応答して、格納領域200_2に格納されているサンプルデータを格納領域200_1に転送する。
【0072】
また、時刻t3において、バッファ部23は、格納領域200_1に格納されているサンプルデータを出力する。セレクタ401は、逓倍器506から出力される第2クロック信号Eの立ち上がりに応答して、バッファ部23から出力されたサンプルデータをDAC601へと出力する。
【0073】
一方、時刻t3において、CPU102は、第1クロック信号Cの立ち下がりに応答して、サンプルデータを格納領域200_2に格納する。補間データ生成器301は、格納領域200_1及び格納領域200_2の各々に格納されているサンプルデータから、補間サンプルデータを生成する。
【0074】
次に、時刻t4において、セレクタ401は、第1クロック信号Eの立ち上がりに応答して、補間データ生成器301からの出力を選択し、補間サンプルデータをDAC601へと出力する。
【0075】
時刻t5以降においては、楽音発生装置13は、上記の時刻t3〜t5までの期間と同様の処理を繰り返す。これにより、楽音発生装置13は、楽音データをデコードすることによって生成されたサンプルデータと補間サンプルデータとを、バッファ部23を介してオーバーサンプリング周期毎に連続してDAC601に出力することができる。
【0076】
尚、本実施形態においては、CPU102は、第2クロック信号Cの立ち下がりに応答して、格納領域200_2にサンプルデータを格納しているが、CPU102は、第3クロック信号Cの立ち下がりから、バッファ部23が格納領域200_1に格納されているサンプルデータを次に出力するまでの期間(図6のD欄に示される更新期間)内に、格納領域200_2にサンプルデータを格納しても良い。
【0077】
以上のように、本実施形態にセレクタ401は、オーバーサンプリング周期毎に、バッファ部23から出力されたサンプリングデータと、補間データ生成器301から出力された補間サンプルデータとを交互に選択してDAC601へと出力する。これに対して、CPU102は、処理の空き時間に予め生成したサンプルデータを、第1クロック信号Cの周期、すなわち、サンプリング周期毎に格納領域200_2に順に格納する。したがって、楽音発生装置13によれば、CPU102への割り込み要求回数は、オーバーサンプリング周波数の半分、すなわち、サンプリング周波数に間引きされる。割り込み要求回数が減少するにつれて、CPUが割り込み処理を実行する時に生じるオーバーヘッド時間の占める割合が減少する。よって、CPU102は、必要な処理を効率的に実行することが可能となる。
【0078】
また、本実施形態に係る楽音発生装置13によれば、CPU102への負荷を軽減し、かつ、オーバーサンプリング処理によって、より高音質で楽音データを再生することが可能となる。
【0079】
(第4の実施形態)
図7は、本発明の第4の実施形態に係る楽音発生装置の概略構成を示すブロック図であり、図8は、図6に示される楽音発生装置のタイミングチャートである。
【0080】
図7に示される楽音発生装置14は、第2の実施形態に係る楽音発生装置12に加えて、更に、逓倍器506と、補間データ生成器301と、セレクタ401とを更に備える。尚、本実施形態に係る逓倍器506と、補間データ生成器301と、セレクタ401との構成及び機能は、第3の実施形態に係るものと同様であるので、ここでは説明を繰り返さない。
【0081】
本実施形態に係るバッファ部24は、サンプルデータを1つずつ格納する(m+2)個の格納領域200_1〜200_(m+2)を含む(ただし、mは2以上の整数とする)。バッファ部24は、第1クロック信号Aに従って、先頭の格納領域200_1に格納されているサンプルデータを出力し、かつ、2番目以降の格納領域200_2〜200_(m+2)に格納されているサンプルデータの各々を、先頭の格納領域200_1へ向かって、サンプルデータが生成された順序で1つずつ転送する。
【0082】
CPU102は、楽音メモリ101に記憶されている楽音データをデコードすることによって複数のサンプルデータを生成する。そして、CPU102は、第1クロック信号Cに従って、生成されたサンプルデータを3番目以降の格納領域第200_3〜200_(m+2)の各々に、サンプルデータが生成された順序で格納する。
【0083】
また、本実施形態においては、コンパレータ504は、カウンタ505からの出力と、分周数データ203とを比較して、第2クロック信号Eの周期(サンプリング周期の半分)の2m倍の周期のクロック信号Bをインバータ300へと出力する(ただし、mは2以上の整数とする)。すなわち、本実施形態においては、カウンタ505と、分周数データ503が入力されるコンパレータ504と、インバータ300とは、サンプリング周期のm倍の周期毎に第3クロック信号Cを生成する第3クロック信号生成部に相当する。
【0084】
以下、本実施形態に係る楽音発生装置14による楽音出力動作について説明する。尚、本実施形態においては、一例として、楽音発生装置14は、6つの格納領域200_1〜200_6を含み、かつ、分周数データ503が8に設定されている場合(mが4に設定されている場合)を想定する。
【0085】
まず、CPU102は、空き時間に楽音データをデコードすることによって複数のサンプルデータを生成する。次に、CPU102は、時刻t1において、第3クロック信号Cの立ち下がりに応答して、4つのサンプルデータを3番目以降の格納領域200_3〜200_6の各々に順に格納する。
【0086】
次に、時刻t3において、バッファ部24は、第1クロック信号Aの立ち上がりに応答して、3番目以降の格納領域200_3〜200_6に格納されているサンプルデータの各々を、それぞれ、2番目以降の格納領域200_2〜200_5の各々に転送する。
【0087】
次に、時刻t5において、バッファ部24は、第1クロック信号Aの立ち上がりに応答して、2番目以降の格納領域200_2〜200_5の各々に格納されているサンプルデータを、それぞれ、格納領域200_1〜200_4の各々に転送する。
【0088】
また、時刻t5において、バッファ部24は、タイマ501から出力される第1クロック信号Aの立ち上がりに応答して、格納領域200_1に格納されているサンプルデータをセレクタ401へと出力する。セレクタ401は、第2クロック信号Eに応答して、バッファ部24から出力されたサンプルデータを選択してDAC601へと出力する。尚、補間データ生成器301は、格納領域200_1及び200_2の各々に格納されているサンプルデータから補間サンプルデータを生成する。
【0089】
次に、時刻t6において、セレクタ401は、第2クロック信号Eに応答して、補間データ生成器301から出力された補間サンプルデータをDAC601へと出力する。
【0090】
更に、バッファ部24は、時刻t7及びt9において、第1クロック信号Aの立ち上がりに応答して、先頭の格納領域200_1に格納されているサンプルデータをセレクタ401へと出力する。セレクタ401は、時刻t7及びt9において、第2クロック信号Eに応答して、バッファ部24から出力されたサンプルデータを選択してDAC601へと出力する。また、セレクタ401は、時刻t8において、補間データ生成器301から出力された補間サンプルデータを選択してDAC601へと出力する。
【0091】
一方、時刻t9において、CPU102は、第3クロック信号Cの立ち下がりタイミングに応答して、4つのサンプルデータを3番目以降の格納領域200_3〜200_6の各々に順に格納する。
【0092】
以降においては、CPU102及び楽音発生装置14は、上記と同様の処理を繰り返す。これにより、楽音発生装置12は、バッファ部24を介して、サンプルデータと補間サンプルデータとを、連続してDAC601に出力することができる。
【0093】
尚、本実施形態においては、CPU102は、第3クロック信号Cの立ち下がりに応答して、3番目以降の格納領域200_3〜200_(m+2)にサンプルデータを格納するが、CPU102は、第3クロック信号Cの立ち下がりから、バッファ部24が格納領域200_1に格納されているサンプルデータを次に出力するまでの期間(図8のD欄に示される更新期間)内に、格納領域200_3〜200_(m+2)に順にサンプルデータを格納しても良い。
【0094】
以上のように、本実施形態に係る楽音発生装置14は、オーバーサンプリング周期毎に、バッファ部24から出力されたサンプルデータと、補間データ生成器301から出力された補間サンプルデータとを交互に選択してDAC601へと出力する。これに対して、CPU102は、処理の空き時間に予め生成した2以上のサンプルデータを、第3クロック信号Cの周期(サンプリング周期のm倍)毎に、格納領域200_3〜200_(m+2)へと順に格納する。したがって、楽音発生装置14によれば、CPU102への割り込み要求回数は、サンプリング周波数の1/mに間引きされる。割り込み要求回数が減少するにつれて、CPU102が割り込み処理を実行する時に生じるオーバーヘッド時間の累計が減少する。よって、CPU102は、必要な処理を効率的に実行することが可能となる。
【0095】
また、本実施形態に係る楽音発生装置によれば、CPU102への負荷をより一層軽減し、かつ、オーバーサンプリング処理によって、より高音質で楽音データを再生することが可能となる。
【0096】
尚、上記の各実施形態では、クロック信号を生成するための構成を特定しているが、第1〜第3クロック信号として必要な周期のクロック信号を生成することができれば、他の構成が採用されても良い。
【0097】
また、上記の第2及び第4の実施形態においては、CPUからバッファ部へのサンプルデータの書き込み方法について、様々な変形を適用することができる。例えば、上記の第2の実施形態では、CPUは、2番目以降の格納領域に順にサンプルデータを書き込んでいるが、CPUは、第1の実施形態と同様に、先頭の格納領域から順にサンプルデータを格納しても良い。また、バッファ部が4以上の格納領域を含む場合には、CPUは、3番目以降の格納領域に順にサンプルデータを格納しても良い。また、上記の第4の実施形態において、CPUは、2番目以降の格納領域から順にサンプルデータを格納しても良い。
【0098】
また、上記の第2及び第4の実施形態において、分周数データの値が予め定められているが、外部からの入力や、プログラムによる処理によって、分周数データの値が書き換え可能であっても良い。
【0099】
更に、上記の第3及び第4の実施形態において、タイマと逓倍器との代わりに、オーバーサンプリング周期毎のクロック信号を生成するタイマが用いられても良い。
【産業上の利用可能性】
【0100】
本発明に係る楽音発生装置は、マイクロコンピュータを用いて効率的に楽音を発生することができるので、例えば、音声案内等の楽音データを再生することができる家電製品の制御装置等に有用である。
【図面の簡単な説明】
【0101】
【図1】本発明の第1の実施形態に係る楽音発生装置の概略構成を示すブロック図
【図2】図1に示される楽音発生装置のタイミングチャート
【図3】本発明の第2の実施形態に係る楽音発生装置の概略構成を示すブロック図
【図4】図3に示される楽音発生装置のタイミングチャート
【図5】本発明の第3の実施形態に係る楽音発生装置の概略構成を示すブロック図
【図6】図5に示される楽音発生装置のタイミングチャート
【図7】本発明の第4の実施形態に係る楽音発生装置の概略構成を示すブロック図
【図8】図7に示される楽音発生装置のタイミングチャート
【図9】従来の楽音発生装置の概略構成を示すブロック図
【図10】図9に示される楽音発生装置のタイミングチャート
【図11】従来の楽音発生装置における割り込み処理を示すフローチャート
【符号の説明】
【0102】
11、12、13、14 楽音発生装置
21、22、23、24 バッファ部
101 楽音メモリ
102 CPU
200_1〜200_n 格納領域
301 補間データ生成器
401 セレクタ
501 タイマ
502 フリップフロップ
503 分周数データ
504 コンパレータ
505 カウンタ
601 DAC


【特許請求の範囲】
【請求項1】
メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置であって、
前記楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、
前記サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に第2クロック信号を出力する第2クロック信号生成部と、
m個(ただし、mは2以上の整数とする)以上の前記サンプルデータを格納し、前記第1クロック信号に従って、格納されている前記サンプルデータの各々を前記所定順序で1つずつ出力するバッファ部と、
前記メモリに記憶されている楽音データをデコードすることによって、複数の前記サンプルデータを生成し、前記第2クロック信号に従って、m個(ただし、mは2以上の整数とする)以上の前記サンプルデータを前記バッファ部に格納する演算部とを備える、楽音発生装置。
【請求項2】
前記第2クロック信号生成部は、前記サンプリング周期の2倍の周期毎に前記第2クロック信号を出力し、
前記バッファ部は、
前記サンプルデータを1つずつ格納する2つの格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目の前記格納領域に格納されている前記サンプルデータを先頭の前記格納領域に転送し、
前記演算部は、2つの前記サンプルデータを先頭の前記格納領域から前記所定順序で格納することを特徴とする、請求項1に記載の楽音発生装置。
【請求項3】
前記第2クロック信号生成部は、前記サンプリング周期のm倍(ただし、mは3以上の整数とする)の周期毎に前記第2クロック信号を出力し、
前記バッファ部は、
前記サンプルデータを1つずつ格納するm個(ただし、mは3以上の整数とする)の格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目以降の前記格納領域に格納されている前記サンプルデータの各々を、先頭の前記格納領域に向かって前記所定順序で1つずつ転送し、
前記演算部は、m個(ただし、mは3以上の整数とする)の前記サンプルデータを先頭の前記格納領域から前記所定順序で格納することを特徴とする、請求項1に記載の楽音発生装置。
【請求項4】
前記第2クロック信号生成部は、前記サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に前記第2クロック信号を出力し、
前記バッファ部は、
前記サンプルデータを1つずつ格納する(m+1)個(ただし、mは2以上の整数とする)の格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目以降の前記格納領域に格納されている前記サンプルデータの各々を、先頭の前記格納領域に向かって前記所定順序で1つずつ転送し、
前記演算部は、m個(ただし、mは2以上の整数とする)の前記サンプルデータを2番目の前記格納領域から前記所定順序で格納することを特徴とする、請求項1に記載の楽音発生装置。
【請求項5】
メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置であって、
前記楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、
前記第1クロック信号の周期の半分の周期毎に第2クロック信号を出力する第2クロック信号生成部と、
2つ以上の前記サンプルデータを格納し、前記第1クロック信号に従って、格納されている前記サンプルデータの各々を前記所定順序で1つずつ出力するバッファ部と、
前記メモリに記憶されている楽音データをデコードすることによって、複数の前記サンプルデータを生成し、前記第1クロック信号に従って、1つ以上の前記サンプルデータを前記バッファ部に格納する演算部と、
前記バッファ部に2つ以上の前記サンプルデータが格納されているときに、先頭から連続する2つの前記サンプルデータから補間データを生成し、前記補間データを出力する補間データ生成部と、
前記第2クロック信号に従って、前記バッファ部からの出力と、前記補間データ生成部からの出力とを交互に選択して出力する出力選択部とを備える、楽音発生装置。
【請求項6】
前記バッファ部は、
前記サンプルデータを1つずつ格納する2つの格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目の前記格納領域に格納されている前記サンプルデータを先頭の前記格納領域に転送し、
前記演算部は、前記第1クロック信号に従って、1つの前記サンプルデータを2番目の前記格納領域に前記所定順序で格納することを特徴とする、請求項5に記載の楽音発生装置。
【請求項7】
メモリに記憶されている楽音データをデコードすることによって、所定順序で得られる複数のサンプルデータを出力する楽音発生装置であって、
前記楽音データのサンプリング周期毎に第1クロック信号を出力する第1クロック信号生成部と、
前記第1クロック信号の周期の半分の周期毎に第2クロック信号を出力する第2クロック信号生成部と、
前記サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に第2クロック信号を出力する第2クロック信号生成部と、
m個(ただし、mは2以上の整数とする)以上の前記サンプルデータを格納し、前記第1クロック信号に従って、格納されている前記サンプルデータの各々を前記所定順序で1つずつ出力するバッファ部と、
前記メモリに記憶されている楽音データをデコードすることによって、複数の前記サンプルデータを生成し、前記第3クロック信号に従って、m個(ただし、mは2以上の整数とする)以上の前記サンプルデータを前記バッファ部に格納する演算部と、
前記バッファ部に2つ以上の前記サンプルデータが格納されているときに、先頭から連続する2つの前記サンプルデータから補間データを生成し、前記補間データを出力する補間データ生成部と、
前記第2クロック信号に従って、前記バッファ部からの出力と、前記補間データ生成部からの出力とを交互に選択して出力する出力選択部とを備える、楽音発生装置。
【請求項8】
前記第3クロック信号生成部は、前記サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に、前記第3クロック信号を出力し、
前記バッファ部は、
前記サンプルデータを1つずつ格納する(m+1)個(ただし、mは2以上の整数とする)の格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目以降の前記格納領域に格納されている前記サンプルデータの各々を、先頭の前記格納領域に向かって前記所定順序で1つずつ転送し、
前記演算部は、前記第3クロック信号に従って、m個(ただし、mは2以上の整数とする)の前記サンプルデータを2番目以降の前記格納領域から前記所定順序で格納することを特徴とする、請求項7に記載の楽音発生装置。
【請求項9】
前記第3クロック信号生成部は、前記サンプリング周期のm倍(ただし、mは2以上の整数とする)の周期毎に、前記第3クロック信号を出力し、
前記バッファ部は、
前記サンプルデータを1つずつ格納する(m+2)個(ただし、mは2以上の整数とする)の格納領域を含み、
前記第1クロック信号に従って、先頭の前記格納領域に格納されている前記サンプルデータを出力し、かつ、2番目以降の前記格納領域に格納されている前記サンプルデータを、先頭の前記格納領域に向かって前記所定順序で1つずつ転送し、
前記演算部は、前記第3クロック信号に従って、m個(ただし、mは2以上の整数とする)の前記サンプルデータを3番目の前記格納領域から前記所定順序で格納することを特徴とする、請求項7に記載の楽音発生装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2007−101963(P2007−101963A)
【公開日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2005−292915(P2005−292915)
【出願日】平成17年10月5日(2005.10.5)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】