JP2005317115A - 情報処理装置および情報処理方法、並びに、プログラム - Google Patents

情報処理装置および情報処理方法、並びに、プログラム Download PDF

Info

Publication number
JP2005317115A
JP2005317115A JP2004134188A JP2004134188A JP2005317115A JP 2005317115 A JP2005317115 A JP 2005317115A JP 2004134188 A JP2004134188 A JP 2004134188A JP 2004134188 A JP2004134188 A JP 2004134188A JP 2005317115 A JP2005317115 A JP 2005317115A
Authority
JP
Japan
Prior art keywords
data
signal processing
audio data
information
application program
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
Application number
JP2004134188A
Other languages
English (en)
Inventor
Hideyuki Ono
秀行 小野
Osamu Shimoyoshi
修 下吉
Kiyoshi Aida
清 会田
Korenori Uchiumi
是紀 内海
Toshio Okochi
俊雄 大河内
Toshihiro Morita
利広 森田
Rie Usukura
理恵 臼倉
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2004134188A priority Critical patent/JP2005317115A/ja
Priority to US11/092,789 priority patent/US7461175B2/en
Priority to EP05252085A priority patent/EP1591884A3/en
Publication of JP2005317115A publication Critical patent/JP2005317115A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/10537Audio or video recording
    • G11B2020/10546Audio or video recording specifically adapted for audio data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Facsimiles In General (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】 標準プラグインを用いて、一般アプリケーションにより出力されるデータを信号処理する。
【解決手段】 一般アプリケーションプログラム101から再生されるオーディオデータは、複数のオーディオユーザモードドライバを管理するWinmm.dll102を介して、オーディオデータフック用dll103に供給されて、信号処理アプリケーションプログラム104に供給される。信号処理アプリケーションプログラム104は、オーディオデータフック用dll103とは独立したプロセスで動作するものであり、供給されたオーディオデータにエフェクトプラグインによる信号処理を施す。信号処理されたオーディオデータは、オーディオデータフック用dll103から、再度、Winmm.dll102に供給され、Wdmaud.drv105およびWDMオーディオドライバ106を介して、オーディオハードウェア107の処理により出力される。本発明は、パーソナルコンピュータに適用できる。
【選択図】図5

Description

本発明は、情報処理装置および情報処理方法、並びに、プログラムに関し、特に、出力する情報に効果を施す場合に用いて好適な情報処理装置および情報処理方法、並びに、プログラムに関する。
近年のパーソナルコンピュータの普及により、パーソナルコンピュータを用いて音楽を再生することが広く行われている。
ユーザは、パーソナルコンピュータに装着した記録媒体に記録されたオーディオデータ、または、パーソナルコンピュータの内部に記録されたオーディオデータを、音声再生機能を有するアプリケーションプログラムを用いて、再生し、楽しむことができる。
OS(Operating System)としてWindows(登録商標)を用いた場合、Windows(R)の標準となる音声出力関連の機能は、windows\system32フォルダのwinmm.dllというDLL(Dynamic Link Library)にまとめられおり、例えば、ゲームなどのアプリケーションプログラムの実行において、効果音が再生されるとき、アプリケーションプログラムはオーディオデータの再生命令をwinmm.dllに供給する。winmm.dllは、アプリケーションプログラムごとに設定されるオーディオデバイスに対応したユーザモードドライバに、オーディオデータの再生命令とオーディオデータを転送する。Windows(R)標準のユーザモードドライバには、例えば、Wdmaud.drvなどがある。
図1を用いて、OSとしてWindows(登録商標)を用いた場合のオーディオデータの再生について説明する。
ステップS1において、音声再生を行う一般的なアプリケーションプログラムは、オーディオデータの再生処理が発生したとき、Winmm.dllのwaveoutOpen関数を呼び出す。waveoutOpen関数は出力デバイスをオープンするための関数である。
ステップS2において、Winmm.dllは、ユーザモードドライバとして指定されているWdmaud.drvのwodMessageOpen関数を呼びだして、ドライバをオープンし、オーディオデータの転送と再生に必要なパラメータを設定する。
オープンシーケンスの終了後、ステップS3において、一般的なアプリケーションプログラムは、Winmm.dllのwaveoutWrite関数を呼び出す。
ステップS4において、Winmm.dllは、Wdmaud.drvのwodMessageWrite関数を呼びだして、オーディオデータを転送する。
ステップS3およびステップS4の処理は、オーディオデータの書き込みが終了するまで繰り返される。
オーディオデータの書き込み処理が終了した後、ステップS5において、一般的なアプリケーションプログラムは、Winmm.dllのwaveoutClose関数を呼び出す。
ステップS6において、Winmm.dllは、Wdmaud.drvのwodMessageClose関数を呼びだして、オーディオデータの再生処理を終了させる。
このとき、ソースとなるオーディオデータをそのままの状態で再生するのみならず、例えば、再生されるオーディオデータに様々な効果を付加することができるようにした技術がある。例えば、ソースとなるオーディオデータの特定の周波数帯域を強調することにより、音の欠落を補正し、サウンドの輪郭をはっきりさせたり、低音部を補正し、再生される音楽を迫力のあるものとしたり、中・高音部を補正し、ツヤのある音楽を再生することができるようにしたり、残響音効果をかけて、劇場やライブハウスなどの臨場感を感じることができるようになされている(例えば、非特許文献1)。
"バーチャル3DサラウンドソフトウェアQMAX II"、[online]、イージーシステムズジャパン、[平成16年3月22日検索]、インターネット、<URL: http://www.easy.co.jp/qmax2/index.html>
上述した従来のアプリケーションプログラムは、エフェクトパラメータを操作するためのUI(User Interface)を有し、ユーザの操作入力に基づいて、他のアプリケーションプログラムの処理により再生されているオーディオデータにエフェクトをかけることができるようになされている。以下、上述した従来のアプリケーションプログラムを、エフェクトパラメータ操作アプリケーションプログラムと称するものとする。
エフェクトパラメータ操作アプリケーションプログラムの処理により、一般アプリケーションプログラムが再生中のオーディオデータにエフェクトが施された後、エフェクトパラメータ操作アプリケーションプログラムを終了しても、一般アプリケーションプログラムにより再生中のオーディオデータはエフェクトがかかっている状態のまま出力される。すなわち、エフェクトパラメータ操作アプリケーションプログラムは、オーディオデータを直接処理するのではなく、オーディオデータを処理する処理モジュールに対して、音声処理のパラメータをコントロールしていることがわかる。
すなわち、図2に示されるように、一般アプリケーションプログラム1により再生されるオーディオデータは、オーディオデータをフックし、信号処理を行うことが可能なモジュールである、オーディオデータフックおよび信号処理モジュール2に供給される。オーディオデータフックおよび信号処理モジュール2は、エフェクトパラメータ操作アプリケーションプログラム3によりパラメータの設定を受け、供給されたオーディオデータにエフェクトを施す。そして、加工済みのオーディオデータが、ドライバ4に供給され、スピーカなどのハードウェアの動作が制御されて、音声出力される。
上述したように、再生中のオーディオデータにエフェクトをかけることができるアプリケーションプログラムは既に存在するが、エフェクトの種類は、それぞれのアプリケーションプログラム固有のものであり、例えば、DirectX PluginやVSTなどの標準エフェクトプラグインを利用することはできなかった。
上述したような標準プラグインを用いるために、オーディオドライバに見えるユーザモードドライバを構成し、そこにオーディオデータをフックし、プラグインを用いてエフェクトをかける方法があるが、ユーザモードドライバは再生アプリケーション(図2においては一般アプリケーションプログラム1)のスレッド内で実行されるので、プラグインのメモリ上の生存期間は、再生アプリケーション依存となる。
しかしながら、一般的に、エフェクトプラグインの実行においては、信号処理の途中状態やパラメータ設定を内部に保持する必要があるので、メモリ上の生存期間が再生アプリケーション依存でありコントロールできない状態であるとき、パラメータの操作性や信号処理結果に満足するものが得られない。
また、上述したように、従来用いられてきた、再生中のオーディオデータにエフェクトをかけることができるアプリケーションプログラムにおいては、オーディオデータを直接処理するのではなく、オーディオデータを処理する処理モジュールに対して、音声処理のパラメータをコントロールしているのみであるので、エフェクトがかけられたオーディオデータを基に表示内容が生成されるような、例えば、スペアナメータなどのUIの表示が困難となる。
本発明はこのような状況に鑑みてなされたものであり、標準プラグインを用いて、一般アプリケーションにより出力されるデータを信号処理することができるようにするものである。
本発明の情報処理装置は、所定のデータを取得し、データに対する信号処理を実行する信号処理実行手段と、信号処理実行手段が、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録手段と、データおよび情報を取得し、信号処理を行うか否かを判断して、データの出力先を制御するデータ制御手段とを備え、データ制御手段は、信号処理を行うと判断した場合、データおよび情報を記録手段に書き込み、信号処理実行手段は、記録手段に記録されたデータまたは情報を取得し、データに対する信号処理を実行することを特徴とする。
データを生成するデータ生成手段を更に設けさせるようにすることができ、信号処理実行手段には、データ生成手段の動作に依存しないで、信号処理に関する動作を実行させるようにすることができる。
データ制御手段には、記録手段に情報を記録するための記録領域が存在するか否かを基に、信号処理を行うか否かを判断する判断手段を設けさせるようにすることができる。
データには、データを個別に区別可能な区別情報が対応付けられるものとすることができ、データ制御手段には、データに対応付けられた区別情報を基に、信号処理を行うか否かを判断する判断手段を設けさせるようにすることができる。
データ制御手段には、信号処理実行手段による信号処理のためにデータの形式を変換して、記録手段にデータを書き込むデータ変換手段を設けさせるようにすることができる。
信号処理実行手段には、データを取得するデータ取得手段と、データ取得手段により取得されたデータに対する信号処理を実行する信号処理手段とを設けさせるようにすることができ、信号処理手段は、エフェクトプラグインによって構成されているものとすることができる。
信号処理実行手段には、信号処理手段により処理されたデータにスムージング処理を施すスムージング処理手段を更に設けさせるようにすることができる。
本発明の情報処理方法は、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録領域の生成を制御する記録領域生成制御ステップと、データに対して信号処理を行うか否かを判断する判断ステップと、判断ステップの処理によりデータに対して信号処理が行われると判断された場合、データおよび情報の、記録領域生成制御ステップの処理により生成が制御された記録領域への記録を制御する記録制御ステップと、記録制御ステップの処理により記録が制御されたデータおよび情報を基に、データに対する信号処理を実行する信号処理実行ステップと、信号処理実行ステップの処理により信号処理が施されたデータの出力を制御する出力制御ステップとを含むことを特徴とする。
本発明のプログラムは、コンピュータに、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録領域の生成を制御する記録領域生成制御ステップと、データに対して信号処理を行うか否かを判断する判断ステップと、判断ステップの処理によりデータに対して信号処理が行われると判断された場合、データおよび情報の、記録領域生成制御ステップの処理により生成が制御された記録領域への記録を制御する記録制御ステップと、記録制御ステップの処理により記録が制御されたデータおよび情報を基に、データに対する信号処理を実行する信号処理実行ステップと、信号処理実行ステップの処理により信号処理が施されたデータの出力を制御する出力制御ステップとを含む処理を実行させることを特徴とする。
本発明の情報処理装置および情報処理方法、並びに、プログラムにおいては、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録領域が生成され、データに対して信号処理を行うか否かが判断され、データに対して信号処理が行われると判断された場合、データおよび情報が記録領域へ記録され、記録されたデータおよび情報を基に、データに対する信号処理が実行され、信号処理が施されたデータが出力される。
本発明によれば、出力されるデータを信号処理した後に出力することができ、特に、標準プラグインを用いて、一般アプリケーションにより出力されるデータを信号処理することができる。
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が、本明細書に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
更に、この記載は、本明細書に記載されている発明の全てを意味するものでもない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
請求項1に記載の情報処理装置(たとえば、図3のパーソナルコンピュータ21)は、所定のデータ(例えば、一般アプリケーションプログラム101において再生されたオーディオデータ)を取得し、データに対する信号処理を実行する信号処理実行手段(例えば、図5の信号処理アプリケーションプログラム104、すなわち、図6信号処理部123)と、信号処理実行手段が、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録手段(例えば、図6の共有メモリ領域122)と、データおよび情報を取得し、信号処理を行うか否かを判断して、データの出力先を制御するデータ制御手段(例えば、図5のオーディオデータフック用dll103、すなわち、図6のデータフック処理部121)とを備え、データ制御手段は、信号処理を行うと判断した場合、データおよび情報を記録手段に書き込み、信号処理実行手段は、記録手段に記録されたデータまたは情報を取得し、データに対する信号処理を実行することを特徴とする。
データを生成するデータ生成手段(例えば、図5の一般アプリケーションプログラム101)を更に備えることができ、信号処理実行手段は、データ生成手段の動作に依存しないで、信号処理に関する動作を実行することができる。
データ制御手段は、記録手段に情報を記録するための記録領域が存在するか否かを基に、信号処理を行うか否かを判断する判断手段(例えば、図6の設定制御部141)を備えることができる。
データには、データを個別に区別可能な区別情報(例えば、ハンドル)を対応付けることができ、データ制御手段は、データに対応付けられた区別情報を基に、信号処理を行うか否かを判断する判断手段(例えば、図6の設定制御部141)を備えることができる。
データ制御手段は、信号処理実行手段による信号処理のためにデータの形式を変換して、記録手段にデータを書き込むデータ変換手段(例えば、図6のFIXED-FLOAT変換処理部144)を備えることができる。
信号処理実行手段は、データを取得するデータ取得手段(例えば、図6のデータ取得部166)と、データ取得手段により取得されたデータに対する信号処理を実行する信号処理手段(例えば、図6のエフェクト処理部167)とを備えることができ、信号処理手段は、エフェクトプラグインによって構成されるものとすることができる。
信号処理実行手段は、信号処理手段により処理されたデータにスムージング処理を施すスムージング処理手段(例えば、図6のスムージング処理部168)を更に備えることができる。
請求項8に記載の情報処理方法は、所定のデータ(例えば、一般アプリケーションプログラム101において再生されたオーディオデータ)を出力する情報処理装置(例えば、図3のパーソナルコンピュータ21)の情報処理方法であって、データ、または、データに対する信号処理を実行するために必要な情報を授受するために、データおよび情報を一時記録する記録領域(例えば、図6の共有メモリ領域122)の生成を制御する記録領域生成制御ステップ(例えば、図17のステップS187の処理、または、図18のステップS212の処理)と、データに対して信号処理を行うか否かを判断する判断ステップ(例えば、図17のステップS181またはステップS182の処理)と、判断ステップの処理によりデータに対して信号処理が行われると判断された場合、データおよび情報の、記録領域生成制御ステップの処理により生成が制御された記録領域への記録を制御する記録制御ステップ(例えば、図17のステップS184の処理、または、ステップS189の処理)と、記録制御ステップの処理により記録が制御されたデータおよび情報を基に、データに対する信号処理を実行する信号処理実行ステップ(例えば、図18のステップS215)と、信号処理実行ステップの処理により信号処理が施されたデータの出力を制御する出力制御ステップ(例えば、図16のステップS158乃至ステップS160の処理)とを含むことを特徴とする。
また、請求項9に記載のプログラムにおいても、各ステップが対応する実施の形態(但し一例)は、請求項8に記載の情報処理方法と同様である。
以下、図を参照して、本発明の実施の形態について説明する。
図3は、本発明を適用したパーソナルコンピュータ21のハードウェア構成を示すブロック図である。
パーソナルコンピュータ21のCPU31は、パーソナルコンピュータ21の動作の全体を制御する。また、CPU31は、内部バス33および入出力インターフェース32を介して、マウス51やキーボード52などからなる入力部34から、ユーザによる操作入力が入力されると、それに対応してROM(Read Only Memory)35に格納されているプログラムをRAM(Random Access Memory)36にロードして実行する。あるいはまた、CPU31は、HDD38にインストールされたプログラムをRAM36にロードして実行し、ディスプレイ53やスピーカ54などの出力部37に実行結果を出力させる。更に、CPU31は、ネットワークインターフェース40を制御して、外部と通信し、データの授受を実行する。
また、CPU31は、内部バス33および入出力インターフェース32を介して、必要に応じて、ドライブ39と接続され、ドライブ39に必要に応じて装着された磁気ディスク41、光ディスク42、光磁気ディスク43、または半導体メモリ44と情報を授受することができるようになされている。
次に、図4は、CPU31が実行可能なソフトウェアのソフトウェアスタックと、例えば、入力部34のマウス51、キーボード52、出力部37のディスプレイ53、スピーカ54、または、HDD38などを動作させるハードウェアとの関係を示す図である。
ハードウェア71は、具体的には、入力部34のマウス51、キーボード52、出力部37のディスプレイ53、スピーカ54、または、HDD38などを動作させるためのハードウェアであり、例えば、ビデオボード、サウンドボード、または、ネットワークボードなどがある。
BIOS(Basic I/O System)72は、OS74やアプリケーションプログラム76などがパーソナルコンピュータ21のデバイスにアクセスするための機能を提供するものであり、ファームウェアとも称され、ソフトウェアとは異なるものである。
ドライバーソフト73は、ハードウェア71を動作させるための専用ソフトウェアである。ドライバーソフト73には、例えば、マウス51を動作させるためのマウスドライバ、ディスプレイ53に画像を表示させるためのビデオカードを動作させるためのディスプレイドライバ、ネットワークインターフェース40を介して接続されている図示しないプリンタを動作させるためのプリンタドライバなどがある。
OS74は、パーソナルコンピュータ21の基本的な動作を制御しているものであり、各種資源を管理し、例えば、アプリケーションプログラム76が発生した命令を、ドライバーソフト73やBIOS72に伝える。また、OS74が、マルチタスクやマルチウィンドウ機能を持つ場合、は、アプリケーションプログラム76の実行コンテキスト(あるアプリケーションプログラム76が利用しているレジスタセットやメインメモリイメージ、ファイルハンドルなど)やGUIの部品などのソフトウェア資源の管理も行うようになされている。OS74には、例えば、Windows(R)95(商標)、Windows(R)98(商標)、Windows(R)NT(商標)、LINUX,OS/2(商標)などがある。本実施の形態においては、以下、OS74として、Windows(R)系のものが用いられている場合を例として説明する。
DLL(Dynamic Link Library)75は、いくつかの関数を書庫のようにまとめ、ソフトウェアの実行に必要な機能を独立したファイルとして共通化したものであり、通常はファイルそのものをDLLと称する。サブルーチンはプログラム内部のものだが、DLL75はプログラムとは別に実行時にロードされるものとして区別される。Windows(R)は多くの機能をDLL75として提供している。DLL75として提供されている機能は新たに開発せずにすむので、アプリケーションプログラム76の開発効率が高まり、更に、同じプログラム部品を複数のアプリケーションプログラム76で共有することができるので、ディスクやメモリの容量を節約することができる。
アプリケーションプログラム76は、パーソナルコンピュータ21を用いて、例えば、文書作成、表計算、データベース作成、電子メールの授受、ウェブページの閲覧など、それぞれの目的を実現するためのソフトウェアプログラムである。アプリケーションプログラム76は、その実行のためにDLL75を利用するようになされている場合、必要なDLL75が用意されていないと動作することができない。
すなわち、OS74であるWindows(R)においては、アプリケーションプログラム76が実行するプロセスが自分以外のコードの一部である関数を呼び出すための方法として動的リンクが用いられており、関数の実行可能コードがDLL75に記載されている。
次に、図5は、本発明を適用した信号処理アプリケーションプログラムが、一般的なアプリケーションプログラムとともに、パーソナルコンピュータ21のCPU31において実行される場合のソフトウェアモジュールおよびハードウェアモジュールの関係図である。ここでは、本発明を適用した信号処理アプリケーションプログラムがオーディオデータの信号処理を行う場合を例として説明する。図中、実線がオーディオデータの授受を示し、点線が、制御情報の授受を示す
一般アプリケーションプログラム101は、一般的なオーディオ再生機能を持つWindows(R)対応のアプリケーションプログラムであり、各種制御情報や、再生しようとするオーディオデータを、Winmm.dll102に供給することにより、オーディオ再生を実現する。
Winmm.dll102は、Windows(R)を構成するモジュールのうちの1つであり、複数のオーディオユーザモードドライバを管理するものである。Winmm.dll102は、他のモジュールから供給された制御信号およびオーディオデータを、レジストリの設定に基づいて、適切なオーディオユーザモードドライバに供給するようになされている。
オーディオデータフック用dll103は、一般アプリケーションプログラム101のプロセスの中で動作するユーザモードドライバであり、一般アプリケーションプログラム101からWinmm.dll102に供給されたオーディオデータを取得(フック)して、信号処理アプリケーションプログラム104に供給するとともに、信号処理されたオーディオデータの供給を受け、信号処理アプリケーションプログラム104において出力先のドライバとして設定されているユーザモードドライバ(ここでは、Wdmaud.drv105)にオーディオデータを供給して再生出力させるために、信号処理されたオーディオデータを、再度、Winmm.dll102に供給するものである。
オーディオデータフック用dll103を、一般アプリケーションプログラム101のプロセスの中で動作させ、一般アプリケーションプログラム101からWinmm.dll102に供給されたオーディオデータを取得させるためには、レジストリを設定する必要がある。すなわち、オーディオデータフック用dll103を、Windows\System32の下に記憶させ、レジストリキー(ここでは、OSがWindows(R) NTである場合のレジストリキーを例とする)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32に、wavという文字列値を作成し、そこにオーディオデータフック用dll103に対応するファイル名を記述することにより、オーディオデータフック用dll103をユーザモードドライバとして追加して認識させる。なお、文字列値wavが既にある場合は文字列値wav1を作成し、文字列値wav1が既にある場合は文字列値wav2を作成するものとする。
以上の作業により、Windows(R)からはオーディオデータフック用dll103がオーディオデバイスとして認識され、実行されるそれぞれのアプリケーションソフトウェアからは1つのオーディオデバイスとして認識されるようになり、オーディオデータフック用dll103は、例えば、Windows(R)の一般的な設定画面(例えば、「サウンドとオーディオデバイスのプロパティ−オーディオ−既定のデバイス」)において、オーディオデバイスとして表示されるようになる。そして、一般アプリケーションプログラム101が、再生用のユーザモードドライバとして、オーディオデータフック用dll103を選択して設定することにより、一般アプリケーションプログラム101からWinmm.dll102に供給されたオーディオデータを、オーディオデータフック用dll103が取得することができるように設定される。
信号処理アプリケーションプログラム104は、オーディオデータフック用dll103から供給されたオーディオデータにエフェクトプラグインによる信号処理を施し、再度、オーディオデータフック用dll103に供給する。オーディオデータフック用dll103に供給されたエフェクト処理後のオーディオデータは、信号処理アプリケーションプログラム104において出力先ドライバとして設定されているユーザモードドライバに供給される。すなわち、信号処理アプリケーションプログラム104において、出力先ドライバとしてWdmaud.drv105が設定されているとき、エフェクト処理後のオーディオデータは、オーディオデータフック用dll103から、Winmm.dll102を介して、Wdmaud.drv105に供給される。出力先ドライバの設定については後述する。
また、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103とは独立したプロセスで動作するものである。すなわち、一般アプリケーションプログラム101とは独立したプロセスで動作するものであるので、エフェクトプラグインによる信号処理において、信号処理の途中状態やパラメータ設定を内部に保持するときのメモリ上の生存期間を、一般アプリケーションプログラム101の起動に依存せずにコントロールすることができる。更に、信号処理アプリケーションプログラム104は、Windows(R)のログオン時、自動起動され、ログオフまで常駐されるものとしても良い。
Wdmaud.drv105は、Windows(R)の標準のオーディオユーザモードドライバであり、供給されたオーディオデータをWDMオーディオドライバ106に供給する。WDMオーディオドライバ106は、オーディオハードウェア107と直接データをやり取りするカーネル(Kernel)モードドライバである。オーディオハードウェア107は、例えば、図3の出力部37のスピーカ54により音声出力を行うためのサウンドボードに対応するものであり、オーディオ出力のためのハードウェアである。
次に、図6は、図5のオーディオデータフック用dll103と、信号処理アプリケーションプログラム104が実行されている場合に実現可能な機能について説明するための機能ブロック図である。
すなわち、図6においては、データフック処理部121は、オーディオデータフック用dll103が実現可能な機能であり、信号処理部123は、信号処理アプリケーションプログラム104が実現可能な機能であり、共有メモリ領域122は、図5のオーディオデータフック用dll103と、信号処理アプリケーションプログラム104が実行されている場合に、その処理において用いられるRAM36の記憶領域である。
データフック処理部121の設定制御部141は、Winmm.dll102から、所定の関数を呼び出された場合、例えば、共有メモリ領域のフォーマットエリア151が設定されているか否か、または、既に信号処理部123がオーディオデータを処理中であるか否かなど、処理実行のために必要な各種の情報を基に、データ取得部142、出力制御部143、FIXED-FLOAT変換処理部144、リミッタ制御部145、および、FLOAT-FIXED変換処理部146の動作を制御し、必要な情報を、共有メモリ領域122のフォーマットエリア151に書き込む。
データ取得部142は、Winmm.dll102から供給されるオーディオデータを取得し、出力制御部143に供給する。出力制御部143は、設定制御部141の制御にしたがって、供給されたオーディオデータを、共有メモリ領域122のデータエリア152に書き込むためにFIXED-FLOAT変換処理部144に供給するか、または、Winmm.dll102に出力する。
FIXED-FLOAT変換処理部144は、出力制御部143から供給された、整数として表されたオーディオデータを、浮動小数に変換する。これは、一般アプリケーションプログラム101から供給されるオーディオデータは、整数として表されているが、信号処理部123における後述するエフェクト処理部167での演算処理が浮動小数で行われるため、浮動小数に変換する必要があることとともに、浮動小数に変換することで、元のオーディオデータのビット長を信号処理部123で考慮する必要がなくなるためである。
リミッタ処理部145は、浮動小数で表された処理済のオーディオデータを、データエリア152から読み出し、後述するFLOAT-FIXED変換処理部146の処理により、オーディオデータの形式を整数に戻す場合にオーバーフローしてしまうことを防止するためにリミッタ処理(すなわち、所定の最大値および最小値を超えた場合、一律に、所定の最大値および最小値に値を丸める処理)を施す。FLOAT-FIXED変換処理部146は、浮動小数で表され、リミッタ処理が施された処理済のオーディオデータを、もとのビット長で表された整数値に戻し、出力制御部143に供給する。
共有メモリ領域122のフォーマットエリア151は、データフック処理部121と信号処理部123とで、例えば、オーディオデータのサンプリング周波数、チャンネル数、出力デバイス名、オーディオデータの大きさなどの、制御データや設定データを授受するために設けられる記憶領域である。フォーマットエリア151は、信号処理部123の機能が有効となっているとき、後述する信号処理部123の設定制御部163の処理により生成される。データエリア152は、データフック処理部121と信号処理部123とで、オーディオデータを授受するために設けられる記憶領域である。
信号処理部123の操作入力取得部161は、入力部34から入力されるユーザによる操作入力を、表示制御部162、設定制御部163、および、エフェクト設定部164に供給する。
表示制御部162は、ユーザに操作入力を促すための各種GUI(Graphic User Interface)の表示を制御するものであり、例えば、図7乃至図9に示されるGUIを出力部37のディスプレイ53に表示させる。
図7は、ユーザが信号処理部123(すなわち、信号処理アプリケーションプログラム104)の設定を行うために表示される設定ウィンドウ181の表示例を示す図である。
ボタン191は、信号処理部123が処理を行うか否かをユーザが指令するためのボタンであり、このボタン191上に表示されている文字が、図7に示されているように「ON」であるとき、信号処理部123は、処理を実行し、このボタン191上に表示されている文字が「OFF」であるとき、信号処理部123は、処理を実行しない。信号処理部123が、処理を実行するように設定されている場合、共有メモリ領域122にフォーマットエリア151が作成される。信号処理部123が、処理を実行しない場合、共有メモリ領域122にフォーマットエリア151が作成されないので、データフック処理部121の設定制御部141は、出力制御部143を制御して、供給されたオーディオデータを、Winmm.dll102を介して、Wdmaud.drv105に供給する。
エフェクトプリセット名称設定ボックス192は、設定されているエフェクトプリセットの名称の一覧を表示可能なドロップダウンリストボックスである。エフェクトプリセットとは、エフェクトプラグインの並びおよびパラメータを記憶した一連の情報に、所定のプリセット名を関連付けて管理しているものであり、ユーザは、エフェクトプリセット名称設定ボックス192に表示されているエフェクトプリセット名称のうち、所望のものを選択することにより、登録済みのエフェクトプラグインの並びおよびパラメータを設定することが可能となる。
設定ボタン193は、更に詳細な設定を行うための、図8を用いて後述する設定画面を表示させるとき、ユーザにより選択されるボタンである。
テキストボックス194は、信号処理部123において信号処理を行うために設定されるエフェクトプラグイン(後述する図6のエフェクトプラグイン171−1乃至171−n)の名称を示すテキストボックスである。ボタン195は、テキストボックス194に記載されたエフェクトプラグインにより処理を実行するか否かを設定するためのボタンであり、このボタン195上に表示されている文字が、図7に示されているように「ON」であるとき、信号処理部123は、テキストボックス194に記載されたエフェクトプラグインを利用して、供給されたオーディオデータにエフェクトをかけ、このボタン195上に表示されている文字が「OFF」であるとき、信号処理部123は、テキストボックス194に記載されたエフェクトプラグインを利用しないようになされている。
変更ボタン196は、テキストボックス194に表示されているエフェクトプラグインを変更する場合に操作されるボタンであり、変更ボタン196が押下されたとき、例えば、利用可能なエフェクトプラグインの一覧が表示されたテキストボックスが表示され、ユーザが、テキストボックスより、所望のエフェクトプラグインを選択したとき、テキストボックス194に表示されているエフェクトプラグインが選択されたものに変更されるようになされている。詳細設定ボタン197は、テキストボックス194に表示されているエフェクトプラグインの詳細設定を行うために、例えば、図9に示されるような、エフェクトプラグイン自体が表示機能を有する詳細設定画面を表示させるために、ユーザにより選択されるボタンである。
図8は、図7を用いて説明した設定ウィンドウ181の設定ボタン193がユーザにより選択された場合に表示される設定画面201の一例を示す図である。
オーディオデバイス選択ボックス211は、信号処理部123により処理されたオーディオデータの出力先となるオーディオデバイス名を選択するためのドロップダウンリストボックスである。オーディオデバイス選択ボックス211には、オーディオデータの出力先として選択可能なオーディオデバイス(ユーザモードドライバ)名の一覧が表示され、ユーザは、オーディオデバイス選択ボックス211に表示されているもののうち、所望のものを選択することにより、信号処理部123により処理されたオーディオデータが出力されるオーディオデバイス、すなわち、図5を用いて説明した信号処理アプリケーションプログラム104からオーディオフック用dll103を介して、Winmm.dll102に供給されたオーディオデータの出力先(図5においては、Wdmaud.drv105)を設定することが可能となる。
チェックボックス212は、エフェクトの適用範囲をWindows(R)の既定のデバイスに設定するか否かを設定するためのものである。すなわち、上述したように、オーディオデータフック用dll103が、Windows(R)の既定のデバイスに設定されているとき、エフェクトの適用範囲は、オーディオデータフック用dll103に設定される。なお、同様の設定は、設定画面201を表示させる以外にも、Windows(R)に予め設けられている設定画面においても可能である。
フォルダ一覧リストボックス213は、図7を用いて説明した変更ボタン196が押下されたときに表示される、利用可能なエフェクトプラグインの一覧が表示されたテキストボックスに記載されるエフェクトプラグインの実体であるdllファイルなどのフォルダ群の一覧が表示されるものである。ユーザは、追加ボタン214を押下して、新たなフォルダをフォルダ一覧リストボックス213に追加したり、削除ボタン215を押下して、フォルダ一覧リストボックス213に記載されているフォルダのうち所望のものをリストから削除することができる。なお、フォルダ一覧リストボックス213に記載されているエフェクトプラグインの実体であるdllファイルなどのフォルダ群は、ここで設定されることにより、例えば、RAM36のプログラム実行領域などにコピーされるのではなく、ファイルパスが設定されるのみである。
再読み込みボタン216は、フォルダ一覧リストボックス213に記載されているフォルダ群が変更された場合、変更されたフォルダ群を再読み込みし、図7を用いて説明した設定ウィンドウ181において、変更ボタン196が押下されたときに表示される、利用可能なエフェクトプラグインの一覧が表示されたテキストボックスに記載される情報を更新するために選択されるボタンである。
OKボタン217は、設定画面201の上述したそれぞれの設定の変更を確定し、設定画面201の表示をやめて、図7を用いて説明した設定ウィンドウ181を再び表示させる場合にユーザにより選択されるボタンである。キャンセルボタン218は、設定画面201の上述したそれぞれの設定の変更をキャンセルし、設定画面201の表示をやめて、図7を用いて説明した設定ウィンドウ181を再び表示させる場合にユーザにより選択されるボタンである。
次に、図9は、図7を用いて説明した設定ウィンドウ181の詳細設定ボタン197が押下された場合、テキストボックス194に表示されているエフェクトプラグインの詳細設定を行うために表示される、エフェクトプラグイン自体が表示機能を有する詳細設定画面231について説明するための図である。
すなわち、詳細設定画面231は、後述するエフェクト処理部167のエフェクトプラグイン171−1乃至エフェクトプラグイン171−nの種類に依存されるものである。また、信号処理部123に対応する信号処理アプリケーションプログラム104は、図2を用いて説明した従来のエフェクト操作アプリケーションプログラム3とは異なり、自分自身でオーディオデータに処理を施すものであるので、詳細設定画面231には、レベルメータ241−1乃至241−4を表示させるようにすることができる。
図6の説明に戻る。
設定制御部163は、操作入力取得部161より入力されたユーザの操作入力、および、フォーマットエリア151に記載された各種制御信号およびパラメータを基に、エフェクト設定部164を制御したり、データ取得部166、スムージング処理部168、および、データ出力制御部169を制御する。
エフェクト設定部164は、操作入力取得部161より入力されたユーザの操作入力、および、設定制御部163による制御に基づいて、エフェクト処理部167の設定および処理を制御し、必要に応じて、エフェクト処理部167の設定情報を、設定保持制御部165に供給する。設定保持制御部165は、エフェクト設定部164から供給されたエフェクト処理部167の設定情報を、HDD38に一時保存し、エフェクト設定部164の制御に基づいて、一時保持した設定情報を読み出して、エフェクト設定部164に供給する。
データ取得部166は、設定制御部163の制御にしたがって、共有メモリ領域122のデータエリア152に記憶されているオーディオデータを読み出して取得し、エフェクト処理部167に供給する。
エフェクト処理部167は、図7を用いて説明した設定ウィンドウ181、および、図8を用いて説明した設定画面201を参照したユーザが設定したエフェクトプラグイン171−1乃至エフェクトプラグイン171−n(nは正の整数)により、供給されたオーディオデータにエフェクトを施し、エフェクト処理後のオーディオデータをスムージング処理部168に供給する。エフェクトプラグイン171−1乃至エフェクトプラグイン171−nには、例えば、DirectX Pluginや、VST Pluginなどを用いることができる。
スムージング処理部168は、信号処理の構成が変わったときに、出力結果のオーディオデータが不連続となるために発生する“ポツッ”というノイズを防止するためのスムージング処理を実行する。信号処理部123においては、図7を用いて説明した設定ウィンドウ181、および、図8を用いて説明した設定画面201を参照したユーザが、エフェクトプラグイン171−1乃至エフェクトプラグイン171−nの構成や順番を変更したり、ユーザが指定したエフェクトの処理をバイパスすることができるようになされているので、そのとき、出力結果のオーディオデータが不連続となってしまう。このときノイズが発生してしまうのを抑制するため、エフェクト処理部167により処理されたオーディオデータは、スムージング処理部168によりスムージング処理が施されて、データ出力制御部169に出力される。
スムージング処理部168は、図10に示される回路により実行されるスムージング機能を有する。図10において、x[n]はスムージング処理部168に供給されるオーディオデータの離散データ、Ks[n]は係数であり、スムージング処理部168においては、例えば、Ks[n]=1とする。スムージング開始時において、n=0とすると、[Z-1]の初期値を0、Ks[0]=1として回路をスタートさせることにより、出力されるX[n]の音量はゆっくり立ち上がるので、出力されるオーディオデータのノイズが抑止される。
そして、データ出力制御部169は、設定制御部163の制御にしたがって、スムージング処理部168から供給されたオーディオデータを、共有メモリ領域122のデータエリア152に書き込む処理を実行する。
次に、図11のアローチャートを参照して、図5を用いて説明したソフトウェアモジュールの動作について説明する。
ステップS31において、一般アプリケーションプログラム101は、オーディオデータを、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に出力するための処理を開始するために、Winmm.dll102のwaveoutOpen関数を呼び出す。
ステップS32において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageOpen関数を呼びだす。
オーディオデータフック用dll103は、共有メモリ領域122のフォーマットエリア151が存在するか否かを確認し、サンプリング周波数およびチャンネル数を書き込むなどの処理(図13を用いて後述するオープン確認処理)を実行する。そして、ステップS33において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、オープンイベント(OpenEvent)を出力する。
信号処理アプリケーションプログラム104は、オープンイベントを受け、オープンのための処理(図14を用いて後述するオープン処理)を実行する。そして、ステップS34において、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103に、オープン終了イベント(OpenFinishedEvent)を出力する。
ステップS35において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105をオープンするために、Winmm.dll102のwaveoutOpen関数を呼び出す。
ステップS36において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageOpen関数を呼びだす。
ステップS31乃至ステップS36を用いて説明したオープン処理の詳細については、図12を用いて後述する。
次に、ステップS37において、一般アプリケーションプログラム101は、オーディオデータを、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に書き込むために、Winmm.dll102のwaveoutWrite関数を呼び出す。
ステップS38において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageWrite関数を呼びだす。
オーディオデータフック用dll103は、信号処理アプリケーションプログラム104がオーディオデータを処理可能な状態であるか否かを確認し、共有メモリ領域122にインプットフォーマットおよびオーディオデータを書き込むなどの処理(図17を用いて後述する書き込み確認処理)を実行する。そして、ステップS39において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、インプットイベント(InputEvent)を出力する。
信号処理アプリケーションプログラム104は、インプットイベントを受け、ステップS40において、オーディオデータを取得し、エフェクトを施して、共有メモリ領域122に処理後のオーディオデータを書き込む処理(図18を用いて後述するデータエフェクト処理)を実行する。
そして、ステップS41において、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103に、アウトプットイベント(OutputEvent)を出力する。
ステップS42において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104から供給されたオーディオデータを、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105に出力するために、Winmm.dll102のwaveoutWrite関数を呼び出して、オーディオデータを供給する。
ステップS43において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageWrite関数を呼びだして、オーディオデータを供給する。
ライト処理は、オープン処理とクローズ処理との間で、一連のオーディオデータの処理が終了するまで繰り返される。
ステップS37乃至ステップS43を用いて説明したライト処理の詳細については、図16を用いて後述する。
次に、ステップS44において、一般アプリケーションプログラム101は、オーディオデータの書き込みの終了を、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に通知するために、Winmm.dll102のwaveoutClose関数を呼び出す。
ステップS45において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageClose関数を呼びだす。
オーディオデータフック用dll103は、信号処理アプリケーションプログラム104が、書き込み終了の通知の対象となるオーディオデータを処理していたか否かを確認する処理(図21を用いて後述するクローズ確認処理)を実行する。そして、ステップS46において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、クローズイベント(CloseEvent)を出力する。
そして、ステップS47において、信号処理アプリケーションプログラム104は、プラグインの終了処理を実行し、オーディオデータフック用dll103に、クローズ終了イベント(CloseFinishedEvent)を出力する。
ステップS48において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105に、オーディオデータの書き込みの終了を通知するために、Winmm.dll102のwaveoutClose関数を呼び出す。
ステップS49において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageClose関数を呼び出す。
ステップS44乃至ステップS49を用いて説明したクローズ処理の詳細については、図20を用いて後述する。
このような処理を行うことにより、一般アプリケーションプログラム101において出力されるオーディオデータに、例えば、DirectX Pluginや、VST Pluginなどのエフェクトプラグイン171−1乃至エフェクトプラグイン171−nを用いて効果を施し、出力することが可能となる。
すなわち、本発明を適用した信号処理アプリケーションプログラム104を利用して、一般アプリケーションプログラム101により出力されるオーディオデータにエフェクトを施すようにした場合、図1を用いて説明した従来における場合と比較して、図11におけるステップS32乃至ステップS35の処理、ステップS38乃至ステップS42の処理、および、ステップS45乃至ステップS48の処理が新たに加えられるものである。
次に、図12のアローチャートを用いて、オープン処理の詳細について説明する。
ステップS61において、一般アプリケーションプログラム101は、オーディオデータを、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に出力するための処理を開始するために、Winmm.dll102のwaveoutOpen関数を呼び出す(図11のステップS31の処理)。
ステップS62において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageOpen関数を呼びだす(図11のステップS32の処理)。このとき、Winmm.dll102は、WAVEFORMATEX構造体で、チャンネル数、サンプリング周波数、および、データのビット数などの情報を、オーディオデータフック用dll103に供給する。
ステップS63において、オーディオデータフック用dll103は、図13を用いて後述するオープン確認処理を実行する。そして、ステップS64において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、オープンイベント(OpenEvent)を出力する(図11のステップS33の処理)。
ステップS65において、信号処理アプリケーションプログラム104は、図14を用いて後述するオープン処理を実行する。そして、ステップS66において、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103に、オープン終了イベント(OpenFinishedEvent)を出力し、出力先として指定するデバイス名(そのデバイスをドライブするドライバ名)の情報を供給する(図11のステップS34の処理)。
ステップS67において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されたデバイス名(そのデバイスをドライブするドライバ名)を記憶する。そして、ステップS68において、オーディオデータフック用dll103は、指定されたドライバであるWdmaud.drv105をオープンするために、Winmm.dll102のwaveoutOpen関数を呼び出す(図11のステップS35の処理)。
ステップS69において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageOpen関数を呼びだす(図11のステップS36の処理)。
ステップS70において、Wdmaud.drv105は、オーディオデータの出力処理を、それぞれ個別に区別するためのハンドルを生成する。そして、ステップS71において、Wdmaud.drv105は、Winmm.dll102に、Open終了応答および生成したハンドルを通知する。
ステップS72において、Winmm.dll102は、一般アプリケーションプログラム101に、Open終了応答および生成したハンドルを通知する。
ステップS73において、一般アプリケーションプログラム101は、通知されたハンドルを記憶する。
ステップS74において、Winmm.dll102は、オーディオデータフック用dll103に、Open終了応答および生成したハンドルを通知する。
ステップS75において、オーディオデータフック用dll103は、オープン済みフラグを立て、通知されたハンドルを記憶して、オープン処理が終了される。
一般に、オーディオのユーザモードドライバは、同時に複数のアプリケーションからのオーディオデータ再生要求を受け付けることができる。つまり、1つのアプリケーションがあるユーザモードドライバをオープン中であっても、別のアプリケーションが同じユーザモードドライバをオープンすることができる。
しかし、信号処理部123のエフェクト処理部167が実行する信号処理は、その内容によっては過去の信号を利用して現在の信号を生成するような場合がある。具体的には、エフェクトの種類が「エコー」である場合、現在の音と過去の音が混ざった音が出力されるようになされている。つまり、信号処理部123のエフェクト処理部167が実行する信号処理(エフェクトプラグイン171−1乃至171−n)として、標準エフェクトプラグインを利用する場合、どういう信号処理がプラグインされてもよいように、様々な条件を考慮する必要がある。
すなわち、信号処理部123のエフェクト処理部167が実行する信号処理においては、連続したオーディオデータは、間に別のオーディオデータの演算が入ることなく連続して処理をするようにしなければならない。たとえ、離散的に処理をする場合においても、連続したデータの間に別のデータの演算をすることはできない。
したがって、信号処理アプリケーションプログラム104は、同時に複数のデータを処理することはできない。そこで、あるひとつのアプリケーションがオーディオデータフック用dll103をオープンしているときは、他のアプリケーションがオーディオデータフック用dll103をオープンしても、オープン自体は可能であるが、信号処理アプリケーションプログラム104の処理による信号処理は行われず、そのまま次の処理、すなわち、Winmm.dll102のwaveoutOpen関数の読み出し処理を行い、以下、ライト処理、およびクローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、Winmm.dll102の関数を読み出して、従来における場合と同様の処理によってオーディオデータを出力させるようになされている。
既にいずれかのアプリケーションによりオーディオデータフック用dll103がオープンされているか否かは、オープン済みフラグがたっているか否かによって判断可能であり、ライト要求およびクローズ要求が、オーディオデータフック用dll103を最初にオープンさせたオーディオデータによるものであるのか否かは、ハンドルが一致するか否かによって判断可能である。
次に、図13のフローチャートを参照して、オーディオデータフック用dll103がステップS63において実行する、オープン確認処理について説明する。
ステップS91において、オーディオデータフック用dll103が実現する機能である図6を用いて説明したデータフック処理部121(以下、同様であるので省略する)の設定制御部141は、オープン処理終了時に、図12のステップS75の処理において立てられるオープン済みフラグが既にたっているか否かを判断する。ステップS91において、オープン済みフラグがたっていると判断された場合、図6の信号処理部123の機能を実現する信号処理アプリケーションプログラム104(以下、同様であるので省略する)は、既に異なるオーディオデータの処理を実行中であるので、処理は、後述するステップS94に進む。
ステップS91において、オープン済みフラグがたっていないと判断された場合、ステップS92において、設定制御部141は、共有メモリ領域122にフォーマットエリア151が存在するか否かを判断する。信号処理アプリケーションプログラム104は、一般アプリケーションプログラム101の起動とは独立して起動されるものであるので、オーディオデータフック処理部121が機能していても、信号処理部123が機能していない(一般アプリケーションプログラム101が起動していない)場合がありうる。したがって、設定制御部141は、共有メモリ領域122にフォーマットエリア151が存在するか否かを基に、信号処理部123が機能している(一般アプリケーションプログラム101が起動している)か否かを判断する。ステップS92において、フォーマットエリア151が存在しないと判断された場合、信号処理部123が機能していないので、処理は、後述するステップS94に進む。
ステップS92において、フォーマットエリア151が存在すると判断された場合、ステップS93において、設定制御部141は、共有メモリ領域122のフォーマットエリア151に、サンプリング周波数、および、チャンネル数を書き込み、処理は、ステップS63に戻って、ステップS64に進み、信号処理アプリケーションプログラム104にオープンイベントが出力される。
ステップS91において、オープン済みフラグが立っていると判断された場合、または、ステップS92において、フォーマットエリア151が存在しないと判断された場合、ステップS94において、設定制御部141は、このオープン要求に対応するオーディオデータを、信号処理アプリケーションプログラム104で処理せずに、従来の処理によってオーディオデータを出力させるために、Winmm.dll102のwaveoutOpen関数を読み出す。そして、その後、ライト処理、およびクローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、Winmm.dll102の関数を読み出して、従来における場合と同様の処理によってオーディオデータを出力させて、処理が終了される(処理は、ステップS63に戻らない)。
以上説明した処理により、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104が、このオープン要求に対応するオーディオデータを処理することが可能な状態か否かを判断し、可能である場合、信号処理アプリケーションプログラム104にオープンイベントが出力することができるようになされている。
次に、図14のフローチャートを参照して、図12のステップS65において信号処理アプリケーションプログラム104が実行する、オープン処理について説明する。
ステップS111において、設定制御部163は、共有メモリ領域122を、自分自身のみが書き換え可能な状態とするために(オーディオデータフック処理部121によって書き換えられないように)ロックする。
ステップS112において、設定制御部163は、図8を用いて説明した設定画面201のオーディオデバイス選択ボックス211に設定された出力デバイス名を、共有メモリ領域122のフォーマットエリア151に書き込む。
ステップS113において、設定制御部163は、上述した図13のステップS93において、設定制御部141により、共有メモリ領域122のフォーマットエリア151に記載された情報である、サンプリング周波数、および、チャンネル数を取得する。
ステップS114において、設定制御部163は、サンプリング周波数は変更されたか否かを判断する。
本発明を適用した処理においては、様々な一般アプリケーションプログラム101が様々なサンプリング周波数でオーディオデータの再生を行うため、信号処理アプリケーションプログラム104は、様々なサンプリング周波数での信号処理の要求を受ける。しかしながら、多くのエフェクトプラグイン171−1乃至171−nは、オーディオデータの編集用アプリケーション向けに開発されたものであるため、サンプリング周波数が途中で変更されると、例えば、GUIが変更後のサンプリング周波数に合致したものとならなかったり、エラー処理をしてしまうなどの問題が発生してしまう場合がある。
ステップS114において、サンプリング周波数が変更されたと判断された場合、ステップS115において、図15のフローチャートを用いて後述する再構築処理が実行される。
ステップS114において、サンプリング周波数が変更されなかったと判断された場合、または、ステップS115の処理の終了後、ステップS116において、設定制御部163は、共有メモリ領域122のロックを解除して、処理は、ステップS65に戻って、ステップS66に進み、オープン終了イベントがオーディオデータフック用dll103に出力される。
このような処理により、信号処理アプリケーションプログラム104がオープンされる。
また、オープン処理の終了後、信号処理アプリケーションプログラム104が、既にいずれかのアプリケーションによってオープンされていることをユーザに通知するために、表示制御部162の処理により、例えば、Windows(R)の通知領域に、信号処理アプリケーションプログラム104の使用中を表すアイコンが表示される。
次に、図15のフローチャートを参照して、図14のステップS115において実行される、再構築処理について説明する。
設定制御部163は、サンプリング周波数が変更されたことをエフェクト設定部164に通知する。エフェクト設定部164は、ステップS131において、エフェクト処理部167のエフェクトプラグイン171−1乃至171−nの並びの順番(すなわち、供給されたオーディオデータに対して施されるエフェクトの順番)、および、全パラメータを含む設定ファイルを読み出し、設定保持制御部165を制御して、これらの情報を、ハードディスク38に保存させる。
ステップS132において、エフェクト設定部164は、エフェクト処理部167に現在構築されているエフェクトプラグイン171−1乃至171−nをメモリ上から、すなわち、RAM36からいったん破棄する。ここで、破棄とは、RAM36に展開されているエフェクトプラグインに対して積極的にダミーデータを上書きするなどしてその情報を消去してしまうことのみならず、エフェクト処理部167の処理のためにRAM36に展開されていたメモリ領域を参照しないものとして開放する(他の処理によって上書き可能な状態とする)ことも含むものである。
ステップS133において、エフェクト設定部164は、エフェクト処理部167にエフェクトプラグイン171−1乃至171−nを再構築(すなわち、内部に記憶されているエフェクトプラグインの実体のファイルパスを基に、RAM36にエフェクトプラグインの処理領域を再展開し、その領域を後述する処理の実行のために参照するものと設定)する。
ステップS134において、エフェクト設定部164は、再構築されたエフェクトプラグイン171−1乃至171−nを新しいサンプリング周波数で初期化する。
ステップS135において、エフェクト設定部164は、設定保持制御部165を制御して、ハードディスク38に保存された設定ファイルをロードさせる。
ステップS136において、エフェクト設定部164は、エフェクト処理部167のエフェクトプラグイン171−1乃至171−nに、エフェクトプラグインの並びおよびパラメータを再設定し、処理は、ステップS115に戻り、ステップS116に進む。
このような処理により、エフェクトプラグイン171−1乃至171−nのうちのいずれかに、サンプリング周波数を途中で変更すると問題が発生するエフェクトプラグインが存在する場合においても、問題を回避して利用することができる。また、編集アプリケーション用途に作られた既存のエフェクトプラグインを、そのままオーディオデータの再生のためのエフェクト処理に用いるようにすることができる。
なお、ここでは、再構築前の設定情報をハードディスク38に保存させるものとして説明しているが、設定情報は、ハードディスク38以外の、例えば、RAM36などに保存するようにしても良い。
また、ここでは、周波数の設定が変更された場合に、エフェクトプラグイン171−1乃至171−nの設定を再構築することについて説明したが、新たに設定されたサンプリング周波数が、エフェクトプラグイン171−1乃至171−nが対応していないサンプリング周波数であるとき、信号処理アプリケーションプログラム104の処理による信号処理は行われず、そのまま次の処理、すなわち、Winmm.dll102のwaveoutOpen関数の読み出し処理を行い、以下、ライト処理、およびクローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、Winmm.dll102の関数を読み出して、従来における場合と同様の処理によってオーディオデータを出力させるようになされている。
DirectX、VSTなどのエフェクトプラグインは、主にオーディオ編集用アプリケーションで利用されることを目的として作られているので、それらのうちの一部は、例えば、44.1kHz,48kHz,96kHzなど、よく使う限られたサンプリング周波数のみサポートしている。そのため、DirectX、VSTなどのエフェクトプラグインの中には、それらのサンプリング周波数以外では誤動作するものがある。したがって、対応するサンプリング周波数以外のサンプリング周波数での再生要求があった場合、信号処理アプリケーションプログラム104の処理による信号処理は行われず、そのまま次の処理、すなわち、Winmm.dll102のwaveoutOpen関数の読み出し処理を行い、以下、ライト処理、およびクローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、従来における場合と同様の処理によってオーディオデータを出力させるようになされている。
このようにすることにより、一般アプリケーションプログラム101の処理により、エフェクトプラグイン171−1乃至171−nが対応していないサンプリング周波数で再生が行われた場合であっても、エラーを発生させずにオーディオを出力することが可能である。また、ユーザは、現在出力されているオーディオが、信号処理アプリケーションプログラム104により処理されたものであるか否かを、Windows(R)の通知領域に表示される、信号処理アプリケーションプログラム104の使用中を表すアイコンが表示されているか否かによって認識することが可能である。
次に、図16のアローチャートを参照して、ライト処理の詳細について説明する。
ステップS151において、一般アプリケーションプログラム101は、オーディオデータを、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に書き込むために、Winmm.dll102のwaveoutWrite関数を呼び出す(図11のステップS37の処理)。
ステップS152において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageWrite関数を呼びだす(図11のステップS38の処理)。
ステップS153において、オーディオデータフック用dll103は、図17を用いて後述する書き込み確認処理を実行する。そして、ステップS154において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、インプットイベント(InputEvent)を出力する(図11のステップS39の処理)。
ステップS155において、信号処理アプリケーションプログラム104は、図18を用いて後述するデータエフェクト処理を実行する(図11のステップS40の処理)。
そして、ステップS156において、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103に、アウトプットイベント(OutputEvent)を出力する(図11のステップS41の処理)。
ステップS157において、オーディオデータフック用dll103は、図19を用いて後述するイベント待ち処理を実行する。
ステップS158において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104から供給されたオーディオデータを、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105に出力するために、Winmm.dll102のwaveoutWrite関数を呼び出して、オーディオデータを供給する(図11のステップS42の処理)。
ステップS159において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageWrite関数を呼びだして、オーディオデータを供給する(図11のステップS43の処理)。
ステップS160において、Wdmaud.drv105は、供給されたオーディオデータを、WDMオーディオドライバ106に出力し、オーディオハードウェア107の処理により、スピーカ54から出力させる。
ステップS151乃至ステップS160の処理は、一連のオーディオデータの処理が終了するまで繰り返し行われる。
ステップS161において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、プロセス終了イベント(ProcessFinishedEvent)を出力する。そして、ステップS162において、オーディオデータフック用dll103は、インプットデータエリア(後述する図17のステップS187の処理により作成される)を削除する。
ステップS163において、信号処理アプリケーションプログラム104は、アウトプットデータエリア(後述する図18のステップS212の処理により作成される)を削除して、ライト処理が終了される。
次に、図17のフローチャートを参照して、オーディオデータフック用dll103が図16のステップS153において実行する書き込み確認処理について説明する。
ステップS181において、設定処理部141は、自分自身のオープン済みフラグを確認し、信号処理アプリケーションプログラム104が、このライト要求と同じハンドルでオープン済みであるか否かを判断する。ステップS181において、同じハンドルでオープン済みではないと判断された場合、処理は、後述するステップS191に進む。
ステップS181において、同じハンドルでオープン済みであると判断された場合、ステップS182において、設定処理部141は、共有メモリ領域122にフォーマットエリア151が存在するか否か、すなわち、信号処理部123が機能している(信号処理アプリケーションプログラム104が正常に起動されているか)か否かを判断する。ステップS182において、共有メモリ領域122にフォーマットエリア151が存在しないと判断された場合、処理は、後述するステップS191に進む。
ステップS182において、共有メモリ領域122にフォーマットエリア151が存在すると判断された場合、ステップS183において、設定処理部141は、フォーマットエリア151を、自分自身のみが書き換え可能な状態とするために(信号処理部123によって書き換えられないように)ロックする。
ステップS184において、設定処理部141は、フォーマットエリア151に、オーディオデータのインプットフォーマットを書き込む。
ステップS185において、設定処理部141は、フォーマットエリア151のロックを解除する。
ステップS186において、設定処理部141の制御を受けたFIXED-FLOAT変換処理部144は、データエリア152を、自分自身のみが書き換え可能な状態とするために(信号処理部123によって書き換えられないように)ロックする。
ステップS187において、FIXED-FLOAT変換処理部144は、データエリア152に、信号処理部123に供給するデータを書き込むための領域であるインプットデータエリアを作成する。
ステップS188において、出力制御部143は、データ取得部142から供給されたオーディオデータを、信号処理部123に供給するために、FIXED-FLOAT処理部144に供給する。FIXED-FLOAT処理部144は、供給された整数表記のオーディオデータを浮動小数点形式に変換する。
ステップS189において、FIXED-FLOAT処理部144は、浮動小数に変換されたオーディオデータを、ステップS187において生成されたインプットデータエリアに書き込む。
ステップS190において、FIXED-FLOAT変換処理部144は、データエリア152のロックを解除し、処理は、図16のステップS153に戻って、ステップS154に進み、信号処理アプリケーションプログラム104にインプットイベントが出力される。
ステップS181において、同じハンドルでオープン済みではないと判断された場合、ステップS182において、共有メモリ領域122にフォーマットエリア151が存在しないと判断された場合、ステップS191において、設定処理部141は、このライト要求に対応するオーディオデータを、信号処理アプリケーションプログラム104で処理せずに、従来の処理によってオーディオデータを出力させるために、Winmm.dll102のwaveoutOpen関数を読み出す。そして、その後、クローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、Winmm.dll102の関数を読み出して、従来における場合と同様の処理によってオーディオデータを出力させて、処理が終了される(処理は、ステップS153に戻らない)。
以上説明した処理により、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104が、このライト要求に対応するオーディオデータを処理することが可能な状態か否かを判断し、可能である場合、インプットデータエリアを生成して、浮動小数に変換されたオーディオデータをインプットデータエリアに書き込み、信号処理アプリケーションプログラム104にインプットイベントを出力することができるようになされている。
これにより、複数の一般アプリケーションプログラム101でオーディオの再生を行った場合、はじめにユーザモードドライバであるオーディオデータフック用dll103をオープンした一般アプリケーションプログラム101がクローズ処理を行うまで、他のアプリケーションにより出力される音声には、信号処理アプリケーションプログラム104の処理によるエフェクトが施されることなく出力されるようになされている。これにより、複数のオーディオ再生指令を受け入れながらも、はじめにオーディオデータフック用dll103をオープンした一般アプリケーションプログラム101が出力するオーディオデータに対するエフェクト動作に悪影響を与えることがなく、更に、はじめにオーディオデータフック用dll103をオープンした一般アプリケーションプログラム101が出力するオーディオデータの処理の終了後、または、処理の停止中、他の一般アプリケーションプログラム101が出力するオーディオデータに対して、信号処理アプリケーションプログラム104の処理によるエフェクトを施すようにすることが可能となる。
次に、図18のフローチャートを参照して、図16のステップS155において、信号処理アプリケーションプログラム104が実行する、データエフェクト処理について説明する。
ステップS211において、信号処理部123のデータ取得部166は、共有メモリ領域122のデータエリア152のインプットデータエリアをオープンする。
ステップS212において、データ出力制御部169は、共有メモリ領域122のデータエリア152に、エフェクト処理済のオーディオデータを書き込むためのアウトプットデータエリアを作成する。
ステップS213において、データ取得部166またはデータ出力制御部169は、データエリア152を、自分自身のみが書き換え可能な状態とするために(オーディオデータフック処理部121によって書き換えられないように)ロックする。
ステップS214において、データ取得部166は、データエリア152のインプットデータエリアに書き込まれたオーディオデータを読み出し、エフェクト処理部167に供給する。
ステップS215において、エフェクト処理部167は、エフェクト設定部164により設定される各種設定に基づいて、供給されたオーディオデータにエフェクトを施し、スムージング処理部168に供給する。
ステップS216において、スムージング処理部168は、供給されたエフェクト処理済のオーディオデータに、図10を用いて説明したように、スムージングを施し、データ出力制御部169に供給する。
ステップS217において、データ出力制御部169は、エフェクトが施されたオーディオデータを、ステップS212において生成された、データエリア152のアウトプットデータエリアに書き込む。
ステップS218において、データ取得部166またはデータ出力制御部169は、データエリア152のロックを解除し、処理は、ステップS155に戻り、ステップS156に進んで、アウトプットイベントがオーディオデータフック用dll103に出力される。
このような処理により、供給されたオーディオデータが、エフェクトプラグイン171−1乃至171−nにより処理される。
次に、図19のフローチャートを参照して、オーディオデータフック用dll103が図16のステップS157において実行するイベント待ち処理について説明する。
ステップS231において、設定処理部141は、図16のステップS154の処理において出力されたインプットイベントの出力から、所定の時間が経過したか否かを判断する。ステップS231において、インプットイベントの出力から、所定の時間が経過したと判断された場合、処理は、後述するステップS237に進む。
ステップS231において、インプットイベントの出力から、所定の時間が経過していないと判断された場合、ステップS232において、設定処理部141は、信号処理アプリケーション104からアウトプットイベントが入力されたか否かを判断する。ステップS232において、アウトプットイベントが入力されていないと判断された場合、処理は、ステップS231に戻り、それ以降の処理が繰り返される。
ステップS232において、アウトプットイベントが入力されたと判断された場合、ステップS233において、リミッタ処理部145は、共通メモリ領域122のデータエリア152のアウトプットデータエリアをオープンする。
ステップS234において、リミッタ処理部145は、データエリア152のアウトプットデータエリアに書き込まれているエフェクト済みオーディオデータを読み出す。
ステップS235において、リミッタ処理部145は、読み出したオーディオデータにリミッタをかけ、FLOAT-FIXED変換処理部146に供給する。
ステップS236において、FLOAT-FIXED変換処理部146は、供給された浮動小数形式のオーディオデータを、整数データに変換し、出力制御部143に供給し、処理は、図16のステップS157に戻り、ステップS158に進んで、Winmm.DLL102のwaveoutWrite関数が読み出され、処理済のデータが出力される。
ステップS231において、インプットイベントの出力から、所定の時間が経過したと判断された場合、すなわち、データエフェクト処理を実行しているはずである信号処理アプリケーション104が終了されている場合、ステップS237において、設定制御部141は、このライト要求に対応するオーディオデータを、信号処理アプリケーションプログラム104で処理せずに、従来の処理によってオーディオデータを出力させるために、Winmm.dll102のwaveoutOpen関数を読み出し、出力制御部143を制御して、供給されたオーディオデータを、Winmm.DLL102に出力させる。そして、その後、クローズ処理においても、信号処理アプリケーションプログラム104に各種イベントを通知せずに、Winmm.dll102の関数を読み出して、従来における場合と同様の処理によってオーディオデータを出力させて、処理が終了される(処理は、ステップS157に戻らない)。
信号処理アプリケーションプログラム104と、ユーザモードドライバであるオーディオデータフック用dll103は、それぞれ、個別に起動されるものであるので、信号処理中にユーザが信号処理アプリケーションプログラム104を終了することが考えられる。したがって、図19を用いて説明した処理を実行することにより、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104からのアウトプットイベント待ちの状態で、一定時間応答がない場合であっても、オーディオデータの流れが断絶してしまい、再生に支障をきたすことがないように、オーディオデータの出力先を切り替えることができる。
そして、信号処理アプリケーションプログラム104が再起動されたとき、オーディオデータフック用dll103は、次のオープン処理において、フォーマットエリア151が存在していることにより、信号処理アプリケーションプログラム104の再開を検知することができ、迅速にエフェクトプラグイン171−1乃至171−nによる信号処理を適用することができるようになされている。
次に、図20のアローチャートを参照して、クローズ処理の詳細について説明する。
ステップS251において、一般アプリケーションプログラム101は、オーディオデータの書き込みの終了を、既定のユーザモードドライバとして設定されているオーディオデータフック用dll103に通知するために、Winmm.dll102のwaveoutClose関数を呼び出す(図11のステップS44の処理)。
ステップS252において、Winmm.dll102は、ユーザモードドライバとして指定されているオーディオデータフック用dll103のwodMesssageClose関数を呼びだす(図11のステップS45の処理)。
ステップS253において、オーディオデータフック用dll103は、図21を用いて後述するクローズ確認処理を実行する。そして、ステップS254において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104に、クローズイベント(CloseEvent)を出力する(図11のステップS46の処理)。
そして、ステップS255において、信号処理アプリケーションプログラム104は、プラグインの終了処理を実行する。そして、ステップS256において、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103に、クローズ終了イベント(CloseFinishedEvent)を出力する(図11のステップS47の処理)。
ステップS257において、オーディオデータフック用dll103は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105に、オーディオデータの書き込みの終了を通知するために、Winmm.dll102のwaveoutClose関数を呼び出す(図11のステップS48の処理)。
ステップS258において、Winmm.dll102は、信号処理アプリケーションプログラム104において出力先のドライバとして指定されているWdmaud.drv105のwodMesssageClose関数を呼び出して(図11のステップS49の処理)、クローズ処理が終了される。
次に、図21のフローチャートを参照して、オーディオデータフック用dll103が、図20のステップS253において実行する、クローズ確認処理について説明する。
ステップS271において、データフック処理部121の設定処理部141は、オープン済みフラグを確認し、同じハンドルでオープン済みであるか否かを判断する。ステップS271において、同じハンドルでオープン済みであると判断された場合、処理は、図20のステップS253に戻り、ステップS254に進んで、クローズイベントが信号処理アプリケーションプログラム104に出力される。
ステップS271において、同じハンドルでオープン済みではないと判断された場合、このクローズ要求は、信号処理アプリケーションプログラム104において処理されていたデータと同一のハンドルに対応するものではないので、ステップS272において、データフック処理部121の設定処理部141は、クローズ要求を、Winmm.dll105を介して、Wdmaud.drv106に供給し、処理が終了される(処理は、ステップS253には戻らない)。
このように、ハンドルを確認することにより、信号処理アプリケーションプログラム104において処理されていたデータと同一のハンドルに対応するクローズ要求が信号処理アプリケーションプログラム104に供給されて、他のクローズ要求は、Winmm.dll105を介して、Wdmaud.drv106に供給される。
このように、本発明を適用することにより、ユーザがユーザモードドライバであるオーディオデータフック用dll103の生存期間を意識する必要がなく、音声が再生されていないときであっても、エフェクトプラグイン171−1乃至171−nのパラメータを操作することができる。また、エフェクトプラグイン171−1乃至171−nは、その内部状態を保持しておくことができるため、オーディオデータフック用dll103の生存期間を意識することなく、以前の演算結果を利用して信号処理を行うことができる。
また、信号処理アプリケーションプログラム104は、オーディオデータを直接参照することができるので、エフェクトプラグイン171−1乃至171−nは、図9を用いて説明したように、メーターやスペアナなど、オーディオデータを元に表示内容を作製するようなGUIを表示させることができる。
更に、一般アプリケーションプログラム101と、エフェクトプラグイン171−1乃至171−nが動作する信号処理アプリケーションプログラム104は、それぞれ独立したアプリケーションプログラムであるので、プラグインのインスタンスが一般アプリケーションプログラム101の個数分増えることはなく、そのため、CPU31の使用率やメモリ(RAM36)の使用量を抑制することができる。
また、本発明を適用することにより、エフェクトプラグイン171−1乃至171−nのうちのいずれかが、サンプリング周波数を途中で変更すると、エラー処理が実行されてしまうなどの問題が発生するエフェクトプラグインあっても、設定情報を一時保存して、エフェクトプラグインの構成を再構築して、新たなサンプリング周波数で再度初期化することにより、問題が発生することを防止することができ、エフェクトプラグイン側のプログラムに修正を施す必要がないので、編集アプリケーション用途に作られた既存のエフェクトプラグインをそのまま利用することができる。
また、本実施の形態においては、一般アプリケーションプログラム101により再生されるオーディオデータに対して、信号処理アプリケーションプログラム104の処理により、エフェクトをかける場合について説明したが、本発明は、再生処理のみならず、例えば、録音対象となるオーディオデータを信号処理アプリケーションプログラム104に供給することにより、エフェクトをかけたり、予めファイルとして作成されているデータを信号処理アプリケーションプログラム104に供給することにより、エフェクトをかける場合においても、同様にして適用可能であることは言うまでもない。
更に、信号処理アプリケーションプログラム104は、オーディオデータフック用dll103などのユーザモードドライバからだけではなく、別のプログラムからの信号処理要求を受け付けることもできる。
すなわち、音声再生時のユーザモードドライバであるオーディオデータフック用dll103に代わって、オーディオデータのファイルを読み込み、信号処理アプリケーションプログラム104に供給して、エフェクトをかけた結果のオーディオデータをファイル出力することができるdllファイルやアプリケーションプログラムが用いられる場合にも、本発明は同様にして適用可能である。
更に、本実施の形態においては、エフェクトプラグイン171−1乃至171−nが、供給されたオーディオデータに対して、所定のエフェクトを施して、処理結果のオーディオデータを出力する場合について説明したが、本発明は、オーディオデータ以外の、例えば、画像データなどを処理する場合にも適用可能であり、更には、オーディオデータをトリガにして、全く異なる音や、音ではないデータを再生するようなエフェクトを施す場合にも、同様にして適用することが可能である。例えば、エフェクトプラグイン171−1乃至171−nのうちの一部、または、全てが、Windows Media Player(商標)の「視覚エフェクト」のように、再生音の音量や周波数をトリガにして画像に変化を起こすようなプラグインである場合などにおいても、本発明は適用可能であることは言うまでもない。
また、本発明を適用することにより、エフェクトプラグイン171−1乃至171−nのうちのいずれかが、サンプリング周波数を途中で変更すると、エラー処理が実行されてしまうなどの問題が発生するエフェクトプラグインあっても、設定情報を一時保存して、エフェクトプラグインの構成を再構築して、新たなサンプリング周波数で再度初期化することにより、問題が発生することを防止することができるが、本発明は、オーディオデータのプラグインエフェクトにおけるサンプリング周波数の変更のみならず、同様にして、処理途中に変更された場合に不具合をきたすパラメータを持つ、例えば、画像データなど、オーディオデータ以外のデータを処理するモジュールについても適用可能である。例えば、画像処理を実行するモジュールにおいて、実行中に所定のパラメータを再設定することができない場合、設定情報を一時保存して、再度、そのモジュールを構築し、新たなパラメータで再度初期化するようにしても、同様の効果を得ることが可能である。
更に、信号処理部123のエフェクト処理部167においては、エフェクトプラグイン171−1乃至171−nのうちの一部、または、全てにおいて、独立して流通しているエフェクトプラグインのみならず、信号処理部123のエフェクト処理部167に内蔵された処理としてのエフェクト処理モジュールを用意するようにしても良いことは言うまでもない。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図3に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク41(フレキシブルディスクを含む)、光ディスク42(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク43(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリ44などよりなるパッケージメディアなどにより構成される。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
従来のオーディオデータの再生について説明するためのアローチャートである。 従来のエフェクト操作アプリケーションプログラムを用いた場合のモジュール構成について説明するための図である。 本発明を適用したパーソナルコンピュータの構成を示すブロック図である。 CPUが実行可能なソフトウェアのソフトウェアスタックとハードウェアとの関係を示す図である。 本発明を適用した場合の、ソフトウェアモジュールおよびハードウェアモジュールの関係を示す図である。 図5のオーディオデータフック用dllと、信号処理アプリケーションプログラムが実行されている場合に実現可能な機能について説明するための機能ブロック図である。 設定ウィンドウの表示例を示す図である。 設定画面の一例を示す図である。 エフェクトプラグインの詳細設定を行うために表示される詳細設定画面について説明するための図である。 図6のスムージング処理部の処理について説明するための図である。 図5を用いて説明したソフトウェアモジュールの動作について説明するためのアローチャートである。 オープン処理の詳細について説明するためのアローチャートである。 オープン確認処理について説明するためのフローチャートである。 オープン処理について説明するためのフローチャートである。 再構築処理について説明するためのフローチャートである。 ライト処理の詳細について説明するためのアローチャートである。 書き込み確認処理について説明するためのフローチャートである。 データエフェクト処理について説明するためのフローチャートである。 イベント待ち処理について説明するためのフローチャートである。 クローズ処理の詳細について説明するためのアローチャートである。 クローズ確認処理について説明するためのフローチャートである。
符号の説明
21 パーソナルコンピュータ, 31 CPU, 34 入力部, 36 RAM, 37 出力部, 38 HDD, 73 ドライバーソフト, 74 OS, 75 DLL, 76 アプリケーションプログラム, 101 一般アプリケーションプログラム, 102 Winmm.dll, 103 オーディオデータフック用dll, 104 信号処理アプリケーションプログラム, 105 Wdmaud.drv, 106 WDMオーディオドライバ, 107 オーディオハードウェア, 121 データフック処理部, 122 共有メモリ領域, 123 信号処理部, 141 設定制御部, 142 データ取得部, 143 出力制御部, 144 FIXED-FLOAT変換処理部, 145 リミッタ処理部, 146 FLOAT-FIXED変換処理部, 151 フォーマットエリア, 152 データエリア, 161 操作入力取得部, 162 表示制御部, 163 設定制御部, 164 エフェクト制御部, 165 設定保持制御部, 166 データ取得部, 167 エフェクト処理部, 168 スムージング処理部, 169 データ出力制御部, 171 エフェクトプラグイン

Claims (9)

  1. 所定のデータを取得し、前記データに対する信号処理を実行する信号処理実行手段と、
    前記信号処理実行手段が、前記データ、または、前記データに対する前記信号処理を実行するために必要な情報を授受するために、前記データおよび前記情報を一時記録する記録手段と、
    前記データおよび前記情報を取得し、前記信号処理を行うか否かを判断して、前記データの出力先を制御するデータ制御手段と
    を備え、
    前記データ制御手段は、前記信号処理を行うと判断した場合、前記データおよび前記情報を前記記録手段に書き込み、
    前記信号処理実行手段は、前記記録手段に記録された前記データまたは前記情報を取得し、前記データに対する前記信号処理を実行する
    ことを特徴とする情報処理装置。
  2. 前記データを生成するデータ生成手段を更に備え、
    前記信号処理実行手段は、前記データ生成手段の動作に依存しないで、前記信号処理に関する動作を実行する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記データ制御手段は、前記記録手段に前記情報を記録するための記録領域が存在するか否かを基に、前記信号処理を行うか否かを判断する判断手段を備える
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記データには、前記データを個別に区別可能な区別情報が対応付けられ、
    前記データ制御手段は、前記データに対応付けられた前記区別情報を基に、前記信号処理を行うか否かを判断する判断手段を備える
    ことを特徴とする請求項1に記載の情報処理装置。
  5. 前記データ制御手段は、前記信号処理実行手段による前記信号処理のために前記データの形式を変換して、前記記録手段に前記データを書き込むデータ変換手段を備える
    ことを特徴とする請求項1に記載の情報処理装置。
  6. 前記信号処理実行手段は、
    前記データを取得するデータ取得手段と、
    前記データ取得手段により取得された前記データに対する信号処理を実行する信号処理手段と
    を備え、
    前記信号処理手段は、エフェクトプラグインによって構成されている
    ことを特徴とする請求項1に記載の情報処理装置。
  7. 前記信号処理実行手段は、前記信号処理手段により処理された前記データにスムージング処理を施すスムージング処理手段を更に備える
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 所定のデータを出力する情報処理装置の情報処理方法において、
    前記データ、または、前記データに対する信号処理を実行するために必要な情報を授受するために、前記データおよび前記情報を一時記録する記録領域の生成を制御する記録領域生成制御ステップと、
    前記データに対して前記信号処理を行うか否かを判断する判断ステップと、
    前記判断ステップの処理により前記データに対して前記信号処理が行われると判断された場合、前記データおよび前記情報の、前記記録領域生成制御ステップの処理により生成が制御された前記記録領域への記録を制御する記録制御ステップと、
    前記記録制御ステップの処理により記録が制御された前記データおよび前記情報を基に、前記データに対する前記信号処理を実行する信号処理実行ステップと、
    前記信号処理実行ステップの処理により信号処理が施された前記データの出力を制御する出力制御ステップと
    を含むことを特徴とする情報処理方法。
  9. 所定のデータを出力する処理をコンピュータに実行させるためのプログラムであって、
    前記データ、または、前記データに対する信号処理を実行するために必要な情報を授受するために、前記データおよび前記情報を一時記録する記録領域の生成を制御する記録領域生成制御ステップと、
    前記データに対して前記信号処理を行うか否かを判断する判断ステップと、
    前記判断ステップの処理により前記データに対して前記信号処理が行われると判断された場合、前記データおよび前記情報の、前記記録領域生成制御ステップの処理により生成が制御された前記記録領域への記録を制御する記録制御ステップと、
    前記記録制御ステップの処理により記録が制御された前記データおよび前記情報を基に、前記データに対する前記信号処理を実行する信号処理実行ステップと、
    前記信号処理実行ステップの処理により信号処理が施された前記データの出力を制御する出力制御ステップと
    を含むことを特徴とする処理をコンピュータに実行させるためのプログラム。
JP2004134188A 2004-04-28 2004-04-28 情報処理装置および情報処理方法、並びに、プログラム Pending JP2005317115A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004134188A JP2005317115A (ja) 2004-04-28 2004-04-28 情報処理装置および情報処理方法、並びに、プログラム
US11/092,789 US7461175B2 (en) 2004-04-28 2005-03-30 Information processing apparatus, information processing method, and program
EP05252085A EP1591884A3 (en) 2004-04-28 2005-04-01 Information processing apparatus, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004134188A JP2005317115A (ja) 2004-04-28 2004-04-28 情報処理装置および情報処理方法、並びに、プログラム

Publications (1)

Publication Number Publication Date
JP2005317115A true JP2005317115A (ja) 2005-11-10

Family

ID=34940695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004134188A Pending JP2005317115A (ja) 2004-04-28 2004-04-28 情報処理装置および情報処理方法、並びに、プログラム

Country Status (3)

Country Link
US (1) US7461175B2 (ja)
EP (1) EP1591884A3 (ja)
JP (1) JP2005317115A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061235A (ja) * 2008-09-01 2010-03-18 Anritsu Corp 制御装置及び制御方法
US7684883B2 (en) 2004-04-28 2010-03-23 Sony Corporation Information processing apparatus, information processing method, and program
JP2010108523A (ja) * 2010-02-05 2010-05-13 Toshiba Corp 情報処理装置およびエフェクトプログラム
JP2010109755A (ja) * 2008-10-30 2010-05-13 Toshiba Corp 情報処理装置、エフェクトプログラムおよびコンテンツ補正処理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4265650B2 (ja) * 2006-12-13 2009-05-20 ヤマハ株式会社 データ処理装置、および画像デバイス
US7873069B2 (en) * 2007-03-12 2011-01-18 Avaya Inc. Methods and apparatus for controlling audio characteristics of networked voice communications devices
US20090188374A1 (en) * 2008-01-29 2009-07-30 John Bertil Folkesson Electronic musical keyboard with tactile feedback
KR101490468B1 (ko) * 2010-02-04 2015-02-06 삼성전자 주식회사 데이터 처리 장치 및 방법
CN108475186B (zh) * 2016-12-29 2020-02-14 华为技术有限公司 多媒体数据播放方法及终端设备
CN109830249B (zh) * 2018-12-29 2021-07-06 百度在线网络技术(北京)有限公司 数据处理方法、装置和存储介质
US10983842B2 (en) 2019-07-08 2021-04-20 Microsoft Technology Licensing, Llc Digital signal processing plug-in implementation
JP2023180168A (ja) * 2022-06-08 2023-12-20 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6345640A (ja) 1986-08-12 1988-02-26 Nippon Telegr & Teleph Corp <Ntt> プロセス制御方式
JPH06119189A (ja) 1992-05-21 1994-04-28 Nec Corp プロセス間インタフェース方式
JP2531103B2 (ja) 1993-06-29 1996-09-04 日本電気株式会社 ジョブ間デ―タ通信システム
US5842014A (en) * 1995-06-14 1998-11-24 Digidesign, Inc. System and method for distributing processing among one or more processors
US6043828A (en) * 1996-03-29 2000-03-28 Cirrus Logic, Inc. Method and apparatus for handling proprietary and non-proprietary formatted compact discs in the same video playback system
US6209041B1 (en) 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
WO1999010833A1 (en) * 1997-08-27 1999-03-04 Datacube, Inc. Web inspection system for analysis of moving webs
JP3882321B2 (ja) 1998-03-13 2007-02-14 株式会社日立製作所 オペレーティングシステムのモジュールプログラムを備えた計算機
WO2001050598A2 (en) * 2000-01-05 2001-07-12 True Dimensional Sound, Inc. Audio device driver
JP3860385B2 (ja) 2000-03-23 2006-12-20 日本電信電話株式会社 動的連携情報引継ぎ方法,連携プロセス制御装置およびそのプログラム記録媒体
JP3551887B2 (ja) * 2000-04-03 2004-08-11 日本電気株式会社 動画像再生方法および装置
JP2002073439A (ja) 2000-08-31 2002-03-12 Sony Corp 情報処理装置、情報処理方法及びプログラム格納媒体並びに情報処理システム
JP4304561B2 (ja) 2000-08-31 2009-07-29 ソニー株式会社 情報処理装置、情報処理方法及びプログラム格納媒体並びに情報処理システム
JP2003058413A (ja) * 2001-08-15 2003-02-28 Sony Corp コンテンツ提供装置、コンテンツ提供方法、ストリームコンテンツの再生プログラム及びストリームコンテンツの再生プログラムを記録した記録媒体
JP4360781B2 (ja) * 2002-07-31 2009-11-11 富士フイルム株式会社 デジタルカメラ
JP2005317114A (ja) 2004-04-28 2005-11-10 Sony Corp 情報処理装置および情報処理方法、並びに、プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7684883B2 (en) 2004-04-28 2010-03-23 Sony Corporation Information processing apparatus, information processing method, and program
JP2010061235A (ja) * 2008-09-01 2010-03-18 Anritsu Corp 制御装置及び制御方法
JP2010109755A (ja) * 2008-10-30 2010-05-13 Toshiba Corp 情報処理装置、エフェクトプログラムおよびコンテンツ補正処理方法
US8666227B2 (en) 2008-10-30 2014-03-04 Kabushiki Kaisha Toshiba Information processing apparatus, effect program, and content correction processing method
JP2010108523A (ja) * 2010-02-05 2010-05-13 Toshiba Corp 情報処理装置およびエフェクトプログラム

Also Published As

Publication number Publication date
EP1591884A2 (en) 2005-11-02
EP1591884A3 (en) 2008-12-10
US20050257228A1 (en) 2005-11-17
US7461175B2 (en) 2008-12-02

Similar Documents

Publication Publication Date Title
US7461175B2 (en) Information processing apparatus, information processing method, and program
US7684883B2 (en) Information processing apparatus, information processing method, and program
KR100983935B1 (ko) 정보 처리 장치 및 방법
JP2005338959A (ja) 情報処理装置,実行判定方法,およびコンピュータプログラム
JP2002318692A (ja) インストール支援システム、インストール支援装置、インストール支援方法、インストールを支援するためのプログラムおよびそのプログラムを記録した記録媒体
KR20010007043A (ko) 컴퓨터 시스템 내의 컨텐트 컴팩트 디스크 복사 방법
JP2004102498A (ja) Guiアプリケーション開発支援装置、gui表示装置、および方法、並びにコンピュータ・プログラム
US20070025197A1 (en) Information-processing apparatus, recording medium and information-processing method
US20100037040A1 (en) Method and apparatus for implementing virtual environment
JP2006254244A (ja) 情報記録装置及びプログラム
US20150339004A1 (en) Dynamic interface generation using command and user levels
JP2007034513A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
US7882157B2 (en) Content data recording device and recording control method
JP2005056237A (ja) メモリ装置、データ処理用のプログラムを記録した記録媒体、そのプログラム、データ処理システム及びデータ処理方法
KR20090119436A (ko) 휴대용 저장 장치에 저장된 컨텐트들과 관련된 서비스를제공하는 방법 및 그 장치
JP2010272058A (ja) 情報再生装置
JP2006048465A (ja) コンテンツ生成システム、プログラム及び記録媒体
TWI281628B (en) Method for fast executing computer function option with intelligent memory
JP4213738B2 (ja) 情報処理装置及び情報処理方法
JP2006011749A (ja) 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JP4562544B2 (ja) 記憶装置及び記憶方法
JP2010073013A (ja) データ通信システムおよびサーバ装置およびその制御方法およびプログラム
JP2003521001A (ja) デジタルオーディオ再生装置の制御下でユーザインタフェース装置の画面に情報を表示するためのシステムおよび方法
JP2007079957A (ja) 情報処理方法および装置、記録媒体、並びにプログラム
JP2005293771A (ja) 情報処理システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080422

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080515