JP3945393B2 - 複数音源ドライバの制御方法 - Google Patents

複数音源ドライバの制御方法 Download PDF

Info

Publication number
JP3945393B2
JP3945393B2 JP2002349746A JP2002349746A JP3945393B2 JP 3945393 B2 JP3945393 B2 JP 3945393B2 JP 2002349746 A JP2002349746 A JP 2002349746A JP 2002349746 A JP2002349746 A JP 2002349746A JP 3945393 B2 JP3945393 B2 JP 3945393B2
Authority
JP
Japan
Prior art keywords
waveform data
sound source
midi
driver
musical
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.)
Expired - Fee Related
Application number
JP2002349746A
Other languages
English (en)
Other versions
JP2003186470A (ja
JP2003186470A5 (ja
Inventor
元一 田邑
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
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2002349746A priority Critical patent/JP3945393B2/ja
Publication of JP2003186470A publication Critical patent/JP2003186470A/ja
Publication of JP2003186470A5 publication Critical patent/JP2003186470A5/ja
Application granted granted Critical
Publication of JP3945393B2 publication Critical patent/JP3945393B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明が属する技術分野】
本発明は、複数の種類の異なる音源ドライバ手段を統合して制御することのできる複数音源ドライバの制御方法に関するものである。
【0002】
【従来の技術】
近年のマイクロプロセッサ(CPU)の演算能力は著しく向上しており、汎用コンピュータや専用の楽音発生装置に、このような高性能のCPUが搭載されるようになされている。そこで、所定の楽音生成処理プログラムをこのような汎用コンピュータや専用の楽音発生装置に実行させることにより、楽音波形データを生成させるようにしたものが実現されている。
また、楽音生成方式に応じた回路構成とされている専用のハードウェアにより楽音波形データを生成させることも、従来から引き続いて行われている。
【0003】
そこで、コンピュータソフトウェアを用いた従来の音源システムにおけるソフトウェア構造を図13に示す。
この音源システムのオペレーテイングシステム(OS)101としては、たとえば、Windows95(マイクロソフト社の商標)が使用される。このOS101は、楽音波形データを生成する演奏情報であるMIDIメッセージを授受することのできるインターフェースIF1(MIDI out API)、インターフェースIF2(MIDI out API)を有していると共に、生成された楽音波形データを授受することのできるインターフェースIF3(WAVE out API)を有している。
【0004】
なお、図示する例においてはインターフェースIF1(MIDI out API)は、所定の楽音生成処理プログラムをCPUを備える処理装置に実行させることにより、楽音波形データを生成させるようにした、いわゆるソフトウェア音源(以下、「ソフト音源」という)のインターフェースとして使用されており、インターフェースIF2(MIDI out API)は、楽音生成方式に応じた回路構成とされている専用のハードウェアにより楽音波形データを生成させるようにした、いわゆるハードウェア音源(以下、「ハード音源」という)のインターフェースとして使用されている。
【0005】
MIDIメッセージを発生する音楽ソフト100は、アプリケーション階層に位置しており、演奏情報をMIDIメッセージのフォームでリアルタイムに発生する。また、MIDIドライバ2(ハード音源)およびMIDIドライバ3(ソフト音源)はOS101にインストールされたMIDIドライバであり、MIDIドライバ2はハード音源用のMIDIドライバとされており、MIDIメッセージに基づく楽音生成用データを外部のハード音源103に与えている。さらに、MIDIドライバ3は、アプリケーションソフトであるソフト音源がOS101にインストールされたものである。
【0006】
そして、図13に示す場合は、音楽ソフト100により発生されたMIDIメッセージが、OS101に備えられたインターフェースIF1(MIDI out API)を介してMIDIドライバ3により受け取られるようにされている。MIDIメッセージを受け取ったMIDIドライバ3は、受け取ったMIDIメッセージに基づく楽音波形データの生成処理を実行し、生成された楽音波形データを、インターフェースIF3(WAVE out API)を介してOS101にインストールされているWAVEドライバ1に渡すようにする。WAVEドライバ1は、バッファメモリに記憶された楽音波形データをダイレクトメモリアクセス(DMA)コントローラを介して読み出して、外部のハードウェアであるコーデック(CODEC )105に供給する。コーデック105において、楽音波形データはアナログ楽音信号に変換されて、図示しないサウンドシステムから放音される。
【0007】
なお、MIDIドライバ3においては、1フレーム周期内において1回以上の楽音波形データの生成演算が実行されて1フレーム分の楽音波形データが生成される。生成された楽音波形データはバッファメモリに記憶される。この場合、MIDIドライバ3では生成演算の遅れ時間や単位時間あたりの楽音波形データ生成量を時間管理しながら、1フレーム分の楽音波形データの生成を実行している。また、MIDIドライバ3が有するライブラリ32には、楽音波形データの生成演算に使用することのできるディジタルフィルタや補間器、ミキサ等の汎用モジュール(サブルーチン)群が格納されており、この汎用モジュール群を利用して、所要のピッチや音色等の楽音的特徴を具備する楽音波形データを生成している。
【0008】
【発明が解決しようとする課題】
上記図13に示すコンピュータを用いた従来の音源システムにおいては、音楽ソフト100より発生されたMIDIメッセージを、OS101に備えられたインターフェースIF1(MIDI out API)を介してMIDIドライバ1が受け取るようにされている。また、あらかじめプログラムしておくことにより、音楽ソフト100より発生されたMIDIメッセージを、OS101に備えられたインターフェースIF2(MIDI out API)を介してMIDIドライバ2が受け取るようにすることもできる。この場合には、MIDIドライバ2は、MIDIメッセージに基づく楽音生成用データを外部のハード音源103に与えて、ハード音源103において生成された楽音波形が放音されるようになる。
【0009】
しかしながら、従来の音源システムにおいては、演奏前に限って使用するMIDIドライバを設定することができるため、演奏中にダイナミックにMIDIドライバを切り替えることができないという問題点があった。したがって、例えば所定のパートにおいて、ある演奏部分だけを異なる音源を使用して楽音波形データを生成し、放音することはできない。
また、従来の音源システムでは、OSに登録(インストール)されていないMIDIドライバを使用することはできない。使用する際には、MIDIドライバをOSにインストールすることにより、使用可能となる。しかしながら、MIDIドライバをOSにインストールした際には、システムを再起動しなければならず繁雑な作業が必要であった。
【0010】
さらに、ソフト音源により楽音を発生する際には、WAVEドライバが必要となるが、ソフト音源により構成されているMIDIドライバが複数使用されているときには、複数のWAVEドライバが必要となり、WAVEドライバが不足するおそれがあった。この場合、新たなWAVEドライバを開くことができないという問題点もある。
さらにまた、ソフト音源により構成されているMIDIドライバが複数使用されている際に、楽音波形データの生成演算の遅れ時間や単位時間あたりの楽音波形データ生成量に応じた時間管理をすることについては考えられていなかった。
【0011】
そこで、本発明は、OSにMIDIドライバを登録することなく使用することが可能であると共に、演奏中にダイナミックにMIDIドライバを切り替えることが可能な複数音源ドライバの制御方法、および、複数のMIDIドライバが使用されていても必要とするWAVEドライバを一つとすることができると共に、各MIDIドライバ毎に楽音波形データの時間管理を行う必要のない複数音源ドライバの制御方法を提供することを他の目的としている。
【0012】
【課題を解決するための手段】
上記目的を達成するために、本発明の複数音源ドライバの制御方法は、統合ソフトに1ないし複数の音源ドライバ手段が登録されており、1ないし複数の音源ドライバ手段は、それぞれ振り分けられた演奏データに応じた複数サンプルの楽音波形データを起動されるごとに生成し、生成した複数サンプルの楽音波形データは統合ソフトで加算されてウェーブドライバ手段に渡されるようにしている。これにより、OSにMIDIドライバを登録することなく使用すること、および、演奏中にダイナミックにMIDIドライバを切り替えることを可能とすることができる。さらに、複数のMIDIドライバが使用されていても必要とするWAVEドライバを一つとすることができるようになる。
【0013】
また、上記複数音源ドライバの制御方法において、統合ソフトは、受け取った複数サンプルの楽音波形データのサンプリング周波数が基準サンプリング周波数と異なっている場合は、該楽音波形データのサンプリング周波数を基準サンプリング周波数に変換するようにすると、基準サンプリング周波数とは異なるサンプリング周波数で動作する音源ドライバ手段も利用することができるようになる。
さらに、上記複数音源ドライバの制御方法において、タイマ割り込みに応じて1ないし複数の音源ドライバ手段に対して、楽音波形データの生成開始のトリガを順次発生するようにすると、共通のタイマ割込みに応じて複数の音源ドライバ手段を制御することができるため、割込みを一本化することができ、時間管理に関してCPUの負担を軽減することができる。
【0014】
さらにまた、上記複数音源ドライバの制御方法において、統合ソフトは、1ないし複数の音源ドライバ手段から受け取った複数の楽音波形データのタイミングを揃えて加算するようにしてもよい。
さらにまた、上記複数音源ドライバの制御方法において、複数パートの演奏データを、
1ないし複数の音源ドライバ手段の内のパート毎に選択されている音源ドライバ手段に統合ソフトがそれぞれ振り分けることにより、複数パートの演奏データとされていても、各音源ドライバ手段は、統合ソフトを相手にして波形生成処理を行えばよい
さらにまた、上記複数音源ドライバの制御方法において、ユーザの操作に応じて登録される音源ドライバ手段を、統合ソフトに追加あるいは削除できるようにしてもよい。
【0015】
【発明の実施の形態】
コンピュータソフトウェアを用いた本発明の複数音源ドライバの制御方法におけるソフトウェア構造を図1に示す。
このソフトウェア構造において、オペレーテイングシステム(OS)2としては、たとえば、Windows95(マイクロソフト社の商標)が使用される。
図1におけるOS2は、楽音波形データを生成する演奏情報であるMIDI(musical instrument digital interface)メッセージを授受することのできるインターフェースIF1(MIDI out API)、および、インターフェースIF2(MIDI out API)とを有していると共に、生成された楽音波形データを授受することのできるインターフェースIF3(WAVE out API)、および、インターフェースIF4(WAVE out API)を有している。
【0016】
また、MIDIメッセージを発生する音楽ソフト1は、アプリケーション階層に位置しており、演奏情報をMIDIメッセージのフォームでリアルタイムに発生する。このMIDIメッセージは、OS2のマルチメディア関数の一つとして用意されたインターフェースIF1(MIDI out API)を介して、本発明の特徴点である統合ドライバ3に受け取られる。この統合ドライバ3をOS2にインストールすることにより、図1に示されるインターフェースIF1,およびインターフェースIF3の機能がOS2に用意されるようになる。そして、統合ドライバ3により受け取られたMIDIメッセージは、パート毎に分配されて規格準拠のMIDIドライバ1(ハード音源),MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)と、規格非準拠のMIDIドライバ4(ソフト音源)に与えられる。
【0017】
この際に、MIDIドライバ1〜3を統合ドライバ3に登録することにより、統合ドライバ3にはインターフェースIF10(MIDI out API),IF11(MIDI out API),IF12(MIDI out API)が備えられ、これらのインターフェースIF10(MIDI out API),IF11(MIDI out API),IF12(MIDI out API)を介して、規格準拠のMIDIドライバ1(ハード音源),MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)に、分配されたMIDIメッセージが与えられる。また、規格非準拠のMIDIドライバ4(ソフト音源)には、同ドライバをOS2にインストールすることにより用意されたインターフェースIF2(MIDI out API)を介して分配されたMIDIメッセージが与えられる。
【0018】
なお、規格非準拠のMIDIドライバ4(ソフト音源)はOS2にインストールされることにより使用される。一方、規格準拠のMIDIドライバ1(ハード音源),MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)は、OS2にインストールして使用することも可能であるし、OS2にインストールせずに統合ドライバ3に登録するだけでも使用可能である。規格準拠のMIDIドライバを統合ドライバ3に登録して使用する場合には、オペレーティングシステムを再起動することなく直ちに使用可能とすることができ、煩雑なインストール作業を不要とすることができる。
また、MIDIドライバ1はハード音源用のMIDIドライバであり、インターフェースIF10を通じて供給されたMIDIメッセージに基づいてハード音源10の楽音生成動作を制御している。さらに、MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)は、ソフト音源により構成されたドライバとされている。
【0019】
そして、統合ドライバ3からインターフェースIF11(MIDI out API),IF12(MIDI out API)を介してMIDIメッセージは、MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)に与えられ、MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)は、統合ドライバ3に用意された統合ツールライブラリ4内のタイマ処理手段4−2から所定周期で発生されるトリガを受けて演算処理を実行する。そして、所定データ量の楽音波形データを生成している。MIDIドライバ2(ソフト音源)により生成された楽音波形データは、そのままストリーム1を介して、統合ドライバ3に用意された統合ツールライブラリ4内のWAVE処理手段4−1に送られる。また、MIDIドライバ3(ソフト音源)により生成された楽音波形データは、そのままストリーム2を介して、統合ドライバ3に用意された統合ツールライブラリ4内のWAVE処理手段4−1に送られる。
【0020】
さらに、規格非準拠のMIDIドライバ4(ソフト音源)では、インターフェースIF2を通じて与えられたMIDIメッセージを用いて、演算処理を行い、MIDIドライバ4(ソフト音源)において生成された楽音波形データは、OS2に用意されたインターフェースIF3(MIDI out API)を介して、統合ドライバ3に用意された統合ツールライブラリ4内のWAVE処理手段4−1に送られる。
WAVE処理手段4−1においては、受け取った楽音波形データのサンプリング周波数Fsを所定のサンプリング周波数に変換する処理と、楽音波形データを複数受け取った際には、時間合わせした楽音波形データ同士の加算を行う処理とが行われる。
なお、受け取った複数の楽音波形データの中に共通のサンプリング周波数Fsのものがある場合には、先にそれらを互いに加算した後にサンプリング周波数変換を行えば必要とする演算量を少なくすることができる。
【0021】
加算処理の行われた楽音波形データが、1フレーム分に達した際には、1フレーム分の楽音波形データがバッファメモリに格納されて、WAVEドライバ1に再生予約されるようになる。この場合、WAVE処理手段4−1からは、OS2に用意されたインターフェースIF4(WAVE out API )を介して、楽音波形データがWAVEドライバ1に送られる。
これにより、MIDIドライバを複数使用していても、WAVEドライバは1つのみ使用するだけでよく、WAVEドライバが不足することを防止することができる。
【0022】
さらに、統合ドライバ3においては、生成演算の遅れ時間や単位時間あたりの楽音波形データ生成量を時間管理しながら、ストリーム1およびストリーム2から受け取られた楽音波形データの進行状況がチェックされて、タイマ処理手段4−2が発生するトリガの優先順位の制御が行われる。また、この優先順位を、各MIDIドライバにおける楽音波形データが生成されるまでの演算遅延時間に応じて決定するようにしても良い。
なお、統合ツールライブラリ4は、統合ドライバ3が起動された際にコールされるダイナミックリンクライブラリ(DLL)として用意されている。
【0023】
ところで、規格準拠のMIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)において生成された楽音波形データは、トリガを受けて生成されたデータ量だけストリーム1およびストリーム2を介してWAVE処理手段4−1に送られるようにされ、楽音波形データの時間管理は、MIDIドライバ2(ソフト音源),MIDIドライバ3(ソフト音源)においては行われていない。一方、規格非準拠のMIDIドライバ4(ソフト音源)においては、生成された楽音波形データの時間管理が行われて、1フレーム分の楽音波形データが生成された際に、WAVE処理手段4−1に送られるようになる。
このため、規格準拠のMIDIドライバにおいては、WAVE処理手段4−1により一元的に楽音波形データの時間管理を行うことができ、各MIDIドライバにおいて個別に時間管理をする必要がなくなるだけでなく、平行して動作する複数のMIDIドライバに対して最適な制御を行うことができる。
【0024】
ところで、ストリーム1およびストリーム2は、アプリケーションである音楽ソフト1から統合ドライバ3に対するオープン要求があった時点において、統合ドライバ3に登録されているMIDIドライバが検出されて対応するストリームがオープンされる。このストリーム1およびストリーム2は、指定された速度およびビット幅で楽音波形データを送ることのできるチャンネルのようなものである。また、ストリームには優先順位がつけられており、WAVE処理手段4−1においては、この優先順位の高い順で、送られた楽音波形データを処理するようにしている。この優先順位は、ストリームで送られる楽音波形データが割り当てられているパートの重要度に応じて決定するのが好適である。
【0025】
そして、WAVE処理手段4−1より楽音波形データの再生予約がされたWAVEドライバ1は、サンプル毎の再生出力を出力することができるようにダイレクトメモリアクセス(DMA)コントローラを介してバッファメモリから波形サンプルを読み出して、波形入出力用のハードウェアであるコーデック(CODEC)11に供給する。コーデック11において、波形サンプルはアナログ楽音信号に変換されて、図示しないサウンドシステムから放音される。
また、ハード音源10において生成された波形サンプルも、図示しないサウンドシステムから放音される。
【0026】
なお、統合ツールライブラリ4に用意されたライブラリ32は、汎用化されており、楽音波形データの生成演算に使用することのできるディジタルフィルタや補間器、ミキサ等の汎用モジュール(サブルーチン)群が格納されており、規格準拠した各MIDIドライバはこの汎用モジュール群を利用して、所要のピッチや音色等の楽音的特徴を具備する楽音波形データを生成している。
このようなソフトウェア構造において、例えばMIDIドライバ2(ソフト音源)が自然楽器を模擬する物理モデル音源とされ、MIDIドライバ3(ソフト音源)が波形メモリ音源とされている際には、ソロパートに対応するMIDIメッセージをMIDIドライバ2(ソフト音源)に分配し、伴奏パートに対応するMIDIメッセージをMIDIドライバ3(ソフト音源)に分配するのが好適である。
【0027】
また、規格準拠のMIDIドライバは、OS2にドライバとしてインストールせずとも統合ドライバ3に登録することにより使用することができると共に、統合ドライバ3によりMIDIメッセージの分配を行うようにしているため、演奏中であっても各パートにおけるMIDIドライバの切り換えを行えるようになる。従って、パートの一部分だけを異なるMIDIドライバにより楽音波形データを生成して演奏することが可能となり、種々の形態の演奏を可能とすることができるようになる。
【0028】
次に、本発明のコンピュータソフトウェアを用いた複数音源ドライバの制御方法の実施に使用するハードウェア構成を図2に示す。
図2に示すハードウェア構成において、21はメイン制御部として使用されるマイクロプロセッサ(CPU)であり、このCPU21の制御の下で本発明にかかる複数音源ドライバの制御方法が、複数音源ドライバの制御用プログラムによる複数音源ドライバの制御処理として実行される。同時に、その他のアプリケーションプログラム等の処理が並列して実行される。22はCPU21が実行する制御用プログラム等が記憶されているリードオンリメモリ(ROM)、23はCPU21のワークエリアや、外部記憶装置であるハードディスク26あるいはリムーバブルディスク27等から読み出されたプログラムや演奏データ等がロードされるエリアが設定されているランダムアクセスメモリ(RAM)、24はタイマ割り込み処理のタイミングをCPU21に指示するハードウェアにより構成されたタイマである。
【0029】
また、25は他のMIDI(musical instrument digital interface)機器からMIDIメッセージ等の演奏データが入力されると共に、生成されたMIDIメッセージを他のMIDI機器へ出力するMIDIインターフェースであり、26はアプリケーションソフトウェアやMIDI演奏データ等を記録することができるハードディスクであり、27は、ハードディスク26と同様にアプリケーションソフトウェアやMIDI演奏データ等を記録することができるリムーバブルディスクである。さらに、28はアプリケーションの画面や、各種設定画面等が表示される表示器(モニタ)、29は英字、かな、数字、記号などのキーや、改行キー、改頁キー等を備えるいわゆるパソコン用のキーボード、および、表示器28の画面に表示されたポインタを自在に移動させたり、クリックすることにより指定することのできるマウスである。
【0030】
さらにまた、30はRAM3に格納された楽音波形データをサンプリング周期で読み出して、アナログ信号に変換した後に図示しないサウンドシステムから放音させるための波形インターフェースである。なお、サウンドシステムにおいて楽音信号にリバーブやコーラス等の効果を付与する効果回路を備えさせるようにしてもよい。36は楽音生成専用のハードウェアで用意されたハード音源であり、CPU21からの指示に基づいて複数時分割チャンネル動作を行い、複数の楽音を発生して出力する。なお、各ハードウェアはCPUバス20を介して相互に接続されている。
以上の構成はパソコン、ワークステーション等の構成と同等であり、本発明の複数音源ドライバの制御方法は汎用のコンピュータにより実行することができる。
【0031】
また、上記ハードウェア構成において、LAN(Local Area Network )やインターネット、電話回線等の通信ネットワークを介してサーバコンピュータに接続するための通信インターフェースを設けるようにしてもよい。
なお、本発明にかかる複数音源ドライバの制御用プログラムが格納されている記録媒体であるFDDやCD−ROMを外部記憶装置として用意されているドライブ装置にセットして、ハードディスク26あるいはリムーバブルディスク27に複数音源ドライバ用の制御プログラムをインストールすることにより、上記ハードウェア構成が複数音源ドライバの制御処理を実行することができるようにしてもよい。
【0032】
図3は、図2に示した波形インターフェース30の詳細構成を示すものであり、波形インタフェース30は、マイク等から入力される入力波形をディジタル信号に変換するアナログ−ディジタル変換器(ADC)31と、ADC31により変換されたディジタルデータを各サンプリング周期(1/Fs)に1サンブルづつ順次RAM23に書き込むようにした第1のダイレクトメモリアクセスコントローラ(DMAC1)32と、RAM23に設定されているバッファメモリWB1〜WB5に格納されているフレーム単位の楽音波形データをサンプリング周期(1/Fs)毎に1サンプルづつ順次読み出す第2のダイレクトメモリアクセスコントローラ(DMAC2)34と、第2のダイレクトメモリアクセスコントローラ34により読み出された楽音波形データをアナログ楽音信号に変換するディジタル−アナログ変換器(DAC)35と、第1のダイレクトメモリアクセスコントローラ32および第2のダイレクトメモリアクセスコントローラ34に与えるサンプリング周波数Fsの周期のサンプリングパルスを発生するFs発生器33から構成されている。なお、図1に関して説明したCODEC11は、波形インターフェース30のADC31とDAC35の機能を実現する集積回路の名称である。
【0033】
RAM23には、前記したWAVE処理手段4−1が楽音波形データを書き込むようにしており、図示する例においては、例えば、バッファメモリWB1,WB2,WB3,WB4には完成した1フレーム分の楽音波形データが格納されており、バッファメモリWB5には1フレーム分の楽音波形データを作成する途中の楽音波形データが記憶されている。このバッファメモリWB1,WB2,WB3,WB4に記憶されている楽音波形データは、Fs発生器33から発生されるサンプリングパルスを基準として、第2のダイレクトメモリアクセスコントローラ34によりサンプリング周期(1/Fs)毎に楽音波形データが1サンプルづつ順次読み出されるようにされている。
【0034】
次に、コンピュータソフトウェアを用いた複数音源ドライバの制御方法の実施の形態を、図4以降を参照しながら説明する。
図4は、CPU21により実行されるハード音源用のMIDIドライバ1(ハード音源)のメインルーチンのフローチャート(HTGドライバメイン)である。このメインルーチンは、MIDIドライバ1(ハード音源)がOS2にドライバとしてインストールされている場合には、OS2の立ち上げ時に、また、統合ドライバ3にMIDIドライバ1(ハード音源)が登録されている場合には、統合ドライバ3から当該ドライバのオープンが指示されたときに起動される。
このメインルーチンが起動されると、ステップS10においてハード音源の初期設定が行われる。この初期設定では、音源レジスタのクリアやハード音源10の初期設定が行われる。
【0035】
初期設定が終了すると、ステップS11において起動要因がチェックされる。起動要因としては、以下の要因がある。
▲1▼統合ドライバ3が備えるインターフェースIF10(MIDI out API)を介してMIDIメッセージが供給されたこと。すなわち、音楽ソフト1からMIDIメッセージが供給されたこと。
▲2▼表示器28に表示された音源設定パネルにおける入力イベントや、キーボード29のコマンド入力イベントが検出されたこと。また、タイマイベントが入力されたこと。
▲3▼メインルーチン終了コマンドが入力されたこと。
【0036】
次いで、ステップS12にて上記した起動要因があるか否かが判定されて、起動要因▲1▼〜▲3▼のいずれかが発生するまで、ステップS11の処理が繰り返し行われる。そして、起動要因ありとステップS12にて判定されると、ステップS13にて上記いずれの起動要因か判定されて、その起動要因に応じた処理が行われる。
例えば、起動要因▲1▼が発生されたと検出されると、ステップS14に進んでMIDI処理が行われ、起動要因▲2▼が発生されたと検出されると、ステップS15に進んでその他処理が行われ、起動要因▲3▼が発生されたと検出されると、ステップS16に進んで終了処理が行われる。
【0037】
ステップS14にて行われるMIDI処理では、MIDIメッセージのノートオンイベントに基づくノートオン処理や、ノートオフイベントに基づくノートオフ処理が含まれる。ノートオン処理では、ノートオンイベントの入力に応じてハード音源に割り当てるチャンネル割り当てが行われ、割り当てたチャンネル用として設定されているレジスタに、入力されたノートオンに応じた楽音パラメータが設定されると共に、同チャンネルに対してノートオンが指示される。ハードウェア音源の当該チャンネルでは、該ノートオンに応じて該楽音パラメータに基づいた楽音の生成が開始される。なお、設定されるパラメータは、演奏パートの選択音色、ノートオンイベントで指定される音高、ノートオンイベントで指定されるベロシティに応じて決定される。また、ノートオフ処理では、ハード音源のチャンネルの中で、ノートオフイベントに応じた楽音を生成中のチャンネルを探索し、見つかったチャンネルにノートオフを指示するようにする。また、プログラムチェンジが供給された際には、指定された演奏パートの選択音色を、プログラムチェンジにより指定されている音色に変更する処理が行われる。
【0038】
また、ステップS15にて行われるその他処理においては、表示器28上に音源制御パネルを表示したり、この音源制御パネル上での操作に応じて、ハード音源の音色の選択処理や楽音パラメータの制御が行われる。さらに、タイマイベントが入力された際には、タイマイベントに応じて楽音にビブラートを付与するLFOの制御や、エンベロープの制御等が行われる。
上記したステップS14あるいはステップS15の処理が終了すると、ステップS11に戻って、ステップS11ないしステップS15の処理が繰り返し行われる。そして、起動要因▲3▼が検出されるとステップS16に分岐して、このメインルーチンを終了させるための所定の終了処理が実行されて、メインルーチンは終了される。
【0039】
図5は、CPU21により実行されるソフト音源として構成されているMIDIドライバ2(ソフト音源)、MIDIドライバ3(ソフト音源)およびMIDIドライバ4(ソフト音源)のメインルーチンのフローチャート(STGドライバメイン)である。このメインルーチンは、MIDIドライバ2(ソフト音源)、MIDIドライバ3(ソフト音源)あるいはMIDIドライバ4(ソフト音源)がOS2にドライバとしてインストールされている場合には、OS2の立ち上げ時に起動され、統合ドライバ3にMIDIドライバ2(ソフト音源)、MIDIドライバ3(ソフト音源)あるいはMIDIドライバ4(ソフト音源)の各ドライバが登録されている場合には、統合ドライバ3から各ドライバのオープンが指示されたときに起動される。
【0040】
このメインルーチンが起動されると、ステップS20において音楽ソフト1により要求されるMIDIドライバ2(ソフト音源)、MIDIドライバ3(ソフト音源)および/またはMIDIドライバ4(ソフト音源)の初期設定が行われる。この初期設定では、RAM23上の記憶領域の確保、各ドライバルーチンのロード、レジスタの初期設定等が行われる。
【0041】
初期設定が終了すると、ステップS21において起動要因がチェックされる。起動要因としては、以下の要因がある。
▲1▼統合ドライバ3が開いたインターフェースIF11(MIDI out API)あるいはインターフェースIF12(MIDI out API),もしくは、OS2に準備されているインターフェースIF2(MIDI out API)を介してMIDIメッセージが供給されたこと。すなわち、音楽ソフト1からMIDIメッセージが供給されたこと。
▲2▼規格準拠のMIDIドライバ(ソフト音源)の場合は、統合ツールライブラリ4に供えられたタイマ処理手段4−2から楽音生成タイミングを示すトリガが供給されたこと。また、規格非準拠のMIDIドライバ(ソフト音源)の場合は、例えば、OS2に一定時間おきの割り込みを発生させ、この割り込みがトリガして供給されたこと。
▲3▼表示器28に表示された音源設定パネルにおける入力イベントや、キーボード29のコマンド入力イベントが検出されたこと。また、タイマイベントが入力されたこと。
▲4▼メインルーチン終了コマンドが入力されたこと。
【0042】
次いで、ステップS22にて上記した起動要因があるか否かが判定されて、起動要因▲1▼〜▲4▼のいずれかが発生するまで、ステップS21の処理が繰り返し行われる。そして、起動要因ありとステップS22にて判定されると、ステップS23にて上記いずれの起動要因か判定されて、その起動要因に応じた処理が行われる。
例えば、起動要因▲1▼が発生されたと検出されると、ステップS24に進んでMIDI処理が行われ、起動要因▲2▼が発生されたと検出されると、ステップS25に進んで楽音生成処理が行われ、起動要因▲3▼が発生されたと検出されるとステップS26に進んでその他処理が行われ、起動要因▲4▼が発生されたと検出されると、ステップS27に進んで終了処理が行われる。
【0043】
ここで、インターフェースIF11,インターフェースIF12、インターフェース2を使用する場合、音楽ソフト1ないし統合ドライバ3は、その使用に先立って各インターフェースに対するオープンを指示しなければならない。例えば、統合ドライバ3が規格準拠MIDIドライバ2,3(ソフト音源)のインターフェースIF11,IF12のオープンを指示したとき、そのインターフェースIF11,IF12がオープンされ、同時に各MIDIドライバで生成する楽音波形データの出力先としてストリーム1,2がそれぞれオープンされる。また、統合ドライバ3が、規格非準拠MIDIドライバ4(ソフト音源)のインターフェースIF2のオープンを指示したとき、そのインターフェースIF2がオープンされ、楽音波形データの出力先としてインターフェースIF3が同時にオープンされる。そして、オープンされたインターフェースIF11,IF12,IF2を通じてMIDIメッセージが供給され、起動要因▲1▼が発生する。
【0044】
ステップS24にて行われるMIDI処理では、MIDIメッセージのノートオンイベントに基づくノートオン処理や、ノートオフイベントに基づくノートオフ処理が含まれる。ノートオン処理では、ノートオンイベントの入力に応じてソフト音源に割り当てるチャンネル割り当てが行われ、割り当てたチャンネル用として設定されているレジスタに、入力されたノートオンに応じた楽音パラメータが設定されると共に、同チャンネルに対してノートオンが指示される。ソフト音源の当該チャンネルでは、該ノートオンに応じて該楽音パラメータに基づいた楽音の生成が開始される。なお、設定されるパラメータは、演奏パートの選択音色、ノートオンイベントで指定される音高、ノートオンイベントで指定されるベロシティに応じて決定される。また、ノートオフ処理では、ソフト音源のチャンネルの中で、ノートオフイベントに応じた楽音を生成中のチャンネルを探索し、見つかったチャンネルにノートオフを指示するようにする。また、プログラムチェンジが供給された際には、指定された演奏パートの選択音色を、プログラムチェンジにより指定されている音色に変更する処理が行われる。
【0045】
また、ステップS25にて行われる楽音生成処理においては、タイマ処理手段4−2ないしOS2から供給されたトリガのタイミングで、複数サンプリング周期分の楽音波形データの生成を開始する。この際の、楽音波形データのサンプリング周波数は、当該ソフト音源において決定される所定のサンプリング周波数Fsとされる。また、単独で起動される規格非準拠のMIDIドライバ4(ソフト音源)の場合は、さらに、フレームを単位とする生成された楽音波形データの収集処理が行われ、フレームが完成するとインタフェースIF3を通じて完成されたフレームのWAVE処理手段4−1への受け渡しの制御も行われる。さらにまた、統合ドライバ3から起動される規格準拠のMIDIドライバ2(ソフト音源)およびMIDIドライバ3(ソフト音源)の場合は、生成された楽音波形データのフレームを単位とする収集処理を行うことなく、そのまま統合ドライバ3のWAVE処理手段4にストリーム1あるいはストリーム2を通じて楽音波形データが渡される。
【0046】
ステップS26にて行われるその他処理においては、表示器28上に音源制御パネルを表示したり、この音源制御パネル上でのキーボードあるいはマウスの操作に応じて、ソフト音源の音色の選択処理や楽音パラメータの制御が行われる。さらに、タイマイベントが入力された際には、タイマイベントに応じて楽音にビブラートを付与するLFOの制御や、エンベロープの制御等が行われる。
上記したステップS24、ステップS25あるいはステップS26の処理が終了すると、ステップS21に戻って、ステップS21ないしステップS26の処理が繰り返し行われる。そして、起動要因▲4▼が検出されるとステップS27に分岐して、このメインルーチンを終了させるための所定の終了処理が実行されて、メインルーチンは終了される。
【0047】
図6は、CPU21により実行される統合ドライバのメインルーチンのフローチャート(統合ドライバメイン処理)である。統合ドライバはOS2にMIDIドライバとしてインストールされており、このメインルーチンはOS2の立ち上げ時に起動される。
この統合ドライバのメインルーチンが起動されると、ステップS30にて初期設定が行われ、次いでステップS31にてオンするMIDIドライバがあるか否かが判定される。オンするMIDIドライバとしては、音楽ソフト1から要求されるMIDIドライバをオープンしたり、前回起動したMIDIドライバをオープンするようにする。ここで、オープンするMIDIドライバがあると判定されると、ステップS32以降に進んで、MIDIドライバオープン処理が行われる。
【0048】
MIDIドライバオープン処理におけるステップS32では、オープンするMIDIドライバの種類が判定されて、判定された種類のMIDIドライバがオープンされるようになる。例えば、ステップS32にてハード音源用のMIDIドライバと判定されると、ステップS33に進んでMIDIドライバ1(ハード音源)が探索されて、MIDIドライバ1(ハード音源)を開く処理(図4参照)が行われる。また、ステップS32にて規格準拠のソフト音源のMIDIドライバと判定されると、ステップS34に進んでMIDIドライバ2(ソフト音源)やMIDIドライバ3(ソフト音源)が探索されて、MIDIドライバ2(ソフト音源)やMIDIドライバ3(ソフト音源)を開く処理(図5参照)が行われる。さらに、ステップS32にて規格非準拠のソフト音源のMIDIドライバと判定されると、ステップS35に進んでMIDIドライバ4(ソフト音源)が探索されて、MIDIドライバ4(ソフト音源)を使用するための準備が行われる。なお、各MIDIドライバのオープン時に、それぞれ対応するインターフェースIF11,IF12ないしインターフェースIF2のオープンを同時に行うようにしても良い。
【0049】
上記したステップS31ないしステップS35の処理が繰り返し行われることにより、オンするすべてのMIDIドライバのオープン処理が行われるようになる。したがって、この際にはステップS31においてNOと判定されてステップS36に進むようになる。
ステップS36では起動要因がチェックされる。起動要因としては、以下の要因がある。
▲1▼OS2に準備されているインターフェースIF1(MIDI out API)を介してMIDIメッセージが供給されたこと。すなわち、音楽ソフト1からMIDIメッセージが供給されたこと。
▲2▼統合ツールライブラリ4に備えられたタイマ処理手段4−2にトリガを送出するトリガタイマ割り込みがかけられたこと。
▲3▼MIDIドライバから生成された楽音波形データを受け取ったこと。
▲4▼表示器28に表示された音源設定パネルにおける入力イベントや、キーボード29のコマンド入力イベントが検出されたこと。
▲5▼メインルーチン終了コマンドが入力されたこと。
【0050】
次いで、ステップS36にて上記した起動要因があるか否かが判定されて、起動要因▲1▼〜▲5▼のいずれかが発生するまで、ステップS36の処理が繰り返し行われる。そして、起動要因ありとステップS37にて判定されると、ステップS38にて上記いずれの起動要因か判定されて、その起動要因に応じた処理が行われる。
例えば、起動要因▲1▼が発生されたと検出されると、ステップS39に進んでMIDI処理が行われ、起動要因▲2▼が発生されたと検出されると、ステップS40に進んでトリガタイマ割込処理が行われ、起動要因▲3▼が発生されたと検出されるとステップS41に進んでWAVE処理が行われ、起動要因▲4▼が発生されたと検出されると、ステップS42に進んでその他処理が行われ、起動要因▲5▼が発生されたと検出されると、ステップS43に進んで終了処理が行われる。
ここで、インターフェースIF1を使用する場合、音楽ソフト1は、その使用に先立って該インターフェースに対するオープンを指示しなければならない。さらに、インターフェースIF1がオープンされたとき、統合ドライバ3はインターフェースIF1から入力するMIDIメッセージの出力先としてインターフェースIF11,IF12,IF2のオープン指示を行う。オープンされたインターフェースIF1を通じてMIDIメッセージが供給され起動要因▲1▼が発生する。
【0051】
ステップS39にて行われるMIDI処理では、プログラムチェンジ等のMIDIメッセージにかかる音色切換イベントが供給された際に、図8に示す音色切換イベント処理が起動されて実行される。また、MIDIメッセージにかかるノートオンイベントやノートオフイベントが供給された際には、図9に示すその他イベント処理が起動されて実行される。さらに、統合ドライバにおいては供給されたMIDIメッセージを、指定されたMIDIドライバに振り分ける処理を行っており、この処理に関してMIDIメッセージにかかるイベントデータを送出するタイミングとなったときは、図10に示すタイマd割込処理が起動されて実行される。
【0052】
MIDIメッセージにおいてプログラムチェンジやバンクセレクトが供給されると、図8に示す音色切換イベント処理が起動され、ステップS70にてMIDIメッセージにかかるプログラムチェンジがPCとされてレジスタに入れられ、MIDIメッセージにかかるバンクセレクトがBSとされてレジスタに入れられ、プログラムチェンジおよびバンクセレクトにかかるMIDIチャンネル(MIDIch)番号がpとされてレジスタに入れられる。次いで、ステップS71にてプログラムチェンジPCとバンクセレクトBSにより音色マップ上で指定される音色に対応するMIDIドライバが判定され、判定されたMIDIドライバ名がD(p)とされてレジスタに入れられる。
ここで、前記音色マップには、プログラムチェンジPCとバンクセレクトBSで指定される音色に最適な音源(=最適なMIDIドライバ)と、最適な音源がない場合に使用される代替音源(=代替MIDIドライバ)を示す情報が記憶されている。これにより、指定された音色のソフト音源がない場合に、その音色の演奏を代替音源とされた他のソフト音源あるいはハード音源を使用して行うことができるようになる。また、16MIDIチャンネル分のデータD(p)には、それぞれ、各パートの楽音生成に使用されるMIDIドライバの名前が記憶される。
【0053】
そして、ステップS72に進んでMIDIドライバD(p)が統合ドライバに登録されたMIDIドライバ内に存在しているか否かが判定される。MIDIドライバD(p)が統合ドライバに登録されていると、ステップS72ではYESと判定されてステップS74に進むが、登録されていない場合は、ステップS72においてNOと判定されてステップS73に分岐する。分岐したステップS73では登録されていないMIDIドライバD(p)を代替することのできるMIDIドライバが指定されてそのMIDIドライバ名がD(p)とされてレジスタに入れられる。
次いで、ステップS74に進んで、MIDIドライバD(p)がオンされておらず、新規にオンするMIDIドライバか否かが判定される。ここで、レジスタに入れられたドライバ名がD(p)のMIDIドライバがオープンされていないと、ステップS74にてYESと判定されてステップS75に分岐してMIDIドライバD(p)がオープンされ、ステップS76に進む。また、既にMIDIドライバD(p)がオープンされている場合は、ステップS75はスキップされてステップS76に進む。
【0054】
ステップS76では、オープンされているMIDIドライバの中に使用していないMIDIドライバが存在しているか否かが判定され、不使用のMIDIドライバがある場合は、ステップS77にて不使用のMIDIドライバをクローズし、ステップS78に進む。ここで、OS2にインストールされているMIDIドライバのクローズはできないので、ステップS77ではそれ以外のMIDIドライバについてのみクローズを行う。また、不使用のMIDIドライバがないと判定された場合は、ステップS78に進んで上記ステップS72ないしステップS77の処理内容に応じてMIDIドライバの登録マップ中の各MIDIドライバの動作中/停止中を示すデータを更新する。次いで、ステップS79にてMIDIドライバD(p)に割り当てられた送出バッファにレジスタに入れられているプログラムチェンジPCとバンクセレクトBSの内容が書き込まれて、音色切換イベント処理は終了される。
これにより、演奏中においてもプログラムチェンジおよびバンクセレクトによりMIDIドライバの切り換えを行うことができると共に、その時々に使用されているMIDIドライバだけがオープンされ、RAM23を効率よく使用することができる。
【0055】
また、ステップS39にいて行われるMIDI処理で、音色切換イベント以外のMIDIメッセージが供給された際には、図9に示すMIDI処理におけるその他イベント処理が起動され、ステップS80にてMIDIメッセージにかかるイベントデータがEDとされてレジスタに入れられ、そのイベントデータのMIDIチャンネル(MIDIch)番号がpとされてレジスタに入れられる。ここで、音色切換イベント以外のMIDIメッセージとは、ノートオン、ノートオフ、ピッチベンド、アフタタッチ等のメッセージである。次いで、ステップS81にてMIDIチャンネル番号pのMIDIドライバD(p)の送出バッファにイベントデータEDが書き込まれて、その他イベント処理は終了される。
【0056】
さらに、音色切換イベント処理やその他イベント処理において設定されたMIDIドライバD(p)の送出バッファにプログラムチェンジPC、バンクセレクトBS、および、イベントデータEDが書き込まれた後に、送出バッファに格納されたデータをそれぞれ遅延させてMIDIドライバD(p)に向けて送出するようにされる。この送出タイミングは、設定されたMIDIドライバD(p)にデータを供給してから対応する楽音波形が出力されるまでの演算遅延時間に基づく遅延時間とされ、複数のMIDIドライバから送出される生成された楽音波形データの時間が揃うように、演算遅延時間の大きいMIDIドライバには短い遅延時間ですぐに送出するようにされ(送出バッファにおける送出遅延時間は短い)、演算遅延時間の小さいMIDIドライバには所定時間遅延して送出するようにされる。送出バッファに各データを格納したタイミングから、対応するMIDIドライバD(p)に応じて設定された遅延時間が経過したタイミングでタイマd割込が発生する。
【0057】
タイマd割込が発生されると、図10に示すタイマd割込処理が起動され、ステップS90にてタイマd割込で指定されているMIDIドライバ名がdとされる。次いで、ステップS91にてMIDIドライバdに割り当てられている送出バッファから遅延されたイベントデータEDが取り出され、ステップS92にて取り出された遅延されたイベントデータEDをMIDIドライバdに送出する。
ステップS39の各MIDI処理において、入力するMIDIメッセージをMIDIドライバ毎に用意された送出バッファに書き込み、タイマd割り込み処理で対応するMIDIドライバに送出することにより、MIDIメッセージの各MIDIドライバに対する振り分けを行うことができる。この際、送出バッファに書き込まれる1つ1つのデータを、各送出バッファ毎に設定された遅延時間分遅延してから送出するようになっているため、MIDIドライバ毎の演算遅延時間の相違による各MIDIドライバの楽音波形データ間の時間ずれを解消することができる。
【0058】
図6に示す統合ドライバのメインルーチンに戻り、統合ツールライブラリ4に備えられたタイマ処理手段4−2にトリガを送出するトリガタイマ割り込みがかけられた際には、ステップS40にて図11に示すトリガタイマ割込処理が起動される。トリガタイマ割込処理が起動されると、ステップS100にてかけられたトリガタイマ割り込みのタイミングでトリガをかけるべき規格準拠のMIDIドライバ(ソフト音源)にトリガが送出される。このMIDIドライバは、複数登録されているMIDIドライバの内の最優先のMIDIドライバとされる。この際の最優先のMIDIドライバは、複数のMIDIドライバ(ソフト音源)のうち楽音波形データの生成が最も遅れているMIDIドライバとされる。また同程度の遅れの複数MIDIドライバ(ソフト音源)がある場合には、重要なパート(例えば、ソロパート)が割り当てられているMIDIドライバとされる。
【0059】
次いで、ステップS101にて、他のMIDIドライバにも当該タイミングでトリガを送出するか否かが、その時点の各MIDIドライバ(ソフト音源)の楽音波形データ生成状況と、他のアプリケーションも含めたCPU21の使用率に基づいて決定される。そして、他のMIDIドライバにもトリガを送出すると判定された場合には、ステップS100に戻り、その時点において最優先のMIDIドライバにトリガが送出される。ステップS101では、各MIDIドライバ(ソフト音源)の楽音波形データの生成が十分である場合、または、十分ではないが他のアプリケーションを先に実行する必要がある場合にトリガを送出しないと決定され、このトリガタイマ割込処理を終了する。
なお、トリガタイマ割込処理の起動周期は、例えば10msとされる。
【0060】
図6に示す統合ドライバのメインルーチンに戻り、統合ドライバがMIDIドライバにより生成された楽音波形データを受け取った際には、ステップS41にて図12に示すWAVE処理が起動される。ここで、MIDIドライバが規格準拠のソフト音源である場合は、統合ドライバ3はストリーム1,2を通じて楽音波形データを受け取り、規格非準拠のソフト音源である場合は、インターフェースIF3を通じて楽音波形データを受け取る。WAVE処理が起動されると、ステップS110にて受け取った楽音波形データがWとしてレジスタに入れられると共に、楽音波形データを生成した指定されているMIDIドライバ名がdとされてレジスタに入れられる。次いで、ステップS111にて受け取った楽音波形データのサンプリング周波数が規定される所定のサンプリング周波数Fsと異なる場合には、それを該サンプリング周波数Fsに変換する。さらに、受け取った楽音波形データと、他のMIDIドライバから生成されて受け取られている楽音波形データとの加算が行われる。
【0061】
この加算は、前回の当該MIDIドライバにより生成された楽音波形データの位置SP(d)以降に、受け取った楽音波形データを足し込むことにより行われる。すなわち、前回の当該MIDIドライバにより生成された楽音波形データのバッファメモリ上の最終の位置をSP(d)としたときに、位置SP(d)以降のバッファメモリの位置に受け取った楽音波形データを書き込むのであるが、当該位置に既に他のMIDIドライバにより生成された楽音波形データが書き込まれている場合には、書き込まれている楽音波形データと加算した後に当該位置に書き込むようにする。これにより、複数のMIDIドライバにおいて生成された楽音波形データの加算を行うことができる。
【0062】
続けて、ステップS112にて前回の当該MIDIドライバにより生成された楽音波形データの最終の位置SP(d)に受け取った楽音波形データの進行量が加算されて、MIDIドライバdにおける新たな楽音波形データの最終の位置SP(d)とされる。
なお、この楽音波形データの最終の位置SP(d)はMIDIドライバごとに準備されており、MIDIドライバごとに前記した処理が行われる。
ステップS112の処理が終了すると、ステップS113に進んで各ストリームの進行状況がバッファメモリに格納されている楽音波形の最終の位置SP(d)からチェックされる。このチェックはMIDIドライバへのトリガ送出の優先順位を制御するために行われ、楽音波形データの生成が遅れているMIDIドライバの優先度が高くされる。この結果、前記したトリガタイマ割込処理において、トリガ送出が楽音波形データの生成が遅れているMIDIドライバに優先的に行われるようになる。なお、ステップS113の処理は規格準拠のMIDIドライバ(ソフト音源)が対象であり、規格非準拠のMIDIドライバについては処理されない。
【0063】
次いで、ステップS114にて作成中のフレームにおいて1フレーム分の楽音波形データが使用中のすべてのMIDIドライバにおいて生成されたか否かが判定され、生成されている場合には1フレーム完成されたとしてステップS115に分岐する。そして、ステップS115にて完成した1フレーム分の楽音波形データが、インターフェースIF4を通じてWAVEドライバに渡されて再生予約される。また、1フレーム分の楽音波形データが完成していない場合には、そのままWAVE処理が終了される。この際には、次の楽音波形データが受け取られて、WAVE処理が再起動され、1フレーム分の楽音波形データの生成処理が再度行われるが、1フレーム分の楽音波形データが完成するまでは、ステップS115の処理はスキップされる。
なお、WAVEドライバに再生予約された楽音波形データは、サンプリング周期(1/Fs)毎にバッファメモリから読み出されて再生されるようになる。
【0064】
図6に示す統合ドライバのメインルーチンに戻り表示器28に表示された音源設定パネルにおける入力イベントや、キーボード29のコマンド入力イベントが検出された際には、ステップS42にてその他処理が起動される。その他処理においては、図7(a)に示すMIDIドライバの登録処理や図7(b)に示すMIDIドライバの削除処理等が行われる。
この場合、表示器28に表示されたMIDIドライバの登録/削除パネルにおいて、登録ボタンがクリックされると、登録処理が起動されて、ステップS50にて登録するMIDIドライバの指定が行われる。このMIDIドライバの指定は、例えば、パネルに表示されているMIDIドライバ名をクリックすることにより行われる。次いで、ステップS51にて登録が指定されたMIDIドライバが登録マップに登録される。
【0065】
登録マップは、図7(c)に示すようにMIDIドライバの登録数データと、「ドライバ1データ」、「ドライバ2データ」、「ドライバ3データ」、「ドライバ4データ」・・・で示されるように登録されたMIDIドライバのデータとから構成されている。また、MIDIドライバのデータとしては、RAM23中にロードされたMIDIドライバプログラムのアドレス、動作中/停止中の状態、トリガ周期、サンプリング周波数、楽音波形データの演算遅延時間(ディレイ量)等とされる。なお、ハード音源用のMIDIドライバにおいてはトリガ周期データは記入されていない。このトリガ周期データは、上述したトリガタイマ割込処理において各MIDIドライバ(ソフト音源)の楽音波形データ生成状況の判断に使用される。つまり、前記位置SP(d)以降のその時点で生成すべき楽音波形データ量が、トリガ周期に相当する量より少なければ、そのMIDIドライバに対してはトリガをかける必要性がない。また、楽音波形データの演算遅延時間は、一番遅いMIDIドライバにシステムのディレイ量を合わせるために記入されており、前述したように各MIDIドライバに対応した送出バッファにおけるイベントデータEDの遅延時間を制御するために使用される。
【0066】
登録処理に戻り、ステップS51の処理が終了すると、ステップS52に進んで登録されたMIDIドライバの楽音波形データの演算遅延時間(ディレイ量)が検出されて、検出されたディレイ量が登録マップに記入される。ここで、演算遅延時間の検出は、各MIDIドライバに対してテスト用のノートオンイベントを送出し、各MIDIドライバで生成される楽音波形データにその応答が現れるまでの時間を測定して行われる。次いで、ステップS53にてシステムのディレイ量が登録マップに記入されている全てのMIDIドライバのディレイ量の内、最も大きいディレイ量に決定され、登録処理は終了する。このシステムのディレイ量と各MIDIドライバの演算遅延時間との差が、各MIDIドライバに対応した送出バッファにおける送出遅延時間となる。
【0067】
また、表示器28に表示されたMIDIドライバの登録/削除パネルにおいて、削除ボタンがクリックされると、図7(b)に示す削除処理が起動され、ステップS60にて削除するMIDIドライバが指定される。このMIDIドライバの指定は、例えば、パネルに表示されているMIDIドライバ名をクリックすることにより行われる。次いで、ステップS61にて削除が指定されたMIDIドライバが登録マップから削除され、削除処理は終了する。この際、登録マップから削除されるMIDIドライバが動作中の場合は、対応するインターフェースおよびストリームをクローズし、さらに、該MIDIドライバが統合ドライバ3によりオープンされたものであれば該MIDIドライバもクローズする。
以上の処理が、図6に示す統合ドライバのメインルーチンで行われる処理である。
【0068】
なお、前記した本発明の実施の形態においては、いずれのパートでも使用されなかったMIDIドライバをクローズするようになっていたが、必ずしもクローズしなくても良い。開いたままにしておけば、素早い切り換えが可能になる。
また、前記した本発明の実施の形態におけるWAVE処理手段は、生成された楽音波形データをOS2のマルチメディア関数で供給されるインターフェースIF4を通じてWAVEドライバに渡すようにしていたが、該マルチメディア関数を介さずに、WAVEドライバに専用の別インターフェースを用意し、それを通じて渡すようにしても良い。
【0069】
さらに、MIDIメッセージにおけるイベントデータのフォーマットは、演奏イベントの発生時刻を1つ前のイベントからの時間で表した「イベント+相対時間」、演奏イベントの発生時刻を曲や小節内における絶対時間で表した「イベント+絶対時間」、音符の音高と符長あるいは休符と休符長で演奏データを表した「音高(休符)+符長」、演奏の最小分解能毎にメモリの領域を確保し、演奏イベントの発生する時刻に対応するメモリ領域に演奏イベントを記憶した「ベタ方式」等、どのような形式でもよい。
また、イベントデータは、複数のチャンネルのデータが混在した形式であってもよいし、各チャンネルのデータがトラックごとに別れているような形式であってもよい。
【0070】
ところで、ハードディスク26およびリムーバブルディスク27は各種プログラムや各種データを記憶しておく記憶装置である。そして、ROM22に複数音源ドライバ用の制御プログラムが記憶されていない場合、ハードディスク26あるいはリムーバブルディスク27に複数音源ドライバ用の制御プログラムを記憶させておき、それをRAM23に読み込むことにより、ROM22に複数音源ドライバ用の制御プログラムを記憶している場合と同様の動作をCPU1に実行させるようにしてもよい。このようにすると、複数音源ドライバ用の制御プログラムの追加やバージョンアップ等を容易に行うことができるようになる。
【0071】
また、CD−ROM(コンパクトディスク−リード・オンリ・メモリ)ドライブを設け、CD−ROMに記憶されている複数音源ドライバ用の制御プログラムをハードディスク26あるいはリムーバブルディスク27にストアするようにしても良い。このように、CD−ROMを用いるようにしても複数音源ドライバ用の制御プログラムの新規インストールやバージョンアップ等を容易に行うことができる。
なお、このCD−ROMドライブに替えて、フロッピィディスク装置、光磁気ディスク(MO)装置等、様々な形態の記録メディアを利用してもよい。
【0072】
さらに、本発明のコンピュータソフトウェアを用いた複数音源ドライバの制御方法の実施に使用するハードウェア構成に通信インターフェースを付加すると、通信インターフエースを介してLAN(ローカルエリアネットワーク)やインターネット、電話回線等の通信ネットワークに接続することができ、該通信ネットワークを介して、サーバコンピュータと接続することができる。したがって、ハードディスク26やリムーバブルディスク27に複数音源ドライバ用の制御プログラムや各種データが記憶されていない場合は、サーバコンピュータから複数音源ドライバ用の制御プログラムやデータをダウンロードすることができるようになる。この際に、クライアントとなる本発明にかかるハードウェア構成は、通信インターフェース及び通信ネットワークを介してサーバコンピュータへ複数音源ドライバの制御用プログラム等の各種プログラムやデータのダウンロードを要求するためのコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやデータを、通信ネットワークを介して本発明にかかるハードウェア構成へ配信する。本発明にかかるハードウェア構成は、通信インターフエースを介して、サーバコンピュータから配信されたプログラムやデータを受信してハードディスク26やリムーバブルディスク27等の外部記憶装置に格納することにより、プログラムやデータのダウンロードを行うことができるようになる。
【0073】
【発明の効果】
本発明の複数音源ドライバの制御方法は、複数音源ドライバの制御用プログラムをオペレーティングシステムにインストールすることにより、統合ドライバをオペレーティングシステムに用意されたMIDIメッセージを授受することのできるインターフェース(MIDI out API)および楽音波形データを授受することのできるインターフェース(WAVE out API)の下に配置するようにしている。そして、統合ドライバに規格準拠のMIDIドライバを登録することができ、そのMIDIドライバを使用可能とすることができる。これにより、規格準拠のMIDIドライバを使用する際には、オペレーティングシステムにインストールした後再起動する必要がなく繁雑な作業を不要とすることができる。
【0074】
また、統合ドライバはインターフェース(MIDI out API)を通じて受け取ったMIDIメッセージ中の各パートの選択情報(プログラムチェンジおよびバンクセレクト)により、統合ドライバに登録されているMIDIドライバを切り替えることができる。したがって、演奏中においてダイナミックにMIDIドライバを切り替えることができるようになる。
さらに、規格準拠のMIDIドライバにおいては、楽音波形データの時間管理をすることなく生成された楽音波形データをストリームを通じて統合ドライバに送るようにしている。そして、統合ドライバにおいて、複数のMIDIドライバから送られた楽音波形データの時間管理を行いながら、複数のMIDIドライバから送られた楽音波形データをそれぞれ加算して1フレームの楽音波形データにまとめるようにしている。このため、各MIDIドライバにおいて楽音波形データの時間管理を行う必要がなく、そのための負担を軽減することができる。従って、CPUへの負担を軽くすることができる。
【0075】
さらに、統合ドライバは、同時に複数のMIDIドライバを使用することができるが、楽音波形データの出力先として1つのWAVEドライバを使用するだけとされるため、WAVEドライバが不足することを防止することができる。
さらにまた、規格準拠のMIDIドライバに限らず、規格非準拠のMIDIドライバも使用して楽音波形データを生成することができるので、それぞれのパートの楽音波形データをいろいろな性質を有するMIDIドライバにより生成することができるようになる。
【図面の簡単な説明】
【図1】 本発明のコンピュータソフトウェアを用いた本発明の複数音源ドライバの制御方法におけるソフトウェア構造を示す図である。
【図2】 本発明のコンピュータソフトウェアを用いた複数音源ドライバの制御方法の実施に使用するハードウェア構成を示すブロック図である。
【図3】 図2に示す波形インターフェースの詳細構成を示す図である。
【図4】 ハード音源用のMIDIドライバ1(ハード音源)のメインルーチンのフローチャート(HTGドライバメイン)を示す図である。
【図5】 アプリケーションソフトウェアであるソフト音源から構成されているMIDIドライバのメインルーチンのフローチャート(STGドライバメイン)を示す図である。
【図6】 統合ドライバのメインルーチンのフローチャート(統合ドライバメイン処理)を示す図である。
【図7】 図7(a)はMIDIドライバの登録処理のフローチャート、図7(b)はMIDIドライバの削除処理のフローチャート、図7(c)は登録マップを示す図である。
【図8】 MIDI処理で実行される音色切換イベント処理のフローチャートを示す図である。
【図9】 MIDI処理で実行されるその他イベント処理のフローチャートを示す図である。
【図10】 MIDI処理で実行されるタイマd割込処理のフローチャートを示す図である。
【図11】 WAVE処理で実行されるトリガタイマ割込処理のフローチャートを示す図である。
【図12】 WAVE処理で実行されるWAVE処理のフローチャートを示す図である。
【図13】 従来の音源システムにおけるソフトウェア構造を示す図である。
【符号の説明】
1 音楽ソフト、2 オペレーティングシステム(OS)、3 統合ドライバ、4 統合ツールライブラリ、5 MIDIドライバ1(ハード音源)、6 MIDIドライバ2(ソフト音源)、7 MIDIドライバ3(ソフト音源)、8 MIDIドライバ4(ソフト音源)、9 WAVEドライバ1、10 ハード音源、11 CODEC、20 CPUバス、21 CPU、22 ROM、23RAM、24 タイマ、25 MIDIインターフェース、26 ハードディスク、27 リムーバブルディスク、28 表示器、29 キーボード&マウス、30 波形インターフェース、31 ADC、32 DMAC1、33 Fs発生器、34 DMAC2,35 DAC

Claims (8)

  1. オペレーティングシステムにインストールされた統合ソフトが、音楽ソフトから発生される演奏データを受けて、前記統合ソフトに登録された1ないし複数の音源ドライバ手段に振り分け、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた複数サンプルの楽音波形データを起動されるごとに生成して、生成した複数サンプルの楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、前記1ないし複数の音源ドライバ手段から受け取った複数サンプルの楽音波形データを加算して、加算された複数サンプルの楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された複数サンプルの楽音波形データが再生されて楽音が発生されるようにしたことを特徴とする複数音源ドライバの制御方法。
  2. 前記統合ソフトは、前記各音源ドライバ手段から受け取った楽音波形データを、当該各音源ドライバ手段により前回生成された楽音波形データのバッファメモリ上の最終の位置に続く位置の複数サンプルの楽音波形データ足し込むことにより、前記加算を行うようにしたことを特徴とする請求項1記載の複数音源ドライバの制御方法。
  3. オペレーティングシステムにインストールされた統合ソフトに、基準サンプリング周波数の楽音波形データを生成する音源ドライバ手段と、基準サンプリング周波数とは異なるサンプリング周波数の楽音波形データを生成する音源ドライバ手段との1ないし複数の音源ドライバ手段が登録されており、
    前記統合ソフトが、音楽ソフトから発生される演奏データを受けて、前記統合ソフトに登録された前記1ないし複数の音源ドライバ手段に振り分け、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた複数サンプルの楽音波形データを起動されるごとに生成して、生成した複数サンプルの楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、受け取った複数サンプルの楽音波形データのサンプリング周波数が基準サンプリング周波数と異なっている場合は、該楽音波形データのサンプリング周波数を基準サンプリング周波数に変換し、受け取った残る基準サンプリング周波数の楽音波形データと加算して、加算された複数サンプルの楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された複数サンプルの楽音波形データが基準サンプリング周波数で再生されて楽音が発生されるようにしたことを特徴とする複数音源ドライバの制御方法。
  4. オペレーティングシステムにインストールされた統合ソフトが、音楽ソフトから発生される演奏データを受けて、前記統合ソフトに登録された1ないし複数の音源ドライバ手段に振り分け、
    前記統合ソフトは、タイマ割り込みに応じて登録された前記1ないし複数の音源ドライバ手段に対して、楽音波形データの生成開始のトリガを順次発生し、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた複数サンプルの楽音波形データを前記トリガに応じて生成して、生成した複数サンプルの楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、前記1ないし複数の音源ドライバ手段から受け取った複数サンプルの楽音波形データを加算して、加算された複数サンプルの楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された複数サンプルの楽音波形データが再生されて楽音が発生されるようにしたことを特徴とする複数音源ドライバの制御方法。
  5. オペレーティングシステムにインストールされた統合ソフトが、音楽ソフトから発生される演奏データを受けて、前記統合ソフトに登録された1ないし複数の音源ドライバ手段に振り分け、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた複数サンプルの楽音波形データを起動されるごとに生成して、生成した複数サンプルの楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、前記1ないし複数の音源ドライバ手段から受け取った複数の楽音波形データのタイミングを揃えて加算して、加算された複数サンプルの楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された複数サンプルの楽音波形データが再生されて楽音が発生されるようにしたことを特徴とする複数音源ドライバの制御方法。
  6. オペレーティングシステムにインストールされた統合ソフトが、音楽ソフトから発生される複数パートの演奏データを受けて、前記統合ソフトに登録された1ないし複数の音源ドライバ手段の内の前記パート毎に選択されている音源ドライバ手段にそれぞれ振り分け、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた複数サンプルの楽音波形データを起動されるごとに生成して、生成した複数サンプルの楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、前記1ないし複数の音源ドライバ手段から受け取った複数の楽音波形データを加算して、加算された複数サンプルの楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された複数サンプルの楽音波形データが再生されて楽音が発生されるようにしたことを特徴とする複数音源ドライバの制御方法。
  7. ユーザの操作に応じて登録される前記音源ドライバ手段を、前記統合ソフトに追加あるいは削除することができることを特徴とする請求項1ないし6のいずれかに記載の複数音源ドライバの制御方法。
  8. オペレーティングシステムにインストールされた統合ソフトが、音楽ソフトから発生される演奏データを受けて、前記統合ソフトに登録された1ないし複数の音源ドライバ手段に振り分け、
    前記1ないし複数の音源ドライバ手段は、それぞれ振り分けられた前記演奏データに応じた楽音波形データを起動されるごとに生成して、生成した楽音波形データを前記統合ソフトに送り、
    前記統合ソフトは、前記1ないし複数の音源ドライバ手段から受け取った楽音波形データを加算して、加算された楽音波形データをウェーブドライバ手段に渡し、
    該ウェーブドライバ手段において、前記加算された楽音波形データが再生されて楽音が発生されるようになされており、
    ユーザの操作に応じて登録される前記音源ドライバ手段を、前記統合ソフトに追加あるいは削除することができるようにしたことを特徴とする複数音源ドライバの制御方法。
JP2002349746A 2002-12-02 2002-12-02 複数音源ドライバの制御方法 Expired - Fee Related JP3945393B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002349746A JP3945393B2 (ja) 2002-12-02 2002-12-02 複数音源ドライバの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002349746A JP3945393B2 (ja) 2002-12-02 2002-12-02 複数音源ドライバの制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP08510698A Division JP3409686B2 (ja) 1998-03-17 1998-03-17 複数音源ドライバの制御方法、および、複数音源ドライバの制御用プログラムが記録された記録媒体、ならびに、複数生成プログラムの制御方法

Publications (3)

Publication Number Publication Date
JP2003186470A JP2003186470A (ja) 2003-07-04
JP2003186470A5 JP2003186470A5 (ja) 2006-11-09
JP3945393B2 true JP3945393B2 (ja) 2007-07-18

Family

ID=27606832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002349746A Expired - Fee Related JP3945393B2 (ja) 2002-12-02 2002-12-02 複数音源ドライバの制御方法

Country Status (1)

Country Link
JP (1) JP3945393B2 (ja)

Also Published As

Publication number Publication date
JP2003186470A (ja) 2003-07-04

Similar Documents

Publication Publication Date Title
USRE37367E1 (en) Computerized music system having software and hardware sound sources
JP3894062B2 (ja) 楽曲データ配信装置、楽曲データ受信装置及びプログラム
USRE41757E1 (en) Sound source system based on computer software and method of generating acoustic waveform data
EP1260964B1 (en) Music sound synthesis with waveform caching by prediction
US6140566A (en) Music tone generating method by waveform synthesis with advance parameter computation
JP3235409B2 (ja) ミュージックシステム、音源および楽音合成方法
US7381879B2 (en) Sound waveform synthesizer
JP3409686B2 (ja) 複数音源ドライバの制御方法、および、複数音源ドライバの制御用プログラムが記録された記録媒体、ならびに、複数生成プログラムの制御方法
US6570082B2 (en) Tone color selection apparatus and method
CN110299128A (zh) 电子乐器、方法、存储介质
KR100372311B1 (ko) 전자악기
JPH09114462A (ja) 楽音発生方法
JPH11126070A (ja) 楽音生成方法
EP1005015B1 (en) Tone waveform generating method and apparatus based on software
US6852918B2 (en) Automatic accompaniment apparatus and a storage device storing a program for operating the same
JP3945393B2 (ja) 複数音源ドライバの制御方法
US6754351B1 (en) Music apparatus with dynamic change of effects
KR100302626B1 (ko) 악음생성장치 및 방법
JP3637577B2 (ja) 楽音生成方法
JP3409642B2 (ja) 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体
JP2000081883A (ja) 音楽処理手段の設定方法、波形デ―タ生成手段の設定方法、楽音生成方法、および、プログラムが記録された記録媒体
JP4096952B2 (ja) 楽音発生装置
JPH10312189A (ja) 楽音発生方法
JP3705203B2 (ja) 楽音発生方法
JP2000099056A (ja) カラオケ装置、楽曲データ配信方法、楽曲データ配信装置および音源装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061220

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: 20070320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070402

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110420

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120420

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130420

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140420

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees