(57)【要約】【課題】統一感ある表現豊かなアンサンブル演奏を可能とする自動演奏装置等を提供する。【解決手段】自動演奏装置を構成するパーソナルコンピュータのＣＰＵは、各操作子から操作情報を受け取ると、当該操作情報がマスタ操作子から送信されたものであるか、スレーブ操作子から送信されたものであるかを操作情報に含まれる識別情報等に基づき判断する。パーソナルコンピュータのＣＰＵは、常にマスタ操作子（主となる操作子）の次演奏位置（次に処理される発音イベントの位置）を確認し、スレーブ操作子（従となる操作子）の現演奏位置（発音イベントの位置）が、マスタ操作子の次演奏位置を越えないように制御する。【選択図】      図１３
2005043483.tif 000002
【特許請求の範囲】
【請求項１】
楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、
各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、
前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えないように前記発音処理手段による発音処理を制御する発音処理制御手段と
を具備することを特徴とする自動演奏装置。
【請求項２】
前記発音処理制御手段は、前記従となる操作子から操作信号が出力された場合、当該時点における前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置の直前まで達しているか否かを確認し、直前に達していない場合には、前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えない範囲で、前記操作信号に従って前記発音処理手段による発音処理を進めることを特徴とする請求項１に記載の自動演奏装置。
【請求項３】
楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、
各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、
前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置よりも所定量以上遅れている場合、前記従となる操作子に対応する発音イベントの位置を前記主となる操作子に対応する発音イベントの位置までスキップさせる発音位置制御手段と
を具備することを特徴とする自動演奏装置。
【請求項４】
コンピュータを、
各操作者によって操作されると操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と複数のチャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えないように前記発音処理手段による発音処理を制御する発音処理制御手段として機能させるプログラム。
【請求項５】
コンピュータを、
各操作者によって操作されると操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と複数のチャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置よりも所定量以上遅れている場合、前記従となる操作子に対応する発音イベントの位置を前記主となる操作子に対応する発音イベントの位置までスキップさせる発音位置制御手段として機能させるプログラム。
【請求項６】
楽音の発音内容を示す発音イベントを演奏データから順次読み出して自動演奏する自動演奏装置において、
操作者によって操作されると操作状況に応じた操作信号を出力する操作子と、前記操作信号が出力されると次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
前記操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、
前記時間間隔算出手段が算出した時間間隔と当該時間間隔において発音処理された発音イベントの音符の長さとからテンポを更新するテンポ更新手段と、
前記発音処理手段が処理をする発音イベントの発音長を前記テンポ更新手段によって更新されたテンポに対応する長さに制御する発音長制御手段と
を具備することを特徴とする自動演奏装置。
【請求項７】
前記発音処理手段は同時発音すべき発音イベントが複数ある場合はそれら全てを読み出して発音処理することを特徴とする請求項６に記載の自動演奏装置。
【請求項８】
楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを並行して順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、
操作者によって操作されると操作状況に応じた操作信号を出力する操作子と、
前記操作信号が出力されると予め決められた特定チャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する特定チャネル発音処理手段と、
前記操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、
前記間時間隔算出手段が算出した時間間隔と当該時間間隔において発音処理された発音イベントの音符の長さとからテンポを更新するテンポ更新手段と、
前記特定チャネル発音処理手段が処理をする発音イベントの発音長を前記テンポ更新手段によって更新されたテンポに対応する長さに制御する発音長制御手段と、
前記特定チャネル発音処理手段が処理をしている発音イベントから次の発音イベントまでの区間に存在する他のチャネルの発音イベントを、前記テンポ更新手段が更新したテンポに応じた速さで順次読み出し、読み出した発音イベントが示す発音内容に応じた発音処理をするとともに、各発音イベントの発音長を当該テンポに応じた長さに制御する他チャネル発音制御手段と
を具備することを特徴とする自動演奏装置。
【請求項９】
前記特定チャネル発音処理手段は特定チャネルに同時発音すべき発音イベントが複数ある場合はそれら全てを読み出して発音処理することを特徴とする請求項８に記載の自動演奏装置。
【請求項１０】
コンピュータを、
発音指示信号を受信すると次に発音すべき楽音の発音イベントを読み出し、当該発音イベントが示す発音内容に応じた発音処理をする発音処理手段と、
前記発音指示信号を受信した受信時刻を検出するとともに、前回の受信時刻との時間間隔を算出する時間間隔算出手段と、
前記時間間隔算出手段が算出した時間間隔と当該時間間隔において発音処理された発音イベントの音符の長さとの関係からテンポを更新するテンポ更新手段と、
前記発音処理手段が処理をする発音イベントの発音長を前記テンポ更新手段によって更新されたテンポに対応する長さに制御する発音長制御手段と
として機能させるプログラム。
【請求項１１】
コンピュータを、
発音指示信号を受信すると、予め決められた特定チャネルについて、次に発音すべき楽音の発音イベントを読み出し、当該発音イベントが示す発音内容に応じた発音処理をする特定チャネル発音処理手段と、
前記発音指示信号を受信した受信時刻を検出するとともに、前回の受信時刻との時間間隔を算出する時間間隔算出手段と、
前記時間間隔算出手段が算出した時間間隔と当該時間間隔において発音処理された発音イベントの音符の長さとからテンポを更新するテンポ更新手段と、
前記特定チャネル発音処理手段が処理をする発音イベントの発音長を前記テンポ更新手段によって更新されたテンポに対応する長さに制御する発音長制御手段と、
前記特定チャネル発音処理手段が処理をしている発音イベントから次の発音イベントまでの区間に存在する他のチャネルの発音イベントを、前記テンポ更新手段が更新したテンポに応じた速さで順次読み出し、読み出した発音イベントが示す発音内容に応じた発音処理をするとともに、各発音イベントの発音長を当該テンポに応じた長さに制御する他チャネル発音制御手段として機能させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アンサンブル演奏を簡単に行うことができる自動演奏装置及びプログラムに関する。
【０００２】
【従来の技術】
近年、電子楽器分野においては、楽器を全く演奏したことがない楽器演奏初心者であっても簡単にアンサンブル演奏が楽しめるような演奏装置が種々開発されている。かかる演奏装置として、自動演奏データを用いた自動演奏の各楽器のパートを各操作子に割り当て、各操作子の操作状態（例えば、「振る」、「叩く」、「傾ける」等）を検出することにより、各楽器に対応したパート音の音量、音色や演奏テンポなどを独自に変化させることができるものが提案されている（例えば、特許文献１参照）。
各操作子を操作する操作者は、操作子を「振る」といった簡単な操作により、該操作子に割り当てられたパートの演奏を制御することができ、これにより楽器演奏初心者であってもアンサンブル演奏の充実感を味わうことができる。
【０００３】
【特許文献１】
特開平２００１−３５０４７４号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、上記演奏装置においては、各パート演奏が各操作者による操作によって独自に制御されるため、例えば各操作者が自身の曲想に従って操作子に割り当てられたパートの演奏テンポ（進行）を変えると、当然に各パート間での演奏進行のずれは大きくなる。この結果、各パート演奏がばらばらになり、統一感ある表現豊かなアンサンブル演奏ができないという問題があった。
【０００５】
本発明は、以上説明した事情を鑑みてなされたものであり、統一感ある表現豊かなアンサンブル演奏を可能とする自動演奏装置及びプログラムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
上述した問題を解決するため、本発明に係る自動演奏装置は、楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えないように前記発音処理手段による発音処理を制御する発音処理制御手段とを具備することを特徴とする。
【０００７】
ここで、上記構成にあっては、前記発音処理制御手段は、前記従となる操作子から操作信号が出力された場合、当該時点における前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置の直前まで達しているか否かを確認し、直前に達していない場合には、前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えない範囲で、前記操作信号に従って前記発音処理手段による発音処理を進める態様が好ましい。
【０００８】
また、本発明に係る自動演奏装置は、楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、
前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置よりも所定量以上遅れている場合、前記従となる操作子に対応する発音イベントの位置を前記主となる操作子に対応する発音イベントの位置までスキップさせる発音位置制御手段とを具備することを特徴とする。
【０００９】
また、本発明に係る自動演奏装置は、楽音の発音内容を示す発音イベントを演奏データから順次読み出して自動演奏する自動演奏装置において、操作者によって操作されると操作状況に応じた操作信号を出力する操作子と、記操作信号が出力されると次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、前記操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、前記時間間隔算出手段が算出した時間間隔と当該時間間隔において発音処理された発音イベントの音符の長さとからテンポを更新するテンポ更新手段と、前記発音処理手段が処理をする発音イベントの発音長を前記テンポ更新手段によって更新されたテンポに対応する長さに制御する発音長制御手段とを具備することを特徴とする。
【００１０】
【発明の実施の形態】
以下、本発明に係る実施の形態について説明する。かかる実施の形態は、本発明の一態様を示すものであり、本発明の技術的思想の範囲で任意に変更可能である。
【００１１】
Ａ．本実施形態
＜実施形態の構成＞
図１は、本実施形態の構成を示す図である。同図において、操作子１−１，１−２，…，１−ｎ（ｎは整数）は、図３に示すように操作者Ａが手に持って自由に動かすことができる棒状の形状をしている。なお、操作子１−１〜１−ｎについて総称するときは、単に操作子１と記すことにする。
この操作子１には、その動きを検出するためのセンサが内蔵されている。本実施形態においては操作子１が振られていることを検出するための速度センサが内蔵されている。操作子１は振り下ろされた瞬間の速度センサの出力信号の変化に応じたピーク信号ＳＰ（すなわち、操作子１の操作状況に応じた操作信号）を出力するようになっている。なお、本実施形態においては、操作子１の振り下ろしが検出されればよいので、センサとしては他のもの（例えば加速度センサなど）を用いてもよい。また、操作子１は、各々自己を識別するための識別情報ＳＩＤを出力するようになっている。なお、各操作子１−１〜１−ｎの識別情報をＳＩＤ（１−１）〜ＳＩＤ（１−ｎ）と表記する。
操作子１は、ピーク信号ＳＰと識別情報ＳＩＤを含んだセンサ情報ＳＩを無線によって受信装置２に送信し、受信装置２はセンサ信号ＳＩをパーソナルコンピュータ３に供給するようになっている。なお、本実施形態においては、Ｂｌｕｅｔｏｏｔｈ（登録商標）による無線伝送方式が採用されるが、この伝送方式は任意である。
【００１２】
図２は、パーソナルコンピュータ３の構成を示すブロック図であり、受信装置２は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェイス（Ｉ／Ｆ）３０９に接続されている。そして、ＵＳＢインターフェイス３０９を介してセンサ情報ＳＩはＣＰＵ３０１に供給される。
同図において、ＣＰＵ３０１は、ＲＡＭ３０３の記憶領域をワークエリアとして利用し、ＲＯＭ３０２に格納されている各種プログラムを実行することで装置各部を制御する。ハードディスク装置（以下、ＨＤＤと記す）３０４には複数の演奏データが記憶されており、また、外部記憶装置３１０に挿入されるＣＤ−ＲＯＭにも複数の演奏データが記録されている。本実施形態において用いる演奏データは、ＭＩＤＩ規格によるものであるが、演奏データは楽音を指定する楽音パラメータの集合となっている。
自動演奏が指示されたときは、指定された演奏データがＨＤＤ３０４またはＣＤ−ＲＯＭより呼び出されて、ＲＡＭ３０３の演奏データ格納領域に格納される。演奏データ格納領域に格納された演奏データの各楽音パラメータは、ＣＰＵ３０１によって演奏の進行に沿って順次読み出されるようになっている。
【００１３】
表示部３０５は、ＣＰＵ３０１の制御の下に各種情報を表示する。キーボード３０６およびポインティングデバイス３０７は、操作者の操作に従って各種の指示や情報を入力する。また、ＭＩＤＩインターフェイス３０８は、パーソナルコンピュータ３と音源装置４との間でＭＩＤＩ規格の楽音パラメータの送受信を行うためのインターフェイスである。
次に、図１に示す音源装置４はパーソナルコンピュータ３から出力されたＭＩＤＩ規格の楽音パラメータを受信して、これに基づいて楽音信号を生成する。この楽音信号の生成においては、楽音パラメータデータが示す音高、音量、残響、ブライトネス、音像等に従って楽音信号が形成される。この楽音信号は、アンプ５へと供給され、アンプ５において楽音信号が増幅された後にスピーカ６にて放音される。
以上説明した受信装置２，パーソナルコンピュータ３，音源装置４，アンプ５，スピーカ６によって自動演奏装置１００が構成されている。
【００１４】
（演奏データの内容）
ここで、ＨＤＤ３０４またはＣＤ−ＲＯＭに記憶されている演奏データの構造について説明する。
本実施形態においては、上述したようにＭＩＤＩ規格による演奏データを用いて自動演奏を行う。演奏データを構成する楽音パラメータには、一つひとつの音符について音高、音長、ベロシティ（つよさ）などを示すもの、楽曲全体に影響を与えるもの（全体の音量、テンポ、残響や音像定位など）、あるいは特定のパートの全体に影響を与えるもの（パート別の残響や音像定位など）がある。
本実施形態においては、演奏の進行に応じて楽音パラメータを順次読み出して自動演奏処理を行うが、操作子１の操作に応じて楽曲の進行を制御するようになっている。
【００１５】
以下においては、本実施形態で用いる演奏データについて図４を参照して詳細に説明する。図４は行と列のマトリックスになっているので、まず、列について説明する。
第１列のデルタタイムは、イベントとイベントとの時間間隔を示しており、テンポクロックの数で表される。デルタタイムが「０」の場合は、直前のイベントと同時に実行される。
第２列には演奏データの各イベントが持つメッセージの内容が記述されている。このメッセージには、例えば発音イベントを示すノートオンメッセージ（ＮｏｔｅＯｎ）や消音イベントを示すノートオフメッセージ（ＮｏｔｅＯｆｆ）の他、音量やパンポット（音像定位）を指示するコントロールチェンジメッセージ（ＣｏｎｔｒｏｌＣｈａｎｇｅ）等が含まれる。
【００１６】
第３列にはチャネルの番号が記述されている。各チャネルは各々異なる演奏パートに対応し、複数のチャネルが同時に演奏されることにより、アンサンブル演奏がなされる。なお、メタイベントやシステムエクスクルーシブイベント等のチャネルに依存しないイベントデータについては、この第３列に値を持たない。
第４列には、ノートナンバ（ＮｏｔｅＮｕｍ）、プログラムナンバ（ＰｒｏｇＮｕｍ）あるいはコントロールナンバ（ＣｔｒｌＮｕｍ）が記述されるが、どれが記述されるかはメッセージの内容により異なる。例えばノートオンメッセージまたはノートオフメッセージであれば、ここには音階を表すノートナンバが記述され、またコントロールチェンジメッセージであればその種類（音量やパンポット等）を示すコントロールナンバが記述されている。
第５列にはＭＩＤＩメッセージの具体的な値（データ）が記述されている。例えばノートオンメッセージまたはノートオフメッセージであれば、ここには音の強さを表すベロシティの値が記述され、またコントロールチェンジメッセージであればコントロールナンバに応じたパラメータの値が記述されている。
【００１７】
次に、図４に示す各行について説明する。まず、第１行のヘッダー（Ｈｅａｄｅｒ）は時間単位を示している。「時間単位」とは分解能を示すものであり、４分音符あたりのテンポクロック数で表現される。図４においては「４８０」の値がセットされており、この場合は４分音符一つが４８０個分のテンポクロックの長さに対応することが指示されたことを意味している。
第２行のテンポ指令値（ＳｅｔＴｅｍｐｏ）は、演奏の速さを指定し、４分音符の長さをマイクロ秒で表す。例えば、４分音符＝１２０のテンポの場合、４分音符が１分間に１２０拍であるため、６０（秒）／１２０（拍）×１００００００＝５０００００（マイクロ秒）の値が、テンポ指令値の値としてセットされる。自動演奏はテンポクロックに基づく速さで行われるが、テンポクロックの周期は、テンポ指令値と時間単位の値に応じて制御されるようになっている。したがって、テンポ指令値（ＳｅｔＴｅｍｐｏ）が「５０００００」で時間単位が「４８０」の場合は、テンポクロックの周期は「１／９６０」となる。
第３行から第６行にはシステムエクスクルーシブメッセージが記述され、第７行から第１１行にはプログラムチェンジメッセージとコントロールチェンジメッセージが記述されている。これらは、楽曲全体に影響を与える楽音パラメータであるが、本実施形態の動作には関係がないので、その説明は割愛する。
【００１８】
次に、第１２行以降は、各チャネルの音符についての楽音パラメータとなっている。これらは発音を示すノートオンイベント（ＮｏｔｅＯｎ）と消音を示すノートオフイベント（ＮｏｔｅＯｆｆ）のメッセージで構成され、各イベントには音高を示すノートナンバ（ＮｏｔｅＮｕｍ）と、音の強さを示すベロシティ（Ｖｅｌｏｃｉｔｙ）が付加される。
ここで、図４に示す音符列がどのように演奏されるかを説明すると、まずチャネル「１」で「Ｃ４」、チャネル「２」で「Ｅ４」、チャネル「３」で「Ｇ４」、チャネル「４」で「Ｂ４」、チャネル「５」で「Ｃ３」が同時に発音される。それからデルタタイム「２４０」の後にチャネル「２」から「５」が一斉に消音する。このときチャネル「１」にはノートオフイベントが記述されていないので、チャネル「１」では引き続き「Ｃ４」の音が発音される。チャネル「２」から「５」においては、消音と同時に次の音が発音される。具体的にはチャネル「２」、「４」、「５」で「Ｆ４」、チャネル「３」で「Ａ４」の音が発音される。
以上のような手順で各チャネルの発音と消音が繰り返され、演奏が進行する。
すなわち、ＭＩＤＩデータを用いた一般的な自動演奏処理は、デルタタイムによって示される時間を待って次々とイベントを実行する、という処理を演奏が終了するまで繰り返す。ただし、本実施形態においては、デルタタイムに基づいた楽曲の進行の制御よりも、操作子１の操作に応じた楽曲の進行制御の方が優先される。その詳細については後述する。
【００１９】
（ＲＡＭ３０３に設定されるテーブルの内容）
次に、ＲＡＭ３０３に設定されるテーブルについて説明する。パーソナルコンピュータ３の電源投入時に起動されるＲＯＭ３０２のプログラムに基づき、ＣＰＵ３０１は、初期設定を行うが、このときＲＡＭ３０３の記憶領域にそれぞれ図５、図６に示されるようなテーブルを作成する。
図５に示すＴＢ１はチャネル設定テーブルであり、操作子とチャネルの対応関係が設定されている。なお、この対応関係は、キーボード３０６やポインティングデバイス３０７を操作することによって自由に変更することができる。
図６に示すＴＢ２は現在テンポテーブルであり、操作子１の操作（振り下ろしの間隔）に応じたテンポ値Ｔｅｍｐｏ・Ｒが格納される。このテンポ値Ｔｅｍｐｏ・Ｒは操作子１が振り下ろされる度に更新されるようになっている。なお、初期状態においては、演奏データに含まれているテンポ指令値（ＳｅｔＴｅｍｐｏ）の値が書き込まれるようになっている。
【００２０】
＜実施形態の動作＞
上記の構成によるこの実施形態の動作について説明する。
まず、この自動演奏装置１００には、各種の演奏モードが備わっており、操作者がキーボード３０６等を用いてモードの選択操作をすることにより、モードの選択や組み合わせが設定される。
各モードについて簡単に説明すると、まず、操作者が単独で演奏をする単独演奏モードと複数の操作者が異なるパートを同時に演奏する複数演奏モードがある。また、単独演奏モードと複数演奏モードのそれぞれにおいては、操作子１が振り下ろされる間隔（いわゆる楽曲の拍タイミング）に基づいてテンポが制御されるマニュアルモードと、操作子１が振り下ろされる度に、対応するチャネルのノートオンイベント（ＮｏｔｅＯｎ）が読み出されて発音されるノートモードとがある。以下、それぞれのモードの動作について説明する。
【００２１】
ａ：単一操作子演奏モード
このモードは、一人の操作者が単一の操作子を操作して一つまたは複数のパートの演奏を制御するモードである。この単一操作子演奏モードにおいては、ノートモードとマニュアルモードを選択することができる。さらに、単一操作子演奏モードにおいて複数のパートの演奏を制御する場合のノートモードには、ノート自動モードとノート伴奏モードの二つのモードがある。
（１）ノートモード
このモードは、操作子１が振り下ろされる度に、例えばメロディパートなど操作子に対応するチャネルのノートオンイベント（ＮｏｔｅＯｎ）が読み出されて発音されるとともに、例えば伴奏パートに対応するチャネルのノートオンイベント（ＮｏｔｅＯｎ）を操作子１の振り下ろしタイミングに応じて読み出して発音することにより、アンサンブル演奏を自動的に行うモードである。
【００２２】
（単独の演奏パートの演奏）
初めに、単独のパートを演奏する場合を例にとる。図７は単独のパートの一例を示す楽譜であり、図８はそれに対応した演奏データの一部である。なお、図８に示す演奏データにおいては、「時間単位」が「４８０」に設定されており（図４参照）、４分音符に相当するデルタタイムは「４８０」になっている。
まず、図８に示す演奏データを用いて、一般的な自動演奏を行った場合の動作を説明する。演奏の開始が指示されると、図２に示すＣＰＵ３０１は、図８に示す演奏データをＲＡＭ３０３の演奏データ格納領域に格納し、先頭のデータから順次読み出して処理してゆく。ノートイベントについては、まず、Ｅ３音のノートオンイベント（ＮｏｔｅＯｎ）が読み出され、ＭＩＤＩインターフェイス３０８を介して音源装置４に転送される。音源装置４は、Ｅ３音の楽音信号を生成し、この楽音信号はアンプ５で増幅された後にスピーカ６で放音される。
【００２３】
そして、デルタタイム「４８０」の後、すなわち、テンポクロックを４８０カウントした後に、Ｅ３音のノートオフイベント（ＮｏｔｅＯｆｆ）が読み出され、Ｅ３音が消音される。この結果、Ｅ３音は４分音符の長さだけ発音される。また、Ｅ３音のノートオフイベント（ＮｏｔｅＯｆｆ）に対しデルタタイム「０」のイベントであるＦ３音のノートオンイベント（ＮｏｔｅＯｎ）が、同時に読み出されて発音される。そして、デルタタイム「２４０」の後に、Ｆ３音のノートオフイベント（ＮｏｔｅＯｆｆ）が読み出され、Ｆ３音が消音される。これにより、Ｆ３音は８分音符の長さだけ発音される。以後、同様にして発音処理、消音処理が行われ、図７に示す楽曲の演奏が自動的に行われてゆく。なお、デルタタイムが「０」のＣ４音はＡ３音と同時に発音され、同様にＢ３音とＤ４音も同時に発音される。このようにして和音についても自動演奏が行われる。自動演奏のテンポは、テンポクロックの周期で決定されるが、テンポクロックの周期は前述したようにテンポ指令値（ＳｅｔＴｅｍｐｏ）で決定される（図４参照）。
【００２４】
以上の自動演奏によって各音符が発音された時刻を図７に示すように時刻ｔ１〜ｔ６とする。これらの時刻ｔ１〜ｔ６は、テンポ指令値（ＳｅｔＴｅｍｐｏ）に基づく一定のテンポで演奏を行った場合の各音符の発音時刻である。
次に、本実施形態における操作子１を用いた演奏について説明する。操作者は、まず、演奏開始を自動演奏装置１００に指示するために操作子１を振り下ろす（以下、この操作を前うち操作という）。操作者によって前うち操作がなされると、操作子１からは、上から下へ振り下ろした時の速度変化を表すピーク信号ＳＰが出力される。ピーク信号ＳＰは受信装置２を介してＣＰＵ３０１に供給される。ＣＰＵ３０１は、操作子１から最初のピーク信号ＳＰを受け取ると、操作者によって前うち操作がなされたと判断し、図６に示す現在テンポテーブルＴＢ２の現在テンポＴｅｍｐｏ・Ｒの値をテンポ指令値（ＳｅｔＴｅｍｐｏ）の値に設定する。そして、テンポクロックの周期を現在テンポＴｅｍｐｏの値に従って決定する。なお、前うち操作がなされた段階においては、自動演奏は開始されず、この段階においては演奏データ内のテンポ指令値（ＳｅｔＴｅｍｐｏ）に従ってテンポクロックが決定されていることになる。
【００２５】
次に、操作者が操作子１を振り下ろすと、振り下ろしたタイミングにおいてピーク信号（操作信号）ＳＰが出力される。ピーク信号ＳＰは受信装置２を介してＣＰＵ３０１に供給される。ＣＰＵ（発音処理手段）３０１は、ピーク信号ＳＰを受け取ると、図８に示すＥ３音のノートオンイベント（ＮｏｔｅＯｎ）を読み出し、これについて上述した場合と同様の発音処理を行う。このように本実施形態においては、前うち操作がなされた後に操作子１が振り下ろされてはじめて、自動演奏が開始される。
そして、発音されたＥ３音は、デルタタイム「４８０」をカウントしている間は発音が継続されるが、操作者が時刻ｔ２より早いタイミングで操作子１を再度振り下ろすと、この振り下ろしによってピーク信号ＳＰが出力されたタイミングでＥ３音のノートオフイベント（ＮｏｔｅＯｆｆ）、Ｆ３音のノートオンイベント（ＮｏｔｅＯｎ）が読み出され、それぞれ消音処理、発音処理がなされる。例えば、時刻ｔ１１で２度目の振り下ろし（前うち操作のための振り下ろしを除く；以下同様）があると、この時刻においてＥ３音が消音され、Ｆ３音が発音される。
【００２６】
一方、操作子１の２度目の振り下ろしが時刻ｔ２になっても行われない場合は、デルタタイム「４８０」をカウントし終えたタイミングで、ＣＰＵ３０１はＥ３音のノートオフイベント（ＮｏｔｅＯｆｆ）を読み出し、Ｅ３音を消音する。そして、ＣＰＵ３０１は、Ｆ３音のノートオンイベント（ＮｏｔｅＯｎ）を読み出さず、このイベントが格納されているＲＡＭ３０３の記憶エリアのアドレスをポインタに格納して自動演奏を一時中止する。すなわち、ＣＰＵ３０１は、現在発音中の音のノートオフイベント（ＮｏｔｅＯｆｆ）が読み出されても、次のピーク信号ＳＰが来ない場合は、次の音の発音処理に移行せず、自動演奏を一時中止する。また、次に発音すべきＦ３音が、Ｅ３音に対してデルタタイムが「０」でない場合（楽譜上は休符を挟んで位置している場合）も、次に発音すべきＦ３音のノートオンイベント（ＮｏｔｅＯｎ）が格納されている記憶エリアのアドレスをポインタに格納して自動演奏を一時中止する。
【００２７】
なお、場合によっては、消音の時刻が異なる複数の音を同時に発音していることもあるが、この場合には、最後に消音する音のノートオフイベント（ＮｏｔｅＯｆｆ）が読み出されるまでにピーク信号ＳＰが検出されなければ、次のノートオンイベント（ＮｏｔｅＯｎ）を読み出すことなく、自動演奏を一時中止する。
そして、自動演奏が中止された後に、操作者が操作子１を振り下ろすと、このタイミングにおいてピーク信号ＳＰが出力される。このピーク信号ＳＰがＣＰＵ３０１に検出されると、ＣＰＵ３０１はポインタから、次に発音すべき音のイベントが格納されているアドレスを読み出し、そのアドレスにあるノートオンイベント（ＮｏｔｅＯｎ）を実行する。図７、図８に示す例において時刻ｔ２１にピーク信号ＳＰが検出された場合は、この時刻においてＦ３音のノートオンイベント（ＮｏｔｅＯｎ）を読み出し、発音処理を行う。
【００２８】
また、上記処理においては、ＣＰＵ（間隔算出手段）３０１は、ピーク信号ＳＰを検出したときは、その時刻と一つ前にピーク信号ＳＰを検出した時刻との差を求める。すなわち、上記の場合は、（ｔ１１−ｔ１）あるいは（ｔ２１−ｔ１）を求める。そして、ＣＰＵ（テンポ更新手段）３０１は、この時間差に基づいてテンポを更新し、更新したテンポをテンポ値Ｔｅｍｐｏ・Ｒとして現在テンポテーブルＴＢ２に格納する。
新しいテンポは、ピーク信号ＳＰが出力された間隔と、その時発音していた音符の長さから決定される。図７，図８に示すＥ３音の場合は、４分音符であり、デルタタイムは「４８０」であるから、このデルタタイムに対するピーク信号ＳＰの出力間隔からテンポを求める。
【００２９】
例えば、時刻ｔ１１でピーク信号ＳＰが出力された場合は、デルタタイム「４８０」のカウントが終了していないから、ＣＰＵ３０１はＥ３音のノートオフイベント（ＮｏｔｅＯｆｆ）を探し、Ｅ３音のノートオンイベント（ＮｏｔｅＯｎ）からノートオフイベント（ＮｏｔｅＯｆｆ）までのデルタタイムと時間差（ｔ１１−ｔ１）とから新しいテンポを決定する。
上記の例の場合は、「時間単位」が「４８０」でテンポ指令値ＳｅｔＴｅｍｐｏ（初期値）が「５０００００」であるから、４分音符であるＥ３音の発音時間は「５０００００」マイクロ秒であり、テンポクロック周期は「１／９６０」である。そして、ピーク信号ＳＰの時間差（ｔ１１−ｔ１）が「４０００００」マイクロ秒であれば、テンポ値Ｔｅｍｐｏ・Ｒを「４０００００」に書き換える。そして、更新されたテンポ値Ｔｅｍｐｏ・Ｒに応じてテンポクロックの周期を変更する。これにより、テンポが早くなり、次の音であるＦ４音の発音時間は当初のテンポの場合より短くなる。一方、ピーク信号ＳＰの時間差（ｔ２１−ｔ１）が「６０００００」マイクロ秒であれば、テンポ値Ｔｅｍｐｏ・Ｒを「６０００００」に書き換える。そして、更新されたテンポ値Ｔｅｍｐｏ・Ｒに応じてテンポクロックの周期を変更する。これにより、テンポが遅くなり、次の音であるＦ４音の発音時間は当初のテンポの場合より長くなる。つまり、ＣＰＵ（発音長制御手段）３０１は、次の音であるＦ３音の発音長さについては、上記の如く更新したテンポに対応する長さに制御する。
なお、Ｅ３音が８分音符であったとすると、時間差（ｔ１１−ｔ１）あるいは（ｔ２１−ｔ１）は新たなテンポにおける８分音符の長さを示すものとなるから、これを４分音符に換算してテンポ値Ｔｅｍｐｏ・Ｒを更新する。
【００３０】
上記処理においては、時間差をそのまま用いてテンポ値Ｔｅｍｐｏ・Ｒを更新したが、テンポが大幅に変化するのを防止するため、時間差の変化分を用いてテンポを変化させたり、あるいはテンポ変化の上限値を設けてそれ以上の変化を許容しないように処理してもよい。
また、Ｅ３音のノートオフイベント（ＮｏｔｅＯｆｆ）が検出されるまでの間に、複数のデルタタイムが存在している場合は、それらのデルタタイムを全て加算したものとピーク信号の時間差とから、新しいテンポを求める。
また、上記処理においては、発音中の音のノートオフイベント（ＮｏｔｅＯｆｆ）が読み出されるまでにピーク信号ＳＰが検出されない場合は、自動演奏を一時中止するようにしたが、一時中止の状態が所定時間以上継続した場合は、テンポの更新を行わず、現在テンポテーブルＴＢに記憶されている一つ前のテンポ値Ｔｅｍｐ・Ｒの値でテンポクロックの周期を決めるようにしてもよい。これは、長時間曲が中断した場合に、その中断時間に基づいてテンポを設定すると、不自然に遅いテンポとなってしまい、楽曲の演奏にふさわしくないからである。なお、この場合には、初期のテンポであるテンポ指令値ＳｅｔＴｅｍｐｏを用いてもよい。
【００３１】
（複数の演奏パートの同時演奏）
（１−１）ノート自動モード
次に、一人の操作者が単一の操作子を操作して複数のパートを演奏する場合を説明するが、説明の簡略化のために２つのパートからなる曲を演奏する場合を例にとる。ここで、図９は２つのパートからなる曲を示す楽譜である。図９における上段がメロディ、下段が伴奏のパートであり、それぞれチャネル１（特定チャネル），チャネル２（他のチャネル）に割り振られている。なお、上段のメロディは、図７に示した楽譜と同じである。また、図１０は図９に示す楽譜に対応した演奏データを示す図である。
まず、メロディのパートについての操作子１の操作と演奏との関係は、上述の単独のパートを演奏する場合と同じである。伴奏のパートについては、メロディパートで発音されている音に対応する音のノートオンイベント（ＮｏｔｅＯｎ）が読み出されて同期を取りながら発音処理されるようになっている。別言するとこの複数の演奏パートの同時演奏においては、同時発音すべきイベントが複数ある場合（メロディパートのみに同時発音すべきイベントがある場合のみならず、メロディパート及び伴奏パートに同時に発音すべきイベントがある場合も含む）があり、かかる場合にはそれらが全て読み出されて発音処理されるようになっている。
【００３２】
一例を挙げて具体的に説明する。例えば、時刻ｔ１でメロディパート（チャネル１）のＥ３音のノートオンイベント（ＮｏｔｅＯｎ）が読み出されると、伴奏パート（チャネル２）のＣ３音のノートオンイベント（ＮｏｔｅＯｎ）が読み出され、それぞれの発音処理が行われる。その後、時刻ｔ２〜ｔ６において操作子１からピーク信号ＳＰが出力されると、メロディパートの音に対応した伴奏パートの音のノートオンイベント（ＮｏｔｅＯｎ）が読み出されて発音される。この場合、時刻ｔ５とｔ６においては、メロディパートの音に対し伴奏パートの音が複数対応するので以下のような処理内容となる。
【００３３】
時刻ｔ５において、メロディパートのＢ３音、Ｄ４音（４分音符）のノートオンイベント（ＮｏｔｅＯｎ）および伴奏パートのＧ３音、Ｂ３音（８分音符）のノートオンイベント（ＮｏｔｅＯｎ）が読み出されて発音処理される。次に、ＣＰＵ３０１は、ピーク信号ＳＰが検出されていないことを条件にして、デルタタイム「２４０」のカウントを続け、カウントが終了した時点で演奏データから伴奏パート（チャネル２）のＧ３音、Ｂ３音のノートオフイベント（ＮｏｔｅＯｆｆ）を読み出して消音処理を行うとともに、デルタタイム０のＧ３音、Ｂ３音のノートオンイベント（ＮｏｔｅＯｎ）を直ぐに読み出して発音処理を行う。そして、デルタタイム「２４０」をカウントする。このカウントにおけるテンポクロックの周期は、現在テンポテーブルＴＢ２（図６参照）のテンポ値Ｔｅｍｐｏ・Ｒによって決定される。つまり、直前のピーク信号ＳＰの出力間隔によって決定される。
【００３４】
そして、デルタタイム「２４０」のカウントが終了すると、メロディパートのＢ３音、Ｄ４音および伴奏パートのＧ３音、Ｂ３音のノートオフイベント（ＮｏｔｅＯｆｆ）を読み出し、これらの音の消音処理を行う。別言すると、ＣＰＵ（他チャネル発音制御手段）３０１は、ピーク信号ＳＰが検出されていないことを条件にして、ｔ５において処理をしているメロディパートのＢ３音、Ｄ４音（４分音符）のノートオンイベント（ＮｏｔｅＯｎ）から次のメロディパートのＣ４音（２分音符）のノートオンイベント（ＮｏｔｅＯｎ）までの区間に存在する伴奏パートのノートオンイベント（ＮｏｔｅＯｎ）等を、更新したテンポに応じた速さで順次読み出すとともに、これら伴奏パートの各ノートオンイベントの発音長さをそのテンポに応じた長さに制御する。以上の動作によって、メロディパートの一つの４分音符に対し、伴奏パートの２つの８分音符の演奏が自動的に行われる。また、時刻ｔ６においては、メロディパートのＣ４音（２分音符）に対して、伴奏パートのＧ３，Ａ３，Ｂ３，Ｃ４音（８分音符）が対応しているが、これらの処理についても上記と同様である。
【００３５】
次に、操作者がテンポを変更したときの伴奏音の発音処理について説明する。今、操作者が時刻ｔ４において操作子１を振り下ろした後、時刻ｔ５の前の時刻ｔ４１において再び操作子１を振り下ろしたとする。これにより、時刻ｔ４１においてピーク信号ＳＰが検出されるから、ＣＰＵ３０１はメロディパートの発音中の音（Ａ３音、Ｃ４音）を直ぐに消音処理し、同時に伴奏パートのＥ３音についても消音処理する。そして、メロディパートの次の音であるＢ３音、Ｄ４音のノートオンイベント（ＮｏｔｅＯｎ）を読み出すとともに、これらに対してデルタタイムが「０」である伴奏パートのＧ３音，Ｂ３音のノートオンイベント（ＮｏｔｅＯｎ）も読み出し、これらの音についての発音処理を行う。
また、上記とは逆に時刻ｔ４では操作子１が振り下ろされず、少し遅れた時刻ｔ４１において操作子１が振り下ろされた場合は、時刻ｔ３で発音されたメロディパートのＧ３音は、その時のテンポに応じた長さだけ発音された後、消音処理され、これに対応する伴奏パートのＥ３音、Ｇ３音もメロディパートのＧ３音とともに消音処理される。その後は、ピーク信号ＳＰの検出待ちとなり、時刻ｔ４１でピーク信号ＳＰが検出された時点でメロディパートのＢ３音、Ｄ４音および伴奏パートのＧ３音，Ｂ３音が発音される。
【００３６】
以上のように、操作者の操作に対応したメロディ音の発音、消音処理が行われ、これに同期して伴奏音の発音、消音処理が行われるようになっている。
また、時刻ｔ６でメロディパートのＣ４音が発音され、これに伴って伴奏パートのＧ３音が発音、消音処理され、続いてＡ３音が発音、消音処理された後、時刻ｔ６１においてピーク検出信号ＳＰが検出されると、ＣＰＵ３０１はメロディパートの次の音であるＥ３音のノートオンイベントを読み出して発音処理するとともに、伴奏パートのＢ３音、Ｃ４音（８分音符）の処理をスキップし、発音を行わない。
以上のように、メロディパートの演奏が優先され、伴奏パートの発音、消音処理はメロディパートに追従するように制御される。
【００３７】
（１−２）ノート伴奏モード
次に、ノート伴奏モードについて説明する。このモードは伴奏パートについては、演奏データによって指定されるテンポに基づいて自動演奏を行う、いわゆる通常の自動演奏処理となる。そして、メロディパートについては、前述した単独の演奏パートの動作と同じである。このモードにおいては、伴奏パートとメロディパートの同期は取られない。なお、いずれのチャネルを伴奏パートにするかメロディパートにするかは操作者が任意に設定すればよい。
このモードは、操作者が伴奏パートの自動演奏を聞きながら、自由にメロディの発音タイミングを指示するときに用いられるモードである。
【００３８】
（２）マニュアルモード
このモードは全てのチャネルについて、通常の自動演奏と同じ動作を行うが、テンポについては操作者の操作に従って変化する。
すなわち、操作者が１拍（あるいは２拍）のタイミングで操作子１を振り下ろすと、その振り下ろし間隔に相当するピーク信号の間隔等がＣＰＵ３０１によって検出され、上述の場合と同様にして、ピーク信号の間隔等からテンポを逐次更新してゆく。この更新されたテンポは現在テンポテーブルＴＢ２にテンポ値Ｔｅｍｐｏ・Ｒとして格納され、このテンポ値Ｔｅｍｐｏ・Ｒによってテンポクロックの周期が決定される。したがって、操作子１が振り下ろされる間隔に応じて自動演奏のテンポが変化する。なお、この動作は演奏するパートが単一・複数にかかわらず、同様である。
【００３９】
＜変形例＞
以上説明した動作例では、操作子１の振り下ろし操作を検出する毎に（すなわち１回のピークを検出する毎に）、１音符ずつ演奏を進める場合について説明したが、上記振り下ろし操作を検出する毎に複数の音符を進めるようにしても良い。かかる場合には、検出したピークに続く音符については、既に求めたテンポ値Ｔｅｍｐｏ・Ｒを利用して演奏を進めれば良い。なお、検出したピークに続く音符が休符（４分休符等）である場合も上記テンポ値Ｔｅｍｐｏ・Ｒを利用して演奏を進めれば良い。
【００４０】
ｂ：複数操作子演奏モード
このモードは、複数の操作者がそれぞれ操作子を操作して、各自に割り当てられたパートの演奏を制御することにより、複数パートからなる楽曲の演奏を制御するモードである。この複数演奏モードにおいては、例えばメロディパートについてはノートモードで演奏制御を行う一方、伴奏パートについてはマニュアルモードで演奏制御を行うといった選択を行うことができる。
複数操作子演奏モードにて演奏を試みる操作者は、まず、自動演奏装置１００のキーボード３０６等を操作して楽曲の選択、及び各操作子に対するパートの割り当てを行う。例えば、２人の操作者（第１操作者及び第２操作者）で演奏する場合には、操作者は操作子１−１（第１操作者用）に対してメロディパートを割り当て、操作子１−２（第２操作者用）に対して伴奏パートを割り当てるといった選択を行う。なお、以下の説明では、メロディパートが割り当てられた操作子１−１をマスタ操作子１−１と呼び、伴奏パートが割り当てられた操作子１−２をスレーブ操作子１−２と呼ぶ。
かかる操作を行うと、操作者は、さらにキーボード３０６等を操作してメロディパート及び伴奏パートの各々についてノートモード若しくはマニュアルモードの選択を行う。この結果、ＲＡＭ（記憶手段）３０３の所定エリアには、チャネル番号、各操作子を識別するための識別情報、各操作子に対する演奏パートの割り当て、各演奏パートの演奏制御モードの割り当て（属性情報）等が記述された複数演奏モード管理テーブルＴＡ１が格納される（図１１参照）。いいかえると、ＲＡＭ３０３の所定エリアには、各操作子と各チャネルとの対応関係及び各操作子の主従関係（いずれの操作子がマスタ操作子となり、いずれの操作子がスレーブ操作子となるか）等が記述された複数演奏モード管理テーブル（操作関連情報）ＴＡ１が格納される。
以下、マスタ操作子１−１及びスレーブ操作子１−２がともにノートモードに設定された場合の動作について説明する。
【００４１】
自動演奏装置１００のＣＰＵ３０１は、演奏制御に必要な選択等を受け付けると、操作者によって選択された楽曲に対応する演奏データをＨＤＤ３０４から読み出し、これをＲＡＭ３０３の演奏データ格納領域に転送する。一方、各操作者（若しくはいずれか一方の操作者）は、演奏開始を自動演奏装置１００に指示すべく、前述した前うち操作を行う。かかる操作がなされると、操作子１からピーク信号ＳＰが出力され、ＣＰＵ３０１に供給される。ＣＰＵ３０１は、操作子１から最初のピーク信号ＳＰを受け取ると、操作者によって前うち操作がなされたと判断し、図６に示す現在テンポテーブルＴＢ２の現在テンポＴｅｍｐｏ・Ｒの値をテンポ指令値（ＳｅｔＴｅｍｐｏ）の値に設定する。
【００４２】
その後、各操作者によって演奏進行操作（すなわち操作子１の振り下ろし）が開始されると、各操作子１においてピーク信号ＳＰが生成される。各操作子１は生成したピーク信号（操作信号）ＳＰと当該操作子１を識別するための識別情報ＳＩＤとを、操作情報として受信装置２に送信する。ＣＰＵ（発音処理手段）３０１は、受信装置２を介して操作情報を受け取ると、複数演奏モード管理テーブル（操作関連情報）ＴＡ１を参照し、受け取った操作情報に含まれる識別情報ＳＩＤに対応するパートの楽音をノートオンイベント等を読み出して発音処理等を行い、演奏を進めてゆく。
この演奏について図１２を参照しながら説明すると、メロディパートの演奏については、ＣＰＵ３０１は、マスタ操作子１−１の操作を検出する度に（すなわち、操作情報を受信する度に）、この検出タイミングで対応する楽音を発音し、１音符ずつ演奏を進める（図に示すｔ１〜ｔ７参照）。なお、この際、マスタ操作子１−１の操作（ピーク）を検出してから次の操作（ピーク）を検出するまでの時間と音符の長さとに基づいて逐次テンポ計算するのは前述したとおりである。
【００４３】
一方、伴奏パートの演奏については、ＣＰＵ３０１は、スレーブ操作子１−２の操作を検出するタイミング（図１３〜図１６に示すケース１〜ケース４参照）に応じて下記４通りの処理のいずれかを実行する。なお、ＣＰＵ３０１は、受信した操作情報に含まれる識別情報ＳＩＤを参照することにより、マスタ操作子１−１からの操作情報であるか、或いはスレーブ操作子１−２からの操作情報であるかを判断する。ここで、上記各図に示すマスタ演奏とは、マスタ操作子１−１によって演奏制御されるメロディパートの演奏を意味し、スレーブ演奏とは、スレーブ操作子１−２によって演奏制御される伴奏パートの演奏を意味する。また、各図に示す黒丸及び白丸は、マスタ演奏若しくはスレーブ演奏の演奏位置を表しており、黒丸は、既演奏位置（既に演奏された位置）、白丸は未演奏位置（未だ演奏されていない位置）を表している。
【００４４】
（ケース１）
ＣＰＵ（発音処理制御手段）３０１は、常にマスタ操作子（主となる操作子）１−１の次演奏位置（次に処理される発音イベントの位置）を確認し、スレーブ操作子（従となる操作子）１−２の現演奏位置（発音イベントの位置）が、マスタ操作子１−１の次演奏位置を越えないように制御する。例えば、図１３のＡに示すように、ＣＰＵ３０１がマスタ操作子１−２から操作情報を受け取った時点において、マスタ演奏の演奏位置（現演奏位置）が「２」まで進んでおり、スレーブ演奏の演奏位置がマスタ演奏の未演奏位置（次演奏位置）「３」の直前まで進んでいる状態においてスレーブ操作端末１−２の操作を検出した場合には、スレーブ演奏についてはマスタ演奏よりも先に進ませないという原則のもと、スレーブ演奏を進ませない。かかる場合には、図１３のＢに示すように、マスタ演奏が演奏位置「３」に進んでからスレーブ操作子１−２の操作を検出したときにスレーブ演奏を進ませる。ただし、この場合にスレーブ演奏を進ませることができるのは、あくまでマスタ演奏の未演奏位置「４」の直前までに限られる。いいかえれば、上記の場合、スレーブ演奏については、マスタ演奏の未演奏位置「４」を越えない範囲でスレーブ演奏を進ませることができる。
【００４５】
（ケース２）
また、図１４のＡに示すように、楽曲の途中の間奏部分など、メロディパートの演奏が途切れて伴奏パートの演奏のみが行われるような部分においてスレーブ操作子１−２の操作を検出すると、ＣＰＵ３０１は、このスレーブ操作子１−２の操作を検出するタイミングでスレーブ演奏を進ませる。ただし、スレーブ演奏を進ませることができるのは、あくまで伴奏パートの演奏のみが行われる部分に限られる。いいかえれば、スレーブ演奏を進ませることができるのは、図１４のＢに示すようにマスタ演奏が再開される未演奏位置「１」の直前までに限られる。なお、スレーブ演奏の演奏位置が間奏部分の演奏位置であるか否かについては、楽曲データ中のメロディパートの楽音パラメータと伴奏パートの楽音パラメータとを比較等して判断すれば良い。
【００４６】
（ケース３）
また、ＣＰＵ３０１は、スレーブ操作子１−２の操作を検出するタイミングがマスタ操作子１−１の操作を検出するタイミングと同時、若しくはマスタ操作子１−１の操作を検出してから所定時間（３００（ｍｓ）等）内である場合には、スレーブ操作子１−２の操作を検出するタイミングでスレーブ演奏を進ませる。例えば、図１５のＡに示すように、スレーブ演奏の演奏位置がマスタ演奏の未演奏位置「３」の直前まで進んでいる場合、マスタ操作子１−１の操作を検出すると同時にスレーブ操作子１−２の操作を検出すると、ＣＰＵ３０１は、図１５のＢに示すように、マスタ演奏を演奏位置「３」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置「３」に対応する位置まで進ませる。なお、上記所定時間内にさらにスレーブ操作子１−２の操作を検出した場合には、スレーブ演奏を進ませることができるが、進ませることができるのは、あくまでマスタ演奏の未演奏位置「４」の直前までに限られる。
【００４７】
（ケース４）
また、ＣＰＵ（発音位置制御手段）３０１は、スレーブ演奏がマスタ演奏から所定量以上遅れている場合（例えばスレーブ演奏が停止されていた等により４分音符１つ分以上等）にスレーブ操作子１−２の操作を検出すると、スレーブ演奏の演奏位置をマスタ演奏の演奏位置までスキップして進ませる。例えば、図１６のＡに示すように、マスタ演奏の演奏位置が「３」であり、かつ、スレーブ演奏の演奏位置がマスタ演奏の演奏位置「２」に対応する位置に存在する場合、マスタ操作子１−１の操作を検出すると同時にスレーブ操作子１−２の操作を検出すると、ＣＰＵ３０１は、図１６のＢに示すように、マスタ演奏を演奏位置「４」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置「４」に対応する位置までスキップさせる。この結果、スキップしてとばされた音符列（図１６に示すＭ参照）については演奏されずにスキップ後の演奏位置に対応する音符が発音されることになる。
【００４８】
以上説明したように、マスタ操作子１−１及びスレーブ操作子１−２がともにノートモードに設定されている場合には、たとえスレーブ操作子１−２の操作がマスタ操作子１−１の操作より先行して行われたとしても、スレーブ演奏はマスタ演奏よりも決して先に進まない。ただし、スレーブ操作子１−２の操作に応じて進行するスレーブ演奏がマスタ操作子１−１の操作に応じて進行するマスタ演奏よりも遅れている場合には、スレーブ演奏とマスタ演奏とを同期させるべく、スレーブ演奏の演奏位置をマスタ演奏の演奏位置までスキップさせる。これにより、たとえ第２操作者が演奏途中においてスレーブ操作子１−２の操作をいったん停止したとしても、単にスレーブ操作子１−２の操作を再開するだけで（すなわちスレーブ演奏とマスタ演奏との同期を図るために煩雑な操作をすることなしに）スレーブ演奏とマスタ演奏とを同期させることができる。
【００４９】
上記例では、マスタ操作子１−１及びスレーブ操作子１−２がともにノートモードに設定されている場合について説明した。これに対し、以下に示す例では、マスタ操作子１−１がノートモードに設定され、スレーブ操作子１−２がマニュアルモードに設定されている場合について説明する。ただし、マニュアルモードに設定されている場合の動作については、以下に示すケース４’（上記ケース４に対応）を除き、上記ケース１〜３とほぼ同様に説明することができるため割愛する。
【００５０】
（ケース４’）
ＣＰＵ（発音位置制御手段）３０１は、上記ケース４と同様、スレーブ演奏がマスタ演奏から所定量以上遅れている場合（例えばスレーブ演奏が停止されていた等により１拍分以上等）にスレーブ操作子１−２の操作を検出すると、スレーブ演奏の演奏位置をマスタ演奏の演奏位置に対応する拍子位置までスキップして進ませる。詳述すると、例えば、図１７のＡに示すように、マスタ演奏の演奏位置が「５」であり、かつ、スレーブ演奏の演奏位置がマスタ演奏の演奏位置「２」に対応する位置に存在する場合、マスタ操作子１−１の操作を検出すると同時にスレーブ操作子１−２の操作を検出すると、ＣＰＵ３０１は、図１７のＢに示すように、マスタ演奏を演奏位置「６」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置に対応する拍子位置（図１７では３拍目の頭の位置）までスキップさせる。このように、スレーブ操作子１−２がマニュアルモードに設定された場合には、スレーブ演奏の演奏位置をマスタ演奏の演奏位置と同じ位置までスキップさせるのではなく、マスタ演奏の演奏位置に対応する拍子位置までスキップさせる。この結果、スキップしてとばされた音符列（図１７に示すＭ参照）については演奏されずにスキップ後の演奏位置に対応する音符が発音されることになる。このように、スレーブ操作子１−２がマニュアルモードに設定されている場合についても、スレーブ演奏とマスタ演奏とを同期させることが可能となる。
【００５１】
＜変形例＞
以上説明した動作例では、マスタ操作子１−１をノートモードに設定し、スレーブ操作子１−２をノートモード若しくはマニュアルモードに設定した場合について説明したが、例えばマスタ操作子１−１をマニュアルモードに設定し、スレーブ操作子１−２をノートモード若しくはマニュアルモードに設定しても良いのはもちろんである。また、上記動作例では、メロディパートが割り当てられた操作子１−１をマスタ操作子１−１とし、伴奏パートが割り当てられた操作子１−２をスレーブ操作子１−２としたが、これとは逆に伴奏パートが割り当てられた操作子をマスタ操作子とし、メロディパートが割り当てられた操作子をスレーブ操作子とするなど、どのパートが割り当てられた操作子をマスタ操作子若しくはスレーブ操作子とするかは適宜変更可能である。また、該動作例では２人の操作者が２つの操作子１を利用して同期演奏する場合について説明したが、３人以上の操作者が３つ以上の操作子１を利用して同期演奏しても良いのはもちろんである。
【００５２】
また、上記動作例では、スレーブ操作子１−２の操作が停止してから当該操作が再開されるまでの間、スレーブ演奏（すなわち伴奏パートの演奏）が停止する構成であったが、例えばスレーブ操作子１−２の操作が停止した場合であっても、スレーブ演奏を継続させるべく、マスタ操作子１−１の操作タイミングに同期してスレーブ演奏を自動継続し、スレーブ操作子１−２の操作が再開されたとき、当該操作を反映させて（すなわち当該操作タイミングで）スレーブ演奏を行うようにしても良い。なお、スレーブ操作子１−２の操作が停止したか否かについては、スレーブ操作子１−２の操作を検出してから所定時間内（例えば５００（ｍｓ）内）に次の操作が検出されたか否かに基づき判断すれば良い。
【００５３】
また、上記動作例では、各操作子の操作（ピーク）を検出してから次の操作（ピーク）を検出するまでの時間と音符の長さとに基づいて逐次テンポ計算する場合について説明したが、例えば各操作子の操作（ピーク）の大きさを検出し、このピークの大きさをボリュームに反映させても良い。図１８は、ＲＡＭ３０３に格納されているボリューム管理テーブルＴＡ２を例示した図である。
ボリューム管理テーブルＴＡ２には、ピーク信号ＳＰの値ｐｓｐとボリューム値ｖとが対応づけて登録されている。図１８に示すように、ボリューム値ｖは、ピーク信号ＳＰの値ｐｓｐに略比例して大きくなるように設定されている。ＣＰＵ３０１は、各操作子１から操作情報を受信すると、この操作情報に示されるピーク信号ＳＰの値とボリューム管理テーブルＴＡ２とを参照し、ボリューム値ｖを決定する。この結果、例えば、操作者が操作子１を上から下に小さく振り下ろした場合には制御対象となるパート（例えばメロディパート）の演奏音は小さくなり、逆に大きく振り下ろした場合には該パートの演奏音は大きくなる。このように、操作子１の操作を演奏音のボリュームに反映させるようにしても良い。なお、ピークの大きさをボリュームに反映させる点については単独演奏モードについても適用可能である。
【００５４】
なお、以上説明した本実施形態に係るＣＰＵ３０１の諸機能は、ＲＯＭ３０２等のプログラムによって実現されるため、かかるプログラムについてＣＤ−ＲＯＭ等の記録媒体に記録して頒布したり、インターネット等の通信ネットワークを介して頒布しても良い。もちろん、上記諸機能を実現するＣＰＵ３０１、ＲＯＭ３０２等を組み込んだ専用装置として構成することも可能である。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、統一感ある表現豊かなアンサンブル演奏が可能となる。
【図面の簡単な説明】
【図１】本実施形態の構成を示す図である。
【図２】同実施形態に係るパーソナルコンピュータの構成を示すブロック図である。
【図３】同実施形態に係る操作子の操作態様を例示した図である。
【図４】同実施形態に係る演奏データの構造を例示した図である。
【図５】同実施形態に係るチャネル設定テーブルを例示した図である。
【図６】同実施形態に係る現在テンポテーブルを例示した図である。
【図７】同実施形態に係る１つのパートの一例を示す楽譜である。
【図８】図７に示す楽譜に対応する演奏データを例示した図である。
【図９】同実施形態に係る２つのパートの一例を示す楽譜である。
【図１０】図９に示す楽譜に対応する演奏データを例示した図である。
【図１１】同実施形態に係る複数演奏モード管理テーブルを例示した図である。
【図１２】同実施形態に係る複数演奏モードにおける演奏状態を説明するための図である。
【図１３】同演奏モードにおけるケース１の演奏状態を説明するための図である。
【図１４】同演奏モードにおけるケース２の演奏状態を説明するための図である。
【図１５】同演奏モードにおけるケース３の演奏状態を説明するための図である。
【図１６】同演奏モードにおけるケース４の演奏状態を説明するための図である。
【図１７】同演奏モードにおけるケース４’の演奏状態を説明するための図である。
【図１８】同実施形態に係るボリューム管理テーブルを例示した図である。
【符号の説明】
１・・・操作子、２・・・受信装置、３・・・パーソナルコンピュータ、４・・・音源装置、５・・・アンプ、６・・・スピーカ、３０１・・・ＣＰＵ、３０２・・・ＲＯＭ、３０３・・・ＲＡＭ、３０４・・・ＨＤＤ、３０５・・・表示部、３０６・・・キーボード、３０７・・・ポインティングデバイス、ＴＢ１・・・チャネル設定テーブル、ＴＢ２・・・現在テンポテーブル、ＴＡ１・・・複数演奏モード管理テーブル、ＴＡ２・・・ボリューム管理テーブル。
【図１】
2005043483.tif 000003
【図２】
2005043483.tif 000004
【図３】
2005043483.tif 000005
【図４】
2005043483.tif 000006
【図５】
2005043483.tif 000007
【図６】
2005043483.tif 000008
【図７】
2005043483.tif 000009
【図８】
2005043483.tif 000010
【図９】
2005043483.tif 000011
【図１０】
2005043483.tif 000012
【図１１】
2005043483.tif 000013
【図１２】
2005043483.tif 000014
【図１３】
2005043483.tif 000015
【図１４】
2005043483.tif 000016
【図１５】
2005043483.tif 000017
【図１６】
2005043483.tif 000018
【図１７】
2005043483.tif 000019
【図１８】
2005043483.tif 000020