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