(57)【要約】【課題】ある発音チャンネルで、発生すべき波形データが転送中で発音処理不可能な状態のときに発音制御データが入力された場合にも、波形データの転送終了を待つことなく次の処理を続けることができ、その他の発音チャンネルの発音制御処理を妨げることなく楽音を形成することができるようにする。【解決手段】第２の記憶手段から第１の記憶手段へ波形データの転送中で発音チャンネルにおいて発音処理が不可能な状態において、発音処理が不可能な発音チャンネルに発音制御データが入力された場合に、発音制御データを発音制御データ記憶手段に記憶させ、第２の記憶手段から第１の記憶手段へ波形データの転送終了後に、発音制御データ記憶手段に記憶させた発音制御データを読み出す制御手段と有するようにしたものである。【選択図】        図２
2005346110.tif 000002
【特許請求の範囲】
【請求項１】
複数の波形データを記憶する第１の記憶手段と、
前記第１の記憶手段よりも遅いアクセスタイムで前記第１の記憶手段に波形データを転送可能な複数の波形データを記憶する第２の記憶手段と、
前記第１の記憶手段に記憶された波形データを読み出して楽音を形成する複数の発音チャンネルを備えた楽音形成手段と、
前記複数の発音チャンネル毎に未処理発音制御データを記憶する発音制御データ記憶手段と、
前記第２の記憶手段から前記第１の記憶手段へ波形データの転送中で発音チャンネルにおいて発音処理が不可能な状態において、前記発音処理が不可能な発音チャンネルに発音制御データが入力された場合に、前記発音制御データを前記発音制御データ記憶手段に記憶させ、前記第２の記憶手段から前記第１の記憶手段へ波形データの転送終了後に、前記発音制御データ記憶手段に記憶させた前記発音制御データを読み出す制御手段と
を有することを特徴とする楽音形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音形成装置に関し、さらに詳細には、パーソナルコンピュータやワークステーションなどの汎用のコンピュータ上でソフトウェアによりシンセサイザを構築する際に用いて好適な楽音形成装置に関する。
【背景技術】
【０００２】
従来、楽音を形成するためには、楽音形成用の専用のハードウェア、所謂、電子楽器を用いることが必要であった。
【０００３】
ところが、近年、汎用のコンピュータに高性能のＣＰＵおよびＣＰＵが処理したデータをアナログ信号として外部へ出力するためのＤ／Ａ変換器（デジタル−アナログ変換器）が搭載されるようになってきたことに伴い、専用のハードウェアを用いることなしに、汎用のコンピュータ上でソフトウェアによりシンセサイザを構築し、リアルタイムで楽音を形成することが提案されている。
【０００４】
ここで、汎用のコンピュータ上でソフトウェアによりシンセサイザを構築し、リアルタイムで楽音を形成する処理を行うためには、一般に楽音を形成するための波形データが大量に必要とされることから、こうした大量の波形データを予めハードディスクなどのアクセスタイムは遅いが容量が大きな記憶手段に記憶しておき、こうしたハードディスクなどの記憶手段に記憶された波形データの中から処理に必要なだけの波形データを、アクセスタイムは早いが容量が小さなランダムアクセスメモリ（ＲＡＭ）などの記憶手段へ転送し、ＲＡＭなどの記憶手段に記憶された波形データを読み出すことによって、リアルタイムで楽音を形成することが考えられる。
【０００５】
しかしながら、汎用のコンピュータ上でソフトウェアによりシンセサイザを構築し、リアルタイムで楽音を形成する処理を行う際において、ハードディスクなどの記憶手段からＲＡＭなどの記憶手段に波形データを転送するには所定時間が必要であるため、楽音形成を指示された際に当該転送のための転送時間のタイムラグなしに楽音を形成するためには、楽音形成を指示されたとき毎にハードディスクなどの記憶手段からＲＡＭなどの記憶手段に波形データを転送する必要がないように、ＲＡＭなどの記憶手段に効率よく波形データを記憶しておく必要があるという問題点があった。
【０００６】
また、ある発音チャンネルで、発生すべき波形データが転送中で発音処理不可能な状態のときに発音制御データが入力された場合には、波形データの転送終了を待たなければ次の処理を続けることができず、その他の発音チャンネルの発音制御処理を妨げるという問題点があった。
【０００７】
なお、本願出願人が特許出願のときに知っている先行技術は、文献公知発明に係る発明ではないため、記載すべき先行技術文献情報はない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記したような問題点に鑑みてなされたものであり、その目的とするところは、汎用のコンピュータ上でソフトウェアによりシンセサイザを構築し、リアルタイムで楽音を形成する処理を行う際に、ある発音チャンネルで、発生すべき波形データが転送中で発音処理不可能な状態のときに発音制御データが入力された場合にも、波形データの転送終了を待つことなく次の処理を続けることができ、その他の発音チャンネルの発音制御処理を妨げることなく楽音を形成することができるようにした楽音形成装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明による楽音形成装置は、複数の波形データを記憶する第１の記憶手段と、上記第１の記憶手段よりも遅いアクセスタイムで上記第１の記憶手段に波形データを転送可能な複数の波形データを記憶する第２の記憶手段と、上記第１の記憶手段に記憶された波形データを読み出して楽音を形成する複数の発音チャンネルを備えた楽音形成手段と、上記複数の発音チャンネル毎に未処理発音制御データを記憶する発音制御データ記憶手段と、上記第２の記憶手段から上記第１の記憶手段へ波形データの転送中で発音チャンネルにおいて発音処理が不可能な状態において、上記発音処理が不可能な発音チャンネルに発音制御データが入力された場合に、上記発音制御データを上記発音制御データ記憶手段に記憶させ、上記第２の記憶手段から上記第１の記憶手段へ波形データの転送終了後に、上記発音制御データ記憶手段に記憶させた上記発音制御データを読み出す制御手段と有するようにしたものである。
【００１０】
従って、ある発音チャンネルで、発生すべき波形データが転送中で発音処理不可能な状態のときに発音制御データが入力された場合にも、発音制御データを発音制御データ記憶手段に記憶して、転送終了後に処理するようになされているため、波形データの転送終了を待つことなく次の処理を続けることができ、その他の発音チャンネルの発音制御処理を妨げることなく楽音を形成することができる。
【発明の効果】
【００１１】
本発明による楽音形成装置によれば、ある発音チャンネルで、発生すべき波形データが転送中で発音処理不可能な状態のときに発音制御データが入力された場合にも、波形データの転送終了を待つことなく次の処理を続けることができ、その他の発音チャンネルの発音制御処理を妨げることなく楽音を形成することができる。
【発明を実施するための最良の形態】
【００１２】
以下、添付の図面を参照しながら、本発明による楽音形成装置の実施の形態を詳細に説明する。
【００１３】
図１は、汎用のコンピュータ上でソフトウェアによって、本発明による楽音形成装置を含んだシンセサイザを構築するための、典型的な汎用のコンピュータのハードウェア構成を示すブロック図である。
【００１４】
この図１に示す汎用のコンピュータは、極めて一般的な構成を備えており、バス１０を介して、ＣＰＵ１２と、ＲＡＭよりなるメモリ１４と、ディスクコントローラ１６と、ビデオカード１８と、Ｉ／Ｏカード２０と、サウンドカード２２とが接続されており、さらに、ディスクコントローラ１６にはハードディスク２４が接続され、ビデオカード１８にはディスプレイ装置２６が接続され、Ｉ／Ｏカード２０にはキーボード２８およびマウス３０が接続されている。そして、このコンピュータにおいては、サウンドカード２２から楽音信号が出力される。
【００１５】
また、この汎用のコンピュータにおいては、本発明による楽音形成装置を含むシンセサイザを構築するためのプログラムの他に、シーケンサ（自動演奏装置）を構築するためのプログラムも同時に起動され、シーケンサから本発明の楽音形成装置を含むシンセサイザにＭＩＤＩ情報が引き渡され、本発明の楽音形成装置を含むシンセサイザにおいては、引き渡されたＭＩＤＩ情報に応じて楽音を形成して出力する処理が行われる。
【００１６】
図２は、本発明の楽音形成装置を含むシンセサイザを構築するためのプログラムの全体構成を示し、制御タスク、音源タスク、出力タスクおよび波形データロードタスクの各タスクとタイマーインターラプト処理より構成されている。
【００１７】
制御タスクは制御プログラムを実行し、シーケンサのプログラムとの間でＭＩＤＩ情報のやりとりを行うとともに、音源タスク側へ発音制御メッセージおよび発音パラメータを引き渡し、音源タスク側からボイス情報を受け取ることにより、シーケンサのプログラムから受け取ったＭＩＤＩ情報に従い音色変更や発音制御などを行う。
【００１８】
音源タスクは音源プログラムを実行し、複数のボイス（楽音生成チャンネル）ならびにエフェクトに関する処理を行い、生成した楽音信号を出力タスクへ引き渡す。即ち、音源タスクは複数のボイスのそれぞれの処理を行うものであって、制御タスクから引き渡された発音制御メッセージおよび発音パラメータに従ってシンセサイザの楽音信号を生成し、生成した楽音信号を出力タスクへ引き渡すことになる。
【００１９】
出力タスクは出力プログラムを実行し、発音タスクから引き渡された楽音信号を、出力用ハードウェア（ＤＡＣ）の仕様にそってコントロールして出力する。
【００２０】
波形データロードタスクは波形データロードプログラムを実行し、制御タスクからデータロード要求を受け取り、データロード要求に応じて波形データをハードディスク２４からメモリ１４にロードする。なお、本明細書において、「ロード」とは、ハードディスク２４に記憶された波形データなどのデータをメモリ１４に読み込む処理を意味する。
【００２１】
タイマーインターラプト処理は所定時間間隔でタイマーインターラプトプログラムを実行し、制御タスクへタイマーイベントを発行する。
【００２２】
ところで、上記した制御タスク、音源タスク、出力タスクおよび波形データロードタスクには優先度（プライオリティ：ｐｒｉｏｒｉｔｙ）が設けられていて、他のタスクなどにより処理を中断されることが好ましくないタスクは、優先度を高くするようになされている。なお、この実施の形態においては、出力タスクの優先度が最も高く、次に音源タスクの優先度が高く、その次に制御タスクの優先度が高く、波形データロードタスクの優先度が最も低くなされている。
【００２３】
上記において説明した各タスクおよびタイマーインターラプト処理により、本発明の楽音形成装置を含むシンセサイザを構築することができるものであるが、以下においては、説明を簡略化して理解を容易にするために、本発明の楽音形成装置に関する構成ならびに作用を中心に説明するものとする。なお、本発明の楽音形成装置以外のシンセサイザ部分に関しては、従来より公知のソフトウェア技術により構築するようにしてよい。
【００２４】
本発明の楽音形成装置に関する構成ならびに作用の説明にあたっては、まず、ハードディスク２４における波形データの記憶構造を、図３を参照しながら説明するものとする。
【００２５】
即ち、図３は、ハードディスク２４上に構成された波形データを記憶したファイルたる波形データファイルを図表的に示したものであり、波形データファイルは、上記したシンセサイザの初期設定時（立ち上がり時）にロードされるデータを記憶するエリアたるプリロード部と、波形データを記憶したエリアたる波形データ部とから構成されている。
【００２６】
そして、プリロード部は音色情報を記憶したエリアたる複数の音色情報部（音色１情報部、音色２情報部、音色３情報部、・・・）を備え、これら各音色情報部は、波形データをアクセスするための情報たる波形データのオフセットやサイズなどの情報を記憶したエリアたるアクセスデータ部、音色使用履歴（実際にその音色が使用される度に１づつインクリメントされるＣＰＵ１２に内蔵されたカウンターの値）を記憶したエリアである音色履歴部、メモリ１４上に波形データがロードされたときにそのアドレスを記入するエリアたるアドレス部および音源タスクを制御するための各種のパラメータを記憶したエリアたるパラメータ部から構成されている。
【００２７】
また、ハードディスク２４上には、図４に示すようにシンセサイザ制御用ファイルが設けられている。このシンセサイザ制御用ファイルは、前回のシンセサイザの処理の終了時にメモリ１４の波形データ部用プール部（後述する）に読み込まれている波形データのリストたる波形データリストを記憶するエリアたる波形データリスト部と、制御タスク初期化モードがモード１に設定されているかモード２に設定されているかを記憶するエリアたるモード部と（制御タスク初期化モードとしてはモード１とモード２との２つのモードが設定されており、後述するようにモードによって制御タスクの処理内容が異なる。制御タスク初期化モードは、ディスプレイ装置２６に表示され、キーボード２８やマウス３０などを操作することによって、ユーザーが任意に設定できるものとする。）、ある楽曲中において同時に使用される可能性が高い音色のリストの複数楽曲分の一覧であるジャンル別データベースを記憶するエリアたるジャンル別データベース部と（なお、同時に使用される可能性が高い音色は、予め設定されていてもよいし、ユーザーが任意に設定できるようにしてもよい。）、ユーザーが設定したシンセサイザの初期設定時に予めロードしておく音色のリストたる音色リストを記憶しておくエリアたる音色リスト部とから構成されている。
【００２８】
次に、メモリ１４の構成を図５を参照しながら説明すると、ＭＩＤＩのＧＳリセットなどでセットされるリセットフラグを記憶するエリアたるリセットフラグ部と、ＭＩＤＩチャンネル（ＭＩＤＩチャンネル１〜ＭＩＤＩチャンネル１６）に対応してそれぞれのチャンネルを制御するためのデータを記憶するエリアたるチャンネルコントロールデータ部と、ハードディスク２４上に構成されたシンセサイザ制御用ファイルの波形データリスト部をロードするエリアたる波形データリストロード部と、ハードディスク２４上に構成されたシンセサイザ制御用ファイルのジャンル別データベース部をロードするエリアたるジャンル別データベースロード部と、ハードディスク２４上に構成されたシンセサイザ制御用ファイルの音色リスト部をロードするエリアたる音色リストロード部と、ハードディスク２４上に構成された波形データファイルのプリロード部をロードするエリアたるプリロード部用ロード部と、ハードディスク２４上に構成された波形データファイルの波形データ部に記憶された波形データをロードするエリアたる波形データ用プール部とより構成されている。
【００２９】
そして、チャンネルコントロールデータ部は各ＭＩＤＩチャンネルに関する情報を記憶したチャンネル部（チャンネル１部、チャンネル２部、チャンネル３部、・・・、チャンネル１６部）を備え、これら各チャンネル部は、音色番号を記憶するエリアたる音色番号部と、波形データがロード中にセットされるフラグを記憶するエリアたるロード中フラグ部と、波形データのロード中に実行できないＭＩＤＩ情報を一時貯めておくＦＩＦＯのエリアたるＦＩＦＯ部とより構成されている。
【００３０】
以上の構成において、図６を参照しながら、シンセサイザの初期設定時に制御プログラムにより実行される制御タスクの処理たる「初期設定処理ルーチン」を説明すると、まず、各種のバッファなどをクリアして初期化の処理（ステップＳ６０２）を行った後に、ハードディスク２４上に構成された波形データファイルのプリロード部を、メモリ１４のプリロード部用ロード部へロードする（ステップＳ６０４）。
【００３１】
次に、ハードディスク２４上に構成されたシンセサイザ制御用ファイルのジャンル別データベース部を、メモリ１４のジャンル別データベースロード部へロードする（ステップＳ６０６）。
【００３２】
そして、制御タスク初期化モードが、モード１に設定されているか、モード２に設定されているかを、ハードディスク２４上に構成されたシンセサイザ制御用ファイルのモード部を参照して判断する（ステップＳ６０８）。
【００３３】
ステップＳ６０８において、制御タスク初期化モードがモード１に設定されていると判断された場合には、ハードディスク２４上に構成されたシンセサイザ制御ファイルの波形データリスト部を、メモリ１４の波形データリストロード部へロードし、この波形データリストロード部に記憶された波形データリストに示される波形データを、ハードディスク２４上に構成された波形データファイルの波形データ部からメモリ１４の波形データ用プール部にロードし、この初期設定処理ルーチンを終了する（ステップＳ６１０）。
【００３４】
従って、この場合には、初期設定時において、前回動作終了時にメモリ１４に記憶されていた波形データが、ハードディスク２４からメモリ１４へロードされることになる。
【００３５】
一方、ステップＳ６０８において、制御タスク初期化モードがモード２に設定されていると判断された場合には、さらに、ハードディスク２４上に構成されたシンセサイザ制御用ファイルの音色リスト部に音色リストが設定されているか否かを判断する（ステップＳ６１２）。
【００３６】
ステップＳ６１２において、ハードディスク２４上に構成されたシンセサイザ制御用ファイルの音色リスト部に音色リストが設定されていないと判断された場合には、ステップＳ６０４でメモリ１４のプリロード部用ロード部にロードされた、ハードディスク２４上に構成された波形データファイルのプリロード部の音色履歴部を参照し、音色履歴の値の大きい音色の波形データから順に、メモリ１４の波形データ部用プール部の使用上限になるまで、ハードディスク２４上に構成された波形データファイルの波形データ部からメモリ１４の波形データ部用プール部に波形データをロードし、この初期設定処理ルーチンを終了する（ステップＳ６１４）。
【００３７】
従って、この場合には、初期設定時において、過去に使用回数の多かった波形データが、ハードディスク２４からメモリ１４へロードされることになる。
【００３８】
一方、ステップＳ６１２において、ハードディスク２４上に構成されたシンセサイザ制御用ファイルの音色リスト部に音色リストが設定されていると判断された場合には、ハードディスク２４上に構成されたシンセサイザ制御ファイルの音色リスト部を、メモリ１４の音色リストロード部へロードし、この音色リストロード部に記憶された音色リストに示される音色の波形データを、ハードディスク２４上に構成された波形データファイルの波形データ部からメモリ１４の波形データ用プール部にロードし、この初期設定処理ルーチンを終了する（ステップＳ６１６）。
【００３９】
従って、この場合には、初期設定時において、ユーザーが予めメモリ１４に記憶させておきたい波形データが、ハードディスク２４からメモリ１４へロードされることになる。
【００４０】
なお、上記したステップＳ６１０、ステップＳ６１４およびステップＳ６１６においては、ハードディスク２４上に構成された波形データファイルの波形データ部からメモリ１４の波形データ用プール部に、指定された波形データをロードする処理が行われるが、この処理は、具体的には、図７に示す制御プログラムにより実行される制御タスクの処理たる「データロード要求発行処理ルーチン（１）」と、図８に示す波形データロードプログラムによって実行される波形データロードタスクの処理たる「波形データロードルーチン」とによって実現される。
【００４１】
即ち、処理ステップがステップＳ６１０、ステップＳ６１４およびステップＳ６１６に到達すると、図７に示すデータロード要求発行処理ルーチン（１）が起動され、制御タスクは波形データロードタスクに対してデータロード要求を発行する（ステップＳ７０２）。
【００４２】
それから、波形データロードタスクから制御タスクへデータロード完了通知が行われた否かを判断し（ステップＳ７０４）、波形データロードタスクから制御タスクへデータロード完了通知が行われるまで待ち、波形データロードタスクから制御タスクへデータロード完了通知が行われた場合には、このデータロード要求発行処理ルーチン（１）を終了する。
【００４３】
そして、ステップＳ７０２において、制御タスクが波形データロードタスクに対してデータロード要求を発行すると、図８に示す波形データロードタスクによる波形データロードルーチンが起動される。
【００４４】
この波形データロードルーチンにおいては、ロードすべき波形データのサイズ分の領域を、メモリ１４の波形データ用プール部に取得できるか否かを判断する（ステップＳ８０２）。
【００４５】
ステップＳ８０２において、ロードすべき波形データのサイズ分の領域をメモリ１４の波形データ用プール部に取得できないと判断された場合には、既に波形データ用プール部にロードされている波形データの中で、最も過去に使用された波形データから順に破棄して行き、波形データ用プール部にロードする波形データのサイズ分の領域を確保し（ステップＳ８０４）、ステップＳ８０２へ戻る。
【００４６】
一方、ステップＳ８０２において、ロードすべき波形データのサイズ分の領域をメモリ１４の波形データ用プール部に取得できると判断された場合には、ハードディスク２４上に構成された波形データファイルの波形データ部から、メモリ１４の波形データ用プール部に、指定された波形データをロードする（ステップＳ８０６）。
【００４７】
それから、ステップＳ８０６でロードした波形データに対応する音色情報部のアドレス部に、ロードした波形データのアドレスを書き込む（ステップＳ８０８）。
【００４８】
そして、制御タスクにデータロード完了通知を発行し（ステップＳ８１０）、この波形データロードルーチンを終了する。
【００４９】
また、シーケンサのプログラムから制御タスクへＭＩＤＩ情報が入力された場合、音源タスクから制御タスクへボイス情報が入力された場合、波形データロードタスクから制御タスクへのデータロード完了通知が発行された場合あるいはタイマーインターラプト処理により制御タスクへタイマーイベントが発行された場合には、図９に示す制御プログラムにより実行される制御タスクの処理たる「定常処理ルーチン」が起動される。
【００５０】
即ち、シーケンサのプログラムから制御タスクへＭＩＤＩ情報が入力された場合には、ＭＩＤＩ情報処理ルーチン（ステップＳ９０２）が実行され、音源タスクから制御タスクへボイス情報が入力された場合には、ボイス情報処理ルーチン（ステップＳ９０４）が実行され、波形データロードタスクから制御タスクへデータロード完了通知が発行された場合には、データロード完了通知処理ルーチン（ステップＳ９０６）が実行され、後述するタイマーインターラプト処理により制御タスクへタイマーイベントが発行された場合には、タイマーイベント処理ルーチン（ステップＳ９０８）が実行され。
【００５１】
図１０には、ステップＳ９０２のＭＩＤＩ情報処理ルーチンのフローチャートが示されており、制御タスクへ入力されたＭＩＤＩ情報がリセットメッセージであった場合には、リセットフラグをセットし（ステップＳ１００２）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００５２】
また、制御タスクへ入力されたＭＩＤＩ情報がプログラムチェンジであった場合には、リセットフラグがセットされているか否かを判断し（ステップＳ１００４）、リセットフラグがセットされている場合には、ＣＰＵ１２に内蔵されたタイマーをスタートしてから（ステップＳ１００６）、入力されたプログラムチェンジに基づいて、メモリ１４のチャンネルコントロールデータ部の当該プログラムチェンジに対応するチャンネル部の音色番号部に、当該プログラムチェンジが示す音色番号をセットする（ステップＳ１００８）。
【００５３】
一方、リセットフラグがセットされていない場合には、ステップＳ１００６の処理をジャンプして、入力されたプログラムチェンジに基づいて、メモリ１４のチャンネルコントロールデータ部の当該プログラムチェンジに対応するチャンネル部の音色番号部に、当該プログラムチェンジが示す音色番号をセットする（ステップＳ１００８）。
【００５４】
それから、音色番号部にセットされた音色番号の音色に対応する波形データが、波形データ用プール部に存在するか否かを判断する（ステップＳ１０１０）。
【００５５】
そして、当該波形データが波形データ用プール部に存在しない場合には、上記プログラムチェンジに対応するチャンネル部のロード中フラグをセットし、データロード要求発行処理ルーチン（２）（図１６）を起動し（ステップＳ１０１２）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００５６】
こうして、ステップＳ１０１２においてデータロード要求発行処理ルーチン（２）が起動されると、データロード要求発行処理ルーチン（２）によりデータロード要求が波形データロードタスクへ発行され、波形データロードタスクは波形データロードルーチンを実行して、入力されたプログラムチェンジに対応する波形データをメモリ１４の波形データ用プール部へロードする。
【００５７】
一方、音色番号部にセットされた音色番号の音色に対応する波形データが波形データ用プール部に存在する場合には、ロード中フラグをクリアし（ステップＳ１０１４）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００５８】
また、制御タスクへ入力されたＭＩＤＩ情報がリセットフラグでもプログラムチェンジでもないその他の場合には、制御タスクへ入力されたＭＩＤＩ情報がノートメッセージであるか否かを判断し（ステップＳ１０１６）。
【００５９】
そして、制御タスクへ入力されたリセットフラグおよびプログラムチェンジ以外のＭＩＤＩ情報がノートメッセージである場合には、リセットフラグがセットされているか否かを判断し（ステップＳ１０１８）、リセットフラグがセットされている場合には、タイマーイベント処理ルーチンを実行してから（ステップＳ１０２０）、ロード中フラグがセットされているか否かを判断する（ステップＳ１０２２）。
【００６０】
一方、制御タスクへ入力されたリセットフラグおよびプログラムチェンジ以外のＭＩＤＩ情報がノートメッセージでない場合や、制御タスクへ入力されたリセットフラグおよびプログラムチェンジ以外のＭＩＤＩ情報がノートメッセージであっても、リセットフラグがセットされていない場合には、タイマーイベント処理ルーチンを実行することなしに、上記入力されたＭＩＤＩ情報が示すチャンネル部のロード中フラグがセットされているか否かを判断する（ステップＳ１０２２）。
【００６１】
そして、ロード中フラグがセットされている場合には、メモリ１４のＦＩＦＯ部に入力されたＭＩＤＩ情報を書き込み（ステップＳ１０２４）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００６２】
従って、ハードディスク２４からメモリ１４へ波形データの転送中であり、ロード中フラグがセットされていてＭＩＤＩ情報の処理が不可能な状態においては、当該ＭＩＤＩ情報はメモリ１４のＦＩＦＯ部に書き込まれることになる。
【００６３】
一方、ロード中フラグがセットされていない場合には、入力されたＭＩＤＩ情報に対応した処理を行い（ステップＳ１０２６）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００６４】
図１１には、ステップＳ９０４のボイス情報処理ルーチンのフローチャートが示されている。
【００６５】
このボイス情報処理ルーチンにおいては、入力されたボイス情報が示す発音終了したボイスに設定されていたデータをクリアして、新たな楽音を発音するためのデータを設定可能にし（ステップＳ１１０２）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００６６】
図１２には、ステップＳ９０６のデータロード完了通知処理ルーチンのフローチャートが示されている。
【００６７】
このデータロード完了通知処理ルーチンにおいては、ステップＳ１２０４〜ステップＳ１２１４の処理をＭＩＤＩチャンネルの数（この実施の態様においては、カウンタｃｈが１〜１６の１６）だけ繰り返される。
【００６８】
まず、ＭＩＤＩチャンネルのカウンタｃｈを１に初期設定する（ステップＳ１２０２）。
【００６９】
そして、ロード中フラグがセットされているか否かを判断し（ステップＳ１２０４）、ロード中フラグがセットされていない場合には、後述のステップＳ１２１４へ進むが、ロード中フラグがセットされている場合には、ロードが完了した波形データの番号と現在のＭＩＤＩチャンネルで発音する音色番号とが一致するか否かを判断する（ステップＳ１２０６）。
【００７０】
そして、ロードが完了した波形データの番号と音色番号とが一致しない場合には、ステップＳ１２１４へ進むが、ロードが完了した波形データの番号と音色番号とが一致する場合には、ロード中フラグをクリアする（ステップＳ１２０８）。
【００７１】
それから、メモリ１４のＦＩＦＯ部にＭＩＤＩ情報が書き込まれているか否かを判断し（ステップＳ１２１０）、メモリ１４のＦＩＦＯ部にＭＩＤＩ情報が書き込まれている場合には、ＦＩＦＯ部に書き込まれているＭＩＤＩ情報に対してＭＩＤＩ情報処理ルーチン（図１０）の実行を行う（ステップＳ１２１２）。そして、このＭＩＤＩ情報処理ルーチンの実行は、その処理中チャンネルのＦＩＦＯ部に書き込まれている全てのＭＩＤＩ情報に対しての実行が終了するまで繰り返し行われる。
【００７２】
一方、ステップＳ１２１０の判断において、メモリ１４のＦＩＦＯ部にＭＩＤＩ情報が書き込まれていなかったり、メモリ１４のＦＩＦＯ部にＭＩＤＩ情報が書き込まれていても、上記処理で書き込まれている全てのＭＩＤＩ情報に対しての実行が終了した場合には、ＭＩＤＩチャンネルのカウンタｃｈを１だけインクリメントする（ステップＳ１２１４）。
【００７３】
そして、ＭＩＤＩチャンネルのカウンタｃｈが１６チャンネル分の処理をしたかを判断し（ステップＳ１２１６）、１６チャンネル分の処理を終了していない場合には、ステップＳ１２０４に戻って次のＭＩＤＩチャンネルについての処理を実行し、１６チャンネル分の処理を終了した場合には、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００７４】
図１３には、タイマーイベント処理ルーチンのフローチャートが示されており、このタイマーイベント処理ルーチンにおいては、まず、ＣＰＵ１２に内蔵されたタイマーをストップさせ（ステップＳ１３０２）、リセットフラグがセットされているか否かを判断する（ステップＳ１３０４）。
【００７５】
リセットフラグがクリアされている場合には、そのまま図９に示す制御タスクの定常処理ルーチンへリターンする。
【００７６】
一方、リセットフラグがセットされている場合には、リセットフラグをクリアし（ステップＳ１３０６）、各ＭＩＤＩチャンネルに設定されている音色とジャンル別データベースとから、各ＭＩＤＩチャンネルに設定されている音色の使用頻度の高いジャンルを判定し、判定したジャンルで頻繁に使用される音色の波形データの中でまだロードしていない波形データを波形データ用プール部へロードするために、データロード要求発行処理ルーチン（２）（図１６）を起動し（ステップＳ１３０８）、図９に示す制御タスクの定常処理ルーチンへリターンする。
【００７７】
こうして、ステップＳ１３０８においてデータロード要求発行処理ルーチン（２）が起動されると、データロード要求発行処理ルーチン（２）によりデータロード要求が波形データロードタスクへ発行され、波形データロードタスクは波形データロードルーチンを実行して、判定したジャンルで頻繁に使用される音色の波形データの中でまだロードしていない波形データを、ハードディスク２４の波形データ部からメモリ１４の波形データ用プール部へロードする。
【００７８】
従って、各ＭＩＤＩチャンネルに設定された音色から、当該音色の使用頻度の高いジャンル（グループ）が判定され、判定されたジャンルの音色に対応する波形データが、ハードディスク２４からメモリ１４へロードされることになる。
【００７９】
なお、上記したように、タイマーイベントはタイマーインターラプト処理により制御タスクへ発行されるものであり、図１４には、１ｍｓｅｃ毎に起動されるタイマーインターラプト処理ルーチンのフローチャートが示されている。
【００８０】
このタイマーインターラプト処理ルーチンにおいては、まず、タイマーフラグがスタートにセットされているか、あるいはストップにクリアされているかを判断する（ステップＳ１４０２）。なお、タイマーがスタートされたときに、タイマーフラグがスタートにセットされるとともに、タイマーカウンタにカウント値５００がセットされ、タイマーがストップされたときに、タイマーフラグがストップにクリアされる。
【００８１】
そして、タイマーフラグがストップにクリアされている場合には、そのままタイマーインターラプト処理ルーチンを終了する。
【００８２】
一方、タイマーフラグがスタートにセットされている場合には、タイマーカウント値から１をデクリメントしてから（ステップＳ１４０４）、タイマーカウント値が０であるか否かを判断する（ステップＳ１４１０６）。
【００８３】
タイマーカウント値が０である場合には、タイマーイベントを制御タスクへ発行した後に（ステップＳ１４０８）、このタイマーインターラプト処理ルーチンを終了する。
【００８４】
一方、タイマーカウント値が０でない場合には、そのままタイマーインターラプト処理ルーチンを終了する。
【００８５】
なお、本発明の楽音形成装置を含むシンセサイザの動作終了時には、図１５に示す制御プログラムにより実行される制御タスクの処理たる「終了時処理ルーチン」が起動される。
【００８６】
この終了時処理ルーチンにおいては、現在メモリ１４の波形データ用プール部にロードされている波形データのリストを作成し、これを波形データリストとして、ハードディスク２４のシンセサイザ制御用ファイルの波形データリスト部へ書き込むことになる（ステップＳ１５０２）。
【００８７】
従って、ハードディスク２４のシンセサイザ制御用ファイルの波形データリスト部を参照することにより、初期設定ルーチン（図６）のステップＳ６１０において、初期設定時に前回動作終了時にメモリ１４に記憶されていた波形データをハードディスク２４からメモリ１４へロードすることができるようになる。
【図面の簡単な説明】
【００８８】
【図１】図１は、汎用のコンピュータ上でソフトウェアによって、本発明による楽音形成装置を含んだシンセサイザを構築するための、典型的な汎用のコンピュータのハードウェア構成を示すブロック図である。
【図２】図２は、本発明の楽音形成装置を含むシンセサイザを構築するためのプログラムの全体構成を示す概念図である。
【図３】図３は、ハードディスク上に構成される波形データファイルの構造を図表的に示す説明図である。
【図４】図４は、ハードディスク上に構成されるシンセサイザ制御ファイルの構造を図表的に示す説明図である。
【図５】図５は、メモリの構造を図表的に示す説明図である。
【図６】図６は、初期設定ルーチンを示すフローチャートである。
【図７】図７は、データロード要求発行処理ルーチン（１）を示すフローチャートである。
【図８】図８は、波形データロードルーチンを示すフローチャートである。
【図９】図９は、定常処理ルーチンを示すフローチャートである。
【図１０】図１０は、ＭＩＤＩ情報処理ルーチンを示すフローチャートである。
【図１１】図１１は、ボイス情報処理ルーチンを示すフローチャートである。
【図１２】図１２は、データロード完了通知処理ルーチンを示すフローチャートである。
【図１３】図１３は、タイマーイベント処理ルーチンを示すフローチャートである。
【図１４】図１４は、タイマーインターラプト処理ルーチンを示すフローチャートである。
【図１５】図１５は、終了時処理ルーチンを示すフローチャートである。
【図１６】図１６は、データロード要求発行処理ルーチン（２）を示すフローチャートである。
【符号の説明】
【００８９】
１０              バス
１２              ＣＰＵ
１４              メモリ
１６              ディスクコントローラ
１８              ビデオカード
２０              Ｉ／Ｏカード
２２              サウンドカード
２４              ハードディスク
２６              ディスプレイ装置
２８              キーボード
３０              マウス
【図１】
2005346110.tif 000003
【図２】
2005346110.tif 000004
【図３】
2005346110.tif 000005
【図４】
2005346110.tif 000006
【図５】
2005346110.tif 000007
【図６】
2005346110.tif 000008
【図７】
2005346110.tif 000009
【図８】
2005346110.tif 000010
【図９】
2005346110.tif 000011
【図１０】
2005346110.tif 000012
【図１１】
2005346110.tif 000013
【図１２】
2005346110.tif 000014
【図１３】
2005346110.tif 000015
【図１４】
2005346110.tif 000016
【図１５】
2005346110.tif 000017
【図１６】
2005346110.tif 000018