説明

音データ生成装置およびプログラム

【課題】コンピュータを用いて、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成する音データ生成装置およびプログラムを提供すること。
【解決手段】仮想空間100には、仮想の重力場など仮想粒子200の運動に影響を与える各種の条件が設定されている。スプリンクラ150により多数の仮想粒子200が仮想空間100内に放出され、仮想空間100内をランダムに運動する。図中楕円領域においては、近接する仮想粒子200同士を仮想の振動体である弦120で接続する処理が行われており、弦120が複数接続された振動体も含まれる。該仮想粒子200と弦120の複合体は、ランダムに運動する仮想粒子200により種々の態様で形成され、仮想粒子200との衝突により弦120は振動し、該振動に基づいて音データが生成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、音データ生成装置およびプログラムに関する。
【背景技術】
【0002】
近年、ますますリアリティーの増した音がコンピュータにより生成されるようになっている。例えばコンピュータで「雨降りの音」や「そよ風の音」など自然現象に伴う音を非常に巧妙に再現することができる(特許文献1参照)。
例えば、「雨降りの音」ならば、「ザーザー」、「そよ風の音」ならば「ヒューヒュー」など、自然現象ごとに特徴的な波形の音が生じるため、上記特許文献1などにおいては、自然現象における音の特徴を模した波形データを繰り返し音声へ変換することにより自然現象の音を再現している。
【特許文献1】特開平07−140973号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、上述の雨降りの音は多数の雨粒と地面の衝突から生じるものであり、そよ風の音は空気中に存在する多数の気体分子の流れや振動から生じるものであるとの例からも明らかなように、自然界において発生する音の多くは小さなスケールで見れば多数の粒子が高頻度で相互作用を繰り返すことにより生じている。
【0004】
例えば、一つの雨粒が地面と衝突する際には、「ポトッ」「ぺチ」「パチ」などの音が、各雨粒と地面との衝突状況や、他の雨粒との相互関係に応じて発生する。そして、無数の雨粒が連続して地面に衝突すると、それらの相互に異なる音が重ねあわされた音が発生する。そのように、大きさや位相、減衰状態、発生タイミングなどが異なる多数の音が重ねあわされることにより、結果的には、雨(多数の雨粒)の降る音である「ザー、ザー」という音として人間に知覚される。
そのように、自然界において発生している音は、総体として聴いた場合には個々の相互作用に由来する音の成分が区別されて聴取されることは無いが、実際は毎回異なる音から構成される2度と再現できない音が発生しているのである。そのような音の「ランダム性」や「非再現性」が自然界の音に「自然らしさ」を与えていると考えられる。
【0005】
しかし、上記特許文献1を含め、従来のコンピュータにより生成される音は、予め決められた波形データが繰り返し読み出されるだけの音であったため、その音には上述した「ランダム性」や「非再現性」が欠如しており、所謂「自然らしさ」が感じられないといった問題があった。
【0006】
本発明は上述の課題に鑑みてなされたものであり、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成する音データ生成装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段とを有することを特徴とする。
【0008】
本発明に係る音データ生成装置は、上記の構成において、前記仮想発音体設定手段は、前記仮想発音体として仮想の弦を張設し、前記音データ生成手段は、前記弦の振動をシミュレーション演算して音を生成しても良い。
【0009】
本発明に係る音データ生成装置は、上記の構成において、前記仮想空間内に特定の領域を設定する領域設定手段を有し、前記仮想発音体設定手段は、前記領域設定手段により設定された前記特定の領域において、前記仮想粒子が互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定することを特徴とする。
【0010】
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には、該ループの内側に仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段とを有することを特徴とする。
【0011】
本発明に係る音データ生成装置は、上記の構成において、前記仮想発音体設定手段は、前記仮想発音体として仮想の面を張設し、前記音データ生成手段は、前記面の振動をシミュレーション演算して音を生成することを特徴とする。
【0012】
本発明に係る音データ生成装置は、上記の構成において、前記仮想空間内に特定の領域を設定する領域設定手段を有し、前記仮想発音体設定手段は、前記領域設定手段により設定された前記特定の領域において、前記仮想粒子が互いに所定の位置関係を満たすことが演算された場合には該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には該ループの内側に仮想発音体を設定することを特徴とする。
【0013】
本発明に係る音データ生成装置は、上記の構成において、前記音データ生成手段は、複数の前記仮想発音体が前記仮想粒子を介して隣接している場合に、一方の仮想発音体が振動することが演算された場合には、前記仮想粒子の振動を介して、他方の仮想発音体へ振動が伝播するように演算することを特徴とする。
【0014】
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段として機能させることを特徴とする。
【0015】
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には、該ループの内側に仮想発音体を設定する仮想発音体設定手段と、前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段として機能させることを特徴とする。
【発明の効果】
【0016】
本発明に係る音データ生成装置またはプログラムによれば、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成することができる。
【発明を実施するための最良の形態】
【0017】
(本発明の概略説明)
本発明に係る音データ生成装置は、コンピュータの演算によって形成される仮想空間の中に多数の仮想粒子を放出させるとともに、該仮想粒子の位置関係に基づいて振動体(弦や面など)を仮想空間の中に出現させる。そして、仮想粒子と振動体との相互作用(衝突など)の状況を演算し、その演算結果による振動体の振動状態に基づいて音データを生成するものである。
【0018】
図1は、音データ生成処理におけるモニタ表示の一例である。仮想粒子200は、スプリンクラ150より仮想空間100内に放出される。そして、仮想粒子200は、仮想空間100内に設定された重力に従って画面の下方向に向けて「落下」すると共に、仮想空間100の壁面などで跳ね返ったり、仮想粒子200同士で衝突したりする。その結果、多数の仮想粒子200が仮想空間100内でランダムに運動する。さて、仮想空間100に設定された領域(例えば、図中L)においては、互いに衝突した仮想粒子200間に弦120が張設される。そして、他の仮想粒子200が該張設された弦120の領域を通過して弦120を「はじく」と弦120は振動する。そして、同図に示されるように、複数の仮想粒子200間で弦120が連結されている場合には、それら一連の弦120の中の1つの弦120が振動すると、該振動は弦120の間に位置する仮想粒子200を介して他の弦120に伝播する。これらの弦120の振動状態に基づいて音データが生成される。
【0019】
(A;構成)
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
【0020】
(A−1;全体構成)
図2は、本発明に係る音データ生成システム1の全体構成を示す図である。音データ生成システム1は、プログラム実行装置としての音データ生成装置10と、マウス20と、モニタ30とを有する。
【0021】
(A−2;各装置の構成)
まず、音データ生成装置10のハードウェア構成について図3を参照して説明する。
音データ生成装置10は、制御部101、光ディスク再生部102、ROM(Read Only Memory)103、RAM(Random Access Memory)104、I/O部105を有する。それら各部はバス109を介して互いに接続されている。
【0022】
図に示す制御部101は、例えばCPU(Central Processing Unit)であり、ROM103から読み出された各種制御プログラムを実行することにより、音および映像の信号処理や各部の制御を行う。
【0023】
光ディスク再生部102は、CD−ROM・DVD−ROM等の光ディスクからデータを読取る。
ROM103は、制御部101が実行する各種制御プログラムを格納している。
RAM104は、制御部101によってワークエリアとして利用される。
【0024】
I/O部105は、音データ生成装置10と接続された機器との信号の送受信を仲介する。具体的には、マウス20から操作内容を示す信号を受取り制御部101に出力すると共に、制御部101から受取った音データおよび映像データをモニタ30に出力する。
以上が音データ生成装置10の構成である。
【0025】
次に、マウス20の構成について図4を用いて説明する。マウス20は、本体21の上面(図中(a)参照)にはボタン22を、下面(図中(b)参照)には移動検知手段24を有する。また、マウス20は、音データ生成装置10に通信ケーブル23にて接続されており、操作内容を示すデータが通信ケーブル23を介して音データ生成装置10に送信される。
【0026】
マウス20は、本体21が移動されると移動検知手段24が移動方向と移動量を示す操作信号を生成し、通信ケーブル23を介して出力する。該信号を受取った制御部101は、操作信号に基づいてモニタ30の画面上のカーソルを移動する処理を行う。
また、ボタン22が押下(以下、クリック)されると、マウス20はクリック操作がなされたことを示すクリック操作信号を生成し、通信ケーブル23を介して出力する。クリック操作信号を受取った制御部101は、クリック時にカーソルが位置していた座標を認識し、当該座標に表示されているアイコンなどに対して選択処理が行われたと認識する。
また、ボタン22を押下した状態で本体21が移動され、その後ボタン22の押下を解除する操作(以下、ドラッグ)がなされると、ボタン22が押下されていた間の本体21の移動方向と移動量、およびドラッグ操作がなされたことを示す信号を生成し、通信ケーブル23を介して出力する。該信号を受取った制御部101は、ドラッグ操作により選択された画面上の領域や該領域に含まれるアイコンなどに対して選択処理が行われたと認識する。
【0027】
次に、モニタ30の構成について図5を用いて説明する。モニタ30は、音データ生成装置10から受取った映像データに基づいて映像を表示する。モニタ画面の各点には、画面左上を座標(0,0)、右下を座標(756,1024)とする座標が設定されている。
また、図5に示すように、モニタ画面の下方には音データ再生部30aが設けられ、音データ生成装置10から受取った音データに基づいて音が放音される。
【0028】
(A−3;プログラムの構成)
次に、ROM103に格納された制御プログラムについて説明する。なお、制御プログラムには、音データ生成装置10の制御部101が音データを生成するために実行する各種プログラムが含まれ、以下では主要なもののみ取り上げて説明する。
【0029】
制御プログラムは、空間特性制御プログラム、オブジェクト制御プログラム、粒子運動制御プログラム、弦および面制御プログラム、映像制御プログラム、音データ生成プログラムなどからなる。
【0030】
空間特性制御プログラムは、重力などの仮想空間100に設定され仮想粒子200の運動に影響を及ぼす各種空間特性を制御する。オブジェクト制御プログラムは、仮想空間100内に仮想粒子200を出現させるオブジェクト(スプリンクラ150)の配置などを制御する。粒子運動制御プログラムは、仮想空間100内における仮想粒子200の運動を演算する。弦および面制御プログラムは、所定のアルゴリズムに従って仮想粒子200間に振動体(弦120または面140)を設けるとともに、該張設した振動体の振動状況を演算する。映像制御プログラムは、演算結果として与えられる仮想空間100内の仮想粒子200の運動や振動体の振動状態などの挙動をモニタ30画面上へ表示させる。音データ生成プログラムは、振動体の振動状態に基づいて音データを生成する。
【0031】
(A−4;仮想空間の制御)
以下では、空間特性制御プログラムによる仮想空間100の制御について説明する。
図6は、モニタ30の画面の一例を示した図である。画面には、仮想空間100の枠組みが表示されている。また、仮想空間100の表示領域の右側には、各種のアイコンを含む制御パネル400が表示されている。仮想空間100は、ユーザによる制御パネル400に対する操作に基づき、以下のように制御される。
【0032】
仮想空間100には、以下に例示するような「空間特性」が設定される。制御パネル400の空間特性アイコン404が押下されると、制御部101は、所定の選択肢をモニタ30の画面上に表示する。図7は、該表示の一例を示した図である。ユーザは、画面上に表示された重力の方向に関する選択肢を選択し、重力加速度の大きさを書き込む。また、仮想粒子200の移動の際に働く抵抗力は、仮想粒子200の速度に比例するとし、その速度に応じた抵抗力を決定するための比例定数を書き込む。制御部101は、入力された内容を粒子運動制御プログラムにおける粒子運動の挙動の算出に反映させる。
【0033】
なお、これら仮想空間100に関する設定は、予め制御プログラムなどにテンプレートとして書き込んでおいても良い。例えば、あるテンプレートにおいては、重力場は画面下方に設定され、仮想空間100内を移動する仮想粒子200には移動の方向とは逆にその速度に比例した抵抗力が働き、その比例定数が「水中」に相当するような大きな値に設定されているようにすれば、ユーザは該テンプレートを選択するだけで、仮想空間100がまるで重力のある空間に設置された水が満たされた容器であるかのような設定を簡易に行うことができる。
【0034】
(A−5;仮想粒子の運動)
以下では、粒子運動制御プログラムによる仮想粒子200の運動の制御方法について説明する。
(1)仮想粒子200の出現
まず、仮想粒子200の出現について図8を用いて説明する。本実施形態における仮想空間100には、仮想粒子200を仮想空間100に発生させるための装置として、スプリンクラ150が設けられる。
【0035】
スプリンクラ150は、制御パネル400の初速度402、頻度403の値が書き込まれてからスプリンクラアイコン401がクリックされ、仮想空間100内においてドラッグがなされることにより設定される。
スプリンクラ150は、放出口150aを有し、個々の仮想粒子200は、初速度402に書き込まれた初速度、および頻度403に書き込まれた頻度で放出口150aから放出される。仮想粒子200は、時間平均して単位時間あたり頻度403に書き込まれた数となるようにランダムに放出される。
【0036】
(2)仮想粒子200の運動
ROM103に格納された粒子運動制御プログラムは、仮想空間100内での仮想粒子200の運動を以下に説明するルール(a)〜(c)に従って制御する。なお、以下のルールは、地球上の物体の力学的性質および力学的法則を模したものである。
(a)仮想粒子200は、所定の体積(v)および質量(m)を有している。
(b)仮想粒子200に働く力Fと仮想粒子200の質量mと加速度αとの間にはF=mαの関係がある。たとえば本実施形態においては、仮想空間100の下向きに重力場が存在するため、仮想粒子200には常にmg(gは重力加速度)の大きさの力が仮想空間100の下向きに働く。
(c)仮想粒子200同士、および仮想粒子200と仮想空間100の枠組みが衝突した場合には、跳ね返り係数1で完全弾性衝突をする。
【0037】
(3)仮想粒子200の消滅
仮想空間100の枠組みの底辺に達した仮想粒子200は消滅するよう設定されている。
【0038】
(A−6;音データの生成)
音データ生成装置10は、ROM103に格納された音データ生成プログラムにより、以下に説明するように音データを生成する。
【0039】
振動体(弦120および後述する面140)の振動状態は、ROM103に格納された弦および面制御プログラムにより演算される。
弦120の振動状態の演算は、弦120の弾性(材質)、弦120の断面積、弦120の張力、弦120がはじかれた変位量などに基づいて、物理的なシミュレーションにより行われる。なお、弦120は仮想粒子200の間に張設されるため、それら仮想粒子200による慣性抵抗も弦120の振動状態の演算において考慮される。
ここで、慣性抵抗とは次のような力である。すなわち、弦120の振動や移動に伴って弦120は両端の仮想粒子200に力を及ぼすため、その反作用として弦120に対しては仮想粒子200から力が加わる。このような弦120の端点に仮想粒子200から働く力を慣性抵抗と呼ぶ。
シミュレーションの結果、各時刻における弦120の各部分の変位量が演算され、該演算結果から、弦120から発生する音の振幅、周波数、減衰態様などが導き出される。
【0040】
また、面140の振動状態の演算は、弦120と同様に、面140の弾性(材質)、面140の張力、面140が打撃された際の変位量などに基づいて、物理的なシミュレーションにより行われる。なお、面140は仮想粒子200を接続する棒状のオブジェクトであるフレーム130に張設されるため、それらフレーム130を支える仮想粒子200による慣性抵抗も演算において考慮される。シミュレーションの結果、各時刻における面140の各部分の変位量が演算され、該演算結果から、面140から発生する音の振幅、周波数、減衰態様などが導き出される。
【0041】
音データ生成装置10は、MAX/MSPを用いて音データを生成する。なお、MAX/MSPとは、音楽プログラミング言語MAXと音響信号処理用エクステンションMSPとからなる。MAX/MSPによれば、様々なモジュールをつなぎ合わせて、シンセサイザー、エフェクター、シーケンサーなどが作れるほか、パッチングによって音楽の自動生成なども可能であり、ビジュアル的なプログラミング環境によって、直感的なプログラミング・操作ができる。
【0042】
(B;動作)
以下では、音データ生成装置10が音データを生成する際の各部の動作について説明する。音データ生成装置10の電源が投入されると、制御部101はROM103から各種制御プログラムを読み出し、RAM104にロードする。
【0043】
(B−1;初期設定処理)
まず、制御部101は、初期設定処理を行う。図9は、初期設定処理の流れを示したフローチャートである。
ステップSA100において、仮想空間100の空間特性の設定がなされる。音データ生成システム1のユーザは、制御パネル400の空間特性アイコン404(図6参照)を押下し、モニタ30にパラメータ設定のための画面(図7参照)を表示させる。そして制御部101は、入力された内容に応じて仮想空間100の空間特性、すなわち仮想空間100における重力場および抵抗力の設定を行う。
【0044】
本実施形態においては、重力場の設定において、重力の方向として図面下方向が選択されたものとし、その場合仮想空間100は鉛直方向に設けられた空間であるかのように設定される。
また、抵抗力の設定において、比例定数の値が書き込まれると、仮想粒子200の移動速度に比例した抵抗力が該移動と逆方向に働く。そして、その比例定数に対応してまるで空気や水が仮想空間100に満たされているような環境に設定される。
【0045】
ステップSA110において、仮想粒子200を仮想空間100に出現させる手段(スプリンクラ150)の設定が行われる。ユーザにより制御パネル400にパラメータが書き込まれた後、スプリンクラアイコン401がクリックされ、仮想空間100内の領域が指定されると、スプリンクラ150が設定される。
【0046】
ステップSA120において、「粒子間結合領域」の設定がなされる。粒子間結合領域とは、該領域内に含まれる仮想粒子200が所定の条件を満たす場合に、該仮想粒子200の間に振動体(弦120または面140)を張設する処理がなされる領域である。本実施形態においては、粒子間結合領域として「液体的結合領域L」と「固体的結合領域S」の2種類の領域が設定可能である。
【0047】
図8に示すように、ユーザにより制御パネル400の液体領域アイコン405が押下され、続けて仮想空間100内の領域がドラッグにより指定されると、該領域が液体的結合領域Lとして設定される。液体的結合領域Lの範囲を表すデータは、RAM104に書き込まれる。
また、ユーザにより制御パネル400の固体領域アイコン406が押下され、続けて仮想空間100内の領域がドラッグにより指定されると、該領域が固体的結合領域Sとして設定される。固体的結合領域Sの範囲を表すデータは、RAM104に書き込まれる。
【0048】
本実施形態においては、図8に示すように、液体的結合領域Lと固体的結合領域Sが各々1つずつ設定される場合について説明する。しかし、設定される液体的結合領域Lと固体的結合領域Sの数は1に限定されない。また、液体的結合領域Lと固体的結合領域Sのいずれか一方のみが設定されるとしても良い。
また、同図に示すように、粒子間結合領域として楕円の領域が設定される場合について説明するが、粒子間結合領域の形状は楕円(円)に限定されるものではなく、長方形(正方形)およびフリーハンドによる閉領域などいずれの形状が設定されても良い。
液体的結合領域Lと固体的結合領域Sとを区別するために、モニタ30画面上で色や模様などを各粒子間結合領域に表示しても良い。
【0049】
(B−2;振動体設定処理)
仮想粒子200を仮想空間100に放出させる処理の説明に入る前に、仮想粒子200との相互作用により発音を行う振動体(弦120、面140)を仮想空間100に設ける処理について図10、および図12のフローチャートに従って説明する。なお、以下に説明する処理は、仮想空間100内に設定された各粒子間結合領域に関して並行して行われる。また、以下に説明する処理は、後述する音データ生成処理に対して割り込み処理として行われる。
【0050】
仮想粒子200は、上述したようにスプリンクラ150から放出され、仮想空間100内でランダムに運動している。
【0051】
まず、液体的結合領域Lにおける処理について、図10のフローチャートを参照して説明する。
ステップSB90において、液体的結合領域L内に進入した仮想粒子200が、他の仮想粒子200との間で衝突したか否か判定される。ステップSB90の判定結果が“NO”である場合には、ステップSB90が繰り返される。ステップSB90の判定結果が“YES”である場合には、ステップSB100の処理が実行される。
【0052】
ステップSB100において、衝突した仮想粒子200の衝突対象はフリーの(弦120が張設されていない)仮想粒子200であるか否か判定される。フリーの仮想粒子200同士が衝突した場合(ステップSB100;“YES”)、ステップSB120の処理が行われる。
【0053】
この時の線状複合体の生成態様を図11を参照して説明する。図11(A)は、ステップSB100における判定結果が“YES”であった場合のステップSB120における線状複合体の生成態様を経時的に示した図である。同図(a)は、液体的結合領域Lに進入した仮想粒子200Gが、フリーの仮想粒子200Fに衝突する直前の位置関係を示している。同図(b)は、両仮想粒子200が衝突し跳ね返る瞬間を示している。このとき、両仮想粒子200間に弦120が張設される。その後、仮想粒子200は互いに離れる方向に移動し、生成された弦120は引き伸ばされるが、同図(c)に示すように弦120が所定の長さになると、張力が働き仮想粒子200の相対的な移動は停止する。このときの弦120が定常状態の弦120として設定される。
【0054】
さて、ステップSB100において、仮想粒子200が、フリーの仮想粒子200ではなく線状複合体に衝突した場合(ステップSB100;“NO”)には、ステップSB110の処理が行われる。
ステップSB110において、仮想粒子200の衝突対象は、線状複合体の端に位置する仮想粒子200であるか否か判定される。ステップSB110の判定結果が“NO”である場合には、線状複合体生成処理は終了する。一方、ステップSB110の判定結果が“YES”である場合、ステップSB120の処理が行われる。
【0055】
この場合のステップSB120における線状複合体の生成態様を再び図11を参照して説明する。図11(B)の(d)、(e)、(f)は、ステップSB110における判定結果が“YES”であった場合のステップSB120における線状複合体の生成態様を経時的に示した図である。この場合、仮想粒子200Gの衝突対象である仮想粒子200Kは他の仮想粒子200との間で線状複合体を既に形成している点のみが上記図(A)における弦120の張設態様とは異なるため、詳細な説明は省略する。その結果、同図(f)に示すように、弦120が新たに1つ張設され、既存の線状複合体の端に弦120が1つ付け加えられる。
以上のようにして、仮想粒子200が弦120で線状につながれた線状複合体が生成される。
【0056】
固体的結合領域Sにおける処理について、図12のフローチャートを参照して説明する。
ステップSC90において、固体的結合領域S内に進入した仮想粒子200が、他のオブジェクトとの間で衝突したか否か判定される。ステップSC90の判定結果が“NO”である場合には、ステップSC90が繰り返される。ステップSCの判定結果が“YES”である場合には、ステップSC100の処理が実行される。
【0057】
ステップSC100において、衝突した仮想粒子200の衝突対象はフリーの仮想粒子200であるか否か判定される。フリーの仮想粒子200同士が衝突した場合(ステップSC100;“YES”)、ステップSC110の処理が行われる。ステップSC110の処理内容は、上述した線状複合体生成処理におけるステップSB120における処理(図11(A))と同様であるため、ここでは再度の説明を省略する。
【0058】
仮想粒子200の衝突対象がフリーの仮想粒子200ではない場合(ステップSC100;“NO”)、ステップSC120の処理が行われる。
ステップSC120において、仮想粒子200の衝突対象は、網状複合体のフレーム130であるか否か判定される。ステップSC120の判定結果が“NO”である場合、網状複合体生成処理を終了する。
【0059】
仮想粒子200が網状複合体のフレーム130と衝突した場合(ステップSC120;“YES”)、ステップSC130の処理が行われる。
ステップSC130において、衝突した仮想粒子200と衝突対象である網状複合体との間で面140が張設される。図11(C)を参照して該面140の張設態様を説明する。
【0060】
同図(g)は、固体的結合領域Sに進入した仮想粒子200Gが、網状複合体のフレーム130に衝突する直前の位置関係を示している。同図(h)は、仮想粒子200Gがフレーム130に衝突し跳ね返る瞬間を示している。このように、仮想粒子200Gは面140の内部領域に進入することはできず、フレーム130との衝突により跳ね返される。なお、このとき仮想粒子200Gは、面140に設定されたパラメータ(張力など)に基づく速度で跳ね返される。
【0061】
上記衝突時には、仮想粒子200Gと、衝突したフレーム130の両端に位置する2つの仮想粒子200N−1および200N−2との間にはフレーム130が新たに設けられる。そして、仮想粒子200Gは衝突したフレーム130から離れる方向に移動し、新たに設定された2つのフレーム130−1および130−2は引き伸ばされるが、同図(i)に示すようにフレーム130−1および130−2が所定の長さになると、仮想粒子200Gにはフレーム130から張力が働き網状複合体から離れる方向への移動は停止する。このとき仮想粒子200Gに設定されているフレーム130−1および130−2が定常状態のフレーム130として設定される。
なお、仮想粒子200はフレーム130−1および130−2の張力に基づき移動を停止するのではなく、新たに設定されたこれらのフレーム130により形成される領域の面積が閾値を越えた場合などに移動を停止するなどしても良い。
また、上記のように仮想粒子200の軌道がフレーム130や面140を横切る場合、仮想粒子200はフレーム130をそのまま通過するようにしても良く、その場合の面140の生成態様は以下のようにしても良い。すなわち、仮想粒子200の通過時には、該仮想粒子200と仮想粒子200N−1および200N−2との間にそれぞれフレーム130−1および130−2が設けられる。そして、フレーム130を通過した仮想粒子200は、上記所定の長さになったフレーム130−1および130−2から張力を受けて移動を停止し、新たに設けられたフレーム130に囲まれる領域に面140が設けられるとしても良い。
以上のようにして、複数の仮想粒子200が網目状につながれた網状複合体が生成される。
以上のように、時々刻々と仮想粒子200の位置関係が変化している仮想空間100では、粒子間結合領域において振動体(弦120または面140)のダイナミックな生成・消滅が演算される。
【0062】
(B−3;音データ生成処理)
初期設定処理がなされると、制御部101は音データ生成処理を開始する。図13は、音データ生成処理の流れを示したフローチャートである。
【0063】
ステップSD100において、スプリンクラ150は、仮想粒子200を仮想空間100に出現させる。そして、出現した仮想粒子200のそれぞれについて、ステップSD110以下の処理が並行して行われる。
【0064】
ステップSD110において、微小単位時間後の仮想粒子200の運動が演算される。仮想粒子200が仮想空間100の壁または他の仮想粒子200に衝突した場合には、完全弾性衝突で跳ね返り、該仮想粒子200には新たな速度が設定される。
上記他のオブジェクトとの相互作用が起こっていない場合には、仮想粒子200の速度に微小時間を乗算することにより、仮想粒子200は新たな位置に移動される。
【0065】
なお、ステップSD110においては、ステップSD100にて仮想空間100に出現した仮想粒子200の全てについて同時にその軌道の算出が行われるため、ランダムに出現した多数の仮想粒子200が互いに相互作用を高頻度で繰り返すこととなる。従って、仮に仮想空間100の各種設定が同一であっても、毎回異なった仮想粒子200の挙動が引き起こされる。
【0066】
ステップSD120において、ステップSD110の処理により、仮想空間100の底面に達してして消滅するか否かが判定される。ステップSD120の判定結果が“YES”である場合には該仮想粒子200を画面上から消去し、該仮想粒子200に関しての処理を終了する。ステップSD120の判定結果が“NO”である場合には、ステップSD130以降の処理が行われる。
【0067】
ステップSD130において、仮想粒子200が振動体(弦120または面140)と衝突したか否かが判定される。仮想粒子200が、上述した振動体設定処理(割り込み処理)により設定された弦120または面140と相互作用した場合、ステップSD130の判定結果は“YES”となり、ステップSD140の処理が行われる。一方、ステップSD130の判定結果が“NO”である場合は、ステップSD110以降の処理が再び行われる。
ステップSD140において、ステップSD130において仮想粒子200と相互作用した弦120または面140の振動状態がシミュレーション演算される。
【0068】
液体的結合領域Lについて、弦120(線状複合体)の振動状態のシミュレーション演算の概要を説明する。
進入した仮想粒子200が線状複合体を構成する弦120に衝突すると、仮想粒子200の衝突を受けた弦120について、弦120の端点である仮想粒子200による慣性抵抗も含めて振動状態が演算される。
【0069】
さて、1つの仮想粒子200において複数の仮想粒子200との間で弦120が張設されている場合には、ある弦120で生じた振動により該弦120の両端の仮想粒子200は振動し、隣接する弦120に該振動が伝播する。このように、線状複合体においては、仮想粒子200を介してつながる全ての弦120に振動が伝播する。
【0070】
このような振動の伝播は線状複合体を構成する仮想粒子200の特性(本実施形態においては仮想粒子200の質量)により制御される。すなわち、仮想粒子200の質量が大きい場合には、一方の弦120の振動により生じる張力により生じる仮想粒子200の振動の振幅は小さく、他方の弦120に伝播される振動の振幅(エネルギー)は小さくなる。また、仮想粒子200の質量が比較的小さい場合には、一方の弦120の振動により生じる張力により誘起される仮想粒子200の振動の振幅は比較的大きく、他方の弦120に伝播される振動の振幅(エネルギー)は大きくなる。このようにして線状複合体を構成するすべての弦120の振動状態が演算される。
【0071】
次に、固体的結合領域Sについて、面140(網状複合体)の振動状態のシミュレーション演算の概要を説明する。面140の振動状態は、上述した線状複合体の振動状態の演算を2次元(平面)に拡張した場合のシミュレーション演算により行われる。簡潔に説明すると、網状複合体に含まれる面140に仮想粒子200が衝突すると、上述したように新たな面140が生成される処理がなされる。該処理と並行して、仮想粒子200の衝突を受けた面140は振動を開始する。そして、該面140の振動は、面140を取り囲むフレーム130および仮想粒子200の振動を誘起する。該仮想粒子200およびフレーム130の振動は、上記振動を開始した面140に隣接する面140の振動を促す。その結果、網状複合体に含まれる全ての面140に振動が伝播する。
【0072】
以上に説明したシミュレーション演算の結果から、各弦120または面140において生成される音の振幅、周波数、音色などが解析される。
ステップSD150において、各弦120または面140の振動状態に基づいて音データが生成される。なお、音データは各線状複合体に含まれる各弦120、各網状複合体に含まれる各面140について、それぞれ独立に生成される。しかしながら、同じ複合体に属する弦120または面140から生成される音は、互いに関連性を有する。なぜならば、複合体を構成する1つの振動体が振動を始めると、該振動は他の複合体に遅れて伝播することから、音の生成タイミングが関連性を有するからである。また、1つの振動体の振動数は、仮想粒子200の振動を介して隣接する振動体の振動数に影響を及ぼすため、音のピッチおよび振幅が関連性を有するからである。
ステップSD150が終わると、各弦120または面140と相互作用した仮想粒子200について、ステップSD110以降の処理が再び実行される。なお、このとき、線状複合体または網状複合体に取り込まれた仮想粒子200については、以降はこれらの複合体の構成因子としてその挙動が演算される。
【0073】
以上の音データ生成処理と並行して、モニタ30には仮想空間100における仮想粒子200および各弦120および面140の生成態様や、各弦120および面140の振動状態が表示される。生成される音データは該表示に対応するものであるから、ユーザは放音された音とそのまま対応する画面表示を見ることが出来る。
【0074】
上記ステップSD150において生成された音データは音データ再生部30aへ出力され、音データ再生部30aは該音データを再生する。また、制御部101は、スプリンクラ150の配置態様、仮想粒子200の放出態様、粒子結合領域の設定態様、および仮想空間100に設定された空間特性など、音データの生成に係る各種パラメータの情報(以下、設定情報)を、試行ごとにRAM104に書き込む。
制御部101は、RAM104に書き込まれた設定情報を読み出すことにより、再度同じ条件設定下で音データの生成処理を行うことができる。
【0075】
なお、そのように同様の条件設定で再び音データを生成したとしても、各仮想粒子200の挙動はランダムで毎回異なるものとなるため、生成される粒子間結合の状態、ひいては振動体の設置態様も毎回異なるものとなる。従って、該振動体の振動状態に基づいて生成される音データは、ランダム性の高いものとなると共に、再現することができない音データとなる。
【0076】
(C;変形例)
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。
【0077】
(1)上記実施形態においては、本発明に係る音データ生成装置10に特徴的な機能を実現するためのプログラムを、ROM103に予め書き込んでおく場合について説明したが、磁気テープ、磁気ディスク、フレキシブルディスク、光記録媒体、光磁気記録媒体、RAM、ROMなどのコンピュータ読取り可能な記録媒体に上記プログラムを記録して配布するとしても良く、インターネット網などの電気通信回線経由のダウンロードにより上記プログラムを配布するようにしても良い。
【0078】
(2)上記実施形態においては、線状複合体および網状複合体は、粒子間結合領域の内部領域において生成される場合について説明した。しかし、これらの複合体のいずれかを生成する処理が、仮想空間100全体において行われるとしても良い。
【0079】
(3)上記実施形態においては、弦120および面140の振動を、物理モデルのシミュレーションにより演算し、演算結果である振動状態に基づいて音データを生成する場合について説明した。しかし、弦や面に特有の音を表す波形データを予めROM103に記憶しておき、仮想粒子200と弦120または面140との衝突の度に、該波形データを読み出すようにしても良い。その場合、波形データを複数種類格納しておき、弦120または面140の特性(弦120の太さ、面140の面積など)に応じて、弦120または面140ごとに異なる波形データが選択的に読み出されるようにしたり、振幅やピッチなどを変換して発音されたりするようにしても良い。
【0080】
(4)上記実施形態においては、粒子間結合領域において形成された複合体が自由に移動する場合について説明した。しかし、複合体は生成後に固定されるとしても良い。
【0081】
(5)上記実施形態においては、仮想粒子200が弦120に対して接近しても、そのまま通り抜ける場合について説明したが、弦120と仮想粒子200との相互作用においても、仮想粒子200同士の相互作用と同様に衝突および跳ね返りが発生するようにしても良い。
【0082】
(6)上記実施形態において、仮想粒子200は、仮想空間100に設定された重力に従って自由落下する場合について説明した。しかし、仮想粒子200の運動に影響を及ぼす構造体(規制体)を仮想空間100に設けても良い。
図14は、規制体の一例であるウォール160の配置に際するモニタ30の画面表示の一例である。ユーザにより制御パネル400下部のウォールアイコン407がクリックされた後ドラッグ操作がなされると、制御部101は該ドラッグ操作の始点と終点を対角線とする長方形の領域をウォール160として画面上に表示させる。例えば、カーソル170が図中170(a)から170(b)の位置までドラッグされると、ウォール160(a)が設定される。
また、カーソル170を、一旦設定されたウォール160の頂点に合わせてボタン22を押下し、押下したままマウス20を移動する操作がなされると、ウォール160の重心を中心としてカーソル170の移動に伴ってウォール160が回転される。例えば、ウォール160(c)の頂点(カーソル170(c)の位置)にカーソル170を合わせ、ボタン22を押下したままカーソル170(d)で示される位置まで移動されると、ウォール160はウォール160(d)で示される位置に回転される。
また、カーソル170をウォール160の内側領域にあわせて同様の操作がなされると、ウォール160はカーソル170の移動に伴って移動される。例えば、ウォール160(e)の内部領域(カーソル170(e)の位置)にカーソル170を合わせ、ボタン22を押下したままカーソル170(f)で示される位置まで移動されると、ウォール160はウォール160(f)で示される位置に移動される。
また、音データ生成処理中にウォール160がダブルクリックされると、選択されたウォール160は消滅するようにしても良い。
このように規制体を設けることにより、仮想粒子200の軌道・存在位置を更に多様に制御することができ、規制体の配置態様によって多様なリズムの音データを生成することができる。
【0083】
(7)上記実施形態においては、粒子間結合領域において複合体が一旦形成されると、該複合体構造(すなわち、弦120またはフレーム130)が音データ生成処理の間維持される場合について説明した。しかし、以下のようにして、複合体構造が脱構造化するようにしても良い。例えば、各弦120またはフレーム130について、形成されてから所定の時間が経過すると、消滅するようにしても良い。また、複合体が移動して、その一部が粒子間結合領域からはみ出した場合などには、該はみ出した仮想粒子200との間に設けられた弦120またはフレーム130が消滅するようにしても良い。すなわち、粒子間結合領域内のみに複合体が存在するようにしても良い。
また、仮想粒子200が複合体に衝突した場合には、該複合体を構成する因子(仮想粒子200や弦120やフレーム130)に力積が加えられるが、該衝突において加えられる力積が所定の閾値を越える場合には、弦120またはフレーム130が「切断」されるとしても良い。例えば、仮想粒子200が、線状複合体の中間に位置する仮想粒子200に上記閾値を越える速度で衝突した場合には、衝突された仮想粒子200はある閾値を越える速度で跳ね飛ばされ、その結果該仮想粒子200に張設された弦120が切断され、線状複合体は2つに切断されるなどという現象がおこるとしても良い。
【0084】
(8)上記実施形態において、全ての仮想粒子200が同じ特性を有する場合について説明した。しかし、仮想粒子200ごとに異なる特性を有するようにしても良い。たとえば、仮想粒子200を2つのグループに分け、一方のグループは複合体を形成することにのみ関与し、他方のグループは複合体を形成することに関与せず、上記一方のグループにより形成された複合体に含まれる弦120または面140と衝突した場合に、該振動体を振動させることにのみ関与する、等としても良い。その場合、スプリンクラ150ごとに、仮想粒子200の特性を変えても良いし、同一のスプリンクラ150から異なる特性の仮想粒子200が所定の割合で放出されるとしても良い。
【0085】
(9)上記実施形態においては、線状複合体および網状複合体の生成処理において、新たに設定された弦120またはフレーム130の張力により、仮想粒子200の相対的な移動が停止し、該停止状態を定常状態とする弦120または面140が設けられる場合について説明した。しかし、該弦120またはフレーム130の張力が閾値を越える場合には、新たに設けられた弦120またはフレーム130が「切断」され、弦120または面140は生成されないとしても良い。
【0086】
(10)上記実施形態において、複合体が移動して複合体同士が衝突した場合にも、該衝突により、一方の複合体を構成する仮想粒子200により他方の複合体を構成する仮想粒子200、弦120、フレーム130に力積が加わり双方の複合体に含まれる振動体が振動するとしても良い。
【0087】
(11)上記実施形態においては、仮想粒子200同士、および仮想粒子200と仮想空間100の枠組みが衝突した場合には、跳ね返り係数1で完全弾性衝突をする場合について説明したが、跳ね返り係数は、1以外の値でも良い。すなわち、跳ね返り係数が0から1までの非弾性衝突を行うとしても良い。また、自然法則には反するが、衝突後の各オブジェクトの速度を演算する際に、1を越える値を跳ね返り係数として用いても良い。
【0088】
(12)上記実施形態においては、仮想粒子200は予め決められた特性を有する場合について説明した。しかし、ユーザが適宜該特性を変更できるような手段を設けても良い。例えば、初期設定処理において、仮想粒子200の特性(質量、体積など)を設定することができるようにしてもよい。そのようにすれば、仮想粒子200の特性に応じて慣性抵抗がさまざまに制御され、弦120や面140の振動状態や、隣接する振動体への振動の伝播特性が様々に制御可能である。例えば、仮想粒子200の質量を大きく設定した場合には慣性抵抗が大きくなることから、複合体内における他の振動体への振動の伝播が起こりにくくなる。
【0089】
(13)上記実施形態においては、仮想粒子200の特性(質量・体積など)により、複合体における振動の伝播特性が制御される旨を説明した。しかし、伝播特性に影響を及ぼすパラメータは、仮想粒子200の質量・体積に限られるものではない。
例えば、仮想粒子200に減衰率(%)のパラメータを定めておき、隣接する振動体に振動が伝達される際にエネルギーや振幅などが減衰する割合を制御しても良い。
また、弦120または面140ごとに、その特性(振動体の長さ・面積、張力、材質など)から該振動体の固有振動数を演算し、隣接する振動体間で固有振動数の値の差が小さい場合には振動が良く伝播し、値の差が大きいほど振動の伝播の程度が悪くなるようにしても良い。すなわち、振動体間での振動の伝播を演算するにあたり、振動体ごとの固有振動数を考慮しても良い。
【0090】
(14)上記実施形態においては、初期設定処理において粒子間結合領域が設定され、粒子間結合領域の位置は音データ生成処理の最中に固定されている場合について説明した。しかし、粒子間結合領域を音データ生成処理の最中に変更することができるようにしても良い。その場合、例えばマウス20により粒子間結合領域をドラッグすることにより移動するようにしても良いし、予め粒子間結合領域の移動経路や移動速度を指定しておき、音データ生成処理の最中に該移動経路を移動させる処理が行われるようにしても良い。
また、スプリンクラ150の設定位置や、角度、仮想粒子200の噴射角度などの各種の特性をユーザが適宜変更することができるようにしても良い。そのようにすれば、粒子間結合領域における複合体の生成態様、ひいては生成される音データも更に多様性を増すとの効果を奏する。
【0091】
(15)上記実施形態においては、同一の複合体に含まれる振動体の間でのみ振動が伝播する場合について説明した。しかし、異なる複合体に含まれる振動体の間で振動が伝播するようにしても良い。
例えば、以下のように共鳴現象が起こるようにしても良い。すなわち、ある複合体に含まれる振動体が振動すると、該振動体と類似の特性(固有振動数など)を有する他の複合体に含まれる振動体が振動するようにしても良い。また、そのような共振におけるエネルギーの伝播の効率を指定するパラメータが自由に設定可能としても良い。
【0092】
(16)上記実施形態においては、振動体設定処理における振動体の張設態様の一例を説明した。しかし、張設態様は上記の例に限定されるものではなく、種々の態様が可能である。以下では、別の張設態様について、図15のフローチャートに従って説明する。
なお、以下に説明する処理についても、仮想空間100内に設定された各粒子間結合領域に関して並行して行われる。また、以下に説明する処理についても、後述する音データ生成処理に対して割り込み処理として行われる。
【0093】
ステップSE100において、粒子間結合領域内に存在する仮想粒子200が特定される。
ステップSE110において、粒子間結合領域内に存在することが特定された仮想粒子200の全ての組み合わせで、仮想粒子200間の距離が演算される。
ステップSE120において、仮想粒子200間の距離が所定の値未満となっている仮想粒子200の組みが存在するか否かが判定される。距離が所定の値未満である仮想粒子200の組みが存在しない場合(ステップSE120;“NO”)には、ステップSE100以降の処理が再び行われる。一方、距離が所定の値未満である仮想粒子200の組みが存在する場合(ステップSE120;“YES”)には、ステップSE130の処理が行われる。
ステップSE130において、粒子間結合領域の種類が液体的結合領域Lであるか固体的結合領域Sであるかが判定される。以下では、ステップSE130の判定結果に基づいて、以下のように処理が行われる。
【0094】
まず、液体的結合領域Lにおける振動体(弦120)の張設態様の一例を説明する。
ステップSE140において、距離が所定の値未満となっている仮想粒子200の組みが全て特定される。
そして、ステップSE150において、ステップSE140において特定された仮想粒子200の組みについて、距離が小さい順に仮想粒子200の間に弦120が張設される。なお、弦120を張設することにより、1つの仮想粒子200に3つ以上の弦120が張設されるような場合には、該仮想粒子200の組み合わせについては弦120を張設しない。また、弦120を張設することにより、弦120がループ状に張設されたり、弦120が他の弦120とクロスするような場合にも、該仮想粒子200の組み合わせについては弦120を張設しない。
以上のようにして、弦120が仮想粒子200の箇所において「枝分かれ」や「交差」をすることなく、順次張設される。
【0095】
なお、弦120の生成方法は、上記説明した方法に限定されるものではない。たとえば以下のような方法でも良い。
(a)上記の方法においては、仮想粒子200間に弦120を張設する際に、弦120がクロスしないように張設する場合について説明した。しかし、弦120がクロスするように張設しても良い。その場合、クロスする弦120同士で、弦同士が触れあうことにより互いの振動状態に影響を及ぼし合うようにしても良いし、振動状態が独立して演算されるようにしても良い。
(b)上記の方法においては、仮想粒子200間に弦120を張設する際に、弦120がループを形成しないように張設する場合について説明した。しかし、ループを形成するように張設しても良い。
【0096】
さて、以上のようにして形成された仮想粒子200と弦120の複合体の一例を、図16(A)に示す。このような線状複合体は、端点が自由に運動可能な仮想粒子200であることから、仮想粒子200と弦120が一体となって仮想空間100内を移動することが可能である。また、仮想粒子200の位置で弦120同士が種々の角度をなすことが可能であることから、線状複合体は変形することも可能である。
以上で、液体的結合領域Lにおける処理を終了する。
【0097】
次に、固体的結合領域Sにおける振動体(面140)の張設態様の一例を説明する。
ステップSE160において、距離が所定の値未満となっている仮想粒子200の組みが全て特定される。
ステップSE170において、ステップSE160において特定された仮想粒子200の組みについて、距離が小さい順に仮想粒子200の間にフレーム130が接続される。なお、固体的結合領域Sにおいても、フレーム130が接続されることにより他のフレーム130とクロスするような場合には、該仮想粒子200の組み合わせに対してフレーム130は接続されない。一方で、最近接の仮想粒子200との間でフレーム130が接続された結果、フレーム130がループ状に形成される場合や、1つの仮想粒子200に3つ以上のフレーム130が接続される場合にもフレーム130は接続される。以上のようにして、フレーム130が網状に接続され、該フレーム130により多角形の閉じた領域が形成される。
以上のようにして形成された仮想粒子200とフレーム130の複合体の一例を、図16(B)に示す。
【0098】
次に、ステップSE180において、該多角形の閉領域内に、振動する面140が張設される。すなわち、仮想粒子200が該面140に衝突した場合には、該面140は振動すると共に、仮想粒子200は跳ね返る。このような仮想粒子200と弦120の複合体は、上記線状複合体と同様に、仮想粒子200とフレーム130が一体となって仮想空間100内を移動することが可能である。
【0099】
なお、上記の方法においては、固体的結合領域Sにおける面140の張設態様の一例を説明したが、面140の張設態様は、上記説明した方法に限定されるものではない。たとえば以下のような方法でも良い。
(a)上記の例では、図16(B)に示すように、3つの仮想粒子200およびフレーム130により囲まれた三角形領域を面140とする場合について説明したが、4つ以上の仮想粒子200およびフレーム130により囲まれた多角形領域を面140としても良い。例えば、図17(A)に示すように、固体的結合領域Sにおいて形成されたフレーム130のループを全て特定し、該特定されたループから最も大きなループ(図中領域a、b、cを全て含むループ)に囲まれた領域に1つの面140を張設するなどしても良い。
(b)上記の例では、仮想粒子200間にフレーム130を接続する際に、フレーム130がクロスしないように接続する場合について説明した。しかし、フレーム130をクロスするように接続しても良い。その場合、図17(B)に示すように、クロスしたフレーム130により領域が更に分割された場合には、該分割された個々の領域(面140d、140e、140f、140g)をそれぞれ独立した面140としても良い。
以上で、固体的結合領域Sにおける処理を終了する。
【0100】
さて、以下では、上記複合体の振動について図18を参照して説明する。
同図(A)に示すように、液体的結合領域Lに進入した仮想粒子200G(図中、黒丸)が、フリーの仮想粒子200Fと接近し(a)、それらの仮想粒子200間に弦120が張設される場合(b)、生成された複合体は、進入した仮想粒子200Gの運動量を保存するように移動を開始する(c)と共に、新たに張設された弦120は、該弦120の生成時における両仮想粒子200の相対速度に基づく振幅で振動するとしても良い。
【0101】
また、進入した仮想粒子200Gが既存の線状複合体に接近した場合、以下に説明する2通りの処理のいずれかが実行される。
同図(B)に示すように、進入した仮想粒子200Gが弦120と相互作用するまでの間に、線状複合体を構成する仮想粒子200と所定の距離未満まで近接した際(d)、該線状複合体を構成する仮想粒子200に既に弦120が2本張設されている場合には、該仮想粒子200との間に弦120は張設されず、そのまま弦120に衝突し(e)、衝突を受けた弦120は振動する。そして、該振動は両隣の弦120に伝播し、結果的には仮想粒子200を介してつながる全ての弦120に振動が伝播する(f)としても良い。
【0102】
また、同図(C)に示すように、進入した仮想粒子200が弦120と衝突するまでに接近した仮想粒子200において、弦120が1つしか張設されていない場合(すなわち線状複合体の端に位置する仮想粒子200Eと近接した場合)(g)、仮想粒子200Gと200Eとの間に弦120が張設され(h)、該弦120は振動を始める(i)。この場合も、上記と同様に、線状複合体に含まれる全ての弦120に振動が伝播するとしても良い。
また、面140の振動状態は、ここでも上述した線状複合体の振動状態の演算を2次元(平面)に拡張した場合のシミュレーション演算により行われるが、その詳細な説明は省略する。
【0103】
(17)上記実施形態においては、線状複合体や網状複合体が、ランダムに運動する仮想粒子200の移動態様に基づいて生成され、その結果として生成される音が制御される旨を説明した。しかしその逆に、ユーザにより指定される音に応じて、線状複合体や網状複合体を構成する弦120または面140に設定される物理的パラメータが制御されるようにしても良い。
例えば、ROM103には、種々の音に対応付けて、該音を弦120または面140に生成させるための各種パラメータが書き込まれたテーブルが格納されている。そして、線状複合体に対して、例えば高いピッチの音が指定された場合には、該音を生成するためのパラメータが読みだされ該音を生成可能な弦120が線状複合体に含まれるように設定される。具体的には、該線上複合体を構成する弦120の張力が大きく設定されたり、弦120の長さが短く設定されたりする。
なお、ユーザが鍵盤楽器に設けられる鍵盤(キーボード)を操作することによって音を指定できるようにしても良い。この場合は、音高を指定するための鍵を複数有する鍵盤を音データ生成装置10に設ける構成としてもよく、また、鍵盤を備える音高指定装置を音データ生成装置10と接続するようにしてもよい。この場合、ユーザが鍵盤に含まれるいずれかの鍵を押下すると、鍵盤が操作された内容に応じた信号を出力する。そして、音データ生成装置10は、鍵盤からの信号に応じて押下された鍵に対応する音を特定し、特定した音に対応するパラメータが弦120または面140に設定される。
なお、上記設定された物理的パラメータに応じて、モニタ30における弦120(線状複合体)や面140(網状複合体)の表示態様を変更しても良い。例えば、上記の例であれば、高いピッチの音が指定された場合には、弦120が短く表示されたり、面140の面積が小さく表示されたりしても良い。
以上のような構成とすることにより、ユーザは各複合体のパラメータを容易に調整し、所望の音を生成させることができる。
【図面の簡単な説明】
【0104】
【図1】音データ生成処理におけるモニタ30の画面表示の一例を示した図である。
【図2】音データ生成システム1の全体構成を示した図である。
【図3】音データ生成装置10の構成を示した図である。
【図4】マウス20の外観を示した図である。
【図5】モニタ30の外観を示した図である。
【図6】モニタ30の画面表示の一例を示した図である。
【図7】空間特性の設定をするための画面表示を示した図である。
【図8】仮想粒子200の出現手段の設置方法を説明するための図である。
【図9】初期設定処理の流れを示したフローチャートである。
【図10】線状複合体の生成処理の流れを示したフローチャートである。
【図11】複合体生成処理の過程を説明するための図である。
【図12】網状複合体の生成処理の流れを示したフローチャートである。
【図13】音データ生成処理の流れを示したフローチャートである。
【図14】規制体の配置方法を説明するための図である。
【図15】変形例(16)に係る振動体設定処理の流れを示したフローチャートである。
【図16】仮想粒子200間の結合方法を説明するための図である。
【図17】面140の生成方法を示した図である。
【図18】弦120の振動状態のシミュレーション方法を説明するための図である。
【符号の説明】
【0105】
1…音データ生成システム、10…音データ生成装置、20…マウス、21…本体、22…ボタン、23…通信ケーブル、24…移動検知手段、30…モニタ、100…仮想空間、101…制御部、102…光ディスク再生部、103…ROM、104…RAM、105…I/O部、109…バス、120…弦、130…フレーム、140…面、150…スプリンクラ、160…ウォール、170…カーソル、200…仮想粒子、400…制御パネル、401…スプリンクラアイコン、402…初速度、403…頻度、404…空間特性、405…液体領域アイコン、406…固体領域アイコン、407…ウォールアイコン

【特許請求の範囲】
【請求項1】
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と
を有することを特徴とする音データ生成装置。
【請求項2】
前記仮想発音体設定手段は、前記仮想発音体として仮想の弦を張設し、
前記音データ生成手段は、前記弦の振動をシミュレーション演算して音を生成する
ことを特徴とする請求項1に記載の音データ生成装置。
【請求項3】
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には、該ループの内側に仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段と
を有することを特徴とする音データ生成装置。
【請求項4】
前記仮想発音体設定手段は、前記仮想発音体として仮想の面を張設し、
前記音データ生成手段は、前記面の振動をシミュレーション演算して音を生成する
ことを特徴とする請求項3に記載の音データ生成装置。
【請求項5】
前記仮想空間内に特定の領域を設定する領域設定手段を有し、
前記仮想発音体設定手段は、前記領域設定手段により設定された前記特定の領域において、前記仮想粒子が互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定することを特徴とする請求項1または2に記載の音データ生成装置。
【請求項6】
前記仮想空間内に特定の領域を設定する領域設定手段を有し、
前記仮想発音体設定手段は、前記領域設定手段により設定された前記特定の領域において、前記仮想粒子が互いに所定の位置関係を満たすことが演算された場合には該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には該ループの内側に仮想発音体を設定することを特徴とする請求項3または4に記載の音データ生成装置。
【請求項7】
前記音データ生成手段は、複数の前記仮想発音体が前記仮想粒子を介して隣接している場合に、一方の仮想発音体が振動することが演算された場合には、前記仮想粒子の振動を介して、他方の仮想発音体へ振動が伝播するように演算することを特徴とする請求項2または4に記載の音データ生成装置。
【請求項8】
コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間に仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段
として機能させるプログラム。
【請求項9】
コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
前記仮想粒子が、前記仮想空間において互いに所定の位置関係を満たすことが演算された場合には、該仮想粒子間を棒状構造で接続し、前記棒状構造がループを形成した場合には、該ループの内側に仮想発音体を設定する仮想発音体設定手段と、
前記仮想発音体と前記仮想粒子との相互作用を演算し、該相互作用に基づいて音データを生成する音データ生成手段
として機能させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2009−103933(P2009−103933A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【出願番号】特願2007−275755(P2007−275755)
【出願日】平成19年10月23日(2007.10.23)
【出願人】(301021533)独立行政法人産業技術総合研究所 (6,529)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】