説明

電子楽器

【課題】段の異なる鍵盤の出力を分けて、異なる音響効果を付与でき、且つ複数段の鍵盤個々にサスティン効果が付与/設定できるハモンドオルガンをエミュレートする電子楽器を提供する。
【解決手段】音程の同じ1つのリソース1a〜1nの上下段の出力について、加算器2a〜2nで加算されて、その出力値の絶対値を絶対値回路ABS[x]3a〜3nでとり、ローパスフィルタLPF[x]4a〜4nで、低い周波数側の楽音データを取り出して、取得された振幅値から、位相の一致及びずれを、CPUによってモニタリングしており、それによって、上記振幅取得手段の出力が最大値でない場合には、CPUの読み出し指示によって、アドレス発生器の一方の読み出しアドレスが変更され、上記1組のリソース1a〜1nの一方の周波数が変更される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハモンドオルガンをエミュレートする電子楽器に関する。
【背景技術】
【0002】
下記特許文献1では、ハモンドオルガンをエミュレートする場合、図12のブロック回路図に示すように、同じ音程のホィールに対し、1個のリソース(音源)を割り当て、出力を分けて発音させていた。
【特許文献1】特開2009−48104号
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、上下二段の鍵盤を備えたオルガンの場合、上記特許文献1の構成を用いると以下の不都合がある。
(1)上記特許文献1の構成のリソース構造では、上下鍵盤の出力を分けて、異なる効果(コーラス効果など)を付与することができない。
(2)サスティン効果を表現するために、離鍵時に“SCLevel[s]+=y”(離鍵時はyは負の値)を、エンベロープジェネレータに与えて用い、初期値(y加算前)から目的値(y加算後)を、エンベロープジェネレータの時定数により補間することによって得る、としたいが、上記特許文献1の構成のリソース構造では、上下鍵盤個々にサスティン効果を付与/設定し難い。
【0004】
本発明は、以上のような問題に鑑み創案されたもので、段の異なる鍵盤の出力を分けて、異なる音響効果を付与でき、且つ複数段の鍵盤個々にサスティン効果が付与/設定できる電子楽器を提供せんとするものである。
【課題を解決するための手段】
【0005】
本発明の構成は、トーンホイールをエミュレートする電子楽器であって、
演奏情報を入力する複数段の鍵盤と、
発音する音程数と上記鍵盤段数に応じて設けられた複数組の発音手段と、
上記発音手段の1組であって同一の音程を有するものの位相差を検出する、上記発音する音程数に応じた検出手段とを備え、
上記検出手段が上記発音手段の1組の位相差を検出した場合に、上記1組の位相を合わせるようにしたことを基本的特徴としている。
【0006】
上記構成による鍵盤を、例えば、上下2段の構成として用いた場合、その発音リソース(発音手段)は、後述する図3に示すような構成となる。上下段の鍵盤(Upper/Lower)で同じ音程の音を同時に出力する場合、位相を一致させながら、上下で異なる効果を付与できるようになる。また、上下の鍵盤の個々にサスティン効果が付与/設定できるようになる。
【0007】
一方、チューニングイベントやグライド効果(オートベンド効果)によって周波数が変更された場合、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになることになる。上記特許文献1の構成によっても、この課題を解決することはできるが、発音が休止している際でないと、位相差が修正されないという問題がある。
【0008】
本発明の構成では、上記検出手段[後述する実施例では図2(a)に示すような加算器、絶対値回路ABS[x]、ローパスフィルタLPF[x]及びCPUによるモニタリングなどの構成からなる]により、周期的に上下鍵の位相差が確認されており、上記発音手段の1組の位相差が検出された場合に、(上記CPUからの制御命令により)上記1組の位相を合わせるようにしている[後述する時変数処理フローを示す図11では、位相差がある(レベルが最大値でない)場合、一方の周波数を僅かにずらし、またレベルが最大であれば、周波数差を元に戻す]。そのため、位相が再度合わせられるようになり、効果を上下鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されることになる。
【0009】
上記検出手段は、
上記1組の発音手段の出力を加算する加算手段[図2(a)では加算器2a〜2n]と、
上記加算手段の出力の振幅を取得して出力する振幅取得手段[図2(a)では音程の同じ1つの発音手段の出力につき上記加算手段で加算された出力値の絶対値をとる絶対値回路ABS[x]3a〜3n及びローパスフィルタLPF[x]4a〜4nの組み合わせで、位相の分かる振幅値を取得する]とを含み、
[上記図2(a)の構成ではCPU102によるモニタリングにより]上記振幅取得手段の出力が所定値でない場合に、(上記CPU102の読み出し指示によるアドレス発生器10a又は10bの一方の読み出しアドレスの変化量が変更されることで)上記1組の発音手段の一方の周波数を変更し、
上記振幅取得手段の出力が所定値に達したとき(実施例の構成では振幅値が最大になった時に位相が合っていることになる)に、再度上記1組の発音手段の周波数を同一にする(上記CPU102の読み出し指示によるアドレス発生器10a及び10bの双方の読み出しアドレスの変化量が同じにされる)。
【0010】
上記1組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記1組の発音手段の一方または両方が発音していても実施できるようにすることが望ましい。
【発明の効果】
【0011】
以上のような本発明のトーンホイールをエミュレートする電子楽器の構成によれば、複数段の鍵盤で同じ音程の音を同時に出力する場合、位相を一致させながら、上下で異なる効果を付与できるようになり、また、上下の鍵盤の個々にサスティン効果が付与/設定できるようになるという優れた効果を奏し得る。
【0012】
さらに、チューニングイベントやグライド効果(オートベンド効果)によって周波数が変更され、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになっても、上記検出手段により、周期的に上下鍵の位相差が確認され、上記発音手段の1組の位相差が検出されれば、上記1組の位相を合わせるように制御でき、そのため、位相が再度合わせられるようになり、効果を複数段の鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されるようになる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態を、添付図面を使用して、説明する。
【実施例】
【0014】
図1は、本発明のハモンドオルガンをエミュレートする構成が用いられた電子鍵盤楽器の全体構成を示すブロック図である。
【0015】
同図に示すように、本電子鍵盤楽器は、システムバス100によって、それにつながった各回路が、CPU102により制御され、電子鍵盤楽器として機能されることになる。
【0016】
該システムバス100には、CPU102、プログラムROM104、RAM106、インターフェース108、音源116、DSP118がつながっている。
【0017】
上記CPU102は、後述するプログラムROM104より、そこに記憶されたプログラムやデータなどを読み出して、実行することで、上記システムバス100でつながっている上記各回路を電子鍵盤楽器として全体を制御すると共に、他の各回路の状態を監視して、必要に応じて適当な制御指令を出力する。特に本構成では、後述する図2(a)で示される、音程の同じ1つの発音手段1a〜1n(図1では音源116に相当する)の上下段の出力につき加算器2a〜2nで加算された出力値の絶対値をとる絶対値回路ABS[x]3a〜3n及びローパスフィルタLPF[x]4a〜4nの組み合わせで構成される振幅取得手段から取得された振幅値から、位相の一致及びずれを、本CPU102によってモニタリングしている。
【0018】
プログラムROM104は、上述のように、CPU102において用いられるプログラムが記憶されると共に、必要な各種データが記憶されている。
【0019】
RAM106は、CPU102による制御において発生する各種パラメータやデータ等が一時的に記憶される。特に後述するループカウンタや各種のレジスタがあり、後述するように、その状態が参照されたり、更新処理が行われる。
【0020】
インターフェース(I/F)108は、MIDIの入出力インタフェースの他、後述する本電子鍵盤楽器に設けられたパネル(ドローバーを模擬するパネル操作子がある)をスキャンする回路110、上段の鍵盤112をスキャンする回路112a及び下段の鍵盤114をスキャンする回路114bの入出力インターフェースであって、システムバス100へのデータや命令の入出力をつかさどる。
【0021】
本電子鍵盤楽器には、操作パネル(図示無し)、ハモンドオルガンのように上下2段の鍵盤[図2(a)では上段キー及び下段キー夫々のキースイッチ(KSW)C1やC#1が図示されている]などが設けられている。操作パネル(図示無し)は、発生すべき楽音の音色を選択する音色スイッチ(もちろんハモンドオルガンも含まれる)やコーラス効果などのエフェクト設定のためのスイッチ、或いはハモンドオルガン選択時のドローバースイッチ等が設けられていて、この操作パネルから設定された情報は、パネルをスキャンする回路110のスキャンによってその設定値が検出され、インターフェース108及びそれがつながっているシステムバス100を介して、CPU102に供給される。
【0022】
音源116(Tone Generator)は、図2(a)に示すような、同時に複数の発音を行なうため時分割制御されるnチャンネルを備えたリソース(RESOURCE)1a〜1nからなり、音源116に対して共通に備えられた波形メモリ12(a、b)から読み出される楽音データが出力される。この音源116については、図3において後述する。
【0023】
DSP118は、音源116から出力された楽音データの上下段別々に各音響効果を加える。このDSP116には、ディレイメモリ120が備えられており、当然ディレイ効果が付与される。
【0024】
このDSP118から出力された楽音データは、デジタルアナログコンバータ122で、デジタルデータからアナログデータに変換され、さらにアンプ124により増幅されて、スピーカ126により、外部に楽音として出力される。
【0025】
図2(a)には、本電子鍵盤楽器がドローバー式(例えばハモンド)オルガンとしてエミュレートする場合の回路構成を示すブロック図である。
【0026】
ここで、Note C1、Note C#1、…、〜Note C5(途中半音などを省略)の各音程の楽音データを出力する音源116(図ではRESOUCE1a〜1nとして示される)は、夫々同音程の上下2段の鍵盤に対応する出力があるのが1つの特徴であり、例えば上段鍵盤112のC1のC1の鍵盤(KSW)が押鍵された場合、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、上段側に出力され、それに、ドローバーの出力D0〜D8が掛け合わされて、上段側の出力(Upper OUTPUT)となる。また同様に下段鍵盤114のC1のC1の鍵盤(KSW)が押鍵された場合にも、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、下段側に出力され、それに、ドローバーのレベルD0〜D8(後述する図7などの処理フローのDBLevel[0]〜DBLevel[8]に相当する)が掛け合わされて、下段側の出力(Lower OUTPUT)となる。これらの鍵盤は上段側及び下段側で夫々複数の鍵盤が押鍵されても、同様な処理がなされる。これらのKSW C1、KSW C#1…は、押鍵すると同時に9系列がONになるスイッチであり、後述する図7などの処理フローでは“SCLevel[s] += y”を9回ループすることに相当する。尚、図2(b)は、上記KSW xxの構成を模式的に示した回路図である。実際には、このゲート(GATE)9個に代わって、後述する図7のステップS414〜S420(押鍵時)又はステップS434〜S440(離鍵時)が9回動作することになる。
【0027】
この音源116は、図3に示すような構成を夫々有している。1つの音源、例えばNote C1の音源について、上段側の鍵盤用と下段側の鍵盤用との同様な回路構成を、一緒に備えている。上段側で説明すると、CPU102の指示により、アドレス発生器10aは、CPU102に指示されたアドレスから波形メモリ12aに記憶された波形データが読み出され、波形デコーダ14aにより、デコードされ、楽音データが読み出される。一方後述する図8より浮動小数点形式のエンベロープデータが送られてくるため、それがエンベロープジェネレータ16aに与えられて、エンベロープを生成し、該エンベロープが、乗算器18aによって、上記楽音データに乗算される。また同じくCPU102によりプログラムROM104からラウドネスデータが読み出され、ラウドネス補間器20aに与えられて、それによって補間係数が出力され、該補間係数が、乗算器22aによって、上記楽音データに乗算され、特性を補間するラウドネスコントロールが行われ、上段側のNote C1の音源の出力(Upper Output)とされる。
【0028】
下段側の鍵盤用の音源についても、同様に処理されて、下段側のNote C1の音源用の出力(Lower Output)とされる。
【0029】
これらの音源116は、Note C1用〜Note C5用まで、押鍵の有無に関わらず楽音データを出力し続け、それらに対し、例えば上段鍵盤のC1のC1の鍵盤(KSW)が押鍵された場合、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、上段側に出力され、それに、ドローバーの出力D0〜D8が掛け合わされて、上段側の出力(Upper OUTPUT)となる。また同様に下段鍵盤のC1のC1の鍵盤(KSW)が押鍵された場合にも、Note C1、Note C2、Note G2、Note C3、Note G3、Note C4、Note E4、Note G4、Note C5が、下段側に出力され、それに、ドローバーのレベルD0〜D8が掛け合わされて、下段側の出力(Lower OUTPUT)となる。
【0030】
本発明の構成では、図2(a)に示すように、音程の同じ1つの音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の上下段の出力について、上述のように、加算器2a〜2nで加算されて、その出力値の絶対値を、振幅取得手段の1つを構成する絶対値回路ABS[x]3a〜3n(入力の絶対値を出力する)でとり、もう1つの振幅取得手段の構成要素である、ローパスフィルタLPF[x]4a〜4n(入力にローパスフィルタをかける)で、低い周波数側の楽音データを取り出して、取得された振幅値から、位相の一致及びずれを、上記CPU102によってモニタリングしている。この図に示されるように、入力の絶対値を出力する絶対値回路ABS[x]3a〜3nと入力にローパスフィルタをかけるローパスフィルタLPF[x]4a〜4nとの両方で上段及び下段双方の混合信号(上記加算器2a〜2nの加算で混合されている)の振幅エンベロープが得られるようになる。その振幅エンベロープの値をCPU102が監視(モニタリング)して、その値が最大値(MAX)になった時点で、位相があったものとして、周波数差をゼロにする。
【0031】
このCPU102によるモニタリングによって、上記振幅取得手段の出力(振幅値)が所定値(最大値MAX)でない場合には、CPU102の読み出し指示によって、アドレス発生器10a又は10bの一方の読み出しアドレスの変化量が変更され、それによって、上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の一方の周波数が変更される。
【0032】
そのような調整によって、上記振幅手段の出力が所定値(MAX)に達したときに位相が合っているとして、再度上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の周波数を同一にする(上記CPU102の読み出し指示によるアドレス発生器10a及び10bの双方の読み出しアドレスの変化量が同じにされる)。
【0033】
加算器2a〜2n、及び上記加算値の絶対値をとる絶対値回路ABS[x]3a〜3n及びローパスフィルタLPF[x]4a〜4nの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、CPU102によるモニタリングが行われることで構成される上記検出手段に向けての、上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の出力は、上述した図2(a)に示すように、本電子鍵盤楽器の楽音を生成するための出力とは、別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記1組の発音手段の一方または両方が発音していても、実施できることになる。
【0034】
以下本実施例構成の処理フローを、図4〜図11により、詳述する。
【0035】
図4は、本電子鍵盤楽器のメイン処理フローを示すフローチャートである。同図に示すように、スイッチオンにより、各回路の初期化処理がなされ(ステップS100)、その後イベントの有無が検出される(ステップS102)。
【0036】
イベントが検出された場合(ステップS102;Y)、イベント処理がなされる(ステップS104)。このイベント処理後又は上記ステップS102でイベントが検出されなかった場合(ステップS102;N)、時変数処理がなされ(ステップS106)、その後ステップS102の検出処理に復帰する。このループは、電源OFFになるまで繰り返される。
【0037】
図5は、図4のステップS100の初期化処理のフローを示すフローチャートである。同図に示すように、まず回路(LSI)の初期化処理がなされ(ステップS200)、ドローバーのパラメータの初期化処理(ステップS202)、レベルのパラメータの初期化処理(ステップS204)、及びその他のレジスタやループカウンタ等の初期化処理(ステップS206)が行われる。
【0038】
図6は、図4のステップS104のイベント処理のフローを示すフローチャートである。同図に示すように、まず上鍵盤のイベントの有無がチェックされ(ステップS300)、上鍵盤のイベントが有れば(ステップS300;Y)、上鍵盤のイベント処理がなされる(ステップS302)。
【0039】
ステップS300の上鍵盤のイベントが無ければ(ステップS300;N)、下鍵盤のイベントの有無がチェックされ(ステップS304)、下鍵盤のイベントが有れば(ステップS304;Y)、下鍵盤のイベント処理がなされる(ステップS306)。
【0040】
ステップS304の下鍵盤のイベントが無ければ(ステップS304;N)、ドローバーのイベントの有無がチェックされ(ステップS308)、ドローバーのイベントが有れば(ステップS308;Y)、ドローバー処理(ステップS310)がなされ、反対にドローバーのイベントが無ければ(ステップS308;N)、その他の処理が行われる(ステップS312)。
【0041】
図7は、図6のステップS302及びステップS306の上段鍵盤及び下段鍵盤のイベント処理のフローを示すフローチャートである(上下段とも同一の処理を行うので1つの図面で示す)。同図に示すように、まず押鍵又は離鍵の鍵番号(KeyNumber)が、変数kに代入される(ステップS400)。そしてその鍵イベントが押鍵であるか否かがチェックされ(ステップS402)、押鍵であれば(ステップS402;Y)、ステップS404〜ステップS422の処理ルーチンへ進む。反対に押鍵で無ければ(ステップS402;N)、ステップS424〜ステップS442の処理ルーチンへ進む。
【0042】
押鍵である場合(ステップS402;Y)、パーカス音が付加されているか否かがチェックされる(ステップS404)。ここで、パーカス音とは、押鍵時に鋭く立ち上がった後ゆっくり減衰する付加音のことである。エンベロープを別途作成して本システム外(本構成を利用しても良い。その場合パーカス音用に別途ドローバーを用意する)で発音する。
【0043】
このパーカス音が付加されている場合(ステップS404;Y)、さらに現在押鍵状態の鍵数(OnCount)が0であるか否かがチェックされる(ステップS406)。
【0044】
現在押鍵状態の鍵数(OnCount)が0であれば(ステップS406;Y)、全離鍵状態から最初の押鍵なのでパーカスエンベロープ(efpEnv)をスタート(efpEnv←PLevel)させる(ステップS408)。その後、或いはステップS404でパーカス音が付加されていない場合(ステップS404;N)、さらにはステップS406で現在押鍵状態の鍵数(OnCount)が0で無い場合(ステップS406;N)、現在押鍵状態の鍵数であるOnCountがインクリメントされる(ステップS410)。
【0045】
以下の処理は、ドローバー数だけループする処理である。まず、ループ変数iが0にセットされる(ステップS412)。iはここでドローバー番号を示すことになる。
【0046】
そして、D0〜D8(レジスタに読取済)のうち、i番目の値が変数“y”に代入(y = DBLevel[i])される(ステップS414)。その後、変化するリソース番号“s”が取得(s = GetSRC(i,k))される(ステップS416)。
【0047】
さらに、リソースsのレベルの現在値(SCLevel[s])に変数yが加えられる(ステップS418)。
【0048】
その後、加えられた値がSCLevelにセットされてリソースに転送(ENV 転送)される(ステップS420)。
【0049】
そしてインクリメントされたループ変数iが9未満か否かがチェックされる(ステップS422)。ここでは、ドローバー番号が最後か否かをチェックしている。
【0050】
ループ変数iが9未満であれば(ステップS422;Y)、ステップS414に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【0051】
逆に、ループ変数iが9未満で無ければ(ステップS422;N)、すなわち、最後のドローバー番号であれば、鍵イベント処理を終了する。
【0052】
一方、上記ステップS402で、鍵イベントが押鍵で無ければ(ステップS402;N)、ステップS424〜ステップS442の処理ルーチンへ進む。
【0053】
鍵イベントが押鍵で無い場合(ステップS402;N)、パーカス音が付加されているか否かがチェックされ(ステップS424)、パーカス音が付加されている場合(ステップS424;Y)、さらに現在押鍵状態の鍵数(OnCount)が1であるか否かがチェックされる(ステップS426)。
【0054】
現在押鍵状態の鍵数(OnCount)が1であれば(ステップS426;Y)、全離鍵状態になる最後の離鍵なのでパーカスエンベロープ(efpEnv)を終了させる(efpEnv←0)させる(ステップS428)。その後、或いはステップS424でパーカス音が付加されていない場合(ステップS424;N)、さらにはステップS426で現在押鍵状態の鍵数(OnCount)が1で無い場合(ステップS426;N)、現在押鍵状態の鍵数であるOnCountがデクリメントされる(ステップS430)。
【0055】
以下の処理は、ドローバー数だけループする処理である。まず、ループ変数iが0にセットされる(ステップS432)。iはここでドローバー番号を示すことになる。
【0056】
そして、D0〜D8(レジスタに読取済)のうち、i番目の値が変数“y”に代入(y = DBLevel[i])される(ステップS434)。その後、変化すべきリソース番号“s”が取得(s = GetSRC(i,k))される(ステップS436)。
【0057】
さらに、リソースsのレベルの現在値(SCLevel[s])から変数yが減らされる(ステップS438)。
【0058】
その後、減ぜられた値がSCLevelにセットされてリソースに転送(ENV 転送)される(ステップS440)。
【0059】
そしてインクリメントされたループ変数iが9未満か否かがチェックされる(ステップS442)。ここでは、ドローバー番号が最後か否かがチェックされている。
【0060】
ループ変数iが9未満であれば(ステップS442;Y)、ステップS434に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【0061】
逆に、ループ変数iが9未満で無ければ(ステップS442;N)、すなわち、最後のドローバー番号であれば、鍵イベント処理を終了する。
【0062】
図8は、上記図7のステップS420及びステップS440、さらには後述する図9のステップS624及び図11のステップS800で処理されるエンベロープ転送処理のフローを示すフローチャートである。同図に示すように、エンベロープデータxが上記図3のエンベロープジェネレータ16a、16bに与えられると、関数fxl(x)により、固定小数点データxから浮動小数点のエンベロープデータx0が得られ(ステップS500)、該エンベロープデータx0が、図3のエンベロープジェネレータ16a、16bに与えられて、エンベロープを生成し、該エンベロープが、乗算器18a、18bによって、上下段の楽音データに夫々乗算され(ステップS502)、夫々のリソースに送られる。
【0063】
図9は、図6のステップS310のドローバー処理の処理フローを示すフローチャートである。鍵同様ドローバーも上下段とも同一の処理を行うので1つの図面で示す。まず、最新のドローバー値D0〜D8がレジスタDBLevelに取得される(ステップS600)。
【0064】
そして、ループ変数iが0にセットされ、リソース番号がループ変数iとされる(ステップS602)。
【0065】
リソースiは発音中か否かがチェックされ(ステップS604)、発音中でなければ(ステップS604;N)、後述するステップS620にジャンプする。
【0066】
一方、リソースiが発音中であれば(ステップS604;Y)、リソースレベルSCLevelの計算初期値が0にセットされる(ステップS606)。
【0067】
その後ドローバー番号がループ変数jとされる(ステップS608)。
【0068】
さらに関数GetKey(i,j)により、リソースi、ドローバーjに対応する鍵kが得られる(ステップS610)。
【0069】
またレジスタisKeyOn(k)がチェックされ、鍵kが押鍵状態か否かが判定される(ステップS612)。鍵kが押鍵状態でなければ(ステップS612;N)、後述するステップS618にジャンプする。
【0070】
反対に鍵kが押鍵状態であれば(ステップS612;Y)、レジスタDBLevelのj番目の値(=Dj)が変数yに読み出される(ステップS614)。
【0071】
さらに変数yがリソースiのソースレベルに加算される(ステップS616)。
【0072】
その後、インクリメントされたループ変数jが9未満か否かがチェックされる(ステップS618)。ここでは、ドローバー番号が最後か否かがチェックされている。
【0073】
インクリメントされたループ変数jが9未満であれば(ステップS618;Y)、ステップS610に復帰して、上記処理を繰り返す。すなわち、最後のドローバー番号でなければ、次のドローバーに移って、上記の処理をループする。
【0074】
逆に、インクリメントされたループ変数jが9未満で無ければ(ステップS618;N)、すなわち、最後のドローバー番号であれば、ループ変数iがインクリメントされ(ステップS620)、次のリソース(番号)に移行する。
【0075】
移行したリソースが最後のリソースか否かがチェックされ(ステップS622)、最後のリソースでなければ(ステップS622;N)、ステップS604に復帰して、そのリソースに対し、上記のドローバーに関する処理を繰り返すループ処理を行う。
【0076】
逆に、移行したリソースが最後のリソースであれば(ステップS622;Y)、変更した全てのリソースレベルSCLevelがリソースに転送される(ステップS624)。
【0077】
図10は、図6のステップS312のその他の処理の処理フローを示すフローチャートである。ここでは、まず、そのイベントがチューニングイベントであるか否かがチェックされる(ステップS700)。そのイベントがチューニングイベントであれば(ステップS700;Y)、チューニング変更処理が行われる(ステップS702)。チューニングイベントでなければ(ステップS700;N)、さらにその他のイベント処理がなされる(ステップS704)。
【0078】
図11は、図4のステップS106の時変数処理の処理フローのフローチャートである。まず、ドローバー変更に伴うもの以外(例えばサステインの終了など)の新規エンベロープ値がリソース(音源)に転送される(ステップS800)。
【0079】
そして、出力音量などの、非イベント処理が実行される(ステップS802)。
【0080】
ループ変数iに0をセットし、ループ変数iが設定される(ステップS804)。
【0081】
加算器2i、絶対値回路3i、ローパスフィルタ4iを経由してi番目のリソース(音源)の組の加算レベルが確認(モニタリング)が確認され、その値がMAXか否かがチェックされる(ステップS806)。
【0082】
モニタリングされたi番目のリソース(音源)の組の加算レベルがMAXであれば(ステップS806;Y)、位相が一致しているので、上段の周波数(fu[i])と下段の周波数(fl[i])が一致しているか否かが確認される(ステップS812)。周波数が一致していない場合(ステップS812;N)、位相一致作業は終了していないので、これを終了させるために上段の周波数と下段の周波数を一致させる(ステップS814)、即ちCPU102からアドレス発生器10a又は10bの一方に、読み出しアドレス変更量の変更指示がなされて実行される。その後ステップS816に進む。周波数が一致している場合、すでに位相一致作業が終了しているのでそのままステップS816に進む。
【0083】
反対に、モニタリングされたi番目のリソース(音源)の組の加算レベルがMAXでなければ(ステップS806;N)、位相が一致していないので、上段の周波数(fu[i])と下段の周波数(fl[i])が一致しているか否かが確認される(ステップS808)。
【0084】
上段の周波数(fu[i])と下段の周波数(fl[i])が一致している場合(ステップS808;Y)は、位相一致作業が開始されていないので、これを開始するために上段の周波数と下段の周波数をずらす処理がなされる(ステップS810)、即ちCPU102からアドレス発生器10a又は10bの一方に、読み出しアドレス変更量の変更指示がなされて実行される。その後ステップS816に進む。
【0085】
また、上記ステップS808で、上段の周波数(fu[i])と下段の周波数(fl[i])が一致していない場合(ステップS808;N)は、位相一致作業中であるので、そのままステップS816に進む。
【0086】
上記ステップS810、ステップS814の処理後、或いはステップS808で、上段の周波数(fu[i])と下段の周波数(fl[i])が一致していない場合(ステップS808;N)、またはステップS812で、上段の周波数(fu[i])と下段の周波数(fl[i])が一致している場合、ループ変数iがインクリメントされて(ステップS816)、次のリソースに移行する。
【0087】
移行したリソースが最後のリソースか否かがチェックされ(ステップS818)、最後のリソースでなければ(ステップS818;N)、ステップS806に復帰して、そのリソースに対し、上記の位相を合わせる処理を繰り返すループ処理を行う。
【0088】
逆に、移行したリソースが最後のリソースであれば(ステップS818;Y)、そこで上記時変数処理は終了する。
【0089】
以上詳述した本実施例の構成によれば、図2(a)に示すように、音程の同じ1つの音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の上下段の出力について、上述のように、加算器2a〜2nで加算されて、その出力値の絶対値を振幅取得手段の1つを構成する絶対値回路ABS[x]3a〜3nでとり、もう1つの振幅取得手段の構成要素であるローパスフィルタLPF[x]4a〜4nで、低い周波数側の楽音データ(振幅値のエンベロープ)を取り出して、取得された振幅値から、位相の一致及びずれを、上記CPU102によってモニタリングしている。
【0090】
このCPU102によるモニタリングによって、上記振幅取得手段の出力(振幅値)が最大値MAXでない場合には、CPU102の読み出し指示によって、アドレス発生器10a又は10bの一方の読み出しアドレスの変更量が変更され、それによって、上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の一方の周波数が変更される。
【0091】
位相を一致させる際に、上下段の組になるリソース(音源)の一方の周波数をずらすが、このときの周波数差が大きいと、操作者によってはずれを聞きとり、違和感を感じることがある。この観点からは、上記周波数差は可能な限り小さいことが望ましい。
【0092】
しかし、周波数差があまり小さいと位相が一致するまでにかかる時間がかかり過ぎるので、この観点からは周波数差は可能な限り大きいことが望ましい。従って、上記ずれた側のリソース(音源)の周波数は、ずれていない側のリソース(音源)の周波数に対して周波数弁別閾近辺であるのが最も望ましい。
【0093】
上記組になるリソース(音源)の一方の周波数をずらす代わりに、両方のリソース(音源)の周波数をそれぞれ逆方向にずらしても良い。この場合も一方の周波数は他方の周波数に対して上記周波数弁別閾近辺近辺にあることが最も望ましい。
【0094】
一方のリソース(音源)の周波数を他方に対して上記周波数弁別閾近辺とすることにより、操作者に違和感を与えない状態を保ちつつ、位相を一致させるまでにかかる時間を最短とすることができる。
【0095】
周波数弁別閾は各リソース(音源)が出力する波形によって異なるので、音色を切り替える毎に、上記ずらす周波数を、該切り替えられた音色に応じて変更してもよい。
【0096】
そのような調整によって、上記振幅手段の出力(振幅値)が最大値MAXに達したときに、位相が合っているとして、再度上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の周波数を同一にする(上記CPU102の読み出し指示によるアドレス発生器10a及び10bの双方の読み出しアドレスの変更量が同じにされる)。
【0097】
加算器2a〜2n、及び上記加算値の絶対値をとる絶対値回路ABS[x]3a〜3n及びローパスフィルタLPF[x]4a〜4nの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、CPU102によるモニタリングが行われることで構成される上記検出手段に向けての、上記1組の音源116[図2(a)では発音手段を構成するリソース1a〜1nに相当する]の出力は、上述した図2(a)に示すように、本電子鍵盤楽器の楽音を生成するための出力とは、別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記1組の発音手段の一方または両方が発音していても、実施できることになる。
【0098】
従って、上下段の鍵盤で同じ音程の音を同時に出力する場合、位相を一致させながら、上下段で異なる音響効果を付与できるようになり、また、上下段の鍵盤の個々にサスティン効果が付与/設定できるようになる。
【0099】
さらに、チューニングイベントやグライド効果(オートベンド効果)によって周波数が変更され、効果が終了して、周波数が戻された後も、上下鍵盤の位相がずれたままになっても、上記検出手段(加算器2a〜2n、及び上記加算値の絶対値をとる絶対値回路ABS[x]3a〜3n及びローパスフィルタLPF[x]4a〜4nの組み合わせで、位相の分かる振幅値を取得する振幅取得手段とを含み、CPU102によるモニタリングが行われることで構成される)により、周期的に上下鍵の位相差が確認され、上記発音手段を構成するリソース1a〜1nの1組の位相差が検出されれば、上記1組の位相を合わせるように制御でき、そのため、位相が再度合わせられるようになり、音響効果を上下段の鍵盤で別々に設定できる上に、発音中であっても、位相差が生じ難いし、たとえ生じても補正されるようになる。
【0100】
尚、本発明の電子楽器は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0101】
例えば、加算器2a〜2n、絶対値回路ABS[x]3a〜3n、ローパスフィルタLPF[x]4a〜4nを音程数だけ用意するのに代えて、夫々ただ一個を用意し、入力にCPU102が制御可能なセレクタを介して各リソース(音源)の組に接続するようにし、CPU102が上記モニタリングを行う際の加算器入力をi番目のリソース(音源)の組に接続するようにしてもよい。
【0102】
また、モニタリングを行うリソース(音源)の組のいずれか一方が発音中かどうかを調べ、両方が発音中ならずらす周波数を上記周波数弁別閾近辺とし、一方または両方が発音していない場合は、該発音していない側のリソース(音源)をずらすこととし、周波数差も両方が発音中の場合より大きくすることで、位相が合うまでの平均時間をより短時間とすることができる。さらにその他の変更を加えても良い。
【産業上の利用可能性】
【0103】
本発明の電子楽器は、電子オルガン、電子ピアノ、デジタルシンセサイザやモデリングシンセサイザなどに適用できる。
【図面の簡単な説明】
【0104】
【図1】本発明のハモンドオルガンをエミュレートする構成が用いられた電子鍵盤楽器の全体構成を示すブロック図である。
【図2】本電子鍵盤楽器がドローバー式(例えばハモンド)オルガンとしてエミュレートする場合の回路構成を示すブロック図及びKSW xxの構成を模式的に示した回路図である。
【図3】リソース1a〜1nである音源116の回路ブロック図である。
【図4】本電子鍵盤楽器のメイン処理フローを示すフローチャートである。
【図5】図4のステップS100の初期化処理のフローを示すフローチャートである。
【図6】図4のステップS104のイベント処理のフローを示すフローチャートである。
【図7】図6のステップS302及びステップS306の上段鍵盤及び下段鍵盤のイベント処理のフローを示すフローチャートである。
【図8】エンベロープ転送処理のフローを示すフローチャートである。
【図9】図6のステップS310のドローバー処理の処理フローを示すフローチャートである。
【図10】図6のステップS312のその他の処理の処理フローを示すフローチャートである。
【図11】図4のステップS106の時変数処理の処理フローのフローチャートである。
【図12】特許文献1の従来構成を示すブロック図である。
【符号の説明】
【0105】
1a〜1n リソース(発音手段)
2a〜2n 加算器
3a〜3n 絶対値回路ABS[x]
4a〜4n ローパスフィルタLPF[x]
10a、10b アドレス発生器
12a、12b 波形メモリ
14a、14b 波形デコーダ
16a、16b エンベロープジェネレータ
18a、18b、22a、22b 乗算器
20a、20b ラウドネス補間器
100 システムバス
102 CPU
104 プログラムROM
106 RAM
110 パネルスキャン回路
112、114 鍵盤
112a、114b 鍵盤スキャン回路
116 音源(リソースと同じ)
118 DSP
120 ディレイメモリ
122 デジタルアナログコンバータ
124 アンプ
126 スピーカ

【特許請求の範囲】
【請求項1】
トーンホイールをエミュレートする電子楽器において、
演奏情報を入力する複数段の鍵盤と、
発音する音程数と上記鍵盤段数に応じて設けられた複数組の発音手段と、
上記発音手段の1組であって同一の音程を有するものの位相差を検出する、上記発音する音程数に応じた検出手段とを備え、
上記検出手段が上記発音手段の1組の位相差を検出した場合に、上記1組の位相を合わせるようにしたことを特徴とする電子楽器。
【請求項2】
上記検出手段は、
上記1組の発音手段の出力を加算する加算手段と、
上記加算手段の出力の振幅を取得して出力する振幅取得手段とを含み、
上記振幅取得手段の出力が所定値でない場合に、上記1組の発音手段の一方の周波数を変更し、
上記振幅取得手段の出力が所定値に達したときに、再度上記1組の発音手段の周波数を同一にすることを特徴とする請求項1に記載の電子楽器。
【請求項3】
上記1組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記1組の発音手段の一方または両方が発音していても実施できるようにしたことを特徴とする請求項1に記載の電子楽器。
【請求項4】
上記1組の発音手段の、上記検出手段への出力は、上記電子楽器の楽音を生成するための出力とは別途設けられ、上記位相差の検出、周波数の変更、および周波数を同一にすることを、上記1組の発音手段の一方または両方が発音していても実施できるようにしたことを特徴とする請求項2に記載の電子楽器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−211941(P2012−211941A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2011−76304(P2011−76304)
【出願日】平成23年3月30日(2011.3.30)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】