【事件の表示】
　特許第２９０４０８８号「楽音生成方法および装置」の請求項１、４に係る特許に対する特許異議の申立てについて、次のとおり決定する。
【結　論】
　訂正を認める。
　特許第２９０４０８８号の請求項１、４に係る特許を維持する。
【理　由】
［１］手続の経緯
　特許第２９０４０８８号の請求項１、４に係る発明についての出願は、平成７年１２月２１日に特許出願され、平成１１年３月２６日にその発明について特許の設定登録がされ、その後、その特許について、異議申立人佐藤勝明により特許異議の申立てがなされ、取消理由通知がなされ、その指定期間である平成１２年８月７日に訂正請求がなされたものである。
　
［２］訂正の適否についての判断
１．訂正明細書の請求項１ないし５に係る発明
　訂正明細書の請求項１ないし５に係る発明は、その特許請求の範囲の請求項１ないし５に記載された次の事項により特定されるとおりのものである。
　
【請求項１】　所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、次の（１）〜（３）のステップを含む楽音生成方法。
（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ
（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数サンプリング周期分の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ
（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップ　　
　
　【請求項２】　所定のオペヒーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、
（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成立る第１のステップ、
（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され，前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、
（３）前記バッファに記憶された波形を各サンプリング周期毎に１をサシプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、
　前記第１のステップおよび前記第２のステップは、前記所定のオペレーティングシステムにおける仮想デバイスドライバとされていることを特徴とする楽音生成方法。
　
【請求項３】　所定のオペレーションシステムが動作する演算処理装置において実行される楽音生成方法であって、
（１）アプリケーションシステムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、
（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、
（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、
　前記第２の割込は、前記デジタルアナログ変換器に送出された波形サンプル数が所定数に達したことを検出したときに発生されるようになされていることを特徴とする楽音生成方法。
　
【請求項４】　演算処理装置と、
　所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、
　演算生成された波形サンプルが記憶されるバッファメモリと、前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、
　前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、
　前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、
　前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、
　前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数サンプリング周期分の波形サンプルを一括生成して、該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形生成手段とを有することを特徴とする楽音生成装置。
　
【請求項５】　演算処理装置と、
　所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、
　演算生成された波形サンプリが記憶されるバッファメモリと、　前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、
　前記アプリケーションプログラムから演奏情報が出力されたときに第１のの割込を発生する第１の割込発生手段と、
　前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、
　前記第１の割込の発生に応じに動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、
　前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数の波形サンプルを一括生成して、該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形手段と
　を有し、
　前記発音制御情報発生手段と前記楽音波形生成手段は、前記所定のオペレーティングシステムにおける仮想デバイスドライバに含まれていることを特徴とする楽音生成装置。
　
２．訂正の目的の適否、新規事項の有無及び拡張・変更の存否
　特許権者が求めている訂正の内容は、請求項１について特許請求の範囲の減縮及び誤記の訂正（訂正事項ａ、ｂ）、請求項２、３ついて不明瞭な記載の釈明（訂正事項ｃ、ｄ）、請求項４について特許請求の範囲の減縮（訂正事項ｅ）、請求項５について不明瞭な記載の釈明及び誤記の訂正（訂正事項ｆ）を目的として、特許請求の範囲を上記のとおり訂正し、不明瞭な記載の釈明を目的として明細書【００１１】【００１２】【００１３】を訂正するものである（訂正事項ｇないしｉ）。
　上記訂正は、特許請求の範囲の減縮、不明瞭な記載の釈明、誤記の訂正を目的としたものであり、新規事項の追加に該当せず、実質上特許請求の範囲を拡張し、変更するものではない。
　
３．独立特許要件
（１）引用刊行物
（ｉ）当審が取消理由で引用した刊行物１（特開平２−１７９６９５号公報、甲第１号証）には、以下の事項が記載されている。
　「装置全体の制御はマイクロコンピュータ１により行われる。すなわち、プログラム制御により楽器の制御入力の処理のみならず、楽音を生成する処理もマイクロコンピュータ１で実行され、楽音生成用の音源回路ハードウエアは必要としない。」（第３頁左上欄第１１行目〜第１６行目及び第１図）
　「制御用ＲＯＭ３１には楽器の各種制御入力を処理するプログラムと楽音を生成するプログラムが記憶されており、」（第３頁右上欄第１６行目〜第１８行目及び第２図）
　「所定時間ごとに制御用ＲＯＭ３１の楽音生成プログラムを実行するため、この実施例ではタイマーインタラプトを採用している。すなわちタイマー…を有するインタラプト制御部４０により一定時間ごとに…制御信号（割込要求信号）を送り、この信号により、…インタラプト処理プログラムが開始される。」（第３頁右下欄第１０行目〜第４頁左上欄第１行目）
　「第３図（Ａ）に本実施例のマイクロコンピュータ１のメインプログラムのフローを示す。…Ａ２でマイクロコンピュータ１は出力ポート４２からキー走査のための信号を出力し、…鍵盤キーの状態をＲＡＭ３４のキーバッファエリアに記憶する。…Ａ４ではＡ２で得た鍵盤２の最新の状態と前回の状態とから、変化した鍵（押鍵、離鍵）を識別する。次のＡ５でＡ４の処理結果から、発音処理Ａ９のためのキーアサイン処理を行う。」（第３頁左上欄第１８行目〜右上欄第１６行目及び第３Ａ図）
　「楽音の生成が行われるインタラプト処理プログラムのフローを第３Ｂ図に示す。Ｂ１で前回のインタラプトの音源処理Ｂ２で生成してある楽音波形データ（８音分の累算波形値）をＤ／Ａ変換器４３に送出する。」（第４頁右下欄第１行目〜第５行目及び第３Ｂ図）
　「音源処理Ｂ２の詳細を第３Ｃ図に示す。Ｃ１で累算波形値が記憶される波形加算用ＲＡＭ領域（第６図参照）をクリアした後、８チャンネル分の処理Ｃ２〜Ｃ９を順番に行っている。各チャンネル処理の最後で、チャンネルの楽音波形値が波形加算領域のデータに加算される。」（第４頁右下欄第１９行目〜第５頁左上欄第４行目及び第３Ｃ図）
　「この問題は第１１図（Ｂ）に示すような構成をとることにより解決される。すなわち、オペレーション解析部３８からのプログラム制御信号によって制御されるソフト制御ラッチ４５と、デジタル楽音信号をアナログ信号に変換するＤ／Ａ変換器４３Ａとの間に、インタラプト制御部４０からの正確なタイミング信号で制御されるインタラプト制御ラッチ４６を設ける。…ラッチ４６の出力はインタラプト信号のタイミングに同期して切り換わる。すなわち、インタラプト信号の発生周期がＤ／Ａ変換器４３Ａの変換（サンプリング）周期となる。」（第７頁右上欄第２行目〜第１５行目及び第１１図（Ｂ））
　
（ｉｉ）当審が取消理由で引用した刊行物２（「はじめてのＭＳ−ＤＯＳ」新星出版社、１９９０年３月１５日発行、甲第２号証）には、以下の事項が記載されている。
　「パソコンで仕事をする多くの人が、アプリケーション・ソフトを活用して仕事を行っています。…
　これらアプリケーション・ソフト単独で、それぞれが所有する優れた機能を発揮しているわけではありません。パソコンのハードウエアに密着した部分を受け持つソフトウエアがあって、はじめてその優れた機能を発揮することができます。
　このパソコンのハードウエアに密着したソフトウエアのことをシステム・ソフトウエアといい、その代表的なものにＭＳ−ＤＯＳがあります。
　ＭＳ−ＤＯＳのＭＳは、ＤＯＳを開発したマイクロソフト社の略で、ＤＯＳは、ディスク・オペレーティング・システム（Ｄｉｓｋｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）の略ですが、…さきに示したようにパソコンのハードウエアに密着した部分を受け持つソフトウエアですから、パソコンの本体、キーボード、ディスプレイ、プリンタ、ディスク装置など、パソコンのハードウエア全体を制御します。
　このＭＳ−ＤＯＳの働きを借りて、それぞれのアプリケーション・ソフトは所有している機能を発揮してるわけで、したがってアプリケーション・ソフトのなかには、ＭＳ−ＤＯＳの知識が必要となるものもあります。」（第１０頁第１行目〜第１１頁第２行目）
　
（ｉｉｉ）当審が取消理由で引用した刊行物３（特開平５−１１７５９、甲第３号証）には、以下の事項が記載されている。（取消理由通知書には、「刊行物３　特開平２−１７９６９５号公報」と記載したが、これは誤記である。特許権者には刊行物３は異議申立書の甲第３号証の誤記である旨電話で連絡した。）
　「すなわち、図７に示したフローチャートは、図示しないメインルーチンに押鍵があったときに割り込んで実行され、…エンベローブ発生制御（ＳＡ２）を実行する。」（第４頁第６欄第５行目〜第９行目及び図７）
　
（２）請求項１について
（ｉ）対比
　訂正明細書の請求項１に係る発明（以下、「請求項１発明」という。）と刊行物１に記載された発明を対比すると、両者は、
「演算処理装置において実行される楽音生成方法であって、次の（１）〜（３）のステップを含む楽音生成方法。
（１）演奏情報に対応した発音制御情報を生成する第１のステップ
（２）割込により起動され、前記発音制御情報に基づいて波形サンプルを生成し、該生成された波形サンプルを記憶する第２のステップ
（３）前記記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップ」
である点で一致し、以下の点で相違している。
　
相違点１
　請求項１発明においては、所定のオペレーティングシステムが動作しているのに対して、刊行物１には所定のオペレーティングシステムについては記載されていない点。
　
相違点２
　請求項１発明においては、発音制御情報を生成する第１のステップが、アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動されるのに対して、刊行物１に記載されたものにおいては、メインプログラムによってなされる点。
　
相違点３
　請求項１発明においては、
　第２のステップが、「バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数サンプリング周期分の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する」ものであるのに対して、
　刊行物１に記載されたものにおいては、
　第２のステップは、「タイマ−インタラプトで発生される割込により起動され、前記発音制御情報に基づいて波形サンプルを生成し、該生成された波形サンプルをラッチに記憶する」ものである点。
　
（ｉｉ）判断
相違点１について
　刊行物２にはオペレーティングシステムについて記載されており、刊行物１に記載されたものにおいて、所定のオペレーティングシステムが動作する演算処理装置を用いることは当業者が容易に想到できたことである。
　
相違点２について
　刊行物３には「メインルーチンに押鍵があったときに割り込んで実行され、…エンベローブ発生制御を実行する。」と記載されているから、刊行物１に記載されたものにおいて、発音制御情報を生成する第１のステップを、アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動されるようにすることは当業者が容易に想到できたことである。
　
相違点３について
　異議申立人は平成１３年１月１２日付けの回答書において、「１回の割り込み処理で複数サンプリング周期分の波形サンプルを生成する構成」は本件特許出願前から周知の構成であり、訂正は、単に訂正前の事項に周知な構成を付加したに過ぎない旨主張し、周知であることの根拠として、参考資料（特開平７−１８４１４３号公報）の下記の部分を引用している。
　
　「【００２０】また、ＣＰＵ１０１は、…音声波形データの発音が指示されている場合には、１／６０ｓｅｃ毎に表示部１０７での画像表示における垂直プランキング期間に同期して発生するタイマインタラプト１に対応して、…インタラプトルーチン１を起動する。…その後、ＣＰＵ１０１は、音声波形ＲＯＭ１０３から…鍵盤スイッチにより発音指示された音声波形データに対応するＡＣＯＭＰ…圧縮データを読み出し、そのデータに対してＡＣＯＭＰ復調処理を実行することにより、ＣＰＵ１０１が内蔵する４４８バイトの記憶容量を有するＲＡＭであるソフトバッファ１１３に、復調された音声波形データを書込んでいく。…」
　「【００５１】インターラブトルーチン２は、ハードバッファ１０８において、それが出力すべき音声波形データがなくなり、ハードバッファ１０８がＣＰＵＩＯＩにインタラプトをかけることにより、起動される。
【００５２】ＣＰＵ１０１は、上述のインタラプトを検出すると、インタラプトルーチン２のステップ４０１において、ソフトバッファ１１３内の最も古い６４バイトの音声波形データをハードバッファ１０８に転送する。
【００５３】以上の処理は、１サンプリング周期内に完了するため、ハードバッファ１０８は、任意のサンプリング周期において出力すべき音声波形データがなくなったことを認識した後そのサンプリング周期が終了するまでの間に、ソフトバッファ１１３から新たな６４バイトの音声波形データを受け取り、そのうちの最も古い音声波形データのサンプルをＤ／Ａ変換器１０９に出力することができる。」
　
　しかし、異議申立人が周知であると主張する「１回の割り込み処理で複数サンプリング周期分の波形サンプルを生成する構成」を考慮しても、刊行物１に記載された「タイマ−インタラプトで発生される割込により起動され、前記発音制御情報に基づいて波形サンプルを生成し、該生成された波形サンプルをラッチに記憶する第２のステップ」を、請求項１発明の「バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数サンプリング周期分の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ」とすることは当業者にとって容易に想到できたこととはいえない。
　
　したがって、訂正明細書の請求項１に係る発明は、刊行物１ないし３及び参考資料に基づいて当業者が容易に発明できたものではないから、特許出願の際独立して特許を受けることができないものとはいえない。
　
（３）請求項４について
　訂正明細書の請求項４に係る発明は、上記（２）と同様な理由により、刊行物１ないし３及び参考資料に基づいて当業者が容易に発明できたものではないから、特許出願の際独立して特許を受けることができないものとはいえない。
　
（４）請求項５について
　請求項５に対する訂正は、不明瞭な記載の釈明を目的として、請求項４を引用した従属形式請求項を独立形式請求項に訂正すると共に、誤記の訂正を目的として、「含まれているであることを特徴とする」を「含まれていることを特徴とする」に訂正するものであり、訂正明細書の請求項５に係る発明は、特許出願の際独立して特許を受けることができないものとはいえない。
　
４．むすび
　したがって、上記訂正は、平成１１年改正法前の特許法１２０条の４第２項及び同条第３項において準用する特許法第１２６条第２項から第４項までの規定に適合するので、当該訂正を認める。
　
［３］特許異議の申立について
１．本件発明
　上記のとおり上記訂正が認められるから、本件請求項１、４に係る発明は、それぞれ訂正された特許請求の範囲の請求項１、４に記載された事項により特定されるとおりのものである。
　
２．申立の理由の概要
　特許異議申立人は、請求項１、４に係る発明は、刊行物１ないし３（甲第１号証ないし甲第３号証）及び回答書に添付した参考資料に基づいて当業者が容易に発明できたものであるから、特許法第２９条第２項の規定により特許を受けることができないものであり、特許法第１１３条第１項第２号の規定により取り消すべきものである旨主張している。
　
３．判断
　上記［２］３．の（１）ないし（３）と同様な理由により、請求項１、４に係る発明は、刊行物１ないし３及び参考資料に基づいて当業者が容易に発明できたものではない。
　
４．むすび
　以上のとおりであるから、特許異議申立の理由及び証拠、並びに回答書の理由及び参考資料によっては、本件請求項１、４に係る発明を取り消すことはできない。
　また、他に請求項１、４に係る発明の特許を取り消すべき理由を発見しない。
　よって、結論のとおり決定する。
【異議決定日】
平成１３年１月２９日（２００１．１．２９）
【訂正の要旨】
　（３）訂正の要旨
　　▲１▼訂正事項ａ
　　　　特許請求の範囲の請求項１中の「複数の波形サンプル」を、特許請求の範囲の減縮を目的として、　「複数サンプリング周期の波形サンプル」と訂正する。
　　▲２▼訂正事項ｂ
　　　　特許請求の範囲の請求項１中の「第１のステップ、」、　「第２のステップ、」および「第３のステップ、」を、誤記の訂正を目的として、それぞれ、「第１のステップ」、「第２のステップ」および「第３のステップ」と訂正する。
　　▲３▼訂正事項ｃ
　　　　特許請求の範囲の請求項２を、不明りょうな記載の釈明を目的として、「所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、
　　（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、
　　（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、
　　（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップ
　を含み、
　前記第１のステップおよび前記第２のステップは、前記所定のオペレーティングシステムにおける仮想デバイスドライバとされていることを特徴とする楽音生成方法。」と訂正する。
　　▲４▼訂正事項ｄ
　　　　特許請求の範囲の請求項３を、不明りょうな記載の釈明を目的として、「所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、
　（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、
　（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、
　（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、
　前記第２の割込は、前記デジタルアナログ変換器に送出された波形サンプル数が所定数に達したことを検出したときに発生されるようになされていることを特徴とする楽音生成方法。」と訂正する。
　　▲５▼訂正事項ｅ
　　　　特許請求の範囲の請求項４中の「複数の波形サンプルを一括生成」を、特許請求の範囲の減縮を目的として、「複数サンプリング周期分の波形サンプルを一括生成」と訂正する。
　　▲６▼訂正事項ｆ
　　　　特許請求の範囲の請求項５を、不明りょうな記載の釈明及び誤記の訂正を目的として、「演算処理装置と、
　所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、
　演算生成された波形サンプルが記憶されるバッファメモリと、
　前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、
　前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、
　前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、
　前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、
　前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数の波形サンプルを一括生成して、該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形生成手段と
　を有し、
　前記発音制御情報発生手段と前記楽音波形生成手段は、前記所定のオペレーティングシステムにおける仮想デバイスドライバに含まれていることを特徴とする楽音生成装置。」と訂正する。
　　▲７▼訂正事項ｇ
　　　　明細書第００１１段落中の「複数の波形サンプル」を、不明りょうな記載の釈明を目的として、「複数サンプリング周期分の波形サンプル」と訂正する。
　　▲８▼訂正事項ｈ
　　　　明細書第００１２段落中の「また、前記」を、不明りょうな記載の釈明を目的として、「また、所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、前記」と訂正する。
　　▲９▼訂正事項ｉ
　　　　明細書第００１３段落中の「複数の波形サンプルを一括生成して」および「さらにまた、前記」を、不明りょうな記載の釈明を目的として、それぞれ、「複数サンプリング周期分の波形サンプルを一括生成して」および「さらにまた、演算処理装置と、所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、演算生成された波形サンプルが記憶されるバッファメモリと、前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数の波形サンプルを一括生成して、該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形生成手段とを有し、前記」と訂正する。
（５４）【発明の名称】
楽音生成方法および装置
（５７）【特許請求の範囲】
　　　【請求項１】　所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、次の（１）〜（３）のステップを含む楽音生成方法。
　（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ＿
　（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数
サンプリング周期分
　（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップ＿
　　【請求項２】　
所定のオペレーションシステムが動作する演算処理装置において実行される楽音生成方法であって、
　
（１）アプリケ一ションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、
　
（２）バッファに記憶されている波形サンプル数の減少を出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数のサンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、
　
（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、
　前記第１のステップおよび前記第２のステップは、前記所定のオペレーティングシステムにおける仮想デバイスドライバとされていることを特徴とす
る楽
　　【請求項３】　
所定のオペレーティングシステムが動作する演算処理装置において実行される楽音精製方法であって、
　
（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、
　
（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し該生成された波形サンプルをバッファに記憶する第２のステップ、および、
　
（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップ
　を含み、
　前記第２の割込は、前記デジタルアナログ変換器に送出された波形サンプル数が所定数に達したことを検出したときに発生されるようになされていることを特徴とす
る楽
　　【請求項４】　演算処理装置と、
　所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、
　演算生成された波形サンプルが記憶されるバッファメモリと、
　前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、
　前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、
　前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、
　前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、
　前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数
サンプリング周期分
　を有することを特徴とする楽音生成装置。
　　【請求項５】　
演算処理装置と、
　
所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、
　
演算生成された波形サンプルが記憶されるバッファメモリと、
　
前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、
　
前記アプリケ一ションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、
　
前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、
　
前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、
　
前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数の波形サンプルを一括生成して、該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形生成手段と
　
を有し、
　前記発音制御情報発生手段と前記楽音波形生成手段は、前記所定のオペレーティングシステムにおける仮想デバイスドライバに含まれていることを特徴とする楽音生成装置。
【発明の詳細な説明】
　　　【０００１】
　　【発明の属する技術分野】
　本発明は、演算処理装置上において楽音生成プログラムを実行することにより楽音波形を演算生成する楽音生成方法、および、該楽音生成方法を利用した楽音生成装置に関する。
　　　【０００２】
　　【従来の技術】
　従来の楽音生成装置は、通常、ＭＩＤＩ（Ｍｕｓｉｃａｌ　Ｉｎｓｔｒｕｍｅｎｔ　Ｄｉｇｉｔａｌ　Ｉｎｔｅｒｆａｃｅ）、鍵盤あるいはシーケンサなどからの演奏情報を入力する演奏入力部、楽音波形を発生する音源部、入力された演奏情報に応じて前記音源部を制御する中央処理装置（ＣＰＵ）などから構成されていた。ここで、ＣＰＵは、入力された演奏情報に応じて、チャンネルアサイン、パラメータ変換などの音源ドライバ処理を実行し、音源部の割り当てたチャンネルに変換したパラメータと発音開始指示（ノートオン）を供給する。また、音源部は供給されたパラメータに基づいて楽音波形を生成するものであり、この音源部としては電子回路などのハードウエアが採用されていた。
　このため、楽音生成装置は楽音を発生するための専用機器となってしまい、楽音を発生するときには専用の楽音生成装置を準備することが必要であった。
　　　【０００３】
　そこで、これを解決するために、最近では、前記ハードウエア音源の動作をコンピュータプログラムによる音源処理（ソフトウエア音源）に置き換え、ＣＰＵにより演奏処理と音源処理とを実行させるようにした楽音生成方法が提案されている。ここで、演奏処理とは、前述した音源ドライバ処理に相当する処理であって、入力されたＭＩＤＩなどの演奏情報に基づき、生成される楽音を制御するための制御情報を作成する処理である。また、音源処理とは、前記演奏処理において作成された制御情報に基づき楽音の波形サンプルデータを生成する処理のことである。この楽音生成方法によれば、専用の楽音生成装置を用いることなく、ＣＰＵとソフトウエアの他にはデジタルアナログ変換（ＤＡ変換）用のチップを備えるだけで、楽音を発生させることが可能となる。
　　　【０００４】
　楽音を発生させるためには、サンプリング周期、すなわち、デジタルアナログ変換器（ＤＡＣ；Ｄｉｇｔａｌ　Ａｎａｌｏｇ　Ｃｏｎｖｅｒｔｅｒ）における変換タイミング毎に波形サンプルをＤＡＣに供給することが必要である。そこで、上記した楽音生成方法においては、ＣＰＵは、通常時は押鍵検出等の演奏処理を実行し、該演奏処理に対して各サンプリング周期毎に音源処理を割り込み実行して、複数チャンネルの楽音の１サンプル分の波形データを演算生成した後、再び演奏処理に復帰するという動作を行なうようになされていた。
　　　【０００５】
　　【発明が解決しようとする課題】
　しかしながら、上記した従来の楽音生成方法において、ＣＰＵは、各サンプリング周期毎に各発音チャンネルの波形生成演算処理を行うときに、まず、前回の当該発音チャンネルの演算に用いた各種のデータをメモリからレジスタに復帰させること、および、当該波形生成演算終了後に次回の処理のために前記レジスタの内容をメモリに退避することが必要である。すなわち、各発音チャンネルの楽音波形サンプルを１サンプルずつ演算生成するようにしていたため、楽音の生成以外の準備処理などの多くの演算時間が費やされ、演算効率が悪くなり、応答や楽音生成処理が遅くなるという問題点があった。本来の波形生成演算以外の処理に多くの処理時間を必要としていた。
　　　【０００６】
　また、このようなソフトウエア音源に対してＭＩＤＩイベントなどの演奏情報を供給するＭＩＤＩシーケンサやゲームソフトウエアなどのアプリケーションプログラムは、一般のＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）の下で動作するようになされている。例えば、そのシーケンスソフトにより作成されたＭＩＤＩイベントで前述したソフトウエア音源を駆動しようとする場合には、まず、そのＯＳを動作させないとそのシーケンスソフト自体を実行することができないのであるが、そのようにすると、該ＯＳと同時にソフトウエア音源を安定に動作させることが必要となる。したがって、前述したようなソフトウエア音源を一般のＯＳのもとで安定してリアルタイム動作させることは困難である。
　　　【０００７】
　例えば、非完全マルチタスク方式（プリエンプティブでないマルチタスク方式）のＯＳの制御下においては、実行中のタスクがＯＳに制御を戻さない限り他のタスクは実行されないため、当該ソフトウエア音源が所定時間ごとに実行されないことがあり、楽音波形サンプルをＤＡＣに１サンプリング周期毎に安定して出力させることができない場合がある。
　　　【０００８】
　また、演奏情報（ＭＩＤＩイベント）は、演奏者の演奏操作やシーケンサでのイベントの再生により発生し、該演奏情報が発生した場合には前記演奏処理により処理される。つまり、演奏情報の発生した時点では、ＣＰＵは通常の音源処理に加えて演奏処理を実行しなければならないため、非定期的に発生する演奏情報により演算量が一時的に増加することになる。しかしながら、従来の楽音生成方法においてはこれに対応しておらず、音源処理は演奏情報のあるなしに関わらず定期的に優先実行され、場合によっては演奏処理が遅れてしまうことがある。
　なお、このような演奏処理の遅れを防止するために、逆に演奏処理の優先度を上げることが考えられるが、このようにすると今度は、一時的に発音数が減少したり、あるいは、楽音波形が途切れてしまうなど、音源処理の動作が不安定になるという問題が発生することになる。このことは、リアルタイム演奏を行なうときに特に問題となる。
　　　【０００９】
　さらにまた、従来のソフトウエア音源においては、ソフトウエア音源を使用するときには該ソフトウエア音源を使用するという設定を行なうことが必要であり、従来のハードウエア音源を使用するソフトウエアをそのまま使用することにより、ソフトウエア音源を駆動することはできなかった。
　　　【００１０】
　そこで、本発明は、波形生成演算を効率よく安定して実行することができる楽音生成方法および装置を提供することを目的としている。
　また、処理量が増加した場合でも、安定した音源処理を行うことを目的としている。
　さらにまた、従来のハードウエア音源を使用するソフトウエアをそのまま使用することができるソフトウエア音源を提供することを目的としている。
　　　【００１１】
　　【課題を解決するための手段】
　上記目的を達成するために、本発明の楽音生成方法は、所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、当該演奏情報に対応した発音制御情報を生成する第１のステップ、（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数
サンプリング周期分
　　　【００１２】
　また、
所定のオペレーティングシステムが動作する演算処理装置において実行される楽音生成方法であって、（１）アプリケーションプログラムから演奏情報が出力されたときに発生される第１の割込に応じて起動され、前記発音制御情報に対応した発音制御情報を生成する第１のステップ、（２）バッファに記憶されている波形サンプル数の減少を検出したときに発生される第２の割込により起動され、前記発音制御情報に基づいて複数の波形サンプルを一括生成し、該生成された波形サンプルをバッファに記憶する第２のステップ、および、（３）前記バッファに記憶された波形サンプルを各サンプリング周期毎に１サンプルずつ読み出してデジタルアナログ変換器に順次出力する第３のステップを含み、
　さらにまた、前記第２の割込は、前記デジタルアナログ変換器に送出された波形サンプル数が所定数に達したことを検出したときに発生されるようになされている楽音生成方法である。
　　　【００１３】
　さらにまた、本発明の楽音生成装置は、演算処理装置と、所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、演算生成された波形サンプルが記憶されるバッファメモリと、前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生する第１の割込発生手段と、前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数
サンプリング周期分
　さらにまた、
演算処理装置と、所定のオペレーティングシステムおよびアプリケーションプログラムが格納される記憶手段と、演算生成された波形サンプルが記憶されるバッファメモリと、前記バッファメモリから前記波形サンプルを各サンプリング周期毎に１サンプルずつ読み出して順次出力する出力手段と、前記アプリケーションプログラムから演奏情報が出力されたときに第１の割込を発生す第１の割込発生手段と、前記バッファメモリに格納されている波形データが減少したことを検出したときに第２の割込を発生する第２の割込発生手段と、前記第１の割込の発生に応じて動作し、前記アプリケーションプログラムから出力された演奏情報に対応する発音制御情報を生成する発音制御情報発生手段と、前記第２の割込の発生に応じて動作し、前記発音制御情報に基づいて複数の波形サンプルを一括生成して該生成された複数の波形サンプルを前記バッファメモリに記憶する楽音波形生成手段とを有し、
　　　【００１４】
　　【発明の実施の形態】
　図１に本発明の楽音生成方法がその上で実行される楽音発生装置の構成を示す。
　この図において、１はアプリケーションプログラムや楽音波形サンプルの生成等の各種演算処理をなどの中央処理装置（ＣＰＵ）、２はプリセット音色データ等の記憶されているリードオンリメモリ（ＲＯＭ）、３はＣＰＵ１のワークメモリエリアや音色データエリア、チャンネルレジスタエリア、出力バッファエリア等の記憶エリアを有するランダムアクセスメモリ（ＲＡＭ）、４は時刻を指示すると共に、タイマ割り込み処理のタイミングをＣＰＵ１に指示するタイマ、５はＭＩＤＩイベントが入力されると共に、生成されたＭＩＤＩイベントを出力するＭＩＤＩインターフェース、６は英字、かな、数字、記号などのキーと備えるいわゆるパソコン用のキーボードである。
　　　【００１５】
　７はユーザが楽音発生装置と対話するためのディスプレイ（モニタ）装置、８は楽音を発生するシーケンサソフトやゲームソフトなどの各種アプリケーションプログラムが格納されているとともに、楽音波形サンプルを生成するために使用する波形データ等が記憶されているハードディスク（ＨＤＤ）、１０は、ＲＡＭ３の一部のＣＰＵにより指定されたエリア（ＤＭＡバッファ）に記憶されている楽音波形サンプルデータを、一定のサンプリング周期（例えば、４８ｋＨｚ）毎にＣＰＵ１を介することなく直接にサウンド入出力回路（ＣＯＤＥＣ）１１内のデジタルアナログ変換器（ＤＡＣ）に供給するためのダイレクトメモリアクセス制御回路（ＤＭＡＣ；Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌｌｅｒ）である。
　　　【００１６】
　１１は、ＣＯＤＥＣと呼ばれるサウンド入出力回路であり、その内部には、デジタルアナログ変換器（ＤＡＣ）、アナログデジタル変換器（ＡＤＣ）、前記ＡＤＣに接続された入力用の先入れ先出しバヅファ（ＦＩＦＯ）および前記ＤＡＣに接続された出力用のＦＩＦＯが設けられている。このサウンド入出力回路（ＣＯＤＥＣ）１１は、サンプリングクロック発生器１２から入力される周波数Ｆｓのサンプリングクロックに応じて前記ＡＤＣによりＡ／Ｄ変換された外部オーディオ信号入力端子１３からのオーディオ入力信号を前記入力用のＦＩＦＯに取り込み、また、前記ＤＭＡＣ１０から前記出力用のＦＩＦＯに書き込まれた波形サンプルデータを該サンプリングクロックに応じて読み出して前記ＤＡＣに１サンプルずつ出力する。そして、前記入力用ＦＩＦＯにデータが存在するとき、および、前記出力用ＦＩＦＯに空があるときには、データ処理を要求する信号を前記ＤＭＡＣ１０に対して出力するように動作する。
　　　【００１７】
　１２は前記サウンド入出力回路１１に周波数Ｆｓのサンプリングクロックを発生するサンプリングクロック発生回路、１３は外部オーディオ信号入力回路であり、その出力は前記サウンド入出力回路１１内のＡＤＣに接続されている。また、１４は前記サウンド入出力回路１１内のＤＡＣからの出力に接続されたサウンドシステムであり、ＤＡＣから１サンプリング周期毎に出力されるアナログ信号に変換された楽音信号を放音する。さらに、１５はフロッピィディスクを駆動するためのフロッピィディスク装置、１６は前記各構成要素間のデータ転送を行なうためのバスである。
　なお、ＣＤ−ＲＯＭ駆動装置やＭＯ駆動装置などの上記した以外の外部記憶装置が接続されている場合もある。
　以上の構成はパソコン、ワークステーション等と同等であり、それらの上で本発明の楽音発生方法を実施することができる。
　　　【００１８】
　図２に上記図１に示した楽音生成装置におけるソフトウエアモジュール構成を示す。なお、この図においては、オペレーティングシステムとしてＷｉｎｄｏｗｓ９５（Ｗｉｎｄｏｗｓは米国Ｍｉｃｒｏｓｏｆｔ社の登録商標）が使用されているものとして説明する。このオペレーティングシステムによれば、各アプリケーションプログラムは当該ＯＳに対応する仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ　Ｍａｃｈｉｎｅ）環境のもとで実行される。このＷｉｎｄｏｗｓ仮想マシン（以下Ｗｉｎｄｏｗｓ　ＶＭという）は、アプリケーションを実行するコンテキストのことを指し、ＶＭコンテキストには、当該アプリケーションがアドレス指定可能なメモリマップ、ハードウエアレジスタの内容および当該アプリケーションに割り当てられたＷｉｎｄｏｗｓリソースが含まれている。このＷｉｎｄｏＷｓ　ＶＭには、ＭＳ−ＤＯＳ　ＶＭとシステムＶＭとの２種類がある。
　　　【００１９】
　この図において、２０は上述したシステムＶＭであり、３０はＭＳ−ＤＯＳ　ＶＭであり、これらはＲｉｎｇ３のコンポーネントとされている。図示するように、システムＶＭ２０上には、各アプリケーションプログラム２１、２３および２４が配置される。ここで、２１は３２ビットコードで動作するＷｉｎｄｏｗｓ９５用のアプリケーションプログラム（Ｗｉｎ３２アプリケーション）であり、例えばこの例では表計算用のプログラム２３がインストールされている。また、アドレス空間２２上には、Ｗｉｎｄｏｗｓ用のアプリケーションプログラムであるシーケンサプログラム２３およびワードプロセッサソフト２４が配置されている。さらに、システムＶＭ２０上にはＷｉｎｄｏｗｓ用のシステムサービスコンポーネント２５が配置されており、この中には各種ドライバソフトウエア２６およびハードＩ／Ｏレジスタ２７が含まれている。
　　　【００２０】
　また、ＭＳ−ＤＯＳ　ＶＭ３０の中には、例えば、ＭＳ−ＤＯＳ用のゲームプログラム３１などのＭＳ−ＤＯＳ用のアプリケーションプログラムがインストールされており、また、ＭＳ−ＤＯＳ用のドライバソフトウエア３２およびハードＩ／Ｏ３３などのＭＳ−ＤＯＳ環境が準備されている。なお、このゲームプログラム３１は、ＭＩＤＩを介して効果音などの楽音を発生するようになされているものとする。
　　　【００２１】
　また、Ｒｉｎｇ０には、図示するようにファイル管理システムなどを含むＷｉｎｄｏｗｓ９５の基本システム部４０が配置されており、その中にはＯＳのカーネル部４１、仮想デバイスドライバ（ＶｘＤ）部４２および管理ソフトウエア４７が含まれている。
　そして、前記仮想デバイスドライバ部４２には４３〜４５で示すｎ個のサポートルーチン１〜ｎおよびソフトウエア音源サポートルーチン４６などの複数の仮想デバイスドライバ（ＶｘＤ）ルーチンが含まれている。これらＶｘＤルーチンは、各種ソフトウエア割込およびハードウエア割込に対応した各種のサービスを提供する３２ビットプロテクトモードのプログラムモジュールであり、プロセッサの特権レベルＲｉｎｇ０で動作する。
　また、カーネル部４１は各仮想マシンＶＭからの各種ソフトウエア割込およびハードウエアからの各種ハードウエア割込に応じて、対応する仮想デバイスドライバルーチンを動作させるものである。
　　　【００２２】
　５０は前述したサウンド入出力部（ＣＯＤＥＣ）１１やＭＩＤＩインタフェース５などの各種のハードウエアであり、これらハードウエアからの割込は、前記カーネル部４１により受け付けられて、対応するサポートルーチン４３〜４５あるいはソフトウエア音源サポートルーチン４６などのＶｘＤにより当該処理が実行されるようになされている。
　　　【００２３】
　仮想デバイスドライバ（ＶｘＤ）は、通常、パーソナルコンピュータに備えられているハードウエア資源を複数の仮想計算機（ＶＭ）で共用するために設けられているものであり、いずれの（１あるいは複数の）ＶＭに当該ハードウエア資源を使用させるかを管理する。そのために、ＶｘＤは各ＶＭと実際のハードウエアとの間に挿入され、ＶＭ内のデバイスドライバがその制御対象であるハードウエアのアドレスにアクセスするのを検出して、ハードウエアヘのアクセスの仲介に入り、また、逆に、ハードウエアからの出力がある場合は、対応するＶＭのデバイスドライバヘの伝達を行なうものである。
　　　【００２４】
　前述したように、本発明においては仮想デバイスドライバ部４２にソフトウエア音源サポートルーチン４６が配置されており、このソフトウエア音源サポートルーチン４６中には後述するＭＩＤＩ処理ルーチンと波形生成処理ルーチンが含まれている。本発明におけるこのＶｘＤルーチン（ソフトウエア音源サポートルーチン）４６は、上述した仲介処理ではなく、実際には存在しない音源ハードウエアのシミュレーション処理を行なうようになされている。このようにすることにより、ＶＭからみてそのパーソナルコンピュータに実際にハードウエア音源が備えられているのかどうかの区別が付かない状態にすることができる。すなわち、各ＶＭにおいては、デバイスドライバを含めて、ハードウエア音源を操作する場合と全く同じ状態でソフト音源を使用することができるようになる。
　　　【００２５】
　図３は、本発明の楽音生成方法を用いたソフトウエア音源における処理を説明するための図である。このソフトウエア音源が起動されると、まず、ステップＳ１においてＲＡＭ３上の各種バッファ領域の確保、ＭＩＤＩ処理ルーチンおよび波形生成処理ルーチンを含むソフト音源サポートルーチン４６の仮想デバイスドライバ部４２へのロード処理、ＤＭＡＣ１０の転送処理の設定、ＣＯＤＥＣ１１などからのハードウエア割込の設定などの各種初期設定処理が行なわれ、ステップＳ２においてこのソフトウエア音源の表示画面が準備される。次に、ステップＳ３に進み、何らかの起動要因が発生しているか否かがチェックされ、ステップＳ４において起動要因の有無が判定されて、起動要因が発生しているときはステップＳ５に進み、発生していないときは前記ステップＳ３に戻って、起動要因の発生を待つ。
　　　【００２６】
　起動要因が発生したときは、ステップＳ５においてその起動要因が何であるのかが判定され、起動要因に応じてそれぞれ対応する処理が実行される。起動要因としては、（１）シーケンサソフトなどからのＭＩＤＩイベントの発生、（２）１フレーム分の波形サンプルの再生（ＤＡＣへの出力）の完了、（３）パネル入力やコマンド入力などの各種の要求、および、（４）終了コマンド入力などによる終了要求がある。
　　　【００２７】
　後述するように、上記（１）のシーケンサソフトなどからのＭＩＤＩイベントの発生はソフトウエア割込として、また、上記（２）の１フレーム分の再生完了はサウンド入出力回路１１あるいはＤＭＡＣ１０により発生されるハードウエア割込として通知される。一方、上記（３）の各種要求および（４）の終了コマンド入力は、キーボード６や操作パネルあるいはディスプレイ７のウインドウ画面などからのユーザー操作により入力されるものであり、前述したＷｉｎｄｏｗｓ用のシステムサービスコンポーネント２５中のプログラムのサービスを受けるものである。したがって、より深いレベルの割込に応じて起動される上記（１）および（２）に対応する各処理の方が、上記（３）および（４）に対応する各処理よりも優先して実行されることとなる。
　　　【００２８】
　さて、前記ステップＳ５による判定の結果、（１）ＭＩＤＩイベントの発生が起きたときは、Ｓ１０のＭＩＤＩ処理（ＭＩＤＩ　Ｉｎｔｅｒｐｒｅｔｅｒ処理）が実行される。このＭＩＤＩ処理は仮想デバイスドライバとして実行されるもので、この処理において、シーケンサソフト、ゲームソフトなどの楽音を生成するアプリケーションプログラムから発生されるＭＩＤＩイベントに対応して、ノートオン、ノートオフ、プログラムチェンジ、コントロールチェンジ、システムエクスクルーシブなどの処理が行われる。
　　　【００２９】
　例えば、そのＭＩＤＩイベントがノートオンイベントであるときは、新規な発音を、音源となる波形生成処理の発音チャンネルに割り当て、該割り当てたチャンネルに設定するための楽音制御データとノートオンを用意する。すなわち、そのノートナンバＮＮおよびベロシティＶＥＬを取り込み、ノートナンバＮＮの発音チャンネル（ｃｈ）の割り当てが行なわれる。この割り当てられた発音チャンネルに対応するチャンネルレジスタに、前記ノートオンイベントを受信したＭＩＤＩチャンネルに対応した音色データを前記ノートナンバＮＮおよびベロシティＶＥＬの値に応じて加工して得られる発音用データが設定される。
　　　【００３０】
　また、入力されたＭＩＤＩイベントがノートオフイベントであるときは、そのノートオフイベントのノートナンバＮＮで発音されている発音チャンネル（ｃｈ）がサーチされて、対応する発音チャンネルのノートオンフラグがリセットされる。
　上記のようにＭＩＤＩ処理（Ｓ１０）が実行された後は、ステップＳ１１に進み、ディスプレイ装置７にＭＩＤＩイベントが受信された旨の表示処理が実行され、再びステップＳ３に戻り、次の起動要因の発生を待つ。
　　　　【００３１】
　前記起動要因が（２）１フレーム分の波形サンプルの再生完了であるときは、Ｓ２０の波形生成処理が実行される。この波形生成処理も前記ＭＩＤＩ処理と同様に仮想デバイスドライバとして実行されるものである。この処理はハードウエア音源の機能をシミュレートするものであり、前記ＭＩＤＩ処理において生成された発音制御情報に基づいて１フレーム期間分の楽音波形サンプルをまとめて演算生成し、出力バッファに記憶する。
　　　【００３２】
　この波形生成処理（Ｓ２０）が起動されると、まず、演算順序の第１番目の発音チャンネル（ｃｈ）の最初の楽音波形サンプルの演算準備が行なわれる。演算準備処理とは、前回の読み出しアドレス、各種ＥＧ値、各種ＥＧのステート（アタックやリリースなどの状態）、ＬＦＯ（Ｌｏｗ　Ｆｒｅｑｕｅｎｃｙ　Ｏｓｃｉｌｌａｔｏｒ）値等のデータを、ただちに演算に使えるようにアクセス準備したりＣＰＵ１の内部レジスタにロードしたりする処理である。次に、ＬＦＯ、フィルタＥＧ（ＦＥＧ）、音量ＥＧ（ＡＥＧ）の波形計算を行ない、１フレーム時間分の演算に必要なＬＦＯ波形、ＦＥＧ波形、ＡＥＧ波形のサンプルを生成する。ＬＦＯ波形はＦナンバ、ＦＥＧ波形、ＡＥＧ波形に加算され、各データを変調するために用いられる。
　　　【００３３】
　次いで、前回の読み出しアドレスを初期値としてＦナンバを繰り返し加算し、１フレーム時間内の各波形サンプルの読み出しアドレスを発生する。この読み出しアドレスの整数部に基づいて音色データ内の波形記憶領域より波形サンプルを読み出すとともに、この読み出しアドレスの小数部に基づいて読み出された波形サンプル間の補間を行ない、１フレーム時間内の全補間サンプルを算出する。１フレーム時間が、例えば６４サンプル分の時間に相当する場合、６４サンプル分まとめて処理される。ここで、前記１フレーム時間に相当する複数サンプル分の処理は、読み出しアドレスに基づく読み出しから補間の処理までの処理を単位処理として、この単位処理を繰り返して行なうようになっているため、読み出しアドレスのＣＰＵレジスタヘの読み込みが全体として１回で済み、処理が高速化されている。
　　　【００３４】
　続いて、前記１フレーム時間分の補間サンプルに対し、前記ＦＥＧ波形に基づいて音色制御を行なう音色フィルタ処理が行なわれ、次いで、フィルタ処理済みの各サンプルに対し前記ＡＥＧおよび音量データに基づく振幅制御処理が行われ、さらに、振幅制御処理された前記１フレーム時間分の楽音波形サンプルがそれぞれ出力バッファの対応するサンプルに足し込まれる累算書込処理が実行される。この処理においては、前記１フレーム時間分の各波形サンプルについて、振幅制御処理と出力バッファにおける対応サンプルヘの足し込み処理を連続して行うようになっているので、サンプルのＣＰＵレジスタヘの取り込み回数が少なくてすみ、処理速度が向上している。
　　　【００３５】
　以上に示した１ｃｈ分の楽音波形サンプルの演算準備〜演算処理を、演算順序２番目以降の発音チャンネルについて順次実行する。
　このようにして発音波形演算が終了したときには、出力バッファには、演算すべき全発音チャンネルの生成された楽音波形サンプルを累算した累算値が、１フレーム時間に対応するサンプル数（例えば６４サンプル）分記憶されている。
　　　【００３６】
　また、前記ステップＳ５において、起動要因がその他の処理であると判定されたときは、ステップＳ３０に進み、それに対応する処理が実行されることとなる。このその他の処理としては、例えば、操作者によりなされたパネル要求やコマンド入力などに応答して、このソフトウエア音源の発音チャンネル数、サンプリング周波数の選択、出力バッファの容量（これは１フレーム時間の長さに相当する。）など各種の設定処理が実行される。そして、その結果などがステップＳ３１において画面上に表示され、再び、ステップＳ３に戻る。
　　　【００３７】
　さらに、前記ステップＳ５の判定結果が終了要求の入力であった場合は、ステップＳ４０に進み、終了処理を行なったのち、ステップＳ４１においてこのソフト音源に対応する表示画面を消去して、再びステップＳ３に戻る。
　　　【００３８】
　このようなソフトウエア音源を使用して楽音を発生するときの信号データの流れを図４に基づいて説明する。なお、この図においては、楽音を発生させるソフトウエアが前述した図２におけるシーケンサソフトウエア２３であるものとし、該シーケンサソフトウエアを使用してリアルタイム演奏を行なう場合を例にとって説明する。このシーケンサソフトウエアは、鍵盤やＭＩＤＩインタフェースなどからの演奏情報を入力し、演奏入力があったときに対応するＭＩＤＩイベントを出力するものである。
　　　【００３９】
　まず、シーケンサソフトウエア２３は発生させる楽音に対応するＭＩＤＩイベントをドライバソフトウエア群２６中のＭＩＤＩドライバに対して送る。これは、当該ＶＭの音源ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ　Ｐｒｏｇｒａｍｍｉｎｇ　Ｉｎｔｅｒｆａｃｅ）をコールしてソフトウエア割込を発生させることにより実行される。次に、該ＭＩＤＩドライバは、Ｘ音源ＡＰＩを介して仮想デバイスドライバに対して該ＭＩＤＩメッセージを転送する。これにより、仮想デバイスドライバとしてロードされているＭＩＤＩ処理ルーチン（Ｓ１０）が起動され、前述したように、当該ＭＩＤＩメッセージに対応する楽音制御データを生成して、当該発音チャンネルに対応する音源レジスタにセットする。一方、１フレーム分の楽音再生が終了した時にＣＯＤＥＣ１１からハードウエア割込が発生されると、上述したように波形生成ルーチン（Ｓ２０）が起動され、１フレーム分の波形サンプルデータの生成演算が実行され、該生成された楽音波形サンプルが出力バッファに格納される。この出力バッファに格納された１フレーム分の波形サンプルデータは、ＤＭＡバッファに転送される。ＤＭＡバッファに格納された波形サンプルデータは、ＤＭＡＣ１０の制御のもとに１サンプリング周期毎に１波形サンプルずつ読み出されてＤＡＣに供給されてアナログ信号に変換され、サウンドシステム１４から楽音として出力されることとなる。
　　　【００４０】
　また、ＭＳ−ＤＯＳ　ＶＭ３０中のゲームソフト３１がＭＩＤＩ対応音源を使用して楽音を発生させる機能を有するプログラムである場合について説明する。まず、該ゲームソフト３１は発生させる楽音に対応するＭＩＤＩイベントをＶＭ３０内のＭＩＤＩドライバ３２に対して送出し、該ＭＩＤＩドライバ３２は対応するハードレジスタ３３に対し、当該ＭＩＤＩイベントを書き込む。Ｒｉｎｇ３のプログラムからのハードウエアレジスタに対する直接のアクセスに対してはトラップが仕掛けられているために、このハードレジスタ３３に対する書き込みアクセスが検出されたときにソフトウエア割込が発生して、制御がＲｉｎｇ０に移り、そのトラップ原因に対応した仮想デバイスドライバが起動される。
　　　【００４１】
　使用されているパーソナルコンピュータに通常のハードウエア音源が装備されている場合には、そのハードウエア音源に対応する仮想デバイスドライバがインストールされているおり、そのハードウエア音源用の仮想デバイスドライバが起動される。なお、このようにハードウエア音源は仮想デバイスドライバを介して駆動されるため、複数のＶＭによりこのハードウエア音源を共用することが可能となる。
　　　【００４２】
　また、対応するハードウエア音源が装備されていないときには、仮想デバイスドライバである本発明のソフトウエア音源サポートルーチン４６が起動され、ＭＩＤＩ処理ルーチン（Ｓ１０）に当該ＭＩＤＩイベントが渡される。この後は前述の場合と同様にして、楽音発生処理が行なわれることとなる。
　したがって、アプリケーションプログラムからみてハードウエア音源が実装されている場合と全く同様に処理が行なわれ、なんらプログラムなどの変更をすることなく、ソフトウエア音源による処理を実行させることが可能となる。
　　　【００４３】
　図５および図６を用いて、前記ステップＳ２０の波形生成部において演算生成された楽音波形サンプルがどのようにしてサンプリング周期毎にＤＡＣから出力され楽音として放音されるかについて説明する。
　図５において、１０は前述したＤＭＡＣであり、その内部にはＤＭＡバッファ６０のデータ読み出しアドレスｐを指定するポインタレジスタ１０１が設けられている。１１は前述したサウンド入出力回路（ＣＯＤＥＣ）であり、その内部には、ＤＭＡバッファから読み出された楽音波形サンプルデータが格納される出力用のＦＩＦＯバッファ１１１、ＤＡＣ１２、前記ＦＩＦＯバッファ１１１に空き領域があることを検出する空検出手段１１３、ＦＩＦＯバッファ１１１からＤＡＣ１１２に転送された波形サンプルデータの数が所定数になったことを検出し、ＣＰＵ１に対してハードウエア割込を出力する転送数検出手段１１４が設けられている。なお、このほかにも、図示していないが、外部オーディオ入力端子１３からのオーディオ信号が入力される入力用ＦＩＦＯ、該入力用ＦＩＦＯの出力をアナログデジタル変換するＡＤＣなども設けられている。
　　　【００４４】
　１２は前述した周波数Ｆｓのサンプリングパルスを発生するサンプリングパルス発生器であり、その出力は、前記ＦＩＦＯバッファ１１１および前記転送数検出手段１１４に供給されている。また、６０は波形生成部ステップＳ２０により演算生成された楽音波形サンプルが格納されるＤＭＡバッファ（ＤＭＡＢ）であり、図示するように、例えばＤＭＡＢ１とＤＭＡＢ２の２つのバッファから構成されている。各バッファＤＭＡＢ１およびＤＭＡＢ２は、両方とも、１フレーム時間に対応する数の楽音波形サンプルを格納することができる容量を有しており、一方のＤＭＡＢ（例えばＤＭＡＢ１）から波形サンプルが読み出されているときには、他方のＤＭＡＢ（例えばＤＭＡＢ２）に波形生成部Ｓ２０において演算生成された波形サンプルが格納されるように構成されている。なお、このＤＭＡＢの数はこの例のように２個に限られることはなく、３個以上とすることができる。
　　　【００４５】
　４６は仮想デバイスドライバとして配置されているソフト音源サポートルーチンであり、前述したようにＭＩＤＩ処理部（Ｓ１０）と波形生成部（Ｓ２０）とが含まれており、また、該波形生成部における波形生成演算は、波形データメモリ（波形テーブル）７０に記憶されている波形データを用いて行われる。
　　　【００４６】
　前述したように、演奏処理を実行するアプリケーションプログラムからＭＩＤＩイベントが発生されたとき、前述したようにしてソフトウエア割込が発生して、仮想デバイスドライバであるソフト音源サポートルーチン４６内のＭＩＤＩ処理部（Ｓ１０）が起動され、該ＭＩＤＩイベントに対応した楽音制御パラメータが音源レジスタに格納される。一方、波形生成部（Ｓ２０）はＣＯＤＥＣ１１からのハードウエア割込により起動され、各発音チャンネルに対応する音源レジスタに格納されている楽音制御パラメータに基づいて、複数の発音チャンネル（例えば、最大３２チャンネル）のそれぞれ１フレーム時間に対応する数の波形サンプルデータ（例えば、６４サンプル）をまとめて演算生成し、それらを累算して１フレーム時間分の楽音波形サンプルデータを出力バッファに生成する。この波形生成演算が終了したときに、出力バッファに生成された波形サンプルデータは、現在読み出しが行われていない方のＤＭＡＢ６０、図５に示した状態においては、ＤＭＡＢ２に転送される。
　　　【００４７】
　サウンド入出力回路（ＣＯＤＥＣ）１１内のＦＩＦＯバッファ１１１には、ＤＭＡＢ６０から転送された楽音波形データが格納されている。サンプリング信号発生器１２から周波数Ｆｓ（例えば、４８ｋＨｚ）のサンプリング信号が発生される毎に、該ＦＩＦＯバッファ１１１に記憶されている楽音波形サンプルは１サンプルずつ読み出され、ＤＡＣ（デジタルアナログ変換器）１１２に転送される。この転送された楽音波形サンプルデータはＤＡＣ１１２においてアナログ電圧信号に変換され、サウンドシステム１４に送られて低域通過フィルタを通過され、増幅器により増幅されてスピーカなどから放音されることとなる。
　　　【００４８】
　また、前記サンプリング信号発生器１２の出力はデータ転送数検出手段１１４にも入力されており、ここで前記ＦＩＦＯバッファ１１１からＤＡＣ１１２に転送された波形サンプル数が計数される。そして、該転送された波形サンプルデータの数が１フレーム時間に相当する数であることが検出されたとき、該データ転送数検出手段１１４からハードウエア割込がＣＰＵ１に対して出力される。前述したように、この割込はＲｉｎｇ０のカーネル部４１において受け取られ、前記ソフト音源サポートルーチン４６内の波形生成部（Ｓ２０）が起動される。
　　　【００４９】
　また、前記ＦＩＦＯバッファ１１１に接続されている空き検出手段１１３によりＦＩＦＯバッファ１１１内にデータを格納することができる空きが発生していることが検出されたときは、該空き検出手段１１３から、ＤＭＡＣ１０にＤＭＡ要求信号ＤＭＡｒｅｑが発生される。
　　　【００５０】
　図６の（ａ）はＤＭＡＣ１０の動作を説明するためのフローチャートである。前述したようにＣＯＤＥＣ１１内の空き検出手段１１３からＤＭＡｒｅｑが出力されたとき、ＤＭＡＣ１０は、ステップＳ１００に進み、ＤＭＡＢ６０のポインタレジスタ１０１の内容ｐが指すアドレスに格納されている楽音波形サンプルデータを読み出して、ＦＩＦＯバッファ１１１に転送する。そして、ステップＳ１１０に進み、ポインタレジスタ１０１の内容ｐをインクリメントして、このＤＭＡｒｅｑに対応する処理を終了する。
　このようにして、ＦＩＦＯバッファ１１１に空きが生じる毎にＤＭＡＢ６０から楽音波形サンプルデータがＦＩＦＯバッファ１１１に転送される。
　　　【００５１】
　図６の（ｂ）に、前述したＤＭＡＢ６０の一構成例を示す。この例においては、ＲＡＭ３中のアドレスｂからアドレスｂ＋ｎ−１までのｎワード分の領域をＤＭＡＢ６０として使用している。そして、このＤＭＡＢ６０の領域をｎ／２ワードずつに二分して、前記ＤＭＡＢ１とＤＭＡＢ２として使用している。例えば、図の斜線で示した部分とそれ以外の部分とにＤＭＡＢ領域を２分して、ＤＭＡＣ１０が図の斜線の部分（ＤＭＡＢ１）から楽音波形データを読み出しているとき、アドレスａを先頭とするｎ／２ワード分の領域（ＤＭＡＢ２）に生成された楽音波形データを格納するようにしている。なお、該書込アドレスａあるいは読出アドレスｐがこのＤＭＡＢ６０領域の最終アドレスｂ＋ｎ−１に達したときは、再び先頭アドレスｂに戻るようになされている。
　　　【００５２】
　前述したＭＩＤＩ処理（Ｓ１０）および波形生成処理（Ｓ２０）による処理のタイミングを図７の（ａ）を参照して説明する。この図において横軸は時間軸である。前述したように本発明においては波形生成演算は１フレームを単位として実行されており、この図において、時刻ｔａからｔｂまでの期間Ｔａ、ｔｂ〜ｔｃの期間Ｔｂ、ｔｃ〜ｔｄの期間Ｔｃはいずれも１フレーム時間である。図の最上段に記載されているのは、シーケンスソフトなどのアプリケーションプログラムにより発生されるＭＩＤＩイベントによるソフトウエア割込の発生タイミングを示しており、期間Ｔａ中の時刻ｔ１およびｔ２、および、期間Ｔｂ中の時刻ｔ３にＭＩＤＩイベントによるソフトウエア割込が発生している例が示されている。
　　　【００５３】
　図の次の段に記載されているのは、ＭＩＤＩ処理（Ｓ１０）の実行されるタイミングであり、この図に示すように、ＭＩＤＩイベントによるソフトウエア割込が発生される毎にこのＭＩＤＩ処理が実行されている。図の中段に示されている下向きの矢印は、前述したＣＯＤＥＣ１１により発生されるハードウエア割込の発生タイミングを示しており、図の最下段に記載されているＤＭＡＣ１０により実行されるＤＭＡＢ６０からの波形サンプルデータの読出再生周期（１フレーム）に同期して時刻ｔａ、ｔｂ、ｔｃ、ｔｄに発生されている。このハードウエア割込が発生すると図示するように波形生成処理（Ｓ１０）の実行が開始される。この各波形生成処理において演算生成された楽音波形サンプルは該波形生成演算の終了時に前述したＤＭＡＢに転送される。また、図において、波形生成演算開始直後の黒く塗ってある部分は、ハードウエア割込直後における割込禁止期間を表している。
　　　【００５４】
　なお、前記ＭＩＤＩイベント発生によるソフトウエア割込と前記ＣＯＤＥＣ１１からのハードウエア割込とは、同じ優先順位の割込とされているので、一方の割込に対応する処理（ＭＩＤＩ処理あるいは波形生成処理）を実行中に次の割込が発生したときは、実行中の処理を中断して、後に発生した割込に対応する処理が実行されることとなる。例えば、この図において、時刻ｔａに発生したハードウエア割込に対応する波形生成処理を実行している途中の時刻ｔ１にソフトウエア割込が発生して、当該ＭＩＤＩイベントに対応するＭＩＤＩ処理が実行され、このＭＩＤＩ処理が終了した後に、前記波形生成処理の続きが実行される。また、時刻ｔ３に発生したソフトウエア割込に対応するＭＩＤＩ処理を実行中の時刻ｔｃにＣＯＤＥＣ１１からのハードウエア割込が発生して、該ＭＩＤＩ処理が中断されて当該波形生成処理が実行され、この波形生成処理が終了した後に、再び前記中断されていたＭＩＤＩ処理が再開されている。
　　　【００５５】
　そして、期間Ｔａに入力されたＭＩＤＩイベントに対応する波形生成演算は期間Ｔｂに実行され、該波形生成された楽音波形サンプルは期間Ｔｃに読出再生される。このように、発生したＭＩＤＩイベントはほぼ２フレーム時間遅れて放音されることとなる。したがって、リアルタイム演奏をさせる場合には、ＤＭＡＢの大きさを小さくして１フレーム時間の長さを短くすることが望ましい。例えば、本実施例においては、１フレーム６４サンプルとしている。また、自動演奏などを行わせるときには、後述するような楽音の途切れを防ぐために、ＤＭＡＢを大きくして１フレーム時間の長さを長くすることが望ましい。
　　　【００５６】
　上述したようにして１フレーム時間毎に対応する波形生成演算が実行されるわけであるが、場合によってはそのフレーム時間内に波形生成演算が終了しないことがある。例えば、マルチメディアソフトなどのリアルタイム性を要求される処理を並行して実行している場合には、そのためにＣＰＵパワーが割かれてソフトウエア音源処理を実行するための時間が割り当てられないことがある。本発明においては、このような場合には演算の終了しなかったフレーム時間については、波形の生成をキャンセルしている。これにより、安定した状態で次のフレーム時間に対応する波形生成を行うことが可能となる。なお、一時的に楽音の発生が行われないこととなるが、その時間は短い（例えば、サンプリング周波数が４８ｋＨｚで１フレーム６４サンプルのときは、１フレーム時間は約１．３ミリ秒である。）ため、その影響は小さいものである。
　　　【００５７】
　図７の（ｂ）にこのように波形の生成をキャンセルする場合の一例を示す。この例は、期間Ｔ４において入力されたＭＩＤＩ演奏入力に対応する波形生成演算が、前述したような理由により、期間Ｔ５からＴ７の途中まで行われている場合を示している（図においては、波形生成演算が連続して行なわれているかのように記載されているが、実際には、他の処理に制御が奪われて、波形生成演算はとびとびに実行される）。したがってこの例においては、期間Ｔ４に入力されたＭＩＤＩイベントに対応する波形生成演算が行われている期間Ｔ５からＴ７の波形データはキャンセルされ、対応する期間Ｔ６〜Ｔ８の間のＤＭＡ出力は行われない。したがって、期間Ｔ５およびＴ６に入力されたＭＩＤＩイベントに対応する波形生成演算も実行されず、その次の期間Ｔ７に入力されたＭＩＤＩイベントに対応する波形生成演算からは通常通りに安定して波形生成されることとなる。
　　　【００５８】
　次に、図８に本発明の変形例を示す。図８の（ａ）は第１の変形例を示すもので、この例においては、ＣＯＤＥＣ１１から発生されるハードウエア割込が、１フレームの再生が終了するタイミングよりもＴｉ時間だけ早く発生されるようにし、波形生成演算が開始されたときに、まず、前回の波形生成演算で既に生成されている波形サンプルデータをＤＭＡＢに転送し、続いて、次回の波形生成演算で転送すべき波形サンプルデータを生成するようにしたものである。波形生成演算はＭＩＤＩイベントの数によりその演算所要時間が変動するために、このように早いタイミングでハードウエア割込を発生させ、波形生成演算の開始時に前回の波形生成演算により生成された波形サンプルをＤＭＡＢに転送させることにより、ＤＭＡＢへのデータ転送を安定して行うことができるようになる。なお、ハードウエア割込をＴｉ時間だけ早めることは、前述した転送数検出手段１１４において、転送された波形サンプルの数の計数値が図７（ａ）の場合に比べてＴｉ時間に相当する数だけ少ない数のときに割込を発生させるようにすることにより行うことができる。
　　　【００５９】
　図８の（ｂ）は、他の変更例を示すものである。この例においては、ソフトウエア割込の優先順位をハードウエア割込よりも高い優先順位とした例である。このようにソフトウエア割込の優先順位が高いために、図示するように、時刻ｔ３において発生したソフトウエア割込に対応するＭＩＤＩ処理を実行中の時刻ｔｃにＣＯＤＥＣ１１からハードウエア割込が発生しても、該ＭＩＤＩ処理が終了してから対応する波形生成演算が実行されることとなる。
　　　【００６０】
　なお、前述した実施の形態においては、ＣＯＤＥＣ１１において転送数検出手段がデータ転送数を計数してハードウエア割込を発生していたが、これに限られることはなく、ＣＰＵ１あるいはＤＭＡＣ１０がＤＡＣへのデータ転送数の検出を行うようにしてもよい。
　　　【００６１】
　また、前述した実施の形態においては、ＤＭＡＣ１０を設けてサウンド入出力回路（ＣＯＤＥＣ）１１中のＦＩＦＯバッファ１１１、ひいてはＤＡＣ１１２への波形サンプルデータの転送を行っていたが、これに限られることはなく、ＣＯＤＥＣ１１が搭載されているボードに接続されているバスが高速なもので、ＣＯＤＥＣ１１に対するデータ転送を高速に行なうことができる場合には、ＣＰＵ１によりＣＯＤＥＣ１１へのデータ転送を行うようにしてもよい。この場合には、ＣＰＵがサンプリング周期毎に発生するハードウエア割込によりバッファに記憶された波形サンプルデータを１つずつＤＡＣに転送し、同時に転送し終えたサンプル数を計数する。そして、該計数結果が１フレーム分の転送の完了を示したときに、波形生成演算を実行するためのソフトウエア割込を発生するように構成する。
　　　【００６２】
　さらにまた、前述した実施の形態においてはオペレーティングシステムとしてＷｉｎｄｏｗｓ９５を使用した場合を例にとって説明したが、これに限られることはなく、ＷｉｎｄｏｗｓＮＴあるいはＭａｃＯＳ、ＵＮＩＸなど他のＯＳの場合にも、本発明の楽音生成方法を適用することは可能である。同様に、使用されるＣＰＵとしても、ｘ８６系のＣＰＵに限らず、ＰｏｗｅｒＰＣ（ＰｏｗｅｒＰＣはＩＢＭ社の商標）や他のＲＩＳＣプロセッサなどを使用することができる。
　　　【００６３】
　さらにまた、楽音生成方法は上述した実施の形態のような波形メモリ方式に限定されることはなく、ＦＭ方式、物理モデル方式、ＡＤＰＣＭ方式など、どのような方式のものであってもよい。
　　　【００６４】
　　【発明の効果】
　本発明によれば、フレーム単位でまとめて楽音波形サンプルを演算生成しているので演算効率が向上し、生成された楽音の質を向上することができるとともに同時発音チャンネル数を増加することができるようになる。
　また、仮想デバイスドライバはハードウエアにより近いレベルにあるため、割込の遅れが少なく、また、３２ビットコードで実行されるため、高速にＭＩＤＩ処理および波形生成処理が実行され、波形生成演算を安定して実行することが可能となり、さらに、複数のＶＭから共通に本発明のソフトウエア音源を利用することが可能となる。
　さらにまた、ＶＭ側からはハードウエア音源を使用する場合と同じデバイスドライバを使用することができ、ハードウエア音源とコンパチブルなソフトウエア音源を提供することができる。
　　　【００６５】
　さらにまた、ＤＭＡＢのサイズを任意に設定することができるため、小さいサイズのバッファとすることができ、リアルタイム演奏の場合における発音の遅れを小さくすることが可能となる。
　さらにまた、計算が間に合わなかった時間フレームに関し、波形の生成をキャンセルしているので、何らかの障害により動作が乱された場合であっても、安定した動作状態に直ちに復帰することができる。
【図面の簡単な説明】
　　【図１】　本発明の楽音生成装置の構成を示すブロックである。
　　【図２】　本発明のソフトウエアモジュールの構成を示す図である。
　　【図３】　本発明の楽音生成方法における処理を示す図である。
　　【図４】　本発明における処理の流れを示す図である。
　　【図５】　生成された楽音波形データの流れを示す図である。
　　【図６】　ＤＭＡＣにおける処理およびＤＭＡバッファの構成例を示す図である。
　　【図７】　本発明における処理のタイミングを説明するための図である。
　　【図８】　本発明における処理の変形例を示すタイミング図である。
　　【符号の説明】
　１　ＣＰＵ、２　ＲＯＭ、３　ＲＡＭ、４　タイマ、５　ＭＩＤＩ　インターフェース、６　キーボード、７　ディスプレイ、８　ハードディスク装置、１０　ＤＭＡＣ、１１　サウンド入出力回路、１２　サンプリング周波数発生器、１３　外部オーディオ入力端子、１４　サウンドシステム、１５　フロッピィディスク装置、１６　バス、６０　ＤＭＡバッファ、１０１　ポインタレジスタ、１１１　ＦＩＦＯバッファ、１１２　ＤＡＣ、１１３　空検出手段、１１４　転送数検出手段