説明

電子鍵盤楽器およびその制御方法を実現するためのプログラム

【課題】音楽コンテンツをストリーミング再生しながら、これに合わせて鍵盤を自動駆動することが可能となる電子鍵盤楽器を提供する。
【解決手段】電子鍵盤楽器100は、オーディオ/ビデオデータのストリーミング再生に合わせてMIDIデータを再生し、得られたノートイベントを鍵駆動回路3に供給することで鍵盤1を自動駆動させる。オーディオ/ビデオデータが所定量溜まった時点で、そのオーディオ/ビデオデータのストリーミング再生を開始させるとともに、MIDIデータの再生を開始させる。さらに、MIDIデータの再生によって得られたノートイベントが鍵駆動回路3に供給されてから駆動対象となる鍵の押鍵あるいは離鍵が完了するまでにかかる時間差(たとえば、50〜100msec程度)を考慮して、MIDIデータの再生を開始させてから当該時間差だけ待った後、オーディオ/ビデオデータのストリーミング再生を開始させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動演奏データに基づいて鍵盤を自動駆動する電子鍵盤楽器およびその制御方法を実現するためのプログラムに関する。
【背景技術】
【0002】
自動演奏データに基づいて鍵盤を自動駆動する電子鍵盤楽器は、従来から知られている(たとえば、特許文献1参照)。
【0003】
一方、オーディオデータやビデオデータを含む音楽コンテンツをストリーミング配信するサービスや、このサービスによってストリーミング配信された音楽コンテンツを受信し、ストリーミング再生する電子音楽装置も、一般化している。
【特許文献1】特許第3704747号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、オーディオデータやビデオデータを含む音楽コンテンツをストリーミング再生しながら、これに合わせて鍵盤を自動駆動できれば、その視聴者は、あたかも自分の目の前でミュージシャンが音楽を演奏しているような雰囲気を味わうことができる。
【0005】
しかし、音楽コンテンツのストリーミング再生に合わせて自動鍵盤演奏できるシステムは、今までに提案されていないので、このような視聴者の要望に応えることはできなかった。
【0006】
本発明は、この点に着目してなされたものであり、オーディオデータやビデオデータを含む音楽コンテンツをストリーミング再生しながら、これに合わせて鍵盤を自動駆動することが可能となる電子鍵盤楽器およびその制御方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、請求項1に記載の電子鍵盤楽器は、複数の鍵を備えた鍵盤と、該鍵盤の各鍵を自動駆動する鍵駆動手段と、オーディオデータまたはビデオデータを含む音楽コンテンツをストリーミング配信するストリーミング配信サーバと接続する接続手段と、該接続手段を介して接続されたストリーミング配信サーバに対して音楽コンテンツの配信要求を行う要求手段と、該要求手段による配信要求に応じてストリーミング配信サーバからストリーミング配信される音楽コンテンツと、該音楽コンテンツに対応する鍵駆動用の自動演奏データを受信する受信手段と、該受信手段によって受信された自動演奏データを再生し、その再生によって得られたノートイベントを前記鍵駆動手段に供給することで、前記複数の鍵のうち、当該ノートイベントに対応する鍵を駆動させる第1の再生手段と、前記受信手段によって受信された音楽コンテンツをストリーミング再生する第2の再生手段と、前記第1の再生手段による自動演奏データの再生と前記第2の再生手段による音楽コンテンツのストリーミング再生とを連携して行うように制御する制御手段とを有することを特徴とする。
【0008】
請求項2に記載の電子鍵盤楽器は、請求項1の電子鍵盤楽器において、前記受信された音楽コンテンツを一時的に記憶する一時記憶手段をさらに有し、前記制御手段は、前記一時記憶手段に音楽コンテンツが所定量蓄積されてから、前記自動演奏データの再生と前記音楽コンテンツのストリーミング再生を開始させることで、両再生を連携して行うことを特徴とする。
【0009】
請求項3に記載の電子鍵盤楽器は、請求項1の電子鍵盤楽器において、前記音楽コンテンツのストリーミング再生中に、前記一時記憶手段に蓄積された音楽コンテンツがなくなったときには、前記制御手段は、前記自動演奏データの再生を中断することを特徴とする。
【0010】
請求項4に記載の電子鍵盤楽器は、請求項1の電子鍵盤楽器において、前記ストリーミング配信サーバからは、前記音楽コンテンツおよび自動演奏データに加えて、当該音楽コンテンツのストリーミング再生と当該自動演奏データの再生を同期させるための同期用マップデータが配信され、前記受信手段は、該配信された同期用マップデータを受信し、前記制御手段は、該受信された同期用マップデータに基づいて当該音楽コンテンツのストリーミング再生と当該自動演奏データの再生を同期させることで、両再生を連携して行うことを特徴とする。
【0011】
上記目的を達成するため、請求項5に記載のプログラムは、請求項1と同様の技術的思想によって実現できる。
【発明の効果】
【0012】
請求項1または5に記載の発明によれば、ストリーミング配信サーバから配信された自動演奏データを再生し、その再生によって得られたノートイベントを鍵駆動手段に供給することで、鍵盤に備えられた複数の鍵のうち、当該ノートイベントに対応する鍵を駆動するとともに、ストリーミング配信サーバからストリーミング配信された音楽コンテンツをストリーミング再生し、前記自動演奏データの再生と前記音楽コンテンツのストリーミング再生とを連携して行うようにしたので、音楽コンテンツをストリーミング再生しながら、これに合わせて鍵盤を自動駆動することが可能となる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0014】
図1は、本発明の一実施の形態に係る電子鍵盤楽器100の概略構成を示すブロック図である。
【0015】
同図に示すように、電子鍵盤楽器100は、音高情報を含む演奏情報を入力するための複数の鍵からなる鍵盤1と、各種情報を入力するための複数のスイッチやダイアル、ホイールを含む設定操作子2と、前記複数の鍵のそれぞれを自動駆動するための鍵駆動回路3と、鍵盤1の各鍵の操作状態を検出する検出回路4と、設定操作子2の操作状態を検出する検出回路5と、装置全体の制御を司るCPU6と、該CPU6が実行する制御プログラムや各種テーブルデータ等を記憶するROM7と、演奏情報、各種入力情報および演算結果等を一時的に記憶するRAM8と、各種情報等を表示する、たとえば液晶ディスプレイ(LCD)および発光ダイオード(LED)等を備えた表示装置9と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する記憶装置10と、通信ネットワーク300を介して、ストリーミング配信サーバ200とデータの送受信を行う通信インターフェース(I/F)11と、鍵盤1から入力された演奏情報や、前記記憶装置10に記憶されたいずれかの楽曲データを再生して得られた演奏情報等を楽音信号に変換するとともに、その楽音信号に各種効果を付与するための音源・効果回路12と、該音源・効果回路12からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム13とにより構成されている。
【0016】
上記構成要素3〜12は、バス14を介して相互に接続され、通信I/F11には通信ネットワーク300が接続され、音源・効果回路12にはサウンドシステム13が接続されている。
【0017】
ストリーミング配信サーバ200は、電子鍵盤楽器100からの配信要求に応じてオーディオ/(または)ビデオデータをストリーミング配信する。これに応じて電子鍵盤楽器100は、受信したオーディオ/ビデオデータをストリーミング再生する。ストリーミング配信サーバ200からオーディオデータが配信されたときには、電子鍵盤楽器100は、そのオーディオデータをストリーミング再生し、再生したオーディオデータを音源・効果回路12に供給する。オーディオデータは通常、圧縮化されており、その上暗号化されているものもあるので、音源・効果回路12には、圧縮化されたオーディオデータを伸長するとともに暗号化されたオーディオデータを解読するデコード回路(図示せず)が含まれている。音源・効果回路12に供給されたオーディオデータが、圧縮化されたものであればデコード回路によって伸長され、暗号化されたものであればデコード回路によって解読された後、後段のサウンドシステム13に供給される。一方、ストリーミング配信サーバ200からビデオデータが配信されたときには、電子鍵盤楽器100は、そのビデオデータをストリーミング再生する。ビデオデータには通常、映像データと音声データ(=オーディオデータ)が含まれているので、ビデオデータの再生によって得られた映像データおよび音声データはそれぞれ表示装置9および音源・効果回路12に供給される。表示装置8は、映像データのデコード回路(図示せず)を含み、供給された映像データをこのデコード回路でデコードして前記LCDに供給する。LCDは、供給された映像データを表示する。これによりLCD上には、動画像が表示される。音源・効果回路12は、供給された音声データを前記オーディオデータと同様に処理する。
【0018】
記憶装置10は、たとえば、フレキシブルディスク(FD)、ハードディスク(HD)、CD−ROM、DVD(digital versatile disc)、光磁気ディスク(MO)および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は、駆動装置から着脱可能であってもよいし、記憶装置10自体が、電子鍵盤楽器100から着脱可能であってもよい。あるいは、記憶媒体も記憶装置10も着脱不可能であってもよい。なお、記憶装置10(の記憶媒体)には、前述のように、CPU6が実行する制御プログラムも記憶でき、ROM7に制御プログラムが記憶されていない場合には、この記憶装置10に制御プログラムを記憶させておき、それをRAM8に読み込むことにより、ROM7に制御プログラムを記憶している場合と同様の動作をCPU6にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【0019】
通信I/F11は、前述のように、たとえばLAN(local area network)やインターネット、電話回線等の通信ネットワーク300に接続されており、該通信ネットワーク300を介して、ストリーミング配信サーバ200に接続される。このように本実施の形態では、通信I/F11として、汎用ネットワークI/Fを採用しているが、これに他の種類のI/F、具体的には、MIDI(musical instrument digital interface)信号などの音楽信号を専用に送受信する音楽専用有線I/F、USB(universal serial bus)やIEEE1394(アイトリプルイー1394)などの汎用近距離有線I/F、無線LAN(local area network)やBluetooth(登録商標)などの汎用近距離無線I/Fを加えるようにしてもよい。
【0020】
ストリーミング配信サーバ200は、電子鍵盤楽器100の上記構成から、鍵盤1、設定操作子2、鍵駆動回路3、検出回路4,5、表示装置9、音源・効果回路12およびサウンドシステム13を除き、その代わりに、キーボード、マウスおよび大型ディスプレイを加えた、通常のサーバ用コンピュータ上に構築される。なおストリーミング配信サーバ200は、本実施の形態では1台によって構成されているが、これに限らず、複数台によって構成されていてもよい。
【0021】
図2は、鍵盤1の各鍵を自動駆動させる駆動方法の一例を示す図である。なお、本発明の特徴は鍵駆動の方法にある訳ではないので、周知の鍵駆動機構および鍵駆動方法を用いて各鍵を駆動させればよい。したがって同図には、各鍵(図示例では、そのうちの1つの鍵)を駆動させるための一般的な駆動機構および駆動方法の概略が示されている。そして、図2(a)は離鍵状態(非押鍵状態)を示し、図2(b)は押鍵状態を示している。
【0022】
図2(a)に示すように、鍵1aは、係合部1a1を介してハンマ1bと係合されている。鍵1aは、鍵支点1cを回動中心として回動し、ハンマ1bは、ハンマ支点1dを回動中心として回動する。ハンマ1bの長手方向の中心部よりやや後方部の下方には、たとえばソレノイドによって構成される鍵駆動機構1eが設けられている。
【0023】
鍵1aを自動押鍵するときには、前記CPU6は、当該鍵1aに割り当てられているノートナンバを含むノートオンイベントを前記鍵駆動回路3に供給する。これに応じて鍵駆動回路3から鍵駆動機構1eに所定の電力が供給され、鍵駆動機構1eは、図2(b)に示すようにハンマ1bを上方向に押し上げる。ハンマ1bが上方向に押し上げられると、ハンマ1bの自由端1b1は、ハンマ支点1dを回動支点として矢印Aの方向に回動し、これに応じてハンマ1bの係合端1b2は、矢印Bの方向に回動する。この係合端1b2の回動が、係合部1a1を介して鍵1aにも伝わり、鍵1aは、鍵支点1cを回動支点として矢印Cの方向に回動する。これにより、鍵1aは押鍵状態となる。
【0024】
押鍵状態の鍵1aを自動離鍵するときには、CPU6は、当該鍵1aに割り当てられているノートナンバを含むノートオフイベントを鍵駆動回路3に供給する。これに応じて鍵駆動回路3から鍵駆動機構1eへの電力供給が停止され、鍵1aおよびハンマ1bは、離鍵状態から押鍵状態に至る際の動作と逆方向の動作により、離鍵状態となる。
【0025】
なお鍵盤1の各鍵としては、上述のようにハンマを係合するタイプのものに限らず、ハンマを係合しないタイプのものを採用してもよい。また、ハンマを係合するタイプのものであっても、鍵駆動機構は、ハンマを介して鍵を駆動するのではなく、鍵を直接駆動するような構造としてもよい。さらに鍵駆動機構は、ソレノイドを用いたものに限らない。
【0026】
図3は、ネットワーク構成の一例を示す図である。同図に示すように、インターネット等の通信ネットワーク300には、電子鍵盤楽器100と同様に構成された2台の電子鍵盤楽器100aおよび100bと、1台のストリーミング配信サーバ200が接続されている。このように本実施の形態では、1台のストリーミング配信サーバ200が、複数の電子鍵盤楽器のそれぞれに異なったオーディオ/ビデオデータをストリーミング配信できるようになっている。ここで、オーディオデータのストリーミング配信とは、動画像データを含まない音声データのみ(ただし、静止画像データは含まれることがある)をストリーミング配信することを意味し、ビデオデータのストリーミング配信とは、動画像データとともに音声データもストリーミング配信することを意味する。
【0027】
ストリーミング配信する方法には主として、RTP(real-time transport protocol)やRTSP(real time streaming protocol)によるものと、HTTP(hypertext transfer protocol)による擬似的なものとがある。電子鍵盤楽器100は、後述するように、ストリーミング再生中のオーディオ/ビデオデータについて停止、早送り、巻き戻し、指定した位置からの再生などのVCR(video casette recorder) 形式の制御機能を実現するようにしている。そして上記3種類のプロトコルのうち、RTSPだけに予めVCR形式の制御機能が備わっているので、ストリーミング配信のプロトコルとしてRTSPを採用すれば、電子鍵盤楽器100上でVCR形式の制御機能を実現することが容易になる。具体的には、電子鍵盤楽器100側からストリーミング配信サーバ200に、ストリーミング配信中のオーディオ/ビデオデータの停止、早送り、巻き戻し、指定した位置からの再生などを指示すると、ストリーミング配信サーバ200は、指示された制御機能が電子鍵盤楽器100上で実現されるようなオーディオ/ビデオデータをストリーミング配信する。たとえば、電子鍵盤楽器100からストリーミング配信サーバ200に対して「早送り」を指示すると、ストリーミング配信サーバ200は、電子鍵盤楽器100が受信したオーディオ/ビデオデータをそのままストリーミング再生するだけで「早送り」となるようなオーディオ/ビデオデータを、電子鍵盤楽器100にストリーミング配信する。このように電子鍵盤楽器100上でVCR形式の制御機能を実現することが極めて容易になるので、ストリーミング配信のプロトコルとして、本実施の形態ではRTSPを採用することにする。ただし他のプロトコルを採用した場合でも、VCR形式の制御機能を電子鍵盤楽器100上で実現できない訳ではないので、RTSP以外のプロトコルを採用するようにしてもよい。
【0028】
図4は、ストリーミング配信サーバ200(の記憶装置)内に記憶されるストリーミング配信用データのフォーマットの一例を示す図であり、同図(a)〜(e)に5種類の異なるフォーマットを採るストリーミング配信用データが示されている。ただし、ストリーミング配信サーバ200が本実施の形態で実際にストリーミング配信するデータは、この5種類のストリーミング配信用データのうち、予め選択設定された1種類(たとえば、図4(b)のストリーミング配信用データ)だけである。つまり、複数種類のフォーマットのストリーミング配信用データを例に挙げたのは、オーディオ/ビデオデータのストリーミング配信とこれに基づいたストリーミング再生は、特定の1種類のフォーマットのストリーミング配信用データに限られる訳ではなく、複数種類のフォーマットのストリーミング配信用データのいずれを用いても可能であることを明示するためである。
【0029】
図4(a)は、MIDIデータとオーディオ/ビデオデータを1つのファイル内に含むフォーマットを採るストリーミング配信用データ(以下、「第1フォーマットのストリーミング配信用データ」という)を示している。
【0030】
同図(a)において、MIDIデータは、鍵盤1を自動駆動するために用いられ、本実施の形態ではSMF(standard MIDI file)形式のもの、つまり、ヘッダチャンクとトラックチャンクからなり、トラックチャンクはMIDIイベント(=デルタタイム+MIDIチャンネルメッセージ)、SysExイベント(=デルタタイム+システム・エクスクルーシブ・メッセージ)およびメタイベント(=デルタタイム+MIDIチャンネルメッセージ以外の情報)を再生順に並べたシーケンスによって形成されたものを採用している。もちろん、他のフォーマットのMIDIデータを採用するようにしてもよいし、MIDIのフォーマットを採らない自動演奏データであってもよい。
【0031】
オーディオ/ビデオデータは、コンサート会場でのライブ演奏を録音/録画したライブ映像やプロモーション映像などの音楽コンテンツであって、少なくとも鍵盤楽器の演奏パートを含むものである。したがって当該音楽コンテンツは、鍵盤楽器のソロ演奏のみからなるものであってもよいし、鍵盤楽器のパートにボーカルパートやその他の楽器パートなどを加えた複数の演奏パートからなるものであってもよい。そしてオーディオ/ビデオデータは、複数のオーディオ/ビデオサンプルによって構成されている。つまり、オーディオ/ビデオサンプルを所定の周期で1サンプルずつ再生することにより、音声/映像が生成される。
【0032】
オーディオ/ビデオデータがある曲のライブ演奏を録音/録画したものであり、MIDIデータが汎用的に(たとえば、その曲の譜面通りに入力して)作成されたものであるとして、両者の再生を同時に開始させた場合、前者のテンポは演奏者の演奏に応じて変動するのに対して、後者のテンポは譜面通りに変動する(初期設定されたテンポがそのまま変動しないこともある)ので、生成された音声/映像と鍵盤1の駆動動作とは通常合わない。このため、MIDIデータは、オーディオ/ビデオデータのテンポ変化に追従するように専用的に作成されている。たとえば、一定のテンポを設定せずに(フリーテンポで)各キーオンイベントを入力することにより、あるいは一定のテンポを設定し、適切な位置にテンポチェンジイベントを挿入することにより、当該オーディオ/ビデオデータと同様にテンポ変化するようなMIDIデータを作成する方法が考えられる。なおテンポチェンジイベントとしては、たとえばメタイベントに含まれる「セットテンポ」イベントを用いるようにすればよい。もちろんこれに限られず、SysExイベントで作るなどの他の方法を用いてもよい。また、MIDIデータの再生には直接必要ではないものの、MIDIデータの再生とオーディオ/ビデオデータの再生を連携させるために、MIDIデータ内には、小節線の位置を示す小節線イベントを予め埋め込んでおくことにする。この小節線イベントも、メタイベントを用いればよいが、SysExイベントで作るなどの他の方法を用いてもよい。ただし、MIDIデータにおける小節線の位置は演算によって簡単に求めることができるので、MIDIデータ内に小節線イベントを予め埋め込んでおくことは、本発明に必須のものではなく、演算能力の低いCPU6を採用した場合に有用であるに過ぎない。
【0033】
図4(b)は、MIDIデータと同期用マップデータとオーディオ/ビデオデータを1つのファイル内に含むフォーマットを採るストリーミング配信用データ(以下、「第2フォーマットのストリーミング配信用データ」という)を示している。
【0034】
同図(b)のMIDIデータは、図4(a)のMIDIデータに対して、汎用的に作られている点のみが異なっており、その使用目的およびフォーマットは同様である。同図(b)のオーディオ/ビデオデータは、図4(a)のオーディオ/ビデオデータと同様に構成されたデータである。したがって、このようなMIDIデータおよびオーディオ/ビデオデータを同時に再生すると、図4(a)についての説明で上述した問題が生じるので、その問題を解消するために、同期用マップデータを含ませるようにしている。同期用マップデータとしては、具体的には、テンポを変化させるタイミングとテンポ値を示すテンポチェンジデータを1つ以上登録したテンポチェンジマップデータや、MIDIデータの各小節線におけるオーディオ/ビデオデータのサンプル位置(つまり、MIDIデータにおける各小節線の位置で再生されるべきオーディオ/ビデオデータのサンプル番号)を示すサンプル位置データを登録したサンプル位置マップデータなどを挙げることができる。
【0035】
図4(c)は、MIDIデータとオーディオ/ビデオデータとをそれぞれ別ファイルで形成したフォーマットを採るストリーミング配信用データ(以下、「第3フォーマットのストリーミング配信用データ」という)を示している。
【0036】
第3フォーマットのストリーミング配信用データは、前記第1フォーマットのストリーミング配信用データに対して、MIDIデータとオーディオ/ビデオデータとを1つのファイル内に含ませるのではなく、別々のファイルで構成している点が主として異なっており、個々のデータの使用目的およびフォーマットは異なっていない。ただし、第3フォーマットのストリーミング配信用データのMIDIデータには、第3フォーマットのストリーミング配信用データのオーディオ/ビデオデータのファイルを特定するための情報(たとえば、コマンド)が含まれている。第3フォーマットのストリーミング配信用データがストリーミング配信される場合、まず電子鍵盤楽器100は、ストリーミング配信サーバ200に対してオーディオ/ビデオデータのストリーミング配信要求を送信する。これに応じてストリーミング配信サーバ200は、当該オーディオ/ビデオデータのファイルに対応付けられたMIDIデータのファイルを電子鍵盤楽器100に配信する。次に電子鍵盤楽器100は、ストリーミング配信サーバ200からのMIDIデータを受信し、そこに含まれている、オーディオ/ビデオデータのファイルを特定するコマンドを読み出し、そのコマンドによって特定されるオーディオ/ビデオデータのファイルのストリーミング配信要求をストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、当該オーディオ/ビデオデータを電子鍵盤楽器100にストリーミング配信する。
【0037】
図4(d)は、MIDIデータとオーディオ/ビデオデータとをそれぞれ別ファイルで形成したフォーマットを採るストリーミング配信用データ(以下、「第4フォーマットのストリーミング配信用データ」という)を示している。
【0038】
前記第3フォーマットのストリーミング配信用データが、MIDIデータ中にオーディオ/ビデオデータのファイルを特定するコマンドを含ませるように構成されているのに対して、第4フォーマットのストリーミング配信用データは、オーディオ/ビデオデータ中にMIDIデータのファイルを特定するコマンドを含ませるように構成されている点が異なっている。したがって第4フォーマットのストリーミング配信用データがストリーミング配信される場合、電子鍵盤楽器100からストリーミング配信サーバ200に対してオーディオ/ビデオデータのストリーミング配信要求が送信されると、第3フォーマットのストリーミング配信用データとは逆に、まずストリーミング配信サーバ200は電子鍵盤楽器100に当該オーディオ/ビデオデータをストリーミング配信し、電子鍵盤楽器100は、このストリーミング配信されたオーディオ/ビデオデータを受信し、そこに含まれている、MIDIデータのファイルを特定するコマンドを読み出し、そのコマンドによって特定されるMIDIデータのファイルの配信要求をストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、当該MIDIデータを電子鍵盤楽器100に配信する。なお、コマンドを含ませる(記載する)オーディオ/ビデオデータの一部は、オーディオ/ビデオデータの先頭近傍が望ましい。これは、オーディオ/ビデオデータのストリーミング配信が開始されてから、それと同時に再生すべきMIDIデータの配信要求をストリーミング配信サーバ200に送信するため、オーディオ/ビデオデータのストリーミング配信が開始されてからできるだけ短時間でコマンドを見つける必要があるからである。
【0039】
なお、第3フォーマットのストリーミング配信用データも第4フォーマットのストリーミング配信用データも、MIDIデータは専用的に作成されたものを採用したが、MIDIデータは汎用的に作成されたものを採用し、これに加えて、前記第2フォーマットのストリーミング配信用データの「同期用マップデータ」に相当するものを別ファイルで用意しておき、この同期用マップデータのファイルをMIDIデータあるいはオーディオ/ビデオデータから参照可能に構成してもよい。
【0040】
図4(e)は、設定ファイルとMIDIデータとオーディオ/ビデオデータとをそれぞれ別ファイルで形成したフォーマットを採るストリーミング配信用データ(以下、「第5フォーマットのストリーミング配信用データ」という)を示している。
【0041】
同図(e)において、設定ファイルは、同時に再生すべきMIDIデータのファイルとオーディオ/ビデオデータのファイルを特定するための情報(たとえば、ファイル名)を記載したものである。また、MIDIデータとオーディオ/ビデオデータは、それぞれが別ファイルで構成されていることを除き、前記第1フォーマットのストリーミング配信用データのMIDIデータとオーディオ/ビデオデータと同様である。第5フォーマットのストリーミング配信用データでは、第1フォーマットのストリーミング配信用データのようにMIDIデータとオーディオ/ビデオデータとを1つのファイルにまとめたり、第3あるいは第4フォーマットのストリーミング配信用データのようにMIDIデータ内あるいはオーディオ/ビデオデータ内に特殊なコマンドを含ませたりする必要がないので、配信側では、既存のMIDIデータやおよびーディオ/ビデオデータに特別な加工を施さずにそのまま配信できる一方、受信側でも、受信したMIDIデータおよびオーディオ/ビデオデータに特別な加工を施さずにそのまま既存の再生手法で再生することができ、非常に都合がよい。
【0042】
第5フォーマットのストリーミング配信用データがストリーミング配信される場合、電子鍵盤楽器100からストリーミング配信サーバ200に対してオーディオ/ビデオデータのストリーミング配信要求が送信されると、まずストリーミング配信サーバ200は、当該オーディオ/ビデオデータのファイルに対応付けられた設定ファイルを電子鍵盤楽器100に配信する。これに応じて電子鍵盤楽器100は、ストリーミング配信サーバ200からの設定ファイルを受信し、そこに記載されている、MIDIデータのファイルおよびオーディオ/ビデオデータのファイルを特定する情報を読み出し、その情報によって特定されるMIDIデータのファイルおよびオーディオ/ビデオデータのファイルのストリーミング配信要求をストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、電子鍵盤楽器100に対して当該MIDIデータのファイルを配信するとともにオーディオ/ビデオデータをストリーミング配信する。
【0043】
なお、第5フォーマットのストリーミング配信用データも、MIDIデータは専用的に作成されたものを採用したが、MIDIデータは汎用的に作成されたものを採用し、これに加えて、前記第2フォーマットのストリーミング配信用データの「同期用マップデータ」に相当するものを別ファイルで用意しておき、設定ファイル内に、この同期用マップデータのファイルを特定する情報を記載しておくようにしてもよい。
【0044】
以上のように構成された電子鍵盤楽器100が実行する制御処理を、まずその概要を図2〜図4を参照して説明し、次に図5〜図8を参照して詳細に説明する。
【0045】
まず電子鍵盤楽器100(図3では、通信ネットワーク300に2台の電子鍵盤楽器100aおよび100bが接続されているが、そのうちのいずれか1台に相当する)は、ストリーミング配信サーバ200に対して、ストリーミング配信サーバ200がストリーミング配信可能なオーディオ/ビデオデータの、たとえば名称一覧の配信要求を送信する。これに応じてストリーミング配信サーバ200がオーディオ/ビデオデータの名称一覧を配信すると、電子鍵盤楽器100は、このオーディオ/ビデオデータの名称一覧を受信して、前記表示装置9のLCD上に表示する。ユーザが、LCD上に表示されたオーディオ/ビデオデータの名称一覧からいずれかの名称を選択し、その名称のオーディオ/ビデオデータのストリーミング配信を指示すると、電子鍵盤楽器100は、ストリーミング配信サーバ200に対して当該オーディオ/ビデオデータの配信要求を送信する。これに応じてストリーミング配信サーバ200は、電子鍵盤楽器100に対して当該オーディオ/ビデオデータを含むストリーミング配信用データを配信する。ストリーミング配信サーバ200は、前記図4に示したように第1フォーマットから第5フォーマットまでの5種類のストリーミング配信用データを配信可能であるが、説明の都合上、そのうちの1つ、たとえば第2フォーマットのストリーミング配信用データ(図4(b))を常に配信するものとする。電子鍵盤楽器100のユーザは通常、自分の選択指示したオーディオ/ビデオデータがストリーミング配信されて、電子鍵盤楽器100上でストリーミング再生されれば、配信されるデータのフォーマットは問わないので、ストリーミング配信サーバ200がどのようなフォーマットのストリーミング配信用データを配信しようと構わないからである。以下、ストリーミング配信用データのフォーマットが第2のフォーマットであって、他のフォーマットを用いていないことが明確である場合には、単に「ストリーミング配信用データ」と表現する。
【0046】
ストリーミング配信サーバ200は、自身の記憶装置に記憶されている複数のストリーミング配信用データ(のファイル)から、配信要求されたオーディオ/ビデオデータを含むストリーミング配信用データ(のファイル)を読み出し、そのストリーミング配信用データ(のファイル)に含まれる3種類のデータのうち、まずMIDIデータを配信し、次に同期用マップデータを配信する。MIDIデータも同期用マップデータも、オーディオ/ビデオデータと比較してそのデータ容量は非常に小さく、ストリーミング配信によって配信する必要はないため、ダウンロード配信(本実施の形態では、TCPを用いた配信)によって配信される。MIDIデータおよび同期用マップデータの配信が終了すると、ストリーミング配信サーバ200は、オーディオ/ビデオデータのストリーミング配信を開始する。なお、MIDIデータと同期用マップデータもストリーミング配信するようにしてもよい。
【0047】
ストリーミング配信サーバ200は、MIDIデータおよび同期用マップデータとオーディオ/ビデオデータとを異なったプロトコルで配信するものの、いずれのデータもパケット形式で配信するので、電子鍵盤楽器100は、各データのパケットを、たとえば前記通信I/F11内に設けられた1つの受信バッファ(図示せず)で受信し、所定量溜まった(受信した)時点でデータの種類に応じた処理を行う。具体的には、受信したデータがMIDIデータあるいは同期用マップデータの場合には、そのデータを受信バッファから前記RAM8内に移動させて保存し、受信したデータがオーディオ/ビデオデータの場合には、そのデータを受信バッファから直接読み出してストリーミング再生する。
【0048】
電子鍵盤楽器100は、オーディオ/ビデオデータのストリーミング再生に合わせてMIDIデータを再生し、MIDIデータの再生によって得られたノートイベント(ノートオンイベントあるいはノートオフイベント)を前記鍵駆動回路3に供給することで鍵盤1を自動駆動させるようにしている。このため、オーディオ/ビデオデータのストリーミング再生を開始させるタイミングとMIDIデータの再生を開始させるタイミングとを連携させるようにしている。より具体的には、オーディオ/ビデオデータが所定量溜まった時点で、そのオーディオ/ビデオデータのストリーミング再生を開始させるとともに、MIDIデータの再生を開始させる。さらに、MIDIデータの再生によって得られたノートイベントが鍵駆動回路3に供給されてから駆動対象となる鍵の押鍵あるいは離鍵が完了するまでにかかる時間差(たとえば、50〜100msec程度)を考慮して、MIDIデータの再生を開始させてから当該時間差だけ待った後、オーディオ/ビデオデータのストリーミング再生を開始させるようにしている。これにより、オーディオ/ビデオデータのストリーミング再生とMIDIデータの再生を同時に開始させたときに生じる、サウンドシステム13から発生するピアノ音と鍵盤1の押離鍵とのわずかなずれまでをも解消させることができる。ただしこのずれの程度は、鍵駆動回路3や前記鍵駆動機構1eの性能によって変動するため、このずれがその性能によって無視できる程度であれば、オーディオ/ビデオデータのストリーミング再生とMIDIデータの再生を同時に開始させるようにしてもよい。
【0049】
オーディオ/ビデオデータのストリーミング再生とMIDIデータの再生が進んで行くと、両データの元々のテンポの違いから、オーディオ/ビデオデータのストリーミング再生とMIDIデータの再生との間にずれが生じることになる。そこで電子鍵盤楽器100では、同期用マップデータに基づいてMIDIデータの再生テンポを当該MIDIデータの元々のテンポから変動させ、オーディオ/ビデオデータの再生テンポに合わせる(同期させる)ようにしている。同期用マップデータが前記テンポチェンジマップデータである場合には、MIDIデータの再生タイミングがテンポチェンジマップデータに登録されている各テンポチェンジデータに含まれるタイミング(テンポを変化させるタイミング)に至る度に、電子鍵盤楽器100は、現在の再生テンポを当該テンポチェンジデータに含まれるテンポ値に変更する。これにより、MIDIデータの再生テンポがその都度更新されて、オーディオ/ビデオデータの再生テンポに追従することになる。一方、同期用マップデータが前記サンプル位置マップデータである場合には、MIDIデータの再生タイミングが各小節の先頭(小節線の位置)に至る度に、電子鍵盤楽器100は、当該小節線の位置を含むサンプル位置データから、そこに含まれるオーディオ/ビデオデータのサンプル位置を読み出し、そのオーディオ/ビデオデータのサンプル位置(サンプル番号)と実際に再生されているオーディオ/ビデオデータのサンプル位置(サンプル番号)を比較し、両者が一致するようにMIDIデータの再生タイミングを合わせる。これにより、MIDIデータの再生タイミングがその都度更新されて、オーディオ/ビデオデータの再生タイミングに追従することになる。なお本実施の形態では、MIDIデータの再生テンポや再生タイミングを変動させ、オーディオ/ビデオデータの再生テンポは元々の再生テンポのままとしたが、これは説明の都合上そうしたに過ぎないので、オーディオ/ビデオデータの再生テンポあるいは再生タイミングを変動させ、MIDIデータの再生テンポは元々のテンポのままとしてもよい。
【0050】
なお、ストリーミング配信用データとして前記第1フォーマットのストリーミング配信用データを用いた場合、電子鍵盤楽器100はMIDIデータをそのまま再生するだけで、MIDIデータの再生テンポがオーディオ/ビデオデータの再生テンポに追従して行くことになる。
【0051】
このように本実施の形態では、オーディオ/ビデオデータをストリーミング再生しながら、これに合わせて鍵盤を自動駆動することが可能となる。
【0052】
次に、この制御処理を詳細に説明する。
【0053】
ユーザが前記設定操作子2に含まれるモード切替スイッチ(図示せず)を操作することにより、動作モードを他のモードからストリーミング再生モードに切り替えた後、前述のように、ストリーミング配信サーバ200に対して、ストリーミング配信可能なオーディオ/ビデオデータの名称一覧の配信を要求すると、ストリーミング配信サーバ200から電子鍵盤楽器100にその名称一覧が送信されて、電子鍵盤楽器100の表示装置9上に表示される。この中からユーザがいずれかの名称を選択して、その名称のオーディオ/ビデオデータのストリーミング配信を指示すると、前記CPU6は、ファイル要求&(および)受信処理を起動する。
【0054】
図5は、このファイル要求&受信処理の手順を示すフローチャートであり、同図には、この処理に応じてストリーミング配信サーバ200が実行するストリーミング配信処理の手順を示すフローチャートも記載されている。
【0055】
本ファイル要求&受信処理が起動されると、まずCPU6は、ユーザによってストリーミング配信が指示されたオーディオ/ビデオデータを含むファイルの配信要求をストリーミング配信サーバ200に送信する(ステップS1)。これに応じてストリーミング配信サーバ200は、配信要求されたファイルをストリーミング配信する(ステップS101)。このときストリーミング配信サーバ200は、前述のように第2フォーマットのストリーミング配信用データを配信するので、ステップS101の処理では、ストリーミング配信サーバ200は、ストリーミング配信要求されたオーディオ/ビデオデータを含むストリーミング配信用データ(のファイル)から、まずMIDIデータを読み出して(ダウンロード)配信し、すべてのMIDIデータの配信が完了すると、次に同期用マップデータを読み出して(ダウンロード)配信し、すべての同期用マップデータの配信が完了すると、次にオーディオ/ビデオデータを読み出してストリーミング配信する。
【0056】
ストリーミング配信サーバ200から電子鍵盤楽器100に配信されて来たデータ(前述のようにパケット形式のデータ)は、前述のようにそのデータの種類に拘わらず前記受信バッファに蓄積される(ステップS2)。そして、受信バッファへのデータの蓄積は、ストリーミング配信サーバ200からのデータの配信が完了するまでなされる(ステップS3)。ただし、受信バッファにデータが所定量溜まると、図6を用いて後述するように、その溜まったデータは、前記RAM8内に保存されて受信バッファから消去されるか、あるいはストリーミング再生されて再生された分だけ受信バッファから消去されるので、受信したデータが受信バッファから溢れてしまうことはない。
【0057】
図6は、電子鍵盤楽器100、特にCPU6が実行するストリーミング再生制御処理の手順を示すフローチャートである。本ストリーミング再生制御処理は、前記ファイル要求&受信処理が起動されたときに起動され、ファイル要求&受信処理が終了したときに終了する。
【0058】
本ストリーミング再生制御処理が起動されると、まずCPU6は、受信バッファに所定量のデータが溜まっているかどうかをチェックし(ステップS11)、受信バッファに所定量のデータが溜まっていなければ溜まるまで待ち、溜まっていればそのデータの種類を判別する(ステップS12)。そしてCPU6は、溜まったデータがMIDIデータ、同期用マップデータまたはオーディオ/ビデオデータのいずれであるかに応じて処理を分岐させる。
【0059】
溜まったデータがMIDIデータである場合には、CPU6は、処理をステップS13に進め、そのMIDIデータをRAM8の所定位置に確保されたMIDIデータ再生用バッファ(図示せず)に保存し、受信バッファに溜まったMIDIデータを消去する。なお所定量のデータが、ストリーミング配信サーバ200が配信すべきMIDIデータ全体のデータ量より小さい場合もあるが、この場合には、所定量のMIDIデータを受信する毎にCPU6は、その受信した所定量のMIDIデータをMIDIデータ再生用バッファに追加保存して行く。これにより、何度かの追加保存が繰り返された後、最終的にMIDIデータ全体がMIDIデータ再生用バッファに保存される。
【0060】
また、溜まったデータが同期用マップデータである場合には、CPU6は、処理をステップS14に進め、その同期用マップデータをRAM8の所定位置に確保された同期用マップデータ保存用バッファ(図示せず)に保存し、受信バッファに溜まった同期用マップデータを消去する。同期用マップデータ全体のデータ量も、受信バッファで受信される所定量より大きい場合があるが、この場合には、MIDIデータでの場合と同様に、所定量の同期用マップデータが何度か同期用マップデータ保存用バッファに追加保存された後、最終的に同期用マップデータ全体が同期用マップデータ保存用バッファに保存される。なお図6において、ステップS14の処理の枠が破線で描かれているが、これは、前記第1フォーマットのストリーミング配信用データが配信される場合のように同期用マップデータが配信されないことがあり、この場合にはステップS14の処理は省略されることを意味している。
【0061】
さらに、溜まったデータがオーディオ/ビデオデータである場合には、CPU6は、処理をステップS15に進め、まずMIDIデータの再生を開始するとともに鍵盤1から入力されるキーオン/キーオフを無効化する。MIDIデータの再生は、図7を用いて後述するように、所定時間(本実施の形態では、1ティック(tick))毎に発生する第1のタイマ割込み信号(以下、「タイマ割込み信号#1」という)に応じて起動されるMIDIデータ再生処理によってなされるので、上記「MIDIデータの再生を開始する」とは、タイマ割込み信号#1の発生を許可することを意味する。なお、タイマ割込み信号#1は、MIDIデータが「再生中」でないとき(たとえば、早送り/巻き戻し/一時停止などが継続中のとき)でも発生させ、さらに「再生中」かどうかによってMIDIデータ再生処理内の手順を異ならせているので、つまり、「再生中」かどうかの判別を必要とするので、本実施の形態ではこの判別を、現在の再生状況を示すためにRAM8の所定位置に設けた再生状況インデックス(図示せず)に基づいて行うようにしている。再生状況インデックスには、「再生中」、「早送り中」、「巻き戻し中」、「一時停止中」、「再開」および「停止中」などを示す情報のいずれかが格納される。そしてCPU6は、タイマ割込み信号#1の発生を許可する際に、再生状況インデックスへ「再生中」(を示す情報)の書き込みも行うようにしている。また、鍵盤1からのキーオン/キーオフを無効化するのは、ストリーミング再生モードでは、鍵盤1が自動駆動されたとしても(もちろんユーザ自身が押離鍵したとしても)、そのキーオン/キーオフに応じた楽音信号を音源・効果回路12から発生させないようにしているからである。つまりストリーミング再生モードでは、サウンドシステム13からは、鍵盤1に対する鍵操作に応じて得られる(通常の演奏モードでは得られるはずの)楽音は発生されず、オーディオ/ビデオデータをストリーミング再生することで得られた楽音が発生される。なお、キーオン/キーオフを無効化する方法としては、前記検出回路4が鍵盤1の各鍵に対して行うキースキャンを停止させる方法や、鍵盤1に対する押離鍵があったとしても検出回路4からキーオン/キーオフを出力させない方法などが考えられる。もちろん、これらの方法以外でも、鍵盤1に対する押離鍵があったとしても音源・効果回路12からそれに応じた楽音信号を発生させないようにする方法であれば、どのような方法を採用してもよい。
【0062】
次にCPU6は、所定時間(前述のように、たとえば50〜100msec程度)待った(ステップS16)後、オーディオ/ビデオデータの再生を開始させる(ステップS17)。所定時間待つ理由は、制御処理の概要の説明内で前述したので、ここでは繰り返さない。ただし一時停止状態から再生が再開されたとき(前記「再開」時)には、ステップS16の「所定時間待つ処理」は行わない。その理由は、再生開始時に生じさせた時間的なずれが再開時にも維持されているからである。したがって「早送り」や「巻き戻し」などで、再生開始時に生じさせた時間的なずれが解消された場合には、その後の再生時に再度、ステップS16の「所定時間待つ処理」を行うようにすればよい。オーディオ/ビデオデータの再生は、図8を用いて後述するように、所定時間(本実施の形態では、10msec)毎に発生する第2のタイマ割込み信号(以下、「タイマ割込み信号#2」という)に応じて起動されるオーディオ/ビデオデータ再生処理によってなされるので、上記「オーディオ/ビデオデータの再生を開始させる」とは、タイマ割込み信号#2の発生を許可することを意味する。なお、タイマ割込み信号#2は、オーディオ/ビデオデータが「再生中」でないときでも発生させ、さらに「再生中」かどうかによってオーディオ/ビデオデータ再生処理内の手順を異ならせているので、オーディオ/ビデオデータ再生処理用の再生状況インデックスも必要であるが、MIDIデータの再生状況とオーディオ/ビデオデータの再生状況とは連動するので、再生状況インデックスは1つだけ設けることにし、これをMIDIデータ再生処理でもオーディオ/ビデオデータ再生処理でも用いることにする。
【0063】
次にCPU6は、MIDIデータおよびオーディオ/ビデオデータの再生中(=再生状況インデックスに「再生中」が書き込まれているとき)に受信バッファが空になったかどうかを判別する(ステップS18)。この判別は、オーディオ/ビデオデータのストリーミング再生中に、通信ネットワーク300が混雑したり、ユーザが早送り/巻き戻し/一時停止などを指示したりして、受信バッファ内のオーディオ/ビデオデータが空になっても、MIDIデータおよびオーディオ/ビデオデータの再生を続けていれば、MIDIデータの再生とオーディオ/ビデオデータの再生との間にずれが生じる(つまり、MIDIデータの再生は前記MIDIデータ再生用バッファに保存されているMIDIデータに基づいてなされるので、受信バッファ内のデータが空であるかどうかに拘わらずその再生は適正に進行するのに対して、オーディオ/ビデオデータの再生は受信バッファ内のデータに基づいてなされるので、受信バッファ内のデータが空になるとその再生は不可能となって、適正に進行しなくなるからである)などの問題を事前に解消するために行っている。したがって、ステップS18の判別で、MIDIデータおよびオーディオ/ビデオデータの再生中に受信バッファが空になったときには、CPU6は、その再生を一時停止させる。つまり、再生状況インデックスに「一時停止中」を書き込む。
【0064】
図7は、前記MIDIデータ再生処理の手順を示すフローチャートであり、本MIDIデータ再生処理は、前述のように1ティック毎に発生するタイマ割込み信号#1に応じて起動され、実行される。ここでタイマ割込み信号#1の発生周期として1ティックを用いたのは、SMFにおけるデルタタイムは1ティックを単位とする整数値によって表されているため簡単にMIDIデータを再生することができるからである。これ以上の理由はないので、MIDIデータの再生を適正に行うことができれば、タイマ割込み信号#1の発生周期は1ティックに限らない。なお、1ティック=60×1000/テンポ/タイムベース(msec)によって算出される。ただし、タイムベースは4分音符長のティック数を示し、前記ヘッダチャンク内に記載されている。
【0065】
本MIDIデータ再生処理は主として、
(1)同期用マップデータに応じたテンポ/タイミング変更処理(ステップS21)
(2)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理(ステップS22)
(3)再生中の処理(ステップS24〜S29)
によって構成され、
上記(3)の再生中の処理は主として、
(3a)テンポチェンジイベントに応じたテンポ変更処理(ステップS24)
(3b)ノートイベントに応じた鍵駆動処理(ステップS26)
(3c)MIDIデータ再生処理の終了時処理(ステップS28,S29)
によって構成されている。ただし上記(1)の処理と上記(3a)の処理は、後述するように、ストリーミング配信用データのフォーマットの種類(つまり、同期用マップデータが含まれるかどうか)に応じていずれか一方が選択的に実行される。
【0066】
本MIDIデータ再生処理が起動されると、まずCPU6は、処理を前記(1)の同期用マップデータに応じたテンポ/タイミング変更処理に進める。この(1)同期用マップデータに応じたテンポ/タイミング変更処理では、CPU6は、前記同期用マップデータ保存用バッファに保存されている同期用マップデータを検索し、同期用マップデータに登録されているデータの中で現在読み出すべきものがあれば、それを読み出す。
【0067】
同期用マップデータが前記テンポチェンジマップデータである場合には、このテンポチェンジマップデータには、前述のようにテンポチェンジデータが1つ以上登録されているので、前記検索では、現在の再生タイミングと各テンポチェンジデータ内のタイミングとを比較し、一致するものがあれば、そのタイミングを含むテンポチェンジデータからそこに含まれているテンポ値を読み出す。そしてCPU6は、読み出したテンポ値に応じてタイマ割込み信号#1の発生周期を変更する。タイマ割込み信号#1の発生周期である1ティックは、その算出式から分かるようにテンポに依存するので、タイマ割込み信号#1の発生周期を変更することが、MIDIデータ再生処理のテンポを変更することになる。ここで現在の再生タイミングは、本実施の形態では、当該MIDIデータの再生を開始してから現在に至るまでの総ティック数で表現する方法を採用する。そしてティック数のカウントは、前記(3)の再生中の処理内で行うようにすればよい。なお現在の再生タイミングを表現する方法には、上記総ティック数で表現する方法の他にも、当該MIDIデータの再生を開始してから現在に至るまでの経過時間で表現する方法も考えられるが、経過時間を本MIDIデータ再生処理中で計時した場合、本MIDIデータ再生処理の起動周期としてテンポに応じて値の変動するティックを用い、しかもテンポは頻繁に変動する可能性があるので、テンポが変動する度にそれを考慮して経過時間を計時しなければならず、他方、経過時間を計時するために作成した専用ルーチン中で計時した場合、MIDIデータの再生を開始すると同時に経過時間の計時を開始させ、その再生が一時停止あるいは停止すると同時に経過時間の計時も一時停止あるいは停止させなければならず、双方とも制御処理が複雑化するため、本実施の形態では、制御処理がより簡単な総ティック数で表現する方法を採用している。ただし、既に他の目的で、たとえばMIDIデータの再生時間を表示させる目的で経過時間を計時している場合には、それを現在の再生タイミングに利用するようにしてもよい。
【0068】
一方、同期用マップデータが前記サンプル位置マップデータである場合には、まずCPU6は、
(A)現在の再生タイミングが当該MIDIデータに含まれるいずれかの小節線イベントの発生タイミングに一致しているかどうか
(B)オーディオ/ビデオデータの現在の再生位置(現在サンプル位置)がサンプル位置マップデータに登録されているいずれかのサンプル位置データによって示されるサンプル位置に一致しているかどうか
の各判別を常時行う。次にCPU6は、上記(A)および(B)の各判別結果に応じて、次の処理を行う。つまり、
(A)の判別結果が否定&(B)の判別結果が否定:この場合は、現在の再生タイミングを変更すべきかどうかを判定すべきタイミングになっていない場合に相当するので、CPU6は特に何もしない、
(A)の判別結果が肯定&(B)の判別結果が肯定:この場合は、現在の再生タイミングがいずれか1つの小節線の位置にあり、かつその小節線の位置で再生されるべきオーディオ/ビデオデータが再生されている場合に相当し、現在の再生タイミングを変更する必要はないので、CPU6は特に何もしない。ただしこの場合、(A)の判別で対象となっている小節線の番号と(B)の判別で対象となっている小節線の番号とが“1”(あるいは2以上の整数値)だけずれていることもあり得るが、MIDIデータの再生とオーディオ/ビデオデータの再生とが1小節(あるいは2小節以上)ずれて一致することは通常考えられないので、ここではこのような特別な場合は考えない
(A)の判別結果が肯定&(B)の判別結果が否定:この場合は、MIDIデータの現在の再生タイミングがオーディオ/ビデオデータの現在の再生位置に対応して再生されるべきタイミングより速い場合に相当するので、CPU6は、サンプル位置マップデータに登録されているサンプル位置データのうち、(A)の判別で対象となっている小節線の番号に一致するものによって示されるサンプル位置に達するまでの間、MIDIデータの再生を一時停止させ、オーディオ/ビデオデータの再生が追いつくのを待つ
(A)の判別結果が否定&(B)の判別結果が肯定:この場合は、MIDIデータの現在の再生タイミングがオーディオ/ビデオデータの現在の再生位置に対応して再生されるべきタイミングより遅い場合に相当するので、CPU6は、現在の再生タイミングの総ティック数を次の小節線の位置(小節線イベント)のティック数に変更する。
【0069】
以上のようにして現在の再生タイミングを変更することにより、タイマ割込み信号#1の発生周期(本MIDIデータ再生処理の起動周期)を変更しなくても、MIDIデータ再生処理はオーディオ/ビデオデータ再生処理に追従することになる。なお上述のように、本MIDIデータ再生処理中で適宜オーディオ/ビデオデータの再生位置を使用するので、本MIDIデータ再生処理は常時、オーディオ/ビデオデータ再生処理からその再生位置を検知可能に構成されているものとする。
【0070】
なお図7のステップS21の処理中に記載の“/”は、同期用マップデータがテンポチェンジマップデータであるかサンプル位置マップデータであるかに応じて、“/”の前または後の処理のいずれかの処理がなされることを示している。またステップS21の処理の枠が破線で描かれているが、これは、前記図6のステップS14の処理と同様に、同期用マップデータが配信されない場合には、ステップS21の処理も省略されることを意味している。
【0071】
次にCPU6は、処理を前記(2)の早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理に進める。この(2)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理では、CPU6は、ユーザによって早送り/巻き戻し/一時停止/再開等の指示がなされると、その指示に応じた制御処理を行う。なお、ここでの早送り/巻き戻し/一時停止/再開等の指示は、本MIDIデータ再生処理に対してのものではなく、オーディオ/ビデオデータ再生処理に対してのものである。つまり、ここでの早送り/巻き戻し/一時停止/再開等の指示は、ユーザがオーディオ/ビデオデータ再生処理に対して行った早送り/巻き戻し/一時停止/再開等の指示が、オーディオ/ビデオデータ再生処理中の、後述する(11)の早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理(特に、ステップS33の処理)を介して本MIDIデータ再生処理側に送信されたものである。本MIDIデータ再生処理の主たる目的は、オーディオ/ビデオデータの再生に連携して鍵盤1を自動駆動することにあるので、MIDIデータ再生処理のみに対する早送り/巻き戻し/一時停止/再開等について考慮する必要がないからである。このように、この(2)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理はオーディオ/ビデオデータ再生処理中の(11)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理と密接に関連するので、この(2)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理についての説明は、(11)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理についての説明の中で一緒に行うことにする。
【0072】
次にCPU6は、前記再生状況インデックスに書き込まれている情報をチェックし(ステップS23)、再生状況インデックスに「再生中」が書き込まれているときには、処理を前記(3)の再生中の処理に進める(ステップS23→S25)一方、再生状況インデックスに「再生中」が書き込まれていないときには、処理を本MIDIデータ再生処理から抜けさせる(ステップS23→リターン)。
【0073】
処理が(3)再生中の処理に進むと、まずCPU6は、現在の再生タイミングがノートイベントの処理タイミングかどうかを判別する(ステップS25)。現在の再生タイミングが、前述のように当該MIDIデータの再生を開始してから現在に至るまでの総ティック数であるのに対して、MIDIデータを構成する各イベントに含まれるデルタタイムは、隣接するイベント間の時間間隔(相対時間)をティック数で表現したものである。したがって上記ステップS25の判別では、先頭のイベントから判別対象のイベントまでの各イベントに含まれているデルタタイム(のティック数)を加算した結果(累積ティック数)が現在の再生タイミング(総ティック数)と一致するかどうかを判別し、その結果、両者が一致しかつそのイベントがノートイベントであるときに、現在の再生タイミングがノートイベントの処理タイミングであると判定する。ステップS25の判別で、現在の再生タイミングがノートイベントの処理タイミングであるときには、CPU6は、処理を前記(3b)のノートイベントに応じた鍵駆動処理に進める。この(3b)ノートイベントに応じた鍵駆動処理では、CPU6は、そのノートイベントを前記鍵駆動回路3に供給する。このとき、供給されたノートイベントがノートオンイベントであれば、鍵駆動回路3からそのノートオンイベントに含まれるノートナンバが割り当てられた鍵の鍵駆動機構に所定の電力が供給されて、当該鍵は押鍵状態になる一方、供給されたノートイベントがノートオフイベントであれば、鍵駆動回路3からそのノートオフイベントに含まれるノートナンバが割り当てられた鍵の鍵駆動機構に供給されている電力が停止されて、当該鍵は離鍵状態になる。なお、処理がこの(3b)ノートイベントに応じた鍵駆動処理に移行する際の再生状況は、前述のように「再生中」であるので、再生状況が「再生中」から「早送り中」、「巻き戻し中」あるいは「一時停止中」に変化して、その再生状況が継続する場合には、鍵盤1の押鍵状態が継続してしまうことがある。したがって、この場合に押鍵状態の鍵があれば、それを離鍵状態に戻すようにすることが望ましい。
【0074】
次にCPU6は、現在の再生タイミングが当該MIDIデータの末尾に到達したかどうかを判別し(ステップS27)、末尾に到達したときには、処理を前記(3c)のMIDIデータ再生処理の終了時処理に進める。この(3c)MIDIデータ再生処理の終了時処理では、CPU6は、タイマ割込み信号#1の発生を不許可にすることで、本MIDIデータ再生処理を終了させる(ステップS28)とともに、鍵盤1から入力されるキーオン/キーオフを有効化する(ステップS29)。
【0075】
なお、現在の再生タイミングの更新(総ティック数のインクリメント)は、本MIDIデータ再生処理を「リターン」で抜ける直前、ただし(3)再生中の処理内で行うようにすればよい。
【0076】
前記(3a)のテンポチェンジイベントに応じたテンポ変更処理は、前記第1フォーマットのストリーミング配信用データのように同期用マップデータを含まないストリーミング配信用データが配信されたときに実行される処理である。つまり、この(3a)テンポチェンジイベントに応じたテンポ変更処理と前記(1)同期用マップデータに応じたテンポ/タイミング変更処理とは、ストリーミング配信用データのフォーマットの種類に応じて選択されたいずれか一方が実行される。このため、図7におけるステップS21の処理の枠は破線で描かれ、ステップS24の処理の枠は一点鎖線で描かれている。この(3a)テンポチェンジイベントに応じたテンポ変更処理では、まずCPU6は、現在の再生タイミングがテンポチェンジイベントの処理タイミングかどうかを判別する。この判別は、前記ステップS25の判別に対してイベントの種類が異なるだけであるので、その説明は省略する。この判別の結果、現在の再生タイミングがテンポチェンジイベントの処理タイミングのときには、そのテンポチェンジイベントで示されるテンポに現在テンポを変更する。つまりCPU6は、前記ステップS21の処理のうち、“/”の前の処理と同様にして、そのテンポチェンジイベントで示されるテンポ値に応じてタイマ割込み信号#1の発生周期を変更する。なお、処理がこの(3a)テンポチェンジイベントに応じたテンポ変更処理に移行する際の再生状況は、前述したように「再生中」であるが、「早送り中」および「巻き戻し中」などの「一時停止中」以外であっても、この(3a)テンポチェンジイベントに応じたテンポ変更処理が実行されることが望ましい。このため、図7のステップS23の処理中にはカッコ書きで「一時停止中ではない?」と記載されている。ただし「早送り中」および「巻き戻し中」に鍵盤1が自動駆動されると、ユーザに違和感を生じさせる虞があるので、前記(3b)のノートイベントに応じた鍵駆動処理は「再生中」だけ(もちろん「再開」時も含む)に実行されることが望ましい。
【0077】
図8は、前記オーディオ/ビデオデータ再生処理の手順を示すフローチャートであり、本オーディオ/ビデオデータ再生処理は、前述のように10msec毎に発生するタイマ割込みに応じて起動され、実行される。ここでタイマ割込みの周期として10msecを用いたのは、オーディオ/ビデオデータの再生に適当な時間と考えられるからである。したがって、オーディオ/ビデオデータの再生を適正に行うことができれば、10msecに限らない。
【0078】
本オーディオ/ビデオデータ再生処理は主として、
(11)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理(ステップS32〜S34)
(12)再生中の処理(ステップS36〜S39)
によって構成され、
上記(12)の再生中の処理は主として、
(12a)オーディオ/ビデオデータ再生処理(ステップS36,S37)
(12b)オーディオ/ビデオデータ再生処理の終了時処理(ステップS39)
によって構成されている。
【0079】
本オーディオ/ビデオデータ再生処理が起動されると、まずCPU6は、ユーザによって早送り/巻き戻し/一時停止/再開等の操作があったかどうかを判別し(ステップS31)、早送り/巻き戻し/一時停止/再開等の操作があったときには、処理を前記(11)の早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理に進め(ステップS31→S32)、早送り/巻き戻し/一時停止/再開等の処理がなかったときには、処理を後述するステップS35に進める(ステップS31→S35)。
【0080】
この(11)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理では、CPU6は、オーディオ/ビデオデータの再生を早送り/巻き戻し/一時停止/再開等する(ステップS32)。具体的には、「早送り」の操作がなされたときには、CPU6は、たとえば、前記図5のファイル要求&受信処理のステップS1によりストリーミング配信サーバ200に「早送り」を指示する。これに応じてストリーミング配信サーバ200は、前記ステップS101によりその「早送り」の指示に応じたオーディオ/ビデオデータをストリーミング配信する。本実施の形態で採用しているRTSPは、前述のようにVCR形式の制御機能が備わっているので、電子鍵盤楽器100からストリーミング配信サーバ200に「早送り」の指示を行うだけで、ストリーミング配信サーバ200からその「早送り」の指示に応じたオーディオ/ビデオデータがストリーミング配信される。「巻き戻し」、「一時停止」、「再開」および「指定した位置からの再生」などの操作がなされたときにも同様に、CPU6は対応する指示をストリーミング配信サーバ200に行う。なおステップS32では、ストリーミング配信サーバ200に指示した再生状態を前記再生状況インデックスに書き込む処理も行うことにする。
【0081】
次にCPU6は、上記ステップS32でストリーミング配信サーバ200に行った指示と同様の指示をMIDIデータ再生処理に対しても行う(ステップS33)。
【0082】
さらにCPU6は、オーディオ/ビデオデータの現在サンプル位置(現在の再生位置)を更新する(ステップS34)。ここで現在サンプル位置の更新は、電子鍵盤楽器100からの早送り/巻き戻し/一時停止/再開等の指示に応じてストリーミング配信サーバ200がストリーミング配信しようとするオーディオ/ビデオデータのサンプルを決定し、そのサンプル位置を電子鍵盤楽器100に送信したときに、このサンプル位置を用いて行われる。そして現在サンプル位置の更新を、当該オーディオ/ビデオデータを実際に再生する時点より前に行うのは、MIDIデータ再生処理において、当該オーディオ/ビデオデータが実際に再生される時点より前に、現在サンプル位置の更新値が使用されるからである。またRTSP以外の、VCR形式の制御機能が備わっていないプロトコルを採用した場合には、早送り/巻き戻し/指定した位置からの再生等の操作がなされると、電子鍵盤楽器100側でその操作に応じたサンプル位置を決定し、決定したサンプル位置のオーディオ/ビデオデータがストリーミング配信されるようにストリーミング配信サーバ200に要求しなければならないので、この場合には、現在サンプル位置の更新は当然ながら、当該オーディオ/ビデオデータを実際に再生する時点より前に行われる。
【0083】
前記ステップS33で、CPU6がMIDIデータ再生処理に対して、早送り/巻き戻し/一時停止/再開等の指示を行うと、前記図7のステップS22の(2)早送り/巻き戻し/一時停止/再開等の指示に応じた制御処理で、CPU6は、その指示に応じた制御を行う。具体的には、「早送り」が指示されるとCPU6は、現在サンプル位置をオーディオ/ビデオデータ再生処理から検知し、この現在サンプル位置に基づいて、MIDIデータ再生処理における現在の再生タイミングを更新する。たとえば、MIDIデータに含まれる各小節線イベントと、該各小節線イベントの再生位置でそれぞれ再生すべき各オーディオ/ビデオデータのサンプル位置(サンプル番号)とを対応付けたマップデータ(前記同期用マップデータとは異なる)を予め作成しておき、上記再生タイミングの更新は、このマップデータに基づいて行うようにすればよい。もちろん、検知された現在サンプル位置が常に、いずれかの小節線イベントの再生位置に一致する訳ではないので、一致しないときには、CPU6は、現在サンプル位置とこれに最も近い小節線イベントの再生位置から演算によって現在の再生タイミングを算出する。そしてCPU6は、更新後の再生タイミングに基づいて同期用マップデータを検索し、現在テンポ/現在タイミングを変更する。具体的には、同期用マップデータが前記テンポチェンジマップデータである場合には、CPU6は、同期用マップデータから更新後の再生タイミングに一致するあるいはその直前のテンポチェンジデータを検索し、前記ステップS21の処理と同様にして、そのテンポチェンジデータに含まれているテンポ値を読み出し、読み出したテンポ値に応じてタイマ割込み信号#1の発生周期を変更する。一方、同期用マップデータが前記サンプル位置マップデータである場合には、CPU6は特に何もしない。その後に前記ステップS21の処理が実行されると、現在タイミングが変更されて、MIDIデータ再生処理は自動的にオーディオ/ビデオデータ再生処理に追従するからである。「巻き戻し」あるいは「指定した位置からの再生」が指示されたときの各制御処理は、「早送り」が指示されたときの上記処理から簡単に類推できるので、その説明は省略する。「一時停止」あるいは「再開」が指示されたときには、CPU6は特に何もしない。「一時停止」が指示されたときになされるべき「現在の再生タイミングのインクリメントの停止」は、再生状況インデックスに「一時停止中」が書き込まれていれば(このとき再生状況インデックスには、前述のように「一時停止中」が書き込まれている)、前記(3)再生中の処理の処理が迂回されることで自動的になされ、「再開」が指示されたときになされるべき「現在の再生タイミングのインクリメントの再開」は、前記再生状況インデックスに「再開」が書き込まれていれば(このとき再生状況インデックスには、前述のように「再開」が書き込まれている)、前記(3)再生中の処理が再開されることで自動的になされるからである。
【0084】
図8に戻り、次にCPU6は、再生状況インデックスに書き込まれている情報をチェックし(ステップS35)、再生状況インデックスに「再生中」が書き込まれているときには、処理を前記(12)の再生中の処理に進める(ステップS35→S36)一方、再生状況インデックスに「再生中」が書き込まれていないときには、処理を本オーディオ/ビデオデータ再生処理から抜けさせる(ステップS35→リターン)。
【0085】
処理が(12)再生中の処理に進むと、CPU6は、処理を前記(12a)のオーディオ/ビデオデータ再生処理に進める。この(12a)オーディオ/ビデオデータ再生処理では、まずCPU6は、前記ステップS34と同様にして、オーディオ/ビデオデータの現在サンプル位置を更新する(ステップS36)。次にCPU6は、前記受信バッファからオーディオ/ビデオデータを読み出して再生する(ステップS37)。このとき、読み出したオーディオ/ビデオデータが暗号化されていればそれを解読し、圧縮化されていればそれを伸長した上で、再生する。なお、読み出したオーディオ/ビデオデータが暗号化されたものであるか圧縮化ものであるかなどの情報は、当該データパケットのヘッダに記載されているので、それを利用すればよい。また、この(12a)オーディオ/ビデオデータ再生処理は、「早送り中」および「巻き戻し中」などの「一時停止中」以外であっても実行されることが望ましいので、図8のステップS35の処理中にはカッコ書きで「一時停止中ではない?」と記載されている。
【0086】
次にCPU6は、現在サンプル位置が当該オーディオ/ビデオデータの末尾に到達したかどうかを判別し(ステップS38)、末尾に到達したときには、処理を前記(12b)のオーディオ/ビデオデータ再生処理の終了時処理に進める。この(12b)オーディオ/ビデオデータ再生処理の終了時処理では、CPU6は、タイマ割込み信号#2の発生を不許可にすることで、本オーディオ/ビデオデータ再生処理を終了させる(ステップS39)。なおステップS39の終了処理では、再生状況インデックスへの「停止中」の書き込みも行う。
【0087】
以上の制御処理についての説明では、第2フォーマットのストリーミング配信用データが常に配信されるものとしたので、以下、他のフォーマットのストリーミング配信用データが配信されるときの制御処理について説明する。ただし、前者の制御処理と後者の制御処理との間には共通する部分が多いので、相違する部分について説明する。
【0088】
第1フォーマットのストリーミング配信用データが配信される場合、図5のステップS101で、ストリーミング配信サーバ200は当然ながら、同期用マップデータを配信しない。このため電子鍵盤楽器100(のCPU6)は、同期用マップデータに関連する処理、つまり図6のステップS14および図7のステップS21の各処理(輪郭が破線で描かれた処理)を実行しないが、同期用マップデータが配信されるときには実行されない図7のステップS24の処理(輪郭が一点鎖線で描かれた処理)を実行する。
【0089】
第3フォーマットのストリーミング配信用データが配信される場合、図5のステップS1で、電子鍵盤楽器100からストリーミング配信サーバ200に対して、ユーザによってストリーミング配信が指示されたオーディオ/ビデオデータを含むファイルの配信要求が送信されたとしても、ステップS101で、ストリーミング配信サーバ200は配信対象となるMIDIデータのファイルのみ配信し、オーディオ/ビデオデータのファイルのストリーミング配信は行わない。これは、ストリーミング配信サーバ200側では当該MIDIデータのファイルに対応付けられたオーディオ/ビデオデータのファイルがどれであるか分からないからである。前述のように、オーディオ/ビデオデータのファイルを特定するコマンドはMIDIデータ内に埋め込まれているので、電子鍵盤楽器100は受信したMIDIデータ(のファイル)から、そこに埋め込まれているコマンドを読み出し、そのコマンドによって特定されるオーディオ/ビデオデータのファイルのストリーミング配信要求を、ステップS1の処理によりストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、当該オーディオ/ビデオデータを電子鍵盤楽器100にストリーミング配信する。これ以降の制御処理は、第1フォーマットのストリーミング配信用データが配信される場合の制御処理と同様であるので、その説明は省略する。
【0090】
第4フォーマットのストリーミング配信用データが配信される場合、図5のステップS1で、電子鍵盤楽器100からストリーミング配信サーバ200に対して、ユーザによってストリーミング配信が指示されたオーディオ/ビデオデータを含むファイルの配信要求が送信されると、ステップS101で、まずストリーミング配信サーバ200は当該オーディオ/ビデオデータの一部(先頭からMIDIデータのファイルを特定するコマンドが埋め込まれている部分まで)のみを配信する。電子鍵盤楽器100は、このオーディオ/ビデオデータの一部を受信し、そこに含まれているコマンドを読み出し、そのコマンドによって特定されるMIDIデータのファイルの配信要求を、ステップS1の処理によりストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、当該MIDIデータのファイルを電子鍵盤楽器100に配信する。MIDIデータのファイルの配信が終了するとストリーミング配信サーバ200は、残りのオーディオ/ビデオデータをストリーミング配信する。これ以降の制御処理は、第1フォーマットのストリーミング配信用データが配信される場合の制御処理と同様であるので、その説明は省略する。
【0091】
第5フォーマットのストリーミング配信用データが配信される場合、図5のステップS1で、電子鍵盤楽器100からストリーミング配信サーバ200に対して、ユーザによってストリーミング配信が指示されたオーディオ/ビデオデータを含むファイルの配信要求が送信されたとしても、ステップS101で、ストリーミング配信サーバ200は配信対象となる設定ファイルのみ配信し、MIDIデータおよびオーディオ/ビデオデータの各ファイルの配信は行わない。これは、ストリーミング配信サーバ200側では当該設定ファイルに対応付けられたMIDIデータおよびオーディオ/ビデオデータの各ファイルがどれであるか分からないからである。前述のように、MIDIデータおよびオーディオ/ビデオデータの各ファイルを特定する情報は設定ファイル内に記載されているので、電子鍵盤楽器100は受信した設定ファイルから、そこに記載されている特定情報を読み出し、その特定情報によって特定されるMIDIデータおよびオーディオ/ビデオデータの各ファイルの配信要求を、ステップS1の処理によりストリーミング配信サーバ200に送信する。これに応じてストリーミング配信サーバ200は、当該MIDIデータおよびオーディオ/ビデオデータの各ファイルを電子鍵盤楽器100に配信する。これ以降の制御処理は、第1フォーマットのストリーミング配信用データが配信される場合の制御処理と同様であるので、その説明は省略する。
【0092】
なお本実施の形態では、ビデオデータがストリーミング配信され、これをストリーミング再生する場合に、その映像(動画像)を電子鍵盤楽器100に設けた表示装置9(のLCD)に表示するようにしたが、これに限らず、電子鍵盤楽器100にディスプレイを外部接続し、このディスプレイ上に映像を表示するようにしてもよい。
【0093】
また本実施の形態では、オーディオ/ビデオデータのストリーミング再生も鍵盤1の自動駆動も電子鍵盤楽器100内で行うようにしたが、これに限らず、本発明をPC(パーソナルコンピュータ)とそれにMIDI接続した自動駆動可能の鍵盤によって構成し、PC側でオーディオ/ビデオデータのストリーミング再生を行わせ、鍵盤の自動駆動はPCから鍵盤側にノートイベントを送信して行わせるようにしてもよい。さらに、オーディオデータのストリーミング再生を行う場合には、PCに代えて通信ネットワークに接続可能なオーディオ機器を採用してもよいし、ビデオデータのストリーミング再生を行う場合には、PCに代えて通信ネットワークに接続可能なTV装置を採用してもよい。
【0094】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0095】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0096】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【0097】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0098】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【0099】
【図1】本発明の一実施の形態に係る電子鍵盤楽器の概略構成を示すブロック図である。
【図2】図1中の鍵盤の各鍵を駆動する駆動方法の一例を示す図である。
【図3】ネットワーク構成の一例を示す図である。
【図4】図1中のストリーミング配信サーバがストリーミング配信可能な複数種類のデータのフォーマットを示す図である。
【図5】図1の電子鍵盤楽器、特にCPUが実行するファイル要求&受信処理の手順を示すフローチャートである。
【図6】図1の電子鍵盤楽器、特にCPUが実行するストリーミング再生制御処理の手順を示すフローチャートである。
【図7】図1の電子鍵盤楽器、特にCPUが実行するMIDIデータ再生処理の手順を示すフローチャートである。
【図8】図1の電子鍵盤楽器、特にCPUが実行するオーディオ/ビデオデータ再生処理の手順を示すフローチャートである。
【符号の説明】
【0100】
1…鍵盤,1e…鍵駆動機構(鍵駆動手段),3…鍵駆動回路(鍵駆動手段),6…CPU(要求手段、受信手段、第1の再生手段、第2の再生手段、制御手段),8…RAM(一時記憶手段),11…通信I/F(接続手段、受信手段)

【特許請求の範囲】
【請求項1】
複数の鍵を備えた鍵盤と、
該鍵盤の各鍵を自動駆動する鍵駆動手段と、
オーディオデータまたはビデオデータを含む音楽コンテンツをストリーミング配信するストリーミング配信サーバと接続する接続手段と、
該接続手段を介して接続されたストリーミング配信サーバに対して音楽コンテンツの配信要求を行う要求手段と、
該要求手段による配信要求に応じてストリーミング配信サーバからストリーミング配信される音楽コンテンツと、該音楽コンテンツに対応する鍵駆動用の自動演奏データを受信する受信手段と、
該受信手段によって受信された自動演奏データを再生し、その再生によって得られたノートイベントを前記鍵駆動手段に供給することで、前記複数の鍵のうち、当該ノートイベントに対応する鍵を駆動させる第1の再生手段と、
前記受信手段によって受信された音楽コンテンツをストリーミング再生する第2の再生手段と、
前記第1の再生手段による自動演奏データの再生と前記第2の再生手段による音楽コンテンツのストリーミング再生とを連携して行うように制御する制御手段と
を有することを特徴とする電子鍵盤楽器。
【請求項2】
前記受信された音楽コンテンツを一時的に記憶する一時記憶手段をさらに有し、
前記制御手段は、前記一時記憶手段に音楽コンテンツが所定量蓄積されてから、前記自動演奏データの再生と前記音楽コンテンツのストリーミング再生を開始させることで、両再生を連携して行うことを特徴とする請求項1に記載の電子鍵盤楽器。
【請求項3】
前記音楽コンテンツのストリーミング再生中に、前記一時記憶手段に蓄積された音楽コンテンツがなくなったときには、前記制御手段は、前記自動演奏データの再生を中断することを特徴とする請求項1に記載の電子鍵盤楽器。
【請求項4】
前記ストリーミング配信サーバからは、前記音楽コンテンツおよび自動演奏データに加えて、当該音楽コンテンツのストリーミング再生と当該自動演奏データの再生を同期させるための同期マップデータが配信され、
前記受信手段は、該配信された同期マップデータを受信し、
前記制御手段は、該受信された同期マップデータに基づいて当該音楽コンテンツのストリーミング再生と当該自動演奏データの再生を同期させることで、両再生を連携して行う
ことを特徴とする請求項1に記載の電子鍵盤楽器。
【請求項5】
複数の鍵を備えた鍵盤と、該鍵盤の各鍵を自動駆動する鍵駆動手段と、オーディオデータまたはビデオデータを含む音楽コンテンツをストリーミング配信するストリーミング配信サーバと接続する接続手段とを備えた電子鍵盤楽器を制御する制御方法をコンピュータに実行させるプログラムであって、
前記制御方法は、
前記接続手段を介して接続されたストリーミング配信サーバに対して音楽コンテンツの配信要求を行う要求ステップと、
該要求ステップによる配信要求に応じてストリーミング配信サーバからストリーミング配信される音楽コンテンツと、該音楽コンテンツに対応する鍵駆動用の自動演奏データを受信する受信ステップと、
該受信ステップによって受信された自動演奏データを再生し、その再生によって得られたノートイベントを前記鍵駆動手段に供給することで、前記複数の鍵のうち、当該ノートイベントに対応する鍵を駆動させる第1の再生ステップと、
前記受信ステップによって受信された音楽コンテンツをストリーミング再生する第2の再生ステップと、
前記第1の再生ステップによる自動演奏データの再生と前記第2の再生ステップによる音楽コンテンツのストリーミング再生とを連携して行うように制御する制御ステップと
を有することを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−151936(P2010−151936A)
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願番号】特願2008−327672(P2008−327672)
【出願日】平成20年12月24日(2008.12.24)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】