(57)【要約】【課題】操作者のテンポをとる動作に応じて曲のテンポを変更し、かつ、小節内で何回テンポをとるかという回数を変更可能にする。【解決手段】自動演奏データ２０に埋め込まれた打数指示データＣＢＥＡＴが読み出される度に、打数が変更される。その値が「４」であるとすれば、各拍のタイミングに埋め込まれているノートオンイベントを基準にしてテンポが制御される。また、打数指示データＣＢＥＡＴが「２」であれば、１拍目と３拍目のタイミングに埋め込まれているノートオンイベントを基準にしてテンポが制御される。図１３は第１小節が打数２、第２小節以降が打数４に設定されている例である。このように曲の適宜な位置において、テンポをとる打数を任意に設定することができる。【選択図】      図１３
2005017537.tif 000002
【特許請求の範囲】
【請求項１】
操作者によって動かされた際の運動状態を検出する操作子と、
前記操作子が検出した運動状態から、曲のテンポをとるためのタイミングを示すテンポ制御信号を生成するテンポ制御信号出力手段と、
小節内において曲のテンポを何回のタイミングでとるべきかを示す打数を、打数指示情報に基づいて設定する打数設定手段と、
自動演奏データに基づいて演奏信号を生成するとともに、前記打数設定手段が設定した打数に対応するタイミングの演奏上の間隔を前記自動演奏データに基づいて求めて前記テンポ制御信号の発生間隔と比較し、この比較結果に応じて自動演奏のテンポを決定する自動演奏手段とを具備することを特徴とする自動演奏装置。
【請求項２】
前記打数指示情報は、前記自動演奏データに埋め込まれていることを特徴とする請求項１記載の自動演奏装置。
【請求項３】
前記打数指示情報は、操作者が操作する入力手段によって入力されることを特徴とする請求項１記載の自動演奏装置。
【請求項４】
コンピュータに、
小節内において曲のテンポを何回のタイミングでとるべきかを示す打数を、打数指示情報に基づいて設定する機能と、
曲のテンポをとるためのタイミングを示すテンポ制御信号を受信する機能と、
自動演奏データに基づいて演奏信号を生成するとともに、前記打数設定手段が設定した打数に対応するタイミングの間隔を前記自動演奏データから求めて前記テンポ制御信号の発生間隔と比較し、この比較結果に応じて自動演奏のテンポを決定する機能とを実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、操作者のテンポをとる動作に合わせて自動演奏のテンポを制御する自動演奏装置およびプログラムに関する。
【０００２】
【従来の技術】
指揮棒の形状をした操作子を振ることで、自動演奏のテンポを制御する自動演奏装置が種々提案されている。例えば、特許文献１に示される装置においては、テンポをとるタイミングを示すタイミングデータを自動演奏データ中の拍の位置に埋め込んでおき、このデータが読み出される間隔と、操作子が振られた間隔を比較して曲のテンポをリアルタイムに変更する。
このような制御を行うことで、あたかも操作者自身が演奏を操る指揮者になったかのような感覚を得ることができる。
【０００３】
【特許文献１】
特開平８−２７２３６３号公報
【０００４】
ところで、上述した従来の装置においては、テンポをとるタイミングの回数は、自動演奏データに埋め込まれているタイミングデータによって決められてしまうため、小節内で何回のタイミングでテンポをとるかは、その自動演奏データによって固定的に決まってしまう。例えば、４分の４拍子の曲においては、曲の初めから終わりまで各小節毎に４打でテンポをとらなければならない。
この場合、テンポの速い曲などは、操作子を振るピッチを早くしなければならないため、初心者や高齢者には難しくなってしまう。また、曲調が変わる場合など、曲の途中において１小節内の打数を変更したい場合もあるが、従来装置においては不可能であった。
さらに、楽曲自体は４／４拍子であっても、これを指揮者の解釈により、２／２拍子で指揮すること（ａｌｌａ  ｂｒｅｖｅ：アラブレーベ）がしばしば行われるが、従来装置ではこれに対応することも不可能であった。
【０００５】
【発明が解決しようとする課題】
本発明はこのような背景の下になされたもので、テンポをとるタイミングの回数を変更することができる自動演奏装置およびプログラムを提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記課題を解決するために、本発明に係る自動演奏装置は、
操作者によって動かされた際の運動状態を検出する操作子と、
前記操作子が検出した運動状態から、曲のテンポをとるためのタイミングを示すテンポ制御信号を生成するテンポ制御信号出力手段と、
小節内において曲のテンポを何回のタイミングでとるべきかを示す打数を、打数指示情報に基づいて設定する打数設定手段と、
自動演奏データに基づいて演奏信号を生成するとともに、前記打数設定手段が設定した打数に対応するタイミングの演奏上の間隔を前記自動演奏データに基づいて求めて前記テンポ制御信号の発生間隔と比較し、この比較結果に応じて自動演奏のテンポを決定する自動演奏手段とを具備することを特徴とする。
【０００７】
また、前記打数指示情報は、前記自動演奏データに埋め込んでもよく、操作者が操作する入力手段によって入力されるようにしてもよい。
【０００８】
【発明の実施の形態】
以下、図面を参照して、本発明の実施形態について詳細に説明する。
【０００９】
Ａ：実施形態の構成
図１は、本発明の一実施形態の構成を示すブロック図である。本実施形態においては、操作者によって振られる操作子１と、この操作子１の運動状況に応じたテンポ制御を行って自動演奏を行う楽音演奏装置２とにより構成されている。
【００１０】
操作子１は、図４に示すように指揮棒のような外観を有している。図４に示す１ａはその把持部であり、操作者は把持部１ａを握って、操作子１を任意に振ることができるようになっている。図５は、操作者Ａが、操作子１を手に持って振っている状態を示している。また、図４に示すように把持部１ａの近傍には、複数のボタンＳＷ，ＳＷ・・・を有した打数指定部１０５が設けられている。これらのボタンＳＷは、テンポ制御に際して、１小節あたり何回でテンポをとるかを設定するときに使用される。
【００１１】
操作子１の内部には図１に示す回路が組み込まれている。図１に示すＣＰＵ１０３は、ＲＡＭ１０２の記憶領域をワークエリアとして利用し、ＲＯＭ１０１に格納されている各種プログラムを実行することで装置各部を制御する。タイマ１０４は、ＣＰＵ１０３のタイマ割込み処理における割込み時間を計測する。
【００１２】
Ｘセンサ１０６は、操作者が行った操作子１の揺動動作の水平方向の角速度を検出するものであり、Ｙセンサ１０７は操作子１の揺動動作の垂直方向の角速度を検出する。これらＸセンサ１０６とＹセンサ１０７には、圧電振動ジャイロセンサが用いられ、操作子１の先端部分に埋め込まれている（図４参照）。また、Ｘセンサ１０６とＹセンサ１０７の出力信号は、ノイズの除去やＡＤ変換がなされた後、ＣＰＵ１０３に読みとられる。ＣＰＵ１０３においては、読みとったＸセンサ１０６、Ｙセンサ１０７の出力信号を基に操作者の揺動動作を特定する処理を行う。この処理においては、操作子１がどのように振られたかが特定され、上方向、下方向、右方向、左方向の４種の振り方が特定される。そして、特定した振り方に対応したＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ：登録商標）イベントデータが生成される。
【００１３】
次に、操作者のテンポの取り方を図３を用いて説明する。なお、この図において打数とは、テンポ制御を行う際に、１小節内で何回テンポをとるかを意味している。
まず、打数１の場合は、操作子１を上から下に振り下ろす時にテンポをとるやり方であり、１小節に１回だけテンポをとる。このやり方は、３拍子および４拍子の曲のいずれにおいても使用され、１拍目にテンポをとる。打数２の場合は、操作子１の振り下ろし時と振り上げ時にテンポをとるやり方であり、１小節に２回テンポをとる。このやり方は、４拍子の曲に用いられ、１拍目と３拍目にテンポをとる。打数３は３角形を描くように振るやり方であり、３角形の各辺を描く時にテンポをとる。このやり方は３拍子の曲に用いられ、各拍についてテンポをとる。打数４は、振り下ろし→左移動→右移動→振り上げの４つの動作でテンポをとるやり方であり、４拍子の曲に用いられ、各拍についてテンポをとる。
この実施形態においては、操作子１の振り方は、図３に示す振り方にすることが予め決められている。
【００１４】
また、振り方向の特定は、同図に示されるように、下方向を振り方▲１▼，右方向を振り方▲２▼，上方向を振り方▲３▼，左方向を振り方▲４▼とし、それぞれにノートナンバを割り当てる。また、当該ノートナンバに対してノートオンイベントが付けられる。本実施形態では振り方▲１▼、▲２▼、▲３▼、▲４▼にそれぞれノートナンバ（６１），（６２），（６３），（６４）のノートオンメッセージを割り当てる。
また、これらのＭＩＤＩイベントデータに対し、任意の１つのチャンネルを割り当てる。本実施形態ではチャンネル番号１とする。以上のようにして、本実施形態においては、操作子１の振り方を示すデータは、チャンネル番号１のＭＩＤＩイベントデータ（ノートオンイベント）として生成される。そして、このイベントデータは、テンポ制御信号ＰＴＥＮＰＯとして送信部１０８を介して楽音演奏装置２に送信される。
【００１５】
また、前述した打数指定部１０５は、押されたボタンＳＷに対応する打数指定データＰＢＥＡＴを出力する。この打数指定データＰＢＥＡＴは送信部１０８を介して楽音演奏装置２に送信されるようになっている。
【００１６】
次に、楽音演奏装置２におけるＣＰＵ２０３は、ＲＡＭ２０２の記憶領域をワークエリアとして利用し、ＲＯＭ２０１に格納されている各種プログラムを実行することで装置各部を制御する。タイマ２０４は、ＣＰＵ２０３へのタイマ割込み処理における割込み時間を計測するためのものである。ＨＤＤ（ハードディスク）２０６には複数の自動演奏データが記憶されており、自動演奏時には指定された曲の自動演奏データがＨＤＤ２０６から読み出され、ＲＡＭ２０２の自動演奏データ格納領域に格納される。外部記憶装置２０７はＣＤ−ＲＯＭやフロッピディスク等の記録媒体に記憶されている自動演奏データを読み取る際に使用される。また、表示部２０８は各種情報を表示する。
受信部２０５は操作子１より出力されたテンポ制御信号ＰＴＥＮＰＯや打数指定データＰＢＥＡＴを受信し、ＣＰＵ２０３へ出力する。
【００１７】
音源回路２０９は自動演奏処理において順次読み出されるＭＩＤＩデータに基づいて楽音信号を生成し、効果回路２１０へと出力する。効果回路２１０は生成された楽音信号に種々の効果を付与し、サウンドシステム２１１に供給する。サウンドシステム２１１は、効果が付与された楽音信号を増幅して放音する。
【００１８】
次に、自動演奏データのフォーマットについて説明する。自動演奏データのフォーマットは種々のデータフォーマットが考えられるが、本実施形態ではＭＩＤＩフォーマットを用いている。
自動演奏データは、図２に示すようにヘッダ部分とトラック部分に大別される。ヘッダ部分には曲の標準のテンポを示す標準テンポデータＤＴＥＮＰＯや、１小節における打数（テンポをとる回数）を示すデフォルト値となる打数初期値データＤＢＥＡＴなどが含まれている。この実施形態の場合、打数初期値データＤＢＥＡＴは、曲の拍子数となっている。すなわち、４／４拍子であれば打数初期値データＤＢＥＡＴは「４」、３／４拍子であれば「３」が設定されている。
【００１９】
また、トラック部分には、イベントデータ２２と、次のイベントまでの時間間隔を示すデルタタイムデータ２１が配置されている。デルタタイムデータ２１は整数値で表され、その値がＴのとき当該デルタタイムはＴミリ秒である。イベントデータ２２にはチャンネル番号が付加され、これにより当該イベントがどのチャンネルによって発音されるかが識別される。
【００２０】
ここで、イベントデータには、演奏音を指示するものと、テンポ制御のために用いられるものとがあり、この実施形態においては、チャネル番号１のノートオンイベントが、テンポ制御のために用いられ、チャネル番号１以外のノートオンイベントが演奏用に用いられる。
また、自動演奏データ２０に埋め込まれているチャネル番号１のノートンオンイベントは、拍のタイミングに配置され、操作子１から出力されるノートオンイベントと等しく、ノートナンバ（６１），（６２），（６３），（６４）の値が用いられる。
【００２１】
より詳細に言えば、本実施形態の自動演奏データ２０には、４拍子の曲においては、１拍目のタイミングに下方向の振り方▲１▼（図３参照）を示すノートナンバ（６１）が埋め込まれ、２拍目のタイミングに左方向の振り方▲４▼を示すノートナンバ（６４）が埋め込まれ、３拍目のタイミングに右方向の振り方▲２▼を示すノートナンバ（６２）が埋め込まれ、４拍目のタイミングに上方向の振り方▲３▼を示すノートナンバ（６３）が埋め込まれる。
【００２２】
また、３拍子の曲においては、１拍目のタイミングにおいて、下方向の振り方▲１▼を示すノートナンバ（６１）が埋め込まれ、２拍目のタイミングにおいては右方向の振り方▲２▼を示すノートナンバ（６２）が埋め込まれ、３拍目のタイミングにおいては上方向の振り方▲３▼を示すノートナンバ（６３）が埋め込まれる。
また、本実施形態における自動演奏データ２０には、曲の途中で打数を指示する打数指示データＣＢＥＡＴが埋め込まれている。この打数データもチャネル番号１のイベントデータとなっている。
【００２３】
Ｂ：動作
上記構成による本実施形態の動作について説明する。なお、初めに説明の簡単化のために、４／４拍子の自動演奏データ（打数初期値データＤＢＥＡＴは４）に対する処理であって、かつ、操作子１からは打数指定データＰＢＥＡＴは出力されない場合を説明する。
【００２４】
まず、楽音演奏装置２が自動演奏データ２０を再生するに伴い、操作者が操作子１を手に持って、テンポをとる準備をする。この準備は、指揮棒を持って演奏に控えるのと同様である。
一方、ＣＰＵ２０３は、ＨＤＤ２０６から自動演奏データ２０を読み出し、ＲＡＭ２０２の自動演奏データ格納領域に格納する。そして、ＣＰＵ２０３は、ＲＡＭ２０２内の自動演奏データを順次読み出し、自動演奏を行ってゆくが、初めに、ヘッダ部から打数初期値データＤＢＥＡＴと標準テンポＤＴＥＮＰＯを読み出す。そして、標準テンポＤＴＥＮＰＯに対応したテンポで自動演奏を行う。
以後は、ＲＡＭ２０２内の自動演奏データ２０のイベントが順次読み出され、自動演奏がなされてゆく。以下においては、自動演奏処理について、操作子１における処理と楽音演奏装置２における処理とを関連させつつ説明を行う。
【００２５】
（１）テンポ制御信号出力処理
まず、操作子１では、図６のフローチャートで示されるテンポ制御信号出力処理が実行される。本処理は、タイマ１０４が例えば１０ｍｓ毎に発生するタイマ割込み信号に同期して実行される割込み処理である。
まず、ステップＳ００１においてＸセンサ１０６およびＹセンサ１０７より出力されるセンサ出力信号を取り込み、次のステップＳ００２では操作子１の振り方向を判定するために揺動動作判別処理を行う。これは、Ｘセンサ１０６およびＹセンサ１０７が検出する角速度ｖＸ，ｖＹと、振り方向▲１▼、▲２▼、▲３▼、▲４▼を判別するために設定されている閾値（振り方向▲１▼の角速度ｖＸ，ｖＹに対してそれぞれ閾値ｔＸ１，ｔＹ１，以下同様にして振り方向▲２▼、▲３▼、▲４▼に対して閾値ｔＸ２，ｔＹ２，ｔＸ３，ｔＹ３，ｔＸ４，ｔＹ４とする）とを比較し、振り方向を判別する処理である。
【００２６】
また、操作子１が振られている過程のどの時点をテンポ指示の時点とするかについては、以下のような処理を行っている。
まず、Ｘセンサ１０６およびＹセンサ１０７が検出する角速度ｖＸ，ｖＹの自乗和の平方根を求め、これを絶対角速度とする。そして、この絶対角速度のピークを検出し、ピークが検出された時をテンポ指示の時と判断する。
【００２７】
次に、ステップＳ００２において振り方向が判別され、かつ、テンポ指示の時が判別されると、以下の処理において、それぞれの振り方向に応じたノートナンバが割り当てられて、チャンネル番号１のノートオンイベントとして出力される。
すなわち、振り方向が▲１▼であればノートナンバとして（６１）（ステップＳ００３）、振り方向▲２▼であればノートナンバとして（６２）（ステップＳ００４）、振り方向▲３▼であればノートナンバとして（６３）（ステップＳ００５）、振り方向▲４▼であればノートナンバとして（６４）（ステップＳ００６）が割り当てられる。そして、ノートナンバが定まった後、ステップＳ００７では当該ノートナンバにノートオンメッセージを付加してチャンネル番号１のイベントデータとし、これをテンポ制御信号ＰＴＥＮＰＯとして送信部１０８から楽音演奏装置２へ出力される。
【００２８】
（２）自動演奏データ再生処理
次に、楽音演奏装置２が実行する自動演奏データ再生処理を、図７に示したフローチャートを参照しつつ説明する。なお、本処理は、タイマ２０４が発生するタイマ割込み信号に同期して１ｍｓ毎に実行される割込み処理である。
始めに、ステップＳ１０１において自動演奏データ２０の再生が要求されているかどうかを判別する。具体的には再生フラグｆｌｇＰｌａｙ（データ名の”ｆｌｇ”はデータがフラグであることを示している）を参照し、これが”１”であれば再生要求がなされていると判断されて次のステップＳ１０２へと進み、”０”であれば再生要求がなされていないと判断されて直ちに本処理を終了する。なお、再生フラグｆｌｇＰｌａｙは、図示せぬスタートスイッチがオンされると”１”になって再生を指示し、スタートスイッチがオフされるか、自動演奏が終了すると”０”になって再生終了を指示する。
【００２９】
さて、自動演奏データ２０の再生が要求されていれば、次のステップＳ１０２において一時停止フラグｆｌｇＰａｕｓｅの判別を行い、”０”であればステップ１０３へ進み、”１”であればステップ１１２へと進む。一時停止フラグｆｌｇＰａｕｓｅは、自動演奏を一時的に停止させるか否かを指示するフラグであり、”０”のときに一時停止が解除され、”１”のときに一時停止が指定されるように定義されている。
ステップＳ１０３では、タイムカウンタｃｎｔＴｉｍｅ（データ名の”ｃｎｔ”はデータがカウンタであることを示している）の内容が「０」であるか否かが判断される。このタイムカウンタｃｎｔＴｉｍｅは、デルタタイムデータ２１が代入されるカウンタであり、割り込み処理の度にその値が減算され（ステップＳ１１０参照）、「０」になったときにイベントが実行される。すなわち、タイムカウンタｃｎｔＴｉｍｅの内容は、次のイベントまでの時間を示していることになる。
【００３０】
そして、ステップＳ１０３の判定が「Ｎｏ」であれば、未だイベント処理のタイミングに至っていないので、ステップＳ１１０〜Ｓ１１３の処理を行ってリターンする。ステップＳ１０３の判定が「Ｙｅｓ」であれば、以下に説明するイベント処理を行う。
まず、ステップＳ１０４へ進み自動演奏データ２０が格納されているＲＡＭ２０２の記憶領域の読み出し位置（アドレス）を１つ進めてデータを読み出す。ここで読み出されたデータがデルタタイムデータ２１であるかどうかを、次のステップＳ１０５で判別する。なお、この判別処理は、ステップＳ１０３から処理が進行している場合には、当該データは必ずイベントデータ２２となるから、ステップＳ１０６のイベント対応処理に進む。ステップＳ１０６のイベント対応処理の後は、再びステップ１０４に進んで、アドレスを進めてデータを読み出す。そして、読み出したデータがデルタタイムデータ２１かどうかを判断する（ステップＳ１０５）。このようにして、ステップＳ１０５の判定が「Ｙｅｓ」となるまでは、すなわち次のデルタタイムデータがくるまでは、ステップ１０４，１０５，１０６からなる処理を繰り返すが、このようなループ処理を行うのは、同時に発音するイベントがあった場合に、デルタタイムデータ２１を挟まずにイベントデータ２２が連続しているからである。
【００３１】
一方、ステップＳ１０５において、読み出されたデータがデルタタイムデータ２１であれば、ステップＳ１０７へと進み、当該デルタタイムデータ２１の値をタイムカウンタｃｎｔＴｉｍｅに代入する。
次に、ステップＳ１０８ではタイムカウンタｃｎｔＴｉｍｅが０であるかどうかの判別処理を行う。ここで結果が「Ｙｅｓ」であれば、ステップＳ１０４へと進み、上述のステップＳ１０４以降の処理を繰り返す。
【００３２】
次に、イベント対応処理について図１１を参照して説明する。まず、ステップＳ１４１においては、自動演奏データ２０から読み出されたイベントが、曲の途中において打数を指示する打数指示データＣＢＥＡＴか否かが判断される。打数指示データＣＢＥＡＴでなければ、ステップＳ１４３に移ってチャネル番号１のイベントか否かが判断される。チャネル番号１以外のイベントデータであれば、演奏用のイベントであるので、ステップＳ１４８に進んで当該イベントを出力して対応する処理（発音や消音など）を行い、リターンする。
【００３３】
一方、ステップＳ１４１で「Ｙｅｓ」となったら変数Ｂｅａｔに打数指示データＣＢＥＡＴを代入し（Ｓ１４２）、ステップＳ１４３を介してステップＳ１４４に進む。ここで、ステップＳ１４２における処理は、自動演奏データ２０から読み出されたデータに対する処理を行うステップであり、読み出されるデータとしては打数指示データＣＢＥＡＴと打数指定データＰＢＥＡＴがある。なお、打数指定データＰＢＥＡＴが読み出される場合については後述する。
また、自動演奏データ２０から読み出されたイベントデータが、拍のタイミングに配置されたチャネル番号１のキーオンイベントであった場合は、ステップＳ１４１、Ｓ１４３を介してステップＳ１４４へと進む。
ステップＳ１４４では、テンポ情報受信フラグｆｌｇＴｍｐの内容が”１”か否かが判定される。テンポ情報受信フラグｆｌｇＴｍｐは、操作子１からテンポ制御信号ＰＴＥＮＰＯを受け取ったか否かを判定するフラグであり、”１”のときは操作子１からテンポ制御信号ＰＴＥＮＰＯを受け取ったことを示し、”０”のときは操作子１からテンポ制御信号ＰＴＥＮＰＯを受け取っていないことを示す。
このテンポ情報受信フラグｆｌｇＴｍｐの内容が”０”であれば、ステップＳ１４５に進み、読み出されたチャネル番号１のノートナンバをイベント変数ｅｖｔＭＤに代入する。そして、打数・動作判定処理（ステップＳ１４６）に進む。図１２に示すフローチャートにおいては、変数Ｂｅａｔに代入された打数を判定し、判定結果に応じて一時停止フラグｆｌｇＰａｕｓｅを”１”にする。一時停止フラグｆｌｇＰａｕｓｅが”１”になるのは、以下の場合である。すなわち、打数が４の場合（ステップＳ１６１）、打数が２でイベント変数ｅｖｔＭＤに代入されたノートオンイベントが（６１）または（６３）の場合（ステップＳ１６２，１６３）、打数が１でイベント変数ｅｖｔＭＤが（６１）の場合（ステップＳ１６４，１６５）である。以上の条件が満たされた場合は、一時停止フラグｆｌｇＰａｕｓｅに”１”がセットされる（ステップＳ１６６）。この場合、一時停止フラグｆｌｇＰａｕｓｅの内容が”１”であれば、拍のタイミングを示すチャネル番号１のノートオンイベントが、自動演奏データ２０から読み出されたことが分かる。
【００３４】
また、上記以外の打数指定やノートオンイベントの場合には、ただちにリターンする。一方、テンポ情報受信フラグｆｌｇＴｍｐの内容が”１”であれば、図１１に示すステップＳ１４４からステップＳ１４７に進み、テンポ情報受信フラグｆｌｇＴｍｐをリセットしてリターンする。
【００３５】
以上がイベント対応処理であるが、説明を簡単にするために、以下においては、自動演奏の打数は打数初期値ＤＢＥＡＴ（値は４）によって指定されたままで打数指示データＣＢＥＡＴは読み出されていない場合を想定する。
ここで、図１１に示すステップＳ１４４の意味を説明すると、この判定が「Ｎｏ」となるのは、拍のタイミングにおいて未だ操作子１からテンポ制御信号ＰＴＥＮＰＯが出力されていないことを意味し、操作者が自動演奏のテンポより遅いテンポで操作子１を振っている場合である。すなわち、リタルダンド（だんだん遅く）が指示されていることになる。逆に、ステップＳ１４４の判定が「Ｙｅｓ」の場合は、自動演奏の拍より早いタイミングで操作子１からテンポ制御信号ＰＴＥＮＰＯが出力されていることになり、アッチェレランド（だんだん速く）が指示されていることになる。
さて、図７に戻り、ステップＳ１０８の判定が「Ｎｏ」であれば、ステップＳ１０９へと進みタイムカウンタｃｎｔＴｉｍｅの値を以下に示す数１に基づいて書き換える。
【００３６】
【数１】
ｃｎｔＴｉｍｅ  ＝  ｃｎｔＴｉｍｅ  ×  ｃｏｅｆＴｍｐ
【００３７】
数１において、ｃｏｅｆＴｍｐ（データ名の”ｃｏｅｆ”はデータが係数であることを示している）はテンポ係数である。
ここで、タイムカウンタｃｎｔＴｉｍｅは、前述したようにその値が０になったときに、次のイベントデータ２２が読み出されるから、この値が大きくなるように書き換えられれば、次のイベントデータ２２が読み出されるタイミングは遅れる。すなわち、自動演奏のテンポが遅くなる。一方、タイムカウンタｃｎｔＴｉｍｅの内容が小さくなるように書き換えられれば、次のイベントデータ２２が読み出されるタイミングは早くなる。すなわち、自動演奏のテンポが早くなる。
以上のように、テンポ係数ｃｏｅｆＴｍｐが１より小さい場合には現在のテンポより速いテンポで楽曲が演奏され、前記テンポ係数ｃｏｅｆＴｍｐが１より大きい場合には現在のテンポより遅いテンポで楽曲が演奏される。
【００３８】
ステップＳ１０９の処理を行ったら、ステップＳ１１０へと進みタイムカウンタｃｎｔＴｉｍｅを１だけデクリメントする。
次のステップＳ１１１では、デルタタイム累算値ｃｎｔＤｌｔを１だけインクリメントする。その後ステップＳ１１２では、テンポ制御間隔ｃｎｔＩｎｔを１だけインクリメントする。デルタタイム累算値ｃｎｔＤｌｔは、１ｍｓ毎に起動される自動演奏データ再生処理（図７のフローチャート）のステップＳ１１１において１ずつインクリメントされる一方、次の拍のタイミングまで累算されるから（図９のステップＳ１２７，Ｓ１３２，Ｓ１３８参照）、リセットされる直前の値は、その時点における自動演奏の１拍分の長さに対応する。
【００３９】
また、テンポ制御間隔ｃｎｔＩｎｔは、１ｍｓ毎に起動される自動演奏データ再生処理（図７のフローチャート）のステップＳ１１２において１ずつインクリメントされる一方、操作子１からテンポ制御信号ＰＴＥＮＰＯ（チャネル番号１のノートオン（６１）〜（６４））が出力されたときにリセットされるから（図９のステップＳ１２８，Ｓ１３９参照）、リセットされる直前の値は、操作者が指示する１拍分の長さに対応する。
【００４０】
ここで、上記のデルタタイム累算値ｃｎｔＤｌｔとテンポ制御間隔ｃｎｔＩｎｔの関係について説明する。
図８は、テンポ制御間隔ｃｎｔＩｎｔとデルタタイム累算値ｃｎｔＤｌｔとの関係を説明するための図であり、図中、□は演奏データ２０から読み出されたチャンネル番号１のノートオンイベントの発生タイミングを示し、○はチャンネル番号１以外のイベントの発生タイミングを示している。また、同図においては、４拍子の曲の１拍目と２拍目のタイミングを示している。
【００４１】
時刻ｔ１においては、操作子１から出力されたテンポ制御信号ＰＴＥＮＰＯ（チャネル番号１のキーオンイベント）と、自動演奏データ２０から読み出された１拍目のチャネル番号１のキーオンイベント（ノートナンバはいずれも（６１））のタイミングは同じである。一方、自動演奏データ２０から読み出される次のキーオンイベント（２拍目：チャネル番号１のノートナンバ（６４））のタイミングは時刻ｔ３であるが、操作子１から出力される２拍目のテンポ制御信号ＰＴＥＮＰＯ（ノートナンバは（６４））は、それより早い時刻ｔ２に発生されている。このような関係の場合は、操作者はその時点の自動演奏のテンポより速いテンポで操作子１を振っていることになる。
【００４２】
一方、テンポ制御間隔ｃｎｔＩｎｔがデルタタイム累算値ｃｎｔＤｌｔと比較して長い場合、例えば、図８に示す時刻ｔ４に、操作子１から２拍目のキーオンイベント（ノートナンバは（６４））が出力される場合は、操作者はその時点の自動演奏のテンポより遅いテンポで操作子１を振っていることを意味する。また、テンポ制御間隔ｃｎｔＩｎｔとデルタタイム累算値ｃｎｔＤｌｔが同じであれば、操作者はその時点の自動演奏のテンポ通りに操作子１を振っていることになる。
【００４３】
ここで、前述した一時停止フラグｆｌｇＰａｕｓｅについて説明すると、自動演奏データ２０からチャンネル番号１のキーオンイベントが読み出された時点において、操作子１から未だチャネル番号１のキーオンイベントが出力されていない場合に（例えば、図８の時刻ｔ３〜ｔ４の間）、一時停止フラグｆｌｇＰａｕｓｅの内容は”１”になり、自動演奏が一時停止される。この場合は、図７のフローチャートに示すステップＳ１０２の処理によって、イベント対応処理Ｓ１０６に進むことなく、直ちにリターンされるので演奏が一時停止される。
【００４４】
次に、図７に示すステップＳ１１２までの処理が終了したら、ステップＳ１１３においてテンポキーオン処理を行う。この処理は、操作子１から出力されるテンポ制御信号ＰＴＥＮＰＯイベントに対する処理である。以下、テンポキーオン処理について図９を参照しつつ説明する。
まず、操作子１からテンポ制御信号ＰＴＥＮＰＯが出力された場合は、その内容（チャネル番号１のノートオンイベント）が、イベント変数ｅｖｔＴｍｐに代入される。そして、ステップＳ１２１においては、イベント変数ｅｖｔＴｍｐの内容からテンポ制御信号ＰＴＥＮＰＯを受信しているかどうかを判別する。これが「Ｙｅｓ」であれば次のステップＳ１２２へ進み、「Ｎｏ」であれば本処理を終了し、図７に示す自動演奏データ再生処理に戻る。
【００４５】
次に、ステップＳ１２２において一時停止フラグｆｌｇＰａｕｓｅの状態を判別し、その内容が”１”ならステップＳ１２３へと進む。一時停止フラグｆｌｇＰａｕｓｅの内容が”１”になるということは、ステップＳ１６６を経由したということであり、そのためには、図１１に示すステップＳ１４４で「Ｎｏ」となる必要がある。すなわち、操作者が自動演奏のテンポより遅いテンポで操作子１を振り、リタルダンド（だんだん遅く）を指示している場合である。
次に、ステップＳ１２３においては、イベント変数ｅｖｔＭＤの内容とイベント変数ｅｖｔＴｍｐが一致するかどうかが判定され、一致していなければ以下の処理をスキップして直ちにリターンする。
【００４６】
ここで、ステップＳ１２３の処理の意味を説明する。イベント変数ｅｖｔＭＤには、図１１に示すステップＳ１４５において、自動演奏データ２０から読み出されたチャンネル番号１のノートオンイベントが書き込まれている。
また、現時点においては、打数初期値ＤＢＥＡＴが「４」のまま変更されていない自動演奏データに対する処理を行っているので、イベント変数ｅｖｔＭＤには、１拍目のタイミングではノートオンイベント（６１）が代入され、２，３，４拍目のタイミングでは、それぞれ（６４）、（６２）、（６３）のノートオンイベントが代入される。一方、操作者は、図３の打数４に対応する振り方で操作子１を振るから、１，２，３，４拍目に出力されるテンポ制御信号ＰＴＥＮＰＯの内容はそれぞれ、ノートオンイベント（６１）、（６４）、（６２）、（６３）となっている。
【００４７】
すなわち、ステップＳ１２３の処理は、拍に対応する振り方以外の振り方がされている場合をキャンセルする処理である。この処理によって、自動演奏データ２０の拍のタイミングと、操作子１の振り方（図３参照）との対応がとられる。
さて、ステップＳ１２３の判定が「Ｙｅｓ」であれば、ステップＳ１２４へ進み、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔの各値から、テンポ係数比率ｒａｔｅＴｍｐを以下の数２より求める。
【００４８】
【数２】
ｒａｔｅＴｍｐ  ＝  ｃｎｔＩｎｔ  ／  ｃｎｔＤｌｔ
【００４９】
上記数２より求められたテンポ係数比率ｒａｔｅＴｍｐをもとに、ステップＳ１２５では新たなテンポ係数ｃｏｅｆＴｍｐを以下の数３より求める。なお、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔが同じ値であれば、テンポ係数比率は変わらず、曲のテンポは維持される。
【００５０】
【数３】
ｃｏｅｆＴｍｐ  ＝  ｃｏｅｆＴｍｐ  ×  ｒａｔｅＴｍｐ
【００５１】
ステップＳ１２５によりテンポ係数ｃｏｅｆＴｍｐを更新したら、次のステップＳ１２６ではテンポ係数ｃｏｅｆＴｍｐのリミット処理を行う。ここでリミット処理とは、テンポ係数ｃｏｅｆＴｍｐにより設定されたテンポが当該自動演奏装置において制御可能な最も遅いテンポを超えた場合に、テンポ係数ｃｏｅｆＴｍｐを下限値に制限するための処理である。
上述のテンポ係数リミット処理が終了したら、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔに”０”をセットし（ステップＳ１２７，１２８）、一時停止フラグｆｌｇＰａｕｓｅを”０”にリセットし、（ステップＳ１２９）テンポキーオン処理を終了する。
【００５２】
一方、ステップＳ１２２において一時停止フラグｆｌｇＰａｕｓｅが”０”の場合は、操作子１からテンポ制御信号ＰＴＥＮＰＯが出力された時点では、自動演奏データ２０からは次の拍に対応するチャネル番号１のキーオンイベントが読み出されていない状態であり（図８の時刻ｔ２〜ｔ３；アッチェレランドが指示されている場合）、自動演奏データ２０を先読みサーチして次に読み出されるべきチャネル番号１のキーオンイベントを読み出す。
【００５３】
次のステップＳ１３１においては、ステップＳ１３０でサーチした自動演奏データ２０のノートオンイベントであって、イベント変数ｅｖｔＭＤに代入されたものと操作子１から出力されてイベント変数ｅｖｔＴｍｐに代入されたものが一致するかどうかを判別する。これがＹｅｓであれば次のステップＳ１３２へ進み、Ｎｏであれば本処理を終了し、前記自動演奏データ再生処理に戻る。このステップＳ１３１の処理は、前述したステップＳ１２３の処理と同じ意味合いの処理である。
次に、ステップＳ１３２では、数４で示される計算を実行する。
【００５４】
【数４】
ｃｎｔＤｌｔ  ＝  ｃｎｔＤｌｔ  ＋  ｃｏｅｆＴｍｐ（ｃｎｔＴｉｍｅ  ＋  ＤＴ）
【００５５】
ここでＤＴとは、現在自動演奏中のイベント位置からイベント変数ｅｖｔＭＤに代入された次のチャンネル番号１のキーオンイベントまでのデルタタイムｄｔ１，ｄｔ２，…，ｄｔｎの総和である（図１０参照）。
数４の処理により、現時点の自動演奏のテンポに沿った１拍分の時間間隔が、カウンタｃｎｔＤｌｔに代入される。
上述の処理が終了したら、次のステップＳ１３３へと進む。
【００５６】
ステップＳ１３３では、図１０に示されたＤＴを構成する各デルタタイムｄｔ１，ｄｔ２，…，ｄｔｎおよびｃｎｔＴｉｍｅのそれぞれに適当な１未満の定数を乗じ、次のイベントを早く読み出せるようにそれぞれの値を変更する。
次のステップＳ１３４では、テンポ情報受信フラグｆｌｇＴｍｐに”１”をセットする。このテンポ情報受信フラグｆｌｇＴｍｐの内容を見ることにより、自動演奏データ２０の拍のタイミングよりも早く、当該拍に対応するテンポ制御信号ＰＴＥＮＰＯを受信しているか否かが分かる。そして、テンポ情報受信フラグｆｌｇＴｍｐの内容が”１”であれば、操作者はアッチェレランドを指示していることが分かる。
【００５７】
ステップＳ１３４が終了した後のステップＳ１３５からステップＳ１３９までの処理は、上述のステップＳ１２４からステップＳ１２８までのそれぞれの処理と同様である。すなわちテンポ係数比率ｒａｔｅＴｍｐの設定（ステップＳ１３５）、テンポ係数ｃｏｅｆＴｍｐの更新（ステップＳ１３６）、テンポ係数ｃｏｅｆＴｍｐのリミット処理（ステップＳ１３７）、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔのクリア（ステップＳ１３８，１３９）を行う。
以上の処理が終了したら、本テンポキーオン処理を終了し、図７に示す自動演奏データ再生処理に戻る。
【００５８】
以上の処理をまとめると、操作者が操作子１を使って自動演奏のテンポと同じ速さでテンポをとっていれば、デルタタイム累算値ｃｎｔＤｌｔとテンポ制御間隔ｃｎｔＩｎｔは等しくなり、ステップＳ１２５（あるいはステップＳ１３６）で算出されるテンポ係数ｃｏｅｆＴｍｐは、それまでの値が維持される。したがって、図７に示すステップＳ１０９においてタイムカウンタｃｎｔＴｉｍｅが書き換えられることなく、それまでのテンポが維持される。また、自動演奏は一時停止されることなく継続される。
また、操作者が操作子１を振る速さが自動演奏のテンポより速ければ、デルタタイム累算値ｃｎｔＤｌｔよりテンポ制御間隔ｃｎｔＩｎｔの方が小さくなり、ステップＳ１３６で算出されるテンポ係数ｃｏｅｆＴｍｐは小さくなる。この結果、図７に示すステップＳ１０９においては、タイムカウンタｃｎｔＴｉｍｅの値は小さく書き換えられることになり、自動演奏のテンポが速くなる。
【００５９】
一方、操作者が操作子１を振る速さが自動演奏のテンポより遅ければ、デルタタイム累算値ｃｎｔＤｌｔよりテンポ制御間隔ｃｎｔＩｎｔの方が大きくなる。したがって、ステップＳ１２５で算出されるテンポ係数ｃｏｅｆＴｍｐは大きくなる。この結果、図７に示すステップＳ１０９においては、タイムカウンタｃｎｔＴｉｍｅの値は大きく書き換えられることになり、自動演奏のテンポが遅くなる。また、この場合は、図１２のステップＳ１６６において一時停止フラグｆｌｇＰａｕｓｅに”１”がセットされるので、図７に示す自動演奏データ再生処理では、ステップＳ１０２の判定が「Ｎｏ」となってイベント対応処理（ステップＳ１０６）を経由しなくなるため、自動演奏が一時停止される。その後に、操作子１からテンポ制御信号ＰＴＥＮＰＯが出力されると、図９に示すステップＳ１２１→Ｓ１２２→Ｓ１２３→Ｓ１２４を介してＳ１２５に進み、ここでテンポ係数ｃｏｅｆＴｍｐは大きな値に書き換えられる。その後、ステップＳ１２９を経由することで一時停止フラグｆｌｇＰａｕｓｅがリセットされ、再び自動演奏が再開される。この再開以後においてはステップＳ１０９において、タイムカウンタｃｎｔＴｉｍｅの値は大きな値に書き換えられているため、自動演奏のテンポが遅くなる。
以上のようにして、操作者が操作子１を振るテンポに応じて、自動演奏のテンポが制御される。
【００６０】
（３）曲の途中で打数指示データＣＢＥＡＴが読み出された場合
上述した動作例は、自動演奏データ２０から打数初期値ＤＢＥＡＴの値を読み込んだ後に、その値が変更されない例であったが、本実施形態においては自動演奏データ２０に埋め込まれた打数指示データＣＢＥＡＴが読み出される度に、打数が変更される。
【００６１】
今、打数指示データＣＢＥＡＴが読み出され、その値が「２」であるとすれば、図１２に示すステップＳ１６２で「Ｙｅｓ」となり、ステップＳ１６３の処理を経由する。すなわち、１拍目と３拍目のタイミングに埋め込まれているノートオンイベントが読み込まれたときだけ一時停止フラグｆｌｇＰａｕｓｅがセットされ、２拍目と４拍目は不問とされる。また、図９に示すステップＳ１２３、Ｓ１３１においても１拍目と３拍目の動作（▲１▼と▲３▼）以外のテンポ制御信号ＰＴＥＮＰＯは無視されるから、自動演奏のテンポは振り下ろしと振り上げによって制御されることになる。すなわち、図２の打数２の振り方によって制御される。
また、ステップＳ１２４またはステップＳ１３５におけるテンポ係数比率ｒａｔｅＴｍｐの算出において、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔの各値は、それぞれ２拍分の時間間隔を示すものとなる。
【００６２】
一方、読み出された打数指示データＣＢＥＡＴの値が「１」であるとすれば、図１２に示すステップＳ１６４で「Ｙｅｓ」となり、ステップＳ１６５の処理を経由する。すなわち、１拍目のタイミングに埋め込まれているノートオンイベントが読み込まれたときだけ一時停止フラグｆｌｇＰａｕｓｅがセットされ、その他の拍は不問とされる。また、図９に示すステップＳ１２３、Ｓ１３１においても１拍目の動作（▲１▼）以外のテンポ制御信号ＰＴＥＮＰＯは無視されるから、自動演奏のテンポは振り下ろしだけによって制御されることになる。すなわち、図３の打数１の振り方によって制御される。
【００６３】
また、ステップＳ１２４またはステップＳ１３５におけるテンポ係数比率ｒａｔｅＴｍｐの算出において、デルタタイム累算値ｃｎｔＤｌｔおよびテンポ制御間隔ｃｎｔＩｎｔの各値は、それぞれ４拍分の時間間隔を示すものとなる。
以上のように、この実施形態においては、自動演奏データ２０の適宜な位置に打数指示データＣＢＥＡＴを埋め込んでおくことにより、テンポをとる際の打数を自在に変えることができる。
ここで、図１３は第１小節が打数２、第２小節以降が打数４に設定されている例である。このように曲の適宜な位置において、テンポをとる打数を任意に設定することができる。
【００６４】
（４）操作者がボタンＳＷを押して打数を指示した場合
次に、操作者がボタンＳＷ（図１または図４参照）を押した場合の動作について説明する。ボタンＳＷ、ＳＷ・・・は、それぞれ打数１，打数２、打数３、打数４に対応して設けられている。いずれかのボタンＳＷが押されると、そのボタンに対応した打数を示す打数してデータＰＢＥＡＴが操作子１から出力される。この打数指定データＰＢＥＡＴは、図２に示す自動演奏データ２０に挿入される（図２の破線参照）。挿入の仕方としては、打数指定データＰＢＥＡＴが出力された時点で処理されているイベントの直後に挿入するか、あるいは、次の拍の位置や次の小節の先頭位置に挿入するやり方があるが、適宜設定すればよく、また、操作子１のボタンＳＷの操作によって挿入の仕方を選択できるようにしてもよい。
以上のようにして、自動演奏データ２０に挿入された打数指定データＰＢＥＡＴは、イベント対応処理において読み出され、図１１に示すステップＳ１４２に示すように、打数指示データＣＢＥＡＴの場合と同じように処理され、変数Ｂｅａｔに代入される。
このようにして、ＲＡＭ２０２中の自動演奏データ２０に挿入すると、演奏終了後に、この演奏データ２０をＨＤＤ２０６に転送したり、あるいは外部記憶装置２０７を用いて記憶媒体に書き込んだりすることができ、操作者が打数の制御を施した自動演奏データ２０の保存、記録を行うことができる。
また、以上のように、ボタンＳＷを押して打数指定データＰＢＥＡＴを出力する場合は、自動演奏データ２０に埋め込まれている打数指示データＣＢＥＡＴに加えて打数の変更指示を行うこともでき、また、打数指示データＣＢＥＡＴが埋め込まれていなくても、打数の変更を行うことができる。
また、操作子１の操作による打数指示には以下のような態様もある。
まず、操作子１より打数指定データＰＢＥＡＴが出力されたか否かを示すフラグとして、打数情報受信フラグｆｌｇＰＢＥＡＴを設定し、このフラグが”１”なら操作子１から打数指定データＰＢＥＡＴが出力されたとし、”０”なら操作子１から打数指定データＰＢＥＡＴは出力されていないという制御を行う。このような制御を行うと、操作子１から打数指定データＰＢＥＡＴが出力されると、打数情報受信フラグｆｌｇＰＢＥＡＴが”１”になり、打数指定データＰＢＥＡＴが出力されたことを知ることができる。そして、イベント対応処理において、図１１に破線で示すステップＳａ、Ｓｂを追加し、打数情報受信フラグｆｌｇＰＢＥＡＴが”１”であれば、操作子１から出力された打数指定データＰＢＥＡＴの値を変数Ｂｅａｔに代入し（ステップＳａ→Ｓｂ→Ｓ１４３）、自動演奏データ２０から打数指示データＣＢＥＡＴあるいは打数指定データＰＢＥＡＴが読み出されたとしてもこれは採用しない。
一方、打数情報受信フラグｆｌｇＰＢＥＡＴが”０”であれば、ステップＳ１４１の判断を行い、これがＹｅｓであれば、ステップＳ１４２に進んで自動演奏データ２０から読み出された打数指示データＣＢＥＡＴまたは打数指定データＰＢＥＡＴを変数Ｂｅａｔに代入する（ステップＳａ→Ｓ１４１→Ｓ１４２）。
また、打数の初期値は実施形態において説明したように、自動演奏データ２０中に書き込まれている打数初期値データＤＢＥＡＴによって決定されるが、操作子１から演奏前に打数指定データＰＢＥＡＴが出力された場合は、打数初期値データＤＢＥＡＴを打数指定データＰＢＥＡＴの値に書き換えてもよい。この場合、打数指定データＰＢＥＡＴの値が有効な値のときだけ書き換えを行い、無効な値（例えば、４拍子のときに「３」など）のときは書き換えないようにする。
さらに、操作子１のボタンＳＷに例えば「０」などの特殊な数値のものを設け、このボタンが押されたら、打数指定データＰＢＥＡＴに基づいて書き換えた値をデフォルト（打数初期値データＤＢＥＡＴの値）に戻すようにしてもよい。また、ボタンＳＷの押し方の組み合わせによってデフォルトに戻すようにしてもよい。この場合は、打数初期値データＤＢＥＡＴの書き換えに際して、打数初期値データＤＢＥＡＴの値をＲＡＭ２０２の所定の記憶エリアに保存しておき、デフォルトに戻すことが指示されたときに、その記憶エリアの値を自動演奏データ２０に書き込めばよい。
【００６５】
（５）３拍子の曲の場合
以上の説明は、４拍子の曲について行ったが、その他の拍子でも上記と同様の動作となる。例えば、図１４は３拍子の場合の打数・動作判別処理（ステップＳ１４６）である。図に示すステップＳ１５１では変数Ｂｅａｔの内容が「３」であるか否かが判定され、「Ｙｅｓ」であれば、ステップＳ１５４で一時停止フラグｆｌｇＰａｕｓｅがセットされる。また、変数Ｂｅａｔの内容が「１」であれば、ステップＳ１５１→Ｓ１５２→Ｓ１５３に進み、イベント変数ｅｖｔＭＤの内容が１拍目に対応する（６１）か否かが判定される。この判定が「Ｙｅｓ」ならステップＳ１５４で一時停止フラグｆｌｇＰａｕｓｅがセットされる。
【００６６】
その他の処理は４拍子の場合と同様であり、これにより、変数Ｂｅａｔの内容が「３」であれば３拍子の各拍についてテンポがとられ、変数Ｂｅａｔの内容が「１」であれば１拍目だけでテンポがとられる。操作子１の振り方は、図３に示す打数３と打数１に対応する。ここで、図１５は３拍子の曲の例であるが、第１小節は打数３、第２小節以降は打数１となっている。
ところで、ステップＳ１４６は、拍子に応じた処理内容となるため、種々の拍子に対応して複数用意されており、自動演奏データ２０から読みとられた拍子に対応した処理が選択される。なお、曲の途中で拍子が変わる場合には、その時点において、変更後の拍子に対応する打数・動作判別処理が選択される。
【００６７】
（実施形態の概要）
上述した実施形態の装置としての概要をまとめると、以下のとおりである。
「操作者によって動かされた際の運動状態を検出する操作子と、
前記操作子が検出した運動状態から、曲のテンポをとるためのタイミングを示すテンポ制御信号を、前記運動の種類（実施形態では振り方）を識別する識別情報（実施形態ではノートナンバ）を含めて生成するテンポ制御信号生成手段と、
小節内において曲のテンポを何回のタイミングでとるべきかを示す打数を、打数指示情報に基づいて設定する打数設定手段と、
自動演奏データに基づいて演奏信号を生成する自動演奏手段とを有し、
前記自動演奏データは、曲のテンポをとる位置に、前記運動の種類を識別する識別情報とともに埋め込まれるタイミング情報を含んでおり、
前記自動演奏手段は、前記打数設定手段が設定した打数に基づいて前記識別情報の種類を選択し、選択した識別情報を有する前記タイミング情報の間隔と、選択した識別情報を有する前記テンポ制御信号の間隔とを比較し、この比較結果に応じて自動演奏のテンポを決定することを特徴とする自動演奏装置。」
また、上述した実施形態においては、曲のテンポを示すテンポ情報が自動演奏データに含まれていない場合であっても、楽音演奏装置２が、自動演奏開始前に操作子１から出力されるテンポ制御信号ＰＴＥＮＰＯの間隔を認識することで、初期テンポを設定することもできる。
【００６８】
Ｃ：変形例
（１）  上述した実施形態においては、操作子１を振る方向を検出し、自動演奏データ２０の拍の位置にも操作子１を振る方向に対応したデータを埋め込んで、操作子１の動作方向を認識しながらテンポ制御を行ったが、操作子１の動作方向を不問にしたテンポ制御を行うこともできる。例えば、操作子１を平板状に形成し、これが操作者によって叩かれたことを圧電センサなどで検出し、この検出タイミングの間隔からテンポを制御してもよい。この場合、自動演奏の１拍の間隔は、上述の実施形態のように自動演奏データ２０の拍のタイミングの位置にデータを埋め込み、そのデータの時間間隔を演算すればよい。このような構成をとった場合の打数の制御は、上述の実施形態と同様に行うことができる。例えば、４拍子で打数が４なら、圧電センサの検出タイミングの間隔を１拍分として認識する。同様にして、打数が２なら２拍分、打数が１なら４拍分として認識すればよい。
【００６９】
以上のような態様とした場合の概要は以下のとおりである。
「操作者によって動かされた際の運動状態を検出する操作子と、
前記操作子が検出した運動状態から、曲のテンポをとるためのタイミングを示すテンポ制御信号を生成して出力するテンポ制御信号出力手段と、
小節内において曲のテンポを何回のタイミングでとるべきかを示す打数を、打数指示情報に基づいて設定する打数設定手段と、
自動演奏データに基づいて演奏信号を生成するとともに、前記打数設定手段が設定した打数に対応するタイミングの間隔を、前記自動演奏データのテンポをとる位置に埋め込まれたタイミング情報の間隔から求めて前記テンポ制御信号の発生間隔と比較し、この比較結果に応じて自動演奏のテンポを決定する自動演奏手段と
を具備することを特徴とする自動演奏装置。」
【００７０】
また、曲のテンポを示す情報から自動演奏の拍の長さを求めてもよい。さらに、自動演奏信号２０に小節線情報が埋め込まれている場合は、小節線情報の間隔から拍の長さを演算してもよい（例えば、４拍子なら小節線情報の間隔の四分の一を１拍として算出するなど）。
この場合には、「自動演奏データのテンポをとる位置に埋め込まれたタイミング情報」は不要になる。要するに、自動演奏の拍（１拍または複数の拍）の長さは、自動演奏データに基づいて種々の求め方がある。
【００７１】
（２）上述した実施形態においては、打数を指定するボタンＳＷ（図４参照）によって操作者が任意に打数を指定できるようにしたが、このボタンＳＷついて操作の制限を付加してもよい。例えば、４拍子なら打数１，２，４を指定する以外のボタン操作は無効にし、３拍子なら打数１，２，３を指定する以外のボタン操作は無効にするように構成してもよい。また、有効なボタンＳＷについては、そのボタン自身あるいはそのボタンの近傍に設けたＬＥＤ等が点灯するようにしてもよい。このような制御を行うには、楽音演奏装置２から拍子を示す信号を操作子１側に供給し、操作子１においては、拍子を示す信号を受信して、どのボタンの操作を無効にするかを決定すればよい。この場合、拍子を示す情報は、自動演奏データ２０から読みとればよい。
上記のように構成すれば、誤操作が防止できる効果がある。特に、曲の途中で拍子が変わる場合などは有効である。
【００７２】
（３）上述した実施形態においては、自動演奏データ２０に埋め込んだ打数指示データＣＢＥＡＴによって打数変更を行ったが、打数が変更されるタイミングを操作者に気づかせるために、「打数が変更されます」などのメッセージを発音（あるいは表示）するように構成してもよい。発音は、音声データを自動演奏データ２０に埋め込んでおけば簡単に実現することができ、表示を行うには、文字データを埋め込んでおけばよい。また、その音声データや文字データを操作子１に転送し、操作子１がこれを受信するようにしておけば、操作子１においても発音や表示を行うことができる。
【００７３】
（４）上述した実施形態においては、１小節単位で打数の設定を行ったが、２小節以上の単位で打数を設定してもよい。また、拍子についても、４拍子、３拍子に限らず、任意の拍子の設定が可能である。
【００７４】
（５）操作子１の振り方の強弱に基づく制御を加えてもよい。例えば、角速度ｖＸ，ｖＹに対する閾値ｔＸ１，ｔＹ１，ｔＸ２，ｔＹ２，ｔＸ３，ｔＹ３，ｔＸ４，ｔＹ４を可変とし、打数に応じて変更されるようにしてもよい。こうすることで、打数が多い場合には閾値を小さくし、細かい動作でもテンポ指示ができるようにするなどの制御を行うことができる。
【００７５】
（６）操作者が操作子１を操作して変更したテンポを示すデータを自動演奏データ２０に埋め込むようにしてもよい。これによって、自動演奏データ２０は、操作者の好みのテンポの曲となる。
【００７６】
（７）上述の実施形態におけるＸセンサ１０６およびＹセンサ１０７には、速度を感知する速度センサを用いてもよい。要するに、振りの方向性が検出できるセンサを用いればよい。
【００７７】
（８）操作子１の形状については、本実施形態では片手で把持できる指揮棒のような形状としたが、これは任意である。例えば、カスタネットのような形状にし、操作者はこれを叩いてテンポをとってもよく、あるいは、操作者の身体に取り付ける形状にし、身振り手振りに合わせてテンポ制御を行ってもよい。
【００７８】
（９）テンポの変動に応じて打数を変えてもよい。テンポに対して幾つかの閾値を用意しておき、曲のテンポがある領域に入ったら打数は２、また他の領域に入ったら打数は１、というように制御することもできる。
【００７９】
（１０）操作子１から出力されるテンポ制御信号ＰＴＥＮＰＯを楽音演奏装置２側で作成してもよい。すなわち、操作子１からは、Ｘセンサ１０６およびＹセンサ１０７の出力信号をそのまま出力するように構成し、これらの信号からテンポ制御信号ＰＴＥＮＰＯを作成する処理は楽音演奏装置２側で行うという構成をとってもよい。
【００８０】
（１１）実施形態における楽音演奏装置２は、ＲＯＭ２０１，ＲＡＭ２０２，ＣＰＵ２０３，タイマ２０４，ＨＤＤ２０６，表示部２０８等を有しているが、これらは一般のコンピュータと同様の構成である。したがって、楽音演奏装置２として専用に構成された装置に限らず、一般のコンピュータに楽音演奏装置２と同様の動作を行わせるプログラムを読み込ませることによっても、同様の装置を構成することができる。また、このプログラムを記録した記録媒体を作成し、これを頒布することでより広い利用に供することもできる。
【００８１】
【発明の効果】
以上説明したように、本発明によれば、打数を変更して操作性を向上させたテンポ制御を行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態の構成を示すブロック図である。
【図２】同実施形態で用いる自動演奏データを示した図である。
【図３】同実施形態において操作者のテンポのとり方を示す図である。
【図４】同実施形態における操作子１の外観を示す図である。
【図５】同実施形態において操作者が操作子１を振っている状態を示す図である。
【図６】同実施形態におけるテンポ制御信号出力処理のフローチャートである。
【図７】同実施形態における自動演奏データ再生処理のフローチャートである。
【図８】同実施形態におけるテンポ制御間隔ｃｎｔＩｎｔとデルタタイム累算値ｃｎｔＤｌｔとの関係を説明するための図である。
【図９】同実施形態におけるテンポキーオン処理のフローチャートである。
【図１０】同実施形態におけるデルタタイム累算値ｃｎｔＤｌｔの具体的な算出方法を説明するための図である。
【図１１】同実施形態におけるイベント対応処理のフローチャートである。
【図１２】同実施形態における４／４拍子の場合の打数・動作判別処理のフローチャートである。
【図１３】同実施形態における４／４拍子の打数変更例を示した図である。
【図１４】同実施形態における３／４拍子の場合の打数・動作判別処理のフローチャートである。
【図１５】同実施形態における３／４拍子の打数変更例を示した図である。
【符号の説明】
１…操作子、２０…自動演奏データ、１０３…ＣＰＵ（テンポ制御信号出力手段）、１０５…打数指定部（入力手段）、２０３…ＣＰＵ（自動演奏手段、打数設定手段）、ＤＢＥＡＴ…打数初期値データ（打数指示情報）、ＣＢＥＡＴ…打数指示データ（打数指示情報）、ＰＢＥＡＴ…打数指定データ（打数指示情報）、ＰＴＥＮＰＯ…テンポ制御信号。
【図１】
2005017537.tif 000003
【図２】
2005017537.tif 000004
【図３】
2005017537.tif 000005
【図４】
2005017537.tif 000006
【図５】
2005017537.tif 000007
【図６】
2005017537.tif 000008
【図７】
2005017537.tif 000009
【図８】
2005017537.tif 000010
【図９】
2005017537.tif 000011
【図１０】
2005017537.tif 000012
【図１１】
2005017537.tif 000013
【図１２】
2005017537.tif 000014
【図１３】
2005017537.tif 000015
【図１４】
2005017537.tif 000016
【図１５】
2005017537.tif 000017