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