JP2005230532A - 画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 - Google Patents
画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 Download PDFInfo
- Publication number
- JP2005230532A JP2005230532A JP2005011316A JP2005011316A JP2005230532A JP 2005230532 A JP2005230532 A JP 2005230532A JP 2005011316 A JP2005011316 A JP 2005011316A JP 2005011316 A JP2005011316 A JP 2005011316A JP 2005230532 A JP2005230532 A JP 2005230532A
- Authority
- JP
- Japan
- Prior art keywords
- sliding
- operation member
- sliding operation
- cpu
- image signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 操作者による摺動操作に応じたパルス信号に基づいて画像信号を生成する画像信号生成装置を提供する。
【解決手段】 摺動操作部材2には光反射部45及び光吸収部44からなる反射パターン43が形成される。被摺動部33の内部には発光ダイオード36及びフォトトランジスタ34,35が設けられる。摺動操作部材2を被摺動部33に接触させ摺り動かすと、発光ダイオード36からの赤外光が反射パターン43で反射され、これを受光したフォトトランジスタ34,35からパルス信号A,Bが出力される。画像信号生成装置としての自動演奏装置の本体1に内蔵された高速プロセッサ200は、パルス信号A,Bから、摺動速さ、摺動方向、及び摺動時間を求め、これらに応じて、スクリーン82に表示されるキャラクタ73の動きを制御する。
【選択図】 図1
【解決手段】 摺動操作部材2には光反射部45及び光吸収部44からなる反射パターン43が形成される。被摺動部33の内部には発光ダイオード36及びフォトトランジスタ34,35が設けられる。摺動操作部材2を被摺動部33に接触させ摺り動かすと、発光ダイオード36からの赤外光が反射パターン43で反射され、これを受光したフォトトランジスタ34,35からパルス信号A,Bが出力される。画像信号生成装置としての自動演奏装置の本体1に内蔵された高速プロセッサ200は、パルス信号A,Bから、摺動速さ、摺動方向、及び摺動時間を求め、これらに応じて、スクリーン82に表示されるキャラクタ73の動きを制御する。
【選択図】 図1
Description
本発明は、操作者による摺動操作に応じたパルス信号に基づいて画像信号を生成する画像信号生成装置及びその関連技術に関する。
特許文献1には、電子擦弦楽器が開示されている。この電子擦弦楽器は、反射型フォトインタラプタを有する本体、及び、光ビームを反射する薄板の反射部材で構成される弓部、からなる。さらに、この弓部の片側表面には、細長いスリット状の多数の黒色のパターンが形成される。この黒色のパターンは、光吸収領域である。従って、弓部による擦弦操作の際には、弓部の黒色のパターン及びそれ以外の部分に、本体のフォトインタラプタからの光ビームが当たって、吸収又は反射することにより、そのフォトインタラプタから、擦弦速度に応じた周期のパルスが、本体内部のマイクロコンピュータに入力される。このマイクロコンピュータは、入力されたパルスの周期に応じて、音量制御を行う。このように、この電子擦弦楽器は、楽器であるため、当然音楽を奏でる装置である。
本発明は、操作者による摺動操作に応じたパルス信号に基づいて画像信号を生成する画像信号生成装置及びその関連技術を提供することを目的とする。
本発明の第1の観点による画像信号生成装置は、被摺動体と、前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、前記摺動操作部材の摺動速さに応じた画像信号を生成するプロセッサと、を備え、前記被摺動体は、前記摺動操作部材の前記摺動速さを計測する計測手段を含む。
この構成によれば、操作者は、摺動操作部材の摺動速さを調節するだけで、表示される画像に変化を与えることができる。
例えば、前記プロセッサは、前記摺動操作部材の前記摺動速さに応じて、ディスプレイ上のキャラクタ画像の移動速度を制御する。
本発明の第2の観点による画像信号生成装置は、被摺動体と、前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、摺動方向を変えることなく行われた前記摺動操作部材の摺動時間に応じた画像信号を生成するプロセッサと、を備え、前記被摺動体は、前記摺動操作部材の前記摺動時間を計測する計測手段を含む。
この構成によれば、操作者は、摺動操作部材の摺動時間を調節するだけで、表示される画像に変化を与えることができる。
例えば、前記プロセッサは、前記摺動操作部材の前記摺動時間に応じて、ディスプレイ上のキャラクタ画像の移動距離を制御する。
本発明の第3の観点による画像信号生成装置は、被摺動体と、前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、前記摺動操作部材の摺動方向に応じた画像信号を生成するプロセッサと、を備え、前記被摺動体は、前記摺動操作部材の前記摺動方向を計測する計測手段を含む。
この構成によれば、操作者は、摺動操作部材の摺動方向を変化させるだけで、表示される画像に変化を与えることができる。
例えば、前記プロセッサは、前記摺動操作部材の前記摺動方向に応じて、ディスプレイ上のキャラクタ画像の移動方向を制御する。
上記第1及び第2の観点による画像信号生成装置において、前記被摺動体の前記計測手段は、発光素子及び受光素子を有する光センサを含み、前記摺動操作部材には、その長手方向に、異なる光学特性を有する第1の受光領域及び第2の受光領域が交互に形成され、前記受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、電気信号に変換し、前記プロセッサは、前記受光素子が出力する前記電気信号に応じた前記画像信号を生成する。
この構成によれば、摺動操作部材の摺動速さ及び摺動時間を、簡易に計測できる。
上記第1から第3の観点による画像信号生成装置において、前記被摺動体の前記計測手段は、発光素子、第1の受光素子、及び、第2の受光素子、を有する光センサを含み、前記摺動操作部材には、その長手方向に、異なる光学特性を有する第1の受光領域及び第2の受光領域が交互に形成され、前記第1の受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、第1の電気信号に変換し、前記第2の受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、第2の電気信号に変換し、前記第1の受光素子と前記第2の受光素子とは、前記摺動操作部材の摺動方向に、所定間隔をおいて配置され、かつ、その所定間隔は、前記第1の電気信号と前記第2の電気信号との間に一定の位相差が生じる間隔であり、前記プロセッサは、前記第1の電気信号及び前記第2の電気信号に応じた前記画像信号を生成する。
この構成によれば、摺動操作部材の摺動速さ、摺動時間、及び、摺動方向、を簡易に計測できる。
上記第1から第3の観点による画像信号生成装置において、前記プロセッサは、記憶媒体に格納されたプログラムを実行して、その記憶媒体に格納された画像情報に基づき、前記画像信号を生成する。
この構成によれば、ユーザは、記憶媒体を交換するだけで、様々なアプリケーションを利用できる。
上記第1から第3の観点による画像信号生成装置において、前記プロセッサは、前記摺動操作部材の摺動操作に基づくトリガに従って、音声信号を生成する。
この構成によれば、操作者は、摺動操作部材の摺動操作により、画像だけでなく、音声の発音をも制御できる。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、各図面において、同一の部分については、同一の参照符号を付している。
図1は、本発明の実施の形態における画像信号生成装置としての自動演奏装置の全体構成を示す図である。図2(a)は、図1の自動演奏装置本体1の平面図である。図2(b)は、図1の自動演奏装置本体1の側面図である。図3は、図1の自動演奏装置本体1の底面図である。
図1に示すように、この自動演奏装置は、自動演奏装置本体1、及び、摺動操作部材2、を含む。本実施の形態では、自動演奏装置本体1の形状の1例として、バイオリンを模した形状を挙げている。従って、この例では、摺動操作部材2は、言わば弓に相当する。
自動演奏装置本体1は、胴部10を含み、この胴部10の表面には、ネック部20、被摺動部33、選択キー12a,12b、キャンセルキー12c、決定キー12d、及び、表示部15、が設けられる。ここで、自動演奏装置本体1は、被摺動部33を含むため、被摺動体と呼ぶこともある。ネック部20の表面には、発音する楽音にビブラートを付加するためのビブラートスイッチ12eが設けられる。
図2(b)に示すように、この自動演奏装置本体1の側面には、ボリュームダイヤル16、ヘッドホン端子17、AV端子18、電源端子19、及び、コネクタ22、が設けられる。
図3に示すように、この自動演奏装置本体1の底面には、ハードウエアをリセットするリセットスイッチ25、電源スイッチ24、スピーカ部11、電池ボックス26、及び、カートリッジ挿入口27、が設けられる。このカートリッジ挿入口27の底部には、カートリッジソケット23が設けられる。電源スイッチ24を一方端側にスライドさせると電源オフ、中央にスライドさせるとテレビモード、他方端側にスライドさせるとスピーカモード、になる。テレビモードとは、テレビジョンモニタ80のスピーカから音声が出力されるモードであり、スピーカモードとは、自動演奏装置本体1のスピーカ部11から音声が出力されるモードである。スピーカ部11からの音量は、ボリュームダイヤル16により調節する。
カートリッジソケット23には、ROM(read only memory)を内蔵した図1のメモリカートリッジ29が装着される。また、EEPROM(electrically erasable and programable read only memory)を内蔵したメモリカートリッジ29を装着して使用することもできる。なお、メモリカートリッジ29に内蔵されるメモリは、これらに限定されるものではない。
図1に戻って、テレビジョンモニタ80には、その前面にスクリーン82が設けられ、スクリーン82の下部にAV端子81が設けられる。自動演奏装置本体1とテレビジョンモニタ80とは、AVケーブル60により接続される。具体的には、自動演奏装置本体1のAV端子18とテレビジョンモニタ80のAV端子81とが、AVケーブル60により接続される。また、自動演奏装置本体1には、ACアダプタ50により、直流電源電圧が与えられる。ただし、ACアダプタ50に代えて、電池ボックス26にセットされた電池(図示せず)により、直流電源電圧を与えることもできる。また、自動演奏装置本体1のヘッドホン端子17に、ヘッドホン(図示せず)を接続して使用することもできる。ヘッドホンからの音量は、ボリュームダイヤル16により調節する。
次に、図2(a)(b)を用いて、被摺動部33について説明する。後で詳述するが、被摺動部33は、断面視において、円弧状に形成されている。この被摺動部33の両端の頂部には、それぞれガイド31及びガイド32が突出して形成される。対向するガイド31,32の側縁は、摺動操作部材2が接する部分であって、平面視において、曲面となっている。これは、主に、摺動操作部材2が接触しても、滑らかに摺動操作部材2を動かすことができるようにするため、及び、摺動操作部材2の接触を原因としたガイド31,32の劣化を防止するため、である。操作者は、被摺動部33のガイド31とガイド32との間の曲面に摺動操作部材2を接触させた状態で摺り動かし、自動演奏装置による自動演奏、あるいは、スクリーン82上のキャラクタの動きを制御する。
図4(a)は、図1の摺動操作部材2の側面図である。図4(b)は、図1の摺動操作部材2の底面図である。図4(b)に示すように、摺動操作部材2の底面41には、反射パターン43が形成される。この反射パターン43は、交互に形成される光反射部45と光吸収部44とからなる。光反射部45は受けた光を反射し、光吸収部44は、受けた光を吸収する。操作者は、この摺動操作部材2の底面41を、被摺動部33に接触した状態で摺り動かす。
図5(a)は、図2(a)に示した被摺動部33の拡大図、図5(b)は、図5(a)に示した光センサユニット90の平面図、である。図5(a)に示すように、被摺動部33の内部であって、摺動操作部材2が通過する位置には、光センサユニット90が配置される。この光センサユニット90は、発光ダイオード36、光ファイバ91,92、及び、フォトトランジスタ34,35(図5には現れていない。)、を含む。光ファイバ91及び光ファイバ92は、摺動操作部材2の摺動方向に並んで配置されている。また、発光ダイオード36は、光ファイバ91,92と対向する位置に設けられる。なお、図5(b)に示すように、光センサユニット90の上面には、つまり、被摺動部33の内面に接触する部分には、周縁に沿って、密着部材93が取り付けられている。この密着部材93は、光センサユニット90と被摺動部33との密着性をよくして、光センサユニット90の位置ずれを防止している。
図6は、図5(a)のA−A断面図である。図7は、図5(a)のB−B断面図である。図6に示すように、光センサユニット90は、被摺動部33の内面に密着するように取り付けられる。光ファイバ91,92の一方端は、光センサユニット90の上面(被摺動部33と対向する側)から露出している。光ファイバ91と光ファイバ92とは、摺動方向に、所定間隔をおいて配置され、その所定間隔は、フォトトランジスタ34からのパルス信号とフォトトランジスタ35からのパルス信号との間に、一定の位相差が生じる間隔である。この点は、後で詳述する。
一方、光ファイバ91,92の他方端は、それぞれ、フォトトランジスタ34,35の頂部付近に固定される。このようにして、発光ダイオード36が発光し、摺動操作部材2により反射された光は、光ファイバ91,92により、フォトトランジスタ34,35まで導かれる。光センサユニット90及びフォトトランジスタ34,35は、基板94に取り付けられる。さらに、フォトトランジスタ34,35は、それぞれ、光センサユニット90の下部に形成された2つの穴に挿入されている。これにより、フォトトランジスタ34,35には、光ファイバ91,92からの光のみが入射し、それ以外の光の入射を防止できる。
また、図7に示すように、発光ダイオード36は、光センサユニット90の上部に形成された傾斜面に取り付けられる。これにより、矢印#に示すように、発光ダイオード36が発光し、摺動操作部材2が反射した光の光ファイバ91,92への入射光量を多くすることができる。なお、発光ダイオード36は、赤外光を発生する。そして、フォトトランジスタ34,35が、発光ダイオード36が発生する赤外光だけを極力検知できるように、被摺動部33は、赤外光だけを通過させる赤外フィルタとしての機能を有している。
次に、図1の自動演奏装置による自動演奏について説明する。操作者は、自動演奏装置本体1とテレビジョンモニタ80とを、AVケーブル60により接続する。そして、図3の電源スイッチ24をオン(テレビモード)にする。すると、テレビジョンモニタ80のスクリーン82に、モード選択画面(図示せず)が表示されるので、操作者は、選択キー12a,12bにより自動演奏モードを選択し、決定キー12dを押下する。すると、楽曲選択画面(図示せず)が表示されるので、操作者は、選択キー12a,12bにより曲を選択し、決定キー12dを押下する。なお、表示部15には、選択した曲の番号が表示される。操作者が曲を選択し確定すると、演奏を開始できる。
図8は、図1のテレビジョンモニタ80のスクリーン82に表示される操作ガイド画面の例示図である。操作者が、楽曲を選択して確定すると、図8に示すように、スクリーン82には、操作ガイド画面が表示される。この操作ガイド画面の上枠の近傍には、操作者が選択した曲名が表示される。この例では、曲名として、曲Aが表示されている。曲名の下段には、インジケータ103が表示される。このインジケータ103は、BGM(background music)の進行状況を表す。すなわち、インジケータ103を構成する帯状の長方形の長さが、曲A全体の時間的な長さを表す。そして、BGMの進行に従って、インジケータ103の色を特定の色に変化させていくことで、現在発音されているBGMの時間的な位置を表す。このため、BGMの発音が進むに従って、インジケータ103において、特定の色に変化した部分の面積が増加し、曲Aの最後には、インジケータ103の全てが特定の色に変化する。なお、図8では、特定の色を斜線で表している。
さらに、インジケータ103に重ねて、操作者の現在の操作位置を表す縦棒104が表示される。従って、操作者は、適切な操作位置に対して、どの程度ずれて操作しているかを把握できる。つまり、インジケータ103において、特定の色に変化した部分の先端(右端)が、現在の適切な操作位置であるため、この先端(右端)の位置と、操作者の現在の操作位置を表す縦棒104の位置と、を比較すれば、現在自分がどの程度ずれて操作しているかを把握できる。ここで言う操作位置とは、楽曲全体の時間を表す時間軸上の位置のことである。
また、インジケータ103の下段には、操作ガイドとして、音符マークn−0、…、n−6、…、が表示される。ここで、音符マークn−0、…、n−6、…、を包括的に表現する場合は、音符マークnと表記する。
この音符マークnは、スクリーン82の右端に出現し、BGMのテンポに従って、左方向に移動し、スクリーンの左端に到達して消滅する。この音符マークnが、操作指示枠101に入った時あるいは操作指示マーク102の真上に来たときに、操作者が摺動操作部材2を操作してトリガを発生させると、自動演奏装置は、BGMの進行に合った楽音を発生させる。
また、この音符マークnの間隔は、選択した曲Aの楽譜での音符の間隔を表している。従って、操作者は、この間隔を見ることで、摺動操作部材2の操作のタイミングを直感的に把握できる。ここで、摺動操作部材2の操作のタイミングとは、トリガを発生させるタイミングのことである。
さらに、音符マークnに付随した発音長指示バー100は、発音する長さを表している。従って、操作者は、この発音長指示バー100を見ることで、ある音符に対応する楽音を発音してから、その発音を持続させる期間を直感的に把握できる。なお、音符マークn−1に付随する発音長指示バー100は、次の音符マークn−2まで延びていない。これは、この発音長指示バー100の終端(右端)に休符があることを示している。
さらに、操作者が摺動操作部材2を操作して、自動演奏装置が楽音を発生させると、発生させた楽音に対応する音符マークn及びその音符マークnに付随する発音長指示バー100の色が変化する。これにより、操作者は、自動演奏装置がトリガに応じて現在どの音符マークnに対応した楽音を発生しているかを直感的に知ることができる。
トリガについて簡単に説明する。上記のように、操作者は、摺動操作部材2を操作してトリガを発生させる。すると、トリガが発生する度に、楽曲の一音一音が発音される。トリガは、摺動操作部材2の自動演奏装置本体1に対する相対的な速さ(本明細書において、「摺動速さ」と呼ぶ。)が、予め定められた閾値より大きくなり、かつ、摺動操作部材2の摺動方向が変化した場合に発生する。また、摺動操作部材40の摺動速さに応じて、楽音の音量が制御される。
次に、図1の自動演奏装置による、摺動操作部材2の摺動速さに基づくゲーム処理について説明する。本実施の形態では、摺動操作部材2の摺動速さに基づくゲームとして、ランニングゲームを例に挙げる。操作者が、モード選択画面(図示せず)において、ゲームモードを選択すると、ゲーム選択画面が表示される。操作者は、選択キー12a,12bによりランニングゲームを選択し、決定キー12dを押下する。これにより、ランニングゲームが開始される。
図9は、図1の自動演奏装置によるランニングゲーム画面の例示図である。図9に示すように、スクリーン82に表示されるランニングゲーム画面は、キャラクタ73、背景74、タイム表示部72、現在位置指示オブジェクト71、マスク88、及び、トータル距離指示バー70、を含む。操作者による摺動操作部材2の摺動速さに応じて、キャラクタ73の移動速さ(背景74に対する相対的な速さ)が異なる。つまり、摺動速さが速いほど、キャラクタ73は、速く進み(背景74に対する相対的な速さが速くなり)、かつ、アニメーション速度も速くなり、摺動速さが遅いほど、キャラクタ73は、遅く進み(背景74に対する相対的な速さが遅くなり)、かつ、アニメーション速度も遅くなる。
このような画像の変化に加えて、摺動操作部材2によるトリガが発生するたびに、楽曲を構成する楽音が一音一音発音される。従って、操作者による摺動操作部材2の摺動操作が速いほど、楽音が速いテンポで発音され、摺動操作が遅いほど、楽音が遅いテンポで発音される。そして、楽曲を構成する全ての音符に対応する楽音が発音されたらゲーム終了となる。つまり、速いテンポでトリガを発生させると、早くゲームが終了し、タイムも短くなり、遅いテンポでトリガを発生させると、遅くゲームが終了し、タイムも長くなる。
トータル距離指示バー70は、キャラクタ73が走ることになるトータル距離を示す。現在位置指示オブジェクト71は、キャラクタ73の現在位置を、トータル距離指示バー70上に示す。具体的には、トータル距離指示バー70は、楽曲を構成する音符の数に比例した長さとなっており、現在位置指示オブジェクト71は、一音符に対する楽音が発音されるたびに、1つ進む。また、タイム表示部72には、キャラクタ73のスタートから現在までのタイムが表示される。
次に、図1の自動演奏装置による、摺動操作部材2の摺動時間に基づくゲーム処理について説明する。本実施の形態では、摺動操作部材2の摺動時間に基づくゲームとして、飛行ゲームを例に挙げる。操作者が、ゲーム選択画面において、選択キー12a,12bにより飛行ゲームを選択し、決定キー12dを押下する。これにより、飛行ゲームが開始される。
図10は、図1の自動演奏装置による飛行ゲーム開始画面の例示図である。図11は、図1の自動演奏装置による飛行ゲーム開始後の画面の例示図である。図10に示すように、スクリーン82に表示される飛行ゲーム開始画面は、キャラクタ73、背景74、入力通知バー75、マスク88、及び、風船オブジェクト76、を含む。ゲーム開始に伴って、キャラクタ73が走り出し、所定位置に到達したらジャンプして、風船オブジェクト76につかまる。これと同時に、操作者は、摺動操作部材2の摺動を開始する。摺動開始に伴い、入力通知バー75の色が変化する(図11では斜線で示している。)。
そして、操作者が、摺動方向を変えることなく、継続的な摺動を行っている限り、図11に示すように、風船オブジェクト76につかまったキャラクタ73は、飛行を続ける。そして、摺動操作部材2の摺動速さが一定値より小さくなったら、入力がなくなったとして(摺動終了として)、入力通知バー75の色が元の色に戻り、かつ、風船オブジェクト76につかまったキャラクタ73が下降し始める。キャラクタ73が着地したら、飛行距離が表示される。摺動方向を変えることなく行われた摺動時間が長いほど飛行距離は長くなり、短いほど飛行距離は短くなる。
次に、図1の自動演奏装置による、摺動操作部材2の摺動方向に基づくゲーム処理について説明する。本実施の形態では、摺動操作部材2の摺動方向に基づくゲームとして、キャッチゲームを例に挙げる。操作者が、ゲーム選択画面において、選択キー12a,12bによりキャッチゲームを選択し、決定キー12dを押下する。これにより、キャッチゲームが開始される。
図12は、図1の自動演奏装置によるキャッチゲーム画面の例示図である。図12に示すように、スクリーン82に表示されるキャッチゲーム画面は、キャラクタ73、背景74、落下オブジェクト79、窓オブジェクト77、及び、ライフオブジェクト78、を含む。ゲーム開始に伴って、窓オブジェクト77が開いて、そこから、落下オブジェクト79が次々に落下してくる。操作者が、摺動操作部材2を、図2(a)の(+)方向に摺動させると、キャラクタ73が、図12の(+)方向に移動し、図2(a)の(−)方向に摺動させると、キャラクタ73が、図12の(−)方向に移動する。操作者は、摺動操作部材2により、キャラクタ73の移動方向を操作して、落下オブジェクト79が、地面に衝突する前に、落下オブジェクト79をキャッチする。落下オブジェクト79が、地面に衝突したら、ライフオブジェクト78が1つ消滅する。全てのライフオブジェクトが消滅したら、ゲームオーバーとなる。
次に、自動演奏装置本体1の電気的な構成について説明する。図13は、図1の自動演奏装置本体1の電気的な構成を示す図である。図13に示すように、自動演奏装置本体1は、検知部30、キースイッチ群120、AV端子18、高速プロセッサ200、外部ROM(read only memory)300、及び、外部バス400、を含む。キースイッチ群120は、決定キー12d、キャンセルキー12c、選択キー12a,12b、及び、ビブラートスイッチ12e、を含む。検知部30は、光センサユニット90を含む。
高速プロセッサ200には、外部バス400が接続される。さらに、外部バス400には、外部ROM300が接続される。従って、高速プロセッサ200は、外部バス400を介して、外部ROM300にアクセスすることができるので、外部ROM300に格納されたプログラムをリードして実行でき、また、外部ROM300に格納されたデータをリードして処理することができる。
また、高速プロセッサ200は、外部バス400を介して、自動演奏装置本体1のカートリッジソケット23に装着されたメモリカートリッジ29に内蔵される外部ROM91にアクセスできる。従って、高速プロセッサ200は、外部バス400を介して、外部ROM91にアクセスすることができるので、外部ROM91に格納されたプログラムをリードして実行でき、また、外部ROM91に格納されたデータをリードして処理することができる。
さらに、高速プロセッサ200は、検知部30のフォトトランジスタ34,35(図6参照)からのパルス信号A,Bを受けて、摺動操作部材2の摺動速さ、摺動方向及び摺動時間を求める。また、高速プロセッサ200は、キースイッチ群120の各キー12a〜12eからのオン/オフ信号を受けて、各キー12a〜12eにより指示された処理を実行する。
図14は、図13の高速プロセッサ200のブロック図である。図14に示すように、この高速プロセッサ200は、中央演算処理装置(CPU:central processing unit)201、グラフィックプロセッサ202、サウンドプロセッサ203、DMA(direct memory access)コントローラ204、第1バス調停回路205、第2バス調停回路206、内部メモリ207、A/Dコンバータ(ADC:analog to digital converter)208、入出力制御回路209、タイマ回路210、DRAM(dynamic random access memory)リフレッシュ制御回路211、外部メモリインタフェース回路212、クロックドライバ213、PLL(phase−locked loop)回路214、低電圧検出回路215、第1バス218、及び、第2バス219、を含む。
CPU201は、メモリ(内部メモリ207、外部ROM300、又は、外部ROM91)に格納されたプログラムに従い、各種演算やシステム全体の制御を行う。CPU201は、第1バス218及び第2バス219のバスマスタであり、それぞれのバスに接続された資源にアクセスが可能である。
グラフィックプロセッサ202は、第1バス218及び第2バス219のバスマスタであり、メモリ(内部メモリ207、外部ROM300、又は、外部ROM91)に格納されたデータを基に、画像信号VDを生成して、AV端子18へ出力する。グラフィックプロセッサ202は、第1バス218を通じて、CPU201により制御される。また、グラフィックプロセッサ202は、CPU201に対して、割込み要求信号220を発生する機能を有する。
サウンドプロセッサ203は、第1バス218及び第2バス219のバスマスタであり、メモリ(内部メモリ207、外部ROM300、又は、外部ROM91)に格納されたデータを基に、音声信号AL,ARを生成して、AV端子18へ出力する。サウンドプロセッサ203は、第1バス218を通じて、CPU201により制御される。また、サウンドプロセッサ203は、CPU201に対して、割込み要求信号220を発生する機能を有する。
DMAコントローラ204は、外部ROM300又は外部ROM91から、内部メモリ207へのデータ転送を司る。また、DMAコントローラ204は、データ転送の完了を通知するために、CPU201に対する割込み要求信号220を発生する機能を有する。DMAコントローラ204は、第1バス218及び第2バス219のバスマスタである。DMAコントローラ204は、第1バス218を通じてCPU201により制御される。
内部メモリ207は、マスクROM、SRAM(static random access memory)、及び、DRAMのうち、必要なものを備える。バッテリによるSRAMのデータ保持が必要とされる場合、バッテリ217が必要となる。DRAMが搭載される場合、定期的にリフレッシュと呼ばれる記憶内容保持のための動作が必要とされる。
第1バス調停回路205は、第1バス218の各バスマスタからの第1バス使用要求信号を受け付け、調停を行い、各バスマスタへの第1バス使用許可信号を発行する。各バスマスタは、第1バス使用許可信号を受領することによって第1バス218に対するアクセスが許可される。ここで、第1バス使用要求信号及び第1バス使用許可信号は、図14では、第1バス調停信号222として示されている。
第2バス調停回路206は、第2バス219の各バスマスタからの第2バス使用要求信号を受け付け、調停を行い、各バスマスタへの第2バス使用許可信号を発行する。各バスマスタは、第2バス使用許可信号を受領することによって第2バス219に対するアクセスが許可される。ここで、第2バス使用要求信号及び第2バス使用許可信号は、図14では、第2バス調停信号223として示されている。
入出力制御回路209は、外部入出力装置や外部の半導体素子との通信等を入出力信号を介して行う。入出力信号は、第1バス218を介して、CPU201からリード/ライトされる。また、入出力制御回路209は、CPU201に対して、割込み要求信号220を発生する機能を有する。
この入出力制御回路209へ、検知部30からのパルス信号A,B、及び、キースイッチ群120の各キー12a〜12eからのオン/オフ信号、が入力される。
タイマ回路210は、設定された時間間隔に基づき、CPU201に対する割込み要求信号220を発生する機能を有する。時間間隔等の設定は、第1バス218を介してCPU201によって行われる。
ADC208は、アナログ入力信号をデジタル信号に変換する。このデジタル信号は、第1バス218を介してCPU201によってリードされる。また、ADC208は、CPU201に対して、割込み要求信号220を発生する機能を有する。
PLL回路214は、水晶振動子216より得られる正弦波信号を逓倍した高周波クロック信号を生成する。
クロックドライバ213は、PLL回路214より受け取った高周波クロック信号を、各ブロックへクロック信号225を供給するのに十分な信号強度へ増幅する。
低電圧検出回路215は、電源電圧Vccを監視し、電源電圧Vccが一定電圧以下のときに、PLL回路214のリセット信号226、その他のシステム全体のリセット信号227を発行する。また、内部メモリ207がSRAMで構成されており、かつ、SRAMのバッテリ217によるデータ保持が要求される場合、電源電圧Vccが一定電圧以下のときに、バッテリバックアップ制御信号224を発行する機能を有する。
外部メモリインタフェース回路212は、第2バス219を外部バス400に接続するための機能、及び、第2バス219のサイクル終了信号228を発行することにより、第2バスのバスサイクル長を制御する機能、を有する。
DRAMリフレッシュ制御回路211は、一定期間毎に第1バス218の使用権を無条件に獲得し、DRAMのリフレッシュ動作を行う。なお、DRAMリフレッシュ制御回路211は、内部メモリ207がDRAMを含む場合に設けられる。
次に、摺動操作部材2の摺動速さ、及び、摺動操作部材2の摺動方向、を求める方法を詳細に説明する。
図15は、図5(a)の光センサユニット90の光ファイバ91,92の配置と、摺動操作部材2の反射パターン43と、の関係を示す図である。図15に示すように、摺動操作部材2の反射パターン43において、光反射部45の幅及び光吸収部44の幅の合計距離をLとする。この場合、光ファイバ91の露出端と光ファイバ92の露出端とを、L/4だけ離して配置する。ここで、露出端とは、光ファイバ91,92の先端であって、被摺動部33の内面側に露出している先端である。
フォトトランジスタ34,35は、発光ダイオード36により発光され、反射パターン43で反射された赤外光を、光ファイバ91,92を介して受光する。反射パターン43は、光反射部45及び光吸収部44を交互に配置して形成されるため、摺動操作部材2が操作されると、フォトトランジスタ34,35には、間欠的に赤外光が入射することになる。従って、摺動操作部材2が操作されると、フォトトランジスタ34,35は、摺動操作部材2の摺動速さに応じた周波数のパルス信号A,Bを出力する。つまり、摺動操作部材2の摺動速さが大きいほど、フォトトランジスタ34,35が出力するパルス信号A,Bの周波数は高くなり、一方、摺動操作部材2の摺動速さが小さいほど、フォトトランジスタ34,35が出力するパルス信号A,Bの周波数は低くなる。
フォトトランジスタ34に赤外光を導く光ファイバ91とフォトトランジスタ35に赤外光を導く光ファイバ92とは、L/4だけ離して配置されているため、フォトトランジスタ34が出力するパルス信号Aとフォトトランジスタ35が出力するパルス信号Bとの位相差は、摺動操作部材2の摺動方向によって、(90度)あるいは(−90度)になる。この点を詳細に説明する。
図16(a)は、図2(a)の(+)方向に摺動操作部材2を摺動させたときの、フォトトランジスタ34,35が出力するパルスA,B信号を示す図である。図16(b)は、図2(a)の(−)方向に摺動操作部材2を摺動させたときの、フォトトランジスタ34,35が出力するパルス信号A,Bを示す図である。なお、図16(a)(b)においては、説明の便宜のため、摺動操作部材2が一定の速さで操作された場合のパルス信号を示している。
図16(a)(b)に示すように、フォトトランジスタ34が出力するパルス信号Aとフォトトランジスタ35が出力するパルス信号Bとの位相差は、それぞれ(90度)及び(−90度)になっている。そこで、摺動操作部材2が(+)方向に操作された場合と(−)方向に操作された場合とでは、パルス信号A,Bの状態遷移の方向が異なる。この点を詳しく説明する。
図17は、フォトトランジスタ34,35が出力するパルス信号A,Bの状態遷移を示す図である。摺動操作部材2が図2(a)の(+)方向に操作される場合は(図16(a)に対応)、パルス信号A,Bの状態は、時計回りに遷移する((+)方向遷移と呼ぶ。)。一方、摺動操作部材2が図2(a)の(−)方向に操作される場合は(図16(b)に対応)、パルス信号A,Bの状態は、半時計回りに遷移する((−)方向遷移と呼ぶ。)。
このような状態遷移を検知することで、摺動操作部材2の摺動方向を求めることができる。つまり、パルス信号A,Bの状態遷移が、(+)方向遷移である場合は、摺動操作部材2が図2(a)の(+)方向に動いていることを意味し、パルス信号A,Bの状態遷移が、(−)方向遷移である場合は、摺動操作部材2が図2(a)の(−)方向に動いていることを意味する。この状態遷移の検出は、ハードウエアにより行うこともできるが、本実施の形態では、ソフトウエアにより行う例を挙げる。この点は、後述する。
図18は、自動演奏装置本体1に内蔵される検知部30の回路図である。図18に示すように、この検知部30は、発光ダイオード36、抵抗素子57、及び、検知回路252,255、を含む。検知回路252は、フォトトランジスタ34、抵抗素子52、電解コンデンサ55、アンプ254、及び、ヒステリシス回路253、を含む。検知回路255は、フォトトランジスタ35、電解コンデンサ55、アンプ254、及び、ヒステリシス回路253、を含む。アンプ254は、抵抗素子51,56、コンデンサ38、及び、インバータ53を含む。ヒステリシス回路253は、抵抗素子37,54およびインバータ250,251を含む。
抵抗素子57と発光ダイオード36とは、電源Vccと接地GNDとの間に直列に接続される。フォトトランジスタ34と抵抗素子52とは、電源Vccと接地GNDとの間に直列に接続される。フォトトランジスタ34及び抵抗素子52の接続点と、インバータ53の入力端と、の間には、抵抗素子56及び電解コンデンサ55が直列に接続される。インバータ53の入力端と出力端との間には、コンデンサ38及び抵抗素子51が並列に接続される。抵抗素子54の一方端は、インバータ53の出力端に接続され、他方端は、インバータ251の入力端に接続される。インバータ250の出力端は、インバータ251の入力端に接続され、インバータ251の入力端とインバータ250の出力端との間には、抵抗素子37が接続される。
アンプ254は、負帰還増幅回路であり、フォトトランジスタ34からの電気信号を増幅する。また、このアンプ254は、ローパスフィルタとしても機能し、高周波成分を除去する。ヒステリシス回路253は、正帰還回路であり、抵抗素子37と抵抗素子54との比で決まる不感帯をつくって、一定の電圧範囲で出力が反転しないようにしている。
一方、検知回路255は、フォトトランジスタ35、抵抗素子52、電解コンデンサ55、アンプ254、及び、ヒステリシス回路253、を含む。接続関係は、検知回路255も検知回路252と同様であるため、説明を省略する。また、検知回路255のアンプ254及びヒステリシス回路253も、検知回路252のものと同様の動作をするので説明を省略する。
さて、図19は、図13の外部ROM300に格納されるプログラム及びデータの概念図である。図19に示すように、外部ROM300には、プログラム301、画像データ304、及び、楽曲データ307が格納される。画像データ304は、オブジェクト画像データ305及び背景画像データ306を含む。楽曲データ307は、楽譜データ308及び音源データ309を含む。
外部ROM300に格納されたプログラム301及びデータ304,307を、メモリカートリッジ29のROM91に格納して、このメモリカートリッジ29を、ソケット23に装着することで、これらのプログラム301及びデータ304,307を利用するようにすることもできる。
図13の高速プロセッサ200は、外部ROM300あるいは外部ROM91に格納されたプログラム301をロードして実行し、画像データ304に応じた画像信号VDを生成するとともに、楽曲データ307に応じた音声信号AL,ARを生成する。
その結果、図8〜図12に示すように、高速プロセッサ200によって、スクリーン82には、背景74、及び、音符マークnやキャラクタ73等のオブジェクトが表示される。スクリーン82のサイズは、例えば、横256画素×縦224画素とする。また、オブジェクトは、単数又は複数のスプライトにより構成される。このスプライトは、矩形の画素集合である。例えば、スプライトは、(横8画素×縦8画素)や(横16画素×縦16画素)などからなる。なお、スプライトは、スクリーン82の任意の位置に配置することができる。
図20は、オブジェクトを構成するスプライトの説明図である。図20に示すように、このオブジェクトは、4個のスプライトsp1〜sp4から構成される。このようなオブジェクトを表示するためのオブジェクト画像データ305が、外部ROM300あるいは外部ROM91に格納されている。具体的には、オブジェクト画像データ305は、オブジェクトの、水平座標(左上のスプライトの中心の水平座標)、垂直座標(左上のスプライトの中心の垂直座標)、サイズ、各スプライトsp1〜sp4の、サイズ、カラーパレット情報、画素パターンデータ、デプス値、及び、その他画像生成に必要な情報を含む。
ここで、カラーパレット情報は、複数のカラーパレットのうちの1つを指定する情報である。カラーパレットは、所定数の色情報からなる。画素パターンデータは、スプライトを構成する各画素の色を指定する情報である。従って、画素パターンデータによって、カラーパレット情報により指定されたカラーパレット中の色情報が指定される。デプス値は、画素の奥行きを表す情報であり、同じ位置に、複数の画素が存在することとなる場合、最も大きなデプス値を持つ画素だけが表示されることになる。
次に、背景74のスクロールについて説明する。まず、バックグラウンドスクリーンについて説明する。図21は、図1のテレビジョンモニタ80のスクリーン82に表示されるバックグラウンドスクリーン302の説明図である。図21に示すように、バックグラウンドスクリーン302は、例えば、32個×32個のブロック「0」〜ブロック「1023」により構成される。ブロック「0」〜ブロック「1023」の各々は、例えば、8画素×8画素からなる矩形要素である。ブロック「0」〜ブロック「1023」に対応して、配列PA[0]〜配列PA[1023]及び配列CA[0]〜配列CA[1023]が用意される。ここで、ブロック「0」〜ブロック「1023」を包括して表現するときは、単に「ブロック」と表記し、配列PA[0]〜配列PA[1023]を包括して表現するときは、「配列PA」と表記し、配列CA[0]〜配列CA[1023]を包括して表現するときは、「配列CA」と表記する。
配列PAには、対応するブロックの画素パターンを指定するデータ(画素パターンデータ)の格納位置情報が代入される。この場合の画素パターンデータは、ブロックを構成する8画素×8画素の各画素の色を指定する情報である。また、配列CAには、対応するブロックのためのカラーパレット情報及びデプス値が代入される。
図22(a)は、バックグラウンドスクリーン302をスクロールする前の説明図、図22(b)は、バックグラウンドスクリーン302をスクロールした後の説明図、である。図22(a)に示すように、スクリーン82のサイズは、横256画素×縦224画素であるため、バックグラウンドスクリーン302のうち、横256画素×縦224画素の範囲がスクリーン82に表示される。ここで、バックグラウンドスクリーン302の中心をスクリーン82上でk画素だけ左に移動することを考える。そうすると、バックグラウンドスクリーン302の横方向(水平方向)の幅が、スクリーン82の横方向の幅と同じであるため、図22(b)に示すように、スクリーン82の範囲外となった部分(斜線部分)が、スクリーン82の右端に表示される。つまり、概念的には、横方向にスクロールをする場合は、同じ複数のバックグラウンドスクリーン302が横方向に連なっていると考えることができる。
例えば、スクリーン82の範囲外となった部分(斜線部分)が、図21のブロック「64」,ブロック「96」,…,ブロック「896」,ブロック「928」とすると、これらのブロックに対応する配列PA[64],…PA[928]及び配列CA[64],…CA[928]によって定まる画像が、スクリーン82の右端に表示される。従って、バックグラウンドスクリーン302の左スクロールにより、背景が連続的に連なるようにするには、スクリーン82の範囲外となった部分(斜線部分)に含まれるブロックに対応する配列PA及び配列CAに代入されたデータを更新する必要がある。そうすれば、更新された配列PA及び配列CAによって定まる画像が、スクリーン82の右端に表示される。
背景74を滑らかに連続するように見せるためには、スクリーン82の右端に表示される前に、該当する配列PA及び配列CAのデータを更新する必要がある。そうすると、スクリーン82の左端に表示中のときに、該当する配列PA及び配列CAのデータを更新する必要が生じ、スクリーン82の左端の表示が不連続なものとなる。従って、このような不都合を回避するため、図9〜図11に示すように、スクリーン82の左端にマスク88をする。なお、本実施形態では、右方向へのスクロールは行わないが、バランスをとるため、右端にもマスク88をしている。
以上のように、バックグラウンドスクリーン302の中心をスクリーン82上で移動させることにより、背景74をスクロールさせる。なお、背景74を表示するための背景画像データ306が、外部ROM300あるいは外部ROM91に格納されている。具体的には、背景画像データ306は、バックグラウンドスクリーン302を構成する各ブロックの画素パターンデータ、及びその他画像生成に必要な情報を含む。
次に、グラフィックプロセッサ202による処理(画像信号VDの生成処理)の詳細を説明する。図23は、図14のグラフィックプロセッサ202のブロック図である。図23に示すように、グラフィックプロセサ202は、制御回路450、スプライトメモリ451、画素バッファ452、及び、カラーパレット453、を含む。カラーパレット453は、複数の上記カラーパレットからなる。
CPU201は、表示すべきスプライトの、水平座標、垂直座標、デプス値、サイズ、カラーパレット情報、及び、画素パターンデータ格納位置情報を、垂直ブランキング期間に、グラフィックプロセッサ202のスプライトメモリ451に書き込む。
そして、制御回路450は、スプライトメモリ451に格納された情報に従って、画素バッファ452に、スプライトの画素パターンデータ及びデプス値を書き込んでいく。なお、画素パターンデータは、スプライトメモリ451の画素パターンデータ格納位置情報に基づいて、制御回路450が、外部ROM300あるいは外部ROM91から読み出す。
また、制御回路450は、内部メモリ207にアクセスして、配列PAの情報に基づいて、外部ROM300あるいは外部ROM91から、バックグラウンドスクリーン302の各ブロックの画素パターンデータを読み出すとともに、配列CAの情報を読み込む。そして、画素バッファ452に、バックグラウンドスクリーン302の画素パターンデータ及びデプス値を書き込んでいく。
ただし、制御回路450は、同じ位置に画素が重なる場合は、デプス値の大きいスプライト又はブロックの画素パターンデータ及びデプス値を画素バッファ452に書き込む。
ここで、画素バッファ452は、スクリーン82に表示される画像(横256画素×縦224画素)の横一列を構成する256画素よりも少ない数の画素バッファ単位で構成される。この画素バッファ単位は、1画素分のデプス値及び画素パターンデータを保持する。なお、1画素分のデプス値及び画素パターンデータを総括して、画素情報と呼ぶ。
より詳細には、制御回路450は、走査位置を末尾とし、該走査位置から画素バッファ452の容量分先が先頭となるように、画素情報を各画素バッファ単位に順次的に格納する。そして、制御回路450は、走査位置が移動したときに、末尾の画素情報格納位置が先頭の画素情報格納位置に来るように、画素バッファ単位を巡回させて切り換える。
制御回路450は、画素バッファ452から画素情報を読み出して(走査して)、読み出した画素情報の画素パターンデータにより指定された、カラーパレット453のカラーパレットから、色相(Hue)、彩度(Saturation)、および明度(Brightness)の情報を取得して、コンポジット信号を生成し、画像信号VDとして出力する。
次に、サウンドプロセッサ203による処理(音声信号AL,ARの生成処理)の詳細を説明する。図24は、図14のサウンドプロセッサ203のブロック図である。図24に示すように、サウンドプロセッサ203は、制御回路270、DACブロック271、及び、ローカルメモリ272、を含む。
図25は、図24のDACブロック271のブロック図である。図25に示すように、DACブロック271は、メインボリュームDAC(MVDAC)275、M(Mは自然数)個のチャンネルブロック283, 283´,…、及び、ミキシング回路281,282を含む。チャンネルブロック283, 283´,…、はそれぞれ、チャンネルボリュームDAC(CVDAC)276、エンベロープ(L)DAC(EVLDAC)277、エンベロープ(R)DAC(EVRDAC)279、波形DAC(WVDAC)278、及び、波形DAC(WVDAC)280を含む。この場合、チャンネルブロック283,283´,…、の各々が、N個(Nは2以上の整数)のチャンネルを処理できるとすると、全体でM × N個のチャンネルの処理が可能である。例えば、M=4、N=4として、16チャンネルが処理できる。ここで、チャンネルブロック283, 283´,…、を包括して表現するときは、チャンネルブロック2830と表記する。
図25に示すように、MVDAC275、CVDAC276、EVLDAC277、及び、WVDAC278は、カスケード接続される。同様に、MVDAC275、CVDAC276、EVRDAC279、及び、WVDAC280は、カスケード接続される。以上のように、複数のDAC(D/Aコンバータ:digital to analog converter)をカスケード接続することで、アナログ乗算回路を構成する。
MVDAC275には、制御回路203から、音声信号全体のボリュームを制御するためのメインボリュームデータMVが入力される。MVDAC275は、入力されたメインボリュームデータMVをアナログ信号に変換し、その変換信号をCVDAC276へ出力する。
チャンネルブロック283, 283´,…、のCVDAC276には、制御回路270から、チャンネルボリュームデータCV,CV´,…、が入力される。なお、チャンネルボリュームデータCV,CV´,…、の各々は、N組(Nは2以上の整数)のチャンネルのチャンネルボリュームデータが時分割多重されたものである。このチャンネルボリュームデータは、対応するチャンネルのボリュームを制御するデータである。ここで、チャンネルボリュームデータCV,CV´,…、を包括的に表現するときは、チャンネルボリュームデータCV0と表記する。なお、チャンネルボリュームデータCV0は、デジタル信号である。
CVDAC2760は、入力されたチャンネルボリュームデータCV0と、MVDAC275から入力された変換信号(アナログ信号)と、を乗算し、乗算信号(アナログ信号)を、EVLDAC277及びEVRDAC279に出力する。
ここで、チャンネルボリュームデータは、制御回路270が、内部メモリ207から読み出して、ローカルメモリ272に格納したものである。
チャンネルブロック283, 283´,…、のEVLDAC277には、制御回路270から、エンベロープデータEVL, EVL´,…、が入力される。なお、エンベロープデータEVL, EVL´,…、の各々は、N組のチャンネルのエンベロープデータが時分割多重されたものである。このエンベロープデータは、対応するチャンネルの左チャンネルのエンベロープを制御するデータである。ここで、エンベロープデータEVL, EVL´,…、を包括的に表現するときは、エンベロープデータEVL0と表記する。なお、エンベロープデータEVL0は、デジタル信号である。
EVLDAC277は、入力されたエンベロープデータEVL0と、CVDAC276から入力された乗算信号(アナログ信号)と、を乗算し、乗算信号(アナログ信号)を、WVDAC278に出力する。
ここで、エンベロープデータは、制御回路270が、ROM91あるいはROM300から読み出して、ローカルメモリ272に格納したものである。従って、制御回路270は、エンベロープピッチ制御情報に基づくアドレスポインタをインクリメントしながら、エンベロープデータをローカルメモリ272から順次読み出し、多重化して、DACブロック271へ与える。
チャンネルブロック283, 283´,…、のWVDAC278には、制御回路270から、波形データWV,WV´,…、が入力される。なお、波形データWV,WV´,…、の各々は、N組のチャンネルの波形データが時分割多重されたものである。ここで、波形データWV,WV´,…、を包括的に表現するときは、波形データWV0と表記する。なお、波形データWV0は、デジタル信号である。
WVDAC278は、入力された波形データWVL0と、EVLDAC277から入力された乗算信号(アナログ信号)と、を乗算し、乗算信号(アナログ信号)を、ミキシング回路281に出力する。この乗算信号が、アナログ音声信号となる。
ここで、波形データは、制御回路270が、ROM91あるいはROM300から読み出したデータである。つまり、制御回路270は、ローカルメモリ272に書き込んだ、波形データの先頭アドレス情報に従って、ROM300から波形データを読み出し、ローカルメモリ272に一旦格納する。そして、制御回路270は、波形ピッチ制御情報に基づくアドレスポインタをインクリメントしながら、波形データをローカルメモリ272から読み出し、多重化してWVDAC278へ与える。
ミキシング回路281は、チャンネルブロック283,283´,…、のそれぞれが出力するアナログ音声信号をミキシングして、左チャンネルの音声信号ALを出力する。左チャンネルの音声信号ALを生成する場合と同様にして、EVRDAC279、WVDAC280、及び、ミキシング回路282により、右チャンネルの音声信号ARが生成される。
ここで、ピッチ制御情報について説明しておく。ピッチ制御情報は、波形データやエンベロープデータを読み出す周期を変えることによって行われるピッチ変換に用いられる。つまり、サウンドプロセッサ203は、ピッチ制御情報を一定期間毎に読み出して累算する。そして、サウンドプロセッサ203は、この累算結果を加工して、波形データやエンベロープデータのアドレスポインタとする。よって、ピッチ制御情報に大きな値が設定されれば、アドレスポインタのインクリメントは早く行われ、周波数が高くなり、ピッチ制御情報に小さな値が設定されれば、アドレスポインタのインクリメントは遅く行われ、周波数が低くなる。このようにして、サウンドプロセッサ203は、波形データやエンベロープデータのピッチ変換を行う。なお、上記のように、波形データのピッチ制御情報を波形ピッチ制御情報と呼び、エンベロープデータのピッチ制御情報をエンベロープピッチ制御情報と呼ぶ。
次に、図1の自動演奏装置の全体の処理の流れをフローチャートを用いて説明する。まず、摺動操作部材2の摺動速さに基づくゲーム処理(図9のランニングゲーム処理)について説明する。
図26は、図1の自動演奏装置によるランニングゲーム処理の流れを示すフローチャートである。図26に示すように、ステップS1にて、CPU201は、システムの初期設定を実行する。ステップS2にて、CPU201は、音楽が終了したか否かをチェックして、音楽が終了したならば、処理を終了し、音楽が継続中であれば、ステップS3に進む。
ステップS3にて、CPU201は、操作者による摺動操作部材2の操作が、トリガの発生条件を満足したか否かをチェックする。ステップS4にて、CPU201は、摺動操作部材2の摺動速さに基づいて、キャラクタ73の位置を制御する。ステップS5にて、CPU201は、摺動操作部材2の摺動速さに基づいて、キャラクタ73のアニメーションを制御する。ステップS6にて、CPU201は、摺動操作部材2の摺動操作により発生したトリガに基づいて、現在位置指示オブジェクト71の位置を制御する。ステップS7にて、CPU201は、キャラクタ73の現在のタイムを算出する。
ステップS8にて、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS8に戻る。一方、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS9に進む。ステップS9にて、CPU201の指示を受けたグラフィックプロセッサ202は、テレビジョンモニタ80の表示画像を更新する。ステップS10にて、CPU201は、サウンドプロセッサ203による音声信号AL,ARの生成に必要な情報を内部メモリ207にセットする。サウンドプロセッサ203は、それらの情報を基に、音声信号AL,ARを生成する。このように、ステップS9の表示画像更新処理およびステップS10の音声処理は、ビデオ同期信号に同期して実行される。なお、ビデオ同期信号による割り込みは、1フレーム毎に行われる。
ステップS11のパルスカウント処理は、タイマ回路210による割り込みが発生したときに、CPU201により実行される。このパルスカウント処理は、フォトトランジスタ34,35(図18参照)が出力するパルス信号A,Bの状態遷移をカウントする処理である。
図27は、図26のステップS1の初期設定処理の流れを示すフローチャートである。図27に示すように、ステップS20にて、CPU201は、楽譜データポインタを初期化する。楽譜データポインタは、楽譜データ308の読み出し位置を示すポインタである。ステップS21にて、CPU201は、トリガカウンタCtを「0」にセットする。トリガカウンタは、トリガの発生回数をカウントする。ステップS22にて、CPU201は、リリースカウンタCrを「0」にセットする。リリースカウンタは、摺動操作部材2の摺動速さが、連続して「0」になった回数をカウントする。ステップS23にて、CPU201は、速度カウンタCvを「0」にセットする。速度カウンタは、フォトトランジスタ34,35が出力するパルス信号A,Bの状態遷移をカウントする。ステップS24にて、CPU201は、各種フラグを初期化する。ステップS25にて、CPU201は、タイマ回路210をステップS11のパルスカウントのための割込み源としてセットする。この場合、フォトトランジスタ34からのパルス信号Aあるいはフォトトランジスタ35からのパルス信号Bの、想定される最も短いハイレベル期間あるいはローレベル期間より短い間隔で、割り込みが発生するように、タイマ回路210がセットされる。
図28は、図26のステップS11のパルスカウント処理の流れを示すフローチャートである。図28に示すように、ステップS30にて、CPU201は、入出力制御回路209を介して、入出力ポートIO0及びIO1の値を読み込む。ここで、入出力ポートIO0には、フォトトランジスタ34からパルス信号Aが入力される。入出力ポートIO1には、フォトトランジスタ35からパルス信号Bが入力される。
ステップS31にて、CPU201は、入出力ポートIO0の値がハイレベルであり、かつ、入出力ポートIO1の値がローレベルであるときは、入出力ポートIO0,IO1の状態情報を「0」として、ステップS34に進み、それ以外のときは、ステップS32に進む。ステップS32にて、CPU201は、入出力ポートIO0の値がハイレベルであり、かつ、入出力ポートIO1の値がハイレベルであるときは、入出力ポートIO0,IO1の状態情報を「1」として、ステップS34に進み、それ以外のときは、ステップS33に進む。ステップS33にて、CPU201は、入出力ポートIO0の値がローレベルであり、かつ、入出力ポートIO1の値がハイレベルであるときは、入出力ポートIO0,IO1の状態情報を「2」として、ステップS34に進み、それ以外のときは、入出力ポートIO0の値がローレベルであり、かつ、入出力ポートIO1の値がローレベルであるので、入出力ポートIO0,IO1の状態情報を「3」として、ステップS34に進む。
ステップS34にて、CPU201は、入出力ポートIO0,IO1の今回の状態情報を内部メモリ207に格納する。ステップS35にて、CPU201は、入出力ポートIO0,IO1の今回の状態情報と前回の状態情報と比較する。ステップS36にて、CPU201は、入出力ポートIO0,IO1の状態情報に変化があった場合は、ステップS37に進む。ステップS37にて、CPU201は、入出力ポートIO0,IO1の状態情報の変化の方向を判断する(図17参照)。CPU201は、状態情報の変化の方向が、(+)方向遷移であれば(図16(a)参照)、ステップS38に進み、速度カウンタCvを1つインクリメントする。一方、CPU201は、状態情報の変化が、(−)方向遷移であれば(図16(b)参照)、ステップS39に進み、速度カウンタCvを1つデクリメントする。以上ようにして、フォトトランジスタ34,35からのパルス信号A,Bの状態遷移をカウントする。
図29は、図26のステップS3のトリガ処理の流れの一例を示すフローチャートである。図29に示すように、ステップS50にて、CPU201は、速度カウンタCvを参照して、そのカウント値を取得する。取得したカウント値は、1フレーム当たりのカウント値であり、摺動操作部材2の現在の摺動速度を表す。ステップS51にて、CPU201は、速度カウンタCvをリセットする。
ステップS52にて、CPU201は、摺動操作部材2の摺動速度(速度カウンタCvのカウント値)の移動平均を算出する。例えば、摺動操作部材2の現在の摺動速度および過去9フレーム分の摺動速度を用いて、10フレーム分の移動平均を算出する。摺動操作部材2の摺動速度の移動平均を摺動速度Vaと表記する。
ステップS53にて、CPU201は、摺動速度Vaの絶対値|Va|、つまり、摺動速さ|Va|を算出する。ステップS54にて、CPU201は、摺動操作部材2の摺動速さ|Va|が、予め定められた最大値MAXを超えているか否かを判断する。摺動操作部材2の摺動速さ|Va|が、予め定められた最大値MAXを超えていなければ、ステップS59に進み、超えていれば、ステップS55に進む。
ステップS55にて、CPU201は、摺動速度Vaの符号を判断し、正であれば、ステップS57にて、摺動速度Vaに、最大値MAXを代入する。一方、CPU201は、摺動速度Vaの符号が、負であれば、ステップS56にて、摺動速度Vaに、(−1)×MAXを代入する。ステップS58では、CPU201は、摺動速さ|Va|に、最大値MAXを代入して、ステップS59に進む。
ステップS59にて、CPU201は、摺動操作部材2の摺動速さ|Va|が予め定められた閾値ThVを超えているかどうか判断する。摺動速さ|Va|が予め定められた閾値ThVを超えていれば、ステップS60に進み、閾値ThV以下であれば、ステップS64に進む。
ステップS60にて、CPU201は、摺動操作部材2の前回と今回の摺動速度Vaの符号を比較する。そして、CPU201は、摺動速度Vaの符号が変化していない場合は、摺動方向に変化がないとして、メインルーチンにリターンし、摺動速度Vaの符号が変化している場合は、摺動方向が変化したとして、ステップS62に進む。そして、ステップS62では、CPU201は、発音フラグ及び発音中フラグをオンにする。発音フラグのオンは、トリガ発生を意味する。
ステップS63にて、CPU201は、トリガカウンタCtを1つインクリメントして、メインルーチンにリターンする。
以上のように、トリガは、摺動操作部材2の自動演奏装置本体1に対する相対的な速さ(つまり、摺動速さ|Va|)が、予め定められた閾値ThVより大きくなり(ステップS59参照)、かつ、摺動操作部材2の摺動方向が変化した場合(ステップS61参照)に発生する。
さて、一方、ステップS64にて、CPU201は、摺動操作部材2の摺動速さ|Va|が「0」か否かを判断する。摺動操作部材2の摺動速さ|Va|が「0」でないならば、ステップS69へ進み、リリースカウンタCrをリセットして、メインルーチンにリターンし、摺動速さ|Va|が「0」ならば、ステップS65へ進む。
ステップS65にて、CPU201は、リリースカウンタCrを1つインクリメントする。ステップS66にて、CPU201は、リリースカウンタCrが一定値kになったかどうかを判断する。リリースカウンタCrが一定値kになっていない場合は、メインルーチンにリターンし、一定値kになった場合は、ステップS67に進む。ステップS67にて、CPU201は、リリースカウンタCrをリセットする。ステップS68にて、CPU201は、ハードウエアリリースフラグをオンにして、メインルーチンにリターンする。
ステップS64〜S69の処理は、摺動速さ|Va|が、k(例えば、k=7)回連続して「0」であった場合に、ハードウエアリリースを実行する処理である。なお、ハードウエアリリースの代わりに、ソフトウエアリリースを行うことができる。
ここで、図26のステップS4のキャラクタ位置制御処理の説明に入る前に、ステップS4の説明で必要になる仮想座標及び速度変換テーブルについて説明する。図30は、仮想座標の説明図である。図30に示すように、横1024画素×縦256画素の背景画像303が、外部ROM300あるいは外部ROM91に用意される。この背景画像303は、キャラクタ73が摺動速さ|Va|に応じて移動するスタートからゴールに至るまでの画像である。この背景画像303上の座標を仮想座標と定義する。この仮想座標の原点は、背景画像303の左端中央とする。CPU201は、摺動操作部材2の摺動速さ|Va|に基づいて、仮想座標上のキャラクタ73の位置を算出する。
図31は、図30の背景画像303の部分拡大図である。図31に示すように、背景画像303は、バックグラウンドスクリーン302のブロックに対応して、例えば、8画素×8画素のブロックに分割されている(図31の破線で示す矩形要素)。ここで、バックグラウンドスクリーン302に映し出される範囲は、キャラクタ73を中心とした矩形範囲(左上角が(x1,y1)、右下角が(x2,y2))である。つまり、バックグラウンドスクリーン302を構成する配列PA[0]〜[1023]及び配列[0]〜[1023]には、背景画像303のうち、キャラクタ73を中心とした矩形範囲を表す画素パターンデータ格納位置情報、カラーパレット情報、およびデプス値が代入される。
そして、矢印で示すように、キャラクタ73の仮想座標上の位置が、背景画像303の他のブロックに移動した場合は、CPU201は、移動後のキャラクタ73を中心とした矩形範囲(左上角が(x3,y3)、右下角が(x4,y4))をバックグラウンドスクリーン302に映し出す。つまり、この場合、CPU201は、バックグラウンドスクリーン302を構成する配列PA[0]〜[1023]及び配列[0]〜[1023]の各要素を、背景画像303のうち、移動後のキャラクタ73を中心とした矩形範囲を表す画素パターンデータ格納位置情報、カラーパレット情報、およびデプス値に書き換える。
以上のように、キャラクタ73の仮想座標上の移動に伴って、配列PA及び配列CAの要素を書き換えることで、キャラクタ73のスクリーン82上の位置を固定しながらも(スクリーン82のほぼ中心)、映し出す背景画像303を変化させて、キャラクタ73の移動を表現する。
なお、仮想座標は、(x,y)と表記し、テレビジョンモニタ80のスクリーン82上の座標は、(X,Y)と表記する。スクリーン82上の座標では、スクリーン82の中心を座標原点とし、垂直上方向をX軸の正方向、水平右方向をY軸の正方向とする。
さて、一方、キャラクタ73が仮想座標上で、1つのブロックの中で移動した場合は、次のようにして、キャラクタ73の移動を表現する。キャラクタ73がx方向に、距離Vvだけ移動したとする。そうすると、CPU201は、バックグラウンドスクリーン302の中心をスクリーン82上で、X方向に距離(−Vv)だけ移動させる。つまり、この場合、スクロールにより、キャラクタ73の移動を表現する。なお、この場合、キャラクタ73のスクリーン82上の位置は、固定したままである(スクリーン82のほぼ中心)。
上記のように、キャラクタ73の仮想座標上のx方向の移動距離Vv(この例では、キャラクタ73のy座標は固定している。)に応じて、バックグラウンドスクリーン302を構成する配列PA,CAやバックグラウンドスクリーン302の中心を移動させた。この移動距離Vvは、摺動操作部材2の摺動速さ|Va|を基に、速度変換テーブルを参照して決定される。
図32は、速度変換テーブルの例示図である。図32に示すように、速度変換テーブルは、摺動操作部材2の摺動速さ|Va|と、仮想座標上の移動距離Vvと、を関連付けたものである。例えば、摺動速さ|Va|がVa0のときは、移動距離Vvは、距離Vv0となる。この速度変換テーブルでは、摺動速さ|Va|が大きくなれば、移動距離Vvも大きくなり、摺動速さ|Va|が小さくなれば、移動距離Vvも小さくなる。
図33は、図26のステップS4のキャラクタ位置制御処理の流れを示すフローチャートである。図33に示すように、ステップS80にて、CPU201は、図32の速度変換テーブルを参照して、摺動操作部材2の摺動速さ|Va|に応じた仮想座標上のキャラクタ73の移動距離Vvを取得する。ステップS81にて、CPU201は、移動距離Vvを基に、キャラクタ73の仮想座標上の位置を算出する。
ステップS82にて、CPU201は、キャラクタ73が、他のブロックに移動したかどうかを判断し(図31参照)、他のブロックに移動していない場合は、ステップS83に進み、他のブロックに移動した場合は、ステップS84に進む。ステップS83では、CPU201は、バックグラウンドスクリーン302の中心のスクリーン82上の座標(Xf,Yf)を、(Xf−Vv,Yf)として、メインルーチンにリターンする。一方、ステップS84にて、CPU201は、キャラクタ73の仮想座標上の位置を中心とする矩形範囲の背景画像303をスクリーン82に表示すべく、バックグラウンドスクリーン302を構成する配列PA,CAを書き換えて、メインルーチンにリターンする。
なお、バックグラウンドスクリーン302の中心のスクリーン82上の座標情報および配列PA,CAは、内部メモリ207の所定領域に格納される。
ここで、図26のステップS5のキャラクタアニメーション制御処理の説明に入る前に、ステップS5の説明で必要になるアニメーションテーブルについて説明する。図34は、アニメーションテーブルの例示図である。図34に示すように、各アニメーションテーブルは、弓速レンジ、アニメーションを行うキャラクタ73の番号、持続フレーム数情報、後続情報、アニメーション画像データの格納位置情報、キャラクタサイズ情報、カラーパレット情報、デプス値、スプライトサイズ情報、及び、キャラクタ73のスクリーン82上の表示座標情報、を関連付けてなる。
弓速レンジは、摺動操作部材2の摺動速さ|Va|を5段階に分けて、段階毎にアニメーションの速度を変化させるために設けてある。キャラクタ番号は、キャラクタ73の異なる形態毎に番号を割り当てたものである。持続フレーム数情報は、対応するキャラクタ番号で示される形態のキャラクタ73を、何フレーム連続して表示するかを示す情報である。後続情報は、持続フレーム数情報に従って特定形態のキャラクタ73を表示した後に、どのキャラクタ番号で示される形態のキャラクタ73を表示するかを指示する情報である。例えば、後続情報「next」は、キャラクタ番号「1」が示す形態のキャラクタ73を1フレーム(持続フレーム数)表示した後は、同じ弓速レンジの次のキャラクタ番号「2」が示す形態のキャラクタ73を表示することを意味する。また、例えば、後続情報「top」は、キャラクタ番号「10」が示す形態のキャラクタ73を1フレーム(持続フレーム数)表示した後は、同じ弓速レンジの先頭のキャラクタ番号「1」が示す形態のキャラクタ73を表示することを意味する。また、例えば、後続情報「self」は、キャラクタ番号「11」が示す形態のキャラクタ73を4フレーム(持続フレーム数)表示した後は、再び同じキャラクタ番号「11」のキャラクタ73を表示することを意味する。
アニメーション画像データは、アニメーションを行うキャラクタ73を時系列に配置したデータである。アニメーション画像データの格納位置情報は、このアニメーション画像データの先頭アドレスを示す。なお、アニメーション画像データは、画素パターンデータである。キャラクタサイズ情報は、キャラクタのサイズ情報である。カラーパレット情報、デプス値、およびスプライトサイズについては、上述のとおりである。
アニメーション画像データの格納位置情報は、キャラクタ番号「1」のキャラクタ73の画素パターンデータ格納位置情報であるため、キャラクタサイズ情報を利用して、2番以降のキャラクタ73の画素パターンデータ格納位置情報が算出される。また、キャラクタ73を構成する各スプライトの画素パターンデータ格納位置情報は、キャラクタ73の画素パターンデータ格納位置情報が分かるので、これとスプライトサイズ情報とから算出される。また、キャラクタ73を構成する各スプライトの表示座標は、キャラクタ73の表示座標が分かるので、これとスプライトサイズ情報とから算出される。
なお、摺動速さ|Va|が閾値ThV(図29のステップS59参照)以下の場合は、キャラクタ番号は「11」のみとし、後続情報を「self」としている。こうすれば、静止した(アニメーションしない)キャラクタ73がスクリーン82に表示される。
図35は、図26のステップS5のキャラクタアニメーション処理の流れを示すフローチャートである。図35に示すように、ステップS90にて、CPU201は、アニメーションポインタが指すアニメーションテーブルを参照する。アニメーションポインタは、現在のアニメーションテーブルを指すポインタである。ステップS91にて、CPU201は、アニメーションテーブルの情報を基に、キャラクタ73を構成する各スプライトの表示座標および画素パターン格納位置情報を算出して、内部メモリ207の所定領域に格納する。ステップS92にて、CPU201は、アニメーションテーブルから、キャラクタ73を構成する各スプライトの他の画像情報(サイズ、カラーパレット情報、およびデプス値など)を取得して、内部メモリ207の所定領域に格納する。
ステップS93にて、CPU201は、アニメーションテーブルの持続フレーム数が終了したか否かを判断して、終了していない場合は、メインルーチンにリターンし、終了している場合は、ステップS94に進む。ステップS94にて、CPU201は、アニメーションが終了したか否かを判断して、終了していない場合はステップS97に進み、終了している場合はステップS95に進む。ここで、アニメーションの終了とは、同じ弓速レンジにおいて、全てのキャラクタ番号「1」〜「10」のキャラクタ73の表示が終了したことを意味する。
さて、ステップS95にて、CPU201は、摺動操作部材2の摺動速さ|Va|が属する弓速レンジを判定する。ステップS96にて、CPU201は、摺動速さ|Va|が属する弓速レンジに対応するキャラクタ番号「1」のアニメーションテーブルにアニメーションポインタを進め、メインルーチンにリターンする。一方、ステップS97にて、CPU201は、アニメーションテーブルの後続情報に従って、アニメーションポインタを制御して、メインルーチンにリターンする。例えば、アニメーションポインタが、弓速レンジ(ThV<|Va|≦V1)に対応するキャラクタ番号「1」のアニメーションテーブルを指している場合は、CPU201は、同じ弓速レンジ(ThV<|Va|≦V1)に対応する次のキャラクタ番号「2」のアニメーションテーブルにアニメーションポインタを進める。
ここで、図34から分かるように、摺動速さ|Va|が大きくなれば、アニメーションのコマ送りも速くなり(持続フレーム数が少なくなり)、摺動速さ|Va|が小さくなれば、アニメーションのコマ送りも遅くなる(持続フレーム数が多くなる)。
図36は、図26のステップS6の現在位置指示オブジェクト制御処理の流れを示すフローチャートである。図36に示すように、ステップS110にて、CPU201は、トリガカウンタCtのカウント値に、所定画素数を乗算して、その結果を、現在位置指示オブジェクト71の移動距離LXとする。ステップS111にて、CPU201は、移動距離LXに、初期座標Xob0を加算して、現在位置指示オブジェクト71のX座標Xobとする。なお、Y座標Yobは固定である。ステップS112にて、CPU201は、現在位置指示オブジェクト71を構成するスプライトの画像情報(画素パターンデータ格納位置情報、表示座標、サイズ、カラーパレット情報、およびデプス値など)を、内部メモリ207の所定領域にセットする。なお、現在位置指示オブジェクト71は、1つのスプライトから構成されるとした。ステップS113にて、CPU201は、トータル距離指示バー70を構成する各スプライトの画像情報(画素パターンデータ格納位置情報、表示座標、サイズ、カラーパレット情報、およびデプス値など)を内部メモリ207の所定領域にセットする。
ここで、トータル距離指示バー70の長さは、楽譜データ308に含まれる音符の数に比例した長さになっている。そして、上記の処理により、トリガが発生するたびに、1音符に対応する距離(ステップS110の所定画素数)だけ、現在位置指示オブジェクト71が移動していく。
図37は、図26のステップS7のタイムカウント処理の流れを示すフローチャートである。図37に示すように、ステップS120にて、CPU201は、カウンタCtmをインクリメントする。ステップS121にて、CPU201は、カウンタCtmのカウント値から、スタートからの経過時間を算出する。ここで、ビデオ同期信号による割り込みが1/60秒ごとに発生するとする。カウンタCtmは、表示画像(フレーム)が更新されるたびにインクリメントされるので、容易に経過時間を算出できる。ステップS122にて、CPU201は、キャラクタ73のランニングスタートからの経過時間を表示すべく、経過時間を表すための各数字オブジェクトを構成するスプライトの画像情報(画素パターンデータ格納位置情報、表示座標、サイズ、カラーパレット情報、およびデプス値など)を、内部メモリ207の所定領域にセットする。なお、各数字ブジェクトは、1つのスプライトから構成されるとした。
図26に戻って、ステップS9にて、垂直ブランキング期間に、CPU201は、グラフィックプロセッサ202に対して、各スプライトの画像情報を与える。また、垂直ブランキング期間に、グラフィックプロセッサ202は、内部メモリ207に格納された配列PA,CAの情報を読み込む。そして、グラフィックプロセッサ202は、それらの情報を基に画像信号VDを生成して、表示画像を更新する。
図38は、図26のステップS10の音声処理の流れを示すフローチャートである。ステップS130にて、CPU201は、発音フラグのオン/オフ(トリガ発生の有無)を判断して、発音フラグがオフであれば、ステップS137に進み、発音フラグがオン(トリガ発生)であれば、ステップS131に進む。ステップS131にて、CPU201は、外部ROM300あるいは外部ROM91に格納された楽譜データ308から、楽譜データポインタが指す音符情報(つまり、ピッチ情報)を読み込む。ステップS132にて、CPU201は、読み込んだ音符情報に応じた波形ピッチ制御情報を内部メモリ207にセットする。
ステップS133にて、CPU201は、読み出した音符情報に応じた波形データのアタック部の先頭アドレスを内部メモリ207にセットする。ステップS134にて、CPU201は、読み出した音符情報に応じた波形データのループ部の先頭アドレスを内部メモリ207にセットする。ステップS135にて、CPU201は、楽譜データポインタをインクリメントする。なお、楽譜データ308は、音符情報(ピッチ情報)が時系列に配置されたデータである。ステップS136にて、CPU201は、発音フラグをオフにする。
ステップS137にて、CPU201は、発音中フラグがオンかどうかを判断して、オフであれば、メインルーチンにリターンし、オンであれば、ステップS138に進む。ステップS138にて、CPU201は、ハードウエアリリースフラグの状態をチェックし、オンであれば、ステップS144に進み、発音中フラグをオフにして、ステップS143に進む。一方、ハードウエアリリースフラグがオフであれば、ステップS139に進む。ステップS139にて、CPU201は、摺動操作部材2の摺動速さ|Va|に応じたエンベロープ係数を算出する。例えば、速度カウンタCvを8ビットカウンタとしたとき、エンベロープ係数を、8×|Va|×(1/255)とし、これが「1」を超えたら、「1」にクリッピングする。ステップS140にて、CPU201は、外部ROM300あるいは外部ROM91に格納された圧縮されたエンベロープデータを読み出して、内部メモリ207に展開する。なお、ステップS140では、ステップS131で読み込んだ音符情報に応じた波形データに対応したエンベロープデータが読み出される。
ステップS141にて、CPU201は、展開したエンベロープデータに、ステップS139で求めたエンベロープ係数を乗算する。ステップS142にて、CPU201は、ステップS141の乗算結果を、新たなエンベロープデータとして、内部メモリ207に再セットする。このように、エンベロープを摺動速さ|Va|に応じて制御することにより、音量を制御する。ステップS143にて、CPU201は、サウンドプロセッサ203に対して、内部メモリ207へのアクセス指示を出す。すると、サウンドプロセッサ203は、必要なタイミングで、内部メモリ207にセットされたアタック部先頭アドレス、ループ部先頭アドレス、及び、エンベロープデータを読み込んで、音声信号AL,ARを生成する。なお、ハードウエアリリースフラグがオンのときは、サウンドプロセッサ203は消音処理を実行する。従って、発音フラグがオンになってから、ハードウエアリリースフラグがオンになるまで、該当する音符情報に応じた音声信号AL,ARが継続して生成される。
ここで、摺動操作部材2を操作して、自動演奏を行う場合も、図26と同様の処理(トリガ処理、音声処理)が実行される。ただし、画像表示のための処理は、図8のような画面を表示するための処理になる。
次に、摺動操作部材2の摺動時間に基づくゲーム処理(図10及び図11の飛行ゲーム処理)について説明する。
図39は、図1の自動演奏装置による飛行ゲーム処理の流れを示すフローチャートである。図39に示すように、ステップS200にて、CPU201は、システムの初期設定を実行する。この処理は、図26のステップS1の初期設定処理と同様であり、詳細な説明は省略する。ステップS201にて、CPU201は、ゲームが終了したか否かをチェックして、ゲームが終了したならば(キャラクタ73が着地して所定時間経過)、処理を終了し、ゲームが継続中であれば、ステップS202に進む。
ステップS202にて、CPU201は、操作者による摺動操作部材2の操作が、トリガの発生条件を満足したか否かをチェックする。この処理は、図26のステップS3のトリガ処理と同様であり、詳細な説明は省略する。ステップS203にて、CPU201は、摺動操作部材2の摺動時間に基づいて、キャラクタ73の位置を算出する。ステップS204にて、CPU201は、ステップS203の算出結果に基づいて、キャラクタ73の位置を制御する。ステップS205にて、CPU201は、キャラクタ73のアニメーションを制御する。ステップS206にて、CPU201は、摺動操作部材2の摺動操作に基づいて、入力通知バー75の色を制御する。ステップS207にて、CPU201は、キャラクタ73の飛行距離を算出する。
ステップS208にて、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS208に戻る。一方、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS209に進む。ステップS209にて、CPU201の指示を受けたグラフィックプロセッサ202は、テレビジョンモニタ80の表示画像を更新する。この点は、図26のステップS9の処理と同様である。
ステップS210にて、CPU201は、サウンドプロセッサ203による音声信号AL,ARの生成に必要な情報を内部メモリ207にセットする。風船ゲームでは、ランニングゲームのように、トリガによる発音を実行しないので、ステップS210では、CPU201は、トリガに依存しない楽譜データポインタが示す音符情報に従って、波形ピッチ制御情報、波形データのアタック部先頭アドレス及びループ部先頭アドレス、並びに、エンベロープピッチ制御情報及びエンベロープデータの先頭アドレス、を内部メモリ207にセットする。サウンドプロセッサ203は、それらの情報を基に、外部ROM300あるいは外部ROM91から波形データ及びエンベロープデータを読み出して、BGMのための音声信号AL,ARを生成する。以上のように、ステップS209の表示画像更新処理およびステップS210の音声処理は、ビデオ同期信号に同期して実行される。
ステップS211のパルスカウント処理は、タイマ回路210による割り込みが発生したときに、CPU201により実行される。このパルスカウント処理は、図26のステップS11のパルスカウント処理と同様であり、詳細な説明は省略する。
図40は、図39のステップS203のキャラクタ位置算出処理の流れを示すフローチャートである。図40に示すように、ステップS220にて、CPU201は、仮想座標上(図30参照)で、キャラクタ73が、ジャンプ地点に到達したか否かを判断して、到達したならば、ステップS221に進み、到達していないならば、ステップS227に進む。ステップS227にて、CPU201は、変数Vxに所定値Vx0を、変数aに「0」を、変数Vyに「0」を、変数gに「0」を、代入する。一方、ステップS221にて、CPU201は、仮想座標上で、キャラクタ73が、風船オブジェクト76の位置に到達したか否かを判断して、到達したならば、ステップS222に進み、到達していないならば、ステップS229に進む。ステップS229にて、CPU201は、変数Vxに所定値Vx0を、変数aに「0」を、変数Vyに所定値Vy0を、変数gに所定値g0を、を代入する。
ステップS222では、CPU201は、発音フラグがオンかどうかを判断して、オフであれば、ステップS228に進み、オンであれば、ステップS223に進む。ステップS223にて、CPU201は、ハードウエアリリースフラグがオンかどうかを判断して、オンであればステップS224に進み、オフであれば、ステップS228に進む。ステップS228にて、CPU201は、変数Vxに所定値Vx1を、変数aに「0」を、変数Vyに所定値Vy1を、変数gに所定値g0を、代入する。
ステップS224では、CPU201は、キャラクタ73が上限位置に達したかどうかを判断して、上限位置に達していればステップS226に進み、上限位置に達していなければステップS225に進む。ステップS225にて、CPU201は、変数Vxに所定値Vx2を、変数aに「0」を、変数Vyに所定値Vy2を、変数gに所定値g0を、代入する。一方、ステップS226にて、CPU201は、変数Vxに所定値Vx2を、変数aに「0」を、変数Vyに「0」を、変数gに「0」を、代入する。
ステップS230にて、CPU201は、ステップS227、ステップS228、ステップS229、ステップS225、あるいは、ステップS226で設定された変数Vv,Vy,a,gに基づいて、次式を計算する。なお、変数xcには初期値xc0が、変数ycには初期値yc0が代入される。
xc←xc+Vx …(1)
Vx←Vx+a …(2)
yc←yc+Vx …(3)
Vy←Vy−g …(4)
ここで、ステップS227の処理は、スタート地点からジャンプ地点までのキャラクタ73の位置を計算するための設定であり、ステップS229の処理は、ジャンプ地点から風船位置までのキャラクタ73の位置を計算するための設定である。ステップS228,S225,S226の処理は、キャラクタ73が風船につかまった以降のキャラクタ73の位置を計算するための設定である。この場合、ステップS228の処理は、トリガが発生していないとき、あるいは、摺動操作が終了したとき(入力が終了したとき)、のキャラクタ73の位置を計算するための設定であり、ステップS226は、摺動操作中において、キャラクタ73の位置が所定の上限に達した後のキャラクタ73の位置を計算するための設定であり、ステップS225は、摺動操作中に、キャラクタ73の位置が所定の上限以下になったときのキャラクタ73の位置を計算するための設定である。
xc←xc+Vx …(1)
Vx←Vx+a …(2)
yc←yc+Vx …(3)
Vy←Vy−g …(4)
ここで、ステップS227の処理は、スタート地点からジャンプ地点までのキャラクタ73の位置を計算するための設定であり、ステップS229の処理は、ジャンプ地点から風船位置までのキャラクタ73の位置を計算するための設定である。ステップS228,S225,S226の処理は、キャラクタ73が風船につかまった以降のキャラクタ73の位置を計算するための設定である。この場合、ステップS228の処理は、トリガが発生していないとき、あるいは、摺動操作が終了したとき(入力が終了したとき)、のキャラクタ73の位置を計算するための設定であり、ステップS226は、摺動操作中において、キャラクタ73の位置が所定の上限に達した後のキャラクタ73の位置を計算するための設定であり、ステップS225は、摺動操作中に、キャラクタ73の位置が所定の上限以下になったときのキャラクタ73の位置を計算するための設定である。
図41は、図39のステップS204のキャラクタ位置制御処理の流れを示すフローチャートである。図41に示すように、ステップS240にて、CPU201は、キャラクタ73が、仮想座標上でのジャンプ地点に到達したか否かを判断して、到達していない場合は、ステップS248に進んで、スクリーン82上のキャラクタ73の座標(Xc,Yc)に、図40のステップS230で求めた仮想座標上の座標(xc,yc)を代入し、到達した場合は、ステップS241に進む。ステップS241にて、CPU201は、キャラクタ73が仮想座標上でのジャンプ地点を通過したか否かを判断して、通過した場合は、ステップS242に進み、通過していない場合は(つまり、ちょうどジャンプ地点に位置する場合)、ステップS244に進む。ステップS242にて、CPU201は、キャラクタ73が、所定の上限位置に達したかどうかを判断して、上限位置に達していればステップS244に進み、上限位置に達していなければステップS243に進む。ステップS243にて、CPU201は、キャラクタ73が、所定の下限位置に達したかどうかを判断して、下限位置に達していればステップS244に進み、下限位置に達していなければステップS249に進む。
ステップS249では、CPU201は、スクリーン82上のキャラクタ73の座標(Xc,Yc)を、座標(前回のXc+Vx,前回のYc+Vy)とする。このようにして、キャラクタ73が、仮想座標上の所定の上限と下限との間に位置する場合は、背景74は動かさずに、キャラクタ73自体のスクリーン82上の位置を移動させる。
ステップS244では、CPU201は、キャラクタ73が他のブロックへ移動したか否かを判断して、移動していれば、ステップS245へ進み、移動していない場合は、ステップS246へ進む。ステップS246では、CPU201は、バックグラウンドスクリーン302の中心のスクリーン82上の座標(Xf,Yf)を、(Xf−Vx,Yf−Vy)とする。一方、ステップS245にて、CPU201は、キャラクタ73の仮想座標上の位置を中心とする矩形範囲の背景画像をスクリーン82に表示すべく、バックグラウンドスクリーン302を構成する配列PA,CAを書き換える。ステップS247にて、CPU201は、スクリーン82上のキャラクタ73の座標(Xc,Yc)を、座標(Xc0,Yc0)とする。座標(Xc0,Yc0)は、スクリーン82のほぼ中心位置であり、一定値である。このように、キャラクタ73が、仮想座標上の所定の上限に位置する場合および下限以下の場合は、キャラクタ73は動かさずに、背景74を変化させて、キャラクタ73の移動を表現する。
図42は、図39のステップS205のキャラクタアニメーション制御の流れを示すフローチャートである。図42に示すように、ステップS260にて、CPU201は、キャラクタ73が、仮想座標上のジャンプ地点に到達したか否かを判断して、到達していない場合は、ステップS262に進み、到達していれば、ステップS261に進む。ステップS261にて、CPU201は、キャラクタ73を静止画として表示すべく、適切な位置にアニメーションポインタを進める。つまり、キャラクタ73がジャンプ地点に到達した以降では、キャラクタ73のアニメーションは行わない。
ステップS262にて、CPU201は、アニメーションポインタが示すアニメーションテーブルを参照する。この場合のアニメーションテーブルは、図34のアニメーションテーブルと同様の構成となっている。ただし、弓速レンジは設けられておらず、アニメーション処理は、摺動操作部材2の摺動速さ|Va|には依存しない。ステップS263にて、CPU201は、アニメーションテーブルの情報を基に、キャラクタ73を構成する各スプライトの表示座標および画素パターンデータ格納位置情報を算出して、内部メモリ207の所定領域に格納する。ステップS264にて、CPU201は、アニメーションテーブルから、キャラクタ73を構成する各スプライトの他の画像情報(サイズ、カラーパレット情報、およびデプス値など)を取得して、内部メモリ207の所定領域に格納する。
ステップS265にて、CPU201は、アニメーションテーブルの持続フレーム数が終了したか否かを判断して、終了していない場合は、メインルーチンにリターンし、終了している場合は、ステップS266に進む。ステップS266にて、CPU201は、アニメーションテーブルの後続情報に従って、アニメーションポインタを適切な位置に進めて、メインルーチンにリターンする。
図43は、図39のステップS206の入力通知バー制御処理の流れを示すフローチャートである。図43に示すように、ステップS280にて、CPU201は、発音フラグがオンか否かを判断して、オンであれば、ステップS282に進み、オフの場合は、ステップS281に進む。ステップS281では、CPU201は、入力通知バー75を構成する各スプライトの画像情報(画素パターンデータ格納位置情報、表示座標、サイズ、カラーパレット情報、およびデプス値など)を内部メモリ207の所定領域にセットする。一方、ステップS282では、CPU201は、ハードウエアリリースフラグがオンか否かを判断して、オンであれば、ステップS284に進み、オフであれば、ステップS283に進む。ステップS283では、CPU201は、入力中(摺動中)であることを操作者に通知すべく、入力通知バー75を構成する各スプライトのカラーパレット情報を変更して、メインルーチンにリターンする。一方、ステップS284では、CPU201は、入力が終了(摺動終了)したことを操作者に通知すべく、入力通知バー75を構成する各スプライトのカラーパレット情報を元に(デフォルト値に)戻して、メインルーチンにリターンする。
図44は、図39のステップS207の飛行距離算出処理の流れを示すフローチャートである。図44に示すように、ステップS270にて、CPU201は、キャラクタ73の仮想座標上のy座標ycが、所定値yce(ゴール地点のy座標)になったかどうかを判断する。つまり、キャラクタ73が、ゴール地点に着地したかどうかを判断する。キャラクタ73が、まだゴール地点に着地していない場合は、メインルーチンにリターンし、着地した場合は、ステップS271に進む。ステップS271にて、CPU201は、キャラクタ73の仮想座標上のx座標に比例した飛行距離を算出する。ステップS272にて、CPU201は、飛行距離を表示するための各数字オブジェクトを構成するスプライトの画像情報(画素パターンデータ格納位置情報、表示座標、サイズ、カラーパレット情報、およびデプス値など)を内部メモリ207にセットする。ステップS273にて、CPU201は、ハードウエアリリースフラグ、発音フラグ及び発音中フラグをリセットする。
次に、摺動操作部材2の摺動方向に基づくゲーム処理(図12のキャッチゲーム処理)について説明する。
図45は、図1の自動演奏装置によるキャッチゲーム処理の流れを示すフローチャートである。図45に示すように、ステップS300にて、CPU201は、システムの初期設定を実行する。この処理は、図26のステップS1の初期設定処理と同様であり、詳細な説明は省略する。ステップS301にて、CPU201は、ゲームが終了したか否かをチェックして、ゲームが終了したならば(ライフオブジェクト78が全て消滅あるいは最後の落下オブジェクト79が出現して所定時間経過)、処理を終了し、ゲームが継続中であれば、ステップS302に進む。
ステップS302にて、CPU201は、操作者による摺動操作部材2の操作が、トリガの発生条件を満足したか否かをチェックする。この処理は、図26のステップS3のトリガ処理と同様であり、詳細な説明は省略する。ステップS303にて、CPU201は、摺動操作部材2の摺動方向に基づいて、キャラクタ73の位置を制御する。ステップS304にて、CPU201は、タイムテーブルを参照して、落下オブジェクト79の出現処理を実行する。ステップS305にて、CPU201は、落下中の落下オブジェクト79の位置を制御する。ステップS306にて、CPU201は、キャラクタ73が、落下オブジェクト79をキャッチしたか否かを判定する。
ステップS307にて、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS307に戻る。一方、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS308に進む。ステップS308にて、CPU201の指示を受けたグラフィックプロセッサ202は、テレビジョンモニタ80の表示画像を更新する。この点は、図26のステップS9の処理と同様である。
ステップS309にて、CPU201は、サウンドプロセッサ203による音声信号AL,ARの生成に必要な情報を内部メモリ207にセットする。キャッチゲームでは、ランニングゲームのように、トリガによる発音を実行しないので、ステップS309では、CPU201は、トリガに依存しない楽譜データポインタが示す音符情報に従って、波形ピッチ制御情報、波形データのアタック部先頭アドレス及びループ部先頭アドレス、並びに、エンベロープピッチ制御情報及びエンベロープデータの先頭アドレス、を内部メモリ207にセットする。サウンドプロセッサ203は、それらの情報を基に、外部ROM300あるいは外部ROM91から波形データ及びエンベロープデータを読み出して、BGMのための音声信号AL,ARを生成する。以上のように、ステップS208の表示画像更新処理およびステップS309の音声処理は、ビデオ同期信号に同期して実行される。
ステップS310のパルスカウント処理は、タイマ回路210による割り込みが発生したときに、CPU201により実行される。このパルスカウント処理は、図26のステップS11のパルスカウント処理と同様であり、詳細な説明は省略する。
図46は、図45のステップS303のキャラクタ制御処理の流れを示すフローチャートである。図46に示すように、ステップS320にて、CPU201は、キャラクタ73のスクリーン82上のX座標Xcを算出する。具体的には、Xc←Xc+摺動速度(弓速)Va、とする。ステップS321にて、CPU201は、アニメーションポインタが示すアニメーションテーブルを参照する。この場合のアニメーションテーブルは、図34のアニメーションテーブルと同様の構成となっている。ただし、弓速レンジは設けられておらず、アニメーション処理は、摺動操作部材2の摺動速さ|Va|には依存しない。ステップS322にて、CPU201は、アニメーションテーブルの情報を基に、キャラクタ73を構成する各スプライトの表示座標および画素パターン格納位置情報を算出して、内部メモリ207の所定領域に格納する。ステップS323にて、CPU201は、アニメーションテーブルから、キャラクタ73を構成する各スプライトの他の画像情報(サイズ、カラーパレット情報、およびデプス値など)を取得して、内部メモリ207の所定領域に格納する。
ステップS324にて、CPU201は、アニメーションテーブルの持続フレーム数が終了したか否かを判断して、終了していない場合は、メインルーチンにリターンし、終了している場合は、ステップS325に進む。ステップS325にて、CPU201は、アニメーションが終了したか否かを判断して、終了していない場合はステップS327に進み、終了している場合はステップS326に進む。ここで、アニメーションの終了とは、全てのキャラクタ番号のキャラクタ73の表示が終了したことを意味する。
ステップS327では、CPU201は、アニメーションテーブルの後続情報に従って、アニメーションポインタを適切な位置に進める。一方、ステップS326では、CPU201は、摺動速度(弓速)Vaの符号に従って、アニメーションポインタを制御する。ここで、キャラクタ73のアニメーションテーブルは、図12の(+)方向用と(−)方向用が用意されている。従って、摺動操作部材2の摺動方向が変化した場合は(摺動速度Vaの符号が変化した場合は)、アニメーションポインタを、摺動方向に応じたアニメーションテーブルを指すように制御する。
さて、図45のステップS304の落下オブジェクト出現処理を説明する前に、そこで使用するタイムテーブルについて説明する。図47は、落下オブジェクト79を出現させるためのタイムテーブルの例示図である。図47に示すように、タイムテーブルは、落下オブジェクト79の出現時間とスクリーン82上の出現位置とを関連付けたものである。
図48は、図45のステップS304の落下オブジェクト出現処理の流れを示すフローチャートである。図48に示すように、ステップS340にて、CPU201は、カウンタCaをインクリメントする。ステップS341にて、CPU201は、図47のタイムテーブルを参照する。そして、ステップS342にて、CPU201は、現在のカウンタCaのカウント値が、タイムテーブル中の出現時間と一致するかどうかを判断して、一致しない場合は、落下オブジェクト79の出現時間ではないので、メインルーチンにリターンし、一致する場合は、ステップS343に進む。
ステップS343にて、CPU201は、タイムテーブル中の出現位置を参照して、出現させるべき落下オブジェクト79を構成する各スプライトの座標を算出する。また、各スプライトの画素パターンデータ格納位置情報を算出する。ステップS344にて、CPU201は、出現させるべき落下オブジェクト79を構成する各スプライトの他の画像情報(サイズ、カラーパレット情報、およびデプス値など)を内部メモリ207の所定領域にセットする。
図49は、図45のステップS305の落下オブジェクト位置制御処理の流れを示すフローチャートである。図49に示すように、ステップS350にて、CPU201は、表示中の落下オブジェクト79のスクリーン82上のY座標Ydを算出する。具体的には、Yd←Yd−Vd0とする。このように、落下オブジェクト79を一定速度Vd0で落下させる。ステップS351にて、CPU201は、落下オブジェクト79が、地面に衝突したか否かを判断して、衝突した場合は、ステップS355に進み、衝突していない場合は、ステップS352に進む。衝突の有無の判断は、落下オブジェクト79のY座標Ydが、地面のY座標を中心とした所定範囲に存在するかどうかで判断する。
ステップS355では、CPU201は、落下オブジェクト79の消滅処理を行う。具体的には、落下オブジェクト79の表示座標を、スクリーン82の範囲外とする。ステップS356にて、CPU201は、ライフオブジェクト78の消滅処理を行う。具体的には、ライフオブジェクト78の表示座標を、スクリーン82の範囲外とする。
一方、ステップS352では、CPU201は、落下オブジェクト79のY座標Ydを元に、落下オブジェクト79を構成する各スプライトの座標を算出する。また、落下オブジェクト79を構成する各スプライトの画素パターンデータ格納位置情報を算出する。ステップS353にて、CPU201は、落下オブジェクト79を構成する各スプライトの他の画像情報(サイズ、カラーパレット情報、およびデプス値など)を内部メモリ207の所定領域にセットする。ステップS354にて、CPU201は、表示中の全落下オブジェクト79について、ステップS350〜ステップS356の処理が終了したかどうかを判断して、終了した場合は、メインルーチンにリターンし、終了していない場合は、ステップS350に進む。
図50は、図45のステップS306のキャッチ判定処理の流れを示すフローチャートである。図50に示すように、ステップS360にて、CPU201は、落下オブジェクト79のX座標Xdを中心とした所定範囲に、キャラクタ73のX座標Xcが存在するかどうかを判定する。ステップS361にて、CPU201は、落下オブジェクト79のX座標Xdを中心とした所定範囲に、キャラクタ73のX座標Xcが存在する場合は、ステップS362に進み、存在しない場合は、ステップS365に進む。ステップS362では、CPU201は、落下オブジェクト79のY座標Ydとキャラクタ73のY座標Ycとの差が、所定範囲に入っているかどうかを判定する。ステップS363にて、CPU201は、落下オブジェクト79のY座標Ydとキャラクタ73のY座標Ycとの差が、所定範囲に入っていない場合は、ステップS365に進み、入っている場合は、ステップS364に進む。ステップS364にて、CPU201は、落下オブジェクト79の消滅処理を実行する。具体的には、落下オブジェクト79の表示座標を、スクリーン82の範囲外とする。ステップS365では、CPU201は、表示中の全落下オブジェクト79について、ステップS360〜ステップS364の処理が終了したかどうかを判断して、終了した場合は、メインルーチンにリターンし、終了していない場合は、ステップS360に進む。
さて、以上のように本実施の形態によれば、高速プロセッサ200は、摺動操作部材2の摺動速さ|Va|に応じた画像信号VDを生成する。このため、操作者は、摺動操作部材2の摺動速さを調節するだけで、表示される画像に変化を与えることができる。図9に示す例では、高速プロセッサ200は、摺動操作部材2の摺動速さ|Va|に応じて、スクリーン82上のキャラクタ73の移動速さを制御する。このように、摺動操作部材2の摺動速さ|Va|を調節するだけで、表示されるキャラクタ73の移動速さをコントロールできる。
また、本実施の形態によれば、高速プロセッサ200は、摺動操作部材2の摺動時間に応じた画像信号VDを生成する。このため、操作者は、摺動操作部材2の摺動時間を調節するだけで、表示される画像に変化を与えることができる。図10及び図11に示す例では、高速プロセッサ200は、摺動方向を変えることなく行われた摺動操作部材2の摺動時間に応じて、キャラクタ73の移動距離を制御する。このように、摺動操作部材2の摺動時間を調節するだけで、表示されるキャラクタ73の移動距離をコントロールできる。
さらに、本実施の形態によれば、高速プロセッサ200は、摺動操作部材2の摺動方向に応じた画像信号VDを生成する。このため、操作者は、摺動操作部材2の摺動方向を調節するだけで、表示される画像に変化を与えることができる。図12に示す例では、高速プロセッサ200は、摺動操作部材2の摺動方向に応じて、キャラクタ73の移動方向を制御する。このように、摺動操作部材2の摺動方向を調節するだけで、表示されるキャラクタ73の移動方向をコントロールできる。
さらに、本実施の形態によれば、発光ダイオード36、フォトトランジスタ34,35、及び、反射パターン43が形成された摺動操作部材2、によりリニアエンコーダを構成することで、簡易に、摺動速さ、摺動方向、及び、摺動時間を計測できる。
さらに、本実施の形態によれば、高速プロセッサ200は、メモリカートリッジ29のROM91に格納されたプログラム301を実行して、そのROM91に格納された画像データ304及び楽曲データ307に基づき、画像信号VD及び音声信号AL,ARを生成することもできる。このため、ユーザは、メモリカートリッジ29を交換するだけで、様々なアプリケーションを利用できる。
さらに、本実施の形態によれば、高速プロセッサ200は、摺動操作部材2の摺動操作に基づくトリガに従って、音声信号AL,ARを生成する。このため、操作者は、摺動操作部材2の摺動操作により、画像だけでなく、音声の発音をも制御できる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記では、光センサユニット90が出力するパルス信号A,Bの状態遷移をソフトウエアカウンタにより検知したが、入出力制御回路209が有するハードウエアカウンタにより検知することもできる。
(2)上記では、摺動操作部材2に、光吸収部44と光反射部45とからなる反射パターン43を設け、反射型の光センサ90により、反射光を検知した。しかし、このような反射型に限定されるものではなく、透過型にすることもできる。即ち、光透過部と遮光部とを交互に設けたパターンを、摺動操作部材2に設ける。そして、透過型の光センサにより、透過光を検知する。
(3)図51は、画像信号生成装置としての自動演奏装置の他の使用例の説明図である。図51に示すように、自動演奏装置本体1をマスタとして、自動演奏装置本体1と自動演奏装置本体1000とを、ケーブル411により接続し、二人の操作者で操作を行うこともできる。なお、自動演奏装置本体1000及び摺動操作部材3は、自動演奏装置本体1及び摺動操作部材2と同じ機能を有する。
ケーブル411は、自動演奏装置本体1のコネクタ22と(図2(b)参照)、自動演奏装置本体1000のコネクタと(図示せず)、に接続される。ケーブル411は、自動演奏装置本体1000の光センサユニット(光センサユニット90に相当)が出力するパルス信号(パルス信号A,Bに相当)を自動演奏装置本体1に伝送するための2本のライン、自動演奏装置本体1から自動演奏装置本体1000に電源電圧Vcc及び接地電圧GNDを供給するための2本の電源ライン(Vcc,GND)、自動演奏装置本体1000自体の電源をオフにするための信号を自動演奏装置本体1から与えるためのライン、及び、自動演奏装置本体1000のビブラートスイッチのオン/オフ情報を自動演奏装置本体1に与えるためのライン、を含む。
以上のように、2台の自動演奏装置本体1,1000を接続することで、二人の操作者で、自動演奏やゲームを楽しむことができる。例えば、図9のランニングゲームの応用として、図52に示すように、2つのキャラクタ73,415を登場させ、一方を自動演奏装置本体1の操作者に制御させ、他方を自動演奏装置本体1000の操作者に制御させることで、両者を競争させることもできる。なお、図52の画面には、図9の画像に加えて、キャラクタ415に対するタイム表示部260及び現在位置指示オブジェクト261が表示される。
(4)図15の例では、光ファイバ91と光ファイバ92との距離をL/4として、パルス信号Aとパルス信号Bとの位相差が、−90度又は90度になるようにした。しかし、この距離は、これに限定されるものではない。
(5)実施の形態では、摺動操作部材2の摺動速さが、予め定められた閾値より大きくなり、かつ、摺動操作部材2の摺動方向が変化した場合に、トリガを発生させた。しかし、トリガの条件はこれに限定されない。例えば、摺動操作部材2の摺動速さが、予め定められた閾値より大きくなったことのみを条件にトリガを発生させてもよいし、あるいは、摺動操作部材2の摺動方向が変化したことのみを条件にトリガを発生させてもよい。
(6)図14の高速プロセッサ200として、任意の種類のプロセッサを使用できるが、本件出願人が既に特許出願している高速プロセッサ(商品名:XaviX)を用いることが好ましい。この高速プロセッサは、例えば、特開平10−307790号公報およびこれに対応するアメリカ特許第6,070,205号に詳細に開示されている。
1,1000…自動演奏装置本体(画像信号生成装置本体)、2,3…摺動操作部材、10…胴部、11…スピーカ部、12a,12b…選択キー、12c…キャンセルキー、12d…決定キー、12e…ビブラートスイッチ、15…表示部、16…ボリュームダイヤル、17…ヘッドホン端子、18,81…AV端子、19…電源端子、20…ネック部、22…コネクタ、23…カートリッジソケット、24…電源スイッチ、25…リセットスイッチ、27…カートリッジ挿入口、29…メモリカートリッジ、30…検知部、31,32…ガイド、33…被摺動部、34,35…フォトトランジスタ、36…発光ダイオード、41…底面、42…側面、43…反射パターン、44…光吸収部、45…光反射部、50…ACアダプタ、60…AVケーブル、80…テレビジョンモニタ、82…スクリーン、91,300…外部ROM、100…発音長指示バー、101…操作指示枠、102…操作指示マーク、103…インジケータ、104…縦棒、120…キースイッチ群、200…高速プロセッサ、201…CPU、202…グラフィックプロセッサ、203…サウンドプロセッサ、204…DMAコントローラ、205…第1バス調停回路、206…第2バス調停回路、207…内部メモリ、208…ADC(A/Dコンバータ)、209…入出力制御回路、210…タイマ回路、211…DRAMリフレッシュ制御回路、212…外部メモリインタフェース回路、213…クロックドライバ、214…PLL回路、215…低電圧検出回路、216…水晶振動子、217…バッテリ、218…第1バス、219…第2バス、220…割込み要求信号、222…第1バス調停信号、223…第2バス調停信号、224…バッテリバックアップ制御信号、225…クロック信号、226,227…リセット信号、228…サイクル終了信号、270,450…制御回路、271…DACブロック、272…ローカルメモリ、275…メインボリュームDAC、276… チャンネルボリュームDAC、277… エンベロープ(L)DAC、278… 波形DAC、279… エンベロープ(R)DAC、280… 波形DAC、281,282…ミキシング回路、283… チャンネルブロック、301…プログラム、304…画像データ、305…オブジェクト画像データ、306…背景画像データ、307…楽曲データ、308…楽譜データ、309…音源データ、400…外部バス、411…ケーブル、451…スプライトメモリ、452…画素バッファ、453…カラーパレット、90…光センサユニット、91,92…光ファイバ、93…密着部材、94…基板、74…背景、73,415…キャラクタ、71,261…現在位置指示ブジェクト、70…トータル距離指示バー、72,260…タイム表示部、88…マスク、75…入力通知バー、76…風船オブジェクト、77…窓オブジェクト、78…ライフオブジェクト、79…落下オブジェクト、302…バックグラウンドスクリーン、252,255…検知回路、254…アンプ、253…ヒステリシス回路、303…背景画像、n−0〜n−6…音符マーク、sp1〜sp4…スプライト。
Claims (14)
- 被摺動体と、
前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、
前記摺動操作部材の摺動速さに応じた画像信号を生成するプロセッサと、を備え、
前記被摺動体は、前記摺動操作部材の前記摺動速さを計測する計測手段を含む、画像信号生成装置。 - 被摺動体と、
前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、
摺動方向を変えることなく行われた前記摺動操作部材の摺動時間に応じた画像信号を生成するプロセッサと、を備え、
前記被摺動体は、前記摺動操作部材の前記摺動時間を計測する計測手段を含む、画像信号生成装置。 - 被摺動体と、
前記被摺動体の被摺動部と接触した状態で摺り動かされる摺動操作部材と、
前記摺動操作部材の摺動方向に応じた画像信号を生成するプロセッサと、を備え、
前記被摺動体は、前記摺動操作部材の前記摺動方向を計測する計測手段を含む、画像信号生成装置。 - 前記被摺動体の前記計測手段は、発光素子及び受光素子を有する光センサを含み、
前記摺動操作部材には、その長手方向に、異なる光学特性を有する第1の受光領域及び第2の受光領域が交互に形成され、
前記受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、電気信号に変換し、
前記プロセッサは、前記受光素子が出力する前記電気信号に応じた前記画像信号を生成する、請求項1又は2記載の画像信号生成装置。 - 前記被摺動体の前記計測手段は、発光素子、第1の受光素子、及び、第2の受光素子、を有する光センサを含み、
前記摺動操作部材には、その長手方向に、異なる光学特性を有する第1の受光領域及び第2の受光領域が交互に形成され、
前記第1の受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、第1の電気信号に変換し、
前記第2の受光素子は、前記発光素子が発光し、前記摺動操作部材の前記第1の受光領域を介した光を受光して、第2の電気信号に変換し、
前記第1の受光素子と前記第2の受光素子とは、前記摺動操作部材の摺動方向に、所定間隔をおいて配置され、かつ、その所定間隔は、前記第1の電気信号と前記第2の電気信号との間に一定の位相差が生じる間隔であり、
前記プロセッサは、前記第1の電気信号及び前記第2の電気信号に応じた前記画像信号を生成する、請求項1から3記載の画像信号生成装置。 - 前記プロセッサは、前記摺動操作部材の前記摺動速さに応じて、ディスプレイ上のキャラクタ画像の移動速度を制御する、請求項1、4、又は5記載の画像信号生成装置。
- 前記プロセッサは、前記摺動操作部材の前記摺動時間に応じて、ディスプレイ上のキャラクタ画像の移動距離を制御する、請求項2、4、又は5記載の画像信号生成装置。
- 前記プロセッサは、前記摺動操作部材の前記摺動方向に応じて、ディスプレイ上のキャラクタ画像の移動方向を制御する、請求項3又は5記載の画像信号生成装置。
- 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動速さを計測するステップと、
前記摺動操作部材の前記摺動速さに応じた画像信号を生成するステップと、をコンピュータに実行させる画像信号生成プログラム。 - 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動時間を計測するステップと、
摺動方向を変えることなく行われた前記摺動操作部材の前記摺動時間に応じた画像信号を生成するステップと、をコンピュータに実行させる画像信号生成プログラム。 - 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動方向を計測するステップと、
前記摺動操作部材の前記摺動方向に応じた画像信号を生成するステップと、をコンピュータに実行させる画像信号生成プログラム。 - 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動速さを計測するステップと、
前記摺動操作部材の前記摺動速さに応じた画像信号を生成するステップと、を含む画像信号生成方法。 - 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動時間を計測するステップと、
摺動方向を変えることなく行われた前記摺動操作部材の前記摺動時間に応じた画像信号を生成するステップと、を含む画像信号生成方法。 - 被摺動体と接触した状態で摺り動かされる摺動操作部材の摺動方向を計測するステップと、
前記摺動操作部材の前記摺動方向に応じた画像信号を生成するステップと、を含む画像信号生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005011316A JP2005230532A (ja) | 2004-01-20 | 2005-01-19 | 画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004012168 | 2004-01-20 | ||
JP2005011316A JP2005230532A (ja) | 2004-01-20 | 2005-01-19 | 画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005230532A true JP2005230532A (ja) | 2005-09-02 |
Family
ID=35014061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005011316A Pending JP2005230532A (ja) | 2004-01-20 | 2005-01-19 | 画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005230532A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007132961A (ja) * | 2005-11-07 | 2007-05-31 | Shinsedai Kk | マルチメディアプロセッサ及びサウンドプロセッサ |
JP2010238097A (ja) * | 2009-03-31 | 2010-10-21 | Sony Ericsson Mobilecommunications Japan Inc | 画像合成装置、画像合成制御方法及び画像合成制御プログラム |
JP2011011008A (ja) * | 2009-07-06 | 2011-01-20 | Konami Digital Entertainment Co Ltd | ゲーム装置、ゲーム処理方法、ならびに、プログラム |
CN114398019A (zh) * | 2022-01-24 | 2022-04-26 | 广州文石信息科技有限公司 | 屏幕更新请求的处理方法、装置及电子墨水屏设备 |
JP2023036650A (ja) * | 2018-05-10 | 2023-03-14 | 株式会社 ディー・エヌ・エー | 動画を配信するためのシステム、方法、及びプログラム |
-
2005
- 2005-01-19 JP JP2005011316A patent/JP2005230532A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007132961A (ja) * | 2005-11-07 | 2007-05-31 | Shinsedai Kk | マルチメディアプロセッサ及びサウンドプロセッサ |
JP2010238097A (ja) * | 2009-03-31 | 2010-10-21 | Sony Ericsson Mobilecommunications Japan Inc | 画像合成装置、画像合成制御方法及び画像合成制御プログラム |
JP2011011008A (ja) * | 2009-07-06 | 2011-01-20 | Konami Digital Entertainment Co Ltd | ゲーム装置、ゲーム処理方法、ならびに、プログラム |
JP2023036650A (ja) * | 2018-05-10 | 2023-03-14 | 株式会社 ディー・エヌ・エー | 動画を配信するためのシステム、方法、及びプログラム |
CN114398019A (zh) * | 2022-01-24 | 2022-04-26 | 广州文石信息科技有限公司 | 屏幕更新请求的处理方法、装置及电子墨水屏设备 |
CN114398019B (zh) * | 2022-01-24 | 2024-02-23 | 广州文石信息科技有限公司 | 屏幕更新请求的处理方法、装置及电子墨水屏设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7297864B2 (en) | Image signal generating apparatus, an image signal generating program and an image signal generating method | |
JP4654390B2 (ja) | 自動演奏装置、自動演奏方法、及び、自動演奏プログラム | |
US7682237B2 (en) | Music game with strike sounds changing in quality in the progress of music and entertainment music system | |
US7607983B2 (en) | Game program and game device using touch panel | |
JP2005230532A (ja) | 画像信号生成装置、画像信号生成プログラム、及び、画像信号生成方法 | |
US20080146303A1 (en) | Game for moving an object on a screen in response to movement of an operation article | |
JP2013190690A (ja) | 演奏装置及びプログラム | |
US7112738B2 (en) | Electronic musical instrument | |
JP2013040991A (ja) | 操作子、操作方法及びプログラム | |
JP7176548B2 (ja) | 電子楽器、電子楽器の発音方法、及びプログラム | |
JP3339217B2 (ja) | 楽譜表示装置 | |
JP3286683B2 (ja) | 旋律合成装置及び旋律合成方法 | |
US5164529A (en) | Interruption control apparatus for use in performance information processing system | |
JP4613854B2 (ja) | 演奏装置 | |
KR19990068392A (ko) | 댄스연습및게임이가능한노래반주시스템및그방법 | |
JP5821170B2 (ja) | 電子音楽装置及びプログラム | |
JP2008279250A (ja) | ウエイトトレーニング支援装置及びウエイトトレーニング支援プログラム | |
JP3942720B2 (ja) | 楽音生成装置、画像生成装置、ゲーム装置及び情報記憶媒体 | |
US20230267901A1 (en) | Signal generation device, electronic musical instrument, electronic keyboard device, electronic apparatus, and signal generation method | |
JP4172335B2 (ja) | 自動伴奏生成装置及びプログラム | |
JP2879098B2 (ja) | テレビゲーム機及びその音響信号発生方法 | |
JP2007279490A (ja) | 電子楽器 | |
JP2009031565A (ja) | 楽音及び映像生成装置 | |
US20120172099A1 (en) | Music game system, computer program of same, and method of generating sound effect data | |
JP5348173B2 (ja) | 電子情報処理装置及びプログラム |