(57)【特許請求の範囲】
【請求項１】
外部装置と接続するための複数のポートと、
２以上のポートから音楽イベントが略同時に入力された場合に、前回処理を行った音楽イベントが入力されたポートと異なるポートから入力された音楽イベントを優先的に処理するイベント処理手段と
を具備することを特徴とする音楽データ処理装置。
【請求項２】
外部装置と接続するための複数のポートと、
ポートから音楽イベントが入力された場合に、該ポートとは異なるポートから入力された音楽イベントがあるか否かを判断し、異なるポートから入力された音楽イベントがあると判断した場合には、前回処理を行った音楽イベントが入力されたポートと異なるポートから入力された音楽イベントを優先的に処理するイベント処理手段と
を具備することを特徴とする音楽データ処理装置。
【請求項３】
外部装置と接続するための複数のポートと、
１の音楽イベントに対して１または複数パートの処理を行い、
ポートを介して入力された音楽イベントが、複数パートの処理を行う音楽イベントである場合には、前記音楽イベントに対して１パート分の処理を行った後、前記ポートとは異なるポートから入力された音楽イベントがあるか否かを判断し、
異なるポートから入力された音楽イベントがあると判断した場合には、該音楽イベントを優先的に処理するイベント処理手段と
を具備することを特徴とする音楽データ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＭＩＤＩデータ等の音楽データ処理装置に関する。
【０００２】
【従来の技術】
電子ピアノ等の電子楽器においては、電子楽器に内蔵される音源を用いて楽音を発生する他に、外部機器との間でデータ通信を行う通信機能を備えたものが広く普及している。
このように、電子楽器と外部機器との間でデータ通信を行うための規格として、ＭＩＤＩ（Ｍusical Ｉnstrument Ｄigital Ｉnterface）規格があり、このＭＩＤＩ規格に対応する機器には、ＭＩＤＩインタフェースが搭載されている。
このＭＩＤＩインタフェースには、ＭＩＤＩ規格設定当初から広く利用されてきたシングルポートタイプ（例えば、１イン／１アウトタイプ等）のＭＩＤＩインタフェースの他、複数の入出力端子を備えた、いわゆるマルチポートタイプ（例えば、８イン／８アウトタイプ等）のＭＩＤＩインタフェースがある。
このマルチポートタイプのＭＩＤＩインタフェースを備えた音源装置にキーボード、シンセサイザー等の電子楽器、音源を複数接続することで、多くの音源や電子楽器等を自由に使い分けることが可能となる一方、これらの音源や電子楽器から入力されるＭＩＤＩデータに基づき、演奏を再現することも可能となる（図１３参照）。
【０００３】
【発明が解決しようとする課題】
ところで、このマルチポートタイプのＭＩＤＩインタフェースを備えた音源装置（音楽データ処理装置）は、複数のポートを介してＭＩＤＩデータを受信した場合にどのポートから入力されるＭＩＤＩデータを優先的に処理するか（以下、単に優先度という）が予め決定されている。
図１４は、従来の音源装置がポート１を介して３イベント分のＭＩＤＩデータを受信し、その間にポート２を介して１イベント分のＭＩＤＩデータを受信した場合におけるデータ処理に流れを示すものである。
この図１４に示すデータ処理の流れは、音源装置のポート１の優先度がポート２の優先度よりも高く設定されている場合を想定している。なお、図１４に示すイベント（音楽イベント）は、楽器演奏や、操作等の処理を行うために必要な演奏情報であり、例えば発音を示すノートオン、音高を示すノートナンバー、音の強さを示すベロシティ等のＭＩＤＩデータにより構成された発音イベント等である。
従来の音源装置は、優先度に従ってイベント処理を行っていたため、図１４に示すように優先度の高いポート（ポート１）から入力されるイベントがある限り、優先度の低いポート（ポート２）から入力されるイベントが処理されることはなかった。この結果、優先度の低いポートから入力されるイベントの処理が遅延し、本来発音すべきタイミングから遅れて発音する等の問題が生じていた。
本発明は、以上説明した事情を鑑みてなされたものであり、複数の入力ポートを介して入力されるイベントを均等に処理することができる音楽データ処理装置を提供することを目的とする。
【０００４】
【課題を解決するための手段】
上述した問題を解決するため、請求項１に記載の音楽データ処理装置は、外部装置と接続するための複数のポートと、２以上のポートから音楽イベントが略同時に入力された場合に、前回処理を行った音楽イベントが入力されたポートと異なるポートから入力された音楽イベントを優先的に処理するイベント処理手段とを具備することを特徴とする。
また、請求項２に記載の音楽データ処理装置は、外部装置と接続するための複数のポートと、ポートから音楽イベントが入力された場合に、該ポートとは異なるポートから入力された音楽イベントがあるか否かを判断し、異なるポートから入力された音楽イベントがあると判断した場合には、前回処理を行った音楽イベントが入力されたポートと異なるポートから入力された音楽イベントを優先的に処理するイベント処理手段とを具備することを特徴とする。
【０００５】
また、請求項３に記載の音楽データ処理装置は、外部装置と接続するための複数のポートと、１の音楽イベントに対して１または複数パートの処理を行い、ポートを介して入力された音楽イベントが、複数パートの処理を行う音楽イベントである場合には、前記音楽イベントに対して１パート分の処理を行った後、前記ポートとは異なるポートから入力された音楽イベントがあるか否かを判断し、異なるポートから入力された音楽イベントがあると判断した場合には、該音楽イベントを優先的に処理するイベント処理手段とを具備することを特徴とする。
【０００６】
【発明の実施の形態】
以下、本発明をさらに理解しやすくするため、実施の形態について説明する。かかる実施の形態は、本発明の一態様を示すものであり、この発明を限定するものではなく、本発明の範囲で任意に変更可能である。
【０００７】
Ａ．第１の実施形態
（１）実施形態の構成
図１は、本実施形態に係る音源装置１００の概略構成を示すブロック図である。
音源装置１００は、装置各部の制御を司るＣＰＵ２００と、各種制御プログラム及び固定データ等が格納されているＲＯＭ３００と、各種データを格納する書き換え可能なＲＡＭ４００と、マルチポートタイプのＭＩＤＩインタフェース５１０を介してＭＩＤＩデータが入力されるＭＩＤＩ入力部５００と、ＣＰＵ２００による制御の下、楽音信号を生成する楽音生成部６００とを備えている。
【０００８】
ａ）音源装置１００の機能構成
図２は、ＭＩＤＩデータを受信する場合のＣＰＵ２００の制御機能を示す機能ブロック図である。
ＣＰＵ２００におけるＭＩＤＩデータ受信時の制御機能は、シリアルデータ受信手段２１０−ｋ（ｋ＝１〜Ｎ）と、ＭＩＤＩイベント解釈手段２２０−ｋ（ｋ＝１〜Ｎ）と、ＭＩＤＩイベント記憶手段２３０−ｋ（ｋ＝１〜Ｎ）と、ＭＩＤＩデータマネージャ手段２４０とを具備している。
同図に示すように、シリアルデータ受信手段２１０−ｋ（ｋ＝１〜Ｎ）、ＭＩＤＩイベント解釈手段２２０−ｋ（ｋ＝１〜Ｎ）及びＭＩＤＩイベント記憶手段２３０−ｋ（ｋ＝１〜Ｎ）は、ＭＩＤＩインタフェース５１０の各ポートｋ（ｋ＝１〜Ｎ）に対応して設けられている。
【０００９】
シリアルデータ受信手段２１０−ｋは、ポートｋを介して入力されるＭＩＤＩデータを受信し、受信したＭＩＤＩデータを１バイトずつＭＩＤＩイベント解釈手段２２０−ｋに出力する。
ＭＩＤＩイベント解釈手段２２０−ｋは、ＭＩＤＩデータ受信手段２１０−ｋから１バイトずつＭＩＤＩデータを受け取り、受け取った１バイト単位のＭＩＤＩデータを順次ＦＩＦＯ方式のＭＩＤＩイベント記憶手段２３０−ｋに格納すると共に、１イベント成立したか否かの判断を行う。このイベント成立の判断方法については実施形態の動作において説明するため省略する。
【００１０】
ＭＩＤＩデータマネージャ手段２４０は、ＭＩＤＩイベント解釈手段２２０−ｋからイベント成立通知を受け取ると、対応するＭＩＤＩイベント記憶手段２３０−ｋを参照し、イベント処理を行う。さらに詳述すると、ＭＩＤＩマネージャ手段２４０は、まずＭＩＤＩイベント解釈手段２２０−ｋからＭＩＤＩデータを受け取ることにより、どのポートにおいてイベントが成立しているかを把握する。そして、ＭＩＤＩデータマネージャ手段２４０は、メモリ２４１を参照することにより、次に処理すべきイベントを決定する。
このメモリ２４１は、書き換え可能な記憶手段であり、最後に処理したイベントの入力ポート番号が格納されている。ＭＩＤＩデータマネージャ手段２４０は、このメモリ２４１を参照し、例えば同一ポートに入力されたイベントを連続して処理しない等の判断基準に基づき、処理すべきイベントを決定する。なお、具体的な決定方法については、後に詳述するため省略する。
次に、ＭＩＤＩインタフェースの複数のポートに、ＭＩＤＩデータが入力された場合の音源装置１００の動作について説明する。
【００１１】
（２）実施形態の動作
図３は、ＭＩＤＩインタフェース５１０のポート１及びポート２を介して各々１イベント分のＭＩＤＩデータが入力される場合を例示した図である。
同図に示すように、音源装置１００のポート１及びポート２には、ＭＩＤＩデータ送信側の装置ａ及び装置ｂがそれぞれ接続されている。
以下に、音源装置１００が装置ａ及び装置ｂからＭＩＤＩデータを受信した場合のイベント処理動作について図２〜図７を参照して説明する。なお、図３に示すイベントは、説明の便宜上、全て３バイト構成（ＭＩＤＩデータ３バイトで１イベント成立）とする。
【００１２】
ａ）イベント解釈手段２２０−ｋの動作
ＭＩＤＩイベント解釈手段２２０−１及びＭＩＤＩイベント解釈手段２２０−２は、シリアルデータ受信手段２０１−１及びシリアルデータ受信手段２０１−２から１バイトずつＭＩＤＩデータを受信する。
図４は、イベント解釈手段２２０−ｋの動作を示すフローチャートである。
ＭＩＤＩイベント解釈手段２２０−ｋは、ステップＳ１において、シリアルデータ受信手段２１０−ｋからＭＩＤＩデータが供給されたか否かを判断する。ＭＩＤＩイベント解釈手段２２０−ｋはＭＩＤＩデータが供給されると（ステップＳ１；ＹＥＳ）、ステップＳ２に進み、１イベント分のＭＩＤＩデータが供給されたか、すなわち１イベント成立したか否かの判断を行う。具体的には、ＭＩＤＩイベント解釈手段２２０−ｋは、まずＭＩＤＩデータのフラグを参照し、ステータスバイトであるか、あるいはデータバイトであるかの判断を行う。
【００１３】
図５は、発音イベントを構成するＭＩＤＩデータを示す図である。
同図に示す発音イベントは、１つのステータスバイト（ノートオン）と２つのデータバイト（ノートナンバー及びベロシティ）により構成されている。このような構成の発音イベントは、まずステータスバイトがＭＩＤＩイベント解釈手段２２０−ｋに入力され、次いでデータバイトがＭＩＤＩイベント解釈手段２２０−ｋに入力される。ここで、ステータスバイトには、フラグ“１”がセットされ、データバイトにはフラグ“０”がセットされている。また、ステータスバイトには、後に続くデータバイトの数に関する情報が含まれている。
従って、ＭＩＤＩイベント解釈手段２２０−ｋは、ＭＩＤＩデータのフラグを参照することにより、ステータスバイトであるか、データバイトであるかを判断する一方、受け取ったＭＩＤＩデータがステータスバイトであれば、これに含まれる情報に基づき、後に続くデータバイト数を把握する。
【００１４】
ここで、再びイベント解釈手段２２０−ｋの動作説明に戻り、本実施形態に係るイベントは、全て３バイト構成のイベントであるため、後に続くデータバイトの数が「２」である旨の情報がステータスバイトに含まれている。
ＭＩＤＩイベント解釈手段２２０−ｋは、受け取ったＭＩＤＩデータが１バイトであるのに対し、１イベント成立するのに必要なＭＩＤＩデータは３バイトであるため、イベントは成立しないと判断し（ステップＳ２；ＮＯ）、１バイト分のＭＩＤＩデータをＭＩＤＩイベント記憶手段２３０−ｋに書き込んだ後、ステップＳ１へ戻り、上述した処理を繰り返し実行する。
【００１５】
その後、２バイト分のＭＩＤＩデータがＭＩＤＩイベント解釈手段２２０−ｋに供給されたとする。
２バイト分のＭＩＤＩデータが供給されることにより、ＭＩＤＩイベント解釈手段２２０−ｋは、１イベント成立したと判断し（ステップＳ２；ＹＥＳ）、１イベントを構成する最後のＭＩＤＩデータをＭＩＤＩイベント記憶手段２３０−ｋに書き込むと共に、ＭＩＤＩデータマネージャ手段２４０に対して１イベント成立した旨の通知を行う（ステップＳ３）。
このような処理をＭＩＤＩイベント解釈手段２２０−１及びＭＩＤＩイベント解釈手段２２０−２が実行することにより、ＭＩＤＩイベント記憶手段２３０−１及びＭＩＤＩイベント記憶手段２３０−２の各々に、１イベント分のＭＩＤＩデータが格納される。
【００１６】
次に、図６及び図７を参照して、ＭＩＤＩイベント解釈手段２２０−１及びＭＩＤＩイベント解釈手段２２０−２からイベント成立通知を受けたＭＩＤＩデータマネージャ手段２４０の動作説明を行う。
【００１７】
ｂ）ＭＩＤＩデータマネージャ手段２４０の動作
図６は、ＭＩＤＩデータマネージャ手段２４０の動作を示すフローチャートであり、図７は、音源装置１００に入力されるイベントを模式的に示した図である。  ＭＩＤＩデータマネージャ手段２４０は、ステップＳａ１において、イベント成立通知の検出を行う。ＭＩＤＩデータマネージャ手段２４０は、イベント成立通知を受け取るまでの間、繰り返しステップＳａ１を実行する（図７に示す、ステージ１）。
【００１８】
その後、ポート１からイベント入力され、イベント解釈手段２２０−１がＭＩＤＩデータマネージャ手段２４０に対してイベント成立通知を行ったとする（図７に示す、ステージ２）。
ＭＩＤＩデータマネージャ手段２４０はイベント成立通知を受け取ると、ステップＳａ２に進み、受け取ったイベント成立通知に対応するポートが、最後に処理したイベントに対応するポートと同一であるか否かの判断を行う。前述したように、メモリ２４１には、最後に処理したイベントのポート番号が書き込まれている。ここでは、前回処理したイベントのポート番号が「Ｎ」であったとする。ＭＩＤＩデータマネージャ手段２４０は、このメモリ２４１に格納されたポート番号「Ｎ」が、今回入力されたイベントのポート番号「１」と一致しないため、最後に処理したポートと異なると判断し（ステップＳａ２；ＮＯ）、ステップＳａ３に進む。ステップＳａ３において、ＭＩＤＩデータマネージャ手段２４０は、処理すべきイベントが格納されているＭＩＤＩイベント記憶手段２３０−１を参照し、ポート１のイベント処理を開始する。ポート１のイベント処理が終了すると、ＭＩＤＩデータマネージャ手段２４０は、メモリ２４１に書き込まれたポート番号を「Ｎ」から「１」へ変更する。ＭＩＤＩデータマネージャ手段２４０は、最後に処理したイベントのポート番号を書き換えが終了すると、ステップＳａ１に戻り、再びイベントが成立しているポートがあるか否かの判断を行う。
【００１９】
その後、再びポート１からイベント入力され、イベント解釈手段２２０−１がＭＩＤＩデータマネージャ手段２４０に対してイベント成立通知を行ったとする（図７に示す、ステージ３）。
ＭＩＤＩデータマネージャ手段２４０はイベント成立通知を受け取ると、前回と同様、受け取ったイベント成立通知に対応するポートが最後に処理したイベントに対応するポートと同一であるか否かの判断を行う。メモリ２４１には、最後に処理したイベントのポート番号「１」が書き込まれている。ＭＩＤＩデータマネージャ手段２４０は、このメモリ２４１に格納されたポート番号「１」が、今回入力されたイベントのポート番号「１」と一致するため、最後に処理したポートと同一であると判断し（ステップＳａ２；ＹＥＳ）、このポート１のイベント処理を行うことなく、ステップＳａ４に進む。
ポート１のイベント処理を行うことなくステップＳａ４に移行したＭＩＤＩデータマネージャ手段２４０は、他のポートにおいてイベントが成立しているか否かの判断を行う。ここで、ＭＩＤＩデータマネージャ手段２４０は、他のイベント解釈手段２２０−ｋからイベント成立通知を受けていないため、他ポートにおいてイベントは成立していないと判断し、ステップＳａ３に進む。結局、この場合もＭＩＤＩデータマネージャ手段２４０は、ポート１のイベント処理を行うこととなるが、この動作については上述した場合と同様であるため、説明を省略する。
【００２０】
その後、ポート１及びポート２からイベント入力され、イベント解釈手段２２０−１及びイベント解釈手段２２０−２がＭＩＤＩデータマネージャ手段２４０に対してイベント成立通知を行ったとする（図７に示す、ステージ４）。
ここで、ＭＩＤＩデータマネージャ手段２４０は、まずイベント解釈手段２２０−１からのイベント成立通知を認識し、次いでイベント解釈手段２２０−２からのイベント成立通知を認識したとする。これにより、ＭＩＤＩデータマネージャ手段２４０は、前回と同様、メモリ２４１に格納されたポート番号「１」が、今回入力されたイベントのポート番号「１」と一致するため、最後に処理したポートと同一であると判断し（ステップＳａ２；ＹＥＳ）、このポート１のイベント処理を行うことなく、ステップＳａ４に進む。
ポート１のイベント処理を行うことなくステップＳａ４に移行したＭＩＤＩデータマネージャ手段２４０は、他のポートにおいてイベントが成立しているか否かの判断を行う。この判断時において、ＭＩＤＩデータマネージャ手段２４０は、イベント解釈手段２２０−２からイベント成立通知を受け取っている。従って、ＭＩＤＩデータマネージャ手段２４０は他のポート（ポート２）においてもイベントが成立していると判断し（ステップＳａ４；ＹＥＳ）、ステップＳａ５に進む。
【００２１】
このステップＳａ５において、ＭＩＤＩデータマネージャ手段２４０は、次に処理すべきイベントを決定する。図７に示すステージ４は、ポート２に対応するイベント解釈手段２２０−２からイベント成立通知が行われる場合を想定しているが、もちろんポート３、・・・、ポートＮ等多数のポートに対応するイベント解釈手段からＭＩＤＩデータマネージャ手段２４０に対してイベント成立通知が行われる場合もある。かかる場合には、いずれか１のイベントを選択する必要があるため、ＭＩＤＩデータマネージャ手段２４０は、このステップＳａ５において次に処理すべきイベントを決定する。例えば、複数のポートにおいてイベントが成立している場合には、最後に処理したイベントのポート（ポート３と仮定する）に最も近いポートのイベントを次に処理すべきイベントとして決定する。ただし、最も近いポートが２ポートある場合（例えば上述したポート３に対して、ポート２及びポート４等）には、ポート番号の小さい方（ポート２）を選択し、このポートのイベントを次に処理べきイベントとして決定する。その他にも様々な方法が考えられるが、これ以上の説明は省略し、ＭＩＤＩデータマネージャ手段２４０の動作説明を続ける。
【００２２】
ここで、ＭＩＤＩデータマネージャ手段２４０は、ポート２に対応するイベント解釈手段２３０−２からのみイベント成立通知を受けている。このため、ＭＩＤＩデータマネージャ手段２４０は、次に処理すべきイベントはポート２のイベントであると判断し、ステップＳａ３に進む。ステップＳａ３において、ＭＩＤＩデータマネージャ手段２４０は、判断結果に基づき、処理すべきイベントが格納されているＭＩＤＩイベント記憶手段２３０−２を参照し、ポート２のイベント処理を開始するのであるが、この時、ポート１のイベントは未だ処理されていない。すなわち、ＭＩＤＩデータマネージャ手段２４０は、最後に処理したイベントのポートとは異なるポートのイベントを優先的に処理するのである。
【００２３】
その後、ポート２のイベント処理が終了したとする。
ポート２のイベント処理が終了すると、ＭＩＤＩデータマネージャ手段２４０は、メモリ２４１に書き込まれたポート番号を「１」から「２」へ変更する。ＭＩＤＩデータマネージャ手段２４０は、最後に処理したイベントのポート番号の書き換えが終了すると、ステップＳａ１に戻り、再びイベントが成立しているポートがあるか否かの判断を行う。その後、ＭＩＤＩデータマネージャ手段２４０は、ポート１のイベントを処理することとなるが、この場合の動作については、上述と同様であるため、これ以上の説明は省略する。
【００２４】
以上の説明から明らかなように、本実施形態に係る音源装置１００は、発音が込み合った状態においても、特定ポートのイベントのみを優先的に処理することはない。すなわち、本実施形態に係る音源装置１００は、複数のポートにおいてイベントが成立している場合、各ポートのイベントを均等に処理していくため、イベントの処理が遅延することを未然に防止することができる。
なお、本実施形態に係るメモリ２４１は、最後に処理したイベントのポート番号を格納する構成であったが、これに限定する趣旨ではなく、２以上（例えば、音源装置１００の総ポート数Ｎ等）のデータを格納する構成としても良いのは勿論である。このような構成のメモリ２４１を使用することで、最後に処理したイベントのポート番号、及び最後の１つ前に処理したイベントのポート番号のいずれにも一致しないポートから入力されるイベントを処理することができる。これにより、例えば３つのポートにおいてイベントが成立しているにもかかわらず、２つのポート間で繰り返しイベントが処理され、残り１ポートから入力されるイベントが処理されないといった問題を未然に防ぐことができる。
【００２５】
Ｂ．第２の実施形態
ところで、従来より広く普及している音源装置には、複数の楽器を個別に演奏させることを目的とした「チャンネル」という概念が導入されている。具体的には、第１チャンネルにはヴァイオリン、第２チャンネルにはピアノ、・・・等が設定され、各チャンネルに対応して用意された音源を使用することにより、複数の楽器の音を同時に発音することができる構成となっている。従来は、このようにチャンネルの数だけ音源が必要であったのだが、近年チャンネル別に複数の楽器の音を発音することができるマルチ音源が開発され、これが主流となっている。
さらに、マルチ音源の中でも、特にマルチパートと呼ばれる音源（以下、マルチパート音源という）は、効率の良い演奏が可能であることから盛んに研究・開発されている。ここで、マルチパート音源とは、複数のパート（例えば、ピアノ、ヴァイオリン等）を持ち、パート毎の設定により受信チャンネル（以下、単にＣｈと記す場合もある）を指定することができる音源である。
【００２６】
図８は、ポート、チャンネル及びパートの関係を示す図であり、図９は、マルチパートの概念を説明するための図である。
図９についてさらに詳述すると、図９（ａ）は、ユーザによってパート毎の受信チャンネルが指定された場合を例示した図であり、図９（ｂ）は、音源装置側から見たチャンネルで処理すべきパートテーブルを示す図である。なお、この図８に示すＭＩＤＩチャンネル及びパートは、ポート１を想定したものであるが、このチャンネル及びパートの概念は、全てのポート（図８に示す、ポート１〜ポートＮ）に共通するため、その他のポートについては説明を省略する。
【００２７】
図９に示す設定がなされたマルチパート音源において、パート１にはヴァイオリン、パート２にはピアノ、パート３にはオルガンが設定されていたとする。
このような設定のマルチパート音源に対して、チャンネル１を指定したイベント及びチャンネル２を指定したイベントが入力され、かつ各チャンネルを指定したイベントがいずれも「ド」の音を発音させる発音イベントであったとする。
マルチパート音源は、１ＣｈのＭＩＤＩイベントを受信した場合には、ヴァイオリンの音色で「ド」の音を発音させるべく、図示せぬレジスタに対してパラメータ設定を行う。これに対し、２ＣｈのＭＩＤＩイベントを受信した場合、マルチパート音源はピアノとオルガンの音色で「ド」の音を発音させるべく、レジスタの所定領域に各種パラメータを設定する。このようにして、マルチパート音源は１つのチャンネルで複数の音色を発音したり、音に厚みを持たせることができるのである。
【００２８】
しかしながら、従来のマルチパート音源には、次のような問題があった。例えば、前掲図９（ｂ）に示すパートテーブルを具備するマルチパート音源が、ポート１を介して２Ｃｈのイベントを受信した後、ポート１とは異なるポート、例えばポート２を介して１Ｃｈ（処理すべきパート：パート１）のイベントを受信したとする。
従来のマルチパート音源は、図１０に示すように、まずポート１の２Ｃｈで処理すべきパート２及びパート３を連続して処理し、次いでポート２の１Ｃｈで処理すべきパート１を処理していた。このように、従来のマルチパート音源においては、あるポートのイベントに対応したパート処理（パート処理：マルチパート音源に対して各種パラメータ設定を行うこと）が開始されると、このイベントに対応した全てのパート処理が終了するまで、他のポートのイベントに対応したパート処理が行われないという問題があった。
【００２９】
図１１は、本実施形態に係るマルチパート音源のＭＩＤＩデータマネージャ手段２４０の動作を示すフローチャートであり、図１２はこのフローを実行した場合のデータ処理の流れを模式的に示した図である。
図１１及び以下に示すマルチパート音源の動作説明は、上述した場合と同様、ポート１を介して２Ｃｈのイベントを受信し、ポート２を介して１Ｃｈのイベントを受信した場合を想定している。また、ハードウェアの構成等は、前述した図１及び図２と同様であるため、対応する部分に同一符号を付し、その詳細な説明を省略する。
【００３０】
ＭＩＤＩデータマネージャ手段２４０は、ステップＳｂ１において、ＭＩＤＩイベント解釈手段２２０からイベント成立通知があるか否かを検出している。  マルチパート音源がポート１を介してイベントを受信すると、ＭＩＤＩイベント解釈手段２２０−１は、ＭＩＤＩデータマネージャ手段２４０に対してイベント成立通知を行う。
これにより、ＭＩＤＩデータマネージャ手段２４０は、ポート１においてイベントが成立したと判断し（ステップＳｂ１；ＹＥＳ）、ステップＳｂ２に進む。
ステップＳｂ２に進むと、ＭＩＤＩデータマネージャ手段２４０は、ＭＩＤＩイベント記憶手段２３０−１を参照し、当該イベントのチャンネル番号を読み出す。
【００３１】
ＭＩＤＩデータマネージャ手段２４０は、ＭＩＤＩイベント記憶手段２３０−１に格納されているイベントが２Ｃｈのイベントであると判断すると、ＲＡＭ４００等に格納されたパートテーブル（図９（ｂ）参照）を参照し、この２Ｃｈで処理すべきパート（パート２及びパート３）を把握する。ＭＩＤＩデータマネージャ手段２４０は、ステップＳｂ２において１パート分の処理を行うのであるが、２Ｃｈで処理すべきパートは複数（パート２及びパート３）ある。このため、ＭＩＤＩデータマネージャ手段２４０は、いずれのパートを先に処理すべきか判断し、この判断結果に基づき１パート分のパート処理を行う。いずれのパートを先に処理すべきかの判断基準等については、本願発明の趣旨とは関係がないため、ここでは省略する。
【００３２】
ここで、ＭＩＤＩデータマネージャ手段２４０は、パート２を先に処理すべきであると判断したとする（ステップＳｂ２）。
１パート分の処理が終了すると、ＭＩＤＩデータマネージャ手段２４０はパート２の処理を終えると、このイベントに対応した全てのパート処理を行うことなく、すなわちパート３の処理を行うことなく、他ポートでイベントが成立しているか否かの判断を行う（ステップＳｂ３）。
ここで、ＭＩＤＩデータマネージャ手段２４０は、ポート１のイベント処理を行っている間に、ＭＩＤＩイベント解釈手段２２０−２からポート２においてイベントが成立した旨の通知を受け取っていたとする。
【００３３】
これにより、ＭＩＤＩデータマネージャ手段２４０は、他ポートでイベントが成立していると判断し（ステップＳｂ３；ＹＥＳ）、ステップＳｂ５に進む。ステップＳｂ５において、ＭＩＤＩデータマネージャ手段２４０は、他ポートで成立しているイベントの処理を行う。ただし、このステップＳｂ５の処理は、図１１に示す制御フローを継承する。すなわち、他ポートのイベントにおいて処理すべきパートが複数ある場合であっても、１パート分の処理のみを行うのである（ステップＳｂ２参照）。
ここで、他ポートにおいて成立しているイベントは、ポート２において成立している１Ｃｈのイベントであり、処理すべきパートはパート１のみである。
ＭＩＤＩデータマネージャ手段２４０は、ポート２のイベントに対応したパート１の処理を行い、ステップＳｂ４に進む。
【００３４】
ＭＩＤＩデータマネージャ手段２４０は、このステップＳｂ４において、前回処理したポート１のイベントに関して次に処理すべきパートがあるか否かの判断を行う。上述したように、ＭＩＤＩデータマネージャ手段２４０は、ポート１のイベントに関して１パート分の処理、すなわちパート２の処理を行ったのみであり、パート３の処理は未だ行っていない。従って、ＭＩＤＩデータマネージャ手段２４０は、処理すべきパートが残っていると判断して（ステップＳｂ４；ＹＥＳ）ステップＳｂ２に戻り、未処理であったパート３の処理を行う。
パート３の処理が終了すると、ＭＩＤＩデータマネージャ手段２４０はステップＳｂ３に進む。ここで、ＭＩＤＩデータマネージャ手段２４０はステップＳｂ２の処理が終了するまでの間に、その他のポートからイベント成立通知を受け取っていなかったとする。
【００３５】
これにより、ＭＩＤＩデータマネージャ手段２４０は、他のポートでイベントは成立していないと判断し（ステップＳｂ３；ＮＯ）、ステップＳｂ４に進む。
ＭＩＤＩデータマネージャ手段２４０は、このステップＳｂ４において、ポート１のイベントに関して処理すべきパートが残っているかを判断する。ここでは、ポート１のイベントに関する全てのパート処理が終了している。ＭＩＤＩデータマネージャ手段２４０は、ポート１のイベントに関する全てのパート処理が終了したと判断すると、ステップＳｂ１に戻り、以上説明した処理を繰り返し実行する。
【００３６】
このように、本実施形態に係るマルチポート音源は、１のポートにおいて成立しているイベントに関して処理すべきパートが複数あるような場合であっても、当該ポートの処理が集中して行われることはない（図１２参照）。従って、他のポートにおいて成立しているイベントの処理が遅延するといった問題を未然に防ぐことができる。
【００３７】
【発明の効果】
以上説明したように、本発明によれば、複数の入力ポートを介して入力されるイベントを均等に処理することができる音楽データ処理装置を提供することができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の第１の実施形態に係る音源装置１００の概略構成を示すブロック図である。
【図２】  同実施形態におけるＣＰＵ２００の制御機能を示す機能ブロック図である。
【図３】  同実施形態における音源装置１００にＭＩＤＩデータが入力される場合を例示した図である。
【図４】  同実施形態におけるイベント解釈手段２２０の動作を示すフローチャートである。
【図５】  イベントを構成するＭＩＤＩデータを示す図である。
【図６】  同実施形態におけるＭＩＤＩデータマネージャ手段２４０の動作を示すフローチャートである。
【図７】  同実施形態における音源装置１００に入力されるＭＩＤＩデータを模式的に示した図である。
【図８】  ポート、チャンネル及びパートの関係を示す図である。
【図９】  マルチパートの概念を説明するための図である。
【図１０】  同実施形態におけるデータ処理の流れを模式的に示した図である。
【図１１】  第２の実施形態におけるＭＩＤＩデータマネージャ手段２４０の動作を示すフローチャートである。
【図１２】  同実施形態におけるデータ処理の流れを模式的に示した図である。
【図１３】  従来の音源装置を説明するための図である。
【図１４】  従来の音源装置におけるデータ処理の流れを模式的に示した図である。
【符号の説明】
２１０−ｋ・・・シリアルデータ受信手段
２２０−ｋ・・・ＭＩＤＩイベント解釈手段
２３０−ｋ・・・ＭＩＤＩイベント記憶手段
２４０・・・ＭＩＤＩデータマネージャ手段
１００・・・音源装置
【図１】
0004240772.tif 000002
【図２】
0004240772.tif 000003
【図３】
0004240772.tif 000004
【図４】
0004240772.tif 000005
【図５】
0004240772.tif 000006
【図６】
0004240772.tif 000007
【図７】
0004240772.tif 000008
【図８】
0004240772.tif 000009
【図９】
0004240772.tif 000010
【図１０】
0004240772.tif 000011
【図１１】
0004240772.tif 000012
【図１２】
0004240772.tif 000013
【図１３】
0004240772.tif 000014
【図１４】
0004240772.tif 000015