(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。以下に説明する本発明の各実施形態は、電子楽器における吹奏を複数のセンサで数値化し、その数値を特徴値とする特徴ベクトルを生成し、この特徴ベクトルに基づいた演算を行って音源制御を行うものである。
【0011】
図1は、電子楽器の以下に説明する各実施形態に共通のハードウェア構成例を示すブロック図である。
【0012】
図1に示されるハードウェア構成例は、CPU(セントラルプロセッシングユニット:中央演算処理装置)101、ROM(リードオンリーメモリ)102、RAM(ランダムアクセスメモリ)103、センサ群104、ADC(アナログデジタルコンバータ)105、スイッチ群106、GPIO(ジェネラルパーパスインプットアウトプット)107,WAVE音源108、DAC(デジタルアナログコンバータ)109、音響システム110、提示装置111を備え、これらがバス112によって相互に接続された構成を有する。同図に示される構成は、電子楽器を実現できるハードウェア構成の一例であり、そのようなハードウェア構成はこの構成に限定されるものではない。
CPU101は、当該電子楽器全体の制御を行う。ROM102は、発音制御プログラムを記憶する。RAM103は、発音制御プログラムの実行時に、データを一時的に格納する。
【0013】
センサ群104の各出力は、ADC105でアナログ信号からデジタル信号に変換されて、CPU101に読み込まれる。
【0014】
スイッチ群106は吹奏楽器の指穴に相当する演奏機能を実現する。スイッチ群106の各操作状態は、GPIO107を介してCPU101に読み込まれる。
【0015】
WAVE音源(ウェーブテーブル音源)108は、それが内蔵するROMに記憶された複数の楽音波形データを、スイッチ群106からGPIO107およびCPU101を介して指定された音高で読み出し、楽音信号を出力する。
【0016】
WAVE音源108から出力された楽音信号は、DAC109においてデジタル信号からアナログ信号に変換された後、音響システム110を介して放音される。
【0017】
提示装置111は、発音制御処理の第2の実施形態に関わるものであり、演奏者に種々の情報を与えるものである。
【0018】
図2は、電子楽器の以下に説明する各実施形態に共通の筐体(外形)の例を示す図である。この筐体は、管楽器を模した本体形状部1、指穴に相当するスイッチ部2(
図1のスイッチ部106の一部に対応する)、音響信号を放出する開口部3、音響信号を発音するスピーカ部4、各種の演奏以外の操作子5(
図1のスイッチ部106の一部に対応する)、および複数のセンサ(
図1のセンサ部104に対応する)と提示装置(
図1の提示装置111に対応する)を実装したマウスピース部6を備える。
【0019】
図3は、
図1および
図2に示される電子楽器の機能ブロック図である。この電子楽器は、複数のパラメータに基づいて音響信号を演算して発生する音源手段305(
図1のWAVE音源108に対応する)を備える。吹奏数値化手段301(
図1のセンサ群104に対応する)は、吹き込み圧、舌の動き、唇の位置、噛み圧、音声などを例とする複数の吹奏を数値化し、その複数の数値化された信号を特徴量とする特徴ベクトルを生成する。パターン認識手段302(
図1のCPU101、ROM102、およびRAM103に対応する)は、吹奏に関する複数の演奏パターンのそれぞれについてその演奏パターンに対応する代表特徴ベクトルを記憶し、吹奏時に吹奏数値化手段301が生成した特徴ベクトルと演奏パターンごとの代表特徴ベクトルのそれぞれとを比較することにより、その比較結果に基づいて音源手段305における複数のパラメータを制御する。提示手段303(
図1の提示装置111に対応する)は、吹奏時に吹奏数値化手段301が生成した特徴ベクトルと手本となる演奏パターンの代表特徴ベクトルとの距離を算出し、当該距離に基づいて吹奏時の演奏が手本となる演奏パターンとどの程度相違しているかを吹奏者に提示する。物理モデル
手段304は、吹奏時に吹奏数値化手段301が出力する複数の数値化された信号を外部入力として、振動可能な振動体を模式化した物理モデルを振動させ、その振動に基づいて音源手段305における複数のパラメータを制御する。
【0020】
以下に、
図3に示される機能のそれぞれについて、詳細に説明する。演奏者306による吹奏を詳細にセンスするために、マウスピース部6の内部に、吹奏圧センサ401、上唇の位置を検出するリップセンサ402、歯の噛み圧を検出するバイトセンサ403、舌の形を検出するタンセンサ404、およびマウスピースの音声信号を取り込むボイスセンサ405等が、複数実装されている。これらの各センサ401〜405はそれぞれアナログ電圧値を出力し、各アナログ電圧値は
図1のADC105によってデジタル電圧値に変換されて、CPU101に取り込まれる。すなわち、これらの401〜405のセンサ群104(
図1)は、複数の吹奏演奏を数値化しその複数の数値化された信号を特徴量とする特徴ベクトルを生成する
図3の吹奏数値化手段301の一部として機能する。
【0021】
なお、他の実施形態として、吹奏者の唇を撮影するカメラが配置されてもよい。
【0022】
図4は、
図1のWAVE音源108のブロック図である。管楽器吹奏では、口蓋の形や息の強さなどによって複数の音色の楽音が演奏される。WAVE音源108は、それぞれの演奏技法を代表する複数の演奏波形を各々録音したウエーブテーブル501(図中では例えば#1〜#3の3個)を備え、吹奏による演奏者の指配置で指定される音高さで、各演奏波形が同時に発音させられる。各々の波形は同位相で鳴るように信号処理されていて、重ね合わせても音量が不自然に打ち消しあうようなことはない。その後に設けられた各乗算器502(例えば#1〜#3)と、加算器503で各々の演奏技法の発音バランスが調整され、その後必要ならば音量調整部504にて全体音量が調整され、
図1のDAC109に送出され楽音が発音される。
【0023】
なお、他の実施例として、シンセサイザやウエーブガイド音源がパラメータ制御されてもよい。
【0024】
以上説明した
図1〜
図4の構成に基づく電子楽器の発音制御処理の第1〜第3の実施形態について、順次説明する。
【0025】
図5は、発音制御処理の第1の実施形態の説明図である。
図3に示されるように、マウスピース部6のセンサは401〜405のように複数個あり、それらからの各出力は
図1のADC105によって一定間隔でサンプリングされ、各デジタル値に変換される。それらの値の絶対値や前回との変化値を記録すると、1×Nの特徴ベクトルになる。
図5中で黒塗りの小さい四角で表された位置は、ベクトル空間上での特徴ベクトルを表す。
図5では簡単のため2次元で表現してあるが、実際には各点はセンサの数に応じた次元数(
図4の例では401〜405の5次元)を有する多次元の特徴ベクトルを表す。
【0026】
学習モードにおいては、演奏者による吹奏演奏が複数サンプリングされて記憶される。例えば、演奏者がオーバートーン演奏のために口蓋の形を変えるが、その演奏形状に対応したセンサ出力値の各組がそれぞれサンプリングされて、各特徴ベクトルが複数記憶される。その記憶と同時に、演奏者はその演奏がオーバートーン演奏であるというスイッチを押す。さらに、タンギング演奏についても、同様の処理が実行される。これらのベクトル値を補完して得られる平面のピーク値が有限個検出される。その個数は演奏識別数と一致し、例えばオーバートーン演奏とタンギング演奏の2個である。そのピークからの距離が予め定めた閾値以下のものとその閾値より大きいものとが識別される。その結果、各々の特徴ベクトルは、
図5の破線601や602の内部として特徴抽出される。これらの分布601、602の各重心値が、演奏技法の代表特徴ベクトルとして算出されて記憶される。
【0027】
次に、演奏モードにおいては、電子楽器が学習した代表特徴ベクトルそれぞれと演奏者の吹奏演奏で得られる特徴ベクトルとの各距離が演算される。ここで簡単に、代表特徴ベクトルと特徴ベクトルの差の絶対値の合計を距離とすると、その距離が近い代表特徴ベクトル程、その代表特徴ベクトルに対応する演奏技法による演奏らしさが近いと判断できる。この代表特徴ベクトルごとの各距離に反比例する各乗算値が
図4に示されるWAVE音源108における各乗算器502に与えられて、演奏技法ごとの演奏波形がミックスされ、楽音信号が発音される。
【0028】
図6は、発音制御処理の第1の実施形態の全体処理の例を示すフローチャートである。この処理は、
図1のCPU101が、ROM102に記憶された発音制御処理プログラムを実行する動作として実現される。この発音制御処理プログラムは、
図3の吹奏演奏数値化手段301とパターン認識手段302の機能を実現する。この発音制御処理プログラムは、例えば特には図示しない可搬記録媒体駆動装置に挿入される可搬記録媒体に記録して配布されてもよく、或いは特には図示しない通信インタフェースによりインターネットやローカルエリアネットワーク等のネットワークから取得できるようにしてもよい。以下随時、
図1の構成を参照する。
【0029】
まず、CPU101は、楽器が演奏を学習する処理を実行する(ステップS701)。この処理の詳細については、
図7で後述する。
【0030】
次に、CPU101は、学習結果を識別する処理を実行する(ステップS702)。この処理の詳細については、
図8で後述する。
【0031】
次に、CPU101は、識別した結果で発音する処理を実行する(ステップS703)。この処理の詳細については、
図9で後述する。
【0032】
その後、CPU101は、演奏者が学習モードスイッチ(
図1のスイッチ群106の一部)(モード指定手段)を押したか否かを判定する(ステップS704)。ステップS704の判定がNOならば、CPU101は、ステップS703を繰り返し実行する。演奏者が学習モードスイッチを押した結果ステップS704の判定がYESになると、CPU101は、ステップS701の処理に戻って、楽器が演奏を学習する処理をやり直す。
【0033】
図7は、
図6のステップS701の楽器が演奏を学習する処理(学習手段)の詳細例を示すフローチャートである。
【0034】
まず、CPU101は、演奏者が学習用の楽器演奏を行ったときのセンサ群104(
図3の401〜405に対応する)の各センサ値を、ADC105を介して取り込み、センサ出力ベクトル値を得る(ステップS801)。
【0035】
次に、演奏者が現在の演奏がどの演奏波形に対応するか、波形番号スイッチ(
図1のスイッチ群106の一部)を押すことにより指定し(演奏パターン指定手段)、CPU101は押された波形番号スイッチに対応する波形番号を、GPIO107を介して取り込む(ステップS802)。
【0036】
CPU101は、ステップS802で取り込んだ波形番号とステップS801で得たセンサ出力ベクトル値を組にしてRAM103に記憶する(ステップS803)。
【0037】
CPU101は、全ての波形番号について規定の回数が終了したか否かを判定する(ステップS804)。ステップS804の判定がNOならば、CPU101は、ステップS801の処理に戻る。ステップS804の判定がYESになると、CPU101は、
図7のフローチャートの処理を終了して
図6のステップS701の処理を終了する。
【0038】
以上の
図7のフローチャートで例示される
図6のステップS701の楽器が演奏を学習する処理により、
図5の破線601や602に対応する波形番号ごとに、黒い四角で示される特徴ベクトル群が取得される。
【0039】
図8は、
図6のステップS702の学習結果を識別する処理(学習手段)の詳細例を示すフローチャートである。
【0040】
まず、CPU101は、RAM103上の変数である選択番号レジスタを0(ゼロ)に初期化する(ステップS901)。
【0041】
次に、CPU101は、
図6のステップS701で得られている、選択番号レジスタが示す波形番号に対応する特徴ベクトル群を、RAM103から読み込む(ステップS902)。
【0042】
次に、CPU101は、ステップS902で読み込んだ特徴ベクトル群に基づいて、選択番号レジスタが示す波形番号に対応する重心を求め、その結果得られる重心をその波形番号に対応する代表特徴ベクトルとして、RAM103に記憶させる(ステップS903)。
【0043】
その後、CPU101は、選択番号レジスタが示す波形番号を+1インクリメントする(ステップS904)。
【0044】
CPU101は、選択番号レジスタが示す波形番号を判定することにより、全ての波形について処理が終了したか否かを判定する(ステップS905)。ステップS905の判定がNOならば、CPU101は、ステップS902の処理に戻って次の波形番号に対応する代表特徴ベクトルの算出処理を繰り返し実行する。ステップS905の判定がYESになると、CPU101は、
図8のフローチャートの処理を終了し、
図6のステップS702の学習結果を識別する処理を終了する。
【0045】
図9は、
図6のステップS703の、識別した結果で発音する処理の詳細例を示すフローチャートである。
【0046】
まず、CPU101は、演奏者が演奏モードで演奏したときのセンサ群104(
図4の401〜405に対応する)の各センサ値を、ADC105を介して取り込み、
図5で説明した特徴ベクトルを得る(ステップS1001)。
【0047】
次に、CPU101は、
図5で説明したように、
図6のステップS702でRAM103に得られている各波形番号の代表特徴ベクトルと、ステップS1001で得られた特徴ベクトルとの各距離を、それぞれ演算する(ステップS1002)。
【0048】
CPU101は、ステップS1002で算出した各距離に反比例する各乗算値を、
図1のWAVE音源108を構成する
図4の各乗算器502に与える(ステップS1003)。すなわち、現在の演奏が似ている演奏技法に対応するウエーブテーブル501の出力ほど、出力される楽音信号に含まれる割合が大きくなる。
【0049】
次に、CPU101は、指操作スイッチ(
図1のスイッチ群106の一部に対応する)の操作情報をGPIO107を介して取得し、演奏者が管楽器の指使いに従って指定した音高を算出する(ステップS1004)。
【0050】
CPU101は、ステップS1003で定まった音量とステップS1004で算出した音高でWAVE音源108から出力される楽音信号を、DAC109に送って発音させる(ステップS1005)。その後、CPU101は、
図9のフローチャートの処理を終了し、
図6のステップS703の識別した結果で発音する処理を終了する。
【0051】
図10は、
図1の提示装置111の構成例を示す図である。一般的に、吹奏楽器の初心者は正しい演奏の口蓋の形をすることができないため、発音制御処理の第1の実施形態で説明した学習モードで正しい学習データを記録できない場合がある。そこで、以下に説明する発音制御処理の第2の実施形態では、学習モードを教師がお手本として設定し、演奏モードで生徒に教えることを可能とする。
【0052】
図10(a)および(b)に示されるように、左LED(発光ダイオード)1101と右LED1102の2個のLEDが、マウスピース部6(
図2参照)を咥えた状態で生徒から見える位置に配置される。
図10に示される円筒で表された部分が、LED配置の外形図である。
【0053】
演奏モードにおいては、生徒の演奏に応じて取得される特徴ベクトルと、先生が学習し生徒が演奏時に指定した演奏技法に対応する代表特徴ベクトルとの距離が比較される。そして、その距離が近づく場合には右LED1102が点滅させられ、その距離が遠ざかる場合左LED1101が点滅させられる。さらに、上記距離が遠くなるほど早く点滅させられ、逆に上記距離が一致する場合は点滅が止められる。生徒は口蓋の形を、左LED1101または右LED1102の点滅がとまるように、練習する。この練習によって、生徒は口蓋を変化させながら正しい形を取ることができる。
【0054】
他の実施形態として、電子楽器のLCDディスプレイに距離を3D表示してもよい。また、視覚だけではなく触覚を使うように距離を振動バイブレータの振動量で提示してもよい。
【0055】
図11は、上述の提示装置111を用いた発音制御処理の第2の実施形態の全体処理の例を示すフローチャートである。この処理は、
図6のフローチャートで説明した発音制御処理の第1の実施形態の処理と同様に、
図1のCPU101が、ROM102に記憶された発音制御処理プログラムを実行する動作として実現される。この発音制御処理プログラムは、
図3の吹奏数値化手段301とパターン認識手段302と提示手段303の機能を実現する。この発音制御処理プログラムも、例えば特には図示しない可搬記録媒体駆動装置に挿入される可搬記録媒体に記録して配布されてもよく、或いは特には図示しない通信インタフェースによりインターネットやローカルエリアネットワーク等のネットワークから取得できるようにしてもよい。以下随時、
図1の構成を参照する。
【0056】
まず、CPU101は、先生の演奏により、楽器が演奏を学習する処理を実行する(ステップS1201)。この処理は、演奏者が先生になっただけで、発音制御処理の第1の実施形態の処理における
図6のステップS701と実質的に同様であり、その詳細な処理の例は、前述した
図7のフローチャートで示される。
【0057】
次に、CPU101は、先生の演奏による学習結果を識別する処理を実行する(ステップS1202)。この処理も、演奏者が先生になっただけで、発音制御処理の第1の実施形態の処理における
図6のステップS702と実質的に同様であり、その詳細な処理の例は、前述した
図8のフローチャートで示される。
【0058】
次に、CPU101は、識別した結果で表示し発音する処理を実行する(ステップS1203)。この処理の詳細については、
図12で後述する。
【0059】
その後、生徒による演奏モードに移行する。CPU101は、学習モードスイッチ(
図1のスイッチ群106の一部)が押されたか否かを判定する(ステップS1204)。ステップS1204の判定がNOならば、CPU101は、ステップS1203を繰り返し実行する。先生が学習モードスイッチを押した結果ステップS1204の判定がYESになると、CPU101は、ステップS1201の処理に戻って、先生の演奏により楽器が演奏を学習する処理をやり直す。
【0060】
図12は、
図11のステップS1203の、識別した結果で表示し発音する処理の詳細例を示すフローチャートである。
【0061】
まず、CPU101は、スイッチ部106での生徒のスイッチ入力に基づいて、学習する波形番号を入力する(ステップS1301)。
【0062】
次に、CPU101は、生徒が演奏したときのセンサ群104(
図3の401〜405に対応する)の各センサ値を、ADC105を介して取り込み、
図5で説明した演奏ベクトル値を得る(ステップS1302)。この処理は、発音制御処理の第1の実施形態における
図9のステップS1001と同様である。
【0063】
次に、CPU101は、
図5で説明したように、
図11のステップS1202でRAM103に得られている各波形番号の代表特徴ベクトルと、ステップS1301で得られた特徴ベクトルとの各距離を、それぞれ演算する(ステップS1303)。この処理も、発音制御処理の第1の実施形態における
図9のステップS1002と同様である。
【0064】
次に、CPU101は、
図5で説明したように、
図11のステップS1202でRAM103に得られている各波形番号の代表特徴ベクトルのうちステップS1301で生徒が指定した波形番号の代表特徴ベクトルと、ステップS1302で得られた特徴ベクトルとの距離を演算する(ステップS1303)。
【0065】
さらに、CPU101は、前回演奏時にステップS1303で算出され後述するステップS1306でRAM103に保持されている距離と、今回演奏時にステップS1303で算出した距離との、差分を演算する(ステップS1304)。
【0066】
ステップS1304での計算の結果、CPU101は、今回算出した距離が前回算出した距離よりも増えた場合には、提示装置111を構成する左LED1101(
図10参照)を、また、減った場合には、提示装置111を構成する右LED1102(
図10参照)を、今回ステップS1303で算出した距離の絶対値に応じた速度で点滅させる(ステップS1305)。
【0067】
その後、CPU101は、今回ステップS1303で算出した距離を、RAM103に記憶させる(ステップS1306)。
【0068】
最後に、CPU101は、識別した結果で発音する処理を実行する(ステップS1307)。この処理は、発音制御処理の第1の実施形態で説明した
図6のステップS703の処理(
図9のフローチャートで例示される処理)と同様である。その後、CPU101は、
図12のフローチャートの処理を終了し、
図11のステップS1203の識別した結果で表示し発音する処理を終了する。
【0069】
次に、発音制御処理の第3の実施形態について説明する。
図13は、発音制御処理の第3の実施形態の説明図である。演奏モードで検出された演奏波形から別の演奏波形に遷移する場合、自然楽器では滑らかに変わるのではなく、中間の不安定な演奏状態を介して遷移する。
【0070】
図13は、その遷移状態を実現する振動体を模式化した図物理モデルを示している。この物理モデルは、黒丸で示される3つの質量体1401a、1401b、1401cを、黒い直線で示される制動機能を有する3本のバネ(リンク部)1402a、1402b、1402cで相互に接続し、さらに一端が上記3つの質量体にそれぞれ接続され、他端が固定されている3本の制動機能を有するバネ(リンク部)1403a、1403b、1403cを接続し、合計6本のバネと3個の質量体で構成されている。
【0071】
この物理モデルは、外部からの入力によって、各々の質量体の位置や、バネの強さ、制動の強さによって定められた自励振動を生じるように構成されている。これを動作させるには、ひとつの質量体の位置をセンサ群104を構成するひとつのセンサの値で移動させて自励振動させ、その振動によって振動する他の2つの質量体の位置を取り出し、各演奏の音量、すなわち
図4の乗算器502の乗算値を制御すればよい。
【0072】
具体的には以下の演算が、各質量体とバネ毎に必要な離散時間で、繰り返し実行される。
【0073】
・位置=力÷質量体の質量+2×直前の位置−直前のさらの直前の位置
・・・(1)
【0074】
・距離=位置−直前の位置 ・・・(2)
【0075】
・力=バネの強さ×(距離−バネ長さ)+制動の強さ×(距離−直前の距離)
・・・(3)
【0076】
本実施形態で採用される物理モデルは、3質量体の自由振動であり、一般的には解析解を持たない。このモデルが生成する自励振動は3箇所で拘束されているため、その動きをある程度予測可能であるが、遷移経路によっては複雑な動きをする。このある程度予測可能である複雑な動きが、電子楽器の演奏性を決定づける性能である。演奏性は、簡単すぎては演奏にすぐ飽きてしまうし、複雑すぎては演奏できない。本実施形態が目的とするのは、各演奏から各演奏に推移する際の遷移状態を模倣するモデルである。従って、実際の自然楽器の構造と必ずしも対応する必要はなく、このように簡略化されたモデルでも十分に機能する。
【0077】
図14は、上述の物理モデルを利用する発音制御処理の第3の実施形態の全体処理の例を示すフローチャートである。この処理は、
図6のフローチャートで説明した発音制御処理の第1の実施形態の処理と同様に、
図1のCPU101が、ROM102に記憶された発音制御処理プログラムを実行する動作として実現される。この発音制御処理プログラムは、
図3の吹奏数値化手段301と物理モデル304の機能を実現する。この発音制御処理プログラムも、例えば特には図示しない可搬記録媒体駆動装置に挿入される可搬記録媒体に記録して配布されてもよく、或いは特には図示しない通信インタフェースによりインターネットやローカルエリアネットワーク等のネットワークから取得できるようにしてもよい。以下随時、
図1の構成を参照する。
【0078】
まず、CPU101は、識別した結果で発音する処理を実行する(ステップS1501)。この処理は、発音制御処理の第1の実施形態で説明した
図6のステップS703の処理(
図9のフローチャートで例示される処理)と同様である。なお、各演奏技法に対応する各波形番号ごとの代表特徴ベクトルは、前述した発音制御処理の第1または第2の実施形態で説明した学習モードでの処理により、RAM103に予め得られているとする。本実施形態では、学習モードの処理は省略している。
【0079】
次に、CPU101は、音量最大の波形が変わったか否かを判定する(ステップS1502)。
【0080】
ステップS1502の判定がNOならば、CPU101は、ステップS1501に戻り発音動作を続行する。
【0081】
ステップS1502の判定がYESならば、CPU101は、物理モデルによる変調をWAVE音源108(
図1)に加える処理を実行する(ステップS1503)。
【0082】
図15は、
図14のステップS1503の物理モデルによる変調を音源に加える処理の詳細例を示すフローチャートである。
【0083】
まず、CPU101は、現在のセンサ群104(
図3の401〜405に対応する)の各センサ値を、ADC105を介して取り込み、そのセンサ値で、
図13に例示した物理モデルにおける質量体1401aの位置を変更する(ステップS1601)。
【0084】
次に、CPU101は、
図13に例示した物理モデルにおけるバネ(リンク部)を6本演算する処理を実行する(ステップS1602)。この処理の詳細は、
図16のフローチャートを用いていて後述する。
【0085】
次に、CPU101は、
図13に例示した物理モデルにおける質量体を3個演算する処理を実行する(ステップS1603)。この処理の詳細は、
図17のフローチャートを用いて後述する。
【0086】
最後に、CPU101は、
図13に例示した物理モデルにおける質量体1401b、質量体1401cの位置を取り出し、
図1のWAVE音源108を構成する
図4の乗算器502の乗算値に加算する(ステップS1603)。その後、CPU101は、
図15のフローチャートの処理を終了し、
図14のステップS1503の処理を終了する。
【0087】
図16は、
図15のステップS1602のリンク部を6本演算する処理の詳細例を示すフローチャートである。
【0088】
まず、CPU101は、バネ6本の処理をカウントするためのRAM103上の変数であるカウンタを0(ゼロ)に初期化する(ステップS1701)。
【0089】
その後、CPU101は、ステップS1702からS1706までの一連の処理を、バネ6本に対応して6回繰り返し実行する。
【0090】
まず、CPU101は、前述した(2)式により、距離を計算する(ステップS1702)。
【0091】
次に、CPU101は、前述した(3)式の「バネの強さ×(距離−バネ長さ)」を計算し、RAM103上の変数Lに格納する(ステップS1703)。
【0092】
次に、CPU101は、前述した(3)式の「制動の強さ×(距離−直前の距離)」を計算し、RAM103上の変数Mに格納する(ステップS1704)。
【0093】
さらに、CPU101は、ステップS1703で計算した変数Lの値とステップS1704で計算した変数Mの値を加算することにより(3)式を計算し、その計算結果を現在処理しているバネに対応するリンクの力を保持するRAM103上のリンクの力レジスタに記憶させる(ステップS1705)。
【0094】
その後、CPU101は、カウンタの値を判定することにより、6本のバネに対応するリンク全てについて上記演算を完了したか否かを判定する(ステップS1706)。ステップS1706の判定がNOならば、CPU101は、ステップS1702の処理に戻って、次のバネに対応するリンクについて上記演算を続行する。ステップS1706の判定がYESになると、CPU101は、
図16のフローチャートの処理を終了し、
図15のステップS1602のリンク部を6本演算する処理を終了する。
【0095】
図17は、
図15のステップS1603の質量体を3個演算する処理の詳細を示すフローチャートである。
【0096】
まず、CPU101は、質量体3個の処理をカウントするためのRAM103上の変数であるカウンタを0(ゼロ)に初期化する(ステップS1801)。
【0097】
その後、CPU101は、ステップS1802からS1805までの一連の処理を、質量体3個に対応して3回繰り返し実行する。
【0098】
まず、CPU101は、現在のカウンタ値が示す質量体に接続されている各リンクに対応するRAM103上の各リンクの力レジスタの値を合計する(ステップS1802)。このレジスタ値は、
図15のステップS1602内の
図16のステップS1705で計算されRAM103に保持されているものである。
【0099】
次に、CPU101は、前述した(1)式により、新しい位置計算する(ステップS1803)。
【0100】
CPU101は、ステップS1803で計算された新しい位置によって、カウンタ値が示す現在の質量体の位置を更新する(ステップS1804)。
【0101】
その後、CPU101は、カウンタの値を判定することにより、3個の質量体全てについて上記演算を完了したか否かを判定する(ステップS1805)。ステップS1805の判定がNOならば、CPU101は、ステップS1802の処理に戻って、次の質量体について上記演算を続行する。ステップS1805の判定がYESになると、CPU101は、
図17のフローチャートの処理を終了し、
図15のステップS1603の質量体を3個演算する処理を終了する。
【0102】
上述の発音制御処理の第3の実施形態に関連する他の実施形態として、
図13に例示される物理モデルの質量体を変えてもよいし、質量体をさらに増やしてもよい。また、モデルを別の物理モデルの構成と入れ替えてもよい。
【0103】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
外部入力により振動可能な振動体の挙動を数式化した物理モデルと、
吹奏センサにより取得された吹奏データを外部入力として、前記振動体を振動させた場合の当該振動体の挙動を表わすデータを、前記物理モデルを用いて演算する演算部と、
前記演算部の演算結果に基づき、音源にて発生すべき楽音のパラメータを制御する制御部と、
を備えることを特徴とする電子楽器。
(付記2)
前記物理モデルは、複数個の質量体と、当該質量体同士を接続する複数の弾性体と、一方が当該各質量体に接続されるとともに他端が固定された複数の弾性体を有する振動体の挙動を数式化し、
前記制御部は、前記複数の質量体のうちの1つの質量体の位置を前記取得された吹奏データの値に基づいて更新させることにより前記振動体を振動させ、当該振動によって前記他の質量体の位置を更新し、当該更新された位置に基づいて前記楽音のパラメータを制御する、
ことを特徴とする付記1に記載の電子楽器。
(付記3)
電子楽器が、
吹奏センサにより取得された吹奏データを外部入力として、振動体を振動させた場合の挙動を、当該振動体の挙動が数式化された物理モデルを用いて演算し、
前記演算結果に基づき、音源にて発生すべき楽音のパラメータを制御する、
発音制御方法。
(付記4)
吹奏センサにより取得された吹奏データを外部入力として、振動可能な振動体を振動させた場合の挙動を、当該振動体の挙動が数式化された物理モデルを用いて演算するステップと、
前記演算結果に基づき、音源にて発生すべき楽音のパラメータを制御するステップと、
をコンピュータに実行させるプログラム。