(57)【特許請求の範囲】
【請求項１】
拍子に応じた揺動動作を検知する検知手段と、
この検知手段の検知出力に基づいて前記揺動動作の特徴点を検出する検出手段と、
前記検知手段の検知出力及び前記検出手段の検出出力に基づいて前記揺動動作の特徴点が何拍目の特徴点であるかをファジィ推論処理により動作種類として判別し、該動作種類を表わすテンポ制御情報を送出する判別手段と、
この判別手段からのテンポ制御情報に基づいて自動演奏のテンポを制御する演奏制御手段と
を備えた演奏制御装置。
【請求項２】
前記検出手段がファジィ推論処理により前記揺動動作の特徴点を検出する請求項１記載の演奏制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、指揮棒等の揺動動作に応答する演奏制御装置に関し、特に動作特徴点の検出や動作種類の判別にファジィ推論処理を適用することにより制御の信頼性を高め、安定した音楽演奏を可能にしたものである。
【０００２】
【従来の技術】
従来、人間の動作に伴うセンサ出力波形からピーク等の特徴点を検出したり、振り下ろし等の動作種類を判別したりするために、フィルタ処理（平均化処理）や大小比較処理等の信号処理を用いることが提案されている。
【０００３】
【発明が解決しようとする課題】
一般に、人間の動作は極めて曖昧且つ不安定である。このため、上記したような単純な信号処理だけでは、検出や判別の精度が低く、検出ミスや判別誤りが頻繁に発生した。従って、検出結果や判別結果に応じて例えば自動演奏のテンポを制御しようとしても、（イ）ユーザーがシステムに慣れる（機械にふさわしい動作をする）のに時間がかかること、（ロ）動作意図と異なる反応（誤動作）が生じるため、制御の信頼性が低く、安定した音楽演奏が困難であることなどの不都合を免れなかった。
【０００４】
この発明の目的は、揺動動作に応答して信頼性の高い演奏制御をなしうる新規な演奏制御装置を提供することにある。
【０００５】
【課題を解決するための手段】
この発明に係る演奏制御装置は、
拍子に応じた揺動動作を検知する検知手段と、
この検知手段の検知出力に基づいて前記揺動動作の特徴点を検出する検出手段と、
前記検知手段の検知出力及び前記検出手段の検出出力に基づいて前記揺動動作の特徴点が何拍目の特徴点であるかをファジィ推論処理により動作種類として判別し、該動作種類を表わすテンポ制御情報を送出する判別手段と、
この判別手段からのテンポ制御情報に基づいて自動演奏のテンポを制御する演奏制御手段と
を備えたものである。
【０００６】
このような構成によれば、揺動動作の特徴点が何拍目の特徴点であるかをファジィ推論処理により動作種類として判別し、判別に係る動作種類を表わすテンポ制御情報に基づいて自動演奏のテンポを制御するようにしたので、判別精度が向上し、信頼性の高いテンポ制御が可能になる。
【０００７】
この発明に係る演奏制御装置にあっては、前記検出手段がファジィ推論処理により前記揺動動作の特徴点を検出するようにしてもよい。
【０００８】
このような構成によれば、ファジィ推論処理を用いて揺動動作の速度ピーク（又は谷）等の特徴点を検出するので、検出精度が向上し、一層信頼性の高いテンポ制御が可能になる。
【０００９】
【発明の実施の形態】
図１は、この発明に係る揺動分析装置１０を示すもので、この装置は、図２に示す電子楽器５０における自動演奏のテンポ及びダイナミクス（強弱）を制御するために使用されるものである。
【００１０】
揺動分析制御装置１０において、バス１２には、操作検出回路１４、Ａ／Ｄ（アナログ／ディジタル）変換回路１６，１８、ＣＰＵ（中央処理装置）２０、ＲＯＭ（リード・オンリィ・メモリ）２２、ＲＡＭ（ランダム・アクセス・メモリ）２４、タイマ２６、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）  インターフェース２８等が接続されている。
【００１１】
操作検出回路１４は、演奏スタートスイッチ等を含むスイッチ群３０中の各スイッチ毎に操作情報を検出するものである。演奏スタートスイッチは、電子楽器５０に設けてもよいが、指揮棒３２の把持部近傍に設けると操作しやすい。
【００１２】
指揮棒３２の先端近傍には、一例として圧電振動ジャイロセンサからなるｘ方向（水平方向）及びｙ方向（垂直方向）の角速度センサ３４及び３６が設けられており、センサ３４及び３６の出力Ｘ及びＹは、それぞれノイズ除去回路３８及び４０を介してＡ／Ｄ変換回路１６及び１８に供給される。Ａ／Ｄ変換回路１６は、ノイズ除去回路３８でノイズ除去された出力ＸをＡ／Ｄ変換した形のディジタル出力ＤＸ  を送出し、Ａ／Ｄ変換回路１８は、ノイズ除去回路４０でノイズ除去された出力ＹをＡ／Ｄ変換した形のディジタル出力ＤＹ  を送出する。
【００１３】
ＣＰＵ２０は、ＲＯＭ２２にストアされたプログラムに従ってＡ／Ｄ変換回路１６，１８の出力ＤＸ  ，ＤＹ  を分析してテンポ制御情報ＴＣ及びダイナミクス制御情報ＤＣを発生するための各種処理を実行するもので、これらの処理については図３〜１０を参照して後述する。ＲＡＭ２４は、ＣＰＵ２０による各種処理に際してレジスタ等として使用される記憶領域を含んでいる。
【００１４】
タイマ２６は、ＣＰＵ２０に割込命令信号を供給するもので、割込命令信号の発生周期は、一例として１０［ｍｓ］である。ＣＰＵ２０は、タイマ２６から割込命令信号が発生されるたびに図６のセンサ出力処理を実行する。
【００１５】
ＭＩＤＩイーターフェース２８は、図２のＭＩＤＩイーターフェース７０とＭＩＤＩケーブルで接続されたもので、テンポ制御情報ＴＣ、ダイナミクス制御情報ＤＣ等をＭＩＤＩイーターフェース７０に供給する。
【００１６】
図２の電子楽器５０において、バス５２には、押鍵検出回路５４、操作検出回路５６、表示回路５８、音源回路６０、ＣＰＵ６２、ＲＯＭ６４、ＲＡＭ６６、タイマ６８、ＭＩＤＩイーターフェース７０、フロッピィディスク装置７２が接続されている。
【００１７】
押鍵検出回路５４は、鍵盤７４の多数の鍵にそれぞれ設けられた多数のキースイッチを走査するなどして各鍵毎に鍵操作情報を検出するものである。
【００１８】
操作検出回路５６は、演奏モード選択スイッチ等を含むスイッチ群７６中の各スイッチ毎に操作情報を検出するものである。演奏モード選択スイッチによりマニアル演奏モード及び自動演奏モードのうち一方又は双方を選択可能である。
【００１９】
表示回路５８は、テンポ、音量等の設定値を表示する表示器を含んでいる。
【００２０】
音源回路６０は、一例として第１〜第１５の音源チャンネルを有するもので、各音源チャンネル毎にイベントデータに応じて楽音信号を発生可能である。例えば、キーオンに係るチャンネルナンバ１のイベントデータがチャンネルナンバ１の音源チャンネルに割当てられると、この音源チャンネルからは、供給されたイベントデータの指示する音高及び音量を有する楽音信号の発生が開始される。そして、キーオフに係るチャンネルナンバ１のイベントデータがチャンネルナンバ１の音源チャンネルに割当てられると、この音源チャンネルでは、供給されたイベントデータの指示する音高を有する楽音信号の減衰が開始される。他の音源チャンネルにおいても、上記したと同様にして楽音信号発生制御動作が行なわれる。
【００２１】
音源回路６０から発生される１又は複数の楽音信号は、サウンドシステム７８に供給され、音響に変換される。
【００２２】
ＣＰＵ６２は、ＲＯＭ６４にストアされたプログラムに従って鍵盤７４の操作に基づくマニアル演奏音信号の発生及び／又はＲＡＭ６６の演奏データに基づく自動演奏音信号の発生を制御するもので、自動演奏音信号の発生のための各種処理については図１１〜１７を参照して後述する。ＲＡＭ６６には、フロッピィディスク装置７２から所望の楽曲の演奏データを選択して書込めるようになっている。別の選択方法としては、演奏データをＲＯＭ６４から選択して読出すようにしてもよい。ＲＡＭ６６は、ＣＰＵ６２による各種処理に際してレジスタ、カウンタ等として使用される記憶領域も含んでいる。
【００２３】
タイマ６８は、ＣＰＵ６２に割込命令信号を供給するもので、割込命令信号の発生周期は、一例として１［ｍｓ］である。ＣＰＵ６２は、タイマ６８から割込命令信号が発生されるたびに図１３の再生処理を実行する。この結果として、ＲＡＭ６６の演奏データに基づく自動演奏が遂行される。
【００２４】
ＭＩＤＩイーターフェース７０は、図１の揺動分析装置１０からテンポ制御情報ＴＣ及びダイナミクス制御情報ＤＣを受信する。ＣＰＵ６２は、テンポ制御情報ＴＣに応じて自動演奏のテンポを制御すると共に、ダイナミクス制御情報ＤＣに応じて自動演奏音の音量を制御する。
【００２５】
図３は、指揮棒３２の揺動動作を３拍子の場合（Ａ）と２拍子又は４拍子の場合（Ｂ）とに分けて示したものである。
【００２６】
（Ａ）の３拍子の場合には、位置Ｐ１  ，Ｐ２  ，Ｐ３  の順に３角形を描くような揺動動作が行なわれる。センサ３４の出力Ｘ及びセンサ３６の出力Ｙに対応してＡ／Ｄ変換回路１６及び１８から得られる出力値をそれぞれＤＸ  及びＤＹ  とすると、絶対角速度ＤＺ  は、次の数１の式で求められる。
【００２７】
【数１】
0003627319.tif 000002
図４は、絶対角速度ＤＺ  の時間的変化の一例を示すもので、変化波形における３つの谷は、図３の位置Ｐ１  ，Ｐ２  ，Ｐ３  にそれぞれ対応する。また、位置Ｐ１  〜Ｐ２  間の動作１と位置Ｐ２  〜Ｐ３  の動作２と位置Ｐ３  〜Ｐ１  の動作３とは、変化波形におけるピークＱ１  ，Ｑ２  ，Ｑ３  （１，２，３拍目のピーク）にそれぞれ対応する。
【００２８】
この発明の実施形態にあっては、ファジィ推論処理を用いてピークＱ１  〜Ｑ３  をそれぞれ検出すると共に動作１〜３（ピーク種類）をそれぞれ判別し、それぞれの判別結果に応じて動作１ならばＣ３  のキーコードを有するテンポ制御情報ＴＣを発生し、動作２ならばＣ＃３  のキーコードを有するテンポ制御情報ＴＣを発生し、動作３ならばＤ３  のキーコードを有するテンポ制御情報ＴＣを発生する。なお、この実施形態ではテンポ制御情報として所定のキーコードを有するキーデータを用いたが、テンポ制御専用のデータを用いてもよい。
【００２９】
図３（Ｂ）の２拍子又は４拍子の場合には、位置Ｐ１１から位置Ｐ１２への振り下ろし動作１と位置Ｐ１２から位置Ｐ１１への振り上げ動作３との２動作となり、３拍子の場合と同様の処理により動作１ならばＣ３  のキーコードを有するテンポ制御情報ＴＣを発生し、動作３ならばＤ３  のキーコードを有するテンポ制御情報ＴＣを発生する。
【００３０】
図３（Ａ）又は（Ｂ）のいずれの場合にも、ダイナミクス制御情報ＤＣは、絶対角速度ＤＺ  のピーク値（Ｑ１  〜Ｑ３  等）の大きさに対応して発生される。
【００３１】
図５は、ｘｙ平面内の角度θを示すものである。角度θは、Ａ／Ｄ変換回路１６，１８の出力値ＤＸ  ，ＤＹ  をｘｙ平面にプロットしたときの点をＳとすると、原点０と点Ｓを通る直線がｘ軸となす角度として定義される。角度θの情報は、ファジィ推論処理により動作１〜３（ピーク種類）を判別する際に使用される。
【００３２】
図６は、センサ出力処理を示すもので、この処理は、タイマ２６から割込命令信号が発生されるたびに（すなわち１０［ｍｓ］の周期で）行なわれる。
【００３３】
ステップ８０では、Ａ／Ｄ変換回路１６，１８から出力値ＤＸ  ，ＤＹ  を取込む。そして、ステップ８２に移り、前掲の数１の式に従って絶対角速度ＤＺ  を求める。
【００３４】
次に、ステップ８４では、ピーク検出処理を行なう。ピーク検出処理では、図４のＱ１  〜Ｑ３  等のピークを検出すると共に検出したピークが何拍目のピークか判別するが、詳しくは図７を参照して後述する。
【００３５】
次に、ステップ８６では、ダイナミクス制御情報ＤＣを作成し、イーターフェース２８を介して送出する。ダイナミクス制御情報ＤＣは、ステップ８４でピークが検出されたときそのピーク値の大きさに対応する音量レベルを指示するように作成される。イーターフェース２８から図２の電子楽器５０に送信されたダイナミクス制御情報ＤＣは、ＲＡＭ６６内の音量制御レジスタにセットされる。この後、図示しないメインルーチンにリターンする。
【００３６】
図７は、ピーク検出処理を示すもので、ステップ９０では、ルール１のファジィ推論処理を行なう。このファジィ推論処理では、今回より１つ前のＤＺ  値がピークである確率を求め、その確率が所定の条件を満たすときにピークとするが、詳しくは図８，９を参照して後述する。
【００３７】
次に、ステップ９２では、ステップ９０の処理においてピークが得られたか判定する。この判定結果が肯定的（Ｙ）であればステップ９４に移る。
【００３８】
ステップ９４では、ピーク種類判別処理を行なう。この判別処理では、検出したピークが何拍目のピークか（例えば図３の動作１〜３のいずれか）判別するが、詳しくは図１０を参照して後述する。
【００３９】
ステップ９４の処理が終ったとき又はステップ９２の判定結果が否定的（Ｎ）であったときは、図６のルーチンにリターンする。
【００４０】
図８は、ルール１のファジィ推論処理を示すもので、ステップ１００では、今回より１つ前のＤＺ  の値がピークである確率を求める。一例として、ファジィルール１は次の数２のように記述される。
【００４１】
【数２】
もし｛（［ａ］１つ前の値は２つ前の値よりも大きい）
且つ（［ｂ］１つ前の値は今回の値よりも大きい）
且つ（［ｃ］前回のピーク発生時刻から時間が経っている）
且つ（［ｄ］１つ前の値はダイナミックなしきい値より大きい）
且つ（［ｅ］前回の谷発生時刻から時間が経っている）
且つ（［ｆ］１つ前の値が前回のピーク値と比べて小さすぎない）｝
ならば（［ｇ］１つ前の値がピークである確率が高い）
ここで、ダイナミックなしきい値とは、次々に求められたＤＺ  値を所定時間内で平均した値をいう。
【００４２】
次に、ファジィルール１において変数となる言語をメンバーシープ関数で表わす。図９（Ａ）〜（Ｇ）は、ファジィルール１中の条件［ａ］〜［ｇ］にそれぞれ対応するメンバーシップ関数を例示するもので、ｔは時間を表わす。
【００４３】
次に、（Ａ）〜（Ｆ）のメンバーシップ関数について入力に対するメンバーシップ値を求める。（Ａ）のグラフにおいて、Ｄ２  を２つ前の値とすると、１つ前の値に対応するメンバーシップ値は破線で示すようにＭ１  となる。（Ｂ）のグラフにおいて、Ｄ０  を今回の値とすると、１つ前の値に対応するメンバーシップ値は破線で示すようにＭ２  となる。（Ｃ）のグラフにおいて、前回のピーク発生時刻からの経過時間に対応するメンバーシップ値は破線で示すようにＭ３  となる。（Ｄ）のグラフにおいて、Ｄｄ  をダイナミックなしきい値とすると、１つ前の値に対応するメンバーシップ値は破線に対応してＭ４  ＝１となる。（Ｅ）のグラフにおいて、前回の谷発生時刻からの経過時間に対応するメンバーシップ値は破線で示すようにＭ５  となる。（Ｆ）のグラフにおいて、Ｄｐ  を前回のピーク値とすると、１つ前の値に対応するメンバーシップ値は破線で示すようにＭ６  となる。
【００４４】
次に、（Ａ）〜（Ｆ）のメンバーシップ関数に基づく推論結果から最終的な推論結果を求める。すなわち、［ａ］〜［ｆ］の条件は「且つ」で結ばれているので、メンバーシップ値Ｍ１  〜Ｍ６  のうちから最小値Ｍｍｉｎ  を求め、Ｍｍｉｎ  を（Ｇ）のグラフにメンバーシップ値として適用して図形ＦがＭｍｉｎ  以上の部分を削除する。そして、残った図形Ｆについて重心Ｆｇを演算により求める。重心の変動範囲Ｐは、確率０〜１の範囲であり、重心Ｆｇに対応してピークである確率を求める。
【００４５】
次に、図８のステップ１０２では、ステップ１００で求めた確率に基づいてピークであるか否か決定する。すなわち、求めた確率が所定値（例えば０．５）以上か判定し、この判定結果が肯定的ならばピークであると決定し、否定的ならばピークでないと決定する。そして、図７のルーチンにリターンする。
【００４６】
図１０は、ピーク種類判別処理を示すもので、ステップ１１０では、ルール２のファジィ推論処理を行なう。この推論処理では、今回のピーク種類が動作１である確率を求める。一例として、ファジィルール２は、次の数３のように記述される。
【００４７】
【数３】
もし｛（（（出力値ＤＹ  が小さい）且つ（出力値ＤＸ  が大きい））
又は（前回のピーク種類が動作３）
又は（（前回のピーク種類が動作２）且つ（今回と前回の角度差が大きい）））
且つ（今回の角度は中位）｝
ならば（今回のピーク種類は動作１である確率が高い）
ここで、角度とは、図５に関して前述したものであり、角度差とは、かような角度の差である。
【００４８】
ルール２のファジィ推論処理は、ルール１について前述したと同様に行なうことができる。すなわち、ルール２において変数となる言語をメンバーシップ関数で表わし、「ならば」の前までの各条件について入力に対するメンバーシップ値を求める。そして、「且つ」で結ばれた条件については最小のメンバーシップ値を求め、「又は」で結ばれた条件については最大のメンバーシップ値を求める。「ならば」のメンバーシップ関数に基づいて重心法により今回のピーク種類が動作１である確率を求める。
【００４９】
次に、図１０のステップ１１２では、ルール３のファジィ推論処理を行なう。この推論処理では、今回のピーク種類が動作２である確率を求める。一例として、ファジィルール３は、次の数４のように記述される。
【００５０】
【数４】
もし｛（（（前回のピーク種類が動作１）且つ（今回と前回の角度差が小さ  い）
又は（（前回のピーク種類が動作３）且つ（今回と前回の角度差が大きい））
又は（（前回のピーク種類が判別失敗）且つ（出力値ＤＹ  が大きい）且つ（出力値ＤＸ  が小さい））
又は（前回のピーク種類が判別失敗）且つ（今回の角度が０°に近い）））｝
ならば（今回のピーク種類は動作２である確率が高い）
ルール３のファジィ推論処理は、ルール２について前述したと同様にして行なうことができる。
【００５１】
次に、図１０のステップ１１４では、ルール４のファジィ推論処理を行なう。この推論処理では、今回のピーク種類が動作３である確率を求める。一例として、ファジィルール４は、次の数５のように記述される。
【００５２】
【数５】
もし｛（（（前回のピーク種類が動作２）且つ（今回と前回の角度差が小さ  い）
又は（（前回のピーク種類が動作１）且つ（今回と前回の角度差が大きい））
又は（（前回のピーク種類が判別失敗）且つ（出力値ＤＹ  が大きい））｝
ならば（今回のピーク種類は動作３である確率が高い）
ルール４のファジィ推論処理は、ルール２について前述したと同様にして行なうことができる。
【００５３】
次に、図１０のステップ１１６では、ルール５のファジィ推論処理を行なう。この推論処理では、今回のピーク種類が判別失敗である確率を求める。一例として、ファジィルール５は、次の数６のように記述される。
【００５４】
【数６】
もし（ルール２，３，４のいずれの推論処理で求めた確率も小さい）
ならば（今回のピーク種類は判別失敗である確率が高い）
ルール５のファジィ推論処理もルール２について前述したと同様にして行なうことができる。
【００５５】
図１０のステップ１１８では、ルール５の推論結果に基づいて判別失敗か否か決定する。すなわち、ステップ１１６で求めた確率が所定値（例えば０．５）以上か判定し、この判定結果が肯定的であれば判別失敗であるとし、否定的であれば判別失敗でないとする。そして、ステップ１２０に移る。
【００５６】
ステップ１２０では、判別失敗か判定する。この判定結果が否定的（Ｎ）であればステップ１２２に移り、ルール２〜４の推論処理で求めた確率のうち最も高い確率についてピーク種類を決定する。例えば、ルール２の推論処理で求めた確率が最も高い場合、ピーク種類は動作１と決定される。
【００５７】
次に、ステップ１２４では、ピーク種類に応じたキーコードを有するテンポ制御情報ＴＣを発生する。例えば、ピーク種類が動作１であれば、Ｃ３  のキーコードを有するテンポ制御情報ＴＣが発生される。発生されたテンポ制御情報ＴＣは、インターフェース２８，７０を介してＲＡＭ６６内の所定のレジスタにセットされる。
【００５８】
ステップ１２０の判定結果が肯定的（Ｙ）であったときは、ステップ１２６でピーク種類不明と決定する。ステップ１２４又は１２６の処理が終ったときは、図７のルーチンにリターンする。
【００５９】
図１１は、ＲＡＭ６６における演奏データのフォーマットを示すものである。
【００６０】
所望の楽曲の演奏データは、楽曲進行に従ってデルタタイムデータΔＴ、イベントデータＥＶ、デルタタイムデータΔＴ、イベントデータＥＶ…のようにデータΔＴ及びＥＶを交互に配置したものである。いずれのデルタタイムデータΔＴも、［ｍｓ］の単位で時間を表わすもので、最初のデルタタイムデータは、最初のイベントまでの時間を表わし、イベント間のデルタタイムデータは、イベント間の相対時間を表わす。例えば和音発音のように１タイミングに複数イベントがあるときは、該イベント間のデルタタイムデータは０を表わす。
【００６１】
各イベントデータＥＶは、図１２に示すように３バイトのデータからなる。第１バイトのうち上位４ビットがイベント種類データＥＳであり、下位４ビットがチャンネルナンバデータＣＨＮである。イベント種類データＥＳは、キーオン又はキーオフのようなイベント種類を表わす。チャンネルナンバデータＣＨＮは、０〜１５のいずれかのチャンネルナンバを表わす。チャンネルナンバ１〜１５は、音源回路６０の第１〜第１５の音源チャンネルに対応しているが、チャンネルナンバ０は、テンポ制御マークとして使用される。
【００６２】
各イベントデータＥＶにおいて、第２バイトは、キーコードデータＫＣであり、音高を表わす。また、第３バイトは、ベロシティデータＶＬであり、押鍵速度に対応する音量を表わす。
【００６３】
イベントデータＥＶとしては、チャンネルナンバ０のテンポ制御用のイベントデータと、チャンネルナンバ１〜１５の発音／非発音制御用のイベントデータ（キーオン／オフに係るイベントデータ）との２種類のものが存在する。発音／非発音制御用のイベントデータは、楽曲を構成する各音符毎に楽音信号の発生及び減衰開始を制御するもので、自動演奏の分野で広く使用されている。一方、テンポ制御用のイベントデータは、この発明を実施するために使用されるもので、以下では、簡単のため「テンポ制御データ」と称する。
【００６４】
テンポ制御データとしては、３拍子の場合、Ｃ３  ，Ｃ＃３  ，Ｄ３  の３種類のキーコードを有するものが使用される。そして、Ｃ３  ，Ｃ＃３  ，Ｄ３  のキーコードを有するテンポ制御データは、基準となるテンポにおいて第１拍、第２拍、第３拍のタイミングに対応する位置に配置され、このような順序で読出される。また、４拍子の楽曲の場合、Ｃ３  ，Ｄ３  ，Ｃ３  ，Ｄ３  のテンポ制御データがそれぞれ第１拍，第２拍，第３拍，第４拍のタイミングに対応する位置に配置され、このような順序で読出される。テンポ制御は、一例として、Ｃ３  のキーコードを有するテンポ制御データの読出タイミングに対して、Ｃ３  のキーコードを有するテンポ制御情報ＴＣの受信タイミングが早ければテンポを進めるように、また遅ければテンポを遅らせるように行なわれる。
【００６５】
図１３は、再生処理を示すもので、この処理は、タイマ６８から割込命令信号が発生されるたびに（すなわち１［ｍｓ］の周期で）行なわれる。以下の説明にて言及されるフラグ、レジスタ等は、ＲＡＭ６６内に存在するものである。
【００６６】
ステップ１３０では、ランフラグＲＵＮが１か判定する。フラグＲＵＮは、前述の演奏スタートスイッチをオンするたびに１であれば０になり、０であれば１になるもので、ＲＵＮ＝１は、自動演奏中であることを表わす。ステップ１３０の判定結果が肯定的（Ｙ）であればステップ１３２に移る。
【００６７】
ステップ１３２では、読出停止フラグＰＡＵＳＥが０か判定する。フラグＰＡＵＳＥは、ＲＡＭ６６からテンポ制御データを読出したにもかかわらず、その読出タイミングまでに対応するテンポ制御情報ＴＣが受信されていないときに１となるもので、ステップ１３２の判定結果が肯定的（Ｙ）であるとき（ＴＣを受信済みのとき）は、ステップ１３４に移る。
【００６８】
ステップ１３４では、デルタタイムレジスタＴＩＭＥが０か判定する。レジスタＴＩＭＥには、ＲＡＭ６６から読出したデルタタイムデータΔＴをセットし（ステップ１４２）、データΔＴの示す値を割込みのたびに１ずつ減算している（ステップ１４８）ので、ＴＩＭＥ＝０は、次のイベントデータを読出すべきタイミングになったことを意味する。ステップ１３４の判定結果が肯定的（Ｙ）であればステップ１３６に移る。
【００６９】
ステップ１３６では、ＲＡＭ６６のアドレスを１つ進めてデータを読出す。そして、ステップ１３８に移り、読出したデータがデルタタイムデータΔＴか判定する。ステップ１３４の後初めてステップ１３８にきたときは、ステップ１３８の判定結果が否定的（Ｎ）となる（ΔＴの次は必ずイベントデータＥＶの読出しとなる）ので、ステップ１４０に移る。ステップ１４０では、図１４について後述するようにイベント対応処理を行なう。この後、ステップ１３６に戻る。
【００７０】
ステップ１３６では、再びアドレスを進めてデータを読出す。そして、ステップ１３８で読出データがデルタタイムデータΔＴか判定すると、判定結果が肯定的（Ｙ）となり、ステップ１４２に移る。
【００７１】
ステップ１４２では、読出されたデルタタイムデータΔＴをレジスタＴＩＭＥにセットする。そして、ステップ１４４でＴＩＭＥ＝０か判定する。通常は、読出直後にデルタタイムデータΔＴがゼロになることはないが、前述したように和音発音等の場合にはΔＴ＝０のこともある。このような場合には、ステップ１４４の判定結果が肯定的（Ｙ）となり、ステップ１３６に戻る。
【００７２】
ステップ１３６では、次のイベントデータを読出し、ステップ１３８を介してステップ１４０でイベント対応処理を行なう。そして、ステップ１３６に戻って次のデルタタイムデータΔＴを読出してステップ１３８，１４２を介して再びステップ１４４にくる。ステップ１４４の判定結果が肯定的（Ｙ）であれば、ステップ１３６に戻る。ステップ１３６では、次のイベントデータを読出し、ステップ１３８を介してステップ１４０でイベントデータ対応処理を行なう。このようにして、和音を構成する第１〜第３音を実質的に同時に発音させることができる。ステップ１４０の後は、上記したと同様にステップ１３６，１３８，１４２，１４４の処理を行なう。
【００７３】
ステップ１４４の判定結果が否定的（Ｎ）であったときは、ステップ１４６に移る。ステップ１４６では、レジスタＴＩＭＥの値にテンポ係数レジスタＴＭＫの値（テンポ係数ＴＭＫ）を乗じたものをＴＩＭＥにセットする。
【００７４】
テンポ係数ＴＭＫは、基準値が１であり、指揮棒３２の揺動速度が速い又は遅いに応じてそれぞれ１より小さく又は大きくなるように後述のステップ１５４の処理で変更される。従って、ＴＩＭＥの値は、テンポ係数ＴＭＫの乗算により修正され、この結果として自動演奏のテンポが指揮棒３２の揺動速度に追従すべく制御される。
【００７５】
ステップ１４６の処理が終ったとき又はステップ１３４の判定結果が否定的（Ｎ）であった（読出すべきタイミングに達していない）ときは、ステップ１４８に移る。ステップ１４８では、ＴＩＭＥの値を１減らす。そして、ステップ１５０に移り、読出間隔レジスタＲＢの値を１増やす。レジスタＲＢは、図１６に示すようにあるテンポ制御データＴＥＶ１  の読出タイミングから次のテンポ制御データＴＥＶ２  の読出タイミングまでの時間間隔に対応する数値を得るためのものである。
【００７６】
ステップ１５０の処理が終ったとき又はステップ１３２の判定結果が否定的（Ｎ）であった（ＴＣの受信待ちである）ときは、ステップ１５２に移る。ステップ１５２では、受信間隔レジスタＲＡの値を１増やす。レジスタＲＡは、図１６に示すようにあるテンポ制御情報ＴＣ１  の受信タイミングから次のテンポ制御情報ＴＣ２  の受信タイミングまでの時間間隔に対応する数値を得るためのものである。ステップ１５２の後は、ステップ１５４に移り、図１５について後述するようにテンポ制御処理を実行する。
【００７７】
ステップ１５４の処理が終ったとき又はステップ１３０の判定結果が否定的（Ｎ）であった（自動演奏中でない）ときは、図示しないメインルーチンにリターンする。
【００７８】
図１４は、イベント対応処理を示すもので、ステップ１６０では、読出データがテンポ制御データＴＥＶが判定する。この判定結果が肯定的（Ｙ）であればステップ１６２に移る。
【００７９】
ステップ１６２では、受信フラグＴＣＲＦが１か（テンポ制御情報ＴＣを受信済みか）判定する。この判定結果が肯定的（Ｙ）であればステップ１６４に移り、ＴＣＲＦに０をセットする。これは、テンポ制御データＴＥＶを読出したときに対応するテンポ制御情報ＴＣが受信済みであることを意味する。
【００８０】
ステップ１６２の判定結果が否定的（Ｎ）であったときは、ステップ１６６に移り、テンポ制御データＴＥＶ中のキーコードデータＫＣをレジスタＫＥＹにセットする。そして、ステップ１６８に移り、レジスタＰＡＵＳＥに１をセットする。これは、テンポ制御データＴＥＶに対応するテンポ制御情報ＴＣを受信するまでＲＡＭ６６からの演奏データ読出しを停止するためである。すなわち、図１３では、ステップ１３２でＰＡＵＳＥ＝１であればステップ１３６の読出処理を行なわない。そして、テンポ制御情報ＴＣが受信されると、ステップ１５４の処理（ステップ１９６）でＰＡＵＳＥ＝０となり、この後は、ＲＡＭ６６からの演奏データ読出しが行なわれる。
【００８１】
ステップ１６０の判定結果が否定的（Ｎ）であったときは、ステップ１７０に移り、発音／非発音制御用のイベントデータＰＥＶのうち発音用のものだけベロシティデータＬＶの値をＲＡＭ６６内のレジスタにあるダイナミクス制御情報ＤＣに応じて修正する。例えば、指揮棒の振りが強いときは、制御情報ＤＣに応じて音量を高めるべくＶＬの値を修正する。そして、ステップ１７２に移る。
【００８２】
ステップ１７２では、発音／非発音制御用のイベントデータＰＥＶを音源回路６０に送出する。このとき送出されるデータが発音制御用のイベントデータ（キーオンに係るイベントデータ）であればそれに対応する楽音信号の発生が開始され、非発音制御用のイベントデータ（キーオフに係るイベントデータ）であればそれに対応する楽音信号の減衰が開始される。
【００８３】
ステップ１６４，１６８又は１７２の処理が終ったときは、図１３のルーチンにリターンする。
【００８４】
図１５は、テンポ制御処理を示すもので、ステップ１８０では、テンポ制御情報ＴＣの受信ありか判定する。この判定結果が否定的（Ｎ）であれば図１３のルーチンにリターンする。
【００８５】
ステップ１８０の判定結果が肯定的（Ｙ）であったときは、ステップ１８２でＰＡＵＳＥ＝１か（読出停止中か）判定する。この判定結果が肯定的（Ｙ）である場合は、テンポ制御データＴＥＶの読出しよりそれに対応するテンポ制御情報ＴＣの受信が遅れた（揺動速度が遅い）場合であり、その一例を図１６に示す。すなわち、テンポ制御データＴＥＶ２  が読出された時点でＴＥＶ２  に対応するテンポ制御情報ＴＣ２’が受信されておらず（ＰＡＵＳＥ＝１）、この後でＴＣ２’が受信された場合である。
【００８６】
一方、ステップ１８２の判定結果が否定的（Ｎ）である場合は、テンポ制御データＴＥＶの読出しよりそれに対応するテンポ制御情報ＴＣの受信が早かった（揺動速度が速い）場合であり、その一例を図１６に示す。すなわち、テンポ制御データＴＥＶ２  が読出された時点でＴＥＶ２  に対応するテンポ制御情報ＴＣ２  がすでに受信されている（ＰＡＵＳＥ＝０）場合である。
【００８７】
ステップ１８２の判定結果が肯定的（Ｙ）であったときは、ステップ１８４に移り、受信したテンポ制御情報ＴＣのキーコードＫＣとレジスタＫＥＹのキーコードＫＣとが一致するか判定する。この判定結果が否定的（Ｎ）であれば図１３のルーチンにリターンし、肯定的（Ｙ）であればステップ１８６に移る。換言すれば、テンポ制御情報ＴＣを受信してそのキーコードＫＣが読出しに係るテンポ制御データＴＣＶのキーコードＫＣと一致することを条件としてステップ１８６〜１９６の処理を行なう。
【００８８】
ステップ１８６では、レジスタＲＡ，ＲＢの値の比ＲＡ／ＲＢをレジスタＲＡＴＥにセットする。そして、ステップ１８８に移り、レジスタＴＭＫの値にＲＡＴＥの値を乗じたものをＴＭＫにセットする。この結果、テンポ係数ＴＭＫがＲＡＴＥの値に応じて修正されたことになる。一例として、図１６のＴＥＶ２  ，ＴＣ２’の例では、比ＲＡ／ＲＢの値は、１より大きくなり、テンポ係数ＴＭＫは、１より大きくなる。
【００８９】
次に、ステップ１９０では、テンポ係数ＴＭＫの値のリミット処理を行なう。これは、ＴＭＫ値が大きすぎないように所定値（例えば２．０）以下に制限する処理である。
【００９０】
この後、ステップ１９２，１９４，１９６では、それぞれレジスタＲＢ，ＲＡ，フラグＰＡＵＳＥに０をセットする。そして、図１３のルーチンにリターンする。
【００９１】
次回の割込みにより図１３のルーチンに入り、ステップ１４６でレジスタＴＩＭＥの値にテンポ係数ＴＭＫを乗ずると、ＴＩＭＥの値は以前より大きくなり、自動演奏のテンポは揺動速度に追従して遅くなる。
【００９２】
一方、ステップ１８２の判定結果が否定的（Ｎ）であったときは、ステップ１９８に移り、次のテンポ制御データＴＥＶをサーチする。そして、ステップ２００に移る。
【００９３】
ステップ２００では、受信したテンポ制御情報ＴＣのキーコードＫＣとサーチしたテンポ制御データＴＥＶのキーコードＫＣとが一致するか判定する。これは、前述のステップ１８４に対応する処理である。この判定結果が否定的（Ｎ）であれば図１３のルーチンにリターンし、肯定的（Ｙ）であればステップ２０２に移る。
【００９４】
ステップ２０２では、前のテンポ制御データの読出タイミングからサーチしたテンポ制御データＴＥＶの読出タイミングまで時間間隔をレジスタＲＢにセットする。例えば、図１６に示すように発音／非発音制御用のイベントデータＰＥＶを読出した後テンポ制御情報ＴＣ２  を受信してからテンポ制御データＴＥＶ２  をサーチした場合、レジスタＲＢには、テンポ制御データＴＥＶ１  の読出タイミングからＴＣ２  の受信タイミングまでの時間間隔に対応する数値がセットされているだけで、ＴＣ２  の受信タイミングからＴＥＶ２  を（サーチではなく）演奏進行に応じて読出すべきタイミングまでの時間間隔に対応する数値が含まれていない。この時間間隔に対応する数値は、ＴＥＶ２  を読出すべきタイミングで０になるレジスタＴＩＭＥにおいてＴＣ２  受信時に残されている数値ＲＴに等しい。そこで、レジスタＲＢの値にＴＩＭＥの値ＲＴを加えたものをＲＢにセットする。
【００９５】
また、図１７に示すように発音／非発音制御用のイベントデータＰＥＶを読出した後テンポ制御情報ＴＣ２  を受信してからサーチ動作により発音／非発音制御用のイベントデータＰＥＶ’及びテンポ制御データＴＥＶ２  を読出した場合には、ＴＣ２  の受信タイミングからＰＥＶ’を演奏進行に応じて読出すべきタイミングまでの時間に対応してレジスタＴＩＭＥの値ＲＴを考慮すると共に、ＰＥＶ’を演奏進行に応じて読出すべきタイミングからＴＥＶ２  を演奏進行に応じて読出すべきタイミングまでの時間に対応して数値ＲＴ’を考慮する。数値ＲＴ’は、データＰＥＶ’及びＴＥＶ２  のイベント間相対時間をΔＴとし、テンポ係数をＴＭＫとすると、次の数７の式で表わされる。
【００９６】
【数７】
ＲＴ’＝ΔＴ×ＴＭＫ
従って、この場合には、レジスタＲＢの値にレジスタＴＩＭＥの値ＲＴと数値ＲＴ’とを加えたものをＲＢにセットする。なお、ＴＥＶ２  をサーチする際にＰＥＶ’のようなイベントデータが複数読出されるときは各イベントデータについてＲＴ’と同様の考慮を払えばよい。
【００９７】
次に、ステップ２０４では、レジスタＲＢの値に１／Ｎを乗じたものをＲＢにセットすると共に、レジスタＴＩＭＥの値に１／Ｎを乗じたものをＴＩＭＥにセットする。ここで、Ｎは、ＲＢの値をレジスタＲＡの値に近づけるために適宜選定される定数である。
【００９８】
次に、ステップ２０６では、フラグＴＣＲＦに１をセットする。この結果、この後の割込みにより図１４のステップ１６２にくると、判定結果が肯定的（Ｙ）となり、ステップ１６４でＴＣＲＴ＝０とされる。
【００９９】
次に、ステップ２０８では、レジスタＲＡ，ＲＢの値の比ＲＡ／ＲＢをレジスタＲＡＴＥにセットする。そして、ステップ２１０に移り、レジスタＴＭＫの値にＲＡＴＥの値を乗じたものをＴＭＫにセットする。この結果、テンポ係数ＴＭＫがＲＡＴＥの値に応じて修正されたことになる。一例として、図１６のＴＣ２  ，ＴＥＶ２  の例では、比の値ＲＡ／ＲＢが１より小さくなり、テンポ係数ＴＭＫが１より小さくなる。この後、ステップ２１２に移る。
【０１００】
ステップ２１２では、テンポ係数ＴＭＫの値のリミット処理を行なう。これは、ＴＭＫ値が小さすぎないように所定値（例えば０．５）以上に制限する処理である。
【０１０１】
この後、ステップ２１４，２１６では、それぞれレジスタＲＢ，ＲＡに０をセットする。そして、図１３のルーチンにリターンする。
【０１０２】
次回の割込みにより図１３のルーチンに入り、ステップ１４６でレジスタＴＩＭＥの値にテンポ係数ＴＭＫを乗ずると、ＴＩＭＥの値は以前より小さくなり、自動演奏のテンポは揺動速度に追従して速くなる。
【０１０３】
この発明は、上記した実施形態に限定されるものではなく、種々の改変形態で実施可能なものである。例えば、次の（１）〜（１３）のような変更が可能である。
【０１０４】
（１）揺動動作の特徴点検出と動作種類判別の両方に対してファジィ推論処理を適用したが、動作種類判別のみにファジィ推論処理を適用するようにしてもよい。
【０１０５】
（２）揺動動作に応じた出力から直接ファジィ推論処理によりピークや動作種類を求めるようにしたが、従来の手法により求めたピークや動作種類をファジィ推論処理により修正するようなものであってもよい。また、ニューラルネットワークと融合させ、例えばメンバーシップ関数を決定乃至修正するのにニューラルネットワークを用いるようにしてもよい。
【０１０６】
（３）揺動動作を検知するためのセンサは、圧電振動ジャイロセンサ等の角速度センサに限らず、加速度センサや磁気又は光を用いたセンサであってもよい。また、揺動動作を撮影し、画像処理によって揺動動作を検知するものであってもよい。さらに、複数種類のセンサを組合せて用いてもよい。
【０１０７】
（４）判別する揺動動作の種類は、３種類に限らず、もっと多くの種類の動作を判別するようにしてもよい。
【０１０８】
（５）揺動分析装置と指揮棒とを別体としたが、指揮棒に揺動分析装置を内蔵させるようにしてもよい。また、揺動分析装置と自動演奏装置付き電子楽器とを別体としたが、これらを一体に構成してもよい。さらに、揺動分析装置からの出力情報ＴＣ，ＤＣは、図２の電子楽器以外の電子楽器や自動演奏装置に供給して上述のような演奏制御を行なうようにしてもよい。
【０１０９】
（６）揺動動作の検知手段として、２つのセンサを用いたが、３つ以上のセンサを用いてもよい。例えば、３拍子用と、２，４拍子用とで異なるセンサを用いるようにしてもよいし、３つ以上のセンサの出力を総合的に判断して動作を検知するようにしてもよい。
【０１１０】
（７）センサは、指揮棒に装着したが、指揮棒に代わる揺動部材に装着したり、手など身体の一部に装着したり、マイクロホンに内蔵したり、カラオケ装置等の機器のリモートコントローラに内蔵したりしてもよい。センサと揺動分析装置との間の通信は、有線又は無線のいずれでもよい。
【０１１１】
（８）演奏中に演奏テンポを制御するようにしたが、演奏に先立って演奏テンポを決定する場合にもこの発明を適用することができる。
【０１１２】
（９）演奏データの記憶方式は、イベント＋デルタタイム（イベント間相対時間）としたが、イベント＋絶対時間等の他の方式を採用してもよい。また、デルタタイムは、ｍｓの単位であるとしたが、音符の長さを単位とする（例えば４分音符の１／２４とする）ようにしてもよい。
【０１１３】
（１０）テンポの制御は、デルタタイムの値にテンポ係数を乗算し、デルタタイムの値を変化させることで行なうようにしたが、図１３のタイマ割込みの周期を変化させることで行なうようにしてもよい。また、１回のタイマ割込みにおいてデルタタイムの値から減算する値を１以外の値とすることによりテンポを制御するようにしてもよい。さらに、デルタタイムの値を変化させるには、乗算に限らず、加算等の処理を用いてもよい。
【０１１４】
（１１）テンポ制御にあっては、テンポがなめらかに変化するように変化前の値から目標値までの間を補間するようにしてもよい。ダイナミクスの制御も同様にしてなめらかな変化が得られるようにしてもよい。
【０１１５】
（１２）ダイナミクス制御情報ＤＣに応じて演奏音の音量を制御するようにしたが、該情報ＤＣに応じて演奏音の音色、音高、効果等を制御してもよい。また、ダイナミクス制御情報ＤＣに応じて演奏パート数等を制御してもよい。これらのパラメータのうち複数のものを組合せて制御することで演奏のダイナミクスを一層強調するようにしてもよい。
【０１１６】
（１３）ファジィルールやメンバーシップ関数をユーザがエディット可能とし、ユーザが最も操作しやすいように調節可能としてもよい。
【０１１８】
【発明の効果】
以上のように、この発明によれば、ファジィ推論処理により揺動動作の特徴点検出や動作種類判別を行なうようにしたので、検出精度や判別精度が向上し、信頼性の高い演奏態様制御が可能となり、安定した音楽演奏を行なえる効果が得られるものである。
【図面の簡単な説明】
【図１】この発明に係る揺動分析装置の回路構成を示すブロック図である。
【図２】図１の装置の出力に応じて自動演奏可能な電子楽器の回路構成を示すブロック図である。
【図３】指揮棒の揺動動作の説明図である。
【図４】絶対角速度の変化の一例を示す波形図である。
【図５】ｘｙ平面内の角度の説明図である。
【図６】センサ出力処理を示すフローチャートである。
【図７】ピーク検出処理を示すフローチャートである。
【図８】ルール１のファジィ推論処理を示すフローチャートである。
【図９】図８の処理で用いられるメンバーシップ関数を示すグラフである。
【図１０】ピーク種類判別処理を示すフローチャートである。
【図１１】演奏データのフォーマットを示す図である。
【図１２】イベントデータのフォーマットを示す図である。
【図１３】再生処理を示すフローチャートである。
【図１４】イベント対応処理を示すフローチャートである。
【図１５】テンポ制御処理を示すフローチャートである。
【図１６】テンポ制御動作の説明図である。
【図１７】テンポ制御動作の説明図である。
【符号の説明】
１０：揺動分析装置、１２，５２：バス、１６，１８：Ａ／Ｄ変換回路、２０，６２：ＣＰＵ、２２，６４：ＲＯＭ、２４，６６：ＲＡＭ、２６，６８：タイマ、２８，７０：ＭＩＤＩインターフェース、３２：指揮棒、３４，３６：角速度センサ、５０：電子楽器、６０：音源回路。
【図１】
0003627319.tif 000003
【図２】
0003627319.tif 000004
【図３】
0003627319.tif 000005
【図４】
0003627319.tif 000006
【図５】
0003627319.tif 000007
【図６】
0003627319.tif 000008
【図７】
0003627319.tif 000009
【図８】
0003627319.tif 000010
【図９】
0003627319.tif 000011
【図１０】
0003627319.tif 000012
【図１１】
0003627319.tif 000013
【図１２】
0003627319.tif 000014
【図１３】
0003627319.tif 000015
【図１４】
0003627319.tif 000016
【図１５】
0003627319.tif 000017
【図１６】
0003627319.tif 000018
【図１７】
0003627319.tif 000019