以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかる楽音再生システムの構成を示すブロックダイヤグラムである。図1に示すように、本実施の形態にかかる楽音再生システムは、センタ装置10と、端末装置30とを有している。本実施の形態にかかるセンタ装置10は、CPU11、入力部12、表示部13、ROM14、RAM15、フラッシュメモリ16、通信インタフェース(I/F)17およびサウンドシステム18を有している。センタ装置10として、たとえば、パーソナルコンピュータやサーバを用いることができる。
本実施の形態において、センタ装置10は、楽曲を演奏するための音楽データを含む音楽データファイル、楽曲の楽譜の画像データを含む楽譜データファイルを、記憶装置(たとえば、フラッシュメモリ16など)に格納している。センタ装置10は、上記音楽データおよび画像データを関連付けるためのデータ(後述する楽譜要素データ)を含むファイルである楽譜要素データファイル生成して、音楽データファイルおよび楽譜データファイルとともに、端末装置30に送信する。
CPU11は、楽譜データを読み出して、楽譜データ中の五線や小節線などの楽譜要素を抽出する処理、抽出された楽譜要素に基づいて、音楽データを小節毎に分割して、小節単位の音楽データを含む単位音楽データファイルを生成する処理など種々の処理を実行する。入力部12は、キーボード、マウスなどの入力装置を含む。また、表示部13は、たとえば液晶表示装置を含む。
ROM14は、楽譜データを読み出して、楽譜データ中の五線や小節線などの楽譜要素を抽出する処理、抽出された楽譜要素に基づいて、音楽データを小節毎に分割して、小節単位の音楽データを含む単位音楽データファイルを生成する処理などの処理プログラムを格納する。RAM15は、ROM14から読み出されたプログラムや、処理の過程で生じたデータを記憶する。また、フラッシュメモリ16には、種々の楽曲の音楽データを含む音楽データファイルおよび当該楽曲の楽譜データを含む楽譜データファイルが格納される。
通信I/F17は、インターネットなどの外部ネットワークを介したデータ送受信を制御する。サウンドシステム18は、音源部19、オーディオ回路20およびスピーカ21を有する。
図2は、本実施の形態にかかる端末装置の構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる端末装置30は、CPU31、タッチパネル32、表示部13、ROM34、RAM35、フラッシュメモリ36、通信インタフェース(I/F)37およびサウンドシステム38を有している。端末装置30として、たとえば、スマートフォンを用いることができる。
本実施の形態において、端末装置30は、センタ装置10から音楽データファイル(後述する単位音楽データファイル)、楽譜データファイルおよび楽譜要素データファイルを受信して、これらデータファイルに含まれるデータに基づき、楽譜を表示し、また、指定された小節から楽曲を演奏し、或いは、指定された小節を繰り返す。
CPU31は、表示部13の画面上に表示すべき楽譜やアイコン等の表示、タッチパネルへの接触の検出、楽譜要素データファイルおよび単位音楽データファイルに基づく楽曲の演奏など、種々の処理を実行する。タッチパネル32は、液晶表示装置を含む表示部33に重ねられて配置されている。
ROM34は、表示部13の画面上に表示すべき楽譜やアイコン等の表示、タッチパネルへの接触の検出、楽譜要素データファイルおよび単位音楽データファイルに基づく楽曲の演奏など、種々の処理プログラムを格納する。RAM35は、ROM34から読み出されたプログラムや、処理の過程で生じたデータを記憶する。フラッシュメモリ36は、受信した楽譜データファイル、楽譜要素データファイルおよび単位音楽データファイルを格納することができる。通信I/F37は、インターネットなどの外部ネットワークを介したデータ送受信を制御する。サウンドシステム38は、音源部39、オーディオ回路40およびスピーカ41を有する。
図3は、本実施の形態にかかる端末装置の外観を示す略正面図である。図3に示すように、端末装置30は、液晶表示装置を含む表示部33と、タッチパネル32とが重ねられて配置される。表示部33の画面上には、たとえば、楽譜(符号300参照)や、種々のアイコン(符号310〜312参照)を含む入力部301が表示される。使用者は、楽譜300の所望の位置に触れることにより、楽譜中の小節などを指定することができる。また、使用者は、所望のアイコンに触れることにより、コマンドを入力することが可能である。
以下、センタ装置10にて実行される処理について説明する。図4は、本実施の形態にかかるセンタ装置10の機能を示すブロックダイヤグラムである。図4に示すように、センタ装置10は、楽譜要素抽出部42、データファイル生成部43および音楽データ分割部44を有する。本実施の形態において、センタ装置10のフラッシュメモリ16には、楽曲の音楽データであるオリジナル音楽データを含むオリジナル音楽データファイル400と、当該楽曲の楽譜データであるオリジナル楽譜データを含むオリジナル楽譜データファイル401とが格納されている。
オリジナル音楽データファイル400は、いわゆるスタンダードMIDIファイル(SMF)であり、楽音の発音を含むイベント間の時間間隔を示す時間情報(デルタタイム)、ノートオンイベントやノートオフイベントなどイベントの種別を示す情報などを含む。また、オリジナル楽譜データファイル401は、たとえば、PDFファイルなど既知のフォーマットの画像データファイルである。
楽譜要素抽出部42は、オリジナル楽譜データファイル401を読み出して、ファイル中のデータから、端末装置30に送信するための表示用楽譜データファイル403を生成する。表示用楽譜データファイル403は、たとえば、PNG(Portable Network Graphic)ファイルである。無論、PNG以外の他のフォーマットの画像データであっても良い。また、楽譜要素抽出部42は、オリジナル楽譜データファイル401を二値化して、たとえば、ビットマップの二値化データファイル402を生成する。
さらに、楽譜要素抽出部42は、二値化データファイル402を参照して、楽譜の構成要素であるパート線、五線、小節線などを抽出する。なお、本実施の形態において、楽譜構成要素は、楽譜中の五線、パート線や小節線など、楽譜中の時間領域やパートを規定するための線、および、繰り返し記号を含む。楽譜構成要素には、楽曲において演奏される楽曲を直接規定する音符は含まれない。
また、楽譜要素抽出部42は、抽出された楽譜の構成要素の座標データを取得する。デーファイル生成部43は、楽譜要素抽出部42にて取得された情報に基づき、楽譜要素の種別およびその位置を特定する情報を含む楽譜要素データファイル404を生成する。生成された表示用楽譜データファイル403、二値化データファイル402、楽譜要素データファイル404は、たとえば、フラッシュメモリ16に格納される。
音楽データ分割部44は、オリジナル音楽データファイル400中の音楽データと、楽譜要素データファイル中の楽譜要素データ404とに基づいて、音楽データを、小節毎の単位音楽データに分割し、かつ、繰り返し記号などによる重複を排除して、所定の単位音楽データファイル405を生成する。単位音楽データファイル405も、例えば、フラッシュメモリ16に格納される。
なお、楽譜要素抽出部42、データファイル生成部43および音楽データ分割部44は、主として、図1に示すCPU11により実現される。以下、これらにより実行される処理についてより詳細に説明する。図5は、本実施の形態にかかる楽譜要素抽出部により実行される処理(直線等検出処理)の例を示すフローチャートである。図5に示すように、画像要素抽出部42は、オリジナル楽譜データを二値化して、生成された二値化データを含む二値化データファイルRAM15に格納する(ステップ501)。たとえば、二値化データはビットマップデータである。なお、オリジナル画像データファイルが既に二値化データである場合には、ステップ501は省略される。
次いで、楽譜要素抽出部42は、二値化データからパート線を検出する(ステップ502)。パート線は、パート垂直線とも称されるものである。図6は、楽譜データに基づく楽譜の例を示す図である。パート線とは、パート線で結ばれたパートは同時に演奏することを示すものであり、楽譜の段を規定するものである。通常、パート線は、楽譜の左端に位置している。図6において、符号601に示す線がパート線である。この例では、いわゆるパート線により大譜表が画定されている。いわゆるスコア(総譜)では、複数のパートの五線の左端が、パート線により連結されることになる。
図7は、ステップ502(パート線の検出処理)の処理例をより詳細に示すフローチャートである。図7に示すように、楽譜要素抽出部42は、楽譜の画像中、左端から所定の範囲の領域において、所定値より多く連続する垂直線を検出する(ステップ701)。垂直線が検出された場合には(ステップ702でYes)、楽譜要素抽出部42は、垂直線に相当する画素群を特定し(ステップ703)、さらに、見出された垂直線から下方に位置する画素を参照して、所定値より多く連続する別の垂直線を検出する(ステップ704)。
当該別の垂直線が検出された場合には(ステップ705でYes)、楽譜要素抽出部42は、当該別の垂直線に相当する画素群を特定する(ステップ706)。なお、楽譜要素抽出部42は、上記画素群の位置情報をRAM15に記憶しておくことにより、画素群を特定することができる。楽譜要素抽出部42は、楽譜の画像中、下端まで垂直線の検索が終了したかを判断する(ステップ707)。ステップ707でNoと判断された場合には、ステップ704に戻る。その一方、ステップ707でYesと判断された場合には、楽譜要素抽出部42は、検出された垂直線の位置情報(座標)をRAM15に格納し(ステップ708)、その後、パート線の検出処理を終了する。
パート線の検出処理においては、図6において、左端に位置する垂直線であるパート線(符号601が検出される)。また、検出された垂直線(符号601参照)から下方(符号619参照)に位置する他の垂直線(図6においては図示せず)が検出されることになる。
パート線の検出処理が終了すると、楽譜要素抽出部42は、楽譜中の五線を検出する(ステップ503)。図8は、ステップ503(五線の検出処理)の処理例をより詳細に示すフローチャートである。図8に示すように、楽譜要素抽出部42は、垂直方向においてパート線が位置する範囲を特定する(ステップ801)。次いで、楽譜要素抽出部42は、ステップ801で特定された範囲で、水平方向における黒点に相当する画素数をカウントする(ステップ802)。楽譜要素抽出部42は、パート線が位置する全ての範囲で画素数のカウントが終了したかを判断する(ステップ803)。ステップ803でNoと判断された場合には、ステップ802に戻る。
ステップ802においては、パート線が位置する範囲で、y軸方向(垂直方向)の座標(y座標)ごとに、同一のy座標を有する画素のそれぞれの値(画素値)が参照され、黒点を示す値であれば、カウント値がインクリメントされる。このようにして、パート線が位置するy座標のそれぞれについて、横方向(x軸方向)の黒点に相当する画素数がカウント値として取得される。図9は、y座標のそれぞれについての画素数を示すグラフである。図9において、横軸は、y軸方向(垂直方向)の位置、縦軸は、画素数(カウント値)を示している。
図6から理解できるように、楽譜では、五線(符号602、603)を構成する線(第一線〜第五線)の位置において、水平方向に直線が延びる。したがって、その位置における画素数(カウント値)は、他の位置と比較して顕著に大きい。図9の例では、符号901〜905に示すように、一定間隔の5つの位置のカウント値が、他の位置でのカウント値(たとえば、符号910、911参照)と比較して顕著に大きい。本実施の形態においては、このように一定間隔で5つのまとまりで位置する、カウント値が顕著に大きい位置を見出し、この位置を五線の位置であると判断する。このような五線の位置を判定するために、ステップ804以下の処理が実行される。
楽譜要素抽出部42は、カウント値の最大値(カウント最大値)より所定割合(たとえば、20パーセント)より小さいカウント値を示す位置を、五線の候補位置から除外する(ステップ804)。次いで、楽譜要素抽出部42は、カウント値の極大値を見出して、極大値を示す位置およびその周辺所定範囲の位置をマージする(ステップ805)。ステップ805においては、前記周辺の所定範囲を同一位置とみなして、所定範囲の位置についても見いだされた極大値を与えれば良い。また、楽譜要素抽出部42は、カウント値の最大偏差σを算出し、その所定倍(たとえば3倍:3σ)以下のカウント値を示す位置を、五線の候補位置から除外する(ステップ806)。楽譜要素抽出部42は、候補位置から除外された位置を除き、所定間隔で位置する5つのカウント値を特定する(ステップ807)。この5つの位置が五線位置となる。楽譜要素抽出部42は、当該五線位置の情報をRAM15に格納する(ステップ808)。
五線の検出処理が終了すると、楽譜要素抽出部42は、楽譜中の小節線を検出する(ステップ504)。図10は、ステップ504(小節線の検出処理)の処理例をより詳細に示すフローチャートである。小節線は、ある小節と次の小節とを区切るための、五線上、或いは、パート線と同じ長さでの垂直線である(図6の符号604〜606参照)。図10に示すように、楽譜要素抽出部42は、まず、五線譜の線上或いは線間に配置された音符を検出する(符号1010参照)。
より詳細には、楽譜要素抽出部42は、垂直方向において、パート線およびその上下所定範囲を含む、長方形の領域を特定する(ステップ1001)。特定された領域は、音符が配置される可能性がある領域にほぼ対応する。次いで、五線を構成する線の間隔に一致する大きさの楕円形を検出する(ステップ1002)。ステップ1002においては、たとえば、検出された楕円形の中心位置の座標がRAM15に格納される。楽譜要素抽出部42は、全てのパート線に関して、ステップ1002が実行されたかを判断する(ステップ1003)。ステップ1003でNoと判断された場合には、ステップ1002に戻り、次のパート線について特定された領域について、音符のタマの位置が検出される。
ステップ1003でYesと判断された場合には、楽譜要素抽出部42は、上記パート線およびその上下所定の範囲を含む領域において、検出された音符に対応する楕円形と所定距離以上離間し、かつ、パート線と近似する長さを有する垂直線を見出す(ステップ1004)。楽譜要素抽出部42は、検出された垂直線の情報を、RAM15に格納する(ステップ1005)。楽譜要素抽出部42は、全てのパート線に関して、ステップ1004、1005が実行されたかを判断する(ステップ1006)。ステップ1006でNoと判断された場合には、ステップ1004に戻り、次のパート線について特定された領域について、同様の処理が実行される。ステップ1006でYesと判断された場合には、小節線の検出処理を終了する。
小節線の検出(図5のステップ504)が終了すると、楽譜要素抽出部42は、繰り返し記号を検出する。図11は、本実施の形態にかかる繰り返し記号の検出処理の例を示すフローチャートである。図11に示すように、楽譜要素検出部42は、RAM15に格納された二値化された楽譜データを取得する(ステップ1101)。次いで、楽譜要素検出部42は、検出対象となる繰り返し記号を選択する。繰り返し記号(反復記号)としては、図12、図13に示すように、繰り返しの先頭記号(符号1201)、繰り返しの後端記号(符号1211)、1番カッコ(符号1231)、2番カッコ(符号1241)、トゥコーダ(符号1301)、ヴィーデ或いはコーダマーク(符号1311)、セーニョ(符号1321)、ダルセーニョ(符号1331)、ダカーポ(図示せず)などが含まれる。これら繰り返し記号の図形を含む画像データが、RAM15に予め格納され、ステップ1102においては、楽譜要素抽出部42は、所定の記号の画像データを読み出せば良い。
次いで、楽譜要素抽出部42は、記号のサイズを五線の幅に基づいて正規化する(ステップ1103)。次いで、楽譜要素抽出部42は、記号と楽譜データの所定のエリアとの一致係数(相関値)を算出する(ステップ1104)。たとえば、記号の画像データの画素と、所定のエリアの画像データの画素とを比較して、画素値が一致した場合には、一致係数をインクリメントして、最終的な一致係数を相関値とする。楽譜要素抽出部42は、楽譜データにおいて、エリアをシフトすることで、全てのエリアについての相関値を算出する。楽譜要素抽出部42は、相関値が最大となるエリアを特定し(ステップ1105)、当該エリアの画素データを取り出す(ステップ1106)。
次いで、楽譜要素抽出部42は、取り出された画像データの画素と、楽譜データにおける所定のエリアの画像データの画素とを比較して相関値を算出する(ステップ1107)。ステップ1105で検出されたエリアに存在する繰り返し記号が、この楽譜の中で用いられている記号であるため、同一の記号をより精度良く検出するために、ステップ1107において、検出されたエリアの画像データを用いて、記号を再度検出している。楽譜要素抽出部42は、相関値が一定の閾値より大きなエリアを特定する(ステップ1108)。その後、楽譜要素抽出部42は、楽譜データにおいて、特定されたエリアに、繰り返し記号に対応する所定のシンボルを描画する(ステップ1109)。楽譜要素抽出部42は、全ての繰り返し記号について処理を終了したかを判断する(ステップ1110)。ステップ1110でYesと判断された場合には、処理を終了し、ステップ1110でNoと判断された場合には、ステップ1102に戻る。
以下、繰り返し記号に対応するシンボルについて説明する。図12(a)〜(e)、図13(a)〜(d)において、右側に記載された繰り返し記号(符号1200〜1240、1300〜1330参照)に対応するシンボルを左側に示す(符号1201〜1241、1301〜1331参照)。繰り返しの先頭記号1201に対応するシンボル1200は、所定数の画素から構成されている。ここで、上側2ドット(符号1202参照)は、
繰り返しの先頭記号、繰り返しの後端記号、1番カッコ、2番カッコを表すために用いられ、下側2ドット(符号1203参照)は、トゥコーダ、コーダマーク、セーニョ、ダルセーニョ、ダカーポを表すために用いられる。繰り返しの先頭記号と後端記号とは、第1階層の上側において反対向きに黒の画素を配置することで区別される(符号1200、1210、1220参照)。また、繰り返しのカッコは、第1階層の下側において反対向きに黒の画素を配置することで区別される(符号1230、1240参照)。
また、コーダへの移行の指示(トゥコーダ)およびコーダは、第2階層の下側において反対向きに黒の画素を配置することで区別され(符号1300,1310参照)、セーニョおよびダルセーニョは、第2階層の上側において反対向きに黒の画素を配置することで区別される。
ステップ1109においては、上記所定数の画素から構成されるシンボルが、二値化された楽譜データ中、検出したエリア或いはその近傍に描画される。シンボルは、後述する画素要素データファイルを作成する際に参照される。なお、本実施の形態においては、繰り返し記号を検出し、二値化された楽譜データ中、当該繰り返し記号が検出された位置の近傍に、対応するシンボルを配置している。しかしながら、この手法に限定されるものではなく、繰り返し記号を検出すると、その種別および位置情報をRAM15に格納しても良い。
繰り返し記号の検出(図5のステップ505)が終了すると、データファイル生成部43は、ステップ502〜505で得られた情報に基づき、楽譜要素データファイルを生成する(ステップ506)。図14は、本実施の形態にかかる楽譜要素データファイルの生成処理の例を示すフローチャートである。図14に示すように、データファイル生成部43は、RAM15に格納された五線の位置情報、パート線および小節線の位置情報を、RAM15中の楽譜要素データファイルに、所定の順序および形式で格納する(ステップ1401、1402)。次いで、データファイル生成部43は、パート線の位置、小節線の位置、および、五線の位置に基づいて、小節番号と、当該小節番号を有する小節の位置とを対応付けて、RAM15中の楽譜要素データファイルに格納する(ステップ1403)。さらに、データファイル生成部43は、パート線および小節線のそれぞれの近傍に、繰り返し記号のシンボルが存在するかを判断する。シンボルが存在する場合には、シンボルに対応付けられた繰り返し記号の種別、および、その位置情報(たとえば、繰り返し記号が位置している小節番号、および、繰り返し記号に隣接するパート線或いは小節線を示す情報)を、RAM15中の楽譜要素データファイルに格納する(ステップ1404)。このようにして、楽譜に含まれる五線、パート線、小節線、繰り返し記号、および、小節の位置を含む楽譜要素の情報を格納した楽譜要素データファイルを生成することができる。さらに、楽譜が複数のパートを含む場合には、楽譜要素ファイルにおいて、五線の位置とパート(音色)とを対応させた情報を格納するのが望ましい。
音楽データ分割部44は、オリジナル音楽データファイルを、小節単位のデータファイル(単位音楽データファイル)に分割し、かつ、楽譜要素データファイルを参照して、繰り返し記号に基づき重複する小節を特定して、重複する単位音楽データファイルの一方を削除する。図15は、音楽データ分割部により実行される単位音楽データファイル生成処理の例を示すフローチャートである。図15に示すように、音楽データ分割部44は、フラッシュメモリ16に格納されたオリジナル音楽データファイルを取得する(ステップ1501)。オリジナル音楽データファイルは、楽音の発音(ノートオンイベント)を含むイベント間の時間間隔を示す時間情報(デルタタイム)、ノートオンイベントを含むイベントを示す情報のほか、時間の単位を示す情報(単位時間が4分音符をどれだけ分解したかを示す分解能、たとえば、240の分解能)や、楽曲の拍子を示す情報が含まれる。ノートオンイベントとノートオフイベントとの間の時間情報により、ノートオンにかかる音符の長さがわかる。
音楽データ分割部44は、オリジナル音楽データにおいて、楽曲の開始部分から、イベントを示す情報および時間情報を参照して、上記分解能に基づき、音符の長さを算出し(ステップ1502)、1つのファイル中に1小節分のイベントを示す情報および時間情報を含む単位音楽データファイルを生成する(ステップ1503)。生成された単位音楽データファイルは、RAM15に格納される。次いで、音楽データ分割部44は、楽譜要素データファイルに含まれる繰り返し記号に関する情報(繰り返し記号の種別およびその位置情報)に基づき、重複する単位音楽データファイルを削除する(ステップ1504)。
図16(a)は、ある楽曲の楽譜の構造を概略的に示す図、図16(b)は、当該楽曲のオリジナル音楽データの構造を概略的に示す図である。図16(a)および図16(b)において、括弧内の数字は小節番号を示す。また、図16(b)において、小節番号の前に付された数字は、単位音楽データファイルのファイル番号である。ファイル番号は、たとえば、図15のステップ1503においてファイルが生成されるときに、音楽データ分割部44が与えれば良い。たとえば、図16(b)における先頭の単位音楽データファイル(符号1621参照)は、ファイル番号が1番であり、括弧内に示すように第1小節に対応することが示されている。
図16(a)に示すように、この楽曲では、第5小節(符号1605)の先頭に繰り返しの先頭記号およびセーニョがあり、第8小節(符号1608)の先頭に1番カッコ、後端に繰り返しの後端記号がある。第9小節(符号1609)の先頭には2番カッコが存在する。また、第12小節(符号1612)の先頭には、トゥコーダ、第13小節(符号1613)の後端にはダルセーニョ、第14小節(符号1614)の先頭には、コーダが存在する。オリジナル音楽データファイルから小節単位で分割された単位音楽データファイルは、図16(b)に示すように、28個存在する。繰り返しが存在するため、第5小節に相当する単位音楽データファイルが複数回出現する(符号1625、1629、1637、2641参照)。
図31は、図15のステップ1504の処理例をより詳細に示すフローチャートである。図31に示すように、音楽データ分割部44は、ファイル番号を示すパラメータを「1」に初期化し(ステップ3101)、ファイル番号が示す単位音楽データファイルについて、繰り返し記号を参照して、楽譜中の小節番号を算出する(ステップ3102)。小節番号は、単位音楽データファイルのファイル番号に対応付けてRAM15に格納される(ステップ3103)。音楽データ分割部44は、最後のファイル番号を有するファイルについて、小節番号の算出が終了したかを判断する(ステップ3104)。ステップ3104でNoと判断された場合には、音楽データ分割部44は、ファイル番号をインクリメントして(ステップ3105)、ステップ3102に戻る。
ステップ3104でYesと判断された場合には、音楽データ分割部44は、再度、ファイル番号を「1」に初期化して(ステップ3106)、ファイル番号が示す音楽データファイルに対応付けられた小節番号が、すでに出現しているかを判断する(ステップ3107)。ステップ3107でYesと判断された場合には、当該重複する小節番号を有する単位音楽データファイルを排除する(ステップ3108)。音楽データ分割部44は、最後のファイル番号を有するファイルについて処理が終了したかを判断する(ステップ3109)。ステップ3109でNoと判断された場合には、音楽データ分割部44は、ファイル番号をインクリメントして(ステップ3110)、ステップ3107に戻る。このような処理により、排除されなかった単位音楽データファイルが、重複のない最終的な単位音楽データファイルとなる。音楽データ分割部44は、排除されなかった単位音楽データファイルを、最終的な単位音楽データファイルとして、小節番号と対応付けてRAM15に格納する(ステップ3111)。
図16に示す例では、音楽データ分割部44は、楽譜要素データファイルを参照して、第5小節〜第7小節が繰り返されることに基づき、ファイル番号が第9番〜第11番の単位音楽データファイルは、繰り返しの第5小節〜第7小節であると判断し、これにより、第9番〜第11番の単位音楽データファイルを除外すべきであると判断する。同様に、楽譜要素データファイル中のダルセーニョにより第13小節から第5小節に戻ることが検出され、上述した繰り返し記号および第12小節のトゥコーダおよび第14小節のコーダも加味して、第17番〜第26番の単位音楽データファイルが重複していると判断し、これらを除外すべきであると判断する。
このようにして、音楽データ分割部44は、図17に示すように、重複の無い、15個の最終的な単位音楽データファイルを得ることができる。音楽データ分割部44は、また、単位音楽データファイルの各々に、ファイルの順序にしたがって小節番号を付加する。たとえば、符号1701、1705で示すものが、単位音楽データファイルを示している。重複を排除した結果、単位音楽データファイルは、図16(a)に示すような楽譜の小節番号と対応するファイルのみから構成され、また、単位音楽データファイルの順序も楽譜の小節番号の順序と一致する。
以下に詳述するように、単位音楽データファイルを再生して、楽音を発音させる際には、楽譜要素データファイル中の繰り返し記号が参照され、繰り返し記号にしたがって、再生すべき単位音楽データファイルが特定され得る。
以下、本実施の形態にかかる端末装置における処理について説明する。図18は、本実施の形態にかかる端末装置において実行される処理の例を示すフローチャートである。図18に示すように、端末装置30のCPU31は、端末装置30の電源が投入されると、RAM35中のデータや、表示部33の表示画面のクリアを含むイニシャル処理を実行する(ステップ1801)。
イニシャル処理(ステップ1801)が終了すると、CPU31は、タッチパネル32上のスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するパネルスイッチ処理を実行する(ステップ1802)。たとえば、表示部33の画面上には、種々のアイコン(図3の符号301参照)が表示され、ユーザがアイコンに触れることにより、CPU31によりタッチパネル32上のスイッチ操作が検出される。図19は、本実施の形態にかかるパネルスイッチ処理の例を示すフローチャートである。
図19に示すように、パネルスイッチ処理には、ソング選択処理(ステップ1901)、スタート・ストップスイッチ処理(ステップ1902)、他のパネルスイッチ処理(ステップ1903)が含まれる。図20は、本実施の形態にかかるソング選択処理の例を示すフローチャートである。図20に示すように、CPU31は、タッチパネル32においてソングボタンに対応する位置がオンされたかを判断する(ステップ2001)。ステップ2001でNoと判断された場合には、ソング選択処理が終了される。
ステップ2001でYesと判断された場合には、CPU31は、通信I/F37に、センタ装置10に対するソングリスト送信依頼の送信を指示する(ステップ2002)。これに応答して、通信I/F37は、センタ装置10に対してソングリスト送信依頼を送信し、センタ装置10からソングリストを受信する。CPU31は、受理したソングリストを表示部33の画面上に表示する(ステップ2003)。ユーザは表示部33において表示されたカーソルボタンをタッチすることで、所望のソング名を指定することができる。CPU31は、表示部33の画面上に表示されたソングリストにおいてカーソルが位置するソング名を強調表示する(ステップ2004)。
CPU31は、表示部33において表示された決定スイッチがオンされたことを検出すると(ステップ2005でYes)、通信I/F37に、センタ装置10に対する決定されたソング名の楽曲の表示用楽譜データファイル、一連の単位音楽データファイルおよび楽譜要素データファイルの送信依頼の送信を指示する(ステップ2006)。これに応答して、通信I/F37は、センタ装置10に、所定の楽曲の表示用楽譜データファイル、一連の単位音楽データファイルおよび楽譜要素データファイルの送信依頼を送信し、センタ装置10から、当該楽曲の表示用楽譜データファイル、一連の単位音楽データファイルおよび楽譜要素データファイルを受理する(ステップ2007)。CPU31は、受理した表示用楽譜データファイル、一連の単位音楽データファイルおよび楽譜要素データファイルを、フラッシュメモリ36に格納する(ステップ2007)。
次いで、CPU31は、楽譜データファイルに基づいて、表示部33の画面上に楽譜を表示する(ステップ2008)また、CPU31は、楽譜要素データファイル中の垂直線および小節線の座標に基づいて、楽譜において先頭小節に対応する領域を強調表示する(ステップ2009)。強調表示として、たとえば、その部分だけ他の色(赤色)の半透明表示とすれば良い。
次に、スタート・ストップスイッチ処理について説明する。図21は、本実施の形態にかかるスタート・ストップスイッチ処理の例を示すフローチャートである。図21に示すように、CPU31は、表示部33において表示されたスタート・ストップスイッチの操作があったかを判断する(ステップ2101)。ステップ2101でNoと判断された場合には、スタート・ストップスイッチ処理を終了する。
ステップ2101でYesと判断された場合には、CPU31は、RAM35に格納されたスタートフラグSTFを反転させ(ステップ2102)、スタートフラグSTFが「1」であるかを判断する(ステップ2103)。ステップ2103でYesと判断された場合には、CPU31は、楽譜要素データファイルを参照して、所定の単位音楽データファイルを特定する(ステップ2104)。たとえば、最初のスタート・ストップスイッチのオンであれば、CPU31は、先頭の単位音楽データファイルを所定の単位音楽データファイルとして特定する。或いは、スタート・ストップスイッチの操作により楽曲の再生が停止されている状態であれば、CPU31は、停止した位置に対応する単位音楽データファイルを所定単位音楽データファイルとして特定する。
次いで、CPU31は、特定された単位音楽データファイル中、所定アドレスのデータレコードを取得する(ステップ2105)。取得されたデータレコードは、たとえば、RAM35に格納される。たとえば、最初のスタート・ストップスイッチのオンであれば、CPU31は、先頭アドレスのデータレコードを取得する。或いは、スタート・ストップスイッチの操作により楽曲の再生が停止されている状態であれば、CPU31は、停止した位置に対応するデータレコードを取得する。
また、CPU31は、タイマインタラプトを開始する(ステップ2106)。タイマインタラプトが解除されることにより、所定の時間間隔でタイマインタラプト処理が実行され、CPU31の内部に設けられたタイマがインクリメントされる。なお、ステップ2103でNoと判断された場合、つまり、STFが「0」である場合には、CPU31は、タイマインタラプトを停止する(ステップ2107)。
その後、CPU31は、他のパネルスイッチ処理を実行する(ステップ1903)。他のパネルスイッチ処理には、テンポスイッチの操作によるテンポデータの設定およびテンポデータのRAM23への格納などが含まれる。
パネルスイッチ処理(ステップ1802)が終了すると、CPU31は、画像更新処理を実行する(ステップ1803)。画像更新処理においては、CPU31は、楽曲の再生が進行しているときに、表示された楽譜において、現在演奏中の小節の領域を強調表示し、或いは、表示部33の画面上に表示する楽譜の部分を変更する。画像更新処理については後に再度説明する。
画像更新処理(ステップ1803)が終了すると、CPU31は、演奏操作検出処理を実行する(ステップ1804)。図22〜図24は、本実施の形態にかかる演奏操作検出処理の例を示すフローチャートである。図22に示すように、CPU31は、表示部33において楽譜が表示された領域での操作(ユーザによる接触)があったかを判断する(ステップ2201)。図25は、端末装置の表示部の画面上に楽譜が表示された例を示す図である。図25において、たとえば、破線2501の内側の領域が、楽譜が表示された領域となる。
ステップ2201でYesと判断された場合には、CPU31は、ユーザにより接触された位置の座標を取得する(ステップ2202)。ステップ2202では位置の座標のほか、操作回数、操作時刻、操作時間(接触された時間長)および前回操作からの差分値を得て、これらをRAM35に格納する。次いで、CPU31は、ユーザが接触した位置の座標および楽譜要素データファイルに基づいて、接触した位置に対応する小節番号を取得する(ステップ2203)。
図26、27は、図22のステップ2203をより詳細に示すフローチャートである。図26に示すように、CPU31は、RAM35に格納された、操作された位置の座標、操作回数、操作時刻、操作時間(接触された時間長)および前回操作からの差分値を取得する。次いで、CPU31は、操作された位置が、小節線の付近であるかを判断する(ステップ2602)。ここでは、操作された位置が、小節線を含む前後左右所定の長方形の領域内であるかを判断すれば良い。
ステップ2602でYesと判断された場合には、CPU31は、楽譜要素データファイルを参照して、操作された位置の付近にある小節線について、リピート記号が存在するかを判断する(ステップ2603)。ステップ2603でYesと判断された場合には、CPU31は、RAM35中のリピートフラグを「1」にセットするとともに、リピート記号の情報をRAM35に格納する(ステップ2604)。
次いで、CPU31は、操作された位置が、小節の範囲、つまり、五線と小節線とで囲まれた領域内であるかを判断する(ステップ2605)。ステップ2605でYesと判断された場合には、CPU31は、楽譜要素データファイルを参照して、操作された位置に対応する小節番号を取得する(ステップ2606)。また、CPU31は、操作時間が、所定の閾値Th1より大きいかを判断する(ステップ2607)。ステップ2607でYesと判断された場合には、CPU31は、ミュートフラグを「1」にセットする(ステップ2608)。ステップ2608において、ミュートフラグのセットに加えて、CPU31は、楽譜要素データファイル中のパート線および五線の位置を参照して、表示されている楽譜が複数パートから構成される場合には、操作された位置に対応するパートをミュートパートとして、RAM35にパートを示す情報を格納する。パートを示す情報として、ミュートすべき五線の位置情報を利用することができる。
次いで、CPU31は、今回の操作された位置が、前回の操作位置から所定の範囲内であり、かつ、操作間隔である差分値が所定の閾値Th2より小さいかを判断する(ステップ2701)。ステップ2701でYesと判断された場合には、操作回数に、今回の操作回数を加算して、新たな操作回数をRAM35に格納する(ステップ2702)。その後、CPU31は、楽譜上のユーザによる操作により次に演奏すべき小節番号を取得する(ステップ2703)。
図28は、図27のステップ2703をより詳細に示すフローチャートである。図28に示すように、CPU31は、RAM35に格納された繰り返しの完了回数が、繰り返し回数以下であるかを判断する(ステップ2801)。ステップ2801でYesと判断された場合には、小節の繰り返しが完了していないことになる。この場合には、CPU31は、繰り返し回数が2以上であるかを判断する(ステップ2802)。ステップ2802でYesと判断された場合には、CPU31は、次の小節番号を現在の小節番号と同じ番号としてRAM35に格納する(ステップ2803)。次いで、CPU31は、RAM35中の完了回数を示すパラメータをインクリメントする(ステップ2804)。ステップ2801でNoと判断された場合、つまり、完了回数が繰り返し回数より多くなった場合には、CPU31は、RAM35に格納された、繰り返し回数を示すパラメータおよび完了回数を示すパラメータを「0」にリセットする(ステップ2805)。
ステップ2802でNoと判断された場合、或いは、ステップ2805の後に、CPU31は、RAM35に格納されたリピートフラグが「0」であるかを判断する(ステップ2806)。ステップ2806でYesと判断された場合には、CPU31は、次の小節番号を、現在の小節番号に「1」を加えた番号としてRAM35に格納する(ステップ2807)。ステップ2806でNoと判断された場合には、リピート記号が存在していることを意味する。したがって、CPU31は、リピート先決定処理を実行する(ステップ2808)。リピート先決定処理については後に詳述する。
図22のステップ2203が終了すると、CPU31は、スタートフラグSTFが「1」であるかを判断する(ステップ2204)。ステップ2204では、現在楽曲が演奏されているかが判断される。ステップ2204でYesと判断された場合には、CPU31は、RAM35中のリピートフラグが「0」であり、かつ、ミュートフラグが「0」であるかを判断する(ステップ2205)。ステップ2205においては、楽曲が演奏中で表示された楽譜上の操作があったときに、それがパートのミュートや繰り返しの指示でないことが判断されている。
ステップ2205でYesと判断された場合には、さらに、RAM35中の繰り返し回数を示すパラメータが「0」であるかを判断する(ステップ2206)。ステップ2206でYesと判断された場合には、CPU31は、単位音楽データファイルのデータレコードのうち、現在発音中の楽音についてノートオフイベントを生成して、音源部39に指示する(ステップ2207)。また、CPU31は、タイマインタラプトを停止する(ステップ2208)とともに、スタートフラグSTFを「0」にリセットする(ステップ2209)。
ステップ2204〜2206の何れかでNoと判断された場合、或いは、ステップ2209が実行された後に、ステップ2301に進む。ステップ2301において、CPU31は、スタートフラグSTFが「1」で、かつ、ミュートフラグが「1」であるかを判断する(ステップ2301)。ステップ2301でYesと判断された場合には、CPU31は、単位音楽データファイルのデータレコードのうち、ミュートパートに対応する音色、音高の楽音についてノートオフイベントを生成して、音源部39に指示する(ステップ2302)。楽譜要素データファイル中のミュートすべき五線の位置情報に基づいて、ミュートすべきパートの音色を決定することができる。
また、CPU31は、次の小節番号は現在の小節番号と不一致であるかを判断する(ステップ2303)。ステップ2303でYesと判断された場合には、次の小節番号に対応する単位音楽データファイルを取得する(ステップ2304)。その後、取得された単位音楽データファイルの先頭アドレスのデータレコードを取得して、RAM35に格納する(ステップ2305)。その後、CPU31はタイマインタラプトを解除する(ステップ2306)とともに、スタートフラグSTFを「1」にセットする(ステップ2307)。
ステップ2201でNoと判断された場合には、CPU31は、スタートフラグが「1」であるかを判断する(ステップ2401)。ステップ2401でYesと判断された場合には、CPU31は、単位音楽データファイルを参照して、現在発音中の楽音が小節の末尾の楽音であるかを判断する(ステップ2402)。ステップ2401或いは2402でNoと判断された場合には、演奏操作検出処理を終了する。
ステップ2402でYesと判断された場合には、CPU31は、楽譜要素データファイルを参照して、次の小節番号を特定する(ステップ2403)。後述するように、楽譜要素データファイルにおいて、現在の小節の末尾に関してリピート記号が存在しない場合には、CPU31は、次の小節番号を、現在の小節番号に「1」を加えた番号としてRAM35に格納する。また、楽譜要素データファイルにおいて現在の小節の末尾にリピート記号が存在する場合、或いは、現在の小節番号に「1」を加えた次の小節番号を得た場合に、当該次の小節番号に対応する小節の先頭にリピート記号が存在する場合には(ステップ2404でYes)、CPU31は、リピート先決定処理を実行する(ステップ2405)。ステップ2404でNoと判断された場合或いは、ステップ2405の後、ステップ2304に進む。
図29は、本実施の形態にかかるリピート記号処理の例を示すフローチャートである。本実施の形態において、リピート記号には、いわゆる繰り返しの先頭記号および後端記号、並びに、これに関連する番号付きカッコを含む第1群と、ダルセーニョ、ダカーポ、トゥコーダ、ヴィーデ(コーダ)、セーニョを含む第2群とに分けられている。また、第1群および第2群のそれぞれについて、各記号は、開始(Start)、終端(End)、行き先(To)、出発元(From)という4つの記号種別に対応付けられている。
たとえば、第1群に属するリピート記号は、以下の記号種別と対応付けられる。
繰り返しの先頭記号:開始(Start)
繰り返しの終端記号:終端(End)
番号付きカッコのうち、最終番号以外のカッコ:出発元(From)
番号付きカッコのうち、最終番号のカッコ:行き先(To)。
また、第2群に属するリピート記号は、以下の記号種別と対応付けられる。
ダカーポ:終端(End)
ダルセーニョ:終端(End)
曲先頭:開始(Start)、ただしダカーポが存在する場合のみ
セーニョ:開始(Start)
ヴィーデ:出発元(From)
コーダ:行き先(To)。
したがって、楽譜要素データファイルにおいては、小節番号に対応して、リピート記号の属する群(第1群或いは第2群)およびリピート記号の名称および記号種別が含まれる。また、番号付きのカッコについては、上記情報に加えて、リピート指定数(つまり、繰り返し番号に相当する数字)が付加される。
リピート記号処理は、群ごとに実行される。したがって、第1群のリピート記号についてのリピート記号処理、および、第2群のリピート記号についてのリピート記号処理がそれぞれ実行される。図29に示すように、CPU31は、リピート記号種別を参照する(ステップ2901)。リピート記号種別が開始(Start)である場合には、CPU31は、RAM35中のリピート位置として、現在の小節番号を格納する(ステップ2902)。
リピート種別が終端(End)である場合には、CPU31は、RAM35中の次の小節番号として、リピート位置の小節番号をセットする(ステップ2903)。また、CPU31は、RAM35中のリピート記号に関する繰り返し回数を示すパラメータをインクリメントする(ステップ2904)。リピート記号種別が行き先(To)である場合には、処理を終了する。
リピート希望種別が出発元(From)である場合には、CPU31は、RAM35中の、リピート記号に関する繰り返し回数が、リピート指定数以上であるかを判断する(ステップ2905)。ステップ2905でNoと判断された場合には処理を終了する。その一方、ステップ2905でYesと判断された場合には、CPU31は、楽譜要素データファイル中、リピート記号種別の行き先(To)を示すリピート記号を含む小節を検索する(ステップ2906)。なお、ここでは、同じ群に属するリピート記号が検索される。CPU31は、RAM35中の次の小節番号として、検索された小節番号をセットする(ステップ2907)。また、CPU31は、リピート記号に関する繰り返し回数を「0」にリセットする(ステップ2908)。
演奏操作検出処理(図18のステップ1804)が終了すると、CPU31は、ソング処理を実行する(ステップ1805)。図30は、本実施の形態にかかるソング処理の例を示すフローチャートである。図30に示すように、CPU31は、単位音楽データファイルのアドレスを歩進する(ステップ3001)。ステップ3001においては、アドレスの歩進により、時間を示すデータレコードのアドレスとなるようにする。CPU31は、アドレスが既に単位音楽データファイルの末尾になっているかを判断する(ステップ3002)。ステップ3002でYesと判断された場合には、CPU31は、RAM35に格納された次の小節番号を参照して、当該次の小節番号を有する単位音楽データファイルを取得する(ステップ3003)。
その後、CPU31は、単位音楽データファイルにおいて、アドレスが示すデータレコードにおける時間情報を参照して(ステップ3004)、現在時刻が、時間情報に基づく次のイベントの実行タイミングに達しているかを判断する(ステップ3005)。ステップ3005でYesと判断された場合には、CPU31は、RAM35中のミュートフラグが「1」であるかを判断する(ステップ3006)。ステップ3006でYesと判断された場合には、CPU31は、時間情報に後続するデータレコードを参照して、イベントが、ミュートパートの音色に関連するかを判断する(ステップ3007)。ステップ3007でYesと判断された場合には、ソング処理を終了する。
ステップ3006でYes、或いは、ステップ3007でNoと判断された場合には、CPU31は、発音・消音処理を実行する(ステップ3008)。ステップ3008において、CPU31は、時間情報に後続するデータレコードを参照して、当該イベントがノートオンイベントであれば、データレコードが示す音色および音高での発音を示すノートオンイベントを生成して、音源部39に出力する。また、CPU31は、イベントがノートオフイベントであれば、データレコードが示す音色および音高で発音中の楽音を消音するノートオフイベントを参照して、音源部39に出力する。
ソング処理(ステップ1805)が終了すると、音源部39において音源発音処理が実行される(ステップ1806)。音源発音処理では、音源部39が、CPU31からノートオンイベントを受理すると、ノートオンイベントに含まれる音高および音色情報に基づき、ROM34から所定の音色の波形データを、音高にしたがった速度で読み出して、所定の楽音データを生成する。また、音源部39が、CPU31からノートオフイベントを受理すると、ノートオフイベントに示される音色および音高の楽音を消音する。
音源発音処理(ステップ1806)が終了すると、CPU31は、その他の処理を実行して(ステップ1807)、ステップ1802に戻る。その他の処理には、通信I/F37を介したセンタ装置10とのデータ送受信、メモリカードなど外部記憶媒体(図示せず)からのデータの読み出し、外部記憶媒体へのデータ書き込みなどが含まれる。
次に図18のステップ1803の画像更新処理について再度説明する。図32は、本実施の形態にかかる画像更新処理の例を示すフローチャートである。図32に示すように、CPU32は、スタートフラグSTFが「1」であるかを判断する(ステップ3201)。ステップ3201でNoと判断された場合には、画像更新処理を終了する。ステップ3201でYesと判断された場合には、CPU31は、RAM35中に次の小節番号が格納されているかを判断する(ステップ3202)。ステップ3202でYesと判断された場合には、次の小節番号に対応する小節の領域を強調表示する(ステップ3203)。その後、CPU31は、次の小節番号を現在の小節番号として、RAM35に格納するとともに、次の小節番号をクリアする(ステップ3204)。
その後、CPU31は、現在強調表示されている小節の領域の位置を取得し(ステップ3205)、その位置が、画像中右下の表示範囲内であるかを判断する(ステップ3206)。ステップ3206では、現在演奏中の小節が、画像中の右下側(末端)に位置しているかが判断される。ステップ3206でYesと判断された場合には、CPU31は、現在強調表示されている小節を先頭として所定小節数に対応する楽譜データファイルの部分を読み出し(ステップ3207)、読み出された楽譜データファイルの領域を、表示部33の画面上に表示する(ステップ3208)。
本実施の形態によれば、楽譜要素抽出部42が、画像データファイル中の楽譜において、当該楽譜の構成要素であるパート線、五線、および、小節線の位置に基づいて、前記楽譜における小節の各々の領域および小節番号を特定する。音楽データ分割部44は、音楽データファイル中の時間情報に基づいて、音楽データファイルを分割して、小節ごとの、音高を示す情報および時間情報を含む、複数の単位音楽データファイルを生成する。また、音楽データ分割部44は、画像データファイル中の楽譜において、当該楽譜の構成要素である繰り返し記号の種別およびその位置と、パート線、五線および小節線の位置と、に基づき、繰り返し記号の位置する小節を特定して、複数の単位音楽データファイルから、繰り返しにより重複する単位音楽データファイルを排除して、重複のない最終的な単位音楽データファイルを取得するとともに、最終的な単位音楽データファイルと、小節番号とを対応付けて、RAM35に格納する。したがって、本実施の形態においては、それぞれが楽譜の小節と1対1に対応する単位音楽データファイルを得ることが可能となる。
また、データファイル生成部43は、楽譜におけるパート線五線および、小節線が存在する位置、小節の各々の領域および小節番号、繰り返し記号の種別および位置を含む、楽譜要素データを格納した楽譜要素データファイルを生成して、RAM15に格納する。したがって、上記単位音楽データファイルと、画像データ中の画像の領域とを対応付けることも可能となる。
また、本実施の形態においては、楽譜要素抽出部42は、二値化された楽譜データファイルから、楽譜の構成要素であるパート線、五線、および、小節線が存在する位置を検出する。これにより、楽譜から、単位音楽データファイルの生成や、楽譜要素データファイルの生成に必要な情報を取得することが可能となる。
たとえば、楽譜要素抽出部42は、前記楽譜において左端から所定の範囲内において、垂直線に相当する画素群を検出し、これに基づき前記パート線の位置を検出する。また、楽譜要素抽出部42は、垂直方向に前記パート線が存在する範囲において、水平方向の黒点に相当する画素数をカウントし、当該画素数に基づき、五線を構成する線を特定し、五線が存在する位置を検出する。さらに、楽譜要素抽出部42は、垂直方向に前記パート線が存在する範囲において、当該パート線より楽譜において右側に位置する垂直線に相当する画素群を検出し、これに基づき前記小節線の位置を検出する。このようにして、本実施の形態によれば、楽譜に必須の構成部分である線の位置を適切に検出することができる。
また、本実施の形態においては、楽譜要素抽出部42は、楽譜の構成要素である繰り返し記号の種別およびその位置を検出する。したがって、演奏のための必須の構成要素である繰り返し記号も適切に検出することができる。
さらに、本実施の形態においては、音楽データ分割部44は、単位音楽データファイルごとに対応する小節番号を算出し、先頭の単位音楽データファイルから順次、対応付けられた小節番号が既に存在するかを判断し、存在する場合には、当該単位音楽データファイルを排除する。これにより、繰り返し記号を考慮して、繰り返しによる重複のない小節ごとの単位音楽データファイルを得ることが可能となる。
本発明は、以上の実施の形態に限定されることはない。たとえば、前記実施の形態においては、センタ装置10により、表示用楽譜データファイル、楽譜要素データファイル、および、単位音楽データファイルが生成され、生成されたデータファイルは、端末装置30に送信される。端末装置30は、受信した表示用楽譜データファイルを表示部33の画面上に表示するとともに、楽譜要素データファイルを参照しつつ、単位音楽データファイルに基づく楽曲の演奏を実現している。しかしながら、センタ装置10において、音源部19を含むサウンドシステム18を利用して、センタ装置10が、楽譜要素データファイルを参照しつつ、単位音楽データファイルに基づく楽曲の演奏を行っても良い。同様に、表示用楽譜データファイルに基づく楽譜の表示や小節の指定などをセンタ装置10において実現することも可能である。
以上、本発明の実施の形態について詳細に説明したが、本発明の範囲は上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明およびその均等の範囲が、本発明の範囲内に包含される。以下、本出願の願書に最初に添付した特許請求の範囲に記載された発明を付記する。なお、付記に記載した請求項の項番は、本出願の願書に最初に添付した特許請求の範囲の項番に相当する。
[付記]
請求項1に記載された発明は、請求項1に記載された発明は、楽曲を構成する一連の楽音について、発音すべき音高を示す情報、および、その発音タイミングを示す時間情報を含む音楽データを格納した音楽データファイル、および、
前記楽曲の楽譜の画像データを格納した画像データファイル、を格納した記憶手段と、
前記画像データファイル中の楽譜において、当該楽譜の構成要素であるパート線、五線、および、小節線の位置に基づいて、前記楽譜における小節の各々の領域および小節番号を特定する小節特定手段と、
前記音楽データファイル中の時間情報に基づいて、前記音楽データファイルを分割して、小節ごとの、音高を示す情報および時間情報を含む、複数の単位音楽データファイルを生成する音楽データファイル分割手段と、
前記画像データファイル中の楽譜において、当該楽譜の構成要素である繰り返し記号の種別およびその位置と、前記パート線、五線および小節線の位置と、に基づき、繰り返し記号の位置する小節を特定して、前記複数の単位音楽データファイルから、繰り返しにより重複する単位音楽データファイルを排除して、重複のない最終的な単位音楽データファイルを取得するとともに、最終的な単位音楽データファイルと、前記小節番号とを対応付けて、前記記憶手段に格納する単位音楽データファイル生成手段と、
前記楽譜におけるパート線、五線および小節線が存在する位置、小節の各々の領域および小節番号、前記繰り返し記号の種別および位置を含む、楽譜要素データを格納した楽譜要素データファイルを生成して、前記記憶装置に格納する楽譜要素データファイル生成手段と、を備えたことを特徴とする楽譜情報生成装置である。
請求項2に記載された発明は、前記画像データファイルから、前記楽譜の構成要素であるパート線、五線、および、小節線が存在する位置を検出する位置検出手段を備えたことを特徴とする楽譜情報生成装置である。
請求項3に記載された発明は、前記位置検出手段が、前記楽譜において左端から所定の範囲内において、垂直線に相当する画素群を検出し、これに基づき前記パート線の位置を検出することを特徴とする楽譜情報生成装置である。
請求項4に記載された発明は、前記位置検出手段が、垂直方向に前記パート線が存在する範囲において、水平方向の黒点に相当する画素数をカウントし、当該画素数に基づき、五線を構成する線を特定し、五線が存在する位置を検出することを特徴とする楽譜情報生成装置である。
請求項5に記載された発明は、前記位置検出手段が、垂直方向に前記パート線が存在する範囲において、当該パート線より楽譜において右側に位置する垂直線に相当する画素群を検出し、これに基づき前記小節線の位置を検出することを特徴とする楽譜情報生成装置である。
請求項6に記載された発明は、前記画像データファイルから、前記楽譜の構成要素である繰り返し記号の種別およびその位置を検出する繰り返し記号検出手段を備えたことを特徴とする楽譜情報生成装置である。
請求項7に記載された発明は、前記単位音楽データファイル生成手段が、前記単位音楽データファイルごとに対応する小節番号を算出し、先頭の単位音楽データファイルから順次、対応付けられた小節番号が既に存在するかを判断し、存在する場合には、当該単位音楽データファイルを排除することを特徴とする楽譜情報生成装置である。
請求項8に記載された発明は、楽曲を構成する一連の楽音について、発音すべき音高を示す情報、および、その発音タイミングを示す時間情報を含む音楽データを格納した音楽データファイル、および、
前記楽曲の楽譜の画像データを格納した画像データファイル、を記憶装置に格納したコンピュータに、
前記画像データファイル中の楽譜において、当該楽譜の構成要素であるパート線、五線、および、小節線の位置に基づいて、前記楽譜における小節の各々の領域および小節番号を特定する小節特定ステップと、
前記音楽データファイル中の時間情報に基づいて、前記音楽データファイルを分割して、小節ごとの、音高を示す情報および時間情報を含む、複数の単位音楽データファイルを生成する音楽データファイル分割ステップと、
前記画像データファイル中の楽譜において、当該楽譜の構成要素である繰り返し記号の種別およびその位置と、前記パート線、五線および小節線の位置と、に基づき、繰り返し記号の位置する小節を特定して、前記複数の単位音楽データファイルから、繰り返しにより重複する単位音楽データファイルを排除して、重複のない最終的な単位音楽データファイルを取得するとともに、最終的な単位音楽データファイルと、前記小節番号とを対応付けて、前記記憶手段に格納する単位音楽データファイル生成ステップと、
前記楽譜におけるパート線、五線および小節線が存在する位置、小節の各々の領域および小節番号、前記繰り返し記号の種別および位置を含む、楽譜要素データを格納した楽譜要素データファイルを生成して、前記記憶装置に格納する楽譜要素データファイル生成ステップと、を実行させることを特徴とする楽譜情報生成プログラムである。