(57)【特許請求の範囲】
【請求項１】
楽音波形の発生を行えると共に、ＭＩＤＩインターフェース手段に接続された外部の音源手段に演奏イベントを出力することのできる処理手段と、
該処理手段の処理動作において異常を検出する異常検出手段とを少なくとも備え、
上記ＭＩＤＩインタフェース手段に接続されている外部の上記音源手段は、上記ＭＩＤＩインターフェース手段を介して供給された演奏イベントに基づく楽音の発生を行うと共に、上記異常検出手段が備えるシステムタイマーは、上記処理手段が正常動作中は上記処理手段の動作によりタイマー時間がタイムアップする前にリスタートされ、タイムアップした際に上記処理手段に異常が生じたことを検出しており、
上記処理手段では、上記システムタイマーがタイムアップして上記処理手段の異常が検出された時に、上記処理手段に割り込みがかかってオールノートオフ信号を上記外部の音源手段に送出すると共に、それまで上記外部の音源手段に送出されていたアクティブセンシング信号の送出を停止させ、さらに上記楽音波形が上記処理手段から出力されることを阻止するようにしたことを特徴とする楽音合成装置。
【請求項２】
楽曲の演奏に関連した情報を発生する処理手段と、
該処理手段から供給される上記情報に基づいて楽音波形を発生する楽音発生手段とを少なくとも備え、
上記楽音発生手段は、上記処理手段の処理動作において異常を検出する異常検出手段を有しており、該異常検出手段は、上記処理手段が正常動作中はオフタイマー時間値以内に上記処理手段からリトリガー信号が供給され、リトリガー信号が供給された際にリスタートすることにより、オフタイマー時間を経過してタイムアップした際に上記処理手段の異常を検出するリトリガブルタイマーを備え、
上記リトリガブルタイマーがタイムアップして上記処理手段の異常が検出された時に、上記楽音波形が上記楽音発生手段から出力されることを阻止するようにしたことを特徴とする楽音合成装置。
【請求項３】
上記楽音発生手段に対する上記処理手段からの楽曲の演奏に関連したアクセスを検出した際に、上記楽音発生手段において作成されたリトリガー信号が上記リトリガブルタイマーに供給されるようにしたことを特徴とする請求項２記載の楽音合成装置。
【請求項４】
上記処理手段の処理において上記楽音発生手段の処理に指示やイベントがあったタイミング、または、自動演奏のテンポクロックのタイミング、あるいはこれらのタイミングに準じたタイミングで発生されたリトリガー信号が上記リトリガブルタイマーに供給されるようにしたことを特徴とする請求項２記載の楽音合成装置。
【請求項５】
上記処理手段が所定周期で出力するリトリガー信号と、自動演奏における演奏イベントの発生と同期して発生されるリトリガー信号との双方のリトリガー信号が上記リトリガブルタイマーに供給されるようにしたことを特徴とする請求項２記載の楽音合成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算処理装置を備える汎用処理装置により楽音を合成できるようにした楽音合成装置に関するものである。
【０００２】
【従来の技術】
従来の楽音合成装置は、通常、ＭＩＤＩ（Musical Instrument Digital Interface）、鍵盤あるいはシーケンサなどからの演奏情報を入力する演奏入力部、楽音波形を発生する音源部、入力された演奏情報に応じて前記音源部を制御する中央処理装置（ＣＰＵ）などから構成されている。ここで、ＣＰＵは、入力された演奏情報に応じて、チャンネルアサイン、パラメータ変換などの音源ドライバ処理（演奏処理）を実行し、音源部の割り当てたチャンネルに変換したパラメータと発音開始指示（ノートオン）を供給する。また、音源部としては供給されたパラメータに基づいて楽音波形を生成する内蔵音源や、ＭＩＤＩデータが供給される外部音源が用いられる。
【０００３】
また、パーソナルコンピュータなどの汎用コンピュータにおいて、ＭＩＤＩイベントなどの演奏情報を入力データとし、対応する波形データを演算生成するアプリケーションプログラム、いわゆるソフトウエア音源を使用して楽音を合成する楽音合成方法が提案されている。この音源処理を行うプログラムを使用することにより、専用の楽音発生装置を用いることなく、ＣＰＵとソフトウエアの他にはＤＡ変換用のチップだけを備えるだけで、楽音を発生させることが可能とされている。
【０００４】
【発明が解決しようとする課題】
しかしながら、このような楽音合成装置においては、楽音合成プログラムや自動演奏プログラムをアプリケーション・プログラムとして実行させているが、何らかの原因によりこれらのプログラムがストップしたり、実行継続不能となるいわゆるハング・アップ状態に陥ってしまうことがある。
すると、楽音発音指示（KEY-ON）が出力されたままの状態でプログラムがハング・アップした場合は、対応した楽音が出力されたままとなってしまうという問題点が生じる。
さらに、プログラムがストップしたりハング・アップ状態に陥いると、ＤＡ変換器への楽音波形データの供給が途中でストップして、その結果、ＤＡ変換器から直流分が出力されることになり、後段のサウンドシステムでクリック・ノイズが発生されたり、場合によっては直流分が漏れてスピーカなどを破壊する恐れが生じることになる。
【０００５】
そこで、本発明は、プログラムがストップしたりハング・アップ状態に陥いっても、楽音が出力されたままとなったり、直流分がサウンドシステム側に漏れたり、クリックノイズ等を発生しない楽音合成装置を提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明の楽音合成装置は、楽音波形の発生を行えると共に、ＭＩＤＩインターフェース手段に接続された外部の音源手段に演奏イベントを出力することのできる処理手段と、該処理手段の処理動作において異常を検出する異常検出手段とを少なくとも備え、上記ＭＩＤＩインタフェース手段に接続されている外部の上記音源手段は、上記ＭＩＤＩインターフェース手段を介して供給された演奏イベントに基づく楽音の発生を行うと共に、上記異常検出手段が備えるシステムタイマーは、上記処理手段が正常動作中は上記処理手段の動作によりタイマー時間がタイムアップする前にリスタートされ、タイムアップした際に上記処理手段に異常が生じたことを検出しており、上記処理手段では、上記システムタイマーがタイムアップして上記処理手段の異常が検出された時に、上記処理手段に割り込みがかかってオールノートオフ信号を上記外部の音源手段に送出すると共に、それまで上記外部の音源手段に送出されていたアクティブセンシング信号の送出を停止させ、さらに上記楽音波形が上記処理手段から出力されることを阻止するようにしたものである。
【０００７】
また、本発明の他の楽音合成装置は、楽曲の演奏に関連した情報を発生する処理手段と、該処理手段から供給される上記情報に基づいて楽音波形を発生する楽音発生手段とを少なくとも備え、上記楽音発生手段は、上記処理手段の処理動作において異常を検出する異常検出手段を有しており、該異常検出手段は、上記処理手段が正常動作中はオフタイマー時間値以内に上記処理手段からリトリガー信号が供給され、リトリガー信号が供給された際にリスタートすることにより、オフタイマー時間を経過してタイムアップした際に上記処理手段の異常を検出するリトリガブルタイマーを備え、上記リトリガブルタイマーがタイムアップして上記処理手段の異常が検出された時に、上記楽音波形が上記楽音発生手段から出力されることを阻止するようにしたものである。
さらに、上記本発明の楽音合成装置において、上記楽音発生手段に対する上記処理手段からの楽曲の演奏に関連したアクセスを検出した際に、上記楽音発生手段において作成されたリトリガー信号が上記リトリガブルタイマーに供給されるようにしたものである。
さらにまた、上記本発明の楽音合成装置において、上記処理手段の処理において上記楽音発生手段の処理に指示やイベントがあったタイミング、または、自動演奏のテンポクロックのタイミング、あるいはこれらのタイミングに準じたタイミングで発生されたリトリガー信号が上記リトリガブルタイマーに供給されるようにしたものである。
さらにまた、上記本発明の楽音合成装置において、上記処理手段が所定周期で出力するリトリガー信号と、自動演奏における演奏イベントの発生と同期して発生されるリトリガー信号との双方のリトリガー信号が上記リトリガブルタイマーに供給されるようにしたものである。
【０００８】
このような本発明によれば、プログラムの実行を監視し、その異常が検出された時に、発音の停止や、ＤＡ変換器の入出力データのリセット等の対応処理を行うようにしたので、楽音が出力されたままとなったり、直流分がサウンドシステムに漏れたり、クリックノイズ等を発生しない楽音合成装置とすることができる。
【０００９】
【発明の実施の形態】
本発明の汎用処理装置からなる楽音合成装置の実施の形態の構成を示すブロック図を図１に示す。
この図において、１は自動演奏用のＭＩＤＩイベントを音源に渡すべき制御パラメータに変換する等の処理を行ったり、楽音発生用のアプリケーションプログラム等を実行して楽音波形サンプルの合成等の各種制御を行なうマイクロプロセッサユニット（ＭＰＵ）、２はシステムにより管理されて、異常動作時にタイムアップし強制的な割り込み（ＮＭＩ：Non Maskable Interrupt）をＭＰＵ１にかけるシステムタイマー（System Timer) である。
【００１０】
また、、３はＯＳ（Operating System）の記憶エリア、自動演奏プログラムや楽音発生プログラム等のアプリケーションプログラムの記憶エリアを少なくとも有するランダム・アクセス・メモリ（ＲＡＭ）、４はＭＰＵ１のシステム初期化プログラム等が記憶されているリード・オンリ・メモリ（ＲＯＭ）、５は楽音を合成する楽音発生プログラムや自動演奏プログラム等のアプリケーションプログラムが予めインストールされていると共に、楽音波形サンプルを合成するために使用する楽音波形データ等が記録されているハードディスク装置（ＨＤＤ）、６は英字、かな、数字、記号などを備えるいわゆるパーソナル・コンピュータ用のキーボード（KEYBOARD）と、ユーザが処理装置と対話するためのディスプレイ（DISPLAY ）である。
【００１１】
さらに、７は処理装置内部においてデータやアドレスが伝送されるメインバス（MAIN BUS）、８は処理装置の機能を拡張する周辺機器用の拡張バス９と処理装置内のメインバス７との間のデータの受け渡しを制御することにより、処理装置に拡張された周辺機器を接続できるようにした拡張インターフェースコントローラ（EXPAND I/F CONTROLLER ) 、９は拡張された周辺機器（拡張ボード）が接続される拡張バス（EXPAND BUS) 、１０はＭＩＤＩイベントが入力されると共に、生成されたＭＩＤＩイベントを出力する拡張されたＭＩＤＩインタフェース、１１はＭＰＵ１により作成された制御パラメータを受け取って、その制御パラメータに応じた楽音波形を合成したり、ＭＰＵ１が演算生成した楽音波形サンプルデータを受け取る拡張された音源（Ｔ．Ｇ．）１１である。
【００１２】
次に、音源（Ｔ．Ｇ．）１１の構成を示すブロック図を図３に示すが、この音源１１は拡張ボード上に構成されている。
この図において、２１は音源（Ｔ．Ｇ．）１１に入力された制御パラメータTGPAR を音源ユニット（TONE GENERATING UNIT）２２に供給すると共に、入力された楽音波形サンプルデータ（SDATA ）およびミキシング係数（MIX COEF）をデータミキサ（DATA MIXER）２３に、入力されたスイッチ制御信号（SW CONT ）をスイッチ２５に供給するバスデータインターフェース（BUS DATA INTERFACE )、２２は供給された制御パラメータTGPAR に基づいて楽音波形サンプルデータ（TG DATA ）を合成する音源ユニット（TONE GENERATING UNIT）であり、ＬＳＩチップで拡張ボードに搭載されたり、あるいはドーターボード（DAUGHTER BOARD）として拡張ボードに搭載されている。
【００１３】
２３は音源ユニット２２により合成された楽音波形サンプルデータ（TG DATA ）と、楽音波形合成用のアプリケーションプログラム（ソフトウェア音源）をＭＰＵ１が実行することにより合成された楽音波形サンプルデータ（SDATA ）とが入力され、入力された２つの楽音波形サンプルデータを、ミキシング係数（MX COEF ）に応じてミキシングして出力するデータミキサ（DATA MIXER）、２４はデータミキサ（DATA MIXER）２３から出力されたミキシングされた楽音波形サンプルデータ（OUT DATA) をアナログの楽音波形信号に変換するディジタル・アナログ変換器（ＤＡＣ）、２５はＤＡＣ２４の出力と、アースレベルとのいずれかをスイッチ制御信号（SW CONT ）に応じて選択するスイッチ、２６はスイッチ２５から出力されたアナログ信号（AOUT）のうちの不要周波数帯域成分を除去する出力フィルタ（OUTPUT FILTER ）である。
【００１４】
なお、図２にＲＡＭ３のＲＡＭマップを示すが、ＯＳがロードされるＯＳ領域、自動演奏プログラムがロードされる領域、楽音発生プログラムがロードされる領域、およびその他のプログラムが書き込まれる領域や空き領域がＲＡＭ３に作成されている。
このように構成された楽音合成装置において、電源を投入するとＲＯＭ４に記憶されている初期化プログラムよりシステムの初期化が行われる。そして、ＲＡＭ３内に読み込まれたＯＳの管理下のもとで、ユーザの操作等に応じて実行されるアプリケーションプログラムがＨＤＤ５から読み出されＲＡＭ３にロードされる。
【００１５】
この時、ロードされたアプリケーションプログラムがカラオケのアプリケーションプログラムであるとする。カラオケは、一般に知られているように伴奏（メロディを含んでいてもよい）を聞きながら、ディスプレイ６に表示される曲の進行に合わせてカラーワイプされる歌詞を見て歌うものである。したがって、カラオケのアプリケーションプログラムは、少なくとも伴奏等の楽曲の演奏イベントデータを順次出力する自動演奏プログラムと、その演奏イベントデータを受けて楽音波形を合成する楽音発生プログラムとを含んでいる。
【００１６】
なお、図１に示すように拡張ボードに搭載された音源１１が処理装置に備えられている場合は、この音源１１に演奏イベントデータを供給することにより、音源１１で楽音波形を合成することができる。そこで、ユーザが拡張ボードに搭載された音源１１からなるハードウェア音源と、楽音発生プログラムによるソフトウェア音源のいずれかを選択して選ぶことができたり、あるいは、両音源を用いて合奏させることができるようにされている。
【００１７】
これは、データミキサ２３に供給するミキシング係数（MX COEF ）を制御することにより行っている。例えば、ミキシング係数を「０」とするとソフトウェア音源で合成された楽音波形サンプルデータSDATA だけが出力され、ミキシング係数を「１」とするとハードウェア音源で合成された楽音波形サンプルデータTGDATAだけが出力され、ミキシング係数を０〜１の間にすると両音源で合成された楽音波形サンプルデータが混合されて出力される。
なお、合奏する場合にはソフトウェア音源による楽音波形の演算生成に時間がかかるため、両音源のタイミングを合わせる手段が必要となる。
【００１８】
このようにして、ユーザの選択した態様で合成された楽曲が自動演奏されて図示しないサウンドシステムから出力されるようになるが、何らかの原因によりプログラムがハングアップすることがある。この時、自動演奏プログラムがキーオンを出したままハングアップすると、対応した楽音が出たままとなる。また、ＤＡＣ２４にデータが入力された状態でハングアップされると、入力データは変化せずＤＡＣ２４からは入力データに対応した直流レベルが出たままとなる。これにより、音源１１よりの出力信号TG OUTが供給されるサウンドシステムからクリックノイズが発生したり、この直流が漏れた場合には、スピーカなどを破壊する恐れが生じる。
【００１９】
そこで、プログラムがハングアップしたことを検出して、音源１１内のスイッチ２５をＤＡＣ２４側からアース側へと切り換えるようにし、音源１１からアースレベルを出力するようにする。これにより、上記した問題点を解決することができる。このスイッチ２５の制御は、ＭＰＵ１がスイッチ２５をアース側へ切り換えるスイッチ制御信号（SW CONT ）を音源１１に供給することにより行われる。
なお、プログラムがハングアップした時に、ＭＰＵ１がスイッチ２５をアース側へ切り換えるスイッチ制御信号（SW CONT ）を音源１１に供給する処理は、図１に示すシステムタイマー２がプログラムがハングアップした時にタイムアップして強制割り込みＮＭＩをＭＰＵ１にかけることにより行っている。
【００２０】
なお、システムタイマー２はＯＳおよびアプリケーションの処理状況を管理するために設けられているタイマーであり、処理がＯＳに戻る度に所定のタイマー時間が設定されてリスタートされる。この所定のタイマー時間は、ＭＰＵ１が正常に処理を進めていれば、少なくともこの時間内にはＯＳ処理に戻ってくるとされる時間値である。
【００２１】
また、図４に示す構成により、プログラムがハングアップしたことを検出して、音源１１内のスイッチ２５をＤＡＣ２４側からアース側へと切り換えることにより、ＤＡＣ２４出力を遮断して音源１１からアースレベルを出力するようにしてもよい。図４示す構成の動作タイミングを図５に示す。
この例は、図４に示すように、リトリガブルタイマー（TIMER)３１を音源１１内に備えるようにし、このタイマー３１にオフタイマー時間値OFFTIMが入力されている。ＭＰＵ１は正常動作中はオフタイマー時間値OFFTIM以内に、リトリガー信号をタイマー３１に与える。したがって、正常動作中は、図５（ａ）の前半に示すようにタイマー３１は周期的にリトリガーされてタイムアップすることはない。この時、タイマー３１の出力するハイレベルのスイッチ制御信号（SW CONT ）により、スイッチ２５はＤＡＣ２４側へ切り換えられてＤＡＣ２４の出力がスイッチ２５から出力される。
【００２２】
そして、プログラムがハングアップすると、ＭＰＵ１からリトリガー信号が図５（ａ）の後半に示すようにタイマー３１に供給されなくなるため、最後のリトリガー信号が与えられてからオフタイマー時間値OFFTIM経過した後にタイマー３１はタイムアップするようになる。タイマー３１がタイムアップすると同図（ｂ）に示すように、タイマー３１から出力されるスイッチ制御信号（SW CONT ）がローレベルに立ち下がるようになるため、ＤＡＣ２４出力を遮断するようスイッチ２５はアース側へ切り換えられてスイッチ２５からアースレベルが出力されるようになる。これにより、上記問題を解決することができる。
【００２３】
なお、リトリガー信号は、ＭＰＵ１が楽音発生プログラムの実行中に周期的に出力するようにしているが、データ転送等の音源１１に対するＭＰＵ１からのアクセスを検出して、検出した時に音源１１内においてリトリガー信号を作成するようにしてもよい。
また、リトリガブルタイマー３１がタイムアップした時に、図５（ｃ）に示すようにＭＰＵ１に割り込み要求ＩＲＱがかかり、ＭＰＵ１に、異常が発生してタイマー３１がタイムアップしたことを認識させるようにしている。
また、自動演奏プログラムが楽音発生プログラムに対して何らかの指示やイベントを出力するタイミング、自動演奏のテンポクロック、あるいはそれに準じたタイミングで、リトリガー信号を発生するようにしてもよい。
【００２４】
さらに、以上挙げたようなリトリガー信号の発生要因を組み合わせて、実際のリトリガー信号を発生するようにしてもよい。組み合わせの一例としては、楽音発生プログラムの実行中に所定周期で出力されるリトリガー信号と、自動演奏プログラムで演奏イベントの発生と同期して発生するリトリガー信号との双方により、リトリガブルタイマー３１を制御する例が挙げられる。この例では、例えば、楽音発生プログラムと自動演奏プログラムの双方あるいはいずれか一方で異常の発生があると、リトリガブルタイマー３１がタイムアップして異常を検出するようになる。
【００２５】
異常の要因解析は、異常検出前のリトリガー信号が何（どのプログラム）によって発生されたかなどを記録しておくことにより、ある程度把握することができる。例えば、リトリガー信号の最新のいくつかの発生元をリトリガー信号の発生毎に記憶しておくなどして、リトリガー信号の来歴データから異常の要因を知ることができる。また、さらには実行するプログラム（タスク）毎に対応して、独立したリトリガブルタイマーを有させることにより、個々に異常検出を行うようにすることも可能である。
【００２６】
上記のように動作する本発明の楽音合成装置を、次にフローチャートを用いて説明する。
図６はＭＰＵ１のメインルーチンを示すフローチャートであり、電源等が投入されると、ＭＰＵ処理がスタートされる。すると、ステップＳ１０にてＲＯＭ４に内蔵されている初期化プログラムが実行され、ＨＤＤ５からＯＳなどが読み出されＲＡＭ３にロードされる。これ以後はＯＳにシステム管理が受け渡される。ＯＳ管理下においては、ユーザの操作等に応じて実行されるアプリケーションプログラムがＨＤＤ５等から読み出されＲＡＭ３にロードされる。ここでは、自動演奏プログラムと楽音発生プログラムとがロードされて実行されるものとして以下説明する。
【００２７】
ステップ１１のＯＳ処理においては、システムタイマー２のリスタート処理が行われると共に、ジョブスケジューリング等のシステム管理処理が行われる。なお、ＯＳはマルチタスク方式とされており、複数のタスク（アプリケーション）がＯＳによってスイッチングされながらその処理が実行されている。すなわち、ステップＳ１２のタスクスイッチングにより、実行されるいずれかのタスクが選択されるようになる。この場合、タスクの優先度やその時の処理状況に応じて移るタスクは変化する。
【００２８】
ステップＳ１２のタスクスイッチングによってステップＳ１３の自動演奏プログラム処理に移ると、選択指定された演奏データと曲の進行に従い、演奏イベントデータが生成される。また、ステップＳ１２のタスクスイッチングによってステップＳ１４の楽音発生プログラム処理に移ると、生成された演奏イベントデータに応じて対応する楽音が合成される。さらに、ステップＳ１２のタスクスイッチングによってステップＳ１５のその他のプログラムに移ると、その他のプログラムの処理が行われるようになる。
そして、ステップＳ１３、ステップＳ１４、ステップＳ１５のいずれかの処理が終了すると、ステップＳ１１のＯＳ処理に戻り、再度システムタイマーのリスタート処理や、システム管理処理が行われる。
【００２９】
このように、メインルーチンは循環して実行されており、このメインルーチンが正常に実行されている場合は、ステップＳ１１のＯＳ処理により所定時間以内毎にシステムタイマー２がリスタートされるようになる。すなわち、ＭＰＵ１にＮＭＩがかかることはない。
なお、ステップＳ１４の楽音発生プログラム処理における楽音波形サンプルデータの合成方法としては、
（１）「楽音発生プログラム」内に記述されているプログラムを実行することにより楽音波形サンプルデータを合成する。
（２）システムに搭載されたハードウェア、ＬＳＩチップ、ＤＳＰ（ＭＰＵ）等の音源デバイスにより楽音波形サンプルデータを合成する。
（３）ＭＩＤＩデータを外部の音源に送りこの音源を制御することにより楽音波形サンプルデータを合成する。
の３つが考えられる。
【００３０】
楽音発生プログラム処理では、上記した３つの楽音波形サンプルデータの合成方法を、適宜選択したり、組み合わせたりして用いるようにしている。なお、選択指定に当たっては、ハードウェアが搭載されているか等のシステム環境の自動チェック機能をＯＳあるいは関連プログラムに持たせて、これを自動認識させることにより、生成した演奏イベントの音源への割当を決めるようにしてもよい。また、ユーザの設定操作によって使用する音源の種別を決定するようにしてもよいことは当然のことである。
この場合の３つの楽音波形サンプルデータの合成方法の選択、あるいは組み合わせは、上記したようにデータミキサ２３を制御するミキシング係数MX COEF を変更することにより行うことができる。
【００３１】
次に、メインルーチンのステップＳ１１にて実行されるＯＳ処理のフローチャートを図７に示す。
ＯＳ処理は、ステップＳ１１０にてシステムタイマー２がリスタートされる。このリスタートはシステムタイマー２にタイマー時間ＴＩＭを設定することにより行われる。なお、システムタイマー２は前述したようにＯＳおよびアプリケーションの処理状況を管理するためのものであり、タイマー時間ＴＩＭはＭＰＵ１が正常に処理を進めていれば、この時間内には少なくともＯＳ処理に戻るとされている時間値である。
【００３２】
すなわち、図６で説明したようにＯＳに処理が戻る度にシステムタイマー２はリスタートされるので、ＭＰＵ１が正常に処理を行っている期間は、システムタイマー２がタイムアップすることはない。しかしながら、ＯＳあるいはアプリケーション等の処理の途中において、何らかの原因によりＭＰＵ１が暴走し、処理がＯＳに戻らなくなると、システムタイマー２がリスタートされなくなり、最後のリスタートからタイマー時間ＴＩＭ後にシステムタイマー２はタイムアップする。
【００３３】
システムタイマー２がタイムアップすると、ＭＰＵ１に対して強制的かつ優先的なＮＭＩがかけられる。すると、ＭＰＵ１はスイッチ２５をアース側へ切り換えるスイッチ制御信号（SW CONT)を音源１１に送るようになる。
ステップＳ１１０のシステムタイマーリスタート処理が終了すると、ステップＳ１１１にてジョブスケージュリング等のシステム管理処理が行われリターンされる。
【００３４】
次に、メインルーチンのステップＳ１４にて実行される楽音発生プログラム処理のフローチャートを図８に示す。
楽音発生プログラム処理はこのフローチャートに示すように、ステップＳ１４０にて楽音発生の終了操作があったか否かが判断され、終了操作がありＹ（YES ）と判定された場合は、ステップＳ１４１に進みここで発音されているチャンネルの発音停止処理等の終了処理が行われる。
また、ステップＳ１４０にて終了操作がなく、Ｎ（NO）と判定された場合はステップＳ１４２に分岐してスイッチ制御信号（SW CONT)が「１」にセットされる。これにより、スイッチ２５はＤＡＣ２４よりの出力を出力するようになる。
【００３５】
次いで、ステップＳ１４３にてMIDI ACTIVE SENSING の出力処理を行う。MIDI ACTIVE SENSING とは、ＭＩＤＩ接続を確認するため、ＭＩＤＩ信号の送出側機器が、最大３００ｍｓ以内毎に ACTIVE SENSING （ＭＩＤＩ信号）を送出し、受信側が所定時間以内に ACTIVE SENSING の受信認識ができなかった場合、楽音発生の中止などの対応処理をするものである。
ステップＳ１４３におけるMIDI ACTIVE SENSING の出力処理では、タイマー処理を併用して ACTIVE SENSING （ＭＩＤＩ信号）を送出している。 ACTIVE SENSING 信号は、ＭＩＤＩ規格ではＦＥH （H のサフィックスは１６進数であることを示す。）で定義されている。
MIDI ACTIVE SENSING の出力処理が終了すると、ステップＳ１４４に進み波形発生演算処理が行われる。ここでは、「楽音発生プログラム」に記述された波形発生用のプログラム（ソフトウェア音源）を実行することにより、楽音波形の形成のための演算を主に行う。
【００３６】
ステップＳ１４４の実行により求められた楽音波形サンプルデータは、順次音源１１に転送される。ただし、システム仕様によっては楽音発生プログラムはＲＡＭ３上にある波形データバッファに演算結果としての楽音波形サンプルデータを書き込むだけで、そのバッファから音源１１への転送は、音源１１に対応した別のデバイスドライバ・ソフトウェアが行うようにしてもよい。
そして、ステップＳ１４４の波形発生演算処理が終了するとリターンされる。
【００３７】
次に、システムタイマー２がタイムアップした時に実行されるＮＭＩ処理のフローチャートを図９に示す。
ＮＭＩ処理が開始されると、ステップＳ２０にて全ＭＩＤＩ  ＣＨ（１ｃｈ〜１６ｃｈ）について”ALL NOTEOFF ”信号を送出する。”ALL NOTEOFF ”信号はＭＩＤＩ規格ではＢＸ  ７ＢH で定義されている。次いで、ステップＳ２１においてMIDI ACTIVE SENSING の出力を停止するようにする。さらに、MIDI REALTIME MESSAGE の一つである”RESET ”（ＦＦH ）を送出するようにしてもよいが、”RESET ”はＭＩＤＩ機器の機種によって受信した時の処理が異なる場合があるので、”RESET ”は送出／非送出の設定が選択できるようにするのがよい。
なお、異常時の処置は各種の処置を選択できるようにするのが好適である。
【００３８】
次いで、ステップＳ２２にて搭載されている音源１１に対し出力阻止の指示が行われる。この指示は、「０」のスイッチ制御信号SW CONT をＴＧ１１に送ることにより行われる。そして、ステップＳ２３の異常アラーム処理において、音源ユニット２２等の楽音合成デバイスに発音中止を指示する。この指示は、ボリウムを絞ったり、キーオフ信号を送ったり、あるいはRESET をかけることにより行う。
この後、ステップＳ２４にて再起動されたか否かが判定される。ここで、ユーザが再起動の操作を行った場合は、YES と判定されてシステムを再起動するＭＰＵ処理スタート処理が実行される。また、再起動が行われない時はステップＳ２４の処理が循環して行われ、再起動されるまで待つようになる。
【００３９】
次に、図４および図５を用いて説明したプログラムがハングアップした時に、音源１１内のスイッチ２５をＤＡＣ２４側からアース側へと切り換えるようにする処理を行う楽音発生プログラム処理のフローチャートを図１０に示す。
この楽音発生プログラム処理のフローチャートは、ステップＳ２４０にて楽音発生の終了操作があったか否かが判断され、終了操作がありＹ（YES ）と判定された場合は、ステップＳ２４１に進みここで発音されているチャンネルの発音停止処理等の終了処理が行われる。
【００４０】
また、ステップＳ２４０にて終了操作がなく、Ｎ（NO）と判定された場合はステップＳ２４２に分岐してリトリガー（RETRIGGER ）信号出力処理が実行される。ここではリトリガー信号を発生するか、あるいはその発生の指示を出力する。このリトリガー信号出力処理は楽音発生プログラムがタスクとして呼ばれる度に実行されることになるため、その度毎にリトリガー信号が出力されるようになる。これにより、図５（ａ）の前半に示すようなリトリガー信号が出力され、スイッチ制御信号（SW CONT)が「１」にセットされたままとなる。これにより、スイッチ２５はＤＡＣ２４よりの出力（DA OUT）を出力するようになる。
【００４１】
また、プログラムの実行中に何らかの原因によりＭＰＵ１が暴走して、楽音発生プログラムにタスクが回ってこなくなると、図５（ａ）の後半に示すようにリトリガー信号の発生が停止されるため、同図（ｂ）に示すようにスイッチ制御信号（SW CONT)が「０」に立ち下がる。したがって、スイッチ２５はＤＡＣ２４よりの出力（DA OUT）を遮断して、アースレベルを出力するようになる。
なお、リトリガー信号は、信号として音源１１に書き込むようにしてもよいが、音源１１が占めているメモリのアドレス領域のいずれかに、ＭＰＵ１がWRITE （空データ書き込みでもよい）したことの検出を、リトリガー信号として音源１１内において扱うようにしてもよい。あるいは、自動演奏プログラムの方からリトリガー信号を送出するようにしてもよい。
【００４２】
さらに、異常が発生した時には図５（ｃ）に示すような音源１１からの割り込み要求によりＭＰＵ１に知らせるか、あるいは音源１１内に設けたフラグを倒すようにし、このフラグをＭＰＵ１が監視することにより異常を知るようにする。そして、異常を知った時には前記した「ＮＭＩ処理」と同等の処理をＭＰＵ１が行えばよい。
ところで、リトリガー信号の出力処理が終了すると、ステップＳ２４３に進み楽音波形形成演算処理が行われる。ここでは、「楽音発生プログラム」に記述された波形発生用のプログラム（ソフトウェア音源）を実行することにより、楽音波形の形成のための演算が主に行なわれる。
【００４３】
ステップＳ２４３の実行により演算生成された楽音波形サンプルデータは、順次音源１１に転送される。ただし、システム仕様によっては楽音発生プログラムはＲＡＭ３上にある波形データバッファに演算結果としての楽音波形サンプルデータを書き込むだけで、そのバッファから音源１１への転送は、音源１１に対応した別のデバイスドライバ・ソフトウェアが行うようにしてもよい。
そして、ステップＳ２４３の楽音波形形成演算処理が終了するとリターンされる。
【００４４】
なお、カラオケにおいてユーザが歌った歌は、図示しないマイクを通じて音源１１に備えられた図示しないアナログ・ディジタル変換器（ＡＤＣ）に入力されてディジタル信号に変換される。このディジタル信号はデータミキサ２３に入力されて、楽音波形サンプルデータと混合され、サウンドシステムから楽音と一緒に発音されるようになる。
以上の説明ではカラオケのアプリケーションプログラムを実行するものとして説明したが、本発明はこれに限らず自動演奏プログラムや楽音発生プログラムのいずれかを実行する場合に適用することができるものである。
【００４５】
以上説明した実施例では、ＤＡＣ２４の出力を外部に出力するか遮断するかをスイッチ２５により制御するようにしたが、本発明はこれに限らず、例えば、ＶＣＡ，電子ボリューム等により制御することも可能である。また、ＤＡＣ２４は、通常、所定値の基準電圧が供給され、入力されたディジタルデータに応じて基準電圧を分圧（あるいは逓倍）することにより、入力されたディジタルデータに応じたアナログ値を出力するようにしているが、この場合には、ＣＰＵの異常時にＤＡＣ２４の基準電圧を「所定値」から「０」に切り換えるようにすることにより、上述した実施の形態と同様の制御を行うことが可能となる。
【００４６】
【発明の効果】
本発明は以上説明したようにプログラムの実行を監視し、その異常が検出された時に、発音の停止や、ＤＡ変換器の入出力データのリセット等の対応処理を行うようにしたので、楽音が出力されたままとなったり、直流分がサウンドシステムに漏れたり、クリックノイズ等を発生しない楽音合成装置とすることができる。
したがって、不快音が出力されないと共に、サウンドシステムの障害を防止することができる。
【図面の簡単な説明】
【図１】  本発明の楽音合成装置の実施の形態の構成を示すブロック図である。
【図２】  本発明の楽音合成装置におけるＲＡＭのマップの一例を示す。
【図３】  本発明の楽音合成装置における音源の構成を示すブロック図である。
【図４】  本発明の楽音合成装置における他の実施の形態の構成を示すブロック図である。
【図５】  本発明の楽音合成装置における他の実施の形態の構成の動作を示すタイミング図である。
【図６】  本発明の楽音合成装置におけるＭＰＵのメインルーチンを示すフローチャートである。
【図７】  メインルーチンにおけるＯＳ処理のフローチャートである。
【図８】  メインルーチンにおける楽音発生プログラム処理のフローチャートである。
【図９】  本発明の楽音合成装置におけるＮＭＩ処理のフローチャートである。
【図１０】  メインルーチンにおける他の楽音発生プログラム処理のフローチャートである。
【符号の説明】
１  ＭＰＵ、２  システムタイマー、３  ＲＡＭ、４  ＲＯＭ、５  ハードディスク装置（ＨＤＤ）、６  ディスプレイとキーボード、７  メインバス、８  拡張インターフェースコントローラ、９  拡張バス、１０  ＭＩＤＩインターフェース、１１  音源（Ｔ．Ｇ．）、２１  バスデータインターフェース、２２  音源ユニット、２３  データミキサ、２４  ＤＡＣ、２５  スイッチ、２６  出力フィルタ、３１  リトリガブルタイマー
【図１】
0003765152.tif 000002
【図２】
0003765152.tif 000003
【図３】
0003765152.tif 000004
【図４】
0003765152.tif 000005
【図５】
0003765152.tif 000006
【図６】
0003765152.tif 000007
【図７】
0003765152.tif 000008
【図８】
0003765152.tif 000009
【図９】
0003765152.tif 000010
【図１０】
0003765152.tif 000011