(57)【要約】【課題】複数の発音チャネルを備え、発生した発音指示イベントに応じて発音チャンネル（ｃｈ）を割当てて発音を行なう電子楽器などの装置において、トランケートを迅速に行ない発音遅れを極力無くすことのできる発音ｃｈ割当プログラムを提供することを目的とする。【解決手段】予め発音チャンネルをｎ個のグループにグループ分けし、さらにそれらｎ個のグループに予め順番を付けておく。発音指示があって、空きチャンネルがないときには、その順番に従って１つのグループを選択し、そのグループの各チャンネルの状態に基づいて、同グループのチャンネルの中からトランケートチャンネルを決定しトランケートする。その順番は、ｎ個のグループの各出現回数が平均化され、かつ、ｎを周期として繰り返さないような順番とする。【選択図】　図２
2004102197.tif 000002
【特許請求の範囲】
【請求項１】
楽音の発音指示に対し、音源の発音チャンネルを割当てる発音割当プログラムであって、
予め前記発音チャンネルをｎ個のグループにグループ分けし、さらにそれらｎ個のグループに予め順番を付けておくとともに、
発音指示があったとき、空きチャンネルがあるか否か判定するステップと、
空きチャンネルがある場合、前記発音指示に対して該空きチャンネルを割当てるステップと、
空きチャンネルが無い場合、前記順番に従って１つのグループを選択するステップと、
選択されたグループの各チャンネルの状態に基づいて、同グループのチャンネルの中からトランケートチャンネルを決定するステップと、
決定されたトランケートチャンネルの音量を急速減衰させるステップと、
前記発音指示に対して、該トランケートチャンネルを割当てるステップと
を備えたことを特徴とする発音割当プログラム。
【請求項２】
請求項１に記載の発音割当プログラムにおいて、
前記順番は、前記ｎ個のグループの各出現回数が平均化され、かつ、ｎを周期として繰り返さないような順番とされていることを特徴とする発音割当プログラム。
【請求項３】
楽音の発音指示に対し、音源の発音チャンネルを割当てる発音割当プログラムであって、
空きチャンネルを登録しておくための先入れ先出し形式のリストを用意しておき、
発音指示があったとき、前記リストから必要数の空きチャンネルを取出して割当てるステップと、
前記割当てるステップの実行後に前記リスト中に残っている空きチャンネルの数が、１つの発音指示で必要なチャンネル数以上の所定数に満たない場合、その満たない数だけ、発音中のチャンネルから選択してトランケートチャンネルとし、その音量の急速減衰を開始するとともに、急速減衰を開始したトランケートチャンネルを前記リストに登録するステップと
を備えたことを特徴とする発音割当プログラム。
【請求項４】
請求項３に記載の発音割当プログラムにおいて、
前記所定数は、音源で選択可能な音色の最大レイヤ数以上の数とされていることを特徴とする発音割当プログラム。
【請求項５】
請求項３に記載の発音割当プログラムにおいて、
前記所定数は、音源で選択可能な音色の最大レイヤ数の２倍以上の数とされていることを特徴とする発音割当プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電子楽器などにおける発音チャンネル割当処理を迅速に行なうことができる発音割当プログラムに関する。
【０００２】
【従来の技術】
複数の発音チャネルを備え、発生した発音指示イベントに応じて発音チャンネル（ｃｈ）を割当てて発音を行なう電子楽器などの装置では、割当てる発音ｃｈが無くなったときに、いわゆるトランケート処理を行なうものがある。トランケートとは、音源の全発音ｃｈが発音中である場合に、何れかのｃｈを選択して音量を急速減衰させ、空きｃｈを強制的に作り出す処理のことである。トランケートにより作り出した空きｃｈに新たな発音指示イベントを割当てる。
【０００３】
例えば、特開２００１−２６５３４３には、▲１▼空きｃｈがある場合は、該空きｃｈに発音割当てし、▲２▼空きｃｈが無い場合は、所定の条件にしたがってトランケートｃｈを決定し、そのｃｈの音量を急速減衰し、そのｃｈに発音割当てするものが開示されている。所定の条件とは、「ノートオフしているｃｈ」、「音量の小さいｃｈ」、「発音中のｃｈのうちで音高が最低と最高の音ではないｃｈ」、「ノートオフしたｃｈの存在するパートのｃｈ」、「優先度の低いパートのｃｈ」などである。
【０００４】
また、特開２０００−３１５０８５には、発音ｃｈの一部を、次のノートオンの発音のために確保するものが開示されている。これは、楽音信号の発生指示から遅滞なく楽音発生できるように、複数の発音ｃｈを発音用グループと待機用グループに分け、発音指示があったとき、発音用グループのｃｈが空いていればそれを割当て、空いていなければ待機用グループのｃｈに割当てるものである。待機用グループの発音ｃｈが所定数未満になったときには、発音用グループのｃｈのうち楽音を発生していないｃｈなど所定の条件を満たしたｃｈを発音用グループから待機用グループに切り替えることが記載されている。
【０００５】
【発明が解決しようとする課題】
従来のトランケートの方式では、発音ｃｈ数が増えてくると、トランケートするｃｈを決定する処理に要するＣＰＵ負荷が指数関数的に増大する。その結果として発音遅れが生じるという問題がある。特開２００１−２６５３４３に開示のようにノートオフしたｃｈの存在するパートを絞り込んでトランケートｃｈを決定する方式もあるが、パートを絞り込む処理を行なわなければならず、その処理で発音遅れが生じることがある。さらに、特開２０００−３１５０８５の技術では、発音用グループと待機用グループの２つのｃｈ群を管理しながら処理を行なわなければならず、そのようなｃｈ群の管理の処理が負荷になるという問題がある。
【０００６】
この発明は、上述の従来技術における問題点に鑑み、トランケートを迅速に行ない発音遅れを極力無くすことのできる発音ｃｈ割当プログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、この発明では、予め発音チャンネルをｎ個のグループにグループ分けし、さらにそれらｎ個のグループに予め順番を付けておく。発音指示があって、空きチャンネルがないときには、その順番に従って１つのグループを選択し、そのグループの各チャンネルの状態に基づいて、同グループのチャンネルの中からトランケートチャンネルを決定しトランケートする。
【０００８】
前記順番は、ｎ個のグループの各出現回数が平均化され、かつ、ｎを周期として繰り返さないような順番とするとよい。
【０００９】
また、空きチャンネルを登録しておくための先入れ先出し形式のリストを用意しておき、発音指示があったとき、前記リストから必要数の空きチャンネルを取出して割当てるようにする。その割当てるステップの実行後に前記リスト中に残っている空きチャンネルの数が、１つの発音指示で必要なチャンネル数以上の所定数に満たない場合、その満たない数だけ、発音中のチャンネルから選択してトランケートチャンネルとし、その音量の急速減衰を開始するとともに、急速減衰を開始したトランケートチャンネルを前記リストに登録する。
【００１０】
前記所定数は、音源で選択可能な音色の最大レイヤ数以上の数とするとよい。特に、音源で選択可能な音色の最大レイヤ数の２倍以上の数とするのがよい。
【００１１】
【発明の実施の形態】
以下、図面を用いて、この発明の実施の形態を説明する。
【００１２】
図１は、この発明に係る発音割当てプログラムを適用した電子楽器の構成を示すブロック図である。この電子楽器は、ＣＰＵ（中央処理装置）１０１、タイマ１０２、リードオンリメモリ（ＲＯＭ）１０３、ランダムアクセスメモリ（ＲＡＭ）１０４、ディスク装置１０５、ＭＩＤＩ（Ｍｕｓｉｃａｌ　Ｉｎｓｔｒｕｍｅｎｔ　Ｄｉｇｉｔａｌ　Ｉｎｔｅｒｆａｃｅ）インターフェース１０７、ネットワークインターフェース１０８、パネルスイッチ（ＳＷ）１０９、パネル表示器１１０、音源１１１、ディジタルアナログ変換器（ＤＡＣ）１１２、サウンドシステム１１３、およびバスライン１２０を備えている。
【００１３】
ＣＰＵ１０１は、ＲＯＭ１０３またはＲＡＭ１０４に記憶された制御プログラムに基づいてこの電子楽器全体の動作を制御する。タイマ１０２は、一定周期ごとにＣＰＵ１０１に割込信号を送って割込をかけるためのタイマである。ＲＯＭ１０３は、ＣＰＵ１０１が実行・使用する各種の制御プログラムやデータなどを格納した不揮発性メモリである。ＲＡＭ１０４は、ＣＰＵ１０１が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。ディスク装置１０５は、プログラムや楽音データを記憶する記憶手段であり着脱可能なものでもよい。ＭＩＤＩインターフェース１０７は、外部のＭＩＤＩ機器と接続するインタフェースである。ネットワークインターフェース１０８は、外部のコンピュータなどと接続するインターフェースである。パネルＳＷ１０９は、外部パネル上に設けられている種々の操作子を示す。パネル表示器１１０は、外部パネル上に設けられているディスプレイである。音源１１１は、ＣＰＵ１０１の指示に応じて楽音信号を発生する。音源１１１からの楽音信号は、ＤＡＣ１１２でアナログ信号に変換され、サウンドシステム１１３で放音される。
【００１４】
音源１１１は、１２８個の発音ｃｈを有する。ＣＰＵ１０１は、ＭＩＤＩインターフェース１０７からの演奏入力に応じて、音源１１１で生成する楽音の制御を行なう。例えば、ノートオンが入力した場合、ノートオンイベント処理で、該ノートオンに対し音源１１１の発音ｃｈを割当て、割当てたｃｈに該ノートオンに対応した楽音の発生を指示する。発音ｃｈを割当てる際、必要数だけの空きｃｈが無ければトランケート処理を行なう。
【００１５】
本装置におけるトランケート処理の概要を説明する。１２８個の発音ｃｈは、予め３２ｃｈずつ固定的に４つのグループに分けられている。第１グループは第１〜第３２ｃｈ、第２グループは第３３〜第６４ｃｈ、第３グループは第６５〜第９６ｃｈ、第４グループは第９７〜第１２８ｃｈである。これら４つのグループは、トランケートｃｈを決定するときに予め決められた順序で用いる。
【００１６】
図４は、前記グループの順序を決める順序情報である。各数字はグループを示す数値であり、左上から右下に至る順序で並べられている。すなわち、「１２３４２１４３３４１２４３２１」がトランケートｃｈを決める際に用いるグループの順序を示している。トランケートｃｈを１つ決定したい場合、この順序に従って１つのグループを選択し、選択されたグループ内の各ｃｈの状態に基づいて当該グループ内からトランケートｃｈを決定する。この順序の最後まで行ったときは最初に戻る。単なる順番で選択された１つのグループ中からトランケートｃｈを決定するので、グループを選択する処理の負荷は軽い。また、１つのグループ内のｃｈを対象としてトランケートｃｈの決定処理を行なうので、その処理の負荷も小さい。
【００１７】
なお、グループの分け方はこの例に限らない。グループの数およびグループ内のｃｈの数は任意である。グループ毎のｃｈ数を異なるようにしてもよい。ただし、ｎレイヤ音色の楽音（ｎ個の音色の音を重ねて１つの楽音とするもの）を発生する場合は、１つのノートオンに対してｎ個のｃｈを割当てる必要があるが、この場合、トランケートｃｈを決めるのに使用するグループの順番に周期性があると、同じグループに発音時間の長い楽音が集中的に割当てられるなどの不都合が発生する。例えば、４レイヤ音色の楽音を発生する場合、第１レイヤに発音時間の長い楽音が割当てられていると、「１２３４」を繰り返す順番でトランケートｃｈを決めるグループを使用したとき、トランケートして第１レイヤに割当てられるｃｈが同じグループに集中する可能性が高くなる。そこで、ｎ個のグループの出現回数が平均化され、かつ、ｎを周期として繰り返さないような順番とするのが好ましい。図４の順序は、そのように決定した順序である。
【００１８】
次に、この実施形態の装置の動作を説明する。
【００１９】
図２（ａ）に、ノートオンイベントが発生したときのＣＰＵ１０１の処理手順を示す。ステップ２０１で、発生したノートオンイベントのパート番号、ノート番号、およびベロシティをそれぞれレジスタＰＴ，ＮＮ，ＶＬに設定する。ステップ２０２で、空きｃｈを記載したリストに、発音に必要な数の空きｃｈがあるかどうか判定する。空きｃｈを記載したリスト（以下、単にリストと呼ぶ）は、現時点で割当てられていないｃｈを示すリストであり、各ｃｈは、発音に割当てられたときリストから削除され、空きｃｈになったときリストに登録される（リストはｃｈごとのフラグで構成してもよい）。ステップ２０２で必要数の空きｃｈがあれば、ステップ２０３で、必要数だけの空きｃｈを前記リストから取得する。必要数分が無いときは、ステップ２０４で、足りない数のトランケートｃｈを決定し、トランケートを開始する。この処理は図２（ｂ）で後述する。次に、ステップ２０５で、トランケートの完了待ちを行なう。ステップ２０６で、必要数分の空きｃｈを、前記リストおよびトランケートにより強制減衰させたｃｈから、取得する。ステップ２０３，２０６の後、ステップ２０７で、パート番号ＰＴ、ノート番号ＮＮ、およびベロシティＶＬに応じた楽音の音源パラメータを、上記取得した空きチャンネルＡＳｃｈに設定する。ステップ２０８で、当該チャンネルＡＳｃｈに発音開始を指示して、処理終了する。
【００２０】
図２（ｂ）は、図２（ａ）のステップ２０４の足りない数のトランケートｃｈ決定処理を示す。ステップ２２１で、図４に示した順序情報に従い１つのグループを選択する。なお、順序情報は、何れかの記憶手段に記憶しておいてもよいし、本処理のプログラム中に埋め込んでおいてもよい。ステップ２２２で、選択したグループ中のｃｈの中にリリース中のｃｈがあるか否か判定する。あれば、ステップ２２３で、リリース中のｃｈのうち一番減衰しているｃｈを検出してトランケートｃｈとして決定する。リリース中のｃｈが無ければ、ステップ２２４で、当該グループの全ｃｈのうちから一番減衰しているｃｈを検出しトランケートｃｈとして決定する。次に、ステップ２２５で、決定したｃｈの音量の強制的な減衰（ダンプ）を開始する。ステップ２２６で、必要な数（足りない数）のトランケートｃｈが確保できたか判定し、さらに必要な場合は、ステップ２２１に戻って、トランケートｃｈの決定処理を続ける。必要数だけトランケートｃｈが確保できたら、処理終了する。
【００２１】
図３（ａ）は、一定周期でタイマ１０２から割込があったときに実行されるタイマ割込処理の手順を示す。ステップ３０１で、音源１１１から発音終了ｃｈを示すｃｈマップを読み出す。ステップ３０２で発音終了ｃｈがあるか否か判定し、あればステップ３０３でその終了ｃｈを全てリストに加える。
【００２２】
上記実施形態の処理では、発音に必要な空きｃｈがリストで確保できなかったとき、足りない数についてトランケートｃｈを確保するようにしたが、予め１回のノートオンで発音に必要なｃｈ数の最大数は予め分かっているから、常にその数の空きｃｈを用意しておく方式を採ってもよい。特に、この場合、発音用ｃｈと待機用ｃｈという区別は設けず、常に所定数の空きｃｈがＦＩＦＯ（先入れ先出し）形式のリスト中に存在するようにする。ｃｈ割当てを行なう場合は、判定処理を何ら行なうことなくリストの先頭から無条件に空きｃｈを確保する。リストから空きｃｈを取出したときに、若干の余裕数を持たせてトランケートｃｈをリストに追加する。
【００２３】
図３（ｂ）は、そのような方式を採った場合のノートオンイベント処理の手順を示す。ステップ３２１，３２２，３２３，３２４は、それぞれステップ２０１，２０３，２０７，２０８の処理と同じである。ただし、リストはＦＩＦＯ形式で、ステップ３２２では、より先にリストに追加されたｃｈから取出すものとする。この例ではリストには必ず必要数以上の空きｃｈが確保されているので、ステップ３２１〜３２４のように、何らの判定処理ないし完了待ち処理を行なうことなく、必要数のｃｈを確保して迅速に発音開始を指示できる。
【００２４】
ステップ３２４の後、ステップ３２５で、リストに所定数以上の空きｃｈが確保されているか否か判定する。この所定数は、１回のノートオンで使用される発音ｃｈの数の最大数（すなわち音源で選択可能な音色の最大レイヤ数）以上の数とする。所定数以上あった場合はそのまま処理を終了する。無かったときは、ステップ３２６で、足りない数のトランケートｃｈを決定してトランケートを開始する。次にステップ３２７で、トランケート開始したｃｈをその開始順に空きｃｈのリストに追加し、処理を終了する。
【００２５】
上記ステップ３２５で判定に使う所定数は、１回のノートオンで使用される発音ｃｈの数の最大数以上であればよいが、該最大数に余裕分となる数を加算した数としてもよい。特に、１回のノートオンで使用される発音ｃｈの数の最大数の２倍とするとよい。例えば、４レイヤ音色の楽音であれば、１回のノートオンで４ｃｈ使うので、前記所定数は８とする。これにより、第１のノートオンで４ｃｈがリストから取出されて割当てられたときでも、リスト中には４ｃｈが残っているので、その後すぐに第２のノートオンが来たとしても、残っている４ｃｈを即時に割当てることができる。また、第１のノートオンの割当て後、リスト中に４ｃｈしかなくなったとき、ステップ３２５〜３２７で４ｃｈ分のトランケートｃｈを決定してリストに追加するので、すぐに空きｃｈの補充がなされることになり、さらにこれらの追加した４ｃｈについては、次に第２のノートオンが来るまでにトランケート（音量の急速減衰）が終了することがほぼ保証されるので、第２のノートオンに対してもクリックノイズの発生しない迅速なｃｈ割当てが保証される。
【００２６】
上記ステップ３２６のトランケートｃｈの決定処理は、従来方式での処理でよい。図３（ｂ）の処理により迅速な割当処理が実現できるからである。もちろん、トランケートｃｈの決定処理として図２（ｂ）の順番情報に基づく処理を用いてもよい。この場合は、さらに高速な処理が実現される。
【００２７】
なお、楽音生成の終了したｃｈ（リストに登録する空きｃｈ）の判定は、上記実施形態では、発音ｃｈの振幅エンベロープが所定減衰量以上減衰したのを音源１１１が検出し、その検出結果をＣＰＵ１０１がｃｈマップとして読み出す方法を採ったが、この方法には限らない。例えば、ＣＰＵ１０１がノートオンないしノートオフから擬似エンベロープを計算して各ｃｈの減衰を判定する方法、ノートオンイベント処理で各ｃｈの発音時間をタイマにセットし、そのタイムアップで判定する方法などにより、空きｃｈを検出してもよい。
【００２８】
【発明の効果】
以上説明したように、この発明によれば、予め決定されている順番で選択された１グループのｃｈの中からトランケートするｃｈを決定するので、グループを選択するための処理が軽く、トランケートｃｈの決定にかかるＣＰＵ負荷が小さい。従って、トランケートを迅速に行ない発音遅れを極力無くすことができる。ｎ個のグループの各出現回数が平均化され、かつ、ｎを周期として繰り返さないような順番とすれば、トランケートされるグループの順番が規則的になるのを防止できる。
【００２９】
また、先入れ先出し形式のリストで必要数の空きｃｈを即時に割当てることができるように確保しておく方式に拠れば、発音用ｃｈと待機用ｃｈの区別をせずに一元管理でき、発音指示に応じてリストの先頭のｃｈをそのまま割当てるだけでよいので、迅速な割当てが可能である。常にリストに確保する空きｃｈの数を最大レイヤ数以上にすることで、最悪の状況でも最大レイヤ数の音色のノートオンに対応可能とすることができる。さらに、最大レイヤ数の２倍の空きｃｈを確保しておくことで、最大レイヤ数の音色でノートオンが連続した場合でも、十分なトランケート時間が確保できる。
【図面の簡単な説明】
【図１】この発明に係る発音割当てプログラムを適用した電子楽器の構成を示すブロック図
【図２】ノートオンイベント処理およびトランケートｃｈ決定処理のフローチャート図
【図３】タイマ割込処理およびノートオンイベント処理（その２）のフローチャート図
【図４】順序情報を示す図
【符号の説明】
１０１…中央処理装置（ＣＰＵ）、１０２…タイマ、１０３…リードオンリメモリ（ＲＯＭ）、１０４…ランダムアクセスメモリ（ＲＡＭ）、１０５…ディスク装置、１０７…ＭＩＤＩインターフェース、１０８…ネットワークインターフェース、１０９…パネルスイッチ、１１０…パネル表示器、１１１…音源、１１２…ディジタルアナログ変換器（ＤＡＣ）、１１３…サウンドシステム。
【図１】
2004102197.tif 000003
【図２】
2004102197.tif 000004
【図３】
2004102197.tif 000005
【図４】
2004102197.tif 000006