(第1実施形態)
本発明の一実施形態に係る楽音信号発生装置としての電子楽器10について説明する。まず、この電子楽器10の概略について図1を用いて説明する。この電子楽器10は、特許文献1及び特許文献2の電子楽器と同様に、音の波形を表す波形データWDを波形メモリWMから読み出して、前記読み出した波形データWDが表す音を再生する。本実施形態では、91個のトーンホイールを備えた電気オルガンを模擬している。なお、最低音のトーンホイールから最高音のトーンホイールに向かって順に、ノートナンバNNを対応付けている。最低音のトーンホイールのノートナンバNNが「1」であり、最高音のトーンホイールのノートナンバNNが「91」である。
波形データWDは、電気オルガンの各トーンホイールを単独で選択した状態(例えばドローバーのうち、「8’」のドローバーのみを引いておき、1つの鍵を押した状態)で電気オルガンから出力された信号をロータリースピーカに入力した際に発せられた音をサンプリングして得られたサンプリングデータに基づいて生成される。各波形データWDは、ロータリースピーカのロータがその回転軸周りに一周する間に発せられた楽音の波形を表している。以下、ノートナンバNNに対応する波形データWDを「波形データWD(NN)」と標記する。電子楽器10は、波形データWD(NN)を繰り返し読み出して、ノートナンバNNに対応する楽音信号を連続的に再生する。音高の異なる複数の楽音信号を再生する際、前記再生される複数の楽音信号の位相が略同期している。楽音信号の位相は、ロータの開口部の向き(ロータの回転軸回りの回転角度)に相当する。
また、電子楽器10は、タイムストレッチ機能を有する。タイムストレッチ機能とは、音のピッチ及びフォルマントを維持したまま、音の長さを変更する機能である。つまり、音を時間軸方向に伸縮させることができる。言い換えれば、楽音信号の再生速度(時間の進む速さ)のみを変更できる。電子楽器10は、このタイムストレッチ機能を用いて、各波形データを同一の伸縮率で時間軸方向に伸縮させる。つまり、楽音信号の再生速度を変更する。これにより、電気オルガンにおいてロータリースピーカのロータの回転速度を「SLOW」に設定したときの再生音(前記ロータリースピーカから発せられる音)、「FAST」に設定したときの再生音、及びロータの回転速度が徐々に変化しているときの再生音を模擬する。なお、本実施形態においては、公知のピッチ同期重畳加算法を用いて、タイムストレッチ機能を実現している。
つぎに、電子楽器10の構成について具体的に説明する。電子楽器10は、図1に示すように、入力操作子11、コンピュータ部12、表示器13、記憶装置14、外部インターフェース回路15、及び音源回路16を備え、これらがバスBSを介して接続されている。また、音源回路16には、波形メモリWMが接続されている。また、音源回路16には、サウンドシステム17が接続されている。
入力操作子11は、演奏操作子及び設定操作子を含む。演奏操作子及び設定操作子は、図2に示すように、オン・オフ操作に対応したスイッチ(例えば数値を入力するためのテンキー)、回転操作に対応したボリューム、ロータリーエンコーダ又はスイッチ、スライド操作に対応したボリューム、リニアエンコーダ又はスイッチ、マウス、タッチパネルなどからなる。演奏操作子は、発音開始、発音停止などに用いられる。また、設定操作子は、音量の設定、音色の設定などに用いられる。入力操作子11の操作内容を表す操作情報(操作子の指示値)は、バスBSを介して、後述するコンピュータ部12に供給される。
例えば、演奏操作子には、鍵盤装置KYが含まれる。鍵盤装置KYは、複数の鍵を備える。最低音の鍵から最高音の鍵に向かって順にノートナンバNNが割り当てられている。最低音の鍵のノートナンバNNは「13」であり、最高音のノートナンバNNは「55」である(図2参照)。
また、例えば、設定操作子には、図2に示すように、ドローバーDBj=1,2,・・・・,9が含まれる。ドローバーDBj=1は、基音よりも1オクターブ低い音の音量を設定する操作子である。また、ドローバーDBj=2は、基音よりも1オクターブ低い音の3倍音の音量を設定する操作子である。また、ドローバーDBj=3,DBj=4,DBj=5,DBj=6,DBj=7,DBj=8,DBj=9は、それぞれ、基音、2倍音、3倍音、4倍音、5倍音、6倍音、8倍音の音量を設定する操作子である。ドローバーDBjは、スライドボリュームで構成されている。ドローバーDBjは、演奏者によって操作されるノブを有する。ドローバーDBjは、ノブの位置に応じた指示値(電圧値)を出力する。ノブが演奏者に最も近い位置にあるとき、指示値は最大である。また、ノブが演奏者から最も遠い位置にあるとき、指示値は最小である。
また、例えば、設定操作子には、ロータ速度選択スイッチRVが含まれる。ロータ速度選択スイッチRVは、ロータリースピーカのロータの回転速度を「SLOW」、「FAST」、及び「STOP」のいずれに設定した状態の再生音を模擬するかを選択する操作子である。ロータ速度選択スイッチRVは、「SLOW」及び「FAST」にそれぞれ対応した2つのタクトスイッチから構成されている。「SLOW」に対応したタクトスイッチを押すと、ロータ速度選択スイッチRVの指示値は「SLOW」に設定される。また、「FAST」に対応したタクトスイッチを押すと、ロータ速度選択スイッチRVの指示値は「FAST」に設定される。また、前記2つのタクトスイッチを同時に押すと、ロータ速度選択スイッチRVの指示値は「STOP」に設定される。
コンピュータ部12は、バスBSにそれぞれ接続されたCPU12a、ROM12b及びRAM12cからなる。CPU12aは、電子楽器10の動作を表す各種プログラムをROM12bから読み出して実行する。例えば、CPU12aは、各種プログラムに従って、鍵盤装置KY、ドローバーDBj、ロータ速度選択スイッチRVなどの操作状態を検出し、その検出結果に基づいて、音源回路16を制御する。
ROM12bには、前記プログラムに加えて、初期設定パラメータ、各波形データWD(NN)に関する情報(先頭アドレス、末尾アドレスなど)を表わす波形データ情報、表示器13に表示される画像を表わす表示データを生成するための図形データ及び文字データなどの各種データが記憶されている。RAM12cには、各種プログラムの実行時に必要なデータが一時的に記憶される。
表示器13は、液晶ディスプレイ(LCD)によって構成される。表示器13には、図形データ、文字データなどを用いて生成された表示データがコンピュータ部12から供給される。表示器13は、前記表示データに基づいて画像を表示する。
また、記憶装置14は、HDD、FDD、CD、DVDなどの大容量の不揮発性記録媒体と、各記録媒体に対応するドライブユニットから構成されている。外部インターフェース回路15は、電子楽器10を他の電子音楽装置、パーソナルコンピュータなどの外部機器に接続可能とする接続端子(例えば、MIDI入出力端子)を備えている。電子楽器10は、外部インターフェース回路15を介して、LAN(Local Area Network)、インターネットなどの通信ネットワークにも接続可能である。
音源回路16は、図3に示すように、制御部CT、発音部SP、信号処理部DP及びミキサー部MXを有する。
制御部CTは、CPU12aの指示に従って、次に説明する発音部SPを制御する。制御部CTは、詳しくは後述するように、各楽音信号の再生速度及び位相を同期させるために用いる複数のカウンタ回路(マスターサンプルカウンタCms (CT)、スレーブサンプルカウンタCss (NN=1〜91)、サンプリング期間カウンタCP (NN=1〜91))を有する。
発音部SPは、複数(例えば273個)の発音チャンネルCH(n=1,2,・・・,273)を備える。各発音チャンネルCH(n)の構成は共通である。発音チャンネルCH(n)は、読み込み回路DRD(n)、重畳加算回路OLA(n)、及び音量制御回路VOL(n)を有する。
読み込み回路DRD(n)は、波形メモリWMに接続されている。波形メモリWMには、電気オルガンの楽音の波形を表す複数の波形データWDが記憶されている。波形データWDは、次のようにして生成されている。すなわち、電気オルガンにおいて1つの鍵を押した際に1つのトーンホイールの電磁ピックアップの信号のみが出力されるようにドローバーを設定しておく。つぎに、鍵を1つずつ押し、ロータリースピーカーからそれぞれ発せられた音を、ロータリースピーカの正面に設置されたマイクを用いて、所定のサンプリング周期(例えば1/44100秒)で数秒間サンプリングしてサンプリングデータを得る。なお、前記音をサンプリングする際、ロータの回転速度を「SLOW」に設定している。
上記のようにして得られた各サンプリングデータにおいて、ロータが所定の方向(例えば正面)に向けられている状態からその回転軸周りに1回転する間に発せられた部分を切り出して、1つのトーンホイールに対応する原データとして記憶する。この作業を繰り返し、全てのトーンホイールに対する原データを生成する。すなわち、1つのトーンホイールに対して1つの原データが生成される。本実施形態では、原データを、電子楽器10とは別の装置を用いて次のように変形したデータを波形データWDとして記憶している。すなわち、例えばピッチ同期重畳加算法を用いて、原データのピッチ及びフォルマントを変更することなく、再生速度のみを2倍にした状態を表すデータを予め生成して、波形データWDとして波形メモリWMに記憶している。なお、各波形データWDの先頭と末尾にそれぞれループポイントが設定され、このループポイント間が繰り返し再生される。したがって、原データをサンプリングデータから切り出す際、原データをループ再生した際に原データの末尾と先頭との境界にてノイズが生じない程度に、切り出し位置を原データごとに調整している。例えば、基音の節の位置を切り出し位置に設定している。したがって、原データのうちのいくつかのデータは、ロータがちょうど1回転する時間長と同一の時間長の原データよりも多少長い場合又は短い場合がある。このように、波形データWDごとに、その長さが多少異なる場合がある。
また、電子楽器10とは別の装置により、各波形データWDの各区間のピッチ(音高)が予め分析され、前記各区間の基音の節に相当する位置に対応するピッチマーク値が計算される。ピッチマーク値は、波形データWDの先頭から前記節の位置までのサンプル数に相当する。すなわち、ピッチマーク値は、波形データWDを構成する各サンプル値が記憶されている記憶領域に対応づけられたアドレスであって、前記基音の節に相当するアドレスを表す。ピッチマーク値は波形データWDの先頭アドレスに対するオフセットアドレスに相当する。例えば、基音の周波数が73.5Hzである場合、図4に示すように、各ピッチマーク値は、「0」、「600」、「1200」、・・・となる。このピッチマーク値は波形メモリWMに記憶されている。図4に示す例では、各ピッチマーク値を整数としたが、各ピッチマーク値が小数部を含んでもよい。
読み込み回路DRD(n)は、サンプリング期間ごとに、サンプル値を波形メモリWMから読み出す。読み込み回路DRD(n)は、読み込んだサンプル値を、重畳加算回路OLA(n)に供給する。
重畳加算回路OLA(n)は、図5に示すように、乗算回路MUL(n)と加算回路ADD(n)を備える。乗算回路MUL(n)は、入力信号に図6に示すような窓関数を適用する回路である。このような窓関数が入力信号に適用されることにより、重畳加算回路OLA(n)の出力信号はフェードインした後、フェードアウトする。
加算回路ADD(n=1),ADD(n=2),・・・,ADD(n=273)は、互いに接続可能である。加算回路ADD(n=a)は、乗算回路MUL(n=a)から供給されたサンプル値と他の加算回路ADD(n=b)から供給されたサンプル値を加算して、さらに他の加算回路ADD(n=c)に供給可能である。また、加算回路ADD(n)は、前記加算して得られたサンプル値を音量制御回路VOL(n)に供給する。
音量制御回路VOL(n)は、重畳加算回路OLA(n)から供給されたサンプル値を、CPU12aの指示に従って増幅して、ミキサー部MXへ出力する。
信号処理部DPは、入力した波形データが表わす音にリバーブ、ディレイなどの効果を付与して出力する。
ミキサー部MXは、サンプリング期間ごとに、各発音チャンネルCH(n=1),CH(n=2),・・・,CH(n=273)及び信号処理部DPから供給されたサンプル値を加算して、サウンドシステム17に供給する。
サウンドシステム17は、ミキサー部MXから供給されたディジタル音信号をアナログ音信号に変換するD/A変換器、前記変換したアナログ音信号を外部(パワーアンプなど)へ出力する出力端子を備える。
つぎに、電子楽器10の動作の概略について説明する。本実施形態においては、3つの発音チャンネルCHから構成されたトラックTKを用いて、1つのノートナンバNNに対応する楽音信号を再生する。電子楽器10は、273個の発音チャンネルCHを備えているので、91個のトラックTKを構成可能である。1つのトラックTKに1つのノートナンバNNが割り当てられる。以下、ノートナンバNN(=「1」〜「91」)に対応するトラックTKを「トラックTK(NN)」と標記する。また、トラックTK(NN)は、発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)から構成されるものとする(図3参照)。
電気オルガンにおいては、全てのトーンホイールが常に回転していて、押された鍵に対応する複数のトーンホイールの電磁ピックアップの出力信号が加算される。このような電気オルガンの動作を模擬するために、電子楽器10においては、全てのトラックTK(NN=1〜99)は常に楽音信号を再生している。ただし、電子楽器10の鍵盤装置の鍵が押されていない状態では、全てのトラックTKの音量が「0」に設定される。そして、鍵が操作されると、その鍵の音高を基音とした他の8個の倍音のノートナンバNNがそれぞれ計算される。そして、基音及び倍音のノートナンバNNにそれぞれ対応する9個のトラックTK(NN)の音量が、ドローバーDBj=1,2,・・・,9の操作状態に応じて変更される。各トラックTKにて再生される楽音信号の位相は略同期している。また、各トラックTKにおける楽音信号の再生速度は略同期している。
トラックTK(NN)の発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)は、楽音信号の一部の信号(以下、グレインGRi=0,1,2,・・・と呼ぶ)をそれぞれ生成する。発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)にてそれぞれ生成されたグレインGRiが、発音チャンネルCH(n=NN)にて重畳加算されて、1つの楽音信号として、ミキサー部MXへ供給される。
各グレインGRiは、ノートナンバNNに対応する波形データWD(NN)の一部の区間であって、基音の2周期分の長さに相当する区間(以下、セグメントSGi=0,1,2,・・・と呼ぶ(図4参照))に対して図6に示すような窓関数を適用して形成される波形データに相当する。セグメントSGiの先頭及び末尾のアドレスは、いずれかのピッチマーク値に一致する。したがって、セグメントSGiの中央のアドレスも、いずれかのピッチマーク値に一致する。以下の説明において、セグメントSGiの中央に位置するピッチマークを「中央のピッチマーク」と呼ぶ。また、セグメントSGiの前半部分とセグメントSGi―1の後半部分とが同一となるように各セグメントSGiが元の波形データから切り出される。
発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)は、循環的に動作して、各グレインGRiを再生する(図7参照)。1つの発音チャンネルCH(n)において1つのグレインGRiがその中央のピッチマークまで再生されたとき、他の1つの発音チャンネルCH(n)が新たにグレインGRiを再生し始める。各発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)にて再生するグレインGRiのインデックスiは、再生速度に応じて決定される。再生速度が遅い場合には、同一のインデックスiが連続する。つまり、元の波形データWD(NN)のうちの同一のセグメントSGiが連続して切り出される。一方、再生速度が速い場合には、一部のセグメントSGiがスキップされる。つまり、元の波形データWD(NN)の一部が読み飛ばされる。逆に言えば、同一のセグメントSGiを連続して切り出すことで、楽音信号の再生速度が遅くなる(波形データWD(NN)が伸長される)。一方、一部のセグメントSGiをスキップすることで、楽音信号の再生速度が速くなる(波形データWD(NN)が短縮される)。
つぎに、電子楽器10の動作について具体的に説明する。まず、CPU12aの動作について説明する。電子楽器10の電源が投入されると、CPU12aは、ノートナンバNNが割り当てられた鍵が押されているか否かを表すノートオンフラグFN(NN=13〜55)を「0」に設定する。演奏者が鍵盤装置のいずれかの鍵を押すと、CPU12aは、押鍵された鍵に割り当てられているノートナンバNNを検出する。CPU12aは、前記検出したノートナンバNNに対応するノートオンフラグFN(NN)を「1」に設定する(図8参照)。一方、演奏者が押していた鍵を解放すると、CPU12aは、前記解放された鍵に割り当てられているノートナンバNNを検出する。そして、CPU12aは、前記検出したノートナンバNNに対応するノートオンフラグFN(NN)を「0」に設定する。なお、図8においては、ノートナンバNNが「37」及び「49」である鍵が押されているときのノートオンフラグFN(NN)の状態を示している。
また、CPU12aは、所定の時間間隔をおいて(例えば、10ミリ秒ごとに)、各ノートナンバNNに関する音量値VL(NN)を計算して音源回路16に供給する。各音量値VL(NN)は、ノートオンフラグFN(NN)及びドローバーDBjの現在の指示値DVjを用いて、次の演算式(1)に基づいて計算される。
VL(NN)=FN(NN−36)・DV9+FN(NN−31)・DV8+FN(NN−28)・DV7
+FN(NN−24)・DV6+FN(NN−19)・DV5+FN(NN−12)・DV4
+FN(NN)・DV3+FN(NN−7)・DV2+FN(NN+12)・DV1 ・・・(1)
ただし、ノートオンフラグFN(NN<13)及びノートオンフラグFN(NN>55)は「0」とする。
また、演奏者がロータ速度選択スイッチRVを操作すると、CPU12aは、ロータ速度選択スイッチRVの指示値(「SLOW」、「FAST」又は「STOP」)を検出する。CPU12aは、前記検出結果に応じて、マスター再生速度倍率θを設定する。マスター再生速度倍率θは、前記模擬しようとするロータリースピーカのロータの回転速度スイッチが「SLOW」であるとき前記ロータが1回転するのにかかる時間長と同一の時間長の波形データ(以下、基準波形データと呼ぶ)を再生する速度の倍率に相当する。なお、基準波形データは、本実施形態を説明するための仮想的なデータであり、基準波形データが波形メモリWMに記憶されているわけではない。基準波形データをそのままの長さ(速さ)で再生するとき、マスター再生速度倍率θは「1.0」である。基準波形データを1/2倍の長さ(2倍の速さ)で再生するとき、マスター再生速度倍率θは「2.0」である。ロータ速度選択スイッチRVの指示値が「SLOW」を示すとき、CPU12aは、マスター再生速度倍率θを「0.5」に設定して、音源回路16に供給する。一方、ロータ速度選択スイッチRVの指示値が「FAST」を示すとき、CPU12aは、マスター再生速度倍率θを「4」に設定して、音源回路16に供給する。また、ロータ速度選択スイッチRVの指示値が「STOP」であるとき、CPU12aは、マスター再生速度倍率θを「0」に設定して、音源回路16に供給する。ただし、CPU12aは、ロータ速度選択スイッチRVの指示値が変更された後、マスター再生速度倍率θの値を変更前の値から変更後の値に向かって徐々に変更する。この際、マスター再生速度倍率θが小数部を含んでもよい。
つぎに、音源回路16の動作について具体的に説明する。まず、制御部CTの動作について説明する。電子楽器10に電源が投入されると、制御部CTは、マスターサンプルカウンタCms (CT)のカウント値tms (CT)を「0」に設定する。また、制御部CTは、スレーブサンプルカウンタCss (NN=1〜91)のカウント値tss (NN=1〜91)を「0」に設定する。また、制御部CTは、経過したサンプリング期間数をカウントするサンプリング期間カウンタCp (NN=1〜91)のカウント値tp (NN=1〜91)を「0」に設定する。
そして、制御部CTは、サンプリング期間ごとに、カウント値tp (NN)を更新する。すなわち、カウント値tp (NN)をインクリメントする。ただし、カウント値tp (NN)がノートナンバNNに対応する波形データWD(NN)を構成するサンプル値の総数を超えた場合、カウント値tp (NN)から前記サンプル値の総数を減算する。また、制御部CTは、サンプリング期間ごとに、カウント値tms (CT)を更新する。すなわち、カウント値tms (CT)に、マスター再生速度倍率θを加算する。また、制御部CTは、サンプリング期間ごとに、カウント値tss (NN)を更新する。すなわち、カウント値tss (NN)に、マスター再生速度倍率θとスレーブ再生速度倍率φ(NN)とを乗算した値を加算する。なお、スレーブ再生速度倍率φ(NN)は、基準波形データの長さに対する波形データWD(NN)の長さの比率に相当する。ただし、カウント値tss (NN)がノートナンバNNに対応する波形データWD(NN)を構成するサンプル値の総数を超えた場合、制御部CTは、そのカウント値tss (NN)から前記サンプル値の総数を減算する。
カウント値tms (CT)に対するカウント値tss (NN=1),tss (NN=2),・・・のうちのいずれか1つ又は複数のカウント値の比が何らかの要因(例えば、小数部の桁数が有限であること)により理想値からずれることがある。この場合、前記ずれが所定の許容範囲内に含まれるように、前記ずれが生じたトラックTKの再生速度が次のようにして補正される。ここで、カウント値tms (CT)とカウント値tss (NN)との比が理想値からずれて、そのずれが前記許容範囲外にあるとする。この場合、制御部CTは、マスター再生速度倍率θとスレーブ再生速度倍率φ(NN)とを乗算した値に、さらに所定の補正倍率ψを加味した値をカウント値tss (NN)に加算する。補正倍率ψは予めCPU12aから制御部CTに供給されている。例えば、補正倍率ψは、「1.19」及び「1/1.19」に設定される。トラックTK(NN)の再生位置が他のトラックTKの再生位置に対して遅れているとき、制御部CTは、カウント値tss (NN)に、マスター再生速度倍率θとスレーブ再生速度倍率φ(NN)とを乗算した値を更に1.19倍した値を加算する。つまり、トラックTK(NN)の再生速度を速くする。一方、トラックTK(NN=k)の再生位置が他のトラックTK(NN≠k)の再生位置に対して進みすぎている場合、制御部CTは、カウント値tss (NN)に、マスター再生速度倍率θとスレーブ再生速度倍率φ(NN)とを乗算した値を更に1/1.19倍した値を加算する。つまり、トラックTK(NN)の再生速度を遅くする。このように、カウント値tss (NN)がカウント値tms (CT)に略同期している。
また、制御部CTは、カウント値tp (NN)が波形データWD(NN)のいずれかのピッチマークを超えたトラックTK(NN)に対し、カウント値tss (NN)の直前のピッチマーク値を起点のピッチマーク値として、新たなグレインGRの生成を開始させる。
また、制御部CTは、読み出しアドレスが1つのセグメントSGiの末尾まで達した発音チャンネルCH(n)の動作を停止させる。
また、上記のように、制御部CTは、前記所定の時間間隔をおいて、CPU12aから音量値VL(NN=1〜91)を入力する。すると、制御部CTは、トラックTK(NN)の発音チャンネルCH(n=NN)の音量制御回路VOL(n=NN)の増幅度を音量値VL(NN)に従って設定する。
つぎに、発音チャンネルCH(n=NN)の動作について説明する。発音チャンネルCH(n=NN+91),CH(n=NN+182)の動作は、発音チャンネルCH(n=NN)の動作と同様であるので、それらの説明を省略する。
発音チャンネルCH(n=NN)が制御部CTからグレインGRiの生成を開始するよう指示されると、読み出し回路DRD(n=NN)は、サンプリング期間ごとに、サンプル値を波形メモリWMから読み出して、重畳加算回路OLA(n=NN)に供給する。サンプル値の読み出しアドレスは、波形データWD(n=NN)の先頭アドレスに前記起点のピッチマーク値の整数部の値を加算した値に初期化される。以降、発音チャンネルCH(n=NN)は、制御部CTから動作停止指示を入力するまで、サンプリング期間ごとに読み出しアドレスをインクリメントする。重畳加算回路OLA(n=NN)の乗算回路MUL(n=NN)は、図6に示す窓関数に基づいて計算した係数を、読み出し回路DRD(n=NN)から供給されたサンプル値に乗算する。このようにして、サンプリング期間ごとに、グレインGRiのサンプル値が生成される。発音チャンネルCH(n=NN+91)及び発音チャンネルCH(n=NN+182)も、発音チャンネルCH(n=NN)と同様の制御シーケンスに従って、グレインGRiを生成する。発音チャンネルCH(n=NN+91)及び発音チャンネルCH(n=NN+182)にてそれぞれ生成されたグレインGRiのサンプル値は、発音チャンネルCH(n=NN)の加算回路ADD(n=NN)に供給される。発音チャンネルCH(n=NN)は、発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+182)にて同一のサンプリング期間内に生成されたグレインGRiのサンプル値を加算して、ミキサー部MXに供給する。
本実施形態においては、ロータが略一回転する間にロータリースピーカから発せられる楽音を表す波形データWD(NN)を繰り返し読み出して楽音信号を再生する。そして、ロータ速度選択スイッチRVの操作に応じて、各トラックTK(NN)の再生速度が変更される。したがって、本実施形態によれば、特許文献2の電子楽器のような複雑な畳み込み演算が不要である。したがって、部品コストを抑えることができる。
また、各楽音信号の位相は、ロータリースピーカのロータの回転角度に対応している。本実施形態においては、マスターサンプルカウンタCms (CT)のカウント値tms (CT)がロータの回転角度に対応している。そして、スレーブサンプルカウンタCss (NN)のカウント値tss (NN)がマスターサンプルカウンタCms (CT)のカウント値tms (CT)に略同期している。つまり、各トラックTK(NN)において、互いに対応するアドレスに記憶されているサンプル値が読み出される。言い換えれば、再生される各楽音の位相が略同期している。すなわち、各トラックTK(NN)にて発生される楽音信号は、ロータリースピーカのロータが略同一方向を向いた状態における楽音を表している。したがって、本実施形態によれば、複数の楽音が1つのロータから放射される様子を忠実に模擬できる。
(第2実施形態)
つぎに、本発明の第2実施形態に係る電子楽器10Aについて説明する。まず、電子楽器10Aの概略について説明する。第1実施形態においては、トラックTK(NN)に、割り当てられる発音チャンネルCH(n)のインデックスnが予め決定されている。すなわち、トラックTK(NN)に、発音チャンネルCH(n=NN),CH(n=NN+91),CH(n=NN+192)が割り当てられている。そして、全てのトラックTK(NN=1〜91)は常に楽音信号を再生している。これに対し、第2実施形態においては、トラックTK(NN)に対し、発音チャンネルCH(n)が動的に割り当てられる。言い換えれば、トラックTK(NN)が動的に形成される。その他の構成は、第1実施形態と同様である。
つぎに、第2実施形態に係る電子楽器10Aについて具体的に説明する。とくに、CPU12aが、トラックTK(NN)に対し、発音チャンネルCH(n)を動的に割り当てる動作について具体的に説明する。なお、本実施形態では、便宜上、押された鍵に割り当てられているノートナンバを「ノートナンバKN」と標記し、その倍音に相当するノートナンバを「ノートナンバNN」と標記する。また、本実施形態においては、ノートオンフラグFN(KN=13〜55)に加えて、倍音フラグFH(KN=13〜55,NN=1〜91)、及びトラックオンフラグFT(NN=1〜91)が用いられる(図9参照)。
電子楽器10Aのハードウェア構成は、第1実施形態と同様である(図1乃至図3参照)。また、ノートオンフラグFN(KN=13〜55)に関する構成及び動作は、第1実施形態と同様である。
倍音フラグFH(KN=13〜55,NN=1〜91)は、電子楽器10Aの電源投入時に「0」に設定される。ノートナンバKNの鍵が押されているとき、発音状態に設定される基音及び8個の倍音のノートナンバNNに対応する倍音フラグFH(KN,NN)が「1」に設定される。すなわち、ノートナンバKNの鍵が押されているとき、倍音フラグFH(KN,NN=KN−12),FH(KN,NN=KN+7),FH(KN,NN=KN),FH(KN,NN=KN+12),FH(KN,NN=KN+19),FH(KN,NN=KN+24),FH(KN,NN=KN+28),FH(KN,NN=KN+31),FH(KN,NN=KN+36)が「1」に設定される。ノートナンバKNの鍵が解放されているとき、倍音フラグFH(KN,NN=KN−12),FH(KN,NN=KN+7),FH(KN,NN=KN),FH(KN,NN=KN+12),FH(KN,NN=KN+19),FH(KN,NN=KN+24),FH(KN,NN=KN+28),FH(KN,NN=KN+31),FH(KN,NN=KN+36)が「0」に設定される。上記のように、1つのノートナンバKNに対し、9個の倍音フラグFHが設けられていればよい。すなわち、ノートナンバKNの倍音にはなり得ないノートナンバNNに関する倍音フラグFH(図9において斜線を付した部分に相当する倍音フラグFH(KN,NN))は不要である。
トラックオンフラグFT(NN=1〜91)は、トラックTK(NN)の動作状態を表すフラグである。トラックオンフラグFT(NN=1〜91)は、電源投入時に「0」に設定される。倍音フラグFH(KN=13,NN)〜倍音フラグFH(KN=55,NN)のうちの少なくとも1つが「1」であるとき、トラックオンフラグFT(NN)が「1」に設定される。一方、倍音フラグFH(KN=13,NN)〜倍音フラグFH(KN=55,NN)のうちの全てのフラグが「0」であるとき、トラックオンフラグFT(NN)が「0」に設定される。
演奏者が鍵盤装置のいずれかの鍵を押すと、CPU12aは、押された鍵に割り当てられているノートナンバKNを検出する。CPU12aは、第1実施形態と同様に、ノートオンフラグFN(KN)を「1」に設定する。さらに、CPU12aは、前記検出したノートナンバKNに関する9個の倍音フラグFHを「1」に設定する。
つぎに、CPU12aは、各ノートナンバNNに関するトラックオンフラグFT(NN)を次のように操作する。具体的には、倍音フラグFH(KN=13,NN=i)〜倍音フラグFH(KN=55,NN=i)のうちの少なくとも1つが「1」であるとき、CPU12aは、トラックオンフラグFT(NN=i)を「1」に設定する。トラックオンフラグFT(NN)が「0」から「1」に遷移したとき、CPU12aは、トラックTK(NN)に、動作停止中の3つの発音チャンネルCHを割り当てる。そして、CPU12aは、トラックTK(NN)に割り当てた3つの発音チャンネルCHにて波形データWD(NN)を用いて楽音信号を再生することを表す情報を音源回路16に供給する。
一方、演奏者が押していた鍵を解放すると、CPU12aは、前記解放された鍵に割り当てられているノートナンバKNを検出する。そして、CPU12aは、ノートオンフラグFN(KN)を「0」に設定する。さらに、CPU12aは、前記検出したノートナンバKNに関する9個の倍音フラグFH(KN,NN)を「0」に設定する。
また、CPU12aは、各ノートナンバNNに関するトラックオンフラグFT(NN)を次のように操作する。具体的には、倍音フラグFH(KN=13,NN=i)〜倍音フラグFH(KN=55,NN=i)のうちの全てのフラグが「0」であるとき、CPU12aは、トラックオンフラグFT(NN=i)を「0」に設定する。トラックオンフラグFT(NN)が「1」から「0」に遷移したとき、CPU12aは、トラックTK(NN)に割り当てられていた3つの発音チャンネルCHを解放する(動作を停止させて、新たなトラックTKに割り当て可能な状態に設定する)ことを表す情報を音源回路16に供給する。
また、CPU12aは、所定の時間間隔(例えば10ミリ秒)をおいて、各ノートナンバNNに関する音量値VL(NN)を計算して音源回路16に供給する。なお、トラックオンフラグFT(NN=1〜91)のうち、値が「1」であるトラックオンフラグFT(NN)を選択し、前記選択したトラックオンフラグFT(NN)に対応するノートナンバNNに関する音量値VL(NN)のみを計算して音源回路16に供給すればよい。音量値VL(NN)は、第1実施形態と同様に、ノートオンフラグFN(KN)及びドローバーDBjの指示値DVjを用いて、次の演算式(2)に基づいて計算される。
VL(NN)=FN(KN=NN−36)・DV9+FN(KN=NN−31)・DV8
+FN(KN=NN−28)・DV7+FN(KN=NN−24)・DV6
+FN(KN=NN−19)・DV5+FN(KN=NN−12)・DV4
+FN(KN=NN)・DV3+FN(KN=NN−7)・DV2
+FN(KN=NN+12)・DV1 ・・・(2)
ただし、ノートオンフラグFN(KN<13)及びノートオンフラグFN(KN>55)は「0」とする。
また、CPU12aは、第1実施形態と同様に、マスター再生速度倍率θを設定する。
音源回路16の制御部CTは、第1実施形態と同様に、サンプリング期間ごとに、カウント値tp (NN)及びカウント値tms (CT)を更新する。また、制御部CTは、CPU12aの指示に従って、トラックTK(NN)に割り当てられた3個の発音チャンネルCH(n)の動作を開始させる。この際、制御部CTは、スレーブサンプルカウンタCss (NN)のカウント値tss (NN)を決定(初期化)する。すなわち、制御部CTは、マスターサンプルカウンタCms (CT)のカウント値tms (CT)に応じて、カウント値tss (NN)を設定する。例えば、制御部CTは、波形データWD(NN)のピッチマーク値のうち、カウント値tms (CT)の直前のピッチマーク値をカウント値tss (NN)の初期値として設定する。その後、制御部CTは、第1実施形態と同様に、カウント値tss (NN)を更新する。発音開始時においてトラックTK(NN)にて再生される楽音信号の位相が他のトラックTKの位相とは少しずれていたとしても、トラックTK(NN)の位相が順次補正され、しばらくすると、前記他のトラックTKの位相に略同期する。制御部CTは、第1実施形態と同様に、動作中(楽音信号を再生中)のトラックTK(NN)を制御する。すなわち、カウント値tp (NN)がピッチマークを超えるごとに、新たなグレインGRiの生成を開始させる。また、トラックTK(NN)の音量を制御する。トラックTK(NN)による楽音信号の再生手順は第1実施形態と同様である。また、制御部CTは、ロータ速度選択スイッチRVの設定値に従って、波形データWD(NN)の再生速度を設定する。また、制御部CTは、CPU12aの指示に従って、トラックTK(NN)の動作を停止させる。
本実施形態においては、トラックTK(NN)に動的に発音チャンネルCH(n)が割り当てられる。発音チャンネルが比較的少ない音源回路16において、発音チャンネルCH(n)が不足した場合には、従来の電子楽器と同様に、所定のルールに従ってトラックTKを選択し、前記選択したトラックTKにて発生中の楽音を強制的に減衰させる。そして、前記選択したトラックTKにて、新たな楽音を発生させる。これによれば、音源回路16の発音チャンネル数が第1実施形態より少ない場合であっても、第1実施形態と同様の効果が得られる。
なお、ドローバーDBjが完全に押し込まれている場合(つまり、その指示値が「0」である場合)には、そのドローバーDBjに対応する楽音信号を発生させるためのトラックTK(発音チャンネルCH(n))は不要である。そこで、図10に示すように、音量値VL(NN)が「0」より大きいノートナンバNNに関するトラックオンフラグFT(NN)のみを「1」に設定し、前記ノートナンバNNが割り当てられているトラックTK(NN)に発音チャンネルCH(n)を割り当ててもよい。なお、図10の例においては、ドローバーDBj=3及びドローバーDBj=4の設定値が最大であり、その他のドローバーDBjの設定値が「0」である。また、この例においては、斜線を付した2つの鍵が押されている。これによれば、音源回路16の発音チャンネル数がさらに少ない場合であっても、第1実施形態と同様の効果が得られる。
(第3実施形態)
つぎに、本発明の第3実施形態に係る電子楽器10Bについて説明する。まず、電子楽器10Bの概略について説明する。電子楽器10Bのハードウェア構成は、電子楽器10及び電子楽器10Aと略同一である。ただし、電子楽器10Bにおいては、電子楽器10及び電子楽器10Aとは異なる波形データWDを用いる。具体的には、電気オルガンのドローバーを所定の設定にした状態(例えば、1つ又は複数のプリセットスイッチを押した状態)で、1つずつ鍵を押し、ロータリースピーカから発せられた楽音をそれぞれサンプリングしている。各サンプリングデータから原データを切り出し、原データをタイムストレッチして(音の長さを変更して)、波形データを生成する手順に関しては、上記の第1実施形態及び第2実施形態と同様である。なお、本実施形態においては、電子楽器10Bの鍵のノートナンバNN(=13〜55)に対応した波形データWD(NN=13〜55)が生成され、波形メモリWM内に記憶されている。上記のように、電子楽器10Bでは、1つの波形データWDが複数のトーンホイールの音(倍音)を含んでいるので、ドローバーDBjはトーンホイールの組み合わせ(すなわち音色)を設定するための操作子としては機能せず、他の用途に用いられる。
演奏者が鍵盤装置のいずれかの鍵を押すと、CPU12aは、押鍵された鍵に割り当てられているノートナンバNNを検出する。そして、CPU12aは、前記検出したノートナンバNNに対応するトラックオンフラグFT(NN)を「1」に設定するとともに、トラックTK(NN)に動作停止中の3つの発音チャンネルCH(n)を割り当てる。そして、CPU12aは、トラックTK(NN)にて波形データWD(NN)を用いて楽音信号を再生することを表す情報を音源回路16に供給する。
一方、演奏者が押していた鍵を解放すると、CPU12aは、前記解放された鍵に割り当てられているノートナンバNNを検出する。そして、CPU12aは、トラックTK(NN)に割り当てられていた3つの発音チャンネルCHを解放する(動作を停止させて、新たなトラックTKに割り当て可能な状態に設定する)ことを表す情報を音源回路16に供給する。
また、CPU12aは、第1実施形態と同様に、マスター再生速度倍率θを設定する。音源回路16の制御部CTの動作は、第2実施形態と同様である。
上記第1実施形態及び第2実施形態においては、各波形データWDは、1つのトーンホイールのみが選択された状態の楽音を表している。各トラックTKは、それらに対応する波形データWDに基づいて楽音信号を再生する。そして、ドローバーDBjの設定に応じて各トラックTKの音量値VLを計算している。これに対し、本実施形態では、各波形データWDは、電気オルガンのドローバーを所定の状態に設定したとき(つまり、複数のトーンホイールの電磁ピックアップが選択された状態で1つの鍵が押されたとき)の楽音を表している。そのため、1つの鍵に対して1つのトラックTKを割り当てて、各トラックTKにて波形データWDを再生するだけで、複数のトーンホイールの電磁ピックアップが選択された状態の楽音信号が得られる。このように、本実施形態によれば、第1実施形態及び第2実施形態とは異なり、各トラックTKの音量値VLを計算する必要がない。よって、上記第1実施形態及び第2実施形態に比べて、CPU12aの負荷を軽減できる。また、発音チャンネルCHの総数が第1実施形態及び第2実施形態に比べて少ない場合であっても、両実施形態と同様の効果が得られる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態においては、前記原データを、電子楽器10とは別の装置を用いて変形したデータを波形データWDとして記憶している。しかし、前記原データをそのまま波形データWDとして用いてもよい。この場合、ロータ速度選択スイッチRVの指示値が「SLOW」を示すとき、CPU12aは、マスター再生速度倍率θを「1」に設定すればよい。また、ロータ速度選択スイッチRVの指示値が「FAST」を示すとき、CPU12aは、マスター再生速度倍率θを「8」に設定すればよい。また、上記実施形態においては、前記サンプリングデータを得る際、ロータの回転速度を「SLOW」に設定している。しかし、前記サンプリングデータを得る際、ロータの回転速度を「FAST」に設定してもよい。この場合、前記サンプリングデータから抽出した原データを変形したデータを波形データWDとして用いてもよいし、前記原データをそのまま波形データWDとして用いてもよい。
また、例えば、上記実施形態においては、ロータリースピーカから発せられた電気オルガンの楽音をモノラルサンプリングしている。しかし、これに代えて、前記楽音をステレオサンプリングしてもよい。つまり、ロータリースピーカの正面に左右方向に間隔をおいて設置された2つのマイクを用いて、ロータリースピーカから発せられる音をサンプリングし、左チャンネル用の波形データと右チャンネル用の波形データを別々に生成してもよい。この場合、左チャンネル用の波形データ及び右チャンネル用の波形データを、別々のトラックTKにて再生すればよい。したがって、第1実施形態においては、546個の発音チャンネルCH(n)を設ける必要がある。これによれば、より豊かなコーラス効果を得ることができる。
また、マスターサンプルカウンタCms (CT)を用いることなく、トラックTK(NN=1),TK(NN=2),・・・のうちの1つのトラックに対応するスレーブサンプルカウンタCss (NN)をマスターサンプルカウンタとして用いても良い。すなわち、トラックTK(NN=1),TK(NN=2),・・・のうちの1つをマスタートラックとし、その他のトラックTKをスレーブトラックとしてもよい。
また、基準波形データの長さ(サンプル数)と各波形データWDの長さ(サンプル数)の差は実際には小さいので、スレーブ再生速度倍率φ(NN)を「1」と見なし、補正倍率ψのみを用いて、トラックTKの再生速度を調整してもよい。
また、電気オルガンのキークリック音を表す波形データを記憶しておき、鍵が押されたとき、前記キークリック音の波形データを読み出して、前記キークリック音を付加してもよい。この場合、ロータの向きに応じた複数のキークリック音をそれぞれ表す複数の波形データを記憶しておき、前記複数の波形データのうち、マスターサンプルカウンタCms (CT)のカウント値tms (CT)(つまり、ロータの回転角度)に応じた波形データを読み出してキークリック音を付加してもよい。
また、高音用スピーカと低音用スピーカを備えるとともに、それぞれのスピーカ用のロータを備えたロータリースピーカを模擬してもよい。この場合、各ロータの近傍にマイクをそれぞれ設置し、各ロータから発せられる楽音をそれぞれサンプリングして高音の波形データと低音の波形データをそれぞれ生成すればよい。そして、高音の波形データと低音の波形データをそれぞれ別のトラックTKにて再生すればよい。その際、高音の波形データを再生するトラックTKのグループのマスターサンプルカウンタと、低音の波形データを再生するトラックTKのグループのマスターサンプルカウンタとを設けるとよい。つまり、2つのマスターサンプルカウンタを用いるとよい。これによれば、高音用のロータの向きと、低音用のロータの向きがずれている状態を模擬できる。なお、高音域のトーンホイールの楽音のみを、高音用のロータの近傍に設置したマイクを用いてサンプリングし、低音域のトーンホイールの楽音のみを、低音用のロータの近傍に設置したマイクを用いてサンプリングしてもよい。
また、波形データWDの再生速度を変更する手法は上記実施形態に限られず、他のタイムストレッチアルゴリズムを採用してもよい。例えば、ピッチとは関係の無い所定の時間間隔で切り出した複数のセグメントをクロスフェードして重畳加算するアルゴリズムであってもよい。
また、上記実施形態においては、1つのトラックTKに対して3つの発音チャンネルCHを割り当て、そのうちの2つの発音チャンネルCHにて生成される楽音信号が重畳加算されている。しかし、1つのトラックTKに対して、上記実施形態より多くの発音チャンネルCHを割り当てておき、より多くの発音チャンネルCHにて生成される楽音信号が重畳加算されるように構成してもよい。
また、上記実施形態においては、複数の発音チャンネルCHを有する音源回路16を用いてタイムストレッチ機能を実現している。しかし、CPU12a、DSPなどをタイムストレッチ装置として機能させてもよい。つまり、CPU12a、DSPなどが、RAM12c内に波形データWDを読み込み、その波形データWDを時間軸方向に伸縮させるプログラムを実行してもよい。このプログラムは、リアルタイムに実行されてもよいし、ノンリアルタイムに実行されてもよい。