(57)【特許請求の範囲】
【請求項１】
楽音発生装置であって、
楽音波形を記憶する記憶手段と、
前記記憶手段に記憶された楽音波形を読み出すことにより楽音を発生する波形メモリ方式を含む複数の発音方式で楽音を発生することが可能な演算処理手段と、
前記波形メモリ方式以外の発音方式が指定された場合に、指定された方式における当該楽音発生装置の処理能力を反映した周波数を算出する算出手段と、
を有し、
前記算出手段により算出された周波数が所定の周波数以下であると判断された場合には、前記演算処理手段が、発音方式を波形メモリ方式に切り換える
ことを特徴とする楽音発生装置。
【請求項２】
前記算出手段により算出された周波数が所定の周波数以下であると判断された場合、かつ、前記算出手段により算出された周波数が所定の周波数以下であると判断されたときには発音方式を波形メモリ方式に切り換える旨が指示された場合、前記記憶手段が、波形メモリ方式以外の方式で生成した楽音波形を記憶することを特徴とする請求項１記載の楽音発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば、電子ゲーム機器や、通信カラオケ装置、パソコン等のように、ＣＰＵを用いた応用システムに用いて好適な楽音発生装置に関し、特に、楽音の発生を指示するデータに基づき多様な楽音を合成する楽音発生装置および楽音発生方法に関する。
【０００２】
【従来の技術】
従来、パソコンなどで楽音を発生しようとする場合には、専用の音源デバイスや、音源ボードなどの専用のハードウェアを組み込み、これらを制御することで、所定の楽音を発生するようになっていた。が、近年、パソコンの性能、特にＣＰＵの性能が著しく向上したので、音源ボード等の専用ハードウェアで実行すべき処理をもＣＰＵが実行することにより、楽音を発生するようことが行なわれつつある。
このような楽音発生は、ＣＰＵが専用のソフトウェア（プログラム）にしたがって楽音波形の（サンプリング）データを演算して求めることから、ソフトウェア音源とも呼ばれ、従来の、専用のハードウェアを用いて楽音を発生するハードウェア音源と区別される。
【０００３】
【発明が解決しようとする課題】
しかしながら、ソフトウェア音源により発生される楽音の品質は、演算処理を担うＣＰＵの性能に大きく依存する。すなわち、ＣＰＵの性能が高い場合には、波形データ（サンプリングデータ）を求める演算処理を高速で実行できるため、サンプリング周波数をより高くして、品質の高い楽音を発生することが可能である。しかし、ＣＰＵの性能が低い場合には、高速な演算処理が困難となるため、サンプリング周波数を低くしなければならず、このため、楽音の品質が低くならざるを得ない。
【０００４】
一方、パソコン等のように、ＣＰＵを用いた応用システムでは、ＣＰＵの性能や、オプション品等の装着状態が千差万別である（通常、オプション品とは、広義にはハードディスクや、ビデオカードなども含むが、ここでは、楽音の発生に何らかの形で寄与するものをいう）。すなわち、ＣＰＵの性能は、個々のシステムに応じて異なることを念頭に置かなければならない。
さらに、楽音発生のためのアプリケーションプログラムと、それ以外のアプリケーションプログラムとを複数同時起動するような場合、楽音発生のためのプログラムの実行に割り当てられるＣＰＵの負担は、他のプログラムの起動状況やタスクの状態等によって変動することがある。すなわち、全く同一のシステム環境ですら、楽音発生のプログラムから見れば、ＣＰＵの性能が見掛け上、変動することがあり得るのである。
したがって、ユーザは、ソフトウェア音源により楽音を発生する場合にあっては、環境が変わる毎に、楽音発生のための基本的な事項を再設定しなければならず、非常に煩雑である、という問題があった。しかも、かかるシステムで、設定事項で定められる条件で楽音発生が可能であるか否かは、実際に発音させて、音飛び、音欠け等の不都合が発生するか否かではじめて判明する。すなわち、設定事項が、そのシステムにおいて適切であるかどうかは、実際に発音させるまで判明しない、という問題がある。
【０００５】
本発明は、上述した問題に鑑みてなされたもので、その目的とするところは、装置構成等に変動があっても、その構成において、適切な品質を確保した上で多様な楽音を発生することが可能な楽音発生装置および楽音発生方法を提供することにある。
【０００６】
【課題を解決するための手段】
上述した問題を解決するために本発明は、楽音波形を記憶する記憶手段と、前記記憶手段に記憶された楽音波形を読み出すことにより楽音を発生する波形メモリ方式を含む複数の発音方式で楽音を発生することが可能な演算処理手段と、前記波形メモリ方式以外の発音方式が指定された場合に、指定された方式における当該楽音発生装置の処理能力を反映した周波数を算出する算出手段とを有し、前記算出手段により算出された周波数が所定の周波数以下であると判断された場合には、前記演算処理手段が、発音方式を波形メモリ方式に切り換えることを特徴とする楽音発生装置を提供する。
【０００７】
好ましい態様において、この楽音発生装置は、前記算出手段により算出された周波数が所定の周波数以下であると判断された場合、かつ、前記算出手段により算出された周波数が所定の周波数以下であると判断されたときには発音方式を波形メモリ方式に切り換える旨が指示された場合、前記記憶手段が、波形メモリ方式以外の方式で生成した楽音波形を記憶してもよい。
【０００８】
【発明の実施の形態】
１：構成
以下、本発明の最適な実施形態について図面を参照して説明する。図１は、本発明が適用される楽音発生装置の構成を示すブロック図である。
この図において、符号１０はＣＰＵであり、ＲＯＭ１１に記憶された基本プログラムに基づいて、（データ）バス１２を介して各部を制御するようになっている。符号１３はＲＡＭであり、後述する各種レジスタやフラグを設定したり、各種データを一時的に記憶する。符号１４はマルチＩ／Ｏポートであり、例えばＭＩＤＩ情報を入出力したり、図示しない鍵盤による操作情報ＫＢＤなどを入力したり、また、図示しない各種のインターフェイス（Ｉ／Ｆ）を介し各種の情報を入力する。すなわち、マルチＩ／Ｏポート１４は、発生すべき楽音を規定する演奏情報を、ＭＩＤＩ情報や、操作情報ＫＢＤとして入力する。なお、本実施形態では、演奏情報が自動演奏により発生する場合も想定している。この場合の自動演奏とは、所定の自動演奏プログラムを実行することにより、演奏情報が時系列的に発生する場合をいい、換言すれば、図１の構成が、自動演奏プログラムの実行により、楽音発生装置としてのみならず、いわばシーケンサとしても働く場合をいう。また、Ｉ／Ｆの種類としては、シリアルや、パラレル、ＲＳ−２３２Ｃ、ＲＳ−４２２など考えられ、特に、ＲＳ−２３２Ｃの場合には、図示しないモデムにより電話回線にも接続され、ホスト局と通信も行なう。
したがって、演奏情報の発生源は、鍵盤操作による場合は当該鍵盤であり、ＭＩＤＩ情報等による場合は各種Ｉ／Ｆを介して接続された外部機器であり、また、自動演奏により場合は自動演奏プログラムを実行するＣＰＵ１０である。
符号１５はストレージユニットであり、ＦＤ（フロッピィ・ディスクドライブ）やＨＤ（ハード・ディスクドライブ）、ＣＤ−ＲＯＭドライブ等の記憶装置から構成され、各種アプリケーションプログラムやデータ等を保存する。符号１６はディスプレイであり、ＣＲＴや液晶パネル等により構成され、ＣＰＵ１０の制御の下、各種表示を行なう。
【０００９】
次に、符号１７はコプロセッサであり、浮動小数点演算に関する処理等をＣＰＵ１０に肩代わりして行なう。なお、その他の処理についてはＣＰＵ１０が行なう。符号１８はタイマであり、後述するタイマー処理において時間の計測等を行なう。符号１９はＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）であり、ＲＡＭ２０におけるデータ転送を、ＣＰＵ１０を介さずに直接行なう。なお、近年においてコプロセッサ１７、タイマ１８およびＤＭＡＣ１９は、ＣＰＵ１０とともに１チップ化される場合もあるが、本構成においては、便宜上、ＣＰＵ１０とは別体構成として説明することとする。
ＲＡＭ２０は、符号１３と同様であり、ハードウェア的には両者に差はないが、ＲＡＭ１３がプログラム実行に使用されるワークメモリとして働くのに対し、このＲＡＭ２０は、所定の条件下において、展開された波形データを一時的に記憶する波形メモリとして働く。
【００１０】
符号２１はＤＳＰであり、楽音合成の演算処理を行なう専用のプロセッサである。符号２２は音源デバイスであり、種々の命令の下、楽音信号を合成する。符号２３はＤ／Ａコンバータであり、後述するフラグＤＡＣＥＮＢＬが立ち上がる（「１」になる）ことにより、その出力動作が許可される。
なお、Ｄ／Ａコンバータ２３の入力段には、図では省略したが、ＦＩＦＯ形式のデータバッファが設けられており、バッファリングされたデータが、後述するステップＳａ２１により設定されたサンプリング周波数ｆｓで読み出されるようになっている。また、Ｄ／Ａコンバータ２３の出力段には、図では省略したが、高調波を除去するためのＬＰＦ（ローパスフィルタ）が設けられ、そのカットオフ周波数は、設定されたサンプリング周波数ｆｓの略半分に設定されるようになっている。そして、このＬＰＦの出力こそが楽音発生装置による楽音信号として出力され、アンプやスピーカ等からなるサウンドシステムにより発音するようになっている。
【００１１】
さて、符号２４は、符号１３、２０と同様なＲＡＭであり、ハードウェア的には両者に差はないが、このＲＡＭ２４は、ＤＳＰ１７の演算処理に使用されるワークメモリとして働く。符号２５は波形メモリであり、音源デバイス２２が波形メモリ読出方式により楽音を発生する場合、基本的な音色の波形データを複数記憶する。なお、波形メモリ２５とＲＡＭ２０とは、波形メモリ２５については、その記憶内容が主に音源デバイス２２で使用され、ＲＯＭまたは（ドータ）ボードで提供されるのに対し、ＲＡＭ２０については、その記憶内容が主にＣＰＵ１０で使用される点で、そのニュアンスを若干異にする。
【００１２】
かかる構成のうち、コプロセッサ１７や、ＤＳＰ２１、音源デバイス２２、ＲＡＭ２４、波形メモリ２５などは、通常、オプション品として設定される。すなわち、これらは任意的に設けられるものである。特に、ＲＡＭ２４については、装着されない場合、ＲＡＭ１３の領域の一部がＲＡＭ２４として割り当てられ、また、波形メモリ２５については、音源デバイス２２がＦＭ合成方式など純粋な演算のみにより波形データを生成する方式により楽音を発生するものであれば、あえて装着する必要はない。
【００１３】
このため、ＣＰＵ１０は、何らかの形でこのようなオプション品が搭載・装着されているか否かを知る必要があるが、本実施形態では、例えば、次のような方法により構成部品の有無を知るようになっている。
▲１▼構成部品を設ける場合に、接続するアドレスを予め決めておき、ＣＰＵ１０が、例えば起動直後や、リセット直後に、にかかるアドレスをアクセスする。この際、ＣＰＵ１０は、しかるべきデータが読み出された場合に、構成部品が搭載されていると判断する。
▲２▼構成部品の搭載を示すジャンパスイッチを設けておき、構成部品を搭載した場合に、当該ジャンパスイッチをオンとしてＣＰＵ１０に搭載状態を知らせる。
▲３▼パソコンであれば、コンフィグレーションファイルによって構成部品をデバイスドライバという形で登録し、あるいはバッチファイルで登録し、認識させる。
【００１４】
なお、図１に示す構成においては、オプション品のすべてがデータバスに接続された状態となっているが、接続されるバスはこれに限られない。例えば、各種シリアル／パラレルのインターフェイスを介してＣＰＵ１０とデータの授受を行なうようにしても良い。すなわち、オプション品はなんらかの形で、ＣＰＵ１０とのデータの授受を行なえれば、その接続形態は問われない。
例えば、音源デバイス２２は、実際には図２に示すように、音源ボード４１として、いわゆる一種の拡張ボードとして提供される場合があり、この場合には、メインボード（マザーボード）上のスロットに挿入されて、ＣＰＵ１０とは、バス１２、Ｉ／Ｆコントローラ２６、拡張（ボード）インターフェイス２７を介してデータの授受を行なう。さらに、この場合、波形メモリ２５は、音源ボード４１に設けられる専用のソケットに任意的に装着されることもある。また、この場合、拡張インターフェイス２７側に独自のＤ／Ａコンバータ２８が設けられることもある。
一方、音源デバイス２２は、ＬＳＩチップ単体や、あるいは別途基板に搭載される形等で提供される場合もあり、この場合には、メインボードあるいは拡張ボード上に予め設けられた専用ソケットに挿入されて、ＣＰＵ１０とは、直接、あるいは拡張インターフェイス等を介して接続しても良い。
同様に、ＤＳＰ１７も、拡張ボードとして提供される場合には、図２に示すように、ＤＳＰボード４２として、一種の拡張ボードとして提供される場合があり、この場合には、メインボード上のスロットに挿入されて、ＣＰＵ１０とは、拡張インターフェイス２７等を介してデータの授受を行なう。また、ＤＳＰ１７はＬＳＩチップ単体で供給される場合もある点で音源デバイス２２と同様である。さて、Ｄ／Ａコンバータ２３への入力データは、図１では、バス１２から供給されるようになっているが、ＤＳＰ１７や音源デバイス２２が拡張ボードやソケット等に挿入される場合には、ＤＳＰ１７や音源デバイス２２の出力がバス１２を介さないで、直接、あるいは拡張インターフェイス等を介して供給されるようになっている。
【００１５】
また、図３に示すように、音源デバイス２２やＤＳＰ１７からなる音源システム３２を、データバス１２を介さずにＣＰＵシステム３０とデータの授受を直接行なうローカルバス等と接続する構成としても良い。ここで、ＣＰＵシステム３０とは、ＣＰＵ１０を含んだＲＯＭ１１、ＲＡＭ１３などの標準システムをいい、周辺装置群３１とは、それ以外のマルチＩ／Ｏポート１４や、ストレージユニット１５、各種のインターフェイス、操作子等を総称する。また、音源システム３２は、狭義には音源デバイス２２やＤＳＰ１７をいうが、広義には、ＣＰＵシステム３０以外で楽音発生に何らかの形で寄与する構成要素をいう。ここで、音源システム３２は、ＣＰＵシステム３０と一体化して搭載される構成としても、分離可能な構成としてもどちらでも良い。
くわえて、接続のためのインターフェイスをＣＰＵ側が持つか、音源側が持つかは、システムに応じて適切に定めればよい。
さらにローカルバスだけではなく、例えばＭＩＤＩや、ＲＳ−Ｓ３ＳＣ／４２２、ＩＥＥＥ  Ｐ−１３９４（ＩＥＥＥに提出された符号１３９４の規格）、ＳＣＳＩなどの各種インターフェイス／プロトコルを用いても良い。また、電話回線等の各種通信回線を介して、データの授受を行なうことも考えられる。
【００１６】
一方、音源デバイス２２は、波形メモリ２５、さらにＤ／Ａコンバータも含めて１チップに集積化されたり、あるいは基板モジュール化される（図４（ａ）参照）場合もあり得る。同様に、ＤＳＰ１７もＲＡＭ２４、さらにＤ／Ａコンバータも含めて１チップに集積化される場合もあり得る（図４（ｂ）参照）。
【００１７】
このように、図１〜図３に示した構成は、あくまでもシステム構成の一例であり、各構成要素間がどのように接続されかは、そのシステムに依存する。また、最近では、図１に示した構成要素が２つ以上集積化され、見掛け上、一体となって構成される場合もあり、外観により構成要素をブロック化するのは、あまり意味を持たないことである。
【００１８】
１−１：動作モード
次に、本実施形態の動作モードについて説明する。本実施形態にかかる楽音発生装置の動作モードは、図５に示すように、発音方式を指定するものと、発音の割当方式を指定するものの２つに大別され、さらに、それぞれ種々のモードに細分化される。そこで、まず、発音方式を指定するモードについて説明する。
【００１９】
１−１−１：発音方式の指定
本実施形態では、演奏情報により楽音の波形データを生成・作成し、これをアナログ変換することよって、発音を行なうようになっている。かかる波形データの作成・生成は、種々の方式によって実行される。
このため、発音方式を指定するモードによって、どの発音方式により波形データを生成・作成するかを定めるようにしている。
なお、本実施形態の発音方式は、ＣＰＵ合成モードと各種音源デバイス使用モードとの２つのモードを想定している。
【００２０】
▲１▼  ＣＰＵ合成モード
ＣＰＵ合成モードとは、楽音合成のための専用のハードウェアを用いることなく、ＣＰＵ１０のみにより、あるいは、搭載されていればコプロセッサ１７と併せて波形データを生成・作成することを指定するモードである。このＣＰＵ合成モードは、さらに、次の４つのモードに大別される。なお、求められた所望の波形データは、Ｄ／Ａコンバータ２３によりアナログ信号に変換されて、発音するようになっている。
・ＦＭモード
このＦＭモードは、いわゆるＦＭ音源を用いて発音を行なうモードである。すなわち、所望の波形データは、ＣＰＵ１０等（コプロセッサ１７が装着されているう場合には、コプロセッサ１７も併用する意）のリアルタイム演算により、基本となる正弦波をＦＭ変調させて求められる。
・高調波合成モード
この高調波合成モードは、基本波と、当該基本波の高調波とを順次合成することにより発音を行なうモードである。すなわち、所望の波形データは、ＣＰＵ１０等のリアルタイム演算により、基本波と、その第ｎ次高調波とを順次求めて加算することにより求められる。
・波形メモリ読出モード
この波形メモリ読出モードは、いわゆる波形メモリ読み出し方式により発音を行なうモードである。すなわち、ＣＰＵ１０等は、まず、楽音発生に先だって、発生すべき音色の基本波形を示す波形データを複数、ＲＡＭ２０等上にロードしておき、次に、楽音発生の指示があったならば、指定された音色の波形データを、指定された音高になるように、アドレス操作して読み出すとともに、指定された音の大きさとなるように、演算処理して求める。
なお、波形メモリ読出モードでは、主に、ＲＡＭ（ＲＯＭ）からの波形読み出し処理であるため、比較的性能が低いＣＰＵ等でも楽音発生することが可能である。すなわち、上記ＦＭモードや高調波合成モードの演算処理よりもＣＰＵ１０の負荷が軽くて済む。しかし、ＲＡＭを波形メモリとして使用しなければならないため、必然的にＲＡＭ１３、２０により構成されるメモリ領域を圧迫する。あるいは多くの容量を必要とする。このため、装備されたＲＡＭの総容量や、ＣＰＵのアドレス領域の程度によっては、なるべくならば、波形メモリ読出モードは使用したくない、という背景がある。
・物理モデリング合成モード
この物理モデリング合成モードは、楽器における発音メカニズム、特に空気の流れを電気的モデルによりシミュレートして、楽音を合成するモードである。すなわち、所望の波形データは、ＣＰＵ１０等によって構築された電気的モデルによりリアルタイム演算で求められる。なお、かかるモデルによる楽音合成アルゴリズムについては、例えば、特開昭６３−４０１９９号公報などに開示されている。
【００２１】
▲２▼  各種音源デバイス使用モード
各種音源デバイス使用モードとは、楽音合成のための特別なハードウェア、例えば音源デバイス２２などを用いて発音処理を行なうことを指定するモードである。このため、各種音源デバイス使用モードは、対応するハードウェアたる音源デバイス２２の搭載を前提としている。
なお、音源デバイス２２等は、波形データを、上述のＦＭモードや波形メモリ読出モードなどにより作成・生成する。ただし、音源デバイス２２等がいかなる方式によって波形データを作成・生成するについては、音源デバイス２２等の固有の問題であり、本願は、音源デバイス２２等の発音方式までも制御するものではないので、その説明については省略する。
【００２２】
１−１−２：割当方式の指定
さて、本実施形態は、ＣＰＵ合成モードあるいは各種音源デバイス使用モードのいずれのモードにおいても、波形合成（発音）のためのチャンネルを複数有し、１つの音色を生成するために１つのチャンネルを割り当てて、各チャンネルで音色を生成することによって、複数音色を同時に発音することができるようになっている。
また、本実施形態では、ＣＰＵ１０によっても、音源デバイス２２によっても波形合成することができるから、ある音色の発音指示があった場合に、どちらで波形合成するかが重要な問題となる。
そこで、この割当方式の指定するモードによって、発音指示があった場合に、どちらで波形合成するかを定めるようにしている。
・ＣＰＵ優先モード
このＣＰＵ優先モードは、波形合成をＣＰＵ合成モードにより優先的に行なうモードである。ただし、ＣＰＵ１０等の能力が低いと、波形合成できるチャンネル数が限られることから、ＣＰＵ１０等の処理能力を超える分の波形合成については、各種音源デバイス使用モードにより行なわれる。
・各種音源デバイス優先モード
この各種音源デバイス優先モードは、波形合成を各種音源デバイス使用モードにより優先的に行なうモードである。ただし、各種音源デバイス２２等の能力が低いと、波形合成できるチャンネル数が限られることから、各種音源デバイス２２等の処理能力を超える分の波形合成については、ＣＰＵ合成モードにより行なわれる。
・手動設定モード
この手動モードは、波形合成をどの発音方式のモードにより行なうかを、さらに、ＣＰＵ合成モードである場合には、どのモードにより波形合成すべきかを、ユーザによって手動で指定するモードである。
・強制設定モード
この強制設定モードは、波形合成をどのモードにより行なうかを、例えば、同時起動する他のアプリケーションプログラム等によってそれぞれユーザの意思とは関係なく指定されるモードである。
【００２３】
１−２：ＲＡＭの状態
次に、ＲＡＭ１３（２０）におけるメモリマップについて説明する。本発明に適用される楽音発生装置の構成は、図１に示すように、一般的なパソコンと大差はない。逆に言えば、一般的なパソコンが、（後述する動作を実行することが前提となるが）そのまま楽音合成装置に成り得るのである。
したがって、この楽音合成装置におけるＲＡＭ１３（２０）のメモリ内容も、一般的なパソコンのそれと大差はない。すなわち、ＲＡＭ１３（２０）は、図６に示すような領域に分けられる。この図において、ＯＳ領域は、パソコンと同等のオペレーティングシステムが占有する領域であり、波形合成プログラム領域とは、楽音発生を行なって楽音波形を合成するための波形合成プログラムが占有する領域であり、アプリケーションプログラム領域（１）〜（ｎ）は、それぞれ波形合成プログラム以外のアプリケーションプログラムが占有する領域であり、同時起動された分、領域が発生する。また、各種データ領域は、演奏曲のデータ等が記憶される領域であり、領域ＷＡＶＥは、波形メモリ読み出し方式により発音を行なう場合に、波形データが複数ロードされる領域である。
【００２４】
２：動作
次に、本実施形態に係る楽音発生装置の動作について説明する。この楽音合成装置による楽音の発生は、パソコンのアプリケーションプログラムである波形合成プログラムを実行することにより行なわれる。あるいは、この波形合成プログラムをＯＳの一部として組み込んで、起動すると自動的に常駐すること等により行なわれる。
ここで、一連の処理過程において、波形合成プログラムがどの位置・地位で実行されるかは、ＯＳの設定環境や、ユーザの操作設定、同時起動するアプリケーションプログラムの数、動作状況などによって異なるが、ここでは説明の便宜上、波形合成プログラムが、同時起動するアプリケーションプログラム（１）と（ｎ）との間で実行されるものとする。
【００２５】
まず、この楽音発生装置の電源が投入あるいはリセットされると、図７に示すＣＰＵシステム処理が実行され、そのステップＳ１において、各種レジスタやフラグのセット、リセット等の初期設定処理が実行され、次に、ステップＳ２において、ＯＳのシステム管理処理が実行される。そして、ステップＳ３〜Ｓ５までの各ステップにおいて、アプリケーションプログラム（１）、波形合成プログラム、およびアプリケーションプログラム（ｎ）がそれぞれ実行される。ここで、波形合成プログラムは、詳細については後述するが、初回に実行される場合を除き、１回起動する毎に、楽音の波形データが１サンプル分だけ生成される処理である。また、アプリケーションプログラム（１）や（ｎ）は、波形合成プログラム以外の処理であり、それは、波形合成プログラムに関与する処理であっても、全く別の処理であっても良い。ステップＳ５の処理の後、処理手順は、ステップＳ２に再び戻る。
【００２６】
以降、起動しているアプリケーションプログラムに変更なければ、ステップＳ２〜Ｓ５のループ処理が繰り返し実行される。
また、起動しているアプリケーションプログラムが変更があれば、その変更がステップＳ２におけるシステム管理処理により検出される。そして、その変更が終了であれば、当該アプリケーションプログラムを実行するステップが通過する一方、変更が開始であれば、当該アプリケーションプログラムを実行するステップがループ処理内に新たに追加される形でループ処理が繰り返し実行される。
【００２７】
したがって、ループ処理の実行周期は、他のアプリケーションプログラムの起動状態やシステムの状況等により変化する。一方、起動しているアプリケーションプログラムの変更に拘わらず、ループ処理が１巡する毎に楽音の波形データが１サンプルだけ生成され、ループ処理の繰り返し実行により楽音の波形データが連続的に生成される。このため、生成される楽音の波形データを単純にアナログ変換すると、サンプリング周期が一定しない状況下であるため、発生楽音にジッタが生じてしまう。そこで、前述したように図示はしないが、Ｄ／Ａコンバータ２３の前段にデータバッファを設けて、生成した楽音の波形データを、一旦蓄えた後、サンプリング周期ｆｓで読み出す構成としたのである。
【００２８】
なお、楽音発生装置による楽音発生が固定プログラムで実行される場合、具体的には、楽音発生装置がパソコンではなく、電子楽器単体あるいは音源モジュール、その他楽音発生機能を含む所定の機能を持ったシステムとして動作するような場合には、ループ処理の実行周期を変動しないように構成することが可能となり、このような場合、ループ処理は一定間隔で実行される。この間隔を、設定されるサンプリング周波数ｆｓの逆数であるサンプリング周期に一致させれば、データバッファは不要となるので都合が良い。
【００２９】
２−１：波形合成プログラム
次に、図７におけるステップＳ４で実行される波形合成プログラムについて図８〜図１１を参照して説明する。この波形合成プログラムは、所定の操作によりストレージユニット１５からロードされることにより実行される。
【００３０】
まず、図８に示すステップＳａ１では、楽音発生における動作モードの設定と、実行時のハードウェア構成とがチェックされる。ハードウェア構成については、上述した方法等によりオプション品が搭載されているか否かがチェックされる。また、動作モードの設定については、図５に示すように、発音方式の指定と割当方式の指定との双方が設定される。
なお、動作モードの設定については、この波形合成プログラムの実行前に、他のアプリーケーションプログラムが実行されていれば、当該プログラムの実行によって強制モードに設定される場合もあるし、また、発音方式をどのモードにするか、割当方式をどのモードにするかを、ユーザに入力画面を表示して、この入力により設定される場合もある。さらに、ハードウェア構成のチェックにより、各種音源デバイスが認識されたならば、自動的に、ＣＰＵ優先モードあるいは各種音源デバイス優先モードに設定するとしても良い。すなわち、ステップＳａ１における動作モードの設定とは、この波形合成プログラムを起動するにあたり、動作モードを確認的に認識するための処理である。
【００３１】
次に、ステップＳａ２では、波形サンプルロード処理が実行される。かかる波形サンプルロード処理は、詳細については後述するが、波形メモリ読出により波形サンプルを用いる場合、その波形サンプルデータをＲＡＭ１３（２０）における領域ＷＡＶＥに転送する処理である。
この後、ステップＳａ３では、フラグＳＥＴＦＬＧが「１」であるか否かが判別される。ここで、フラグＳＥＴＦＬＧは、初期状態では「０」であり、後述するステップＳａ２１によりサンプリング周波数ｆｓが設定された場合、あるいは波形予備演算モードで波形メモリ読出モードが指定される場合には「１」となるものである。かかるフラグＳＥＴＦＬＧが「１」であれば、処理手順が次のステップＳａ４に進む一方、「０」であれば、ステップＳａ５にスキップする。
【００３２】
なお、この波形合成プログラムが、図７に示すループ処理において初めて実行される場合、フラグＳＥＴＦＬＧは「０」であるので、処理手順は無条件にステップＳａ５にスキップするが、説明の便宜上、ステップＳａ４の処理についても説明する。
ステップＳａ４では、発音をすべてＣＰＵ合成モードにより行なうか否かが判別される。あるいは、ステップＳａ１におけるハードウエア構成のチェックにより、各種音源デバイスが認識されたか否かを判別するとしても良い。要は、各種音源デバイスを用いて波形合成を行なう可能性があれば、判別結果を「Ｎｏ」とする条件分岐が行なわれる。
【００３３】
ステップＳａ５では、フラグＥＮＢＬＦＬＧが「１」でないか否かにより、非動作可能状態であるか否かが判別される。ここで、非動作可能状態とは、換言すれば、サンプリング周波数ｆｓが設定されておらず、あるいは波形予備演算モードが指定されないで、ＣＰＵ合成モードによる発音処理の準備が整っていない状態をいう。
なお、この波形合成プログラムが、図７に示すループ処理において初めて実行される場合、フラグＥＮＢＬＦＬＧは「０」であるので、すなわち非動作可能状態であるので、処理手順がステップＳａ１１に分岐するが、説明の便宜上、先に、フラグＥＮＢＬＦＬＧが「１」である動作可能状態である場合について説明する。この動作可能状態とは、逆説的に、ＣＰＵによる波形合成処理の準備がすでに整っている状態をいう。この状態となっている場合、手順はステップＳａ６に進んで発音情報処理が行なわれ、次に、ステップＳａ７においてＣＰＵ波形発生コマンドの有無が判別される。ここで、ＣＰＵ波形発生コマンドとは、ＣＰＵ合成モードにおいて、発音開始を指示するキーオンが、鍵盤情報ＫＢＤや、ＭＩＤＩ情報、各種Ｉ／Ｆを介した演奏情報等により発生したことをいう。
そして、ステップＳａ７においてＣＰＵ波形発生コマンドが検出されると、当該コマンドに応じた処理がステップＳａ８において行なわれる。すなわち、当該コマンドを満足させる波形データが、ＣＰＵ合成モードのうちいずれかのモードにより指定された方式で生成され、バス１２を介してＤ／Ａコンバータ２３に供給される。これにより、当該波形データに基づく発音が行なわれることとなる。なお、ＣＰＵ波形発生コマンドには、広義には、消音を指示するキーオフなども含むが、これらは、コマンドに応じて、リリース波形を生成させたり、波形データの生成を終了するなど、発音の終了に関する処理をすれば良いが、ここでは説明を省略する。
また、ステップＳａ７において、ＣＰＵ波形発生コマンドが検出されなければ、なにも処理を行なう必要はないので、ステップＳａ８の発音演算処理がスキップされる。
ステップＳａ９では、この波形合成プログラムを終了する旨の操作がユーザ等により指定されたか否かが判別される。もし、指定されていないのであれば、来たるべき次のＣＰＵ波形発生コマンドの発生に備えるため、直ちに手順が戻る（リターンする）一方、指定されているのであれば、プログラム終了するための処理が行なわれて、例えばステップＳａ１０においてフラグＳＥＴＦＬＧを「０」にクリアする処理が実行されて、この波形合成プログラムが終了する。
【００３４】
さて、この波形合成プログラムが、図７に示すループ処理において初めて実行される場合、フラグＥＮＢＬＦＬＧは「０」であるので、ステップＳａ１１において、動作モードが優先モードすなわちＣＰＵ優先モードあるいは各種音源デバイス優先モードであるかが否かが判別される。
もし、動作モードが手動モードあるいは強制モードである場合、この判別結果は「Ｎｏ」となって、処理手順がステップＳａ１２に進み、フラグＥＮＢＬＦＬＧ、フラグＤＡＣＥＮＢＬ、およびフラグＳＥＴＦＬＧにそれぞれ「１」がセットされて、処理手順が戻る。ここで、フラグＤＡＣＥＮＢＬは、「１」になると、Ｄ／Ａコンバータ２３の出力動作を許可するものである。したがって、次回、この波形合成プログラムが実行されて、各種音源デバイスが使用される場合には、ステップＳａ３の判別結果が「Ｙｅｓ」、Ｓａ４の判別結果が「Ｎｏ」となるので、図１１に示す処理が実行され、また、ＣＰＵのみによる波形合成を行なう場合には、ステップＳａ６〜Ｓａ１０の処理が実行されることとなる。
【００３５】
一方、ステップＳａ１１において、動作モードが優先モードである場合、処理手順は、図９に示すステップＳａ１３に進む。なお、ステップＳａ１３〜Ｓａ２７の処理は、この波形合成プログラムが初回に起動されたときに実行される可能性があり、ＣＰＵにより波形合成を行なう場合に、そのサンプリング周波数ｆｓを設定する処理である。
まず、ステップＳａ１３では、確認的にフラグＥＮＢＬＦＬＧが「０」に、フラグＢＵＳＹが「１」に、フラグＤＡＣＥＮＢＬが「０」に、それぞれセットされる。ここで、フラグＢＵＳＹとは、後述するタイマー処理においてアップカウントを許可するものである。また、フラグＤＡＣＥＮＢＬを「０」にセットするのは、後述する波形サンプル発生演算において、Ｄ／Ａコンバータ２３の出力動作を禁止して、当該波形サンプルに基づく発音を防止するためである。
ステップＳａ１３の後には、ステップＳａ１４において、レジスタＳＣＯＵＮＴおよびレジスタＴＣＯＵＮＴがそれぞれ「０」にリセットされる。ここで、レジスタＳＣＯＵＮＴの内容は、次の波形サンプル発生演算の処理回数を示し、また、レジスタＴＣＯＵＮＴは、フラグＢＵＳＹが「１」であるときに、後述するタイマー処理により「１」ずつインクリメントされるものであるため、その内容は、波形サンプル発生演算をｍ回だけ発生するのに要した時間内において、タイマー処理の起動回数を示すことになる。
【００３６】
次に、ステップＳａ１５においては、所定の波形サンプル発生演算処理が実行されて１サンプルあたりに必要な波形サンプル（データ）が生成される。なお、このステップＳａ１５の詳細処理については後述する。そして、ステップＳａ１６では、波形サンプル発生演算処理が１回実行されたことに対応してレジスタＳＣＯＵＮＴが「１」だけインクリメントされる。そして、ステップＳａ１７においてレジスタＳＣＯＵＮＴが「ｍ」となったか否かが判別され、判別結果が「Ｎｏ」であれば、手順がステップＳａ１５に戻る一方、判別結果が「Ｙｅｓ」であれば、手順が図１０に示すステップＳａ１３に進む。これにより、波形サンプル発生演算の処理回数がｍ回となるまで、ステップＳａ１５、１６の処理が繰り返し行なわれることとなる。
【００３７】
次に図１０に示すステップＳａ１８においては、フラグＢＵＳＹが「０」にセットされて、タイマーのアップカウントが禁止される（タイマーストップ処理）。そして、次のステップＳａ１９では、次式（１）により周波数Ｆｓが求められる。
Ｆｓ＝（ｍ・ｍａｒｇｉｎ）／（ＴＣＯＵＮＴ・Ｔｔ）……（１）
この式において、ｍａｒｇｉｎは、ＣＰＵ１０等の処理能力を考慮して、演算処理に余裕を持たせるための「１」以下の係数である。また、前述のように、ＴＣＯＵＮＴは、波形サンプル発生演算をｍ回だけ実行するのに要した時間内におけるタイマー処理の起動回数を示し、Ｔｔは、タイマー処理の起動周期であるから、ＴＣＯＵＮＴとＴｔとの積は、波形サンプル発生演算をｍ回だけ実行するのに要した時間を示すことになる。
結局、式（１）により求められる周波数Ｆｓは、波形サンプルの発生周波数であって、定数ｍａｒｇｉｎにより、そのハードウェア構成の処理能力を考慮した周波数を示すことになる。
【００３８】
そして、ステップＳａ２０では、求められた周波数Ｆｓが「３２ｋＨｚ」以上であるか否かが判別される。なお、この「３２ｋＨｚ」という値は、発生する楽音の品質が最低限確保できるか否かを念頭において設定されている。したがって、この判別結果が「Ｙｅｓ」であるならば、本実施形態のＣＰＵ能力によっては、最低限以上の楽音品質を確保できると判断し、手順がステップＳａ２１に進む。このステップＳａ２１においては、「３２ｋＨｚ」、「４４．１ｋＨｚ」、「４８ｋＨｚ」、「５０ｋＨｚ」のうち、求めた周波数Ｆｓに対し内輪で最も近い周波数が、本実施形態におけるサンプリング周波数ｆｓとして設定される。例えば、求めた周波数Ｆｓが「４７ｋＨｚ」であるならば、サンプリング周波数ｆｓは、当該周波数「４７ｋＨｚ」よりも低いもののうち、最も高い「４４．１ｋＨｚ」に設定される。なお、内輪とした理由は、処理能力以上にサンプリング周波数を高く設定したのでは、定数ｍａｒｇｉｎを用いて余裕を持たせた意味がなくなるからである。
【００３９】
ステップＳａ２１の後には、ステップＳａ２２において、フラグＤＡＣＥＮＢＬ、フラグＥＮＢＬＦＬＧ、およびフラグＳＥＴＦＬＧがそれぞれ「１」にセットされて手順が戻る。これにより、Ｄ／Ａコンバータ２３の出力動作が許可され、そして、動作可能状態とされ、さらに、サンプリング周波数ｆｓがすでに設定されたことが示されるようになる。
なお、このようにして動作可能状態となる結果、次回、波形合成プログラムが実行されると、各種音源デバイスを用いて波形合成するのであれば、ステップＳａ４の判別結果は「Ｎｏ」となって、図１１に示す処理によって発音処理が実行され、また、それ以外の、ＣＰＵ１０等のみ用いて波形合成するのであれば、ステップＳａ４の判別結果は「Ｙｅｓ」、ステップＳａ５の判別結果は「Ｎｏ」となってとなって、ステップＳａ６〜Ｓａ８により発音処理が実行されることとなる。
【００４０】
一方、図１０においてステップＳａ２０の判別結果が「Ｎｏ」であるならば、本実施形態のＣＰＵ１０等の処理能力によっては、最低限の楽音品質を確保できないと判断し、手順がステップＳａ２３に分岐する。ステップＳａ２３では、最低限の楽音品質を確保できない旨がアラーム等によりユーザに告知されるとともに、波形予備演算モードの指定イベントがチェックされる。ここで、波形予備演算モードとは、本来的には、動作モードがＣＰＵ合成モードのうちの波形メモリ読出モード以外のモードが指定されていたが、指定されたモードでは、最低限の楽音品質を確保できないので、動作モードを波形読出モードに切り換えることを指示するモードをいう。
【００４１】
ステップＳａ２４では、この波形予備演算モードが指定されたか否かが判断される。指定されたならば、ステップＳａ２５において、指定された演算モード（ＣＰＵ合成モードのうち波形メモリ読出モード以外のモードであって、指定されたモード）の演算により波形サンプルを求めてＲＡＭ１３（２０）に予め記憶するとともに、実際に発音を実行する場合には、記憶した波形サンプルをサンプリング周波数「３２ｋＨｚ」で読み出すことにより、発音を行うモードが自動的に指定される。これにより、実質的に波形メモリ読出モードによる波形合成が行われることになるので、低い性能のＣＰＵでも最低限の品質を発生楽音に確保することができる。
この後、ステップＳａ２２の処理が実行されて、動作可能状態等に設定された後、手順が戻る。
一方、ステップＳａ２４において波形予備演算モードが指定されないと、手順がステップＳａ２６に進み、波形合成プログラムの終了が指令されたか否かが判別される。指令されたならば、プログラム終了するための処理が行われて、例えばステップＳａ２７においてフラグＳＥＴＦＬＧを「０」にクリアする処理が実行されて、この波形合成プログラムが終了する。
これにより、求めた周波数Ｆｓが「３２ｋＨｚ」よりも低ければ、ステップＳａ２３、２４、２６により、波形予備演算処理モードが指定されるか、あるいは、プログラムを終了する旨の指令等の操作がされない限り、アラームが鳴り続けるようになっている。
【００４２】
こうして、ＣＰＵ１０等による波形合成が行なわれる場合には、サンプリング周波数ｆｓが、当該ＣＰＵの性能に対し最適化されて設定される。しかも、この場合、当該ＣＰＵ等の性能が低い場合には、ＣＰＵへの負担を減らした波形メモリ読出方式により楽音合成を行なうように設定される。
【００４３】
ところで、図８におけるステップＳａ４において、各種音源デバイスを用いて波形合成を行なう可能性があると判別されると、手順が図１１に示すステップＳａ２８に進行する。ステップＳａ２８では、フラグＤＡＣＥＮＢＬに「１」がセットされ、Ｄ／Ａコンバータ２３の出力動作が許可される。この後ステップＳａ２９において、プログラム終了の指示がされているか否かが判別され、されていれば、ステップＳａ３０において、プログラム終了するための処理が行なわれて、例えばステップＳａ３１においてフラグＳＥＴＦＬＧを「０」にクリアする処理が実行されて、この波形合成プログラムが終了する。一方、ステップＳａ２９において、プログラム終了の指示がされていないと判別されれば、ステップＳａ３２において、さらに、動作モードが各種音源デバイス使用モードであるか否かが判別され、されていなければ手順が戻る。
【００４４】
また、ステップＳａ３２において、動作モードが各種音源デバイス使用モードであると判別されると、さらに、ステップＳａ３３において、選択された動作モードに対応するハードウェアが存在するかが判別される。ここで、「選択」には、ステップＳａ１におけるハードウェアチェックにより認識、という意味も含む（図においてカッコ書の意味）。存在すれば、ステップＳａ３４において選択されたモードに対応するハードウェアを含む発音処理が実行される一方、存在しなければ、ステップＳａ３５においてその旨を示すアラームを発生させる処理と、現時点におけるハードウェア環境での発音処理が行なわれる。そして、ステップＳａ３４あるいはＳａ３５の処理の後に、手順は戻る。
なお、選択されたハードウェアを含む発音処理の詳細については、後述する。
【００４５】
２−１−１：波形サンプルロード処理
ここで、上述したステップＳａ２（図８参照）において実行される波形サンプルロード処理について説明する。この波形サンプルロード処理では、まず、図１２に示すステップＳｂ１において、ＭＩＤＩサンプルダンプがマルチＩ／Ｏポート１４により受信されたか否かが判別される。ここで、ＭＩＤＩサンプルダンプとは、ＭＩＤＩ規格におけるサンプリングデータのことであり、波形メモリ読出モードで使用されるものである。
もし、受信されたならば、ステップＳｂ２において、受信されたデータがＲＡＭ１３（２０）の領域ＷＡＶＥに転送されるサンプル受信処理が実行される。そして、ステップＳｂ３の判別によって、すべてのデータの受信が完了するまで、ステップＳｂ２のサンプル受信処理が連続して実行される。そして、すべてのデータの受信が完了すると、ステップＳｂ３の判別結果は「Ｙｅｓ」となって、手順は戻る。
一方、ステップＳｂ１の判別結果が「Ｎｏ」である場合、今度は、ステップＳｂ４において、波形データが各種インターフェイスを介して転送されたか否かが判別される。もし、受信されたのならば、ステップＳｂ２、３において、当該波形データは、ＭＩＤＩサンプルダンプと同様に、ＲＡＭ１３（２０）の領域ＷＡＶＥに転送される。
また、ステップＳｂ１およびＳｂ４の判別結果がいずれも「Ｎｏ」である場合、ステップＳｂ５において、ストレージユニット１５に対する読取イベント、すなわち、何らかのデータを読み出すリクエストが発生したか否かが検出される。発生していないのであれば、以降は何ら処理を行なう必要はないので、この波形サンプルロード処理は直ちに終了して、手順が戻る。一方、読取イベントが発生したのであれば、そのイベントによりストレージユニット１５から読み出されるデータがステップＳｂ６においてチェックされる。そして、ステップＳｂ７において、読み出されたデータが波形データであるか否かが判別される。
そして、波形データでない場合には、以降は何ら処理を行なう必要はないので、この波形サンプルロード処理は直ちに終了して、手順が戻る一方、波形データである場合には、ステップＳｂ８において、読み出された波形データをＲＡＭ１３（２０）の領域ＷＡＶＥに転送する波形データ読出転送処理が実行される。そして、ステップＳｂ９の判別によって、すべてのデータの転送が完了するまで、ステップＳｂ８の転送処理が連続して実行される。そして、すべてのデータの転送が完了すると、ステップＳｂ９の判別結果は「Ｙｅｓ」となって、手順は戻る。
【００４６】
このように、波形サンプルロード処理では、波形メモリ読出モードにおいて用いるサンプリングデータ（波形データ）が受信・読出されると、そのすべてがＲＡＭ１３（２０）の領域ＷＡＶＥに転送されるようになっている。そして、ＣＰＵ１０等が、転送されたサンプリングデータを、波形メモリ読出モードにて処理することにより、波形合成が行なわれる。
上記したように、ＲＡＭ１３（２０）等にロードされた波形を、例えば、音源デバイス２２により発音するには、音源デバイス２２に付随する波形メモリ２５をＲＡＭとして用い、ここにロードされた波形を再転送しなければならない。したがって、従来の音源デバイス等のハードウェアに依存した楽音発生装置では、当該ハードウェア側に、ロードされた波形を受け取るためのＲＡＭ等の一時記憶手段が必要であり、また、ＣＰＵ側には、ＲＡＭ１３（２０）等からの波形データ転送処理が必要であった。
しかし、本実施形態によれば、サンプリングデータをＣＰＵ１０が統括するＲＡＭ１３（２０）にロードして、ロードしたデータにより発音を行なうので、専用ハードウェア側にサンプリングデータを一時記憶する手段を設けることも、ＣＰＵ側でロードした波形データをさらにハードウエア側に再転送する処理も不要とすることができる。
したがって、システムのコスト削減や、波形データのロードが終了した時点から実際に発音可能状態となるまでの時間の短縮化を図ることができる。
【００４７】
２−１−２：波形サンプル発生演算
次に、上述したステップＳａ１５（図９参照）において実行される波形サンプル処理について説明する。この波形サンプル発生演算処理では、まず、図１３に示すステップＳｃ１において、コプロセッサ１７の有無が検出される。本実施形態では有であるが、コプロセッサ１７はオプション品なので無の場合もあり得る。なお、ＣＰＵ１０がコプロセッサ１７に相当する演算ユニットを内蔵する場合には、特にコプロセッサ有無の検出判断処理は必要でなく、常に、コプロセッサ併用として処理を行なうようにしても良い。また、有であれば、ステップＳｃ２において、ＣＰＵ１０とコプロセッサ１７との併用による波形サンプル演算処理が実行される一方、無であれば、ステップＳｃ３において、ＣＰＵ１０のみによる波形サンプル演算処理が実行される。そして、ステップＳｃ２あるいはＳｃ３の処理の後に、手順は戻る。
ここで、ステップＳｃ２およびＳｃ３の処理においては、コプロセッサ１７を併用して演算処理を行なうか否かの点でのみ相違し、波形サンプル演算処理そのものについては同じである。そこで、ステップＳｃ２およびＳｃ３の処理については、ステップＳｃ３の場合を例にとって説明する。
【００４８】
２−１−２−１：ＣＰＵのみによる波形サンプル演算処理
まず、図１４に示すステップＳｄ１では、動作モードがＣＰＵ合成モードのうちのＦＭモードあるかが否かが判別される。ＦＭモードであれば、ステップＳｄ２において、１サンプルにおいて必要なチャンネル数だけの波形サンプルが、ＣＰＵ１０のＦＭ合成方式により演算されて求められる。すなわち、複数発音を行なう場合には、ＦＭモードで波形合成すべき発音数分だけの波形サンプルが求められる。
この場合、ＣＰＵ１０は、各音の音高を低いピッチから高いピッチまでの種々の組み合わせて演算を行なったり、発音処理と同時に行なう他の処理（例えばグラフィック処理等）を行なって、負荷を最も高くした状態で演算を行なう。
【００４９】
また、ステップＳｄ１において、ＦＭモードでないと判別されれば、ステップＳｄ３において、さらに、動作モードがＣＰＵ合成モードのうちの波形メモリ読出モードであるかが否かが判別される。波形メモリ読出モードであれば、１サンプルにおいて必要な数だけの波形データが、波形メモリより読み出される。すなわち、複数発音を行なう場合には、波形メモリ読出モードで波形合成すべき発音数分だけの波形データの読み出しが行なわれる。
なお、この波形メモリ読出モードでのデータ転送は、ＣＰＵ１０ではなくＤＭＡＣ１９により行なわれる。また、この際に読み出される波形データは、ＲＡＭ１３（２０）の領域ＷＡＶＥ（図６参照）にロードされているもの、あるいはＲＯＭ１１に格納されているものである。
【００５０】
さらに、ステップＳｄ３において波形メモリ読出モードでないと判別されれば、ステップＳｄ５において、さらに、動作モードがＣＰＵ合成モードのうちの高調波合成モードであるかが否かが判別される。高調波合成モードであれば、ステップＳｄ６において、１サンプルにおいて必要な数だけの波形サンプルが、ＣＰＵ１０の高調波合成方式により演算されて求められる。すなわち、複数発音を行なう場合には、高調波合成モードで波形合成すべき発音数分だけの波形サンプルが求められる。
この場合、ＣＰＵ１０は、各音の音高を低いピッチから高いピッチまでの種々の組み合わせて演算を行なったり、負荷を最も高くした状態で演算を行なう点は、ＦＭモードと同様である。
【００５１】
そして、ステップＳｄ５において高調波合成モードでないと判別されれば、ステップＳｄ７において、さらに、動作モードがＣＰＵ合成モードのうち物理モデリング合成モードであるかが否かが判別される。物理モデリング合成モードであれば、ステップＳｄ８において、１サンプルにおいて必要な数だけの波形サンプルが、ＣＰＵ１０によって物理モデルが構築されて求められる。すなわち、複数発音を行なう場合には、物理モデリング合成モードで波形合成すべき発音数分だけの波形サンプルが求められる。
なお、ステップＳｄ７において、物理モデリング合成モードでないと判別されれば、動作モードが本実施形態での想定範囲外なので、ステップＳｄ９においてその旨を知らせるアラーム処理及びその他の適切な処理が行なわれる。
そして、ステップＳｄ２、４、６、８あるいは９の処理の後には、手順が戻り、次のステップＳａ１６（図９参照）の処理が実行される。
【００５２】
２−１−２−２：コプロセッサ併用による波形サンプル演算処理  図１３におけるステップＳｃ１２のコプロセッサ併用による波形サンプル演算処理については、図１４の各演算処理が、ＣＰＵ１０とともにコプロセッサ１７の併用によって行なわれ、演算処理の高速化が図られる。ただし、基本的な演算の手順等はＣＰＵのみによる波形サンプル演算処理で行なう内容と実質的に同等である。このため、詳細な説明については省略する。
【００５３】
このように、ステップＳａ１５における波形サンプル発生演算においては、発生楽音の品質に最も影響を与える処理が、ＣＰＵ合成モードの各モードに対応して行なわれる。すなわち、ＦＭモード、高調波合成モード、および物理モデリング合成モードにおいては、同時発音数と、波形データの演算に要する時間とが主に処理時間に影響を与える因子となるため、その演算能力を見極めるべく、１サンプルあたりの波形データを実際の演算処理により求めるのである。そして、この演算処理を、ステップＳａ１５〜Ｓａ１７の処理によりｍサンプル分行ない、さらに後述のタイマー処理に基づいてｍサンプル分の演算処理に要した時間を求め、この結果にしたがって逆に、本構成の処理能力に対して最適なサンプリング周波数ｆｓをステップＳａ２１により設定しているのである。
同様に、波形メモリ読出モードにおいては、同時発音数が処理時間に影響を与える因子となるため、その読出能力を見極めるべく、１サンプルあたりの波形データの読み出しを実際に行なうのである。そして、この読み出しを、ステップＳａ１５〜Ｓａ１７の処理によりｍサンプル分行ない、さらに後述のタイマー処理に基づいてｍサンプルの読み出しに要した時間を求め、この結果にしたがって逆に、本構成の読出能力に対して最適なサンプリング周波数ｆｓをステップＳａ２１により設定しているのである。
【００５４】
２−１−３：選択されたハードウェアを含む発音処理
次に、上述したステップＳａ３４（図１１参照）において実行される、選択されたハードウェアを含む発音処理について説明する。この発音処理は、全チャンネルの発音をＣＰＵ合成モードのみにより行なう場合以外に実行される処理であって、各種音源デバイスによる発音を何らかの形で行なう場合に、（割当）動作モードに応じた発音を行なうための処理である。
この発音処理では、まず、図１５におけるステップＳｅ１において、イベント検出管理が行なわれる。ここで、イベントとは、発音開始を指示するキーオンが、鍵盤情報ＫＢＤや、ＭＩＤＩ情報、各種Ｉ／Ｆを介した演奏情報等により発生したことをいい、ここでは、前述のＣＰＵ波形発生コマンドと異なり、ＣＰＵ合成モードに限られず、各種音源デバイス使用モードのものも含める。したがって、このイベントが検出されたということは、キーオンの発生を意味するから、以下に示すように、発音に向けた処理が行なわれることとなる。
【００５５】
まず、ステップＳｅ２では、動作モードが各種音源デバイス優先モードであるか否かが判別される。この判別結果が「Ｎｏ」であるならば、処理手順が後述するステップＳｅ１１に分岐する一方、「Ｙｅｓ」であるならば、処理手順は次のステップＳｅ３に進む。
【００５６】
ステップＳｅ３では、現時点における各種音源デバイスの発音状態や、イベントに対応する演奏情報等が、各種音源デバイスの発音条件に収まっているか否かが判別される。ここで、発音条件とは、色々考えられるが、本実施形態では、現時点において各種音源デバイスにより波形合成すべき（音色）数が、各種音源デバイス使用モードにより同時発音可能な発音数以内であるかを条件とする。すなわち、ステップＳｅ３では、現時点において各種音源デバイスにより発音中のチャンネル（ＣＨ）数が各種音源デバイスにより同時発音可能なチャンネル数以下であるか否かが判別される。
【００５７】
なお、発音条件としては、このほかに、次のようなものが考えられる。▲１▼検出されたイベントに係る演奏情報の音高が所定値以上であるか？（以下であるか？）▲２▼検出されたイベントに係る演奏情報のうち音色を指定する値が所定値以上であるか？（以下であるか？）▲３▼検出されたイベントに係る演奏情報のうち演奏パートを指定する値が所定値以上であるか？（以下であるか？）▲４▼検出されたイベントに対応するＭＩＤＩ−ＣＨ等が所定値以上であるか？（以下か？）など、何らかのの演奏情報を示す値が所定値以上であるか（以下であるか）を基準とする発音条件が考えられる。
また、各種音源デバイスが、ある特定の音色を、ＦＭモードや高調波合成モード等の演算により波形サンプルを生成して合成するように指定された場合には、この発音条件を満たさないとする構成としても良い（この構成については、別実施形態として後述する）。
【００５８】
さて、このような発音条件を満たしていると判別されると、ステップＳｅ４において、当該イベント（キーオン）による発音を行なうためのチャンネルが、現時点において各種音源デバイスで発音していないチャンネル（空きチャンネル）の中から１つ割り当てる発音割当処理が実行される。そして、ステップＳｅ５において、割り当てられたチャンネルで、当該イベントに対応する楽音の発生を選択されたハードウェア（各種音源デバイス）で実際に行なう処理である、選択指定ハードウェアでの発音処理が実行される。
【００５９】
一方、ステップＳｅ３において発音条件を満たしていないと判別されると、ステップＳｅ６において、さらにフラグＥＮＢＬＦＬＧが「１」であるか否かが判別される。この時点において、フラグＥＮＢＬＦＬＧが「１」であるということは、上述したステップＳａ１３〜Ｓａ２５の処理が行なわれた後であり、ＣＰＵ合成モードにおいて発音する場合のサンプリング周波数ｆｓがすでに設定されている状態を示す。すなわち、ＣＰＵ合成モードにより発音が可能である状態を示す。したがって、フラグＥＮＢＬＦＬＧが「１」であるために、ステップＳｅ６の判別結果が「Ｙｅｓ」となる場合、ステップＳｅ７において、各種音源デバイスの発音条件を満足しないイベントに対応する発音がＣＰＵ合成モードにより行なうように割り当てるＣＰＵ発音割当処理が実行される。
このＣＰＵ発音割当処理について詳細には、当該イベントに対応した波形サンプルを演算生成するための楽音波形発生割当コマンドを発生させる。かかる楽音波形発生割当コマンドは、ＣＰＵが実行すべき楽音の演算方法（ＣＰＵ合成モードのいずれかのモード）、生成すべき音色、音高、タッチ、音量、割当チャンネルなどの情報のほかに、キーオン、キーオフなどの発音指示をも含んだものである。そして、このコマンドが有効である期間において、ＣＰＵ１０等は、後述するように、ステップＳｅ１０において、当該割当コマンドに対応する波形サンプルを生成する発音演算処理を実行する。
なお、楽音波形発生割当コマンドは、楽音サンプルを割込処理により生成するような場合にあっては、割込処理の起動・終了情報をも含んだものとなる。
【００６０】
一方、ステップＳｅ６において、フラグＥＮＢＬＦＬＧが「０」であるということは、ＣＰＵ合成モードにより発音が可能でない状態を示す。したがって、この場合、ステップＳｅ８において、各種音源デバイスに対してトランケート処理、詳細には、各種音源デバイスにおいて、発音が最も進行しているチャンネル、あるいは、発音開始が早くかつ最も音量が小さいチャンネルによる楽音を消音させて、強制的に空きチャンネルをつくる処理が行なわれる。なお、このトランケート処理は、ステップＳｅ４の発音割当処理に含ませることも可能である。
そして、ステップＳｅ４において、当該イベントが、消音させたチャンネルに割り当てられて、後は同様にステップＳｄ４において、割り当てられたチャンネルにより、当該イベントに対応する楽音の発生が各種音源デバイスにより行なわれる。
なお、複数の音源デバイスが装着されるときは、ある音色を発音させるのに、異なる音源デバイスのチャンネルをそれぞれ割当てる場合もあり得る。
【００６１】
ところで、ステップＳｅ２において、各種音源デバイス優先モードでないと判別される場合、例えば、ＣＰＵ優先モードである場合や、ＣＰＵ合成モードと各種音源デバイス使用モードとを併用することを指定した手動モードである場合には、処理手順が図１６におけるステップＳｅ１１に分岐する。
このステップＳｅ１１では、現時点におけるＣＰＵ１０等による発音状態や、イベントに対応する演奏情報等が、ＣＰＵ等の発音条件に収まっているか否かが判別される。ここでの発音条件とは、各種音源デバイスの発音条件（ステップＳｅ３参照）と同様に色々考えられるが、本実施形態では、現時点においてＣＰＵ等により波形合成すべき（音色）数が、ＣＰＵ合成モードにより同時発音可能な発音数以内であるかを条件とする。すなわち、ステップＳｅ１１では、現時点においてＣＰＵ１０等により発音中のチャンネル（ＣＨ）数がＣＰＵ１０等による同時発音可能なチャンネル数以下であるか否かが判別される。
【００６２】
そして、このような発音条件を満たしていると判別されると、ステップＳｅ１２において、さらにフラグＥＮＢＬＦＬＧが「１」であるか否かが判別される。フラグＥＮＢＬＦＬＧが「１」であるということは、上述したように、ＣＰＵ合成モードにより発音が可能である状態を示すので、ステップＳｅ１３において、ＣＰＵ１０等により行なうべき波形合成を、ＣＰＵ１０等により行なうように発音割当処理が行なわれて、処理手順は図１５におけるステップＳｅ９に進む。なお、ステップＳｅ１３におけるＣＰＵ発音割当処理の詳細については、すでに述べたステップＳｅ７と同様なので、説明を省略する。
【００６３】
一方、ステップＳｅ１１において、ＣＰＵ１０等の発音条件が満たされないと判別された場合、あるいは、ステップＳｅ１２において、ＣＰＵ１０等が発音可能状態でないと判別された場合には、当該イベントに対応する処理を各種音源デバイスで実行すべく、ステップＳｅ１４において、ステップＳｅ４と同様に、各種音源デバイスに対して発音割当処理が実行される。そして、ステップＳｅ１５において、ステップＳｅ５と同様に、選択指定ハードウェアでの発音処理が実行される。
【００６４】
また、ステップＳｅ７あるいはＳｅ１３によるＣＰＵ発音割当処理後、次のステップＳｅ９および１０により行なわれる。すなわち、ステップＳｅ９においては、ＣＰＵ発音割当処理によるＣＰＵ波形発生割当コマンドの有無が判別され、無の場合には直ちに処理手順が戻る一方、有の場合にはステップＳｅ１０において、当該ＣＰＵ波形発生割当コマンドにしたがって波形サンプルを演算して求める処理が実行される。
【００６５】
このように、各種音源デバイス優先モードである場合に、各種音源デバイスの発音条件を満たす分の発音処理がステップＳｅ５にて各種音源デバイスにより行なわれる一方、満たさない分の発音処理がステップＳｅ１０にてＣＰＵ１０等により行なわれることとなる。
反対に、各種音源デバイス優先モードでない場合には、ＣＰＵ１０等の発音条件を満たす分の発音処理がステップＳｅ１０にてＣＰＵ１０等により行なわれる一方、満たさない分の発音処理がステップＳｅ１５にて各種音源デバイスにより行なわれることとなる。
すなわち、選択されたハードウェアでの発音処理においては、各種音源デバイス使用モードにおいて指定されるハードウェアの処理能力を超える場合に、その超えた分について、上述したＣＰＵ合成モードにより発音が行なわれるので、ハードウェアを増設することなく、当該ハードウェアにおける同時発音可能な発音数以上の発音が容易に行なうのが可能となる。
【００６６】
２−１−４：タイマー処理
次にタイマー処理について説明する。このタイマー処理は、前述の波形合成プログラムの実行中に、所定周期Ｔｔ毎に実行される割込処理である。図１７は、かかるタイマー処理の手順を示すフローチャートである。
まず、ステップＳｆ１において、フラグＢＵＳＹが「１」であって、アップカウントが許可されているか否かが判別される。この判別結果が「Ｎｏ」であれば、手順はステップＳｆ３にスキップし、「Ｙｅｓ」であれば、ステップＳｆ２においてレジスタＴＣＯＵＮＴが「１」だけインクリメントされる。そして、ステップＳｆ３では、他のタイマー処理が実行されて、このルーチンは終了する。
このように、タイマー処理では、フラグＢＵＳＹが「１」であれば、起動される毎に、レジスタＴＣＯＵＮＴが「１」だけインクリメントされる。フラグＢＵＳＹが「１」となるのは、ステップＳａ９〜Ｓａ１１のループ処理が実行されている期間に限られるから（ステップＳａ７、Ｓａ１２）、結局、レジスタＴＣＯＵＮＴの内容は、前述のように、当該ループ処理により波形データをｍサンプル分だけ演算・読出するのに要した期間内に、タイマー処理が何回起動されたかを示すことになり、その際に要する経過時間は、ＴＣＯＵＮＴとＴｔとの積により表わされることになる。
【００６７】
２−１−５：本実施形態での具体的動作
図１に示した構成は、オプション品のすべて、すなわち、コプロセッサ１７、ＤＳＰ２１および音源デバイス２２のすべてを搭載している構成である。
したがって、この構成では、発音方式の指定、割当の方式についてすべての動作モードが使用可能である。この際、動作モードが各種音源デバイス優先モードである場合、各種音源デバイスの処理能力を上回る分の処理がＣＰＵ側に割り当てられて、ＣＰＵ等がこれを処理するので、楽音発生専用ハードウェアたる各種音源デバイスの性能を超える楽音発生ができ、このため多様な音色を発生することができるのである。
さらに、本構成では、動作モードがＣＰＵ優先モードである場合にも、多様な音色を発生することができる。
しかも、サンプリング周波数ｆｓは、システムの構成に応じて最適に設定されるので（ステップＳａ２１）、楽音の品質が劣化するということもない。
【００６８】
３：他の構成における具体的動作
本実施形態では、図１（図２）に示すフルオプションの構成を前提として説明したが、パソコンや電子楽器のようなＣＰＵを用いたシステムのハードウェア構成は、オプション品の有無により千差万別である。また、上述した波形合成プログラムも、ハードウェア構成により指定可能な動作モードが異なる。そこで、図１に示す以外の構成では、波形合成プログラムがいかに動作するかについて、具体構成を挙げて簡単に説明する。
【００６９】
３−１：オプションなし
図２１に示すハードウェア構成は、図１に示す構成におけるオプション品のすべて、すなわち、コプロセッサ１７、ＤＳＰ２１および音源デバイス２２のすべてを搭載していない構成である。
したがって、この構成では、ステップＳａ４（図８参照）の判別結果が「Ｙｅｓ」となるため、各種音源デバイス使用モードは使用できず、ＣＰＵ合成モードが使用可能である。しかし、コプロセッサ１７もＤＳＰ２１も搭載されていないので、ＣＰＵ１０単体の処理能力が極めて高くないと、波形データのリアルタイム演算が困難となる。このため、実際には、ＣＰＵ合成モードのうちの波形メモリ読出モードのみが使用可能という場合もあり得る。
【００７０】
３−２：コプロセッサのみ搭載
図２２に示すハードウェア構成は、図１に示す構成におけるオプション品のうち、コプロセッサ１７のみを搭載した構成である。
したがって、この構成でも、ステップＳａ４（図８参照）の判別結果が「Ｙｅｓ」となるため、各種音源デバイス使用モードは使用できず、ＣＰＵ合成モードのみが使用可能である。ただ、コプロセッサ１７が搭載されているので、実数演算処理を高速に行なうことが可能であるため、ＣＰＵ合成モードの全モードが使用可能となる。
なお、この構成では、コプロセッサ１７が搭載されているので、発音演算処理（ステップＳａ９）および波形サンプル発生演算（ステップＳａ１５）は、コプロセッサ併用により行なわれる。
【００７１】
３−３：コプロセッサ、ＤＳＰ搭載（波形メモリ等なし）
図２３に示すハードウェア構成は、図１に示す構成におけるオプション品のうち、コプロセッサ１７およびＤＳＰ２１を搭載した構成であり、ＤＳＰ２１は、波形データの高速演算を目的としている。
ここで、ＤＳＰ２１が各種音源デバイスに属すると考える立場をとると、２回目以降の起動ではステップＳａ４の判別結果が「Ｎｏ」となるため、各種音源デバイス使用モードが使用できる。ただし、ＤＳＰ２１は演算を行なうことを目的としているから、波形メモリ読出方式ではなく、各種の演算により波形データを生成することになる。
また、割当によってはＣＰＵ合成モードも可能であるが、この構成では、波形データの演算については可能であるが、ＤＭＡＣ１９およびＲＡＭ２０を有しないため、ＣＰＵ合成モードのうち、波形メモリ読出モードは使用できず、波形データをリアルタイムに演算するＦＭモード、高調波合成モード、および物理モデリング合成モードが使用可能となる。
なお、この構成についても、コプロセッサ１７が搭載されているので、発音演算処理（ステップＳａ９）および波形サンプル発生演算（ステップＳａ１５）は、コプロセッサ併用により行なわれる。
【００７２】
３−４：音源デバイスのみ
図２４に示すハードウェア構成は、図１に示す構成におけるオプション品のうち、音源デバイスのみを搭載した構成である。
したがって、この構成では、２回目以降の起動ではステップＳａ４（図８参照）の判別結果が「Ｎｏ」となるため、各種音源デバイス使用モードが使用可能である。
また、割当によってはＣＰＵ合成モードも可能であるが、この構成では、波形データの演算については可能であるが、ＤＭＡＣ１９およびＲＡＭ２０を有しないため、波形メモリ読出モードが使用できないという場合もあり得る。また、コプロセッサ１７も搭載されていないので、ＣＰＵ１０単体の処理能力が極めて高くないと、波形データのリアルタイム演算が困難である。このため、実際には、ＣＰＵ合成モードの全モードが使用不可能となる場合もあり得る。
【００７３】
４：他の実施形態
次に、上述した実施形態とは別の実施形態について説明する。
４−１：第２実施形態
まず、第２実施形態について説明する。
一般に、リズム系や、ドラム系のような撥音系の波形データを、ＦＭや高調波合成等による演算によって求めても、雰囲気ある楽音の再生は困難とされる。
このため、音源デバイス２２が備えられている場合であって、その音源デバイス２２が波形メモリ読出方式以外のＦＭ方式等により楽音の波形データを演算して求める構成である場合、当該音源デバイス２２によって、撥音系の楽音を再生するのは適切とは言えない。また、このような音源デバイス２２が備えられているので、ＣＰＵ１０等があえて波形メモリ読出モード以外の演算モードにより波形データを演算して求める必要性は乏しい。さらに、ＣＰＵ１０等にとってみれば、波形合成以外の処理をする必要もあることから、特にＣＰＵ１０等の性能が低い場合には、なるべくなら、波形合成プログラムの実行に伴う負荷を減らしたいという事情もある。
したがって、このような場合、ＣＰＵ１０等が、音源デバイス２２にとって不向きである撥音系の波形データを波形メモリ読出モードによって生成する一方、各種音源デバイスたる音源デバイス２２がそれ以外の楽音の波形データを演算によって生成するようにすれば、ＣＰＵ１０等の側にとってみれば負荷を最小限とすることができるし、音源デバイス２２にとってみれば不得意な発音をしなくて済み、両者にとって都合が良い。さらに、再生楽音の品質を高く保てるという利点もある。
この第２実施形態の目的は、まさにこの点にある。
【００７４】
第２実施形態は、構成的には、図１、図２４に示すように、音源デバイス２２の装着を前提とする。また、その波形合成プログラムについては、選択されたハードウェアを含む発音処理（図１５および１６参照）を、図１８に示す処理に差し替えた処理を行なうものである。すなわち、上述したステップＳａ３４（図１１参照）において実行される、選択されたハードウェアを含む発音処理については、図１８に示す処理が行なわれる。このため、差し替える処理については説明し、他の事項については重複するのでその説明を省略する。
【００７５】
この実施形態において、波形合成プログラムの処理手順が、ステップＳａ３４に進むと、図１８に示すような、選択されたハードウェアを含む発音処理が実行される。まず、ステップＳｇ１では、ステップＳｅ１と同様に、イベント検出管理が行なわれる。
次に、ステップＳｇ２では、発音指定システムチェックが行なわれる。すなわち、発音すべき音色のそれぞれについて、ＣＰＵ１０等側で処理するか、あるいは各種音源デバイス側で処理するか、を割り当てる。ここで、かかる割当を何を基準にして行なうかについて説明する。
一般に、音源デバイスは、それ固有の音色配列を有しているため、音色番号を定めれば発音すべき音色は一意に決まる。したがって、撥音系の楽音が属する音色番号を予めピックアップしておき、イベントの検出された楽音の音色番号が、ピックアップされた音色番号に属する場合には、ＣＰＵ１０等側で処理すべしと設定し、それ以外の場合には、各種音源デバイスたる音源デバイス２２等側で処理すべしと設定される。
【００７６】
なお、本実施形態では、割当の基準を音色番号に拘泥すべきではなく、例えば、手動モードによって、ある音色についてはＣＰＵ側、またある音色については各種音源側というように、音色毎に処理側をそれぞれ設定しておくようにしても良い。また、第１実施形態のように、同時発音可能なチャンネル数により割り当てるようにしても良い。さらに、強制モードによって、他に実行しているプログラムにより強制的に割り当てることとしても良い。
【００７７】
さて、各種音源デバイス側に割り当てられた音色については、ステップＳｇ３において、ステップＳｅ４（図１５参照）と同様に、発音割当処理が行なわれて、各種音源デバイス側に空きチャンネルが設けられる。そして、ステップＳｇ６において、検出されたイベントに対応する波形サンプルが、空きチャンネルにより実際に生成される。この場合の生成方法は、ＦＭや高調波合成、物理モデリング合成のみならず、波形メモリ２５の波形データを読み出すＰＣＭ、波形メモリ読出など、装着される音源デバイス２２の特性に依存した種々の方式が考えられる。
【００７８】
一方、ＣＰＵ側に割り当てられた音色については、ステップＳｇ５において、ステップＳｅ７（図１５参照）と同様に、ＣＰＵ発音割当処理が行なわれて、検出されたイベントに対応するＣＰＵ波形発生割当コマンドが生成される。そして、かかるＣＰＵ波形発生割当コマンドが有の場合には、ステップＳｇ６の判別結果が「Ｙｅｓ」となって、ステップＳｇ７の発音演算処理が、当該割当コマンドに対応して波形サンプルを生成する発音演算処理が実行される。なお、この発音演算処理は、上述のようにＣＰＵ等の負担を減らす趣旨から、波形メモリ読出モードにより行なわれる。一方、ＣＰＵ波形発生割当コマンドが無の場合には、ステップＳｇ６の判別結果が「Ｎｏ」となって、手順が戻る。
【００７９】
この第２実施形態によれば、ある音色をＣＰＵ側に、また、ある音色については各種音源デバイス側に、それぞれ任意に処理を割り当てることができるので、ＣＰＵおよび各種音源デバイスの処理負担を適切に分けることができ、さらに、再生楽音の品質を維持したまま、多様化を図ることができる。
【００８０】
４−２：第３実施形態
次に、第３実施形態について説明する。上述した第１実施形態および第２実施形態では、１つの音色に関する発音処理を、ＣＰＵ側あるいは各種音源デバイス側のいずれかのチャンネルにより行なう構成であったが、ある音色に関する発音処理を、ＣＰＵ側および各種音源デバイス側の双方のチャンネルにより行なう構成であっても良い。特にこの場合、ＣＰＵ側では高調波合成により、また、各種音源デバイス側では高調波合成以外の例えばＦＭ合成により、それぞれ波形データを演算して求めるようにすれば、同じ音色を生成するにも、異なる演算方法で求められるので、結果として異なった音色で発音されることになる。このため、音色の多様化に大きく寄与することが考えられる。
この第３実施形態の目的は、まさにこの点にある。
【００８１】
第３実施形態は、第２実施形態と同様に、構成的には、図１、図２４に示すように、音源デバイス２２の装着を前提とする。また、その波形合成プログラムについては、選択されたハードウェアを含む発音処理（図１５および１６参照）を、図１９に示す処理に差し替えた処理を行なうものである。すなわち、上述したステップＳａ３４（図１１参照）において実行される、選択されたハードウェアを含む発音処理については、図１９に示す処理が行なわれる。このため、差し替える処理については説明し、他の事項については重複するのでその説明を省略する。
【００８２】
この実施形態において、波形合成プログラムの処理手順が、ステップＳａ３４に進むと、図１９に示すような、選択されたハードウェアを含む発音処理が実行される。まず、ステップＳｈ１では、ステップＳｅ１、Ｓｇ１と同様に、イベント検出管理が行なわれる。
次に、ステップＳｈ２では、発音指定システムチェックが行なわれる。すなわち、発音すべき音色のそれぞれについて、ＣＰＵ１０等側で処理するか、各種音源デバイス側で処理するか、あるいは双方で処理するかを割り当てる。ここで、割当の基準は、第２実施形態と同様に、音色番号や、同時発音可能なチャンネル数、手動モードによる設定や、強制モードによる設定など種々考えられる。
【００８３】
さて、各種音源デバイス側に割り当てられた音色については、ステップＳｈ３において、ステップＳｅ４（図１５参照）と同様に、発音割当処理が行なわれて、各種音源デバイス側に空きチャンネルが設けられる。そして、ステップＳｈ４において、検出されたイベントに対応する波形サンプルが、空きチャンネルにより実際に生成される。この場合の生成方法は、ＦＭや高調波合成、物理モデリング合成のみならず、波形メモリ２５の波形データを読み出すＰＣＭ、波形メモリ読出など、装着される音源デバイス２２の特性に依存した種々の方式が考えられる。
一方、ＣＰＵ側に割り当てられた音色については、ステップＳｈ５において、ＣＰＵ発音割当処理が行なわれて、検出されたイベントに対応するＣＰＵ波形発生割当コマンドが生成される。この場合のＣＰＵ波形発生割当コマンドには、演算方式を指定する情報も含まれる。
また、各種音源デバイス側およびＣＰＵ側の双方に割り当てられた音色については、各種音源デバイス側では、ステップＳｈ３およびＳｈ４の処理が行なわれ、ＣＰＵ側では、ステップＳｈ５の処理が行なわれる。すなわち、双方並列して行なわれる。
【００８４】
そして、かかるＣＰＵ波形発生割当コマンドが有の場合には、ステップＳｈ６の判別結果が「Ｙｅｓ」となって、ステップＳｈ７の発音演算処理が、当該割当コマンドに対応して波形サンプルを生成する発音演算処理が実行される。なお、この場合の発音演算処理は、第２実施形態の発音演算処理とは異なり、波形メモリ読出のみならずＦＭや高調波合成、物理モデリング合成など種々の方式が考えられる。一方、ＣＰＵ波形発生割当コマンドが無の場合には、ステップＳｇ６の判別結果が「Ｎｏ」となって、手順が戻る。
【００８５】
この第３実施形態では、ある音色をＣＰＵ側と各種音源デバイス側とで、両者に割り当てられることができるので、データ的には１つの音色が、実質的に異なる２つの音色で発生することができる。したがって、第３実施形態によれば、この意味で発生楽音の多様化を図ることができる。
【００８６】
４−３：第４実施形態
次に、第４実施形態について説明する。上述した実施形態では、いずれも、発音割当の方式なる動作モードについて規定していたが、本願はこれに限られず、もっとシンプルに、各種音源デバイスが搭載されていて、当該各種音源デバイスに割り当てられるイベントが検出されれば、その処理を各種音源デバイスに行なわせる構成としても良い。その場合の構成がまさにこの第４実施形態である。
【００８７】
第４実施形態は、第２および第３実施形態と同様に、構成的には、図１、図２４に示すように、音源デバイス２２の装着を前提とする。また、その波形合成プログラムについては、選択されたハードウェアを含む発音処理（図１５および１６参照）を、図２０に示す処理に差し替えた処理を行なうものである。すなわち、上述したステップＳａ３４（図１１参照）において実行される、選択されたハードウェアを含む発音処理については、図２０に示す処理が行なわれる。このため、差し替える処理については説明し、他の事項については重複するのでその説明を省略する。
【００８８】
この実施形態において、波形合成プログラムの処理手順が、ステップＳａ３４に進むと、図２０に示すような、選択されたハードウェアを含む発音処理が実行される。まず、図示しないが、ステップＳｅ１、Ｓｇ１と同様に、イベント検出管理が行なわれる。
次に、ステップＳｉ１では、発音割当処理が行なわれて、各種音源デバイス側に空きチャンネルが設けられる。そして、ステップＳｉ２において、検出されたイベントに対応する波形サンプルが、空きチャンネルにより実際に生成される。この場合の生成方法は、ＦＭや高調波合成、物理モデリング合成のみならず、波形メモリ２５の波形データを読み出すＰＣＭ、波形メモリ読出など、装着される音源デバイス２２の特性に依存した種々の方式が考えられる。この後、処理手順は戻る。
【００８９】
この第４実施形態によれば、各種音源デバイスが搭載されていて、当該各種音源デバイスに割り当てられるイベントが検出されれば、その処理を当該各種音源デバイスに行なわせることができる。
【００９０】
４−４：その他
上述した実施形態では、オプション品の例として、コプロセッサ１７や、ＤＳＰ２１、音源デバイス２２等を例としたが、本願はこれらに限られない。
また、本願構成は、パソコンや、電子楽器や、ゲーム機などのようにＣＰＵを用いた応用システムであって、楽音を発生させるものすべてに適用可能である。
【００９１】
【発明の効果】
以上説明した本発明によれば、次のような効果がある。
装置構成において最適なサンプリング周波数にて楽音発生を行なうことが可能となる。
楽音波形のサンプリングデータを生成するための構成を簡略化することが可能となる。
装置構成の性能が低い場合においても、発生楽音の品質を確保することが可能となる。
【図面の簡単な説明】
【図１】  本発明が適用される構成を示すブロック図である。
【図２】  同構成におけるバス回りの変形例を示すブロック図である。
【図３】  同構成におけるバス回りの変形例を示すブロック図である。
【図４】  （ａ）は、同構成における音源デバイス周辺を集積化した場合の構成を示すブロック図であり、（ｂ）は、同構成におけるＤＳＰ周辺を集積化した場合の構成を示すブロック図である。
【図５】  この発明による第１実施形態の動作モードを説明するための図である。
【図６】  同実施形態におけるＲＡＭのメモリマップを示す図である。
【図７】  同実施形態における処理全体の概観を示すフローチャートである。
【図８】  同実施形態により実行される波形合成プログラムの手順を示すフローチャートである。
【図９】  同実施形態により実行される波形合成プログラムの手順を示すフローチャートである。
【図１０】  同実施形態により実行される波形合成プログラムの手順を示すフローチャートである。
【図１１】  同実施形態により実行される波形合成プログラムの手順を示すフローチャートである。
【図１２】  波形合成プログラムにおける波形サンプルロード処理の手順を示すフローチャートである。
【図１３】  波形合成プログラムにおける波形サンプル発生演算の手順を示すフローチャートである。
【図１４】  波形合成プログラムにおけるＣＰＵによる波形サンプル演算処理の手順を示すフローチャートである。
【図１５】  波形合成プログラムにおける選択されたハードウェアを含む発音処理の手順を示すフローチャートである。
【図１６】  波形合成プログラムにおける選択されたハードウェアを含む発音処理の手順を示すフローチャートである。
【図１７】  波形合成プログラムにおけるタイマー処理の手順を示すフローチャートである。
【図１８】  本発明の第２実施形態における、選択されたハードウェアを含む発音処理の手順を示すフローチャートである。
【図１９】  本発明の第３実施形態における、選択されたハードウェアを含む発音処理の手順を示すフローチャートである。
【図２０】  本発明の第４実施形態における、選択されたハードウェアを含む発音処理の手順を示すフローチャートである。
【図２１】  本発明が適用される構成の一例を示すブロック図である。
【図２２】  本発明が適用される構成の一例を示すブロック図である。
【図２３】  本発明が適用される構成の一例を示すブロック図である。
【図２４】  本発明が適用される構成の一例を示すブロック図である。
【符号の説明】
１０……ＣＰＵ（演算処理手段、検出手段、制御手段、サンプリング周波数決定手段）、１７……コプロセッサ、２２……音源デバイス
【図１】
0003716710.tif 000002
【図２】
0003716710.tif 000003
【図３】
0003716710.tif 000004
【図４】
0003716710.tif 000005
【図５】
0003716710.tif 000006
【図６】
0003716710.tif 000007
【図７】
0003716710.tif 000008
【図８】
0003716710.tif 000009
【図９】
0003716710.tif 000010
【図１０】
0003716710.tif 000011
【図１１】
0003716710.tif 000012
【図１２】
0003716710.tif 000013
【図１３】
0003716710.tif 000014
【図１４】
0003716710.tif 000015
【図１５】
0003716710.tif 000016
【図１６】
0003716710.tif 000017
【図１７】
0003716710.tif 000018
【図１８】
0003716710.tif 000019
【図１９】
0003716710.tif 000020
【図２０】
0003716710.tif 000021
【図２１】
0003716710.tif 000022
【図２２】
0003716710.tif 000023
【図２３】
0003716710.tif 000024
【図２４】
0003716710.tif 000025