以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の第1の実施の形態に係る楽譜表示装置を適用した電子鍵盤楽器の概略構成を示すブロック図である。
同図に示すように、本実施の形態の電子鍵盤楽器は、音高情報を含む演奏データを入力するための鍵盤を含む演奏操作子1と、各種情報を入力するための複数のスイッチやホイール、ジョイスティックを含むパネル操作子2と、周囲の音声を集音して音声信号に変換するマイクロフォン(以下、「マイク」と略して言う)3と、演奏操作子1の操作状態を検出する検出回路4と、パネル操作子2の操作状態を検出する検出回路5と、マイク3から出力された音声信号を入力する音声入力インターフェース(I/F)6と、装置全体の制御を司るCPU7と、該CPU7が実行する制御プログラムや、各種テーブルデータ等を記憶するROM8と、演奏データ、各種入力情報および演算結果等を一時的に記憶するRAM9と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ10と、各種情報等を表示する、たとえばLCDおよびLED(light emitting diode)等を備えた表示器11と、前記鍵盤全体を撮像する撮像装置12と、鍵盤上に楽譜および運指を投影して表示する投影装置13と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する記憶装置14と、外部からのMIDI(musical instrument digital interface)メッセージを入力したり、MIDIメッセージを外部に出力したりするMIDIインターフェース(I/F)15と、通信ネットワーク101を介して、たとえばサーバコンピュータ(以下、「サーバ」と略して言う)102とデータの送受信を行う通信インターフェース(I/F)16と、演奏操作子1から入力された演奏データや、前記記憶装置14に記憶されたいずれかの楽曲データを再生して得られた演奏データ等を楽音信号に変換する音源回路17と、該音源回路17からの楽音信号に各種効果を付与するための効果回路18と、該効果回路18からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム19とにより構成されている。
上記構成要素4〜18は、バス20を介して相互に接続され、CPU7にはタイマ10が接続され、MIDII/F15には他のMIDI機器100が接続され、通信I/F16には通信ネットワーク101が接続され、音源回路17には効果回路18が接続され、効果回路18にはサウンドシステム19が接続されている。ここで、通信I/F16および通信ネットワーク101は、有線方式のものに限らず、無線方式のものであってもよい。また、両方式のものを備えていてもよい。
マイク3のブロックは、破線で描かれている。これは、マイク3は本実施の形態の電子鍵盤楽器の必須の構成ではないことを意味する。マイク3は、図4(b)を用いて後述するように、楽器から発生される楽音を集音し、その楽音のピッチ(音高)を検出することで、演奏者の現在の演奏位置(以下、「カレントポジション」という)を決定するために用いられる。しかし本実施の形態では、楽器として電子(鍵盤)楽器を採用しており、楽音のピッチは、演奏操作子1から入力された演奏データ(キーオンイベント)から直接検出できるので、楽器本体から発生した楽音からそのピッチを検出する必要はない。つまりマイク3は、楽器としてアコースティック楽器を採用する場合に必須の構成となり、本実施の形態のように電子楽器を採用した場合には必須の構成とはならない。このようにマイク3が必須の構成ではない場合には、マイク3からの音声信号を入力する音声入力I/F6も必須の構成でないので、音声入力I/F6のブロックも、破線で描かれている。
撮像装置12は、鍵盤全体を撮像し、その結果得られた撮像情報(映像データ)を解析することで、鍵盤上の各鍵の位置を検出したり、楽譜および運指を投影する鍵盤上の領域の背景色(本実施の形態では、白色(白鍵の場合)あるいは黒色(黒鍵の場合))を検出したりするために設けられている。このように撮像装置12は鍵盤全体を撮影できればよいので、撮像装置12としては、本体パネルの鍵盤に近い部分に埋め込んだ小型カメラを用いればよい。
投影装置13は、上述のように鍵盤上に楽譜および運指を投影するために設けられているので、投影装置13も、撮像装置12と同様に、鍵盤全体に画像を投影できればよく、本体パネルの鍵盤に近い部分に埋め込むようにすればよい。
記憶装置14としては、たとえば、フレキシブルディスクドライブ(FDD)、ハードディスクドライブ(HDD)、CD−ROMドライブおよび光磁気ディスク(MO)ドライブ等を挙げることができる。そして、記憶装置14には、前述のように、CPU7が実行する制御プログラムも記憶でき、ROM8に制御プログラムが記憶されていない場合には、この記憶装置14に制御プログラムを記憶させておき、それをRAM9に読み込むことにより、ROM8に制御プログラムを記憶している場合と同様の動作をCPU7にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
MIDII/F15は、専用のものに限らず、RS−232CやUSB(universal serial bus)、IEEE1394等の汎用のインターフェースによって構成してもよい。この場合、MIDIメッセージ以外のデータをも同時に送受信してもよい。
通信I/F16は、上述のように、たとえばLAN(local area network)やインターネット、電話回線等の通信ネットワーク101に接続されており、該通信ネットワーク101を介して、サーバ102に接続される。記憶装置14に上記各プログラムや各種パラメータが記憶されていない場合には、通信I/F16は、サーバ102からプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子鍵盤楽器は、通信I/F16および通信ネットワーク101を介してサーバ102へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバ102は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク101を介して電子鍵盤楽器へと配信し、電子鍵盤楽器が通信I/F16を介して、これらプログラムやパラメータを受信して記憶装置14に蓄積することにより、ダウンロードが完了する。
なお本実施の形態では、楽譜表示装置を電子鍵盤楽器上に構築するようにしたが、これに限らず、鍵盤を外部接続した汎用的なPC上に構築してもよい。
以上のように構成された電子鍵盤楽器が実行する制御処理を、まず図2を参照してその概要を説明し、次に図3を参照して詳細に説明する。
ユーザ(演奏者)が、動作モードとして楽譜表示モードを選択した後、演奏曲と演奏楽器を指定すると、指定された演奏曲に対応する楽曲データおよび楽譜情報が前記記憶装置14から読み出されて、前記RAM9内に一時的に記憶される。次に、演奏者が自動演奏の開始を指示すると、上記楽曲データの自動演奏(本実施の形態では、自動伴奏)、前記撮像装置12による鍵盤全体の撮像、および前記投影装置13による鍵盤上への楽譜および運指の投影がそれぞれ開始される。
撮像装置12による撮像で得られた撮像情報には、各種画像処理が施された後、画像認識がなされ、その撮像情報に含まれる鍵盤上の各鍵の位置が検出される。これとは別に検出されたカレントポジションが示す、上記楽譜情報中の音符の次の音符に対応する、上記認識された鍵盤上の鍵の位置が特定され、その鍵を演奏者が押鍵したときに自身の演奏部位(本実施の形態では、指と手の甲の一部)があるべき位置が推定される。そして、推定された位置の近傍で、表示楽譜が当該演奏部位に重ならない位置が、撮像情報内から検出されて、楽譜表示位置に決定される。さらに、楽譜画像データとガイド画像データがそれぞれ生成され、楽譜画像データが決定された楽譜表示位置に、ガイド画像データが次に指があるべき鍵盤上の位置に重ねて表示される。
図2は、鍵盤1a上に楽譜および運指を表示した様子を示す図である。
同図に示すように、演奏者の右手RHの近傍には、カレントポジションの音符の次の音符を示す矢印CPが付けられた楽譜Mが表示される。さらに運指を示す円形状のガイド画像Gが、演奏者が次に押さえるべき鍵上に表示される。なお同図には、もう1組の演奏者の右手RH′、楽譜M′およびガイド画像G′が描かれているが、これは、演奏者が次に押さえるべき鍵の位置が変われば、それに応じて楽譜M′の表示位置も変わることを示している(ガイド画像G′の表示位置が変わるのは、当然である)。
このように本実施の形態では、演奏者の演奏部位が次にあるべき楽器上の位置の近傍で、当該演奏部位に重ならない位置に、楽譜が表示されるので、自身の演奏部位を見ながら演奏することが多い初心の演奏者にとっては、演奏曲の楽譜を暗記しなくてもよくなり、演奏練習に集中することができる。そして、楽譜は常に、次にあるべき位置の演奏部位に重ならないように表示されるので、表示楽譜が演奏者の演奏の邪魔になることもない。
また、運指も次に指があるべき鍵盤上の位置に表示されるので、演奏者は押さえる場所や指の形などに細心の注意を払いながら練習でき、これにより練習効率が向上する。
さらに、楽譜と運指が同時に表示されるので、演奏者は慣れない曲を演奏するときでも迷いなく演奏することができる。
次に、この制御処理を詳細に説明する。
図3は、本実施の形態の電子鍵盤楽器、特にCPU7が実行する楽譜表示モード処理の手順を示すフローチャートである。
本楽譜表示モード処理は、主として
(1)楽譜表示前処理(ステップS1)
(2)楽譜表示処理(ステップS3〜S11)
によって構成され、(2)楽譜表示処理は、主として
(21)カレントポジション決定処理(ステップS4)
(22)演奏部位推定処理(ステップS5)
(23)撮像範囲認識処理(ステップS6)
(24)表示範囲&(および)表示倍率決定処理(ステップS7)
(25)楽譜表示位置決定処理(ステップS8)
(26)楽譜画像データ生成処理(ステップS9)
(27)ガイド画像データ生成処理(ステップS10)
(28)楽譜&運指表示処理(ステップS11)
によって構成されている。
本楽譜表示モード処理は、たとえば前記パネル操作子2に含まれる楽譜表示モードスイッチ(図示せず)が押下されて楽譜表示モードが選択されたときに起動する。本楽譜表示モード処理が起動すると、前記(1)の楽譜表示前処理が1回実行された後、自動演奏の開始が指示されるまで待ち(ステップS2)、自動演奏の開始が指示されると、カレントポジションが自動演奏の対象となっている楽曲データに対応する楽譜情報の終端に到達するまで、あるいは自動演奏の終了が指示されるまで(ステップS12)、前記(2)の楽譜表示処理が繰り返し実行される。なお本楽譜表示モード処理では、ある演奏曲が1曲指定されると、カレントポジションがその演奏曲(楽譜情報)の最後(終端)に至った時点で、楽譜表示は終了となるので、同じ曲を繰り返して、あるいは別の曲を選択して再度、楽譜表示を続けることはできない。このように構成したのは、専ら説明を簡単化するために過ぎないので、カレントポジションがその演奏曲の最後に至ったとしても、直ちに本楽譜表示モード処理を終了せずに、演奏者の指示を待って、同じ曲を繰り返して、あるいは別の曲を選択して再度、楽譜および運指の表示を続けるようにしてもよい。
前記(1)の楽譜表示前処理では、まずCPU7は、ユーザ操作に応じて演奏曲および演奏楽器を決定する。ユーザ(演奏者)が、たとえばパネル操作子2に含まれる選曲スイッチ(図示せず)を押下すると、前記表示器11のLCD上には、前記記憶装置14に記憶されている楽曲データの名称の一覧が表示される。そして演奏者がこの名称一覧から好みの名称を選択すると、CPU7は、その名称に対応する楽曲データを記憶装置14から読み出して、前記RAM9の所定位置に確保された楽曲データ格納領域(図示せず)に格納する。楽曲データは、本実施の形態では自動伴奏のために用いているので、複数パートからなる自動演奏データとする。なお楽曲データのフォーマットとしては、どのようなものを採用しても構わないが、本実施の形態では、通常の電子楽器でよく用いられているSMF(standard MIDI file)形式を採用することにする。さらに演奏者が、たとえばパネル操作子2に含まれる楽器選択スイッチ(図示せず)を押下すると、選択可能な楽器の種類の一覧がLCD上に表示されるので、その中からいずれかの楽器の種類、つまり演奏者がこれから演奏する楽器の種類(本実施の形態では、電子鍵盤楽器)を選択すると、CPU7は、その楽器の種類(を示す情報)をRAM9の所定位置に確保された楽器種格納領域(図示せず)に格納する。このように演奏楽器の種類を選択するようにしたのは、本発明は、後述するように、電子楽器ではないアコースティック楽器あるいは鍵盤楽器ではない弦楽器にも適用することができ、これらの種類の異なる楽器に対する各楽譜表示モード処理をまとめて1つのフローチャートで記述したからである。したがって、本楽譜表示モード処理を本実施の形態の電子鍵盤楽器のために専用に作成した場合には、演奏楽器の種類を選択できるようにする必要はない。
次にCPU7は、決定された演奏曲に対応する楽譜情報を取得する。楽譜情報とは、楽譜画像データを生成する際に基礎となる情報であり、たとえば、楽譜を構成する音符などの部品の種類とその譜面上の配置(時間的位置)などからなる、いわゆる論理楽譜情報である。本実施の形態では、各楽曲データにはそれぞれ、楽譜情報が対応付けられて、記憶装置14内に記憶されているので、上記楽譜情報の取得とは、決定された演奏曲に対応付けられた楽譜情報を記憶装置14から読み出して、RAM9の所定位置に確保された楽譜情報格納領域に格納することを意味する。ただし論理楽譜情報は、簡単な演算処理によって楽曲データから直接取得することができるので、記憶装置14には楽曲データだけを記憶させておき、演奏者が演奏曲を選択した時点で、その楽曲データから論理楽譜情報を算出して、楽譜情報格納領域に格納するようにしてもよい。なお楽譜情報は、論理楽譜情報に限らず、そのまま表示可能な楽譜画像データを用いてもよい。ただし楽譜画像データには、当該楽譜を構成する各音符の時間的位置は含まれていないので、各音符の時間的位置を付加情報として、あるいは小節位置および拍位置を示すインデックスまたはマークを付加情報として添付しておく。
次に演奏者が、たとえばパネル操作子2に含まれるプレイスイッチ(図示せず)を押下することにより自動演奏の開始を指示すると、CPU7は、処理を前記(2)の楽譜表示処理に進める。この(2)楽譜表示処理に進む前に、CPU7は、前記タイマ10による計時と前記撮像装置12による撮像を開始させる(ステップS3)。これに応じて、タイマ10は計時を開始し、停止の指示があるまで計時を続ける一方、撮像装置12は撮像を開始し、停止の指示があるまで撮像を続ける。撮像によって得られた撮像情報は、画像認識がし易いように各種画像処理が施された後、RAM9の所定位置に確保された撮像情報格納領域(図示せず)に格納される。そして撮像情報格納領域には常に、所定時間分の撮像情報、つまり最新の撮像情報から所定時間前の撮像情報までが格納されるようにする。この他にもCPU7は、シーケンサ(図示せず)に対して自動演奏の開始を指示する。シーケンサは、たとえばCPU7が所定の制御プログラムを実行することで実現され、楽曲データ格納領域に格納された楽曲データに含まれる各イベントデータを所定のタイミングで読み出して、前記音源回路17に供給することにより、音源回路17を介して楽音信号を生成する。楽曲データは、前述のように自動伴奏のために用いられるので、シーケンサによる自動演奏は、演奏者が演奏するパートを除いて行われる。なお、本発明の特徴は、楽譜と運指を表示することにあり、楽曲データを自動演奏(自動伴奏)することにある訳ではないので、自動演奏処理についてのこれ以上の説明は行わない。
(2)楽譜表示処理に進むと、まずCPU7は、前記(21)のカレントポジション決定処理を実行する。カレントポジションは、前述のように演奏者の現在の演奏位置であり、楽譜情報中のいずれかの音符を示している。そして、楽譜情報中の各音符には、前述のように時間的位置(たとえば、楽譜情報の先頭からの絶対時間)が対応付けられているので、CPU7は、タイマ10の計時時間と各音符の時間的位置とを比較することで簡単にカレントポジションを決定することができる。
次にCPU7は、処理を前記(22)の演奏部位推定処理に進める。この(22)演奏部位推定処理では、CPU7は、上記決定されたカレントポジションから、次に演奏者の演奏部位があるべき位置、つまり演奏操作子(本実施の形態では、鍵盤)上の位置を推定する。具体的には、まずCPU7は、前記撮像情報格納領域に格納されている撮像情報(ただし、演奏者の演奏部位などが撮像されず、鍵盤全体のみが撮像されたもの)を画像認識することで、その撮像情報に含まれる鍵盤上の各鍵の位置(それぞれの輪郭線によって囲まれる各鍵領域と各鍵領域がそれぞれ属する音高)を認識する。撮像装置12は、前述のように固定して設置され、撮像倍率も固定である(とする)ので、撮像情報に含まれる鍵盤全体は変動しない。このため、上記鍵盤上の各鍵の位置の認識は、1回のみ行うだけでよい。次にCPU7は、上記決定されたカレントポジションの音符の次の音符に対応する鍵の位置(鍵領域)を特定し、その鍵を演奏者が押鍵したときに自身の演奏部位、つまり指と手の甲の一部があるべき位置(指と手の甲の一部の輪郭によって囲まれる領域)を推定する。ここで演奏部位の輪郭(の形状と大きさ)は、予め設定された仮想的なもの、つまり、実際に演奏している演奏者とは無関係に予め用意された一般的な人の演奏部位の輪郭とする。このように演奏部位の輪郭として仮想的なものを用いたのは、実際に演奏している演奏者自身の演奏部位の輪郭を用いたのでは、その輪郭を画像認識する処理が必要となって、CPU7にかかる演算負荷が増大するからである。
次にCPU7は、処理を前記(23)の撮像範囲認識処理に進める。本実施の形態では前述のように、撮像装置12は鍵盤全体を撮影し、その他の部分を撮影しないので、CPU7は、撮像情報から、その撮像範囲が楽器のどの部分に相当するかを認識する必要はない。つまり本実施の形態では、この(23)撮像範囲認識処理を省略することができる。したがって、図3中、この(23)撮像範囲認識処理に相当するステップS6のブロックは破線で描かれている。なお、後述する第2および第3の実施の形態では、この(23)撮像範囲認識処理は必須の処理となるので、この(23)撮像範囲認識処理についての説明は、そこで行うことにする。
次にCPU7は、処理を前記(24)の表示範囲&表示倍率決定処理に進める。本実施の形態では、この(24)表示範囲&表示倍率決定処理も、上記(23)撮像範囲認識処理が省略可能である理由と同様の理由で省略することができる。なおこの(24)表示範囲&表示倍率決定処理についての説明も、後述する第2および第3の実施の形態で行うことにする。
次にCPU7は、処理を前記(25)の楽譜表示位置決定処理に進める。この(25)楽譜表示位置決定処理では、CPU7は、前述のようにして推定された、演奏者の演奏部位があるべき位置の近傍で、表示楽譜が重ならない位置を撮像情報内から検出し、この位置を楽譜表示位置に決定する。楽譜が常に所定長(たとえば、1小節長)分表示されるとすると、その表示楽譜は撮像情報内で常に一定の領域を占めることになる。そして、演奏者の演奏部位(の輪郭)が占める領域を上記推定された位置に仮想的に配置しておけば、CPU7は、撮像情報内から仮想的に配置された演奏者の演奏部位が占める領域を除外した残りの領域内で、当該演奏部位が占める領域に近く、表示楽譜が占める一定の領域を簡単に探し出すことができる。
次にCPU7は、処理を前記(26)の楽譜画像データ生成処理に進める。この(26)楽譜画像データ生成処理では、CPU7は、標準的な楽譜画像データを生成する。ここで標準的な楽譜画像データは、所定の色(たとえば、黒色)の楽譜を表示するものであり、カレントポジションの音符の次の音符を含む小節の楽譜情報に基づいて生成される。あるいはCPU7は、撮像情報から楽譜表示位置の背景色を検出し、この背景色に基づいて、上記生成された標準的な楽譜画像データに対する補色補正を行うことで、見易い楽譜画像データを生成するようにしてもよい。このように楽譜を背景色に対する補色に設定して表示することで、楽譜を周囲から目立たせて表示させることができる。
補色は、まず撮像情報全体のうちで支配的な色を求め、次にそのR(赤)G(緑)B(青)値を求め、さらにそのRGB値を反転させる(最大値から減算する)ことで、求めることができる。しかしこの方法では、支配的な色がグレイ系ではその補色は目立った色にならないため、RGBの各値が同じような値の場合には、補色に代えて白または黒を用いることにする。これにより目立った色使いとなる。より具体的には、背景色が薄い場合には黒を採用し、背景色が濃い場合には白を採用する。背景色が中間の場合には、白でも黒でも目立つので、どちらを採用してもよい。なお、上記「RGBの各値が同じような値」の評価方法としては、たとえば、次式の値が所定値以下であれば「同じような値」と評価する方法を挙げることができる。
(R−G)2 + (R−B)2 + (G−B)2
RGBの各値の最大値が、たとえば“255”である場合、概ね“10000”程度が上記所定値と考えられるが、この値は実際の環境に合わせてユーザが調整できるようにしてもよい。このようにして求めた補色一色で楽譜を構成する線や記号の画像を描く。
なお本実施の形態では、上述のように撮像情報全体のうちで支配的な色から補色を求めたが、これに限らず、撮像情報のうちの楽譜表示位置に相当する領域内の支配的な色から補色を求めるようにしてもよいし、楽譜表示位置となる撮像情報の下側半分など、特定の領域内の支配的な色から補色を求めるようにしてもよい。あるいは、撮像情報に対して所定の細かい分割を行い、分割後の領域毎にその支配的な色から補色を求め、表示する楽譜が跨る複数の領域では、それぞれの補色で楽譜を描くようにしてもよい。また、楽譜を構成する線や記号の画像を描く際の画素毎にその背景となる撮像情報の色を求め、画素毎に求めた補色で描画するようにしてもよい。
次にCPU7は、処理を前記(27)のガイド画像データ生成処理に進める。この(27)ガイド画像データ生成処理では、CPU7は、ガイド画像データを生成する。ガイド画像データは、前記図2で説明したように、円形状のガイド画像Gを表示するためのものである。楽譜と比較してガイド画像は単純な表示形態であるが、演奏者がはっきりと認識できる目立った色をガイド画像の表示色とする必要があるので、楽譜画像データについての前記補色補正と同様の補正を、一旦生成した標準的なガイド画像データにも施すようにした方が好ましい。もちろんこの補正を省略して、標準的なガイド画像データのみを生成し、これを表示させるようにしてもよい。なおガイド画像データの表示形状は、上記円形状に限らず、どのような形状のものを採用してもよい。
次にCPU7は、処理を前記(28)の楽譜&運指表示処理に進める。この(28)楽譜&運指表示処理では、CPU7は、楽譜表示位置に楽譜画像データを、次に指があるべき位置にガイド画像データを重ねて表示する。
次に、本実施の形態の変形例について説明する。
本実施の形態では、タイマ10の計時が進むに従ってカレントポジションも進んで行くため、演奏者の演奏状態に拘わらず楽譜と運指の表示が進んで行くのに対して、本実施の形態の変形例では、演奏者の演奏状態に基づいてカレントポジションを決定し、演奏者の演奏状態に応じて楽譜と運指の表示を進ませるようにした点が異なっている。
図4は、本実施の形態の変形例についてのカレントポジション決定処理の手順を示すフローチャートであり、同図(a)は、本実施の形態と同様に電子鍵盤楽器を採用した場合のカレントポジション決定処理を示し、同図(b)は、電子鍵盤楽器に代えてアコースティック鍵盤楽器を採用した場合のカレントポジション決定処理を示している。
図4(a)のカレントポジション決定処理では、まずCPU7は、演奏者が演奏して得られた演奏情報を所定時間分、前記RAM9の所定位置に確保された演奏情報格納領域に取得しておく(ステップS4a1)。このように演奏情報の所定時間分の履歴を取得するようにしたのは、カレントポジションを決定する際の精度を向上させるためである。したがって、それほど精度を向上させる必要のない場合や、他の方法によって十分な精度が得られる場合には、最新の演奏情報のみ取得するだけでよい。
次にCPU7は、取得された演奏情報と楽譜情報を比較して、カレントポジションを決定する(ステップS4a2)。本変形例では、演奏情報として所定時間分の履歴が取得されているので、演奏情報と楽譜情報の比較は、当該履歴に含まれる個数の演奏情報(の各音高)がその個数分の楽譜情報(の各音高)に完全に一致するかどうかによってなされている。
さらにCPU7は、新たな演奏情報が取得される度に、その演奏情報に応じた楽音の生成を前記音源回路17に指示する(ステップS4a3)。この音源回路17に対する楽音生成の指示は、本実施の形態、つまり第1の実施の形態でも、記載はされていないもののどこかでなされるべきものである。
このようにしてカレントポジションが演奏者の演奏状態に応じて決定されると、これ以降の楽譜表示モード処理はすべて、カレントポジションに基づいてなされているので、楽譜と運指の表示は、演奏者の演奏状態に応じて進むことになる。ただし自動伴奏は、上記実施の形態では、カレントポジションに応じて進まない(タイマ10の計時に応じて進む)ので、自動伴奏の進行と、楽譜と運指の表示の進行(および音源回路17に対する楽音生成の指示)とが一致しなくなることがある。そこで、自動伴奏(自動演奏)は、本実施の形態と同様にしてタイマ10の計時に従って進行させるが、演奏者の演奏が所定時間遅延したときには、その遅延が解消するまでタイマ10の計時自体を停止する。あるいは、自動演奏を行わないようにしてもよい。この事情は、次の変形例についても同様である。
一方、図4(b)のカレントポジション決定処理では、まずCPU7は、演奏者の演奏によって当該アコースティック鍵盤楽器から発生した楽音が前記マイク3によって集音されて得られた音声信号(オーディオ信号)を、前記音声信号入力I/F6を介して前記演奏情報格納領域に取得しておく(ステップS4b1)。このとき、前記ステップS4a1の処理と同様に、オーディオ信号(演奏情報)の所定時間分の履歴を取得する。
次にCPU7は、取得された演奏情報からピッチを検出する(ステップS4b2)。オーディオ信号からピッチを検出する方法には、既によく用いられている周知のピッチ検出方法があり、さらに本発明の特徴は、オーディオ信号からピッチを検出することにある訳ではないので、上記ステップS4b2では、周知のピッチ検出方法を用いてピッチを検出することにする。
さらにCPU7は、検出されたピッチと楽譜情報(のピッチ(=音高))を比較して、カレントポジションを決定する(ステップS4b3)。
なお本変形例では、カレントポジションは、オーディオ信号から検出したピッチに基づいて決定するようにしたが、これに限らず、オーディオ信号(の履歴)から音量の時間的変化を観測し、そこから音符に対応した音の開始時刻(立ち上がり時刻)や終了タイミング(立ち下がり時刻)を検出し、検出した開始時刻や終了時刻と当該楽曲データ内の各音の開始位置(MIDIイベントのノートオン時刻)や終了位置(MIDIイベントのノートオフ時刻)とを比較して決定するようにしてもよい。ここで、検出されたピッチと開始や終了の時刻とを組み合わせて当該楽曲データと比較するようにしてもよいし、音程情報を無視して開始や終了の時刻のみを当該楽曲データと比較するようにしてもよい。
次に、本発明の第2の実施の形態に係る楽譜表示装置について説明する。
図5は、本実施の形態の楽譜表示装置を演奏者が使用している様子((a))と楽譜および運指を表示した様子((b))を示す図である。
図5(a)に示すように、本実施の形態の楽譜表示装置は、前記第1の実施の形態の楽譜表示装置に含まれる投影装置13に代えてゴーグル型ディスプレイ32を採用するとともに、撮像装置12に対応する撮像装置31をゴーグル型ディスプレイ32上に積載して、一体型の撮像表示装置とし、その一体型の撮像表示装置を本体装置(図1のハードウェアから撮像装置12と投影装置13を除いたもの)に外付けしたものによって構成されている。そして一体型の撮像表示装置は、信号線ケーブル(図示せず)を介して本体装置と着脱可能に接続されているため、本体装置側には、撮像装置31(用の信号線)を接続するための撮像装置インターフェース(図示せず)と、ゴーグル型ディスプレイ32(用の信号線)を接続するためのディスプレイインターフェース(図示せず)が設けられている。
本実施の形態の楽譜表示装置は、前記図3の楽譜表示モード処理を、ステップS6およびS7の各処理を含め、そのまま用いて、あるいは若干変更して、楽譜と運指の表示を行う。以下、ステップS6およびS7の各処理を中心にして、本楽譜表示モード処理を説明する。
図5(a)のように、ゴーグル型ディスプレイ32を装着してアコースティックギターを演奏する場合、まず演奏者は、楽譜表示モードスイッチを押下して、本楽譜表示モード処理を起動する。次に演奏者が、演奏曲と演奏楽器(つまり、アコースティックギター)を選択すると、CPU7は、前記(1)の楽譜表示前処理を実行する。さらに演奏者がプレイスイッチを押下すると、CPU7は、処理を前記(2)の楽譜表示処理に進め、前記(21)のカレントポジション決定処理を実行した後、前記(22)の演奏部位推定処理を実行する。本楽譜表示モード処理中の上記(1)および(21)の各処理は、前記第1の実施の形態の楽譜表示モード処理中の対応する処理と同様であるので、その説明は省略する。上記(22)演奏部位推定処理では、まずCPU7は、演奏操作子1、つまりアコースティックギターのフィンガーボードを前記RAM9内に仮想的に構築する。たとえば、撮像装置31とフィンガーボードとの距離と方向を一定に保ちながら、撮像装置31によってフィンガーボード全体を撮像し、撮像によって得られた撮像情報を画像認識することで、フィンガーボードを仮想的に構築する。このようにして構築されたフィンガーボードを、以下、「仮想基準フィンガーボード」という。仮想基準フィンガーボードには、少なくとも、フィンガーボードの輪郭、弦およびフレットが含まれるものとする。なお、「仮想基準フィンガーボード」をデータとして前記記憶装置14内に予め記憶しておき、あるいは必要に応じて外部から取得し、これをRAM9内に読み出すことで、(フィンガーボードを撮像するという面倒な行為を介さずに)「仮想基準フィンガーボード」を直ちに構築するようにしてもよい。次にCPU7は、前記(21)カレントポジション決定処理によって決定されたカレントポジションの音符の次の音符に対応する、仮想基準フィンガーボードの弦上の位置を特定し、その位置を演奏者が押さえたときに自身の演奏部位、つまり指があるべき位置(指の輪郭によって囲まれる領域)を推定する。
次にCPU7は、処理を前記(23)の撮像範囲認識処理に進める。この(23)撮像範囲認識処理では、CPU7は、撮像情報から、その撮像範囲が楽器のどの部分に相当するかを認識する。このような認識が必要な1つの理由は、撮像装置31は、前述のように演奏者の頭の動きに従って動くために、撮像装置31による撮像範囲は常に変動し、撮像範囲内に抽出すべき楽器の部分が撮像されていないことがあるからである。そしてもう1つの理由は、撮像範囲内に抽出すべき楽器の部分が撮像されていたとしても、その楽器の部分がどこか認識できなければ、楽譜と運指を表示させる位置を決めることができないからである。本発明は、演奏者が自身の演奏部位(本実施の形態では、指)を見ながら演奏することを想定し、自身の演奏部位(本実施の形態では、撮像されて表示された指)の近傍に楽譜と運指を表示するので、認識する楽器の部分は、当該楽器の演奏操作子であるフィンガーボードである。さらに撮像範囲内に、フィンガーボードの一部が含まれることもあるので、その場合には、撮像範囲がフィンガーボード上のどの部分かを認識しておく必要がある。
撮像情報からフィンガーボードを認識する方法としては、たとえば、撮像情報を画像認識することで、そこに含まれているフィンガーボードの輪郭、弦、フレット、ナットおよびポジションマークを抽出し、この抽出結果と前記仮想基準フィンガーボードとを比較する方法が考えられる。ただし、仮想基準フィンガーボードは、前述のように所定の条件でフィンガーボードを撮影して得られた撮像情報に基づいて構築されているので、抽出元の撮像情報がこの所定の条件で撮影して得られたものでない限り、抽出結果と仮想基準フィンガーボードとを単純に比較するだけでは、撮像範囲がフィンガーボードのどの部分に相当するかを認識できない。このため、仮想基準フィンガーボードあるいは抽出結果を回転させたり、平行移動させたりしながら、両者を比較する必要がある。
なお、撮像範囲内に1つ以上のフレットを含むフィンガーボードの一部が含まれている場合に、そのフィンガーボードの一部上に運指を表示するには、そのフィンガーボードの一部が、フィンガーボード上のどの部分、たとえば何番目のフレットを含む部分に相当するかを認識する必要がある。このとき、撮像情報から抽出されたフレットやナットおよびポジションマーク、その近傍の弦と弦との間隔やフィンガーボードの輪郭と、仮想基準フィンガーボードとを比較することで、当該撮像範囲のフィンガーボード上の位置を認識する。しかし、抽出結果にフレット以外の特徴がはっきりと現れていない場合には、フィンガーボード上に設けられている各フレットは略同一形状であるので、認識されたフレットがフィンガーボード上、何番目に位置するものであるかを確定することは難しい。このため、たとえば、各フレットの表面上に、何番目のものであるかを示す数字を刻印しておき、フレットを認識する際に同時に、その数字も認識するようにすればよい。もちろんこれに限らず、フレットの位置が認識できれば、どのような方法を用いてもよい。
次にCPU7は、処理を前記(24)の表示範囲&表示倍率決定処理に進める。この(24)表示範囲&表示倍率決定処理では、CPU7は、ユーザ設定に応じて、表示範囲および表示倍率を決定する。本実施の形態では、撮像装置31とギター、特にフィンガーボードとの距離は、演奏者の演奏スタイルなどの各種要因に従って変動するので、表示範囲も固定化しておくことはできない。このため、表示範囲をユーザ設定に応じて自由に決定できるようにしている。また表示倍率も、演奏者の好みに応じて変更できるようにしている。なお、このユーザ設定に応じた処理に代えて、ユーザがゴーグルを通して見たギターや指の映像がゴーグルをしていなかったときの見え方から違和感のない表示になるように、映像の表示範囲や回転や表示倍率を自動的に処理するようにしてもよい。
これに続く(25)および(27)の各処理は、前記第1の実施の形態の楽譜表示モード処理に含まれる各処理とほぼ同様であるので、その説明は省略する。ただし、前記図3のステップS8の処理内のカッコ書きのカッコ、つまり「(撮像範囲内で、)」のカッコは外しておく必要がある。カッコを外しておくのは、同図のステップS6の処理を、本実施の形態では必須の処理としたからである。
前記(26)の楽譜画像データ生成処理について、前記第1の実施の形態では、標準的な楽譜画像データに補色補正を行う例を挙げて説明したが、本実施の形態では、透過率を変更する例を挙げて説明する。
楽譜表示は周囲から目立たせることが重要なので、これを実現するために、たとえば透過率を自動調整する方法が考えられる。背景と楽譜の色合いが近い場合には、透過率を下げて背景をぼんやり表示させ、楽譜のみを目立たせると、楽譜の視認性が向上する。これとは逆に、背景と楽譜の色合いが遠い場合には、透過率を上げて背景をしっかり表示させても、楽譜の視認性の高い状態は維持できる。色合いの遠近は、RGB値を比較することにより評価できる。たとえば、RGBの各値の距離を次のようにして求める。
色距離 = (R1−R2)2 + (G1−G2)2 + (B1−B2)2
ここで(R1,G1,B1)と(R2,G2,B2)は、比較対象となる2地点のRGB値である。この距離に応じて透過率が調整される。
透過率を下げて背景をぼんやり表示させる場合には、図5(b)に示すように、楽譜をフィンガーボード上の指の位置からずれた邪魔にならないところに表示すると、よりユーザの手の近くに楽譜を表示しつつガイドすることができる。このとき、前記第1の実施の形態で説明した補色補正を組み合わせると、楽譜の視認性がさらに向上する。
前記(28)の楽譜&運指表示処理では、前記第1の実施の形態では、楽譜画像データとガイド画像データとを重ねて表示するようにしていたが、本実施の形態では、楽譜画像データとガイド画像データとさらに撮像装置31で実際に撮像されたフィンガーボード付近の撮像情報とを合成してゴーグル型ディスプレイ32に表示する。すなわち、周囲の状況が見えないゴーグル型ディスプレイ32であっても、少なくともフィンガーボード付近の実際の状況は、ゴーグルをかけていないときと同じように見えていて欲しいので、ゴーグル型ディスプレイ32に備え付けた撮像装置31の撮像情報をゴーグルに映すことによって、実際のフィンガーボード付近を表示させ、それに加えて、前述の透過率処理を施した楽譜画像データとガイド画像データとを合成して表示する。なお、ゴーグル型ディスプレイ32が透過型であって、周囲の状況が見える場合には、撮像装置31で実際に撮像された撮像情報をわざわざ表示させる必要はない。
このようにして楽譜と運指を表示したものの一例が、図5(b)の画面32aである。同図(b)に示すように、演奏者の左手の近傍には、カレントポジションを示す矢印CPの付いた楽譜Mが表示されるとともに、運指を示す円形状のガイド画像G1〜G4が、次に押さえるべき弦上の位置に表示される。
次に、本発明の第3の実施の形態に係る楽譜表示装置について説明する。
図6は、本実施の形態の楽譜表示装置を演奏者が使用している様子((a))と楽譜および運指を表示した様子((b),(c))を示す図である。
図6(a)に示すように、本実施の形態の楽譜表示装置は、前記第2の実施の形態の楽譜表示装置に含まれるゴーグル型ディスプレイ32に代えて、たとえばCRT(cathode ray tube)からなる据置型ディスプレイ42を採用するとともに、ゴーグル型ディスプレイ32に積載されている撮像装置31に代えて、据置型ディスプレイ42と独立した据置型撮像装置41を採用し、据置型撮像装置41および据置型ディスプレイ42を本体装置(図1のハードウェアから撮像装置12と投影装置13を除いたもの)に外付けしたものによって構成されている。そして据置型撮像装置41および据置型ディスプレイ42は、信号線ケーブル(図示せず)を介して本体装置と着脱可能に接続されているため、本体装置側には、据置型撮像装置41を接続するための撮像装置インターフェース(図示せず)と、据置型ディスプレイ42を接続するためのディスプレイインターフェース(図示せず)が設けられている。
本実施の形態の楽譜表示装置が実行する楽譜表示モード処理は、前記第2の実施の形態の楽譜表示装置が実行する楽譜表示モード処理に対して、主として(23)の撮像範囲認識処理が異なるのみであるので、以下、この(23)撮像範囲認識処理について説明する。
図6(a)のように演奏者がチェロを演奏する場合、CPU7は、前記第2の実施の形態と同様に(23)撮像範囲認識処理において、撮像情報から、その撮像範囲が楽器のどの部分に相当するかを認識する。ただし前記第2の実施の形態と異なり、チェロのフィンガーボード上にはフレットが存在しないので、撮像範囲がフィンガーボード上のどの部分に相当するかを、フレットに基づいて認識することはできない。このため、たとえば、フィンガーボードの幅やフィンガーボードと表板あるいはナットとの距離などに基づいて、当該撮像範囲のフィンガーボード上の位置を認識する。
このようにして楽譜と運指を表示したものの一例が、図6(b)の画面42aである。同図(b)に示すように、演奏者の左手の近傍には、カレントポジションを示す矢印CPの付いた楽譜Mが表示されるとともに、運指を示す円形状のガイド画像Gが、次に押さえるべき弦上の位置に表示される。
また、図6(c)の画面42aは、図6(b)の画面42aに対して、表示倍率を低下させたものである。
なお、上述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も含まれることは言うまでもない。