(57)【特許請求の範囲】
【請求項１】
演算装置において実行される楽音発生方法であって、
演奏情報を順次供給するステップと、
ハードウエア音源とソフトウエア音源の少なくとも一方を指定するステップと、
前記供給される演奏情報を、前記指定に従って、前記ハードウエア音源および／または前記ソフトウエア音源に入力させる入力ステップとを有し、
前記入力ステップは、前記演算装置に前記ハードウェア音源が接続されていない場合は、前記演奏情報を前記ソフトウェア音源に入力させるものであり、
前記ソフトウェア音源は、所定周期毎に、複数のサンプリング周期分の楽音波形サンプルを一括して生成する波形生成演算を行うものである
ことを特徴とする楽音発生方法。
【請求項２】
前記入力ステップは、前記ソフトウエア音源が指定された場合には、前記ハードウエア音源が指定された場合と比べて早いタイミングで演奏情報を前記ソフトウエア音源に入力させるものであることを特徴とする請求項１記載の楽音発生方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算処理装置を備える汎用処理装置により楽音を生成できるようにした楽音発生方法に関するものである。
【０００２】
【従来の技術】
従来より、楽音発生装置においては、周波数変調方式、波形メモリ方式などの専用の音源回路（ハードウエア音源）およびマイクロプロセッサ（ＣＰＵ）を用意し、ＭＩＤＩ（Musical Instrument Digital Interface）、鍵盤、あるいはシーケンサ等からの演奏情報に応じて、前記ＣＰＵにより前記ハードウエア音源を制御して楽音を発生することが一般的に行われていた。このため、楽音発生装置は楽音を生成するための専用機器となってしまい、楽音を生成する時には専用の楽音発生装置を用意する必要があった。
【０００３】
これを解決するために、最近では、前記ハードウエア音源の動作をコンピュータプログラムによる音源処理（ソフトウエア音源）に置き換え、ＣＰＵにより演奏処理と音源処理とを実行させるようにした楽音発生方法が提案されている（特願平７−１４４１５９号）。ここで、演奏処理とは、入力されたＭＩＤＩなどの演奏情報に基づき、生成される楽音を制御するための制御情報を作成する処理であり、音源処理とは、該演奏処理において作成された制御情報に基づき楽音の波形データを生成する処理である。
【０００４】
具体的な例としては、ＣＰＵは、通常、押鍵検出等の演奏処理を実行しており、該演奏処理に対して各サンプリング周期（デジタル／アナログ変換器の変換タイミング）毎に音源処理を割り込み実行させ、複数チャンネルの楽音の１サンプル分の波形データを演算生成した後、再び演奏処理に復帰するという方式も提案されている。
このような楽音発生方法においては、専用の楽音発生装置を用いることなく、ＣＰＵとソフトウエアのほかにはＤＡ変換用のチップを備えるだけで、楽音を発生させることが可能となる。
【０００５】
【発明が解決しようとする課題】
上記した従来のソフトウエア音源を備えた楽音発生方法においては、そのソフトウエア音源を専用で使用するようになされており、発生した演奏情報は該ソフトウエア音源に固定的に供給されるようになされていた。
ところで、上記したようにソフトウエア音源はパーソナルコンピュータなどの汎用コンピュータにおいても実行可能なものである。一般に、パーソナルコンピュータなどにおいては、拡張ボードによるハードウエア音源が備えられていることがあるが、ソフトウエア音源を備えた楽音発生方法を拡張ボードによるハードウエア音源を備える汎用コンピュータで実行した場合、拡張ボードによるハードウエア音源を使用することができないという問題点があった。
【０００６】
そこで、本発明は、ソフトウエア音源を備えていても、ハードウエア音源を使用することのできる楽音発生方法を提供することを目的としている。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明の楽音発生方法は、演算装置において実行される楽音発生方法であって、演奏情報を順次供給するステップと、ハードウエア音源とソフトウエア音源の少なくとも一方を指定するステップと、前記供給される演奏情報を、前記指定に従って、前記ハードウエア音源および／または前記ソフトウエア音源に入力させる入力ステップとを有し、前記入力ステップは、前記演算装置に前記ハードウェア音源が接続されていない場合は、前記演奏情報を前記ソフトウェア音源に入力させるものであり、前記ソフトウェア音源は、所定周期毎に、複数のサンプリング周期分の楽音波形サンプルを一括して生成する波形生成演算を行うものとされている。
また、前記入力ステップは、前記ソフトウエア音源が指定された場合には、前記ハードウエア音源が指定された場合と比べて早いタイミングで演奏情報を前記ソフトウエア音源に入力させるようになされているものである。
【０００８】
【発明の実施の形態】
本発明の楽音発生方法を実行することができる楽音発生装置の一実施の形態の構成を図１に示す。
この図において、１はアプリケーションプログラム等を実行して楽音波形サンプルの生成等の各種制御を行うマイクロプロセッサ（ＣＰＵ）、２はプリセット音色データ等が記憶されているリードオンリメモリ（ＲＯＭ）、３はＣＰＵ１のワークメモリエリアや音色データエリア、入力バッファエリア、チャンネルレジスタエリア、出力バッファエリア等の記憶エリアを有するランダムアクセスメモリ（ＲＡＭ）、４は時刻を指示すると共に、タイマ割り込み処理のタイミングをＣＰＵ１に指示するタイマ、５はＭＩＤＩイベントが入力されると共に、生成されたＭＩＤＩイベントを出力するＭＩＤＩインターフェースであり、該ＭＩＤＩインターフェースには点線で示すように外部音源６を接続することもできる。
【０００９】
７は英字、かな、数字、記号などのキーを備えるいわゆるパソコン用のキーボード、８はユーザが楽音発生装置と対話するためのディスプレイ（モニタ）、９は各種アプリケーションプログラムがインストールされていると共に、楽音波形サンプルを生成するために使用する楽音波形データ等が記憶されているハードディスク装置（ＨＤＤ）、１０は前記ＲＡＭ３内のＣＰＵ１により指定されたエリアに記憶されている楽音波形サンプルのデータをＣＰＵ１を介することなく直接に受渡を行い、一定のサンプリング周期（例えば、４８ｋＨｚ）毎にデジタル・アナログ変換器（ＤＡＣ）１１に供給するＤＭＡ（Direct Memory Access）回路、１１は楽音波形サンプルのデータを受け取りアナログ信号に変換するデジタル・アナログ変換器（ＤＡＣ）、１２は拡張ボードの一種であり、前述したハードウエア音源が搭載されているサウンドカードである。１３は前記ＤＡＣ１１から出力される楽音信号と前記サウンドカード１２から出力される楽音信号とを混合するミキサー回路、１４はミキサー回路１３から出力されたアナログ信号に変換された楽音信号を放音するサウンドシステムである。
以上の構成はパソコン、ワークステーション等の汎用コンピュータと同等であり、それらの上で本発明の楽音発生方法を実施することができる。
【００１０】
図２にこの楽音発生装置のソフトウエアモジュール構成の一例を示す。なお、この図においては、説明を簡略にするため、本発明の楽音発生方法に関係する部分のみが示してある。
この図に示すように、最上位層にはアプリケーションソフトウエアが位置しており、２１はＭＩＤＩシーケンサ、ゲームソフトあるいはカラオケソフトなどのＭＩＤＩの再生を要求するプログラム（以下、単に「シーケンサプログラム」という）である。次の階層はシステムソフトウエア群であり、ここにソフトウエア音源２３が位置しており、該ソフトウエア音源２３は（ソフト）音源ＭＩＤＩドライバおよび音源部が含まれている。２５は波形（WAVE）入出力ドライバなどのいわゆるマルチメディア機能を実現するためのプログラム群、２６は後述するコーデック回路１６のためのコーデックドライバ、２８は前記サウンドカード１２のためのサウンドカードドライバである。なお、このコーデック回路１６には波形サンプルデータを入出力するためのＡ／Ｄ変換器およびＤ／Ａ変換器が含まれており、このＤ／Ａ変換器は図１におけるＤＡＣ１１である。
【００１１】
また、２２はアプリケーションプログラムと前記ソフトウエア音源２３とのインターフェースをとるためのソフト音源ＭＩＤＩ出力ＡＰＩ（application programming interface）、２４はアプリケーションプログラムと前記プログラム群２５内に含まれている波形（WAVE）入出力ドライバとのインターフェースをとるための波形出力ＡＰＩ、２７は前記シーケンサプログラム２１などのアプリケーションソフトウエアとサウンドカードドライバ２８および外部音源６とのインターフェースをとるためのＭＩＤＩ出力ＡＰＩである。各プログラムはこれらＡＰＩを使用してシステムプログラムの提供する各種サービスを利用することができる。
なお、図示していないが、上記システムソフトウエアの階層には、当然、通常の汎用ＯＳに含まれているデバイスドライバ群およびメモリ管理、ファイルシステム、ユーザインターフェースなどのプログラム群が含まれている。
【００１２】
このような構成において、シーケンサプログラム２１から演奏情報としてＭＩＤＩイベントが出力される。本発明においては、この演奏情報の出力先は、図示するように、前記ソフト音源ＭＩＤＩ出力ＡＰＩ２２およびＭＩＤＩ出力ＡＰＩ２７のいずれか一方あるいは両方を選択することができるようになされている。これは、当該ＭＩＤＩイベントを受け取るべきＡＰＩを指定してシーケンサプログラム２１からＭＩＤＩイベントを送出することにより実現される。ただし、ハードウエア音源が装着されていないときには、ハードウエア音源を選択することはできないようになされている。
【００１３】
シーケンサプログラム２１からの演奏情報の出力先としてソフトウエア音源２３が選択され、ソフト音源ＭＩＤＩ出力ＡＰＩ２２にＭＩＤＩイベントが出力されたとき、ソフトウエア音源２３は、受け取ったＭＩＤＩメッセージを波形（WAVE）出力データに変換し、波形出力ＡＰＩ２４を呼ぶ。これにより発生された楽音に対応する波形データはコーデックドライバ２６を介してコーデック回路１６に出力され、前述したようにＤＡＣ１１によりアナログ信号に変換されてサウンドシステム１４より発音されることとなる。
【００１４】
一方、シーケンサプログラム２１からの演奏情報の出力先としてサウンドカード１２に搭載されているハードウエア音源が選択され、ＭＩＤＩ出力ＡＰＩ２７にＭＩＤＩイベントが出力されたときは、該ＭＩＤＩイベントはサウンドカードドライバ２８を介してサウンドカード１２内のハードウエア音源に出力され、該ハードウエア音源に固有の楽音発生方式に基づいて対応する楽音が生成されることとなる。
また、外部に接続されている外部音源６が演奏情報の出力先として選択されたときもＭＩＤＩ出力ＡＰＩ２７にＭＩＤＩイベントが出力され、プログラム群２５内の外部ＭＩＤＩドライバおよびＭＩＤＩインタフェース５を介して外部音源６に出力される。これにより、外部音源６から対応する楽音が発生される。
【００１５】
図３はソフトウエア音源２３を用いて行われる楽音発生処理を説明するための図である。この図において、演奏入力と記されているのは、前述したシーケンサプログラム２１から出力されるＭＩＤＩイベントであり、例えば、時刻ｔａ、ｔｂ、ｔｃ、ｔｄのように楽譜通りのタイミングで送出される。このＭＩＤＩイベントが受信されると最も優先順位の高い割り込みが発生し、該ＭＩＤＩ受信割り込み処理においてそのＭＩＤＩイベントは受信時刻データとともに入力バッファに格納される。これによりソフトウエア音源２３においてＭＩＤＩ処理が行われ、各ＭＩＤＩイベントに対応する発音制御信号が対応する発音チャンネルの音源レジスタに書き込まれる。
【００１６】
図の中段に示されているのは、ソフトウエア音源２３の音源処理部により実行される波形生成演算のタイミングであり、演算時刻ｔ０、ｔ１，ｔ２、ｔ３と示すように一定周期で起動される。この周期をフレーム周期と呼び、これは一つの出力バッファに格納可能な波形サンプル数に応じた周期である。各フレーム周期において、その前のフレーム周期に受信されたＭＩＤＩイベントに応じて前記ＭＩＤＩ処理により各発音チャンネルの音源レジスタに格納されている発音制御信号を用いて、各発音チャンネルの波形生成演算が実行される。このようにして生成された波形データは出力バッファに足し込まれ、図３の下段に示すように、その次のフレーム周期にＤＭＡ回路１０により各サンプリング周期毎に順次読み出され、ＤＡＣ１１により再生される。これにより、途切れることなく発音が行われる。
【００１７】
（ソフトウエア音源処理）
図４はソフトウエア音源２３により実行される処理のフローチャートを示す図である。ソフトウエア音源２３は起動されると、まず、ステップＳ１０において、各種レジスタのクリアなどの初期設定が行われる。続いてステップＳ１１において、ユーザーに対してこのソフトウエア音源が起動されていることを表示するためのアイコンの表示などの画面の準備処理が行われる。次に、ステップＳ１２に進み、ここで起動要因が存在するか否かのチェックが行われる。起動要因としては、（１）入力バッファに未処理イベントがあること（これはＭＩＤＩイベントを受信したときに発生する。）、（２）（演算時刻となって）波形演算要求が発生していること、（３）キーボードやパネルからの音源の動作の制御コマンド入力などのＭＩＤＩの処理以外の処理要求が発生していること、（４）終了要求が発生していること、の４通りの要因が存在している。
【００１８】
ステップＳ１３において起動要因があるか否かが判定され、ＮＯのときは再びステップＳ１２に戻り、起動要因の発生を待つ。ステップＳ１３の判定結果がＹＥＳとなり、起動要因が発生していることが検出されたときにはステップＳ１４に進み、該起動要因が前記（１）〜（４）のうちのいずれであるのかが判定される。
【００１９】
（ＭＩＤＩ処理）
この判定により、（１）入力バッファに未処理イベントがあるときには、ステップＳ１５に進み、ＭＩＤＩ処理が行われる。このＭＩＤＩ処理においては、入力バッファに書き込まれているＭＩＤＩイベントを、それに対応する音源（発音チャンネル）に渡すべき制御パラメータに変換する処理が行われる。このステップＳ１５のＭＩＤＩ処理が終了した後、ステップＳ１６の受信表示処理がおこなわれ、ＭＩＤＩを受信したことなどが画面に表示される。そして、その後ステップＳ１２に戻り、起動要因の発生を待つ。
【００２０】
上記ステップＳ１５のＭＩＤＩ処理の一例を図５の（ａ）と（ｂ）に示す。図５の（ａ）は入力バッファに格納されているＭＩＤＩイベントがノートオンイベントであるときに実行されるＭＩＤＩ処理のフローチャートである。未処理イベントがノートオンイベントであるときには、まず、ステップＳ３１において、当該ノートナンバーがＮＮとして、ベロシティがＶＥＬとして、パート別の音色データがｔとして、それぞれレジスタに取り込まれ、さらに、そのノートオンイベントの発生時刻がＴＭレジスタに取り込まれる。次いで、ステップＳ３２においてレジスタに取り込まれたノートナンバＮＮの発音割当処理が行われ、割り当てられたチャンネル（ｃｈ）の番号がｉとしてレジスタに取り込まれる。
【００２１】
続いてステップＳ３３において、ｔに対応する音色データＴＰ（ｔ）がノートナンバＮＮおよびベロシティＶＥＬに応じて加工される。そして、ステップＳ３４において、該加工された音色データ、ノートオンおよび発生時刻データＴＭをｉチャンネルの音源レジスタに書き込み、ノートオンイベント処理を終了する。
【００２２】
図５の（ｂ）は未処理イベントがノートオフイベントであるときの処理のフローチャートである。
ノートオフ処理が開始されると、ステップＳ４１において、入力バッファ中のそのノートオフイベントのノートナンバがＮＮとして、また、パート別音色データがｔとして、それぞれレジスタに取り込まれ、さらに、該ノートオフイベントの発生時刻がＴＭとしてレジスタに取り込まれる。次いで、ステップＳ４２において、ノートナンバＮＮで発音されている発音チャンネル（ｃｈ）がサーチされ、見つかった発音ｃｈの番号がｉとしてレジスタに取り込まれる。次に、ステップＳ４３においてｉｃｈの音源レジスタにノートオフと発生時刻ＴＭとを書き込んで、ノートオフイベント処理を終了する。
【００２３】
（音源処理）
前記ステップＳ１４において、起動要因が（２）波形演算要求発生であるときは、ステップＳ１７の音源処理が実行される。この処理は波形生成演算を行う処理であり、前記ステップＳ１５のＭＩＤＩ処理において各チャンネル（ｃｈ）に対応する音源レジスタに格納された楽音制御データに基づき波形生成演算が行われる。このステップＳ１７の音源処理が終了した後に、ステップＳ１８において例えば音源処理に要したＣＰＵの負荷量などが表示される。その後、ステップＳ１２に戻り、待ち状態となる。
【００２４】
ステップＳ１７の音源処理においては、まず、演算順序の１番目の発音チャンネル（ｃｈ）について、ＬＦＯ、フィルタＧ、音量ＥＧの波形演算を行い、所定の時間範囲の演算に必要なＬＦＯ波形、ＦＥＧ波形、ＡＥＧ波形のサンプルを生成する。ＬＦＯ波形はＦナンバ、ＦＥＧ波形、ＡＥＧ波形に加算され、各データを変調する。また、消音すべきチャンネルとして指定された発音チャンネルに関しては、音量ＥＧとして前記範囲内で急速に減衰するダンプ用のＡＥＧ波形が演算生成される。
次いで、前回の読み出しアドレスを初期値としてＦナンバを繰り返し加算し前記時間範囲内の各サンプルの読み出しアドレスを発生し、この読み出しアドレスの整数部に基づいて音色データ内の波形記憶領域より波形サンプルを読み出すと共に、この読み出しアドレスの小数部に基づいて読み出された波形サンプル間の補間を行い、前記時間範囲内の全補間サンプルを算出するようにする。
【００２５】
さらに、前記時間範囲内の補間サンプルに対し音色フィルタ処理が行われ、前記ＦＥＧ波形に基づいて音色制御が行われ、フィルタ処理済の前記時間範囲内のサンプルに対し振幅制御処理が行われ、前記ＡＥＧおよび音量データに基づいて楽音波形サンプルの振幅制御が行われると共に、振幅制御処理された前記時間範囲分の楽音波形サンプルがそれぞれ出力バッファの対応するサンプルに足し込まれる累算書込処理が実行される。
このようにして、全発音チャンネルの演算が終了するまで各発音チャンネルの波形サンプル生成処理が行われ、生成された前記所定時間範囲分のサンプルは、出力バッファの対応するサンプルに順次足し込まれる。
【００２６】
なお、これらステップＳ１５のＭＩＤＩ処理およびステップＳ１７の音源処理については、前記特願平７ー１４４１５９号に詳細に記載されているので、必要な場合には当該公報を参照されたい。
【００２７】
（その他の処理）
また前記ステップＳ１４において、（３）その他の処理要求であると判定されたときは、ステップＳ１９に進み、対応する処理、例えば、この処理要求が音色の設定／変更処理であるときには、設定された音色番号を設定する処理など行い、ステップＳ２０に進んで該設定された音色番号の表示などを行った後、ステップＳ１２に戻り待ち状態となる。
さらに、前記ステップＳ１４において、（４）終了要求であると判定されたときは、ステップＳ２１において終了処理を行い、ステップＳ２２において関連する画面情報を消去して、このソフトウエア音源処理を終了する。
【００２８】
（ＭＩＤＩ受信割込み処理）
次に、ＣＰＵ１により実行されるＭＩＤＩ受信割込み処理のフローチャートを図６に示す。この処理は、ソフト音源ＭＩＤＩ出力ＡＰＩ２２が呼ばれて、シーケンサプログラム２１などからの演奏情報（ＭＩＤＩイベント）が受信された際に発生される割り込みにより起動される。この割り込みの優先順位は最も高くされており、このＭＩＤＩ受信割込み処理は、シーケンサプログラム２１やソフトウエア音源２３の処理などの他の処理より優先して行われる処理である。このＭＩＤＩ受信割込み処理が開始されると、ステップＳ５１において受信されたＭＩＤＩイベントデータが取り込まれ、ステップＳ５２においてその受信データは受信された時点の時刻データと組にして前述した入力バッファに書き込まれて、割込み発生時の処理へリターンされる。これにより、受信したＭＩＤＩデータは、順次、受信時刻と共に入力バッファに書き込まれるようになる。
【００２９】
（シーケンサプログラム）
図７にシーケンサプログラム２１における処理のフローチャートを示す。シーケンサプログラム２１は起動されると、まず、ステップＳ６１において各種レジスタのクリアなどの初期設定が行われ、次に、ステップＳ６２において該プログラムが起動中であることを示すアイコンなどの表示を行うための画面準備処理が行われる。そして、ステップＳ６３に進み、起動要因が発生したか否かのチェックが行われ、ステップＳ６４において起動要因が発生したと判定されると、ステップＳ６５に進む。ステップＳ６５において、発生した起動要因がなにであるのかが判定され、その起動要因に応じて、それぞれ、対応するステップに分岐される。また、起動要因が発生していないときには、ステップＳ６３に戻り、起動要因の発生待ちの状態となる。
【００３０】
このシーケンサプログラムの起動要因としては、（１）スタート・ストップ要求の発生、（２）テンポタイマからの割り込みの発生、（３）出力先音源の指定、テンポの変更、パートバランスの変更、曲のエディットあるいは自動演奏の録音処理などその他の要求の発生、（４）プログラムの終了要求の発生などがある。
【００３１】
まず、前記ステップＳ６５における要因の判定結果が（３）その他の要求の発生であるときには、ステップＳ９０において、前述したようなそれぞれの要求に対応する処理が行われ、次いでステップＳ９１において対応する表示が行われる。そして、前記ステップＳ６３に戻り待ち状態となる。
【００３２】
（出力先指定処理）
演奏情報の出力先指定処理もこのステップＳ９０において処理される処理のうちの一つである。例えば、前記ステップＳ６２において、ディスプレイ８の画面上に表示されている出力音源を切り替えるスイッチを演奏者がマウスでクリックするなどしたときに、前記ステップＳ６５において起動要因として出力音源の指定が検出され、この出力先指定処理が起動される。図８を参照してこの出力先指定処理について説明する。
【００３３】
図８の（ａ）は出力先指定処理の第１の形態を示すフローチャートである。この形態においては、シーケンサプログラム２１から出力される全ての演奏情報の出力先音源が一括して選択される。
処理が開始されると、まず、ステップＳ９００において、ユーザーにより指定された出力音源指定データがＴＧＳレジスタに格納される。この形態においては、画面上に表示されている出力音源指定スイッチを演奏者がクリックする毎に、図８の（ｂ）に示す４つの選択状態、すなわち、（イ）いずれの音源にも出力しない、（ロ）ソフトウエア音源に出力する、（ハ）ハードウエア音源に出力する、（ニ）ソフトウエア音源とハードウエア音源の両方に出力する、がサイクリックに変更されるようになされており、このクリックの回数のモジュロ４の値が出力音源指定データとしてＴＧＳレジスタに格納される。
【００３４】
次に、ステップＳ９０１において、ＴＧＳレジスタの内容により指定された音源が、ソフトウエア音源２３であるかハードウエア音源１２であるかが判定される。そして、ステップＳ９０２において、選択された出力音源の規格を示すロゴを表示画面上に表示する。図８の（ｃ）にこの表示の一例を示す。このロゴ表示により演奏者は使用している音源の規格を知ることができる。
【００３５】
図８の（ｄ）に出力先指定処理の第２の形態のフローチャートを示す。この形態は、演奏パート別に出力する音源を選択することができるものである。
処理が開始されると、まず、ステップＳ９１０において、入力されるパート指定データを変数ｐとして取り込み、次に、ステップＳ９１１において、指定された該パートｐの出力音源指定データをＴＧＳｐレジスタに格納する。そして、ステップＳ９１２において、各パートとそれに対応する出力音源の設定状態を表示する。このように、出力音源指定データを格納するレジスタを各パート対応に設けることにより、各パート毎に出力すべき音源の選択を行うことが可能となる。
【００３６】
例えば、ある楽曲についてそのドラムパートをソフトウエア音源（ＧＭ）、ベースパートをソフトウエア音源（ＸＧ）、ギターパートをハードウエア音源（ＸＧ）およびエレクトリックピアノパートをハードウエア音源（ＦＭ音源）というように指定することができる。
なお、各パートと出力すべき音源との対応は、演奏者が設定してもよいし、あるいは、各パートの音色データなどがハードウエア音源に備えられている場合には該ハードウエア音源を使用し、そうでないときにはソフトウエア音源を使用するようにしてもよい。
【００３７】
さらに、ハードウエア音源とソフトウエア音源とのいずれを使用するかについて、前記サウンドカード１２あるいは外部音源６が当該汎用コンピュータに装着されているか否かを自動的に判断して、装着されている場合には自動的にハードウエア音源を選択し、装着されていないときにはソフトウエア音源を選択するようにできる。
これにより、ハードウエア音源の着脱により設定を変更する必要がなくなる。
【００３８】
（スタート・ストップ処理）
前記ステップＳ６５における判定の結果、起動要因が（１）スタート・ストップ要求の発生であるときは、ステップ７０においてスタート・ストップ処理が行われ、ステップＳ７１においてスタート・ストップ状態の表示が行われた後、前記ステップＳ６３に戻り、起動要因の発生待ちの状態となる。
このステップＳ７０スタート・ストップ処理について、図９の（ａ）を参照して説明する。このスタート・ストップ要求は、演奏者の操作により行われるものであり、例えば画面上の所定のフィールドをクリックすることにより、スタート・ストップ要求が入力されるようになされている。このスタート・ストップ要求が入力されると、ステップＳ７００において、現在の状態が停止状態であるのか否かがＲＵＮフラグの状態により判定される。ＲＵＮフラグは、演奏状態にあるときに「１」にセットされるフラグであり、この判定結果がＮＯのときは現在演奏状態にあるので、ステップＳ７０１に進んでＲＵＮフラグをリセットし、続いてステップＳ７０２においてテンポタイマをストップさせ、ステップＳ７０３において自動演奏の後処理を行って、演奏を停止する。
【００３９】
一方、現在停止状態にありステップＳ７００の判定結果がＹＥＳとなったときは、ステップＳ７０４に進んでＲＵＮフラグをセットし、ステップＳ７０５において自動演奏の準備を行う。この自動演奏の準備においては、指定された曲のデータをハードディスク装置９などからＲＡＭ３への転送、読み出しポインタへのスタートアドレスの設定、最初のイベントの準備およびパート別の音量の設定などの各種処理が行われる。続いて、ステップＳ７０６においてテンポタイマの設定を行い、ステップＳ７０７においてテンポタイマをスタートさせて、演奏を開始させる。
【００４０】
（イベント再生処理）
前記ステップＳ６５における起動要因の判定結果が（２）テンポタイマ割り込み有りであるときは、ステップＳ８０においてイベント再生処理が行われ、その後ステップＳ８１においてそのイベントの表示がなされる。そして、ステップＳ６３に戻り、起動要因の待ち状態となる。
このステップＳ８０のイベント再生処理について、図９の（ｂ）を参照して説明する。テンポタイマ割り込みは演奏のテンポを決定するために周期的に発生される割り込みであり、この割り込みにより演奏の時刻が決定されるものである。このテンポタイマ割り込みが発生すると、ステップＳ８００において時刻のカウントが行われる。そして、このカウント結果がイベントを再生すべきイベント時刻を越えているか否かがステップＳ８０１において判定され、越えていないときはイベント再生処理Ｓ８０を終了する。
【００４１】
一方、ステップＳ８０１の判定結果がＹＥＳのときは、ステップＳ８０２に進み、イベントの再生、すなわちＲＡＭ３からのイベントの取り出しが行われる。そして、ステップＳ８０３において、取り出したイベント（再生イベント）の出力処理が行われる。この再生イベント出力処理は、再生イベントを前記出力先指定処理において設定されたＴＧＳレジスタの内容に応じた仲介ルーチン、すなわち、ソフトウエア音源２３に出力する場合にはソフト音源ＭＩＤＩ出力ＡＰＩ２２、ハードウエア音源１２に出力する場合にはＭＩＤＩ出力ＡＰＩ２７に、出力する処理である。これにより、ＭＩＤＩイベントが指定された音源に出力される。次にステップＳ８０４に進み、取り出した再生イベントのデュレーションデータとイベント時刻とを加算することにより次のイベントの再生時刻を計算して、このイベント再生処理ルーチンを終了する。なお、このステップＳ８０３の処理は、前記図８の（ａ）に示した、演奏情報全体に対してその出力音源を一括して指定する形態に対応するものである。
【００４２】
なお、前述したように、このＳ８０３の再生イベント出力処理によりイベントが出力されたときに、前記ＭＩＤＩ受信割り込みが発生して、当該ＭＩＤＩイベントは入力バッファに格納される。そして、この割り込み処理の終了後に上述したイベント再生処理ルーチンに制御が復帰し、前記ステップＳ８０４の次イベント時刻計算処理が実行されることとなる。
【００４３】
図１０の（ａ）および（ｂ）に、前記再生イベント出力処理ステップＳ８０３の変形例を示す。図１０の（ａ）は、前記図８の（ｂ）に示した演奏パート別に出力先音源を指定する形態に対応するものである。まず、ステップＳ８１０において、再生イベントのパートが検出され変数ｐとして取り込まれる。そして、ステップＳ８１１においてレジスタＴＧＳｐの内容を参照し、該内容に対応する仲介ルーチン（ＡＰＩ）に当該再生イベントを出力する。これにより、各パート別に指定された音源に演奏情報が出力される。
【００４４】
図１０の（ｂ）は、ハードウエア音源に優先的に演奏情報を出力し、発音すべきチャンネル数が該ハードウエア音源の発音可能チャンネル数を超えたときに、その超えた分の演奏情報をソフトウエア音源により発音させる形態である。この変形例においては、まず、ステップＳ８２０において、前記ステップＳ８０２（図９の（ｂ））において取り出された再生イベントがノートオンイベントであるか否かが判定される。ノートオンイベントではないときは、ステップＳ８２１に進み、該イベントに対応するノートオンを前に受け取っている音源にこのイベントを出力してこの処理を終了する。
【００４５】
一方、再生イベントがノートオンイベントであり、ステップＳ８２０の判定結果がＹＥＳのときは、ステップＳ８２２において、ハードウエア音源の現在発音数を検出し、ステップＳ８２３において当該再生イベントによりハードウエア音源の発音可能チャンネル数を超えるか否かを判定する。この判定結果がＮＯのときは、ステップＳ８２４に進み、この再生イベントをハードウエア音源に出力する。また、ステップＳ８２３の判定結果がＹＥＳとなったときは、ステップＳ８２５に進み、この再生イベントをソフトウエア音源２３に出力する。これにより、ハードウエア音源の発音可能チャンネル数（例えば、３２ｃｈ）を超えた分をソフトウエア音源により発音することが可能となる。
【００４６】
また、前記ステップＳ６５の判定結果、起動要因が（４）終了要求であったときには、ステップＳ１００に進んで終了処理を行い、ステップＳ１０１において関連する表示部分を消去して、このシーケンサプログラムの処理を終了する。
【００４７】
また、サウンドカード１２に搭載されているハードウエア音源または外部に接続された外部音源６に演奏情報が出力されたときには、周知の方法で該ハードウエア音源において発音処理が実行される。
ただし、ソフトウエア音源とハードウエア音源との両方に演奏情報を出力する場合には、前述したように、ソフトウエア音源による楽音の発生に所定時間の遅延が発生するため、該遅延時間が大きいときには、ハードウエア音源に対する演奏情報の出力を当該時間だけ遅らせるなどの処理を行うことが必要である。
【００４８】
また、前記シーケンサプログラム２１が楽音再生と画像表示などその他の処理とが同期して行われるソフトウエアである場合にも、この遅延時間についての考慮が必要となる場合がある。
例えば、カラオケソフトの場合には、曲の演奏とともに歌詞の表示を行うのが一般的である。伴奏曲の進行に応じて歌詞の色を徐々に変更する処理（ワイプ処理）や表示する歌詞を入れ替える処理が行われる。ところで、このような歌詞の表示処理は、伴奏音と同期している必要がある。従って、カラオケソフトで本発明のようにハードウエア音源とソフトウエア音源を選択できるようにした場合、どちらの音源を選択したかに応じて、表示のタイミングを変更することが必要となる。すなわち、ソフトウエア音源が選択された場合には、ハードウエア音源を選択した場合と比較して、遅いタイミングで表示処理を行うようにする。また、歌詞表示の方でタイミングを取る代わりに、各音源に供給する演奏情報のタイミングを調整するようにしても良い。すなわち、ソフトウエア音源を選択した場合には、ハードウエア音源を選択した場合に比べて、早いタイミングで演奏情報を音源に出力するようにするのである。
なお、本発明は、ＭＩＤＩインターフェースを介して外部のシーケンサなどから入力される演奏情報を音源に渡す場合にも、全く同様に適用することができる。
【００４９】
【発明の効果】
ソフトウエア音源とハードウエア音源とを選択して演奏情報を出力することができ、ハードウェア音源が装着されてない場合には自動的にソフトウェア音源を選択するようにした本発明によれば、ハードウェア音源の着脱を行ったときにハードウェア音源とソフトウェア音源のいずれを使用するかの設定を変更する必要をなくすことができる。
【図面の簡単な説明】
【図１】  本発明の楽音発生方法を実行することができる楽音発生装置の一例である。
【図２】  図１の楽音発生装置のソフトウエアモジュール構成である。
【図３】  ソフトウエア音源を用いて行われる楽音発生処理を説明するための図である。
【図４】  ソフトウエア音源処理のフローチャートである。
【図５】  ＭＩＤＩ処理のフローチャートである。
【図６】  ＭＩＤＩ受信割込み処理のフローチャートである。
【図７】  シーケンサの処理のフローチャートである。
【図８】  出力先指定ルーチンを説明するための図である。
【図９】  スタート・ストップ処理およびイベント再生処理のフローチャートである。
【図１０】  再生イベント出力処理のフローチャートである。
【符号の説明】
１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  タイマ、５  ＭＩＤＩインターフェース、６  外部音源、７  キーボード、８  ディスプレイ、９  ハードディスク装置、１０  ＤＭＡ回路、１１  Ｄ／Ａ変換器（ＤＡＣ）、１２  サウンドカード、１３  ミキサー、１４  サウンドシステム、１５  バス、１６  Ｃｏｄｅｃ、２１  シーケンサプログラム、２２、２４、２７  ＡＰＩ、２３  ソフトウエア音源、２５  プログラム群、２６  Ｃｏｄｅｃドライバ、２８  サウンドカードドライバ
【図１】
0003705203.tif 000002
【図２】
0003705203.tif 000003
【図３】
0003705203.tif 000004
【図４】
0003705203.tif 000005
【図５】
0003705203.tif 000006
【図６】
0003705203.tif 000007
【図７】
0003705203.tif 000008
【図８】
0003705203.tif 000009
【図９】
0003705203.tif 000010
【図１０】
0003705203.tif 000011