JP2009103931A - 音データ生成装置およびプログラム - Google Patents
音データ生成装置およびプログラム Download PDFInfo
- Publication number
- JP2009103931A JP2009103931A JP2007275753A JP2007275753A JP2009103931A JP 2009103931 A JP2009103931 A JP 2009103931A JP 2007275753 A JP2007275753 A JP 2007275753A JP 2007275753 A JP2007275753 A JP 2007275753A JP 2009103931 A JP2009103931 A JP 2009103931A
- Authority
- JP
- Japan
- Prior art keywords
- virtual
- string
- setting
- sound data
- virtual space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】コンピュータを用いて、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成すると共に、生成される音が多様で意外性を有するものとなる音データ生成装置およびプログラムを提供すること。
【解決手段】仮想空間100には、仮想の重力場など、スプリンクラ150から放出された仮想粒子200の運動に影響を与える各種の条件が設定されている。また、仮想空間100中には、仮想粒子200との衝突により振動し発音する弦120が設けられている。仮想空間100には、弦120と接触すると該弦120の接触した点を固定する働きを持つグルー140が設けられている。振動した弦120はグルー140と接触し、該接触した点が固定された弦120は複数の弦(部分弦)に分割される。該部分弦と仮想粒子200が衝突すると、部分弦の特性に応じた多様な音が生成される。
【選択図】図9
【解決手段】仮想空間100には、仮想の重力場など、スプリンクラ150から放出された仮想粒子200の運動に影響を与える各種の条件が設定されている。また、仮想空間100中には、仮想粒子200との衝突により振動し発音する弦120が設けられている。仮想空間100には、弦120と接触すると該弦120の接触した点を固定する働きを持つグルー140が設けられている。振動した弦120はグルー140と接触し、該接触した点が固定された弦120は複数の弦(部分弦)に分割される。該部分弦と仮想粒子200が衝突すると、部分弦の特性に応じた多様な音が生成される。
【選択図】図9
Description
本発明は、音データ生成装置およびプログラムに関する。
近年、ますますリアリティーの増した音がコンピュータにより生成されるようになっている。例えばコンピュータで「雨降りの音」や「そよ風の音」など自然現象に伴う音を非常に巧妙に再現することができる(特許文献1参照)。
例えば、「雨降りの音」ならば、「ザーザー」、「そよ風の音」ならば「ヒューヒュー」など、自然現象ごとに特徴的な波形の音が生じるため、上記特許文献1などにおいては、自然現象における音の特徴を模した波形データを繰り返し音声へ変換することにより自然現象の音を再現している。
特開平07−140973号公報
例えば、「雨降りの音」ならば、「ザーザー」、「そよ風の音」ならば「ヒューヒュー」など、自然現象ごとに特徴的な波形の音が生じるため、上記特許文献1などにおいては、自然現象における音の特徴を模した波形データを繰り返し音声へ変換することにより自然現象の音を再現している。
ところで、上述の雨降りの音は多数の雨粒と地面の衝突から生じるものであり、そよ風の音は空気中に存在する多数の気体分子の流れや振動から生じるものであるとの例からも明らかなように、自然界において発生する音の多くは小さなスケールで見れば多数の粒子が高頻度で相互作用を繰り返すことにより生じている。
例えば、一つの雨粒が地面と衝突する際には、「ポトッ」「ぺチ」「パチ」などの音が、各雨粒と地面との衝突状況や、他の雨粒との相互関係に応じて発生する。そして、無数の雨粒が連続して地面に衝突すると、それらの相互に異なる音が重ねあわされた音が発生する。そのように、大きさや位相、減衰状態、発生タイミングなどが異なる多数の音が重ねあわされることにより、結果的には、雨(多数の雨粒)の降る音である「ザー、ザー」という音として人間に知覚される。
そのように、自然界において発生している音は、総体として聴いた場合には個々の相互作用に由来する音の成分が区別されて聴取されることは無いが、実際は毎回異なる音から構成される2度と再現できない音が発生しているのである。そのような音の「ランダム性」や「非再現性」が自然界の音に「自然らしさ」を与えていると考えられる。
そのように、自然界において発生している音は、総体として聴いた場合には個々の相互作用に由来する音の成分が区別されて聴取されることは無いが、実際は毎回異なる音から構成される2度と再現できない音が発生しているのである。そのような音の「ランダム性」や「非再現性」が自然界の音に「自然らしさ」を与えていると考えられる。
しかし、上記特許文献1を含め、従来のコンピュータにより生成される音は、予め決められた波形データが繰り返し読み出されるだけの音であったため、その音には上述した「ランダム性」や「非再現性」が欠如しており、所謂「自然らしさ」が感じられないといった問題があった。
本発明は上述の課題に鑑みてなされたものであり、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成すると共に、生成される音が多様で意外性を有するものとなる音データ生成装置およびプログラムを提供することを目的とする。
本発明に係る音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分を固定し該固定された点を端点とする部分弦を生成する部分弦生成手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて前記弦または前記部分弦の振動状態を演算し、該振動状態に基づいて音データを生成する音データ生成手段とを有することを特徴とする。
本発明に係る別の音データ生成装置は、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分の変位を促進または抑制する制御手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用による前記弦の振動状態を前記制御手段による制御を含めて演算し、該振動状態に基づいて音データを生成する音データ生成手段とを有することを特徴とする。
本発明に係るプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分を固定し該固定された点を端点とする部分弦を生成する部分弦生成手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて前記弦または前記部分弦の振動状態を演算し、該振動状態に基づいて音データを生成する音データ生成手段として機能させることを特徴とする。
本発明に係る別のプログラムは、コンピュータを、仮想空間を設定する仮想空間設定手段と、仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分の変位を促進または抑制する制御手段と、前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用による前記弦の振動状態を前記制御手段による制御を含めて演算し、該振動状態に基づいて音データを生成する音データ生成手段として機能させることを特徴とする。
本発明に係る音データ生成装置またはプログラムによれば、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成すると共に、生成される音が多様で意外性を有するものとなる。
(本発明の概略説明)
本発明に係る音データ生成装置は、コンピュータの演算によって形成される仮想空間の中に多数の仮想粒子を放出させるとともに、振動体(弦など)を仮想空間の中で移動させる。そして、仮想粒子と振動体との相互作用(衝突など)の状況を演算し、その演算結果による振動体の振動状態に基づいて音データを生成するものである。
本発明に係る音データ生成装置は、コンピュータの演算によって形成される仮想空間の中に多数の仮想粒子を放出させるとともに、振動体(弦など)を仮想空間の中で移動させる。そして、仮想粒子と振動体との相互作用(衝突など)の状況を演算し、その演算結果による振動体の振動状態に基づいて音データを生成するものである。
図1は、音データ生成処理におけるモニタ表示の一例である。仮想粒子200は、スプリンクラ150の先端部分より仮想空間100内に放出される。そして、仮想粒子200は、仮想空間100内に設定された重力に従って画面の下方向に向けて「落下」すると同時に、仮想空間100の壁面などで跳ね返ったり、仮想粒子200同士で衝突したりする。その結果、多数の仮想粒子200が仮想空間100中でランダムに運動する。そのように多数の仮想粒子200が飛び交っている仮想空間100には、振動体(発音体)として弦120が設けられる。そして、個々の仮想粒子200が弦120の領域を通過して弦を「はじく」と弦120は振動し、弦120の振動状態に基づいて音データが生成される。
ここで、仮想空間100には「グルー140」と呼ばれる領域が設けられる。弦120に張設された弦は仮想粒子200により弾かれ振動し、弦がグルー140の領域に接触すると、弦において接触した部分(図中、点S)が固定される。そのように弦上の点が固定されることにより、該固定された点の両側で2つの独立した弦(部分弦)が生成される。そのように生成された部分弦が仮想粒子200と相互作用すると、相互作用した部分弦は他の部分弦とは独立して振動し、該振動に対応する音が生成される。
(A;構成)
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
(A−1;全体構成)
図2は、本発明に係る音データ生成システム1の全体構成を示す図である。音データ生成システム1は、プログラム実行装置としての音データ生成装置10と、マウス20と、モニタ30と、多点コントローラ40とを有する。
図2は、本発明に係る音データ生成システム1の全体構成を示す図である。音データ生成システム1は、プログラム実行装置としての音データ生成装置10と、マウス20と、モニタ30と、多点コントローラ40とを有する。
(A−2;各装置の構成)
まず、音データ生成装置10のハードウェア構成について図3を参照して説明する。
音データ生成装置10は、制御部101、光ディスク再生部102、ROM(Read Only Memory)103、RAM(Random Access Memory)104、I/O部105を有する。それら各部はバス109を介して互いに接続されている。
まず、音データ生成装置10のハードウェア構成について図3を参照して説明する。
音データ生成装置10は、制御部101、光ディスク再生部102、ROM(Read Only Memory)103、RAM(Random Access Memory)104、I/O部105を有する。それら各部はバス109を介して互いに接続されている。
図に示す制御部101は、例えばCPU(Central Processing Unit)であり、ROM103から読み出された各種制御プログラムを実行することにより、音声および映像の信号処理や各部の制御を行う。
光ディスク再生部102は、CD−ROM・DVD−ROM等の光ディスクからデータを読取る。
ROM103は、制御部101が実行する各種制御プログラムを格納している。
RAM104は、制御部101によってワークエリアとして利用される。
ROM103は、制御部101が実行する各種制御プログラムを格納している。
RAM104は、制御部101によってワークエリアとして利用される。
I/O部105は、音データ生成装置10と接続された機器との信号の送受信を仲介する。具体的には、マウス20および多点コントローラ40から操作内容を示す信号を受取り制御部101に出力すると共に、制御部101から受取った音データおよび映像データをモニタ30に出力する。
以上が音データ生成装置10の構成である。
以上が音データ生成装置10の構成である。
次に、マウス20の構成について図4を用いて説明する。マウス20は、本体21の上面(図中(a)参照)にはボタン22を、下面(図中(b)参照)には移動検知手段24を有する。また、マウス20は、音データ生成装置10に通信ケーブル23にて接続されており、操作内容を示すデータが通信ケーブル23を介して音データ生成装置10に送信される。
マウス20は、本体21が移動されると移動検知手段24が移動方向と移動量を示す操作信号を生成し、通信ケーブル23を介して出力する。該信号を受取った制御部101は、操作信号に基づいてモニタ30の画面上のカーソルを移動する処理を行う。
また、ボタン22が押下(以下、クリック)されると、マウス20はクリック操作がなされたことを示すクリック操作信号を生成し、通信ケーブル23を介して出力する。クリック操作信号を受取った制御部101は、クリック時にカーソルが位置していた座標を認識し、当該座標に表示されているアイコンなどに対して選択処理が行われたと認識する。
また、ボタン22を押下した状態で本体21が移動され、その後ボタン22の押下を解除する操作(以下、ドラッグ)がなされると、ボタン22が押下されていた間の本体21の移動方向と移動量、およびドラッグ操作がなされたことを示す信号を生成し、通信ケーブル23を介して出力する。該信号を受取った制御部101は、ドラッグ操作により選択された画面上の領域や該領域に含まれるアイコンなどに対して選択処理が行われたと認識する。
また、ボタン22が押下(以下、クリック)されると、マウス20はクリック操作がなされたことを示すクリック操作信号を生成し、通信ケーブル23を介して出力する。クリック操作信号を受取った制御部101は、クリック時にカーソルが位置していた座標を認識し、当該座標に表示されているアイコンなどに対して選択処理が行われたと認識する。
また、ボタン22を押下した状態で本体21が移動され、その後ボタン22の押下を解除する操作(以下、ドラッグ)がなされると、ボタン22が押下されていた間の本体21の移動方向と移動量、およびドラッグ操作がなされたことを示す信号を生成し、通信ケーブル23を介して出力する。該信号を受取った制御部101は、ドラッグ操作により選択された画面上の領域や該領域に含まれるアイコンなどに対して選択処理が行われたと認識する。
次に、モニタ30の構成について図5を用いて説明する。モニタ30は、音データ生成装置10から受取った映像データに基づいて映像を表示する。モニタ画面の各点には画面左上を座標(0,0)、右下を座標(756,1024)とする座標が設定されている。
また、図5に示すように、モニタ画面の下方には音データ再生部30aが設けられ、音データ生成装置10から受取った音データに基づいて音声が放音される。
また、図5に示すように、モニタ画面の下方には音データ再生部30aが設けられ、音データ生成装置10から受取った音データに基づいて音声が放音される。
次に、多点コントローラ40の構成について、図6を用いて説明する。図6(a)に示すように、多点コントローラ40は、タッチパネル42を有する。タッチパネル42には、図に示すように左上を座標(0,0)、右下を座標(756,1024)とする座標が設定されている。タッチパネル42は、タッチパネル上の特定の点が押下されたことを感知する感知手段を有し、該感知手段がパネル上の特定の点が押下されたことを感知すると、押下された点の位置を示す座標を含む押下位置情報を、通信ケーブル41を介して音データ生成装置10に出力する。複数の点が同時に押下されている場合には、該押下されている複数の点それぞれについて並行して押下位置情報を生成・出力する。
音データ生成装置10の制御部101は、押下位置情報を多点コントローラ40から受取ると、該押下位置情報に含まれる座標を読み出し、モニタ30画面上において該座標に相当する点が選択されたと判断する。図6(b)は、モニタ30の画面表示を示した図である。例えば、手Aおよび手Bが、図6(a)で示されるようにタッチパネル42を押下した場合、手Aで押下された位置を示す座標、または手Bで押下された位置を示す座標が書き込まれた押下位置情報が、それぞれの点が押下されている間継続して制御部101へ出力される。制御部101は、該押下位置情報を受取ると、図6(b)で示されるモニタ画面上の点Aおよび点Bが選択されたと判定する。
(A−3;プログラムの構成)
次に、ROM103に格納された制御プログラムについて説明する。なお、制御プログラムには、音データ生成装置10の制御部101が音データを生成するために実行する各種プログラムが含まれ、以下では主要なもののみ取り上げて説明する。
次に、ROM103に格納された制御プログラムについて説明する。なお、制御プログラムには、音データ生成装置10の制御部101が音データを生成するために実行する各種プログラムが含まれ、以下では主要なもののみ取り上げて説明する。
制御プログラムは、空間特性制御プログラム、オブジェクト制御プログラム、粒子運動制御プログラム、弦振動制御プログラム、映像制御プログラム、音データ生成プログラムなどからなる。
空間特性制御プログラムは、重力などの仮想空間100に設定され仮想粒子200の運動に影響を及ぼす各種特性を制御する。オブジェクト制御プログラムは、仮想空間100内に仮想粒子200を出現させるオブジェクト(スプリンクラ150)の配置などを制御する。粒子運動制御プログラムは、仮想空間100内における仮想粒子200の運動を計算する。弦振動制御プログラムは、弦120(部分弦を含む)の振動状況を演算する。映像制御プログラムは、演算結果として与えられる仮想空間100内の仮想粒子200の運動や弦120の振動などの挙動をモニタ30の画面上へ表示させる。音データ生成プログラムは、弦120の振動状態に基づいて音データを生成する。
(A−4;仮想空間の制御)
以下では、空間特性制御プログラムによる仮想空間100の制御について説明する。
図7は、モニタ30の画面の一例を示した図である。画面には、仮想空間100の枠組みが表示されている。また、仮想空間100の右側には、制御パネル400が表示されている。仮想空間100は、ユーザによる制御パネル400に対する操作に基づき、以下のように制御される。
以下では、空間特性制御プログラムによる仮想空間100の制御について説明する。
図7は、モニタ30の画面の一例を示した図である。画面には、仮想空間100の枠組みが表示されている。また、仮想空間100の右側には、制御パネル400が表示されている。仮想空間100は、ユーザによる制御パネル400に対する操作に基づき、以下のように制御される。
仮想空間100には、以下に例示するような「空間特性」が設定される。制御パネル400の下部の「空間特性」アイコン404が押下されると、制御部101は、所定の選択肢をモニタ30の画面上に表示する。図8は、該表示の一例を示した図である。ユーザは、画面上に表示された重力の方向に関する選択肢を選択し、重力加速度の大きさを書き込む。また、仮想粒子200の移動の際に働く抵抗力は仮想粒子200の速度に比例するとし、その速度に応じた抵抗力を決定するための比例定数を書き込む。制御部101は、入力された内容を粒子運動制御プログラムにおける粒子運動の挙動の算出に反映させる。
なお、これら仮想空間100に関する設定は、予め制御プログラムなどにテンプレートとして書き込んでおいても良い。例えば、あるテンプレートにおいては、重力場は画面下方に設定され、仮想空間100内を移動する仮想粒子200には移動の方向とは逆にその速度に比例した抵抗力が働き、その比例定数が「水中」に相当するような大きな値に設定されているようにすれば、ユーザは該テンプレートを選択するだけで、仮想空間100がまるで重力のある空間に設置された水が満たされた容器であるかのような設定を簡易に行うことができる。
(A−5;仮想粒子の運動)
以下では、粒子運動制御プログラムによる仮想粒子200の運動の制御方法について説明する。
(1)仮想粒子200の出現
まず、仮想粒子200の出現について図9を用いて説明する。本実施形態における仮想空間100には、仮想粒子200を仮想空間100に発生させるための装置として、スプリンクラ150が設けられる。
以下では、粒子運動制御プログラムによる仮想粒子200の運動の制御方法について説明する。
(1)仮想粒子200の出現
まず、仮想粒子200の出現について図9を用いて説明する。本実施形態における仮想空間100には、仮想粒子200を仮想空間100に発生させるための装置として、スプリンクラ150が設けられる。
スプリンクラ150は、制御パネル400の初速度402、頻度403の値が書き込まれてから「スプリンクラ」アイコン401がクリックされ、仮想空間100内においてドラッグがなされることにより設定される。
スプリンクラ150は、放出口150aを有し、個々の仮想粒子200は、初速度402に書き込まれた初速度、および頻度403に書き込まれた頻度で放出口150aから放出される。仮想粒子200は、時間平均して単位時間あたり頻度403に書き込まれた数となるようにランダムに放出される。
(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で完全弾性衝突をする。
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で完全弾性衝突をする。
(3)仮想粒子200の消滅
仮想空間100の枠組みの底辺に達した仮想粒子200は消滅するよう設定されている。
仮想空間100の枠組みの底辺に達した仮想粒子200は消滅するよう設定されている。
(A−6;弦120の振動制御)
弦120の振動は、ROM103に格納された弦振動制御プログラムにより演算される。具体的には、弦の弾性(材質)、弦の断面積、弦の張力、弦が弾かれた変位量などに基づいて、物理的なシミュレーションが行われる。シミュレーションの結果、各時刻における弦の各部分の変位量が演算され、該演算結果である弦120の振動状態に基づいて、弦120から発生する音の振幅、周波数、減衰態様などがシミュレーションされる。
弦120の振動は、ROM103に格納された弦振動制御プログラムにより演算される。具体的には、弦の弾性(材質)、弦の断面積、弦の張力、弦が弾かれた変位量などに基づいて、物理的なシミュレーションが行われる。シミュレーションの結果、各時刻における弦の各部分の変位量が演算され、該演算結果である弦120の振動状態に基づいて、弦120から発生する音の振幅、周波数、減衰態様などがシミュレーションされる。
さて、本発明においては、仮想空間100にはグルー140と呼ばれる領域(図9参照)が設けられており、弦120に張設された弦が該グルー140の領域に進入すると、弦において該進入した部分が固定される。本実施形態においては、十分速い時間間隔で弦120の各点の位置(すなわち弦120の形状)は演算されているため、弦120がグルー140と接した時点で、該接点において弦120の弦は固定される。
以下では、グルー140による影響も考慮した弦120の振動制御について詳細に説明する。図10(A)には、通常の弦120の振動の様子が示されている。(a)は、振動していない弦120である。(b)に示すように仮想粒子200が弦120を横切ると、弦120には仮想粒子200の質量や速度に応じた力が加わり、弦120は振動を始める。振動の様子を短時間(4分の1周期)ごとのスナップショットで示すと、(b)に続いて(c)、(d)、(e)のようになり、その後(b)〜(e)の振動が繰り返される。そして次第に振動は減衰し、やがて振動を停止する。
以下では、グルー140による影響も考慮した弦120の振動制御について詳細に説明する。図10(A)には、通常の弦120の振動の様子が示されている。(a)は、振動していない弦120である。(b)に示すように仮想粒子200が弦120を横切ると、弦120には仮想粒子200の質量や速度に応じた力が加わり、弦120は振動を始める。振動の様子を短時間(4分の1周期)ごとのスナップショットで示すと、(b)に続いて(c)、(d)、(e)のようになり、その後(b)〜(e)の振動が繰り返される。そして次第に振動は減衰し、やがて振動を停止する。
図10(B)には、グルー140の近傍に設けられた弦120の振動の様子の一例が示されている。(f)は、振動していない弦120である。(g)に示すように仮想粒子200が弦120を横切ると、弦120は振動を始める。ここで、弦120は、振幅が所定の量を超えると、弦の一点(図中、固定点S)においてグルー140の領域と接触する。上述したように、グルー140は接触した弦の領域を固定する働きを持つことから、固定点Sにおいて弦120は固定される。そして、弦120は固定点Sで固定されたことにより、その両側で独立した2つの弦(図中、部分弦120Aおよび120B)として振舞うこととなる。なお、以下の説明において、「弦120」との記載は、部分弦が設けられている場合には該部分弦を含む。
そして、部分弦120Aと120Bはそれぞれ、弦120がグルー140と接触した時点での振動状態に基づいて振動を継続する(h)。そして、部分弦120Aおよび120Bは、やがて振動を停止する(i)。上記のようにして2つの部分弦120Aおよび120Bが生成される。
そして、部分弦120Aと120Bはそれぞれ、弦120がグルー140と接触した時点での振動状態に基づいて振動を継続する(h)。そして、部分弦120Aおよび120Bは、やがて振動を停止する(i)。上記のようにして2つの部分弦120Aおよび120Bが生成される。
一般に、弦が振動している最中には、静止状態に比べて弦の張力は高い。従って、図10の(i)に示す部分弦120Aおよび120Bの静止状態における張力は(f)に示す弦120の静止状態における張力よりも高くなっている。更には、部分弦120Aおよび120Bは、弦の長さが弦120よりも短い。
次に、上記のように生成された部分弦120Aおよび120Bが仮想粒子200と相互作用した際の振動の態様を説明する。図11(A)および(B)には、部分弦120Aおよび120Bのそれぞれについて、仮想粒子200と相互作用した場合の振動の様子を示している。図11(A)に示すように、部分弦120Aが仮想粒子200と相互作用した場合、図(j)に示す静止状態の部分弦120Aは、(k)〜(n)の状態を繰り返して振動する。また、(B)に示すように、部分弦120Bも部分弦120Aと同様に仮想粒子200との相互作用により(p)〜(s)の状態を繰り返して振動する。これらの振動のパターンは、図10(A)において説明した弦120の振動と同じである。
しかし、上述した部分弦120Aおよび120Bの張力および弦の長さの効果により、部分弦120Aと120Bは、弦120と較べて高い周波数で振動する。また、同じ仮想粒子200が同じ速度で相互作用した場合には、部分弦120Aと120Bは弦120よりも小さい振幅で振動する。その結果、部分弦120Aおよび120Bは、弦120と較べて小さく高い音を発する。以上の振動状態がシミュレートされる。
また、部分弦120Aと120Bとの間でも生成される音は異なる。部分弦120Aと120Bとが生成される瞬間(図10(g)参照)、部分弦120Aおよび120Bの張力は等しい。そのため、生成された部分弦120Aおよび120Bの張力は、静止状態(図11(j)および(o))において等しい。しかし、ここで示した例のように部分弦120Aと120Bとで弦の長さが異なる場合には、短い弦(この場合、部分弦120A)の振動数は高くなると共に、同じ仮想粒子200が同じ速度で衝突した場合には、振動の振幅は小さくなる。従って、生成された部分弦の短い方の部分弦(120A)からは、長い方の部分弦(部分弦120B)に比べて高く小さい音が生成される。
(A−7;音データの生成)
音データ生成装置10は、ROM103に格納された音データ生成プログラムにより、音データを生成する。音の周波数や振幅など各種の特性は、上述した弦120、および部分弦120Aおよび120Bの振動状態に基づくものである。なお、音データの生成には、MAX/MSPが用いられる。なお、MAX/MSPとは、音楽プログラミング言語MAXと音響信号処理用エクステンションMSPとからなる。MAX/MSPによれば、様々なモジュールをつなぎ合わせて、シンセサイザー、エフェクター、シーケンサーなどが作れるほか、パッチングによって音楽の自動生成なども可能であり、ビジュアル的なプログラミング環境によって、直感的なプログラミング・操作ができる。
音データ生成装置10は、ROM103に格納された音データ生成プログラムにより、音データを生成する。音の周波数や振幅など各種の特性は、上述した弦120、および部分弦120Aおよび120Bの振動状態に基づくものである。なお、音データの生成には、MAX/MSPが用いられる。なお、MAX/MSPとは、音楽プログラミング言語MAXと音響信号処理用エクステンションMSPとからなる。MAX/MSPによれば、様々なモジュールをつなぎ合わせて、シンセサイザー、エフェクター、シーケンサーなどが作れるほか、パッチングによって音楽の自動生成なども可能であり、ビジュアル的なプログラミング環境によって、直感的なプログラミング・操作ができる。
(B;動作)
以下では、音データ生成装置10が音データを生成する際の各部の動作について説明する。
まず、音データ生成装置10の電源が投入されると、制御部101はROM103から各種制御プログラムを読み出し、RAM104にロードする。
以下では、音データ生成装置10が音データを生成する際の各部の動作について説明する。
まず、音データ生成装置10の電源が投入されると、制御部101はROM103から各種制御プログラムを読み出し、RAM104にロードする。
(B−1;初期設定処理)
まず、制御部101は、初期設定処理を行う。図12は、初期設定処理の流れを示したフローチャートである。
ステップSA100において、仮想空間100の空間特性の設定がなされる。音データ生成システム1のユーザは、制御パネル400の「空間特性」アイコン404(図9参照)を押下し、モニタ30にパラメータ設定のための画面(図8参照)を表示させる。そして制御部101は、入力された内容に応じて仮想空間100の空間特性、すなわち仮想空間100における重力場および抵抗力の設定を行う。
まず、制御部101は、初期設定処理を行う。図12は、初期設定処理の流れを示したフローチャートである。
ステップSA100において、仮想空間100の空間特性の設定がなされる。音データ生成システム1のユーザは、制御パネル400の「空間特性」アイコン404(図9参照)を押下し、モニタ30にパラメータ設定のための画面(図8参照)を表示させる。そして制御部101は、入力された内容に応じて仮想空間100の空間特性、すなわち仮想空間100における重力場および抵抗力の設定を行う。
本実施形態においては、重力場の設定において、重力の方向として図面下方向が選択されその重力加速度の値が書き込まれると、仮想粒子200に対して画面下方向に設定された値の重力が働き、仮想空間100は鉛直方向に設けられた空間であるかのように設定される。また、抵抗力の設定において、比例定数の値が書き込まれると、仮想粒子200の移動速度に比例した抵抗力が移動と逆方向に働く。そして、その比例定数に対応してまるで空気や水が仮想空間100に満たされているような環境に設定される。
ステップSA110で、仮想粒子200を仮想空間100に出現させる手段(スプリンクラ150)の設定が行われる。ユーザにより制御パネル400にパラメータが書き込まれた後、「スプリンクラ」アイコン401がクリックされ、仮想空間100内の領域が指定されると、スプリンクラ150が設定される。
ステップSA120で、グルー140の設定がなされる。すなわち、ユーザにより、制御パネル400の「グルー」アイコン405が押下されたのち、仮想空間100内がドラッグされると、ドラッグの始点を中心としドラッグの始点から終点を半径とするグルー140の領域が設定される。仮想空間100には、1または複数のグルー140が設定可能である。
以上で初期設定処理を終了する。
以上で初期設定処理を終了する。
(B−2;振動体設定処理)
仮想粒子200を仮想空間100に放出させる処理の説明に入る前に、仮想粒子200との相互作用により発音を行う振動体を仮想空間100に設定する振動体設定処理について説明する。なお、振動体設定処理は、後述する音データ生成処理に対して割り込み処理として行われる。
仮想粒子200を仮想空間100に放出させる処理の説明に入る前に、仮想粒子200との相互作用により発音を行う振動体を仮想空間100に設定する振動体設定処理について説明する。なお、振動体設定処理は、後述する音データ生成処理に対して割り込み処理として行われる。
本実施形態においては、振動体として、弦120が設けられる。図13は、振動体設定処理の流れを示したフローチャートである。ステップSC100において、制御部101は、多点コントローラ40から押下位置情報を受信したか否かを判定する。ステップSC100の判定結果が“NO”の場合は、ステップSC100の処理を繰り返す。ステップSC100の判定結果が“YES”である場合は、ステップSC110を行う。
制御部101は、多点コントローラ40から受取った押下位置情報に含まれる座標を読取り、該座標をRAM104に一旦記憶する。そして、押下位置情報に含まれる2つの位置(座標)を両端とするように、弦120(振動体)が設けられる(ステップSC110)。
以上のようにして設けられた弦120は、タッチパネル42が押下されている間、継続して設けられている。また、弦120は、仮想空間100中で、移動させることが可能である。ステップSC120において、制御部101は、押下位置情報に含まれる座標が変更されたか否かを判定する。ユーザによりタッチパネル42上の押下位置がスライドされた場合、ステップSC120の判定結果は“YES”となり、仮想空間100における弦120の設置位置がスライドする処理がなされる。すなわち、時々刻々と変化する押下位置に対応させて弦120の設置位置が変更される(ステップSC130)。一方、ステップSC120の判定結果が“NO”である場合、ステップSC120の処理が繰り返され、弦120は継続して同じ位置に設けられる。
ステップSC140において、制御部101は、弦120の設置を指示する押下位置情報の供給が停止されたか否かを判定する。ユーザがタッチパネル42の押下を停止すると、押下位置情報は制御部101に供給されなくなり、ステップSC140の判定結果は“YES”となり、該押下が停止された位置に対応する弦120が消滅する(ステップSC150)。一方、継続して押下されている場合(ステップSC140;“NO”)は、ステップSC120以降の処理が繰り返される。
ステップSC160において、制御部101は、振動体設定処理が終了したか否かを判定する。ステップSC160の判定結果が“YES”である場合は、本振動体設定処理を終了する。ステップSC160の判定結果が“NO”である場合は、再びステップSC100以降の処理が行われる。
さて、本発明においては、仮想空間100内にはグルー140が設けられている。上述したように、ユーザの操作に応じて弦120の端点が設定され、弦120の移動(ステップSC130)または弦120の振動に際して、張設された弦がグルー140と接すると該接した点が固定され、その両側に部分弦が新たに設けられる。
また、部分弦に分割された後に、該弦120の移動が指示された場合(ステップSC120;“YES”)、ステップSC130においては、新たに指定された弦120の端点(タッチパネル42の押下点に対応)と該端点から最も近い固定点Sとの間に設けられていた部分弦が新たな位置に設定される。
以上が振動体設定処理の流れである。
また、部分弦に分割された後に、該弦120の移動が指示された場合(ステップSC120;“YES”)、ステップSC130においては、新たに指定された弦120の端点(タッチパネル42の押下点に対応)と該端点から最も近い固定点Sとの間に設けられていた部分弦が新たな位置に設定される。
以上が振動体設定処理の流れである。
(B−3;音データ生成処理)
初期設定処理がなされると、制御部101は音データ生成処理を開始する。図14は、音データ生成処理の流れを示したフローチャートである。
初期設定処理がなされると、制御部101は音データ生成処理を開始する。図14は、音データ生成処理の流れを示したフローチャートである。
ステップSB110において、スプリンクラ150は、仮想粒子200を仮想空間100に出現させる。そして、出現した仮想粒子200のそれぞれについて、ステップSB120以下の処理が行われる。
ステップSB120において、微小単位時間後の仮想粒子200の運動が演算される。仮想空間100の壁または他の仮想粒子200に衝突した場合には、完全弾性衝突で跳ね返り、該仮想粒子200には新たな速度が設定される。また、衝突が起こっていない場合には、仮想粒子200の速度に微小時間を乗算することにより、仮想粒子200は新たな位置に移動する。
なお、ステップSB120においては、ステップSB110にて仮想空間100に出現した仮想粒子200の全てについて同時にその軌道の算出が行われるため、ランダムに出現した多数の仮想粒子200が互いに相互作用を高頻度で繰り返すこととなる。従って、仮に仮想空間100の各種設定が同一であっても、毎回異なった仮想粒子200の挙動が引き起こされる。
なお、ステップSB120においては、ステップSB110にて仮想空間100に出現した仮想粒子200の全てについて同時にその軌道の算出が行われるため、ランダムに出現した多数の仮想粒子200が互いに相互作用を高頻度で繰り返すこととなる。従って、仮に仮想空間100の各種設定が同一であっても、毎回異なった仮想粒子200の挙動が引き起こされる。
ステップSB130において、ステップSB120の処理により、仮想空間100の底面に達して消滅するか否かが判定される。ステップSB130の判定結果が“YES”である場合には該仮想粒子200を画面上から消去し、該仮想粒子200に関しての処理を終了する。ステップSB130の判定結果が“NO”である場合には、ステップSB140以降の処理が行われる。
ステップSB140において、仮想粒子200が弦120(部分弦を含む)と衝突したか否かを判定する。上述した振動体設定処理(割り込み処理)により設定された弦120と仮想粒子200が相互作用した場合、ステップSB140の判定結果は“YES”となり、ステップSB150の処理が行われる。一方、ステップSB140の判定結果が“NO”である場合は、ステップSB120以降の処理が再び行われる。
ステップSB150において、ステップSB140において仮想粒子200と相互作用した弦120の振動状態をシミュレーション演算する。その場合、弦120に部分弦が設定されている場合には、仮想粒子200と相互作用した部分弦の各々について振動状態がシミュレーションされる。そして、該シミュレーション演算の結果から、弦120において生成される音の振幅、周波数、音色などを解析し、該音を表す音データを生成する。
ステップSB160において、弦120の振動状態に基づいて音データを生成する。ステップSB160が終わると、弦120と相互作用した仮想粒子200について、ステップSB120以降の処理が再び実行される。
ステップSB160において、弦120の振動状態に基づいて音データを生成する。ステップSB160が終わると、弦120と相互作用した仮想粒子200について、ステップSB120以降の処理が再び実行される。
上述のように、弦120は、張設された弦がグルー140と接触した場合には、該接点を境にして部分弦に分割される。該部分弦の生成は、ユーザによる弦120の移動によって生じる。それと共に、仮想粒子200と衝突した弦120の弦が振動し、グルー領域と接触することによっても生じる。
各仮想粒子200はランダムに移動しており、その移動経路はランダムであることから、該仮想粒子200と弦120との相互作用も同様にランダムなものとなる。従って、該仮想粒子200との相互作用により振動する弦120に設定される部分弦の長さ、そして部分弦が設けられるタイミングや位置など、部分弦の設定態様が多様且つランダムなものとなる。
以上説明したように、特性、タイミング、および位置がランダムに決定された部分弦が仮想空間100に設けられ、該部分弦により音が生成されることから、仮想空間100において生成される音は更にランダム性を増すと共に、ユーザにより予想不可能な音となる。
各仮想粒子200はランダムに移動しており、その移動経路はランダムであることから、該仮想粒子200と弦120との相互作用も同様にランダムなものとなる。従って、該仮想粒子200との相互作用により振動する弦120に設定される部分弦の長さ、そして部分弦が設けられるタイミングや位置など、部分弦の設定態様が多様且つランダムなものとなる。
以上説明したように、特性、タイミング、および位置がランダムに決定された部分弦が仮想空間100に設けられ、該部分弦により音が生成されることから、仮想空間100において生成される音は更にランダム性を増すと共に、ユーザにより予想不可能な音となる。
以上の音データ生成処理と並行して、モニタ30には仮想空間100における仮想粒子200および弦120の運動や、弦120に張られた弦の振動状態が表示される。生成される音データは該表示に対応するものであるから、ユーザは放音された音とそのまま対応する画面表示を見ることが出来る。
上記ステップSB160において生成された音データは音データ再生部30aへ出力され、音データ再生部30aは該音データを再生する。また、制御部101は、スプリンクラ150の配置態様、弦120の設置・移動態様、および仮想空間100に設定された空間特性など、音データの生成に係る各種パラメータの情報(設定情報)を、試行ごとにRAM104に書き込む。
制御部101は、RAM104に書き込まれた設定情報を読み出すことにより、再度同じ条件設定下で音データの生成処理を行うことができる。なお、そのように同様の条件設定で再び音データを生成したとしても、各仮想粒子200の挙動は毎回異なるため、微視的には異なる音データが生成される。
制御部101は、RAM104に書き込まれた設定情報を読み出すことにより、再度同じ条件設定下で音データの生成処理を行うことができる。なお、そのように同様の条件設定で再び音データを生成したとしても、各仮想粒子200の挙動は毎回異なるため、微視的には異なる音データが生成される。
(C;変形例)
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。
(1)上記実施形態において、グルー140は所定の大きさの円である場合について説明した。しかし、グルー140は点であっても良い。その場合には、弦120がグルーを横切った瞬間に該点において弦が固定されるようにすれば良い。また、グルー140は、円以外の図形であっても良い。
(2)上記実施形態においては、弦120がグルー140に進入した瞬間、すなわち弦120がグルー140の領域に接した瞬間に、該接点において弦120が固定される場合について説明した。しかし、弦120の各点の位置(各時刻における弦120の形状)や仮想粒子200の位置が所定の周期で演算されている場合などには、弦の一部がグルー140に進入して固定される位置は、グルー140の輪郭ではなく内部となることがある。図15には、そのような場合の弦120の状態を示している。同図に示すように、弦120は、グルー140により3つの部分に分けられる。グルー140の内部領域で固定された弦と、外部領域にある部分弦120Aおよび120Bである。
このような場合、部分弦120Aおよび120Bは、上記実施形態において説明したのと同様に振動を制御し、発音させれば良い。一方、グルー140の内部に固定された所定長の弦は、仮想粒子200と相互作用しても振動せず音を生じないようにする、などしても良い。
このような場合、部分弦120Aおよび120Bは、上記実施形態において説明したのと同様に振動を制御し、発音させれば良い。一方、グルー140の内部に固定された所定長の弦は、仮想粒子200と相互作用しても振動せず音を生じないようにする、などしても良い。
(3)上記実施形態においては、グルー140の領域において弦120が固定される場合について説明した。しかし、グルー140の領域において、弦120の振動を所定の割合で抑制したり促進したりする制御を行っても良い。
まず、グルー140が弦120の振動を抑制する場合の一例について説明する。図16(A)は、グルー140の近傍に設けられた弦120に仮想粒子200が衝突した場合の弦120の振動状態を経時的に示した図である。まず、図(t)に示すように、弦120に仮想粒子200が衝突すると、弦は振動を始める。そして、弦の一部がグルー140の領域に進入を始めると、該弦の部分には変位とは逆向きの力がグルー140から働く。一方、グルー140に進入していない弦の部分には、そのような力は働かず、仮想粒子200から与えられた力に従って変位を続ける(u)。その結果、図(v)に示すように弦120は、グルー140の領域で変位が抑制された波形となる。そして弦120は、この場合グルー140に固定されているわけではないため、張力によりこの後静止状態へと戻る。
まず、グルー140が弦120の振動を抑制する場合の一例について説明する。図16(A)は、グルー140の近傍に設けられた弦120に仮想粒子200が衝突した場合の弦120の振動状態を経時的に示した図である。まず、図(t)に示すように、弦120に仮想粒子200が衝突すると、弦は振動を始める。そして、弦の一部がグルー140の領域に進入を始めると、該弦の部分には変位とは逆向きの力がグルー140から働く。一方、グルー140に進入していない弦の部分には、そのような力は働かず、仮想粒子200から与えられた力に従って変位を続ける(u)。その結果、図(v)に示すように弦120は、グルー140の領域で変位が抑制された波形となる。そして弦120は、この場合グルー140に固定されているわけではないため、張力によりこの後静止状態へと戻る。
次に、グルー140が弦120の振動を促進する場合の一例について説明する。図16(B)は、グルー140の近傍に設けられた弦120に仮想粒子200が衝突した場合の弦120の振動状態を経時的に示した図である。まず、図(w)に示すように、弦120に仮想粒子200が衝突すると、弦は振動を始める。そして、弦の一部がグルー140の領域に進入を始めると、該弦の張力が所定のレベルまで下げられる。例えば、弦120の振動状態から演算される張力の50%の値などとする。一方、グルー140に進入していない弦の部分の張力は弦120の状態から演算される値がそのまま用いられる(x)。その結果、図(y)に示すように弦120は、グルー140の領域だけ変位が促進された波形となる。そして弦120は、張力によりこの後静止状態へと戻る。
このように、グルー140の領域において、弦120を固定するのではなく、弦120の振動を抑制または促進するようにしても良い。その場合、上記の例で示したように、グルー140の内部にある弦120の部分に力が働くことにより振動を抑制または促進しても良いし、グルー140の内部にある弦120の張力を制御することにより振動を抑制または促進しても良い。
このように、グルー140の領域において、弦120を固定するのではなく、弦120の振動を抑制または促進するようにしても良い。その場合、上記の例で示したように、グルー140の内部にある弦120の部分に力が働くことにより振動を抑制または促進しても良いし、グルー140の内部にある弦120の張力を制御することにより振動を抑制または促進しても良い。
(4)上記実施形態においては、グルー140は1または複数独立して設けられる旨説明したが、複数のグルー140が互いにオーバーラップするように設けられるとしても良い。その場合、複数のグルー140が重なる領域については、以下のような設定が可能である。例えば、図17に示すように、複数のグルー140(グルー140−1および140−2)が重なった領域(領域A)をグルー領域から除外し、両グルーのいずれか一方によりカバーされる領域(領域B)をグルー領域とするなどしても良い。
また、複数のグルー140が重なった領域については、グルー140の働きが強化されるようにしても良い。例えば、上記変形例(3)のようにグルー領域が弦120の振動を抑制または促進するような場合、グルー140から弦120に働く力が該グルー領域で強くなったり、該グルー領域内の弦120の張力が更に小さくなったりするようにしても良い。
また、複数のグルー140が重なった領域については、グルー140の働きが強化されるようにしても良い。例えば、上記変形例(3)のようにグルー領域が弦120の振動を抑制または促進するような場合、グルー140から弦120に働く力が該グルー領域で強くなったり、該グルー領域内の弦120の張力が更に小さくなったりするようにしても良い。
(5)上記実施形態においては、振動体として弦120を設ける場合について説明した。しかし、振動体は弦に限定されず、例えば太鼓やシンバルなどを模した振動面を有する振動体(以下、面と呼ぶ)を設けても良い。以下、「面」の構成およびその振動の制御について説明する。
面を仮想空間100に設ける場合には、面と仮想粒子200が相互作用した場合には、振動面に関する物理的シミュレーションを行い、面特有の音データを生成するようにすれば良い。
仮想空間100の表示は2次元であるため、面を面の断面図で表示されるようにしても良い。すなわち、例えば仮想空間100内で始点と終点とが指定された場合には、指定された始点と終点とを結ぶ直線が面の断面となるように、そして面と仮想空間100の表示画面が直交するように面が設けられるとすれば良い。
なお、仮想空間100に設けられた面についても、グルー140の領域に進入した面上の点が固定されるようにしても良い。その場合の固定の態様は、上記実施形態における部分弦の生成の態様を3次元に拡張すれば良く、ここでは説明を省略する。このようにすれば、面上の点は固定点において固定され、あたかも振動面が1または複数の点で固定された面に粒子が衝突したような音が生成される。
面を仮想空間100に設ける場合には、面と仮想粒子200が相互作用した場合には、振動面に関する物理的シミュレーションを行い、面特有の音データを生成するようにすれば良い。
仮想空間100の表示は2次元であるため、面を面の断面図で表示されるようにしても良い。すなわち、例えば仮想空間100内で始点と終点とが指定された場合には、指定された始点と終点とを結ぶ直線が面の断面となるように、そして面と仮想空間100の表示画面が直交するように面が設けられるとすれば良い。
なお、仮想空間100に設けられた面についても、グルー140の領域に進入した面上の点が固定されるようにしても良い。その場合の固定の態様は、上記実施形態における部分弦の生成の態様を3次元に拡張すれば良く、ここでは説明を省略する。このようにすれば、面上の点は固定点において固定され、あたかも振動面が1または複数の点で固定された面に粒子が衝突したような音が生成される。
(6)上記実施形態においては、弦120の振動を、物理モデルのシミュレーションにより演算する場合について説明した。しかし、弦特有の音を表す波形データを予めROM103に記憶しておき、仮想粒子200と弦120との衝突の度に、該波形データを読み出すようにしても良い。その場合、波形データを複数種類格納しておき、弦の特徴(弦の太さ、長さなど)に応じて、弦ごとに異なる波形データが選択的に読み出されるようにしたり、振幅やピッチなどを変換して発音されるようにしたりしても良い。従って、部分弦と仮想粒子200とが衝突した場合には、該部分弦の長さに基づいて読み出した波形データを用いるなどすれば良い。
(7)上記実施形態においては、仮想粒子200が弦120に衝突しても、そのまま通り抜ける場合について説明したが、弦120と仮想粒子200との相互作用においても、仮想粒子200同士の相互作用と同様に衝突および跳ね返りが発生するようにしても良い。
(8)上記実施形態において、仮想粒子200は、仮想空間100に設定された重力に従って自由落下する場合について説明した。しかし、仮想粒子200の運動に影響を及ぼす構造体(規制体)を仮想空間100に設けても良い。
図18は、規制体の一例であるウォール160の配置に際するモニタ30の画面表示の一例である。ユーザにより制御パネル400下部の「ウォール」アイコン406がクリックされた後ドラッグ操作がなされると、制御部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は消滅するようにしても良い。
図18は、規制体の一例であるウォール160の配置に際するモニタ30の画面表示の一例である。ユーザにより制御パネル400下部の「ウォール」アイコン406がクリックされた後ドラッグ操作がなされると、制御部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は消滅するようにしても良い。
(9)上記実施形態においては、グルー140は、仮想空間100に固定されている場合について説明した。しかし、グルー140が仮想空間100内を移動するようにしてもよい。
(a)例えば、グルー140の位置を制御するために別途多点コントローラ40と同様の装置(以下、グルー設置手段)を設け、該グルー設置手段のタッチパネルにおいて押下された点を中心とする所定の大きさの円をグルー140として設け、該押下された点が移動するとグルー140も対応させて移動するようにするなどしても良い。
そのようにすれば、移動したグルー140と接触した弦120には、接点を境として部分弦が生成される。そして、該部分弦の端点である接点は、そのままグルー140と共に移動することから、生成された部分弦の長さや張力も移動に伴って変化する。このように、グルー140の移動により、生成される音のピッチやタイミングなどを制御することも可能である。
(b)グルー140の移動を制御するオブジェクトを仮想空間100に設けても良い。その場合の処理内容の一例を図19を参照して説明する。グルー140の移動を行うオブジェクトとして、コンベヤ180を仮想空間100に設け、コンベヤ180上にグルー140を設ける。コンベヤ180は、所定の速度で時計周りに回転しており、グルー140はコンベヤ180に固定されているため、仮想空間100内において移動する。
同図において、グルー140は、弦120上の弦が当該グルー140の輪郭に固定された状態で画面左方向に移動しており、一方弦120は固定されている場合、弦120には部分弦が2つ生成され、該部分弦は時間経過と共に伸びる。そのような場合に、図示したようにスプリンクラ150から仮想粒子200が連続的に放出された場合、該仮想粒子200はそれぞれの部分弦と衝突して部分弦を振動させる。部分弦は時間経過と共に伸びて張力が高くなっていくため、除々に音高が高くなっていく和音が連続的に生成される。また、その後グルー140がモニタ画面右方向に移動する場合には、部分弦の張力は次第に低下していく。従って、仮想粒子200が該部分弦と連続的に衝突すると、除々に音高が低くなっていく和音が連続的に生成される。
(a)例えば、グルー140の位置を制御するために別途多点コントローラ40と同様の装置(以下、グルー設置手段)を設け、該グルー設置手段のタッチパネルにおいて押下された点を中心とする所定の大きさの円をグルー140として設け、該押下された点が移動するとグルー140も対応させて移動するようにするなどしても良い。
そのようにすれば、移動したグルー140と接触した弦120には、接点を境として部分弦が生成される。そして、該部分弦の端点である接点は、そのままグルー140と共に移動することから、生成された部分弦の長さや張力も移動に伴って変化する。このように、グルー140の移動により、生成される音のピッチやタイミングなどを制御することも可能である。
(b)グルー140の移動を制御するオブジェクトを仮想空間100に設けても良い。その場合の処理内容の一例を図19を参照して説明する。グルー140の移動を行うオブジェクトとして、コンベヤ180を仮想空間100に設け、コンベヤ180上にグルー140を設ける。コンベヤ180は、所定の速度で時計周りに回転しており、グルー140はコンベヤ180に固定されているため、仮想空間100内において移動する。
同図において、グルー140は、弦120上の弦が当該グルー140の輪郭に固定された状態で画面左方向に移動しており、一方弦120は固定されている場合、弦120には部分弦が2つ生成され、該部分弦は時間経過と共に伸びる。そのような場合に、図示したようにスプリンクラ150から仮想粒子200が連続的に放出された場合、該仮想粒子200はそれぞれの部分弦と衝突して部分弦を振動させる。部分弦は時間経過と共に伸びて張力が高くなっていくため、除々に音高が高くなっていく和音が連続的に生成される。また、その後グルー140がモニタ画面右方向に移動する場合には、部分弦の張力は次第に低下していく。従って、仮想粒子200が該部分弦と連続的に衝突すると、除々に音高が低くなっていく和音が連続的に生成される。
(10)上記実施形態においては、本発明に係る音データ生成装置10に特徴的な機能を実現するためのプログラムを、ROM103に予め書き込んでおく場合について説明したが、磁気テープ、磁気ディスク、フレキシブルディスク、光記録媒体、光磁気記録媒体、RAM、ROMなどのコンピュータ読取り可能な記録媒体に上記プログラムを記録して配布するとしても良く、インターネット網などの電気通信回線経由のダウンロードにより上記プログラムを配布するようにしても良い。
1…音データ生成システム、10…音データ生成装置、20…マウス、21…本体、22…ボタン、23…通信ケーブル、24…移動検知手段、30…モニタ、40…多点コントローラ、41…通信ケーブル、42…タッチパネル、100…仮想空間、101…制御部、102…光ディスク再生部、103…ROM、104…RAM、105…I/O部、109…バス、120…弦、140…グルー、150…スプリンクラ、160…ウォール、170…カーソル、180…コンベヤ、200…仮想粒子、400…制御パネル
Claims (4)
- 仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、
所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分を固定し該固定された点を端点とする部分弦を生成する部分弦生成手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて前記弦または前記部分弦の振動状態を演算し、該振動状態に基づいて音データを生成する音データ生成手段と
を有することを特徴とする音データ生成装置。 - 仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、
所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分の変位を促進または抑制する制御手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用による前記弦の振動状態を前記制御手段による制御を含めて演算し、該振動状態に基づいて音データを生成する音データ生成手段と
を有することを特徴とする音データ生成装置。 - コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、
所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分を固定し該固定された点を端点とする部分弦を生成する部分弦生成手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用に基づいて前記弦または前記部分弦の振動状態を演算し、該振動状態に基づいて音データを生成する音データ生成手段
として機能させるプログラム。 - コンピュータを、
仮想空間を設定する仮想空間設定手段と、
仮想粒子を前記仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
弦を有する仮想発音体を前記仮想空間に設定する仮想発音体設定手段と、
所定領域を設定し、該所定領域に前記仮想発音体が有する弦が進入した場合に、前記弦の進入した部分の変位を促進または抑制する制御手段と、
前記仮想発音体と前記仮想粒子の相互作用を演算し、該相互作用による前記弦の振動状態を前記制御手段による制御を含めて演算し、該振動状態に基づいて音データを生成する音データ生成手段
として機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007275753A JP2009103931A (ja) | 2007-10-23 | 2007-10-23 | 音データ生成装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007275753A JP2009103931A (ja) | 2007-10-23 | 2007-10-23 | 音データ生成装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009103931A true JP2009103931A (ja) | 2009-05-14 |
Family
ID=40705667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007275753A Pending JP2009103931A (ja) | 2007-10-23 | 2007-10-23 | 音データ生成装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009103931A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015225304A (ja) * | 2014-05-29 | 2015-12-14 | カシオ計算機株式会社 | 電子楽器、発音制御方法、およびプログラム |
-
2007
- 2007-10-23 JP JP2007275753A patent/JP2009103931A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015225304A (ja) * | 2014-05-29 | 2015-12-14 | カシオ計算機株式会社 | 電子楽器、発音制御方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8858330B2 (en) | Music video game with virtual drums | |
JP5793595B2 (ja) | 複数作動ハンドヘルド装置 | |
KR101085300B1 (ko) | 햅틱 삽입을 통해서 오락용 소프트웨어를 향상시키기 위한 방법과 장치 | |
JP4675324B2 (ja) | 力覚提示装置、力覚提示方法および力覚提示プログラム | |
CN102159290A (zh) | 一种用于音乐游戏的触觉感知游戏外设 | |
CN103325364B (zh) | 发声控制装置及发声控制装置的控制方法 | |
Çamcı et al. | Exploring the affordances of VR for musical interaction design with VIMEs | |
JP4953085B2 (ja) | 音データ生成装置およびプログラム | |
JP4736094B2 (ja) | 音データ生成装置およびプログラム | |
JP2009103931A (ja) | 音データ生成装置およびプログラム | |
JP4953084B2 (ja) | 音データ生成装置およびプログラム | |
JP5099335B2 (ja) | 音データ生成装置およびプログラム | |
JP5011563B2 (ja) | 音データ生成装置およびプログラム | |
JP4858777B2 (ja) | 音データ生成装置およびプログラム | |
JP2005312758A (ja) | ゲームシステムおよびゲームプログラム | |
JP5267905B2 (ja) | 音データ生成装置およびプログラム | |
JP5051838B2 (ja) | 音データ生成装置およびプログラム | |
Dolhansky et al. | Designing an expressive virtual percussion instrument | |
JP2009103933A (ja) | 音データ生成装置およびプログラム | |
Keenan | A theatre wind machine as interactive sounding object | |
Gadd et al. | Metamuse: a novel control metaphor for granular synthesis | |
Passalenti et al. | Haptic interaction with guitar and bass virtual strings | |
JP2009175525A (ja) | 音データ生成装置、音データ生成方法およびプログラム | |
Hoadley | Implementation and development of sculptural interfaces for digital performance of music through embodied expression | |
Mitchusson et al. | Usage of Physics Engines for UI Design in NexusUI |