(57)【特許請求の範囲】
【請求項１】
操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、
該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、
操作者が音楽制御の難易度を調節するための難易度調節手段と、
自動演奏データを記憶する自動演奏データ記憶手段と、
該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、
該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、
前記音楽制御信号発生手段により発生された音楽制御信号および前記自動演奏手段により読み出された自動演奏データに基づいて、前記音楽制御手段が音楽特性制御に用いる音楽制御値を算出する音楽制御値算出手段と
を有し、
該音楽制御手段は、前記難易度調節手段により調節された難易度に応じて前記算出された音楽制御値を変更し、該変更後の音楽制御値に基づいて自動演奏の音楽特性を制御することを特徴とする音楽制御装置。
【請求項２】
操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、
該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、
操作者が音楽制御の難易度を調節するための難易度調節手段と、
自動演奏データを記憶する自動演奏データ記憶手段と、
該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、
該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、
音楽制御値を所定個記憶するための記憶領域を備えた音楽制御値記憶手段と、
前記音楽制御信号発生手段により発生された音楽制御信号および前記自動演奏手段により読み出された自動演奏データに基づいて、前記音楽制御手段が音楽特性制御に用いる音楽制御値を算出する音楽制御値算出手段と
を有し、
前記音楽制御値算出手段は、
前記記憶領域に記憶された音楽制御値を、新たな音楽制御値が算出される度に更新する更新手段と、
前記難易度調節手段により調節された難易度に応じて、前記記憶された音楽制御値から所定個の音楽制御値を選択し、該選択された所定個の音楽制御値と当該音楽制御値算出手段により新たに算出された音楽制御値とを平均化する平均化手段と
を有し、前記音楽制御値の算出は、平均化による算出を含むものであり、
前記音楽制御手段は、前記平均化された音楽制御値に基づいて自動演奏の音楽特性を制御するとともに、前記難易度調節手段により調節された難易度に応じて前記算出された音楽制御値を変更し、該変更後の音楽制御値に基づいて自動演奏の音楽特性を制御する
ことを特徴とする音楽制御装置。
【請求項３】
前記難易度調節手段により調節された難易度に応じて、前記音楽制御値算出手段により算出された音楽制御値を変更する際の上限値または下限値を変更する変更手段を有することを特徴とする請求項１に記載の音楽制御装置。
【請求項４】
前記難易度調節手段により調節された難易度に応じて、前記音楽制御値算出手段により算出された音楽制御値を変更する際の変化幅を変更する変化幅変更手段を有することを特徴とする請求項１または３のいずれかに記載の音楽制御装置。
【請求項５】
前記自動演奏データ記憶手段は、前記自動演奏データとともに所定タイミング毎に音楽制御用マークデータを記憶し、
前記自動演奏手段は、該記憶された音楽制御用マークデータから、前記難易度調節手段により調節された難易度に応じて所定数の音楽制御用マークデータを読み飛ばし、
前記音楽制御値算出手段は、該読み出された音楽制御用マークデータおよび前記発生された音楽制御信号に基づいて音楽制御値を算出することを特徴とする請求項１記載の音楽制御装置。
【請求項６】
前記自動演奏データ記憶手段は、前記自動演奏データとともに、該自動演奏データ固有の音楽特性に追従すべき程度であって、当該自動演奏の音楽特性を制御する際の追従の程度を示す追従度データを記憶し、
前記自動演奏手段は、該記憶された追従度データを読み出し、
前記音楽制御手段は、前記難易度調整手段によって調節された難易度に応じて、前記読み出された追従度データによって示される追従の程度の高低を変更し、該変更後の追従の程度に基づいて自動演奏の音楽特性を制御することを特徴とする請求項１記載の音楽制御装置。
【請求項７】
前記追従度データは、曲の途中に、少なくとも１つ以上埋め込まれ、曲の進行に従って前記自動演奏手段が前記追従度データを読み出し、該読み出された追従度データによって示される追従度の程度の高低が、前記調節された難易度に応じて変化することを特徴とする請求項６記載の音楽制御装置。
【請求項８】
前記動作検出手段は、操作者の揺動動作に基づく運動を検出することを特徴とする請求項１記載の音楽制御装置。
【請求項９】
前記動作検出手段は、センサの個数を多くすることで操作者の動作に基づく運動を複数種類検出し、該検出された複数種類の運動を総合的に判断して、前記動作検出信号を出力することを特徴とする請求項１記載の音楽制御装置。
【請求項１０】
操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、
該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、
操作者が音楽制御の難易度を調節するための難易度調節手段と、
自動演奏データを記憶する自動演奏データ記憶手段と、
該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、
該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、
前記難易度調節手段により調節された難易度が易から難に行くに従って、当該自動演奏の音楽特性を制御する際の追従の程度が高くなって行くように変更する変更手段とを有し、
前記音楽制御手段は、前記変更手段によって変更された追従の程度に応じて、当該自動演奏の音楽特性を制御することを特徴とする音楽制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、テンポ、ダイナミクスおよび音源パラメータ等をリアルタイムに制御できる音楽制御装置に関する。
【０００２】
【従来の技術】
従来、テンポ、ダイナミクスおよび音源パラメータ等の音楽情報をリアルタイムに制御できる音楽制御装置として、予め設定された初期音楽情報によって演奏を開始し、その後に操作者が音楽制御のための信号出力装置を操作することにより、その操作方向や強さに応じて音楽情報をリアルタイムに制御するように構成されたものは知られている（例えば特開平６−２７９５７号公報には、音楽情報としてテンポを制御するようにしたものが開示されている）。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の音楽制御装置では、操作者は曲や装置への自分の習熟度に合わせて音楽制御の難易度（換言すれば、安定度または音楽表現力）を調節することができないために、習熟度が向上した操作者にとっては物足りなさを感じるようになり、また、初心者や習熟度が向上した操作者であっても初めて演奏する曲に対しては、思い通りの音楽制御を行うことができないことがあった。
【０００４】
本発明は、上記問題に鑑みてなされたもので、操作者が曲や装置への自分の習熟度に合わせて音楽特性制御の難易度（安定度または音楽表現力）を調節することが可能な音楽制御装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため本発明は、操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、操作者が音楽制御の難易度を調節するための難易度調節手段と、自動演奏データを記憶する自動演奏データ記憶手段と、該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、前記音楽制御信号発生手段により発生された音楽制御信号および前記自動演奏手段により読み出された自動演奏データに基づいて、前記音楽制御手段が音楽特性制御に用いる音楽制御値を算出する音楽制御値算出手段とを有し、該音楽制御手段は、前記難易度調節手段により調節された難易度に応じて前記算出された音楽制御値を変更し、該変更後の音楽制御値に基づいて自動演奏の音楽特性を制御することを特徴とする。
【０００６】
上記目的を達成するため本発明は、操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、操作者が音楽制御の難易度を調節するための難易度調節手段と、自動演奏データを記憶する自動演奏データ記憶手段と、該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、音楽制御値を所定個記憶するための記憶領域を備えた音楽制御値記憶手段と、前記音楽制御信号発生手段により発生された音楽制御信号および前記自動演奏手段により読み出された自動演奏データに基づいて、前記音楽制御手段が音楽特性制御に用いる音楽制御値を算出する音楽制御値算出手段とを有し、前記音楽制御値算出手段は、前記記憶領域に記憶された音楽制御値を、新たな音楽制御値が算出される度に更新する更新手段と、前記難易度調節手段により調節された難易度に応じて、前記記憶された音楽制御値から所定個の音楽制御値を選択し、該選択された所定個の音楽制御値と当該音楽制御値算出手段により新たに算出された音楽制御値とを平均化する平均化手段とを有し、前記音楽制御値の算出は、平均化による算出を含むものであり、前記音楽制御手段は、前記平均化された音楽制御値に基づいて自動演奏の音楽特性を制御するとともに、前記難易度調節手段により調節された難易度に応じて前記算出された音楽制御値を変更し、該変更後の音楽制御値に基づいて自動演奏の音楽特性を制御することを特徴とする。
【０００７】
また、好ましくは、前記難易度調節手段により調節された難易度に応じて、前記音楽制御値算出手段により算出された音楽制御値を変更する際の上限値または下限値を変更する変更手段を有することを特徴とする。
【０００８】
さらに、好ましくは、前記難易度調節手段により調節された難易度に応じて、前記音楽制御値算出手段により算出された音楽制御値を変更する際の変化幅を変更する変化幅変更手段を有することを特徴とする。
【０００９】
また、前記自動演奏データ記憶手段は、前記自動演奏データとともに所定タイミング毎に音楽制御用マークデータを記憶し、前記自動演奏手段は、該記憶された音楽制御用マークデータから、前記難易度調節手段により調節された難易度に応じて所定数の音楽制御用マークデータを読み飛ばし、前記音楽制御値算出手段は、該読み出された音楽制御用マークデータおよび前記発生された音楽制御信号に基づいて音楽制御値を算出することを特徴とする。
【００１０】
さらに、前記自動演奏データ記憶手段は、前記自動演奏データとともに、該自動演奏データ固有の音楽特性に追従すべき程度であって、当該自動演奏の音楽特性を制御する際の追従の程度を示す追従度データを記憶し、前記自動演奏手段は、該記憶された追従度データを読み出し、前記音楽制御手段は、前記難易度調整手段によって調節された難易度に応じて、前記読み出された追従度データによって示される追従の程度の高低を変更し、該変更後の追従の程度に基づいて自動演奏の音楽特性を制御することを特徴とする。
【００１１】
好ましくは、前記追従度データは、曲の途中に、少なくとも１つ以上埋め込まれ、曲の進行に従って前記自動演奏手段が前記追従度データを読み出し、該読み出された追従度データによって示される追従度の程度の高低が、前記調節された難易度に応じて変化することを特徴とする。
【００１２】
さらに、好ましくは、前記動作検出手段は、操作者の揺動動作に基づく運動を検出することを特徴とする。
【００１３】
また、好ましくは、前記動作検出手段は、センサの個数を多くすることで操作者の動作に基づく運動を複数種類検出し、該検出された複数種類の運動を総合的に判断して、前記動作検出信号を出力することを特徴とする。
【００１４】
上記目的を達成するため本発明は、操作者の動作に基づく運動を検出し、対応する動作検出信号を出力する動作検出手段であって、操作者に装着または所持されるものと、該動作検出手段によって出力された動作検出信号に応じて音楽制御信号を発生する音楽制御信号発生手段と、操作者が音楽制御の難易度を調節するための難易度調節手段と、自動演奏データを記憶する自動演奏データ記憶手段と、該記憶された自動演奏データを読み出して自動演奏する自動演奏手段と、該自動演奏手段による自動演奏の音楽特性を前記発生された音楽制御信号に基づいて制御する音楽制御手段と、前記難易度調節手段により調節された難易度が易から難に行くに従って、当該自動演奏の音楽特性を制御する際の追従の程度が高くなって行くように変更する変更手段とを有し、前記音楽制御手段は、前記変更手段によって変更された追従の程度に応じて、当該自動演奏の音楽特性を制御することを特徴とする。
【００１５】
【作用】
請求項１記載の発明の構成に依れば、自動演奏データ記憶手段から自動演奏データが読み出されて自動演奏されているときに、操作者の動作に基づく連動が検出されると、それに対応して出力された動作検出信号に応じて、音楽制御信号発生手段から音楽制御信号が発生され、この音楽制御信号および自動演奏手段により読み出された自動演奏データに基づいて音楽制御値が算出され、その算出された音楽制御値が難易度調節手段により調節された難易度に応じて変更され、その変更された音楽制御値に基づいて自動演奏の音楽特性が制御される。
【００１６】
請求項２記載の発明の構成に依れば、テンポ制御値記憶手段に記憶された所定個の音楽制御値から、難易度調節手段により調節された難易度に応じて選択された所定個の音楽制御値と、音楽制御値算出手段により算出された新たな音楽制御値とが平均化され、その平均化された音楽制御値に基づいて自動演奏の音楽特性が制御される。
【００１７】
請求項３記載の発明の構成に依れば、難易度調節手段により調節された難易度に応じて、音楽制御値算出手段により算出された音楽制御値を変更する際の上限値または下限値が変更され、その変更された値に基づいて自動演奏の音楽特性が制御される。
【００１８】
請求項４記載の発明の構成に依れば、難易度調節手段により調節された難易度に応じて、音楽制御値算出手段により算出された音楽制御値を変更する際の変化幅が変更され、その変更された変化幅の音楽制御値に基づいて自動演奏の音楽特性が制御される。
【００１９】
請求項５記載の発明の構成に依れば、自動演奏データ記憶手段に記憶された音楽制御用マークデータのうち、難易度調節手段により調節された難易度に応じて所定個の音楽制御用マークデータが読み飛ばされ、その後に音楽制御用マークデータが読み出されると、その音楽制御用マークデータおよび音楽制御信号出力手段により発生された音楽制御信号に基づいて音楽制御値が算出され、その音楽制御値に基づいて自動演奏の音楽特性が制御される。
【００２０】
請求項６記載の発明の構成に依れば、自動演奏データ記憶手段に記憶された追従度データが読み出され、その追従度データに応じて決定される音楽特性制御の難易度が難易度調節手段により調節され、その調節された難易度に応じて自動演奏の音楽特性が制御される。
【００２１】
請求項７記載の発明の構成に依れば、追従度データは、曲の途中に、少なくとも１つ以上埋め込まれ、曲の進行に従ってその追従度の程度の高低が変化し、その追従度データにより決定された難易度が難易度調節手段により調節され、その調節された難易度に応じて自動演奏の音楽特性が制御される。
【００２２】
請求項８記載の発明の構成に依れば、操作者の動作に基づく連動として、揺動動作に基づく連動が検出され、該揺動動作に基づく連動に応じて音楽制御信号が発生する。
【００２３】
請求項９記載の発明に依れば、センサの個数を多くすることで操作者の動作に基づく連動が複数種類検出され、該検出された複数種類の連動が総合的に判断されて、前記動作検出信号が出力され、この出力された動作検出信号に応じて音楽制御信号が発生する。
【００２４】
請求項１０記載の発明に依れば、自動演奏データ記憶手段から自動演奏データが読み出されて自動演奏されているときに、操作者の動作に基づく連動が検出されると、それに対応して出力された動作検出信号に応じて、音楽制御信号発生手段から音楽制御信号が発生され、この音楽制御信号および変更手段によって変更された追従の程度に応じて、当該自動演奏の音楽特性が制御される。
【００２５】
【実施例】
以下、本発明の実施例を図面に基づいて詳細に説明する。
【００２６】
図１は、本発明の一実施例に係る音楽制御装置の概略構成を示すブロック図であり、本実施例の音楽制御装置は、テンポ制御信号を出力するテンポ制御信号出力装置１と該テンポ制御信号出力装置１からのテンポ制御信号に基づいて音楽情報が制御される自動演奏装置付き電子楽器２１とにより構成されている。なお、本実施例では制御できる音楽情報として、テンポおよびダイナミクスを例に挙げて説明するが、これに限る必要はないことは云うまでもない。
【００２７】
同図において、テンポ制御信号出力装置１は、操作者が行った該装置１の揺動動作のＸ軸（水平）方向の角速度を検出し、アナログ電気信号に変換する圧電振動ジャイロセンサ（Ｘ）２と、同様に装置１の揺動動作のＹ軸（垂直）方向の角速度を検出し、アナログ電気信号に変換する圧電振動ジャイロセンサ（Ｙ）３と、各種情報を入力するためのスイッチ群４と、圧電振動ジャイロセンサ２，３からの各出力信号のノイズをそれぞれ除去するノイズ除去回路５，６と、該ノイズ除去回路５，６からのアナログ出力信号をそれぞれデジタル信号に変換するＡ／Ｄ変換回路７，８と、スイッチ群４の各スイッチの操作状態を検出するスイッチ検出回路９と、装置１全体の制御を司るＣＰＵ１０と、該ＣＰＵ１０が実行する制御プログラムやテーブルデータ等を記憶するＲＯＭ１１と、各種入力情報および演算結果等を一時的に記憶するＲＡＭ１２と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ１３と、外部からのＭＩＤＩ（Musical Instrument Digital Interface）信号を入力したり、ＭＩＤＩ信号として外部に出力したりするＭＩＤＩインターフェース（Ｉ／Ｆ）１４とにより構成されている。そして、上記構成要素７〜１４は、バス１５を介して相互に接続され、ＣＰＵ１０にはタイマ１３が接続されている。
【００２８】
自動演奏装置付き電子楽器２１は、音高情報を入力するための鍵盤２２と、各種情報を入力するためのスイッチ群２３と、鍵盤２２の押鍵状態を検出する押鍵検出回路２４と、スイッチ群２３の各スイッチの操作状態を検出するスイッチ検出回路２５と、装置２１全体の制御を司るＣＰＵ２６と、該ＣＰＵ２６が実行する制御プログラムやテーブルデータ等を記憶するＲＯＭ２７と、自動演奏データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ２８と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ２９と、自動演奏データや各種情報等を表示する、例えばＬＣＤ等のディスプレイ３０と、外部からのＭＩＤＩ信号を入力したり、ＭＩＤＩ信号として外部に出力したりするＭＩＤＩインターフェース（Ｉ／Ｆ）３１と、記憶媒体であるフロッピー（登録商標）ディスク（ＦＤ）をドライブするフロッピー（登録商標）ディスクドライブ（ＦＤＤ）３２と、鍵盤２２からの演奏データや自動演奏データ等を楽音信号に変換する音源回路３３と、該音源回路３３からの楽音信号に各種効果を付与する効果回路３４と、該効果回路３４からの楽音信号を音響に変換する、例えばスピーカ等のサウンドシステム３５とにより構成されている。そして、上記構成要素２４〜３４は、バス３６を介して相互に接続され、ＣＰＵ２６にはタイマ２９が接続され、音源回路３３には効果回路３４が接続され、効果回路３４にはサウンドシステム３５が接続されている。
【００２９】
さらに、テンポ制御信号出力装置１のＭＩＤＩＩ／Ｆ１４は、電子楽器２１のＭＩＤＩＩ／Ｆ３１と相互に接続され、テンポ制御信号出力装置１と電子楽器２１との間でＭＩＤＩ信号の送受信が行われる。このＭＩＤＩＩ／Ｆ１４，３１間の接続は、有線で行ってもよいし、無線で行ってもよい。
【００３０】
操作者は、テンポ制御信号出力装置１を片手で把持し、該装置１を曲の所定のタイミングに応じて所定の方向に振ることにより、マニュアルで音楽情報を制御することができる。
【００３１】
図２は、前記スイッチ群２３中の一スイッチである難易度設定操作子２３1を示す図であり、本実施例では、難易度設定操作子２３1はロータリーボリューム形式のものを用いている。
【００３２】
操作者は難易度設定操作子２３1を回転させることにより曲の難易度を調節することができ、難易度設定操作子２３1が“０”の位置にある場合には曲に予め設定された難易度でテンポ制御でき、その位置から時計方向に回転させた場合には、その回転角度に応じて「難」の程度が増加する一方、反時計方向に回転させた場合には、その回転角度に応じて「易」の程度が増加する。
【００３３】
なお、難易度設定操作子２３1の形式は、これに限らず、スライドスイッチやアップダウンスイッチ等のどのような形式のものであってもよい。また、難易度設定操作子２３1は、本実施例のように電子楽器２１側に設けずに、テンポ制御信号出力装置１側に設けてもよい。
【００３４】
図３は、テンポ制御信号出力装置１が検出する揺動動作の種類の一例を示す図であり、（ａ）は、３角形の各辺の方向にテンポ制御信号出力装置１を振った場合に検出する３種類の揺動動作を示し、（ｂ）は、上または下方向にテンポ制御信号出力装置１を振った場合に検出する２種類の揺動動作を示している。
【００３５】
操作者がテンポ制御信号出力装置１を振ると、その揺動動作に応じて圧電振動ジャイロセンサ２，３からそれぞれ信号が出力され、ＣＰＵ１０は、各信号から操作者が行っている動作状態、すなわち、操作者の動作が図３の動作１〜３のうちいずれの動作に該当するかを判別するとともに、その判別された動作における絶対角速度がピークとなる位置（テンポ制御信号出力装置１の振り方にもよるが、各動作１〜３のほぼ中間地点で速度がピークとなるであろう）を検出し、該ピーク位置で、前記検出された動作に対応するキーコードのオンイベント（マークデータ）およびこの時点の絶対角速度（この算出方法は後述する）に応じたベロシティ値に所定のチャンネル番号（本実施例ではチャンネル１）を付与して、電子楽器２１側へ出力する。例えば、動作１に対してはキーコード“Ｃ３”のキーオンイベント、動作２に対してはキーコード“Ｃ_３”のキーオンイベントおよび動作３に対してはキーコード“Ｄ３”のキーオンイベントに、この時点の絶対角速度に応じて算出されたベロシティ値を付加し、チャンネル１のイベントデータとして出力する。
【００３６】
ここで、各キーオンイベントおよびベロシティ値は、ＭＩＤＩ信号としてＭＩＤＩＩ／Ｆ１４からＭＩＤＩＩ／Ｆ３１に対して出力される。すなわち、本実施例の音楽制御装置では、テンポ制御信号出力装置１は文字どおりテンポ制御信号の出力を主として行い、実際の自動演奏処理（自動演奏データの読み出しや発音処理等）は全て電子楽器２１側で行うように構成されている。このようにして電子楽器２１側に送信されたキーオンイベントおよびベロシティ値はＲＡＭ２８の所定領域に一時的に格納された後に、ＣＰＵ２６により解析され、その解析結果がＲＡＭ２８の所定領域ＴＫＯＮに格納される。
【００３７】
図４は、電子楽器２１の自動演奏データのデータフォーマットを示す図であり、自動演奏データは、前記ＲＡＭ２８の自動演奏データ格納領域２８1に格納される。
【００３８】
同図に示すように、自動演奏データは、隣接した各イベント間の時間間隔を示すデルタタイムデータ４１，…と、電子楽器２１のキーオンやキーオフ等のイベント、この自動演奏データ固有のテンポに追従すべき程度を示す追従度イベントおよび拍タイミングを示す拍タイミングイベント（この拍タイミングイベントは、図１７を用いて後述するテンポキーオン受信処理のステップＳ１４５およびＳ１５３で使用する）等のイベントデータ４２，…とにより構成されている。本実施例では、デルタタイムデータ４１として、１ｍｓを１単位とする整数値が採られ、イベントデータ４２として、チャンネル番号を付与したイベントデータが採られている。ここで、デルタタイムデータ４１をこのように構成したのは、各イベントのタイミング処理制御を１ｍｓ毎の割込み処理中（後述する図１４の再生処理中）で行っているからである。また、イベントデータ４２をこのように構成したのは、本実施例の電子楽器２１は前記マークデータ、追従度イベントデータおよび拍タイミングイベントデータと通常の自動演奏データとを混在させるとともに、マークデータとして通常の自動演奏イベントデータを用いているために、この双方のデータを区別する必要があるからである。
【００３９】
本実施例では、追従度イベントデータとして３種類の追従度（Ａ：追従度高、Ｂ：追従度中、Ｃ：追従度低）を設け、これらの追従度イベントデータは、曲毎に所定の位置に予め登録されている。例えば、曲がカラオケである場合には、曲のイントロダクション（前奏部）は、通常テンポ制御に集中できるので、追従性をよくして、その最初の位置に追従度Ａを登録し、イントロダクションが終了してテーマ（主題）に入ると、そのメロディーに応じて追従度ＢまたはＣを登録するというように、曲の重要度に応じて３種類の追従度のうち、いずれかの追従度を選択して登録する。そして、ＣＰＵ２６は、一度追従度を検出すると、新たな追従度を検出するまで、検出した追従度に従って音楽制御を実行する。
【００４０】
また、マークデータは前述したように、“Ｃ３”，“Ｃ_３”および“Ｄ３”の３種類のキーオンイベントであり、自動演奏データ格納領域２８1の所定の位置（アドレス）に、所定の順序で、予め格納されている。例えば、３拍子の曲では、各小節中、１，２，３拍目の各タイミングのイベントデータ４２中に、それぞれ“Ｃ３”，“Ｃ_３”，“Ｄ３”のキーオンイベントデータがチャンネル番号１とともに予め格納され、４拍子の曲では、各小節中、１，２，３，４拍目の各タイミングのイベントデータ４２中に、それぞれ“Ｃ３”，“Ｄ３”，“Ｃ３”，“Ｄ３”のキーオンイベントデータがチャンネル番号１とともに予め格納されている。すなわち、電子楽器２１は、例えば１６チャンネル（トラック）分の自動演奏データを再生できるように構成され、そのうちチャンネル１は前記マークデータ、追従度イベントデータおよび拍タイミングイベントデータ用に使用され、その他のチャンネルは通常の自動演奏データ用に使用されている。
【００４１】
なお、本実施例では、自動演奏データは、上述のように「イベントデータ＋デルタタイム」としたが、これに限らず、「イベントデータ＋絶対時間」等の他のフォーマットでもよい。また、デルタタイムは１ｍｓを１単位としたが、１単位を音符の長さ（例えば、４分音符の１／２４等）としてもよい。
【００４２】
また、本実施例では、テンポ制御用のマークデータ（キーオンイベントデータ）、追従度イベントデータおよび拍タイミングイベントデータと自動演奏用のデータとを混在させ、これらのデータをチャンネル番号で区別するようにしたが、これに限らず、これらのデータをそれぞれ異なった種類のデータとして別々に構成してもよい。例えば、テンポ制御用のマークデータとして、テンポ制御すべき音符の位置に対応するメモリのアドレスを記憶したものを用いてもよい。また、本実施例では、追従度イベントデータとして、上述のように“Ａ”，“Ｂ”，“Ｃ”を用いたが、これに限らず、任意のキーイベントデータを用いて表すようにしてもよい。
【００４３】
以上のように構成されたテンポ制御信号出力装置１のＣＰＵ１０が実行する制御処理を図５〜１０を参照して説明し、自動演奏装置付き電子楽器２１のＣＰＵ２６が実行する制御処理を図１１〜２０を参照して説明する。
【００４４】
図５は、テンポ制御信号出力装置１のＣＰＵ１０が実行する圧電振動ジャイロセンサ出力処理の手順を示すフローチャートであり、本処理は、前記タイマ１３が、例えば１０ｍｓ毎に発生するタイマ割込み信号に同期して実行される割込み処理中の一処理である。
【００４５】
同図において、まず、前述したように、ノイズ除去回路５，６によりノイズが除去され、Ａ／Ｄ変換回路７，８によりデジタル変換された圧電振動ジャイロセンサ２，３からの各出力信号を取り込み、それぞれＲＡＭ１２の所定領域ωx，ωy（以下、各領域の内容を、それぞれ「角速度ωx」、「角速度ωy」という）に格納する（ステップＳ１）。
【００４６】
次に、この角速度ωx，ωyから次式により絶対角速度ωを算出し、この算出した絶対角速度ωをＲＡＭ１２の所定領域ＡＮＧＶ（以下、この領域の内容を「絶対角速度ＡＮＧＶ」という）に格納する（ステップＳ２）。
【００４７】
ω  ＝  （ωx2＋ωy2）1/2
なお、今回算出した絶対角速度ωを領域ＡＮＧＶに格納するときに、前回算出した絶対角速度ωが領域ＡＮＧＶに格納されている場合には、該前回算出した値をＲＡＭ１２の所定領域ＯＡＮＧＶに保存する。
【００４８】
次に、絶対角速度ωがピークとなる時点を検出するピーク検出処理サブルーチンを実行した（ステップＳ３）後に、本圧電振動ジャイロセンサ出力処理を終了する。
【００４９】
図６は、このステップＳ３のピーク検出処理サブルーチンの詳細な手順を示すフローチャートであり、まずステップＳ１１で、ピークが検出された否かを判別する。
【００５０】
このステップＳ１１の判別は、今回の絶対角速度ＡＮＧＶおよび前回の絶対角速度ＯＡＮＧＶに基づいて行う。具体的には、まず、前後の絶対角速度の値より大きい時点を検出する。例えば、今回の絶対角速度ＡＮＧＶ＞前回の絶対角速度ＯＡＮＧＶのときにはフラグＦＢＩＧをセットし、今回の絶対角速度ＡＮＧＶ≦前回の絶対角速度ＯＡＮＧＶのときには、フラグＦＢＩＧの状態を検査し、フラグＦＢＩＧがセットされている場合には、前回の絶対角速度ＯＡＮＧＶの時点を上記条件を満たす時点として検出すればよい。次に、このようにして検出された時点が、前回検出されたピーク時点から所定時間以上経過し、この時点の絶対角速度ω（すなわち、上記前回の絶対角速度ＯＡＮＧＶ）が所定の閾値より大きく、前回のピーク値の所定値（例えば０．５）倍よりも大きく、谷を通過している等の条件を全て満たしているか否かを判別する。これらの全ての条件を満たしている場合にはこの時点をピークとして判別し、１つでも条件を満たしていない場合にはこの時点をピークと判別しない。
【００５１】
前記ステップＳ１１の判別で、ピークが検出されたときには、このときのテンポ制御信号出力装置１の揺動動作の種類（すなわち、前記図３で説明した動作１〜３のうち操作者が行っている動作）を判定するピーク種類判定処理サブルーチンを実行した（ステップＳ１２）後に、本ピーク検出処理を終了する。一方、ステップＳ１１の判別で、ピークが検出されないときには、直ちに本ピーク検出処理を終了する。
【００５２】
図７は、上記ステップＳ１２のピーク種類判定処理サブルーチンの詳細な手順を示すフローチャートである。
【００５３】
同図において、まず、操作者がテンポ制御信号出力装置１を振ったときの振り角度θが、１８０°＜θ≦３００°という条件を満たしているか否かを判別する（ステップＳ２１）。図１０は、この振り角度θを算出する処理を説明するための図であり、図中点（Ｘ，Ｙ）は、前記角速度ωx，ωyをＸ−Ｙ座標上に表わしたものである。すなわち、この点（Ｘ，Ｙ）および原点Ｏを通る直線とＸ軸との交角が振り角度θになる。
【００５４】
ステップＳ２１の判別で、この条件を満たしている場合には、今回検出されたピークは「動作１」によるものと判定し（ステップＳ２２）、前述したようにキーコード“Ｃ３”のキーオンおよびこのときの絶対角速度ωの値に応じたベロシティ値（ダイナミクス制御を行うためのパラメータ値）をチャンネル１のイベントデータとして、ＭＩＤＩ信号に変換し出力する（ステップＳ２３）。
【００５５】
一方、ステップＳ２１の判別で、振り角度θが上記条件を満たしていないときには、動作２，３を判定するピーク２判定処理サブルーチンを実行した（ステップＳ２４）後に、本ピーク種類判定処理を終了する。
【００５６】
図８は、上記ステップＳ２４のピーク２判定処理サブルーチンの詳細な手順を示すフローチャートであり、まず、振り角度θが、θ≦６０°または３００°＜θという条件を満たしているか否かを判別する（ステップＳ３１）。
【００５７】
ステップＳ３１の判別で、振り角度θが上記条件を満たしているときには、前記ステップＳ２２，Ｓ２３と同様にして、今回検出されたピークは「動作２」によるものと判定し（ステップＳ３２）、キーコード“Ｃ_３”のキーオンおよびこのときの絶対角速度ωの値に応じたベロシティ値をチャンネル１のイベントデータとして出力する（ステップＳ３３）。
【００５８】
一方、ステップＳ３１の判別で、振り角度θが上記条件を満たしていないときには、ピーク３判定処理サブルーチンを実行した（ステップＳ３４）後に、本ピーク２判定処理を終了する。
【００５９】
図９は、このステップＳ３４のピーク３判定処理サブルーチンの詳細な手順を示すフローチャートであり、前記ピーク種類判定処理のステップＳ２２，Ｓ２３と同様にして、今回検出されたピークは「動作３」によるものと判定し（ステップＳ４１）、キーコード“Ｄ３”のキーオンおよびこのときの絶対角速度ωの値に応じたベロシティ値をチャンネル１のイベントデータとして出力した（ステップＳ４２）後に、本ピーク３判定処理を終了する。
【００６０】
なお、本実施例は、絶対角速度ωがピークとなる時点を音楽制御を行う時点にしたが、これに限らず、絶対角速度ωの変化量が大きい時点等であってもよいし、また、音楽制御を行う時点を検出する検出方法は上述の方法に限る必要もない。
【００６１】
図１１は、自動演奏装置付き電子楽器２１が実行するメインルーチンの手順を示すフローチャートである。なお、説明は省略したが、本メインルーチンと同様にテンポ制御信号出力装置１においてもスイッチ群４の各種スイッチ状態に応じた各種スイッチ処理等を含むメインルーチンを実行している。
【００６２】
同図において、まず、ＲＡＭ２８のクリアや各種ポートのクリア等のイニシャライズを行う（ステップＳ５１）。
【００６３】
次に、鍵盤２２の押鍵状態に応じてキーオンイベントまたはキーオフイベントの生成処理や発音または消音処理等の鍵処理を行い（ステップＳ５２）、ＭＩＤＩ信号の送受信処理や受信したＭＩＤＩ信号に応じた各種信号処理等のＭＩＤＩ処理を行い（ステップＳ５３）、スイッチ群２３の各種スイッチ状態に応じた各種スイッチ処理を行い（ステップＳ５４）、上述の処理以外のその他処理を行った（ステップＳ５５）後に、ステップＳ５２に戻って上述の処理を繰り返す。
【００６４】
図１２は、前記難易度設定操作子２３1が操作されたときに行われる難易度操作子処理の手順を示すフローチャートであり、前記ステップＳ５４の各種スイッチ処理中の一処理である。
【００６５】
同図において、難易度設定操作子２３1が操作されたか否かを判別し（ステップＳ６１）、難易度設定操作子２３1が操作されないときには直ちに本難易度操作子処理を終了する一方、難易度設定操作子２３1が操作されたときにはステップＳ６２に進む。
【００６６】
ステップＳ６２では、難易度設定操作子２３1の操作量（回転量）に応じて該操作子２３1が出力する値（例えば、図２の“０”の位置を値０とし、反時計方向に回転できる最大の位置（易）の値−１から時計方向に回転できる最大の位置（難）の値１までアナログ的に変化する値）を検出し、前記ＲＡＭ２８に確保された領域Ｄ_ＣＯＥＦ（以下、この内容を「難易度係数Ｄ_ＣＯＥＦ」という）に格納する。
【００６７】
次に、実際に追従度制御に用いる、現在の追従度（すなわち、前記「追従度イベントデータＡ（高）」、「追従度イベントデータＢ（中）」および「追従度イベントデータＣ（低）」のうち、最後に読み出された追従度イベントデータに応じて設定された追従度）に係る各種値（本実施例では、図１３に示す移動平均次数α、差分リミットβ、テンポ値の下限値γ、テンポ値の上限値δ）を、難易度係数Ｄ_ＣＯＥＦに応じて修正する（ステップＳ６３）。ここで、各種値は、図１３に示すように追従度に応じて異なった値が予め設定されて、それぞれＲＡＭ２８の所定領域に格納されている。
【００６８】
さらに、ステップＳ６３で修正した各種値が、修正前の値から大きく変化しないようにリミット処理を行った（ステップＳ６４）後に、本難易度操作子処理を終了する。
【００６９】
なお、本実施例では、本難易度操作子処理を前記各種スイッチ処理中で行うようにしたが、これに限らず、難易度設定操作子２３1の出力を検出する時間間隔を一定にしたい場合等には、例えば１０ｍｓ毎に発生する割込み処理中で行うようにしてもよい。
【００７０】
図１３は、前記追従度制御を行うための各種値α〜δの具体例および難易度設定操作子２３1から出力された難易度係数Ｄ_ＣＯＥＦに応じて各種値α〜δを修正する方法の一例を示す図であり、（ａ）は、追従度Ａ〜Ｃおよび該各追従度に応じて初期値として設定される各種値α〜δの一例を示し、（ｂ）は、（ａ）の値のうち移動平均次数αを例に挙げて、この移動平均次数αを難易度係数Ｄ_ＣＯＥＦに応じて修正する具体的な方法の一例を示している。
【００７１】
（ａ）に示すように、追従度に応じて、移動平均次数α、差分リミットβ、テンポ値の下限値γ、テンポ値の上限値δの各初期値が前記ＲＡＭ２８の当該領域から読み出され、追従度制御するためにＲＡＭ２８の所定位置に確保された領域に格納される。本実施例では、曲の途中で追従度を変更する、すなわち曲の位置に応じて異なった追従度イベントデータが埋め込まれ、これにより曲の進行に応じて追従度を変更するように構成され、現在の追従度と異なった追従度イベントデータが検出されると、当該追従度に応じた各種値α〜δが読み出されて、この読み出された各種値α〜δにより、追従度制御するために確保された領域の値が変更される。
【００７２】
また、本実施例では、追従度に応じて追従度制御を行う時点を変更する。すなわち、追従度Ａの場合には全てのマークデータ（判定マーク）が検出された時点で追従度制御が行われ、追従度Ｂの場合には拍上のマークデータが検出された時点で追従度制御が行われ、追従度Ｃの場合には小節頭のマークデータが検出された時点で追従度制御が行われる。この追従度制御時点の変更処理を行うために、前記図４で説明した拍タイミングイベントデータを使用する。これは、本実施例では、自動演奏データのデルタタイムデータの単位として、時間（１ｍｓ）を採用したために、拍位置にあるマークデータを判別することが難しいという理由からであり、例えばデルタタイムデータの単位として、所定音符の音長を基準にした場合には、拍位置にあるマークデータを簡単に判別することができるので、拍タイミングイベントデータを使用する必要はない。なお、前述のように本実施例では、マークデータは基本的には各拍タイミングの位置に記憶されるので、この場合には、追従度Ａおよび追従度Ｂにおける追従度制御を行う時点に差は生じないが、より細かな制御を行うために、マークデータを各拍タイミングより細かいタイミング（例えば、音符毎のタイミング）の位置に記憶した場合には、追従度Ａより追従度Ｂの方が追従度制御を行う時点が多くなり、テンポ制御の難易度が向上することになる。
【００７３】
なお、各種値α〜δを追従度制御にどのように使用するかは、図１９および２０を用いて後述する。
【００７４】
次に、各値α〜δの意味を説明する。
【００７５】
移動平均次数αは、追従度制御を行う時点で算出されたテンポ係数Ｔ_ＣＯＥＦを平均化して滑らかにテンポを変化させるために、平均化に使用するテンポ係数の個数を決定する変数である。移動平均次数αが大きい程テンポの変化はより滑らかになるので、テンポ制御の難易度が上がるに従って移動平均次数αの値を小さくしている。
【００７６】
差分リミットβは、テンポ変化の差分値の許容範囲を決定するための値であり、具体的には、今回算出されたテンポ係数Ｔ_ＣＯＥＦと前回算出されたテンポ係数Ｔ_ＣＯＥＦとの差分の許容範囲を示している。差分リミットβは、その値が大きい（換言すれば、許容範囲が広い）程、テンポ制御の自由度が向上するが、これによりテンポが大きく変化し過ぎるおそれもあり、制御自体は難しくなる。このため、図１３（ａ）に示すように、テンポ制御の難易度が上がるに従って差分リミットβ値を大きくしている。
【００７７】
テンポ値の下限値γおよび上限値δは、ぞれぞれテンポ係数Ｔ_ＣＯＥＦの下限値および上限値を示すもので、上記差分リミットβと同様の理由により、テンポ制御の難易度が上がるに従って下限値γを小さくするとともに、上限値δを大きくしている。
【００７８】
以上説明した各種値α〜δは、前記難易度設定操作子２３1の操作により、変更することができる。例えば移動平均次数αは、難易度を変更することにより、（ｂ）に示すように変更することができる。現在、追従度Ａでテンポ制御がなされている場合に、操作者が難易度設定操作子２３1を「０」より「易」の方向に回転させると、その回転量に応じて移動平均次数αを増加させる方向に変更する。実際には、移動平均次数αは整数値を採るため、その回転量に応じて移動平均次数αは“１”ずつ増加していく。なお、本実施例では追従度Ａの場合の移動平均次数αを“１”としたため、追従度Ａの場合に操作者が難易度設定操作子２３1を「難」の方向に回転させても、移動平均次数αは変化しないようにしている。しかし、追従度Ａの場合の移動平均次数αを“１”より大きい整数値にして、追従度Ａの場合であっても、さらに難易度を高めることができるようにしてもよい。同様にして、追従度Ｃの場合には、移動平均次数αは「難」の方向にのみ変更され、追従度Ｂの場合には、移動平均次数αは「難」または「易」のいずれの方向にも変更される。なお、移動平均次数α以外の各種値β〜δも上述の方法により変更するが、本実施例のように直線的に調節する方法に限らず、例えば、曲線的に調節したり、所定の関数を用いて調節したりする等、どのような方法で調節してもよい。
【００７９】
図１４は、自動演奏データの再生処理の手順を示すフローチャートであり、本処理は、前記タイマ２９が、例えば１ｍｓ毎に発生するタイマ割込み信号に同期して実行される割込み処理中の一処理である。
【００８０】
同図において、まず、前記再生フラグＲＵＮが“１”であるか否かを判別し（ステップＳ１０１）、再生フラグＲＵＮが“０”のとき、すなわち自動演奏データの再生要求がなされていないときには直ちに本再生処理を終了する一方、再生フラグＲＵＮが“１”のとき、すなわち自動演奏データの再生要求がなされているときには、フラグＰＡＵＳＥが“０”であるか否かを判別する（ステップＳ１０２）。ここで、フラグＰＡＵＳＥは、電子楽器２１がチャンネル１のキーオンイベントデータを読み出したときに、まだテンポ制御信号出力装置１が当該キーオンイベントデータを送出していない場合に、当該キーオンイベントを受信するまで自動演奏データの再生を一時的に停止させるためのフラグである。
【００８１】
ステップＳ１０２の判別で、フラグＰＡＵＳＥが“０”のとき、すなわちテンポ制御信号出力装置１からのキーオンイベントを受信した後にチャンネル１の当該キーオンイベントを読み出しているときには、カウンタＴＩＭＥの値が“０”であるか否かを判別する（ステップＳ１０３）。ここで、カウンタＴＩＭＥは、ＲＡＭ２８に確保され、前記図３で説明した各イベントデータ４２間の時間間隔をカウントするためのソフトカウンタである。
【００８２】
ステップＳ１０３の判別で、カウンタＴＩＭＥの値が“０”のとき、すなわちイベントデータ４２を出力するタイミングのときには、自動演奏データ格納領域２８1のアドレスを進め、その位置のデータを読み出し（ステップＳ１０４）、その読み出したデータがデルタタイムデータであるか否かを判別する（ステップＳ１０５）。
【００８３】
ステップＳ１０５の判別で、読み出したデータがデルタタイムデータでないとき、すなわちイベントデータであるときには、当該イベントに対応するイベント対応処理サブルーチン（このサブルーチンの詳細な手順は、図１６に基づいて後述する）を実行した（ステップＳ１０６）後に、前記ステップＳ１０４に戻って前述の処理を繰り返す。
【００８４】
一方、ステップＳ１０５の判別で、読み出したデータがデルタタイムデータのときには該デルタタイムデータをカウンタＴＩＭＥに格納し（ステップＳ１０７）、カウンタＴＩＭＥが“０”であるか否かを判別する（ステップＳ１０８）。ここで、カウンタＴＩＭＥの値を判別するのは、同一タイミングで複数のイベントデータが自動演奏データ格納領域２８１に格納されている場合があるからである。
【００８５】
ステップＳ１０８の判別で、カウンタＴＩＭＥ＝０のときには、前記ステップＳ１０４に戻って前述の処理を繰り返し、一方、カウンタＴＩＭＥ≠０のときには、次式の演算によりカウンタＴＩＭＥの値を変更する（ステップＳ１０９）。
【００８６】
ＴＩＭＥ  ＝  ＴＩＭＥ×Ｔ_ＣＯＥＦ
ここで、Ｔ_ＣＯＥＦは前記テンポ係数を示している。すなわち、ステップＳ１０９では、デルタタイムで与えられるイベントデータ間の時間間隔をテンポ係数Ｔ_ＣＯＥＦで変更することにより、テンポを変更している。したがって、テンポ係数Ｔ_ＣＯＥＦが“１”の場合には標準テンポで曲が演奏され、テンポ係数Ｔ_ＣＯＥＦが“１”より小さい場合には標準テンポより速いテンポで曲が演奏され、テンポ係数Ｔ_ＣＯＥＦが“１”より大きい場合には標準テンポより遅いテンポで曲が演奏される。
【００８７】
一方、ステップＳ１０３の判別で、カウンタＴＩＭＥの値が“０”でないときにはステップＳ１１０に進む。
【００８８】
ステップＳ１１０では、カウンタＴＩＭＥの値を“１”だけデクリメントし、ステップＳ１１１では、ＲＡＭ２８に確保され、隣接するチャンネル１のキーオンイベント間の時間間隔をカウントするソフトカウンタＤＥＬＴＡ_ＡＣＭ（Delta Accumulate）の値（以下、この値を「デルタタイム累算値ＤＥＬＴＡ_ＡＣＭ」という）を“１”だけインクリメントし、ステップＳ１１２では、ＲＡＭ２８に確保され、テンポ制御信号出力装置１から出力された隣接するキーオンイベント間の時間間隔（テンポ制御間隔）をカウントするソフトカウンタＩＮＴＥＲＶＡＬ（以下、この値を「テンポ制御間隔ＩＮＴＥＲＶＡＬ」という）の値を“１”だけインクリメントし、ステップＳ１１３では、図１７を参照して後述するテンポキーオン受信処理サブルーチンを実行した後に、本再生処理を終了する。
【００８９】
一方、ステップＳ１０２の判別で、フラグＰＡＵＳＥが“１”のとき、すなわち自動演奏データ格納領域２８１からチャンネル１のキーオンイベントデータを読み出し、テンポ制御信号出力装置１からの当該キーオンイベントの出力を待っているときには、前記ステップＳ１０３〜Ｓ１１１で説明した自動演奏データの読み出し処理を停止（スキップ）し、前記ステップＳ１１２に進む。
【００９０】
図１５は、前記テンポ制御間隔ＩＮＴＥＲＶＡＬとデルタタイム累算値ＤＥＬＴＡ_ＡＣＭとの関係を説明するための図であり、図中、“□”はチャンネル１のキーオンイベントを示し、“○”はチャンネル１以外のイベントを示している。
【００９１】
同図から分かるように、デルタタイム累積値ＤＥＬＴＡ_ＡＣＭは、自動演奏データ格納領域２８１に格納された１拍分のデルタタイムを累算したものであり、テンポ制御間隔ＩＮＴＥＲＶＡＬは、操作者がテンポ制御信号出力装置１を振ることによってテンポ制御する１拍分の時間間隔を計測したものである。後述するように、このデルタタイム累算値ＤＥＬＴＡ_ＡＣＭおよびテンポ制御間隔ＩＮＴＥＲＶＡＬに基づいてテンポ係数Ｔ_ＣＯＥＦが算出される。なお、同図は、テンポ制御間隔ＩＮＴＥＲＶＡＬの方がデルタタイム累算値ＤＥＬＴＡ_ＡＣＭより小さい場合、すなわち、操作者が標準テンポより速いテンポで曲を再生するように制御している場合を示している。
【００９２】
図１６は、前記ステップＳ１０６のイベント対応処理サブルーチンの詳細な手順を示すフローチャートである。
【００９３】
同図において、まず、読み出したイベントデータがチャンネル１のイベントデータであるか否かを判別し（ステップＳ１２１）、チャンネル１のイベントデータであるときには、そのイベントデータが追従度イベントデータであるか否かを判別する（ステップＳ１２２）。
【００９４】
ステップＳ１２２の判別で、追従度イベントデータのときには、チャンネル１のキーオンイベントを読み出す前にテンポ制御信号出力装置１から当該キーオンイベントを既に受信していることを“１”で示すフラグＫＯＮ_ＲＣＶ（Key ON Recieve）が“１”であるか否かを判別し（ステップＳ１２３）、フラグＫＯＮ_ＲＣＶが“０”のとき、すなわち当該キーオンイベントをテンポ制御信号出力装置１から受信していないときには、当該イベントのキーコードをＲＡＭ２８に確保された領域ＫＥＹＣＯＤＥ（以下、この内容を「キーコードＫＥＹＣＯＤＥ」という）に格納し（ステップＳ１２４）、前記フラグＰＡＵＳＥをセットした（ステップＳ１２５）後に、本イベント対応処理を終了する。
【００９５】
一方、ステップＳ１２３の判別で、フラグＫＯＮ_ＲＣＶが“１”のときにはこのフラグＫＯＮ_ＲＣＶをリセットして（ステップＳ１２６）、本イベント対応処理を終了する。
【００９６】
一方、ステップＳ１２２の判別で、読み出したイベントデータが追従度イベントデータのときには、その追従度（すなわち、追従度Ａ〜Ｃのうちいずれかの追従度）に応じて各種値α〜δを前記図１３（ａ）に示す値に設定し（ステップＳ１２７）、前記ステップＳ６２と同様にして該設定した各種値α〜δを難易度係数Ｄ_ＣＯＥＦに応じて修正し（ステップＳ１２８）、前記ステップＳ６４と同様にして各種値α〜δのリミット処理を行った（ステップＳ１２９）後に、本イベント対応処理を終了する。
【００９７】
一方、ステップＳ１２１の判別で、読み出したイベントデータがチャンネル１のものでないときには、そのイベントデータは通常の自動演奏イベントデータであるので、そのイベントデータを前記音源回路３３へ出力した（ステップＳ１３０）後に、本イベント対応処理を終了する。なお、ステップＳ１３０において、音源回路３３に出力するイベントがノートイベントの場合には、該ノートイベントのベロシティは、後述する図１７のステップＳ１４２で設定されたダイナミクスに応じて修正したものを出力する。
【００９８】
図１７は、前記ステップＳ１１３のテンポキーオン受信処理サブルーチンの詳細な手順を示すフローチャートである。
【００９９】
同図において、まず、テンポ制御信号出力装置１からテンポキーオンイベントを受信したか否かを判別し（ステップＳ１４１）、受信したときには、受信したキーオンのベロシティ値に応じてダイナミクスを設定して、ＲＡＭ２８の所定位置に確保された領域に格納する（ステップＳ１４２）。
【０１００】
次に、フラグＰＡＵＳＥが“１”であるか否かを判別し（ステップＳ１４３）、フラグＰＡＵＳＥが“１”のときには、受信したテンポキーオンイベントのキーコードが前記キーコードＫＥＹＣＯＤＥと一致しているか否かを判別し（ステップＳ１４４）、一致しているときにはステップＳ１４５に進む。なお、前記ステップＳ１４１のテンポキーオンイベントの判別は、前記領域ＴＫＯＮの内容を検査することによって行うようにすればよい。
【０１０１】
一方、ステップＳ１４１の判別でテンポキーオンを受信していないとき、またはステップＳ１４４の判別で受信したテンポキーオンイベントのキーコードとキーコードＫＥＹＣＯＤＥとが一致していないときには、直ちに本テンポキーオン受信処理を終了する。
【０１０２】
ステップＳ１４５では、現時点がテンポ制御用マーク（マークデータ）の判定タイミングか否か、すなわち前記追従度制御を行う時点か否かを判別する。この判定タイミングか否かの判別は、前述したように追従度に応じて設定された判定タイミング（図１３（ａ）参照）に基づいて行う。追従度が“Ａ”の場合には、全てのマークデータを検出した時点がテンポ制御用マーク判定タイミングであり、例えばマークデータが音符毎に記憶されているときには各音符のタイミングがテンポ制御用マークの判定タイミングとなる。追従度が“Ｂ”の場合には、拍上のマークデータを検出した時点がテンポ制御用マーク判定タイミングであり、マークデータが音符毎に記憶されているときには、そのうち拍タイミングがテンポ制御用マークの判定タイミングとなる。具体的には、前記拍タイミングイベントデータを検出した時点をテンポ制御用マークの判定タイミングにすればよい。追従度が“Ｃ”の場合には、小節頭のマークデータを検出した時点がテンポ制御用マーク判定タイミングであり、マークデータが音符毎に記憶されているときには、そのうち小節頭のタイミングがテンポ制御用マークの判定タイミングとなる。具体的には、拍タイミングイベントデータを検出する度にその検出回数をカウントし、そのカウント値と曲の拍子を比較することにより、小節頭か否かを判別すればよい。
【０１０３】
ステップＳ１４５の判別で、テンポ制御用マークの判定タイミングであるときには、前記デルタタイム累算値ＤＥＬＴＡ_ＡＣＭおよびテンポ制御間隔ＩＮＴＥＲＶＡＬから、次式によりテンポ係数Ｔ_ＣＯＥＦの値を変更するための比率（ｒａｔｅ）を求め、ＲＡＭ２８に確保された領域ＲＡＴＥ（以下、この内容を「比率ＲＡＴＥ」という）に格納する（ステップＳ１４６）。
【０１０４】
ＲＡＴＥ  ＝  ＩＮＴＥＲＶＡＬ／ＤＥＬＴＡ_ＡＣＭ
次に、図１９を用いて後述するテンポ係数計算処理サブルーチンを実行し（ステップＳ１４７）、図２０を用いて後述するテンポ係数リミット処理サブルーチンを実行する（ステップＳ１４８）。
【０１０５】
一方、ステップＳ１４５の判別で、テンポ制御用マークの判定タイミングでないときにはステップＳ１４６〜Ｓ１４８をスキップして、ステップＳ１４９に進む。
【０１０６】
ステップＳ１４９〜１５１では、前記デルタタイム累算値ＤＥＬＴＡ_ＡＣＭ、テンポ制御間隔ＩＮＴＥＲＶＡＬおよびフラグＰＡＵＳＥをそれぞれリセットした後に、本テンポキーオン受信処理を終了する。
【０１０７】
一方、ステップＳ１４３の判別で、フラグＰＡＵＳＥが“０”であるときには、自動演奏データ格納領域２８１における次のチャンネル１のキーオンイベントをサーチし（ステップＳ１５２）、前記受信したキーオンイベントのキーコードとサーチしたキーオンイベントのキーコードとが一致しているか否かを判別し（ステップＳ１５３）、一致しているときにはステップ１５４に進み、一方、一致していないときにはエラーであるので直ちに本テンポキーオン受信処理を終了する。
【０１０８】
ステップＳ１５４では、次式（１）によりデルタタイム累算値ＤＥＬＴＡ_ＡＣＭを算出する。
【０１０９】
0003720004.tif 000002
ここで、ＴＩＭＥは、前記カウンタＴＩＭＥの値を示し、ＤＥＬＴＡＴ（ｋ），（ｋ＝１，２，…）は、現在曲を再生している時点（アドレス）の次のデルタタイムからサーチしたキーオンイベントまでのデルタタイムを示している。
【０１１０】
図１８は、デルタタイム累算値ＤＥＬＴＡ_ＡＣＭの具体的な算出方法を説明するための図である。
【０１１１】
図示例では、自動演奏データ格納領域２８１からチャンネル１のキーオンイベントを読み出す前にテンポ制御信号出力装置１からテンポキーオンイベントを受信し、自動演奏データ格納領域２８１において、この受信時点から当該受信キーオンイベントに対応するチャンネル１のキーオンイベントの位置までにチャンネル１以外のイベントデータが少なくとも１つ以上格納されている場合を示している。同図中、“ＴＩＭＥ”は、カウンタＴＩＭＥの値、すなわちイベントＥ０，Ｅ１間のデルタタイムの残り時間を示し、ＤＥＬＴＡＴ（１）は、イベントＥ１，Ｅ２間のデルタタイムを示し、ＤＥＬＴＡＴ（２）は、イベントＥ２，Ｅ３間のデルタタイムを示している。すなわち、図示例では、上記式（１）中の“Σ”は、ｋ＝１，２についてＤＥＬＴＡＴ（ｋ）の加算を行うことになる。
【０１１２】
このようにして、上記式（１）によりチャンネル１のキーオンイベント間のデルタタイム累算値ＤＥＬＴＡ_ＡＣＭを求めることができる。
【０１１３】
図１７に戻り、ステップＳ１５５では、サーチしたキーオンイベントまでのデルタタイムおよびカウンタＴＩＭＥの値を所定値でそれぞれ除算し、各除算結果で対応するデルタタイムおよびカウンタＴＩＭＥの値を変更する。すなわち、前記図１８の例では、次式のように各値を変更する。
【０１１４】
ＴＩＭＥ  ＝  ＴＩＭＥ／Ｃ
ＤＥＬＴＡＴ（１）  ＝  ＤＥＬＴＡＴ（１）／Ｃ
ＤＥＬＴＡＴ（２）  ＝  ＤＥＬＴＡＴ（２）／Ｃ
ここで、Ｃは定数であり、“１”より大きい値である。このようにデルタタイムおよびカウンタＴＩＭＥの値を変更することで、次のマークデータ間のイベントの読み出しに速く移行できるようにしている。
【０１１５】
再び図１７に戻り、ステップＳ１５６で前記フラグＫＯＮ_ＲＣＶをセットし、ステップＳ１５７〜Ｓ１６２でそれぞれ前記ステップＳ１４５〜Ｓ１５０と同様の処理を行った後に、本テンポキーオン受信処理を終了する。
【０１１６】
図１９は、前記ステップＳ１４７およびＳ１５９のテンポ係数計算処理サブルーチンの詳細な手順を示すフローチャートである。
【０１１７】
同図において、まず、過去のＴ_ＣＯＥＦ×ＲＡＴＥの値を保存しておくために、ＲＡＭ２８の所定位置に確保された領域ＴＣ１〜ＴＣ１６のうち、領域ＴＣ１〜ＴＣ１５の値をそれぞれ領域ＴＣ２〜ＴＣ１６に格納し直す（ステップＳ１７１）。
【０１１８】
次に、前記ステップＳ１４６またはＳ１５８で、今回新たに算出した比率ＲＡＴＥを用いて変更したテンポ係数Ｔ_ＣＯＥＦ×ＲＡＴＥを、前記領域ＴＣ１の格納し（ステップＳ１７２）、前記ステップＳ６３またはＳ１２８で修正した移動平均次数αに応じて、領域ＴＣ１〜ＴＣ１６から選択したα個の格納値の移動平均値を算出して、最終のテンポ係数Ｔ_ＣＯＥＦを決定した（ステップＳ１７３）後に、本テンポ係数計算処理を終了する。
【０１１９】
図２０は、前記ステップＳ１４８およびＳ１６０のテンポ係数リミット処理サブルーチンの詳細な手順を示すフローチャートである。
【０１２０】
同図において、まず、前記ステップＳ１７３で算出したテンポ係数Ｔ_ＣＯＥＦの今回の値と前回の値との差分を計算し、その差分値が前記ステップＳ６３またはＳ１２８で修正した差分リミットβ以内であるか否かを判別する（ステップＳ１８１）。ここで、テンポ係数Ｔ_ＣＯＥＦの差分を計算するために、今回算出した最終のテンポ係数Ｔ_ＣＯＥＦを保存しておく必要があるが、この保存は、例えば本テンポ係数リミット処理を終了する直前に行うようにすればよい。
【０１２１】
ステップＳ１８１の判別で、テンポ係数Ｔ_ＣＯＥＦの差分が前記修正後の差分リミットβより大きい場合には、その差分が修正後の差分リミットβ以内に収まるように、今回算出したテンポ係数Ｔ_ＣＯＥＦをリミットし（ステップＳ１８２）、テンポ係数Ｔ_ＣＯＥＦの差分が修正後の差分リミットβ以内である場合には、ステップＳ１８２をスキップしてステップＳ１８３に進む。
【０１２２】
ステップＳ１８３では、今回算出した最終のテンポ係数Ｔ_ＣＯＥＦ値が、ステップＳ６３またはＳ１２８で修正した下限値γ以上、上限値δ以下であるか否かを判別し、テンポ係数Ｔ_ＣＯＥＦ値がこの条件を満たさない場合には、テンポ係数Ｔ_ＣＯＥＦが下限値γと上限値δの間になるようにリミットした（ステップＳ１８４）後に、本テンポ係数リミット処理を終了し、一方、テンポ係数Ｔ_ＣＯＥＦ値がこの条件を満たす場合には、直ちに本テンポ係数リミット処理を終了する。
【０１２３】
以上説明したように本実施例では、追従度Ａ〜Ｃに応じて追従度制御に用いる各種値α〜δの初期値を設定し、該初期値を難易度設定操作子２３1から出力された難易度係数Ｄ_ＣＯＥＦに応じて修正し、難易度を調節するように構成したので、操作者が曲や装置への自分の習熟度に合わせてテンポ制御の難易度（安定度または音楽表現力）を調節することができる。
【０１２４】
また、マークデータと自動演奏データとを混在させたので、ＲＡＭ２８の記憶容量を削減することができ、これによりコストの低減化を図ることができる。
【０１２５】
なお、本実施例では、各種値α〜δの初期値は各追従度Ａ〜Ｃに応じて予め記憶された値を読み出して設定するようにしたが、これに限らず、各種値α〜δの初期値を変更できるようにしてもよい。例えば、操作者が任意に決定できるようにしてもよいし、複数の値のセットを予め用意しておき、そのいずれかを選択できるようにしてもよい。また、曲毎に最適なセットを持つようにしてもよいし、複数のセットを用意しておき、曲に応じて最適なセットを自動的に選択するようにしてもよい。
【０１２６】
また、追従度は、本実施例のように３種類に限る必要はなく、１種類（例えば、曲の中で変化しないようにしたり、全ての曲に対して同様の追従度を設定したりする）でもよいし、２種類または４種類以上でもよい。すなわち、追従度の種類に拘わらず、各追従度を変更できるように構成されていればよい。
【０１２７】
さらに、本実施例では、追従度によって、移動平均の次数、前回値との差分、値の上下限値およびマークデータを読み飛ばす割合の５種類の条件を制御するように構成したが、これらの条件の一部を組み合わせて追従度制御に用いてもよいし、他の条件を制御するようにしてもよい。
【０１２８】
なお、本実施例では、テンポの制御は、デルタタイムの値にテンポ係数Ｔ_ＣＯＥＦを乗算し、デルタタイムの値を増加または減少させることによって行うように構成したが、これに限らず、処理の周期、例えば本実施例でいう割込みタイミングを変換させることによってテンポを変化させるように構成してもよい。また、デルタタイムの値を変化させるとき、所定の値を乗算するものに限らず、所定の値を加算するものであってもよい。
【０１２９】
また、テンポの制御だけに限らず、ダイナミクスの制御などについても、テンポ制御と同様の難易度制御を行なうようにしてもよい。
【０１３０】
また、本実施例では、２個の圧電ジャイロセンサ２，３からの出力信号に基づいてテンポ制御信号出力装置１の揺動動作を検出したが、３個以上の圧電ジャイロセンサを用いて揺動動作を検出するようにしてもよい。また、揺動動作を検出できるものであれば圧電ジャイロセンサに限らず、加速度センサや磁気または光を用いたもの等どのようなものであってもよいし、複数のセンサを組み合わせて用いてもよい。さらに、揺動動作を検出できるものであればセンサに限らず、揺動動作を撮像し、画像処理によって揺動操作を検出するようなものであってもよい。
【０１３１】
さらに、本実施例では、検出する揺動動作の種類を前記３種類に限定したが、これに限らず、もっと多くの種類の揺動動作を検出するようにしてもよい。この場合には、圧電ジャイロセンサの個数を多くしてより多くの揺動動作を正確に検出できるようにすればよい。なお、本実施例の３種類の揺動動作の検出においても、例えば、３拍子用と、２・４拍子用とで、異なるセンサを用いて判別精度を向上させるようにしてもよいし、３つ以上のセンサ出力を総合判断して揺動動作を検出するようにしてもよい。
【０１３２】
また、揺動動作を検出するセンサを取り付ける形態としては、本実施例のように片手に把持できるテンポ制御信号出力装置１に内蔵する他、センサを身体（例えば、手や腕等）に装着するようにしてもよいし、マイクロフォンに内蔵するようにしてもよいし、カラオケ装置等のリモコン装置に内蔵するようにしてもよい。
【０１３３】
また、本実施例では、テンポ制御信号出力装置１の揺動動作に基づいてテンポ制御信号を発生するようにしたが、これに限らず、タッピング操作や演奏操作子の操作等によってテンポ制御信号を発生するようにしてもよい。
【０１３４】
なお、本実施例では、操作者の揺動動作の動作種類およびその特徴点（ピークや谷）を検出してテンポ制御タイミングを出力するテンポ制御信号出力装置１とその被制御対象である自動演奏装置付き電子楽器２１とを別体で構成したが、これらを１つの装置として構成してもよい。また、外部に接続された装置にテンポクロックを供給し、その外部装置の演奏テンポを制御するように構成してもよい。
【０１３５】
また、音楽制御する対象としては、自動演奏に限る必要はなく、自動伴奏または自動リズム等であってもよい。また、これらの再生に加え、動画等の画像再生を伴うものであってもよい。
【０１３６】
【発明の効果】
以上説明したように、本発明に依れば、自動演奏データ記憶手段から自動演奏データが読み出されて自動演奏されているときに、操作者の動作に基づく連動が検出されると、それに対応して出力された動作検出信号に応じて、音楽制御信号発生手段から音楽制御信号が発生され、この音楽制御信号および自動演奏手段により読み出された自動演奏データに基づいて音楽制御値が算出され、その算出された音楽制御値が難易度調節手段により調節された難易度に応じて変更され、その変更された音楽制御値に基づいて自動演奏の音楽特性が制御されるので、操作者が曲や装置への自分の習熟度に合わせて音楽特性制御の難易度（安定度または音楽表現力）を調節することが可能となる効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施例に係る音楽制御装置の概略構成を示すブロック図である。
【図２】図１の自動演奏装置付き電子楽器のスイッチ群中の一スイッチである難易度設定操作子を示す図である。
【図３】図１のテンポ制御信号出力装置により検出される操作者の動作と各動作に応じてテンポ制御信号出力装置から出力される信号の値とを示す図である。
【図４】図１の電子楽器の自動演奏データのデータフォーマットを示す図である。
【図５】図１のテンポ制御信号出力装置のＣＰＵが実行する圧電振動ジャイロセンサ出力処理の手順を示すフローチャートである。
【図６】図５のステップＳ３のピーク検出処理サブルーチンの詳細な手順を示すフローチャートである。
【図７】図６のステップＳ１２のピーク種類判定処理サブルーチンの詳細な手順を示すフローチャートである。
【図８】図７のステップＳ２４のピーク２判定処理サブルーチンの詳細な手順を示すフローチャートである。
【図９】図８のステップＳ３４のピーク３判定処理サブルーチンの詳細な手順を示すフローチャートである。
【図１０】図１の各圧電ジャイロセンサからの出力に基づいてテンポ制御信号出力装置の振り角度を算出する方法を説明するための図である。
【図１１】図１の自動演奏装置付き電子楽器のＣＰＵが実行するメインルーチンの手順を示すフローチャートである。
【図１２】図２の難易度設定操作子が操作されたときに行われる難易度操作子処理の手順を示すフローチャートである。
【図１３】追従度制御を行うための各種値α〜δの具体例および難易度に応じた値の修正例を示す図である。
【図１４】自動演奏データの再生処理の手順を示すフローチャートである。
【図１５】テンポ制御間隔ＩＮＴＥＲＶＡＬとデルタタイム累算値ＤＥＬＴＡ_ＡＣＭとの関係を説明するための図である。
【図１６】図１４のステップＳ１０６のイベント対応処理サブルーチンの詳細な手順を示すフローチャートである。
【図１７】図１４のステップＳ１１３のテンポキーオン受信処理サブルーチンの詳細な手順を示すフローチャートである。
【図１８】デルタタイム累算値ＤＥＬＴＡ_ＡＣＭの具体的な算出方法を説明するための図である。
【図１９】図１７のステップＳ１４７およびＳ１５９のテンポ係数計算処理サブルーチンの詳細な手順を示すフローチャートである。
【図２０】図１７のステップＳ１４８およびＳ１６０のテンポ係数リミット処理サブルーチンの詳細な手順を示すフローチャートである。
【符号の説明】
１      テンポ制御信号出力装置（音楽制御信号発生手段）
２３1  難易度設定操作子（難易度調節手段）
２６    ＣＰＵ（自動演奏手段、音楽制御手段、音楽制御値算出手段、選択手段、平均化手段、変更手段、変化幅変更手段）
２８    ＲＡＭ（自動演奏データ記憶手段、音楽制御値記憶手段）
【図１】
0003720004.tif 000003
【図２】
0003720004.tif 000004
【図３】
0003720004.tif 000005
【図４】
0003720004.tif 000006
【図５】
0003720004.tif 000007
【図６】
0003720004.tif 000008
【図７】
0003720004.tif 000009
【図８】
0003720004.tif 000010
【図９】
0003720004.tif 000011
【図１０】
0003720004.tif 000012
【図１１】
0003720004.tif 000013
【図１２】
0003720004.tif 000014
【図１３】
0003720004.tif 000015
【図１４】
0003720004.tif 000016
【図１５】
0003720004.tif 000017
【図１６】
0003720004.tif 000018
【図１７】
0003720004.tif 000019
【図１８】
0003720004.tif 000020
【図１９】
0003720004.tif 000021
【図２０】
0003720004.tif 000022