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