IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カシオ計算機株式会社の特許一覧

特許7424411楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム
<>
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図1
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図2
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図3
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図4
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図5
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図6
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図7
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図8
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図9
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図10
  • 特許-楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-22
(45)【発行日】2024-01-30
(54)【発明の名称】楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラム
(51)【国際特許分類】
   G10H 7/12 20060101AFI20240123BHJP
【FI】
G10H7/12
【請求項の数】 8
(21)【出願番号】P 2022098190
(22)【出願日】2022-06-17
(65)【公開番号】P2023046241
(43)【公開日】2023-04-03
【審査請求日】2022-09-22
(31)【優先権主張番号】P 2021153006
(32)【優先日】2021-09-21
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100182936
【弁理士】
【氏名又は名称】矢野 直樹
(72)【発明者】
【氏名】春日 一貴
【審査官】中村 天真
(56)【参考文献】
【文献】特開平06-348277(JP,A)
【文献】特開平11-161275(JP,A)
【文献】特開平06-282271(JP,A)
【文献】特開平07-092970(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10H 1/00-7/12
(57)【特許請求の範囲】
【請求項1】
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインと、
夫々、前記複数の遅延器のうちのいずれかの遅延器に対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックと、
前記複数の遅延器のうちの任意の1つを、指定音高に対応する遅延を発生する第1の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の前段の遅延器を第0の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の後段の遅延器を第2の遅延器に設定する、少なくとも1つのプロセッサと、
を備え、
前記少なくとも1つのプロセッサは、
前記少なくとも3つの小数部遅延ブロックを、前記第1の遅延器と、前記第0の遅延器と、前記第2の遅延器と、に夫々接続させ、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直す、楽音信号発生装置。
【請求項2】
前記少なくとも3つの小数部遅延ブロックは、夫々前記小数部遅延ブロックが対応された前記遅延器と共にオールパスフィルタブロックとして動作する、
請求項1に記載の楽音信号発生装置。
【請求項3】
前記少なくとも1つのプロセッサは、
前記第1の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックに、前記指定音高に対応する遅延幅の小数部である前記第2の遅延幅に対応するフィルタ係数を設定し、
前記第0の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロック及び前記第2の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックに、夫々値1及び値0の前記第2の遅延幅に対応する値0及び値1のフィルタ係数を設定し、
前記第1の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックの出力を、楽音信号及び前記ディレイラインの前記入力へのフィードバック信号として出力する、
請求項2に記載の楽音信号発生装置。
【請求項4】
前記少なくとも1つのプロセッサは、
前記遅延長の小数部をlとしたときに、前記第1の遅延器が偶数番目の遅延器である場合に、
g=(1-l)/(1+l) ・・・(1)
の演算式で示される演算により計算される係数gを前記指定音高に対応する遅延幅の小数部である前記第2の遅延幅に対応するフィルタ係数として設定し、前記第1の遅延器が奇数番目の遅延器である場合に、
g=2×l/(1+l) ・・・(2)
の演算式で示される演算により計算される係数gを用いて算出される係数(1-g)を前記フィルタ係数として設定し、
前記遅延長の小数部lを入力として、前記(1)式又は(2)式の演算式で示される変化をする係数gをエンベロープ値として出力するエンベロープジェネレータブロックを更に備える、
請求項1に記載の楽音信号発生装置。
【請求項5】
前記第0の遅延器の両端が接続される前記小数部遅延ブロックは、前記第0の遅延器の出力をそのまま出力する演算を実行し、
前記第2の遅延器の両端が接続される前記小数部遅延ブロックは、値0の前記第2の遅延幅に対応する値1のフィルタ係数に対応する値1又は値-1を乗算する各乗算演算の代わりに、前記乗算演算における入力値をそのまま又は符号を変えて前記各乗算演算における出力値として出力する演算を実行する、
請求項1に記載の楽音信号発生装置。
【請求項6】
請求項1に記載の楽音信号発生装置と、
操作子と、
を備えた電子機器。
【請求項7】
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインのいずれかの遅延器に夫々対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックを、前記複数の遅延器のうちの、指定音高に対応する遅延を発生する前記遅延器である第1の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の前段に対応された第0の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の後段に対応された第2の遅延器と、に夫々接続させ、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直す、楽音信号発生方法。
【請求項8】
コンピュータに、
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインのいずれかの遅延器に夫々対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックを、前記複数の遅延器のうちの、指定音高に対応する遅延を発生する前記遅延器である第1の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の前段に対応された第0の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の後段に対応された第2の遅延器と、に夫々接続させる処理と、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直させる処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、楽音信号発生装置、電子機器、楽音信号発生方法、及びプログラムに関する。
【背景技術】
【0002】
ウェーブガイドモデリング音源を構成する遅延器の数は、整数であり、離散的である。従って、厳密な周波数を決定するためには、遅延器の数に相当する整数よりも更に細かい小数の遅延長を実現する技術が必要である。
【0003】
広い周波数帯域で小数の遅延長を連続的に実現する従来技術として、遅延器最終段の先にオールパスフィルタを挿入する技術が知られている(例えば、特許文献1に記載の技術)。この技術では、第1のオールパスフィルタAPF1と、第2のオールパスフィルタAPF2と、第1及び第2のオールパスフィルタを遅延素子の選択された異なる段に接続する可変接続手段と、第1及び第2のオールパスフィルタの出力において、遅延時間が等しくなるようにオールパスフィルタ及び可変接続手段を制御する制御手段と、第1及び第2のオールパスフィルタの出力を重み付け加算する重み付け加算手段とを含む楽音信号合成装置が実現されている。
この従来技術では、オールパスフィルタを用いることにより、高い周波数帯域での振幅の低下を防ぐことができる。
また、この従来技術では、2つのオールパスフィルタの重み付け加算により小数の遅延長を生成することにより、ピッチベンド時などのように音高周波数が時間的に変化し時間経過に従ってウェーブガイドモデリング音源における整数の遅延長が切り替わるようなときに、オールパスフィルタの係数が0.0と1.0の間を不連続に遷移することによるノイズの発生を抑制している。
【先行技術文献】
【特許文献】
【0004】
【文献】特開平6-348277号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上述の従来技術では、2つのオールパスフィルタを常に遅延時間が等しくなるように動作させ、なおかつ2つのオールパスフィルタの出力を重み付け加算する必要があった。このため、2つのオールパスフィルタ演算において常にフィルタ係数を2回ずつ乗算させる演算を実行すると共に、重み付け加算における乗算演算も必要であり、1サンプルあたり合計で少なくとも6回の乗算演算が必要であった。このように乗算演算回数の多いウェーブガイドモデリング音源の技術を用いて、例えば256ポリフォニックの楽音を同時に発音させるような場合(例えばピアノのモデリング音源の場合)に、1サンプルあたり合計で例えば少なくとも6回×256ポリフォニック=1,536回の乗算演算が必要になり、全体として楽音生成のための演算量が多くなってしまうという課題があった。
【0006】
そこで、本発明の目的は、少ない演算量で楽音を生成することである。
【課題を解決するための手段】
【0007】
態様の一例の楽音信号発生装置は、カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインと、夫々、前記複数の遅延器のうちのいずれかの遅延器に対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックと、前記複数の遅延器のうちの任意の1つを、指定音高に対応する遅延を発生する第1の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の前段の遅延器を第0の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の後段の遅延器を第2の遅延器に設定する、少なくとも1つのプロセッサと、を備え、前記少なくとも1つのプロセッサは、前記少なくとも3つの小数部遅延ブロックを、前記第1の遅延器と、前記第0の遅延器と、前記第2の遅延器と、に夫々接続させ、前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直す。
【発明の効果】
【0008】
本発明によれば、少ない演算量で楽音を生成することが可能となる。
【図面の簡単な説明】
【0009】
図1】本開示による楽音信号発生装置の実施形態のハードウェア例を示すブロック図である。
図2】DSP又はウェーブガイドモデル回路が実現する機能例を示すブロック図である。
図3】ウェーブガイドモデル演算部のブロック構成例を示す図である。
図4】3組のAPFのディレイラインへの一接続例を示す図である。
図5】実施形態における演算負荷の削減効果の説明図である。
図6】遅延長の整数部である遅延器数kが増加したときの3組のAPFのディレイラインへの接続の変化を示す図である。
図7】フィルタ係数の連続制御方法の説明図である。
図8】遅延長の整数部である遅延器数kが減少したときの3組のAPFのディレイラインへの接続の変化を示す図である。
図9】ピッチベンド制御処理の例を示すフローチャート(その1)である。
図10】ピッチベンド制御処理の例を示すフローチャート(その2)である。
図11】ウェーブガイドモデル演算部の他の実施形態を示す図である。
【発明を実施するための形態】
【0010】
以下、本開示を実施するための形態について図面を参照しながら詳細に説明する。電子機器は、楽音信号発生装置100、図示しない演奏操作子、スピーカを備えている。演奏操作子は、電子機器が電子ピアノ等のキーボードであれば、鍵盤に該当し、電子機器が電子管楽器であれば、マウスピースに該当する。図1は、本開示による楽音信号発生装置100の実施形態のハードウェア例を示すブロック図である。楽音信号発生装置100は、少なくとも1つのプロセッサとしてのCPU(セントラルプロセッシングユニット:中央演算処理装置)101、ROM(リードオンリーメモリ)102、RAM(ランダムアクセスメモリ)103、DSP(デジタルシグナルプロセッサ)又は後述するウェーブガイドモデル回路104、ピッチベンドセンサ110とその出力が接続されるADC(アナログデジタルコンバータ)106、音量センサ109とこれを検出するADC又はデジタル入力ポート105、音高指定スイッチ111とその出力が接続されるデジタル入力ポート107、DAC(デジタルアナログコンバータ)/増幅器108、及びシステムバス112を備えている。CPU101、ROM102、RAM103、DSP又はウェーブガイドモデル回路104、ADC106、ADC又はデジタル入力ポート105、デジタル入力ポート107、DAC/増幅器108は夫々システムバス112によって相互に接続されている。ここで、音量センサ109と音高指定スイッチ111は、同一のものであってもよい。例えば、楽音信号発生装置100が電子ピアノであれば、鍵盤を弾いたことをセンシングするスイッチが音高センサであり、音量センサでもある。
【0011】
本実施例では、本開示をソフトウェアで実現する実施形態として、CPU101、DSP104を使用する例を説明する。しかし、CPU101がDSP104の役割を担ってもよい。また、DSP104の機能がハードウェアのウェーブガイドモデル回路104で実現されてもよい。図2は、DSP又はウェーブガイドモデル回路104が実現する機能例を示すブロック図である。
【0012】
制御回路であるウェーブガイドモデル制御部201は、図1の音高指定スイッチ111から入力される音高情報203(例えば電子ピアノであれば鍵盤によるノート番号)、及び図1のピッチベンドセンサ110から送られてくるベンド情報(ピッチ変化量)204を入力信号として受け取り、発音すべき周波数fに対応するウェーブガイドモデルの遅延長を算出し、遅延長の整数部である遅延器数kと、遅延長の小数部lを定めるオールパスフィルタ(小数部遅延ブロック)のフィルタ係数gを算出し、算出した遅延器数k及びフィルタ係数gをウェーブガイドモデル演算部202に出力する。
【0013】
ここで、遅延長の小数部lと、オールパスフィルタのフィルタ係数gの間には、
g=(1-l)/(1+l) ・・・(1)
の関係があることが知られている。
【0014】
また、ウェーブガイドモデル制御部201は、図1の音量センサ109から入力された音量情報205を元に、励振原音206のボリューム207を算出する。そして、このボリューム207が乗算器208にて励振原音206に乗算される。ここで、励振原音206とは、ウェーブガイドモデリングで共鳴させる元となる信号で、予め録音して例えば図1のROM102に保存しておき、システムが起動時にROM102からRAM103にコピーされ、発音制御の開始時にRAM103から読み出される信号、又は演算によって合成される信号である。
【0015】
ウェーブガイドモデル演算部202は、遅延長(遅延器数k及びフィルタ係数g)及びボリューム207を乗算された励振原音206を入力信号x(n)として受け取り、図3で後述する演算を行い、楽音信号209を出力する。楽音信号209は、図1のDAC/増幅器108へ入力され、電子機器(電子楽器)のスピーカ等を介して放音される。
【0016】
図3は、図2のウェーブガイドモデル演算部202のブロック構成例を示す図である。図3において、ディレイライン301は、カスケード(縦属)に接続された#0~#N-1のN個(複数個)の遅延器302を備える。遅延器302は、入力した信号を1サンプリング時間遅延させて出力する。図3の各遅延器302内の記号z-1は、z変換における1サンプル分の遅延演算が実行されることを表している。このディレイライン301の先頭の遅延器302(#0)には、励振原音206に基づいて生成される入力信号x(n)(図2参照)に、フィードバック信号303に乗算器304により所定のゲインを乗算して得られる信号を、加算器311により加算して得られる信号が入力される。ディレイライン301中の各遅延器302の出力は、ディレイラインスイッチ端子d1~dNから取り出すことができる。
【0017】
また、本実施形態では、ウェーブガイドモデル演算部202は、#0、#1、及び#2の3個のオールパスフィルタ回路(以下「APF」と記載)305を備える。このAPF305は、ディレイライン301中の何れかの遅延器302の両端に接続(設定)されることによりオールパスフィルタとして動作する。APF305は、接続される遅延器302の入力側の信号にフィードフォワードゲインg(g0、g1、又はg2)を乗算する乗算器306と、接続される遅延器302の出力側の信号と乗算器306の出力信号と後述する乗算器308の出力信号とを加算しその加算出力信号をスイッチ310に選択的に出力する加算器309と、上記加算出力信号を1サンプリング時間遅延するフィードバック遅延器307と、フィードバック遅延器307の出力信号にフィードバックゲイン-g(-g0、-g1、又は-g2)を乗算しその乗算出力信号を前述した加算器309に出力する乗算器308とを備える。
【0018】
APF305(#0)の接続端子i00とi01、APF305(#1)の接続端子i10とi11、及びAPF305(#2)の接続端子i20とi21の各組は、夫々ディレイライン301の同じ遅延器302の両端のディレイラインスイッチ端子に接続(設定)される。
【0019】
また、APF305(#0)、APF305(#1)、及びAPF305(#2)には、夫々、フィードフォワードゲインとフィードバックゲインg0と-g0、g1と-g1、g2と-g2があるが、以後、フィードフォワードゲインとフィードバックゲインをまとめて、オールパスフィルタのフィルタ係数と呼ぶことにする。
【0020】
APF305(#0)、APF305(#1)、及びAPF305(#2)は、ディレイライン301中の必ず隣り合った遅延器302に接続(設定)されるが、その順番は、後述するピッチベンド制御処理によって、輪環の順で入れ替わるように制御される。
【0021】
APF305(#0)、APF305(#1)、又はAPF305(#2)の各出力先は、スイッチ310の各出力選択端子o0、o1、又はo2へ接続(設定)され、このうちの1つが出力信号y(n)として選択されて楽音信号209が出力される。また、出力信号y(n)には、乗算器304にて出力フィードバックゲインが乗算され、その乗算結果が加算器311にて入力信号x(n)に加算される。
【0022】
図4は、図3の構成を有する図2のウェーブガイドモデル演算部202における#0、#1、及び#2の3組のAPF305のディレイライン301への一接続例を示す図である。図2のウェーブガイドモデル制御部201は、前述したように、例えば電子楽器の演奏操作子である図1の音高指定スイッチ111から入力される音高情報203に基づいて、発音すべき周波数fに対応するウェーブガイドモデルの遅延長を算出し、続いて、その遅延長の整数部である遅延器数kをウェーブガイドモデル演算部202に指定する。また、図2のウェーブガイドモデル制御部201は、遅延長の小数部lを定めるAPF305のフィルタ係数gを、前述した(1)式で示される演算により算出し、ウェーブガイドモデル演算部202に指定する。
【0023】
この結果、図4のウェーブガイドモデル演算部202において、APF305(#1)の接続端子i10とi11に、ウェーブガイドモデル制御部201から指定された指定音高に対応する遅延長の整数部の遅延を発生する第1の遅延器であるディレイライン301内の遅延器302(#k)の両端のディレイラインスイッチ端子dkとdk+1が夫々接続(設定)される。
【0024】
また、APF305(#0)の接続端子i00とi01に、ディレイライン301内の、第1の遅延器である遅延器302(#k)の1段前段の第0の遅延器である遅延器302(#k-1)の両端のディレイラインスイッチ端子dk-1とdkが夫々接続(設定)される。
【0025】
更に、APF305(#2)の接続端子i20とi21に、ディレイライン301内の、第1の遅延器である遅延器302(#k)の1段後段の第2の遅延器である遅延器302(#k+1)の両端のディレイラインスイッチ端子dk+1とdk+2が夫々接続(設定)される。
【0026】
一方、APF305(#1)の乗算器306(#1)及び308(#1)には夫々、図2のウェーブガイドモデル制御部201から、指定音高に対応する遅延長の小数部lに対応して(1)式で示される演算により算出されたフィルタ係数gのフィードフォワードゲインgとフィードバックゲイン-gが設定される。
【0027】
また、APF305(#0)の乗算器306(#0)及び308(#0)には共に、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値1の遅延を発生させる値0が設定される。
【0028】
更に、APF305(#2)の乗算器306(#2)及び308(#2)には夫々、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値0の遅延を発生させる値1及び-1が設定される。
【0029】
そして、スイッチ310は、出力選択端子o1を導通させる。この結果、APF305(#1)の出力信号がスイッチ310を介して、出力信号y(n)として選択されて楽音信号209が出力される。また、出力信号y(n)は、乗算器304にて出力フィードバックゲインが乗算され、加算器311にて入力信号x(n)に加算される。
【0030】
以上の制御動作の結果、楽音信号209としては、指定音高に対応する遅延長の整数部kがディレイライン301内の#0~#k-1の遅延器302によって生み出され、上記遅延長の小数部lが(1)式で示される演算で算出されたフィルタ係数gに基づいて動作するAPF305(#1)によって生み出されることになる。
【0031】
この場合、ディレイライン301及びAPF305(#1)からなる回路は、周波数特性がフラットであるため、高い周波数帯域での振幅の低下を防ぐことが可能となる。
【0032】
図5は、本実施形態における演算負荷の削減効果の説明図である。前述したように、APF305(#0)の乗算器306(#0)及び308(#0)には共に、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値1の遅延を発生させる値0が設定されている。従って、乗算器306(#0)及び308(#0)では実質的に負荷の大きな乗算演算を実行する必要はなく、図4のAPF305(#0)は図5に示される等価回路となる。即ち、APF305(#0)では、ディレイライン301内の遅延器302(#k-1)からのディレイラインスイッチ端子dkを介した出力をそのままスイッチ310の出力選択端子o0に出力する演算を実行すればよい。
【0033】
一方、前述したように、APF305(#2)の乗算器306(#2)及び308(#2)には夫々、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値0の遅延を発生させる値1及び値-1が設定されている。従って、乗算器306(#2)及び308(#2)では実質的に負荷の大きな乗算演算を実行する必要はなく、図4のAPF305(#2)は図5に示される等価回路となる。即ち、APF305(#2)では、ディレイライン301内の遅延器302(#k)からのディレイラインスイッチ端子dk+1を介した出力を、乗算器306(#2)によって値1を乗算する代わりにそのまま加算器309(#2)に入力させ、フィードバック遅延器307(#2)の出力を、乗算器308(#2)によって値-1を乗算する代わりに符号を変えて加算器309(#2)に入力させる演算を実行すればよい。
【0034】
以上のようにして、本実施形態では、乗算演算は実質的にAPF305(#1)においてのみ必要で、APF305(#0)及びAPF305(#2)においては乗算演算は必要ない。従って、オールパスフィルタを2個使用する特許文献1の従来技術に対して、特にポリフォニック数が多いウェーブガイドモデリングによる楽音生成において、演算負荷を大幅に削減することが可能となる。
【0035】
次に、演奏者が楽器のピッチベンドセンサ110(図1)を操作することにより、発音されている演奏音の音高(ピッチ)を変更した場合における、ピッチベンド制御処理の原理について説明する。
【0036】
図2において、ウェーブガイドモデル制御部201は、順次入力するベンド情報204に基づいて、新たな指定音高の遅延長を順次計算し、その遅延長の整数部である遅延器数kと、小数部lに対応して(1)式で示される演算により算出されるフィルタ係数gを、ウェーブガイドモデル演算部202に順次出力する。
【0037】
ここで、遅延器数kの値に変化がなければ、フィルタ係数gのみが変化する。これは、楽音信号209の波長の変化が1サンプリング時間内に収まっていることを意味する。例えば、演奏者がピッチをダウンさせるピッチベンド操作により、新たな指定音高に対応する遅延長の小数部lが順次増加してゆく場合、前述の(1)式で示される演算により算出されるフィルタ係数gの値は順次減少するように指定されてゆく。
【0038】
図6は、遅延長の整数部である遅延器数kが増加したときの3組のAPF305のディレイライン301への接続(設定)の変化を示す図である。演奏者がピッチをダウンさせるピッチベンド操作により、新たな指定音高に対応する遅延長の小数部lが順次増加していって値1に到達すると、図2のウェーブガイドモデル制御部201は、ウェーブガイドモデル演算部202に出力する指定音高の遅延長の整数部である遅延器数kの値を+1インクリメントする。このとき、遅延長の小数部lは遅延器数kのインクリメントに従って0になるため、(1)式で示される演算により算出されるフィルタ係数gの値は1になる。
【0039】
このようにしてウェーブガイドモデル制御部201から指定される遅延器数kの値が+1インクリメントされて変化した場合、図6に示されるウェーブガイドモデル演算部202では、変化した遅延器数k+1に対応するディレイライン301内の新たな遅延器302(#k+1)を新たな第1の遅延器として、その両端のディレイラインスイッチ端子dk+1とdk+2に今まで接続されていたAPF305(#2)に、オールパスフィルタの動作が引き継がれる。
【0040】
また、図6において、上記引継の結果、スイッチ310は出力選択端子o1の導通をオフにして、出力選択端子o2を新たに導通させる。
【0041】
このとき、前述したように、APF305(#2)の乗算器306(#2)及び308(#2)には夫々、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値0の遅延を発生させる値1及び-1が設定されて動作している。従って、オールパスフィルタの動作をAPF305(#1)からAPF305(#2)に切り替える上述の動作は、図2のウェーブガイドモデル制御部201から指定される小数部l=0に制御する動作と良くマッチしている。
【0042】
また、APF305(#2)は、ディレイラインスイッチ端子dk+1とdk+2からの実際の信号により継続的に動作しているため、APF305の切替えに際してノイズが発生しないように制御することが可能となる。
【0043】
ここで、APF305(#1)において小数部lの値が増加するに従って(1)式で示される演算により算出されるフィルタ係数gの値は前述したように0に向かって減少している。しかし、APF305(#1)からAPF305(#2)に制御が切り替わったときに、小数部lの値が0にリセットされて開始されるため、この瞬間にフィルタ係数gの値を0付近から1付近にジャンプさせる必要が生じる。このような値の不連続なジャンプは、フィルタ係数gをエンベロープ制御するような場合に、あまり好ましくない。
【0044】
そこで、本実施形態では、第1の遅延器として動作する遅延器302が例えば偶数番目の遅延器である場合には、前述した(1)式で示される演算処理によって、フィルタ係数gを算出する。
【0045】
一方、第1の遅延器として動作する遅延器302が例えば奇数番目の遅延器である場合には、下記(2)式で示される演算処理によって、フィルタ係数gを算出する。
g=1-(1-l)/(1+l)
={(1+l)-(1-l)}/(1+l)
=2×l/(1+l) ・・・(2)
そしてこの場合に、上記(2)式で示される演算により計算される係数gを用いて算出される係数(1-g)及び-(1-g)が夫々、乗算器306及び308におけるフィードフォワードゲイン及びフィードバックゲインとして設定される。
【0046】
図6の例では、例えば今までAPF305(#1)でオールパスフィルタの演算が実行されていてそのときに、乗算器306(#1)及び308(#1)におけるフィードフォワードゲイン及びフィードバックゲインとしてg及び-gが設定されていた場合に、上述したようにAPF305(#1)からAPF305(#2)にオールパスフィルタの動作が切り替わった場合には、乗算器306(#2)及び308(#2)におけるフィードフォワードゲイン及びフィードバックゲインとして(1-g)及び-(1-g)が設定されるように制御してよい。
【0047】
図7は、フィルタ係数gの連続制御方法の説明図である。例えば、図7(a)に示されるように遅延長の整数部である遅延器数の値がkである区間l1で、図7(b)に示されるようにフィルタ係数gが(1)式で示される演算により遅延長の小数の増加に従って減少している場合を考える。区間l1においてフィルタ係数gの値が0に到達すると、図7(a)に示されるように遅延長の整数部である遅延器数の値がkからk+1の区間l2に切り替わる。この新たな区間l2において、上述した制御方法により、図7(b)に示されるようにフィルタ係数gの値が、最小値0から(2)式で示される演算により遅延長の小数の増加に従って増加するように制御される。
【0048】
以上のように、本実施形態では、第1の遅延器として動作する遅延器302が、偶数番目の遅延器であるか、奇数番目の遅延器であるかによって、(1)式で示される演算と(2)式で示される演算とを切り替えてフィルタ係数gを算出し、APF305内の乗算器306及び308にg及び-gの組を設定するか(1-g)及び-(1-g)の組を設定するかを切り替えることにより、図2のウェーブガイドモデル制御部201からウェーブガイドモデル演算部202に指定するフィルタ係数gを、図7(b)に示されるように連続的に変化させることが可能となる。
【0049】
この結果、電子楽器の技術で一般的に用いられるエンベロープジェネレータ回路を用いて、遅延長の小数部lを入力として(1)式又は(2)式で示される演算処理により図7(b)に示されるように変化をするフィルタ係数gをエンベロープ値として出力させることが可能となる。
【0050】
以上説明したようにして、図6において、遅延長の整数部である遅延器数kが増加して、第1の遅延器としてオールパスフィルタの演算動作をする対象が、今までのAPF305(#1)から新たなAPF305(#2)に切り替わった場合、今まで第1の遅延器として動作していた遅延器302(#k)は、図6に示されるように、新たな第1の遅延器である遅延器302(#k+1)の1つ前段の第0の遅延器として認識され、その両側のディレイラインスイッチ端子dk及びdk+1に接続されていたAPF305(#1)の乗算器306(#1)及び308(#1)には共に、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、第0の遅延器に接続されるオールパスフィルタ回路としての小数部の値1の遅延を発生させる値0が設定される。
【0051】
また、図6において、遅延器302(#k+2)が、新たな第1の遅延器である遅延器302(#k+1)の1つ後段の第2の遅延器として認識され、その両側のディレイラインスイッチ端子dk+2及びdk+3には、夫々APF305(#0)の接続端子i00とi01が新たに接続(設定)され、APF305(#0)の乗算器306(#0)及び308(#0)には夫々、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、第2の遅延器に接続されるオールパスフィルタ回路としての小数部の値0の遅延を発生させる値1及び値-1が設定される。
【0052】
なお、上述のようにして各APF305の接続(設定)が切り替えられる前に、フィードバック遅延器307の出力が0にクリアされるようにしてよい。
【0053】
図8は、遅延長の整数部である遅延器数kが減少したときの3組のAPF305のディレイライン301への接続(設定)の変化を示す図である。演奏者がピッチをアップさせるピッチベンド操作により、新たな指定音高に対応する遅延長の小数部lが順次減少していって値0に到達すると、図2のウェーブガイドモデル制御部201は、ウェーブガイドモデル演算部202に出力する指定音高の遅延長の整数部である遅延器数kの値を-1デクリメントする。このとき、遅延長の小数部lは遅延器数kのデクリメントに従って最大値1になるため、(1)式で示される演算により算出されるフィルタ係数gの値は0になる。
【0054】
このようにしてウェーブガイドモデル制御部201から指定される遅延器数kの値が-1デクリメントされて変化した場合、図8に示されるウェーブガイドモデル演算部202では、変化した遅延器数k-1に対応するディレイライン301内の新たな遅延器302(#k-1)を新たな第1の遅延器として、その両端のディレイラインスイッチ端子dk-1とdkに今まで接続されていたAPF305(#0)に、オールパスフィルタの動作が引き継がれる。
【0055】
また、図8において、上記引継の結果、スイッチ310は出力選択端子o1の導通をオフにして、出力選択端子o0を新たに導通させる。
【0056】
このとき、前述したように、APF305(#0)の乗算器306(#0)及び308(#0)には共に、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、小数部の値1の遅延を発生させる値0が設定されて動作している。従って、オールパスフィルタの動作をAPF305(#1)からAPF305(#0)に切り替える上述の動作は、図2のウェーブガイドモデル制御部201から指定される小数部l=1に制御する動作と良くマッチしている。
【0057】
また、APF305(#0)は、ディレイラインスイッチ端子dk-1とdkからの実際の信号により継続的に動作しているため、APF305の切替えに際してノイズが発生しないように制御することが可能となる。
【0058】
ここで、APF305(#1)において小数部lの値が減少するに従って(1)式で示される演算により算出されるフィルタ係数gの値は前述したように1に向かって増加している。しかし、APF305(#1)からAPF305(#0)に制御が切り替わったときに、小数部lの値が1にセットされて開始されるため、この瞬間にフィルタ係数gの値を1付近から0付近にジャンプさせる必要が生じる。このような値の非線形なジャンプは、遅延長の整数部である遅延器数kの値が増加する場合と同様に、遅延長の整数部である遅延器数kの値が減少する場合も、フィルタ係数gをエンベロープ制御するような場合に、あまり好ましくない。
【0059】
そこで、本実施形態では、遅延長の整数部である遅延器数kの値が増加する場合と同様に、第1の遅延器として動作する遅延器302が、偶数番目の遅延器であるか、奇数番目の遅延器であるかによって、前述した(1)式で示される演算と(2)式で示される演算とを切り替えてフィルタ係数gを算出し、APF305内の乗算器306及び308にg及び-gの組を設定するか(1-g)及び-(1-g)の組を設定するかを切り替える制御を行う。
【0060】
図8の例では、例えば今までAPF305(#1)でオールパスフィルタの演算が実行されていてそのときに、乗算器306(#1)及び308(#1)におけるフィードフォワードゲイン及びフィードバックゲインとしてg及び-gが設定されていた場合に、上述したようにAPF305(#1)からAPF305(#0)にオールパスフィルタの動作が切り替わった場合には、乗算器306(#0)及び308(#0)におけるフィードフォワードゲイン及びフィードバックゲインとして(1-g)及び-(1-g)が設定されるように制御してよい。
【0061】
例えば、前述した図7において、図7(a)に示されるように遅延長の整数部である遅延器数の値がkである区間l1で、図7(b)に示されるようにフィルタ係数gが(1)式で示される演算により遅延長の小数の減少に従って増加している場合を考える。区間l1においてフィルタ係数gの値が1に到達すると、図7(a)に示されるように遅延長の整数部である遅延器数の値がkからk-1の区間l0に切り替わる。この新たな区間l0において、上述した制御方法により、図7(b)に示されるようにフィルタ係数gの値が、最大値1から(2)式で示される演算により遅延長の小数の減少に従って減少するように制御される。
【0062】
以上のように、本実施形態では、遅延長の整数部である遅延器数kの値が増加する場合と同様に、遅延長の整数部である遅延器数kの値が減少する場合であっても、第1の遅延器として動作する遅延器302が、偶数番目の遅延器であるか、奇数番目の遅延器であるかによって、(1)式で示される演算と(2)式で示される演算とを切り替えてフィルタ係数gを算出し、APF305内の乗算器306及び308にg及び-gの組を設定するか(1-g)及び-(1-g)の組を設定するかを切り替えることにより、図2のウェーブガイドモデル制御部201からウェーブガイドモデル演算部202に指定するフィルタ係数gを、図7(b)に示されるように連続的に変化させることが可能となる。
【0063】
この結果、電子楽器の技術で一般的に用いられるエンベロープジェネレータ回路を用いて、遅延長の小数部lを入力として(1)式又は(2)式で示される演算処理により図7(b)に示されるように変化をするフィルタ係数gをエンベロープ値として出力させることが可能となる。
【0064】
以上説明したようにして、図8において、遅延長の整数部である遅延器数kが減少して、第1の遅延器としてオールパスフィルタの演算動作をする対象が、今までのAPF305(#1)から新たなAPF305(#0)に切り替わった場合、今まで第1の遅延器として動作していた遅延器302(#k)は、図8に示されるように、新たな第1の遅延器である遅延器302(#k-1)の1つ後段の第2の遅延器として認識され、その両側のディレイラインスイッチ端子dk及びdk+1に接続されていたAPF305(#1)の乗算器306(#1)及び308(#1)には夫々、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、第2の遅延器に接続されるオールパスフィルタ回路としての小数部の値0の遅延を発生させる値1及び値-1が設定される。
【0065】
また、図8において、遅延器302(#k-2)が、新たな第1の遅延器である遅延器302(#k-1)の1つ前段の第0の遅延器として認識され、その両側のディレイラインスイッチ端子dk-2及びdk-1には、夫々APF305(#2)の接続端子i20とi21が新たに接続(設定)され、APF305(#2)の乗算器306(#2)及び308(#2)には共に、フィルタ係数のフィードフォワードゲイン及びフィードバックゲインとして、第0の遅延器に接続されるオールパスフィルタ回路としての小数部の値1の遅延を発生させる値0が設定される。
【0066】
図6の場合と同様に、上述のようにして各APF305の接続(設定)が切り替えられる前に、フィードバック遅延器307の出力が0にクリアされるようにしてよい。
【0067】
図9及び図10は、以上説明した原理に基づいて実行されるピッチベンド制御処理の例を示すフローチャートである。この処理は、図1のCPU101が、ROM102に記憶されたピッチベンド制御処理プログラムをRAM103にロードして実行する処理である。図9及び図10のフローチャートは、APF305(#0)が遅延器302(#k-1)、APF305(#1)が遅延器302(#k)、APF305(#2)が遅延器302(#k+1)の各両端に接続されている時に、発音後にピッチベンドセンサ110によって指定音高の遅延長の整数部である遅延器数k,小数部lの値がL1からL2に変化した場合の、図2のウェーブガイドモデル制御部201及びウェーブガイドモデル演算部202の制御時系列をフローチャートに表した図である。
【0068】
ピッチベンドが開始されると、CPU101は、ステップS1で、L2がL1より大きいのか小さいのか、即ちベンドダウンなのかベンドアップなのかを判定する。
【0069】
L1<L2だった場合、即ちベンドダウンだった場合、CPU101は、ステップS2で、遅延長の小数部lにレートrを加算する。なお、「+=」は左辺の変数値に右辺の変数値を累算する演算を表す。
【0070】
ステップS3でLが目標値よりも大きい場合、CPU101は、ステップS4で、目標値に一致するように、小数部lをl2に一致させる。
【0071】
次に、CPU101は、ステップS5で、遅延器数kが偶数か奇数かを判定する。なお、「%」は遅延器数kの値を2で除算した剰余を算出する演算である。この演算結果が0であれば遅延器数kは偶数、0でなければ遅延器数kは奇数である。
【0072】
kが偶数の場合、CPU101は、ステップS6で、フィルタ係数gに(1)式で示される演算により小数部lから算出される係数を設定する。
【0073】
kが奇数の場合、CPU101は、ステップS8で、1-gに(2)式で示される演算により小数部lから算出される係数を設定する。
【0074】
その後、ステップS7又はステップS9で、g<0又は1-g<0とならなかった場合は、遅延長の整数部である遅延器数kにおいて桁上がりがなかった場合であるから、CPU101は、そのままステップS10にてAPF305(#0)、APF305(#1)、及びAPF305(#2)の各オールパスフィルタ演算を実行し、その後ステップS11で、サンプルを更新する。サンプルの更新とは、ディレイライン301の各遅延器302に入っているデータを1つずつずらし、波形を進めることである。
【0075】
CPU101は、ステップS12で、Lが目標値に到達していると判定した場合は処理を終了するが、到達していないと判定した場合は、到達するまでLにレートrを加算しながら処理を繰り返す。
【0076】
ステップS7又はステップS9で、g<0又は1-g<0となった場合は、遅延長の整数部である遅延器数kにおいて桁上がりした場合である。この場合、CPU101は、ステップS13で、g=0にする。
【0077】
この状態で、CPU101は、ステップS14で、APF305(#0)、APF305(#1)、及びAPF305(#2)の各オールパスフィルタ演算を実行する。この場合、APF305(#1)は遅延器数k、フィルタ係数0で、APF305(#2)は、遅延器数k+1、フィルタ係数1で演算が実行される。APF305(#2)は、フィードバック遅延器の値が0で演算が始まっているため、オールパスフィルタの性質から、i20の信号がそのまま出力されている。一方、APF305(#1)では、g=0で演算されているため、i11の信号がそのまま出力されている。i20とi11の信号は同一である。従って、このタイミングでは、出力選択端子o1とo2に出力される信号は等しくなる。このため、ステップS16でスイッチ310が出力選択端子をo1からo2に切り替えても、ノイズが発生しない。
【0078】
その後、CPU101は、ステップS15で、ステップS11と同様のサンプル更新を実行する。
【0079】
続いて、CPU101は、スイッチ310を出力選択端子o2に切り替える。
【0080】
その後、CPU101は、ステップS17で、APF305(#0)のフィードバック遅延器307(#0)に入っているデータを0にクリアする。
【0081】
その後、CPU101は、ステップS18で、APF305(#0)の入力スイッチi00、i01を、夫々ディレイラインスイッチ端子dk+2、dk+3に接続し直す。また、APF305(#0)のフィルタ係数g0は0から1に変更する。
【0082】
APF305(#0)の接続切り替え後のウェーブガイドモデル演算部202の状態は、図6で前述した通りである。ステップS18の処理が、遅延長の整数部である遅延器数kを+1インクリメントする作業と同等である。図中「++」は+1のインクリメント演算を示す。
【0083】
ステップS18の処理の後、CPU101は、ステップS2の処理に戻り、遅延長を増大させる作業を繰り返す。この時、APF305(#2)がフィルタ係数を変更する対象になる。以降、APF305(#0)、APF305(#1)、及びAPF305(#2)は、遅延器数kがインクリメントされるたび、輪環の昇順で次々にフィルタ係数算出の対象になる。
【0084】
図9のステップS1で、L1>L2であった場合、即ちベンドアップであった場合は、図10のフローチャートのステップS19以降の処理が実行される。L1>L2の場合は、L1<L2の場合に比べて次のような違いがある。
【0085】
まず、CPU101は、ステップS19で、小数部lからレートrを減算する。図中、「-=」は、左辺の変数値から右辺の変数値を減算する演算を表す。
【0086】
また、ステップS24又はステップS26で、g>1又は1-g>1となるかどうかで、遅延長の整数部である遅延器数kが桁下がりするかどうかを判定する。
【0087】
g>1又は1-g>1と判定された場合は、遅延器数kが桁下がりする場合である。この場合、CPU101は、ステップS30で、g=1とする。
【0088】
CPU101は、更にステップS31,S32でAPF305(#0)、APF305(#1)、及びAPF305(#2)の各演算及びサンプル更新を実行する。その後の状態では、APF305(#1)はフィルタ係数g=1で演算が実行され、フィードバックの影響は多少あるものの、i10の信号がほぼそのまま出力されている状態である。APF305(#0)は、フィルタ係数0で演算し続けているため、i01の値がそのまま出力されている状態である。i10とi01の信号はほぼ同一である。従って、ステップS33で、スイッチ310において出力選択端子をo1からo0に切り替えても、ノイズが発生しない。
【0089】
CPU101は、ステップS33で、スイッチ310を出力選択端子o0に切り替える。
【0090】
その後、CPU101は、ステップS34で、APF305(#2)のフィードバック遅延器307(#2)に入っているデータを0にクリアする。
【0091】
その後、CPU101は、ステップS35で、APF305(#2)の接続端子i20、i21を、夫々ディレイラインスイッチ端子dk-2、dk-1に接続(設定)する。
【0092】
APF305(#2)の接続切り替え後のウェーブガイドモデル演算部202の状態は、図8で前述した通りである。ステップS35の処理が、遅延長の整数部である遅延器数kを-1デクリメントする作業と同等である。図中「--」は-1のデクリメント演算を示す。
【0093】
ステップS35の処理の後、CPU101は、ステップS19の処理に戻り、遅延長を減少させる作業を繰り返す。この時、APF305(#0)がフィルタ係数を変更する対象になる。以降、APF305(#0)、APF305(#1)、及びAPF305(#2)は、遅延器数kがデクリメントされるたび、輪環の降順で次々にフィルタ係数算出の対象になる。
【0094】
遅延長が小さくなるピッチ変化処理では、図10のステップS35の説明にあるように、APF305のフィルタ係数を0にして接続を変え、レートrが十分に小さい場合はフィルタ係数が小さい状態で演算が開始されるため、フィードバック側の値が不定(不連続)であっても、次のサンプルで出てくるノイズは小さい。従って、本実施例の変形例として、図11に示すように、APF305(#0)を取り除いた形でAPF305(#1)とAPF305(#2)を演算しておき、図9のステップS18では、APF305(#0)の代わりにAPF305(#1)を繋ぎ変え、図10のステップS35では、APF305(#2)をディレイラインスイッチ端子dk-1及びdkへ繋ぎ変えても、ノイズの影響が小さく遅延器数を変えることができる。この場合、乗算回数を2回減らすことができる。
【0095】
図5では、APF305(#0)とAPF305(#2)において乗算回数を削減できることを説明したが、アルゴリズムやハードウェアの統一性を優先して、乗算演算を残してもよい。最終出力信号y(n)は、発音中のピッチベンドが起きない場合o1に接続されている。この時、APF305(#0)及びAPF305(#2)の出力信号は出力選択端子o0及びo2から出力されないが、前述した発音中のピッチベンドが起きたときのために、演算して用意しておく。
【0096】
以上説明したように、本実施形態では、複数のAPF305をディレイライン301中の隣り合う遅延器302に予め接続しておくことにより、遅延器302内に不定データが入らないようにして、ウェーブガイドモデルが発音中に遅延器302の数が変化する際のノイズを抑制することが可能となる。また、本実施形態では、第1の遅延器に接続されるAPF305以外の2つのAPF305での乗算回数を削減することが可能となる。
【0097】
このようにして、本実施形態によれば、ウェーブガイドモデリング音源において、オールパスフィルタのような小数部遅延ブロックを使用することにより、振幅の周波数依存性をなくしつつ、遅延器の接続数が変化するときのノイズの発生を少ない演算量で抑制することが可能となる。具体的には、乗算回数が1ウェーブガイドモデル当たり最大4回減るという点で優位性がある。これは、例えばピアノであれば、弦が230本程度あるので、もし全弦をモデリングして動作させるならば、乗算が920回減る。
【0098】
また、本実施形態によれば、フィルタ係数を連続的に変化させることができるため、フィルタ係数にエンベロープ制御を容易につけることが可能となる。
【0099】
以上説明した各図面に表されたブロック図は、ソフトウェアによる置き換えが可能である。例えば、図3の構成の全てをソフトウェアで置換した場合は、プロセッサが第0~2の遅延器と夫々のAPF305(#0~#2)のペアの遅延幅を導出する数式からフィルタ係数を算出して出力し、そのうちの第1の遅延器とAPF305(#1)のペアのフィルタ係数で波形を演算し、出力に適用させることで、ソフトウェア処理を実現することができる。また、図6にて説明したAPF305の切り替え動作については、プロセッサが切り替え前の第0~2の遅延器と夫々のAPF305(#0~#2)のペアの遅延幅を導出する数式からフィルタ係数を定期的に出力し、そのうちAPF305(#1)に対応するフィルタ係数が所定の範囲を超えたときを切り替えと見なし、切り替え後は新たな第0~2の遅延器と夫々のAPF305(#0~#2)のペアの遅延幅を導出する数式からフィルタ係数を出力し、そのうちの新たな第1の遅延器とAPF305(#1)のペアのフィルタ係数で波形を演算し、出力に適用させることで、ソフトウェア処理を実現することができる。さらに、回路を用いた実施例とソフトウェアとを組み合わせ、回路の一部をソフトウェアで置き換えることも可能である。
【0100】
また、上述した実施形態では、制御プログラムは、ROM102に記憶されていたが、これに限らず、USBメモリ、CD、DVD等のようなリムーバルの記憶媒体に記憶させてもよいし、或いはサーバに記憶させてもよい。楽音信号発生装置100は、このような記憶媒体から制御プログラムを取得してもよいし、ネットワークを介してサーバから取得するものであってもよい。
【0101】
また、上記実施形態で示したオールパスフィルタは3つとは限らず、4つ以上設けられていてもよい。
【0102】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【0103】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインと、
夫々、前記複数の遅延器のうちのいずれかの遅延器に対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックと、
前記複数の遅延器のうちの任意の1つを、指定音高に対応する遅延を発生する第1の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の前段の遅延器を第0の遅延器に設定し、前記複数の遅延器のうち、前記第1の遅延器の後段の遅延器を第2の遅延器に設定する、少なくとも1つのプロセッサと、
を備え、
前記少なくとも1つのプロセッサは、
前記少なくとも3つの小数部遅延ブロックを、前記第1の遅延器と、前記第0の遅延器と、前記第2の遅延器と、に夫々接続させ、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直す、楽音信号発生装置。
(付記2)
前記少なくとも3つの小数部遅延ブロックは、夫々前記小数部遅延ブロックが対応された前記遅延器と共にオールパスフィルタブロックとして動作する、
付記1に記載の楽音信号発生装置。
(付記3)
前記少なくとも1つのプロセッサは、
前記第1の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックに、前記指定音高に対応する遅延幅の小数部である前記第2の遅延幅に対応するフィルタ係数を設定し、
前記第0の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロック及び前記第2の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックに、夫々値1及び値0の前記第2の遅延幅に対応する値0及び値1のフィルタ係数を設定し、
前記第1の遅延器に対応される前記小数部遅延ブロックである前記オールパスフィルタブロックの出力を、楽音信号及び前記ディレイラインの前記入力へのフィードバック信号として出力する、
付記2に記載の楽音信号発生装置。
(付記4)
前記少なくとも1つのプロセッサは、
前記遅延長の小数部をlとしたときに、前記第1の遅延器が偶数番目又は奇数番目の遅延器である場合に、
g=(1-l)/(1+l) ・・・(1)
の演算式で示される演算により計算される係数gを前記指定音高に対応する遅延幅の小数部である前記第2の遅延幅に対応するフィルタ係数として設定し、前記第1の遅延器が奇数番目又は偶数番目の遅延器である場合に、
g=2×l/(1+l) ・・・(2)
の演算式で示される演算により計算される係数gを用いて算出される係数(1-g)を前記フィルタ係数として設定し、
前記遅延長の小数部lを入力として、前記(1)式又は(2)式の演算式で示される変化をする係数gをエンベロープ値として出力するエンベロープジェネレータブロックを更に備える、
付記1に記載の楽音信号発生装置。
(付記5)
前記第0の遅延器の両端が接続される前記小数部遅延ブロックは、前記第0の遅延器の出力をそのまま出力する演算を実行し、
前記第2の遅延器の両端が接続される前記小数部遅延ブロックは、値0の前記第2の遅延幅に対応する値1のフィルタ係数に対応する値1又は値-1を乗算する各乗算演算の代わりに、前記乗算演算における入力値をそのまま又は符号を変えて前記各乗算演算における出力値として出力する演算を実行する、
付記1に記載の楽音信号発生装置。
(付記6)
付記1に記載の楽音信号発生装置と、
操作子と、
を備えた電子機器。
(付記7)
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインのいずれかの遅延器に夫々対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックを、前記複数の遅延器のうちの、指定音高に対応する遅延を発生する前記遅延器である第1の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の前段に対応された第0の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の後段に対応された第2の遅延器と、に夫々接続させ、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直す、楽音信号発生方法。
(付記8)
コンピュータに、
カスケードに接続され、夫々入力される信号を第1の遅延幅で遅延させる複数の遅延器を備えたディレイラインのいずれかの遅延器に夫々対応されて接続されることにより、入力される信号を前記第1の遅延幅以下の長さの第2の遅延幅で遅延させる、少なくとも3つの小数部遅延ブロックを、前記複数の遅延器のうちの、指定音高に対応する遅延を発生する前記遅延器である第1の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の前段に対応された第0の遅延器と、前記複数の遅延器のうちの、前記第1の遅延器の後段に対応された第2の遅延器と、に夫々接続させる処理と、
前記指定音高の変化に応じて、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、新たな前記第1の遅延器として設定し、前記新たな第1の遅延器の前段の遅延器を新たな第0の遅延器に設定し、前記新たな第1の遅延器の後段の遅延器を新たな第2の遅延器に設定する場合、接続されている前記第0の遅延器及び接続されている前記第2の遅延器のいずれか一方を、前記小数部遅延ブロックに接続し続けさせるとともに、前記新たな第0の遅延器及び前記新たな第2の遅延器の少なくともいずれか一方を、前記新たな第1の遅延器に接続された前記小数部遅延ブロック以外の前記小数部遅延ブロックの少なくともいずれか一方に接続し直させる処理と、を実行させるプログラム。
【符号の説明】
【0104】
100 楽音信号発生装置
101 CPU
102 ROM
103 RAM
104 DSP又はウェーブガイドモデル回路
105 ADC又はデジタル入力ポート
106 ADC
107 デジタル入力ポート
108 DAC/増幅器
109 音量センサ
110 ピッチベンドセンサ
111 音高指定スイッチ
201 ウェーブガイドモデル制御部
202 ウェーブガイドモデル演算部
203 音高情報
204 ベンド情報
205 音量情報
206 励振原音
207 ボリューム
208、304、306、308 乗算器
209 楽音信号
301 ディレイライン
302 遅延器
303 フィードバック信号
307 フィードバック遅延器
309、311 加算器
310 スイッチ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11