(57)【特許請求の範囲】
【請求項１】
複数のパートの音符データと、歌詞データとを含むファイルのデータを記憶媒体から読み出す読み出し手段と、
前記読み出し手段により読み出された前記歌詞データの出力タイミングと、前記複数のパートの音符データの出力タイミングとを比較する比較手段と、
前記比較手段により比較された結果に基づいて、前記歌詞データに合わせて表示すべきパートを前記複数のパートの中から決定する決定手段と、
前記音符データと、前記歌詞データとを表示装置に表示する表示手段とを有し、
前記表示手段は、前記決定手段により決定されたパートの音符データに合わせて、前記歌詞データを表示装置に表示することを特徴とする電子楽器。
【請求項２】
前記比較手段は、前記読み出し手段により読み出された前記歌詞データと、出力タイミングが所定の範囲内にある音符データが属するパートの数を計数し、
前記決定手段は、前記比較手段により計数された数が最も多いパートを、前記歌詞データに合わせて表示すべきパートとして決定することを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記比較手段は、前記読み出し手段により読み出された前記歌詞データと、出力タイミングが同じ音符データが属するパートの数を計数することを特徴とする請求項２に記載の電子楽器。
【請求項４】
前記比較手段は、前記読み出し手段により読み出された前記歌詞データの出力タイミングに対し、所定の範囲内に音符データが存在しないパートの数を計数し、
前記決定手段は、前記比較手段により計数された数が最も少ないパートを、前記歌詞データに合わせて表示すべきパートとして決定することを特徴とする請求項１に記載の電子楽器。
【請求項５】
前記比較手段は、前記読み出し手段により読み出された前記歌詞データと同じ出力タイミングに音符データが存在しないパートの数を計数することを特徴とする請求項３に記載の電子楽器。
【請求項６】
前記決定手段は、前記比較手段により比較された結果に基づいて、前記歌詞データに合わせて表示すべきパートを、前記ファイル内のデータにより構成される楽曲の区間毎に決定することを特徴とする請求項１〜５の何れか１項に記載の電子楽器。
【請求項７】
前記読み出し手段により読み出された前記音符データに含まれている情報に基づいて、その音符データを除外するか否かを判定する判定手段を有し、
前記比較手段は、前記読み出し手段により読み出された前記歌詞データの出力タイミングと、前記複数のパートの音符データであって、前記判定手段により除外しないと判定された音符データの出力タイミングとを比較することを特徴とする請求項１〜６の何れか１項に記載の電子楽器。
【請求項８】
前記読み出し手段により読み出される前記音符データ及び前記歌詞データには、小節又は拍を基準とした出力タイミングに関する情報が含まれていることを特徴とする請求項１〜７の何れか１項に記載の電子楽器。
【請求項９】
複数のパートの音符データと、歌詞データとを含むファイルであって、小節及び拍が規定されていないファイルのフォーマットを、小節及び拍が規定されているフォーマットに変換する変換手段を有し、
前記読み出し手段は、前記変換手段により変換されたファイルのデータを記憶媒体から読み出すことを特徴とする請求項８に記載の電子楽器。
【請求項１０】
前記決定手段により決定されたパートの情報を、前記歌詞データに書き込む書き込み手段を有することを特徴とする請求項１〜９の何れか１項に記載の電子楽器。
【請求項１１】
複数のパートの音符データと、歌詞データとを含むファイルのデータを記憶媒体から読み出す読み出しステップと、
前記読み出しステップにより読み出された前記歌詞データの出力タイミングと、前記複数のパートの音符データの出力タイミングとを比較する比較ステップと、
前記比較ステップにより比較された結果に基づいて、前記歌詞データに合わせて表示すべきパートを前記複数のパートの中から決定する決定ステップと、
前記音符データと、前記歌詞データとを表示装置に表示するステップとをコンピュータに実行させ、
前記表示ステップは、前記決定手段により決定されたパートの音符データに合わせて、前記歌詞データを表示装置に表示することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器及びコンピュータプログラムに関し、特に、音符データに合わせて歌詞データを表示するために用いて好適なものである。
【背景技術】
【０００２】
音符データを楽譜の形態にしてＬＣＤ（Liquid Crystal Display）等の表示装置に表示するに際し、その音符データに、対応する歌詞データを合わせて表示する電子楽器がある（特許文献１を参照）。
【０００３】
【特許文献１】特開２００１−３０６０６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、このような電子楽器では、例えば自動演奏機能を実現する際に、複数のパートの音符データと歌詞データとが１トラック中に混在したＳＭＦ（Standard MIDI（Musical Instrument Digital Interface） File）等のデータを使用して、複数のパートの音符データを楽譜の形態にして表示装置に表示することもできる。
ところが、このようなＳＭＦ等のデータでは、歌詞データがパートの情報を持たない。従って、前述した従来の技術では、歌詞データが複数のパートのどのパートの音符データに対応するものであるのかを判別することが困難であった。よって、前述した従来の技術では、例えばメロディパートの音符データに合わせて歌詞データを表示すべきであるのに、その他の意図しないパートの音符データに合わせて歌詞データが表示されてしまう虞があるという問題点があった。
【０００５】
本発明はこのような問題点に鑑みてなされたものであり、複数のパートの音符データと、歌詞データとを含むファイルを用いて、それら音符データと歌詞データとを表示装置に表示するに際し、音符データに合わせて表示すべきパートを複数のパートの中から可及的に確実に決定することができるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の電子楽器は、複数のパートの音符データと、歌詞データとを含むファイルのデータを記憶媒体から読み出す読み出し手段と、前記読み出し手段により読み出された前記歌詞データの出力タイミングと、前記複数のパートの音符データの出力タイミングとを比較する比較手段と、前記比較手段により比較された結果に基づいて、前記歌詞データに合わせて表示すべきパートを前記複数のパートの中から決定する決定手段と、前記音符データと、前記歌詞データとを表示装置に表示する表示手段とを有し、前記表示手段は、前記決定手段により決定されたパートの音符データに合わせて、前記歌詞データを表示装置に表示することを特徴とする。
【０００７】
本発明のコンピュータプログラムは、複数のパートの音符データと、歌詞データとを含むファイルのデータを記憶媒体から読み出す読み出しステップと、前記読み出しステップにより読み出された前記歌詞データの出力タイミングと、前記複数のパートの音符データの出力タイミングとを比較する比較ステップと、前記比較ステップにより比較された結果に基づいて、前記歌詞データに合わせて表示すべきパートを前記複数のパートの中から決定する決定ステップと、前記音符データと、前記歌詞データとを表示装置に表示するステップとをコンピュータに実行させ、前記表示ステップは、前記決定手段により決定されたパートの音符データに合わせて、前記歌詞データを表示装置に表示することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のパートの音符データと、歌詞データとを含むファイルから読み出した歌詞データの出力タイミングと、複数のパートの音符データの出力タイミングとの比較結果に基づいて、歌詞データに合わせて表示すべきパートを決定し、決定したパートの音符データに合わせて歌詞データを表示装置に表示するようにしたので、音符データに合わせて表示すべきパートを複数のパートの中から可及的に確実に決定することができる。
【発明を実施するための最良の形態】
【０００９】
（第１の実施形態）
以下に、図面を参照しながら、本発明の第１の実施形態について説明する。
図１は、本実施形態の電子楽器の概略構成の一例を示したブロック図である。なお、以下では、電子楽器が電子ピアノである場合を例に挙げて説明する。
図１において、電子楽器は、中央処理装置（以下、ＣＰＵと称する）１と、フラッシュメモリ２と、ランダムアクセスメモリ（以下、ＲＡＭと称する）３と、外部記憶媒体装着部４と、外部入出力用インターフェース部５と、信号バス６と、キースキャン回路７と、鍵盤８と、パネルスキャン回路９と、操作パネル１０と、楽音発生部１１と、波形フラッシュメモリ１２と、デジタル／アナログ変換部（以下、Ｄ／Ａ変換部と称する）１３と、アナログ信号処理部１４と、パワーアンプ１５と、スピーカ部１６とを有している。
【００１０】
図１に示すように、ＣＰＵ１、フラッシュメモリ２、ＲＡＭ３、キースキャン回路７、パネルスキャン回路９、楽音発生部１１、外部記憶媒体装着部４、及び外部入出力用インターフェース部５は、それぞれ信号バス６に接続され、相互に通信することが可能である。
【００１１】
（鍵盤）
鍵盤８は、複数の鍵と、それら複数の鍵の各々に対応して設けられた複数の鍵スイッチとを有している。電子楽器のユーザは、前記複数の鍵を押鍵及び離鍵して所望の演奏を行う。
（キースキャン回路）
キースキャン回路７は、鍵盤８の各鍵スイッチのスキャン処理を行うためのものである。
【００１２】
（操作パネル）
操作パネル１０は、各種操作子や表示装置を有している。本実施形態の電子楽器では、表示装置として、例えばＬＣＤ（Liquid Crystal Display；液晶ディスプレイ）が設けられている。
【００１３】
前記操作子としては、電子楽器に電源を供給するための電源スイッチや、電子楽器の設定状態を初期値にリセットするためのリセットスイッチや、テンポや音量を設定するためのダイアルや、音色を選択するための音色選択スイッチが設けられている。
【００１４】
また、前記操作子として、レジストレーションの記憶を行うためのRegist設定スイッチや、設定したレジストレーションを呼び出すためのRegistボタンが設けられている。なお、レジストレーションとは、ユーザが鍵盤８を押鍵及び離鍵して行う演奏時の設定を言う。ここで、演奏時の設定は、操作パネル１０や鍵盤８の操作内容に基づいて行われるものであり、例えば、音色、伴奏、テンポ、及び演奏効果（音色に変化を与えること）等が設定項目となる。
【００１５】
さらに、前記操作子として、外部記憶媒体装着部４に装着された外部記憶媒体にデータを書き込む指示を行うためのディスク書込ボタン（スイッチ）と、外部記憶媒体装着部４に装着された外部記憶媒体からデータを読み込む指示を行うためのディスク読込ボタン（スイッチ）とを含むディスク操作スイッチが設けられている。
【００１６】
また、前記操作子として、自動演奏データを呼び出すための自動演奏呼び出しスイッチや、自動演奏呼び出しスイッチにより呼び出された自動演奏データに基づく自動演奏（又は自動伴奏）を開始するための自動演奏開始スイッチも設けられている。さらに、電子楽器を動作可能にするための電源スイッチ等も設けられている。ここで、自動演奏とは、楽曲の全てのパートの演奏を電子楽器が自動で行うことを言う。また、自動伴奏とは、鍵盤８の押鍵及び離鍵に応じたメロディパート（演奏音）を発音させて行うマニュアル演奏に対する伴奏を電子楽器が自動で行うことを言う。
なお、前記操作子は、前述したものに限定されるものではない。また、前述した機能を実現するための操作子であれば、操作子の形態は前述したものに限定されない。
【００１７】
（パネルスキャン回路）
パネルスキャン回路９は、操作パネル１０に設けられている各種操作子のスキャン処理を行うためのものである。
【００１８】
（ＣＰＵ）
ＣＰＵ１は、本実施形態の電子楽器の全体を統括制御するためのものであり、フラッシュメモリ２に格納されている制御プログラムに従って、ＲＡＭ３をワークメモリとして利用しながら、例えば次のような処理を行う。
【００１９】
ＣＰＵ１は、パネルスキャン回路９によりスキャン処理された結果を入力し、操作パネル１０の操作内容を識別する。
また、ＣＰＵ１は、キースキャン回路７によりスキャン処理された結果を入力して、鍵の操作内容（押鍵及び離鍵）を識別する。
そして、その鍵の操作内容（鍵の押鍵及び離鍵）に基づく演奏データや、操作パネル１０の操作内容に基づくデータを楽音発生部１１に割り当てる処理を行う。
【００２０】
この演奏データは、前記各鍵の操作が押鍵（キーオン）であるか離鍵（キーオフ）であるかを示すキーオン／オフ信号や、音高データである音高や、音量制御データであるベロシティデータや、演奏のテンポの絶対値を示すテンポ情報（以下、必要に応じて単にテンポ情報と称する）や、各鍵の動作スピードに関するキータッチレスポンス信号などから構成される。
【００２１】
また、ＣＰＵ１は、前記レジストレーション設定スイッチを用いて設定されたレジストレーションの内容をフラッシュメモリ２に記憶する。その後、前記レジストレーション実行スイッチが操作されると、操作されたレジストレーション実行スイッチに応じたレジストレーションの内容をフラッシュメモリ２から読み出し、読み出したレジストレーションの内容に従った演奏が行われるように電子楽器の設定を変更する。
【００２２】
さらに、ＣＰＵ１は、前記自動演奏呼び出しスイッチの操作内容に基づいて選択された楽曲に関わる自動演奏データを、フラッシュメモリ２から読み出す。その後、前記自動演奏開始スイッチが操作されると、読み出した自動演奏データを楽音発生部１１に割り当てる。これにより、自動演奏データに基づく自動演奏の楽音が発音されるようになる。このように、本実施形態の電子楽器では、ＣＰＵ１が、自動演奏データの再生を行うシーケンサの役割の一部を果たすようにしている。
【００２３】
本実施形態では、この自動演奏データが、「ＳＭＦ０」のファイル形式のデータである場合を例に挙げて説明する。
図２は、自動演奏データの構成の一例を概念的に示した図である。
図２に示すように、自動演奏データ２００は、複数のパートのデータ（データａ〜ｄ等）を有している。なお、図２では、説明の都合上、自動演奏データの構成を簡略化して示しているが、実際には図２に示すものより複雑であるということは言うまでもない。
【００２４】
データａ〜ｄに含まれているタイミングデータは、データａ〜ｄを出力するタイミング等を規定するデータである。本実施形態の自動演奏データ２００は、「ＳＭＦ０」のファイル形式のデータであるので、タイミングデータには、直前のデータの出力時を基準としたタイミングが記述される。具体的に説明すると、例えば、データｂに含まれるタイミングデータ（「０ｘ１０」）は、データａが出力されてからデータｂを出力するまでの時間（デルタタイム）である。なお、データｃ、ｄのタイミングデータは、「０ｘ００」なので、データｂの出力と同時にデータｃ、ｄが出力されることになる。
【００２５】
次に、データａ、ｂ、ｄに含まれているステータスデータは、ノートのオンオフや、データａ、ｂ、ｄが属するパート等を規定するデータである。具体的に説明すると、下位４ビットには、チャネル（パート）が記述される。従って、タイミングデータの下位４ビットが同じ値（「０」）を有するデータａ、ｂは、同じチャネル（パート）のデータということになる。一方、データｄのタイミングデータの下位４ビットの値は、「１」なので、データｄとデータａ、ｂとは異なるパートのデータということになる。
【００２６】
また、上位４ビットには、ノートのオンオフが記述される。データａ、ｄのタイミングデータの上位４ビットには、「９」が記述されているので、データａ、ｄは、ノートをオンするイベントを発するデータということになる。一方、データｂのタイミングデータの上位４ビットには、「８」が記述されているので、データｂは、ノートをオフするイベントを発するデータということになる。
次に、データａ、ｂ、ｄに含まれているパラメータデータは、ステータスデータで規定されているノートの音高やベロシティ等のパラメータを規定するデータである。
【００２７】
以上のようにデータａ、ｂ、ｄは、ノートに関するデータ（以下、音符データと称する）であるのに対し、データｃは、歌詞データである。「ＳＭＦ」のファイル形式では、歌詞データのステータスデータにはチャネルデータが含まれていない。従って、その歌詞データがどのパートに対応する歌詞のデータであるのかを、歌詞データだけから判断することができない。そこで、本実施形態では、歌詞データに対応するパートを以下のようにして推定するようにしている。
【００２８】
図３は、歌詞データに対応するパートを推定する方法の一例を概念的に示した図である。
図３では、「さくら」という歌詞が、４つのパート（Ａパート〜Ｄパート）のうち、どのパートに対応するものなのかを推定する場合を例に挙げて示している。
まず、歌詞「さ」を示す歌詞データを読み出すと、その歌詞データと出力するタイミングが同じ（すなわち、デルタタイムがゼロの）音符データが属するパートを計数し、計数値を一時的に記憶する。
図３（ａ）に示すように、歌詞「さ」と出力するタイミングが同じ音符データが属するパートは、Ａパート、Ｂパート、Ｃパートであるので、図３（ｂ）に示すように、Ａパート、Ｂパート、Ｃパートに対してそれぞれ「１」が計数される。同様に、歌詞「く」と出力するタイミングが同じ音符データが属するパートは、Ａパート、Ｃパートであるので、Ａパート、Ｃパートに対してそれぞれ「１」が計数され、歌詞「ら」と出力するタイミングが同じ音符データが属するパートは、Ｂパート、Ｃパート、Ｄパートであるので、Ｂパート、Ｃパート、Ｄパートに対してそれぞれ「１」が計数される。
【００２９】
本実施形態では、以上の処理の結果、各パートに対する計数値の合計のうち、値が最も大きいパートが、歌詞データに対応するパートとなる。図３に示した例では、Ａパートに対する計数値の合計は「２」、Ｂパートに対する計数値の合計は「１」、Ｃパートに対する計数値の合計は「３」、Ｄパートに対する計数値の合計は「１」であるので、「さくら」という歌詞データに対応するパートはＣパートであると判定する。
そして、自動演奏時にＡパート〜Ｄパートの音符データを楽譜の形態で表示する際に、Ｃパートの音符の下に、対応する歌詞を表示するようにする。
なお、本実施形態では、以上のようにして歌詞データに対応するパートを判定した結果、歌詞データに対応するパートが複数あった場合には、それら複数のパートの音符の下に対応する歌詞を表示するようにする。
【００３０】
次に、図３に示したようにして行われる処理を、図２に示した例を用いてより詳細に説明する。
図２において、歌詞データであるデータｃが読み出されると、そのデータｃの周辺にある音符データのうち、データｃと出力するタイミングが同じ音符データを、データｃに含まれるタイミングデータとそのデータｃの周辺にある音符データに含まれるタイミングデータとが一致するか否かに基づいて検索する。そして、その音符データの属するパートを、その音符データに含まれるステータスデータに基づいて判別して計数する。
【００３１】
具体的に説明すると、歌詞データであるデータｃのタイミングデータは、「０ｘ００」である。従って、まず、データｃよりも前の音符データについては、データｃのタイミングデータと異なる値のタイミングデータを有する音符データまでが、出力するタイミングがデータｃと同じ音符データとなる。すなわち、データｂ（まで）がデータｃと出力するタイミングが同じ音符データとなる。
【００３２】
次に、データｃよりも後の音符データについては、データｃのタイミングデータと異なる値のタイミングデータを有する音符データの直前の音符データまでが、出力するタイミングがデータｃと同じ音符データとなる。すなわち、例えば、データｄの直後の音符データのタイミングデータが、「０ｘ２０」であった場合には、その音符データの直前のデータｄ（まで）がデータｃと出力するタイミングが同じ音符データとなる。
【００３３】
以上のような範囲で音符データを検索して、データｃと出力するタイミングが同じ音符データ（データｂ、ｄ）が検索されたら、その音符データ（データｂ、ｄ）が属するパートを、ステータスデータに基づいて判別し、判別したパートに１を計数する。すなわち、データｂのステータスデータの下位４ビットに示されている「０」に対応するパートと、データｂのステータスデータの下位４ビットに示されている「１」に対応するパートに対してそれぞれ「１」を計数する。
以上のように、自動演奏データ２００の最初からデータを順番に読み出し、歌詞データを読み出す度に、その歌詞データと出力するタイミングが同じ音符データを、タイミングデータに基づいて検索し、その音符データの属するパートをステータスデータに基づいて判別して計数する。
【００３４】
そして、本実施形態では、以上のような処理を、自動演奏データ２００の区間毎に行い、歌詞データに対応するパートを区間毎に判定する。ここで、自動演奏データ２００の区間としては、例えば、予め設定された小節数や、２つの所定休符に挟まれる区間等が好ましいが、どのように区間を定めてもよい。また、自動演奏データ２００の区間は、電子楽器の出荷前に設定されるようにしていても、ユーザによって設定されるようにしていても、自動演奏データ２００に付加されていてもよい。
なお、ＣＰＵ１は、前述したものの他に種々の処理を行うということは言うまでもない。
【００３５】
（フラッシュメモリ）
フラッシュメモリ２は、読み出し可能なメモリであり、ＣＰＵ１の制御プログラムの他、レジストレーションデータや、自動演奏データ等、種々のデータを格納する。
【００３６】
（ＲＡＭ）
ＲＡＭ３は読み書きが可能なメモリであり、ＣＰＵ１のプログラム実行過程において各種の必要なデータを一時的に記憶したり、編集可能なパラメータデータを記憶したりする記憶領域を有している。このＲＡＭ３の一部あるいは全部はバッテリーバックアップされており、必要なデータを、電子楽器の電源がオフにされても保持しておくことができるようにしている。ここで、本実施形態では、図３（ｂ）に示した計数値をＲＡＭ３に記憶するようにしている。
【００３７】
（波形メモリ）
波形メモリ１２は、音色や音域に応じた種々の楽音波形データを記憶している。
（楽音発生部）
楽音発生部１１は、前述したようにしてＣＰＵ１により割り当てられた演奏データや自動演奏データと、操作パネル１０の操作内容に基づくデータとに基づいて、波形メモリ１２から必要な楽音波形データを読み出し、所望のデジタル楽音信号を発生させる。
【００３８】
（Ｄ／Ａ変換部）
Ｄ／Ａ変換部１３は、楽音発生部１１で発生されたデジタル楽音信号をアナログ楽音信号に変換する機能を有する。
（アナログ信号処理部）
アナログ信号処理部１４は、Ｄ／Ａ変換部１３でＤ／Ａ変換されたアナログ楽音信号に対し、フィルタ処理（ノイズ除去処理）や音質調整、信号レベル（ゲイン）調整等を施す機能を有する。
【００３９】
（パワーアンプ）
パワーアンプ１５は、アナログ信号処理部１４でノイズ除去処理が施されたアナログ楽音信号に対し、増幅処理を施して適当なレベルに増幅する。
（スピーカ部）
スピーカ部１６は、パワーアンプ１５で増幅されたアナログ楽音信号を可聴信号として放音するためのものであり、１個あるいは複数個で構成されている。
【００４０】
（外部記憶装置装着部）
外部記憶媒体装着部４は、例えば、ＣＤ−ＲＷドライブである。そして、ＣＰＵ１は、ＣＤ−ＲＷドライブに装着されたＣＤ−ＲＯＭに記憶されている制御プログラムや各種データを読み出して必要な処理を行う。なお、外部記憶媒体装着部４は、ＣＤ−ＲＷドライブに限定されず、フレキシブルディスク（ＦＤ）装置や、光磁気ディスク（ＭＯ）装置などであってもよいということは言うまでもない。
【００４１】
（外部入出力用インターフェース部）
外部入出力用インターフェース部５は、外部装置との間で、演奏情報などのデータのやり取りを行うためのものである。具体的に、この外部入出力用インターフェース部５は、例えばＭＩＤＩ（Musical Instrument Digital Interface）である。
【００４２】
次に、図４〜図１０のフローチャートを参照しながら、本実施形態の電子楽器に配設されたＣＰＵ１により実行される処理の一例を説明する。
図４は、ＣＰＵ１により実行されるメインルーチンの処理の一例を説明するフローチャートである。
まず、ステップＳ１において、初期化処理を実行する。
次に、ステップＳ２において、イベントが発生したか否かを判定する。この判定の結果、イベントが発生した場合には、ステップＳ３に進み、イベント処理を実行する。このイベント処理の詳細については、図５を参照しながら後述する。一方、イベントが発生していない場合には、このステップＳ３を省略してステップＳ４に進む。
そして、ステップＳ４において、その他の処理を実行する。ここで、その他の処理とは、電子楽器で一般的に行われている処理である。
【００４３】
次に、図５のフローチャートを参照しながら、図４のステップＳ３のイベント処理の詳細の一例を説明する。
まず、ステップＳ１１において、発生したイベントが、自動演奏を行う楽曲を選択する楽曲選択イベントか否かを判定する。例えば、操作パネル１０に設けられている自動演奏呼び出しスイッチがオンされると、発生したイベントが楽曲選択イベントであると判定する。
【００４４】
この判定の結果、発生したイベントが楽曲選択イベントである場合には、ステップＳ１２に進み、楽曲選択イベント処理を行う。この楽曲選択イベント処理については、図６〜図８を参照しながら後述する。一方、発生したイベントが楽曲選択イベントでない場合には、ステップＳ１３に進む。ステップＳ１３では、発生したイベントが演奏イベントであるか否かを判定する。ここで、演奏イベントとは、演奏を実行するためのイベントを言い、例えば、鍵盤８やダンパペダル等の演奏操作子の操作に係るイベントや、自動演奏の実行に係るイベントである。
【００４５】
この判定の結果、発生したイベントが演奏イベントである場合には、ステップＳ１４に進み、演奏イベント処理を行う。この演奏イベント処理については、図９、図１０を参照しながら後述する。
一方、発生したイベントが演奏イベントでない場合には、ステップＳ１５に進み、発生したイベントが、その他処理が必要なイベントか否かを判定する。この判定の結果、発生したイベントが、その他処理が必要なイベントである場合には、ステップＳ１６に進み、発生したイベントに応じた処理を行う。一方、発生したイベントが、その他処理が必要なイベントでない場合には、図４に示したフローチャートに戻る。
【００４６】
次に、図６のフローチャートを参照しながら、図５のステップＳ１２の楽曲選択イベント処理の一例を詳細に説明する。
まず、ステップＳ２１において、フラッシュメモリ２に記憶されている自動演奏データに基づいて、選択可能な楽曲を判別し、判別した楽曲の一覧を操作パネル１０に設けられている表示装置（ＬＣＤ）に表示する。
次に、ステップＳ２２において、自動演奏呼び出しスイッチの操作内容に基づいて、ステップＳ２１で表示した楽曲の一覧の中から、楽曲が選択されるまで待機する。
次に、ステップＳ２３において、ステップＳ２２で選択された楽曲に関わる自動演奏データ２００をフラッシュメモリ２から読み出す楽曲データ読み出し処理を行い、図５に示したフローチャートに戻る。
【００４７】
次に、図７のフローチャートを参照しながら、図６のステップＳ２３の楽曲データ読み出し処理の一例を詳細に説明する。
まず、ステップＳ３１において、図６のステップＳ２２で選択されたと判定された楽曲に関わる自動演奏データ２００を読み出す。このステップＳ３１では、自動演奏データ２００に含まれる未読のデータのうち、最初に記述されているデータを読み出す。図２に示した例では、まずデータａを読み出す。
【００４８】
次に、ステップＳ３２において、ステップＳ３１で読み出したデータが歌詞データであるか否かを判定する。この判定の結果、ステップＳ３１で読み出したデータが歌詞データでなければ、ステップＳ３３に進み、その他の処理を行う。その他の処理としては、例えば、読み出した音符データをＲＡＭ３に展開する処理等が挙げられる。
【００４９】
一方、ステップＳ３１で読み出したデータが歌詞データであれば、ステップＳ３４に進む。ステップＳ３４では、ステップＳ３１で読み出した歌詞データが、音符に対応したデータであるか否かを判定する。ここで、歌詞データの中には、空白又は改行といった音符に対応しない歌詞データが存在する。そこで、本実施形態では、音符に対応しない歌詞データを除外することにより、以降の処理を迅速に行えるようにしている。
【００５０】
この判定の結果、ステップＳ３１で読み出した歌詞データが、音符に対応したデータでなければ、後述する図８のステップＳ４０に進む。一方、ステップＳ３１で読み出した歌詞データが、音符に対応したデータであれば、ステップＳ３５に進む。ステップＳ３５では、ステップＳ３１で読み出した歌詞データと出力するタイミングが同じ音符データを、前述したようにして読み出す。すなわち、ステップＳ３１で読み出した歌詞データと、タイミングデータが同じ値を有する音符データを読み出す。
【００５１】
次に、ステップＳ３６において、ステップＳ３５で読み出した音符データが、除外データであるか否かを判定する。ここで、自動演奏データには、エクスクルーシブデータ、ＮＲＰＮデータ、及び音色番号データ等が含まれている。従って、これらエクスクルーシブデータ、ＮＲＰＮデータ、及び音色番号データ等を参照することによって、音符データのパートが、明らかに歌詞データに対応するパート（例えばメロディパート）でないことを判別することができる。このように、本実施形態では、ステップＳ３５で読み出した音符データのうち、明らかに歌詞データに対応するパートでない音符データを除外データとして除外することにより、以降の処理を正確に且つ迅速に行うことができる。
【００５２】
なお、本実施形態では、ステップＳ３６において、自動演奏データ２００に含まれる除外データを検索するようにしたが、ステップＳ３６よりも前に、自動演奏データ２００に含まれる除外データを予め検索しておくようにしてもよい。このようにした場合には、ステップＳ３６において、ステップＳ３５で読み出した音符データが、予め検索しておいた除外データであるか否かを判定することになる。
【００５３】
以上のようなステップＳ３６の判定の結果、ステップＳ３５で読み出した音符データが、除外データである場合には、ステップＳ３７、Ｓ３８を省略してステップＳ３９に進む。一方、ステップＳ３５で読み出した音符データが、除外データでない場合には、ステップＳ３７に進み、ステップＳ３５で読み出した音符データのステータスデータを参照して、ステップＳ３５で読み出した音符データのパートを判別する。
【００５４】
次に、ステップＳ３８において、ステップＳ３７で判別したパートに対する計数値に「１」を加算する。
次に、ステップＳ３９において、ステップＳ３１で読み出した歌詞データと出力するタイミングが同じ音符データであって、未読の音符データがあるか否かを判定する。この判定の結果、未読の音符データがある場合には、未読の音符データがなくなるまでステップＳ３５〜Ｓ３９を繰り返し行った後に、図８のステップＳ４０に進む。
【００５５】
ステップＳ４０に進むと、歌詞データに対応するパートを判定する現在の区間における全てのデータを、図６のステップＳ２２で選択されたと判定された楽曲に関わる自動演奏データ２００から読み出したか否かを判定する。この判定の結果、現在の区間における全てのデータを読み出していない場合には、ステップＳ３１に戻り、自動演奏データ２００に含まれる未読のデータのうち、最初に記述されているデータを読み出す。図２に示した例において、データａが読み出された場合には、未読のデータのうち、最初に記述されているのはデータｂであるので、データｂを読み出すことになる。
一方、現在の区間における全てのデータを読み出した場合には、ステップＳ４１に進み、ステップＳ３８で加算された計数値の合計が最も大きいパートを、現在の区間における歌詞データに対応するパートとして判別し、判別したパートをＲＡＭ３等に一時的に記憶する。
【００５６】
次に、ステップＳ４２において、図６のステップＳ２２で選択されたと判定された楽曲に関わる自動演奏データ２００の全てを読み出したか否かを判定する。この判定の結果、自動演奏データ２００の全てを読み出していない場合には、ステップＳ４３に進み、次の区間を指定して、ステップＳ３１に戻り、その次の区間における歌詞データに対応するパートを判別する。
一方、自動演奏データ２００の全てを読み出した場合には、図６に示したフローチャートに戻る。
【００５７】
次に、図９のフローチャートを参照しながら、図５のステップＳ１４の演奏イベント処理の一例を詳細に説明する。
まず、ステップＳ５１において、発生したイベントが、鍵盤８やダンパペダル等の演奏操作子の操作であるか否かを判定する。この判定の結果、発生したイベントが演奏操作子の操作である場合には、ステップＳ５２に進み、演奏操作子の操作内容に応じて、発音及び消音の何れかの処理を行う。
【００５８】
一方、発生したイベントが演奏操作子の操作でない場合には、ステップＳ５３に進み、発生したイベントが、操作パネル１０に設けられている自動演奏開始スイッチのオン操作であるか否かを判定する。この判定の結果、発生したイベントが自動演奏開始スイッチのオン操作である場合には、ステップＳ５４に進み、自動演奏処理を行う。この自動演奏処理については、図１０のフローチャートを参照しながら後述する。
【００５９】
一方、発生したイベントが自動演奏開始スイッチのオン操作でない場合には、ステップＳ５５に進み、発生したイベントが、その他処理が必要なイベントか否かを判定する。この判定の結果、発生したイベントが、その他処理が必要なイベントである場合には、ステップＳ５６に進み、発生したイベントに応じた処理を行う。一方、発生したイベントが、その他処理が必要なイベントでない場合には、図５に示したフローチャートに戻る。
【００６０】
次に、図１０のフローチャートを参照しながら、図９のステップＳ５４の自動演奏処理の一例を詳細に説明する。
まず、ステップＳ６１において、図５のステップＳ１２の楽曲選択イベント処理で楽曲が選択されているか否かを判定する。この判定の結果、楽曲が選択されていない場合には、自動演奏を行う対象が選択されていないので、図９のフローチャートに戻る。
一方、楽曲が選択されている場合には、ステップＳ６２に進む。ステップＳ６２では、歌詞データに対応するパートに関するデータ（図８のステップＳ４１を参照）と、自動演奏の進行状況とに基づいて、歌詞データに対応するパートの音符データの表示を行うタイミングか否かを判定する。この判定の結果、歌詞データに対応するパートの音符データの表示を行うタイミングである場合には、ステップＳ６３に進む。
【００６１】
ステップＳ６３では、操作パネル１０に設けられた表示装置（ＬＣＤ）に表示対象の音符データを例えば楽譜の形態で表示する。このとき、歌詞データに対応するパートについては、例えば音符の下に、その音符によって表される歌詞を表示する。具体的に説明すると、図３に示した例では、Ｃパートの３つの音符の下にそれぞれ「さ」、「く」、「ら」と表示する。
一方、歌詞データに対応するパートの音符データの表示を行うタイミングでない場合には、ステップＳ６４に進み、操作パネル１０に設けられた表示装置（ＬＣＤ）に表示対象の音符データを楽譜の形態で表示する。このときは、歌詞データに対応するパートは表示されないので、歌詞データも表示されない。
【００６２】
次に、ステップＳ６５において、図７のステップＳ３１で読み出された自動演奏データ（音符データ）２００に合わせて、自動演奏を行う。
次に、ステップＳ６６において、自動演奏の進行に合わせて、操作パネル１０に設けられた表示装置（ＬＣＤ）への表示対象となる音符データを変更して、図９のフローチャートに戻る。
【００６３】
以上のように本実施形態では、自動演奏データ２００に含まれる歌詞データのそれぞれについて、出力するタイミングが同じである音符データのパートを計数し、計数値の合計が最も大きいパートを、歌詞データに対応するパートとし、そのパートの音符を表示する際に、その音符の下に対応する歌詞を表示する。これにより、歌詞データを表示すべきパートを可及的に適切に決定することができる。従って、意図しないパートの音符データに合わせて歌詞データが表示されてしまうことを防止することができる。
【００６４】
また、本実施形態では、空白又は改行といった音符に対応しない歌詞データについては、その歌詞データに対応するパートを判定する処理の対象から除外するようにしたので、歌詞データに対応するパートをより迅速に行うことができる。
さらに、本実施形態では、音符データが、明らかに歌詞データに対応するパートのデータでない場合には、（歌詞データと出力するタイミングが同じであっても、）その音符データのパートを計数しないようにしたので、歌詞データに対応するパートをより正確に且つ迅速に行うことができる。
【００６５】
なお、本実施形態では、自動演奏データ２００に含まれる歌詞データと音符データとを比較するに際し、出力するタイミングが同じであるか否かを判定するようにしたが、必ずしもこのようにする必要はない。例えば、出力するタイミングが所定の範囲以内にあるか否かを判定するようにしてもよい。ここで、所定の範囲は、例えば、ＳＭＦにおけるメロディパートの分解能や、装飾音符１つ分の長さ（例えば３２分音符１つ分の長さ）に基づいて決定することができる。
【００６６】
また、本実施形態では、自動演奏データ２００に含まれる歌詞データのそれぞれについて、出力するタイミングが同じである音符データのパートを計数し、計数値の合計が最も大きいパートを、歌詞データに対応するパートとするようにしたが、必ずしもこのようにする必要はない。すなわち、自動演奏データ２００に含まれる歌詞データのそれぞれについて、歌詞データと同じタイミングに音符データの存在しないパートを計数し、計数値の合計が最も小さいパートを、歌詞データに対応するパートとするようにしてもよい。また、このようにして歌詞データと同じタイミングに音符データの存在しないパートを計数するのではなく、歌詞データの出力タイミングに対し、前記所定の範囲内に音符データの存在しないパートを計数するようにしてもよい。
さらに、本実施形態では、歌詞データに対応するパートを区間毎に判定するようにしたが、必ずしもこのようにする必要はなく、自動演奏データ２００全体（曲全体）で、歌詞データに対応するパートを１つだけ判定するようにしてもよい。
【００６７】
また、本実施形態では、以上のようにして歌詞データに対応するパートを判定した結果、歌詞データに対応するパートが複数あった場合には、それら複数のパートの音符の下に対応する歌詞を表示するようにしたが、必ずしもこのようにする必要はない。例えば、ユーザによる操作パネル１０の操作に基づいて選択されたパートの音符の下に対応する歌詞を表示するようにしてもよい。
さらに、本実施形態では、歌詞データに対応するパートの音符の下に、対応する歌詞を表示するようにするにしたが、必ずしもこのようにする必要はない。例えば、歌詞データに対応するパートの音符に合わせて、表示画面の最下欄に、対応する歌詞を表示するようにしてもよい。
また、本実施形態では、自動演奏データについて、歌詞データに対応するパートを判定するようにしたが、複数のパートの音符データと、歌詞データとを含むファイルのデータであれば、歌詞データに対応する対象となるデータは自動演奏データに限定されるものではないということは言うまでもない。
【００６８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。前述した第１の実施形態では、自動演奏データが、「ＳＭＦ０」のファイル形式のデータである場合を例に挙げて説明した。この「ＳＭＦ０」は、小節及び拍の規定がなされていないフォーマットとなっている。そこで、本実施形態では、「ＳＭＦ０」のファイル形式の自動演奏データを、小節及び拍の規定がなされているフォーマットに変換するようにしている。このように、本実施形態と、前述した第１の実施形態とは、歌詞データに対応するパートを判定する対象となる自動演奏データのフォーマットが主として異なる。従って、以下の説明において、第１の実施形態と同一の部分については、図１〜図１０に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００６９】
図１１は、小節及び拍の規定がなされているフォーマットに変換された自動演奏データの構成の一例を概念的に示した図である。
図１１に示す自動演奏データ１１００は、図２に示したような自動演奏データ２００から変換された後に、フラッシュメモリ２に記憶されたものである。ここで、変換元の自動演奏データ２００は、例えば、外部記憶媒体装着部４に装着された外部記憶媒体から読み出される。なお、この図１１では、説明の都合上、構成を簡略化して示しているが、実際には図１１に示すものより複雑であるということは言うまでもない。
【００７０】
図１１において、データａ´は、図２に示したデータａが変換されたものであり、データｃ´は、図２に示したデータｃが変換されたものである。データａ´には、図２に示したデータａには存在していない小節データＢａｒと拍データＢｅａｔとが含まれている。小節データＢａｒの「０ｘＦ４」は、小節を識別するデータであり、「０ｘ００」は、その小節における拍子数を表すデータである。また、拍データＢｅａｔの「０ｘＦ５」は、拍を識別するデータである。
【００７１】
図２に示した自動演奏データ２００のタイミングデータには、直前のデータの出力時を基準としたタイミング（デルタタイム）が記述される。これに対し、本実施形態の図１１に示す自動演奏データ１１００のタイミングデータには、以下のようなデータが記述される。
図１２は、自動演奏データ１１００のタイミングデータの読み方の一例を説明する図である。
【００７２】
図１２に示すように、小節の開始地点１２０１から１拍目１２０２までの音符データにおけるタイミングデータには、その小節の開始地点１２０１を基準としたタイミング（デルタタイム）が記述される。１拍目１２０２から２拍目１２０３、２拍目１２０３から３拍目１２０４、３拍目１２０４から４拍目１２０５の間にある音符データについては、それぞれ、１拍目１２０２、２拍目１２０３、３拍目１２０４を基準としたタイミング（デルタタイム）が記述される。
【００７３】
従って、例えば、音符データ１２０６、１２０７のデルタタイムが共に「６０」であるとすると、音符データ１２０６、１２０７のタイミングデータは同じ値になるが、音符データ１２０６、１２０７に含まれる拍データを参照することにより、音符データ１２０６は、１拍目１２０２からのデルタタイムが「６０」であり、音符データ１２０７は、２拍目１２０３からのデルタタイム「６０」であることを判別することができる。
【００７４】
以上のようにしてタイミングデータを記述することによっても、第１の実施形態と同様にして、例えば、自動演奏データ１１００に含まれる歌詞データのそれぞれについて、出力するタイミングが同じである音符データのパートを計数し、計数値の合計が最も大きいパートを、歌詞データに対応するパートとして決定することが可能になる。
【００７５】
図１１に説明を戻し、歌詞データであるデータｃ´の下位４ビットは空欄になっている。この下位４ビットには、歌詞データに対応するパートが決定されたら、そのパートを示すデータがＣＰＵ１の処理によって書き込まれる（マージされる）。このようにすることによって、歌詞データに対応するパートを決定する処理を１度行えば、それ以降は、歌詞データを参照するだけで、その歌詞データに対応するパートを判別することができ、処理を効率よく行うことができる。
【００７６】
なお、本実施形態では、小節及び拍の規定がなされているフォーマットに自動演奏データを変換するようにしたが、必ずしもこのようにする必要はなく、小節及び拍の何れか一方のみが規定がなされているフォーマットに自動演奏データを変換することもできる。例えば、小節のみが規定されているフォーマットに自動演奏データを変換する場合には、音符データのタイミングデータには、その音符データが属する小節の開始地点からのデルタタイムが記述されることになる。
また、本実施形態では、音符データ（例えばデータａ´）に小節及び拍のデータを含ませるようにした場合を例に挙げて説明したが、音符データに小節及び拍のデータを含めず、小節及び拍のデータがその他のデータから独立するようにしてもよい。例えば、２拍子のデータの場合は、＜小節データ＞＜拍データ＞＜音符データ等＞＜拍データ＞＜音符データ等＞＜小節データ＞・・・とし、３拍子のデータの場合は、＜小節データ＞＜拍データ＞＜音符データ等＞＜拍データ＞＜音符データ等＞＜拍データ＞＜音符データ等＞＜小節データ＞・・・としてもよい。
例えば、図１１に示した自動演奏データ１１００において、以上のように音符データに小節及び拍のデータを含めないようにした場合、小節データは「０ｘＦ０」、「０ｘ＊＊」の２バイトデータとなり（＊＊は拍子情報）、拍データは「０ｘＦ５」の１バイトデータとなり、音符データは「０ｘ９ｎ」、「０ｘ＊＊」、「パラメータ１」、「パラメータ２」、「パラメータ３」の５バイトデータ（ｎはチャネル情報、＊＊はタイミング情報、パラメータ１〜３はそれぞれ音高情報、ベロシティ情報、ゲートタイム情報）となる。
【００７７】
（本発明の他の実施形態）
前述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【００７８】
また、この場合、前記ソフトウェアのプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、およびそのプログラムコードをコンピュータに供給するための手段、例えば、かかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７９】
また、コンピュータが供給されたプログラムコードを実行することにより、前述の実施形態の機能が実現されるだけでなく、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して前述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【００８０】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【００８１】
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１の実施形態を示し、電子楽器の概略構成の一例を示したブロック図である。
【図２】本発明の第１の実施形態を示し、自動演奏データの構成の一例を概念的に示した図である。
【図３】本発明の第１の実施形態を示し、歌詞データに対応するパートを推定する方法の一例を概念的に示した図である。
【図４】本発明の第１の実施形態を示し、メインルーチンの処理の一例を説明するフローチャートである。
【図５】本発明の第１の実施形態を示し、図４のステップＳ３のイベント処理の詳細の一例を説明するフローチャートである。
【図６】本発明の第１の実施形態を示し、図５のステップＳ１２の楽曲選択イベント処理の一例を詳細に説明するフローチャートである。
【図７】本発明の第１の実施形態を示し、図６のステップＳ２３の楽曲データ読み出し処理の一例を詳細に説明するフローチャートである。
【図８】本発明の第１の実施形態を示し、図７に続くフローチャートである。
【図９】本発明の第１の実施形態を示し、図５のステップＳ１４の演奏イベント処理の一例を詳細に説明するフローチャートである。
【図１０】本発明の第１の実施形態を示し、図９のステップＳ５４の自動演奏処理の一例を詳細に説明するフローチャートである。
【図１１】本発明の第２の実施形態を示し、小節及び拍の規定がなされているフォーマットに変換された自動演奏データの構成の一例を概念的に示した図である。
【図１２】本発明の第２の実施形態を示し、自動演奏データのタイミングデータの読み方の一例を説明する図である。
【符号の説明】
【００８３】
１  ＣＰＵ
２  フラッシュメモリ
３  ＲＯＭ
４  外部記憶媒体装着部
５  外部入出力用インターフェース部
９  パネルスキャン回路
１０  操作パネル
２００、１１００  自動演奏データ
【図１】
0004648177.tif 000002
【図２】
0004648177.tif 000003
【図３】
0004648177.tif 000004
【図４】
0004648177.tif 000005
【図５】
0004648177.tif 000006
【図６】
0004648177.tif 000007
【図７】
0004648177.tif 000008
【図８】
0004648177.tif 000009
【図９】
0004648177.tif 000010
【図１０】
0004648177.tif 000011
【図１１】
0004648177.tif 000012
【図１２】
0004648177.tif 000013