(57)【要約】【課題】  複数のポートの各々に用途が設定されている場合に、あるポートに対して新しい発音の要求があったときに、そのポートのチャンネルだけでは不足する場合でも、他のポートが犠牲になる確率を低くしながら、新しい発音の要求に応えるようにする。【解決手段】  ＣＰＵ１は、複数のポートの各々に対して楽音発生の用途を設定し、設定した用途に対して優先順位を設定し、さらに、各ポートに対して複数種類の音源の中から任意の音源を割り当てて発音するチャンネルの最大数を設定し、任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てる。【選択図】  図１
2006276086.tif 000002
【特許請求の範囲】
【請求項１】
複数のポートの各々に対して楽音発生の用途を設定する用途設定手段と、
前記用途設定手段によって設定された用途に対して優先順位を設定する順位設定手段と、
各ポートに対して複数種類の音源の中から任意の音源を割り当てて発音するチャンネルの最大数を設定するチャンネル設定手段と、
任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、前記順位設定手段によって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てるチャンネル調整手段と、
を備えた楽音発生装置。
【請求項２】
前記チャンネル調整手段は、前記任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルと前記順位設定手段によって同じ優先順位の用途が設定されている他のポートにおいて発音中でないチャンネルを合算して不足するチャンネルに割り当てることを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
前記チャンネル調整手段は、前記任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てることを特徴とする請求項１に記載の楽音発生装置。
【請求項４】
前記チャンネル調整手段は、前記順位設定手段によって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、前記順位設定手段によって当該同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てることを特徴とする請求項１又は２に記載の楽音発生装置。
【請求項５】
コンピュータに、
複数のポートの各々に対して楽音発生の用途を設定するステップＡと、
前記ステップＡによって設定された用途に対して優先順位を設定するステップＢと、
各ポートに対して複数種類の音源の中から任意の音源を割り当てて発音するチャンネルの最大数を設定するステップＣと、
任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てるステップＤと、
を実行させる楽音発生処理のプログラム。
【請求項６】
前記ステップＤは、前記任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルと前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおいて発音中でないチャンネルを合算して不足するチャンネルに割り当てることを特徴とする請求項５に記載の楽音発生処理のプログラム。
【請求項７】
前記ステップＤは、前記任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てることを特徴とする請求項５に記載の楽音発生のプログラム。
【請求項８】
前記ステップＤは、前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、前記ステップＢによって当該同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てることを特徴とする請求項５又は６に記載の楽音発生のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音発生装置および楽音発生処理のプログラムに関し、特に、複数のポートの各々に対して楽音発生の用途が設定される楽音発生装置および楽音発生処理のプログラムに関するものである。
【背景技術】
【０００２】
電子楽器などの楽音発生装置においては、１つのポートに複数のチャンネルを割り当てて、チャンネルごとに楽音の音色を設定して同時に発音させるような構成になっている。例えば、ＭＩＤＩの１．０規格によれば、１つのポートに対して最大１６チャンネルに対してジェネレータ（音源）の割り当てが設定可能であり、同時に１６種類の音色で楽音を発生できる。さらに、近年においては、３２種類ないし６４種類の音色のジェネレータを複数のポートで共有して、各ポートの複数のチャンネルにジェネレータを割り当てることが行われている。例えば、曲の複数のパートであるメロディパート、リズムパート、コードパート、ベースパートを、楽音発生の用途として各ポートに設定して、多種類の音色（ポリフォニック）で豊かな音楽性の発音が可能になっている。一方、鍵盤装置やその他の外部ＭＩＤＩ機器から入力される楽音データに対して、任意の用途であるパートのジェネレータを割り当てるチャンネル数が不足する場合がある。このような場合に、他のパートのチャンネルを一時的に使用することが行われている。
ただし、音楽的に重要なパート、例えばメロディパートについては、他のパートのチャンネルが不足した場合でも、メロディパートのチャンネルを一時的に不足したチャンネルとして使用しないように、ポートごとに優先順位を設定するように構成されている。すなわち、優先順位の高いパートに対して新たに発音が要求された場合に、そのパートに空きチャンネルがない場合には、優先順位の低いパートで発音中のチャンネルのジェネレータを消音して空きチャンネルとし、その空きチャンネルを優先順位の高いパートに対する新たに発音に割り当てる。
さらに近年においては、携帯電話機のような移動通信端末の内部に楽音発生装置を設けて、着信音のメロディ（着メロ）、ゲームの擬似音、ネットワークからダウンロードした曲の再生音などを発音させることが行われている。携帯電話機は年々進化しているので、近い将来においては、電子楽器と同じ程度の音楽的な性能が要求されるようになることが予想される。
【０００３】
ある特許文献の電子楽器の提案においては、発音タイミングが到来したときに空いている発音チャンネルがあるか否かを判定し、空きチャンネルがない場合に、消音優先順位の最も高いパートから順に、そのパートで発音中のチャンネルが存在するか否かを判定する。発音中のチャンネルが検出されたパートにおいて、所定の条件に従って１つの発音中チャンネルを選択して、そのチャンネルの発音を停止させ、開放したチャンネルを新たなキーオン情報に割り当てる。さらに、実施例の変形例として、ユーザの操作、自動演奏データの中のコマンド、ＭＩＤＩのエクスクルーシブ・メッセージ等により、消音優先順位を変更可能にすることが記述されている。このように構成することにより、発音チャンネル数が不足する状態が発生しても、必要な音が消去されない。（特許文献１参照）
【０００４】
また、ある特許文献の電子楽器のアサイナの発明においては、複数のパートの１つを演奏するための演奏データが新たに入力されたときに、その新たな演奏データを割り当てる楽音発音チャンネルを選定する際に、その新たな演奏データを割り当てる楽音発生チャンネルが不足する場合には、記憶手段に記憶されたパートの優先順位に基づいて、優先順位が低いパートが割り当てられている楽音発音チャンネルの方から順に選定する。このように構成することにより、各パートが使用する楽音発生チャンネルの数が各パートごとに固定配分されていないので、新たに入力されるパートは必要な数の楽音発生チャンネルを獲得でき、よって演奏音が制限されず、演奏表現を豊かにすることができる。（特許文献２参照）
【特許文献１】特開平８−２０２３６１号公報
【特許文献２】特許第２５６２２６０号公報（特開平５−２１０３８６号公報）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献１および特許文献２においては、あるパートに対して新たに発音すべき要求があったときに、発音するチャンネルが不足した場合には、優先順位が低く設定されているパートが常に犠牲になってしまう。しかしながら、複数のポートの各々に設定されている用途に対して、優先順位が付けられない場合もある。例えば、近年の携帯電話機においては、ポリフォニックな楽音を用いてゲームを行う機能になっているが、ゲーム中に着信があったときに、ゲームを中断することなく着信を受けたい場合もある。ところが、着信の用途に設定されているポートの優先順位が低い場合には着信を認知できず、逆にゲームの用途に設定されているポートの優先順位が低い場合にはゲームが中断されてしまう。
なお、特許文献１においては、１つの優先順位に複数のパートあるいはＭＩＤＩチャンネルが割り当てられていてもよいと記載され、同じ優先順位内においては最も発音数の多いパートの中から消音チャンネルを選択してもよいし、各パートのチャンネルを順番に選択するようにしてもよいと記載されている。しかしながら、この構成は、１つの優先順位に１つのパートあるいはＭＩＤＩチャンネルが割り当てられている構成と実質的に同じであり、１つの優先順位に複数のパートあるいはＭＩＤＩチャンネルを割り当てても、優先順位が低く設定されているパートが常に犠牲になってしまう状態は同じである。
本発明は、このような従来の課題を解決するためのものであり、複数のポートの各々に用途が設定されている場合に、あるポートに対して新しい発音の要求があったときに、そのポートのチャンネルだけでは不足する場合でも、他のポートが犠牲になる確率を低くしながら、新しい発音の要求に応えるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に記載の楽音発生装置は、複数のポート（実施形態においては、ポート[０]〜ポート[ＭＡＸ＿ＰＯＲＴ−１]に相当する）の各々に対して楽音発生の用途を設定する用途設定手段（実施形態においては、図１のＣＰＵ１に相当する）と、用途設定手段によって設定された用途に対して優先順位（実施形態においては、ｐｒｉｏｒｉｔｙ[  ]に相当する）を設定する順位設定手段（実施形態においては、図１のＣＰＵ１に相当する）と、各ポートに対して複数種類の音源の中から任意の音源（実施形態においては、ジェネレータに相当する）を割り当てて発音するチャンネルの最大数（実施形態においては、ｍａｘ＿ｐｏｌｙ[  ]に相当する）を設定するチャンネル設定手段（実施形態においては、図１のＣＰＵ１に相当する）と、任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、順位設定手段によって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てるチャンネル調整手段（実施形態においては、図１のＣＰＵ１に相当する）と、を備えた構成になっている。
【０００７】
請求項１の楽音発生装置において、請求項２に記載したように、チャンネル調整手段は、任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルと順位設定手段によって同じ優先順位の用途が設定されている他のポートにおいて発音中でないチャンネルを合算して不足するチャンネルに割り当てるような構成にしてもよい。
【０００８】
請求項１の楽音発生装置において、請求項３に記載したように、チャンネル調整手段は、任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てるような構成にしてもよい。
【０００９】
請求項１又は２の楽音発生装置において、請求項４に記載したように、チャンネル調整手段は、順位設定手段によって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、順位設定手段によって当該同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てるような構成にしてもよい。
【００１０】
請求項５に記載の楽音発生処理のプログラムは、コンピュータに、複数のポート（実施形態においては、ポート[０]〜ポート[ＭＡＸ＿ＰＯＲＴ−１]に相当する）の各々に対して楽音発生の用途を設定するステップＡと、ステップＡによって設定された用途に対して優先順位（実施形態においては、ｐｒｉｏｒｉｔｙ[  ]に相当する）を設定するステップＢと、各ポートに対して複数種類の音源（実施形態においては、ジェネレータに相当する）の中から任意の音源を割り当てて発音するチャンネルの最大数（実施形態においては、ｍａｘ＿ｐｏｌｙ[  ]に相当する）を設定するステップＣと、任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てるステップＤと、を実行させる。
ステップＡないしステップＤは、実施形態においては、図１のＣＰＵ１の処理に相当する。
【００１１】
請求項５の楽音発生処理のプログラムにおいて、請求項６に記載したように、ステップＤは、任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルとステップＢによって同じ優先順位の用途が設定されている他のポートにおいて発音中でないチャンネルを合算して不足するチャンネルに割り当てるような構成にしてもよい。
【００１２】
請求項５の楽音発生処理のプログラムにおいて、請求項７に記載したように、ステップＤは、任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てるような構成にしてもよい。
【００１３】
請求項５又は６の楽音発生処理のプログラムにおいて、請求項８に記載したように、ステップＤは、ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、ステップＢによって当該同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てるような構成にしてもよい。
【発明の効果】
【００１４】
本発明の楽音発生装置および楽音発生処理のプログラムによれば、複数のポートの各々に用途が設定されている場合に、あるポートに対して新しい発音の要求があったときに、そのポートのチャンネルだけでは不足する場合でも、他のポートが犠牲になる確率を低くしながら、新しい発音の要求に応えることができるという効果が得られる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明による楽音発生装置の実施形態について図を参照して説明する。
図１は、実施形態における楽音発生楽器の構成を示すブロック図である。ＣＰＵ１は、システムバスを介して、ＲＯＭ２、ＲＡＭ３、スイッチ部（Switch）４、表示部（Display）５、音源６に接続され、これら各部との間でコマンドおよびデータの授受を行って、この楽音発生を制御する。例えば、音源６は、ＣＰＵ１の発音指示に応じて、波形ＲＯＭ７から波形データを読み出して楽音信号を生成し、Ｄ／Ａ変換器（ＤＡＣ）８によってアナログのオーディオ出力信号に変換して、サウンドシステム（図示せず）に送出するとともに、ＣＰＵ１から消音指示があると消音処理を行う。
【００１６】
ＣＰＵ１は、ＭＡＸ＿ＧＥＮ個のジェネレータを有し、ＭＩＤＩインタフェース（Ｉ／Ｆ）９を介して、ＭＡＸ＿ＰＯＲＴ個の複数のＭＩＤＩ  ＩＮポートによって、鍵盤装置などの外部のＭＩＤＩ機器から発音を要求するＭＩＤＩデータを受信する。また、各ポートに対して楽音発生の用途および使用できるジェネレータの最大数、すなわち使用できるチャンネルの最大数が設定されている。
ＭＡＸ＿ＰＯＲＴ個のポートにおける最大同時発音数の変数配列をｍａｘ＿ｐｏｌｙ［  ］とすると、０からＭＡＸ＿ＰＯＲＴ−１までの各ポートの変数配列は、ｍａｘ＿ｐｏｌｙ［０］〜ｍａｘ＿ｐｏｌｙ［ＭＡＸ＿ＰＯＲＴ−１］で表わされる。各ポートに対する用途としては、例えば、携帯電話機の場合には、発信元に応じてメロディが変化する複数種類の着信音の用途、ゲームの複数種類の擬似音の用途、音楽再生の用途、スイッチの操作音の用途などがある。
また、ＭＡＸ＿ＰＯＲＴ個のポートにおける現在発音中のチャンネル数の変数配列をｃｒｎｔ＿ｐｏｌｙ［  ］とすると、０からＭＡＸ＿ＰＯＲＴ−１までの各ポートの変数配列は、ｃｒｎｔ＿ｐｏｌｙ［０］〜ｃｒｎｔ＿ｐｏｌｙ［ＭＡＸ＿ＰＯＲＴ−１］で表わされる。
さらに、ＭＡＸ＿ＰＯＲＴ個のポートにおける優先順位の変数配列をｐｒｉｏｒｉｔｙ［  ］とすると、０からＭＡＸ＿ＰＯＲＴ−１までの各ポートの変数配列は、ｐｒｉｏｒｉｔｙ［０］〜ｐｒｉｏｒｉｔｙ［ＭＡＸ＿ＰＯＲＴ−１］で表わされる。
【００１７】
次に、図１の楽音発生装置の動作について、図２ないし図７に示すフローチャートに基づいて説明する。
図２は、ＣＰＵ１のメインルーチンのフローチャートである。まず、初期化処理を行う（ステップＳＡ１）。初期化処理においては、各ポートにおける最大同時発音数の変数配列ｍａｘ＿ｐｏｌｙ［０］〜ｍａｘ＿ｐｏｌｙ［ＭＡＸ＿ＰＯＲＴ−１］のすべてにＭＡＸ＿ＧＥＮをセットし、各ポートの現在発音中のチャンネル数の変数配列ｃｒｎｔ＿ｐｏｌｙ［０］〜ｃｒｎｔ＿ｐｏｌｙ［ＭＡＸ＿ＰＯＲＴ−１］のすべてに０をセットし、各ポートの優先順位の変数配列ｐｒｉｏｒｉｔｙ［０］〜ｐｒｉｏｒｉｔｙ［ＭＡＸ＿ＰＯＲＴ−１］に０をセットする。
【００１８】
初期化処理の後は、ステップＳＡ２からステップＳＡ８までのループ処理を繰り返す。スイッチ入力があるか否かを判別し（ステップＳＡ２）、スイッチ入力があったときは、スイッチ処理を実行する（ステップＳＡ３）。スイッチ処理についてはさらに後述する。表示更新が必要か否かを判別し（ステップＳＡ４）、表示更新が必要な場合には表示更新処理を実行する（ステップＳＡ５）。例えば、スイッチ処理によって設定が変更されたときは、その変更内容を表示する。ＭＩＤＩ入力があるか否かを判別し（ステップＳＡ６）、ＭＩＤＩ入力があったときは、ＭＩＤＩ処理を実行する（ステップＳＡ７）。ＭＩＤＩ処理の中には、発音指示、消音指示、エフェクタ指示などがある。次に、音源発音処理を行う（ステップＳＡ８）。音源発音処理についてはさらに後述する。
【００１９】
図３は、メインルーチンにおけるステップＳＡ３のスイッチ処理のフローチャートである。指定されたポートｎの同時発音数の設定スイッチが押されたか否かを判別し（ステップＳＢ１）、このスイッチが押されたときは、ｍａｘ＿ｐｏｌｙ[ｎ]に設定された同時発音数をセットする（ステップＳＢ２）。指定されたポートｎの優先順位の設定スイッチが押されたか否かを判別し（ステップＳＢ３）、このスイッチが押されたときは、ｐｒｉｏｒｉｔｙ[ｎ]に設定された優先順位をセットする（ステップＳＢ４）。なお、優先順位は設定される数値が小さいほど順位は高い。
【００２０】
例えば、携帯電話機の場合において、４つのポート０〜３が、それぞれ着信音の用途（ポート０）、ゲームの用途（ポート１）、音楽再生の用途（ポート２）、スイッチ操作の用途（ポート３）に設定されていたとする。ポート０〜３に対して同時発音数が３２、３２、３２、８に設定され、優先順位が０、０、１、２に設定された場合には、下記のような変数配列になる。
ｍａｘ＿ｐｏｌｙ[０]＝３２
ｍａｘ＿ｐｏｌｙ[１]＝３２
ｍａｘ＿ｐｏｌｙ[２]＝３２
ｍａｘ＿ｐｏｌｙ[３]＝８
ｐｒｉｏｒｉｔｙ[０]＝０
ｐｒｉｏｒｉｔｙ[１]＝０
ｐｒｉｏｒｉｔｙ[２]＝１
ｐｒｉｏｒｉｔｙ[３]＝２
この例のように、複数のポートに同じ優先順位を設定してもよい。
【００２１】
図４は、図２のメインルーチンにおけるステップＳＡ８の音源発音処理のフローチャートである。まず、各ポートのチャンネルに割り当てられている発音中のジェネレータに対して音高や音量を更新する制御を行う（ステップＳＣ１）。次に、任意のＭＩＤＩ  ＩＮポートｐに対して新しい発音の要求があるか否かを判別する（ステップＳＣ２）。新しい発音の要求がない場合にはメインルーチンに戻るが、新しい発音の要求があったときは、そのポートのｐｒｉｏｒｉｔｙ[ｐ]と同じ値のｐｒｉｏｒｉｔｙのポートがあるか否かを判別する（ステップＳＣ３）。同じ値のｐｒｉｏｒｉｔｙのポートがない場合には、単ポート時のジェネレータ割り当てを行う（ステップＳＣ４）。一方、同じ値のｐｒｉｏｒｉｔｙのポートがある場合には、複数ポート時のジェネレータ割り当てを行う（ステップＳＣ５）。いずれかのジェネレータ割り当てを行った後は、該当するポートのチャンネルにジェネレータが割り当てられたか否かを判別し（ステップＳＣ６）、ジェネレータが割り当てられた場合には、そのチャンネルによって新しい発音を音源６に対して指示する（ステップＳＣ７）。発音を指示した後、又は、該当するポートのチャンネルにジェネレータが割り当てられない場合には、メインルーチンに戻る。
【００２２】
図５は、図４におけるステップＳＣ４の単ポート時のジェネレータ割り当て処理のフローチャートである。ポートｐのｍａｘ＿ｐｏｌｙ[ｐ]とｃｒｎｔ＿ｐｏｌｙ[ｐ]とが同じであるか否かを判別する（ステップＳＤ１）。すなわち、ＭＩＤＩ  ＩＮポートｐの全てのチャンネルにジェネレータが割り当てられて、ポートｐが最大発音数に達しているか否かを判別する。最大発音数に達していて、新たなジェネレータを割り当てる空きチャンネルがない場合には、ＭＩＤＩ  ＩＮポートｐのチャンネルに割り当てられて発音をしているジェネレータを新しい発音の必要数分だけ消音して、新しい発音のジェネレータを割り当てる（ステップＳＤ２）。すなわち、任意のポートが最大発音数に達していて空きチャンネルが全くない場合に、さらにそのポートに対して新しい発音が要求されたときは、他のポートの発音状況にかかわらず、そのポートの中だけでチャンネルを調整して、新しい発音のジェネレータを割り当てる。
一方、ＭＩＤＩ  ＩＮポートｐの全てのチャンネルに割り当てられているジェネレータが最大発音数に達してなく、ジェネレータを割り当てていない空きチャンネルが存在する場合には、他のジェネレータのサーチ処理を実行する（ステップＳＤ３）。すなわち、ポートｐの空きチャンネルを含め、新しい発音に対して必要数分のチャンネルをサーチする。
【００２３】
図６は、他のジェネレータのサーチ処理のフローチャートである。新しい発音が要求されているポートｐに発音していないチャンネルが必要数あるか否かを判別し（ステップＳＥ１）、必要数ある場合には、発音していないチャンネルにジェネレータを新しい発音に対して割り当て（ステップＳＥ２）、ｃｒｎｔ＿ｐｏｌｙ[ｐ]に新規発音ジェネレータ数を加算する（ステップＳＥ３）。そして、メインルーチンに戻る。
一方、ステップＳＥ１において、ポートｐに発音していないチャンネルが必要数ない場合には、ポートｐのｐｒｉｏｒｉｔｙ[ｐ]よりも低い優先順位のｐｒｉｏｒｉｔｙ[ｎ]を満たすポートｎを全て求める（ステップＳＥ４）。ポートｎのチャンネルで発音中のジェネレータがない場合には、そのポートｎを除外する（ステップＳＥ５）。残りのポートｎの中で、ｐｒｉｏｒｉｔｙ[ｉ]が最大（優先順位が最低）のポートｉを求める（ステップＳＥ６）。そして、ポートｉの発音をしているチャンネルのジェネレータを必要数だけ消音して、新しい発音のために割り当てる（ステップＳＥ７）。そして、メインルーチンに戻る。
【００２４】
上記した携帯電話機の場合を例に採ると、着信音の用途（ポート０）、ゲームの用途（ポート１）、音楽再生の用途（ポート２）、スイッチ操作の用途（ポート３）で、音楽再生のポート２の最大発音数（最大チャンネル数）が３２で優先順位が１である。いま、ポート２のチャンネルで発音中のジェネレータ数が２８であるときに、さらに新しい発音が要求された場合には、ポート２のｐｒｉｏｒｉｔｙ[２]＝１と同じ優先順位の他のポートがない。この場合には、単ポート時のジェネレータ割り当てになる。この場合において、必要なジェネレータが４である場合には、ポート２だけでその新しい発音に対応できる。しかし、必要なジェネレータが８である場合には、低い優先順位ｐｒｉｏｒｉｔｙ[２]＝２のポート３において、発音をしている４個のジェネレータを消音して、その空きチャンネルをポート２の新しい発音のために割り当てる。
【００２５】
図７は、図４における複数ポート時のジェネレータ割り当て処理のフローチャートである。この場合のジェネレータ割り当てにおいては、ポートｐと同じ優先順位のポートｑのそれぞれの最大発音数であるｍａｘ＿ｐｏｌｙ[ｐ]とｍａｘ＿ｐｏｌｙ[ｑ]を合算して、その値を変数ｍａｘ＿ｓｕｍにストアする（ステップＳＦ１）。次に、ポートｐおよびポートｑにおいてそれぞれ発音中のチャンネルであるｃｒｎｔ＿ｐｏｌｙ[ｐ]とｃｒｎｔ＿ｐｏｌｙ[ｑ]を合算して、その値を変数ｃｒｎｔ＿ｓｕｍにストアする（ステップＳＦ２）。そして、ｍａｘ＿ｓｕｍの値とｃｒｎｔ＿ｓｕｍの値が同じであるか否かを判別する（ステップＳＦ３）。すなわち、ポートｐおよびポートｑにおいて合算した発音中のジェネレータ数が、合算した最大発音数（最大チャンネル数）に達しているか否かを判別する。合算した発音中のジェネレータ数が合算した最大発音数に達している場合には、ｃｒｎｔ＿ｓｕｍのカウントに入ったジェネレータから、新しい発音に必要数分のジェネレータを消音して新しい発音のために割り当てる（ステップＳＦ４）。そして、メインルーチンに戻る。すなわち、ポートｐおよびポートｑに発音中でない空きチャンネルが全くない場合には、低い優先順位の他のポートを犠牲にすることなく、ポートｐおよびポートｑだけでチャンネルを調整して新しい発音に対処する。
一方、合算した発音中のジェネレータ数が最大発音数に達してない場合には、単ポート時のジェネレータ割り当ての場合と同様に、図６に示した他のジェネレータのサーチ処理を実行する（ステップＳＦ５）。そして、メインルーチンに戻る。
【００２６】
上記した携帯電話機の場合を例に採ると、着信音の用途（ポート０）、ゲームの用途（ポート１）、音楽再生の用途（ポート２）、スイッチ操作の用途（ポート３）で、着信音のポート０の最大発音数（ジェネレータ）が３２で優先順位が０である。いま、ポート０のチャンネルで発音中のジェネレータ数が２８であるときに、さらに新しい発音が要求された場合には、ポート０のｐｒｉｏｒｉｔｙ[０]＝０と同じ優先順位のポート１がある。この場合には、複数ポート時のジェネレータ割り当てになる。この場合において、ポート１の発音中のジェネレータが２８とすると、必要なジェネレータが８である場合には、ポート０およびポート１だけでその新しい発音に対応できる。しかし、必要なジェネレータが１６である場合には、低い優先順位ｐｒｉｏｒｉｔｙ[２]＝２のポート３において、発音をしている８個のジェネレータを消音して、ポート０の新しい発音のために割り当てる。必要なジェネレータが２４である場合には、低い優先順位ｐｒｉｏｒｉｔｙ[２]＝２のポート３において、発音をしている８個のジェネレータを消音し、さらに、ｐｒｉｏｒｉｔｙ[２]＝１のポート２において、発音をしている８個のジェネレータを消音して、不足している１６個のジェネレータを低い優先順位のポート３およびポート２からサーチして、ポート０の新しい発音のために割り当てる。
【００２７】
以上のように、この実施形態によれば、ＣＰＵ１は、複数のポートの各々に対して楽音発生の用途を設定し、設定した用途に対して優先順位を設定し、さらに、各ポートに対して複数種類の音源の中から任意の音源を割り当てて発音するチャンネルの最大数を設定する。そして、任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てる。
したがって、複数のポートの各々に用途が設定されている場合に、あるポートに対して新しい発音の要求があったときに、そのポートのチャンネルだけでは不足する場合でも、他のポートが犠牲になる確率を低くしながら、新しい発音の要求に応えることができる。
【００２８】
この場合において、ＣＰＵ１は、任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルと同じ優先順位の用途が設定されている他のポートにおいて、発音中でないチャンネルを合算して不足するチャンネルに割り当てる。
したがって、あるポートに対して新しい発音の要求があったときに、そのポートのチャンネルだけでは不足する場合に、同じ優先順位のポート同士でチャンネルを融通し、低い優先順位他のポートがやみくもに犠牲になるような事態を回避する。
【００２９】
また、ＣＰＵ１は、任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てる。
したがって、あるポートに対して新しい発音の要求があったときに、そのポートに空きチャンネルが全くない場合には、他のポートを犠牲にしてまでそのポートをバックアップする必要性はないので、そのポートだけでチャンネルを融通して新しい発音に対処する。
【００３０】
また、ＣＰＵ１は、同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てる。
したがって、あるポートに対して新しい発音の要求があったときに、そのポートの空きチャンネルと同じ優先順位の他のポートの空きチャンネルを合算しても、新しい発音の要求に応えることができない状況は、発生する頻度も少なく、優先順位が低い他のポートを一時的に犠牲にしても特に支障がないので、優先順位が低い他のポートのチャンネルで不足するチャンネルを補う。
【００３１】
なお、上記実施形態においては、複数のポートの各々に対して楽音発生の用途を設定する構成の楽音発生装置を例に採って本発明を説明したが、このように物理的に分離したポートでなく、共通のポートを時分割で用いて複数のポートとする構成においても、本発明を適用することができる。
【００３２】
上記実施形態においては、ＲＯＭ２にあらかじめ記憶された楽音発生処理のプログラムをＣＰＵ１が実行する装置の発明について説明したが、汎用のパソコンと鍵盤装置とを組み合わせたシステムによって本発明を実現することも可能である。すなわち、フレキシブルディスク（ＦＤ）、ＣＤ、ＭＤなどの記憶媒体に記録されている楽音発生処理のプログラム、又は、インターネットなどのネットワークからダウンロードした楽音発生処理のプログラムを、パソコンのハードディスクやフラッシュメモリなどの不揮発性メモリにインストールして、そのプログラムをパソコンが実行することも可能である。この場合には、プログラムの発明やそのプログラムを記録した記録媒体の発明を実現できる。
【００３３】
すなわち、本発明による楽音発生処理のプログラムは、コンピュータに、
複数のポートの各々に対して楽音発生の用途を設定するステップＡと、前記ステップＡによって設定された用途に対して優先順位を設定するステップＢと、各ポートに対して複数種類の音源の中から任意の音源を割り当てて発音するチャンネルの最大数を設定するステップＣと、任意のポートに対して新たに発音を増加する要求があったときに、当該発音の増加によって発音すべきチャンネルが不足した場合には、前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルを不足するチャンネルに割り当てるステップＤと、を実行させる。
【００３４】
前記ステップＤは、前記任意のポートに対して新たに発音を増加する要求があったときは、当該ポートにおいて発音中でないチャンネルと前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおいて発音中でないチャンネルを合算して不足するチャンネルに割り当てる。
【００３５】
前記ステップＤは、前記任意のポートに対して新たに発音を増加する要求があったときに、当該ポートがすでに最大数のチャンネルによって楽音発生中であるときは、当該ポートにおけるチャンネルの発音を停止して不足するチャンネルに割り当てる。
【００３６】
前記ステップＤは、前記ステップＢによって同じ優先順位の用途が設定されている他のポートにおける発音中でないチャンネルによっては不足するチャンネルのすべてを補うことができない場合には、前記ステップＢによって当該同じ優先順位よりも低い優先順位の用途が設定されている他のポートにおけるチャンネルを当該補うことができないチャンネルに割り当てる。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施形態における楽音発生装置の構成を示すブロック図。
【図２】図１のＣＰＵのメインルーチンのフローチャート。
【図３】図２におけるスイッチ処理のフローチャート。
【図４】図２における音源発音処理のフローチャート。
【図５】図４における単ポート時のジェネレータ割り当て処理のフローチャート。
【図６】図５における他のジェネレータのサーチ処理のフローチャート。
【図７】図４における複数ポート時のジェネレータ割り当て処理のフローチャート。
【符号の説明】
【００３８】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  スイッチ
５  表示部
６  音源
７  波形メモリ
８  Ｄ／Ａ変換器
９  ＭＩＤＩインターフェース
【図１】
2006276086.tif 000003
【図２】
2006276086.tif 000004
【図３】
2006276086.tif 000005
【図４】
2006276086.tif 000006
【図５】
2006276086.tif 000007
【図６】
2006276086.tif 000008
【図７】
2006276086.tif 000009