JP4941106B2 - 共鳴音付加装置および共鳴音付加プログラム - Google Patents

共鳴音付加装置および共鳴音付加プログラム Download PDF

Info

Publication number
JP4941106B2
JP4941106B2 JP2007143977A JP2007143977A JP4941106B2 JP 4941106 B2 JP4941106 B2 JP 4941106B2 JP 2007143977 A JP2007143977 A JP 2007143977A JP 2007143977 A JP2007143977 A JP 2007143977A JP 4941106 B2 JP4941106 B2 JP 4941106B2
Authority
JP
Japan
Prior art keywords
impulse response
value
response data
data
resonance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007143977A
Other languages
English (en)
Other versions
JP2008299004A (ja
Inventor
純一 南高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2007143977A priority Critical patent/JP4941106B2/ja
Publication of JP2008299004A publication Critical patent/JP2008299004A/ja
Application granted granted Critical
Publication of JP4941106B2 publication Critical patent/JP4941106B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10KSOUND-PRODUCING DEVICES; METHODS OR DEVICES FOR PROTECTING AGAINST, OR FOR DAMPING, NOISE OR OTHER ACOUSTIC WAVES IN GENERAL; ACOUSTICS NOT OTHERWISE PROVIDED FOR
    • G10K15/00Acoustics not otherwise provided for

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

本発明は、楽音に共鳴音を付加する共鳴音付加装置および共鳴音付加プログラムに関する。
電子楽器やオーディオ機器からの楽音信号に共鳴音を付加する種々の装置が知られている。ここに、共鳴音には、ホールなど楽音が発生される場所における残響音や、楽器自体の共鳴音などが含まれる。
共鳴音を発生するためには、共鳴音付加装置は、ディジタルの楽音信号データを受け入れて、楽音信号データにディジタルフィルタによるフィルタ処理を施すのが一般的である。フィルタ処理においては、FIR(有限インパルス応答:Finite Impulse Response)フィルタ或いはIIR(無限インパルス応答:Infinite Impulse Response)フィルタが利用される。
FIRフィルタを利用する場合には、入力された楽音信号のデータx(n−k)と、音楽ホールの残響特性などから得たインパルス応答h(k)を畳み込み演算することで、共鳴音のデータyout(n)=Σx(n−k)×h(k)を得ることができる。
特許文献1には、インパルス応答データのデータ量を低減しつつ残響音特性を連続的に変化させることができる共鳴音付加装置が開示されている。この共鳴音付加装置においては、記憶装置に記憶された第1のインパルス応答データと、第2のインパルス応答データとを線形結合することにより、利用者からの指示に応じた特性のインパルス応答を表す新規なインパルス応答データが生成される。共鳴音付加装置は、新規なインパルス応答データを用いてフィルタ処理を行うことで、残響音データを生成する。
特開2004−294712号公報
FIRフィルタにおいては、インパルス応答データの数(インパルス応答特性の時間軸上のデータの数)を増大させ、フィルタの次数を高くすることにしたがって、より理想的なフィルタ特性に近づけることができる。その一方、インパルス応答データの数を増大させるのにしたがって、インパルス応答データのデータ量が増大するのみならず、演算量も多量となるという問題点がある。
また、特許文献1に開示された技術においては、2つのインパルス応答データの線形結合により新規インパルス応答データを生成するため、新規なインパルス応答データは、実際にホールの残響特性などを測定することにより得たインパルス応答の再現性が低いという問題点もあった。
本発明は、少ない演算量で、測定されたインパルス応答データと同質の再現性を有する共鳴音を生成することができ、かつ、フィルタ演算に利用するインパルス応答データのデータ量を減らすことが可能な共鳴音付加装置、および、共鳴音付加プログラムを提供することを目的とする。
本発明の目的は、時間軸上の一連の楽音信号データをディレイメモリ値として記憶した入力データバッファと、
インパルス応答特性を表す時間軸上の値である、元のインパルス応答データを記憶する記憶部と、
前記記憶部に記憶された元のインパルス応答データを取り出して、前後の値より所定なだけ変動が大きい極大値および極小値を見出し、前記見出された極大値および極小値を、前記インパルス応答データにおける実際のインパルス応答データの値として、前記記憶部に格納するとともに、前記極大値および極小値をとらないインパルス応答データが連続する数をカウントして当該カウント数を示す値を前記記憶部に格納するインパルス応答生成手段と、
前記記憶部に格納された実際のインパルス応答データと、入力データバッファに記憶されたディレイメモリ値とを畳み込み演算して共鳴音データを生成する共鳴音生成手段と、を備えた共鳴音付加装置であって、
前記共鳴音生成手段が、前記極大値および極小値をとらないインパルス応答データが連続する数を示す値を参照して、前記入力データバッファにおいて、実際のインパルス応答データの値と乗算すべきディレイメモリ値を特定し、前記実際のインパルス応答データの値と、前記ディレイメモリ値とを乗算し、かつ、乗算された値を累算するように構成されたことを特徴とする共鳴音付加装置により達成される。
また、本発明の目的は、時間軸上の一連の楽音信号データをディレイメモリ値として記憶した入力データバッファと、
インパルス応答特性を表す時間軸上の値である、元のインパルス応答データを記憶した記憶部と、を備えたコンピュータにおいて、前記コンピュータに、
前記記憶部に記憶された元のインパルス応答データを取り出して、前後の値より所定なだけ変動が大きい極大値および極小値を見出し、前記見出された極大値および極小値を、前記インパルス応答データにおける実際のインパルス応答データの値として、前記記憶部に格納するとともに、前記極大値および極小値をとらないインパルス応答データが連続する数をカウントして当該カウント数を示す値を前記記憶部に格納するインパルス応答生成ステップと、
前記インパルス応答データと、入力データバッファに記憶されたディレイメモリ値とを畳み込み演算して共鳴音データを生成する共鳴音生成ステップを実行させる共鳴音付加プログラムであって、
前記共鳴音生成ステップにおいて、前記コンピュータに、
前記極大値および極小値をとらないインパルス応答データが連続する数を示す値を参照して、前記入力データバッファにおいて、実際のインパルス応答データの値と乗算すべきディレイメモリ値を特定し、前記実際のインパルス応答データの値と、前記ディレイメモリ値とを乗算し、かつ、乗算された値を累算するステップを実行させることを特徴とする共鳴音付加プログラムにより達成される。
本発明によれば、少ない演算量で、測定されたインパルス応答データと同質の再現性を有する共鳴音を生成することができ、かつ、フィルタ演算に利用するインパルス応答データのデータ量を減らすことが可能な共鳴音付加装置、および、共鳴音付加プログラムを提供することが可能となる。
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかる共鳴音付加装置の構成を示すブロックダイヤグラムである。
図1に示すように、本実施の形態にかかる共鳴音付加装置は、元のインパルス応答データ12および後述する演算により算出された新たなインパルス応答データ14を記憶する記憶部16と、元のインパルス応答データ12から新たなインパルス応答データ14を生成して、新たなインパルス応答データ14を記憶部16に格納するインパルス応答生成部18と、一連の楽音信号データを格納した入力データバッファ22から楽音信号データを受け入れて、楽音信号データおよび新たなインパルス応答データを畳み込み演算することにより共鳴音データを生成する共鳴音生成部20と、時間軸上の一連の楽音信号データを受け入れて、これらデータを一時的に記憶する入力データバッファ22と、出力された共鳴音データを一時的に記憶する共鳴音データバッファ24と、を備えている。
図2は、本実施の形態にかかる共鳴音付加装置のハードウェア構成を示すブロックダイヤグラムである。図2に示すように、共鳴音付加装置のハードウェアは、CPU30、ROM32、RAM34、入力装置36、表示装置38およびサウンドシステム40を含む。CPU30、ROM32、RAM34、入力装置36、表示装置38およびサウンドシステム40は、バス42で接続されている。
図2にから理解できるように、共鳴音付加装置は、通常のパーソナルコンピュータによって実現され得る。CPU30は、システム制御、新たなインパルス応答データ14の生成、表示装置の画面上に表示すべき画像データの生成などの処理を実行する。ROM32は、プログラムや、プログラムの実行の際に使用される定数などを記憶する。RAM34は、プログラムの実行の過程で必要な変数、パラメータ、入力データ、出力データなどを一時的に記憶する。
入力装置36は、たとえば、キーボードやマウスを有し、操作者が所望の指示を入力することができるようになっている。表示装置38の画面上には、操作者が入力した指示や処理結果が表示可能である。
サウンドシステム40は、楽音生成回路44、共鳴音生成部20、増幅器(図示せず)、スピーカ(図示せず)などを含み、CPU30からの指示にしたがって、所定の楽音信号のデータを生成し、かつ、楽音信号データに共鳴音が付加された共鳴音データを生成し、生成された共鳴音データに基づく音響信号を出力する。
楽音生成回路44は、ROM32から楽音波形を読み出して、指定された音高の楽音信号データを生成する。楽音信号データは、図1に示すように入力データバッファ22に一時的に記憶される。共鳴音生成部20は、FIRフィルタであり、入力データバッファ22から、楽音信号データを入力データとして読み出し、楽音信号データと、記憶部14から読み出した新たなインパルス応答データとを畳み込み演算することにより、共鳴音データを生成し、共鳴音データバッファ24に格納する。
図1に示すインパルス応答生成部18の機能は、CPU30により実現される。なお、図2において、共鳴音生成部20を、サウンドシステム40における要素として図示しているが、共鳴音生成部20が、ディジタルフィルタ回路のようなハードウェアにより実現されることに限定されず、共鳴音生成部20の機能をCPU30により実現することも可能である。
また、図1の記憶部16、入力データバッファ22および共鳴音データバッファ24は、たとえば、RAM34により実現される。
本実施の形態にかかる共鳴音付加装置においては、たとえばROM32に記憶されたプログラムが、コンピュータを、インパルス応答生成部18として機能させる。また、ROM32に記憶されたプログラムが、コンピュータを、共鳴音生成部20として機能させることもできる。
元のインパルス応答データ12は、音楽ホールの残響特性などを測定し、測定された残響特性に基づいて得られたデータである。本実施の形態において、共鳴音付加装置の記憶部16に元のインパルス応答データ12が記憶され、インパルス応答生成部18によって、元のインパルス応答データ12に基づいて新たなインパルス応答データ14が生成され、新たなインパルス応答データ14が記憶部16に記憶される。いったん新たなインパルス応答データ14が生成されると、それ以降、新たなインパルス応答データ14のみが共鳴音生成のために利用され、元のインパルス応答データ12は利用されない。したがって、元のインパルス応答データ12は、新たなインパルス応答データ14を生成するときのみ、記憶部16に記憶されていれば良い。
したがって、本実施の形態にかかる共鳴音付加装置は、共鳴音データを生成する共鳴音生成処理の前処理として、新たなインパルス応答データを生成するインパルス応答データの生成処理を実行する。
図3および図4は、本実施の形態にかかるインパルス応答データの生成処理の例を示すフローチャートである。記憶部16には、フィルタの次数にしたがった、元のインパルス応答データIro[n](n=0〜nTap−1)が格納されている。本実施の形態においては、元のインパルス応答データの値「0」が連続する場合に、当該値「0」が連続する数を示す値を記憶しておくことで新たなインパルス応答データのデータ量を減らすようにしている。
より詳細には、元のインパルス応答データにおいて、前後の値より所定なだけ大きいような極大値および極小値を見出して、極大値および極小値については、元のインパルス応答データの値を保持する。それ以外の元のインパルス応答データについては値を「0」として、その連続する数を示す値を保持する。
図3に示すように、インパルス応答生成部18は、演算用のパラメータを、「n=0」、「p=0」、「zcnt=0」に初期化する(ステップ301)。パラメータ「n」は処理対象となる元のインパルス応答データIpo[n]を特定する。パラメータ「p」は、生成すべき新たなインパルス応答データIpg[p]を特定する。また、パラメータ「zcnt」は、値「0」がいくつ連続して存在するかを示すゼロカウンタのカウンタ値である。
インパルス応答生成部18は、n≧nTapとなるまで(ステップ302でYes)、ステップ303以下の処理を実行する。
インパルス応答生成部18は、パラメータ「n」が「0」であれば(ステップ303でYes)、インパルス応答生成部18は、パラメータ「n」をインクリメントして(ステップ309)、ステップ302に戻る。
その一方、パラメータ「n」が「0」でなければ(ステップ303でNo)、インパルス応答生成部18は、記憶部16から元のインパルス応答データIro[n−1]、Iro[n]、Iro[n+1]を読み出し、dp=Iro[n]−Iro[n−1]およびdn=Iro[n]−Iro[n+1]を算出する(ステップ304、305)。「dp」は、処理対象となっている元のインパルス応答データIro[n]と、インパルス応答特性の時間軸において、その1つ前の元のインパルス応答データIro[n−1]との差であり、「dn」は、処理対象となっている元のインパルス応答データIro[n]と、インパルス応答特性の時間軸において、その1つ後の元のインパルス応答データIro[n+1]との差である。
「dp」および「dn」の双方が「+(マイナス)」であれば、元のインパルス応答データIro[n]は極大であることになる。その一方、「dp」および「dn」の双方が「−(マイナス)」であれば、元のインパルス応答データIro[n]は極小であることになる。
本実施の形態においては、元のインパルス応答データIpo[n]が、前後の値より、所定の閾値Thより大きいような極大値である場合、つまり、dp≧Thかつdn≧Thである場合(ステップ306でYes)、或いは、元のインパルス応答データIpo[n]が、前後の値が、所定の負の閾値−Thより小さいような極小値である場合、つまり、dp≦−Thかつdn≦−Thである場合(ステップ307でYes)には、元のインパルス応答データIpo[n]が、新たなインパルス応答データIpg[p]として記憶される。
図4に示すように、インパルス応答生成部18は、ゼロカウンタのカウンタ値zcntが「0」以上であるかを判断する(ステップ401)。ステップ401でYesと判断された場合には、インパルス応答生成部18は、新たなインパルス応答データIrg[p]=0、Irg[p+1]=zcntとして(ステップ402)、さらに、p=p+2とした上で(ステップ403)、Irg[p]=Iro[n]とする(ステップ404)。
ゼロカウンタは、インパルス応答データの値「0」が連続する数を示す値をカウント値zcntとして保持する。また、ステップ402に生成されるIrg[p]=0は、次のインパルス応答データであるIrg[p+1]がゼロカウンタのカウント値zcntであることを示す識別子である。これら新たなインパルス応答データは、記憶部16に格納される。したがって、新たなインパルス応答データにおいては、Irg[p]、Irg[p+1]、Irg[p+2]の順で、「0」、ゼロカウンタのカウンタ値zcnt、極大値或いは極小値であった元のインパルス応答データ(=Iro[n])が、記憶部16に格納される。
その一方、ステップ401でNoと判断された場合には、元のインパルス応答データの値Iro[n]が、Irg[p]として格納される(ステップ404)。ステップ401でNo、つまり、ゼロカウンタのカウンタ値=0である場合には、極大値或いは極小値であった元のインパルス応答データ(=Iro[n])が、記憶部16に格納される。
次いで、インパルス応答生成部18は、パラメータ「p」をインクリメントするとともに、ゼロカウンタのカウント値zcntを「0」に戻す(ステップ405)。このような処理の後、インパルス応答生成部18は、パラメータ「n」をインクリメントして(ステップ309)、ステップ302に戻る。
ステップ306でNo、かつ、ステップ307でNoの場合には、インパルス応答生成部18は、ゼロカウンタのカウンタ値zcntをインクリメントする(ステップ308)。すなわち、元のインパルス応答データIro[n]について、前後の値より、所定の閾値Thより大きいような極大値ではなく、また、前後の値より、所定の負の閾値−Thより小さいような極小値でもない場合には、インパルス応答データの値を「0」と考えて、「0」が連続する数を示すゼロカウンタのカウンタ値zcntをインクリメントしている。
図3および図4の処理によって、元のインパルス応答データIpo[n]が、前後の値より、所定の閾値Thより大きいような極大値である場合、或いは、元のインパルス応答データIpo[n]が、前後の値より、所定の負の閾値−Thより小さいような極小値である場合には、それ以前にインパルス応答データの値「0」が連続する数を示すゼロカウンタのカウンタ値zcnt、および、元のインパルス応答データの値を含む一連の新たなインパルス応答データが生成され、記憶部18に格納される。
それ以外の場合には、ゼロカウンタのカウンタ値のみがインクリメントされていく。これにより、前後の値よりも、その変動が閾値より大きいような極大値および極小値以外の元のインパルス応答データが省略されたような新たなインパルス応答データを生成でき、インパルス応答データのデータ量を著しく小さくすることが可能となる。
図5は、本実施の形態にかかる新たなインパルス応答データの生成を説明するための図である。たとえば、元のインパルス応答データIro[s+1]を処理対象Iro[n]としたときに、dp=Iro[s+1]−Iro[s]≧Th、かつ、dn=Iro[s+1]−Iro[s+2]≧Thとなったとする。この場合、一連の新たなインパルス応答データとして、パラメータp=qとすると、Irg[q]=0、Irg[q+1]=カウントされていたゼロカウンタのカウント値zcnt、Irg[q+2]=Iro[s+1]が生成される(符号511参照)。
Iro[s+2]からIro[s+t]が処理対象となり、図3のステップ306およびステップ307でNoと判断された場合には、それぞれ、ゼロカウンタのカウンタ値がカウントアップされる。元のインパルス応答データIro[s+t+1]を処理対象Iro[n]としたときに、dp=Iro[s+t+1]−Iro[s+t]≦−Th、かつ、dn=Iro[s+t+1]−Iro[s+t+2]≦−Thとなったとする。この場合、一連の新たなインパルス応答データとして、パラメータp=q+3とすると、Irg[q+3]=0、Irg[q+4]=カウントされていたゼロカウンタのカウント値zcnt=t−1、Irg[q+5]=Iro[s+t+1]が生成される(符号512参照)。符号512に示す例では、ゼロカウンタの値が「t−1」、つまり、値が「0」であるとされた元のインパルス応答データが、「t−1」個だけ連続しているため、ゼロカウンタのカウント値zcnt=t−1となる。
なお、図5においては図示していないが、ゼロカウンタのカウント値が「0」であれば、元のインパルス応答データと同じ値を持つ1つの新たなインパルス応答データのみが生成される(図3のステップ401でNoの場合)。
このようにして生成され、記憶部18に格納された新たなインパルス応答データIrg(以下、単に、「インパルス応答データ」と称する。)を利用して、共鳴音生成部20によって、畳み込み演算が実行されて、共鳴音データが生成される。
図6および図7は、本実施の形態にかかる共鳴音生成部によって実行される処理の例を示すフローチャートである。図6の処理では、楽音信号データと、インパルス応答データとが畳み込み演算される。また、図7の処理では、入力データバッファ22の値(ディレイメモリ値DM)がシフトされる。
図6に示すように、共鳴音生成部20は、演算用のパラメータを「k=0」、「p=0」に初期化する(ステップ601)。パラメータ「k」は入力データバッファ22中のディレイメモリ値DM[k]を特定する。また、パラメータ「p」は、記憶部16中のインパルス応答データIrg[p]を特定する。
また、共鳴音生成部20は、累算値「acc=0」とするとともに、入力データバッファ22の先頭のディレイメモリ値DM[0]=xinにセットする(ステップ602、603)。xinは、最新の楽音信号データである。後述するように、本実施の形態の入力データバッファ22は、最新の楽音信号のデータDM[0]から、時間軸方向にnTapだけ前のサンプルである楽音信号データDM[nTap−1]までの楽音信号データのデータ列を格納することができる。すなわち、入力データバッファ22は、nTap段のディレイメモリとして利用される。入力データバッファ22に格納されたディレイメモリ値DM[k]については、後にさらに詳述する。
次いで、共鳴音生成部20は、k≧nTapになるまで(ステップ604でYes)、以下の処理を実行する。共鳴音生成部20は、インパルス応答データIrg[p]が「0」であるかを判断する(ステップ605)。ステップ605でNoと判断された場合には、共鳴音生成部20は、累算値acc=acc+Irg[p]×DM[k]を算出する(ステップ606)。つまり、共鳴音生成部20は、第p番のインパルス応答データIrg[p]と第k番のディレイメモリ値DM[k]との積を累算値accに加算する。
その一方、Irg[p]=0である場合(ステップ605でYes)には、共鳴音生成部20は、k=k+Irg[p+1]として、ディレイメモリ値DM[k]を特定するパラメータ「k」を更新する(ステップ607)。
ステップ605でYesであることは、インパルス応答データが「0」、つまり、後続するインパルス応答データが、インパルス応答データの値「0」が連続する数を示す値であることを示す識別子であることが示される。そこで、共鳴音生成部20は、インパルス応答データの値「0」が連続する数を示す値だけ、入力データバッファ22のディレイメモリ値を特定するパラメータ「k」を増大させる。これにより、実際のインパルス応答データの値と、増大されたパラメータ「k」により特定されるディレイメモリ値との適切な乗算が可能となる。
その後、共鳴音生成部20は、パラメータpおよびパラメータkをそれぞれインクリメントし(ステップ608、609)、ステップ604に戻る。
以下、ステップ605〜ステップ607についてより詳細に説明する。上述したように、インパルス応答データは、「0」、インパルス応答データの値「0」が連続する数を示す値、および、実際のインパルス応答データの値、という3つのデータから構成されている。
図8は、本実施の形態にかかるインパルス応答データのデータ構成の例を示す図である。図8においては、先頭のインパルス応答データ(符号801参照)は、「0」であり、次のインパルス応答データ(符号802参照)が、ゼロカウンタのカウンタ値(zcnt[q]であることを示している。また、その次のインパルス応答データは、実際のインパルス応答データの値(Iro[q])に相当する。
符号801で示すインパルス応答データが、図6における処理対象のインパルス応答データIrg[p]であると、図6のステップ605でYesと判断される。この場合には、ディレイメモリ値DM[k]を特定するパラメータkが、符号802で示すインパルス応答データIrg[p+1]=zcnt[q]だけ増加される(図6のステップ607)。すなわち、インパルス応答データの値が「0」の場合に、インパルス応答データとディレイメモリDM[k]との乗算および累算値への加算を省略することができる。
また、符号803で示すインパルス応答データが処理対象のインパルス応答データIrg[p]であると、図6のステップ605でNoと判断され、インパルス応答データIrg[p]=Iro[q]と、ステップ607によって、インパルス応答データが「0」が連続する数を示す値だけ適切に増加されたパラメータkによる、ディレイメモリ値DM[k]とが乗算され、累算値accに加算される(図6のステップ606)。
符号804〜806で示す一連のインパルス応答データにおいても、符号801〜803で示した一連のインパルス応答データと同様の処理が実行される。符号804〜806で示すインパルス応答データについての処理は、それぞれ、符号801〜803で示すインパルス応答データについての処理に対応する。
符号807で示すインパルス応答データが処理対象のインパルス応答データIrg[p]であると、ステップ605でNoと判断され、インパルス応答データIrg[p]=Iro[q]と、ディレイメモリ値DM[k]とが乗算され、累算値accに加算される(図6のステップ606)。
符号808〜810で示す一連のインパルス応答データにおいても、符号801〜803で示した一連のインパルス応答データと同様の処理が実行される。符号808〜810で示すインパルス応答データについての処理は、それぞれ、符号801〜803で示すインパルス応答データについての処理に対応する。
畳み込み演算が終了すると(ステップ604でYes)、共鳴音生成部20は、入力データバッファ22に格納されたディレイメモリ値をシフトする。図7に示すように、共鳴音生成部20は、パラメータkを「nTap−1」に初期化して(ステップ701)、k=0となるまで(ステップ702でYes)、以下の処理を実行する。
共鳴音生成部20は、入力データバッファ22中のディレイメモリ値DM[k]を、ディレイメモリ値DM[k−1]とするように、入力データバッファ22の値を更新する(ステップ703)。その後、共鳴音生成部20は、パラメータkをディクリメントする(ステップ704)。
図9に示すように、入力データバッファ22においては、DM「0」にある時刻tにおける最新の楽音信号データx(t)が格納され、DM[1]、DM「2」、・・・、DM[nTap−1]の順で、それぞれ、過去の楽音信号x(t−1)、x(t−2)、・・・、x(t−(nTap−1))が格納されている(符号900参照)。図7のステップ703においては、符号901で示すように、DM[k]=DM[k−1]となるように、入力データバッファ22を更新する。これにより、先頭のディレイメモリ値DM[0]に新たな値が入力可能な状態となる。図6のステップ603では、このDM[0]として最新の楽音信号のデータxinが格納される。
ステップ702でYesと判断された場合には、共鳴音生成部20は、累算値accに所定の補正値constAを乗算して、共鳴音データyoutを生成する(ステップ705)。生成された共鳴音データyoutは、共鳴音データバッファ24に格納される。共鳴音データバッファ24に格納された共鳴音データは、所定のタイミングで読み出され、DA変換された後、音響信号として増幅されスピーカなどから放音される。
本実施の形態によれば、後続するデータがインパルス応答データの値「0」が連続する数であることを示す識別子、インパルス応答データの値「0」が連続する数を示す値、および、実際のインパルス応答データの値によって、新たなインパルス応答データを構成している。これにより、インパルス応答データのデータ量を著しく小さくすることができる。
また、本実施の形態においては、前後の値より、その変動が閾値より大きいような極大値および極小値以外の元のインパルス応答データについては「0」として、データ量を削減している。極小値および極大値は、共鳴音の中でも、壁などを反射して伝わる反射音の特徴を現しているものと考えられる。前後の値より、その変動が閾値より大きいような極大値および極小値のみをインパルス応答データとして保持し、他のものは「0」とすることで、データ量を削減しつつ、再現性の良好な共鳴音を実現することが可能となる。
また、本実施の形態によれば、新たなインパルス応答データ中、実際に値が存在するもの(つまり値が「0」でないもの)についてのみ畳み込み演算が行われるため、共鳴音生成のための畳み込み演算の演算量を削減することができる。
次に、本発明の第2の実施の形態について説明する。第1の実施の形態において、新たなインパルス応答データIrgは、次のインパルス応答データであるIrg[p+1]がゼロカウンタのカウント値zcntであることを示す識別子である「0」、ゼロカウンタのカウント値、および、元のインパルス応答データから構成される。
第2の実施の形態においては、新たなインパルス応答データは、識別子を省略し、ゼロカウンタのカウント値および元のインパルス応答データから構成されている。
第2の実施の形態にかかる共鳴音付加装置の構成も図1に示すものと同様であり、また、ハードウェア構成も図2に示すものと同様である。
図3および図10は、第2の実施の形態にかかるインパルス応答の例を示すフローチャートである。第2の実施の形態においても、第1の実施の形態と同様に、インパルス応答生成部18が、図3に示す処理を実行する。ステップ306でYes或いはステップ307でYesの場合には、インパルス応答生成部18は、新たなインパルス応答データIrg[p]=zcntとした(ステップ1001)後に、パラメータpをインクリメントする(ステップ1002)。
次いで、インパルス応答生成部18は、インクリメントされたパラメータpについて、新たなインパルス応答データIrg[p]=Iro[n]とする(ステップ1003)。その後、インパルス応答生成部18は、パラメータpをインクリメントするとともに、ゼロカウンタのカウンタ値zcntを「0」に初期化する(ステップ1004)。
このような処理により、新たなインパルス応答データにおいては、Irg[p]、Irg[p+1]の順で、ゼロカウンタのカウント値zcnt、極大値或いは極小値であった元のインパルス応答データ(=Iro[n])が、記憶部16に格納される。すなわち、第2の実施の形態では、インパルス応答データの値「0」が連続する数を示す値と、それに引き続く実際のインパルス応答データの値とから新たなインパルス応答データは構成される。
図11および図7は本実施の形態にかかる共鳴音生成処理は、第2の実施の形態にかかる共鳴音生成部によって実行される処理の例を示すフローチャートである。第2の実施の形態においても、入力データバッファの値のシフトに関する処理および共鳴音データyoutの出力(図7)は、第1の実施の形態と同様である。
図11に示すように、共鳴音生成部20は、演算用のパラメータを「k=0」、「p=0」に初期化する(ステップ1101)。第1の実施の形態と同様に、パラメータ「k」は入力データバッファ22中のディレイメモリ値DM[k]を特定する。また、パラメータ「p」は、記憶部16中のインパルス応答データIrg[p]を特定する。
また、共鳴音生成部20は、累算値「acc=0」とするとともに、入力データバッファ22の先頭のディレイメモリ値DM[0]=xinにセットする(ステップ1102、1103)。xinは、最新の楽音信号のデータである。これらの処理も第1の実施の形態と同様である。
次いで、共鳴音生成部20は、k≧nTapになるまで(ステップ1104でYes)、以下の処理を実行する。共鳴音生成部20は、k=k+Irg[p+1]として、ディレイメモリ値DM[k]を特定するパラメータ「k」を更新する(ステップ1105)。その後、共鳴音生成部20は、パラメータpをインクリメントする(ステップ1106)。
次いで、共鳴音生成部20は、累算値acc=acc+Irg[p]×DM[k]を算出する(ステップ1107)。つまり、共鳴音生成部20は、第p番のインパルス応答データIrg[p]と第k番のディレイメモリ値DM[k]との積を累算値accに加算する。
その後、共鳴音生成部20は、パラメータpおよびパラメータkをそれぞれインクリメントし(ステップ1108、1109)、ステップ1104に戻る。また、ステップ1104でYesと判断された場合には、共鳴音生成部20は、図7に示す処理を実行する。
図11の処理においては、共鳴音生成部20は、ステップ1105において、ディレイメモリ値DM[k]を特定するパラメータkが、インパルス応答データの値「0」が連続する数だけ増加される。その後、共鳴音生成部20は、インクリメントしたパラメータp、および、ステップ1105で進められたパラメータkを利用して、実際のインパルス応答データIrg[p]と、ディレイメモリ値DM[k]との乗算値を累算値に加算している(ステップ1107参照)。したがって、第2の実施の形態においても、インパルス応答データの値が「0」の場合に、インパルス応答データとディレイメモリDM[k]との乗算および累算値への加算を省略することができる。
第2の実施の形態によれば、インパルス応答データの値「0」が連続する数を示す値、および、実際のインパルス応答データによって、新たなインパルス応答データを構成している。これにより、インパルス応答データのデータ量を著しく小さくすることができる。前後の値より、その変動が閾値より大きいような極大値および極小値が連続すると、第1の実施の形態よりデータ量が大きくなるが、畳み込み演算において、識別子の有無の判断をする必要が無く、処理を単純化することが可能となる。
また、本実施の形態においては、前後の値より、その変動が閾値より大きいような極大値および極小値以外の元のインパルス応答データについては「0」として、データ量を削減している。極小値および極大値は、共鳴音の中でも、壁などを反射して伝わる反射音の特徴を現しているものと考えられる。前後の値より、その変動が所定なだけ大きいような極大値および極小値のみをインパルス応答データとして保持し、他のものは「0」とすることで、データ量を削減しつつ、再現性の良好な共鳴音を実現することが可能となる。
また、本実施の形態によれば、新たなインパルス応答データ中、実際に値が存在するものについてのみ畳み込み演算が行われるため、共鳴音生成のための畳み込み演算の演算量を削減することができる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
図1は、本発明の実施の形態にかかる共鳴音付加装置の構成を示すブロックダイヤグラムである。 図2は、本実施の形態にかかる共鳴音付加装置のハードウェア構成を示すブロックダイヤグラムである。 図3は、本実施の形態にかかるインパルス応答データの生成処理の例を示すフローチャートである。 図4は、本実施の形態にかかるインパルス応答データの生成処理の例を示すフローチャートである。 図5は、本実施の形態にかかる新たなインパルス応答データの生成を説明するための図である。 図6は、本実施の形態にかかる共鳴音生成部によって実行される処理の例を示すフローチャートである。 図7は、本実施の形態にかかる共鳴音生成部によって実行される処理の例を示すフローチャートである。 図8は、本実施の形態にかかるインパルス応答データのデータ構成の例を示す図である。 図9は、本実施の形態にかかる入力データバッファの構成例を示す図である。 図10は、第2の実施の形態にかかるインパルス応答データの生成処理の例を示すフローチャートである。 図11は、第2の実施の形態にかかる共鳴音生成部によって実行される処理の例を示すフローチャートである。
符号の説明
12 元のインパルス応答データ
14 新たなインパルス応答データ
16 記憶部
18 インパルス応答生成部
20 共鳴音生成部
22 入力データバッファ
24 共鳴音データバッファ
30 CPU
32 ROM
34 RAM
36 入力装置
38 表示装置
40 サウンドシステム
44 楽音生成回路

Claims (2)

  1. 時間軸上の一連の楽音信号データをディレイメモリ値として記憶した入力データバッファと、
    インパルス応答特性を表す時間軸上の値である、元のインパルス応答データを記憶する記憶部と、
    前記記憶部に記憶された元のインパルス応答データを取り出して、前後の値より所定なだけ変動が大きい極大値および極小値を見出し、前記見出された極大値および極小値を、前記インパルス応答データにおける実際のインパルス応答データの値として、前記記憶部に格納するとともに、前記極大値および極小値をとらないインパルス応答データが連続する数をカウントして当該カウント数を示す値を前記記憶部に格納するインパルス応答生成手段と、
    前記記憶部に格納された実際のインパルス応答データと、入力データバッファに記憶されたディレイメモリ値とを畳み込み演算して共鳴音データを生成する共鳴音生成手段と、を備えた共鳴音付加装置であって、
    前記共鳴音生成手段が、前記極大値および極小値をとらないインパルス応答データが連続する数を示す値を参照して、前記入力データバッファにおいて、実際のインパルス応答データの値と乗算すべきディレイメモリ値を特定し、前記実際のインパルス応答データの値と、前記ディレイメモリ値とを乗算し、かつ、乗算された値を累算するように構成されたことを特徴とする共鳴音付加装置。
  2. 時間軸上の一連の楽音信号データをディレイメモリ値として記憶した入力データバッファと、
    インパルス応答特性を表す時間軸上の値である、元のインパルス応答データを記憶した記憶部と、を備えたコンピュータにおいて、前記コンピュータに、
    前記記憶部に記憶された元のインパルス応答データを取り出して、前後の値より所定なだけ変動が大きい極大値および極小値を見出し、前記見出された極大値および極小値を、前記インパルス応答データにおける実際のインパルス応答データの値として、前記記憶部に格納するとともに、前記極大値および極小値をとらないインパルス応答データが連続する数をカウントして当該カウント数を示す値を前記記憶部に格納するインパルス応答生成ステップと、
    前記インパルス応答データと、入力データバッファに記憶されたディレイメモリ値とを畳み込み演算して共鳴音データを生成する共鳴音生成ステップを実行させる共鳴音付加プログラムであって、
    前記共鳴音生成ステップにおいて、前記コンピュータに、
    前記極大値および極小値をとらないインパルス応答データが連続する数を示す値を参照して、前記入力データバッファにおいて、実際のインパルス応答データの値と乗算すべきディレイメモリ値を特定し、前記実際のインパルス応答データの値と、前記ディレイメモリ値とを乗算し、かつ、乗算された値を累算するステップを実行させることを特徴とする共鳴音付加プログラム。
JP2007143977A 2007-05-30 2007-05-30 共鳴音付加装置および共鳴音付加プログラム Active JP4941106B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007143977A JP4941106B2 (ja) 2007-05-30 2007-05-30 共鳴音付加装置および共鳴音付加プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007143977A JP4941106B2 (ja) 2007-05-30 2007-05-30 共鳴音付加装置および共鳴音付加プログラム

Publications (2)

Publication Number Publication Date
JP2008299004A JP2008299004A (ja) 2008-12-11
JP4941106B2 true JP4941106B2 (ja) 2012-05-30

Family

ID=40172592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007143977A Active JP4941106B2 (ja) 2007-05-30 2007-05-30 共鳴音付加装置および共鳴音付加プログラム

Country Status (1)

Country Link
JP (1) JP4941106B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2368375B1 (en) * 2008-11-21 2019-05-29 Auro Technologies Nv Converter and method for converting an audio signal
JP6540681B2 (ja) * 2016-12-26 2019-07-10 カシオ計算機株式会社 楽音生成装置および方法、電子楽器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2792853B2 (ja) * 1986-06-27 1998-09-03 トムソン コンシューマー エレクトロニクス セイルズ ゲゼルシャフト ミット ベシュレンクテル ハフツング オーディオ信号の伝送方法及び装置
JPH077900B2 (ja) * 1987-11-20 1995-01-30 松下電器産業株式会社 音場再生装置
JPH02218224A (ja) * 1989-02-18 1990-08-30 Fujitsu Kiden Ltd データ転送方法
JPH04326399A (ja) * 1991-04-26 1992-11-16 Matsushita Electric Ind Co Ltd 反射音圧縮装置
JP2001109497A (ja) * 1999-10-04 2001-04-20 Matsushita Electric Ind Co Ltd オーディオ信号符号化装置およびオーディオ信号符号化方法
JP4021124B2 (ja) * 2000-05-30 2007-12-12 株式会社リコー デジタル音響信号符号化装置、方法及び記録媒体
JP2006245865A (ja) * 2005-03-02 2006-09-14 Yamaha Corp 畳み込み演算方法および畳み込み演算処理プログラム

Also Published As

Publication number Publication date
JP2008299004A (ja) 2008-12-11

Similar Documents

Publication Publication Date Title
US8401201B2 (en) Sound processing apparatus and method
US7612281B2 (en) Reverberation effect adding device
KR20040022442A (ko) 스피커 등화 툴
EP2372693A2 (en) Signal processing device and stringed instrument
JPH10322167A (ja) オーディオ音伝達系の同定方式およびオーディオ用フィルタの特性設定方式
JP4702392B2 (ja) 共鳴音発生装置および電子楽器
US9628907B2 (en) Audio device and method having bypass function for effect change
JP4941106B2 (ja) 共鳴音付加装置および共鳴音付加プログラム
JP4877076B2 (ja) 共鳴音付加装置および共鳴音付加プログラム
JPH10200351A (ja) デジタルオーディオプロセッサ
JP2009175677A (ja) 共鳴音付加装置および電子楽器
US8306242B2 (en) Heyser spiral low frequency correction of FIR filters
JP5169753B2 (ja) 共鳴音付加装置および電子楽器
JP5434120B2 (ja) インパルス応答加工装置、残響付与装置およびプログラム
JP2006245865A (ja) 畳み込み演算方法および畳み込み演算処理プログラム
JP6597062B2 (ja) 雑音低減装置、雑音低減方法、雑音低減プログラム
JP2009025589A (ja) 電子楽器の共鳴音付加装置および電子楽器
JP2009282454A (ja) Firフィルタ装置、音響装置およびfirフィルタプログラム
JP5169584B2 (ja) インパルス応答加工装置、残響付与装置およびプログラム
JPH03235997A (ja) 楽音波形信号形成装置
JP5092902B2 (ja) Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム
JP4432951B2 (ja) 楽音発生装置および電子楽器
JP2005215250A (ja) 音場制御システム及び音場制御方法
US20010024478A1 (en) Signal receiving circuit and signal receiving method
JP4127130B2 (ja) データ処理装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120131

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120213

R150 Certificate of patent or registration of utility model

Ref document number: 4941106

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3