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

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

Info

Publication number
JP2008203818A
JP2008203818A JP2007275756A JP2007275756A JP2008203818A JP 2008203818 A JP2008203818 A JP 2008203818A JP 2007275756 A JP2007275756 A JP 2007275756A JP 2007275756 A JP2007275756 A JP 2007275756A JP 2008203818 A JP2008203818 A JP 2008203818A
Authority
JP
Japan
Prior art keywords
virtual
particles
particle
string
sound data
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.)
Granted
Application number
JP2007275756A
Other languages
English (en)
Other versions
JP4953085B2 (ja
Inventor
Koichiro Eto
浩一郎 江渡
Noriaki Watanabe
訓章 渡辺
Akihiko Taniguchi
暁彦 谷口
Migaku Nagai
琢 永井
Kiyohisa Sugii
清久 杉井
Atsushi Tougi
温 東儀
Yasushi Kamiya
泰史 神谷
Osamu Oshima
治 大島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
Yamaha Corp
National Institute of Advanced Industrial Science and Technology AIST
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp, National Institute of Advanced Industrial Science and Technology AIST filed Critical Yamaha Corp
Priority to JP2007275756A priority Critical patent/JP4953085B2/ja
Publication of JP2008203818A publication Critical patent/JP2008203818A/ja
Application granted granted Critical
Publication of JP4953085B2 publication Critical patent/JP4953085B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】コンピュータを用いて、一定の法則に従いながらもランダム性を有する自然な音を生成する。
【解決手段】仮想空間100には、仮想の重力場や障害物であるウォール160など、仮想粒子200の運動に影響を与える各種の条件が設定されている。放り込みエリア110およびスプリンクラ150により多数の仮想粒子200がランダムに仮想空間100内に放出されると、放出された各粒子は上述した各種条件および仮想粒子200同士の相互作用(衝突)に従って運動する。その結果、設定された条件に従いながらも試行ごとに異なる仮想粒子200の運動が引き起こされる。仮想空間100には更に弦120が設けられ、仮想粒子200と弦120の衝突に伴い、弦120の振動状態が演算され、演算結果に応じて弦特有の音高・音色・各種音響効果等が付与された音データが生成される。
【選択図】図1

Description

本発明は、音データ生成装置およびプログラムに関する。
近年、ますますリアリティーの増した音がコンピュータにより生成されるようになっている。例えばコンピュータで「川のせせらぎ音」や「そよ風の音」など自然現象に伴う音を非常に巧妙に再現することができる(特許文献1参照)。
特開平07−140973号公報
ところで、音という自然現象を大きなスケールで見たときには、自然法則に則ったおよそ一定の現象として把握される。上記特許文献1においても、自然現象における音を模した波形データを繰り返し音声へ変換することにより音を再現している。
しかし、上述の川のせせらぎ音は多数の水分子の運動から生じるものであり、そよ風の音は空気中に存在する多数の気体分子の流れや振動から生じるものであるとの例からも明らかなように、自然界において発生する音の多くは小さなスケールで見れば多数の粒子が高頻度で相互作用を繰り返すことにより生じている。従って、その結果生成される音には「ランダム性」や「非再現性」が生まれ、それらが音に「自然らしさ」を与えていると考えられる。
一方、コンピュータにより生成される音には、上述した「ランダム性」や「非再現性」が欠如しており、例えば特許文献1に記載された技術を用いたとしても、所謂「自然らしさ」が感じられないといった問題が生じていた。
本発明は上述の課題に鑑みてなされたものであり、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成する音データ生成装置およびプログラムを提供することを目的とする。
本発明に係る音データ生成装置は、仮想粒子を仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、振動体モデルを前記仮想空間に設ける振動体設定手段と、前記仮想粒子と前記振動体モデルとの相互作用に基づいて前記振動体モデルの振動状態を演算する振動状態演算手段と、前記振動状態演算手段の演算による前記振動体モデルの振動状態に基づいて音データを生成する音データ生成手段とを具備することを特徴とする。
本発明に係る音データ生成装置は、上記の構成において、前記振動体設定手段は、複数の仮想振動体粒子が相互に連結され、前記仮想振動体粒子同士で引力が設定されている振動体モデルを設定すると共に、前記振動状態演算手段は、前記仮想粒子と前記振動体モデルを構成する仮想振動体粒子との相互作用に基づいて前記振動体モデルの振動状態を演算しても良い。その場合、上記の構成において、前記振動体モデルを構成する仮想振動体粒子と前記仮想粒子は同一の質量および体積および形態を有していても良い。また、上記の構成において、前記振動体モデルを構成する仮想振動体粒子同士に働く引力が、前記仮想振動体粒子同士の距離が遠くなるほど大きくなるように設定されていても良い。また、上記の構成において、前記振動体モデルを構成する仮想振動体粒子には、該仮想振動体粒子の移動の方向とは逆向きに力が働くようにしても良い。また、上記の構成において、前記振動体モデルは前記複数の仮想振動体粒子が直鎖状に連結されて構成され、その両端に位置する仮想振動体粒子の位置は前記仮想空間において固定されるようにしても良い。また、上記の構成において、前記振動体モデルは前記複数の仮想振動体粒子が平面状に連結されて構成され、その最も周囲に位置する仮想振動体粒子の位置は前記仮想空間において固定されるようにしても良い。また、上記の構成において、複数の音と、力の大きさを対応付けるテーブルを記憶する記憶手段と、前記複数の音のいずれかを指定する指示情報を受取る受取手段と、前記受取手段が受取った指示情報により指定される音に対応する力の大きさを前記テーブルを参照して特定し、前記仮想振動体粒子同士に働く引力を該特定した力に設定するパラメータ設定手段とを具備していても良い。
本発明に係る音データ生成装置は、上記の構成において、前記振動体設定手段は、2つの第2の仮想粒子の間に仮想の弦が設けられた振動体モデルを設定すると共に、前記振動状態演算手段は、前記仮想粒子と前記仮想の弦との相互作用に基づいて、前記振動体モデルの振動状態を物理的シミュレーション演算しても良い。その場合、上記の構成において、複数の音と、張力を対応付けるテーブルを記憶する記憶手段と、前記複数の音のいずれかを指定する指示情報を受取る受取手段と、前記受取手段が受取った指示情報により指定される音に対応する張力を前記テーブルを参照して特定し、該特定した張力を前記仮想の弦に設定するパラメータ設定手段とを具備していても良い。
本発明に係るプログラムは、コンピュータを仮想粒子を仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、振動体モデルを前記仮想空間に設ける振動体設定手段と、前記軌道演算手段の演算に従い、前記仮想粒子と前記振動体モデルとの相互作用に基づいて前記振動体モデルの振動状態を演算する振動状態演算手段と、前記振動状態演算手段の演算による前記振動体モデルの振動状態に基づいて音データを生成する音データ生成手段として機能させることを特徴とする。
本発明に係る音データ生成装置またはプログラムによれば、一定の法則下における多数の粒子の挙動と対応付けられた自然な音を生成することができる。
(本発明の概略説明)
本発明に係る音データ生成装置は、コンピュータの演算によって形成される仮想空間の中に多数の仮想粒子を放出させるとともに、振動体(弦など)を仮想空間の中に配置し、仮想粒子と振動体との相互作用(衝突など)の状況を演算し、その演算結果による振動体の振動状態に基づいて音データを生成するものである。上記振動体は、数珠繋ぎになった仮想的な粒子(弦粒子)から構成されており、仮想粒子と振動体との相互作用を、仮想粒子と弦粒子との相互作用として演算することで上記振動体の振動状態を演算する。
図1は、音データ生成処理におけるモニタ表示の一例である。仮想空間100には、仮想の障害物であるウォール160など、仮想粒子200の運動に影響を与える条件が設定されているとともに、仮想空間100内の重力場の大きさや向きなどの空間の要素についても各種の条件が設定できるようになっている。仮想粒子200は放り込みエリア110およびスプリンクラ150の先端部分より仮想空間100内に放出される。放出された各仮想粒子200は上述した各種条件および仮想粒子200同士の相互作用(例えば、衝突)に従って運動する。その結果、設定された条件の元で仮想粒子200の複雑な運動が引き起こされる。仮想空間100には、振動体として弦120が設けられており、運動する個々の仮想粒子200が弦120の領域を通過して弦を「はじき」、引き起こされる弦120の振動状態に基づいて音データが生成される。
(A;構成)
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
(A−1;全体構成)
図2は、本発明に係る音データ生成システム1の全体構成を示す図である。音データ生成システム1は、プログラム実行装置としての音データ生成装置10と、マウス20と、多点コントローラ50と、モニタ30とを有する。
(A−2;各装置の構成)
まず、音データ生成装置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やCD−ROM・DVD−ROM等の光ディスクから読み出された各種制御プログラムを実行することにより、音声および映像の信号処理や各部の制御を行う。
光ディスク再生部102は、CD−ROM・DVD−ROM等の光ディスクからデータを読取る。
ROM103は、制御部101が実行する制御プログラムを格納している。
RAM104は、制御部101によってワークエリアとして利用される。
I/O部105は、音データ生成装置10と接続された機器との信号の送受信を仲介する。具体的には、マウス20および多点コントローラ50から操作内容を示す信号を受取り制御部101に出力すると共に、制御部101から受取った音声データおよび映像データをモニタ30に出力する。
以上が音データ生成装置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は、ドラッグ操作により選択された画面上の領域や該領域に含まれるアイコンなどに対して選択処理が行われたと認識する。
次に、モニタ30の構成について図5を用いて説明する。モニタ30は、音データ生成装置10から受取った映像データに基づいて映像を表示する。モニタ画面の各点には同図に示されるように座標が対応付けられており、図に示すように画面左上を座標(0,0)、右下を(座標(756,1024)とする座標が設定されている。
また、モニタ30は、図2に示すように、音データ再生部30aを有し、音データ生成装置10から受取った音データに基づいて音声を放音する。
次に、多点コントローラ50の構成について、図6を用いて説明する。図6(a)に示すように、多点コントローラ50は、所謂タッチパネル52を有する。タッチパネル52には、図に示すように画面左上を座標(0,0)、右下を(座標(756,1024)とする座標が設定されている。タッチパネル52は、タッチパネル上の特定の点が押下されたことを感知する感知手段を有し、該感知手段がパネル上の特定の点が押下されたことを感知すると、押下された点の位置を示す座標を含む押下位置情報を、通信ケーブル51を介して音データ生成装置10に出力する。
音データ生成装置10の制御部101は、押下位置情報を多点コントローラ50から受取ると、該押下位置情報に含まれる座標を読み出し、モニタ30画面上において該座標に相当する点が選択されたと判断する。図6(b)は、モニタ30の画面表示を示した図である。例えば、手Aおよび手Bが、図6(a)で示されるようにタッチパネル52を押下した場合、手Aで押下された位置を示す座標、または手Bで押下された位置を示す座標が書き込まれた押下位置情報が、それぞれの点が押下されたタイミングで制御部101へ出力される。制御部101は、該押下位置情報を受取ると、図6(b)で示されるモニタ画面上の点Aおよび点Bが選択されたと判定する。
(A−3;プログラムの構成)
次に、ROM103に格納された制御プログラムの構成について図7を用いて説明する。なお、制御プログラムは、音データ生成装置10の制御部101が音データを生成するために実行するプログラムが書き込まれており、図7には主要なもののみを概念的に表す。
制御プログラムは、オブジェクト制御プログラム、粒子運動制御プログラム、映像制御プログラム、弦振動制御プログラム、音データ生成プログラムなどを有している。
オブジェクト制御プログラムは、仮想空間100内において仮想粒子200の運動に影響を与える規制要素(ウォール160など)の配置などを制御する。粒子運動制御プログラムは、仮想空間100内における仮想粒子200の運動を計算する。映像制御プログラムは、演算結果として与えられる仮想空間100内の仮想粒子200や弦120の振動などの挙動をテレビジョンモニタ画面上へ表示させる。弦振動制御プログラムは、弦120の振動状況を演算する。音データ生成プログラムは、弦120の振動状態に基づいて音データを生成する。
(A−4;仮想空間の制御)
以下では、オブジェクト制御プログラムによる仮想空間100の制御について説明する。
図8は、モニタ30の画面の一例を示した図である。画面には、仮想空間100の枠組みが表示されている。また、仮想空間100の右側には、制御パネル400が表示されている。仮想空間100は、ユーザによる制御パネル400に対する操作に基づき、以下のように制御される。
(1)規制要素の配置
図9は、ウォール160の配置に際するモニタ30の画面表示の一例である。ユーザにより制御パネル400下部の「ウォール」アイコン400Eがクリックされた後ドラッグ操作がなされると、制御部101は該ドラッグ操作の始点と終点を対角線とする長方形の領域をウォール160として画面上に表示させる。例えば、カーソル40が図中40(a)から40(b)の位置までドラッグされると、ウォール160(a)が設定される。
また、カーソル40を、一旦設定されたウォール160の頂点に合わせてボタン22を押下し、押下したままマウス20を移動する操作がなされると、ウォール160の重心を中心としてカーソル40の移動に伴ってウォール160が回転される。例えば、ウォール160(c)の頂点(カーソル40(c)の位置)にカーソル40を合わせ、ボタン22を押下したままカーソル40(d)で示される位置まで移動されると、ウォール160はウォール160(d)で示される位置に回転される。
また、カーソル40をウォール160の内側領域にあわせて同様の操作がなされると、ウォール160はカーソル40の移動に伴って移動される。例えば、ウォール160(e)の内部領域(カーソル40(e)の位置)にカーソル40を合わせ、ボタン22を押下したままカーソル40(f)で示される位置まで移動されると、ウォール160はウォール160(f)で示される位置に移動される。
また、後述する音データ生成処理中にウォール160がダブルクリックされると、選択されたウォール160は消滅する。
(2)仮想空間の特性の制御
仮想空間100には、以下に例示するような「空間特性」が設定される。制御パネル400の下部の「空間特性」アイコン400Dが押下されると、制御部101は、制御プログラムに書き込まれた選択肢をモニタ30の画面上にオーバーレイ表示する。図10は、該表示の一例を示した図である。ユーザは、画面上に表示された重力の方向に関する選択肢を選択し、重力加速度の大きさを書き込む。また、仮想粒子200の移動によって働く抵抗力については、その速度に応じた抵抗力を決定するための比例定数を書き込む。制御部101は、入力された内容を粒子運動制御プログラムにおける粒子運動の挙動の算出、および弦振動制御プログラムによる弦振動の制御に反映させる。
本実施形態においては、重力場の設定において、重力の方向として図面下方向が選択されその重力加速度の値が書き込まれると、仮想粒子200に対して画面下方向に設定された値の重力が働き、仮想空間100は鉛直方向に設けられた空間であるかのように設定される。また、抵抗力の設定において、比例定数の値が書き込まれると、仮想粒子200の移動速度に比例した抵抗力が移動と逆方向に働く。そして、その比例定数に対応してまるで空気や水が仮想空間100に満たされているような環境に設定される。
なお、これら仮想空間100に関する設定は、予め制御プログラムなどにテンプレートとして書き込んでおいても良い。例えば、あるテンプレートにおいては、重力場は画面下方に設定され、仮想空間100内を移動する仮想粒子200には移動の方向とは逆にその速度に比例した抵抗力が働き、その比例定数が水に相当する値に設定されているようにすれば、ユーザは該テンプレートを選択するだけで、仮想空間100がまるで重力のある空間に設置された水が満たされた容器であるかのような設定を簡易に行うことができる。
(A−5;仮想粒子の運動)
以下では、粒子運動制御プログラムによる仮想粒子200の運動制御について説明する。
(1)仮想粒子200の出現
まず、仮想粒子200の出現について図11を用いて説明する。本実施形態における仮想空間100には、仮想粒子200を仮想空間100に発生させるための装置として、放り込みエリア110およびスプリンクラ150が設けられる。
放り込みエリア110は、画面右端に示された制御パネル400の初速度400A−2および頻度400A−3の値が書き込まれてから「放り込みエリア」アイコン400A−1がクリックされ、その後仮想空間100の枠組みがドラッグされることにより設定される。例えば、図中(a)から(b)の位置までドラッグされると、放り込みエリア110が図のように設定される。以上の操作が複数行われることにより、複数の放り込みエリア110が設けられる。
放り込みエリア110は、個々の仮想粒子200を設定された初速度で仮想空間100内に放り込む。その放り込みの頻度は、放り込みエリア110の単位長さおよび単位時間あたり、頻度400A−3に書き込まれた値となるようにする。ただし、放り込みエリア110のいずれの箇所から仮想粒子200が放出されるかに関してはランダムに選択される。
一方スプリンクラ150は、制御パネル400の初速度400B−2、頻度400B−3、回転速度400B−4の値が書き込まれてから「スプリンクラ」アイコン400B−1がクリックされ、仮想空間100内においてドラッグがなされることにより設定される。
スプリンクラ150は、回転軸150a、ロッド150b、および放出口150cからなり、回転軸150aはドラッグが開始された箇所に設定され、放出口150cはドラッグが終了した箇所に設定される。そして、回転軸150aと放出口150cとの間にロッド150bが設けられる。放出口150cは回転軸150aを中心にロッド150bの長さを回転半径として回転速度400B−4に書き込まれた回転速度で回転する。個々の仮想粒子200は、初速度400B−2に書き込まれた初速度で放出口150cから放出される。仮想粒子200の放出の頻度は、時間平均して単位時間あたり頻度400B−3に書き込まれた数の仮想粒子200がランダムに放出される。
なお、仮想粒子200の単位面積あたりの存在数(以下、圧力)に上限を設けて仮想粒子200を出現させる。すなわち、図12に示すように、ウォール160で囲まれた放り込みエリア110を含む領域やスプリンクラ150の放出口150cを含む領域の圧力が所定の閾値に達すると、放り込みエリア110またはスプリンクラ150は仮想粒子200の更なる放出を行わない。
(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の枠組み、および仮想粒子200とウォール160が衝突した場合には、跳ね返り係数1で完全弾性衝突をする。
(3)仮想粒子200の消滅
仮想空間100の枠組みには、図11に示すように仮想粒子200を消滅させる「ホール」130が設定される。設定されたホール130の領域を仮想粒子200が横切った場合には、該仮想粒子200が消滅する(ホールに吸い込まれる)。ホール130は、画面右端に示された制御パネル400の「ホール」アイコン400Cがクリックされ、仮想空間100の枠組みがドラッグされることにより設定される。例えば、図11において「ホール」アイコン400Cがクリックされた後、(c)から(d)の位置までドラッグされると、ホール130が図のように設定される。複数のホール130が設けられる場合には、以上の操作が複数のホール130についてそれぞれ行われる。
なお、ホール130を、仮想空間100の枠組みの内側に設けることができるように設定しても良い。その場合、ウォール160を設定したのと同様の手順でドラッグ操作によりホール130の領域が設定される。
(A−6;弦120の振動の制御)
弦120の振動は、ROM103に格納された弦振動制御プログラムにより、以下のように制御される。図13は、弦120の振動の制御について説明するための図である。図1においては、弦120を図13(a)のように模式的に示した。弦120は、図13(b)に示されるように、仮想粒子200同様の質量・体積・形態を有する粒子(以下、弦粒子Gと呼ぶ)が数珠状に連なって構成されている。図13(b)においては、多数連なった弦粒子Gのうち、中央部に位置する弦粒子G−1〜10を拡大して示す。
ここで、隣り合った弦粒子G同士には、予め設定された比例定数で弦粒子Gの中心間の距離に比例した引力が働いており、更には最も端に位置する弦粒子GsおよびGeの位置は固定されている。従って、弦120に外力が加わっていない状態においては、弦粒子Gは、図13(b)に示されるように、最もエネルギー的に安定である直線状に各弦粒子Gは配列している。
さて、弦120は、弦粒子Gのいずれかに仮想粒子200が相互作用をした場合に振動する。図13(c)は、弦粒子Gと仮想粒子200の相互作用を示した図である。同図においては、仮想粒子200は矢印で示される軌跡で移動することにより弦120と相互作用した場合について示す。弦粒子Gと仮想粒子200の相互作用においては、仮想粒子200は弦粒子Gと相互作用してもそのまま反発作用を受けることなく通過するよう制御される。一方、仮想粒子200と相互作用した弦粒子Gは、仮想粒子200が通過すると、あたかも仮想粒子200に衝突されたかのように力積を受け、図13(c)に示されるように弦粒子G−5は、元の位置から飛び出す。なお、その相互作用により生じる弦粒子Gの初速度は、粒子運動制御プログラムが仮想粒子200同士の衝突を扱う場合と同様の演算により算出される。
さて、元の位置から移動した弦粒子Gに働く力について説明する。図13(d)には、弦粒子G−5に働く力が書き込まれている。弦粒子Gには、隣り合った弦粒子Gから引力が働くため、弦粒子G−5には、弦粒子G−4および弦粒子G−6から引力が働く。その力は振動停止状態に比較して大きく、その方向は、それぞれ力1および力2で示される方向である。従って、弦粒子G−5には、力1および力2が働き、それらは合成により力3として表される。なお、図から明らかなように、力3は、弦粒子G−5の変位方向と平行で向きは逆である。
制御部101は、弦粒子G−5の現在の位置および速度と、弦粒子G―5に働く力とから、微小単位時間後の弦粒子G―5の位置および速度を算出する。
また、一つの弦粒子Gの移動は、その両隣の弦粒子Gの移動にも影響を及ぼす。図13(e)は、弦粒子G―5の移動により、その両隣に位置する弦粒子G―4および弦粒子G―6が受ける力が書き込まれた図である。弦粒子G―4には、弦粒子G−5から、力1と大きさは等しく向きが逆の力4が働く。また、弦粒子G―3からは力5が働く。ここで、力4および力5のベクトルを合成すると、弦粒子G―5の変位と平行である力6となる。
制御部101は、弦粒子G−4の現在の位置および速度と、弦粒子G―4に働く力から、微小単位時間後の弦粒子G―4の位置および速度を算出する。
なお、以上に説明した力に加え、各弦粒子Gには、「減衰力」が加わる。減衰力とは、弦粒子Gの移動に伴って、その移動の速度に比例し、その移動の方向とは逆向きに働く力であり、例えば空気抵抗にたとえられるものである。その力の大きさを規定する比例定数には、仮想空間100の空間特性において設定された値が用いられる。
以上に説明した演算は、弦粒子G―6についても同様に実行される。
また、このようにして一つの弦粒子Gに生じた変位は、両隣の弦粒子Gへと伝播し、全ての弦粒子Gについて演算が行われる。なお、弦120の両端に位置する弦粒子Gは、その位置が固定されているため、隣り合う弦粒子Gから力を受けても位置が移動することはない。以上のようにして各弦粒子Gの挙動が演算され、該演算結果を全ての弦粒子Gについて繰り返すことにより、「弦の振動」に相当する現象を再現できる。
(A−7;音データの生成)
音データ生成装置10は、ROM103に格納された音データ生成プログラムにより、以下に説明するように音データを生成する。
制御部101は、該弦の振動が現実の世界において生成すると考えられる音データを生成し、出力する。具体的には、各弦粒子Gの変位量の時間変化を元に波形データを生成し、それらを全ての弦粒子Gについて足し合わせる。従って、生成される音データの周波数は弦120を総体で見たときの振動数と等しく、その音量レベルは弦120の振動の大きさに所定の比例定数で比例するよう制御される。
音データ生成装置10は、以上のルールに従い、MAX/MSPを用いて音データを生成する。なお、MAX/MSPとは、音楽プログラミング言語MAXと音響信号処理用エクステンションMSPとからなる。MAX/MSPによれば、様々なモジュールをつなぎ合わせて、シンセサイザー、エフェクター、シーケンサーなどが作れるほか、パッチングによって音楽の自動生成なども可能であり、ビジュアル的なプログラミング環境によって、直感的なプログラミング・操作ができる。
(B;動作)
以下では、音データ生成装置10が音データを生成する際の各部の動作について説明する。まず、音データ生成装置10の電源が投入されると、制御部101はROM103から各種制御プログラムを読み出し、RAM104にロードする。続いて制御部101は、マウス20からユーザの指示を受け付け、初期設定処理を行う。
(B−1;初期設定処理)
図14は、初期設定処理の流れを示したフローチャートである。まず、ステップSA100においては、仮想空間100の空間特性の設定がなされる。音データ生成システム1のユーザは、制御パネル400の「空間特性」アイコン400Dを押下し、モニタ30に図10に示すパラメータ設定のための画面を表示させる。そして制御部101は、入力された内容に応じて仮想空間100の空間特性、すなわち仮想空間100における重力場および抵抗力の設定を行う。
ステップSA110では、仮想粒子200を仮想空間100に出現させる手段の設定を行う。ユーザにより制御パネル400にパラメータが書き込まれた後、「放り込みエリア」アイコン400A−1または「スプリンクラ」アイコン400B−1がクリックされ、仮想空間100内の領域が指定されると、放り込みエリア110またはスプリンクラ150が設定される。
(B−2;音データ生成処理)
以上の初期設定処理がなされると、制御部101は音データ生成処理を開始する。図15は、音データ生成処理の流れを示したフローチャートである。なお、図15に示した音データ生成処理は、仮想粒子200の一つ一つについて実行される。
フローチャートの各ステップの説明に入る前に、振動体設定処理について説明する。振動体設定処理は、音データ生成処理に対して割り込み処理として行われる。図16は、振動体設定処理の流れを示したフローチャートである。
振動体である弦は、以下の処理において仮想空間100内に2つの点が指定されると、該指定箇所を両端として設けられる。ステップSC100において、制御部101は、多点コントローラ50から押下位置情報を受信したか否かを判定する。ステップSC100の判定結果が“NO”の場合は、ステップSC100の処理を繰り返す。ステップSC100の判定結果が“YES”である場合は、ステップSC110を行う。
ステップSC110において、制御部101は、多点コントローラ50から受取った押下位置情報に含まれる座標を読取り、該座標で示される仮想空間100内の位置を選択し、該座標をRAM104に一旦記憶する。
ステップSC120においては、再び多点コントローラ50から押下位置情報が送信されてきたか否かを判定する。ステップSC120の判定結果が“NO”である場合は、ステップSC120の処理を繰り返す。ステップSC120の判定結果が“YES”である場合は、受信した押下位置情報に含まれる座標を読み出す。
ステップSC130においては、制御部101は、ステップSC120において受信した押下位置情報を、ステップSC100において受信した押下位置情報と対にして弦120の設置箇所を決定する。すなわち、ステップSC110において、RAM104に書き込まれた座標とステップSC120において読み出された座標を両端とする弦120(振動体)を仮想空間100内に設ける。
ステップSC140においては、制御部101は、音データ生成処理が終了したか否かを判定する。ステップSC140の判定結果が“YES”である場合は、本振動体設定処理を終了する。ステップSC140の判定結果が“NO”である場合は、再びステップSC100以降の処理を行う。以上が振動体設定処理の流れである。
次に、再び図15を用いて音データ生成処理の各ステップについて説明する。ステップSB100において、放り込みエリア110またはスプリンクラ150の放出箇所の粒子密度(圧力)が閾値以下であるか否かを判定する。ステップSB100の判定結果が“YES”である場合には、ステップSB110の処理を行う。ステップSB100の判定結果が“NO”である場合は、ステップSB100の判定結果が“YES”となるまでステップSB100を繰り返し行う。
ステップSB110において、放り込みエリア110またはスプリンクラ150は、仮想粒子200を仮想空間100に出現させる。そして、出現した仮想粒子200のそれぞれについて、ステップSB120以下の処理が行われる。
ステップSB120において、微小単位時間後の仮想粒子200の運動を演算する。仮想空間100の壁、ウォール160、または他の仮想粒子200に衝突した場合には、完全弾性衝突で跳ね返り、該仮想粒子200には新たな速度が設定される。また、衝突が起こっていない場合には、仮想粒子200の速度に微小時間を乗算することにより、仮想粒子200は新たな位置に移動する。
なお、ステップSB120においては、ステップSB110にて仮想空間100に出現した仮想粒子200の全てについて同時にその軌道の算出が行われるため、ランダムに出現した多数の仮想粒子200が互いに相互作用を高頻度で繰り返すこととなる。従って、仮に仮想空間100の各種設定が同一であっても、毎回異なった仮想粒子200の挙動が引き起こされる。
ステップSB130において、ステップSB120の処理により、仮想粒子200がホール130に進入するなどして消滅するか否かを判定する。ステップSB130の判定結果が“YES”である場合には該仮想粒子200を画面上から消去し、該仮想粒子200に関しての処理を終了する。ステップSB130の判定結果が“NO”である場合には、ステップSB140以降の処理を行う。
ステップSB140において、仮想粒子200が弦120を構成する弦粒子G(振動体)のいずれかと衝突したか否かを判定する。ステップSB140の判定結果が“YES”である場合は、ステップSB150の処理を行う。ステップSB140の判定結果が“NO”である場合は、ステップSB120以降の処理を再び行う。
ステップSB150において、ステップSB140において仮想粒子200と相互作用した弦120を構成する全ての弦粒子Gの挙動を演算し、弦120の振動状態を演算する。
ステップSB160において、弦120の振動状態に基づいて音データを生成する。
上述のように、仮想粒子200は、放り込みエリア110またはスプリンクラ150からランダム性を持たせて放出されており、更には多数の仮想粒子200が互いに高頻度で相互作用を繰り返している。従って、生成される音データにはランダム性や非再現性が付与される。また、弦粒子Gと仮想粒子200のいずれもが粒子であり、それらの衝突状態について力学的演算を施すことで弦の振動を再現し、更にはその振動状態を元に波形を生成して音データを生成しているため、生成される音データは現実世界における弦を良く模した音色を有する。
ステップSB160が終わると、弦120と相互作用した仮想粒子200について、ステップSB120以降の処理を再び行う。
以上の音データ生成処理と並行して、モニタ30には仮想空間100における仮想粒子200の運動が表示される。生成される音データは該表示に基づくものであるから、ユーザは放音された音とそのまま対応する画面表示を見ることが出来る。
以上の音データ生成処理が終了すると、制御部101は、生成した音データを音データ再生部30aへ出力し、音データ再生部30aは該音データを再生する。また、制御部101は、仮想粒子200の放出手段やウォール160などの各種オブジェクトの配置とその材質、および仮想空間100に設定された空間特性など、音データの生成に係る各種パラメータの情報(以下、設定情報)を、試行ごとにRAM104に書き込む。
制御部101は、RAM104に書き込まれた設定情報を読み出すことにより、再度同じ条件設定下で音データの生成処理を行うことができる。なお、そのように同様の条件設定で再び音データを生成したとしても、各仮想粒子200の挙動は毎回異なるため、微視的には異なる音データが生成される。
(C;変形例)
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。
(1)上記実施形態においては、重力や抵抗力などの空間特性を音データの生成処理の最中に変更しない場合について説明したが、音データ生成処理の最中に変更することができるようにしても良い。その場合、音データ生成処理が行われている最中に「空間特性」アイコン400Dが押下され、設定画面において各種設定がなされると該設定に変更されるようにすれば良い。この場合、各仮想粒子200および弦粒子Gの挙動は、変更された条件に応じて演算される。
(2)上記実施形態においては、仮想粒子200と弦粒子Gの質量・体積・形態が同じでる場合について説明した。しかし、仮想粒子200と弦粒子Gとの間で、それらのパラメータ値を異なるようにしても良い。例えば仮想粒子200の質量を弦粒子Gの質量に較べて大きく設定することで、弦粒子Gは仮想粒子200との相互作用の際により勢い良く反発され、結果として音量レベルや音色が異なる音データが生成される。
(3)上記実施形態においては、仮想粒子200を特定の質量および体積を有する球であるとして説明したが、その形状や大きさなどをユーザが自由に設定することができるようにしても良い。
(4)上記実施形態においては、振動体として弦120を設ける場合について説明した。しかし、振動体は弦に限定されず、例えば太鼓やシンバルなどを模した振動面を有する振動体(以下、面と呼ぶ)を設けても良い。以下、「面」の構成およびその振動の制御について説明する。
図17は、面の構成を示した図である。図17(a)に示すように、面125は総体として平面的な構成を有する。そして、図17(b)に示すように、面125は弦120と同様に相互に隣接した仮想的な粒子(以下、面粒子M)から構成される。面粒子Mは、一平面上に初期位置が設定されており、弦粒子Gと同様に隣接する面粒子M同士で引力を及ぼしあう。図17(c)は、面粒子M―1が仮想粒子200と相互作用し、変位を生じた場合に面粒子M−1に働く力が書き込まれた図である。面粒子M−1は、図示するように、隣接する面粒子M−2〜7からそれぞれ力2〜7を受ける。力2〜7を合成したものが力1であり、面粒子M−1には、面粒子M−1の変位とは逆向きの力を受けることになる。また、面粒子M2〜7は、面粒子M−1から面粒子M−1の変位方向への力を受けることにより、変位する。このようにして、面125においても、弦120と同様に、仮想粒子200との相互作用により生じた一つの面粒子Mの変位が周囲の面粒子Mの変位を、ひいては面125の全面における振動を引き起こす。
面125を仮想空間100に設ける場合には、以下のようにすれば良い。仮想空間100の表示は2次元であるため、面125を面の断面図で表示されるようにしても良い。すなわち、例えば仮想空間100内で始点と終点とが指定された場合には、指定された始点と終点とを結ぶ直線が面125の断面となるように、そして面125と仮想空間100の表示画面が垂直となるように面125が設けられたとすれば良い。なお、そのように断面図で面125を表示した場合、仮想粒子200が面125に衝突した際には、面125の断面(面125の直径に対応)における衝突位置から面125の表面のいずれの面粒子Mが衝突を受けたのかを判定し、面125の振動の演算を行う。
なお、仮想粒子200は弦粒子Gと相互作用した場合に、反発せずそのまま弦粒子Gを通過する旨を説明したが、面粒子Mとの相互作用においては、仮想粒子200は跳ね返るとの条件を設けても良い。
以上に説明した面125を仮想空間100に設けることにより、太鼓やシンバルのように、弦とは音色が異なる面に特有の音色を有する音データを生成させることができる。
(5)上記実施形態においては、マウス20の操作内容は、音データ生成装置10に通信ケーブル23を介して送信される場合について説明した。しかし、有線ではなく無線(赤外線など)でデータを送信しても良い。
(6)上記実施形態において、弦粒子G同士の引力は、弦粒子G同士の距離に比例する旨を説明した。ここで、上記構成に加え、弦粒子G同士の距離と引力の大きさの間の比例定数を設定するための手段を設けても良い。例えば、比例定数を大きく設定すると、弦粒子Gの小さな変位でも大きな引力が働くため、変異した弦粒子Gは強く引き戻される。その結果、弦120の振幅は小さくなったり、弦120の振動数(すなわち生成される音データのピッチ)は高くなったりするなど、各種音響効果がある。また、上記比例定数を、弦120ごとに異なる値を設定することが出来るようにしても良い。
(7)上記実施形態においては、マウス20および多点コントローラ50を用いて各種設定を行う場合について説明したが、説明した操作を行うことができる手段であればどのような装置を用いても良い。また、マウス20または多点コントローラ50のいずれか一方を備えるとしても良い。
(8)上記実施形態のおける音響処理において、弦120の振動状態により生じる音に、その音が一定のディレイを伴って繰り返し生じるエコーの効果を付与しても良い。その場合、弦120が設けられた空間の面積(3次元では体積に相当)が大きいほど、その衝突により生じる音データにエコーが大きく生じるようにしても良い。
また、エコーのほかに音が空間の反射で響く残響効果、音の位相やピッチや音質などが僅かにずらされて複合されるコーラス効果、音を歪ませるディストーション効果など各種音響エフェクトを付与することにより、弦120の振動が種々の空間で起こっているかのような音データを生成させても良い。例えば、水中のような響き、コンサートホールのような響きなどを生成することが可能である。これらの音響効果のいずれを選択するか、あるいは、選択した音響効果の量(音データに効果を付与する割合)についても弦などの規制要素の形状に応じて設定することができる。
(9)上記実施形態においては、仮想粒子200同士の衝突では音を出さない場合について説明したが、仮想粒子200同士の衝突によっても音データを生成してもよい。
(10)上記実施形態においては、放り込みエリア110およびスプリンクラ150から出現する仮想粒子200の出現パターンは、ランダムである場合について説明した。しかし、その出現パターンの頻度・出現箇所は一定でも良いし、一定の周期性があっても良い。また、仮想粒子200ごとに初速度は均一である場合について説明したが、仮想粒子200間でばらつきを持たせても良い。要は、仮想粒子200の出現パターンにランダム性を持たせるように、仮想粒子200の出現に係るいずれかのパラメータにランダム性が付与されるようにすれば良い。
(11)上記実施形態においては、各仮想粒子200はその特性が均一である場合について説明した。しかし、その特性を仮想粒子200ごとに変えてもよい。例えば仮想粒子200を放出した放り込みエリア110やスプリンクラ150ごとに仮想粒子200の特性を変えても良い。その場合、仮想粒子200の色など表示を変えるなどすれば良い。
(12)上記実施形態においては、仮想粒子200が弦120を構成する弦粒子Gに対して接近しても、そのまま通り抜ける場合について説明したが、弦粒子Gと仮想粒子200との相互作用においても、仮想粒子200同士の相互作用と同様に衝突および跳ね返りが発生するようにしても良い。
(13)上記実施形態においては、弦120やウォール160など、各種オブジェクトの各々がユーザにより設定される場合について説明したが、予め記憶されたデータに基づいて規制要素が設定されるようにしても良い。
(14)上記実施形態においては、仮想空間100に設定され、仮想粒子200の運動に影響を与える力として、重力および抵抗力について設定する場合について説明したが、それらの力に代えて、仮想空間100内に磁界や電界を設定しても良い。その場合、仮想粒子200に磁性または電気を持たせて、それら磁界や電界から力を受けるような演算を行うように、コンピュータプログラムを作っておけばよい。
(15)上記実施形態においては、弦120を構成する弦粒子Gは、仮想粒子200と衝突または接触することにより仮想粒子200から力を受ける場合について説明したが、弦粒子Gおよび仮想粒子200の両者を荷電させる、または両者に磁性を持たせることにより、接触しなくても力(引力・斥力)を受けるようにしても良い。
(16)上記実施形態においては、初期設定処理において設けられた放り込みエリア110またはスプリンクラ150のみを音データ生成処理において利用する場合について説明したが、音データ生成処理の最中に追加しても良い。その場合、音データ生成処理の最中に、初期設定処理において放り込みエリア110またはスプリンクラ150を設定した場合と同様の処理を行うことで設定され、それらは設定されるとすぐに仮想粒子200を放出するようにすれば良い。
(17)上記実施形態においては、仮想粒子200を出現させるための手段として、放り込みエリア110およびスプリンクラ150について説明した。しかし、仮想粒子200を出現させるための手段はそれらの手段に限定されず、回転しないことを除きスプリンクラ150と同様の構成を有する手段や、一点から仮想粒子200が沸き出して全方位に向けて放出されるように出現する手段などを設けても良い。
(18)上記実施形態においては、弦の振動を減衰させる減衰力の大きさを規定するパラメータとして、仮想空間100に設定された抵抗力の比例定数を用いた。しかし、減衰力を規定するパラメータを仮想空間100における抵抗力とは別途設定することが出来るようにしても良い。また、弦ごとに該パラメータを変化させても良い。
(19)上記実施形態においては、各弦粒子Gの変位の時間変化を元に波形を生成し、生成した波形を全ての弦粒子Gについて重ね合わせて音データを生成する場合について説明した。しかし、弦粒子Gの変位から音データを生成するアルゴリズムは、上記実施例に限定されない。例えば、弦粒子Gの変位量のn乗(nは様々に設定可能とする)に比例させた値を変位量に代えて演算に用いたり、その際、値の正負については元の変位量の符号に一致させたりする、などの演算を用いても良い。また、上記実施形態においては、生成した波形データをそのまま用いて音データとする場合について説明したが、生成した波形データを所望のピッチと音量に変換した音データを生成するようにしても良い。
(20)上記実施形態においては、図13に示されるように、弦粒子Gは振動静止時には相互に接触しているが、変位すると互いに離れるため、モニタ30画面上の表示では弦120は微視的には断裂して見えることになる。その場合、相互に離れた弦粒子Gの間を補間して弦120がなめらかにつながっているように表示する処理を行っても良い。上記は、変形例(4)に示した面125についても同様である。
(21)上記実施形態においては、弦120を弦粒子Gの集合体として構成し、各粒子の挙動を演算することにより総体として弦の振動状態を演算する場合について示した。しかし、弦120を材質や張力や断面積が指定された弦の物理学的な特性に基づいて、仮想粒子200が衝突した場合に生じる弦の振動状態をコンピュータシミュレーションすることにより音データを生成するようにしても良い。上記は、変形例(4)に示した面125についても同様である。
(22)上記実施形態における仮想空間100を満たしている媒質は気体に限定されず、液体や固体であっても良いし、真空であっても良い。例えば仮想空間100を満たしている媒質が液体である場合、移動する仮想粒子200にはたらく抵抗力を気体の場合よりも大きく設定し、音が水中を伝わっているかのような音響効果を音データに付与するなどしても良い。また、それと同時に仮想粒子200の体積と仮想空間100を満たす液体の密度に応じて算出される「浮力」を仮想粒子200の軌道演算に反映させるようにしても良い。
(23)上記実施形態においては、仮想粒子200と弦粒子Gの「相互作用」および仮想粒子200同士の「相互作用」の一態様として、衝突について説明した。しかし、それらオブジェクト同士の相互作用は、衝突に限定されるものではない。例えば、仮想粒子200同士の距離に応じてはたらく力(引力・斥力など)を設定し、制御部101は該力に基づいて音データを生成するようにしてもよい。例えば仮想粒子200同士が相互に近接した場合には、距離に反比例した斥力が働くとの設定がなされた場合、仮想粒子200の近傍を他の仮想粒子200が通り過ぎると、通り過ぎた仮想粒子200の軌道は斥力により曲げられるが、その際に働いた斥力を表す音データを斥力の大きさに応じて生成するなどしても良い。
(24)上記実施形態においては、仮想空間100内に設けられたオブジェクト同士の相互作用に応じて音データが生成される場合について説明した。しかし、オブジェクト同士が相互作用していない場合においてもオブジェクトが音データを生成するようにしても良い。例えば、仮想空間100を満たす媒質やウォール160が、上記実施形態における仮想粒子のような粒子で構成されているとした場合に、該粒子が定常状態において例えば振動しており、該振動状況に応じて音データを生成するようにしても良い。その場合、個々の粒子は予め定められた固有振動数で振動しており、該固有振動数に基づいて音データが生成されるようにしても良い。また別の例では、それら粒子が存在するだけでその粒子の総数に応じて音データが生成されるようにしてもよい。
(25)上記実施形態においては、仮想粒子200同士、および仮想粒子とウォール160とが衝突した際の跳ね返り係数は1である場合について説明したが、係数の値は1に限定されず、ユーザにより所望の値に設定されていれば良い。
(26)上記実施形態においては、弦粒子Gの間に働く引力の大きさについては、弦粒子G同士の距離に、予め設定された比例定数で比例する場合について説明した。しかし、該引力の大きさは、弦粒子G同士の距離が遠くなるほど大きくなるように設定されていれば良い。また、該引力の大きさを調整することができるように、例えば振動体設定処理において弦粒子Gの間に働く引力に係るパラメータを設定できるようにしても良い。また、該パラメータを弦120ごとに異なる値に設定することができるようにしても良い。
(27)上記実施形態においては、弦120を弦粒子Gの集合体でモデル化する場合について説明した。しかし、弦120を糸状の構造(通常の弦)としてシミュレーションを行っても良い。その場合、弦120は、2つの仮想粒子200の間に弦が張設されることにより構成されていても良い。該張設された弦には、材質(密度)、長さ、径(断面積)、張力、弦の固有振動数などの各種パラメータが設定可能であり、該パラメータに基づく公知の物理振動シミュレーションにより振動の態様を演算するようにしても良い。
また、上記変形例(4)においては、面125を面粒子Mの集合体でモデル化する場合について説明した。しかし、面125を粒子の集合体としてモデル化するのではなく、膜状の構造としてシミュレーション演算を行っても良い。その場合、面125は、枠状のオブジェクトの内側に膜が張設されることにより構成されていても良い。該張設された膜には、材質(密度)、厚さ、径(表面積)、張力、面の固有振動数などの各種パラメータが設定可能であり、該パラメータに基づく公知の物理振動シミュレーションにより振動の態様を演算するようにしても良い。
上記のようにすれば、弦120や面125から生成される音を更に多様に制御することができる。
(28)上記実施形態においては、弦120や面125の物理的パラメータを制御することにより生成される音を制御する場合について説明した。しかしその逆に、ユーザにより指定される音に応じて、弦120および面125に設定される物理的パラメータが制御されるようにしても良い。
例えば、ROM103には、種々の音に対応付けて、該音を弦120または面125に生成させるための各種パラメータが書き込まれたテーブルが格納されている。そして、弦120に対して、例えば高いピッチの音が指定された場合には、該音を生成するためのパラメータが読みだされ弦120または面125に設定される。具体的には、該弦120を構成する弦粒子G同士の粒子間力が大きく(弦の張力が大きく)設定されたり、弦粒子Gの数が少なく(弦の長さが短く)設定されたり、面粒子Mの数が少なく(振動面の面積が小さく)設定されたりする。
なお、ユーザが鍵盤楽器に設けられる鍵盤(キーボード)を操作することによって音を指定できるようにしても良い。この場合は、音高を指定するための鍵を複数有する鍵盤を音データ生成装置10に設ける構成としてもよく、また、鍵盤を備える音高指定装置を音データ生成装置10と接続するようにしてもよい。この場合、ユーザが鍵盤に含まれるいずれかの鍵を押下すると、鍵盤が操作された内容に応じた信号を出力する。そして、音データ生成装置10は、鍵盤からの信号に応じて押下された鍵に対応する音を特定し、特定した音に対応するパラメータが弦120または面125に設定される。
なお、上記設定された物理的パラメータに応じて、モニタ30における弦120や面125の表示態様を変更しても良い。例えば、上記の例であれば、高いピッチの音が指定された場合には、弦120が短く表示されたり、面125の面積が小さく表示されたりしても良い。
なお、本変形例の記載内容を、上記変形例(27)に記載された弦および面に適用しても良い。一例を取り上げて説明すると、ユーザにより上記変形例(27)における弦に対して高いピッチの音が指定されると、例えば弦の張力が高く設定されたり、弦の径(断面積)が小さく設定されたりするといった具合である。その場合、モニタ30画面においては、弦の振幅が小さくなるように表示されたり、弦が細く表示されたりしても良い。
(29)上記実施形態においては、仮想粒子200、弦粒子G、および面粒子M(以下互いに区別しない場合には、粒子と総称する)を区別せずにモニタ30に表示する場合について説明した。しかし、それらの粒子を互いに異なる態様で表示しても良い。例えば、仮想粒子200、弦粒子G、および面粒子Mの間で色や形状を異ならせても良い。ただし、粒子の形状の表示態様を粒子間で異ならせた場合においても、表示態様にかかわらず、それらの粒子の形状が同じであるとして、それら粒子の運動状態(弦120および面125の振動態様)を演算しても良い。そのようにすれば、粒子の種類を区別して表示することができると共に、演算の負荷を抑えることが出来る。
また、弦粒子Gについては、個々の粒子を表示せず、例えば粒子の中心をつなぎ合わせた折れ線や、該折れ線をスムージングした曲線などを代わりに表示しても良い。また、面粒子Mについても、個々の粒子を表示せず、面125の領域を示す模様や色を表示するなどしても良い。
(30)上記実施形態においては、仮想粒子200、弦粒子G、および面粒子Mに設定可能なパラメータとして、体積、質量を、仮想粒子200に設定されるパラメータとして、跳ね返り係数、磁性、電荷を、弦粒子G、および面粒子Mに設定されるパラメータとして、引力(粒子間力)を例示した。しかし、設定可能なパラメータ種はこれらのパラメータに限られるものではない。以下に挙げるパラメータを始めとした種々のパラメータが設定可能であるとしても良い。
(a)材質
粒子の材質を、例えば、木材、金属、ゴム、ガラスなど複数の選択肢から選択可能であるようにしても良い。その場合、各材質に対して、跳ね返り係数など他のパラメータ値を対応付けたテーブルをROM103に格納しておき、選択された材質に応じて該パラメータ値が読み出されて設定されるようにしても良い。また、仮想粒子200同士の衝突によっても音を生成する場合(変形例(9))に、各材質に対して波形データを対応付けたテーブルをROM103に格納しておき、選択された材質に応じて波形データが読み出されて音データが生成されるようにしても良い。
(b)形状・大きさ
粒子は、球の他、例えば直方体(モニタ表示は長方形)など他の形状であっても良い。また、粒子の大きさが、球の径や直方体の辺の長さなどにより指定されるようにしても良い。
(c)内部構成
粒子は内部の材質が一様であるとしても良いし、一様ではないとしても良い。例えば、球状の粒子において重心を球の中心からずらすことにより、球の動きや跳ね返りの態様を多様に変化させることも可能である。
(d)色
粒子はモニタ30画面においてカラー表示されていても良い。その場合、各粒子の色は、粒子の特性に応じて表示されるとしても良い。例えば、放出されたスプリンクラ150ごとに仮想粒子200の色を変えるなどしても良い。
(e)拡散係数
上記実施形態においては、弦120を構成する各弦粒子Gに「減衰力」が加わり、該減衰力により弦120に生じた振動が減衰する旨を説明した。そして、該減衰力を規定するパラメータとして、仮想空間100に空間特性として設定された「抵抗力」の比例定数が用いられた。以上のように、弦120の減衰態様を、弦粒子Gの移動に伴う抵抗力により制御しても良い。しかし、弦粒子G間での振動の伝播を規定するパラメータとして、各弦粒子Gの振動が隣接する弦粒子Gに伝播する割合を示す「拡散係数」により制御するとしても良い。例えば、該拡散係数に大きな値が設定された場合、ある弦粒子Gに生じた振幅(エネルギー)は隣接する弦粒子Gへと効率良く伝播し、比較的長時間にわたり弦120は振動する。逆に拡散係数に小さな値が設定された場合、ある弦粒子Gが有する振幅(エネルギー)は隣接する弦粒子Gに伝播する際に大きな割合で減衰し、比較的短時間で弦120は振動を停止する。
(f)音
上記実施形態においては、弦120の振動状態に基づいて音データが生成される旨を説明したが、弦120に衝突した仮想粒子200の特性に基づいて音データを生成しても良い。
例えば、互いに異なる特性(色など)の仮想粒子200が仮想空間100に放出されており、仮想粒子200が衝突して弦120が振動した場合には、衝突した仮想粒子200の特性(色)に応じて、ROM103に予め格納された波形データを選択的に読み出して音データを生成しても良い。
また、別の態様では、予め仮想粒子200の特性に対して各種のエフェクト処理を対応付けておき、仮想粒子200が弦120に衝突した際には、弦120の振動状態に基づいて生成された音データに対して、衝突した仮想粒子200の特性に対応付けられたエフェクト処理を更に施して音データを生成しても良い。
(g)結合状態
上記実施形態においては、弦120を構成する弦粒子Gは、弦粒子G同士の引力により結合されている場合について説明した。しかし、弦粒子G同士が、仮想のバネにより結合されているとしても良い。上記変形例(4)の面125についても同様である。
音データ生成処理の最中のモニタ30の画面表示の一例を示した図である。 音データ生成システム1の全体構成を示した図である。 音データ生成装置10の構成を示した図である。 マウス20の外観を示した図である。 モニタ30の画面を示した図である。 多点コントローラ50の機能を説明するための図である。 制御プログラムの構成を示した図である。 モニタ30の画面表示の一例を示した図である。 規制要素の配置方法を説明するための図である。 空間特性の設定をするための画面表示を示した図である。 仮想粒子200の出現手段の設置方法を説明するための図である。 仮想粒子200の圧力について説明するための図である。 仮想粒子200と弦120の相互作用による弦120の振動状態制御方法を説明するための図である。 初期設定処理の流れを示したフローチャートである。 音データ生成処理の流れを示したフローチャートである。 振動体設定処理の流れを示したフローチャートである。 仮想粒子200と面粒子Mの相互作用による面125の振動状態制御方法を説明するための図である。
符号の説明
1…音データ生成システム、10…音データ生成装置、20…マウス、21…本体、22…ボタン、23…通信ケーブル、24…移動検知手段、30…モニタ、40…カーソル、50…多点コントローラ、51…通信ケーブル、52…タッチパネル、100…仮想空間、101…制御部、102…光ディスク再生部、103…ROM、104…RAM、105…I/O部、109…バス、110…放り込みエリア、120…弦、130…ホール、150…スプリンクラ、160…ウォール、200…仮想粒子、400…制御パネル。

Claims (11)

  1. 仮想粒子を仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
    前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
    振動体モデルを前記仮想空間に設ける振動体設定手段と、
    前記仮想粒子と前記振動体モデルとの相互作用に基づいて前記振動体モデルの振動状態を演算する振動状態演算手段と、
    前記振動状態演算手段の演算による前記振動体モデルの振動状態に基づいて音データを生成する音データ生成手段と
    を具備することを特徴とする音データ生成装置。
  2. 前記振動体設定手段は、複数の仮想振動体粒子が相互に連結され、前記仮想振動体粒子同士で引力が設定されている振動体モデルを設定すると共に、
    前記振動状態演算手段は、前記仮想粒子と前記振動体モデルを構成する仮想振動体粒子との相互作用に基づいて前記振動体モデルの振動状態を演算する
    ことを特徴とする請求項1に記載の音データ生成装置。
  3. 前記振動体モデルを構成する仮想振動体粒子と前記仮想粒子は同一の質量および体積および形態を有することを特徴とする請求項2に記載の音データ生成装置。
  4. 前記振動体モデルを構成する仮想振動体粒子同士に働く引力が、前記仮想振動体粒子同士の距離が遠くなるほど大きくなるように設定されていることを特徴とする請求項2または3に記載の音データ生成装置。
  5. 前記振動体モデルを構成する仮想振動体粒子には、該仮想振動体粒子の移動の方向とは逆向きに力が働くことを特徴とする請求項2ないし4のいずれかに記載の音データ生成装置。
  6. 前記振動体モデルは前記複数の仮想振動体粒子が直鎖状に連結されて構成され、その両端に位置する仮想振動体粒子の位置は前記仮想空間において固定されていることを特徴とする請求項2ないし5のいずれかに記載の音データ生成装置。
  7. 前記振動体モデルは前記複数の仮想振動体粒子が平面状に連結されて構成され、その最も周囲に位置する仮想振動体粒子の位置は前記仮想空間において固定されていることを特徴とする請求項2ないし5のいずれかに記載の音データ生成装置。
  8. 複数の音と、力の大きさを対応付けるテーブルを記憶する記憶手段と、
    前記複数の音のいずれかを指定する指示情報を受取る受取手段と、
    前記受取手段が受取った指示情報により指定される音に対応する力の大きさを前記テーブルを参照して特定し、前記仮想振動体粒子同士に働く引力を該特定した力に設定するパラメータ設定手段と
    を具備することを特徴とする請求項2ないし7のいずれかに記載の音データ生成装置。
  9. 前記振動体設定手段は、2つの第2の仮想粒子の間に仮想の弦が設けられた振動体モデルを設定すると共に、
    前記振動状態演算手段は、前記仮想粒子と前記仮想の弦との相互作用に基づいて、前記振動体モデルの振動状態を物理的シミュレーション演算する
    ことを特徴とする請求項1に記載の音データ生成装置。
  10. 複数の音と、張力を対応付けるテーブルを記憶する記憶手段と、
    前記複数の音のいずれかを指定する指示情報を受取る受取手段と、
    前記受取手段が受取った指示情報により指定される音に対応する張力を前記テーブルを参照して特定し、該特定した張力を前記仮想の弦に設定するパラメータ設定手段と
    を具備することを特徴とする請求項9に記載の音データ生成装置。
  11. コンピュータを
    仮想粒子を仮想空間に対して連続的に放出する演算を行う仮想粒子放出手段と、
    前記仮想粒子放出手段の演算により放出された各仮想粒子の軌道を、前記各仮想粒子同士の衝突を含めて演算する軌道演算手段と、
    振動体モデルを前記仮想空間に設ける振動体設定手段と、
    前記軌道演算手段の演算に従い、前記仮想粒子と前記振動体モデルとの相互作用に基づいて前記振動体モデルの振動状態を演算する振動状態演算手段と、
    前記振動状態演算手段の演算による前記振動体モデルの振動状態に基づいて音データを生成する音データ生成手段
    として機能させるプログラム。
JP2007275756A 2007-01-23 2007-10-23 音データ生成装置およびプログラム Expired - Fee Related JP4953085B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007275756A JP4953085B2 (ja) 2007-01-23 2007-10-23 音データ生成装置およびプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007012753 2007-01-23
JP2007012753 2007-01-23
JP2007275756A JP4953085B2 (ja) 2007-01-23 2007-10-23 音データ生成装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2008203818A true JP2008203818A (ja) 2008-09-04
JP4953085B2 JP4953085B2 (ja) 2012-06-13

Family

ID=39781345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007275756A Expired - Fee Related JP4953085B2 (ja) 2007-01-23 2007-10-23 音データ生成装置およびプログラム

Country Status (1)

Country Link
JP (1) JP4953085B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066655A (ja) * 2008-09-12 2010-03-25 Yamaha Corp 電子音楽装置及びプログラム
JP2010066656A (ja) * 2008-09-12 2010-03-25 Yamaha Corp 電子音楽装置及びプログラム
KR20160032602A (ko) * 2014-09-16 2016-03-24 삼성전자주식회사 화면 정보를 소리로 출력하는 방법 및 이를 지원하는 전자 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232679A (ja) * 1997-02-19 1998-09-02 Nippon Telegr & Teleph Corp <Ntt> 物理モデルによる補間音色合成方法
JP2004286917A (ja) * 2003-03-20 2004-10-14 Yamaha Corp 楽音形成装置
JP2005329126A (ja) * 2004-05-21 2005-12-02 Heiwa Corp 映像式遊技機
JP2006204888A (ja) * 2004-12-28 2006-08-10 Aruze Corp シミュレーションプログラムおよびシミュレータ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232679A (ja) * 1997-02-19 1998-09-02 Nippon Telegr & Teleph Corp <Ntt> 物理モデルによる補間音色合成方法
JP2004286917A (ja) * 2003-03-20 2004-10-14 Yamaha Corp 楽音形成装置
JP2005329126A (ja) * 2004-05-21 2005-12-02 Heiwa Corp 映像式遊技機
JP2006204888A (ja) * 2004-12-28 2006-08-10 Aruze Corp シミュレーションプログラムおよびシミュレータ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066655A (ja) * 2008-09-12 2010-03-25 Yamaha Corp 電子音楽装置及びプログラム
JP2010066656A (ja) * 2008-09-12 2010-03-25 Yamaha Corp 電子音楽装置及びプログラム
KR20160032602A (ko) * 2014-09-16 2016-03-24 삼성전자주식회사 화면 정보를 소리로 출력하는 방법 및 이를 지원하는 전자 장치
KR102329193B1 (ko) 2014-09-16 2021-11-22 삼성전자주식회사 화면 정보를 소리로 출력하는 방법 및 이를 지원하는 전자 장치

Also Published As

Publication number Publication date
JP4953085B2 (ja) 2012-06-13

Similar Documents

Publication Publication Date Title
US7091948B2 (en) Design of force sensations for haptic feedback computer interfaces
JP4675324B2 (ja) 力覚提示装置、力覚提示方法および力覚提示プログラム
JP2007527061A (ja) 多点接触の触知スクリーン上の仮想オブジェクトの操作によるコントローラー
JP4953085B2 (ja) 音データ生成装置およびプログラム
Marshall et al. Gesture control of sound spatialization for live musical performance
Santini Augmented Piano in Augmented Reality.
Paneva et al. Levitation simulator: prototyping ultrasonic levitation interfaces in virtual reality
JP4736094B2 (ja) 音データ生成装置およびプログラム
JP4858777B2 (ja) 音データ生成装置およびプログラム
Young et al. HyperPuja: A Tibetan Singing Bowl Controller.
JP5011563B2 (ja) 音データ生成装置およびプログラム
JP5099335B2 (ja) 音データ生成装置およびプログラム
JP5267905B2 (ja) 音データ生成装置およびプログラム
JP4953084B2 (ja) 音データ生成装置およびプログラム
JP2009103931A (ja) 音データ生成装置およびプログラム
JP5051838B2 (ja) 音データ生成装置およびプログラム
Dolhansky et al. Designing an expressive virtual percussion instrument
JP2009103933A (ja) 音データ生成装置およびプログラム
Passalenti et al. Haptic interaction with guitar and bass virtual strings
Howard et al. Force Feedback Gesture Controlled Physical Modelling Synthesis.
Gadd et al. Metamuse: a novel control metaphor for granular synthesis
Keenan A theatre wind machine as interactive sounding object
Kulpa QuBits, an interactive virtual reality project and compositional space for sound and image
Ariza The Dual-Analog Gamepad as a Practical Platform for Live Electronics Instrument and Interface Design.
Mitchusson et al. Usage of Physics Engines for UI Design in NexusUI

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100507

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120301

R150 Certificate of patent or registration of utility model

Ref document number: 4953085

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150323

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees