(58)【調査した分野】(Int.Cl.,DB名)
前記データ特定部は、前記出力データ値算出部が算出対象とするデータのサンプリングタイミングの順番を示すiと前記比率とを乗算して求めた乗算値を自然数に切り下げた切下値と切り上げた切上値と、サンプリングタイミングの順番が一致する前記第1と第2のデータを特定し、
前記出力データ値算出部は、前記データ特定部が特定した第1と第2のデータと、前記乗算値と、前記切下値と、前記切上値を用い、直線補間により、出力デジタル信号の第i番目のデータの値を算出する、
ことを特徴とする請求項1に記載の非同期サンプリング周波数変換装置。
【発明を実施するための形態】
【0022】
本発明の好適な実施形態に係る非同期サンプリング周波数変換装置について説明する。
【0023】
(実施形態1)
実施形態1に係る非同期サンプリング周波数変換装置1は、入力デジタル信号のサンプリング周波数を変換して出力する装置であり、
図1に示すように、入力信号受信部101と、LPF部102と、記憶処理部103と、記憶部104と、サンプリング周波数変換処理部105と、出力信号送信部106と、クロック生成回路107と108とを備える。
【0024】
入力信号受信部101は、例えば、デジタル音声信号の通信規格であるI2S(The IC Sound Bus)や前詰め24bitなどで送られてくるLチャンネルとRチャンネルの2チャンネル分の入力デジタル信号Sinを、クロック生成回路107から供給されるRLクロックRLinに応答して受信(ラッチ)し、LPF部102に出力する。RLクロックRLinは、例えば、信号供給元から送信されてくるRLクロックから生成され、入力デジタル信号Sinのサンプリング周波数(以下、入力サンプリング周波数という)f
inに等しい周波数を有する。入力サンプリング周波数f
inが、例えば、48kHzの場合、入力信号受信部101は、約20.8μsec(=1/48kHz)毎に、LチャネルとRチャネルの2つの入力サンプリングデータを受信する。
【0025】
LPF(Low Pass Filter)部102は、クロック生成回路107から供給されるRLクロックRLinに応答して動作し、入力デジタル信号Sinを帯域制限する。より具体的には、LPF部102は、入力デジタル信号Sinのナイキスト周波数(入力サンプリング周波数f
inの2分の1=f
in/2)以上の高周波成分をカットし、折り返し現象による波形歪みを除去する。
【0026】
記憶処理部103は、CPUとこのCPUの動作プログラムを記憶したメモリから構成され、初期設定値が”0”の内部カウンタ103Cを備える。記憶処理部103を構成するCPUは、動作プログラムを実行して、RLクロック信号RLinに応答して内部カウンタ103Cをカウントアップすることにより、LPF部102から出力されるデータ(入力サンプリングデータ)Xの番号(順番)nをカウントし、さらに、サンプリング開始から第n番目のサンプリングタイミングまでの時間Tn、すなわちn/f
inを求める。記憶処理部103は、順番nと経過時間Tn(=n/f
in)と第n番目の入力サンプリングデータXnとを対応付けて入力データを形成し、記憶部104に所定数まで格納する。なお、所定数の入力データが記憶部104に記憶されている場合、記憶処理部103は、一番古い(順番nが一番小さい)入力データを消去して、新たな入力データを記憶する。なお、記憶部104に格納されるデータを、以下、入力サンプリングデータ情報、と呼ぶ。
例えば、入力デジタル信号Sinを、8kHzのアナログ正弦波sin(2π・8000・t)を48kHzのサンプリング周波数f
inでサンプリングして得られたデータとすると、記憶処理部103は、順番nと経過時間Tn(=n/f
in)と入力サンプリングデータXnとを、
図2に示すように、記憶部104に順次格納する。
【0027】
記憶部104は、RAM(Random Access Memory)等から構成され、記憶処理部103が生成した順番nと経過時間Tn(=n/f
in)と第n番目の入力サンプリングデータXnとを対応つけた入力データを所定数まで格納する。記憶部104は、サンプリング周波数変換処理部105によるサンプリング周波数変換処理に必要な所定数の入力データを記憶することが可能な容量を有する。入力サンプリング周波数が48kHzの場合、LチャネルとRチャネルの入力データをそれぞれ、例えば、480個ずつ保持する。記憶部104が保持する入力データの個数は、一例であり、例えば、倍の960個を保持するようにしてもよい。
【0028】
サンプリング周波数変換処理部105は、CPU、内部メモリ等から構成される。内部メモリは、CPU(Central Processing Unit)のワークエリアとして機能すると共にCPUが実行する変換処理のプログラム、変換処理に必要な固定データを格納する。CPUは、変換処理プログラムを実行することにより、データ特定部105A、判定部105B、出力データ値算出部105C、及びカウンタ105Dとして機能し、後述する変換処理を実行し、記憶部104に記憶されている入力サンプリングデータ情報を用いて、出力サンプリング周波数f
outの出力サンプリングデータを算出する。
【0029】
データ特定部105Aは、出力サンプリングデータYi(iは出力の順番:自然数)のサンプリングタイミングの直前、直後のタイミングでサンプリングされた入力サンプリングデータを特定する。なお、「出力サンプリングタイミングの直前、直後のタイミング」とは、物理的なタイミングの意味ではなく、信号処理による遅延を考慮して、出力サンプリングタイミングに対応する入力デジタル信号Sinのタイミングを特定し、特定したタイミングを基準とする直前、直後の入力デジタル信号Sinのサンプリングタイミングを意味する。
具体的には、データ特定部105Aは、出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outを取得する。そして、データ特定部105Aは、例えば、出力デジタル信号における第i番目の出力サンプリングデータYiを算出する場合には、取得した比率f
in/f
outをi倍し、i倍した値(i・f
in/f
out)を自然数に切り上げた値roundup(i・f
in/f
out)と切り下げた値rounddown(i・f
in/f
out)とを算出する。例えば、i・f
in/f
out=1.12の場合は、roundup(i・f
in/f
out)=2、rounddown(i・f
in/f
out)=1となる。
【0030】
そして、データ特定部105Aは、rounddown(i・f
in/f
out)=n(自然数)である場合は、出力サンプリングデータYiのサンプリングタイミングの直前、直後のタイミングでサンプリングされた入力データとして、第n番目の入力サンプリングデータXnと第(n+1)番目の入力サンプリングデータXn+1とを特定する。
但し、rounddown(i・f
in/f
out)=roundup(i・f
in/f
out)=n、すなわち、比率f
in/f
outをi倍した値(i・f
in/f
out)が自然数の場合には、データ特定部105Aは、出力サンプリングデータYiのサンプリングタイミングの直前、直後のタイミングでサンプリングされたデータとして、出力サンプリングデータYiのサンプリングタイミングと同じタイミングでサンプリングされた入力サンプリングデータXnのみを特定する。
【0031】
判定部105Bは、rounddown(i・f
in/f
out)=roundup(i・f
in/f
out)=nであるか否かを判定する。すなわち、判定部105Bは、比率f
in/f
outをi倍した値(i・f
in/f
out)が自然数であるか否かを判定する。また、判定部105Bは、データ特定部105Aが算出したrounddown(i・f
in/f
out)とroundup(i・f
in/f
out)に対応する入力サンプリングデータが存在するか否かを判定する。具体的には、記憶部104に記憶されている入力サンプリングデータ情報のサンプリングの順番の欄を検索して、rounddown(i・f
in/f
out)とroundup(i・f
in/f
out)の値に相当するサンプリングの順番が存在するか否かを判定する。
【0032】
出力データ値算出部105Cは、データ特定部105Aが特定した入力サンプリングデータXnとXn+1とを用いて、出力サンプリングデータYiを算出する。具体的には、roundup(i・f
in/f
out)から(i・f
in/f
out)を減算した値と(i・f
in/f
out)からrounddown(i・f
in/f
out)を減算した値とに対し、入力サンプリングデータXn、Xn+1の値をそれぞれ重み付けし、これらの和を出力デジタル信号における第i番目の出力サンプリングデータYiとして算出する。すなわち、出力データ値算出部105Cは、出力サンプリングデータYiを次式により算出する。
(数1)
Yi=Xn・{roundup(i・f
in/f
out)−(i・f
in/f
out)}+Xn+1・{(i・f
in/f
out)−rounddown(i・f
in/f
out)}
ここで、{(i・f
in/f
out)−rounddown(i・f
in/f
out)}は、直線補間における補間係数kiに相当し、{roundup(i・f
in/f
out)−(i・f
in/f
out)}は、(1−ki)に相当する。
【0033】
但し、判定部105Bが、積(i・f
in/f
out)が自然数であると判定した場合には、つまり、rounddown(i・f
in/f
out)=roundup(i・f
in/f
out)=nの場合には、出力データ値算出部105Cは、データ特定部105Aが特定した入力サンプリングデータXnを出力サンプリングデータYiとして算出する。そして、サンプリング周波数変換処理部105は、出力データ値算出部105Cが算出した出力サンプリングデータYiを、出力信号送信部106へ出力する。
【0034】
カウンタ105Dは、出力データ値算出部105Cが、出力サンプリングデータYiを算出する毎にインクリメントされる。カウンタ105Dの初期設定値は、”1”である。カウンタ105Dのカウンタ値は、出力サンプリング周波数でのサンプリングの順番iを示し、データ特定部105Aは、カウンタ105Dのカウンタ値iと比率f
in/f
outとの積(i・f
in/f
out)に基づいて、入力サンプリングデータXnとXn+1を特定する。
【0035】
出力信号送信部106は、FIFOメモリを備え、サンプリング周波数変換処理部105から供給される出力サンプリングデータYiを蓄積し、クロック生成回路108から供給される出力デジタル信号SoutのRLクロックRL
outに同期して順次出力する。
【0036】
クロック生成回路107は、入力デジタル信号Sinの供給元から供給されるRLクロックRLinに同期したRLクロックRLinを、入力信号受信部101とLPF部102と記憶処理部103とに供給する。
クロック生成回路108は、出力デジタル信号SoutのRLクロックRL
outを生成して出力する。RLクロックRLoutは、出力デジタル信号Soutのサンプリング周波数f
outと同一の周波数を有する。
【0037】
次に、上記構成を有する非同期サンプリング周波数変換装置1のサンプリング周波数変換動作を説明する。
なお、サンプリング周波数変換動作は、LチャネルのデータとRチャネルのデータそれぞれについて動作を並列に実行するが、それらは同様の処理であることから、ここでは、Lチャネルの処理について説明する。
このサンプリング周波数変換動作は、入力デジタル信号Sinを受信して記憶部104に入力サンプリングデータ情報を蓄積する処理と、記憶部104に蓄積されている入力サンプリングデータ情報を用いて、出力デジタル信号Soutを生成する処理とから構成される。
まず、
図3を参照して入力デジタル信号Sinを受信してから、記憶処理部103に入力サンプリングデータ情報を格納するまでの処理を説明する。
入力信号受信部101には、入力デジタル信号Sinを構成する入力サンプリングデータ(信号素片)が順次供給される。入力信号受信部101は、RLクロックRLinに応答して、供給された入力サンプリングデータ(信号素片)を順次受信(ラッチ)し、LPF部102に順次供給する。
LPF部102は、RLクロックRLinに応答して動作し、入力信号受信部101から供給される入力サンプリングデータをフィルタリングし、高周波成分を除去して記憶処理部103に供給する。
【0038】
記憶処理部103は、クロック生成回路107から供給されるRLクロックRLinに応答して、
図3に示す入力サンプリングデータ情報生成処理を開始する。
まず、記憶処理部103(正確には、記憶処理部103を構成するCPU)は、内部カウンタ103Cのカウンタ値(順番)nをインクリメントし(ステップS01)、入力サンプリングデータの順番nを求める。
次に、記憶処理部103は、カウンタ値(順番)nと入力デジタル信号Sinのデータの供給周期1/f
inとの積を求めることで、サンプリング開始から第n番目のサンプリングタイミングまでの経過時間Tn(=n/f
in)を求める(ステップS02)。
次に、記憶処理部103は、LPF部102から第n番目に出力された入力サンプリングデータXnを取得し(ステップS03)、取得した入力サンプリングデータXnの数が所定数を越えたか否かを判定する(ステップS04)。
【0039】
取得した入力サンプリングデータXnの数が所定数を越えたと判定した場合には(ステップS04;YES)、記憶部104に記憶されている入力サンプリングデータ情報のうちで、最も古く記憶された入力データを入力サンプリングデータ情報から廃棄し(ステップS05)、ステップS01の処理でインクリメントした後の内部カウンタ103Cのカウンタ値(順番)nとステップS02の処理で求めた経過時間TnとステップS03の処理で取得した入力サンプリングデータXnとからなる入力データを入力サンプリングデータ情報に追加する(ステップS06)。
【0040】
一方、取得した入力サンプリングデータXnの数が所定数を越えていないと判定した場合には(ステップS04;NO)、ステップS05の処理をスキップして、ステップS01の処理でインクリメントした後の内部カウンタ103Cのカウンタ値(順番)nとステップS02の処理で求めた経過時間TnとステップS03の処理で取得した入力サンプリングデータXnとからなる入力データを入力サンプリングデータ情報に追加する(ステップS06)。
【0041】
以上に説明した入力サンプリングデータ情報生成処理を繰り返すことにより、
図2に示すように、入力サンプリングデータ情報として、直近の所定個数の入力サンプリングデータXが記憶部104に記憶される。
【0042】
次に、
図4を参照して、サンプリング周波数変換処理部105における変換処理を説明する。サンプリング周波数変換処理部105は、LチャネルとRチャネルそれぞれについて変換処理を並列に実行するが、それらは同様の処理であることから、ここでは、Lチャネルにおける変換処理について説明する。この変換処理は、RL
outをトリガとして開始される。
【0043】
前提として、出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outが、予め計算され、サンプリング周波数変換処理部105の内部メモリを構成する不揮発性メモリ等に格納されている。
データ特定部105Aは、サンプリング周波数変換処理部105の内部メモリに記憶されている出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outを取得する(ステップ001)。そして、データ特定部105Aは、カウンタ105Dからカウンタ値iを取得して(ステップ002)、ステップ001で取得した比率f
in/f
outとカウンタ値iとの積(i・f
in/f
out)を算出する(ステップ003)。そして、データ特定部105Aは、ステップ003で算出した(i・f
in/f
out)を切り下げたrounddown(i・f
in/f
out)と、切り上げたroundup(i・f
in/f
out)を算出する(ステップ004)。
【0044】
そして、判定部105Bは、rounddown(i・f
in/f
out)と、roundup(i・f
in/f
out)を比較し、roundup(i・f
in/f
out)がrounddown(i・f
in/f
out)と同じ値nであるか否かを判定する。すなわち、判定部105Bは、ステップ003で算出した積(i・f
in/f
out)が自然数であるか否かを判定する(ステップ005)。積(i・f
in/f
out)が自然数であると判定した場合には(ステップ005;YES)、判定部105Bは、記憶部104に記憶されている入力サンプリングデータ情報のサンプリングの順番の欄を検索して、ステップ004で算出したrounddown(i・f
in/f
out)の値nに対応する第n番目の入力サンプリングデータXnが存在するか否かを判定する(ステップ021)。
【0045】
ステップ004で算出したrounddown(i・f
in/f
out)の値nに対応する第n番目の入力サンプリングデータXnが存在すると判定された場合には(ステップ021;YES)、データ特定部105Aは、当該入力サンプリングデータXnを出力サンプリングデータYiのサンプリングタイミングの直前、直後のタイミングでサンプリングされたデータとして特定する(ステップ022)。そして、出力データ値算出部105Cは、データ特定部105Aが特定した入力サンプリングデータXnを出力サンプリングデータYiとして算出し、サンプリング周波数変換処理部105は、出力データ値算出部105Cが算出した出力サンプリングデータYi(入力サンプリングデータXn)を出力信号送信部106へ出力する(ステップ023)。そして、ステップ009の処理へ進む。
【0046】
一方、入力サンプリングデータXnが存在しないと判定された場合には(ステップ021;NO)、サンプリング周波数変換処理部105は、カウンタ105Dのカウンタ値を初期化して(ステップ041)、変換処理を終了する。
【0047】
一方、積(i・f
in/f
out)が自然数でないと判定した場合には(ステップ005;NO)、判定部105Bは、記憶部104に記憶されている入力サンプリングデータ情報のサンプリングの順番の欄を検索して、ステップ004で算出したrounddown(i・f
in/f
out)の値nに対応する第n番目の入力サンプリングデータXnと、第(n+1)番目の入力サンプリングデータXn+1とがいずれも存在するか否かを判定する(ステップ006)。少なくとも入力サンプリングデータXn+1が存在しないと判定された場合には(ステップ006;NO)、ステップ041の処理へ進み、サンプリング周波数変換処理部105は、カウンタ105Dのカウンタ値を初期化すると共に、記憶部104に記憶されている入力サンプリングデータ情報を削除し(ステップ041)、変換処理を終了する。
【0048】
一方、入力サンプリングデータXnとXn+1とがいずれも存在すると判定された場合には(ステップ006;YES)、データ特定部105Aは、入力サンプリングデータXnとXn+1を特定する(ステップ007)。そして、出力データ値算出部105Cは、データ特定部105Aが特定した入力サンプリングデータXnとXn+1とを用い、上述した出力サンプリングデータYiの算出式(数1)からYiを算出し、サンプリング周波数変換処理部105は、出力データ値算出部105Cが算出した出力サンプリングデータYiを出力信号送信部106へ出力する(ステップ008)。そして、サンプリング周波数変換処理部105は、カウンタ105Dのカウンタ値をインクリメントし(ステップ009)、ステップ001の処理に戻り前述の処理を繰り返す。
【0049】
ここで、入力サンプリング周波数f
inと出力サンプリング周波数f
outをそれぞれ48kHz、44.1kHzとして、
図2、
図4、
図5を参照し、具体的な数値を例に、各部の動作を説明する。
図5は、
図2と同様に、8kHzの正弦波sin(2π・8000・t)を本実施形態における変換処理した場合の、出力サンプリング周波数でのサンプリングの順番iと、順番iと比率f
in/f
outとの積(i・f
in/f
out)と、rounddown(i・f
in/f
out)と、roundup(i・f
in/f
out)と、rounddown(i・f
in/f
out)=nの時の入力サンプリングデータXnと、入力サンプリングデータXn+1と、の対応関係を示している。
【0050】
データ特定部105Aは、サンプリング周波数変換処理部105の内部メモリに記憶されている比率f
in/f
outとカウンタ105Dのカウンタ値iを取得する(ステップ001、002)。そして、データ特定部105Aは、比率f
in/f
outとカウンタ値iとの積を求める(ステップ003)。
例えば、カウンタ値iが”1”の時、i・f
in/f
out=1x(48÷44.1)=1.088435374の場合、データ特定部105Aは、i・f
in/f
outの値として1.088435374を算出する。
次に、データ特定部105Aは、rounddown(i・f
in/f
out)とroundup(i・f
in/f
out)を算出する(ステップ004)。i・f
in/f
out=1.088435374であるとすると、データ特定部105Aは、rounddown(i・f
in/f
out)=1、roundup(i・f
in/f
out)=2をそれぞれ算出する。
【0051】
次に、判定部105Bは、積(i・f
in/f
out)が自然数か否かを判定する(ステップ005)。i・f
in/f
out=1.088435374とすると、ステップ005でNOと判別され、判定部105Bは、第1(rounddown(i・f
in/f
out)=1)番目と第2(roundup(i・f
in/f
out)=2)番目の入力サンプリングデータX1とX2とがいずれも記憶部104に記憶されている入力サンプリングデータ情報に存在するか否かを判定する(ステップ006)。記憶部104に格納されている入力サンプリングデータ情報が
図2に示すものであると仮定すると、入力サンプリングデータX1とX2はいずれも存在し(ステップ006;YES)、データ特定部105Aは、X1=0.5、X2=0.866025404を特定する(ステップ007)。
【0052】
次に、出力データ値算出部105Cは、データ特定部105Aが特定した入力サンプリングデータX1とX2のデータ値と、積(i・f
in/f
out)の値と、rounddown(i・f
in/f
out)とroundup(i・f
in/f
out)の値を、上述した算出式(数1)に当てはめて、出力デジタル信号における第i番目の出力サンプリングデータYiの値を算出し、算出した値を出力信号送信部106に出力する(ステップ008)。本例では、i=1なので、出力データ値算出部105Cが算出する第1番目の出力サンプリングデータY1は、{0.5x(2−1.088435374)+0.866025404x(1.088435374−1)}=0.53237となる。次に、サンプリング周波数変換処理部105は、カウンタ105Dのカウンタ値をインクリメントし(ステップ009)、ステップ001の処理に戻り、一連の処理を繰り返すことで、順次出力サンプリングデータYiを算出する。
【0053】
このように、サンプリング周波数変換処理部105は、LチャネルとRチャネルそれぞれについて、上述した出力サンプリングデータYiの算出式(数1)を用いて、出力サンプリング周波数における出力サンプリングデータYiを順次算出し、出力信号送信部106に順次供給する。
なお、サンプリング周波数変換処理部105は、出力サンプリングデータYiを、RLクロックRLoutの1周期に1データを演算する処理速度かそれより若干速い速度で生成することが望ましい。
出力信号送信部106は、サンプリング周波数変換処理部105から供給された出力サンプリングデータYiをFIFOメモリに蓄積し、クロック生成回路108から供給される出力信号のRLクロックRLoutに同期して、順次出力する。
【0054】
以上説明したように、本実施形態における非同期サンプリング周波数変換装置1を構成することで、カウンタ105Dのカウンタ値iとサンプリング周波数変換処理部105の内部メモリに記憶されている比率f
in/f
outとの積(i・f
in/f
out)に基づいて、出力サンプリングデータYiのサンプリングタイミングの直前及び直後にサンプリングされた入力サンプリングデータXnとXn+1を容易に特定することが可能となる。また、本実施形態における出力サンプリングデータYiの算出式(数1)からも分かるように、カウンタ105Dのカウンタ値iと比率f
in/f
outとの積(i・f
in/f
out)と積(i・f
in/f
out)を求め、求めた積の少数部分を切り捨て・切り上げして自然数nとn+1を求め、求めた自然数nとn+1を用いて入力サンプリングデータXnとXn+1を特定し、それらのデータ値を用いて、出力サンプリングデータYiを算出することができる。このため、出力サンプリングデータYiのサンプリングタイミングの直前にサンプリングされた入力サンプリングデータXnのサンプリングされた順番を示す”n”を特定し、その”n”を用いて補間係数kiをそれぞれ算出している従来の直線補間を用いた方法と比較して、出力サンプリングデータYiを算出するための演算量を軽減することができる。また、これにより、非同期サンプリング周波数変換装置1での変換処理を高速化することが可能となる。
また、LPF部102は、入力デジタル信号Sinの入力サンプリング周波数f
inで動作すればよく、比較的低周波数での動作が可能である。
また、記憶部104に、入力サンプリングデータXnを一度保存するため、入力されるデータにジッタを含むデータがあったとしても、そのジッタを吸収することができる。
【0055】
(実施形態2)
実施形態1では、サンプリング周波数変換処理部105の出力データ値算出部105Cが、上述した算出式(数1)より出力サンプリングデータYiを算出した。
図6は、実施形態1における出力データ値算出部105Cが算出した出力サンプリング周波数44.1kHzでのLチャネルの出力サンプリングデータYiを示している。
図7は、
図6に示した出力サンプリングデータYi、すなわち、実施形態1における出力データ値算出部105Cが算出した出力サンプリング周波数44.1kHzでのLチャネルの出力サンプリングデータYiから再現した波形W
outと、入力サンプリング周波数48kHzでのLチャネルの入力サンプリングデータXnから再現した波形W
inを示している。
【0056】
図7を参照して、波形W
outと波形W
inとを比較すると、波形W
outの振幅が波形W
inの振幅と比べて減少している。これは、背景技術において上述したように、直線補間の周波数特性によるものである。そこで、本実施形態では、実施形態1において算出した出力サンプリングデータYiを基準値とし、入力サンプリングデータXnとXn+1との間の変化量|Xn−Xn+1|を用いて基準値Yiを補正することで、波形W
inにより近い波形を出力サンプリングデータから再現できるようする。こうすることで、直線補間の周波数特性に由来する振幅の減少に伴う波形歪みを除去することが可能となる。
【0057】
本実施形態における非同期サンプリング周波数変換装置1’は、
図8に示すように、入力信号受信部101と、LPF部102と、記憶処理部103と、記憶部104と、サンプリング周波数変換処理部105と、出力信号送信部106と、を備え、基本的な構成は実施形態1の場合と同じである。但し、サンプリング周波数変換処理部105は、さらに、変化量算出部105Eと、補正部105Fとを備える。また、サンプリング周波数変換処理部105の内部メモリは、さらに、後述の本実施形態における出力サンプリングデータZiの算出式に含まれる補正係数αを記憶する。この補正係数αは、予め実験的に求めた値であり、例えば、入力信号の周波数帯域における直線補間の周波数特性による振幅の減少率を求めることで補正係数αを決定する。なお、補正係数αは波形クリップが生じない様に決定するのが好ましい。
【0058】
変化量算出部105Eは、データ特定部105Aが特定した入力サンプリングデータXnとXn+1との間の変化量|Xn−Xn+1|を算出する。
【0059】
補正部105Fは、出力データ値算出部105Cが算出した出力サンプリングデータYiを基準値として、この基準値Yiを変化量算出部105Eが算出した変化量|Xn−Xn+1|に基づいて補正する。より具体的には、基準値Yiを次に示す算出式で補正し、補正後の値を出力サンプリングデータZiとして算出する。
(数2)
Zi=Yi・(1+α・|Xn−Xn+1|)
【0060】
サンプリング周波数変換処理部105は、補正部105Fによる補正後の値Ziを第i番目の出力サンプリングデータとして、出力信号送信部106へ出力する。
【0061】
図9は、補正係数αを0.2とした場合の、入力サンプリング周波数と出力サンプリング周波数をそれぞれ48kHz、44.1khHzとして、8kHzの正弦波sin(2π・8000・t)を変換処理して算出した出力サンプリングデータZiの一覧を示している。
図10は、
図9に示した出力サンプリングデータZi、すなわち、補正部105Fが算出した出力サンプリング周波数44.1kHzでのLチャネルの出力サンプリングデータZiから再現した波形WZ
outと、入力サンプリング周波数48kHzでのLチャネルの入力サンプリングデータXnから再現した波形W
inを示している。
【0062】
図10を参照して、波形WZ
outと波形W
inとを比較すると、実施形態1で算出した出力サンプリングYiから再現した波形W
outと波形W
inとを示している
図7と比べて、波形WZ
outは波形W
inにより近いことが分かる。このことは、
図6と
図9にそれぞれ示した出力サンプリングデータYiとZiの値からも分かる。例えば、
図6のY3と
図9のZ3を比較すると、Y3=0.964456でZ3=0.990298であることから、Z3の方が、より正弦波sin(2π・8000・t)の振幅”1”に近く、直線補間の周波数特性に由来する振幅の減少が改善されている。
【0063】
本実施形態において説明した、入力サンプリングデータXnとXn+1間の変化量|Xn−Xn+1|を用いた出力サンプリングデータZiの算出方法は、入力信号の周波数が高い程、直線補間の周波数特性に由来する振幅の減少率が大きくなり、それに伴う波形歪みが顕著となることから、高い効果を発揮する。
【0064】
上記実施形態1及び2において、入力サンプリング周波数f
inと出力サンプリング周波数f
outをそれぞれ48kHzと44.1kHzとして説明したが、それに限定されるものではなく、入力サンプリング周波数f
inと出力サンプリング周波数f
outはその大小関係を含めて任意であり、例えば、入力サンプリング周波数f
inが48kHzで出力サンプリング周波数f
outが32kHzであってもよいし、入力サンプリング周波数f
inが44.1kHz又は32kHzで出力サンプリング周波数f
outが48kHzであってもよい。
なお、サンプリング周波数変換処理部105での変換処理において、サンプリング周波数をさげる場合には、入力デジタル信号Sinをナイキスト周波数以下にするためにLPF部102が必要となるが、サンプリング周波数をあげる場合には、LPF部102は不要となる。
【0065】
また、入力サンプリング周波数f
inが可変する非同期サンプリング周波数変換装置においても、上記実施形態1及び2で説明した本発明を適用できる。この場合、サンプリング周波数変換処理部105が、出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outを算出するように構成すればよい。また、デジタル機器で一般的に使用されるサンプリング周波数は限定されていることから、予め、出力サンプリング周波数f
outに対するそれらのサンプリング周波数の比率をサンプリング周波数変換処理部105の内部メモリが保持するようにしてもよい。
また、上記実施形態1及び2において、サンプリング周波数変換処理部105の内部メモリが、予め、出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outを記憶しているものとして説明したが、これに限定されるものではなく、サンプリング周波数変換処理部105が、比率f
in/f
outを算出するようにしてもよい。
また、記憶処理部103が経過時間Tnを計算し、記憶部104に記録する例を示したが、サンプリング周波数変換処理部105が、これを計算するようにしてもよい。
【0066】
上記実施形態1において、記憶部104が、出力サンプリングデータYiのサンプリングの順番を示す”i”と、出力サンプリング周波数f
outに対する入力サンプリング周波数f
inの比率f
in/f
outと出力サンプリングデータYiのサンプリングの順番を示す”i”との積(i・f
in/f
out)と、rounddown(i・f
in/f
out)の値nとの組からなる、
図11に例示する、出力サンプリング情報を予め保持するように構成してもよい。こうすることで、データ特定部105Aは、出力サンプリングデータYiのサンプリングの順番を示すカウンタ105Dのカウンタ値iからrounddown(i・f
in/f
out)の値nを特定することができることから、出力サンプリンデータの演算時間をさらに短縮することができ、サンプリング周波数変換処理部105での変換処理をさらに高速化することが可能となる。
【0067】
上記実施形態2において、出力サンプリングデータZiの算出式(数2)を、Zi=Yi・(1+α・|Xn−Xn+1|)として説明したが、これに限定されるものではなく、F(x)を関数、βを補正係数として、Zi=Yi・{1+β・F(|Xn−Xn+1|)}で示される算出式により出力サンプリングデータZiを算出してもよい。
【0068】
なお、上記実施形態において、実行されるプログラムは、フレキシブルディスク、CD−ROM(Compact Disc Read-Only Memory)、DVD、MO(Magneto-Optical Disc)等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをインストールすることにより、上述の処理を実行することとしてもよい。
また、プログラムをインターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、取得等するようにしてもよい。
【0069】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。