(57)【要約】【課題】楽器を演奏中の演奏者が行った演奏操作を、撮影した画像からより判りやすくなるように自動的に撮影する演奏撮影制御装置を提供する。【解決手段】演奏記録・再生装置１０は、データ取込スイッチ１４が操作されると、電子楽器４０が送信する、曲の演奏内容を表す演奏データを取り込み、その演奏データを解析して、演奏の進行に合わせてユーザが鍵盤４１上で移動させる手の位置を予想し、その予想した位置に存在する手を撮影するうえで望ましい撮影倍率、及び撮影位置を撮影条件として決定する。撮影装置２０にその撮影条件を順次、変更させるためのカメラ制御データは、そのようにして決定した撮影倍率、及び撮影位置で撮影を順次、行わせるように生成する。撮影スイッチ１６が操作されると、生成したカメラ制御データに従って撮影条件を順次、変更させながら、撮影装置２０に撮影を行わせる。【選択図】            図１
2005026927.tif 000002
【特許請求の範囲】
【請求項１】
撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を撮影させるためのシーケンス制御データを生成する装置であって、
演奏者が行う演奏の内容を表す演奏データを取得するデータ取得手段と、
前記データ取得手段が取得した演奏データを解析して、前記撮影装置に撮影させる際の撮影条件を決定する撮影条件決定手段と、
前記撮影条件決定手段が決定した撮影条件で前記楽器を演奏中の演奏者を前記撮影装置に撮影させるためのシーケンス制御データを生成する制御データ生成手段と、
を具備することを特徴とするシーケンス制御データ生成装置。
【請求項２】
前記楽器が鍵盤を備えた楽器であった場合、前記撮影条件決定手段は、前記演奏データを解析して演奏者の二つの手が存在する該鍵盤上の位置をそれぞれ予想し、該予想した２つの手の位置に応じて前記撮影装置が撮影を行う際の撮影倍率を前記撮影条件として決定し、
前記制御データ生成手段は、前記撮影条件決定手段が決定した撮影倍率で前記撮影装置に撮影させるためのシーケンス制御データを生成する、
ことを特徴とする請求項１記載のシーケンス制御データ生成装置。
【請求項３】
前記楽器が鍵盤を備えた楽器であった場合、前記撮影条件決定手段は、前記演奏データを解析して演奏者の手が存在する該鍵盤上の位置を予想し、該予想した手の位置に応じて前記撮影装置が撮影を行う際の撮影位置を前記撮影条件として決定し、
前記制御データ生成手段は、前記撮影条件決定手段が決定した撮影位置で前記撮影装置に撮影させるためのシーケンス制御データを生成する、
ことを特徴とする請求項１記載のシーケンス制御データ生成装置。
【請求項４】
撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を自動的に撮影させる装置であって、
演奏者が行う演奏の内容を表す演奏データを取得するデータ取得手段と、
前記データ取得手段が取得した演奏データを解析して、前記撮影装置に撮影させる際の撮影条件を決定する撮影条件決定手段と、
前記撮影条件決定手段が決定した撮影条件を基に、該撮影条件を順次、変更させながら、前記楽器を演奏中の演奏者を前記撮影装置に自動的に撮影させる撮影制御手段と、
を具備することを特徴とする演奏撮影装置。
【請求項５】
撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を撮影させるためのシーケンス制御データを生成するシーケンス制御データ生成装置に実行させるプログラムであって、
演奏者が行う演奏の内容を表す演奏データを取得する機能と、
前記取得する機能により取得した演奏データを解析して、前記撮影装置に撮影させる際の撮影条件を決定する機能と、
前記決定する機能により決定した撮影条件で前記楽器を演奏中の演奏者を前記撮影装置に撮影させるためのシーケンス制御データを生成する機能と、
を実現させるためのプログラム。
【請求項６】
撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を自動的に撮影させる演奏撮影装置に実行させるプログラムであって、
演奏者が行う演奏の内容を表す演奏データを取得する機能と、
前記取得する機能により取得した演奏データを解析して、前記撮影装置に撮影させる際の撮影条件を決定する機能と、
前記決定する機能により決定した撮影条件を基に、該撮影条件を順次、変更させながら、前記楽器を演奏中の演奏者を前記撮影装置に自動的に撮影させる機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、撮影装置に撮影させる際の撮影条件を順次、変更させながら、撮影装置により楽器を演奏中の演奏者を自動的に撮影させるための技術に関する。
【０００２】
【従来の技術】
楽器を用いた演奏は、発音させるべき楽音を発音させるための演奏操作を順次、行っていくことで実現される。その演奏を行っている演奏者を撮影する演奏撮影装置としては、例えば特許文献１に記載されたものが知られている。その従来の演奏撮影装置では、鍵盤上で押鍵した鍵、その押鍵に使用した指、及びその押鍵を行ったタイミングを正確に把握できるように、上方から鍵盤を操作する手を撮影している。
【０００３】
【特許文献１】
特開平７−３６４４６号公報
【０００４】
【発明が解決しようとする課題】
特許文献１に記載された従来の演奏撮影装置では、カメラの位置を固定し、その位置から一定の撮影倍率で撮影を行うようになっていた。
上方からの視点では、押鍵時の指や鍵の動きは小さい。また、指使いなど、手の動きには細かい動作が含まれていることも多い。このことから、撮影はより大きい撮影倍率で行うことが望ましいと言える。
【０００５】
しかし、演奏を行う手は、演奏の進行に応じて鍵盤上を移動する。その移動により撮影範囲外となって手を撮影できないようなことは回避する必要がある。それにより、従来の演奏装置では、撮影倍率を低めに設定せざるを得なかった。このようなことから、移動する手をより大きい撮影倍率で撮影できるようにすることは非常に重要であると考えられる。
【０００６】
本発明の課題は、楽器を演奏中の演奏者が行った演奏操作を、撮影した画像からより判りやすくなるように自動的に撮影する演奏撮影制御装置を提供することにある。
【０００７】
【課題を解決するための手段】
本発明のシーケンス制御データ生成装置は、撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を撮影させるためのシーケンス制御データを生成することを前提とし、演奏者が行う演奏の内容を表す演奏データを取得するデータ取得手段と、データ取得手段が取得した演奏データを解析して、撮影装置に撮影させる際の撮影条件を決定する撮影条件決定手段と、撮影条件決定手段が決定した撮影条件で楽器を演奏中の演奏者を撮影装置に撮影させるためのシーケンス制御データを生成する制御データ生成手段と、を具備する。
【０００８】
なお、上記楽器が鍵盤を備えた楽器であった場合、撮影条件決定手段は、演奏データを解析して演奏者の二つの手が存在する該鍵盤上の位置をそれぞれ予想し、該予想した２つの手の位置に応じて撮影装置が撮影を行う際の撮影倍率を撮影条件として決定し、制御データ生成手段は、撮影条件決定手段が決定した撮影倍率で撮影装置に撮影させるためのシーケンス制御データを生成する、ことが望ましい。また、その場合、撮影条件決定手段は、演奏データを解析して演奏者の手が存在する該鍵盤上の位置を予想し、該予想した手の位置に応じて撮影装置が撮影を行う際の撮影位置を撮影条件として決定し、制御データ生成手段は、撮影条件決定手段が決定した撮影位置で撮影装置に撮影させるためのシーケンス制御データを生成する、ことが望ましい。
【０００９】
本発明の演奏撮影装置は、撮影装置に撮影させる際の撮影条件を順次、変更させながら、該撮影装置により楽器を演奏中の演奏者を自動的に撮影させることを前提とし、演奏者が行う演奏の内容を表す演奏データを取得するデータ取得手段と、データ取得手段が取得した演奏データを解析して、撮影装置に撮影させる際の撮影条件を決定する撮影条件決定手段と、撮影条件決定手段が決定した撮影条件を基に、該撮影条件を順次、変更させながら、楽器を演奏中の演奏者を撮影装置に自動的に撮影させる撮影制御手段と、を具備する。
【００１０】
本発明の第１、及び第２の態様のプログラムはそれぞれ、上記本発明のシーケンス制御データ生成装置、及び演奏撮影装置を実現させるための機能を搭載している。
本発明では、演奏者が行う演奏の内容を表す演奏データを取得し、それを解析して、撮影装置に撮影させる際の撮影条件を決定し、その決定した撮影条件で楽器を演奏中の演奏者を撮影装置に撮影させるためのシーケンス制御データを生成する。演奏データを解析することにより、演奏を行う演奏者の動きを高精度に予想することが可能となる。それにより、実際の動きに合った撮影条件で撮影を行えるようになる。このことから、行った演奏操作を撮影された画像から判りやすいように撮影することも可能となる。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施の形態によるシーケンス制御データ生成装置、及び演奏撮影装置を用いて構築された演奏撮影システムの構成を示す図である。
【００１２】
その演奏撮影システムは、図１に示すように、演奏撮影・再生装置１０に対し、撮影装置２０、表示装置３０、及び電子楽器４０をそれぞれケーブルで接続させることで構築されている。その演奏撮影・再生装置１０は、電子楽器４０を演奏するユーザ（演奏者）の画像を撮影装置２０により撮影して記録し、その記録した画像を表示装置３０上に表示させることで再生する。本実施の形態によるシーケンス制御データ生成装置、及び演奏撮影装置は、その演奏撮影・再生装置１０に搭載される形で実現されている。以降、演奏撮影・再生装置１０は「再生装置」と略記する。
【００１３】
上記電子楽器４０は、鍵盤４１を備えたものである。図８に示すように、その鍵盤４１を構成する鍵のなかで演奏者（ユーザ）が演奏操作を行った鍵、それを行った指、及びそのタイミングは、上方からの視点では把握し易い。このことから、撮影装置２０による撮影は上方から演奏者の手を対象に行うことを前提としている。
【００１４】
その撮影装置２０には、被写体を撮影する撮影機能の他に、位置を移動させる駆動機能が搭載されている。その駆動機能による位置の移動を行えるように、図１に示す板状のガイド部材５０に取り付けられて設置されている。その機能は、ガイド部材５０の長手方向（鍵盤４１の鍵が並んでいる方向）の他に、その前後方向（通常、水平面上でその長手方向と直交する方向）の移動も行えるようになっている。その撮影機能による撮影では、光学的に、或いはデジタル処理により撮影画像の大きさ（撮影倍率）を変えられるようになっている。
【００１５】
再生装置１０には、ユーザが操作するスイッチとして、上下左右の各スイッチ１１ａ〜ｄからなるカーソルスイッチ１１、撮影装置２０の前後方向の位置調整を行うためのＰＯＳスイッチ１２、撮影倍率の調整を行うためのＺＯＯＭスイッチ１３、データの取り込みを指示するためのデータ取込スイッチ１４と、記録した画像の再生を指示するための再生スイッチ１５、及び撮影を指示するための撮影スイッチ１６、が設けられている。
【００１６】
図２は、上記再生装置１０の回路構成を示す図である。
その再生装置１０は、図２に示すように、装置１０全体の制御を実行するＣＰＵ２０１と、ＣＰＵ２０１が実行するプログラムや各種制御用データ等を格納したＲＯＭ２０２と、ＣＰＵ２０１がワークに用いるＲＡＭ２０３と、接続された撮影装置２０のカメラ部２２を制御するためのカメラコントローラ２０５と、その撮影装置２０の駆動部２１を制御するための駆動コントローラ２０６と、図１に示す各種スイッチを有するスイッチ（ＳＷ）部２０６と、接続された電子楽器４０からＭＩＤＩデータを入力できるＭＩＤＩ入出力部２０７と、接続された表示装置３０に、ＣＰＵ２０１から指示された画像を表示させるディスプレイコントローラ２０８と、を備えて構成されている。
【００１７】
撮影装置２０のカメラ部２２は、上記撮影機能を実現させるものである。そのカメラ部２２により、ズームイン、或いはズームアウトを実現させる撮影が行えるようになっている。他方の駆動部２１は、上記駆動機能を実現させるものである。その駆動部２１により、ガイド部材５０の長手方向、或いは前後方向の移動が行えるようになっている。
【００１８】
以上の構成において動作を説明する。
特には図示しない電源がオンされると、ＣＰＵ２０１は、ＲＯＭ２０２に格納されたプログラムを読み出して実行することにより、装置１０の制御を開始する。その制御は、ユーザが操作したスイッチに応じて実行する。
【００１９】
データ取込スイッチ１４の操作により取り込む対象とするデータとしては、ユーザが演奏を行おうとする曲の演奏内容を表す演奏データを想定している。そのスイッチ１４をユーザが操作すると、ＣＰＵ２０１は、ＭＩＤＩ入出力部２０７に受信したデータをＲＡＭ２０３に確保した演奏データエリア（図３参照）に格納する。
【００２０】
そのようにして取り込まれる演奏データは、ユーザが行うべき演奏操作を示すイベントデータ（例えばＭＩＤＩデータ）毎に、その演奏操作を行うべきタイミングを示すタイムデータを付加した形で構成されている。このことから、取り込みを行った後は、取り込んだ演奏データを解析して、演奏の進行に合わせてユーザが鍵盤４１上で移動させる手の位置を予想し、その予想した位置に存在する手を撮影するうえで望ましい撮影倍率、及び撮影位置（撮影装置２０の位置）を撮影条件として決定する。その撮影条件を順次、変更させていくためのカメラ制御データは、そのようにして決定した撮影倍率、及び撮影位置で撮影を順次、行わせるために生成する。
【００２１】
生成したカメラ制御データは、ＲＡＭ２０３に確保したカメラ制御データエリア（図３参照）に格納する。その制御データは、基本的な構成は演奏データと同じであり、撮影条件の変更を指示するカメラ制御イベントデータ毎に、その変更を行うべきタイミングを示すタイムデータが付加された形で構成されている。そのイベントデータには、撮影倍率（ズーム）変更用のものと、撮影位置変更用のものと、が存在する。ここでは便宜的に、前者を「ズームイベントデータ」、後者を「位置イベントデータ」とそれぞれ呼ぶことにする。
【００２２】
このようなカメラ制御データを生成することにより、ユーザが演奏を行う手を確実、且つより大きく撮影できるようになる。このため、撮影した画像の再生時には、電子楽器４０を演奏中の演奏者が行っている演奏操作をより容易に把握できるようになる。
【００２３】
当然のことながら、撮影された画像上における鍵盤４１の大きさや位置は、撮影装置３０と電子楽器４０の相対的な位置関係によって変化する。このことから、本実施の形態では、その大きさや位置に応じた調整、つまりズーム調整や位置調整をユーザに行わせるようにしている。図１に示すＰＯＳスイッチ１２、及びＺＯＯＭスイッチ１３は、その調整を行わせるために用意している。
【００２４】
その調整は、ＲＯＭ２０２から読み出してＲＡＭ２０３に確保の枠画像エリア（図３参照）に格納した枠画像、及び撮影装置２０で撮影した鍵盤４１を表示装置３０に表示して行わせるようにしている。その枠画像は、図６及び図７に破線で示すものである。未調整時には、図６に示すように、予め設定した位置に予め設定した大きさで表示される。その表示は、ＣＰＵ２０１がディスプレイコントローラ２０８に、表示させるべき画像のデータを送出することで実現される。図６、及び図７に示す６０は、表示装置３０に表示させる表示画面である。
【００２５】
その枠画像が表す各鍵の位置は、ＲＡＭ２０３に確保した位置データエリア（図３参照）に格納した位置データで管理している。その位置データエリア内には、各鍵別にその位置データ格納用の鍵位置エリアが確保されている。位置データエリアに最初に格納される位置データは、ＲＯＭ２０２から読み出したものである。
【００２６】
その位置データとしては、図５に示すように、直線で範囲を表現した鍵に存在する角別にその位置を示すＸ座標値、及びＹ座標値を格納している。図中「（ｘ０，ｙ０）」と表記した位置データでは、「ｘ０  」がＸ座標値を、「ｙ０  」がＹ座標値を表している。
【００２７】
ＰＯＳスイッチ１２を操作すると、位置調整を有効とでき、枠画像の位置を上下左右の何れの方向にも移動できるようになる。上下方向の位置の移動は、カーソルスイッチ１１のなかで上スイッチ１１ａ、或いは下スイッチ１１ｂへの操作により行うようになっている。上スイッチ１１ａを操作した場合には、その位置は上に移動し、下スイッチ１１ｂを操作した場合には、その位置は下に移動する。左右方向の移動は同様にして、左スイッチ１１ｃ、或いは右スイッチ１１ｄへの操作により行うようになっている。
【００２８】
一方、ＺＯＯＭスイッチ１３を操作すると、ズーム調整を有効とでき、枠画像の大きさを変更できるようになる。このとき、カーソルスイッチ１１のなかで操作が有効となるのは上スイッチ１１ａ、及び下スイッチ１１ｂである。上スイッチ１１ａを操作した場合には、その大きさは小さくなり（ズームアウト）、下スイッチ１１ｂを操作した場合には、その大きさは大きくなる（ズームイン）。
【００２９】
ＣＰＵ２０１は、ＰＯＳスイッチ１２をユーザが操作すると、その後にカーソルスイッチ１１のなかで操作が行われたスイッチに応じてオフセット値を更新する。ＺＯＯＭスイッチ１３を操作すると、その後の上スイッチ１１ａ、或いは下スイッチ１１ｂへの操作に応じて、位置データに掛ける値（倍率）を更新する。それにより、図７に示すような調整を実現させる。
【００３０】
上記位置データは、例えば枠画像の左上の角、つまり図３、及び図５中に「（ｘ０，ｙ０）」と表記した位置データを基準として表現している。このため、上記オフセット値は、その位置データで表れる位置を上下左右に移動させるものとさせている。オフセット値には、上下（Ｙ）方向移動用のものと、左右（Ｘ）方向移動用のものと、が存在する。
【００３１】
カメラ制御データエリアに格納したカメラ制御データによる撮影は、本実施の形態では予め定めた周期で行うようにしている。ＣＰＵ２０１は、撮影スイッチ１６をユーザが操作すると、そのカメラ制御データによる撮影を開始し、その周期で撮影装置２０に撮影を行わせることでそれから送信される撮像画像を、ＲＡＭ２０３に確保した撮像エリア（図３、及び図４参照）に格納する。そのようにして格納した撮像画像は、再生スイッチ１５への操作によって再生する。
【００３２】
ＣＰＵ２０１は、撮影の指示や撮影倍率（ズーム）の指定を、カメラコントローラ２０５を介して行い、撮影装置２０のカメラ部２２から送信された撮像画像は、そのコントローラ２０５を介して受け取る。撮影位置の移動指示は、駆動コントローラ２０４を介して行う。
【００３３】
次に、図９〜図２３に示す各種フローチャートを参照して、再生装置１０の動作について詳細に説明する。
図９は、全体処理のフローチャートである。始めに図９を参照して、その全体処理について詳細に説明する。その全体処理は、例えばＣＰＵ２０１が、ＲＯＭ２０２に格納されているプログラムを実行することで実現される。
【００３４】
電源がオンされると、先ず、ステップ９０２で装置１０のイニシャライズを行い、所定の状態に設定する。このとき、ＲＯＭ２０２に格納されている位置データを読み出してＲＡＭ２０３に確保した位置データエリアに格納する。次のステップ９０２では、スイッチ部２０６から、図１に示すスイッチを含む各種スイッチに対して行われた操作内容を示す操作情報を受け取り、行われた操作に対応するためのスイッチ（ＳＷ）処理を実行する。その後はステップ９０３に移行する。
【００３５】
ステップ９０３では、取り込んだ演奏（曲）データを解析してカメラ制御データ生成用のデータを抽出する曲データ変換処理を実行する。続くステップ９０４では、抽出したデータからカメラ制御データを生成する平均化処理を実行する。その実行後は、生成した制御データに従って撮影を行っていくための撮影処理、撮影によって得られた撮像画像を再生するための再生処理、及びその他の処理をその順序で実行してから（ステップ９０５〜９０７）、上記ステップ９０２に戻る。それにより、ステップ９０２〜９０７で形成される処理ループを、電源がオフされるまでの間、繰り返し実行する。
【００３６】
以降は、上記全体処理内で実行されるサブルーチン処理について詳細に説明する。
図１０は、上記ステップ９０２として実行されるスイッチ処理のフローチャートである。
【００３７】
そのスイッチ処理では、図１０に示すように、先ず、ステップ１００１でＰＯＳスイッチ１２への操作に対応するためのＰＯＳスイッチ処理を実行し、次のステップ１２０２でＺＯＯＭスイッチ１３への操作に対応するためのＺＯＯＭスイッチ処理を実行し、その次のステップ１００３でカーソルスイッチ１１への操作に対応するためのカーソルスイッチ処理を実行する。
【００３８】
ステップ１００３に続くステップ１００４では、データ取込スイッチ１４への操作に対応するためのデータ取込スイッチ処理を実行する。その後は、ステップ１００５で撮影スイッチ１６への操作に対応するための撮影スイッチ処理、ステップ１００６で再生スイッチ１５への操作に対応するための再生スイッチ処理、ステップ１００７でその他のスイッチへの操作に対応するためのその他のスイッチ処理をその順序で実行してから一連の処理を終了する。ここでは、図１１〜図１６に示す各フローチャートを参照して、ステップ１００１〜１００６として実行されるサブルーチン処理について詳細に説明する。
【００３９】
上述したように、スイッチ部２０６から、各種スイッチに対して行われた操作内容を示す操作情報を受け取る。その操作情報から、注目するスイッチが操作されたか否か判定するようになっている。
図１１は、上記ステップ１００１として実行されるＰＯＳスイッチ処理のフローチャートである。スイッチ処理内で実行されるサブルーチン処理では、始めに図１１を参照して、ＰＯＳスイッチ処理について詳細に説明する。この処理で注目するＰＯＳスイッチ１２では、位置調整を無効としている状態で操作するとそれを有効とし、その後に操作するとそれを無効とさせるようにしている。
【００４０】
先ず、ステップ１１０１では、ＰＯＳスイッチ１２が位置調整を有効とさせるために操作（オン）されたか否か判定する。位置調整を無効としている状態でスイッチ部２０６から受け取った操作情報が、そのスイッチ１２に対して操作が行われたことを示していた場合、判定はＹＥＳとなり、次にステップ１１０２に移行して、図３に示す位置データエリアに格納されている位置データから枠画像（図６参照）を作成して枠画像エリアにストアし、そのストア後に移行するステップ１１０３で変数ＰＦに１、変数ＺＦに０をそれぞれ代入してから一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１１０４に移行する。
【００４１】
上記ステップ１１０２では、カメラコントローラ２０５を介して撮影装置２０のカメラ部２２に撮影を指示し、その指示によって得られた撮像画像（鍵盤４１を撮影した画像）を枠画像とともに表示装置３０に表示させることも併せて行う（図６参照）。上記変数ＰＦ、ＺＦは、それぞれ位置調整、ズーム調整が有効か否か管理するための変数であり、代入される値の１は有効、０は無効を示している。このため、ステップ１１０１の判定がＹＥＳとなる場合、変数ＰＦの値は０となっている。
【００４２】
ステップ１１０４では、ＰＯＳスイッチ１２が位置調整を無効とさせるために操作（オン）されたか否か判定する。位置調整を有効としている状態、つまり変数ＰＦに１が代入されている状態でスイッチ部２０６から受け取った操作情報が、そのスイッチ１２に対して操作が行われたことを示していた場合、判定はＹＥＳとなり、次にステップ１１０５に移行して、枠画像エリアのクリアを行い、表示装置３０の表示を消去させ、更にステップ１１０６で変数ＰＦに０を代入した後、一連の処理を終了する。そうでない場合には、即ちＰＯＳスイッチ１２が操作されていない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００４３】
ＰＯＳスイッチ処理では、上述したような処理が上述したような流れで行われる。これは、ステップ１００２として実行されるＺＯＯＭスイッチ処理でも同様である。ＺＯＯＭスイッチ１３は、ズーム調整用であることから、図１１を参照して説明すると、ステップ１１０３では変数ＺＦに１、変数ＰＦに０を代入し、ステップ１１０６では変数ＺＦに０を代入するようになっている。
【００４４】
次に、図１２を参照して、図１０に示すスイッチ処理内でステップ１００３として実行されるカーソルスイッチ処理について詳細に説明する。
カーソルスイッチ１１は、位置調整、ズーム調整の何れにも用いられる。このことから、カーソルスイッチ処理では、現在、有効となっている調整、及びカーソルスイッチ１１のなかで操作されたスイッチに応じた設定を行うようになっている。
【００４５】
先ずステップ１２０１では、上スイッチ１１ａが操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１１ａに対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１２０２に移行し、そうでない場合には、判定はＮＯとなってステップ１２０８に移行する。
【００４６】
ステップ１２０２では、変数ＰＦの値が１か否か、つまり位置調整が有効となっているか否か判定する。その位置調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２０３において、上下（Ｙ）方向移動用のオフセット値に例えば所定値を加算することで更新し、更新後のオフセット値を各位置データのＹ座標値に加算し、その次のステップ１２０４では、加算によって修正した位置データに従って、表示させている枠画像を移動させる。一連の処理をその後に終了する。一方、そうでない場合には、判定はＮＯとなってステップ１２０５に移行する。
【００４７】
上記ステップ１２０３におけるオフセット値のＹ座標値への加算は、枠画像の表示位置を設定するために、位置データエリアから読み出したＹ座標値に対して行われ、位置データエリアにストアされている位置データ自体は更新しない。これは他においても同様である。
【００４８】
ステップ１２０５では、変数ＺＦの値が１か否か、つまりズーム調整が有効となっているか否か判定する。そのズーム調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２０６において、ズーム調整用の倍率に例えば所定値を加算することで更新し、更新後の倍率を各位置データのＸＹ座標値に乗算して枠画像の倍率変換を行い、その次のステップ１２０７では、乗算によって修正した位置データに従って、表示させている枠画像の大きさを変化（ここでは拡大）させる。一連の処理をその後に終了する。一方、そうでない場合には、位置調整、及びズーム調整が何れも有効となっていない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００４９】
ズーム調整用の倍率は初期値を１としている。このため、それを有効とさせてからカーソルスイッチ１１のなかで最初に上スイッチ１１ａを操作すると、その倍率は１より大きい値に更新されることになる。
上記ステップ１２０１の判定がＮＯとなって移行するステップ１２０８では、下スイッチ１１ｂが操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１１ｂに対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１２０９に移行し、そうでない場合には、判定はＮＯとなって図１３のステップ１２１３に移行する。
【００５０】
ステップ１２０９では、変数ＰＦの値が１か否か判定する。位置調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２１０において、上下（Ｙ）方向移動用のオフセット値から例えば所定値を減算することで更新し、更新後のオフセット値を各位置データのＹ座標値に加算した後、上記ステップ１２０４に移行する。そうでない場合には、判定はＮＯとなってステップ１２１１に移行する。
【００５１】
ステップ１２１１では、変数ＺＦの値が１か否か判定する。ズーム調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２１２において、ズーム調整用の倍率から例えば所定値を減算することで更新し、更新後の倍率を各位置データのＸＹ座標値に乗算して枠画像の倍率変換を行った後、上記ステップ１２０７に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００５２】
上述したように、ズーム調整用の倍率は初期値を１としている。このため、それを有効とさせてからカーソルスイッチ１１のなかで最初に下スイッチ１１ｂを操作すると、その倍率は１より小さい値に更新されることになる。
上記ステップ１２０８の判定がＮＯとなって移行する図１３のステップ１２１３では、右スイッチ１１ｄが操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１１ｄに対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１２１４に移行し、そうでない場合には、判定はＮＯとなってステップ１２１６に移行する。
【００５３】
ステップ１２１４では、変数ＰＦの値が１か否か判定する。位置調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２１５において、左右（Ｘ）方向移動用のオフセット値に例えば所定値を加算することで更新し、更新後のオフセット値を各位置データのＸ座標値に加算した後、上記ステップ１２０４に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００５４】
一方、ステップ１２１６では、左スイッチ１１ｃが操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１１ｃに対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１２１７に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００５５】
ステップ１２１７では、変数ＰＦの値が１か否か判定する。位置調整が有効となっている場合、判定はＹＥＳとなり、次にステップ１２１８において、左右（Ｘ）方向移動用のオフセット値から例えば所定値を減算することで更新し、更新後のオフセット値を各位置データのＸ座標値に加算した後、上記ステップ１２０４に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００５６】
左右スイッチ１１ｃ、１１ｄへの操作に着目した処理では、変数ＺＦの値の判定を行わない。これは、ズーム調整は、左右スイッチ１１ｃ、１１ｄを操作して行わせるようにしていないためである。
図１４は、図１０に示すスイッチ処理内でステップ１００４として実行されるデータ取込スイッチ処理のフローチャートである。次に図１４を参照して、その取込スイッチ処理について詳細に説明する。
【００５７】
先ず、ステップ１４０１では、データ取込スイッチ１４が操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１４に対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１４０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理が終了する。
【００５８】
ステップ１４０２では、変数ＭＦに０を代入する。その変数ＭＦは、データ取込の有無判定用の変数であり、代入される０はその取り込みが行われていないことを示し、１はその取り込みが行われたことを示している。ステップ１４０２で変数ＭＦに０を代入するのは、その後のデータ取り込みが行われない可能性があるためである。
【００５９】
ステップ１４０２に続くステップ１４０３では、変数ＡＤに、演奏データエリアの先頭アドレスを指定する値を代入する。その次のステップ１４０４では、データ入力が行われるのを待つ。ＭＩＤＩ入出力部２０７がデータを受信すると、ステップ１４０５に移行して、それが受信したデータが最後であることを示すＥＮＤデータか否か判定する。そのデータがＥＮＤデータであった場合、判定はＹＥＳとなってステップ１４０８に移行する。そうでない場合には、判定はＮＯとなり、受信したデータを変数ＡＤの値で指定されるアドレスにストアし（ステップ１４０６）、変数ＡＤの値をインクリメントしてその値を進めてから（ステップ１４０７）、上記ステップ１４０４に戻る。
【００６０】
一方、ステップ１４０８では、受信したＥＮＤデータを変数ＡＤの値で指定されるアドレスにストアする。次のステップ１４０９では、変数ＭＦに１を代入する。一連の処理はその後に終了する。
このようにして、演奏データエリアに電子楽器４０から送信された演奏データがストアされる。後述する曲データ変換処理は、その演奏データを処理対象にして実行される。
【００６１】
図１５は、図１０に示すスイッチ処理内でステップ１００５として実行される撮影スイッチ処理のフローチャートである。次に図１５を参照して、その撮影スイッチ処理について詳細に説明する。その処理で注目する撮影スイッチ１６では、撮影の開始、或いはその終了を指示できるようにさせている。
【００６２】
先ず、ステップ１５０１では、撮影スイッチ１６が操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１６に対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１５０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理が終了する。
【００６３】
ステップ１５０２では、変数ＣＦの値を反転、つまりそれまでの値が１であれば０、それまでの値が０であれば１を新たに代入する。その変数ＣＦは、撮影中か否か判定用の変数であり、代入される０は撮影中でないことを示し、１は撮影中であることを示している。
【００６４】
ステップ１５０２に続くステップ１５０３では、変数ＣＦの値が１か否か判定する。ユーザが撮影を開始させるために撮影スイッチ１６を操作した場合、ステップ１５０２の処理の実行によって変数ＣＦに１が代入されることから判定はＹＥＳとなり、次にステップ１５０６に移行する。そうでない場合には、つまりユーザが撮影を終了させるために撮影スイッチ１６を操作した場合には、判定はＮＯとなり、タイマインタラプト処理の実行を禁止し（ステップ１５０４）、撮影装置２０のカメラ部２２をオフさせてから（ステップ１５０５）、一連の処理を終了する。
【００６５】
上述したように、本実施の形態では、予め定めた周期で撮影を行うようにしている。上記タイマインタラプト処理は、その周期（以降「最小単位時間」と呼ぶ）で撮影を行うための時間計時用の処理である。その実行禁止は、その周期で発生する割り込む信号を無効にして、その割り込み信号の発生により実行させないようにすることである。
【００６６】
ステップ１５０６では、変数ＣＡＤに、カメラ制御データエリア（図３参照）の先頭に位置するデータエリア（以降、「アドレス」と呼ぶ）を指定する値を代入する。続くステップ１５０７では、変数ＧＡＤに、撮像エリアの先頭に位置するデータエリア（以降、「アドレス」と呼ぶ）を指定する値を代入する。その後は、変数ＣＡＤの値で指定されるアドレスからタイムデータを読み出して変数Ｔに代入し（ステップ１５０８）、撮影装置２０の駆動部２１への指示を行って、それをガイド部材５０の中央に移動させ（ステップ１５０９）、撮影装置２０のカメラ部２２に指示するズーム（ＺＯＯＭ）を最小に設定し（ステップ１５１０）、そのカメラ部２２をオンさせ、設定したズームの設定を指示し（ステップ１５１１）、タイマインタラプト処理の実行禁止を解除させてから（ステップ１５１２）、一連の処理を終了する。
【００６７】
このようにして、撮影スイッチ処理では、撮影装置２０による撮影を開始するうえでの準備が行われる。実際の撮影は、後述する撮影処理を実行することで行われる。
図１６は、図１０に示すスイッチ処理内でステップ１００６として実行される再生スイッチ処理のフローチャートである。スイッチ処理で実行されるサブルーチン処理の最後に図１６を参照して、その再生スイッチ処理について詳細に説明する。その処理で注目する再生スイッチ１５では、再生の開始、或いはその終了を指示できるようにさせている。
【００６８】
先ず、ステップ１６０１では、再生スイッチ１５が操作されたか否か判定する。スイッチ部２０６からの操作情報が、そのスイッチ１５に対して操作が行われたことを示していた場合、判定はＹＥＳとなってステップ１６０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理が終了する。
【００６９】
ステップ１６０２では、変数ＳＴＦの値を反転、つまりそれまでの値が１であれば０、それまでの値が０であれば１を新たに代入する。その変数ＳＴＦは、再生中か否か判定用の変数であり、代入される０は再生中でないことを示し、１は再生中であることを示している。
【００７０】
ステップ１６０２に続くステップ１６０３では、変数ＳＴＦの値が１か否か判定する。ユーザが再生を開始させるために再生スイッチ１５を操作した場合、ステップ１６０２の処理の実行により変数ＳＴＦに１が代入されることから判定はＹＥＳとなり、次にステップ１６０６に移行する。そうでない場合には、つまりユーザが再生を終了させるために再生スイッチ１５を操作した場合には、判定はＮＯとなり、タイマインタラプト処理の実行を禁止し（ステップ１６０４）、表示装置３０をオフさせてから（ステップ１６０５）、一連の処理を終了する。
【００７１】
ステップ１６０６では、変数ＧＡＤに、撮像エリアの先頭アドレスを指定する値を代入する。その後は、変数ＧＡＤの値で指定されるアドレスから撮像画像のデータを読み出し（ステップ１６０７）、ディスプレイコントローラ２０８にデータを送出するとともに、表示装置３０のオンを指示し（ステップ１６０８）、タイマインタラプト処理の実行禁止を解除させてから（ステップ１６０９）、一連の処理を終了する。
【００７２】
このようにして、再生スイッチ処理では、表示装置３０に最初に撮像した画像を表示させる。それに続く画像の表示（再生）は、後述する再生処理を実行することで行われる。
図９に示す全体処理内で実行されるサブルーチン処理の説明に戻る。
【００７３】
図１７〜図１９は、その全体処理内でステップ９０３として実行される曲データ変換処理のフローチャートである。次に図１７〜図１９を参照して、その変換処理について詳細に説明する。
先ず、ステップ１７０１では、変数ＭＦの値が１か否か判定する。変数ＭＦには、演奏データを取り込むことで１が代入される。このことから、その取り込みが行われた場合、判定はＹＥＳとなってステップ１７０２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７４】
ステップ１７０２では、変数ＨＡＤに、ＲＡＭ２０３に確保し制御用データエリアの先頭アドレスを指定する値を代入する。次のステップ１７０３では、変数ＡＤに、演奏データエリアの先頭アドレスを指定する値を代入する。その後は、ステップ１７０４において、変数ＡＤの値で指定されるアドレスからデータを読み出した後、ステップ１７０５に移行する。
【００７５】
ステップ１７０５では、読み出したデータの種類を判定する。そのデータがタイムデータであった場合、その旨が判定されてステップ１７０６に移行し、変数ＨＡＤの値で指定されるアドレスにそのタイムデータをストアし、次のステップ１７０７で変数ＡＤ、及びＨＡＤの値をそれぞれインクリメントして進めてから上記ステップ１７０４に戻る。読み出したデータがＥＮＤデータであった場合には、その旨が判定されてステップ１７０８に移行し、変数ＭＦに０、変数ＨＦに１を代入した後、一連の処理を終了する。その読み出したデータがイベント（ＭＩＤＩ）データであった場合には、その旨が判定されてステップ１７０９に移行する。
【００７６】
上記変数ＭＦに０を代入することにより、新たに演奏データの取り込みが行われるまで、取り込まれた演奏データは存在しないと判定されることになる。変数ＨＦは、カメラ制御データエリア（図３参照）にストアするカメラ制御データの生成を行う状況か否か判定用の変数であり、代入される１はその状況であることを示している。その状況でなければ０が代入される。
【００７７】
鍵盤４１を対する演奏では、複数の鍵を同時に押鍵している場合がある。例えば左手でコードを発音させる演奏操作を行い、右手でメロディを発音させる演奏操作を行うのであれば、通常、演奏中の大部分、複数の鍵を同時に押鍵している。その左右の手を確実、且つより大きく撮影するためには、鍵盤４１上のそれらの位置に応じて、撮影位置、或いはズームを適切に制御しなければならない。ステップ１７０９以降では、その制御を適切に行うカメラ制御データを生成するうえで必要なデータを抽出するための処理が行われる。
【００７８】
本実施の形態では、同時に押鍵されているべき鍵の音高を示す鍵番号の保持用に配列変数ＮＯＴＥを用意し、その要素のなかで鍵番号を保持させている要素の判定用に配列変数ＯＮを用意している。変数ＣＨは、それら配列変数を構成する要素の指定用として用意している。
【００７９】
先ず、ステップ１７０９では、変数ＣＨに０を代入する。続くステップ１７１０では、読み出したイベントデータが示すイベントがノートオン（押鍵）か否か判定する。そのイベントが押鍵であった場合、判定はＹＥＳとなってステップ１７１１に移行し、そうでない場合には、判定はＮＯとなって図１８に示すステップ１７１６に移行する。
【００８０】
ステップ１７１１では、配列変数ＯＮのなかで変数ＣＦの値により指定される要素ＯＮ（ＣＨ）の値が０か否か判定する。配列変数ＮＯＴＥのなかで変数ＣＦの値により指定される要素ＮＯＴＥ（ＣＨ）に鍵番号が保持されていない場合、要素ＯＮ（ＣＨ）には０を保持させることから、判定はＹＥＳとなり、ステップ１７１５で要素ＮＯＴＥ（ＣＨ）にイベントデータが示す押鍵すべき鍵の鍵番号を代入して保持させ、その次のステップ１７１６で要素ＯＮ（ＣＨ）に１を代入して保持させた後、図１８のステップ１７２２に移行する。一方、そうでない場合には、判定はＮＯとなってステップ１７１２に移行する。
【００８１】
ステップ１７１２では、変数ＣＨの値をインクリメントする。その次に移行するステップ１７１３では、変数ＣＨの値が配列要素ＮＯＴＥの全要素数より大きいか否か判定する。配列変数ＮＯＴＥで要素を指定できる最大数より変数ＣＨの値が大きい場合、つまり配列変数ＮＯＴＥの全要素に鍵番号が保持されている場合、判定はＹＥＳとなって図１８のステップ１７２２に移行し、そうでない場合には、判定はＮＯとなって上記ステップ１７１１に戻る。それにより、鍵番号が保持されていない要素を探し出すか、或いはその要素が存在しないことを確認するまで、ステップ１７１１〜１７１３で形成される処理ループを繰り返し実行する。
【００８２】
上記ステップ１７１０の判定がＮＯとなって移行する図１８のステップ１７１６では、要素ＯＮ（ＣＨ）の値が１か否か判定する。要素ＮＯＴＥ（ＣＨ）に鍵番号が保持されている場合、要素ＯＮ（ＣＨ）の値は１であることから判定はＹＥＳとなってステップ１７１９に移行し、そうでない場合には、判定はＮＯとなってステップ１７１７に移行する。
【００８３】
ステップ１７１７では、変数ＣＨの値をインクリメントする。その次に移行するステップ１７１８では、変数ＣＨの値が配列要素ＮＯＴＥの全要素数より大きいか否か判定する。配列変数ＮＯＴＥで要素を指定できる最大数より変数ＣＨの値が大きい場合（ここではイベントデータが示す離鍵すべき鍵の鍵番号が配列変数ＮＯＴＥの何れの要素にも保持されていない場合を意味する）、判定はＹＥＳとなってステップ１７２２に移行し、そうでない場合には、判定はＮＯとなって上記ステップ１７１６に戻る。それにより、イベントデータが示す鍵番号が保持されている要素を探し出すか、或いはその要素が存在しないことを確認するまで、ステップ１７１６〜１７１８で形成される処理ループを繰り返し実行する。
【００８４】
ステップ１７１９では、要素ＮＯＴＥ（ＣＨ）の鍵番号が、イベントデータが示す鍵番号と等しいか否か判定する。それらが等しくない場合、判定はＮＯとなって上記ステップ１７１７に移行し、そうでない場合には、判定はＹＥＳとなってステップ１７２０に移行する。
【００８５】
ステップ１７２０では、要素ＮＯＴＥ（ＣＨ）に０を代入することでクリアを行う。次のステップ１７２１では、要素ＯＮ（ＣＨ）に０を代入することでそのクリアを行う。その後は、変数ＣＨに０を代入し（ステップ１７２２）、変数ＭＡＸに最低の鍵番号、変数ＭＩＮに最高の鍵番号をそれぞれ代入してから（ステップ１７２３）、ステップ１７２４に移行する。
【００８６】
ステップ１７２４では、要素ＯＮ（ＣＨ）の値が１か否か判定する。要素ＮＯＴＥ（ＣＨ）に鍵番号が保持されている場合、判定はＹＥＳとなってステップ１７２７に移行し、そうでない場合には、判定はＮＯとなってステップ１７２５に移行する。
【００８７】
ステップ１７２５では、変数ＣＨの値をインクリメントする。その次に移行するステップ１７２６では、変数ＣＨの値が配列要素ＮＯＴＥの全要素数より大きいか否か判定する。配列変数ＮＯＴＥで要素を指定できる最大数より変数ＣＨの値が大きい場合（ここでは配列変数ＮＯＴＥの要素に保持されている鍵番号を全て参照した場合を意味する）、判定はＹＥＳとなって図１９のステップ１７３１に移行し、そうでない場合には、判定はＮＯとなって上記ステップ１７２４に戻る。
【００８８】
一方、ステップ１７２７では、要素ＮＯＴＥ（ＣＨ）の鍵番号が、変数ＭＡＸの鍵番号より大きいか否か判定する。前者が後者より大きい場合、判定はＹＥＳとなり、ステップ１７２８で変数ＭＡＸに、要素ＮＯＴＥ（ＣＨ）の鍵番号を代入した後、図１９のステップ１７２９に移行する。そうでない場合には、他のステップの処理を実行することなく、そのステップ１７２９に移行する。
【００８９】
そのステップ１７２９では、要素ＮＯＴＥ（ＣＨ）の鍵番号が、変数ＭＩＮの鍵番号より小さいか否か判定する。前者が後者より小さい場合、判定はＹＥＳとなり、ステップ１７３０で変数ＭＩＮに、要素ＮＯＴＥ（ＣＨ）の鍵番号を代入した後、図１８のステップ１７２５に移行する。そうでない場合には、他のステップの処理を実行することなく、そのステップ１７２５に移行する。
【００９０】
上記ステップ１７２２〜１７３０の処理により、配列変数ＮＯＴＥの要素に保持されている鍵番号を全て参照して、そのなかで鍵番号が最低（最小）の鍵番号が変数ＭＩＮに、最高（最大）の鍵番号が変数ＭＡＸにそれぞれ代入されることになる。
【００９１】
上記ステップ１７２６の判定がＹＥＳとなって移行する図１９のステップ１７３１では、変数ＺＯＯＭに、変数ＭＡＸの値から変数ＭＩＮの値を引いた値を代入する。続くステップ１７３２では、変数ＰＯＳに、変数ＺＯＯＭの値を２で割った値に変数ＭＩＮの値を加算して得られる値（＝ＺＯＯＭ／２＋ＭＩＮ）を代入する。その後は、変数ＨＡＤの値で指定されるアドレスに変数ＰＯＳ、及びＺＯＯＭの値をそれぞれストアし（ステップ１７３３）、変数ＡＤ、ＨＡＤの値をインクリメントしてから（ステップ１７３４）、図１７のステップ１７０４に戻る。
【００９２】
変数ＰＯＳに代入される値は、同時に押鍵される鍵のなかで音高が最低の鍵と最高の鍵の音高差を示している。その値を抽出するのは、演奏を適切に行うためには、それらの鍵を同時に押鍵するようにユーザは手を配置させなければならないからである。変数ＺＯＯＭに代入される値は、それらの鍵の中間となる鍵の位置を示している。本実施の形態では、それらのデータを抽出し、撮影を行うえで発生させるべきイベントを示すイベントデータとして扱い、そのイベントデータが示すイベントを発生させるようにカメラ制御データを生成することにより、左右の手を確実に、且つより大きなズーム（撮影倍率）で撮影できるようにさせている。抽出したデータを撮影用のイベントデータとして扱うことから、演奏データの演奏操作を示すイベントデータは撮影用のイベントデータに変換された形となる。以降、変数ＰＯＳに代入された値は「位置イベントデータ」、変数ＺＯＯＭに代入された値は「ズームイベントデータ」とそれぞれ呼ぶことにする。
【００９３】
次に、図９に示す全体処理内でステップ９０４として実行される平均化処理について、図２０、及び図２１に示すそのフローチャートを参照して詳細に説明する。
上記曲データ変換処理の実行により制御用データエリアに保存したデータから単にカメラ制御データを生成すると、撮影位置、或いはズームを急激に大きく変更させてしまう可能性がある。そのような変更は、画像の再生時に人に違和感を与えてしまう恐れがあるだけでなく、その変更の実現を困難にしてしまう恐れがある。例えば方向を変えて比較的に大きな距離を移動させるような場合、その移動を短時間で完了させるのは非常に困難である。このようなことから、本実施の形態では、急激に大きな変更を行わせないように考慮してカメラ制御データを生成している。
【００９４】
先ず、ステップ２００１では、変数ＨＦの値が１か否か判定する。上記曲データ変換処理を実行して制御用データエリアにデータをストアした場合、変数ＨＦに１が代入されることから、判定はＹＥＳとなってステップ２００２に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００９５】
ステップ２００２では、変数ｔ、ＦＰＯＳ、及びＦＺＯＯＭにそれぞれ０を代入する。次のステップ２００３では、変数ＨＡＤの値で指定されるアドレスからデータを読み出す。その後に実行するステップ２００４では、そのデータの種類を判定する。そのデータがタイムデータであった場合、その旨が判定されてステップ２００５に移行し、そのタイムデータを変数ＴＩＭＥに代入した後、ステップ２０１１に移行する。
【００９６】
撮影を行う周期（最小単位時間）としては、演奏データを構成するタイムデータが示す時間よりも通常、短い時間を設定している。本実施の形態では、その周期を撮影条件の変更を行ううえでの単位時間としている。
そのような時間を単位時間とすると、タイムデータが示す時間を複数の期間に分割し、分割した各期間で行わせるべき内容を設定しなければならない。上記変数ｔ、ＦＰＯＳ、及びＦＺＯＯＭはその設定用として用意した変数である。その設定内容の保存用としては、配列変数ＰＯＳ、ＺＯＯＭを用意している。
【００９７】
ステップ２００３で読み出したデータがイベントデータであった場合、ステップ２００４でその旨が判定されてステップ２００６に移行する。そのステップ２００６では、変数ＤＰＯＳ、及びＤＺＯＯＭに、読み出したイベントデータを構成する位置イベントデータ、及びズームイベントデータをそれぞれ代入する。その代入後は、ステップ２００７で変数Ｓに０を代入してからステップ２００８に移行する。
【００９８】
ステップ２００８では、配列変数ＰＯＳ、及びＺＯＯＭの変数ｔの値で指定される要素ＰＯＳ（ｔ）、ＺＯＯＭ（ｔ）に、それぞれ代入すべき値を算出して代入する。より具体的には、変数ＤＰＯＳの値から変数ＦＰＯＳの値を引いて得られる減算値に変数Ｓの値を乗算し、その乗算結果を変数ＴＩＭＥの値で除算し、その除算結果を変数ＦＰＯＳの値に加算した値（＝ＦＰＯＳ＋（ＤＰＯＳ−ＦＰＯＳ）×Ｓ／ＴＩＭＥ）を算出して要素ＰＯＳ（ｔ）に代入する。他方の要素ＺＯＯＭ（ｔ）には、変数ＤＺＯＯＭの値から変数ＦＺＯＯＭの値を引いて得られる減算値に変数Ｓの値を乗算し、その乗算結果を変数ＴＩＭＥの値で除算した値を変数ＦＺＯＯＭの値に加算した値（＝ＦＺＯＯＭ＋（ＤＺＯＯＭ−ＦＺＯＯＭ）×Ｓ／ＴＩＭＥ）を算出して要素ＺＯＯＭ（ｔ）に代入する。
【００９９】
上記変数Ｓの値は、最小単位時間を単位として時間を表現している。変数ＦＰＯＳは初期値として０が代入されるが、それ以降は次のタイムデータを読み出す直前に、配列変数ＰＯＳの要素に最後に代入した値を代入する。それにより、タイムデータを最小単位時間で分割し、各最小単位時間で設定すべき値を直線補間により求めてその要素に代入するようにしている。これは配列変数ＺＯＯＭの要素においても同様である。
【０１００】
ステップ２００８に続くステップ２００９では、変数Ｓ、ｔの各値をインクリメントする。次に実行するステップ２０１０では、変数Ｓの値が変数ＴＩＭＥの値より大きいか否か判定する。変数ＴＩＭＥの値が示す時間内を対象にして、直線補間により求めた値の配列変数ＰＯＳ、ＺＯＯＭの各要素への代入が終了した場合、変数Ｓの値は変数ＴＩＭＥの値より大きくなることから判定はＹＥＳとなり、変数ＨＡＤの値をインクリメントし、変数ＦＰＯＳ、ＦＺＯＯＭに、それぞれ変数ｔの値から１を引いた値で指定される要素ＰＯＳ（ｔ−１）、ＺＯＯＭ（ｔ−１）の値を代入してから（ステップ２０１１）、上記ステップ２００３に戻る。そうでない場合には、判定はＮＯとなって上記ステップ２００８に戻る。
【０１０１】
本実施の形態では、急激に大きな変更を行わせないようにするために、配列変数ＰＯＳ、ＺＯＯＭの各要素に代入した、複数の連続する値をグループと仮想的に見なし、そのグループとする範囲を順次、移動させながら、そのグループを構成する値を全て考慮する形でカメラ制御データを構成する位置イベントデータ、及びズームイベントデータを生成している。
【０１０２】
ステップ２００３で読み出したデータが最後のデータであるＥＮＤデータであった場合、ステップ２００４でその旨が判定されてステップ２０１２に移行する。そのステップ２０１２以降では、上述したようにしてカメラ制御データを生成するための処理が行われる。
【０１０３】
先ず、ステップ２０１２では、変数ｔに０を代入する。次のステップ２０１３では、変数ΣＰＯＳ、及びΣＺＯＯＭにそれぞれ０を代入する。その代入後に実行するステップ２０１４では、変数ｎに４、変数ｘ、ｍにそれぞれ０を代入する。ステップ２０１５にはその後に移行する。
【０１０４】
上記変数ΣＰＯＳ、ΣＺＯＯＭ、及びｘは、イベントデータとする値の算出用として用意した変数である。変数ｎに代入した４は、グループを構成する値の数として実際に設定した値である。変数ｍは、グループ分けを行うために用意した変数である。
【０１０５】
ステップ２０１５では、変数ｔの値から変数ｎの値を減算し、その減算結果に変数ｍの値を加算して算出される値（＝ｔ−ｎ＋ｍ）が０以上か否か判定する。その算出値が０以上であった場合、判定はＹＥＳとなってステップ２０１６に移行し、そうでない場合には、判定はＮＯとなってステップ２０１９に移行する。そのＹＥＳの判定は、先頭からグループ分の値が存在するのを確認するまでの間、継続する。
【０１０６】
ステップ２０１６では、変数ΣＰＯＳのそれまでの値に要素ＰＯＳ（ｔ−ｎ＋ｍ）の値を加算し、その加算結果を変数ΣＰＯＳに代入する。続くステップ２０１７では、同様に、変数ΣＺＯＯＭのそれまでの値に要素ＺＯＯＭ（ｔ−ｎ＋ｍ）の値を加算し、その加算結果を変数ΣＺＯＯＭに代入する。その後は、ステップ２０１８で変数ｘの値をインクリメントし、ステップ２０１９で変数ｍの値をインクリメントした後、図２１のステップ２０２０に移行する。
【０１０７】
そのステップ２０２０では、変数ｍの値が変数ｎの値より大きいか否か判定する。変数ｍの値が変数ｎの値より大きい場合、判定はＹＥＳとなってステップ２０２１に移行し、そうでない場合には、判定はＮＯとなって図２０のステップ２０１５に戻る。
【０１０８】
ステップ２０２０でのＹＥＳの判定は、変数ΣＰＯＳ、ΣＺＯＯＭに、それぞれ変数ｎの値（グループ）分の値の累算値が代入されたことを意味する。本実施の形態では、その累算値から平均値を求めることにより、最小単位時間で変更する量を平滑化して、急激に大きな変更を行うようなことを回避させている。
【０１０９】
ステップ２０２１では、配列変数ＨＰＯＳの変数ｔの値で指定される要素ＨＰＯＳ（ｔ）に、変数ΣＰＯＳの値を変数ｘで割った値を代入する。次に実行するステップ２０２２では、配列変数ＨＺＯＯＭの変数ｔの値で指定される要素ＨＺＯＯＭ（ｔ）に、変数ΣＺＯＯＭの値を変数ｘで割った値を代入する。その後はステップ２０２３で変数ｔの値をインクリメントしてからステップ２０２４に移行する。
【０１１０】
ステップ２０２４では、変数ｔの値が、配列変数ＨＰＯＳ、ＨＺＯＯＭの要素に値を代入する最後の要素を指定する値より大きいか否か判定する。配列変数ＨＰＯＳ、ＨＺＯＯＭを構成する各要素への値の代入が完了した場合、変数ｔの値は最後の要素を指定する値より大きくなることから判定はＹＥＳとなってステップ２０２５に移行し、そうでない場合には、判定はＮＯとなって図２０のステップ２０１３に戻る。
【０１１１】
ステップ２０２５以降では、カメラ制御データエリア（図３参照）にカメラ制御データをストアするための処理が行われる。
先ず、ステップ２０２５では、変数Ｔに０を代入し、変数Δｔに所定値αを代入する。その所定値αは、撮影スイッチ１６への操作により撮影開始が指示されてから実際に撮影を開始するまでの時間に対応する値である。
【０１１２】
ステップ２０２５に続くステップ２０２６では、変数ＣＡＤに、カメラ制御データエリア内の先頭アドレスを指定する値を代入する。その代入後はステップ２０２７に移行して、変数ＣＡＤの値で指定されるアドレスに変数Δｔの値をストアする。それ以降は、ステップ２０２８では変数ＣＡＤの値をインクリメントし、ステップ２０２９では変数ＣＡＤの値で指定されるアドレスに要素ＨＰＯＳ（Ｔ）、ＨＺＯＯＭ（Ｔ）をイベントデータとしてストアし、ステップ２０３０では変数Ｔの値をインクリメントするとともに、変数Δｔに１を代入してから変数２０３１に移行する。
【０１１３】
ステップ２０３１では、変数Ｔの値が、配列変数ＨＰＯＳの要素のなかで最後に値を代入した要素を指定する値より大きいか否か判定する。変数Ｔの値がその値よりも大きい場合、判定はＹＥＳとなり、次にステップ２０３２で変数ＣＡＤの値をインクリメントするとともに、変数ＨＦに０を代入し、その次にステップ２０３３で変数ＣＡＤの値により指定されるアドレスにエンドデータをストアした後、一連の処理を終了する。そうでない場合には、判定はＮＯとなって上記ステップ２０２７に戻る。
【０１１４】
図２２は、図９に示す全体処理内でステップ９０５として実行される撮影処理のフローチャートである。次に図２２を参照して、その撮影処理について詳細に説明する。
先ず、ステップ２２０１では、変数ＣＦの値が１か否か判定する。撮影中の場合、それには１が代入されていることから判定はＹＥＳとなってステップ２２０２に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１１５】
ステップ２２０２では、最小単位時間が経過したか否か判定する。その時間を計時するために実行するタイマインタラプト処理から引数として渡された変数の値がその経過を示していなかった場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ２２０３に移行する。
【０１１６】
ステップ２２０３では、カメラコントローラ２０５を介して撮影装置２０のカメラ部２２に撮影を指示し、それによってカメラ部２２が送信することでコントローラ２０５が受信する画像データを、変数ＧＡＤの値で指定されるアドレスエリアにストアする。その後は、ステップ２２０４で変数ＧＡＤの値をインクリメントし、次にステップ２２０５で変数Ｔの値をデクリメントしてからステップ２２０６に移行する。
【０１１７】
ステップ２２０６では、変数Ｔの値が０か否か判定する。その値が０であった場合、判定はＹＥＳとなり、ステップ２２０７で変数ＣＡＤの値をインクリメントし、次のステップ２２０８において、カメラ制御データエリア内で変数ＣＡＤの値により指定されるアドレスからデータを読み出してからステップ２２０９に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１１８】
ステップ２２０９では、読み出したデータの種類を判定する。そのデータがタイムデータであった場合、その旨が判定されてステップ２２１０に移行し、読み出したデータを変数Ｔに代入した後、一連の処理を終了する。
ステップ２２０８で読み出したデータがＥＮＤデータであった場合には、その旨が判定されてステップそ２２１１に移行する。そのステップ２２１１では、撮影の終了により変数ＣＦに０を代入する。その後は、ステップ２２１２で撮影装置２０のカメラ部２２にカメラコントローラ２０５を介してオフを指示し、ステップ２２１３でタイマインタラプト処理の実行を禁止し、ステップ２２１４で変数ＧＡＤの値をインクリメントし、ステップ２２１５において、撮像エリア（図４参照）内で変数ＧＡＤの値により指定されるアドレスにＥＮＤデータをストアしてから、一連の処理を終了する。
【０１１９】
ステップ２２０８で読み出したデータがイベントデータであった場合には、その旨が判定されてステップ２２１６に移行する。そのステップ２２１６では、例えば読み出したイベントデータを構成する位置イベントデータ（図中「位置データＰＯＳ」と表記）を用いて撮影装置２０の駆動部２１に出力するデータを生成し、駆動コントローラ２０４を介して、生成したデータをその駆動部２１に送信することにより、その位置イベントデータに応じて撮影装置２０の位置を移動させる。
【０１２０】
ステップ２２１６に続くステップ２２１７では、例えば読み出したイベントデータを構成するズームイベントデータ（図中「データデータＺＯＯＭ」と表記）を用いて撮影装置２０のカメラ部２２に出力するデータを生成し、カメラコントローラ２０５を介して、生成したデータをそのカメラ部２２に送信することにより、そのズームイベントデータに応じてズームを変更させる。その後は上記ステップ２２０７に移行する。
【０１２１】
上記ステップ２２１６、及び２２１７の処理を実行することにより、撮影装置２０は、演奏を行う手をより大きく撮影するうえで適切な位置に移動され、より大きく撮影するようにズームが適切に調整されることになる。このため、撮影した画像を表示装置３０に表示させた場合には、行われた演奏操作をより容易に把握できることとなる。
【０１２２】
図２３は、図９に示す全体処理内でステップ９０６として実行される再生処理のフローチャートである。最後に図２３を参照して、その再生処理について詳細に説明する。
先ず、ステップ２３０１では、変数ＳＴＦの値が１か否か判定する。再生中の場合、それには１が代入されていることから判定はＹＥＳとなってステップ２３０２に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１２３】
ステップ２３０２では、最小単位時間が経過したか否か判定する。タイマインタラプト処理から引数として渡された変数の値がその時間の経過を示していなかった場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ２３０３に移行する。
【０１２４】
ステップ２３０３では、変数ＧＡＤの値をインクリメントする。続くステップ２３０４では、撮像エリア内の変数ＧＡＤの値で指定されるアドレスから画像データの読み出しを行う。その後に移行するステップ２３０５では、読み出したデータがエンドデータでないか否か判定する。読み出したデータがＥＮＤデータでなかった場合、判定はＹＥＳとなってステップ２３０６に移行し、読み出した画像データを、ディスプレイコントローラ２０８を介して表示装置３０に送信させることで表示させてから一連の処理を終了する。そうでない場合には、判定はＮＯとなり、ステップ２３０７で変数ＳＴＦに０を代入し、次のステップ２３０８でタイマインタラプト処理の実行を禁止してから一連の処理を終了する。
【０１２５】
なお、本実施の形態では、ユーザが２つの手を使って演奏を行うことを前提としているが、必ずしもそのようなことを前提としなくとも良い。例えばメロディのみ、或いはコードのみの演奏を行うことをユーザが望んでいることもありうることから、ユーザに所望のパートを選択させて、そのパートに合ったカメラ制御データを生成するようにしても良い。
【０１２６】
撮影条件としては、撮影位置、及びズーム（撮影倍率）の両方を自動的に変更させるようにしているが、それらのうちの一方のみを対象にその変更を行うようにしても良い。例えばユーザが片手だけの演奏を行う場合であれば、その手の予想される動きに応じて撮影位置を移動させても良く、その撮影位置を固定にし、その予想される動きに応じてズームを調整させるようにしても良い。
【０１２７】
撮影位置の移動については、撮影装置２０を移動させるための機構を別に用意し、その機構を用いて撮影装置２０の撮影位置を移動させるようにしても良い。撮影位置を移動させる代わりに、撮影方向を変化させるようにしても良い。演奏データについては、演奏者が行う演奏の内容を特定できれば良いことから、楽譜データなどであっても良い。
【０１２８】
本実施の形態は、演奏撮影装置、及びシーケンス制御データ生成装置を一つの装置１０に搭載した場合のものであるが、それらは別の装置として実現させても良い。そのようにした場合には、生成したシーケンス制御データは記録媒体、或いは通信ネットワークを介してやりとりさせれば良い。カメラ等の撮影装置は演奏撮影装置に搭載させても良い。
【０１２９】
上述したような演奏撮影装置、或いはシーケンス制御データ生成装置の動作を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【０１３０】
【発明の効果】
以上、説明したように本発明は、演奏者が行う演奏の内容を表す演奏データを取得し、それを解析して、撮影装置に撮影させる際の撮影条件を決定し、その決定した撮影条件で楽器を演奏中の演奏者を撮影装置に撮影させるためのシーケンス制御データを生成する。
【０１３１】
演奏データを解析することにより、演奏を行う演奏者の動きを高精度に予想することができるようになる。このため、実際の動きに合った撮影条件で撮影を行えるようになる。それにより、行った演奏操作を撮影された画像から判りやすいように撮影することができることとなる。
【図面の簡単な説明】
【図１】本実施の形態による演奏撮影装置、及びシーケンス制御データ生成装置を用いて構築された演奏撮影システムの構成を示す図である。
【図２】本実施の形態による演奏撮影装置、及びシーケンス制御データ生成装置を搭載した演奏記録・再生装置の回路構成を示す図である。
【図３】ＲＡＭに格納されるデータを説明する図である（その１）。
【図４】ＲＡＭに格納されるデータを説明する図である（その２）。
【図５】ＲＡＭに確保された位置データエリアに格納される位置データの内容を説明する図である。
【図６】実際に撮影された鍵盤に応じて行われる調整内容を説明する図である（その１）。
【図７】実際に撮影された鍵盤に応じて行われる調整内容を説明する図である（その２）。
【図８】撮影装置で実際に撮影される画像を説明する図である。
【図９】全体処理のフローチャートである。
【図１０】スイッチ処理のフローチャートである。
【図１１】ＰＯＳスイッチ処理のフローチャートである。
【図１２】カーソルスイッチ処理のフローチャートである。
【図１３】カーソルスイッチ処理のフローチャートである（続き）。
【図１４】データ取込スイッチ処理のフローチャートである。
【図１５】撮影スイッチ処理のフローチャートである。
【図１６】再生スイッチ処理のフローチャートである。
【図１７】曲データ変換処理のフローチャートである。
【図１８】曲データ変換処理のフローチャートである（続き１）。
【図１９】曲データ変換処理のフローチャートである（続き２）。
【図２０】平均化処理のフローチャートである。
【図２１】平均化処理のフローチャートである（続き）。
【図２２】撮影処理のフローチャートである。
【図２３】再生処理のフローチャートである。
【符号の説明】
１０    演奏撮影・再生装置
１１    カーソルスイッチ
１２    ＰＯＳスイッチ
１３    ＺＯＯＭスイッチ
１４    データ取込スイッチ
１５    再生スイッチ
１６    撮影スイッチ
２０    撮影装置
２１    駆動部
２２    カメラ部
３０    表示装置
４０    電子楽器
４１    鍵盤
５０    ガイド部材
２０１    ＣＰＵ
２０２    ＲＯＭ
２０３    ＲＡＭ
２０４    駆動コントローラ
２０５    カメラコントローラ
２０６    スイッチ部
２０７    ＭＩＤＩ入出力部
２０８    ディスプレイコントローラ
【図１】
2005026927.tif 000003
【図２】
2005026927.tif 000004
【図３】
2005026927.tif 000005
【図４】
2005026927.tif 000006
【図５】
2005026927.tif 000007
【図６】
2005026927.tif 000008
【図７】
2005026927.tif 000009
【図８】
2005026927.tif 000010
【図９】
2005026927.tif 000011
【図１０】
2005026927.tif 000012
【図１１】
2005026927.tif 000013
【図１２】
2005026927.tif 000014
【図１３】
2005026927.tif 000015
【図１４】
2005026927.tif 000016
【図１５】
2005026927.tif 000017
【図１６】
2005026927.tif 000018
【図１７】
2005026927.tif 000019
【図１８】
2005026927.tif 000020
【図１９】
2005026927.tif 000021
【図２０】
2005026927.tif 000022
【図２１】
2005026927.tif 000023
【図２２】
2005026927.tif 000024
【図２３】
2005026927.tif 000025