(57)【特許請求の範囲】
【請求項１】
複数発音チャンネルの楽音を生成する楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する検出手段と、
前記検出手段の検出結果に応じて、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御手段と
を具え、前記制御手段によって制御された内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させるようにした楽音発生装置であって、
前記制御手段は、前記検出手段の検出結果により前記ディジタル信号演算処理手段の性能が低いことが検出された場合、前記楽音生成処理を低いグレードに設定する制御と前記楽音生成処理の一部を省略する制御との少なくとも一方を実行することにより、前記楽音生成処理の各発音チャンネル当りの処理時間を短縮して、前記低グレード化および／または前記省略の制御を実行しない場合に比して同時発音数を増加させることを特徴とする楽音発生装置。
【請求項２】
前記制御手段が制御する楽音生成処理の内容は、補間処理、ディジタルフィルタ処理、エフェクト処理の少なくとも１つであることを特徴とする請求項１記載の楽音発生装置。
【請求項３】
楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する検出手段と、
前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御データを入力するための操作子手段と、
前記検出手段の検出結果に応じて、前記操作子手段で入力可能な制御データの範囲を限定する限定手段と
を具え、前記操作子手段で入力された制御データに従う内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させるようにした楽音発生装置。
【請求項４】
前記制御データは、前記楽音生成処理における補間処理、エフェクト処理の少なくとも１つの態様を制御するものであることを特徴とする請求項３記載の楽音発生装置。
【請求項５】
前記制御データは、前記楽音生成処理で生成される楽音のサンプリング周波数を制御するものであることを特徴とする請求項３記載の楽音発生装置。
【請求項６】
前記ディジタル信号演算処理手段は、前記楽音生成処理を記述したプログラムに従って楽音生成を実行するものである請求項１乃至５のいずれかに記載の楽音発生装置。
【請求項７】
前記検出手段は、前記ディジタル信号演算処理手段として使用するＣＰＵのタイプを検出することにより、該ディジタル信号演算処理手段の性能を検出するものである請求項１乃至６のいずれかに記載の楽音発生装置。
【請求項８】
前記検出手段は、前記ディジタル信号演算処理手段の動作クロックを検出することにより、該ディジタル信号演算処理手段の性能を検出するものである請求項１乃至６のいずれかに記載の楽音発生装置。
【請求項９】
複数発音チャンネルの楽音を生成する楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する第１ステップと、
前記第１ステップの検出結果に応じて、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する第２ステップと、
前記第２ステップで制御された内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させる第３ステップと
から成る楽音発生方法であって、
前記検出結果により前記ディジタル信号演算処理手段の性能が低いことが検出された場合、前記第２ステップが、前記楽音生成処理を低いグレードに設定する制御と前記楽音生成処理の一部を省略する制御との少なくとも一方を実行することにより、前記楽音生成処理の各発音チャンネル当りの処理時間を短縮して、前記低グレード化および／または前記省略の制御を実行しない場合に比して同時発音数を増加させることを特徴とする楽音発生方法。
【請求項１０】
前記第２ステップで制御される楽音生成処理の内容は、補間処理、ディジタルフィルタ処理、エフェクト処理の少なくとも１つであることを特徴とする請求項９記載の楽音発生方法。
【請求項１１】
楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する第１ステップと、
前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御データを入力する第２ステップであって、前記第１ステップの検出結果に応じて、入力可能な制御データの範囲を限定するものと、
前記第２ステップで入力された制御データに基づく楽音生成処理を前記ディジタル信号演算処理手段に実行させる第３ステップと
から成る楽音発生方法。
【請求項１２】
前記検出結果に応じて入力可能な範囲が限定される前記制御データは、前記楽音生成処理における補間処理、エフェクト処理の少なくとも１つの態様を制御するものであることを特徴とする請求項１１記載の楽音発生方法。
【請求項１３】
前記検出結果に応じて入力可能な範囲が限定される前記制御データは、前記楽音生成処理で生成される楽音のサンプリング周波数を制御するものであることを特徴とする請求項１１記載の楽音発生方法。
【請求項１４】
前記ディジタル信号演算処理手段は、前記楽音生成処理を記述したプログラムに従って楽音生成を実行するものである請求項９乃至１３のいずれかに記載の楽音発生方法。
【請求項１５】
前記楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する前記第１ステップを前記ディジタル信号演算処理手段に実行させる請求項９乃至１４のいずれかに記載の楽音発生方法。
【請求項１６】
前記第１ステップは、前記ディジタル信号演算処理手段として使用するＣＰＵのタイプを検出することにより、該ディジタル信号演算処理手段の性能を検出するものである請求項９乃至１５のいずれかに記載の楽音発生方法。
【請求項１７】
前記第１ステップは、前記ディジタル信号演算処理手段の動作クロックを検出することにより、該ディジタル信号演算処理手段の性能を検出するものである請求項９乃至１５のいずれかに記載の楽音発生方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、楽音を生成する技術分野に属し、特に、楽音生成処理に使用する演算処理手段の演算能力に応じて、楽音生成処理の内容を制御できるようにしたものに関する。
【０００２】
【従来の技術】
今日の電子楽器では、波形の生成処理や、生成した波形にエフェクトを付加する処理等（本明細書では、これらの処理のことを楽音生成処理と呼ぶ）を記述したプログラムを、マイクロプロセッサに実行させることが広く普及している。そうしたマイクロプロセッサとしては、音源ＬＳＩやＤＳＰ（ディジタルシグナルプロセッサ）のような専用ＬＳＩが設けることが長らく一般的であった。
しかし、近年のＣＰＵの演算能力の向上に伴って、専用ＬＳＩを設けるかわりに、汎用コンピュータのＣＰＵや、電子楽器に搭載したＣＰＵに楽音生成処理プログラムを実行させるようにしたものも登場している。そうした楽音発生装置や楽音発生方法のことを、ここではＣＰＵ音源またはソフトウェア音源と呼ぶことにする。
この種のソフトウェア音源において、波形生成演算の方式には、１回の生成演算で１サンプルのデータしか生成しない方式と、１回の生成演算によって複数サンプルのデータを一気に生成する方式とがあるが、後者の方式の方が、メモリ上のデータのアクセス効率が上がり、演算が高速化される、という利点を有している。
また、この種のソフトウェア音源における複数チャンネルについての楽音波形データの生成方式には、所定数のチャンネルについて絶えず生成演算を行う方式と、現在発音しているチャンネルについてのみ波形生成演算を行う方式とがあるが、後者の方式の方が、ＣＰＵの演算量を最小限に抑えることができる、という利点を有している。
【０００３】
【発明が解決しようとする課題】
ところで、ソフトウェア音源の場合には、用意された所定の楽音生成処理プログラムが、常に同一の演算能力を有するＣＰＵによって実行されるとは限らない。すなわち、汎用コンピュータを用いる場合には、互換性がある（演算セットが共通である）限り、どのコンピュータを用いることもできるが、そのコンピュータの開発時期や機種によって、搭載されているＣＰＵの演算能力は様々である。他方、電子楽器に搭載したＣＰＵに実行させる場合には、１つの機種の電子楽器毎に楽音生成処理プログラムを作成するようにすれば、そのプログラムが演算能力の異なるＣＰＵによって実行されることはない。しかし、実際には、コスト上の問題から、同一内容のプログラムを書き込んだマスクＲＯＭを、複数の機種の電子楽器のために共通して用いることが多い。そして、それらの複数の機種の電子楽器に搭載されているＣＰＵの演算能力がすべて同一である保証はないので、やはり、同一内容のプログラムが演算能力の異なるＣＰＵによって実行される可能性がある。
【０００４】
そして、このように、同一内容の楽音生成処理プログラムを、演算能力の異なるＣＰＵによって実行させることには、様々な問題がある。
例えば、或る動作クロックのＣＰＵを基準にして作成した楽音生成処理プログラムを、それよりも動作クロックの遅いＣＰＵに実行させた場合には、楽音の同時発音数が少なくなってしまうことにより、演奏上支障が生じることがある。すなわち、前述した、現在発音しているチャンネルについてのみ波形生成演算を行う方式において、そのような問題が起こり得る。また逆に、或る動作クロックのＣＰＵを基準にして作成した楽音生成処理プログラムを、それよりも動作クロックの速いＣＰＵに実行させた場合には、そのＣＰＵの高い演算能力を十分に活かして楽音を生成することができない。
【０００５】
また、楽音生成処理プログラムを構成する命令のうち、どの種類の命令を高速で実行できるかは、ＣＰＵのタイプによって異なっている。例えば、数値演算プロッセッサを内蔵したタイプのＣＰＵは、浮動小数点演算の演算命令を高速で実行できるが、数値演算プロッセッサを内蔵していないタイプのＣＰＵでは、そうした演算命令の実行速度が遅い。そのため、或るタイプのＣＰＵを高速に動作させるのに適した命令で構成された楽音生成処理プログラムを、別のタイプのＣＰＵに実行させた場合には、楽音の生成に極端に時間を要してしまうことにより、やはり演奏上支障が生じることがある。
【０００６】
この発明は上述の点に鑑みてなされたもので、楽音生成処理に使用するディジタル信号演算処理手段の演算能力にとって最も適切な内容の処理を実行させて、可能な範囲で最大限に質の高い楽音を生成することができるようにした楽音発生装置及び方法を提供しようとするものである。
尚、本明細書では、ＣＰＵのような演算処理手段の演算能力を決定づける要因（例えば、上述した動作クロックと数値演算プロッセッサの内蔵の有無とのほかに、命令キャッシュメモリの内蔵の有無や、データキャッシュメモリの内蔵の有無等が考えられる）のことを、演算処理手段の性能（または演算特性）と呼ぶことにする。
【０００７】
【課題を解決するための手段】
第１の観点に従えば、この発明に係る楽音発生装置は、複数発音チャンネルの楽音を生成する楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する検出手段と、前記検出手段の検出結果に応じて、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御手段と
を具え、前記制御手段によって制御された内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させるようにした楽音発生装置であって、前記制御手段は、前記検出手段の検出結果により前記ディジタル信号演算処理手段の性能が低いことが検出された場合、前記楽音生成処理を低いグレードに設定する制御と前記楽音生成処理の一部を省略する制御との少なくとも一方を実行することにより、前記楽音生成処理の各発音チャンネル当りの処理時間を短縮して、前記低グレード化および／または前記省略の制御を実行しない場合に比して同時発音数を増加させることを特徴としている。
【０００８】
この楽音発生装置によれば、楽音生成処理の実行に先立って、楽音生成処理に使用しようとするディジタル信号演算処理手段の性能が検出手段によって検出され、その検出結果に応じて、当該演算処理手段に実行させるべき楽音生成処理の内容が制御手段によって制御される。そして、楽音生成処理を実行する段階では、このように制御された内容の楽音生成処理を当該演算処理手段が実行することにより、楽音が生成される。このように、使用しようとするディジタル信号演算処理手段の性能に応じて制御した内容の楽音生成処理を実行させるので、それぞれの演算処理手段にとって最適な内容の処理を実行させて、可能な範囲で最大限に質の高い楽音を生成することができるようになる。
【０００９】
ここで、制御手段は、検出手段によりディジタル信号演算処理手段の性能が低いことが検出された場合、楽音生成処理を低いグレードに設定する制御と楽音生成処理の一部を省略する制御との少なくとも一方を実行することにより、楽音生成処理の各発音チャンネル当りの処理時間を短縮し、これにより、低グレード化および／または省略の制御を実行しない場合に比して同時発音数を増加させることができるようにしている。これにより、演算能力の低い（例えば動作クロックの遅い）演算処理手段を使用する場合でも、１つの発音チャンネルでの処理に要する時間が短縮されるようになるので、十分な同時発音数を確保することができるようになる。
【００１０】
一例として、前記制御手段が制御する楽音生成処理の内容は、補間処理、ディジタルフィルタ処理、エフェクト処理の少なくとも１つである。この場合、補間処理、ディジタルフィルタ処理、エフェクト処理の少なくとも１つが、検出手段による検出結果に応じて、そのグレードが設定制御されたり、その処理の省略制御がなされたりする。
また、別の一例として、制御手段は、検出手段の検出結果に応じて、楽音生成処理プログラムを構成する命令として異なる種類の命令を用いるような制御を行なうものであることが好ましい。そうすることにより、使用する演算処理手段の性能（例えば特定の数値演算プロッセッサを内蔵しているか否か）に応じて、それぞれの演算処理手段の高速動作のために最適な種類の命令を用いて高速に処理を実行させることができるようになる。
【００１１】
第２の観点に従えば、この発明に係る楽音発生装置は、楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する検出手段と、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御データを入力するための操作子手段と、前記検出手段の検出結果に応じて、前記操作子手段で入力可能な制御データの範囲を限定する限定手段とを具え、前記操作子手段で入力された制御データに従う内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させるようにしたことを特徴としている。
【００１２】
この楽音発生装置においても、前述と同様に、楽音生成処理の実行に先立って、楽音生成処理に使用しようとするディジタル信号演算処理手段の性能が検出手段によって検出される。但し、この楽音発生装置には、楽音生成処理の内容を制御する制御データを入力するための操作子手段が具えられており、その操作子手段で入力可能な範囲が、検出結果に応じて限定手段によって限定される。そして、楽音生成処理を実行する段階では、このように限定された範囲内で操作子手段を用いて入力された制御データに従う内容の楽音生成処理を当該演算処理手段が実行することにより、楽音が生成される。
このように、使用しようとする演算処理手段の性能に応じて制御データの入力可能範囲を限定し、その範囲内で入力された制御データに従う内容の楽音生成処理を実行させるので、操作子手段を用いた制御データの入力に基づき、それぞれの演算処理手段にとって最適な内容の処理を実行させて、可能な範囲で最大限に質の高い楽音を生成することができるようになる。
【００１３】
一例として、ディジタル信号演算処理手段の性能を検出するための検出手段は、該ディジタル信号演算処理手段として使用するＣＰＵのタイプを検出することにより、その性能を検出するものである。別の例として、ディジタル信号演算処理手段の性能を検出するための検出手段は、該ディジタル信号演算処理手段の動作クロックを検出することにより、その性能を検出するものである。
【００１４】
また、この発明に係る楽音発生方法は、複数発音チャンネルの楽音を生成する楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する第１ステップと、前記第１ステップの検出結果に応じて、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する第２ステップと、前記第２ステップで制御された内容の楽音生成処理を前記ディジタル信号演算処理手段に実行させる第３ステップとから成る楽音発生方法であって、前記検出結果により前記ディジタル信号演算処理手段の性能が低いことが検出された場合、前記第２ステップが、前記楽音生成処理を低いグレードに設定する制御と前記楽音生成処理の一部を省略する制御との少なくとも一方を実行することにより、前記楽音生成処理の各発音チャンネル当りの処理時間を短縮して、前記低グレード化および／または前記省略の制御を実行しない場合に比して同時発音数を増加させることを特徴としている。
【００１５】
さらに、この発明に係る楽音発生方法は、楽音生成処理に使用しようとするディジタル信号演算処理手段の性能を検出する第１ステップと、前記ディジタル信号演算処理手段に実行させるべき楽音生成処理の内容を制御する制御データを入力する第２ステップであって、前記第１ステップの検出結果に応じて、入力可能な制御データの範囲を限定するものと、前記第２ステップで入力された制御データに基づく楽音生成処理を前記ディジタル信号演算処理手段に実行させる第３ステップとから成ることを特徴としている。
【００１６】
【発明の実施の形態】
以下、添付図面を参照してこの発明の実施の形態を詳細に説明する。
図１は、この発明を採用したソフトウェア音源方式のコンピュータミュージックシステムの全体構成ブロック図である。このコンピュータミュージックシステムでは、パーソナルコンピュータのＣＰＵ３が、楽音生成処理を実行する。
ＣＰＵ３には、ＭＩＤＩのインターフェース１，タイマ２，ＲＯＭ（リードオンリーメモリ）４，ＲＡＭ（ランダムアクセスメモリ）５，マウス７，キーボード８，ディスプレイ９，ハードディスク装置１０，及びＤＭＡ（ダイレクトメモリアクセス）回路１１が、データ及びアドレスバス６を介して接続されている。ＭＩＤＩ１には、図示しないシーケンサ等から、ＭＩＤＩ形式の演奏情報が供給される。
ハードディスク装置１０には、ＣＰＵ３に実行させるプログラム（楽音生成処理プログラムを含む）が記録されるとともに、それぞれ１又は複数周期から成る複数種類の音色の波形データ（例えば、ＰＣＭ（パルスコードモジュレーション）方式の波形データ等）が記録されている。
【００１７】
ＤＭＡ回路１１は、ＣＰＵ３が楽音生成処理を実行することによって生成された楽音データを、ダイレクトメモリアクセス方式でＲＡＭ４から読み出してＤ／Ａ変換器１２に送る処理（再生処理）を実行するものである。ＤＭＡ回路１１は、この再生処理を、Ｄ／Ａ（ディジタル／アナログ）変換器１２のサンプリング周波数（一例として４８ｋＨｚ）に合わせたタイミングで、且つ、所定サンプル数（一例として１２８サンプル）の楽音データを単位として１単位分の楽音データ毎に実行する。
Ｄ／Ａ変換器１２でアナログ変換された楽音データは、サウンドシステム１３に送られて、該システム１３から音響的に発音される。
【００１８】
図２は、ソフトウェア音源の基本原理を示した図である。ＣＰＵ３は、所定の時間長の区間を単位として、各区間内にＭＩＤＩ１を介して受信した演奏情報に基づき、それぞれ当該区間の次の区間内に楽音生成処理を実行する。（例えば、時刻Ｔ１からＴ２までの区間に受信した演奏情報に基づき、時刻Ｔ２からＴ３までの区間に楽音生成処理を実行する。）（但し、例えば、連続する複数の区間内に入力した演奏情報に基づく楽音生成処理を、その後のいずれかの１つの区間においてまとめて実行するようにしてもよく、更に、連続する幾つの区間内に入力した演奏情報に基づく楽音生成処理をまとめて実行させるかを、時間の経過に伴って変化させるようにしてもよい。）こうしてＣＰＵ３が各区間内に生成した楽音データに対して、当該区間の次の区間の全域に亘って、ＤＭＡ回路１１によって再生処理が実行される。（例えば、時刻Ｔ２からＴ３までの区間内に生成した楽音データに対して、時刻Ｔ３からＴ４までの区間の全域に亘って再生処理が実行される。）
【００１９】
したがって、１区間の長さは、Ｄ／Ａ変換器１２のサンプリング周期とＤＭＡ回路１１が１単位とするサンプル数との積であり、前述の例では１２８÷４８０００≒０．００２７秒となる。そして、ＤＭＡ回路１１による再生処理は、楽音を切れ目なく発音させるために途切れることなく連続して実行する必要があるので、ＣＰＵ３は、ＤＭＡ回路１１が各区間で再生処理を実行する１単位分の楽音データを、必ずその直前の区間内に生成し終えておく必要がある。
【００２０】
しかし、ソフトウェア音源においては、楽音生成処理を実行させるべきＣＰＵの演算能力は様々であり、したがって、すべてのＣＰＵに同一内容の楽音生成処理を実行させたのでは、十分な発音チャンネル数の楽音を１区間内に生成することができなかったり、楽音の生成に要する時間が１区間の長さを越えてしまったりすることがあるという特徴を有している。このコンピュータミュージックシステムは、こうしたソフトウェア音源の特徴に鑑み、それぞれのＣＰＵの演算能力にとって最も適切な内容の楽音生成処理を実行させることができるようにしたものである。次に、このコンピュータミュージックシステムの動作例を、図３以下を参照して説明することにする。
【００２１】
図４は、ＣＰＵ３の実行するメインルーチンを示すフローチャートである。最初に、楽音生成処理を実行させるべきＣＰＵ（ここではＣＰＵ３）の性能として、動作クロックとタイプとを検出する（ステップＳ１）。
動作クロックを検出するには、実際に動作クロックをカウントするようにすればよい。
タイプを検出するには、一例として、既存のテストプログラムを実行するようにすればよい。具体的には、米国インテル社製の各ＣＰＵのタイプを検出するためのものとして、割込み命令等によって格納されるフラグの設定の相違を利用することにより、３２ビットのＣＰＵを、「８０８６」や「８０２８６」（いずれも米国インテル社の商標）のような１６ビットのＣＰＵから識別するようにしたテストプログラムが知られており、また、ＥＦＬＡＧレジスタの値の相違を利用することにより、３２ビットのＣＰＵのうちの「８０４８６」や「Ｐｅｎｔｉｕｍ」（いずれも米国インテル社の商標）を「８０３８６」（米国インテル社の商標）から識別するようにしたテストプログラムが知られている。また、上記「Ｐｅｎｔｉｕｍ」は浮動小数点演算用の数値演算プロッセッサを内蔵しているが、「８０４８６」（米国インテル社の商標）はそうした数値演算プロッセッサを内蔵していないので、ＦＮＩＮＩＴ命令を使ってステータス・レジスタと制御ワードレジスタに書込みを行ない、そこから正しい値を読み戻せるか否かに基づいてこの両者を識別するようにしたテストプログラムが知られている。
【００２２】
しかし、こうしたテストプログラムを実行するかわりに、ＣＰＵがアクセス可能な特定の記憶領域に、当該ＣＰＵの動作クロックとタイプとを示すデータを予め書き込んでおき、ステップＳ１において、そのデータを読み出すようにしてもよい。
【００２３】
動作クロックとタイプとを検出し終えると、動作クロックを示すデータ，タイプを示すデータをそれぞれレジスタＯＣ，ＰＴに格納するとともに、それらのデータの組み合わせに応じて、楽音生成処理の内容を制御する制御データの選択可能範囲を限定する限定データを設定し、該限定データをレジスタＰＳＥＬに格納する（ステップＳ２）。
この限定データは、概括的には、動作クロックやタイプによって決定づけられるＣＰＵ３の演算能力が一定以上である場合には、予定された選択可能範囲内で全ての制御データを選択することを許容するように設定され、ＣＰＵ３の演算能力が一定未満である場合には、上記選択可能範囲のうちグレードの低い一部の制御データしか選択できないような限定を行なうように設定される。限定データの具体的内容については、制御データの内容と併せて、ステップＳ４において説明することにする。
【００２４】
ステップＳ２を終えると、所定の初期設定（ステップＳ３）の後、ディスプレイ９に、図３に示すようなパネルを表示する（ステップＳ４）。
同図において、パネル上部の画面選択スイッチは、楽音生成処理の内容を制御する制御データとしての複数種類のパラメータ群（例えば、原波形データを読み出す際のサンプリング周波数を制御するためのパラメータ群、読み出した原波形データのサンプル間補間を行なう処理を制御するためのパラメータ群、生成した波形データにリバーブやコーラスのようなエフェクトを付加する処理を制御するためのパラメータ群等）のうちの所望の１種類のパラメータ群を選択するためのアイコンであり、この画面選択スイッチによって選択された１種類のパラメータ群が、パネル中央のパラメータ表示部に表示される。
パネル下部に「ＣＵＲＳＯＲ」と表示されたカーソルスイッチは、パラメータ表示部に表示された１種類のパラメータ群の中の任意の１つのパラメータ（例えば、補間処理を制御するための、「補間なし」，「２点補間」，「４点補間」の３通りのパラメータから成るパラメータ群のうちの任意の１つのパラメータ）にカーソルを移動させることによってそのパラメータを選択するためのアイコンである。カーソルスイッチの右側に「ＶＡＬＵＥ」と表示されたバリュースイッチは、パラメータ表示部に表示された数値を増減させることによって各種データの値を設定するためのアイコンである。
【００２５】
ユーザーは、マウス７を用いてこれらのスイッチを任意に操作することによって、各種の制御データを選択的に入力することができる。但し、これらのスイッチで選択可能な範囲は、レジスタＰＳＥＬ内の限定データによって限定されている。例えば、波形データの読出しサンプリング周波数を制御するパラメータ群に、「１２ｋＨｚ」，「２４ｋＨｚ」，「４８ｋＨｚ」の３通りのパラメータが予め含まれているとすれば、画面選択スイッチでそのパラメータ群をパラメータ表示部に表示させた場合、ＣＰＵ３の動作クロックの速さが一定以上であれば、３通りのパラメータが全て表示される（すなわちいずれも選択可能である）が、ＣＰＵ３の動作クロックの速さが一定未満であれば、「１２ｋＨｚ」，「２４ｋＨｚ」の２通りのパラメータしか表示されないか、または３通りのパラメータが表示されるが「４８ｋＨｚ」は選択できないように限定されており、ＣＰＵ３の動作クロックが更に遅ければ、「１２ｋＨｚ」のパラメータしか表示されないか、または３通りのパラメータが表示されるが「２４ｋＨｚ」，「４８ｋＨｚ」は選択できないように限定されている。
【００２６】
また例えば、補間処理を制御するパラメータ群を画面選択スイッチでパラメータ表示部に表示させた場合、ＣＰＵ３の動作クロックの速さが一定以上であれば、「補間なし」，「２点補間」，「４点補間」の３通りのパラメータが全て表示されるが、ＣＰＵ３の動作クロックの速さが一定未満であれば、「補間なし」，「２点補間」の２通りのパラメータしか表示されないか、または３通りのパラメータが表示されるが「４点補間」は選択できないように限定されている。（尚、ＣＰＵ３の動作クロックが遅い場合でも、補間処理は、「補間なし」しか選択できなくするのではなく、「２点補間」を選択できるようにしておくことが望ましい。）
【００２７】
また例えば、リバーブを付加するエフェクト処理を制御するパラメータ群に、「オフ」，「簡易リバーブ」（所定のアルゴリズムのうちの一部を省略した低いグレードのリバーブ），「標準リバーブ」（所定のアルゴリズムを全て実行する高いグレードのリバーブ）の３通りのパラメータが予め含まれているとすれば、画面選択スイッチでパラメータ表示部に表示させた場合、ＣＰＵ３が浮動小数点演算用の数値演算プロッセッサを内蔵していないタイプのものであれば、そのパラメータ群がまったく画面選択スイッチに表示されないか、または表示されるが「オフ」以外は選択できないように限定されている。また、ＣＰＵ３が浮動小数点演算用の数値演算プロッセッサを内蔵しているタイプのものであっても、ＣＰＵ３の動作クロックの速さが一定以上であれば、３通りのパラメータが全て表示されるが、ＣＰＵ３の動作クロックの速さが一定未満であれば、「オフ」，「簡易リバーブ」の２通りのパラメータしか表示されないか、または３通りのパラメータが表示されるが「標準リバーブ」は選択できないように限定されている。（尚、リバーブの有無は、聴感上の影響が大きいので、ＣＰＵ３の動作クロックが遅い場合でも、「オフ」しか選択できなくするのではなく、「簡易リバーブ」を選択できるようにしておくことが望ましい。）
【００２８】
ステップＳ４に続くステップＳ５では、下記の各起動要因の発生をチェックする。
起動要因１：ＲＡＭ５内の入力バッファに新たな受信データの書込みがあったこと
起動要因２：ＤＭＡ回路１１からの割込みによって楽音生成処理の実行の要求が発生したこと
起動要因３：その他の要求（ディスプレイ９上のパネルの入力イベントや、キーボード８のコマンド入力イベント（メインルーチン終了コマンドを除く）が発生したこと
起動要因４：キーボード８のメインルーチン終了コマンドの入力イベントが発生したこと
【００２９】
上記起動要因１の受信データの書込みは、ＭＩＤＩ１を介して演奏情報を受信する毎に、図５に示すような「最優先の割込み処理」を実行することによって行なわれる。この割込み処理では、演奏情報を受信すると、受信データを取り込み（ステップＳ１１）、取り込んだ受信データを、現在の時刻を示す時刻データとともにＲＡＭ４内の入力バッファに書き込む（ステップＳ１２）。時刻データを書き込む理由は、入力バッファへの受信データの書込みは、演奏情報を受信する毎に直ちに行なうが、入力バッファに書き込んだ受信データに基づく楽音生成処理は直ちに実行されるわけではない（図２に示したように、当該区間の次の区間以降に実行される）ので、いつ受信したものであるかを識別できるようにしておくことにある。図６は、入力バッファの記憶領域の一例を示す。この例では、受信データを１件毎に時刻データとともに書き込む領域である「ＩＤ１」，「ＩＤ２」，「ＩＤ３」…と、受信データの件数を書き込む領域である「イベント数」とが設けられている。
【００３０】
図４に戻り、ステップＳ５に続くステップＳ６では、上記起動要因が発生したか否かを判断する。ノーであれば、ステップＳ５に戻り、起動要因が発生するまでステップＳ５及びＳ６の処理を繰り返す。そしていずれかの起動要因が発生すると、ステップＳ６でイエスとなってステップＳ７に進む。
【００３１】
ステップＳ７では、いずれの起動要因が発生したのかを判定する。
起動要因１が発生していれば、ＭＩＤＩ処理を実行し（ステップＳ８）、チャンネルナンバー１〜１６のうちのどのＭＩＤＩチャンネルについての演奏情報を受信したのかを、ディスプレイ９上のパネル左部のＭＩＤＩ  ＭＯＮＩＴＯＲ（図３）に表示する（ステップＳ９）。そしてステップＳ５に戻り、ステップＳ５以下の処理を繰り返す。
【００３２】
ステップＳ８で実行するＭＩＤＩ処理には、例えば、ノートオン信号に基づくノートオンイベント処理や、ノートオフ信号に基づくノートオフイベント処理等が含まれる。図７は、ノートオンイベント処理の一例を示すフローチャートである。最初に、ノートナンバ，ベロシティ，当該ＭＩＤＩチャンネルを受信するパートに対応する音色を示すデータ，時刻データを読み出して、それぞれ所定のレジスタＮＮ，ＶＥＬ，ｔ，ＴＭに格納する（ステップＳ２１）。続いて、発音チャンネルの割当て処理を行ない、割り当てたチャンネルの番号をレジスタｉに格納する（ステップＳ２２）。続いて、レジスタｔ内のデータに基づき、当該パートに対応する音色の音色データをＲＡＭ４内の音色データ記憶領域から読み出し、その音色データを、レジスタＮＮ，ＶＥＬ内のデータに応じて加工する（ステップＳ２３）。図８は、ハードディスク装置１０から読み出されてＲＡＭ４の音色データ記憶領域に書き込まれた音色データの内容の一例を示す。この例では、各音色データ「ＰＤ１」，「ＰＤ２」…には、各音域の波形を指定するデータと、エンベロープを制御するデータと、タッチに応じて音量，音色，音高等を制御するデータと、その他のデータとが含まれている。続いて、加工した音色データ（ピッチを指定するデータ（周波数ナンバ）を含む）を、ノートオン信号及びレジスタＴＭ内の時刻データとともに、レジスタｉ内の番号の発音チャンネル用の音源レジスタに書き込む（ステップＳ２４）。そしてリターンする。図９は、音源レジスタの記憶領域の一例を示す。この例では、３２の発音チャンネル（１ｃｈ〜３２ｃｈ）用の音源レジスタが用意されており、各音源レジスタに、ノートナンバと、波形指定データと、エンベロープ制御データと、ノートオン信号と、時刻データと、その他データとを書き込む領域が設けられるとともに、ワークエリアが設けられている。その他のデータには、ディスプレイ９上のパネルを用いて選択されたエフェクトのアルゴリズムを示すデータ等が含まれる。
【００３３】
図４のステップＳ７に戻り、起動要因２が発生していれば、後述する「音源処理」を実行し（ステップＳ１０）、それから、ＣＰＵ３の演算能力と、生成した楽音の音量レベルとを、ディスプレイ９上のパネル右部（それぞれ「ＣＰＵ」，「ＬＥＶＥＬ」と表示）にグラフィック表示する（ステップＳ１１）。なお、ここで表示するＣＰＵの演算能力とは、該ＣＰＵの全演算能力に対する、ソフトウェア音源の楽音生成処理に費やされた演算能力の割合を示すものである。その後、ステップＳ５に戻り、ステップＳ５以下の処理を繰り返す。
【００３４】
他方、起動要因３が発生していれば、その他の処理（ディスプレイ９上のパネルの入力イベント処理や、キーボード８からのコマンド入力イベント処理等）を実行し（ステップＳ１２）、それぞれの処理に応じた表示をディスプレイ９上のパネルに行なう（ステップＳ１３）。それから、ステップＳ５に戻り、ステップＳ５以下の処理を繰り返す。
【００３５】
図１０は、その他の処理のうち、ディスプレイ９上のパネルの入力イベント処理の一例を示すフローチャートである。最初に、入力の内容を判定する（ステップＳ３１）。続いて、いずれのスイッチの入力イベントがあったのかを判定する（ステップＳ３２）。
画面選択スイッチの入力イベントがあったのであれば、当該スイッチで選択された種類のパラメータ群を、パラメータ表示部に表示する（ステップＳ３３）。そしてリターンする。他方、カーソルスイッチの入力イベントがあったのであれば、当該スイッチの操作に従い、パラメータ表示部に表示されたパラメータ群の中の１つのパラメータを選択する（ステップＳ３４）。そしてリターンする。他方、バリュースイッチの入力イベントがあったのであれば、当該スイッチの操作に従い、各種データの値を設定する（ステップＳ３５）。そしてリターンする。尚、図４のステップＳ４において説明したように、このイベント処理において、パラメータ表示部に表示されるパラメータ群や、パラメータ表示部に表示されたパラメータ群のうち選択可能なパラメータの範囲は、レジスタＰＳＥＬ内の限定データによって限定されることがある。
【００３６】
図４のステップＳ７に戻り、起動要因４が発生していれば、メインルーチンを終了させるための所定の処理を実行し（ステップＳ１４）、ディスプレイ９からパネルを消去する（ステップＳ１５）。そしてリターンする。
尚、ステップＳ７において、起動要因１乃至４のうちの２以上の起動要因が発生していると判定された場合には、起動要因１，２，３，４の優先順位で、ステップＳ７以下の処理を実行するものとする。
【００３７】
次に、「音源処理」の例を、図１１以下を参照して説明する。
図１１の例では、最初に、波形データの読出しサンプリング周波数を制御する制御データとして、「１２ｋＨｚ」，「２４ｋＨｚ」，「４８ｋＨｚ」のうちのいずれがパネルの操作によって入力されているかを判定する（ステップＳ４１）。
「１２ｋＨｚ」が入力されていれば、所定の準備処理（発音チャンネル数の決定や、波形生成処理の演算順序の決定や、ＲＡＭ５内の出力バッファの準備等）をそれに応じて実行し（ステップＳ４２）、１２ｋＨｚの読出しサンプリング周波数で波形生成処理を実行する（ステップＳ４３）。
【００３８】
波形生成処理は、一例として、以下の一連の処理から成っている。
（１）ハードディスク装置１０から読み出してＲＡＭ５内の波形データ記憶領域に書き込んだ原波形データを、読出しサンプリング周波数に従うピッチで周波数ナンバを累算した読出しアドレス信号の整数部に応じてＲＡＭ５から読み出す処理
（２）読み出した波形データを、前記アドレス信号の小数部に応じて補間する処理
（３）前記補間処理で得られた波形データの周波数特性を制御するディジタルフィルタ処理
（４）前記フィルタ処理後の波形データに音量エンベロープデータを乗算する音量制御処理
（５）上記（１）乃至（４）の処理によって生成した各発音チャンネルの楽音波形データをミキシングする処理
波形生成処理が完了すると、楽音生成した波形データをＲＡＭ５内の出力バッファに書き込んで、当該区間の次の区間で再生処理を実行する対象としてＤＭＡ回路１１に予約する（ステップＳ４４）。図１４は、出力バッファの記憶領域を示す。１２８サンプルの楽音波形データ（ＳＤ１〜ＳＤ１２８）を１サンプル分ずつ記憶する領域が設けられている。
【００３９】
他方、ステップＳ４１において、「２４ｋＨｚ」が入力されていると判定されれば、上記所定の準備処理をそれに応じて実行し（ステップＳ４５）、２４ｋＨｚの読出しサンプリング周波数で波形生成処理を実行し（ステップＳ４６）、再生予約処理を実行する（ステップＳ４７）。
他方、ステップＳ４１において、「４８ｋＨｚ」が入力されていると判定されれば、上記所定の準備処理をそれに応じて実行し（ステップＳ４８）、４８ｋＨｚの読出しサンプリング周波数で波形生成処理を実行し（ステップＳ４９）、再生予約処理を実行する（ステップＳ５０）。
【００４０】
図１２の例では、最初に、補間処理を制御する制御データとして、「補間なし」，「２点補間」，「４点補間」のうちのいずれがパネルの操作によって入力されているかを判定する（ステップＳ５１）。
「補間なし」が入力されていれば、上記所定の準備処理をそれに応じて実行する。（ステップＳ５２）ここでは、準備処理の一部として、波形生成処理の演算順序の決定において、補間処理を省略するような決定を行なう。続いて、このように補間処理を省略した波形生成処理を実行し（ステップＳ５３）、再生予約処理を実行する（ステップＳ５４）。
他方、「２点補間」が入力されていれば、上記所定の準備処理をそれに応じて実行する（ステップＳ５５）。ここでは、準備処理の一部として、波形生成処理の演算順序の決定において、２点補間の補間処理を行なうような決定を行なう。続いて、このように２点補間の補間処理を含んだ波形生成処理を実行し（ステップＳ５６）、再生予約処理を実行する（ステップＳ５７）。
他方、「４点補間」が入力されていれば、上記所定の準備処理をそれに応じて実行する（ステップＳ５８）。ここでは、準備処理の一部として、波形生成処理の演算順序の決定において、４点補間の補間処理を行なうような決定を行なう。続いて、このように４点補間の補間処理を含んだ波形生成処理を実行し（ステップＳ５９）、再生予約処理を実行する（ステップＳ６０）。
【００４１】
このように、図１１及び１２の例では、レジスタＰＳＥＬ内の限定データによって限定された範囲内で、パネルを用いて入力された制御データによって制御された内容の楽音生成処理が実行される。そして、動作クロックが遅い場合には、読出しサンプリング周波数が低い周波数に限定されることにより、動作クロックの遅いＣＰＵを用いた場合でも、十分な同時発音数を確保することができるようになる。尚、これらの例では、便宜上、それぞれ１種類の制御データのみを判定しているが、実際には、パネルを用いて入力された複数種類の制御データを判定し、それらに従う内容の波形生成処理を実行するようにしてよいことはもちろんである。
【００４２】
次に、図１３の例では、最初に、レジスタＰＴに格納したタイプを示すデータに基づき、ＣＰＵ３が浮動小数点演算用の数値演算プロッセッサを内蔵したタイプのものであるか否かを判断する（ステップＳ６１）。ノーであれば、上記所定の準備処理をそれに応じて実行する（ステップＳ６２）。ここでは、準備処理の一部として、整数演算命令で構成されたプログラムを実行する準備を行なう。そして、この整数演算命令で構成された波形生成処理プログラムを実行することにより波形を生成し（ステップＳ６３）、再生予約処理（ステップＳ６４）を実行する。そしてリターンする。
【００４３】
他方、ステップＳ６１でイエスと判断されれば、レジスタＯＣに格納した動作クロックを示すデータに基づき、ＣＰＵ３の動作クロックの速さが一定以上であるか否かを判断する（ステップＳ６５）。動作クロックの速さが一定未満であれば、上記所定の準備処理をそれに応じて実行する（ステップＳ６６）。ここでは、準備処理の一部として、浮動小数点演算命令で構成されたプログラムを実行する準備を行ない、且つ、波形生成処理の演算順序の決定において、ディジタルフィルタ処理を省略するような決定を行なう。続いて、この浮動小数点演算命令で構成された波形生成処理プログラムを、ディジタルフィルタ処理を省略して実行することにより、波形を生成する（ステップＳ６７）。そしてステップＳ７０に進む。他方、ステップＳ６５で動作クロックの速さが一定以上であると判断されれば、上記所定の準備処理をそれに応じて実行する（ステップＳ６８）。ここでは、準備処理の一部として、浮動小数点演算命令で構成されたプログラムを実行する準備を行なうが、ディジタルフィルタ処理を省略する決定は行なわない。続いて、この浮動小数点演算命令で構成された波形生成処理プログラムを実行することによって波形を生成する（ステップＳ６９）。そしてステップＳ７０に進む。
【００４４】
ステップＳ７０では、リバーブを制御する制御データとして、「オフ」，「簡易リバーブ」，「標準リバーブ」のうちのいずれがパネルの操作によって入力されているかを判定する。「オフ」が入力されていれば、そのまま再生予約処理を実行する（ステップＳ７３）。他方、「簡易リバーブ」が入力されていれば、浮動小数点演算命令で構成されたエフェクトプログラムをアルゴリズムを一部省略して実行することによって低いグレードの簡易リバーブを波形に付加し（ステップＳ７１）、その後再生予約処理（ステップＳ７３）を実行する。他方、「標準リバーブ」が入力されていれば、浮動小数点演算命令で構成されたエフェクトプログラムをアルゴリズムを省略することなく実行することによって高いグレードの標準リバーブを波形に付加し（ステップＳ７２）、その後再生予約処理（ステップＳ７３）を実行する。そしてリターンする。
【００４５】
このように、図１３の例では、レジスタＰＴ及びＯＣ内の数値演算プロッセッサの内蔵の有無を示すデータ及び動作クロックを示すデータと、レジスタＰＳＥＬ内の限定データにより限定された範囲内で入力された制御データとの双方の組み合わせによって制御された内容の楽音生成処理が実行される。そして、楽音生成処理プログラムを構成する命令として、ＣＰＵのタイプに応じて異なる種類の命令を用いるような制御を行なうことにより、それぞれのＣＰＵの高速動作のために最適な種類の命令を用いて高速に処理を実行させることができる。
なお、浮動小数点演算用の数値演算プロセッサを内蔵しないＣＰＵで、リバーブ処理が選択不能になっている理由は、リバーブ処理では浮動小数点の乗算処理を高速に行うことが必要であるからである。
【００４６】
以上のように、このソフトウェア音源では、楽音生成処理に使用しようとするＣＰＵの演算能力に応じて制御した内容の楽音生成処理をそのＣＰＵに実行させることができる。したがって、それぞれのＣＰＵの演算能力にとって最適な内容で楽音生成処理を実行させて、常に可能な範囲で最大限に質の高い楽音を生成することができるようになる。
なお、上述した実施の形態において、図２に示したタイミング関係は、本発明の特徴を損なわない限り、任意に変更してもよい。また、時刻Ｔ１，Ｔ２，…等の区間の区切り方も任意であってよく、更に、起動要因２の発生タイミングがそれらの時刻に一致する必要もない。
【００４７】
また、上述した実施の形態では、ＣＰＵの演算能力を決定づける要因である性能として、動作クロックやタイプ（数値演算プロッセッサの内蔵の有無等）を検出しているが、これらに加え、またはこれらに変えて、命令キャッシュメモリの内蔵の有無や、データキャッシュメモリの内蔵の有無等を検出するようにしてもよい。
また、上述した実施の形態では、ＣＰＵの性能を検出し、その検出結果に応じて楽音生成処理の内容を制御している。しかし、このようにＣＰＵの性能を検出するかわりに、浮動小数点演算の演算能力をテストするためのベンチマークテストプログラムや整数演算の演算能力をテストするためのベンチマークテストプログラムをＣＰＵに実行させることにより、ＣＰＵの演算能力を実際に確認し、その確認結果に応じて楽音生成処理の内容を制御するようにしてもよい。
【００４８】
また、上述した実施の形態では、楽音生成処理の内容として、原波形データの読出しサンプリング周波数や、補間処理や、ディジタルフィルタ処理や、リバーブを制御しているが、その他の処理を制御するようにしてもよい。
また、上述した実施の形態では、読出しサンプリング周波数や補間処理については、レジスタＰＳＥＬ内の限定データにより限定された範囲内でパネルを用いて入力した制御データによって選択的に制御を行ない、ディジタルフィルタ処理については、レジスタＯＣ内の動作クロックを示すデータに基づいて一義的に制御を行ない、リバーブについては、レジスタＰＴ内のタイプを示すデータとパネルを用いて入力した制御データとの双方によって制御を行なっている。しかし、読出しサンプリング周波数や補間処理についても、レジスタＰＴまたはＯＣ内のデータに基づいて一義的に制御を行なったり、レジスタＰＴまたはＯＣ内のデータとパネルを用いて入力した制御データとの双方によって制御を行なったりしてよく、ディジタルフィルタ処理についても、パネルを用いて入力した制御データによって選択的に制御を行なったり、レジスタＰＴまたはＯＣ内のデータとパネルを用いて入力した制御データとの双方によって制御を行なったりしてよく、リバーブについても、レジスタＰＴまたはＯＣ内のデータのみに基づいて一義的に制御を行なったり、パネルを用いて入力した制御データのみによって選択的に制御を行なったりしてよい。
また、共通のＣＰＵを用いて上述のような楽音生成処理プログラムと同時にその他のアプリケーションソフトウェアプログラム（例えばカラオケソフト、ゲームソフト、自動演奏のシーケンサソフトなど）を動作させるようにしてもよく、その場合は、同時に動作される該アプリケーションプログラムのＣＰＵ負荷量も考慮に入れて、上記制御データを設定するようにするとよい。
【００４９】
また、上述した実施の形態では、メインルーチンをスタートすると直ちにＣＰＵの性能を検出しているが、適宜のタイミング（例えば、キーボード８から性能の検出コマンドの入力があったとき）に性能の検出を行なうようにしてもよい。また、上述した実施の形態では、パーソナルコンピュータを用いたソフトウェア音源にこの発明を適用しているが、パーソナルコンピュータ以外の汎用コンピュータを用いたソフトウェア音源や、電子楽器に搭載したＣＰＵに楽音生成処理を実行させるソフトウェア音源にこの発明を適用してもよい。
【００５０】
また、上述した実施の形態では、ソフトウェア音源にこの発明を適用しているが、本発明の実施はこれに限らない。同一内容の楽音発生処理プログラムが演算能力の異なる演算処理手段によって実行される可能性は、プログラムを変更可能なＤＳＰ（ディジタルシグナルプロセッサ）を搭載した複数の機種の楽音発生装置の間で、該ＤＳＰに実行させる楽音発生処理プログラムを共通化するような場合にも存在する。したがって、こうしたＤＳＰを搭載した楽音発生装置においてこの発明を適用するようにしてもよい。
【００５１】
最後に、本明細書において示されている発明及びその実施態様の幾つかを以下に列挙する。
（１）  楽音生成処理に使用しようとする演算処理手段の性能を検出する検出手段と、
前記検出手段の検出結果に応じて、前記演算処理手段に実行させるべき楽音生成処理の内容を制御する制御手段と
を具え、前記制御手段によって制御された内容の楽音生成処理を前記演算処理手段に実行させるようにした楽音発生装置。
（２）  前記制御手段は、前記検出手段によって検出された性能が一定程度に満たない場合には、楽音生成処理を低いグレードに設定する制御と、楽音生成処理の中の一部の処理を省略する制御との少なくとも一方を行なうものである前記（１）項に記載の楽音発生装置。
（３）  前記制御手段は、前記検出手段の検出結果に応じて、楽音生成処理プログラムを構成する命令として異なる種類の命令を用いるような制御を行なうものである前記（１）項に記載の楽音発生装置。
（４）  楽音生成処理に使用しようとする演算処理手段の性能を検出する検出手段と、
前記演算処理手段に実行させるべき楽音生成処理の内容を制御する制御データを入力するための操作子手段と、
前記検出手段の検出結果に応じて、前記操作子手段で入力可能な制御データの範囲を限定する限定手段と
を具え、前記操作子手段で入力された制御データに従う内容の楽音生成処理を前記演算処理手段に実行させるようにした楽音発生装置。
（５）  楽音生成処理を記述したプログラムに従って楽音生成を実行するための汎用の演算処理手段と、
前記演算処理手段の性能を検出する検出手段と、
前記検出手段の検出結果に応じて、前記演算処理手段が前記プログラムに従って実際に実行する楽音生成処理の内容を制御する制御手段と
を具えた楽音発生装置。
（６）  前記検出手段は、前記演算処理手段の動作クロックを検出するものである前記（１）乃至（５）項のいずれかに記載の楽音発生装置。
（７）  前記検出手段は、前記演算処理手段のタイプを検出するものである前記（１）乃至（５）項のいずれかに記載の楽音発生装置。
（８）  前記検出手段は、既存のテストプログラムを前記演算処理手段が実行することから成るものである前記（１）乃至（５）項及び（７）項のいずれかに記載の楽音発生装置。
（９）  前記検出手段は、所定の記憶領域に予め書き込まれた性能を示すデータを前記演算処理手段が読み出すことから成るものである前記（１）乃至（７）項のいずれかに記載の楽音発生装置。
（１０）  前記検出手段は、前記演算処理手段が、所定の種類の演算命令を高速に実行するための数値演算プロッセッサを内蔵したタイプのものであるか否かを検出するものである前記（７）乃至（９）項のいずれかに記載の楽音発生装置。
【００５２】
（１１）  前記制御手段は、波形データを読み出す際のサンプリング周波数を制御するものである前記（１）乃至（３）項，（５）項，及び（６）乃至（１０）項のいずれかに記載の楽音発生装置。
（１２）  前記制御手段は、補間処理を制御するものである前記（１）乃至（３）項，（５）項，及び（６）乃至（１１）項のいずれかに記載の楽音発生装置。
（１３）  前記制御手段は、ディジタルフィルタ処理を制御するものである前記（１）乃至（３）項，（５）項，及び（６）乃至（１１）項のいずれかに記載の楽音発生装置。
（１４）  前記制御手段は、エフェクト処理を制御するものである前記（１）乃至（３）項，（５）項，及び（６）乃至（１３）項のいずれかに記載の楽音発生装置。
（１５）  前記制御手段は、リバーブの実行の有無とそのグレードとを制御するものである前記（１４）項に記載の楽音発生装置。
（１６）  前記制御手段は、前記演算処理手段の動作クロックに基づいて制御を行なうものである前記（１２）乃至（１５）項のいずれかに記載の楽音発生装置。
（１７）  前記制御手段は、前記演算処理手段が浮動小数点演算用の数値演算プロッセッサを内蔵したタイプのものであるか否かに基づいて制御を行なうものである前記（１）乃至（３）項，（５）項，及び（６）乃至（１６）項のいずれかに記載の楽音発生装置。
【００５３】
（１８）  前記限定手段は、検出された性能が一定程度以上である場合には、予定された選択可能範囲内で全ての制御データを選択することを許容し、該性能が一定程度未満である場合には、前記選択可能範囲のうちグレードの低い一部の制御データしか選択できないような限定を行なうものである前記（４）項及び（６）乃至（１０）項のいずれかに記載の楽音発生装置。
（１９）  前記限定手段は、波形データを読み出す際のサンプリング周波数を制御する制御データの選択可能範囲を限定するものである前記（４）項及び（６）乃至（１０）項及び（１８）項のいずれかに記載の楽音発生装置。
（２０）  前記限定手段は、補間処理を制御する制御データの選択可能範囲を限定するものである前記（４）項，（６）乃至（１０）項，（１８）項及び（１９）項のいずれかに記載の楽音発生装置。
（２１）  前記限定手段は、エフェクト処理を制御する制御データの選択可能範囲を限定するものである前記（４）項及び（６）乃至（１０）項及び（１８）乃至（２０）項のいずれかに記載の楽音発生装置。
（２２）  前記限定手段は、リバーブの実行の有無とそのグレードとを制御する制御データの選択可能範囲を限定するものである前記（２１）項に記載の楽音発生装置。
（２３）  汎用の演算処理手段の性能を検出するための処理を、該演算処理手段に実行させる第１のステップと、
前記演算処理手段に実行させようとする楽音生成処理の内容を前記第１のステップの検出結果に応じて制御する処理を、該演算処理手段に実行させる第２のステップと、
前記第２のステップで制御された内容の楽音生成処理を、前記演算処理手段に実行させる第３のステップと
から成る楽音発生方法。
【００５４】
【発明の効果】
以上のように、この発明によれば、ソフトウェア音源方式の楽音生成装置や、プログラムを変更可能なＤＳＰを搭載した楽音生成装置のように、楽音生成処理が常に同一の演算能力を有する演算処理手段によって実行されるとは限らない楽音生成装置であっても、楽音生成処理に使用する演算処理手段の性能に応じて制御した内容の楽音生成処理をその演算処理手段に実行させることができる。
したがって、例えば、演算能力の低い演算処理手段を使用した場合でも十分な同時発音数を確保したり、あるいは、楽音生成処理プログラムを構成する命令として、それぞれの演算処理手段の高速動作のために最適な種類の命令を用いて高速に処理を実行させたりすることができる。
このように、それぞれの演算処理手段の演算能力にとって最適な内容で楽音生成処理を実行させて、常に可能な範囲で最大限に質の高い楽音を生成することができるようになる。
【図面の簡単な説明】
【図１】この発明を採用したコンピュータミュージックシステムの全体構成ブロック図
【図２】ソフトウェア音源の基本原理を示した図
【図３】ディスプレイに表示されるパネルを示す図
【図４】ＣＰＵの実行するメインルーチンを示すフローチャート
【図５】ＣＰＵの実行する割込み処理を示すフローチャート
【図６】入力バッファの記憶領域の一例を示す図
【図７】ＣＰＵの実行するノートオンイベント処理を示すフローチャート
【図８】音色データの内容の一例を示す図
【図９】音源レジスタの記憶領域の一例を示す図
【図１０】ＣＰＵの実行するパネル入力イベント音源処理を示すフローチャート
【図１１】ＣＰＵの実行する音源処理を示すフローチャート
【図１２】ＣＰＵの実行する音源処理の別の例を示すフローチャート
【図１３】ＣＰＵの実行する音源処理の別の例を示すフローチャート
【図１４】出力バッファの記憶領域の一例を示す図
【符号の説明】
１  ＭＩＤＩ
２  タイマ
３  ＣＰＵ
４  ＲＯＭ
５  ＲＡＭ
６  データ及びアドレスバス
７  マウス
８  キーボード
９  ディスプレイ
１０  ハードディスク装置
１１  ＤＭＡ回路
１２  Ｄ／Ａ変換器
１３  サウンドシステム
【図１】
0003627557.tif 000002
【図２】
0003627557.tif 000003
【図３】
0003627557.tif 000004
【図４】
0003627557.tif 000005
【図５】
0003627557.tif 000006
【図６】
0003627557.tif 000007
【図７】
0003627557.tif 000008
【図８】
0003627557.tif 000009
【図９】
0003627557.tif 000010
【図１０】
0003627557.tif 000011
【図１１】
0003627557.tif 000012
【図１２】
0003627557.tif 000013
【図１３】
0003627557.tif 000014
【図１４】
0003627557.tif 000015