以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係る電子音楽システムを適用した電子楽器100の概略構成を示すブロック図である。
同図に示すように、電子楽器100は、音高情報を含む演奏情報を入力するための鍵盤を含む演奏操作子1と、各種情報を入力するための複数のスイッチやホイール、ジョイスティックを含む設定操作子2と、演奏操作子1の操作状態を検出する検出回路3と、設定操作子2の操作状態を検出する検出回路4と、装置全体の制御を司るCPU5と、該CPU5が実行する制御プログラムや各種テーブルデータ等を記憶するROM6と、演奏情報、各種入力情報および演算結果等を一時的に記憶するRAM7と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ8と、各種情報等を表示する小型の液晶ディスプレイ(LCD)9と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する外部記憶装置10と、USBホスト・コントローラ11と、USBターゲット・コントローラ12と、外部からのMIDI(musical instrument digital interface)メッセージを入力したり、MIDIメッセージを外部に出力したりするMIDIインターフェース(I/F)13と、通信ネットワーク510を介して、たとえばサーバコンピュータ(以下、「サーバ」と略して言う)500とデータの送受信を行う通信インターフェース(I/F)14と、演奏操作子1から入力された演奏情報や、前記外部記憶装置10に記憶されたいずれかの楽曲データを再生して得られた演奏情報等を楽音信号に変換する音源回路15と、該音源回路15からの楽音信号に各種効果を付与するための効果回路16と、該効果回路16からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム17とにより構成されている。
上記構成要素3〜16は、バス18を介して相互に接続され、CPU5にはタイマ8が接続され、USBホスト・コントローラ11には撮像装置300が接続され、USBターゲット・コントローラ12にはPC200が接続され、MIDII/F13には外部MIDI機器400が接続され、通信I/F14には通信ネットワーク510が接続され、音源回路15には効果回路16が接続され、効果回路16にはサウンドシステム17が接続されている。ここで、通信I/F14および通信ネットワーク510は、有線方式のものに限らず、無線方式のものであってもよい。また、両方式のものを備えていてもよい。
小型LCD9のブロックは、図1では破線で描かれている。これは、小型LCD9は電子楽器100の必須の構成ではないことを意味する。ただし、設定操作子2のオン/オフ状態を表示可能な、たとえば発光ダイオード(LED)等の簡易な表示器(図示せず)は備えていた方が好ましい。同様に、通信I/F14も電子楽器100の必須の構成ではない。
外部記憶装置10としては、たとえば、フレキシブルディスクドライブ(FDD)、ハードディスクドライブ(HDD)、CD−ROMドライブおよび光磁気ディスク(MO)ドライブ等を挙げることができる。そして、外部記憶装置10には、前述のように、CPU5が実行する制御プログラムも記憶でき、ROM6に制御プログラムが記憶されていない場合には、この外部記憶装置10に制御プログラムを記憶させておき、それをRAM7に読み込むことにより、ROM6に制御プログラムを記憶している場合と同様の動作をCPU5にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、前記各楽曲データは、ファイル形式で外部記憶装置10に記憶される。
通信I/F14(電子楽器100に備わっていれば)は、上述のように、たとえばLAN(local area network)やインターネット、電話回線等の通信ネットワーク510に接続されており、該通信ネットワーク510を介して、サーバ500に接続される。外部記憶装置10に上記各プログラムや各種パラメータが記憶されていない場合には、通信I/F14は、サーバ500からプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子楽器100は、通信I/F14および通信ネットワーク510を介してサーバ500へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバ500は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク510を介して電子楽器100へと配信し、電子楽器100が通信I/F14を介して、これらプログラムやパラメータを受信して外部記憶装置10に蓄積することにより、ダウンロードが完了する。
撮像装置300は、たとえばUSBビデオ・クラス(USB video class)に対応したWebカメラやデジタルビデオカメラなどのカメラであり、撮影して得られた動画像データをMotion-JPEG、DV(digital video)、MPEG-2またはMPEG-4などの圧縮データに変換して、あるいは非圧縮データのまま出力する。ROM6には、USBビデオ・クラス・ドライバが組み込まれており(もちろん、ホスト・コントローラ・ドライバやターゲット・コントローラ・ドライバなどの他のドライバも組み込まれている)、USBホスト・コントローラ11は、撮像装置300が出力した上記各種形式の動画像データをUSBの通信プロトコルに従って受信する。なお、USBホスト・コントローラ11としては、上記各種形式すべての動画像データを受信可能なものに限らず、そのうちの少なくとも1つの形式の動画像データを受信可能なものであればよい。また、動画像データの通信プロトコルは、USBビデオ・クラスに規定されているものに限られる訳ではない。USBビデオ・クラスに規定されている通信プロトコル以外の通信プロトコルを採用した場合には、この通信プロトコルに従って通信する動画像データは上記各種形式に限られない。本実施の形態では説明の都合上、動画像データは、撮像装置300内でMotion-JPEG形式のデータに変換されてからUSBホスト・コントローラ11に供給されるものとする。また本実施の形態では、撮像装置300として、USBホスト・コントローラ11を介して外部接続したものを採用したが、これに限らず、電子楽器100内に組み込んだものを採用してもよい。
なお、電子楽器100は、上述の構成から分かるように、電子鍵盤楽器上に構築されたものであるが、鍵盤楽器の実施形態に限らず、弦楽器タイプ、管楽器タイプ、打楽器タイプ等の他の実施形態でもよい。また、楽器の実施形態に限らず、動画像データを記録可能な携帯音楽端末上に本発明を構築するようにしてもよい。
PC200のハードウェアは、本実施の形態では、汎用PCと同様に構成されている。より具体的には、PC200は、電子楽器100の上記構成から、演奏操作子1、設定操作子2、検出回路3,4、小型LCD9、USBターゲット・コントローラ12、MIDII/F13、音源回路15、効果回路16およびサウンドシステム17を除き、その代わりに、文字数字入力用キーボード、マウスおよび大型ディスプレイを加えたものによって構成されている。なお、汎用PCは通常、通信ネットワークを介して外部のサーバと接続する機能を備えているので、PC200も、電子楽器100とは異なり、通信I/Fを必須の構成要素としている。
図2は、電子楽器100の機能構成を示すブロック図である。
同図において、演奏情報供給部21は、演奏操作子21aおよび自動演奏部21bによって構成され、演奏情報(本実施の形態では、MIDIイベント)を楽音生成部22および動画・オーディオ記録部25に供給する。
演奏操作子21aは、主として前記演奏操作子1および検出回路3に相当し、ユーザによる演奏操作に応じた演奏情報を生成して出力する。
自動演奏部21bは、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。自動演奏部21bは、RAM7の一部領域に設けた自動演奏データ記憶領域(図示せず)を備え、この自動演奏データ記憶領域に記憶した自動演奏データを用いて自動演奏を行う。自動演奏データは、ファイル記憶部26(前記外部記憶装置10に相当する)に複数種類記憶されており、自動演奏データ記憶領域には、その中からユーザによって選択された1つが記憶される。ここで、自動演奏データは、ユーザが演奏操作子1を用いてある楽曲を演奏する際のバック演奏を行わせるためのものであり、具体的には、1曲の楽曲を表す楽曲データ(ソングデータ)や、伴奏スタイルデータ、コード進行データなどである。自動演奏データのフォーマットとしては、どのようなものを採用しても構わないが、本実施の形態では、通常の電子楽器でよく用いられているSMF(standard MIDI file)形式を採用することにする。
楽音生成部22は、主として前記音源回路15および効果回路16に相当し、ユーザによって設定された楽音生成環境(音色、音量および効果など)で、演奏情報供給部21から供給された演奏情報に基づいて楽音信号(オーディオデータ)を生成し、適宜効果を付与した後、動画・オーディオ記録部25に出力する。
撮像部23は、主として前記撮像装置300、USBホスト・コントローラ11およびCPU5に相当し、撮像装置300を用いて撮影され、USBホスト・コントローラ11を介して電子楽器100内に供給された動画像データ(画像データストリーム)を、CPU5を介して第1レート・品質変換部24、第2レート・品質変換部27および第3レート・品質変換部31に供給する。
第1レート・品質変換部24は、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。第1レート・品質変換部24は、撮像部23から供給される動画像データのレートおよび品質を第1レートおよび品質に変換し、変換後の動画像データを動画・オーディオ記録部25に供給する。ここで、レートとは、1秒間に供給される(静止)画像データのフレーム数を言い、品質とは、解像度を言う。なお、品質は、圧縮率に応じた品質でもよいが、本実施の形態では、解像度としている。また、第1レート・品質変換部24は、本実施の形態では、動画像データのレートおよび品質のいずれも変換するようにしたが、これに限らず、動画像データのレートまたは品質のいずれかを変換するようにしてもよい。さらに、変換の程度は、固定であっても、可変であってもよい。可変の場合には、ユーザが変換の程度を選択できるようにしてもよい。なお「品質」は、表示画像の見栄えの善し悪しの意味でも使われ、その場合には、「品質」は「解像度」だけを意味しない。これらの事情は、第2レート・品質変換部27および第3レート・品質変換部31についても同様である。
第1レート・品質変換部24は、撮像部23からの動画像データのレートおよび品質を、それより若干低い第1レートおよび品質に変換する。具体的には、撮像部23から、たとえば30フレーム/秒で1280×1024ピクセルの動画像データが供給されているとすると、第1レート・品質変換部24は、この動画像データを、たとえば20フレーム/秒で800×600ピクセルの動画像データに変換する。Motion-JPEG形式の動画像データは、フレーム内圧縮されているので、単にコマ落としする(間引く)だけで簡単に、目的のレートに変換することができる。動画像データとして、圧縮されていないものが供給された場合にも、Motion-JPEG形式の動画像データと同様に、コマ落としによってレート変換することができるが、MPEGなどのフレーム間圧縮されているものが供給された場合には、圧縮されていないフレーム間に存在する、すべての圧縮されているフレームをコマ落としすることで、レート変換しなければならない。
このように、第1レート・品質変換部24によって、撮像部23からの動画像データのレートおよび品質を落とすようにしたのは、動画像データのデータ容量を低減させることで、それを記憶する外部記憶装置10として、記憶容量の低い、つまり安価なものを採用したいからである。したがって、このような制約のない場合には、第1レート・品質変換部24を省略し、撮像部23からの動画像データをそのまま動画・オーディオ記録部25に供給するようにすればよい。
第2レート・品質変換部27も、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。第2レート・品質変換部27は、撮像部23から供給される動画像データのレートおよび品質を第2レートおよび品質に変換し、変換後の動画像データを画像ファイル生成部29に供給する。画像ファイル生成部29も、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。画像ファイル生成部29は、第2レート・品質変換部27から1フレーム分の画像データが出力されると、その1フレーム分の画像データからなる一時画像ファイルを生成して、ファイル記録部26に記憶させる。ここで、第2レートおよび品質のうち、第2レートは、第1レートよりかなり低く、第2品質は、第1品質より若干低く設定されている。具体的には、撮像部23から、たとえば30フレーム/秒で1280×1024ピクセルの動画像データが供給されているとすると、第2レート・品質変換部27は、この動画像データを、たとえば5フレーム/秒で640×480ピクセルの動画像データに変換する。このように第2レートをかなり低く設定したのは、第2レート・品質変換部27から出力される画像データ、つまり、画像ファイル生成部29が一時画像ファイルを生成する基となる画像データを、撮像装置300の位置決めなどの、画像の表示品質が問われない用途での使用に限ったからである。さらに、画像ファイル生成部29によって生成された一時画像ファイルは、後述するように、出力部28を介して前記PC200に供給され、PC200の大型ディスプレイ上に表示されるので、一時画像ファイルは、USBターゲット・コントローラ12を介してPC200に送信される。電子楽器100は、本実施の形態では、廉価なものを想定しているために、CPU5も安価な、演算能力の低いものを用いなければならず、その結果、USBターゲット・コントローラ12の通信速度が低くなる。したがって、これを介して送信される一時画像ファイルのデータ容量も低減させる必要がある。
第3レート・品質変換部31も、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。第3レート・品質変換部31は、撮像部23から供給される動画像データのレートおよび品質を第3レートおよび品質に変換し、変換後の動画像データを表示部32に供給する。表示部32は、主として前記小型LCD9に相当し、変換後の動画像データを表示する。ここで、第3レートおよび品質のうち、第3レートは、前記第1レートより若干低く、第3品質は、前記第2品質よりさらに低く、たとえば160×120ピクセルに設定されている。このように、第3レートを第1レートより若干低く(したがって、第2レートより高く)設定したのは、動画像データをできる限り滑らかに表示させたい(第2レートでは、滑らかに表示されない)からであり、第3品質を第2品質よりさらに低く設定したのは、表示部32の解像度がPC200の大型ディスプレイのそれよりも低いからである。なお第3レート・品質変換部31には、映像再生部30が出力した動画像データも供給され、この動画像データも、第3レート・品質変換部31によってそのレートおよび品質が変換された後、表示部32によって表示される。
出力部28は、主としてCPU5およびUSBターゲット・コントローラ12に相当し、ファイル記録部26に記憶された一時画像ファイルをUSBの通信プロトコルに従って、USBターゲット・コントローラ12に接続されているPC200に出力する。ここで、ファイル記録部26からの一時画像ファイルの読み出しは、本実施の形態では、前記ターゲット・コントローラ・ドライバの上位層に組み込まれたマスストレージ・ファンクション・ドライバによって行われる。具体的には、マスストレージ・ファンクション・ドライバは、PC200から送信されてきた一時画像ファイルの取得要求に応じて、ファイル記録部26内の一時画像ファイルを、内蔵ストレージ・ドライバ(内蔵ストレージ(本実施の形態では、外部記憶装置10)に対するデータの読み出し/書き込みを制御するために、ROM6内に組み込まれたドライバ)を介して読み出し、ターゲット・コントローラ・ドライバを介してUSBターゲット・コントローラ12に設定する。これに応じてUSBターゲット・コントローラ12は、設定された一時画像ファイルをPC200に送信する。PC200は、送信されてきた一時画像ファイルを自身の外部記憶装置に記憶させたり、自身の大型ディスプレイに供給したりする。なおPC200には、マスストレージ・クラス・ドライバがインストールされ、マスストレージ・クラス・ドライバは、ターゲット機器(本実施の形態では、電子楽器100)(の内蔵ストレージ)に記憶されている各種ファイルの取得要求を当該ターゲット機器に送信し、これに応じて当該ターゲット機器が送信してきた各種ファイルを受信する処理などを行う。
映像再生部30は、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。映像再生部30は、ファイル記憶部26に記憶された動画ファイル(図3参照)を再生することで、動画像データを生成して出力する。
なお小型LCD9は、前述のように、電子楽器100に備えられないことがあり、この場合には、表示部32、第3レート・品質変換部31および映像再生部30も、電子楽器100には備えられない。このことを示すために、表示部32、第3レート・品質変換部31および映像再生部30の各ブロックは破線で描かれている。
動画・オーディオ記録部25は、主としてCPU5およびRAM7に相当し、CPU5が所定の制御プログラムを実行することで実現される。動画・オーディオ記録部25は、演奏情報供給部21から供給されたMIDIイベントをSMF形式で記録し、楽音生成部22から供給された楽音信号(オーディオデータ)を時間の経過に従って記録し、第1レート・品質変換部24から供給された動画像データを時間の経過に従って記録する。ここで、オーディオデータの記録フォーマットは、どのようなものを採用してもよく、非圧縮のものでも、圧縮したものでもよい。また、動画像データを記録する際のデータフォーマットも、どのようなものを採用してもよいので、第1レート・品質変換部24から供給される動画像データのフォーマットと同じフォーマットで記録してもよいし、他のフォーマットに変換した後記録するようにしてもよい。
動画・オーディオ記録部25は、図3に示すように、記録された動画像データ、オーディオデータおよびSMF形式のMIDIデータをそれぞれ別のチャンクデータとして、1つのファイル内に収めた動画ファイルを作成し、ファイル記憶部26に供給する。なお、動画ファイルのデータ構造は、これに限られず、複数種類のデータのそれぞれについて個別にファイルを作成し、その個々のファイルを関連付けて、同時に再生可能に構成してもよい。
ファイル記憶部26は、動画・オーディオ記録部25から供給された動画ファイルを記憶する。なお、ファイル記憶部26には、この動画ファイルとは別に、前述のように、複数種類の自動演奏データや一時画像ファイルも記憶される。なお、記憶された動画ファイルは、前記USBターゲット・コントローラ12あるいは着脱可能な記憶媒体経由で外部の装置に供給可能であり、たとえば動画投稿サイトのサーバや、ブログサイトのサーバなどにアップロードすることができる。
以上のように構成された電子楽器100が実行する制御処理を、まず図1および図2を参照してその概要を説明し、次に図4〜図9を参照して詳細に説明する。
電子楽器100には、USBホスト・コントローラ11を介して撮像装置300が外部接続されている。ユーザが、撮像装置300の電源をオンした後、その撮像装置300を用いて、自身の演奏風景などの演奏に関する情景を撮影すると、撮像部23から電子楽器100内に動画像データ(画像データストリーム)が供給される。その画像データストリームのレートおよび品質は、第1レート・品質変換部24によって第1レートおよび品質に変換された後、動画・オーディオ記録部25に供給されるとともに、第2レート・品質変換部27によって第2レートおよび品質に変換された後、画像ファイル生成部29に供給される。ここで、第2レートおよび品質のうち、第2レートは、第1レートと比較して、かなり低く設定されている。
画像ファイル生成部29は、第2レート・品質変換部27から1フレーム分の画像データが供給されると、その1フレーム分の画像データからなる一時画像ファイルを生成して、ファイル記録部26に記憶させる。
電子楽器100には、USBターゲット・コントローラ12を介してPC200が外部接続され、PC200は、電子楽器100のファイル記録部26に新たな一時画像ファイルが記憶されたかどうかを常時監視する。ファイル記録部26に新たな一時画像ファイルが記憶されると、PC200は、その一時画像ファイルの取得要求をUSBターゲット・コントローラ12に送信する。これに応じて電子楽器100は、取得要求された一時画像ファイルをファイル記録部26から読み出し、出力部28を介してPC200に送信する。PC200は、受信した一時画像ファイルを自身の大型ディスプレイ上に表示する。大型ディスプレイ上に表示された画像は、動画像ではあるものの、レートが低く設定されているため、滑らかに動かない。しかしこの表示品質でも、ユーザは、撮像装置300による現在の撮影状況を十分確認できるので、その画面を見ながら、撮像装置300の設置位置や撮影設定(レンズの向き、フォーカス、ズーム倍率、各種効果などの設定)を自分の好み通りに決定することができる。
撮像装置300の設置位置や撮影設定が自分の好み通りに決定されると、ユーザは、電子楽器100に対して自動演奏の開始を指示する。この指示は、たとえば、ユーザが前記設定操作子2に含まれる自動演奏のスタート/ストップスイッチ(図示せず)を押下することによって行う。自動演奏の開始が指示されると、動画・オーディオ記録部25には、演奏情報供給部21から演奏情報(MIDIイベント)がそのまま供給されるとともに、楽音生成部22から当該演奏情報に基づいて生成された楽音信号(オーディオデータ)も供給される。動画・オーディオ記録部25は、供給された画像データストリーム、オーディオデータおよびMIDIイベントを時間の経過に従って同時に記録して行く。このように本実施の形態では、自動演奏の開始の指示は、録画、つまり画像データストリーム、オーディオデータおよびMIDIイベントの記録の指示も兼ねるようにしたが、もちろん、各指示を別々に行うようにしてもよい。
さらに、撮像部23から供給された画像データストリームは、第3レート・品質変換部31によって第3レートおよび品質に変換された後、表示部32に供給される。ここで、第3レートおよび品質のうち、第3レートは、第2レートと比較して、かなり高く設定される一方、第3品質は、第2品質と比較して、かなり低く設定されている。これは、電子楽器100全体のサイズや製造コストを低減させるために、表示部32として、小型で表示能力(特に、解像度)の低いものを採用せざるを得ないからである。ただし、動画像を表示部32にスムーズに表示させるために、第3レートは、第2レートよりかなり高く設定されている。なお、電子楽器100をさらに低廉にするために、動画像は言うに及ばず、静止画像も表示できない表示器を採用することもあり、その場合には、その表示器には画像データストリームを供給しない(できない)ので、第3レート・品質変換部31は必要ない。ただしその場合でも、画像ファイル生成部29は一時画像ファイルの生成を続けているので、PC200側から取得要求があれば、その一時画像ファイルは、出力部28を介してPC200に出力され、PC200の大型ディスプレイ上に表示される。つまり、電子楽器100に画像を表示できない表示器が設置されていたとしても、ユーザは、画像データストリームの現在の記録状況を、PC200の大型ディスプレイ上でモニタすることができる(ただしモニタ画像は、動画像であるにも拘わらず、滑らかに動かない)。
このように、本実施の形態では、電子楽器100上に画像を表示できない表示器が設置されていたとしても、記録前あるいは記録中の画像データをモニタすることが可能となる。
また、本実施の形態では、電子楽器100とPC200との通信をUSBストレージ・クラスに準拠させるようにしたので、電子楽器100はPC200に、撮影中にモニタ用画像を送信するのも、撮影後に出来上がった動画ファイルを送信するのも、同じUSBストレージ・クラスに準拠した通信で行うことができる。これにより、電子楽器100はUSBビデオ・クラスに対応せずにUSBストレージ・クラスのみに対応させるだけで済み、実装が楽になるとともに、ROM6の容量を削減することができる。さらに前述したように、撮像装置300を電子楽器100に組み込むようにしてUSBビデオ・クラスに準拠しない軽量な実装にすれば、電子楽器100をより安価にすることができる。
次に、この制御処理を詳細に説明する。
図4は、電子楽器100、特にCPU5が実行するメインルーチンの手順を示すフローチャートである。
本メインルーチンでは、CPU5は、主として、
(1)初期設定処理(ステップS1)
(2)演奏処理(ステップS2)
(3)記録処理(ステップS3)
(4)表示処理(ステップS4)
(5)画像出力処理(ステップS5)
(6)動画ファイル転送処理(ステップS6)
の各処理を行う。本メインルーチンは、前記設定操作子2に含まれる電源スイッチ(図示せず)によって電源がオンされたときに起動される。起動後、前記(1)の初期設定処理が1回実行され、これに続いて、前記(2)〜(6)の各処理が順次実行される。そして(6)の処理が終了すると、(2)の処理に戻って、(2)〜(6)の処理が、電源スイッチによって電源がオフされるまで、繰り返し実行される。
前記(1)の初期設定処理では、CPU5は、RAM7をクリアしたり、各種パラメータの値をデフォルト値に設定したり、タイマ8の計時を開始させたりする等の初期設定を行う。
図5は、前記(2)の演奏処理の詳細な手順を示すフローチャートである。
この(2)演奏処理では、まずCPU5は、ユーザが前記自動演奏のスタート/ストップスイッチを押下したかどうかを常時チェックする。このスタート/ストップスイッチは、たとえばトグルスイッチで、自動演奏がなされていない状態でスタート/ストップスイッチが押下されると、自動演奏の開始が指示され、自動演奏がなされている状態でスタート/ストップスイッチが押下されると、自動演奏の終了が指示される。CPU5は、スタート/ストップスイッチが押下されたことを検知すると、現在の自動演奏の状態(自動演奏中かどうか)に基づいて、自動演奏の開始が指示されたか、あるいは自動演奏の終了が指示されたかを判別し、自動演奏の開始が指示されたときには、自動演奏部21bに対して自動演奏の開始を指示する一方、自動演奏の終了が指示されたときには、自動演奏部21bに対して自動演奏の終了を指示する(ステップS11)。これに応じて自動演奏部21bは、指示された方の動作を行う。なお、現在の自動演奏の状態は、たとえば、RAM7の一部領域に設けた自動演奏中フラグ(図示せず)がセット(“1”)状態のときに「自動演奏中」と判別し、リセット(“0”)状態のときに「非自動演奏中」と判別するようにすればよい。そしてCPU5は、自動演奏部21bに自動演奏の開始を指示するときに一緒に、自動演奏中フラグをセットし、自動演奏部21bに自動演奏の終了を指示するときに一緒に、自動演奏中フラグをリセットする。ただし、自動演奏中フラグの初期状態はリセット状態であるため、前記(1)の初期設定処理で、自動演奏中フラグをリセットしておく必要がある。
次にCPU5は、演奏情報供給部21からMIDIイベントが供給されたかどうかを常時チェックする(ステップS12)。演奏情報供給部21からMIDIイベントが供給される場合は、ユーザが演奏操作子1を用いて演奏を行った場合と、自動演奏部21bが自動演奏を行っている場合である。さらに、図2には示されていないが、電子楽器100には外部MIDI機器400が接続されている(図1参照)ので、MIDIイベントは、外部MIDI機器400から供給される場合もある。そして、MIDIイベントの供給を検知すると、CPU5は、このMIDIイベントに応じた楽音信号の生成を前記楽音生成部22に指示し(ステップS13)、前記タイマ8から現在時刻を取得し(ステップS14)、取得した現在時刻とこのMIDIイベントを関連付けて、前記RAM7の一部領域に設けたMIDIバッファ(図示せず)に一時的に記憶する(ステップS15)。
前記ステップS13の指示に応じて、楽音生成部22は、当該楽音信号(オーディオデータ)を生成し、そのオーディオデータを、RAM7の一部領域に設けたオーディオバッファ(図示せず)に一時的に記憶するとともに、前記サウンドシステム17に供給する。これに応じて、サウンドシステム17からは、当該楽音信号に応じた楽音が放音される(前記ステップS13内のカッコ書き)。
図6は、前記(3)の記録処理の詳細な手順を示すフローチャートである。
この(3)記録処理では、まずCPU5は、現在の処理タイミングが第1レートの処理タイミングであるかどうかを常時チェックする(ステップS21)。その結果、現在の処理タイミングが第1レートの処理タイミングでないときには、本記録処理を終了する(ステップS21→リターン)一方、現在の処理タイミングが第1レートの処理タイミングであるときには、前記撮像部23から供給される1フレーム分の画像データを取得する(ステップS22)。ここで、第1レートとは、前記第1レート・品質変換部24が動画像データのレートを変換するときに目標とするレートである。前述のように、第1レートを20フレーム/秒とし、撮像部23から供給される動画像データのレートを30フレーム/秒とすると、撮像部23からは、1フレーム分の画像データが1/30(秒)毎に供給されるが、前記ステップS22の処理では、その中から、1/20(秒)の倍数に相当する時間に供給される1フレーム分の画像データを取得することになる。
次にCPU5は、取得した1フレーム分の画像データの解像度を所定の解像度に変換する(ステップS23)。ここで、撮像部23から供給された動画像データの解像度を、記録時にどの程度まで落とす必要があるかであるが、その程度は、主としてCPU5の演算処理能力、外部記憶装置10の記憶容量および記録された動画ファイルの使用目的によって決定される。したがって、これらの事情によっては、レート変換は行うものの、解像度変換は行わない場合、これとは逆に、解像度変換は行うものの、レート変換は行わない場合、さらに、レート変換も解像度変換も行わない場合もあり得る。
次にCPU5は、前記オーディオバッファから、そこに記憶されているオーディオデータを読み出して取得する(ステップS24)とともに、前記MIDIバッファから、そこに記憶されているMIDIデータを読み出して取得し(ステップS25)、レート変換および解像度変換された1フレーム分の画像データ、上記取得されたオーディオデータおよび上記取得されたMIDIデータを、記録中の動画ファイルに追記する(ステップS26)。MIDIバッファ内には前述のように、MIDIイベントがその時刻と関連付けて記録されているので(前記ステップS15参照)、ここではSMF形式になるように、デルタタイム(先行するイベントとの時間差)とMIDIイベントとに変換して追記する。ただし、これらのデータを初めて動画ファイルに記録する場合には、新規に(空の)動画ファイルを取得した上で、そのファイルに記録する。
なお、この(3)記録処理は、ユーザが記録の開始を指示したときに開始され、ユーザが記録の終了を指示したときに終了する。そして本実施の形態では、記録の開始/終了と自動演奏の開始/終了を同期させているので、この(3)記録処理も、自動演奏中フラグがセット状態のときにのみ実行される。
図7は、前記(4)の表示処理の詳細な手順を示すフローチャートである。
この(4)表示処理では、まずCPU5は、現在の処理タイミングが第3レートの処理タイミングであるかどうかを常時チェックする(ステップS31)。その結果、現在の処理タイミングが第3レートの処理タイミングでないときには、本表示処理を終了する(ステップS31→リターン)一方、現在の処理タイミングが第3レートの処理タイミングであるときには、撮像部23から供給される1フレーム分の画像データを取得する(ステップS32)。なお、ステップS31の処理は、前記ステップS21の処理に対してレート変換の程度が異なるのみであり、ステップS31の処理はステップS21の処理から簡単に類推できるので、ステップS31の処理についてのこれ以上の説明は省略する。
次にCPU5は、取得した1フレーム分の画像データの解像度を所定の解像度に変換する(ステップS33)。ここで、撮像部23から供給された動画像データの解像度を、表示時にどの程度まで落とす必要があるかであるが、その程度は、専ら小型LCD9の解像度に依存する。
そしてCPU5は、変換後の画像データを前記表示部32に供給する(ステップS34)。
なお、小型LCD9が電子楽器100に備えられていないときには、この(4)表示処理は当然ながら、本メインルーチンに含まれない。
図8は、前記(5)の画像出力処理の詳細な手順を示すフローチャートである。なお、図8には、PC200側の画像表示処理も記載されている。
この(5)画像出力処理では、まずCPU5は、現在の処理タイミングが第2レートの処理タイミングであるかどうかを常時チェックする(ステップS41)。その結果、現在の処理タイミングが第2レートの処理タイミングでないときには、ステップS45に進む一方、現在の処理タイミングが第2レートの処理タイミングであるときには、撮像部23から供給される1フレーム分の画像データを取得する(ステップS41→S42)。なお、ステップS41の処理は、前記ステップS21の処理に対してレート変換の程度が異なるのみであり、ステップS41の処理はステップS21の処理から簡単に類推できるので、ステップS41の処理についてのこれ以上の説明は省略する。
次にCPU5は、取得した1フレーム分の画像データの解像度を所定の解像度に変換する(ステップS43)。ここで、撮像部23から供給された動画像データの解像度を、画像出力時にどの程度まで落とす必要があるかであるが、その程度は、専らCPU5の演算処理能力に依存する。
そしてCPU5は、変換後の画像データからなる一時画像ファイルを生成して、ファイル記憶部26に供給する(ステップS44)。ファイル記憶部26は、この一時画像ファイルを一時的に記憶する。この一時画像ファイルに限らず、ファイル記憶部26に記憶されるすべてのファイルは、本実施の形態では、ファイル・アロケーション・テーブル(file allocation table;以下「FAT」と略して言う)によって管理されている。FATは、記憶装置(本実施の形態では、外部記憶装置10)に記憶されたファイルの位置や記録日時などを管理するテーブルである。なお、FAT自体は公知であるので、その管理方法についての説明は省略する。
ファイル記憶部26には、一時画像ファイルの他に、前記動画ファイルや自動演奏データなどが記憶される。ここで、同種のファイルは、一まとまりで記憶しておいた方が管理し易いので、本実施の形態では、ファイルの種類毎に異なるディレクトリを生成しておき、同種のファイルは同じディレクトリ内に記憶させている。具体的には、一時画像ファイルは「一時画像ディレクトリ」に、動画ファイルは「動画ディレクトリ」に、自動演奏データは「自動演奏ディレクトリ」に、それぞれ記憶させる。したがって、前記ステップS44によって供給された一時画像ファイルはファイル記憶部26の「一時画像ディレクトリ」に記憶されたとして、FATが更新される。なお、「一時画像ディレクトリ」には、一時画像ファイルが複数(つまり、一連の一時画像ファイル)記憶される場合があり、この場合には、各一時画像ファイルをそれぞれ区別する必要がある。この区別は、本実施の形態では、「ファイル名+通し番号」によって行うことにする。「ファイル名」として、たとえば「一時画像」を採用した場合、一時画像ファイルの生成順に、「一時画像000」、「一時画像001」、「一時画像002」…と名付けられたファイルが、ファイル記憶部26の「一時画像ディレクトリ」に記憶されて行く。後述するように、各一時画像ファイルは、ファイル記憶部26から読み出されると、ファイル記憶部26から消去されるので、一時画像ファイルの個数は常に、所定の範囲(この範囲は、PC200が一時画像ファイルを読み出す周期(本実施の形態では、後述するように、100ms)と一時画像ファイルを生成する周期(本実施の形態では、第2レートの逆数に応じた時間)によって決まる)内に収まる。したがって、通し番号の桁数は、その所定の範囲が収まるものにすればよい。たとえば、十進数で3桁の通し番号を採用したとすると、「一時画像999」が生成されたときには、「一時画像000」のファイルは既に、「一時画像ディレクトリ」から消去されているので、その次に「一時画像000」のファイルを新たに生成したとしても、「一時画像ディレクトリ」内に同じ名称のファイルが記憶されているとして、FATによって拒否されることはない。
一方、PC200は、自身の画像表示処理により、所定周期(たとえば、100ms)毎に、電子楽器100に対してFATの取得要求を行う(ステップS101→S102)。なお、PC200の外部記憶装置もFAT(ただし、電子楽器100のFATとは当然、異なっている)によって管理されることもあり得る。したがって、「FAT」と記載する場合、本来であれば、どちらのFATであるか、その所在を明確にする必要があるが、本実施の形態では、PC200側のFATを問題にすることはないので、「FAT」と記載する場合には、特に明示しなくても、電子楽器100側のFATを示すものとする。
PC200からFATの取得要求を受信すると、CPU5は、ファイル記憶部26からFATを読み出し、出力部28を介してPC200に出力する(ステップS45→S46)。
FATを受信すると、PC200は、FATを解析して、「一時画像ディレクトリ」に一時画像ファイルが記憶されているかどうかを判別する(ステップS103)。このとき、「一時画像ディレクトリ」に一時画像ファイルが1つでも記憶されていれば、その一時画像ファイルは、自身の大型ディスプレイに表示させるべきものであるので、その一時画像ファイルの取得要求を電子楽器100に出力する(ステップS104)。「一時画像ディレクトリ」に複数の一時画像ファイルが記憶されている場合、PC200は、その複数の一時画像ファイルのうち、最も若い通し番号が付与されたものの取得要求を電子楽器100に出力する。ただし、通し番号が“999”と“000”を含む一時画像ファイルが一時画像ディレクトリに記憶されている場合には、“000”が付与された一時画像ファイルより“999”が付与された一時画像ファイルの方を先に取得要求しなければならない。なおFATでは、ファイルのデータはセクタ単位で管理されているので、前記ステップS104の処理では、一時画像ファイルのデータをセクタ単位で要求し、取得するようにしている。このように一時画像ファイルをセクタ単位で要求して取得するようにしたのは、ファイルシステムとして、FAT型ファイルシステムを採用したからに過ぎず、それ以外の理由はない。
PC200から一時画像ファイルの取得要求を受信すると、CPU5は、取得要求された一時画像ファイルのデータを、ファイル記憶部26からセクタ単位で読み出し、出力部28を介してPC200に出力する(ステップS47→S48)。これに応じてPC200は、取得要求した一時画像ファイルのデータをセクタ単位で受信する(ステップS104)。そして、一時画像ファイルのデータのセクタ単位での要求と取得とが繰り返され、PC200が当該一時画像ファイルのデータをすべて受信すると、PC200は、その受信した一時画像ファイルを自身の大型ディスプレイに供給する(ステップS105→S106)。これにより、その一時画像ファイルに応じた画像が、大型ディスプレイ上に表示される。
次にPC200は、電子楽器100に対して、当該一時画像ファイルの削除を意味するFATの書換要求を行う(ステップS107)。
このFATの書換要求を受信すると、CPU5は、FATを操作して、当該一時画像ファイルを削除する(ステップS50)。
このように本実施の形態では、ファイル記憶部26における一時画像ファイルの削除は、PC200側からFATの書換要求がなされたことに応じてなされるが、これに限らず、前記ステップS48の処理によって、取得要求された一時画像ファイルのデータがすべて送信された時点で、PC200側から何らかの要求がなされなくとも自己完結的に、当該一時画像ファイルをファイル記憶部26から削除するようにしてもよい。ただしこの場合、当該一時画像ファイルを削除したこと応じて、FATを更新しておく必要がある。
図9は、前記(6)の動画ファイル転送処理の詳細な手順を示すフローチャートである。
この(6)動画ファイル転送処理では、まずCPU5は、PC200から動画ファイルの転送要求がなされたかどうかを常時チェックし(ステップS51)、転送要求がなされたときには、転送要求された動画ファイルを、前記ファイル記憶部26からセクタ単位で読み出す(ステップS52)。
次にCPU5は、読み出したセクタを、出力部28を介してPC200に転送する(ステップS53)。
このように(6)動画ファイル転送処理では、前記(3)の記録処理によって記録されてファイル記憶部26に記憶された動画ファイルをPC200(の外部記憶装置)に吸い上げるようにしている。動画ファイルは、ファイル記憶部26(外部記憶装置10)にその記憶容量に応じた分だけ記憶することができるが、本実施の形態では、ファイル記憶部26として安価なものを採用しており、しかも動画ファイルのデータ容量は通常大きく、さらにファイル記憶部26には、動画ファイルの他にも、一時画像ファイルや自動演奏データなどの多くのファイルが記憶されるので、多くの動画ファイルをファイル記憶部26に貯めておくことはできない。このため、PC200に吸い上げられた動画ファイルは、一時画像ファイルと同様に、ファイル記憶部26から削除することが望ましい。動画ファイルを削除する方法としては、前記(5)の画像出力処理と同様に、吸い上げ対象の動画ファイルのデータ(本実施の形態では、セクタ単位のデータ)がすべて転送された時点で、PC200から電子楽器100に、当該動画ファイルの削除を意味するFATの書換要求を送信する方法を採るようにすればよい。あるいは、動画ファイルがすべて転送された時点で、電子楽器100自身が当該動画ファイルをファイル記憶部26から削除する方法を採るようにしてもよい。
なお、前記(5)の画像出力処理では、PC200は、電子楽器100から取得した一時画像ファイルを、自身の大型ディスプレイ上に表示させるためにだけ使用したが、これに限らず、その表示と一緒に、自身の外部記憶装置に記憶させるようにしてもよい。あるいは、電子楽器100から取得した一時画像ファイルを、自身の外部記憶装置に記憶させるためにだけ使用するようにしてもよい。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。