(57)【特許請求の範囲】
【請求項１】
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行うと共に、特定の方向に沿って複数設けられる仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記複数設けられた仮想粒子放出手段と前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段と
を有することを特徴とする音データ生成装置。
【請求項２】
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
特定の方向に沿って仮想発音体を複数設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記仮想粒子放出手段と複数設けられた前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段と
ことを特徴とする音データ生成装置。
【請求項３】
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記仮想粒子放出手段か前記仮想発音体のいずれか１方を、前記仮想空間中を反復・循環して移動させる移動手段と
を有することを特徴とする音データ生成装置。
【請求項４】
コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行うと共に、特定の方向に沿って複数設けられる仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記複数設けられた仮想粒子放出手段と前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段
として機能させるプログラム。
【請求項５】
コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
特定の方向に沿って仮想発音体を複数設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記仮想粒子放出手段と複数設けられた前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段
として機能させるプログラム。
【請求項６】
コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、
前記仮想粒子放出手段か前記仮想発音体のいずれか１方を、前記仮想空間中を反復・循環して移動させる移動手段
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音データ生成装置およびプログラムに関する。
【背景技術】
【０００２】
近年、ますますリアリティーの増した音がコンピュータにより生成されるようになっている。例えばコンピュータで「雨降りの音」や「そよ風の音」など自然現象に伴う音を非常に巧妙に再現することができる（特許文献１参照）。
例えば、「雨降りの音」ならば、「ザーザー」、「そよ風の音」ならば「ヒューヒュー」など、自然現象ごとに特徴的な波形の音が生じるため、上記特許文献１などにおいては、自然現象における音の特徴を模した波形データを繰り返し音声へ変換することにより自然現象の音を再現している。
【特許文献１】特開平０７−１４０９７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、上述の雨降りの音は多数の雨粒と地面の衝突から生じるものであり、そよ風の音は空気中に存在する多数の気体分子の流れや振動から生じるものであるとの例からも明らかなように、自然界において発生する音の多くは小さなスケールで見れば多数の粒子が高頻度で相互作用を繰り返すことにより生じている。
【０００４】
例えば、一つの雨粒が地面と衝突する際には、「ポトッ」「ぺチ」「パチ」などの音が、各雨粒と地面との衝突状況や、他の雨粒との相互関係に応じて発生する。そして、無数の雨粒が連続して地面に衝突すると、それらの相互に異なる音が重ねあわされた音が発生する。そのように、大きさや位相、減衰状態、発生タイミングなどが異なる多数の音が重ねあわされることにより、結果的には、雨（多数の雨粒）の降る音である「ザー、ザー」という音として人間に知覚される。
そのように、自然界において発生している音は、総体として聴いた場合には個々の相互作用に由来する音の成分が区別されて聴取されることは無いが、実際は毎回異なる音から構成される２度と再現できない音が発生しているのである。そのような音の「ランダム性」や「非再現性」が自然界の音に「自然らしさ」を与えていると考えられる。
【０００５】
しかし、上記特許文献１を含め、従来のコンピュータにより生成される音は、予め決められた波形データが繰り返し読み出されるだけの音であったため、その音には上述した「ランダム性」や「非再現性」が欠如しており、所謂「自然らしさ」が感じられないといった問題があった。
【０００６】
本発明は上述の課題に鑑みてなされたものであり、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成する音データ生成装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行うと共に、特定の方向に沿って複数設けられる仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記複数設けられた仮想粒子放出手段と前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段とを有することを特徴とする。
【０００８】
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、特定の方向に沿って仮想発音体を複数設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記仮想粒子放出手段と複数設けられた前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段とを有することを特徴とする。
【０００９】
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記仮想粒子放出手段か前記仮想発音体のいずれか１方を、前記仮想空間中を反復・循環して移動させる移動手段とを有することを特徴とする。
【００１０】
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行うと共に、特定の方向に沿って複数設けられる仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記複数設けられた仮想粒子放出手段と前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段として機能させることを特徴とする。
【００１１】
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、特定の方向に沿って仮想発音体を複数設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記仮想粒子放出手段と複数設けられた前記仮想発音体の相対位置を変化させると共に、該相対位置変化には、前記特定の方向が成分として含まれるようにする移動手段として機能させることを特徴とする。
【００１２】
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う少なくとも１つの仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、少なくとも１つの仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と、前記仮想粒子放出手段か前記仮想発音体のいずれか１方を、前記仮想空間中を反復・循環して移動させる移動手段として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明に係る音データ生成装置またはプログラムによれば、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成することができる。
【発明を実施するための最良の形態】
【００１４】
（本発明の概略説明）
本発明に係る音データ生成装置は、コンピュータの演算によって形成される仮想空間の中に多数の仮想粒子を放出させるとともに、振動体（弦など）を仮想空間の中で移動させる。そして、仮想粒子と振動体との相互作用（衝突など）の状況を演算し、その演算結果による振動体の振動状態に基づいて音データを生成するものである。
【００１５】
図１は、音データ生成処理におけるモニタ表示の一例である。仮想粒子２００は、スプリンクラ１５０の先端部分より仮想空間１００内に放出される。そして、仮想粒子２００は、仮想空間１００内に設定された重力に従って画面の下方向に向けて「落下」すると共に、仮想空間１００の壁面などで跳ね返ったり、仮想粒子２００同士で衝突したりする。その結果、多数の仮想粒子２００が仮想空間１００内でランダムに運動する。そのように多数の仮想粒子２００が飛び交っている仮想空間１００には、振動体（発音体）として弦１２０が設けられる。そして、個々の仮想粒子２００が弦１２０の領域を通過して弦を「はじく」と弦１２０は振動し、弦１２０の振動状態に基づいて音データが生成される。このとき、仮想空間１００にはスプリンクラ１５０が所定の間隔で配置され、弦１２０が仮想空間１００内を移動している場合には、弦１２０は周期的なタイミングで仮想粒子２００と衝突し多様なリズムで発音がなされる。
【００１６】
（Ａ；構成）
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
【００１７】
（Ａ−１；全体構成）
図２は、本発明に係る音データ生成システム１の全体構成を示す図である。音データ生成システム１は、プログラム実行装置としての音データ生成装置１０と、マウス２０と、モニタ３０と、多点コントローラ４０とを有する。
【００１８】
（Ａ−２；各装置の構成）
まず、音データ生成装置１０のハードウェア構成について図３を参照して説明する。
音データ生成装置１０は、制御部１０１、光ディスク再生部１０２、ＲＯＭ（Read Only Memory）１０３、ＲＡＭ（Random Access Memory）１０４、Ｉ／Ｏ部１０５を有する。それら各部はバス１０９を介して互いに接続されている。
【００１９】
図に示す制御部１０１は、例えばＣＰＵ（Central Processing Unit）であり、ＲＯＭ１０３から読み出された各種制御プログラムを実行することにより、音および映像の信号処理や各部の制御を行う。
【００２０】
光ディスク再生部１０２は、ＣＤ−ＲＯＭ・ＤＶＤ−ＲＯＭ等の光ディスクからデータを読取る。
ＲＯＭ１０３は、制御部１０１が実行する各種制御プログラムを格納している。
ＲＡＭ１０４は、制御部１０１によってワークエリアとして利用される。
【００２１】
Ｉ／Ｏ部１０５は、音データ生成装置１０と接続された機器との信号の送受信を仲介する。具体的には、マウス２０および多点コントローラ４０から操作内容を示す信号を受取り制御部１０１に出力すると共に、制御部１０１から受取った音データおよび映像データをモニタ３０に出力する。
以上が音データ生成装置１０の構成である。
【００２２】
次に、マウス２０の構成について図４を用いて説明する。マウス２０は、本体２１の上面（図中（ａ）参照）にはボタン２２を、下面（図中（ｂ）参照）には移動検知手段２４を有する。また、マウス２０は、音データ生成装置１０に通信ケーブル２３にて接続されており、操作内容を示すデータが通信ケーブル２３を介して音データ生成装置１０に送信される。
【００２３】
マウス２０は、本体２１が移動されると移動検知手段２４が移動方向と移動量を示す操作信号を生成し、通信ケーブル２３を介して出力する。該信号を受取った制御部１０１は、操作信号に基づいてモニタ３０の画面上のカーソルを移動する処理を行う。
また、ボタン２２が押下（以下、クリック）されると、マウス２０はクリック操作がなされたことを示すクリック操作信号を生成し、通信ケーブル２３を介して出力する。クリック操作信号を受取った制御部１０１は、クリック時にカーソルが位置していた座標を認識し、当該座標に表示されているアイコンなどに対して選択処理が行われたと認識する。
また、ボタン２２を押下した状態で本体２１が移動され、その後ボタン２２の押下を解除する操作（以下、ドラッグ）がなされると、ボタン２２が押下されていた間の本体２１の移動方向と移動量、およびドラッグ操作がなされたことを示す信号を生成し、通信ケーブル２３を介して出力する。該信号を受取った制御部１０１は、ドラッグ操作により選択された画面上の領域や該領域に含まれるアイコンなどに対して選択処理が行われたと認識する。
【００２４】
次に、モニタ３０の構成について図５を用いて説明する。モニタ３０は、音データ生成装置１０から受取った映像データに基づいて映像を表示する。モニタ画面の各点には、同図に示されるように画面左上を座標（０，０）、右下を座標（７５６，１０２４）とする座標が設定されている。
また、図５に示すように、モニタ画面の下方には音データ再生部３０ａが設けられ、音データ生成装置１０から受取った音データに基づいて音が放音される。
【００２５】
次に、多点コントローラ４０の構成について、図６を用いて説明する。図６（ａ）に示すように、多点コントローラ４０は、タッチパネル４２を有する。タッチパネル４２には、図に示すように画面左上を座標（０，０）、右下を座標（７５６，１０２４）とする座標が設定されている。タッチパネル４２は、タッチパネル上の特定の点が押下されたことを感知する感知手段を有し、該感知手段がパネル上の特定の点が押下されたことを感知すると、押下された点の位置を示す座標を含む押下位置情報を、通信ケーブル４１を介して音データ生成装置１０に出力する。複数の点が同時に押下されている場合には、該押下されている複数の点それぞれについて並行して押下位置情報を生成・出力する。
【００２６】
音データ生成装置１０の制御部１０１は、押下位置情報を多点コントローラ４０から受取ると、該押下位置情報に含まれる座標を読み出し、モニタ３０画面上において該座標に相当する点が選択されたと判断する。図６（ｂ）は、モニタ３０の画面表示を示した図である。例えば、手Ａおよび手Ｂが、図６（ａ）で示されるようにタッチパネル４２を押下した場合、手Ａで押下された位置を示す座標、または手Ｂで押下された位置を示す座標が書き込まれた押下位置情報が、それぞれの点が押下されている間継続して制御部１０１へ出力される。制御部１０１は、該押下位置情報を受取ると、図６（ｂ）で示されるモニタ画面上の点Ａおよび点Ｂが選択されたと判定する。
【００２７】
（Ａ−３；プログラムの構成）
次に、ＲＯＭ１０３に格納された制御プログラムについて説明する。なお、制御プログラムには、音データ生成装置１０の制御部１０１が音データを生成するために実行する各種プログラムが含まれ、以下では主要なもののみ取り上げて説明する。
【００２８】
制御プログラムは、空間特性制御プログラム、オブジェクト制御プログラム、粒子運動制御プログラム、弦振動制御プログラム、映像制御プログラム、音データ生成プログラムなどからなる。
【００２９】
空間特性制御プログラムは、重力などの仮想空間１００に設定され仮想粒子２００の運動に影響を及ぼす各種特性を制御する。オブジェクト制御プログラムは、仮想空間１００内に仮想粒子２００を出現させるオブジェクト（スプリンクラ１５０）の配置などを制御する。粒子運動制御プログラムは、仮想空間１００内における仮想粒子２００の運動を計算する。弦振動制御プログラムは、弦１２０の振動状況を演算する。映像制御プログラムは、演算結果として与えられる仮想空間１００内の仮想粒子２００の運動や弦１２０の振動などの挙動をテレビジョンモニタ画面上へ表示させる。音データ生成プログラムは、弦１２０の振動状態に基づいて音データを生成する。
【００３０】
（Ａ−４；仮想空間の制御）
以下では、空間特性制御プログラムによる仮想空間１００の制御について説明する。
図７は、モニタ３０の画面の一例を示した図である。画面には、仮想空間１００の枠組みが表示されている。また、仮想空間１００の右側には、制御パネル４００が表示されている。仮想空間１００は、ユーザによる制御パネル４００に対する操作に基づき、以下のように制御される。
【００３１】
仮想空間１００には、以下に例示するような「空間特性」が設定される。制御パネル４００の下部の空間特性アイコン４０４が押下されると、制御部１０１は、所定の選択肢をモニタ３０の画面上に表示する。図８は、該表示の一例を示した図である。ユーザは、画面上に表示された重力の方向に関する選択肢を選択し、重力加速度の大きさを書き込む。また、仮想粒子２００の移動の際に働く抵抗力は、仮想粒子２００の速度に比例するとし、その速度に応じた抵抗力を決定するための比例定数を書き込む。制御部１０１は、入力された内容を粒子運動制御プログラムにおける粒子運動の挙動の算出に反映させる。
【００３２】
なお、これら仮想空間１００に関する設定は、予め制御プログラムなどにテンプレートとして書き込んでおいても良い。例えば、あるテンプレートにおいては、重力場は画面下方に設定され、仮想空間１００内を移動する仮想粒子２００には移動の方向とは逆にその速度に比例した抵抗力が働き、その比例定数が「水中」に相当するような大きな値に設定されているようにすれば、ユーザは該テンプレートを選択するだけで、仮想空間１００がまるで重力のある空間に設置された水が満たされた容器であるかのような設定を簡易に行うことができる。
【００３３】
（Ａ−５；仮想粒子の運動）
以下では、粒子運動制御プログラムによる仮想粒子２００の運動の制御方法について説明する。
（１）仮想粒子２００の出現
まず、仮想粒子２００の出現について図９を用いて説明する。本実施形態における仮想空間１００には、仮想粒子２００を仮想空間１００に発生させるための装置として、スプリンクラ１５０が設けられる。
【００３４】
スプリンクラ１５０は、制御パネル４００の初速度４０２、頻度４０３の値が書き込まれてからスプリンクラアイコン４０１がクリックされ、仮想空間１００内においてドラッグがなされることにより設定される。
【００３５】
スプリンクラ１５０は、放出口１５０ａを有し、個々の仮想粒子２００は、初速度４０２に書き込まれた初速度、および頻度４０３に書き込まれた頻度で放出口１５０ａから放出される。仮想粒子２００は、時間平均して単位時間あたり頻度４０３に書き込まれた数となるようにランダムに放出される。
【００３６】
（２）仮想粒子２００の運動
ＲＯＭ１０３に格納された粒子運動制御プログラムは、仮想空間１００内での仮想粒子２００の運動を以下に説明するルール（ａ）〜（ｃ）に従って制御する。なお、以下のルールは、地球上の物体の力学的性質および力学的法則を模したものである。
（ａ）仮想粒子２００は、所定の体積（ｖ）および質量（ｍ）を有している。
（ｂ）仮想粒子２００に働く力Ｆと仮想粒子２００の質量ｍと加速度αとの間にはＦ＝ｍαの関係がある。たとえば本実施形態においては、仮想空間１００の下向きに重力場が存在するため、仮想粒子２００には常にｍｇ（ｇは重力加速度）の大きさの力が仮想空間１００の下向きに働く。
（ｃ）仮想粒子２００同士、および仮想粒子２００と仮想空間１００の枠組みが衝突した場合には、跳ね返り係数１で完全弾性衝突をする。
【００３７】
（３）仮想粒子２００の消滅
仮想空間１００の枠組みの底辺に達した仮想粒子２００は消滅するよう設定されている。
【００３８】
（Ａ−６；音データの生成）
音データ生成装置１０は、ＲＯＭ１０３に格納された音データ生成プログラムにより、以下に説明するように音データを生成する。
【００３９】
弦１２０の振動は、ＲＯＭ１０３に格納された弦振動制御プログラムにより演算される。具体的には、弦の弾性（材質）、弦の断面積、弦の張力、弦がはじかれた変位量などに基づいて、物理的なシミュレーションが行われる。シミュレーションの結果、各時刻における弦の各部分の変位量が演算され、該演算結果から、弦から発生する音の振幅、周波数、減衰態様などが導き出される。
【００４０】
なお、音データ生成装置１０は、ＭＡＸ／ＭＳＰを用いて音データを生成する。なお、ＭＡＸ／ＭＳＰとは、音楽プログラミング言語ＭＡＸと音響信号処理用エクステンションＭＳＰとからなる。ＭＡＸ／ＭＳＰによれば、様々なモジュールをつなぎ合わせて、シンセサイザー、エフェクター、シーケンサーなどが作れるほか、パッチングによって音楽の自動生成なども可能であり、ビジュアル的なプログラミング環境によって、直感的なプログラミング・操作ができる。
【００４１】
（Ｂ；動作）
以下では、音データ生成装置１０が音データを生成する際の各部の動作について説明する。
まず、音データ生成装置１０の電源が投入されると、制御部１０１はＲＯＭ１０３から各種制御プログラムを読み出し、ＲＡＭ１０４にロードする。
【００４２】
（Ｂ−１；初期設定処理）
まず、制御部１０１は、初期設定処理を行う。図１０は、初期設定処理の流れを示したフローチャートである。
ステップＳＡ１００においては、仮想空間１００の空間特性の設定がなされる。音データ生成システム１のユーザは、制御パネル４００の空間特性アイコン４０４（図９参照）を押下し、モニタ３０にパラメータ設定のための画面（図８参照）を表示させる。そして制御部１０１は、入力された内容に応じて仮想空間１００の空間特性、すなわち仮想空間１００における重力場および抵抗力の設定を行う。
【００４３】
本実施形態においては、重力場の設定において、重力の方向として図面下方向が選択されその重力加速度の値が書き込まれると、仮想粒子２００に対して画面下方向に設定された値の重力が働き、仮想空間１００は鉛直方向に設けられた空間であるかのように設定される。
また、抵抗力の設定において、比例定数の値が書き込まれると、仮想粒子２００の移動速度に比例した抵抗力が移動と逆方向に働く。そして、その比例定数に対応してまるで空気や水が仮想空間１００に満たされているような環境に設定される。
【００４４】
ステップＳＡ１１０では、仮想粒子２００を仮想空間１００に出現させる手段（スプリンクラ１５０）の設定を行う。ユーザにより制御パネル４００にパラメータが書き込まれた後、スプリンクラアイコン４０１がクリックされ、仮想空間１００内の領域が指定されると、スプリンクラ１５０が設定される。スプリンクラ１５０の配置はユーザが自由に決められるが、本実施形態では、例えば図９に示されるように、複数のスプリンクラ１５０が一列に一定ではない間隔で配置された場合について説明する。
【００４５】
（Ｂ−２；振動体設定処理）
仮想粒子２００を仮想空間１００に放出させる処理の説明に入る前に、仮想粒子２００との相互作用により発音を行う振動体を仮想空間１００に設定する振動体設定処理について説明する。なお、振動体設定処理は、後述する音データ生成処理に対して割り込み処理として行われる。
【００４６】
本実施形態においては、振動体として、弦１２０が設けられる。図１２は、振動体設定処理の流れを示したフローチャートである。ステップＳＣ１００において、制御部１０１は、多点コントローラ４０から押下位置情報を受信したか否かを判定する。ステップＳＣ１００の判定結果が“ＮＯ”の場合は、ステップＳＣ１００の処理が繰り返される。ステップＳＣ１００の判定結果が“ＹＥＳ”である場合は、ステップＳＣ１１０が行われる。
【００４７】
制御部１０１は、多点コントローラ４０から受取った押下位置情報に含まれる座標を読取り、該座標をＲＡＭ１０４に一旦記憶する。そして、押下位置情報に含まれる２つの位置（座標）を両端とするように、仮想空間１００内に弦１２０（振動体）が設けられる（ステップＳＣ１１０）。
【００４８】
以上のようにして設けられた弦１２０は、タッチパネル４２が押下されている間、継続して設けられている。また、弦１２０は、仮想空間１００中で、移動させることが可能である。ステップＳＣ１２０において、制御部１０１は、押下位置情報に含まれる座標が変更されたか否か判定する。ユーザにより押下されたタッチパネル４２の位置がスライドされた場合、ステップＳＣ１２０の判定結果は“ＹＥＳ”となり、弦１２０の設置位置がスライドする処理がなされる。すなわち、時々刻々と変化する押下位置に対応させて弦１２０の設置位置を変更する（ステップＳＣ１３０）。一方、ステップＳＣ１２０の判定結果が“ＮＯ”である場合、ステップＳＣ１２０の処理が繰り返され、弦１２０は継続して同じ位置に設けられる。
【００４９】
ステップＳＣ１４０において、制御部１０１は、弦１２０の設置を指示する押下位置情報の供給が停止されたか否かを判定する。ユーザがタッチパネル４２の押下を停止すると、押下位置情報は制御部１０１に供給されなくなり、ステップＳＣ１４０の判定結果は“ＹＥＳ”となり、該押下が停止された位置に対応する弦１２０が消滅する（ステップＳＣ１５０）。一方、継続して押下されている場合（ステップＳＣ１４０；“ＮＯ”）は、ステップＳＣ１２０以降の処理が繰り返される。
ステップＳＣ１６０において、制御部１０１は、振動体設定処理が終了したか否かを判定する。ステップＳＣ１６０の判定結果が“ＹＥＳ”である場合は、本振動体設定処理を終了する。ステップＳＣ１６０の判定結果が“ＮＯ”である場合は、再びステップＳＣ１００以降の処理を行う。以上が振動体設定処理の流れである。
【００５０】
（Ｂ−３；音データ生成処理）
初期設定処理がなされると、制御部１０１は音データ生成処理を開始する。図１１は、音データ生成処理の流れを示したフローチャートである。
【００５１】
ステップＳＢ１１０において、スプリンクラ１５０は、仮想粒子２００を仮想空間１００に出現させる。そして、出現した仮想粒子２００のそれぞれについて、ステップＳＢ１２０以下の処理が並行して行われる。
【００５２】
ステップＳＢ１２０において、微小単位時間後の仮想粒子２００の運動が演算される。仮想粒子２００が仮想空間１００の壁または他の仮想粒子２００に衝突した場合には、完全弾性衝突で跳ね返り、該仮想粒子２００には新たな速度が設定される。また、衝突が起こっていない場合には、仮想粒子２００の速度に微小時間を乗算することにより、仮想粒子２００は新たな位置に移動する。
なお、ステップＳＢ１２０においては、ステップＳＢ１１０にて仮想空間１００に出現した仮想粒子２００の全てについて同時にその軌道の算出が行われるため、ランダムに出現した多数の仮想粒子２００が互いに相互作用を高頻度で繰り返すこととなる。従って、仮に仮想空間１００の各種設定が同一であっても、毎回異なった仮想粒子２００の挙動が引き起こされる。
【００５３】
ステップＳＢ１３０において、ステップＳＢ１２０の処理により、仮想空間１００の底面に達してして消滅するか否かが判定される。ステップＳＢ１３０の判定結果が“ＹＥＳ”である場合には該仮想粒子２００を画面上から消去し、該仮想粒子２００に関しての処理を終了する。ステップＳＢ１３０の判定結果が“ＮＯ”である場合には、ステップＳＢ１４０以降の処理が行われる。
【００５４】
ステップＳＢ１４０において、仮想粒子２００が弦１２０と衝突したか否かが判定される。上述した振動体設定処理（割り込み処理）により設定された弦１２０と仮想粒子２００が相互作用した場合、ステップＳＢ１４０の判定結果は“ＹＥＳ”となり、ステップＳＢ１５０の処理が行われる。一方、ステップＳＢ１４０の判定結果が“ＮＯ”である場合は、ステップＳＢ１２０以降の処理が再び行われる。
【００５５】
ステップＳＢ１５０において、ステップＳＢ１４０において仮想粒子２００と相互作用した弦１２０の振動状態がシミュレーション演算される。そして、該シミュレーション演算の結果から、弦１２０において生成される音の振幅、周波数、音色などが解析され、該音を表す音データが生成される。なお、その場合、弦１２０が仮想空間１００中を移動している際に仮想粒子２００と相互作用した場合にも、静止している時に仮想粒子２００と相互作用した場合と同様に弦１２０を振動させる。
ステップＳＢ１６０において、弦１２０の振動状態に基づいて音データが生成される。
【００５６】
上述のように、スプリンクラ１５０は、一列且つ一定ではない間隔で配置されている。従って、各時刻における仮想粒子２００の軌道や存在位置はスプリンクラ１５０の配置と対応したパターンを有し、該仮想粒子２００が運動している仮想空間１００中を弦１２０が移動した場合には、ある周期で仮想粒子２００と弦１２０は相互作用し、周期性のある音が生成される。更には、仮想粒子２００はスプリンクラ１５０からランダムに放出されている上に多数の仮想粒子２００が互いに高頻度で相互作用を繰り返しているため、生成される音データにはランダム性や非再現性が付与される。
ステップＳＢ１６０が終わると、弦１２０と相互作用した仮想粒子２００について、ステップＳＢ１２０以降の処理を再び行う。
【００５７】
以上の音データ生成処理と並行して、モニタ３０には仮想空間１００における仮想粒子２００および弦１２０の運動や、弦１２０の振動状態が表示される。生成される音データは該表示に対応するものであるから、ユーザは放音された音とそのまま対応する画面表示を見ることが出来る。
【００５８】
上記ステップＳＢ１６０において生成された音データは音データ再生部３０ａへ出力され、音データ再生部３０ａは該音データを再生する。また、制御部１０１は、スプリンクラ１５０の配置態様、弦１２０の設置・移動態様、および仮想空間１００に設定された空間特性など、音データの生成に係る各種パラメータの情報（以下、設定情報）を、試行ごとにＲＡＭ１０４に書き込む。
制御部１０１は、ＲＡＭ１０４に書き込まれた設定情報を読み出すことにより、再度同じ条件設定下で音データの生成処理を行うことができる。なお、そのように同様の条件設定で再び音データを生成したとしても、各仮想粒子２００の挙動は毎回異なるため、微視的には異なる音データが生成される。
【００５９】
（Ｃ；変形例）
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。
【００６０】
（１）上記実施形態においては、重力や抵抗力などの空間特性は、音データの生成処理の最中に変更しない場合について説明したが、音データ生成処理の最中に変更することができるようにしても良い。例えば、予め重力加速度の方向が周期的に変化するようにプログラムしておけば、該重力加速度の周期的変化により、仮想粒子２００の運動は周期的に変化し、弦１２０との相互作用のリズムも更に多様に変化する。
【００６１】
（２）上記実施形態においては、振動体として弦１２０を設ける場合について説明した。しかし、振動体は弦に限定されず、例えば太鼓やシンバルなどを模した振動面を有する振動体（以下、面と呼ぶ）を設けても良い。以下、「面」の構成およびその振動の制御について説明する。
面１２５を仮想空間１００に設ける場合には、以下のようにすれば良い。仮想空間１００の表示は２次元であるため、面１２５を面の断面図で表示されるようにしても良い。すなわち、例えば仮想空間１００内で始点と終点とが指定された場合には、指定された始点と終点とを結ぶ直線が面１２５の断面となるように、そして面１２５と仮想空間１００の表示画面が直交するように面１２５が設けられるとすれば良い。
面と仮想粒子２００が相互作用した場合には、振動面に関する物理的シミュレーションを行い、面特有の音データを生成するようにすれば良い。
なお、上記実施形態においては、仮想粒子２００は弦１２０と相互作用した場合に、反発せずそのまま弦１２０を通過する場合について説明したが、面との相互作用においては、仮想粒子２００は跳ね返るとの条件を設けても良い。
【００６２】
（３）上記実施形態においては、弦１２０の振動を、物理モデルのシミュレーションにより演算する場合について説明した。しかし、弦特有の音を表す波形データを予めＲＯＭ１０３に記憶しておき、仮想粒子２００と弦１２０との衝突の度に、該波形データを読み出すようにしても良い。その場合、波形データを複数種類格納しておき、弦の特徴（弦の太さ、長さなど）に応じて、弦ごとに異なる波形データが選択的に読み出されるようにしたり、振幅やピッチなどを変換して発音されるようにしても良い。
【００６３】
（４）上記実施形態においては、スプリンクラ１５０から出現する仮想粒子２００の出現パターンは、ランダムである場合について説明した。しかし、その出現パターンの頻度・出現箇所が周期的に変化するようにしても良い。また、仮想粒子２００ごとに初速度は均一である場合について説明したが、周期性を持たせても良い。要は、仮想粒子２００の出現パターンに周期性をもたせることにより、仮想粒子２００と弦１２０との相互作用にリズムを持たせるようにしても良い。
【００６４】
（５）上記実施形態においては、仮想粒子２００が弦１２０に対して接近しても、そのまま通り抜ける場合について説明したが、弦１２０と仮想粒子２００との相互作用においても、仮想粒子２００同士の相互作用と同様に衝突および跳ね返りが発生するようにしても良い。
【００６５】
（６）上記実施形態において、仮想粒子２００は、仮想空間１００に設定された重力に従って自由落下する場合について説明した。しかし、仮想粒子２００の運動に影響を及ぼす構造体（規制体）を仮想空間１００に設けても良い。
図１３は、規制体の一例であるウォール１６０の配置に際するモニタ３０の画面表示の一例である。ユーザにより制御パネル４００下部のウォールアイコン４０５がクリックされた後ドラッグ操作がなされると、制御部１０１は該ドラッグ操作の始点と終点を対角線とする長方形の領域をウォール１６０として画面上に表示させる。例えば、カーソル１７０が図中１７０（ａ）から１７０（ｂ）の位置までドラッグされると、ウォール１６０（ａ）が設定される。
また、カーソル１７０を、一旦設定されたウォール１６０の頂点に合わせてボタン２２を押下し、押下したままマウス２０を移動する操作がなされると、ウォール１６０の重心を中心としてカーソル１７０の移動に伴ってウォール１６０が回転される。例えば、ウォール１６０（ｃ）の頂点（カーソル１７０（ｃ）の位置）にカーソル１７０を合わせ、ボタン２２を押下したままカーソル１７０（ｄ）で示される位置まで移動されると、ウォール１６０はウォール１６０（ｄ）で示される位置に回転される。
また、カーソル１７０をウォール１６０の内側領域にあわせて同様の操作がなされると、ウォール１６０はカーソル１７０の移動に伴って移動される。例えば、ウォール１６０（ｅ）の内部領域（カーソル１７０（ｅ）の位置）にカーソル１７０を合わせ、ボタン２２を押下したままカーソル１７０（ｆ）で示される位置まで移動されると、ウォール１６０はウォール１６０（ｆ）で示される位置に移動される。
また、音データ生成処理中にウォール１６０がダブルクリックされると、選択されたウォール１６０は消滅するようにしても良い。
このように規制体を設けることにより、仮想粒子２００の軌道・存在位置を更に多様に制御することができ、規制体の配置態様によって多様なリズムの音データを生成することができる。
【００６６】
（７）上記実施形態においては、スプリンクラ１５０が複数固定して設けられると共に、１つの弦１２０が仮想空間１００の中を平行移動する場合について説明した。しかし、弦１２０と仮想粒子２００の軌道の相対的な位置関係が周期的に変化すれば良いため、例えば以下のような処理が行われても良い。
（ａ）弦１２０が回転移動するとしても良い。その場合、図１４の領域Ａ（画面左領域）に示すように、回転台１３０を仮想空間１００に設け、回転台１３０にオーバーラップさせて弦１２０を設ける。回転台１３０は、所定の角速度で回転しており、弦１２０は回転台１３０において固定されていることから仮想空間１００内において回転運動をする。例えば図１４のように、弦１２０が所定の位置を横切った時に仮想粒子２００と相互作用するように設定しておけば、周期的に弦１２０と仮想粒子２００は相互作用し、リズムのある音が生成される。
また、図１４の領域Ｂ（画面右領域）に示すように、回転台１３０にオーバーラップさせてスプリンクラ１５０を設けると、スプリンクラ１５０は、仮想空間１００内において回転運動し、四方に仮想粒子２００を放出する。その結果、スプリンクラ１５０から放出された仮想粒子２００は、周期的に弦１２０と相互作用する。
（ｂ）設けられたスプリンクラ１５０が一体となって仮想空間１００内を移動するとしても良い。すなわち、図９においては、スプリンクラ１５０から放出された仮想粒子２００を横切るように弦１２０が移動しているが、その逆に弦１２０は仮想空間１００内で固定されており、スプリンクラ１５０が左右に移動することにより、周期的に仮想粒子２００が弦１２０と相互作用するようにしても良い。また、スプリンクラ１５０と弦１２０が共に移動するようにしても良い。
（ｃ）上記実施形態においては、スプリンクラ１５０が複数、弦１２０が１つ設けられる場合を例示したが、スプリンクラ１５０が１つ、弦１２０が複数設けられるようにしても良い。その場合も、弦１２０が一体となって移動したり、スプリンクラ１５０が移動したりすることにより、周期的に発音がなされる。
（ｄ）上記変形例（６）に示したウォール１６０が周期的に移動するようにしても良い。そのようにすれば、ウォール１６０により仮想粒子２００の軌道・存在位置が周期的に制御され、リズムを生成することができる。
以上のようにしても、弦１２０とスプリンクラ１５０との相互作用に周期性やリズムが生じる。
【００６７】
（８）上記実施形態において、スプリンクラ１５０から、周期的に態様の異なる仮想粒子２００が出現するようにしても良い。例えば、速度、大きさ、質量など、異なる特性を有する仮想粒子２００が周期的に放出されるようにしても良いし、スプリンクラ１５０が仮想粒子２００を放出する発射角度の広がりや発射頻度などの放出態様を周期的に変化させるようにしても良い。そのようにすれば、該仮想粒子２００と弦１２０との相互作用により、周期的に異なる特性の音が発生し、更に多様なリズムを生成することができる。
【００６８】
（９）上記実施形態においては、本発明に係る音データ生成装置１０に特徴的な機能を実現するためのプログラムを、ＲＯＭ１０３に予め書き込んでおく場合について説明したが、磁気テープ、磁気ディスク、フレキシブルディスク、光記録媒体、光磁気記録媒体、ＲＡＭ、ＲＯＭなどのコンピュータ読取り可能な記録媒体に上記プログラムを記録して配布するとしても良く、インターネット網などの電気通信回線経由のダウンロードにより上記プログラムを配布するようにしても良い。
【００６９】
（１０）上記実施形態においては、弦１２０の移動を多点コントローラ４０により制御する場合について説明した。しかし、弦１２０の移動を自動的に行う手段を仮想空間１００中に設けても良い。例えば、図１５の領域Ａ（画面左領域）に示すように、仮想空間１００中にコンベア１８０を設ける。コンベア１８０は、矢印の方向に一定速度で回転しており、コンベア１８０のベルト部分に配置されたオブジェクト（この場合複数のスプリンクラ１５０）を移動させる。また、図１５の領域Ｂ（画面右領域）に示すように、コンベア１８０のベルト部分に弦１２０を複数配置する。上記の構成によりスプリンクラ１５０または弦１２０は反復的または循環的に移動し、スプリンクラ１５０から放出された仮想粒子２００は、リズミカルに弦１２０と相互作用する。
【００７０】
（１１）上記実施形態においては、仮想粒子２００同士、および仮想粒子２００と仮想空間１００の枠組みが衝突した場合には、跳ね返り係数１で完全弾性衝突をする場合について説明したが、跳ね返り係数は、１以外の値でも良い。すなわち、跳ね返り係数が０から１までの非弾性衝突を行うとしても良い。また、自然法則には反するが、衝突後の各オブジェクトの速度を演算する際に、１を越える値を跳ね返り係数として用いても良い。
【００７１】
（１２）上記実施形態においては、一例として図９に示したようにスプリンクラ１５０を配置する場合について説明した。しかし、スプリンクラ１５０の配置の態様は、ユーザにより適宜定められれば良い。例えば、音データ生成システム１により生成したい音のリズムと対応させるように、各スプリンクラ１５０のモニタ画面横方向の座標を決定すれば良い。
また、上記実施形態において、スプリンクラ１５０ごとに異なる態様で仮想粒子２００を放出させても良い。例えば、複数配置されたスプリンクラ１５０ごとに異なる放出頻度で仮想粒子２００を放出した場合には、仮想空間１００を移動する弦１２０に衝突する仮想粒子２００の数が変化するため、生成される音にリズムが生まれる。また、スプリンクラ１５０ごとに異なる性質（質量、大きさなど）の仮想粒子２００を放出した場合には、仮想空間１００を移動する弦１２０に仮想粒子２００が衝突した際の弦１２０の振動態様がスプリンクラ１５０ごとに変化するため、生成される音にリズムが生まれる。
なお、上記のようにスプリンクラ１５０ごとに性質を異ならせる場合には、該性質と対応付けてスプリンクラ１５０の表示態様を決定しても良い。例えば、各スプリンクラ１５０における仮想粒子２００の大きさや放出速度を、スプリンクラ１５０のノズルの長さや径を変えることにより表現するなどしても良い。
【図面の簡単な説明】
【００７２】
【図１】音データ生成処理におけるモニタ３０の画面表示の一例を示した図である。
【図２】音データ生成システム１の全体構成を示した図である。
【図３】音データ生成装置１０の構成を示した図である。
【図４】マウス２０の外観を示した図である。
【図５】モニタ３０の画面を示した図である。
【図６】多点コントローラ４０の機能を説明するための図である。
【図７】モニタ３０の画面表示の一例を示した図である。
【図８】空間特性の設定をするための画面表示を示した図である。
【図９】仮想粒子２００の出現手段の設置方法を説明するための図である。
【図１０】初期設定処理の流れを示したフローチャートである。
【図１１】音データ生成処理の流れを示したフローチャートである。
【図１２】振動体設定処理の流れを示したフローチャートである。
【図１３】規制要素の配置方法を説明するための図である。
【図１４】回転台１３０によるオブジェクトの移動について説明した図である。
【図１５】コンベア１８０によるオブジェクトの移動について説明した図である。
【符号の説明】
【００７３】
１…音データ生成システム、１０…音データ生成装置、２０…マウス、２１…本体、２２…ボタン、２３…通信ケーブル、２４…移動検知手段、３０…モニタ、４０…多点コントローラ、４１…通信ケーブル、４２…タッチパネル、１００…仮想空間、１０１…制御部、１０２…光ディスク再生部、１０３…ＲＯＭ、１０４…ＲＡＭ、１０５…Ｉ／Ｏ部、１０９…バス、１２０…弦、１３０…回転台、１５０…スプリンクラ、１６０…ウォール、１７０…カーソル、１８０…コンベア、２００…仮想粒子、４００…制御パネル
【図１】
0004953084.tif 000002
【図２】
0004953084.tif 000003
【図３】
0004953084.tif 000004
【図４】
0004953084.tif 000005
【図５】
0004953084.tif 000006
【図６】
0004953084.tif 000007
【図７】
0004953084.tif 000008
【図８】
0004953084.tif 000009
【図９】
0004953084.tif 000010
【図１０】
0004953084.tif 000011
【図１１】
0004953084.tif 000012
【図１２】
0004953084.tif 000013
【図１３】
0004953084.tif 000014
【図１４】
0004953084.tif 000015
【図１５】
0004953084.tif 000016