(57)【特許請求の範囲】
【請求項１】
文字列を含む歌詞データが挿入された演奏データを格納する格納手段と、
前記歌詞データに含まれる文字列が行毎に記憶可能な第一、第二および第三の記憶手段と、
前記第二の記憶手段に記憶された文字列データを表示させる表示手段と、
前記表示手段に、前記歌詞データを表示させる第一のモード、および表示させない第二のモード、のいずれかに設定するスイッチ手段と、
前記格納手段から、前記演奏データに含まれる歌詞データを順次読み出す第一の読み出し手段と、
前記スイッチ手段により第一のモードが設定されている場合でかつ前記第三の記憶手段が書き込み可能な状態である場合に、前記第一の読み出し手段により読み出された歌詞データに含まれる文字列を、前記第三の記憶手段に行単位で書き込むとともに、前記第三の記憶手段を書き込み不可の状態とし、前記第二のモードが設定されている場合でかつ前記第一の記憶手段が書き込み可能な状態である場合は、前記第一の読み出し手段により読み出された歌詞データに含まれる文字列を、前記第一の記憶手段に行単位で書き込むとともに、前記第一の記憶手段を書き込み不可の状態とする第一の書き込み手段と、
前記第一の書き込み手段による書き込みのあとに、前記格納手段より前記演奏データに含まれる歌詞データを順次読み出す第二の読み出し手段と、
前記第二のモードが設定されている場合には、この第二の読み出し手段により、前記歌詞データに含まれる文字列が一行分読み出されるのに応答して、前記第一の記憶手段に記憶された文字列のうち、当該読み出された歌詞データに含まれる文字列に対応する行を削除するとともに前記第一の記憶手段の先頭行を書き込み可能とし、前記第一のモードが設定されている場合は、前記第二の記憶手段に記憶されている文字列全てが読み出された際に、前記第二の記憶手段に前記第三の記憶手段の内容を全て書き込むとともに、前記第三の記憶手段を書き込み可能とする第二の書き込み手段と、
前記スイッチ手段により、前記第二のモードから前記第一のモードに設定されたときに、前記第一の記憶手段の内容を前記第二の記憶手段にコピーするとともに、前記第一のモードから前記第二のモードに設定されたときは、前記第二の記憶手段の内容を前記第一の記憶手段にコピーするコピー手段と、
を有する自動再生装置。
【請求項２】
文字列を含む歌詞データが挿入された演奏データを格納する格納手段と、前記歌詞データに含まれる文字列が行毎に記憶可能な第一、第二および第三の記憶手段と、前記第二の記憶手段に記憶された文字列データを表示させる表示手段と、前記表示手段に、前記歌詞データを表示させる第一のモード、および表示させない第二のモードのいずれかに設定するスイッチ手段と、を有する自動再生装置に用いられるコンピューターが読み取り可能な記録媒体であって、
前記格納手段から、前記演奏データに含まれる歌詞データを順次読み出す第一の読み出しステップと、
前記スイッチ手段により第一のモードが設定されている場合でかつ前記第三の記憶手段が書き込み可能な状態である場合に、前記第一の読み出しステップにより読み出された歌詞データに含まれる文字列を、前記第三の記憶手段に行単位で書き込むとともに、前記第三の記憶手段を書き込み不可の状態とし、前記第二のモードが設定されている場合でかつ前記第一の記憶手段が書き込み可能な状態である場合は、前記第一の読み出し手段により読み出された歌詞データに含まれる文字列を、前記第一の記憶手段に行単位で書き込むとともに、前記第一の記憶手段を書き込み不可の状態とする第一の書き込みステップと、
前記第一の書き込みステップによる書き込みのあとに、前記格納手段より前記演奏データに含まれる歌詞データを順次読み出す第二の読み出しステップと、
前記第二のモードが設定されている場合には、この第二の読み出しステップにより、前記歌詞データに含まれる文字列が一行分読み出されるのに応答して、前記第一の記憶手段に記憶された文字列のうち、当該読み出された歌詞データに含まれる文字列に対応する行を削除するとともに前記第一の記憶手段の先頭行を書き込み可能とし、前記第一のモードが設定されている場合は、前記第二の記憶手段に記憶されている文字列全てが読み出された際に、前記第二の記憶手段に前記第三の記憶手段の内容を全て書き込むとともに、前記第三の記憶手段を書き込み可能とする第二の書き込みステップと、
前記スイッチ手段により、前記第二のモードから前記第一のモードに設定されたときに前記第一の記憶手段の内容を前記第二の記憶手段にコピーするとともに、前記第一のモードから前記第二のモードに設定されたときは、前記第二の記憶手段の内容を前記第一の記憶手段にコピーするコピーステップと、
を実行するプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演奏データ中に挿入された歌詞データの表示を行うための技術に関する。
【０００２】
【従来の技術】
曲の自動再生を行うための演奏データは、通常、演奏上のイベントの内容を示すイベントデータ毎に、その処理タイミングを示す時間データが付加されて構成されている。最近では、そのような演奏データ中に、歌詞を表示するための歌詞データが挿入されることも多くなっている。その歌詞データは、それぞれが１つの記号（主に文字や符号）を表すコードデータを少なくとも複数、有してなり、そのコードデータを演奏データ中に配置する形で挿入されている。それにより、演奏データ中に挿入された歌詞データを処理して歌詞を表示させたり、表示させた歌詞のなかで現在、再生（演奏）中の箇所を示すといったことが行えるようになっている。
【０００３】
上記演奏データを処理して自動再生する自動再生装置には、最近では多くの機能が搭載されるようになっている。その多機能化に伴い、表示装置（自動再生装置に搭載、或いは接続された表示装置）には様々な情報を表示できるようになっている。演奏データの自動再生中も、それに挿入された歌詞データの他に、楽譜、或いは各パート（ＭＩＤＩデータを用いて作成された演奏データではチャネル）で発音されている楽音の音量、といった別の情報を選択的に表示できる自動再生装置が増えている。
【０００４】
【発明が解決しようとする課題】
そのような多機能化された従来の自動再生装置は、ユーザがモードを切り換えるなどの理由によって、歌詞データを表示装置に表示させていない状況からそれを表示させることになった場合、演奏データのなかから、その時点で自動再生中の箇所以降に挿入されている歌詞データを読み出して表示させていた。このため、用語や単語、或いはフレーズなどが途中から表示されたりして、歌詞の内容を容易に把握することができないといったことが生じるという問題点があった。
【０００５】
それ以外には、演奏データ中から予め歌詞データを読み出しておき、それを表示させているものもある。しかし、歌詞データを予め読み出しておいても、それを表示させる際に、単に１画面分の歌詞を表示させているだけだった。このため、ユーザは、表示された歌詞のなかで現在、再生中の箇所に対応する部分を容易に特定することができないという問題点があった。
【０００６】
本発明の課題は、歌詞を表示させていない状況から、内容の把握、及び再生中の箇所の特定を容易に行える状態でその歌詞を表示する自動再生装置を提供することにある。
【０００７】
【課題を解決するための手段】
本発明の自動再生装置は、文字列を含む歌詞データが挿入された演奏データを格納する格納手段と、歌詞データに含まれる文字列が行毎に記憶可能な第一、第二および第三の記憶手段と、第二の記憶手段に記憶された文字列データを表示させる表示手段と、表示手段に、歌詞データを表示させる第一のモード、および表示させない第二のモード、のいずれかに設定するスイッチ手段と、格納手段から、演奏データに含まれる歌詞データを順次読み出す第一の読み出し手段と、スイッチ手段により第一のモードが設定されている場合でかつ第三の記憶手段が書き込み可能な状態である場合に、第一の読み出し手段により読み出された歌詞データに含まれる文字列を、第三の記憶手段に行単位で書き込むとともに、第三の記憶手段を書き込み不可の状態とし、第二のモードが設定されている場合でかつ第一の記憶手段が書き込み可能な状態である場合は、第一の読み出し手段により読み出された歌詞データに含まれる文字列を、第一の記憶手段に行単位で書き込むとともに、第一の記憶手段を書き込み不可の状態とする第一の書き込み手段と、第一の書き込み手段による書き込みのあとに、格納手段より演奏データに含まれる歌詞データを順次読み出す第二の読み出し手段と、第二のモードが設定されている場合には、この第二の読み出し手段により、歌詞データに含まれる文字列が一行分読み出されるのに応答して、第一の記憶手段に記憶された文字列のうち、当該読み出された歌詞データに含まれる文字列に対応する行を削除するとともに第一の記憶手段の先頭行を書き込み可能とし、第一のモードが設定されている場合は、第二の記憶手段に記憶されている文字列全てが読み出された際に、第二の記憶手段に第三の記憶手段の内容を全て書き込むとともに、第三の記憶手段を書き込み可能とする第二の書き込み手段と、スイッチ手段により、第二のモードから第一のモードに設定されたときに、第一の記憶手段の内容を第二の記憶手段にコピーするとともに、第一のモードから第二のモードに設定されたときは、第二の記憶手段の内容を第一の記憶手段にコピーするコピー手段と、を有する。
【０００９】
また、本発明の記録媒体は、文字列を含む歌詞データが挿入された演奏データを格納する格納手段と、前記歌詞データに含まれる文字列が行毎に記憶可能な第一、第二および第三の記憶手段と、前記第二の記憶手段に記憶された文字列データを表示させる表示手段と、前記表示手段に、前記歌詞データを表示させる第一のモード、および表示させない第二のモードのいずれかに設定するスイッチ手段と、を有する自動再生装置に用いられるコンピューターが読み取り可能な記録媒体であって、前記格納手段から、前記演奏データに含まれる歌詞データを順次読み出す第一の読み出しステップと、前記スイッチ手段により第一のモードが設定されている場合でかつ前記第三の記憶手段が書き込み可能な状態である場合に、前記第一の読み出しステップにより読み出された歌詞データに含まれる文字列を、前記第三の記憶手段に行単位で書き込むとともに、前記第三の記憶手段を書き込み不可の状態とし、前記第二のモードが設定されている場合でかつ前記第一の記憶手段が書き込み可能な状態である場合は、前記第一の読み出し手段により読み出された歌詞データに含まれる文字列を、前記第一の記憶手段に行単位で書き込むとともに、前記第一の記憶手段を書き込み不可の状態とする第一の書き込みステップと、前記第一の書き込みステップによる書き込みのあとに、前記格納手段より前記演奏データに含まれる歌詞データを順次読み出す第二の読み出しステップと、前記第二のモードが設定されている場合には、この第二の読み出しステップにより、前記歌詞データに含まれる文字列が一行分読み出されるのに応答して、前記第一の記憶手段に記憶された文字列のうち、当該読み出された歌詞データに含まれる文字列に対応する行を削除するとともに前記第一の記憶手段の先頭行を書き込み可能とし、前記第一のモードが設定されている場合は、前記第二の記憶手段に記憶されている文字列全てが読み出された際に、前記第二の記憶手段に前記第三の記憶手段の内容を全て書き込むとともに、前記第三の記憶手段を書き込み可能とする第二の書き込みステップと、前記スイッチ手段により、前記第二のモードから前記第一のモードに設定されたときに前記第一の記憶手段の内容を前記第二の記憶手段にコピーするとともに、前記第一のモードから前記第二のモードに設定されたときは、前記第二の記憶手段の内容を前記第一の記憶手段にコピーするコピーステップと、を実行するプログラムを記録している。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施の形態による自動演奏装置の回路構成図である。
その自動再生装置は、フロッピーディスク（ＦＤ）１２０にＳＭＦ（スタンダードＭＩＤＩファイル。周知のものなので詳細は省略する）などの形で格納された演奏データを対象にその自動再生を行うものである。図１に示すように、装置全体の制御を行うＣＰＵ１０１と、ＣＰＵ１０１が実行するプグラムなどを格納したＲＯＭ１０２と、そのＣＰＵ１０１がワーク用に用いるＲＡＭ１０３と、ＣＰＵ１０１の指示に従ってデータの転送を行うダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）１０４と、フロッピーディスク（ＦＤ）１２０にアクセスするフロッピーディスク装置（ＦＤＤ）１０５と、そのＦＤＤ１０５の制御を行うフロッピーディスク装置コントローラ（ＦＤＤＣ）１０６と、情報表示用に搭載された液晶表示器（ＬＣＤ）１０７と、そのＬＣＤ１０７が表示する画像データを格納するＶＲＡＭ１０８と、そのＶＲＡＭ１０８に格納された画像データをＬＣＤ１０７上に表示するＬＣＤコントローラ（ＬＣＤＣ）１０９と、各種スイッチやキーなどからなる操作子群１１０と、発音させるべき楽音の波形データを生成し、それをＤ／Ａ変換してアナログのオーディオ信号を出力するウェーブジェネレータ（ＷＧ）１１１と、そのＷＧ１１１が出力したオーディオ信号の増幅を行うアンプ（ＡＭＰ）１１２と、そのアンプ１１２が出力したオーディオ信号を音声に変換して出力するスピーカ１１３と、を備えて構成されている。
【００１３】
なお、上記ＬＣＤ１０７を搭載する代わりに、外部の表示装置と接続するためのインターフェースを搭載しても良い。ＷＧ１１１やアンプ、及びスピーカ１１３なども搭載するのではなく、外部の音源装置などと接続するためのインターフェースを搭載しても良い。
【００１４】
図２は、液晶表示器（ＬＣＤ）１０７の表示内容、及びその周辺に配置されたスイッチを示す図である。
図２に示すように、ＬＣＤ１０７には、１０７ａ、或いは１０７ｂを付した２つの枠画面が表示されている。枠画面１０７ａは、ＦＤ１２０にＳＭＦの形で格納された演奏データのファイル名を表示するために用意したエリアであり、他方の枠画面１０７ｂは、ユーザの要求する情報を表示するために用意した汎用のエリアである。それらの枠画面１０７ａ、１０７ｂが表示されたＬＣＤ１０７の周辺には、操作子群１１０を構成するスイッチとして、多数のスイッチが配置されている。スイッチ２０１〜２０６の近傍には、「ＰＬＡＹ」「ＳＴＯＰ」などのスイッチに割り当てられた機能、更には現在の状態を表す情報（文字列）が表示されている。それらは、具体的には以下のようなことを表している。
【００１５】
「ＰＬＡＹ」は、その近傍に配置されたスイッチ２０１が自動再生の開始を指示するためのものであることを表している。それの反転表示は、現在、自動再生中であることを表している。「ＳＴＯＰ」は、その近傍に配置されたスイッチ２０２が自動再生の開始を指示するためのものであることを表している。それの反転表示は、現在、自動再生は行っていないことを表す。
【００１６】
「ＬＹＲＩＣＳ」は、その近傍に配置されたスイッチ２０３が歌詞表示を指示するためのものであることを表している。それの反転表示は、現在、歌詞を表示する歌詞表示モードが設定されていることを表している。その歌詞表示モードが設定されている場合、自動再生中は図３に示すように枠画面１０７ｂ内に歌詞（歌詞データ）が表示される。「ＰＡＲＴ  ＯＮ／ＯＦＦ」は、その近傍に配置されたスイッチ２０４が各パート（チャネル）別に再生を行うか否かを選択できるパート選択モードを設定するためのものであることを表している。それの反転表示は、現在、そのパート選択モードが設定されていることを表している。
【００１７】
枠画面１０７ａに表示されたファイル名のなかで選択されているファイル名は反転表示されている。「ＬＩＳＴ  ＵＰ」は、その近傍に配置されたスイッチ２０５が、枠画面１０７ａに表示されたファイル名のなかで選択されているファイル名の位置を上方に向かって移動させるためのものであることを表している。「ＬＩＳＴ  ＤＯＷＮ」は、「ＬＩＳＴ  ＵＰ」とは逆に、その近傍に配置されたスイッチ２０６が、枠画面１０７ａに表示されたファイル名のなかで選択されているファイル名の位置を下方に向かって移動させるためのものであることを表している。なお、以降は、上記スイッチ２０１〜２０６にはその近傍に表示の文字列を先頭に付して表記することにする（ＰＬＡＹスイッチ２０１、など）。
【００１８】
枠画面１０７ｂの下方には、計１６個のスイッチからなるスイッチ群２０７が配置されている。その枠画面１０７ｂには、パート選択モードが設定されている場合、図２に示すように、パート（チャネル）毎に発音中の楽音の音量を示すバーが表示される。スイッチ群２０７を構成する各スイッチは、パート選択モードが設定されているとき、即ち「ＰＡＲＴ  ＯＮ／ＯＦＦ」が反転表示されているとき、その近傍に表示されたパートのＯＮ（再生する）／ＯＦＦ（再生しない）の切り換えを指示するために用いられる。そのＯＮ／ＯＦＦは、スイッチ群２０７を構成するスイッチを操作する度に、ＯＮからＯＦＦ、或いはＯＦＦからＯＮに切り換わるようになっている。
【００１９】
以上の構成において、動作を説明する。
ＣＰＵ１０１は、電源がオンされると、ＲＯＭ１０２に格納されたプログラムを読み出して実行することにより、装置全体の制御を開始する。ＦＤＤＣ１０６には、ＦＤ１２０に格納されたファイル名の読み出しをＦＤＤ１０５に指示させる。ＦＤＤ１０５がＦＤ１２０から読み出したファイル名は、例えばＦＤＤＣ１０６、及びＤＭＡＣ１０４を介してＲＡＭ１０３に格納する。その後は、ＲＯＭ１０２に格納された画像データを読み出し、ＲＡＭ１０３をワーク用に使ってＬＣＤ１０７に表示させるべき１画面（初期画面）分の画像データを作成し、それをＬＣＤＣ１０９に送出する。モードとしては、パート選択モードを初期設定している。
【００２０】
ＬＣＤＣ１０９は、ＣＰＵ１０１から送られた画像データを、そのＣＰＵ１０１がＶＲＡＭ１０８内で指定したエリアに格納し、そのＶＲＡＭ１０８に格納された画像データを用いてＬＣＤ１０７を駆動する。それにより、ＶＲＡＭ１０８に格納された画像データをＬＣＤ１０７上に表示する。このことから、ＣＰＵ１０１は、１画面（初期画面）分の画像データをＬＣＤＣ１０９に送出した以降は、ＶＲＡＭ１０８内に格納された画像データを部分的に書き換えることでＬＣＤ１０７の表示内容を変更する。便宜的に、ＶＲＡＭ１０８内で枠画面１０７ａ表示用の画像データを格納するためのエリアを第１エリア、枠画面１０７ｂ表示用のそれを格納するためのエリアを第２エリアと呼ぶことにする。
【００２１】
ＣＰＵ１０１は、ＰＬＡＹスイッチ２０１が操作されると、現在、選択されているファイル名のファイル（演奏データ）の読み出しをＦＤＤＣ１０６に指示し、そのＦＤＤＣ１０６は、ＦＤＤ１０５にそのファイル名のファイルの読み出しを指示する。ＦＤＤ１０５は、ＦＤ１２０にアクセスして、そのファイル名のファイルを読み出してＦＤＤＣ１０６に送出する。ＣＰＵ１０１は、ＦＤＤ１０５からＦＤＤＣ１０６に送出されたファイルを、ＤＭＡＣ１０４にＲＡＭ１０３に転送させて格納させる。その後、その自動再生を開始する。
【００２２】
演奏データ（ＳＭＦ）には、歌詞データが挿入されていることを前提として、その自動再生を行うようにしている。その歌詞データは、現在、自動再生している箇所以降のものも表示させる必要がある。このことから、自動再生は、演奏上のイベントの内容を示すＭＩＤＩ（イベント）データ処理用、及び歌詞データ処理用の２つのポインタ（変数）をそれぞれ用意し、各ポインタの値を別々に更新しながら、その値が示すデータを処理していくことで行っている。なお、ここでは、便宜的に、歌詞データを構成するデータは、文字や記号などを表すデータ（以降、文字データと呼ぶ）と、改行を表すデータ（以降、改行データと呼ぶ）と、の２種類に区別することにする。図３に示す枠画面１０７ｂに表示されている歌詞は、その改行データによって行単位（５行）で配置されている。
【００２３】
演奏データを構成するＭＩＤＩデータには、その処理タイミングを表す時間（タイム）データが付加されている。このことから、ＣＰＵ１０１は、ＭＩＤＩデータは、その時間データに従って処理、具体的には、それをそのまま、或いはそれに応じたコマンドを生成してＷＧ１１１に送出することで処理する。それにより、ＷＧ１１１に発音させるべき楽音のオーディオ信号をアンプ１１２に出力させて、その楽音をスピーカ１１３から放音させる。
【００２４】
設定されているモードがパート選択モードであれば、枠画面１０７ｂには歌詞データは表示しない。しかし、パート選択モードから歌詞表示モードに切り換われば、それを表示させなければならない。その切り換わった時点で再生している箇所、以降、演奏データ（ＳＭＦ）内に挿入されている歌詞データを表示すると、殆どの場合、用語や単語、或いはフレーズなど、全てを表示すべき文字列を途中から表示することになり、歌詞の内容を容易に把握できなくなる。このことから、本実施の形態では、パート選択モードが設定されていれば、ＲＡＭ１０３内に確保したエリアに、演奏データ中から読み出した歌詞データ（実際にはそれが表す文字などを表示するための画像データ）を予め格納しておき、パート選択モードから歌詞表示モードに設定が切り換わったときには、そのエリアに格納しておいた歌詞データを表示するようにしている。そのようにして、全て表示すべき文字列を含めて歌詞を表示できるようにしている。なお、そのエリアに格納された歌詞データは、歌詞表示モードの設定中にはＶＲＡＭ１０８に書き込むべきものであることから、そのエリアについては以降、ダミーＶＲＡＭエリアと呼ぶことにする。
【００２５】
上記したように、歌詞データを構成するデータには改行データが含まれている。このことから、本実施の形態では、図３に示すように、その改行データで区切られる文字データで表される文字列を一つの行として、枠画面１０７ｂに行単位で配置するようにしている。
【００２６】
その枠画面１０７ｂには、最大で５行分の歌詞（文字列）を表示するようになっている。このことに合わせて、ダミーＶＲＡＭエリアには最大で５行分の歌詞（文字データ）を格納するようにしている。本実施の形態では、ダミーＶＲＡＭエリアには、現在、再生中の箇所に対応する行の文字データの他に、それに続く行の文字データを最大で４行分、格納するようにしている。それにより、パート選択モードから歌詞表示モードに切り換わった際には、現在、再生中の箇所に対応する行を一番上の行として、その行に続く行を最大で４行、枠画面１０７ｂに表示するようにしている。
【００２７】
そのようにして、現在、再生中の箇所に対応する行を予め定めた一定の位置（ここでは一番上の行）に表示させる場合、画面（ここでは枠画面１０７ｂ内の表示）を切り換えて歌詞を表示させても、新たに表示された歌詞のなかで現在、再生中の箇所の特定を容易に行うことができる。歌詞は行単位で表示させているため、表示させるべき文字列を途中から表示するようなことはなくなり、意味の把握が容易に行えない形での歌詞表示は回避される。これらの結果、歌詞を表示させていない状態から、常に、内容の把握、及び再生中の箇所の特定を容易に行える状態で歌詞を表示できるようになる。
【００２８】
次に、図４〜図１８に示す各種フローチャートを参照して、上記歌詞表示を実現させるＣＰＵ１０１の動作について詳細に説明する。
図４は、全体処理のフローチャートである。始めに、図４を参照して、全体処理について詳細に説明する。なお、図４に示す全体処理は、ＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラムを実行することで実現される。
【００２９】
先ず、ステップ４０１では、初期化（イニシャライズ）を行う。そのイニシャライズを行うことにより、各種変数には初期値を代入し、ＦＤＤＣ１０６に対しては、ＦＤＤ１０５に、ＦＤ１２０に格納されたファイルのファイル名の読み出しを指示させる。それによってＦＤＤ１０５が読み出したファイル名は、ＦＤＤＣ１０６、及びＤＭＡＣ１０４を介してＲＡＭ１０３に格納させる。そのようなイニシャライズを行った後は、ステップ４０２に移行する。
【００３０】
ステップ４０２では、ＬＣＤ１０７に上記初期画面を表示させる初期画面表示処理を実行する。続くステップ４０３では、操作子群１１０を構成する各種スイッチ（図２参照）へのユーザの操作に対応するためのスイッチ（ＳＷ）処理を実行する。その次に移行するステップ４０４では、再生中の演奏データ内に、現在、再生中の箇所以降に挿入された歌詞データを読み出す（先読みする）先読み処理を実行する。その実行後は、ステップ４０５に移行して、演奏データを再生する再生処理を実行する。その後は上記ステップ４０３に戻る。
【００３１】
上記ステップ４０３〜４０５は処理ループを形成しており、電源がオンとなっている間、繰り返し実行される。それにより、本実施の形態による自動再生装置は、操作子群１１０を構成するスイッチへのユーザの操作に応じて動作するようになっている。以降は、上述の全体処理内で実行されるサブルーチン処理、或いはそのサブルーチン処理内で実行されるサブルーチン処理について詳細に説明する。
【００３２】
図５は、上記ステップ４０２として実行される初期画面表示処理のフローチャートである。次に、図５を参照して、初期画面表示処理について詳細に説明する。その表示処理を実行することで表示する初期画面は、上述したように、パート選択モードの設定時のものである。
【００３３】
先ず、ステップ５０１では、ＲＯＭ１０２から読み出した画像データ、或いはそれを加工して生成した画像データをＬＣＤＣ１０９に送出して、ＶＲＡＭ１０８に格納させる。このとき、ＶＲＡＭ１０８に格納された画像データは、枠画面１０７ａ、或いは１０７ｂ内に表示させる画像データを除いた１画面分の画像データであり、その画像データによって反転表示される文字列は「ＳＴＯＰ」及び「ＰＡＲＴ  ＯＮ／ＯＦＦ」である（図２参照）。
【００３４】
ステップ５０１に続くステップ５０２では、図４のステップ４０１で初期化を行った際にＦＤ１２０から読み出したファイル名がＲＡＭ１０３内に格納されていれば、ＶＲＡＭ１０８の第１エリア（枠画面１０７ａに表示させる画像データを格納するエリア）を指定して、最大で５つのファイル（図中ではＭＩＤＩファイル（１）〜（５）で表現。括弧内の数値が変数Ｎの値と一致しているファイル名が反転表示される）のファイル名（文字列）を表示させるための画像データをＬＣＤＣ１０９に送出することにより、ＶＲＡＭ１０８のその第１エリアに格納させる。その後は、ステップ５０３に移行して、変数Ｎの値が示すファイル名を反転表示させるための画像データを生成し、それを第１エリアの対応する場所に格納させる。
【００３５】
上記変数Ｎは、枠画面１０７ａ内に表示されたファイル名のなかで選択されているファイル名を特定するために用意した変数であり、図４のステップ４０１で初期化を行った際に１が代入される。その１は、枠画面１０７ａに表示されるファイル名のなかで１番下に位置しているファイル名が選択されていることを表す値である。このため、上記ステップ５０３を実行することにより、枠画面１０７ａ内で１番下に表示されるファイル名が反転表示されることになる。
【００３６】
ステップ５０３に続くステップ５０４では、ＶＲＡＭ１０８の第２エリアを指定して、各パート（チャネル）の音量を表示するために生成した画像データをＬＣＤＣ１０９に送出することにより、その画像データを第２エリアに格納させる。このときは、演奏データは再生していない。このことから、第２エリアに格納される画像データは、全てのパートは選択（オン）され、全てのパートの音量は０であることを表すものである。
【００３７】
図６は、図４に示す全体処理内でステップ４０３として実行されるスイッチ（ＳＷ）処理のフローチャートである。次に、図６を参照して、そのスイッチ処理について詳細に説明する。
上記操作子群１１０は、例えば各種スイッチの他に、それらへの操作、或いはその操作位置を検出する検出回路から構成されている。その検出回路は、各スイッチに対してユーザが行った操作を検出し、例えば操作を検出したスイッチ毎に、その種類、及びその操作内容を表す操作情報を、ＣＰＵ１０１の指示に応じて、或いは予め定めた設定に従って、そのＣＰＵ１０１に送出する。図６に示すスイッチ処理は、その操作情報を操作子群１１０から取得した後に実行される処理を抜粋してその流れを表したものである。
【００３８】
先ず、ステップ６０１では、ＬＩＳＴ  ＵＰスイッチ２０５へのユーザの操作に対応するためのＬＩＳＴ  ＵＰスイッチ（ＳＷ）を実行する。その実行後は、同様に、ＬＩＳＴ  ＤＯＷＮスイッチ２０６、ＬＹＲＩＣＳスイッチ２０３、ＰＬＡＹスイッチ２０１、ＳＴＯＰスイッチ２０２、ＰＡＲＴ  ＯＮ／ＯＦＦスイッチ２０４、及びその他のスイッチへのユーザの操作に対応するための処理をそれぞれ実行する（ステップ６０２〜６０７）。一連の処理は、ステップ６０７のその他のスイッチ（ＳＷ）処理を実行した後に終了する。
【００３９】
ここで、上記スイッチ処理内で実行されるサブルーチン処理、或いはそのサブルーチン処理によって実行が禁止、或いはその禁止が解除されるタイマインタラプト処理について、図７〜図１４に示す各種フローチャートを参照して詳細に説明する。
【００４０】
図７は、上記ステップ６０１として実行されるＬＩＳＴ  ＵＰスイッチ処理のフローチャートである。スイッチ処理内で実行されるサブルーチン処理、或いはそのサブルーチン処理によって実行が禁止、或いはその禁止が解除されるタイマインタラプト処理については、始めに図７を参照して、ＬＩＳＴ  ＵＰ処理について詳細に説明する。なお、上記ＬＩＳＴ  ＵＰスイッチ２０５は、上記したように、枠画面１０７ａに表示されたファイル名のなかで、選択されているファイル名の位置を上方に向かって移動させるのを指示するためのものである。枠画面１０７ａ内で１番下に表示されたファイル名に対応する変数Ｎの値は１であり、それから上に行くに従って、対応する変数Ｎの値は１つずつ、大きくなるようになっている。
【００４１】
先ず、ステップ７０１では、そのスイッチ２０５が操作（オン）されたか否か判定する。操作子群１１０から受け取った操作情報のなかにそれが操作されたことを表すものが存在していた場合、判定はＹＥＳとなってステップ７０２に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、ここで一連の処理を終了する。
【００４２】
ステップ７０２では、上記変数Ｎの値をインクリメントする。続くステップ７０３では、変数Ｎの値が５より大きいか否か判定する。枠画面１０７ａ内に１番上に位置するファイル名が反転表示されている状態でＬＩＳＴ  ＵＰスイッチ２０５をユーザが操作した場合、それまで５が代入されていた変数Ｎの値をステップ７０２でインクリメントすることから、判定はＹＥＳとなり、ステップ７０４で変数Ｎに１を代入し、次にステップ７０５において、その変数Ｎの値（ここでは１）で指定されるファイル名を反転表示するための画像データをＬＣＤＣ１０９に送出する。それにより、枠画面１０７ａの１番下に位置するファイル名を反転表示させるようにした後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ７０５に移行し、変数Ｎの値（ここでは２〜５の範囲内の値である）で指定されるファイル名を反転表示するための画像データをＬＣＤＣ１０９に送出した後、一連の処理を終了する。
【００４３】
このように、本実施の形態では、ユーザがＬＩＳＴ  ＵＰスイッチ２０５を操作すると、枠画面１０７ａに表示されたファイル名のなかで反転表示されるファイル名の位置が上方に向かって移動し、１番上に位置するファイル名が反転表示された状態で更に操作すると、１番下に位置するファイル名が反転表示されるようになっている。そのようにして、反転表示されるファイル名の位置をユーザが選択できるようにしている。
【００４４】
図８は、図６に示すスイッチ処理内でステップ６０２として実行されるＬＩＳＴ  ＤＯＷＮ処理のフローチャートである。
そのＬＩＳＴ  ＤＯＷＮ処理では、ステップ８０１〜８０５の処理が上記ＬＩＳＴ  ＵＰ処理と同様に実行される。それにより、ＬＩＳＴ  ＤＯＷＮスイッチ２０６をユーザが操作すると、上記ＬＩＳＴ  ＵＰスイッチ２０５とは向きを逆に、枠画面１０７ａに表示されたファイル名のなかで反転表示されるファイル名の位置が下方に向かって移動し、１番下に位置するファイル名が反転表示された状態で更に操作すると、１番上に位置するファイル名が反転表示されるようになっている。
【００４５】
図９は、図６に示すスイッチ処理内でステップ６０３として実行されるＬＹＲＩＣＳスイッチ処理のフローチャートである。次に、図９を参照して、そのＬＹＲＩＣＳスイッチ処理について詳細に説明する。なお、ＬＹＲＩＣＳスイッチ２０３は、枠画面１０７ｂ内に、再生中の演奏データ内に挿入されている歌詞データを表示する歌詞表示モードの設定を指示するためのものである。
【００４６】
先ず、ステップ９０１では、ＬＹＲＩＣＳスイッチ２０３が操作（オン）されたか否か判定する。操作子群１１０から受け取った操作情報のなかにそれが操作されたことを表すものが存在していた場合、判定はＹＥＳとなってステップ９０２に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、ここで一連の処理を終了する。
【００４７】
ステップ９０２では、設定中のモードを特定するために用意した変数ＬＹＲＩＣＳ  ＤＳＰに、歌詞表示モードが設定中であることを示す値の１（０はパート選択モードが設定中であることを表す）を代入する。続くステップ９０３では、ＬＣＤＣ１０９に指示して、ＶＲＡＭ１０８の第２エリアをクリアさせる。その次に移行するステップ９０４では、ＲＡＭ１０３のダミーＶＲＡＭエリアに歌詞データ（実際には、例えば文字データをビットマップパターンに転回した画像データ）が格納されていればそれをＬＣＤＣ１０９に送出し、ＶＲＡＭ１０８の第２エリアに格納させる。一連の処理は、それを第２エリアに格納させた後に終了する。
【００４８】
パート選択モードの設定時では、上述したように、演奏データの再生中、ダミーＶＲＡＭエリアには、再生中の箇所に対応する行の文字列の他に、それに続く行の文字列が最大で４行分、格納される。それにより、演奏データの再生中にパート選択モードから歌詞表示モードに切り換わった際には、現在、再生中の箇所に対応する行を一番上の行として、その行に続く行が最大で４行、枠画面１０７ｂに表示されることになる。歌詞を新たに表示させる場合、そのようにして常に決まった形で（ここでは再生中の箇所に対応する行を１番上の行に）歌詞を表示させることにより、ユーザは新たに表示された歌詞のなかで現在、再生中の箇所を容易、且つ迅速に特定することができる。
【００４９】
次に、図６に示すスイッチ処理内でステップ６０４として実行されるＰＬＡＹスイッチ処理について、図１０、及び図１１に示すそのフローチャートを参照して詳細に説明する。なお、ＰＬＡＹスイッチ２０１は、枠画面１０７ａ内で選択されているファイル名を持つ演奏データ（ＳＭＦ）を対象にその再生開始を指示するためのものである。
【００５０】
先ず、ステップ１００１では、ＰＬＡＹスイッチ２０１が操作（オン）されたか否か判定する。操作子群１１０から受け取った操作情報のなかにそれが操作されたことを表すものが存在していた場合、判定はＹＥＳとなってステップ１００２に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、ここで一連の処理を終了する。
【００５１】
ステップ１００２では、演奏データの再生を管理するための変数ＳＴＦに、それが再生中でないことを表す値の０が代入されているか否か判定する。その変数ＳＴＦに０が代入されていなかった場合、即ち現在、演奏データを再生中であった場合には、変数ＳＴＦには１が代入されていることから、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなり、ステップ１００３に移行する。
【００５２】
そのステップ１００３では、各種変数に値を代入すると共に、再生が指示されたファイル（ＳＭＦ）をＦＤ１２０から読み出させてＲＡＭ１０３に格納させる。各種変数としては、具体的には、上記変数ＳＴＦ、変数ＬＩＮＥ、及びＷＰＦにそれぞれ１を代入する。なお、変数ＬＩＮＥは、ＶＲＡＭ１０８の第２エリア、或いはＲＡＭ１０３のダミーＶＲＡＭエリアに格納する歌詞データ（画像データ）量を行単位で管理するために用意した変数であり、変数ＷＰＦは、それらのエリアに歌詞データの追加を行うためにＲＡＭ１０３内に確保したエリア（以降、文字列バッファと呼ぶ）の使用状態を特定するために用意した変数である。
【００５３】
ＲＡＭ１０３に格納したファイル中の演奏データ（ＳＭＦ）は、上述したように、ＭＩＤＩ（イベント）データ処理用、及び歌詞データ処理用の２つのポインタ（変数）をそれぞれ用意し、各ポインタの値を別々に更新しながら、その値が示すデータを処理していくことで行っている。ＭＩＤＩデータ処理用のポインタは変数ＲＰであり、歌詞データ処理用のポインタは変数ＷＰである。ステップ１００３に続くステップ１００４では、その変数ＷＰ、及びＲＰに、それぞれ、ＲＡＭ１０３に格納したファイル中の演奏データ（ＳＭＦ）のなかで先頭に位置するデータのアドレスを示す値を代入する。その後は、ステップ１００５に移行する。
【００５４】
ステップ１００５では、変数ＷＰの値で指定されるデータが歌詞データか否か判定する。そのデータが歌詞データであった場合、判定はＹＥＳとなってステップ１００６に移行する。そうでない場合には、判定はＮＯとなり、後述するステップ１００８に移行する。
【００５５】
ステップ１００６では、変数ＷＰの値で指定されるデータが文字データ（ここでは、歌詞データを構成するデータは文字データと改行データの２種類を前提）か否か判定する。そのデータが文字データであった場合、判定はＹＥＳとなってステップ１００７に移行し、その文字データ（それをビットマップパターンに転回した画像データ）を文字列バッファの最後に連結し、更にステップ１００８で変数ＷＰの値をインクリメントした後、上記ステップ１００５に戻る。そうでない場合には、判定はＮＯとなり、図１１に示すステップ１００９に移行する。
【００５６】
上記ステップ１００５〜１００８で形成される処理ループは、ステップ１００６の判定がＮＯとなるまでの間、繰り返し実行される。それにより、文字列バッファには、改行データによって区切られる１行分の文字列（その画像データ）が格納されることになる。
【００５７】
一方、図１１に示すステップ１００９では、変数ＬＹＲＩＣＳ  ＤＳＰの値が０か否か判定する。現在、パート選択モードが設定されている場合、それには０が代入されていることから、判定はＹＥＳとなってステップ１０１０に移行し、ダミーＶＲＡＭエリア内の変数ＬＩＮＥの値で指定されるエリアに文字列バッファの内容をストアした後、ステップ１０１２に移行する。そうでない場合には、判定はＮＯとなってステップ１０１１に移行し、文字列バッファの内容をＬＣＤＣ１０９に送出して、ＶＲＡＭ１０８の第２エリア内の変数ＬＩＮＥの値で指定されるエリアにストアさせるとともに、その内容を歌詞文字バッファ内の変数ＬＩＮＥの値で指定されるエリアにストアした後、そのステップ１０１２に移行する。なお、その歌詞文字バッファは、歌詞表示モード設定時に、ＶＲＡＭ１０８の第２エリアの内容更新用にＲＡＭ１０３に確保したエリアである。
【００５８】
ステップ１０１２では、文字列バッファをクリアする。続くステップ１０１３では、変数ＬＩＮＥの値をインクリメントする。その後はステップ１０１４に移行して、変数ＬＩＮＥの値が５より大きいか否か判定する。その変数ＬＩＮＥの値が５より大きい場合、即ち文字列を格納する対象のエリアに５行分の文字列を格納した場合、判定はＹＥＳとなり、ステップ１０１５に移行する。そうでない場合には、判定はＮＯとなり、上記ステップ１００５に移行する。
【００５９】
このように、ステップ１００９に移行すると、文字列バッファに格納した内容を対象とするエリアに格納するようになっている。それにより、ステップ１００５〜１０１４で形成される処理ループでは、１行分ずつ、５行分の文字列を対象とするエリアに格納するための処理を実行するようになっている。そのステップ１０１４のＹＥＳの判定は、文字列の格納対象とするエリアに格納すべき文字列を全て格納したことを意味する。
【００６０】
ステップ１０１５では、文字列の格納対象とするエリア（ＶＲＡＭ１０８の第２エリア、或いはＲＡＭ１０３のダミーＶＲＡＭエリア、である）に格納された内容を更新すべきタイミングを管理するために用意した変数ＬＷＦに、その内容を更新すべきタイミングでないことを表す値の０を代入し、変数Ｋ１ＷＰには変数ＷＰの値、つまり最後に処理した歌詞データ（ここでは改行データ）の演奏データ（ＳＭＦ）内におけるアドレスの値を代入する。その後は、ステップ１０１６に移行する。
【００６１】
ステップ１０１６以降では、処理すべきＭＩＤＩデータ、或いは歌詞データがあればそれを処理し、それ以降に処理すべきＭＩＤＩデータ、或いは歌詞データをそれに付加された時間（タイム）データに従って処理する準備のための処理が実行される。
【００６２】
先ず、ステップ１０１６では、変数ＲＰの値で指定されるデータの種類を判定する。そのデータがＭＩＤＩ（イベント）データであった場合、その旨が判定されてステップ１０１７に移行する。
そのステップ１０１７では、変数ＲＰの値で指定されるＭＩＤＩデータをＷＧ（音源）１１１に送付して処理する。続くステップ１０１８では、変数ＲＰの値をインクリメントする。その後は上記ステップ１０１６に戻る。
【００６３】
変数ＲＰの値で指定されるデータが時間（タイム）データであった場合には、その旨がステップ１０１６で判定されてステップ１０１９に移行する。そのステップ１０１９では、変数ＲＰの値で指定される時間データの値を変数Ｔに代入する。その変数Ｔは、例えばＣＰＵ１０１に搭載されたハードタイマが所定の時間が経過する度に発生させる割り込み信号によって図１２に示すタイマインタラプト処理を起動した際に、ステップ１２０１の実行時に値がデクリメントされる変数である。このことから、ステップ１０１９で変数Ｔに代入する時間データの値は、そのタイマインタラプト処理の実行間隔を単位として表した値である。
【００６４】
ステップ１０１９に続くステップ１０２０では、そのタイマインタラプト処理の実行の禁止解除を行う。その禁止解除は、実際には割り込みフラグレジスタ内の対応するビットのマスクを解除、即ちそのビットの値を１にすることで行う。そのようにして禁止解除を行った後に、一連の処理を終了する。
【００６５】
変数ＲＰの値で指定されるデータが歌詞データであった場合には、その旨がステップ１０１６で判定されてステップ１０２１に移行する。
そのステップ１０２１では、変数ＲＰの値で指定されるデータが文字データか否か判定する。そのデータが文字データであった場合、判定はＹＥＳとなってステップ１０２２に移行する。そうでない場合には、判定はＮＯとなり、上記ステップ１０１８に移行し、変数ＲＰの値のインクリメントを行う。
【００６６】
ステップ１０２２では、変数ＬＹＲＩＣＳ  ＤＳＰの値が０か否か判定する。現在、パート選択モードが設定されている場合、その変数には０が代入されていることから、判定はＹＥＳとなり、ステップ１０２３でダミーＶＲＡＭエリア内の対応する文字の画像データを、反転表示したものに書き換えた後、上記ステップ１０１８に移行する。そうでない場合には、判定はＮＯとなり、ステップ１０２４でその反転表示させた文字の画像データをＬＣＤＣ１０９に送出して、ＶＲＡＭ１０８の第２エリアの対応する文字の画像データとして格納（上書き）させるとともに、その反転表示させた文字の画像データを、歌詞文字バッファ内の対応する文字の画像データとして上書きした後、そのステップ１０１８に移行する。
【００６７】
ＰＬＡＹスイッチ２０１が操作されると、上述したようにして、演奏データの再生を開始する準備、及びその開始時に処理すべきＭＩＤＩデータ、或いは歌詞データがあればその処理を行うようになっている。
図１３は、図６に示すスイッチ処理内でステップ６０５として実行されるＳＴＯＰスイッチ（ＳＷ）処理のフローチャートである。次に、その
図１３を参照して、ＳＴＯＰスイッチ処理について詳細に説明する。なお、ＳＴＯＰスイッチ２０２は、演奏データの再生の終了を指示するためのものである。
【００６８】
先ず、ステップ１３０１では、発音中の全ての楽音の消音をＷＧ１１１に対して指示するオールノートオフ処理を実行する。続くステップ１３０２では、上記図１１のステップ１０２０で禁止解除したタイマインタラプト処理の実行の禁止を行う。その後、一連の処理を終了する。
【００６９】
図１４は、図６に示すスイッチ処理内でステップ６０６として実行されるＰＡＲＴ  ＯＮ／ＯＦＦスイッチ（ＳＷ）処理のフローチャートである。次に、図１４を参照して、そのスイッチ処理について詳細に説明する。なお、ＰＡＲＴ  ＯＮ／ＯＦＦスイッチ２０４は、枠画面１０７ｂ内に、各パート（チャネル）のなかで再生するパート（実際に楽音を発音させるパート）を選択できるパート選択モードの設定を指示するためのものである。
【００７０】
先ず、ステップ１４０１では、ＰＡＲＴ  ＯＮ／ＯＦＦスイッチ２０４が操作（オン）されたか否か判定する。操作子群１１０から受け取った操作情報のなかにそれが操作されたことを表すものが存在していた場合、判定はＹＥＳとなってステップ１４０２に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、ここで一連の処理を終了する。
【００７１】
ステップ１４０２では、上記変数ＬＹＲＩＣＳ  ＤＳＰに、パート選択モードが設定中であることを示す値の０を代入する。続くステップ１４０３では、ダミーＶＲＡＭエリアをクリアする。次に実行するステップ１４０４では、ＬＣＤＣ１０９から、ＶＲＡＭ１０８の第２エリアに格納された内容を受け取り、そのなかで最後（最下行）から変数ＬＩＮＥ行数分の文字列のデータをダミーＶＲＡＭエリアに格納する。その格納を行うと、ステップ１４０５で変数ＷＰに変数Ｋ１ＷＰの値を代入し、更にステップ１４０６で歌詞文字バッファのクリアを行った後、一連の処理を終了する。なお、歌詞文字バッファは、歌詞表示モード設定時において、ＶＲＡＭ１０８の第２エリアに転送すべきデータの格納用にＲＡＭ１０３内に確保したエリアである。変数Ｋ１ＷＰには、歌詞データのなかで、ＶＲＡＭ１０８の第２エリアに格納された最後の文字データの次に位置する改行データのアドレスの値が代入されている。このことから、その値を変数ＷＰに代入することで、その改行データより後に位置する歌詞データを演奏データ（ＳＭＦ）中から抽出（先読み）して処理することになる。
【００７２】
図６に示すスイッチ処理では、上述したような内容のサブルーチン処理が実行される。それにより、ユーザが操作したスイッチに対応する処理を実行するようになっている。以降は、図４に示す全体処理内で実行されるサブルーチン処理の説明に戻る。
【００７３】
図１５、及び図１６は、図４に示す全体処理内でステップ４０４として実行される先読み処理のフローチャートである。次に、その先読み処理について、図１５、及び図１６を参照して詳細に説明する。
歌詞は、現在、再生中の箇所以降のものも表示させる必要がある。先読み処理は、演奏データのなかから、現在、再生中の箇所以降に配置されているものを読み出して（先読みして）、それを保持しておくための処理である。
【００７４】
先ず、ステップ１５０１では、変数ＳＴＦの値が１か否か判定する。現在、演奏データを再生中であった場合、その変数ＳＴＦには１が代入されていることから、判定はＹＥＳとなってステップ１５０２に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７５】
ステップ１５０２では、変数ＷＰＦの値が１か否か判定する。文字列バッファが使用できる状態であった場合、その変数ＷＰＦには１が代入されていることから、判定はＹＥＳとなり、ステップ１５０３で変数ＷＰの値をインクリメントした後、ステップ１５０４に移行する。そうでない場合には、判定はＮＯとなり、ステップ１５１６に移行する。
【００７６】
ステップ１５０４では、変数ＷＰの値で指定されるデータが歌詞データ（文字データ、或いは改行データ）か否か判定する。そのデータが歌詞データであった場合、判定はＹＥＳとなってステップ１５０５に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７７】
ステップ１５０５では、変数ＷＰの値で指定されるデータが改行データか否か判定する。そのデータが改行データであった場合、判定はＹＥＳとなり、ステップ１５０６で変数ＷＰＦに、文字列バッファが使用できない状態であることを表す値の０を代入した後、ステップ１５０８に移行する。そうでない場合には、判定はＮＯとなり、ステップ１５０７で文字列バッファに格納した最終の文字データに、変数ＷＰの値で指定される文字データを連結した後、一連の処理を終了する。
【００７８】
ステップ１５０８では、変数ＬＹＲＩＣＳ  ＤＳＰの値が０か否か判定する。現在、パート選択モードが設定中であった場合、判定はＹＥＳとなり、ステップ１５０９に移行する。そうでない場合には、判定はＮＯとなり、図１６に示すステップ１５１７に移行する。
【００７９】
ステップ１５０９では、変数ＬＷＦの値が１か否か判定する。その変数ＬＷＦには、対象とするエリアに歌詞データを書き込める状態でない場合に１（そうでない場合には０）が代入される。このことから、その状態でなかった場合、判定はＹＥＳとなってステップ１５１０に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００８０】
ステップ１５１０では、ダミーＶＲＡＭエリアに、文字列バッファに格納された文字データ（群）をコピーする。続くステップ１５１１では、その文字列バッファをクリアする。その後は、ステップ１５１２で変数ＷＰＦに１を代入し、更にステップ１５１３で変数ＬＩＮＥの値をインクリメントした後、ステップ１５１４に移行する。
【００８１】
ステップ１５１４では、変数ＬＩＮＥの値が５より大きいか否か判定する。対象とするエリアに５行分の歌詞データ（文字列）が格納されている場合、判定はＹＥＳとなり、ステップ１５１５で変数ＬＷＦに０を代入した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、変数ＬＷＦの値は１のままにして、一連の処理を終了する。
【００８２】
一方、上記ステップ１５０２の判定がＮＯとなって移行するステップ１５１６では、変数ＬＹＲＩＣＳ  ＤＳＰの値が０か否か判定する。現在、パート選択モードが設定中であった場合、判定はＹＥＳとなり、上記ステップ１５０９に移行して、それ以降の処理を同様に実行する。そうでない場合には、判定はＮＯとなり、図１６に示すステップ１５１７に移行する。
【００８３】
その図１６のステップ１５１７では、変数ＬＷＦの値が１か否か判定する。その変数ＬＷＦに１が代入されていた場合、判定はＹＥＳとなってステップ１５１８に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００８４】
ステップ１５１８では、歌詞文字バッファ内の変数ＬＩＮＥの値から特定されるエリア（行）に、文字列バッファに格納された文字データをコピーする。続くステップ１５１９では、その文字列バッファをクリアする。その後は、ステップ１５２０で変数ＷＰＦに１を代入し、更にステップ１５２１で変数ＬＩＮＥの値をインクリメントした後、ステップ１５２２に移行する。
【００８５】
ステップ１５２２では、変数ＬＩＮＥの値が５か否か判定する。その変数ＬＩＮＥに５が代入されていた場合、判定はＹＥＳとなり、ステップ１５２３で変数ＬＷＦに０、変数Ｋ２ＷＰに変数ＷＰの値（歌詞データのなかで、歌詞文字バッファに格納された最後の文字データの次に位置する改行データのアドレスの値）をそれぞれ代入した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、変数ＬＷＦの値は１のままにして、一連の処理を終了する。
【００８６】
このようにして、先読み処理では、変数ＷＰＦの値が１となっていれば先読みして得た文字データを文字列バッファに格納し、その文字列バッファに１行分の文字データを格納すると変数ＷＰＦに０を代入し、文字列バッファに格納した１行分の文字データは、変数ＬＷＦの値が１であれば対象とするエリアにコピーして変数ＷＰＦに１を代入し、そのコピーによってそのエリアに文字データを格納する余地がなくなれば、変数ＬＷＦに０を代入するようになっている。それにより、行単位で歌詞文字バッファ、或いはダミーＶＲＡＭエリアに文字データを格納するようにしている。
【００８７】
図１７、及び図１８は、図４に示す全体処理内でステップ４０５として実行される再生処理のフローチャートである。次に、その再生処理について、図１７、及び図１８を参照して詳細に説明する。
先ず、ステップ１７０１では、変数ＳＴＦの値が１か否か判定する。演奏データの再生中でない場合、その変数ＳＴＦには０が代入されていることから、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１７０２に移行する。
【００８８】
ステップ１７０２では、変数Ｔ後が０以下か否か判定する。次のＭＩＤＩデータ、或いは歌詞データを処理すべきタイミングとなった場合、その変数Ｔの値は０以下となることから、判定はＹＥＳとなり、変数ＲＰの値をインクリメントした後、ステップ１７０４に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００８９】
ステップ１７０４では、変数ＲＰの値で指定されるデータの種類を判定する。そのデータがイベント（ＭＩＤＩ）データであった場合、その旨が判定されてステップ１７０５に移行し、そのイベントデータをＷＧ（音源）１１１に送付する形で処理した後、上記ステップ１７０３に戻る。そのデータがタイム（時間）データであった場合には、その旨が判定されてステップ１７０６に移行し、そのタイムデータを変数Ｔに新たに代入した後、一連の処理を終了する。そのデータが歌詞データであった場合には、その旨が判定されてステップ１７０７に移行する。
【００９０】
ステップ１７０７では、その歌詞データが文字データか否か判定する。その歌詞データが文字データであった場合、判定はＹＥＳとなってステップ１７０８に移行する。そうでない場合には、判定はＮＯとなり、ステップ１７１１に移行する。
【００９１】
ステップ１７０８では、変数ＬＹＲＩＣＳ  ＤＳＰの値が１か否か判定する。その変数には、歌詞表示モードが設定中の場合に１が代入されている。このことから、その場合には、判定はＹＥＳとなり、ステップ１７０９でＬＣＤＣ１０９に、変数ＲＰの値で指定される文字データを反転表示させる画像データを送出し、それをＶＲＡＭ１０８内の第２エリアの対応する文字データに上書きさせた後、上記ステップ１７０３に戻る。そうでない場合には、判定はＮＯとなり、ステップ１７１０でその反転表示させる画像データを、ダミーＶＲＡＭエリアの対応する文字データに上書きした後、上記ステップ１７０３に戻る。
【００９２】
一方、上記ステップ１７０７の判定がＮＯとなって移行するステップ１７１１では、変数ＲＰの値で指定されるデータが改行データか否か判定する。そのデータが改行データであった場合、判定はＹＥＳとなって図１８に示すステップ１７１２に移行する。そうでない場合には、判定はＮＯとなり、上記ステップ１７０３に戻る。
【００９３】
図１８に示すステップ１７１２では、変数ＬＹＲＩＣＳ  ＤＳＰの値が０か否か判定する。その変数には、パート選択モードが設定中の場合に０が代入されている。このことから、その場合には、判定はＹＥＳとなり、ステップ１７１３に移行する。そうでない場合には、判定はＮＯとなり、ステップ１７１６に移行する。
【００９４】
ステップ１７１３では、ダミーＶＲＡＭエリアに格納された文字データを１行分シフト（最も早く格納された１行分の文字データを消去する形でのシフトである）する。続くステップ１７１４では、そのシフトに合わせて、変数ＬＩＮＥの値をデクリメントする。その後は、ステップ１７１５に移行して、変数ＬＷＦに１を代入した後、一連の処理を終了する。
【００９５】
他方のステップ１７１６では、変数ＬＩＮＥの値をデクリメントする。続くステップ１７１７では、変数ＬＩＮＥの値が０か否か判定する。その変数ＬＩＮＥに０が代入されていた場合、判定はＹＥＳとなってステップ１７１８に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００９６】
ステップ１７１８では、ＬＣＤＣ１０９に指示して、ＶＲＡＭ１０８の第２エリアをクリアさせる。続くステップ１７１９では、歌詞文字バッファの内容をＬＣＤＣ１０９に送出し、その内容をＶＲＡＭ１０８の第２エリアに格納させるとともに、変数Ｋ１ＷＰに変数Ｋ２ＷＰの値を代入する。次に実行するステップ１７２０では、歌詞文字バッファをクリアする。その後は、上記ステップ１７１５に移行して、変数ＬＷＦに１を代入した後、一連の処理を終了する。
【００９７】
図４に示すステップ４０３〜４０５で形成される処理ループは、演奏データを構成するＭＩＤＩデータの処理間隔と比較して、非常に短いサイクルで実行される。このため、上述したようにしてＶＲＡＭの第２エリアの内容を更新すると、歌詞文字バッファには直ちに５行分の文字データが格納され、それ以降、変数ＬＩＮＥの値を随時、デクリメントしていくことになる。それにより、歌詞表示モードが設定されているときには、枠画面１０７ｂ単位でその表示内容や変数Ｋ１ＷＰの値を更新するようになっている。
【００９８】
なお、本実施の形態では、改行データに着目して、行単位で歌詞（文字列）の表示内容を更新しているが、その改行データ以外のデータに着目して表示内容の更新を行っても良い。具体的には、例えば英語などの言語では、単語と単語の間をスペース文字によって区切っている。このことから、そのスペース文字に着目して表示内容を更新するようにしても良い。それは、例えば図１８に示すステップ１７０７〜１７１０を、図１９に示すフローチャートに置き換えることで実現させることができる。
【００９９】
その図１９に示すフローチャートでは、ステップ１７０４で歌詞データと判定すると、次にステップ１９０１に移行する。そのステップ１９０１では、その歌詞データが文字データか否か判定する。その歌詞データが文字データであった場合、判定はＹＥＳとなってステップ１９０２に移行する。そうでない場合には、判定はＮＯとなり、ステップ１９０５に移行する。
【０１００】
ステップ１９０２では、変数ＬＹＲＩＣＳ  ＤＳＰの値が１か否か判定する。その変数には、歌詞表示モードが設定中の場合に１が代入されている。このことから、その場合には、判定はＹＥＳとなり、ステップ１９０３でＬＣＤＣ１０９に、変数ＲＰの値で指定される文字データを反転表示させる画像データを送出し、それをＶＲＡＭ１０８内の第２エリアの対応する文字データに上書きさせた後、図１７のステップ１７０３に戻る。そうでない場合には、判定はＮＯとなり、ステップ１９０４でその反転表示させる画像データを、ダミーＶＲＡＭエリアの対応する文字データに上書きした後、上記ステップ１７０３に戻る。
【０１０１】
一方、ステップ１９０５では、変数ＲＰの値で指定されるデータがスペース（ＳＰＡＣＥ）文字を表すデータ（スペースデータ）か否か判定する。そのデータがスペースデータであった場合、判定はＹＥＳとなり、ステップ１９０６で対象とするエリア（ＶＲＡＭ１０８の第２エリア、或いはＲＡＭ１０３のダミーＶＲＡＭエリア）内において対応する行の先頭からそのスペースデータで区切られる文字データ（文字列）をクリアし、更にステップ１９０７でクリアした文字データ（文字列）分だけ前につめる（スクロール）した後、上記ステップ１７０３に戻る。そうでない場合には、判定はＮＯとなり、図１７に示すステップ１７１１に移行する。
【０１０２】
上述したように再生処理を変更しても、表示内容は一緒に表示すべき文字列単位で更新されるため、意味不明な単語、或いは意味が異なる単語などを表示することは確実に回避される。また、現在、再生中の箇所に対応する部分は、常に先頭に表示されるため、その部分の特定がより容易に行えるようになる。
【０１０３】
その英語などの言語では、文字列の文頭は大文字で表現されることが多い。このことから、そのような言語では、先頭文字が大文字か否かを識別して、その先頭文字が大文字であると識別した場合に、文字列の消去、或いはスクロールなどを行う形で表示内容を更新するようにしても良い。それ以外には、文末は通常、ピリオド文字が使用されるので、そのピリオド文字を認識して表示内容の更新を行っても良い。それ以外の文字や記号に着目しても良く、それらを組み合わせて表示内容を更新しても良い。このように、様々な変形を行うことができる。
【０１０４】
本実施の形態では、ＶＲＡＭ１０８の第２エリアの内容更新は、ダミーＶＲＡＭエリアの内容更新とは別のルールで行っているが、そのルールは同じとしても良い。また、そのルールを、ユーザが任意に設定できるようにしても良い。或いは、演奏データ中から全て、或いは必要な歌詞データをＲＡＭ１０３に読み出しておき、パート選択モードから歌詞表示モードに切り換わると、その読み出して置いた歌詞データから、予め定めた状態で歌詞を表示するためのデータを抽出してＬＣＤＣ１０９に送出し、ＶＲＡＭ１０８の第２エリアに格納させるようにしても良い。そのようにしても、ユーザには、歌詞が表示されていない状況から、内容が把握しやすく、且つ再生中の箇所の特定を容易に行える状態で歌詞を表示することができる。
【０１０５】
上記したような動作を実現させるプログラムについては、ＣＤ−ＲＯＭ、フロッピーディスク、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザはプログラムを取得してコンピュータ等のデータ処理装置にロードすることにより、その装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【０１０６】
【発明の効果】
以上、説明したように本発明は、演奏データを処理して自動再生する場合に、その演奏データ中に挿入された歌詞データを抽出し、演奏データを再生中に、表示装置に歌詞データを表示させていない状況から該歌詞データを表示させるとき、その抽出した歌詞データを表示装置に所定の状態で表示させる。このため、ユーザにとって内容の把握や再生場所に対応する箇所の特定などを行い易い形で歌詞を表示させることができる。
【図面の簡単な説明】
【図１】本実施の形態による自動再生装置の回路構成図である。
【図２】液晶表示器の表示内容、及びその周辺に配置されたスイッチを示す図である。
【図３】ＬＹＲＩＣＳスイッチが操作された場合の表示例を示す図である。
【図４】全体処理のフローチャートである。
【図５】初期画面表示処理のフローチャートである。
【図６】スイッチ処理のフローチャートである。
【図７】ＬＩＳＴ  ＵＰスイッチ処理のフローチャートである。
【図８】ＬＩＳＴ  ＤＯＷＮスイッチ処理のフローチャートである。
【図９】ＬＹＲＩＣＳスイッチ処理のフローチャートである。
【図１０】ＰＬＡＹスイッチ処理のフローチャートである。
【図１１】ＰＬＡＹスイッチ処理のフローチャートである（続き）。
【図１２】タイマインタラプト処理のフローチャートである。
【図１３】ＳＴＯＰスイッチ処理のフローチャートである。
【図１４】ＰＡＲＴ  ＯＮ／ＯＦＦスイッチ処理のフローチャートである。
【図１５】先読み処理のフローチャートである。
【図１６】先読み処理のフローチャートである（続き）。
【図１７】再生処理のフローチャートである。
【図１８】再生処理のフローチャートである（続き）。
【図１９】他の実施の形態における再生処理のフローチャートである（変更部分の抜粋）。
【符号の説明】
１０１    ＣＰＵ
１０２    ＲＯＭ
１０３    ＲＡＭ
１０４    ＤＭＡＣ
１０５    フロッピーディスク装置（ＦＤＤ）
１０６    フロッピーディスク装置コントローラ（ＦＤＤＣ）
１０７    液晶表示器（ＬＣＤ）
１０７ａ、１０７ｂ  枠画面
１０８    ＶＲＡＭ
１０９    液晶表示器コントローラ（ＬＣＤＣ）
１１０    操作子群
１１１    ウェーブジェネレータ
１１２    アンプ
１１３    スピーカ
１２０    フロッピーディスク（ＦＤ）
２０１    ＰＬＡＹスイッチ
２０２    ＳＴＯＰスイッチ
２０３    ＬＹＲＩＣＳスイッチ
２０４    ＰＡＲＴ  ＯＮ／ＯＦＦスイッチ
【図１】
0003963075.tif 000002
【図２】
0003963075.tif 000003
【図３】
0003963075.tif 000004
【図４】
0003963075.tif 000005
【図５】
0003963075.tif 000006
【図６】
0003963075.tif 000007
【図７】
0003963075.tif 000008
【図８】
0003963075.tif 000009
【図９】
0003963075.tif 000010
【図１０】
0003963075.tif 000011
【図１１】
0003963075.tif 000012
【図１２】
0003963075.tif 000013
【図１３】
0003963075.tif 000014
【図１４】
0003963075.tif 000015
【図１５】
0003963075.tif 000016
【図１６】
0003963075.tif 000017
【図１７】
0003963075.tif 000018
【図１８】
0003963075.tif 000019
【図１９】
0003963075.tif 000020