[go: up one dir, main page]

JP6724828B2 - フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置 - Google Patents

フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置 Download PDF

Info

Publication number
JP6724828B2
JP6724828B2 JP2017049459A JP2017049459A JP6724828B2 JP 6724828 B2 JP6724828 B2 JP 6724828B2 JP 2017049459 A JP2017049459 A JP 2017049459A JP 2017049459 A JP2017049459 A JP 2017049459A JP 6724828 B2 JP6724828 B2 JP 6724828B2
Authority
JP
Japan
Prior art keywords
data
filter
coefficient
fir
output
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
JP2017049459A
Other languages
English (en)
Other versions
JP2018151589A (ja
JP2018151589A5 (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 JP2017049459A priority Critical patent/JP6724828B2/ja
Priority to US15/876,406 priority patent/US10339907B2/en
Priority to CN201810212878.XA priority patent/CN108630189B/zh
Publication of JP2018151589A publication Critical patent/JP2018151589A/ja
Publication of JP2018151589A5 publication Critical patent/JP2018151589A5/ja
Application granted granted Critical
Publication of JP6724828B2 publication Critical patent/JP6724828B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0211Frequency selective networks using specific transformation algorithms, e.g. WALSH functions, Fermat transforms, Mersenne transforms, polynomial transforms, Hilbert transforms
    • H03H17/0213Frequency domain filters using Fourier transforms
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/02Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos
    • G10H1/04Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos by additional modulation
    • G10H1/043Continuous modulation
    • 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
    • G10K15/08Arrangements for producing a reverberation or echo sound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/02Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos
    • G10H1/06Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour
    • G10H1/12Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour by filtering complex waveforms
    • G10H1/125Circuits for establishing the harmonic content of tones, or other arrangements for changing the tone colour by filtering complex waveforms using a digital filter
    • 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
    • G10K15/08Arrangements for producing a reverberation or echo sound
    • G10K15/12Arrangements for producing a reverberation or echo sound using electronic time-delay networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/155Musical effects
    • G10H2210/265Acoustic effect simulation, i.e. volume, spatial, resonance or reverberation effects added to a musical sound, usually by appropriate filtering or delays
    • G10H2210/281Reverberation or echo
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/055Filters for musical processing or musical effects; Filter responses, filter architecture, filter coefficients or control parameters therefor
    • G10H2250/111Impulse response, i.e. filters defined or specified by their temporal impulse response features, e.g. for echo or reverberation applications
    • G10H2250/115FIR impulse, e.g. for echoes or room acoustics, the shape of the impulse response is specified in particular according to delay times
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/131Mathematical functions for musical analysis, processing, synthesis or composition
    • G10H2250/145Convolution, e.g. of a music input signal with a desired impulse response to compute an output
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H2017/0072Theoretical filter design
    • H03H2017/0081Theoretical filter design of FIR filters

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)

Description

本発明は、FIR(Finite Impulse Response:有限インパルス応答)を利用したフィルタ演算処理装置、フィルタ演算方法、及びそれを用いた効果付与装置に関する。
オーディオ信号の直接音に対してインパルス応答を畳み込むことにより残響や共鳴効果を付与する残響付与装置において、その畳込み手段として、時間領域で畳み込みを行うFIRフィルタを用いる技術(例えば特許文献1)や、周波数領域で畳み込みを行なうFFT/iFFT(Fast Fourier Transform/inverse FFT:高速フーリエ変換/逆高速フーリエ変換)を用いる技術(例えば特許文献2)が知られている。
また、FIRとFFTの両方を用い、初期反射音部分はFIRを用い、後期残響音のみFFTで畳み込む方法(例えば非特許文献1)も知られている。
特開2003−280675号公報 特開2005−215058号公報
William G.Gardner "Efficient Convolution without Input−Output Delay",J.Audio Eng.Soc.,Vol.43,No.3,p.127,1995 March
しかし、FIRフィルタを用いる技術は、残響が長くインパルス応答時間が長くなるような場合には、演算量が膨大となり、残響付与装置として実現することが困難になるという課題があった。
また、FFT/iFFTを用いる技術は、ブロックサイズ分の入力信号がバッファリングされないとFFT処理を開始することができないので、効果音の発生において遅延を生じてしまうという課題があった。
更に、FIRとFFTの両方を用いる技術では、FIRの出力とFFTの出力を切れ目無く接続するためには、FIRのフィルタ次数をFFTのポイント数(=ブロックサイズ×2)に合わせる必要がある。ここで、残響音や共鳴音の特性を変更したり、インパルス応答の特性によって、FFTのポイント数を調整する必要が生じる場合がある。しかし、従来、FFTのポイント数の変更に合わせてFIRのフィルタ次数を柔軟に変更することは困難であった。このため、原音に対して残響効果などを与える場合などにおける効果付与のバリエーションが不十分になってしまうという課題があった。
そこで、本発明は、フィルタ次数を柔軟に変更可能で、同時に複数種類のFIRフィルタ演算処理を実行可能なフィルタ演算処理装置、フィルタ演算方法、及びそれを用いた効果付与装置を実現することを目的とする。
態様の一例では、フィルタ次数が可変のフィルタ演算処理に用いる、少なくとも指定されたフィルタ次数に対応する数の係数データを記憶している係数記憶部と、前記フィルタ演算処理の対象となる入力データを順次取得していく取得部と、前記取得部により過去に取得された、少なくとも前記指定されたフィルタ次数に対応する数の入力データを遅延データとして記憶している入力データ記憶部と、前記取得部で取得される入力データ又は前記入力データ記憶部に記憶されている各遅延データと、前記係数記憶部に記憶されている各係数データとを乗算しながら累算していく処理を、前記指定されたフィルタ次数に対応する回数繰り返すことで前記フィルタ演算処理を実行し、実行結果を出力する制御部と、を有し、前記制御部は、前記フィルタ次数を、予め決められた数以内で任意に指定することが可能であり、前記係数記憶部は、少なくとも前記予め決められた数の前記係数データを記憶し、前記入力データ記憶部は、少なくとも前記予め決められた数の前記入力データを記憶する
本発明によれば、フィルタ次数を柔軟に変更することが可能で、同時に複数種類のFIRフィルタ演算処理を実行可能なフィルタ演算処理装置、フィルタ演算方法、及びそれを用いた効果付与装置を実現することが可能となる。
電子楽器の実施形態の例を示すブロック図である。 電子楽器における楽音データの流れの例を示す図である。 残響・共鳴装置のブロック図である。 CONV演算処理部の動作説明図(その1)である。 CONV演算処理部の動作説明図(その2)である。 CONV演算処理部の動作説明図(その3)である。 FFT演算を用いた周波数域畳込み処理における処理遅延の説明図である。 FIRフィルタ演算処理部の機能構成例を示すブロック図である。 FIRフィルタ演算処理部とCONV演算処理部の処理関係を示す説明図である。 サンプリング周期中に複数系統のFIRフィルタ演算処理を実行可能な本実施形態のFIRフィルタ演算処理部の説明図である。 フィルタ演算処理装置のハードウェア構成例を示す図である。 フィルタ演算処理装置によって実行される1つのFIRフィルタ演算処理部の動作例を示すタイミングチャートである。 図12のタイミングチャートと図8で説明したFIRフィルタ演算処理部の機能構成例との関係を説明する図である。 全体動作の制御処理例を示すメインフローチャートである。 残響・共鳴更新処理の詳細処理例を示すフローチャートである。 ブロック更新処理の詳細処理例(その1)を示すフローチャートである。 ブロック更新処理の詳細処理例(その2)を示すフローチャートである。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。本実施形態の電子楽器の効果付与部に用いられるフィルタ演算処理装置は、フィルタ次数を柔軟に変更可能なFIRフィルタ演算処理を実行することができ、また、フィルタ次数やインパルス応答特性が異なる複数のFIRフィルタ演算処理を、それらの組合せを柔軟に変更しながら同時に実行することが可能である。本実施形態における効果付与部は、このようなFIRフィルタ演算処理による時間域畳込み処理と、FFT演算を用いた周波数域畳込み処理とが組み合わされて実装される。この場合、周波数域畳込み処理におけるFFT点数と共にFIRのフィルタ次数を柔軟に決定することが可能となるため、電子楽器の楽音に、応答性を犠牲にすることなく、再現性の高い残響、共鳴効果を付与することが可能となる。
図1は、電子楽器100の実施形態の例を示すブロック図である。電子楽器100は、CPU(中央演算処理装置)101と、ROM(リードオンリーメモリ)102と、RAM(ランダムアクセスメモリ)103と、音源(TG:Tone Generator)104と、効果付与部105と、鍵盤106と、ペダル107と、操作子108が、システムバス109に接続された構成を有する。また、音源(TG)104の出力は、サウンドシステム110に接続される。
CPU101は、ROM102からRAM103にロードされた制御プログラムを実行することにより、鍵盤106や操作子108からの演奏操作情報に基づいて、音源104に発音指示を出す。
音源(TG)104は、上記発音指示に従って、ROM102又はRAM103から波形データを読み出すことにより、楽音データを生成する。この楽曲データは、効果付与部105を介して、サウンドシステム110に出力される。このとき、例えばペダル107が踏まれると、効果付与部105が、楽音データにリバーブなどの残響音付与やピアノの弦の共鳴音付与などの効果付与を実行する。この結果、効果付与部105から出力された楽音データは、サウンドシステム110において、デジタル−アナログ変換器によってアナログ楽音信号に変換され、アナログアンプで増幅され、スピーカから放音される。
図2は、図1の構成を有する電子楽器における楽音データの流れの例を示す図である。音源(TG)104は、CH1〜CHnのnチャネルの発音チャネルの楽音データを生成する楽音生成部201(CH1)〜201(CHn)を備え、それぞれ、鍵盤106での押鍵に基づいて発生する図1のCPU101からの発音指示に従い、押鍵毎に独立した楽音データを生成する。発音チャネルCHiに対応する楽音生成部201(CHi)(1≦i≦n)は、波形データを生成する波形生成部WG.CHi、生成された波形データの音色を加工するフィルタ処理部TVF.CHi、及び生成された波形データの振幅エンベロープを加工するアンプエンベロープ処理部TVA.CHiを備える。
ミキシング部202内の4つのミキサ203、204、205、及び206はそれぞれ、各楽音生成部201(CHi)(1≦i≦n)が出力する各楽音データに所定のレベルを乗算した後に累算することにより、Lch(左チャネル)直接音出力データ207、Rch(右チャネル)直接音出力データ208、Lch効果音入力データ209、及びRch効果音入力データ210をそれぞれ、効果付与部105に出力する。なお、図2において、各ミキサ203、204、205、及び206内の記号「*、Σ」は、入力したデータに対して所定のレベルを乗算後に累算して出力することを示している。
Lch効果音入力データ209及びRch効果音入力データ210はそれぞれ、効果付与部105内の残響・共鳴装置211において残響・共鳴効果が付与され、Lch効果音出力データ211及びRch効果音出力データ212として出力される。効果付与部105内で、Lch効果音出力データ211は、Lch直接音出力データ207と加算され、Lch楽音出力データ213として、図1のサウンドシステム110に出力される。同様に、Rch効果音出力データ212は、Rch直接音出力データ208と加算され、Rch楽音出力データ214として、サウンドシステム110に出力される。サウンドシステム110では、Lch楽音出力データ213及びRch楽音出力データ214はそれぞれ、Lchアナログ楽音信号及びRchアナログ楽音信号に変換されて、それぞれアナログアンプにより増幅されて、Lch及びRchの各スピーカから放音される。
図3は、図2の効果付与部105内の残響・共鳴装置211のブロック図である。残響・共鳴装置211は、残響・共鳴装置211(Lch)と残響・共鳴装置211(Rch)とを有する。残響・共鳴装置211(Lch)は、Lch効果音入力データ209を入力して、Lchの残響・共鳴効果を付与し、Lch効果音出力データ211を出力する。残響・共鳴装置211(Rch)は、Rch効果音入力データ210を入力して、Rchの残響・共鳴効果を付与し、Rch効果音出力データ212を出力する。両者とも同じ構成であるため、以下、特に言及しない場合は、Lch及びRchの区別なく説明する。
残響・共鳴装置211に入力するLch効果音入力データ209又はRch効果音出力データ210は、FIRフィルタ演算処理部303とCONV演算処理部304に並列に入力する。FIRフィルタ演算処理部303は、残響・共鳴音のインパルス応答データの前半データ部分をサンプリング周期単位の時間域処理により、Lch効果音入力データ209又はRch効果音入力データ210(原音)に畳み込む時間域畳込み部である。CONV演算処理部304は、上記インパルス応答データの後半データ部分をブロック単位のFFT演算を用いた周波数域処理により、Lch効果音入力データ209又はRch効果音入力データ210(原音)に畳み込む周波数域畳込み部である。FIRフィルタ演算処理部303とCONV演算処理部304は、図2の効果付与部105であるDSP内に実装されているRAM306を共通領域として使用しながら、演算処理を実行する。
FIRフィルタ演算処理部303とCONV演算処理部304の各出力は加算部305で加算されて、Lch効果音出力データ211又はRch効果音出力データ212として出力される。
図4から図6は、図3のCONV演算処理部304の動作説明図である。まず、図4は、ブロックサイズがN点の畳込み例を示している。FFT演算を用いた畳込みはそのままでは巡回畳込みとなるため、本実施形態では、インパルス応答データ(coef)と、Lch効果音入力データ209又はRch効果音入力データ210(以下、LchとRchを区別せずにこれらをまとめて効果音入力データ(sig)と呼ぶ)とを2N点でそれぞれFFT演算する際に、各ブロックの線状畳込みが得られるようにする。
ここでは、2N点の各FFT演算403、404に先だって、401として示されるように、N点のインパルス応答データ(coef)(太枠部分)にN点のゼロデータが付加されて2N点のデータとされる。また、402として示されるように、効果音入力データ(sig)がブロックサイズN点分シフトされながらオーバーラップされて(太枠部分→破線太枠部分)2N点のデータとされる。そして、インパルス応答データ(coef)から生成された上記2N点のデータ401と効果音入力データ(sig)から生成された上記2N点のデータ402とに対して、それぞれ403及び404として示されるようにFFT演算が実行される結果、周波数領域の2N点のデータ405及び406が得られる。
続いて、407として示されるように、周波数領域の2N点のデータ405及び406が各周波数点毎に複素乗算されることにより、2N点の複素乗算結果データ408が得られる。
更に、409として示されるように、2N点の複素乗算結果データ408に対してiFFT演算が実行される結果、畳込みが行われた2N点の時間域データ410が得られる。
そして、2N点の時間域データ410のうちの前半のN点のデータ(太枠部分)が、ブロックサイズがN点の重畳保留法での線状畳込み結果となり、このようにして生成されるブロックサイズN点ずつのデータが図3のLch効果音出力データ211又はRch効果音出力データ212として出力される。
図5は、インパルス応答データ(coef)側もブロックサイズN点ずつ分割される場合の、ブロックサイズがN点の畳込み例を示している。この例では、各N点毎の畳込み結果が足し合わせられることで、長い時間のインパルス応答もN点ずつの小さなブロックに分割して畳込み演算を実行することができる。
図5において、501として示されるように、インパルス応答データ(coef)が、それぞれのブロックサイズがNずつの例えば分割データN1、N2、N3、N4に分割される。また、502として示されるように、効果音入力データ(sig)も、それぞれのブロックサイズがNずつの例えば分割データN1、N2、N3、N4に分割される。
その後は、図4の場合と同様にして、2N点の各FFT演算505、506に先だって、503として示されるように、インパルス応答データ(coef)中の上述のように分割されたN点の分割データ(太枠部分)にN点のゼロデータが付加されて2N点のデータとされる。また、504として示されるように、効果音入力データ(sig)が上述のように分割されて得られるブロックサイズN点分ずつシフトされながらオーバーラップされて(太枠部分→破線太枠部分)2N点のデータとされる。そして、インパルス応答データ(coef)を分割したN点のデータから生成された上記2N点のデータ503と効果音入力データ(sig)から生成された上記2N点のデータ504とに対して、それぞれ505及び506として示されるようにFFT演算が実行される結果、周波数領域の2N点のデータ507及び508が、509及び510のように順次2N点ずつ得られる。ここで、インパルス応答データ(coef)の分割データN1、N2、N3、N4(図5の501)から生成される2N点ずつの周波数データ群509(N1、N2、N3、N4)は、インパルス応答データ(coef)に変化がない限り、FFT演算により演算しメモリにプリセットしておくことができる。また、効果音入力データ(sig)から生成される2N点ずつの周波数データ群510は、インパルス応答データ(coef)に対応する周波数データ群509(N1、N2、N3、N4)と同じ分割データ数分だけ、t(N)、t(N−1)、t(N−2)、t(N−3)というようにリングバッファ形式で順次メモリに記憶されてよい。
続いて、511として示されるように、周波数データ群509(N1、N2、N3、N4)と周波数データ群510(t(N)、t(N−1)、t(N−2)、t(N−3))とが、2N点ずつ各周波数点毎に複素乗算されることにより、それぞれ2N点の複素乗算結果データN1*t(N)、N2*t(N−1)、N3*t(N−2)、N4*t(N−3)が得られ、更にこれらに対してiFFT演算が実行される結果、畳込みが行われた2N点ずつの時間域データ513が得られる。
そして、2N点ずつの時間域データ513のうちのそれぞれ前半のN点ずつのデータ(太枠部分)が、図3のLch効果音出力データ211又はRch効果音出力データ212として出力される。
図6は、図3のCONV演算処理部304の動作を説明するための簡単な計算例を示した図である。
例えば、
conv(coef=[2 3 4 5 6 7 8 9]
sig= [1 2 3 4 5 6 7 8 9 10])
をブロックサイズN=2で計算した場合、畳込み結果の9番目と10番目は、200と244になるが、これを求めるためには、
ifft(fft([0 0 2 3]) * fft([7 8 9 10]))
ifft(fft([0 0 4 5]) * fft([5 6 7 8]))
ifft(fft([0 0 6 7]) * fft([3 4 5 6]))
ifft(fft([0 0 8 9]) * fft([1 2 3 4]))
の各計算結果の前半部分を足し合わせればよい。なお、「fft()」及び「ifft()」はそれぞれ、括弧内のデータ群に対するFFT演算及びiFFT演算を示す。
上記演算例により、FFT演算を使った線状畳込みを実現できるが、FFT演算はブロック単位で計算が実行されるため、ブロックの頭で遅延が生じてしまう。図7は、FFT演算を用いた周波数域畳込み処理における処理遅延の説明図である。
例えば、ブロック区間T1では、N1ブロックのデータが入力される。次のブロック区間T2では、N2ブロックのデータの入力とN1ブロックのデータの畳込み処理(FFT演算、複素乗算、及びiFFT演算)が実行される。更に続くブロック区間T3では、N3ブロックの入力とN2ブロックのデータの畳込み処理と、N1ブロックのデータの出力処理が実行される。ブロック区間T4では、N4ブロックの入力とN3ブロックのデータの畳込み処理と、N2ブロックのデータの出力処理が実行される。ブロック区間T5では、N5ブロックの入力とN4ブロックのデータの畳込み処理と、N3ブロックのデータの出力処理が実行される。
図7に示されるタイミング関係からわかるように、FFT演算を使った線状畳込み処理では、701として示されるように、ブロックサイズNに対して2Nの処理遅延が発生する。従って、図3の残響・共鳴装置211では、CONV演算処理部304で発生する上記2Nの処理遅延をカバーするために、フィルタ次数=2NのFIRフィルタ演算処理部303が実装される。
図8は、FIRフィルタ演算処理部303の機能構成例を示すブロック図である。この図は、乗算処理部801と、累算処理部802と、遅延処理部803とからなる1次のフィルタ演算部800が、#0から#2N−1までカスケードに接続された、フィルタ次数=2Nの直接型構成のFIRフィルタを示している。但し、最終段#2N−1は、遅延処理部803は不要である。
具体的には、効果音入力データ(図3のLch効果音入力データ209又はRch効果音入力データ210)は、第0次の乗算処理部801(#0)にて第0次のFIR係数データが乗算され、その乗算結果データは、第0次の累算処理部802(#0)にて前段の累算結果データ(第0次の前段は無いため値0のデータ)に累算される。また、効果音入力データは第0次の遅延処理部803(#0)にて1サンプリング周期分遅延させられる。
次に、第0次の遅延処理部803(#0)の出力は、第1次の乗算処理部801(#1)にて第1次のFIR係数データが乗算され、その乗算結果データは、第1次の累算処理部802(#1)にて前段の第0次の累算処理部802(#0)の累算結果データに累算される。また、第0次の遅延処理部803(#0)の出力データは第1次の遅延処理部803(#1)にて1サンプリング周期分遅延させられる。
以下同様にして、第0次から第2N−1次まで、各次のFIR演算処理が実行される。一般的に、第i次(0≦i≦2N−1)のFIR演算処理遅延処理部803(#i−1)の出力(i=0の場合は効果音入力データの入力)は、第iの乗算処理部801(#i)にて第i次のFIR係数データが乗算され、その乗算結果データは、第i次の累算処理部802(#i)にて前段の第i−1次の累算処理部802(#i−1)の累算結果データ(i=0の場合は値0のデータ)に累算される。また、第i−1次の遅延処理部803(#0)の出力データ(i=0の場合は効果音入力データ)は第i次の遅延処理部803(#i)にて1サンプリング周期分遅延させられる。
最終段第2N−1次の累算処理部802(#2N−1)の累算結果データは、畳込み結果データとして出力される。なお、最終段第2N−1次の遅延処理部803(#2N−1)は不要である。
以上の図8に示される機能構成を有するFIRフィルタ演算処理部303において、#0から#2N−2までの遅延処理部803は、リングバッファ式のメモリに効果音入力データを順次記憶させてゆく処理として実現できる。
また、効果音入力データの信号入力は、図2の音源(TG)104内のミキシング部202内のミキサ205又は206から、サンプリング周期単位で行われる。
各次の乗算処理部801及び累算処理部802によるFIR演算処理は、サンプリング周期内で、その周期を細分化した周期を有するクロックに同期して実行され、全次数でのFIR演算処理及び最終段第2N−1次の累算処理部802(#2N−1)からの畳込み結果データの出力は、そのサンプリング周期内で完了する。これにより、図3のFIRフィルタ演算処理部303での畳込み処理では、遅延が生じない。
ここで、FIRフィルタ演算処理部303のフィルタ次数がCONV演算処理部304のFFTサイズ(ブロックサイズNの2倍)に等しければ、CONV演算処理部304での処理遅延(図7参照)の影響は無視できる。
即ち、効果音入力データの最初の2NサンプルがFIRフィルタ演算処理部303に入力されると同時に、効果音入力データが、Nサンプルずつシフトされながら2NサンプルずつCONV演算処理部304に入力されるようにする。図9は、FIRフィルタ演算処理部303とCONV演算処理部304の処理関係を示す説明図である。図9に示されるように、まず、FIRフィルタ演算処理部303で、効果音入力データの最初の2Nサンプルに対して、サンプリング周期毎に残響音又は共鳴音のインパルス応答データの最初の2Nサンプルを畳込み演算して得られる、2Nサンプル分の畳込み結果データが、サンプリング周期毎に遅延なく出力される。また、CONV演算処理部304で、効果音入力データをNサンプルずつオーバーラップさせながら入力した2Nサンプル分ずつに対して、残響音又は共鳴音のインパルス応答データの2N+1サンプル以降のNサンプル+値0のNサンプル=2Nサンプル分ずつを周波数域で畳込み演算して得られる、Nサンプル分ずつの畳込み結果データが、2Nサンプル分ずつ遅延して順次出力される。従って、図3の加算部305から、FIRフィルタ演算処理部303から最初の2Nサンプル分の畳込み結果データを出力させるのに続き、CONV演算処理部304から順次出力されるNサンプル毎の畳込み結果データをサンプリング周期毎に順次出力させることにより、効果音入力データの全体に対してインパルス応答データを畳込み演算した効果音出力データ(Lch効果音出力データ211又はRch効果音出力データ212)を、図3の残響・共鳴装置211から遅延なく出力することが可能となる。
FIRフィルタ演算処理部303は、サンプリング周期毎に処理を実行するが、電子楽器では残響(リバーブ)のタイプを複数有することが多く、このタイプにより畳込みを行う際のインパルス応答は様々な時間のものになり得る。また、共鳴や胴鳴りについても楽器の大きさなどにより多様となり得る。このため処理遅延が無い構成においてブロックサイズを固定化(例えばインパルス応答データが一番長い場合を基にしたブロックサイズに固定化)するのは好ましくない。
また、本実施形態では、残響・共鳴装置211は、Lch効果音入力データ209及びRch効果音入力データ210に対してそれぞれ用意されるため、FIRフィルタ演算処理部303は、最低でも2つを用意する必要がある。
そこで、本実施形態のFIRフィルタ演算処理部303は、以下に説明する構成によって、フィルタ次数を柔軟に変更可能なFIRフィルタ演算処理を実行することができ、また、複数のFIRフィルタ演算処理を、それらの組合せを柔軟に変更しながら同時に実行することを可能とするものである。図10は、サンプリング周期中に複数系統のFIRフィルタ演算処理を実行可能な本実施形態のFIRフィルタ演算処理部303の説明図である。図10において、FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)は、それぞれがFIRフィルタ演算処理部を示している。本実施形態では、図3に示されるLch及びRchそれぞれのFIRフィルタ演算処理部303を始めとして、特には図示しないその他のFIRフィルタ演算処理部は、1つのフィルタ演算処理装置が時分割処理により実行する個別のFIRフィルタ演算処理機能に対応している。そして、本実施形態では、各サンプリング周期内で、FIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)毎に、それぞれのフィルタ次数に対応した時分割長の時分割処理により、図8で機能構成例で説明したフィルタ次数分のFIRフィルタ演算処理が実行される。このとき、制御部として動作する例えば図1のCPU101は、サンプリング周期内で、FIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)のそれぞれに、サンプリング周期を細分化した周期を有するクロックでカウントされそれぞれのフィルタ次数分のFIRフィルタ演算処理を実行可能な長さ(クロック数)の連続区間を個別に割り当て、その連続区間で、図1の効果付与部105の例えばDSP(Digital Signal Processor:デジタル信号プロセッサ)に、それぞれのフィルタ次数分のFIRフィルタ演算処理を実行させる。
図11は、図3のLch及びRchの各FIRフィルタ演算処理部303を上記時分割処理により実現するフィルタ演算処理装置のハードウェア構成例を示す図である。
FIR係数メモリ1101(FIR係数記憶部)は、FIRフィルタ演算処理のフィルタ次数個分のFIR係数データ組を、フィルタ次数が可変の図10で説明した1種類以上のFIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)毎に記憶する。
図11のFIR係数メモリ1101では、例えば3種類のFIRフィルタ演算処理部FIR(1)、FIR(2)、FIR(3)毎の3組のFIR係数データ組b0、b1、及びb2が記憶される。記憶されるFIR係数データ組b0、b1、及びb2のそれぞれの係数の個数は、それぞれFIRフィルタ演算処理部FIR(1)、FIR(2)、FIR(3)の夫々のフィルタ次数に対応する。
より具体的には、例えばFIRフィルタ演算処理部FIR(1)とFIR(2)が、図3のLch効果音入力データ209を処理する残響・共鳴装置211(Lch)内のFIRフィルタ演算処理部303とRch効果音入力データ210を処理する残響・共鳴装置211(Rch)内の各FIRフィルタ演算処理部303であるとする。この場合、FIR係数メモリ1101に記憶されるFIR係数データ組b1は、Lch用の残響・共鳴音のインパルス応答データの最初の2N個のデータ組である。同様に、FIR係数メモリ1101に記憶されるFIR係数データ組b2は、Rch用の残響・共鳴音のインパルス応答データの最初の2N個のデータ組である。
データメモリ1102(入力データ記憶部)においては、FIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)毎にそれぞれ、(各フィルタ次数−1)アドレス分のリングバッファ形式の記憶領域が確保される。各記憶領域にはそれぞれ、現在の1サンプル前から(フィルタ次数−1)サンプル前までの各FIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)に対する入力データ1111の組が、遅延データ組として記憶される。
図11のデータメモリ1102では、例えば3種類のFIRフィルタ演算処理部FIR(1)、FIR(2)、FIR(3)毎にそれぞれ、(各フィルタ次数−1)アドレス分の3つのリングバッファ形式の記憶領域が確保され、各記憶領域にはそれぞれ、遅延データ組b0wm、b1wm、及びb2wmが記憶される。各記憶領域において、サンプリング周期毎に、書込みアドレスが記憶領域の先頭アドレスアドレスから順次インクリメントされながら、各サンプリング周期毎の入力データ1111が上記記憶領域の記憶アドレスに順次書き込まれてゆく。書込みアドレスがインクリメントにより上記記憶領域の末尾アドレスを超えると、書込みアドレスが上記記憶領域の先頭アドレスに戻されて、入力データ1111の書込みが続行される。このようにして、各記憶領域には、リング状に、現在の1サンプル前から(フィルタ次数−1)サンプル前までの遅延データが書き込まれる。読出し時には、後述するように、サンプリング周期を細分化した周期を有するサンプリングクロックよりも速いクロックに同期して、上記と同様にリング状に読出しアドレスが制御されることにより、各記憶領域から、現在の1サンプル前から(フィルタ次数−1)サンプル前までの遅延データが読み出される。
今例えば、FIR(1)が、図3の残響・共鳴装置211(Lch)内のLch用のFIRフィルタ演算処理部303であるとする。この場合、FIR(1)に対応する入力データ1111は、Lch効果音入力データ209である。また、Lch効果音入力データ209の現在のサンプリング周期のサンプル値をb1inとする。この場合、データメモリ1102のFIR(1)に対応する記憶領域には、Lch効果音入力データ209の現在から1サンプリング周期前のサンプル値b1wm(1)から(2N−1)サンプリング周期前のサンプル値b1wm(2N−1)までが、遅延データ組b1wmとして記憶される。
同様に、FIR(2)が図3の残響・共鳴装置211(Rch)内のRch用のFIRフィルタ演算処理部303であるとする。この場合、FIR(2)に対応する入力データ1111は、Rch効果音入力データ210ある。また、Rch効果音入力データ210の現在のサンプリング周期のサンプル値をb2inとする。この場合、データメモリ1102のFIR(2)に対応する記憶領域には、Rch効果音入力データ210の現在から1サンプリング周期前のサンプル値b2wm(1)から(2N−1)サンプリング周期前のサンプル値b2wm(2N−1)までが、遅延データ組b2wmとして記憶される。
次に、図11において、第1のレジスタ(m0r)1103、第1のセレクタ(SEL1)1110、第2のレジスタ(m1r)1104、乗算器1105、第3のレジスタ(mr)1106、加算器1107、第4のレジスタ(ar)1108、及び第2のセレクタ(SEL2)1109は、1次分のFIR乗算/累算処理を実行するフィルタ演算部1100を構成する。このフィルタ演算部1100は、図8のフィルタ演算部800の機能を実現する。
フィルタ演算部1100において、第1のレジスタ(m0r)1103は、サンプリング周期を細分化した周期のクロックに同期して、FIR係数メモリ1101が出力するFIR係数データを保持する。
フィルタ演算部1100において、第1のセレクタ(SEL1)1110は、現在のサンプリング周期の入力データ1111又はデータメモリ1102が出力する遅延データの何れかを選択する。
フィルタ演算部1100において、第2のレジスタ(m1r)1104は、クロックに同期して、セレクタ(SEL1)1110が出力するデータを保持する。
フィルタ演算部1100において、乗算器1105は、第1のレジスタ(m0r)1103が出力するFIR係数データと第2のレジスタ(m1r)1104が出力するデータとを乗算する。
フィルタ演算部1100において、第3のレジスタ(mr)1106は、クロックに同期して、乗算器1105が出力する乗算結果データを保持する。
フィルタ演算部1100において、加算器1107は、第3のレジスタ(mr)1106が出力する乗算結果データと、後述するセレクタ(SEL2)1109が出力するデータとを加算する。
フィルタ演算部1100において、第4のレジスタ(ar)1108は、クロックに同期して、加算器1107が出力する加算結果データを保持する。
フィルタ演算部1100において、セレクタ(SEL2)1109は、値がゼロのデータ又は第4のレジスタ(ar)1108が出力する加算結果データの何れかを選択して累算データとして、加算器1107にフィードバックする。
図11の構成において、図10で説明した各FIRフィルタ演算処理部FIR(i)(1≦i≦X)の処理では、それに対応して割り当てられたサンプリング周期内の前述した連続区間において、上述のフィルタ演算部1100が、クロックに同期して、上記FIRフィルタ演算処理部FIR(i)に対応するFIR係数メモリ1101中のFIR係数データを第1のレジスタ(m0r)1103に順次入力させると共に、それぞれFIRフィルタ演算処理部FIR(i)に対応する現在の入力データ1111又はデータメモリ1102から出力される遅延データを第1のセレクタ(SEL1)1110から第2のレジスタ(m1r)1104に順次入力させながら、FIR乗算/累算処理をフィルタ次数に対応する回数だけ繰り返し実行し、その実行が完了した時点で第4のレジスタ(ar)1108の内容を、畳込み結果データとして出力する。
図10で説明したFIRフィルタ演算処理部FIR(i)(1≦i≦X)毎に、それに対応して割り当てられたサンプリング周期内の独立した連続区間において時分割処理が実行されることにより、サンプリング周期毎に、上記1つ以上のFIRフィルタ演算処理部FIR(i)の演算を時分割で実行することが可能となり、それぞれの畳込み結果データを出力することが可能となる。また、各FIRフィルタ演算処理部FIR(i)においては、それぞれのフィルタ次数に対応したフィルタ係数データ組をFIR係数メモリ1101に記憶させることにより、用途に応じたフィルタ次数に柔軟に対応することが可能である。
図12は、図11のハードウェア構成例を有するフィルタ演算処理装置によって実行される1つのFIRフィルタ演算処理部FIR(i)の動作例を示すタイミングチャートである。また、図13は、図12のタイミングチャートと図8で説明したFIRフィルタ演算処理部の機能構成例との関係を説明する図である。
今、説明の簡単のために、ブロックサイズN=2の場合を例にして、1サンプリング周期内におけるFIRフィルタ演算処理部FIR(1)の畳込み結果データの出力処理と、それに続くFIR(2)の一部処理について説明する。実際のFFT演算処理装置では、例えば、N=128やN=256であるが、動作原理は同じである。
この場合、FIR(1)が、図3の残響・共鳴装置211(Lch)内のLch用のFIRフィルタ演算処理部303であり、FIR(2)が、図3の残響・共鳴装置211(Rch)内のRch用のFIRフィルタ演算処理部303である。
そして、図11のFIR係数メモリ1101には、FIR係数データ組b1として、Lch用の残響・共鳴音のインパルス応答データの最初の2N=4個のデータ組[b1(0),b1(1),b1(2),b1(3)]が記憶される。これらのデータは、例えば図13に示されるように、#0から#3のフィルタ演算部800に含まれる#0から#3の乗算器801の各乗算係数として与えられる。同様に、FIR係数メモリ1101には、FIR係数データ組b1として、Rch用の残響・共鳴音のインパルス応答データの最初の2N=4個のデータ組[b2(0),b2(1),b2(2),b2(3)]が記憶される。
また、FIR(1)に対応する入力データ1111は、図2又は図3のLch効果音入力データ209である。Lch効果音入力データ209の現在のサンプリング周期のサンプル値をb1inとする。更に、図11のデータメモリ1102のFIR(1)に対応する記憶領域には、Lch効果音入力データ209の現在から1サンプリング周期前のサンプル値b1wm(1)から(2N−1)=3サンプリング周期前のサンプル値b1wm(3)までが、遅延データ組b1wmとして記憶される。図13においては、b1inはLch効果音入力データ209の入力、b1wm1はb1inを1サンプリング周期分遅延させた遅延処理部803(#0)の出力、b1wm2はb1wm1を更に1サンプリング周期分遅延させた遅延処理部803(#1)の出力、b1wm3はb1wm2を更に1サンプリング周期分遅延させた遅延処理部803(#2)の出力に、それぞれ対応する。
同様に、FIR(2)に対応する入力データ1111は、図2又は図3のRch効果音入力データ210である。Rch効果音入力データ210の現在のサンプリング周期のサンプル値をb2inとする。更に、データメモリ1102のFIR(2)に対応する記憶領域には、Rch効果音入力データ210の現在から1サンプリング周期前のサンプル値b2wm(1)から3サンプリング周期前のサンプル値b2wm(3)までが、遅延データ組b2wmとして記憶される。
図12において、L0(m)、L1(0)、L1(1)、L1(2)、L1(3)、L2(0)、L2(1)、L2(2)、・・・は、1サンプリング周期を細分化した周期のクロックのタイミングを示している。このクロックの周期は、図10の複数系統のFIRフィルタ演算処理部FIR(1)、FIR(2)、・・・、FIR(X−1)、FIR(X)の各最大フィルタ次数の総和をAとしたとき、「サンプリング周期=クロックの周期×A」となるのが理想である。しかし、実際にはこのクロックの周期は、図1の効果付加装置100の性能や、必要とするFIRフィルタ演算処理部の種類やフィルタ次数、及びFIR係数メモリ1101とデータメモリ1102の容量等を、図1の電子楽器100のコストを考慮しながら換算して決定される。いずれにしても、本実施形態では、各FIRフィルタ演算処理部の種類やフィルタ次数は柔軟に設定することが可能である。
図12において、クロックタイミングL1(0)〜L1(3)は、1サンプリング周期内でFIRフィルタ演算処理部FIR(1)(=図3のLch用のFIRフィルタ演算処理部303)を時分割処理で実行させるために割り当てられた連続区間であり、FIR(1)のフィルタ次数=2N=4に対応するクロック数4の区間長を有する。同様に、クロックタイミングL2(0)〜L2(3)は、1サンプリング周期内でFIRフィルタ演算処理部FIR(2)(=図3のRch用のFIRフィルタ演算処理部303)を時分割処理で実行させるために割り当てられた連続区間であり、FIR(2)のフィルタ次数=2N=4に対応するクロック数4の区間長を有する。なお、L0(m)は、FIR(1)の直前に実行されるFIRフィルタ演算処理部FIR(0)のフィルタ次数=m(mは自然数)に対応する連続区間の最後のクロックタイミングである。
まず、図12のクロックタイミングL0(m)で、図2のミキサ205から出力するLch効果音入力データ209の値が、現在のサンプリング周期のサンプル値b1inとなり(図12(a))、データメモリ1102への書込み信号wrtがハイレベル(high)となる。これにより、データメモリ1102内のF(1)に対応する記憶領域内の書込みアドレスポインタが示すアドレスに、サンプル値b1inが書き込まれる。これと共に、FIR係数メモリ1101に記憶されているF(1)に対応するFIR係数データ組b1内の読出しアドレスポインタが示すアドレスから、1番目のFIR係数データb1(0)が読み出される(図12(f))。
次に、図12のクロックタイミングL1(0)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110が入力側inを選択することにより(図12(c))、クロックタイミングL0(m)で入力していた現在のサンプリング周期のサンプルb1inが、クロックタイミングL1(0)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb1inとなる(図12(a)→(e))。また、クロックタイミングL0(m)でFIR係数メモリ1101から出力されていた1番目のFIR係数データb1(0)が、クロックタイミングL1(0)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb1(0)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL1(0)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b1内の2番目のFIR係数データb1(1)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL1(0)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b1wm内の1番目(=現在の1サンプリング周期前)の遅延データb1wm1が出力される(図12(d))。そして、クロックタイミングL1(0)において、第2のレジスタ(m1r)1104の出力b1inと、第1のレジスタ(m0r)1103の出力b1(0)とが乗算器1105に入力することにより、乗算結果データが「b1in*b1(0)」(「*」は乗算を示す)となる(図12(e)、(g)→(h))。クロックタイミングL1(0)での上述の演算処理が、図13の乗算処理部801(#0)の動作に対応する。
次に、図12のクロックタイミングL1(1)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110がメモリ側wmを選択することにより(図12(c))、クロックタイミングL1(0)でデータメモリ1102から出力されていた現在の1サンプリング周期前の遅延データb1wm1が、クロックタイミングL1(1)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb1wm1となる(図12(d)→(e))。また、クロックタイミングL1(0)でFIR係数メモリ1101から出力されていた2番目のFIR係数データb1(1)が、クロックタイミングL1(1)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb1(1)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL1(1)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b1内の3番目のFIR係数データb1(2)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL1(1)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b1wm内の2番目(=現在の2サンプリング周期前)の遅延データb1wm2が出力される(図12(d))。更に、クロックタイミングL1(1)の立ち上がりで、クロックタイミングL1(0)で乗算器1105から出力されていた乗算結果データ「b1in*b1(0)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL1(1)において、第2のレジスタ(m1r)1104の出力b1wm1と、第1のレジスタ(m0r)1103の出力b1(1)とが乗算器1105に入力することにより、乗算結果データが「b1wm1*b1(1)」となる(図12(e)、(g)→(h))。クロックタイミングL1(1)でのここまでの演算処理が、図13の乗算処理部801(#1)の動作に対応する。これに加えて、クロックタイミングL1(1)で、第2のセレクタ(SEL2)1109が値0のデータを選択し、その値が出力a1に現れる(図12(k))。そして、クロックタイミングL1(1)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b1in*b1(0)」となる(図12(k)、(i)→(j))。クロックタイミングL1(1)のこれらの演算処理が、図13の累算処理部802(#0)の動作に対応する。
次に、図12のクロックタイミングL1(2)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110がメモリ側wmを選択することにより(図12(c))、クロックタイミングL1(1)でデータメモリ1102から出力されていた現在の2サンプリング周期前の遅延データb1wm2が、クロックタイミングL1(2)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb1wm2となる(図12(d)→(e))。また、クロックタイミングL1(1)でFIR係数メモリ1101から出力されていた3番目のFIR係数データb1(2)が、クロックタイミングL1(2)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb1(2)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL1(2)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b1内の4番目のFIR係数データb1(3)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL1(2)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b1wm内の3番目(=現在の3サンプリング周期前)の遅延データb1wm3が出力される(図12(d))。更に、クロックタイミングL1(2)の立ち上がりで、クロックタイミングL1(1)で乗算器1105から出力されていた乗算結果データ「b1wm1*b1(1)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL1(2)において、第2のレジスタ(m1r)1104の出力b1wm2と、第1のレジスタ(m0r)1103の出力b1(2)とが乗算器1105に入力することにより、乗算結果データが「b1wm2*b1(2)」となる(図12(e)、(g)→(h))。クロックタイミングL1(2)でのここまでの演算処理が、図13の乗算処理部801(#2)の動作に対応する。これに加えて、クロックタイミングL1(2)の立ち上がりにおいて、クロックタイミングL1(1)で加算器1107が出力していた加算結果データ「0+b1in*b1(0)」が、第4のレジスタ(ar)1108にラッチされ、その値が出力arに現れる(図12(j)→(l))。そして、クロックタイミングL1(2)で、第2のセレクタ(SEL2)1109が第4のレジスタ(ar)1108の出力arを選択し、その値が出力a1に現れる(図12(k))。この結果、クロックタイミングL1(2)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b1in*b1(0)+b1wm1*b1(1)」となる(図12(l)、(i)→(j))。クロックタイミングL1(2)のこれらの演算処理が、図13の累算処理部802(#1)の動作に対応する。
次に、図12のクロックタイミングL1(3)で、図11の第1のセレクタ(SEL1)1110がメモリ側wmを選択することにより(図12(c))、クロックタイミングL1(2)でデータメモリ1102から出力されていた現在の3サンプリング周期前の遅延データb1wm3が、クロックタイミングL1(3)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb1wm3となる(図12(d)→(e))。また、クロックタイミングL1(2)でFIR係数メモリ1101から出力されていた4番目のFIR係数データb1(3)が、クロックタイミングL1(3)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb1(3)になる(図12(f)→(g))。更に、クロックタイミングL1(3)の立ち上がりで、クロックタイミングL1(2)で乗算器1105から出力されていた乗算結果データ「b1wm2*b1(2)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL1(3)において、第2のレジスタ(m1r)1104の出力b1wm3と、第1のレジスタ(m0r)1103の出力b1(3)とが乗算器1105に入力することにより、乗算結果データが「b1wm3*b1(3)」となる(図12(e)、(g)→(h))。クロックタイミングL1(3)でのここまでの演算処理が、図13の乗算処理部801(#3)の動作に対応する。これに加えて、クロックタイミングL1(3)の立ち上がりにおいて、クロックタイミングL1(2)で加算器1107が出力していた加算結果データ「0+b1in*b1(0)+b1wm1*b1(1)」が、第4のレジスタ(ar)1108にラッチされ、その値が出力arに現れる(図12(j)→(l))。そして、クロックタイミングL1(3)で、第2のセレクタ(SEL2)1109が第4のレジスタ(ar)1108の出力arを選択し、その値が出力a1に現れる(図12(k))。この結果、クロックタイミングL1(3)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b1in*b1(0)+b1wm1*b1(1)+b1wm2*b1(2)」となる(図12(l)、(i)→(j))。クロックタイミングL1(3)のこれらの演算処理が、図13の累算処理部802(#2)の動作に対応する。一方、FIR係数メモリ1101において、クロックタイミングL1(3)の立ち上がりで読出しアドレスポインタがインクリメントされた結果、FIR係数メモリ1101においては、次のFIRフィルタ演算処理部FIR(2)のためのFIR係数データ組b2内の1番目のFIR係数データb2(0)が出力される(図12(f))。また、クロックタイミングL1(3)において、図2のミキサ206から出力するRch効果音入力データ210の値が、現在のサンプリング周期のサンプル値b2inとなり(図12(a))、データメモリ1102への書込み信号wrtがハイレベル(high)となる。これにより、データメモリ1102内のF(2)に対応する記憶領域内の書込みアドレスポインタが示すアドレスに、サンプル値b2inが書き込まれる。
次に、図12のクロックタイミングL2(0)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110が入力側inを選択することにより(図12(c))、クロックタイミングL1(3)で入力していた現在のサンプリング周期のサンプルb2inが、クロックタイミングL2(0)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb2inとなる(図12(a)→(e))。また、クロックタイミングL1(3)でFIR係数メモリ1101から出力されていた1番目のFIR係数データb2(0)が、クロックタイミングL2(0)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb2(0)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL2(0)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b2内の2番目のFIR係数データb2(1)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL2(0)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b2wm内の1番目(=現在の1サンプリング周期前)の遅延データb2wm1が出力される(図12(d))。更に、クロックタイミングL2(0)の立ち上がりで、クロックタイミングL1(3)で乗算器1105から出力されていた乗算結果データ「b1wm3*b1(3)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL2(0)において、第2のレジスタ(m1r)1104の出力b2inと、第1のレジスタ(m0r)1103の出力b2(0)とが乗算器1105に入力することにより、乗算結果データが「b2in*b2(0)」となる(図12(e)、(g)→(h))。これにより、FIR(1)の演算処理とオーバーラップしてFIR(2)での演算処理が開始される。これに加えて、クロックタイミングL2(0)の立ち上がりにおいて、クロックタイミングL1(3)で加算器1107が出力していた加算結果データ「0+b1in*b1(0)+b1wm1*b1(1)+b1wm2*b1(2)」が、第4のレジスタ(ar)1108にラッチされ、その値が出力arに現れる(図12(j)→(l))。そして、クロックタイミングL2(0)で、第2のセレクタ(SEL2)1109が第4のレジスタ(ar)1108の出力arを選択し、その値が出力a1に現れる(図12(k))。この結果、クロックタイミングL2(0)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b1in*b1(0)+b1wm1*b1(1)+b1wm2*b1(2)+b1wm3*b1(3)」となる(図12(l)、(i)→(j))。クロックタイミングL2(0)のこれらの演算処理が、図13の累算処理部802(#3)の動作に対応する。
続いて、図12のクロックタイミングL2(1)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110がメモリ側wmを選択することにより(図12(c))、クロックタイミングL2(0)でデータメモリ1102から出力されていた現在の1サンプリング周期前の遅延データb2wm1が、クロックタイミングL2(1)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb2wm1となる(図12(d)→(e))。また、クロックタイミングL2(0)でFIR係数メモリ1101から出力されていた2番目のFIR係数データb2(1)が、クロックタイミングL2(1)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb2(1)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL2(1)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b2内の3番目のFIR係数データb2(2)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL2(1)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b2wm内の2番目(=現在の2サンプリング周期前)の遅延データb2wm2が出力される(図12(d))。更に、クロックタイミングL2(1)の立ち上がりで、クロックタイミングL2(0)で乗算器1105から出力されていた乗算結果データ「b2in*b2(0)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL2(1)において、第2のレジスタ(m1r)1104の出力b2wm1と、第1のレジスタ(m0r)1103の出力b2(1)とが乗算器1105に入力することにより、乗算結果データが「b2wm1*b2(1)」となる(図12(e)、(g)→(h))。これに加えて、クロックタイミングL2(1)で、第2のセレクタ(SEL2)1109が値0のデータを選択し、その値が出力a1に現れる(図12(k))。そして、クロックタイミングL2(1)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b2in*b2(0)」となる(図12(k)、(i)→(j))。更に、クロックタイミングL2(1)の立ち上がりにおいて、クロックタイミングL2(0)で加算器1107が出力していた加算結果データ「0+b1in*b1(0)+b1wm1*b1(1)+b1wm2*b1(2)+b1wm3*b1(3)」が、第4のレジスタ(ar)1108にラッチされ、その値が出力arに現れる(図12(j)→(l))。FIR(1)に対応する連続区間の最後のクロックタイミングL1(3)から2クロック後のクロックタイミングL2(1)のタイミングで、第4のレジスタ(ar)1108に現れた出力データ「0+b1in*b1(0)+b1wm1*b1(1)+b1wm2*b1(2)+b1wm3*b1(3)」が、FIR(1)の畳込み結果データ=図3のLch効果音出力データ211として図3の加算部305を介して出力される。この出力は、図13の累算処理部802(#3)から出力される畳込み結果データに対応する。
次に、図12のクロックタイミングL2(2)で、データメモリ1102への書込み信号wrtがローレベル(low)になる(図12(b))。これと共に、図11の第1のセレクタ(SEL1)1110がメモリ側wmを選択することにより(図12(c))、クロックタイミングL2(1)でデータメモリ1102から出力されていた現在の2サンプリング周期前の遅延データb2wm2が、クロックタイミングL2(2)の立ち上がりで第2のレジスタ(m1r)1104にラッチされ、その出力がb2wm2となる(図12(d)→(e))。また、クロックタイミングL2(1)でFIR係数メモリ1101から出力されていた3番目のFIR係数データb2(2)が、クロックタイミングL2(2)の立ち上がりで第1のレジスタ(m0r)1103にラッチされ、その出力がb2(2)になる(図12(f)→(g))。なお、FIR係数メモリ1101において、クロックタイミングL2(2)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、FIR係数メモリ1101からは、FIR係数データ組b2内の4番目のFIR係数データb2(3)が出力される(図12(f))。また、データメモリ1102において、クロックタイミングL2(2)の立ち上がりで読出しアドレスポインタがインクリメントされることにより、データメモリ1102からは、遅延データ組b2wm内の3番目(=現在の3サンプリング周期前)の遅延データb2wm3が出力される(図12(d))。更に、クロックタイミングL2(2)の立ち上がりで、クロックタイミングL2(1)で乗算器1105から出力されていた乗算結果データ「b2wm1*b2(1)」が第3のレジスタ(mr)1106にラッチされ、その値が出力a0に現れる(図12(h)→(i))。そして、クロックタイミングL2(2)において、第2のレジスタ(m1r)1104の出力b2wm2と、第1のレジスタ(m0r)1103の出力b2(2)とが乗算器1105に入力することにより、乗算結果データが「b2wm2*b2(2)」となる(図12(e)、(g)→(h))。これに加えて、クロックタイミングL2(2)の立ち上がりにおいて、クロックタイミングL2(1)で加算器1107が出力していた加算結果データ「0+b2in*b2(0)」が、第4のレジスタ(ar)1108にラッチされ、その値が出力arに現れる(図12(j)→(l))。そして、クロックタイミングL2(2)で、第2のセレクタ(SEL2)1109が第4のレジスタ(ar)1108の出力arを選択し、その値が出力a1に現れる(図12(k))。この結果、クロックタイミングL2(2)において、上記第2のセレクタ(SEL2)1109の出力a1と第3のレジスタ(mr)1106の出力a0とが加算器1107に入力することにより、加算結果データが「0+b2in*b2(0)+b2wm1*b2(1)」となる(図12(l)、(i)→(j))。
以上のようにして、データの矛盾を生じることなく、FIRフィルタ演算処理部FIR(1)での演算処理及び出力に続いて、FIRフィルタ演算処理部FIR(2)での演算処理及び出力を、サンプリング周期を細分化した周期のクロックに同期した時分割処理により実行することが可能となり、それぞれ個別にフィルタ次数が設定された複数のFIRフィルタ演算処理をサンプリング周期毎に遅延無く実行することが可能となる。これにより、例えばインパルス応答データが短い場合などにおいて、ブロックサイズを小さくし、FIR資源を別のフィルタリング処理に用いることが可能となる。また、インパルス応答長が長い場合に、図3のCONV演算処理部304で用いられる畳込み用の係数データサイズも大きくなるため、例えば図2の効果付与部105であるDSP内に実装される図3のRAM306を共通に用いる場合、前述したCONV演算処理部304でのブロックサイズNが固定ならば、メモリ帯域に応じたブロックサイズ調整を行うことができないが、本実施形態の構成により、ブロックサイズが調整可能となるので、効果付与部105内での処理を最適化することが可能となる。
図3のFIRフィルタ演算処理部303のためにはフィルタ次数=2Nの実係数データを、また図3のCONV演算処理部304のためには上記2N個以降の実係数データをブロック毎にFFT演算した結果を、それぞれ図3のRAM306に記憶しておけばよいが、ブロックサイズNが可変となる場合、この全てを記憶しておくとメモリ消費が増える。そこで、まずインパルス応答データが係数データとして図3のRAM306メモリに記憶され、先のリバーブ時間や機器のシステム条件に応じてブロックサイズNが決まれば、RAM306に記憶されているインパルス応答データの始めの2N個がFIRフィルタ演算処理部303に供給され、上記2N個以降のデータをFFT演算で変換したものがRAM306に展開されてCONV演算処理部304に供給されればよい。FIRフィルタ演算処理部303が入力データのNサンプル分を処理している間に、上記RAM306への展開が完了すれば、CONV演算処理部304での処理に影響は生じない。
また、予め最適となる設定を想定して各ブロックサイズが決定され、このブロックサイズの情報とCONV演算処理部304用のFFT変換データがRAM306に配置され、畳込み処理の実行時にブロックサイズNが決まった場合にこの決定値がRAM306に記憶されたブロックサイズ情報と比較されることにより、ブロックサイズが異なる場合のみ係数のFFT変換処理が行われるようにしてもよい。
図14は、上述したようにブロックサイズを動的に変更可能な図2の残響・共鳴装置211を実現するために図1のCPU101が実行する全体動作の制御処理例を示すメインフローチャートである。この制御処理は、CPU101がROM102からRAM103にロードさせた制御処理プログラムを実行する動作である。
図1の電子楽器100において、操作子108の電源スイッチがオンされた後、CPU101は、図14のメインフローチャートで示される制御処理の実行を開始する。CPU101はまず、図1のRAM103の記憶内容、音源(TG)104の状態、効果付加装置100の状態等の初期化を行う(ステップS1401)。その後、CPU101は、電源スイッチがオフされるまで、ステップS1402からS1407の一連の処理を繰り返し実行される。
上記繰返し処理において、CPU101はまず、スイッチ処理を実行する(ステップS1402)。ここでは、CPU101は、図1の操作子108の操作状態を検出する。
次に、CPU101は、押鍵検出処理を実行する(ステップS1403)。ここでは、CPU101は、図1の鍵盤106の押鍵状態を検出する。
次に、CPU101は、ペダル検出処理を実行する(ステップS1404)。ここでは、CPU101は、図1のペダル107の操作状態を検出する。
次に、CPU101は、残響・共鳴更新処理を実行する(ステップS1405)。ここでは、CPU101は、ステップS1402での残響・共鳴効果付与のための操作子108の操作状態の検出結果と、ステップS1404でのペダル107の操作状態の検出結果とに基づいて、効果付与部105に、音源(TG)104が生成する図2のLch効果音入力データ209及びRch効果音入力データ210に対して、図3の残響・共鳴装置211(Lch)及び残響・共鳴装置211(Rch)による残響・共鳴効果の付与を実行させる。
次に、CPU101は、その他の処理を実行する(ステップS1406)。ここでは、CPU101は、例えば楽音エンベロープの制御処理等を実行する。
そして、CPU101は、発音処理を実行する(ステップS1407)。ここでは、CPU101は、ステップS1403での押鍵検出処理での鍵盤106の押鍵(又は離鍵)の状態に基づいて、音源(TG)104に対して発音指示を行う。
図15は、図14のステップS1405の残響・共鳴更新処理の詳細処理例を示すフローチャートである。
まず、CPU101は、ステップS1402での残響・共鳴効果付与のための操作子108の操作状態の検出結果に基づいて、図1のROM102を参照することにより、効果のタイプ情報を取得する(ステップS1501)。
次に、CPU101は、操作子108によって効果のタイプが指定されたか否かを判定する(ステップS1502)。
ステップS1502の判定がYESならば、CPU101は、図3の残響・共鳴装置211(Lch、Rch)における前述したブロックサイズBL(=N)の更新処理を実行する(ステップS1503)。ステップS1502の判定がNOならば、CPU101は、ステップS1503の処理はスキップする。その後、CPU101は、図15のフローチャートで示される残響・共鳴更新処理を終了して、図14のメインフローチャートの繰返し処理に戻る。
図16は、図15のステップS1503のブロック更新処理の詳細処理例(その1)を示すフローチャートである。
CPU101はまず、図15のステップS1501で取得した効果のタイプを畳込テーブル番号として、ROM102に記憶されている畳込テーブルを参照し、インパルス応答データのインパルス応答(IR:Impulse Response)長を取得する(ステップS1601)。
次に、CPU101は、インパルス応答長(IR長)が、或る短い閾値よりも短いか否かを判定する(ステップS1602)。
ステップS1602の判定がYESならば、CPU101は、ブロックサイズBLを所定の短い値に設定する(ステップS1603)。
ステップS1602の判定がNOならば、CPU101は、インパルス応答長が、或る中程度の閾値よりも短いか否かを判定する(ステップS1604)。
ステップS1604の判定がYESならば、CPU101は、ブロックサイズBLを所定の中程度の値に設定する(ステップS1605)。
ステップS1604の判定がNOならば、CPU101は、ブロックサイズBLを所定の長い値に設定する(ステップS1605)。
ステップS1603,S1605、又はS1606の処理の後、CPU101は、ROM102(又はROM102からロードされ効果付加装置100のDSP内の図3のRAM306)に記憶されているインパルス応答データの始めの2*BL個をFIRフィルタ演算処理部303を構成する図11のFIR係数メモリ1101に記憶させて更新する(ステップS1607)。
続いて、CPU101は、上記インパルス応答データの2*BL個以降のデータをブロックBL毎にFFT演算で変換し、図3のRAM306に展開させてCONV演算処理部304に供給する(ステップS1608)。その後、CPU101は、図16のフローチャートで示されるブロック更新処理を終了し、図15のフローチャートの処理に戻る。
図17は、図15のステップS1503のブロック更新処理の詳細処理例(その2)を示すフローチャートである。
CPU101はまず、システム状態(メモリの使用状態等)から、例えばROM102内のテーブルを参照する等により、図3のCONV演算処理部304に設定可能なブロックサイズB1を取得する(ステップS1701)。
次に、CPU101は、図15のステップS1501で取得した効果のタイプを畳込テーブル番号として、ROM102に記憶されている畳込テーブルを参照し、ブロックサイズB2を取得する(ステップS1702)。
CPU101は、ステップS1701で取得したシステム状態に基づくブロックサイズB1が、ステップS1702で取得した効果のタイプに基づくブロックサイズB2と等しいか否かを判定する(ステップS1703)。
ステップS1703の判定がYESならば、図3のFIRフィルタ演算処理部303及びCONV演算処理部304の係数データの更新は行わずに、同じデータのセット又は参照先の設定のみを行う(ステップS1704)。
ステップS1703の判定がNOならば、図16のステップS1607及びS1608の場合と同様にして、係数の更新を行う(ステップS1705)。
ステップS1704又はS1705の処理の後、CPU101は、図16のフローチャートで示されるブロック更新処理を終了し、図15のフローチャートの処理に戻る。
以上説明したようにして、本実施形態によれば、フィルタ次数を柔軟に変更可能で、同時に複数種類のFIRフィルタ演算処理を実行可能なフィルタ演算処理装置を実現することが可能となる。
また、本実施形態によるFIRフィルタ演算処理とCONV演算処理とを組み合わせて畳込み演算を行う場合において、発音設定やシステムの状態等に応じてブロックサイズを柔軟に変更しながら、ブロック分の遅延を生じさせることなく、楽音信号にインパルス応答を付与することができるため、電子楽器などの用途において、応答性と再現性の高い効果を付与することが可能となる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
FIRフィルタ演算処理に用いる複数のFIR係数データが記憶されたFIR係数記憶部と、
前記FIRフィルタ演算処理の対象となる複数の入力データを記憶する入力データ記憶部と、
前記FIR係数記憶部に記憶された前記複数のFIR係数データと前記入力データ記憶部に記憶された前記複数の入力データとに基づいて、指定されたフィルタ次数に対応する回数だけ、各FIR係数データと各入力データとを乗算しながら累算していくFIRフィルタ演算処理を実行させる制御部と、
を有することを特徴とするフィルタ演算処理装置。
(付記2)
前記制御部は、異なる複数のフィルタ次数を選択して指定することが可能であり、
前記FIR係数記憶部は、前記制御部が指定可能なフィルタ次数個分のFIR係数データを記憶し、
前記入力データ記憶部は、前記制御部が指定可能なフィルタ次数に対応するサンプル数の入力データを記憶する、
ことを特徴とする付記1に記載のフィルタ演算処理装置。
(付記3)
前記FIR係数記憶部は、FIRフィルタ演算処理のフィルタ次数個分のFIR係数データ組を、前記フィルタ次数が可変の1種類以上の前記FIRフィルタ演算処理毎に記憶し、
前記入力データ記憶部は、現在の1サンプル前から(前記フィルタ次数−1)サンプル前までの前記FIRフィルタ演算処理に対する入力データ組を遅延データ組として、前記FIRフィルタ演算処理毎に記憶し、
1次分の前記FIRフィルタ演算処理を実行するフィルタ演算部を更に備え、
前記制御部は、各サンプリング周期内で、前記FIRフィルタ演算処理毎に、前記フィルタ次数に対応した時分割長の時分割処理により、前記フィルタ演算部に、前記FIR係数記憶部のFIR係数データと現在の入力データ又は前記入力データ記憶部の遅延データとを順次入力させながら1次分の前記FIRフィルタ演算処理を繰り返し実行させて出力データを出力させる、
ことを特徴とする付記1又は2に記載のフィルタ演算処理装置。
(付記4)
前記制御部は、前記サンプリング周期内で、当該周期を細分化した周期を有するクロックでカウントされ前記フィルタ次数を有する前記FIRフィルタ演算処理を実行可能な長さの連続区間を個別に割り当て、当該連続区間で、前記フィルタ演算部に、前記クロックに同期させて、前記FIRフィルタ演算処理に対応する前記FIR係数記憶部のFIR係数データと現在の入力データ又は前記入力データ記憶部の遅延データとを順次入力させながら、前記FIR乗算/累算処理を繰り返し実行させ、前記FIRフィルタ演算処理に対応する前記サンプリング周期の出力データを出力させる制御を、前記FIRフィルタ演算処理毎に実行する、ことを特徴とする付記3に記載のフィルタ演算処理装置。
(付記5)
前記フィルタ演算部は、
前記クロックに同期して、前記FIR係数記憶部が出力するFIR係数データを保持する第1のレジスタと、
現在のサンプリング周期の入力データ又は前記入力データ記憶部が出力する遅延データの何れかを選択する第1のセレクタと、
前記クロックに同期して、前記第1のセレクタが出力するデータを保持する第2のレジスタと、
前記第1のレジスタが出力する前記FIR係数データと前記第2のレジスタが出力するデータとを乗算する乗算器と、
前記クロックに同期して、前記乗算器が出力する乗算結果データを保持する第3のレジスタと、
前記第3のレジスタが出力する前記乗算結果データと現在までの累算データとを加算する加算器と、
前記クロックに同期して、前記加算器が出力する加算結果データを保持する第4のレジスタと、
値がゼロのデータ又は前記第4のレジスタが出力する加算結果データの何れかを選択し、当該選択されたデータを前記累算データとして前記加算器にフィードバックする第2のセレクタと、
を含むことを特徴とする付記3又は4に記載のフィルタ演算処理装置。
(付記6)
音響効果音のインパルス応答データを原音に畳み込むことにより前記原音に音響効果を付与する効果付与装置であって、
付記1乃至3の何れかに記載のフィルタ演算処理装置の前記FIRフィルタ演算処理により、前記インパルス応答データの前半データ部分を前記サンプリング周期単位の時間域処理により前記原音に畳み込む時間域畳込み部と、
前記インパルス応答データの後半データ部分を高速フーリエ変換演算を用いたブロック単位の周波数域処理により前記原音に畳み込む周波数域畳込み部と、
を有することを特徴とする効果付与装置。
(付記7)
前記インパルス応答データの前半データ部分と後半データ部分とを任意に設定する、
ことを特徴とする付記6に記載の効果付与装置。
(付記8)
前記ブロックのブロックサイズを決定し、前記FIRフィルタ演算処理における前記フィルタ次数及び前記FFT演算処理装置のFFT点数を前記ブロックサイズの2倍に設定する設定部を更に有する、
ことを特徴とする付記6又は7に記載の効果付与装置。
(付記9)
前記設定部は、前記インパルス応答データの時間長に応じて前記ブロックサイズを決定する、ことを特徴とする付記8に記載の効果付与装置。
(付記10)
前記設定部は、前記原音の発音設定に応じて前記ブロックサイズを決定する、ことを特徴とする付記8に記載の効果付与装置。
(付記11)
前記設定部は、
前記インパルス応答データの時間域の係数データを記憶し、
前記ブロックサイズを決定した後、前記インパルス応答データの係数データから前記FIRフィルタ演算処理で用いる前記ブロックサイズの2倍のフィルタ次数の前記FIR係数データを除いた残りの係数データを、高速フーリエ変換演算により周波数域の畳込み用係数データに変換し、メモリ展開する、
ことを特徴とする付記8乃至10の何れかに記載の効果付与装置。
(付記12)
前記設定部は、
前記周波数域の畳込み用係数データに、前記決定したブロックサイズを示すデータを付与して記憶し、
その後、前記ブロックサイズを再度決定した場合には、前記再度決定したブロックサイズが、前記記憶していたブロックサイズと異なる場合のみ、前記周波数域の畳込み用係数データを高速フーリエ変換により更新する、
ことを特徴とする付記11に記載の効果付与装置。
(付記13)
FIRフィルタ演算処理に用いる複数のFIR係数データが記憶されたFIR係数記憶部から順次FIR係数データを読み出し、
前記FIRフィルタ演算処理の対象となる複数の入力データを記憶する入力データ記憶部から順次入力データを読み出し、
前記FIRフィルタ演算処理におけるフィルタ次数を指定し、
順次読み出されるFIR係数データと、順次読み出される入力データに対して、指定されたフィルタ次数に対応する回数だけ、各FIR係数データと各入力データとを乗算しながら累算していくFIRフィルタ演算処理を繰り返し実行させる、
ことを特徴とするフィルタ演算方法。
(付記14)
音響効果音のインパルス応答データを原音に畳み込むことにより前記原音に音響効果を付与する場合に、
前記FIRフィルタ演算処理により、前記インパルス応答データの前半データ部分を前記サンプリング周期単位の時間域処理により前記原音に畳み込み、
前記インパルス応答データの後半データ部分を高速フーリエ変換演算を用いたブロック単位の周波数域処理により前記原音に畳み込む、
ことを特徴とする付記13に記載のフィルタ演算方法。
(付記15)
前記インパルス応答データの前半データ部分と後半データ部分とを任意に設定する、
ことを特徴とする付記13又は14に記載のフィルタ演算方法。
100 電子楽器
101 CPU
102 ROM
103、306 RAM
104 音源(TG)
105 効果付与部
106 鍵盤
107 ペダル
108 操作子
109 システムバス
110 サウンドシステム
201 楽音生成部
202 ミキシング部
203、204、205、206 ミキサ
207 Lch直接音出力データ
208 Rch直接音出力データ
209 Lch効果音入力データ
210 Rch効果音入力データ
211 Lch効果音出力データ
212 Rch効果音出力データ
213 Lch楽音出力データ
214 Rch楽音出力データ
303 FIRフィルタ演算処理部
304 CONV演算処理部
305 加算部
800、1100 フィルタ演算部
801 乗算処理部
802 累算処理部
803 遅延処理部
1101 FIR係数メモリ
1102 データメモリ
1103 第1のレジスタ(m0r)
1104 第2のレジスタ(m1r)
1105 乗算器
1106 第3のレジスタ(mr)
1107 加算器
1108 第4のレジスタ(ar)
1109 第2のセレクタ(SEL2)
1110 第1のセレクタ(SEL1)
1111 入力データ

Claims (16)

  1. フィルタ次数が可変のフィルタ演算処理に用いる、少なくとも指定されたフィルタ次数に対応する数の係数データを記憶している係数記憶部と、
    前記フィルタ演算処理の対象となる入力データを順次取得していく取得部と、
    前記取得部により過去に取得された、少なくとも前記指定されたフィルタ次数に対応する数の入力データを遅延データとして記憶している入力データ記憶部と、
    前記取得部で取得される入力データ又は前記入力データ記憶部に記憶されている各遅延データと、前記係数記憶部に記憶されている各係数データとを乗算しながら累算していく処理を、前記指定されたフィルタ次数に対応する回数繰り返すことで前記フィルタ演算処理を実行し、実行結果を出力する制御部と、
    を有し、
    前記制御部は、前記フィルタ次数を、予め決められた数以内で任意に指定することが可能であり、
    前記係数記憶部は、少なくとも前記予め決められた数の前記係数データを記憶し、
    前記入力データ記憶部は、少なくとも前記予め決められた数の前記入力データを記憶する、
    フィルタ演算処理装置。
  2. 前記制御部は、前記係数記憶部に記憶されている少なくとも前記予め決められた数の前記係数データのうち、少なくとも前記指定された数の前記係数データを作業用のメモリに読み込んだ後、前記作業用のメモリに読み込まれた複数の前記係数データを用いて前記フィルタ演算処理を実行する、
    請求項1に記載のフィルタ演算処理装置。
  3. 前記フィルタ演算処理は、FIRフィルタの演算を行うFIRフィルタ演算処理であり、
    前記係数記憶部は、指定されたフィルタ次数に対応する数のFIR係数データを記憶しており、
    前記制御部は、前記取得部で取得される入力データ又は前記入力データ記憶部に記憶されている各遅延データと、前記係数記憶部に記憶されている各FIR係数データとを乗算しながら累算していく処理を、前記指定されたフィルタ次数に対応する回数繰り返すことで前記FIRフィルタ演算処理を実行し、実行結果を出力する、
    請求項1または2に記載のフィルタ演算処理装置。
  4. フィルタ次数が可変のフィルタ演算処理に用いる、少なくとも指定されたフィルタ次数に対応する数の係数データを記憶している係数記憶部と、
    前記フィルタ演算処理の対象となる入力データを順次取得していく取得部と、
    前記取得部により過去に取得された、少なくとも前記指定されたフィルタ次数に対応する数の入力データを遅延データとして記憶している入力データ記憶部と、
    前記取得部で取得される入力データ又は前記入力データ記憶部に記憶されている各遅延データと、前記係数記憶部に記憶されている各係数データとを乗算しながら累算していく処理を、前記指定されたフィルタ次数に対応する回数繰り返すことで前記フィルタ演算処理を実行し、実行結果を出力する制御部と、
    を有し、
    前記係数記憶部は、フィルタ演算処理のフィルタ次数個分の係数データ組を、前記フィルタ次数が可変の1種類以上の前記フィルタ演算処理毎に記憶し、
    前記入力データ記憶部は、現在の1サンプル前から、前記フィルタ次数−1サンプル前までの前記フィルタ演算処理に対する入力データ組を前記遅延データ組として、前記フィルタ演算処理毎に記憶し、
    1次分の前記フィルタ演算処理を実行するフィルタ演算部を更に備え、
    前記制御部は、各サンプリング周期内で、前記フィルタ演算処理毎に、前記フィルタ次数に対応した時分割長の時分割処理により、前記フィルタ演算部に、前記係数記憶部の係数データと現在の入力データ又は前記入力データ記憶部の遅延データとを順次入力させながら1次分の前記フィルタ演算処理を繰り返し実行させて出力データを出力させる
    ィルタ演算処理装置。
  5. 前記制御部は、前記サンプリング周期内で、当該周期を細分化した周期を有するクロックでカウントされ前記フィルタ次数を有する前記フィルタ演算処理を実行可能な長さの連続区間を個別に割り当て、当該連続区間で、前記フィルタ演算部に、前記クロックに同期させて、前記フィルタ演算処理に対応する前記係数記憶部の係数データと現在の入力データ又は前記入力データ記憶部の遅延データとを順次入力させながら、前記乗算と累算の処理を繰り返し実行させ、前記フィルタ演算処理に対応する前記サンプリング周期の出力データを出力させる制御を、前記フィルタ演算処理毎に実行する、請求項4に記載のフィルタ演算処理装置。
  6. 前記フィルタ演算部は、
    前記クロックに同期して、前記係数記憶部が出力する係数データを保持する第1のレジスタと、
    現在のサンプリング周期の入力データ又は前記入力データ記憶部が出力する遅延データの何れかを選択する第1のセレクタと、
    前記クロックに同期して、前記第1のセレクタが出力するデータを保持する第2のレジスタと、
    前記第1のレジスタが出力する前記係数データと前記第2のレジスタが出力するデータとを乗算する乗算器と、
    前記クロックに同期して、前記乗算器が出力する乗算結果データを保持する第3のレジスタと、
    前記第3のレジスタが出力する前記乗算結果データと現在までの累算データとを加算する加算器と、
    前記クロックに同期して、前記加算器が出力する加算結果データを保持する第4のレジスタと、
    値がゼロのデータ又は前記第4のレジスタが出力する加算結果データの何れかを選択し、当該選択されたデータを前記累算データとして前記加算器にフィードバックする第2のセレクタと、
    を含む請求項4または5に記載のフィルタ演算処理装置。
  7. 前記制御部は、前記フィルタ演算処理により、付与すべき音響効果音のインパルス応答データの前半データ部分をサンプリング周期単位の時間域処理により原音に畳み込むとともに、前記インパルス応答データの後半データ部分を高速フーリエ変換演算を用いたブロック単位の周波数域処理により前記原音に畳み込むように制御する、
    請求項1乃至6のいずれか一項に記載のフィルタ演算処理装置。
  8. 原音に対して付与すべき音響効果音のインパルス応答データに対応する複数の係数データが記憶された係数記憶部と、
    前記原音に対応する複数の入力データと、前記係数記憶部に記憶された前記複数の係数データに基づいて、指定されたフィルタ次数に対応するフィルタ演算処理を実行するフィルタ演算処理部と、
    前記フィルタ演算処理により、前記インパルス応答データの前半データ部分をサンプリング周期単位の時間域処理により前記原音に畳み込むとともに、前記インパルス応答データの後半データ部分を高速フーリエ変換演算を用いたブロック単位の周波数域処理により前記原音に畳み込むように制御する制御部と、
    を有する効果付与装置。
  9. 前記制御部は、前記インパルス応答データの前半データ部分と後半データ部分とを任意に設定する、請求項8に記載の効果付与装置。
  10. 前記フィルタ演算処理は、サンプリング周期単位の時間域処理により指定されたフィルタ次数のFIRフィルタの演算を行うFIRフィルタ演算処理であり、
    前記ブロックのブロックサイズを決定し、前記FIRフィルタ演算処理における前記フィルタ次数及び前記高速フーリエ変換演算におけるFFT点数を前記ブロックサイズの2倍に設定する設定部を更に有する、請求項8または9に記載の効果付与装置。
  11. 前記設定部は、前記インパルス応答データの時間長に応じて前記ブロックサイズを決定する、請求項10に記載の効果付与装置。
  12. 前記設定部は、前記原音の発音設定に応じて前記ブロックサイズを決定する、請求項10に記載の効果付与装置。
  13. 前記係数記憶部は、前記インパルス応答データの時間域の係数データを記憶し、
    前記制御部は、前記ブロックサイズを決定した後、前記インパルス応答データの係数データから前記FIRフィルタ演算処理で用いる前記ブロックサイズの2倍のフィルタ次数の前記FIR係数データを除いた残りの係数データを、高速フーリエ変換演算により周波数域の畳込み用係数データに変換し、変換された前記周波数域の畳込み用係数データを用いて、前記インパルス応答データの後半データ部分をブロック単位の周波数域処理により前記原音に畳み込む演算処理を実行する、
    請求項10に記載の効果付与装置。
  14. 前記制御部は、
    前記周波数域の畳込み用係数データに、前記決定したブロックサイズを示すデータを付与して記憶し、
    その後、前記ブロックサイズを再度決定した場合には、前記再度決定したブロックサイズが、前記記憶していたブロックサイズと異なる場合のみ、前記周波数域の畳込み用係数データを高速フーリエ変換演算により更新する、
    請求項13に記載の効果付与装置。
  15. 装置が、
    フィルタ次数が可変のフィルタ演算処理のフィルタ次数を、予め決められた数以内で任意に指定し、
    少なくとも前記予め決められた数の係数データを記憶している係数記憶部から、前記指定されたフィルタ次数に対応する数の係数データを取得し、
    前記フィルタ演算処理の対象となる複数の入力データを順次取得するとともに、前記指定されたフィルタ次数に対応する数の入力データを遅延データとして順次記憶させていき、
    順次取得される入力データ又は記憶している各遅延データと、前記取得した各係数データとを乗算しながら累算していく処理を、前記指定されたフィルタ次数に対応する回数繰り返すことで前記フィルタ演算処理を実行し、実行結果を出力する、
    フィルタ演算方法。
  16. 装置が、
    原音に対して付与すべき音響効果音のインパルス応答データに対応する複数の係数データを取得し、
    前記原音に対応する複数の入力データと、前記取得した前記複数の係数データとに基づいて、指定されたフィルタ次数に対応するフィルタ演算処理を実行し、
    前記フィルタ演算処理により、前記インパルス応答データの前半データ部分をサンプリング周期単位の時間域処理により前記原音に畳み込むとともに、前記インパルス応答データの後半データ部分を高速フーリエ変換演算を用いたブロック単位の周波数域処理により前記原音に畳み込むように制御する、
    フィルタ演算方法。
JP2017049459A 2017-03-15 2017-03-15 フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置 Active JP6724828B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017049459A JP6724828B2 (ja) 2017-03-15 2017-03-15 フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置
US15/876,406 US10339907B2 (en) 2017-03-15 2018-01-22 Signal processing apparatus
CN201810212878.XA CN108630189B (zh) 2017-03-15 2018-03-15 滤波运算处理装置、滤波运算方法以及效果赋予装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017049459A JP6724828B2 (ja) 2017-03-15 2017-03-15 フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置

Publications (3)

Publication Number Publication Date
JP2018151589A JP2018151589A (ja) 2018-09-27
JP2018151589A5 JP2018151589A5 (ja) 2019-04-18
JP6724828B2 true JP6724828B2 (ja) 2020-07-15

Family

ID=63520154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017049459A Active JP6724828B2 (ja) 2017-03-15 2017-03-15 フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置

Country Status (3)

Country Link
US (1) US10339907B2 (ja)
JP (1) JP6724828B2 (ja)
CN (1) CN108630189B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046435B (zh) * 2019-04-19 2023-06-09 湖南银河电气有限公司 一种集成数字滤波谐波显示方法及系统
CN110087168B (zh) * 2019-05-06 2021-05-18 浙江齐聚科技有限公司 音频混响处理方法、装置、设备及存储介质
JP7147804B2 (ja) * 2020-03-25 2022-10-05 カシオ計算機株式会社 効果付与装置、方法、およびプログラム
DE102021207032A1 (de) * 2021-07-05 2023-01-05 Robert Bosch Gesellschaft mit beschränkter Haftung SA-Radarsensor für Kraftfahrzeuge
CN114880109B (zh) * 2021-12-15 2023-04-14 中国科学院深圳先进技术研究院 基于cpu-gpu异构架构的数据处理方法、设备以及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0787337B2 (ja) * 1990-01-05 1995-09-20 ヤマハ株式会社 音響信号処理装置
US5248845A (en) * 1992-03-20 1993-09-28 E-Mu Systems, Inc. Digital sampling instrument
US5536902A (en) * 1993-04-14 1996-07-16 Yamaha Corporation Method of and apparatus for analyzing and synthesizing a sound by extracting and controlling a sound parameter
US5587548A (en) * 1993-07-13 1996-12-24 The Board Of Trustees Of The Leland Stanford Junior University Musical tone synthesis system having shortened excitation table
JPH08129386A (ja) * 1994-10-31 1996-05-21 Yamaha Corp 電子楽器
US5814750A (en) * 1995-11-09 1998-09-29 Chromatic Research, Inc. Method for varying the pitch of a musical tone produced through playback of a stored waveform
US6673995B2 (en) * 2000-11-06 2004-01-06 Matsushita Electric Industrial Co., Ltd. Musical signal processing apparatus
JP4019753B2 (ja) 2002-03-12 2007-12-12 ヤマハ株式会社 残響付与装置、残響付与方法、プログラムおよび記録媒体
JP4019759B2 (ja) 2002-03-22 2007-12-12 ヤマハ株式会社 残響付与方法、インパルス応答供給制御方法、残響付与装置、インパルス応答補正装置、プログラム及び該プログラムを記録した記録媒体
US7442870B2 (en) * 2004-01-02 2008-10-28 Apple Inc. Method and apparatus for enabling advanced manipulation of audio
JP2005215058A (ja) 2004-01-27 2005-08-11 Doshisha Fftによるインパルス応答計算方法
CN1688104B (zh) * 2005-06-20 2010-11-10 北京中星微电子有限公司 数字信号处理方法及装置
JP2008197284A (ja) * 2007-02-09 2008-08-28 Sharp Corp フィルタ係数算出装置、フィルタ係数算出方法、制御プログラム、コンピュータ読み取り可能な記録媒体、および、音声信号処理装置
JP4322283B2 (ja) * 2007-02-26 2009-08-26 独立行政法人産業技術総合研究所 演奏判定装置およびプログラム
JP4877076B2 (ja) 2007-05-30 2012-02-15 カシオ計算機株式会社 共鳴音付加装置および共鳴音付加プログラム
JP5088030B2 (ja) * 2007-07-26 2012-12-05 ヤマハ株式会社 演奏音の類似度を評価する方法、装置およびプログラム
JP5098569B2 (ja) * 2007-10-25 2012-12-12 ヤマハ株式会社 帯域拡張再生装置
US8653354B1 (en) * 2011-08-02 2014-02-18 Sonivoz, L.P. Audio synthesizing systems and methods
CN102739195B (zh) * 2012-06-06 2015-12-09 华为技术有限公司 一种fir滤波器的处理方法、装置和系统

Also Published As

Publication number Publication date
CN108630189A (zh) 2018-10-09
JP2018151589A (ja) 2018-09-27
US10339907B2 (en) 2019-07-02
CN108630189B (zh) 2023-02-28
US20180268794A1 (en) 2018-09-20

Similar Documents

Publication Publication Date Title
JP6724828B2 (ja) フィルタ演算処理装置、フィルタ演算方法、及び効果付与装置
US7612281B2 (en) Reverberation effect adding device
EP3340235B1 (en) Musical note generation device, electronic musical instrument, method, and storage medium
JP6540681B2 (ja) 楽音生成装置および方法、電子楽器
JP4127094B2 (ja) 残響音生成装置およびプログラム
JP2819533B2 (ja) 楽音信号発生装置
CN113453120B (zh) 效果赋予装置、方法及存储介质
US8296143B2 (en) Audio signal processing apparatus, audio signal processing method, and program for having the method executed by computer
Dragoi et al. Efficient FPGA Implementation of Classic Audio Effects
EP0917707B1 (en) Audio effects synthesizer with or without analyser
JP2016038543A (ja) 効果付加装置、方法、およびプログラム、電子楽器
JP5169584B2 (ja) インパルス応答加工装置、残響付与装置およびプログラム
JP3203687B2 (ja) 楽音変調装置および楽音変調装置を用いた電子楽器
JP2007033804A (ja) 音源分離装置,音源分離プログラム及び音源分離方法
JP2024046785A (ja) 効果付与装置、方法、及びプログラム
WO2020195041A1 (ja) フィルタ効果付与装置、電子楽器及び電子楽器の制御方法
JP2687698B2 (ja) 電子楽器の楽音制御装置
JP3602658B2 (ja) スピーカの歪み除去装置を有する装置
JP4106739B2 (ja) デジタル信号処理方法およびデジタル信号処理装置
JP2014057208A (ja) スウィープ信号生成装置、スウィープ信号生成方法、及びプログラム
JPH08129384A (ja) 楽音発生装置
KR20050100898A (ko) 주파수 영역 부단위 병렬복적분을 이용한 음장감 구현장치 및 그 방법
JP2000341139A (ja) 畳み込み演算装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190307

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190307

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200221

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: 20200526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200608

R150 Certificate of patent or registration of utility model

Ref document number: 6724828

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150