以下、本発明の実施の形態について、図面を参照しながら説明する。なお、各図面において、同一の部分については、同一の参照符号を付している。
(実施の形態1)
図1は、本発明の実施の形態1における自動演奏システムの全体構成を示す図である。図2(a)は、図1の自動演奏装置本体1の平面図である。図2(b)は、図1の自動演奏装置本体1の側面図である。図3は、図1の自動演奏装置本体1の底面図である。図1に示すように、この自動演奏システムは、自動演奏装置本体1、摺動操作部材40、及び、テレビジョンモニタ80、を含む。ここで、自動演奏装置本体1及び摺動操作部材40は、自動演奏装置を構成する。
本実施の形態では、自動演奏装置本体1の形状の1例として、バイオリンを模した形状を挙げている。従って、この例では、摺動操作部材40は、言わば弓に相当する。
図2(a)に示すように、自動演奏装置本体1の胴部10の表面には、ガイド31,32、被摺動鞍部33、選択キー12a,12b、キャンセルキー12c、決定キー12d、及び、表示部15、が設けられる。また、図2(b)に示すように、胴部10の側面には、ボリュームダイヤル16、ヘッドホン端子17、AV端子18、電源端子19、及び、コネクタ22、が設けられる。さらに、図3に示すように、胴部10の底面には、ハードウエアをリセットするリセットスイッチ25、電源スイッチ24、スピーカ部11、電池ボックス26、及び、カートリッジ挿入口27、が設けられる。このカートリッジ挿入口27の底部には、カートリッジソケット23が設けられる。
カートリッジソケット23には、ROM(read only memory)を内蔵した図1のメモリカートリッジ29が装着される。また、EEPROM(electrically erasable and programable read only memory)を内蔵したメモリカートリッジ29を装着して使用することもできる。なお、メモリカートリッジ29に内蔵されるメモリは、これらに限定されるものではない。
図1に戻って、自動演奏装置本体1のネック部20の表面には、発音する楽音にビブラートを付加するためのビブラートスイッチ12eが設けられる。また、テレビジョンモニタ80には、その前面にスクリーン82が設けられ、スクリーン82の下部にAV端子81が設けられる。
そして、自動演奏装置本体1とテレビジョンモニタ80とは、AVケーブル60により接続される。具体的には、自動演奏装置本体1のAV端子18とテレビジョンモニタ80のAV端子81とが、AVケーブル60により接続される。また、自動演奏装置本体1には、ACアダプタ50により、電源端子19を介して、直流電源電圧が与えられる。ただし、ACアダプタ50に代えて、電池(図示せず)により、直流電源電圧を与えることもできる。また、自動演奏装置本体1に、ヘッドホン70を接続して使用することもできる。この場合、ヘッドホン70は、ヘッドホン端子17に接続される。
再び図2(a)(b)を参照して、ガイド31とガイド32とは、被摺動鞍部33を挟むように設けられる。ガイド31,32は、三角柱状に形成され、平面視において、対向するそれぞれの頂部は丸みを帯びている。被摺動鞍部33は、断面視において、中央付近が高く、両側が低くなっている(山状)。
操作者は、そのような被摺動鞍部33に摺動操作部材40を接触させた状態で摺り動かし、自動演奏装置による自動演奏を制御する。つまり、操作者は、摺動操作部材40を操作してトリガを発生させる。すると、トリガが発生する度に、楽曲の一音一音が発音される。トリガは、摺動操作部材40の自動演奏装置本体1に対する相対的な速さ(摺動速さ)が、予め定められた閾値より大きくなり、かつ、摺動操作部材40の摺動方向が変化した場合に発生する。また、摺動操作部材40の摺動速さに応じて、楽音の音量が制御される。
このようなトリガを発生させるための道具である摺動操作部材40の動きの自由度について説明する。図4は、操作者が図1の演奏操作部材40を動かし得る範囲の説明図である。図4は、図2(a)に対応しており、ガイド31,32を平面視したものである。ここで、XYZの3次元座標を考える。なお、Z軸は、紙面に垂直な方向とする。
操作者は、摺動操作部材40を被摺動鞍部33に接触させた状態で、XY平面に平行に摺り動かすことができる。また、操作者は、X軸に対して最大で角度θ1だけ、摺動操作部材40をZ軸の周りに回転させることができる。この角度θ1は、ガイド31,32の頂角θ2により規定される。なお、操作者は、XY平面に平行に摺動操作部材40を摺り動かしながら、摺動操作部材40をZ軸の周りに回転させることもできるし、その逆も可能である。
図5は、図2(a)に示す被摺動鞍部33のA−A断面図(内部構造を省略)である。操作者は、摺動操作部材40を被摺動鞍部33の頂部に接触させた状態で、ZX平面(図4と同じ3次元座標)に平行に摺動させることができる。また、操作者は、被摺動鞍部33の頂部を支点として、摺動操作部材40をY軸の周りに回転させることができる。ただし、回転角度は、被摺動鞍部33の頂角の大きさにより制限される。なお、操作者は、ZX平面に平行に摺動操作部材40を摺動させながら、被摺動鞍部33の頂部を支点として回転させることもできるし、その逆も可能である。
図6(a)は、図1の摺動操作部材40の側面図、図6(b)は、その底面図である。図6(b)に示すように、摺動操作部材40の底面41には、反射パターン43が形成される。この反射パターン43は、交互に形成される光反射部45と光吸収部44とからなる。光反射部45は受けた光を反射し、光吸収部44は、受けた光を吸収する。ただし、光反射部45は受けた光の全てを反射するものではなく、光吸収部44は、受けた光の全てを吸収するものではない。操作者は、この摺動操作部材40の底面41を、被摺動鞍部33に接触した状態で摺り動かす。
図7は、図2(a)に示したガイド31,32及び被摺動鞍部33の拡大図である。図7に示すように、被摺動鞍部33の内部には、フォトトランジスタ34,35及び発光ダイオード36が配置される。フォトトランジスタ34とフォトトランジスタ35とは、X軸方向に並んで配置される。また、発光ダイオード36は、フォトトランジスタ34とフォトトランジスタ35とを結ぶ直線を二分するように、Y軸方向に下ろされた垂線上に設けられる。この発光ダイオード36は、赤外光を発生する。そして、フォトトランジスタ34,35が、発光ダイオード36が発生する赤外光だけを検知できるように、被摺動鞍部33は、赤外光だけを通過させる赤外フィルタとしての機能を有している。なお、フォトトランジスタ34,35及び発光ダイオード36は、反射型の光センサを構成する。
また、ガイド31,32の頂部には、丸みを持たせている。これは、摺動操作部材40が接触しても、滑らかに摺動操作部材40を動かすことができるようにするため、及び、摺動操作部材40の接触を原因とした、摺動操作部材40及びガイド31,32の劣化を防止するため、である。
図8は、図7の被摺動鞍部33のB−B断面図である。図8に示すように、被摺動鞍部33は、断面視において、山状となっており、さらに、その頂部は扁平になっている。頂部を扁平にしたのは、フォトトランジスタ34,35及び発光ダイオード36の頭頂部から、被摺動鞍部33の頂部までの距離を、この3つの素子でほぼ同じにするためである。こうすることで、フォトトランジスタ34とフォトトランジスタ35とで、受光する赤外光の強度を近づけることができる。
図9(a)は、図1の摺動操作部材40の他の例の側面図、図9(b)は、その底面図である。図9(a)に示すように、この摺動操作部材40の側面42には、反射パターン43が形成される。操作者は、この摺動操作部材40の底面41を、被摺動鞍部33に接触した状態で摺り動かす。この場合は、フォトトランジスタ34,35及び発光ダイオード36は、被摺動鞍部33に内蔵されるのではなく、ガイド31又はガイド32のいずれか一方に内蔵される。
図10は、図9(a)(b)に示した摺動操作部材40を使用する場合に用いる反射型の光センサの配置を示す図である。図10に示すように、ガイド31の内部に、フォトトランジスタ34,35及び発光ダイオード36が設けられる。フォトトランジスタ34とフォトトランジスタ35とは、X軸方向に並んで配置される。また、発光ダイオード36は、フォトトランジスタ34,35の陰になり図には現れていないが、フォトトランジスタ34とフォトトランジスタ35とを結ぶ直線を二分するように、Z軸方向に下ろされた垂線上に設けられる。そして、フォトトランジスタ34,35が、発光ダイオード36が発生する赤外光だけを検知できるように、ガイド31は、赤外光だけを通過させる赤外フィルタとしての機能を有している。なお、フォトトランジスタ34,35及び発光ダイオード36をガイド32に設けることもでき、この場合は、反射パターン43は、摺動操作部材40の他方の側面に形成される。また、ガイド31,32の頂部を扁平にした理由は、図8の被摺動鞍部33の頂部を扁平にした理由と同じである。
図11は、図10の被摺動鞍部33のC−C断面図である。図11に示すように、被摺動鞍部33は、中央付近が高く、両側が低くなっている(山状)。その頂部は丸みを帯びている。これは、図7のガイド31,32の頂部に丸みを持たせた理由と同じである。
次に、図1の自動演奏システムによる自動演奏について説明する。操作者は、自動演奏装置本体1とテレビジョンモニタ80とを、AVケーブル60により接続する。そして、図3の電源スイッチ24をオンにする。この電源スイッチ24は、スライド式のスイッチであり、中央がオフ、一方端がテレビジョンモニタ80のスピーカ(図示せず)から楽音が出力されるモード(テレビジョンモード)のオン、他方端が胴部10のスピーカ部11から楽音が出力されるモード(スピーカモード)のオン、である。なお、ヘッドホン70及びスピーカ部11から出力される楽音の音量は、ボリュームダイヤル16により調節する。さて、電源スイッチ24がオンされて、テレビジョンモードになると、スクリーン82に、操作スタイル選択画面が表示される。
図12は、図1のスクリーン82に表示される操作スタイル選択画面の例示図である。図12に示すように、スクリーン82には、4つの操作スタイルが表示される。操作者は、選択キー12a,12bにより、いずれかの操作スタイルを選択し、決定キー12dを押下する。
ここで、図12に示した操作スタイルについて簡単に説明する。「ソロ」は、BGM(background music)及び操作ガイドなしで、操作者が自動演奏装置による自動演奏を制御できるモードである。「BGM付き」は、BGMありで、かつ、操作ガイドなしに、操作者が自動演奏装置による自動演奏を制御できるモードである。「BGM、ガイド付き」は、BGM及び操作ガイドありで、操作者が自動演奏装置による自動演奏を制御できるモードである。「再生」は、操作者が自動演奏を制御することなく、自動演奏装置本体1が楽曲を再生するモードである。
操作者が操作スタイルを選択すると、次に、楽曲選択画面が、スクリーン82に表示される。図13は、図1のスクリーン82に表示される楽曲選択画面の例示図である。図13に示すように、この例では、曲A〜曲Eの中から希望の曲を選択できる。操作者は、選択キー12a,12bにより曲を選択し、決定キー12dを押下する。なお、表示部15には、選択した曲の番号が表示される。
操作者が曲を選択し確定すると、演奏を開始できる。「ソロ」、「BGM付き」、及び、「BGM、ガイド付き」では、操作者が摺動操作部材40を操作することで、選択した曲の自動演奏を制御できる。
操作者が、「BGM、ガイド付き」を選択した場合を例に挙げて、操作者が自動演奏装置による自動演奏を制御するモードについて説明する。図14は、図1のスクリーン82に表示される操作ガイド画面の例示図である。図14に示すように、操作者が、「BGM、ガイド付き」を選択した場合は、スクリーン82には、操作ガイド画面が表示される。具体的には次の通りである。
この操作ガイド画面の上枠の近傍には、操作者が選択した曲名が表示される。この例では、曲名として、曲Aが表示されている。曲名の下段には、インジケータ103が表示される。このインジケータ103は、BGMの進行状況を表す。すなわち、インジケータ103を構成する帯状の長方形の長さが、曲A全体の時間的な長さを表す。そして、BGMの進行に従って、インジケータ103の色を特定の色に変化させていくことで、現在発音されているBGMの時間的な位置を表す。
このため、BGMの発音が進むに従って、インジケータ103において、特定の色に変化した部分の面積が増加し、曲Aの最後には、インジケータ103の全てが特定の色に変化する。なお、図14では、特定の色を斜線で表している。
さらに、インジケータ103に重ねて、操作者の現在の操作位置を表す縦棒104が表示される。従って、操作者は、適切な操作位置に対して、どの程度ずれて操作しているかを把握できる。つまり、インジケータ103において、特定の色に変化した部分の先端(右端)が、現在の適切な操作位置であるため、この先端(右端)の位置と、操作者の現在の操作位置を表す縦棒104の位置と、を比較すれば、現在自分がどの程度ずれて操作しているかを把握できる。ここで言う操作位置とは、楽曲全体の時間を表す時間軸上の位置のことである。
また、インジケータ103の下段には、操作ガイドとして、音符マークn−0、…、n−6、…、が表示される。ここで、音符マークn−0、…、n−6、…、を包括的に表現する場合は、音符マークnと表記する。
この音符マークnは、スクリーン82の右端に出現し、BGMのテンポに従って、左方向に移動し、スクリーンの左端に到達して消滅する。この音符マークnが、操作指示枠101に入った時あるいは操作指示マーク102の真上に来たときに、操作者が摺動操作部材40を操作してトリガを発生させると、自動演奏装置は、BGMの進行に合った楽音を発生させる。
また、この音符マークnの間隔は、選択した曲Aの楽譜での音符の時間軸上の間隔を表している。従って、操作者は、この間隔を見ることで、摺動操作部材40の操作のタイミングを直感的に把握できる。ここで、摺動操作部材40の操作のタイミングとは、トリガを発生させるタイミングのことである。
さらに、音符マークnに付随した発音長指示バー100は、発音する長さを表している。従って、操作者は、この発音長指示バー100を見ることで、その発音を持続させる期間を直感的に把握できる。なお、音符マークn−1に付随する発音長指示バー100は、次の音符マークn−2まで延びていない。これは、この発音長指示バー100の終端(右端)に休符があることを示している。
さらに、操作者が摺動操作部材40を操作して、自動演奏装置が楽音を発生させると、発生させた楽音に対応する音符マークn及びその音符マークnに付随する発音長指示バー100の色が変化する。これにより、操作者は、自動演奏装置がトリガに応じて現在どの音符マークnに対応した楽音を発生しているかを直感的に知ることができる。
さらに、スクリーン82には、シンクロ値99が表示される。このシンクロ値99は、操作者の操作が本来のタイミングからどのくらいずれているかを数値で示す。
次に、自動演奏装置本体1の電気的な構成について説明する。図15は、図1の自動演奏装置本体1の電気的な構成を示す図である。図15に示すように、自動演奏装置本体1は、検知部30、キースイッチ群120、AV端子18、高速プロセッサ200、ROM300、及び、バス400、を含む。キースイッチ群120は、決定キー12d、キャンセルキー12c、選択キー12a,12b、及び、ビブラートスイッチ12e、を含む。
図16は、図15のROM300に格納されるプログラム及びデータの概念図である。図16に示すように、ROM300には、制御プログラム301、画像データ302、及び、楽曲データ305が格納される。画像データ302は、オブジェクト画像データ303及び背景画像データ304を含む。楽曲データ305は、楽譜データ306及び音源データ307を含む。
図15に戻って、高速プロセッサ200には、バス400が接続される。さらに、バス400には、ROM300が接続される。従って、高速プロセッサ200は、バス400を介して、ROM300にアクセスすることができるので、ROM300に格納された制御プログラム301をリードして実行でき、また、ROM300に格納された画像データ302及び楽曲データ305をリードして処理することができる。
ここで、ROM300に格納された制御プログラム301、画像データ302及び楽曲データ305を、メモリカートリッジ29のROM91に格納して、このメモリカートリッジ29を、ソケット23に装着することで、これらのプログラム及びデータを利用するようにすることもできる。メモリカートリッジ29にEEPROMが内蔵されていても同様である。このように、書き換えが可能なメモリを用いると、ユーザが、メモリに楽譜データを自由に書き込んで、書き込んだ楽譜データを基に、自動演奏を行うこともできる。
つまり、高速プロセッサ200は、バス400を介して、装着されたメモリカートリッジ29に内蔵されるROM91にアクセスできるので、ROM91に格納された制御プログラム301をリードして実行でき、また、ROM91に格納された画像データ302及び楽曲データ305をリードして処理することができる。
さらに、高速プロセッサ200は、検知部30のフォトトランジスタ34,35(図7参照)からのパルス信号を受けて、摺動操作部材40の摺動方向及び摺動速さを求める。さらに、高速プロセッサ200は、キースイッチ群120の各キー12a〜12eからのオン/オフ信号を受けて、各キー12a〜12eにより指示された処理を実行する。
図17は、図15の高速プロセッサ200のブロック図である。図17に示すように、この高速プロセッサ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に格納されたデータを基に、楽音信号AR,ALを生成して、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バス使用許可信号は、図17では、第1バス調停信号222として示されている。
第2バス調停回路206は、第2バス219の各バスマスタからの第2バス使用要求信号を受け付け、調停を行い、各バスマスタへの第2バス使用許可信号を発行する。各バスマスタは、第2バス使用許可信号を受領することによって第2バス219に対するアクセスが許可される。ここで、第2バス使用要求信号及び第2バス使用許可信号は、図17では、第2バス調停信号223として示されている。
入出力制御回路209は、外部入出力装置や外部の半導体素子との通信等を入出力信号を介して行う。入出力信号は、第1バス218を介して、CPU201からリード/ライトされる。なお、入出力信号は、プログラマブルな入出力ポートを介して入出力される。また、入出力制御回路209は、CPU201に対して、割込み要求信号220を発生する機能を有する。
上述した検知部30からのパルス信号A,B,a、及び、キースイッチ群120の各キー12a〜12eからのオン/オフ信号は、それぞれ、例えば入出力ポートIO0〜IO7を介して、入出力制御回路209に入力される。
タイマ回路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を含む場合に設けられる。
次に、摺動操作部材40の摺動速さ及び摺動方向を求める方法を詳細に説明する。図18は、図15の検知部30のフォトトランジスタ34,35の配置と、摺動操作部材40の反射パターン43と、の関係を示す図である。図18に示すように、摺動操作部材40の反射パターン43において、光反射部45の幅及び光吸収部44の幅の合計距離をLとする。この場合、フォトトランジスタ34とフォトトランジスタ35とを、L/4だけ離して配置する。
フォトトランジスタ34,35は、発光ダイオード36により発光され、反射パターン43で反射された赤外光を受光する。反射パターン43は、光反射部45及び光吸収部44を交互に配置して形成されるため、摺動操作部材40が操作されると、フォトトランジスタ34,35には、間欠的に赤外光が入射することになる。従って、摺動操作部材40が操作されると、フォトトランジスタ34,35は、摺動操作部材40の摺動速さに応じた周波数のパルス信号を出力する。つまり、摺動操作部材40の摺動速さが大きいほど、フォトトランジスタ34,35が出力するパルス信号の周波数は高くなる。一方、摺動速さが小さいほど、フォトトランジスタ34,35が出力するパルス信号の周波数は低くなる。
フォトトランジスタ34とフォトトランジスタ35とは、L/4だけ離して配置されているため、フォトトランジスタ34が出力するパルス信号とフォトトランジスタ35が出力するパルス信号との位相差は、摺動操作部材40の摺動方向によって、(90度)あるいは(−90度)になる。この点を詳細に説明する。
図19(a)は、図5のX軸の正方向に摺動操作部材40を移動させたときの、フォトトランジスタ34,35が出力するパルス信号A,Bを示す図、図19(b)は、X軸の負方向に摺動操作部材40を移動させたときの、フォトトランジスタ34,35が出力するパルス信号A,Bを示す図である。なお、図19(a)(b)においては、説明の便宜のため、摺動操作部材40が一定の速さで操作された場合のパルス信号を示している。
図19(a)(b)に示すように、フォトトランジスタ34が出力するパルス信号Aとフォトトランジスタ35が出力するパルス信号Bとの位相差は、それぞれ(90度)及び(−90度)になっている。そこで、摺動操作部材40がX軸の正方向に操作された場合と負方向に操作された場合とでは、パルス信号A,Bの状態遷移の方向が異なる。この点を詳しく説明する。
図20は、フォトトランジスタ34,35が出力するパルス信号A,Bの状態遷移を示す図である。摺動操作部材40がX軸の正方向に操作される場合は(図19(a)に対応)、図20に示すように、パルス信号A,Bの状態は、時計回りに遷移する。一方、摺動操作部材40がX軸の負方向に操作される場合は(図19(b)に対応)、図20に示すように、パルス信号A,Bの状態は、半時計回りに遷移する。
このような状態遷移を検知することで、摺動操作部材40の摺動方向を求めることができる。つまり、パルス信号A,Bの状態が、時計回りに遷移する場合は、摺動操作部材40が正方向に動いていることを意味し、パルス信号A,Bの状態が、半時計回りに遷移する場合は、摺動操作部材40が負方向に動いていることを意味する。この状態遷移の検出には、図17の入出力制御回路209に含まれるカウンタ290が利用される。
図21は、図17の入出力制御回路209の一部を示すブロック図である。図21に示すように、入出力制御回路209は、カウンタ290及びエッジ検出回路293を含む。カウンタ290は、遷移検出回路291及び速度レジスタ292を含む。
遷移検出回路291は、検知部30のフォトトランジスタ34,35から入力されるパルス信号A,Bの状態遷移を検知し、遷移回数をカウントする。そして、遷移検出回路291は、カウント値を速度レジスタ292に格納する。
より詳細には、遷移検出回路291は、速度レジスタ292の値を取得し、状態遷移の方向に応じて、その値をインクリメントあるいはデクリメントし、その結果を速度レジスタ292に格納する。ここで、遷移検出回路291は、図20に示す時計回りの状態遷移を検知した場合は(図19(a)に対応)、インクリメントを実行する。一方、遷移検出回路291は、半時計回りの状態遷移を検知した場合は(図19(b)に対応)、デクリメントを実行する。
図19(a)の例では、パルス信号A,Bの状態遷移の方向は時計回りであるため、遷移検知回路291は、状態遷移を検知する度に、1、2、…、とアップカウントを行い、速度レジスタ292にカウント値を格納する。図19(b)の例では、パルス信号A,Bの状態遷移の方向は半時計回りであるため、遷移検知回路291は、状態遷移を検知する度に、−1、−2、…、とダウンカウントを行い、速度レジスタ292にカウント値を格納する。
従って、速度レジスタ292に格納されたカウント値の符号により、状態遷移の方向が分かり、それにより、摺動操作部材40の摺動方向を知ることができる。
さらに、所定時間(例えば、1フレーム)当たりの速度レジスタ292のカウント値は、摺動操作部材40の摺動速度v0を表す。この場合、速度レジスタ292のカウント値v0の移動平均(単に、「平均」と呼ぶこともある。)を、摺動速速度v1とする。このようにして、摺動操作部材40の摺動速さ|v1|(=V1)を知ることができるが、次のようにして、摺動操作部材40の摺動速さを知ることもできる。
図22は、摺動操作部材40の摺動速さを知るための他の方法の説明図である。図22に示すように、入出力制御回路209のエッジ検出回路293は、フォトトランジスタ34が出力するパルス信号aの立ち下がりエッジを検知して、割込み要求信号を発生する。CPU201は、割込み要求信号が与えられると、タイマ回路210からタイマ値を読み込む。そして、CPU201は、今回のタイマ値と前回のタイマ値との差を求めて、パルス信号aの一周期の時間(パルス周期)を取得する。このように、CPU201は、割込み要求信号に応答して、タイマ値を読み込み、今回と前回のタイマ値の差を算出して、パルス周期t0、t1、t2、t3、…を取得する。そして、CPU201は、パルス周期の移動平均(N周期分:Nは2以上の整数)を求める。その移動平均の逆数が、摺動操作部材40の摺動速さV2である。例えば、N=4とし、今回、前回、前々回、3回前のパルス周期がそれぞれ、t3、t2、t1、t0であるとすると、V2=4/(t0+t1+t2+t3)、である。ここで、Nを、サンプル数と呼ぶこともある。
自動演奏装置本体1に内蔵される図15の検知部30について説明する。図23は、自動演奏装置本体1に内蔵される検知部30の回路図である。図23に示すように、この検知部30は、発光ダイオード36、フォトトランジスタ34,35、トランジスタ37,38、及び、抵抗素子51〜57、を含む。
抵抗素子57の一方端は、電源Vccに接続され、他方端は、発光ダイオード36のアノードに接続される。発光ダイオード36のカソードは接地される。フォトトランジスタ34,35のコレクタは、電源Vccに接続される。
トランジスタ38のベース、抵抗素子55の一方端、及び、フォトトランジスタ34のエミッタは、抵抗素子52の一方端に接続される。抵抗素子52の他方端は、接地される。トランジスタ38のコレクタ、及び、抵抗素子55の他方端は、抵抗素子56の一方端に接続される。抵抗素子56の他方端は電源Vccに接続される。トランジスタ38のエミッタは接地される。
トランジスタ37のベース、抵抗素子53の一方端、及び、フォトトランジスタ35のエミッタは、抵抗素子51の一方端に接続される。抵抗素子51の他方端は、接地される。トランジスタ37のコレクタ、及び、抵抗素子53の他方端は、抵抗素子54の一方端に接続される。抵抗素子54の他方端は電源Vccに接続される。トランジスタ37のエミッタは接地される。
フォトトランジスタ34が赤外光を受光すると、トランジスタ38がオンして、トランジスタ38のコレクタ端子がローレベルになる。一方、フォトトランジスタ34が赤外光を受光していないときは、トランジスタ38はオフであり、プルアップ抵抗56によって、トランジスタ38のコレクタ端子のハイレベルが維持される。従って、フォトトランジスタ38が間欠的な赤外光を受光すると、検知部30から、パルス信号(電気信号)A,aが出力される。同様に、フォトトランジスタ35が、間欠的な赤外光を受光すると、検知部30から、パルス信号(電気信号)Bが出力される。
ここで、パルス信号aは、パルス信号Aを分岐したものであり、両者は同一の信号である。パルス信号A,Bから求めた、摺動操作部材40の摺動方向及び摺動速さV1は、トリガ処理に用いられる。パルス信号aから求めた、摺動操作部材40の摺動速さV2は、音量制御に用いられる。
ここで、摺動速さV1ではなく、摺動速さV2を音量制御のために利用した理由を説明する。摺動速さV2は、パルス周期を測定して求めたものであるため、摺動速さV1に比べて、摺動操作部材40の動きをより詳細に音量制御に反映できるからである。
図16に戻って、楽曲データ305の詳細を説明する。ROM300に格納されている音源データ307は、波形データ及びエンベロープデータを含む。楽譜データ306は、BGM用の楽譜データ、音符マーク登録用の楽譜データ、及び、トリガによる発音用の楽譜データを含む。
図24は、図16のROM300に格納されているBGM用の楽譜データの説明図である。図24に示すように、BGM用の楽譜データは、コマンド、ノートナンバ/待機時間情報、楽器指定情報、ベロシティ情報、及び、ゲートタイム情報、が時系列に配置されたデータである。ノートオンは、音を出すコマンド、待機は、待機時間を設定するコマンド、である。待機時間は、現在のコマンドを読み出してから次のコマンドを読み出すまでの時間(ある音符から次の音符までの時間)である。ノートナンバは、ピッチ(音の高さ)を指定する情報である。待機時間情報は、待機時間を指定する情報である。楽器指定情報は、どの楽器の音色を使うかを指定する情報である。ベロシティは、音の強弱の情報、つまり、音量の情報、である。ゲートタイムは、音が発音される長さである。
図25は、図16のROM300に格納されている音符マーク登録用の楽譜データの説明図である。図25に示すように、音符マーク登録用の楽譜データは、コマンド、ノートナンバ/待機時間情報、及び、楽器指定情報、が時系列に配置されたデータである。楽器指定情報は、音楽を奏でる楽器(音色)を示す番号ではなく、言わば、音符マークnを出現させる楽器を示す番号である。このような楽器指定情報により、この楽譜データが、音楽を奏でる楽譜データではなく、音符マークnを出現させる楽譜データであることが示される。従って、ノートオンは、音を出すコマンドではなく、音符マークnを出現させるコマンドである。具体的には、対応するノートナンバ「69」により、音符マークnを出現させることが指示される。
また、ノートオフは、音を止めるコマンドではなく、発音長指示バー100の表示の停止を指示するコマンドである。具体的には、対応するノートナンバ「55」により、発音長指示バー100の表示の停止が指示される。また、開始コードは、音符マーク登録用の楽譜データの先頭に配置するコードである。そして、対応するノートナンバ「108」は、音符マーク登録用の楽譜データの先頭を示す情報である。こうすることで、BGM用の楽譜データと音符マーク登録用の楽譜データとの先頭を揃える。また、終了コードは、音符マーク登録用の楽譜データの末尾に配置するコードである。そして、ノートナンバ「84」は、音楽終了を示す情報である。
図26は、図16のROM300に格納されているトリガによる発音用の楽譜データの説明図である。図26に示すように、トリガによる発音用の楽譜データは、ノートナンバ及び楽器指定情報が時系列に配置されたデータである。ノートナンバは、ピッチ(音の高さ)を指定する情報である。楽器指定情報は、どの楽器の音色を使うかを指定する情報である。本実施の形態では、一例として、バイオリンの音色を指定している。なお、発音開始、発音長および音量は、操作部材40の操作によるので、この楽譜データには、待機コマンド及び待機時間情報、並びに、ベロシティ情報及びゲートタイム情報は含まれない。
ここで、発音処理で使用するピッチ制御情報について説明しておく。ピッチ制御情報は、波形データ及びエンベロープデータを読み出す周期を変えることによって行われるピッチ変換に用いられる。つまり、サウンドプロセッサ203は、波形データのためのピッチ制御情報を一定期間毎に読み出して累算する。また、サウンドプロセッサ203は、エンベロープデータのためのピッチ制御情報を一定期間毎に読み出して累算する。そして、サウンドプロセッサ203は、この累算結果を加工して、波形データ及びエンベロープデータのアドレスポインタとする。よって、ピッチ制御情報に大きな値が設定されれば、アドレスポインタのインクリメントは早く行われ、周波数が高くなり、ピッチ制御情報に小さな値が設定されれば、アドレスポインタのインクリメントは遅く行われ、周波数が低くなる。このようにして、サウンドプロセッサ203は、波形データおよびエンベロープデータのピッチ変換を行う。なお、波形データのピッチ制御情報を波形ピッチ制御情報と呼び、エンベロープデータのピッチ制御情報をエンベロープピッチ制御情報と呼ぶ。
次に、画像データ302の詳細を説明する。スクリーン82には、背景画像及び音符マークn等のオブジェクト画像が表示される。背景画像は、例えば、横256画素×縦256画素の画素集合であり、このうちスクリーン82には、横256画素×縦224画素が映し出される。オブジェクト画像は、単数あるいは複数のスプライトにより構成される。このスプライトは、矩形の画素集合である。例えば、スプライトは、横8画素×縦8画素や横16画素×縦16画素からなる。なお、スプライトは、スクリーン82の任意の位置に配置することができる。
図27は、オブジェクト画像を構成するスプライトの説明図である。図27に示すように、例えば、あるオブジェクト画像が、4個のスプライトsp0〜sp3から構成されるとする。オブジェクト画像の表示位置の指定は、左上のスプライトsp0の中心の水平座標xおよび垂直座標yを指定することにより行う。スプライトsp0〜sp3のサイズが分かるので、各スプライトsp0〜sp3の表示位置は容易に計算できる。
ROM300に格納されるオブジェクト画像データ303には、各オブジェクトを構成する各スプライトのサイズおよび画素パターン指定情報、並びに、各オブジェクトの、サイズ、デプス値、カラーパレット情報、水平座標x、および垂直座標yが含まれる。なお、オブジェクトを構成する各スプライトにおいて、デプス値およびカラーパレット情報は共通であり、そのオブジェクトのデプス値およびカラーパレット情報により指定される。
ここで、デプス値は、画素の奥行きを表す情報であり、同じ位置に、複数の画素が存在することとなる場合、最も大きなデプス値を持つ画素だけが表示されることになる。また、画素パターン指定情報は、スプライトを構成する各画素の色を指定する情報である。カラーパレット情報は、カラーパレットを指定する情報である。カラーパレットは、複数の色情報からなる。1つの色情報は、色相(Hue)、彩度(Saturation)、および明度(Brightness)の情報からなる。例えば、あるスプライトに対するカラーパレット情報が指定するカラーパレットが、16色からなるとすると、そのスプライトを構成する各画素の色は、画素パターン指定情報により、16色の中から指定される。
次に、図1の自動演奏装置による処理の流れを説明する。図28は、自動演奏装置の全体処理の流れの一例を示すフローチャートである。図28に示すように、ステップS1にて、CPU201は、システムの初期設定を実行する。ステップS2にて、CPU201は、自動演奏の状態をチェックする。ステップS3にて、CPU201は、自動演奏が終了したかどうかを判断する。CPU201は、自動演奏が終了した場合(後述の音楽終了フラグがオン)は処理を終了し、自動演奏が終了していない場合は、ステップS4に進む。
ステップS4にて、CPU201は、摺動操作部材40の摺動方向及び摺動速さV0を計測して、それらが、トリガ発生条件を満足している場合に、トリガを発生させる(発音フラグオン)。ステップS5にて、CPU201は、トリガに応じて発音する楽音の音量を制御すべく、摺動操作部材40の摺動速さV2に応じて、エンベロープ係数を算出する。
ステップS6にて、CPU201は、トリガによる発音用の楽譜データポインタに従って、波形データのアタック部及びループ部の先頭アドレスを内部メモリ207に格納するとともに、算出されたエンベロープ係数を加味したエンベロープデータを、内部メモリ207に格納する。なお、波形データのアタック部及びループ部やエンベロープデータは、トリガ発音のための楽音関連情報である。ステップS7にて、CPU201は、音符マークn等のオブジェクトの表示に必要なオブジェクト関連情報を内部メモリ207に格納する。
ステップS8では、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。テレビジョンモニタ80の表示画面の更新は、垂直ブランキング期間に行われる。従って、表示画面を更新するための演算処理が完了したら、ビデオ同期割込みがあるまで処理を進めないようにしている。つまり、ステップS8でビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS8に戻る。一方、ステップS8でビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS9に進む。
ステップS9にて、CPU201は、オブジェクト関連情報をグラフィックプロセッサ202に与えるとともに、グラフィックプロセッサ202は、内部メモリ207から背景関連情報を取得する。グラフィックプロセッサ202は、オブジェクト及び背景を表す画像信号VDを生成して(本実施の形態では、コンポジット信号が生成される。)、テレビジョンモニタ80に与える。
ステップS10にて、CPU201は、BGM用の楽譜データに従って、BGM発音のための楽音関連情報を内部メモリ207に格納する。サウンドプロセッサ203は、内部メモリ207から、トリガ発音(ステップS6参照)およびBGM発音のための楽音関連情報を取得して、これらの情報を基に楽音信号AL,ARを生成し、テレビジョンモニタ80に与える。また、ステップS10では、CPU201は、音符マーク登録用の楽譜データに従って、音符マークnを登録する。
図29は、図28のステップS1の初期設定処理の流れの一例を示すフローチャートである。図29に示すように、ステップS30にて、CPU201は、音符マーク登録用の楽譜データポインタを初期化する。ステップS31にて、CPU201は、音符マーク登録用の実行待機カウンタを「0」にセットする。ステップS32にて、CPU201は、BGM用の楽譜データポインタを初期化する。ステップS33にて、CPU201は、BGM用の実行待機カウンタを「t」にセットする。ステップS34にて、CPU201は、トリガによる発音用の楽譜データポインタを初期化する。
ステップS35にて、CPU201は、各種カウンタを初期化する。ステップS36にて、CPU201は、各種フラグを初期化する。ステップS37にて、CPU201は、背景の表示に必要な背景関連情報及びオブジェクト関連情報をそれぞれ内部メモリ207の背景用データ領域およびオブジェクト用データ領域に格納する。
具体的には、次の通りである。背景画像が、例えば、32×32のブロックからなるとする。そして、上記のように、背景画像が、横256画素×縦256画素からを構成されるとすると、1つのブロックは、横8画素×縦8画素からなる。CPU201は、このブロックごとに、デプス値及びカラーパレット情報を内部メモリ207に格納するとともに、ブロックごとに、画素パターン指定情報の格納位置情報を内部メモリ207に格納する。
また、CPU201は、表示対象の全オブジェクトのオブジェクト関連情報(オブジェクトの、サイズ、デプス値、カラーパレット情報、画素パターン指定情報の格納位置情報、水平座標および垂直座標)を内部メモリ207に格納する。
ここで、BGM用の実行待機カウンタを「t」にセットし(ステップS33)、音符マークnの登録用の実行待機カウンタを「0」にセットした(ステップS31)理由は次の通りである。
図14に示されるように、音符マークnが右端に出現してから、操作指示枠101に入るまでに一定時間を要することから、この時間誤差を解消するために、一定時間だけ早く音符マークnを出現させる必要があるからである。つまり、音符マーク登録用では、BGM用に比べて、一定時間(カウント値t)だけ早く楽譜データを読み出すようにしてある。なお、音符マークの登録用の実行待機カウンタ、及び、BGM用の実行待機カウンタは、カウントダウンを行うものである。
図30は、図28のステップS4のトリガ処理の流れの一例を示すフローチャートである。図30に示すように、ステップS50にて、CPU201は、速度レジスタ292を参照して、カウント値つまり摺動速度v0を取得し、速度レジスタ292をリセットする。ステップS51にて、CPU201は、摺動速度v0の符号が正であれば、ステップS53に進み、負であれば、ステップS52に進む。ステップS53では、CPU201は、変数V0(摺動速さ)に、摺動速度v0の値を代入する。一方、ステップS52では、CPU201は、負の値である摺動速度v0の絶対値|v0|を求め、これを変数V0(摺動速さ)に代入する。
ステップS54にて、CPU201は、摺動操作部材40の摺動速さV0が、予め定められた最大値MAXを超えているかどうかを判断する。摺動速さV0が、予め定められた最大値MAXを超えていれば、ステップS55に進み、摺動速さV0に最大値MAXを代入して、ステップS56に進む。一方、最大値MAX以下であれば、CPU201は、そのままステップS56に進む。
ステップS56にて、CPU201は、摺動速さV0が予め定められた閾値ThVを超えているかどうか判断する。摺動速さV0が予め定められた閾値ThVを超えていれば、ステップS57に進み、閾値ThV以下であれば、ステップS63に進む。
ステップS57にて、CPU201は、摺動速度v0及び方向フラグを参照して、摺動操作部材40の摺動方向が変化したかどうかを判断する。この方向フラグは、摺動操作部材40の摺動方向を表すフラグである。例えば、パルス信号A,Bが図20の時計回りに遷移した場合に「01」を保持し(図19(a)に対応)、反時計回りに遷移した場合に「10」を保持し(図19(b)に対応)、リセット値を「00」とする。一方、摺動操作部材40の現在の摺動方向は、ステップS50で取得した摺動速度v0の符号により知ることができる。従って、摺動速度v0の符号が正であり、かつ、方向フラグが「10」である場合や、摺動速度v0の符号が負であり、かつ、方向フラグが「01」である場合は、摺動方向が変化したことになる。なお、自動演奏開始直後では、方向フラグが「00」に初期化された状態なので、摺動速度v0が「0」でないときは(つまり、正あるいは負)、摺動方向の変化が検知される。
そして、ステップS58では、CPU201は、方向フラグを更新する。ステップS59にて、CPU201は、発音フラグをオンにする。つまり、トリガ発生の条件(摺動速さV0が閾値ThVを超えたこと、かつ、摺動方向が変化したこと)を満たしているので、CPU201は、トリガを発生する(発音フラグオン)。
ステップS60にて、CPU201は、発音中フラグをチェックする。発音中フラグは、例えば、発音中でない場合は「00」がセットされ、チャンネルCH0,CH1が発音中であれば「01」がセットされ、チャンネルCH2,CH3が発音中であれば「10」がセットされる。このうち、「00」がオフを意味し、「01」や「10」はオンを意味する。ステップS60では、発音中フラグがオフであればステップS62に進み、オンであればステップS61に進む。ステップS61では、CPU201は、ハードウエアリリースフラグをオンにする。なぜなら、発音中に新たなトリガが発生したからである。
ここで、ハードウエアリリースとは、サウンドプロセッサ203が消音のためのエンベロープデータを生成して、消音(音の減衰処理)を行うことをいう。なお、ハードウエアリリースの代わりに、ソフトウエアリリースを行うことができる。ソフトウエアリリースとは、CPU201が、消音のためのエンベロープデータを用意して、これを、サウンドプロセッサ203に与えることで、サウンドプロセサ203が消音処理(音の減衰処理)を行うことである。
ステップS62では、CPU201は、トリガカウンタCtgをインクリメントし、メインルーチンにリターンする。
一方、ステップS63では、CPU201は、摺動操作部材40の摺動速さV0が「0」かどうかを判断する。摺動速さV0が「0」ならば、ステップS64へ進み、「0」でないならば、ステップS68へ進む。ステップS64にて、CPU201は、リリースカウンタCrlをインクリメントする。ステップS65にて、CPU201は、リリースカウンタCrlが一定値kになったかどうかを判断する。リリースカウンタCrlが一定値kになった場合は、ステップS66に進み、一定値kになっていない場合は、メインルーチンにリターンする。ステップS66にて、CPU201は、リリースカウンタCrlを「0」にリセットする。ステップS67にて、CPU201は、ハードウエアリリースフラグをオンにする。一方、ステップS68では、CPU201は、リリースカウンタCrlを「0」にリセットして、メインルーチンにリターンする。
ここで、ステップS63〜S68の処理は、摺動速さV0が、連続してk回「0」であった場合に、ハードウエアリリースを実行する処理である。例えば、k=4、である。このような処理は、操作者の意図に反して、摺動操作部材40が停止したと認識されるのを防止する処理である。ゆっくりと摺動操作部材40を操作する際、人間の操作なので、ある時に摺動速さV0が「0」になる場合もある。しかし、これをもって直ちに摺動操作部材40の停止と認識したのでは、操作者の意図に反してしまうことになる。このため、複数回連続して摺動速さV0が「0」になった場合に、摺動操作部材40が停止したと認識する。
図31は、図28のステップS5の音量制御処理の流れの一例を示すフローチャートである。図31の例では、CPU201による処理のサンプル数が「4」であるとする。ステップS80にて、CPU201は、検知部30のフォトトランジスタ34が出力した最新の周期t3と、一定値Kと、を比較する。そして、ステップS81では、最新の周期t3が、一定値Kを超えている場合は、ステップS84に進み、一定値K以下の場合は、ステップS82に進む。
ステップS82では、CPU201は、4周期分のパルス周期t0〜t3の平均値の逆数を求め、その逆数を摺動速さV2とする。ステップS83にて、CPU201は、摺動速さV2に応じたエンベロープ係数を算出する。つまり、CPU201は、摺動速さV2が大きければエンベロープ係数を大きくし、摺動速さV2が小さければエンベロープ係数を小さくする。例えば、エンベロープ係数を、V2/定数、とする。このようにして、摺動速さV2の大きさに応じたエンベロープ係数を算出して、摺動速さV2が大きければ、音量が大きくなり、摺動速さV2が小さければ、音量が小さくなる。しかも、摺動速さV2の大きさに応じて、連続的に音量が変化する。
さて、一方、ステップS84にて、CPU201は、ハードウエアリリースフラグをオンにする。ここで、ステップS81,S84の処理は、最新のパルス周期t3が一定値Kより大きかった場合、つまり、最新のパルス周期t3のみに基づく摺動速さ(1/t3)が一定値(1/K)より小さかった場合に、ハードウエアリリースを実行する処理である。ハードウエアリリースの代わりに、ソフトウエアリリースを行うことができる。
ここで、ステップS80,S81,S84の処理は、操作者の意図に沿うように、摺動操作部材40の停止を認識させる処理である。つまり、摺動操作部材40を段々と遅く動かしていき、発音を停止させたい場合に、このような操作者の意図に沿って、摺動操作部材40の停止を認識する処理である。
図32は、図28のステップS6の楽音セット処理の流れの一例を示すフローチャートである。図32に示すように、ステップS100にて、CPU201は、発音フラグのオン/オフ(トリガ発生の有無)を判断して、発音フラグがオフであれば、ステップS107に進み、発音フラグがオン(トリガ発生)であれば、ステップS101に進む。ステップS101にて、CPU201は、トリガ発音用の楽譜データから、楽譜データポインタが指す音符情報(ノートナンバ及び楽器指定情報)を読み込む。ステップS102にて、CPU201は、読み込んだノートナンバに応じた波形ピッチ制御情報を内部メモリ207の楽音用データ領域に格納する。この場合、ノートナンバ(ピッチ情報)と波形ピッチ制御情報とを関連付けたテーブルが用意されており、このテーブルを利用する。
ステップS103にて、CPU201は、読み込んだ音符情報に応じた波形データのアタック部の先頭アドレスを内部メモリ207の楽音用データ領域に格納する。ステップS104にて、CPU201は、読み込んだ音符情報に応じた波形データのループ部の先頭アドレスを内部メモリ207の楽音用データ領域に格納する。ステップS105にて、CPU201は、トリガ発音用の楽譜データポインタをインクリメントする。
ステップS106にて、CPU201は、発音フラグをチェックして、オンであればステップS109に進み、オフであればステップS107に進む。
ステップS107にて、CPU201は、発音中フラグがオンかどうかを判断して、オフであれば、メインルーチンにリターンし、オンであれば、ステップS108に進む。ステップS108にて、CPU201は、ハードウエアリリースフラグの状態をチェックし、オンであれば、メインルーチンにリターンする。一方、ハードウエアリリースフラグがオフであれば、ステップS109に進む。
ステップS109にて、CPU201は、ROM300に格納された圧縮されたエンベロープデータを読み出して、内部メモリ207に展開する。さらに、CPU201は、エンベロープピッチ制御情報を内部メモリ207の楽音用データ領域に格納する。なお、ステップS109では、ステップS101で読み込んだ音符情報に応じた波形データに対応したエンベロープデータが読み出される。
ステップS110にて、CPU201は、展開したエンベロープデータに、図31のステップS83で求めたエンベロープ係数を乗算する。ステップS111にて、CPU201は、ステップS110の乗算結果を、新たなエンベロープデータとして、内部メモリ207の楽音用データ領域に格納する。このように、摺動速さV2に応じたエンベロープ係数を用いて、エンベロープデータを加工することにより、音量を制御する。
図33は、図28のステップS7のオブジェクトセット処理の流れの一例を示すフローチャートである。図33に示すように、ステップS124にて、CPU201は、スタートから現在までの時間を表すカウンタTspをインクリメントする。ステップS125にて、CPU201は、トリガの発生に応じて、該当する音符マークnの色を変更すべく、当該音符マークnに対するカラーパレット情報を変更する。ステップS126にて、CPU201は、発音長指示バー100の出現を制御する。
ステップS127にて、CPU201は、現在の操作位置を表す縦棒104を制御する。具体的には次の通りである。縦棒104は、本実施の形態では、例えば、16画素×16画素のスプライト1つにより構成されるとする。また、最新のトリガによる発音に対応した音符マークnを出現させたノートナンバから開始コード(図25参照)までの時間Tns、開始コードから終了コードまでの時間Tse、および、インジケータ103の全長を表す画素数Lin、を用いて、xvb=(Tns/Tse)×Linを算出する。そして、縦棒104のx座標を(x1+xvb)、y座標をy1(定数)とする。x1はインジケータ103の左端のx座標である。デフォルトとして、x=x1、y=y1が設定される。以上のようにして、トリガが発生するたびに、縦棒104のx座標が更新され、操作者の現在の操作位置が示される。
ステップS128では、CPU201は、インジケータ103を制御する。具体的には、次の通りである。インジケータ103は、複数のベルトオブジェクトから構成され、本実施の形態では、例えば、このベルトオブジェクトは、16画素×16画素のスプライト1つにより構成されるとする。そして、このベルトオブジェクトの種類は、17種類である。第1は透明のスプライト、第2は長さが1画素のベルトを表すスプライト、第3は長さが2画素のベルトを表すスプライト、…、第17は長さが16画素のベルトを表すスプライトである。このように、1画素単位で、ベルトオブジェクトが用意される。インジケータ103の水平方向の長さは、例えば、96画素、つまり、ベルトオブジェクト6個分である。
CPU201は、スタートから現在までの時間Tsp、楽曲全体の時間Tse、および、インジケータ103の全長を表す画素数Lin、を用いて、xin=(Tsp/Tse)/Linを算出する。さらに、CPU201は、xin/16の商Aおよび余りBを求める。CPU201は、この商Aおよび余りBにより、表示するベルトオブジェクトを6つ選択する。そして、CPU201は、選択した全ベルトオブジェクトのx座標およびy座標を設定する。例えば、商A=2、余りB=4、であれば、第17ベルトオブジェクト2個、第5ベルトオブジェクト1個、第1ベルトオブジェクト3個、が選択され、それぞれのx座標およびy座標が設定される。
ステップS129では、CPU201は、シンクロ値99を制御する。具体的には次の通りである。0〜9までの10個の数字オブジェクトが用意される。各数字オブジェクトは、16画素×16画素のスプライト1つからなる。CPU201は、最新のトリガによる発音に対応する音符マークnを出現させたノートナンバから開始コード(図25参照)までの時間Tns、スタートから現在までの時間Tsp、を用いて、ずれDif=|Tsp−Tns|を算出する。
そして、CPU201は、このずれDifに応じた変動値をテーブル(後述の図34(b))から取得して、これを、現在のシンクロ値99に加算する。CPU201は、この加算結果に応じた数字オブジェクトを選択して、x座標およびy座標を設定する。例えば、加算結果が、「89」である場合は、「0」を表す数字オブジェクトを1個、「8」を表す数字オブジェクトを1個、「9」を表す数字オブジェクトを1個選択して、それぞれのx座標およびy座標を設定する。この場合、「0」を表す数字オブジェクトの座標は、スクリーン82の外部に設定される。
図34(a)は、音符マークnと、開始コードから音符マークnまでの時間Tnsと、を関連付けたテーブルの例示図、図34(b)は、ずれDifと、シンクロ値99の変動値と、を関連付けたテーブルの例示図、である。CPU201は、最新のトリガによる発音に対応する音符マークnに関連付けられた時間Tnsを、図34(a)のテーブルから取得して、上記ずれDifを計算する。そして、CPU201は、ずれDifに応じた変動値を、図34(b)のテーブルから取得して、現在のシンクロ値99への上記加算処理を行う。
さて、ステップS130では、CPU201は、座標および個数の双方が変動するオブジェクトの数を、カウンタcN1にセットする。本実施の形態では、座標および個数の双方が変動するオブジェクトは、音符マークnおよび発音長指示バー100を構成するバーオブジェクトである。例えば、音符マークnの数を「40」、発音長指示バー100を構成するバーオブジェクトの数を「40」とする。そうすると、カウンタcN1には、「80」がセットされる。
ステップS131にて、CPU201は、Vx=Vx+Ax、Vy=Vy+Ay、x=x+Vx、y=y+Vy、とする。ここで、Vxはオブジェクトの水平方向の速度、Axはオブジェクトの水平方向の加速度、Vyはオブジェクトの垂直方向の速度、Ayはオブジェクトの垂直方向の加速度、xはオブジェクトの水平方向の位置座標、yはオブジェクトの垂直方向の位置座標、である。
ここで、本実施の形態では、例えば、音符マークnは、16画素×16画素のスプライト1つにより構成されるとする。また、発音長指示バー100は、単数あるいは複数のバーオブジェクトから構成され、本実施の形態では、例えば、このバーオブジェクトは、16画素×16画素のスプライト1つにより構成されるとする。そして、このバーオブジェクトの種類は、9種類である。第1は透明のスプライト、第2は長さが2画素のバーを表すスプライト、第3は長さが4画素を表すスプライト、…、第9は長さが16画素のバーを表すスプライトである。このように、2画素単位で、バーオブジェクトが用意される。これは、後述のように、本実施の形態では、音符マークnおよび発音長指示バー100の速度を2画素/フレームとしているからである。
オブジェクトが音符マークnである場合は、ステップS131では、後述する音符マーク登録処理で設定された初期速度Vx0(Vxの初期値)および初期座標x0(xの初期値),y0(yの初期値)を基に、音符マークnの座標(x,y)が計算される。なお、音符マークnでは、Vy=0、Ax=Ay=0、とする。Vx0は、楽曲のテンポに応じて決定される。本実施の形態では、例えば、Vx0=2画素/フレームとする。また、音符マークnについては、デフォルトとして、xおよびyには、スクリーン82外の値が設定されており、Vx=Vy=0、Ax=Ay=0、である。
オブジェクトが発音長指示バー100を構成するバーオブジェクトである場合は、ステップS131では、ステップS126で設定された初期速度Vx0(Vxの初期値)および初期座標x0(xの初期値),y0(yの初期値)を基に、バーオブジェクトの座標(x,y)が計算される。なお、発音長指示バー100では、Vy=0、Ax=Ay=0、とする。本実施の形態では、例えば、Vx0=2画素/フレームとする(音符マークnと同じ。)。また、初期座標x0,y0は、音符マークnの初期座標x0,y0と同じ値である。また、音符マークnと同様に、デフォルトとして、xおよびyには、スクリーン82外の値が設定されており、Vx=Vy=0、Ax=Ay=0、である。
ステップS132にてCPU201は、カウンタcN1をデクリメントする。ステップS133にて、CPU201は、カウンタcN1が「0」より小さいかどうかを判断する。つまり、CPU201は、座標および個数の双方が変動するオブジェクト全てについて、ステップS131の座標計算を実行したかどうかを判断する。カウンタcN1が「0」以上の場合は、全オブジェクトの座標計算が終了していないので、ステップS131に進み、「0」より小さい場合は、全オブジェクトの座標計算が終了しているので、ステップS134に進む。
ステップS134にて、CPU201は、カウンタcN2に、表示対象の全オブジェクト数をセットする。ステップS135にて、CPU201は、オブジェクトがアニメーション処理の対象かどうかを判断する。オブジェクトがアニメーション処理の対象であれば、ステップS136に進み、対象でなければ、ステップS137に進む。ステップS136では、オブジェクトのアニメーション処理が実行される。具体的には、次のフレームで表示するオブジェクトの画素パターン指定情報の格納位置情報を、内部メモリ207に格納する。
例えば、インジケータ103を構成する6個のベルトオブジェクトは、アニメーション対象であり、次のフレームで表示する6個のベルトオブジェクトのそれぞれの画素パターン指定情報の格納位置情報を、内部メモリ207に格納する。また、例えば、シンクロ値99を表す3個の数字オブジェクトは、アニメーション対象であり、次のフレームで表示する3個の数字オブジェクトのそれぞれの画素パターン指定情報の格納位置情報を、内部メモリ207に格納する。
ステップS137にて、CPU201は、カウンタcN2をデクリメントする。ステップS138にて、CPU201は、カウンタcN2が「0」より小さいかどうかを判断する。つまり、CPU201は、全オブジェクトについて、ステップS135の処理を実行したかどうかを判断する。カウンタcN2が「0」より小さい場合は、ステップS139に進み、「0」以上の場合は、ステップS135に進む。
ここで、ステップS125〜S129、ステップS131、ステップS136の結果は、内部メモリ207のオブジェクト用データ領域に格納される。
ステップS139にて、CPU201は、カウンタcN3に、表示対象の全オブジェクト数をセットする。ステップS140にて、CPU201は、オブジェクトが変更されたかどうかを判断する。オブジェクトが変更された場合は、ステップS141に進み、変更されていない場合は、ステップS142に進む。なお、デプス値、カラーパレット情報、画素パターン指定情報の格納位置情報、水平座標、および、垂直座標のうち、いずれか1つでも変更されていれば、オブジェクトが変更されたとする。また、図29のステップS37において、各オブジェクトのオブジェクト関連情報がセットされたことは、各オブジェクトの変更に該当する。
ステップS141にて、CPU201は、変更後のオブジェクトのスプライトパラメータ(デプス値、カラーパレット情報、画素パターン指定情報の格納位置情報、水平座標、垂直座標)を書き換える。この場合、変更されたスプライトパラメータのみを書き換える。
例えば、オブジェクトの座標が変更されていれば、CPU201は、そのオブジェクトの水平座標及び垂直座標を基に、そのオブジェクトを構成する各スプライトの水平座標及び垂直座標を算出して、座標情報を書き換える。なお、オブジェクトが1つのスプライトから構成される場合は、そのオブジェクトの水平座標及び垂直座標が、スプライトの水平座標及び垂直座標となる。
また、例えば、オブジェクトのカラーパレット情報が変更されていれば、CPU201は、そのオブジェクトを構成する各スプライトのカラーパレット情報を変更する。なお、オブジェクトが1つのスプライトから構成される場合は、そのオブジェクトのカラーパレット情報が、スプライトのカラーパレット情報となる。
また、例えば、オブジェクトの画素パターン指定情報の格納位置情報が変更されていれば、そのオブジェクトの画素パターン指定情報の格納位置情報を基に、そのオブジェクトを構成する各スプライトの画素パターン指定情報の格納位置情報を算出して、格納位置情報を書き換える。この場合、スプライトのサイズが分かっているので、オブジェクトの画素パターン指定情報の格納位置情報から容易に、各スプライトの画素パターン指定情報の格納位置情報を算出できる。なお、オブジェクトが1つのスプライトから構成される場合は、そのオブジェクトの画素パターン指定情報の格納位置情報が、スプライトの画素パターン指定情報の格納位置情報となる。
ステップS142にて、CPU201は、カウンタcN3をデクリメントする。ステップS143にて、CPU201は、カウンタcN3が「0」より小さいかどうかを判断する。つまり、CPU201は、全オブジェクトについて、ステップS140の処理を実行したかどうかを判断する。カウンタcN3が「0」以上の場合は、ステップS140に進み、「0」より小さい場合は、メインルーチンにリターンする。
ここで、スプライトパラメータは、内部メモリ207のスプライト用データ領域に格納される。図28に戻って、ステップS9では、CPU201は、スプライト用データ領域に格納されたスプライトパラメータをグラフィックプロセッサ202に与える。また、ステップS9では、グラフィックプロセッサ202は、内部メモリ207の背景用データ領域に格納された背景関連情報(図29のステップS37参照)を読み込む。そして、グラフィックプロセッサ202は、これらの情報を基に画像信号VDを生成する。
図35は、図33のステップS125の音符色変更処理の流れの一例を示すフローチャートである。図35に示すように、ステップS160にて、CPU201は、テレビジョンモニタ80に表示中の音符マークnの番号Nmと、トリガカウンタCtgと、を比較する。表示中の音符マークnの番号Nmが、トリガカウンタのカウント値Ctg以下の場合は、ステップS162に進み、そうでない場合は、ステップS163に進む。
ステップS162にて、CPU201は、当該番号Nmの音符マークnのカラーパレット情報及びその音符マークnに付随する発音長指示バー100のカラーパレット情報を変更する。ステップS163にて、CPU201は、表示中の全ての音符マークnについて、ステップS160〜S162の処理を終了したかどうかを判断し、終了していない場合はステップS160に進み、終了した場合は、図33のステップS126に進む。以上のようにして、トリガにより発生させた楽音に対応する音符マークn及びその音符マークnに付随する発音長指示バー100の色を変化させる。
図36は、図33のステップS126の発音長指示バー制御処理の流れの1例を示すフローチャートである。図36に示すように、ステップS180にて、CPU201は、発音長指示バー100のストップフラグがオンか否かを判断する。オンであれば、ステップS186に進み、オフであれば、ステップS181に進む。なお、このストップフラグは、後述するが、音符マーク登録用の楽譜データから、ノートオフが読み出されたときにオンになる。
ステップS181にて、CPU201は、発音長指示バー100の出現フラグがオンか否かを判断する。オンであれば、ステップS182に進み、オフであれば、図33のステップS127に進む。なお、この出現フラグは、後述するが、音符マーク登録用の楽譜データから、ノートオンが読み出されたときにオンになる。ステップS182にて、CPU201は、カウンタCbaをデクリメントする。なお、カウンタCbaは、後述するが、音符マーク登録用の楽譜データから、ノートオンが読み出されたときに「8」にセットされる。「8」とした理由は後で詳しく説明する。
ステップS183にて、CPU201は、カウンタCbaが、「0」かどうかを判断する。カウンタCbaが「0」の場合は、ステップS184に進み、それ以外の場合は、図33のステップS127に進む。
ステップS184にて、CPU201は、カウンタCbaに「8」をセットする。「8」とした理由は、上記と同様であり、後で詳しく説明する。ステップS185にて、CPU201は、表示されていないバーオブジェクト(発音長指示バー100を構成)であって、カウンタCbaの値(この場合は、Cba=8)に応じたバーオブジェクトに対して、初期座標(x0,y0)および初期速度Vx0を設定して、図33のステップS127に進む。
一方、ステップS186にて、CPU201は、表示されていないバーオブジェクト(発音長指示バー100を構成)であって、カウンタCbaの値に応じたバーオブジェクトに対して、初期座標(x0,y0)および初期速度Vx0を設定する。ステップS187にて、CPU201は、ストップフラグおよび出現フラグをオフにして、図33のステップS127に進む。
なお、カウンタCbaの値に応じたバーオブジェクトは、長さが(Cba×2)画素のバーを表すスプライトからなるバーオブジェクトである。
ここで、上記例では、音符マークnが、16画素×16画素のスプライト1個から構成され、その速度が、2画素/フレームの例を挙げている。従って、音符マークnが登録されてから(出現フラグオン)、8フレーム経過後に、16画素×16画素の音符マークnの全体がスクリーン82に表示される。なお、音符マークnの登録時においては、音符マークnを構成する16画素×16画素のスプライトの左辺が、スクリーン82の右辺に接するように、音符マークnを配置する。
音符マークnの全体がスクリーン82に表示されたとき、バーオブジェクトをスクリーン82の右辺に隣接して待機させる必要がある。つまり、バーオブジェクトを構成する16画素×16画素のスプライトの左辺が、スクリーン82の右辺に接するように、バーオブジェクトを配置する。以上のことから、ステップS181で、出現フラグがオンであっても直ちに、ステップS185に進むのではなく、出現フラグがオンになってから、8フレーム経過後に、ステップS185に進む。
上記ステップS185では、長さが16画素のバーを表すスプライトからなるバーオブジェクトに対して、初期座標および初期速度が設定される。なぜなら、ストップフラグがオンになるまでは、長さが16画素のバーを表すバーオブジェクトを次々に表示することで、適切に発音長指示バー100を表示できるからである。一方、上記ステップS186では、長さが(Cba×2)画素のバーを表すバーオブジェクトに対して、初期座標および初期速度が設定される。
例えば、ストップフラグがオンになったときのカウンタCbaの値が「4」のときは、長さが8画素のバーを表すバーオブジェクトに対して、初期座標および初期速度が設定される。このようなステップS186の処理により、図14の音符マークn−1に付属する発音長指示バー100のような、終端(右端)に休符がある発音長指示バー100を表示することができる。
図37は、図28のステップS10の音声処理の流れの1例を示すフローチャートである。図37に示すように、ステップS200にて、CPU201は、BGMの発音処理を実行する。ステップS201にて、CPU201は、音符マークnの登録処理を実行する。ステップS202にて、CPU201は、トリガに基づく発音処理を実行する。ステップS203にて、CPU201は、ビブラートスイッチ12eが押下されたときに、ビブラート処理を実行する。
図38は、図37のステップS200のBGM発音処理の流れの一例を示すフローチャートである。図38に示すように、ステップS220にて、CPU201は、BGM用の実行待機カウンタをチェックする。BGM用の実行待機カウンタの値が「0」ならば、ステップS222へ進み、「0」でないならば、ステップS230へ進んで、実行待機カウンタをデクリメントし、図37のステップS201に進む。
ステップS222にて、CPU201は、BGM用の楽譜データポインタの指すコマンドを読み出して解釈する。コマンドがノートオンであれば、ステップS224に進み、それ以外であれば、つまり、待機であれば、ステップS231に進む。
ステップS224にて、CPU201は、楽譜データポインタが指すノートナンバ及び楽器指定情報に応じて、波形ピッチ制御情報、波形データの先頭アドレス情報、エンベロープピッチ制御情報およびエンベロープデータの先頭アドレス情報を内部メモリ207の楽音データ領域に格納するとともに、ベロシティ情報に応じたチャンネルボリューム情報およびゲートタイム情報を、楽音データ領域に格納する。そして、CPU201は、サウンドプロセッサ203に対して、内部メモリ207へのアクセス指示を出す。すると、サウンドプロセッサ203は、必要なタイミングで、内部メモリ207の楽音データ領域に格納された上記情報を読み込んで、音声信号AL,ARを生成する。
ステップS225にて、CPU201は、BGM用の楽譜データポインタをインクリメントする。ステップS226にて、CPU201は、音符のゲートタイムの残り時間をチェックする。ステップS227にて、CPU201は、ゲートタイムが終了した場合は、ステップS228に進んで、サウンドプロセッサ203に対し、その音符の発音終了指示を与え、ステップS229に進む。一方、ステップS227では、ゲートタイムが終了していない場合は、ステップS229に進む。ステップS229にて、CPU201は、発音中の全音符について、ステップS226の処理を終了したかどうかを判断し、終了していなければステップS226に進み、終了していれば、図37のステップS201に進む。
さて、ステップS231では、CPU201は、BGM用の実行待機カウンタに待機時間をセットする。そして、ステップS232にて、CPU201は、BGM用の楽譜データポインタをインクリメントして、図37のステップS201に進む。
図39は、図37のステップS201の音符マーク登録処理の流れの一例を示すフローチャートである。図39に示すように、ステップS250にて、CPU201は、音符マーク登録用の実行待機カウンタをチェックする。音符マーク登録用の実行待機カウンタの値が「0」ならば、ステップS252へ進み、「0」でないならば、ステップS260へ進んで、実行待機カウンタをデクリメントし、図37のステップS202へ進む。
ステップS252にて、CPU201は、音符マーク登録用の楽譜データポインタの指すコマンドを読み出して解釈する。ステップS253では、コマンドがノートオンであれば、ステップS254に進み、それ以外であれば、ステップS261に進む。
ステップS254にて、CPU201は、新規に音符マークnを登録する。具体的には、新規音符マークnの初期速度Vx0および初期座標x0,y0を設定する。ステップS255にて、CPU201は、音符表示カウンタCntをインクリメントする。ステップS256にて、CPU201は、新規音符マークの番号として、音符表示カウンタCntの値を設定する。
ステップS257にて、CPU201は、発音長指示バー100の出現フラグをオンにする。ステップS258にて、CPU201は、カウンタCba(図36参照)に「8」を代入する。これは、上述のように、音符マークnが登録されてから8フレーム経過後に、16画素×16画素の音符マークnの全体がスクリーン82に表示されるからである。
さて、一方、ステップS261では、CPU201は、音符マーク登録用の楽譜データポインタの指すコマンドがノートオフであれば、ステップS262に進んで、発音長指示バー100のストップフラグをオンにして、ステップS259に進む。音符マーク登録用の楽譜データポインタの指すコマンドがノートオフなければステップS263に進む。ステップS263では、CPU201は、音符マーク登録用の楽譜データポインタが開始コードを指していれば、ステップS259に進み、そうでなければ、ステップS264に進む。
ステップS264では、CPU201は、音符マーク登録用の楽譜データポインタが指すコマンドが待機であれば、ステップS265に進んで、実行待機カウンタに待機時間をセットして、ステップS259に進む。一方、楽譜データポインタが指すコマンドが待機でなければ、つまり、終了コードであれば、ステップS266に進んで、音楽終了フラグをオンにして、図37のステップS202に進む。
さて、ステップS259では、CPU201は、音符マーク登録用の楽譜データポインタをインクリメントして、図37のステップS202に進む。
図40は、図37のステップS202のトリガによる発音処理の流れの一例を示すフローチャートである。図40に示すようにステップS280にて、CPU201は、発音中フラグをチェックしてオフであればステップS285に進み、オンであればステップS281に進む。ステップS281では、CPU201は、ハードウエアリリースフラグをチェックして、オフであればステップS284に進み、オンであればステップS282に進む。
ステップS282にて、CPU201は、サウンドプロセッサ203に対し、トリガにより現在発音中のチャンネルの発音終了指示を出す。現在発音中のチャンネルは、発音中フラグにセットされた値により認識できる。ステップS283にて、CPU201は、ハードウエアリリースフラグ及び発音中フラグをオフにして、ステップS285へ進む。
一方、ステップS284では、CPU201は、サウンドプロセッサ203に対し、内部メモリ207(現在発音中のチャンネルに対応した楽音データ領域)へのアクセス指示を出す。するとサウンドプロセッサ203は、必要なタイミングで、内部メモリ207へアクセスして、図28のステップS6で格納された楽音関連情報(波形データの先頭アドレス情報、波形ピッチ制御情報、エンベロープデータ、エンベロープピッチ制御情報)を読み込んで、これを基に楽音信号AL,ARを生成する。
ステップS285では、CPU201は、発音フラグをチェックして、オフであれば図37のステップS203に進み、オンであればステップS286に進む。ステップS286では、CPU201は、発音中フラグを参照して、現在設定されているチャンネルをチェックし、現在のチャンネルがチャンネルCH0,CH1であればステップS287に進み、チャンネルCH2,CH3であれば、ステップS288に進む。
ステップS287では、CPU201は、発音のためのチャンネルをチャンネルCH0,CH1からチャンネルCH2,CH3へ変更する。一方、ステップS288では、CPU201は、発音のためのチャンネルをチャンネルCH2,CH3からチャンネルCH0,CH1へ変更する。
ステップS289では、CPU201は、サウンドプロセッサ203に対し、内部メモリ207(新たに設定されたチャンネルに対応した楽音データ領域)へのアクセス指示を出す。するとサウンドプロセッサ203は、必要なタイミングで、内部メモリ207へアクセスして、図28のステップS6で格納された楽音関連情報を読み込んで、これを基に楽音信号AL,ARを生成する。
ステップS290にて、CPU201は、ステップS287あるいはステップS288で設定されたチャンネルに応じて、発音中フラグをセットする。ステップS291にて、CPU201は、発音フラグをオフにする。
以上のように、トリガ発生のたびに(発音フラグがオンになるたびに)、発音のチャンネルを切り替えるのは、次の音符の発音のために、現在の音符の発音が終了されることを防止するためである。例えば、トリガ発音のためのチャンネルを全音符について共通にすると、ある音符の発音を実行中に、次のトリガが発生した場合は、その音符の発音を終了して、そのトリガに応じた音符の発音を開始しなければならず、音が途切れたようになって、聞き苦しい場合もある。なお、1回のトリガ発音のためのチャンネルとして、2つのチャンネルCH0,CH1あるいはCH2,CH3を使用しているのは、音量を増大させるためである。
図41は、図37のステップS203のビブラート処理の流れの1例を示すフローチャートである。図41に示すように、ステップS300にて、CPU201は、ビブラートスイッチ12eがオンかどうかを判断し、オンであればステップS301に進み、オフであれば、メインルーチンにリターンする。
ステップS301では、CPU201は、後述のビブラートテーブルから、ビブラートポインタが指す揺れ幅を取得する。ステップS302にて、CPU201は、トリガにより現在発音中のチャンネルに対応する楽音データ領域に格納された波形ピッチ制御情報に揺れ幅を加算する。ステップS303にて、CPU201は、ビブラートポインタを進めて、メインルーチンにリターンする。
図42(a)は、ビブラート効果の説明図であり、図42(b)は、ビブラート処理を行う際の揺れ幅を格納したビブラートテーブルの例示図である。図42(a)に示すように、本実施の形態では、サインカーブを描くように、揺れ幅を設定している。また、上記ステップS301では、図42(b)のビブラートテーブルを参照して、揺れ幅を取得する。
ここで、サウンドプロセッサ203の詳細を説明する。図43は、図17のサウンドプロセッサ203のブロック図である。図43に示すように、サウンドプロセッサ203は、制御回路270、DACブロック271、及び、ローカルメモリ272、を含む。
図44は、図43のDACブロック271のブロック図である。図44に示すように、DACブロック271は、メインボリュームDAC(MVDAC)275、M(Mは自然数)個のチャンネルブロック283, 283´,…、及び、ミキシング回路281,282を含む。この場合、チャンネルブロック283,283´,…、の各々が、N個(Nは2以上の整数)のチャンネルを処理できるとすると、全体でM × N個のチャンネルの処理が可能である。例えば、M=4、N=4として、16チャンネルが処理できる。チャンネルブロック283, 283´,…、はそれぞれ、チャンネルボリュームDAC(CVDAC)、エンベロープ(L)DAC(EVLDAC)277、エンベロープ(R)DAC(EVRDAC)279、波形DAC(WVDAC)278、及び、波形DAC(WVDAC)280を含む。ここで、チャンネルブロック283, 283´,…、を包括して表現するときは、チャンネルブロック2830と表記する。
図44に示すように、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が、内部メモリ207あるいはROM300から読み出して、ローカルメモリ272に格納したものである。従って、制御回路270は、エンベロープピッチ制御情報に基づくアドレスポインタをインクリメントしながら、エンベロープデータをローカルメモリ272から順次読み出し、多重化して、DACブロック271へ与える。
チャンネルブロック283, 283´,…、のWVDAC278には、制御回路270から、波形データWV,WV´,…、が入力される。なお、波形データWV,WV´,…、の各々は、N組のチャンネルの波形データが時分割多重されたものである。ここで、波形データWV,WV´,…、を包括的に表現するときは、波形データWV0と表記する。なお、波形データWV0は、デジタル信号である。
WVDAC278は、入力された波形データWVL0と、EVLDAC277から入力された乗算信号(アナログ信号)と、を乗算し、乗算信号(アナログ信号)を、ミキシング回路281に出力する。この乗算信号が、アナログ音声信号となる。
ここで、波形データは、制御回路270が、ROM300から読み出したデータである。つまり、制御回路270は、ローカルメモリ272に書き込んだ、波形データの先頭アドレス情報に従って、ROM300から波形データを読み出し、ローカルメモリ272に一旦格納する。そして、制御回路270は、波形ピッチ制御情報に基づくアドレスポインタをインクリメントしながら、波形データをローカルメモリ272から読み出し、多重化してWVDAC278へ与える。
ミキシング回路281は、チャンネルブロック283,283´,…、のそれぞれが出力するアナログ音声信号をミキシングして、左チャンネルの音声信号ALを出力する。左チャンネルの音声信号ALを生成する場合と同様にして、EVRDAC279、WVDAC280、及び、ミキシング回路282により、右チャンネルの音声信号ARが生成される。
次に、グラフィックプロセッサ202の詳細を説明する。図45は、図17のグラフィックプロセッサ202のブロック図である。図45に示すように、グラフィックプロセサ202は、制御回路450、スプライトメモリ451、画素バッファ452、及び、カラーパレット453、を含む。CPU201は、表示すべきスプライトの、水平座標、垂直座標、デプス値、サイズ、カラーパレット情報、及び、画素パターン指定情報の格納位置情報を、垂直ブランキング期間に、グラフィックプロセッサ202のスプライトメモリ451に書き込む。
そして、制御回路450は、スプライトメモリ451に格納された情報に従って、画素バッファ452に、スプライトの画素パターン指定情報及びデプス値を書き込んでいく。なお、画素パターン指定情報は、スプライトメモリ451に格納された、画素パターン指定情報の格納位置情報に基づいて、制御回路450が、ROM300から読み出す。
また、制御回路450は、内部メモリ207にアクセスして、背景を構成する各ブロックの画素パターン指定情報の格納位置情報に基づいて、ROM300から、各ブロックの画素パターン指定情報を読み出すとともに、各ブロックのカラーパレット情報およびデプス値を読み込む。そして、画素バッファ452に、背景の画素パターン指定情報及びデプス値を書き込んでいく。
なお、制御回路450は、同じ位置に画素が重なる場合は、デプス値の大きいスプライト又は背景の画素パターン指定情報及びデプス値を画素バッファ452に書き込む。
ここで、画素バッファ452は、スクリーン82に表示される画像(横256画素×縦224画素)の横一列を構成する256画素よりも少ない数の画素バッファ単位で構成される。この画素バッファ単位は、1画素分のデプス値及び画素パターン指定情報を保持する。なお、1画素分のデプス値及び画素パターン指定情報を総括して、画素情報と呼ぶ。
より詳細には、制御回路450は、各画素の画素情報を画素バッファ452に順次的に格納する。この画素バッファ452は、バッファ先頭アドレスにラップアラウンドするインデキシング方式をとり、最も古いデータが最新のデータで上書きされるFIFOリングバッファとなっている。つまり、制御回路450は、走査位置が移動したときに、末尾の画素情報格納位置が先頭の画素情報格納位置に来るように、画素バッファ単位を巡回させて切り換える。
制御回路450は、画素バッファ452から画素情報を読み出して(走査して)、読み出した画素情報の画素パターン指定情報に従って、カラーパレット情報により指定されたカラーパレット453から色情報を取得して、コンポジット信号を生成し、画像信号VDとして出力する。
さて、以上のように、本実施の形態によれば、操作者が摺動操作部材40の摺動方向を変えたり、摺動速さを変えたり、という直感的な操作により、自動演奏のトリガを発生させたり、音量を制御したり、できる。
このように、自動演奏装置(コンピュータ)が自動演奏する楽曲に対して、直感的な操作方法により、テンポを調整したり、強弱を加えたりでき、特別な音楽的知識や技量を有しない操作者でも、個性的な自動演奏を楽しむことができる。
また、摺動操作部材40の摺動速さが、予め定められた閾値1/Kを下回った場合に(図31のステップS81参照)、最新のトリガによる発音の終了処理が行われるだけでなく、新たなトリガが発生した場合に、前回のトリガによる発音の停止処理が行われる(図30のステップS61参照)。
従って、摺動操作部材40の摺動速さが、予め定められた閾値ThVを超えたことのみをトリガの発生条件とし、予め定められた閾値1/Kを下回ったことのみを、発音の終了条件とする場合と比べて、次の利点がある。
操作者が、大きい摺動速さで、しかも、素早く摺動方向を変化させた場合、摺動速さが予め定められた閾値1/Kを下回ったことが検知されず、そのため、発音終了処理が実行されず、しかも、変化直後に検知した摺動速さが予め定められた閾値1/Kを超えていることもあり得る。この場合、1つのトリガによる発音が持続してしまうという不都合が生じる。大きい摺動速さで、しかも、素早く摺動方向を変化させる操作は、度々行われ、上記不都合は大きな問題である。
新たなトリガの発生を(前回のトリガの後に、摺動速さが予め定められた閾値ThVを超えた場合であって、かつ、摺動方向が変化した場合)、前回のトリガによる発音の終了条件とすることで、以上のような問題を回避できる。
ここで、操作者にとって、摺動操作部材40の摺動方向を変化させる行為は必ず行う行為であり、しかも、摺動方向の変化は容易に認知できるため、摺動方向を変化させることは直感的な操作と言える。このため、摺動方向の変化をトリガの条件に加えることは、操作者の操作に制約を課すことにはならない。
また、摺動操作部材40の摺動方向が変化したことのみをトリガの発生条件とする場合、例えば、僅かな手のぶれ等でもトリガが発生してしまう、等の不都合が発生し得るが、摺動方向の変化に加えて、摺動速さが予め定められた閾値ThVを超えたことをトリガ発生の条件としているため、このような問題を回避できる。
ここで、発音の終了処理とは、発音を直ちに中止するという意味ではなく、音の減衰処理(本実施の形態では、ハードウエアリリース)を行うという意味である。従って、発音の停止処理が開始されてから、音が出なくなるまで、一定時間(リリースタイム)要することになる。
また、本実施の形態において、フォトトランジスタ34,35は、摺動操作部材40の摺動方向を検出するための、摺動操作部材40の摺動方向により位相差が異なるパルス信号Aおよびパルス信号Bを発生する。さらに、フォトトランジスタ34は、摺動操作部材40の摺動速さの計測のための、摺動操作部材40の摺動速さに応じた周波数のパルス信号aを発生する。
このため、パルス信号aの周波数あるいは周波数に依存するもの(例えば、m分の1周期の時間など)を計測するだけで、容易に摺動速さを計測することができる(図22参照)。なお、周波数の逆数である周期は周波数の概念に含まれる。また、パルス信号Aおよびパルス信号Bの位相差あるいは位相差に依存するもの(例えば、パルス信号A,Bの状態遷移の方向)を計測するだけで、容易に摺動方向を検出できる(図20参照)。
また、この場合、トリガ発生の2つの条件(摺動方向および摺動速さ)の判定において、信号を共用することになるので(パルスAとパルスaとは同じ信号)、簡易な構成で、トリガ処理を実現できる。
また、本実施の形態では、自動演奏の状態を表す画像103,104、及び、操作ガイドを表す画像n,100,101,102、をテレビジョンモニタ80に表示する(図14参照)。この場合、これらの画像は、オブジェクトの移動及び色の変化を用いて表示される。
従って、操作者にとって、直感的に自動演奏の状態や操作ガイドを認識でき、自動演奏装置による自動演奏を容易に制御できる。
また、テレビジョンモニタ80に、本体1を接続するだけで容易に、自動演奏の状態を表す画像、及び、操作ガイドを表す画像、を表示することができる。
さらに、本体1に、これらの画像を表示するための画像表示部を設けることが不要となって、本体1に画像表示部を有する場合より安価な自動演奏装置を提供できる。
さらに、これらの画像を表示するテレビジョンモニタ80を、本体1と別個に設けることで、本体1に画像表示部を設ける場合と比較して、重量が軽くなるため、操作者は、本体1を抱持して摺動操作することが容易になる。
さらに、これらの画像を表示するテレビジョンモニタ80を、本体1と別個に設けることで、操作者が本体1を抱持して摺動操作をする場合に、本体1に画像表示部を設ける場合と比較して、操作者は、これらの画像が見易くなる。本体1を操作者が抱持して摺動操作を行う場合、画像表示部を本体1に設けると、その画像の視認が困難になる。
また、本実施の形態では、自動演奏される楽曲データ及び描画を行うための画像データを格納したメディア、上記例では、メモリカートリッジ29、を装着するカートリッジソケット23が本体1に設けられる。
このため、メモリカートリッジ29を交換するだけで、様々な楽曲の自動演奏が可能となる。なお、メディアには、制御プログラムをさらに格納することができる。
また、本実施の形態では、ガイド31,32により、隘路部(狭くなった部分)、及び、隘路部に連続した末広部(隘路部から外側へいくに従って次第に広がっている部分)、を構成して、摺動操作をガイドする(図4参照)。
この構成によれば、操作者が容易に摺動操作部材40を被摺動鞍部33に接触して摺り動かすことができるようにするというガイド本来の機能を果たしながらも、摺動操作部材40の動きの自由度を大きくでき、操作者にとって、様々な態様の摺動操作が可能となる。また、2つのガイド31,32により、摺動操作部材40の摺動位置が規制されるため、操作者は特別に意識することなく、摺動操作部材40を、発光ダイオード36及びフォトトランジスタ34,35上を通過させることができる。
また、本実施の形態では、被摺動鞍部33は、断面視において、中央部が最頂部となり、両端部に向かって傾斜する形状となっている(図5参照)。このため、摺動操作部材40の動きの自由度を大きくでき、操作者にとって、様々な態様の摺動操作が可能となる。
また、本実施の形態では、摺動操作部材40の摺動方向が変化し、かつ、摺動操作部材40の摺動速さが予め定められた閾値ThVを超えたときに、自動演奏のトリガが発生する。このため、例えば、次のような特殊な制御を実行することができる。
ある1音符に基づく楽音を発音する中で、徐々に摺動速さを速くして音量を上げ、次に、徐々に摺動速さを遅くして一旦音量を下げ、さらに次に、徐々に摺動速さを早くして再び音量を上げ、さらに次に、徐々に摺動速さを遅くして音量を下げる、という制御を行うことができる。
なお、演奏操作部材40の操作速度が閾値より大きくなったことのみを、発音のトリガとすると、徐々に摺動速さを遅くした後、再び摺動速さを速くするときに、トリガが発生して、次の音符に基づく楽音が発音されてしまうという不都合が生じる。
また、本実施の形態では、新たなトリガに応じた発音のための発音チャンネルを、前回のトリガに応じた発音のための発音チャンネルと異ならせる(図40のステップS286〜S288参照)。従って、前回のトリガによる発音が、新たなトリガによる発音開始によって直ちに停止されることがないため、滑らかな自動演奏を実行できる。
(実施の形態2)
実施の形態1では、カウンタ290によりパルス信号A,Bの遷移を検出し、また、エッジ検出回路293によりパルス信号aの立ち下がりエッジを検出している(図21参照)。そして、これらの検出結果を基に、摺動操作部材40の摺動方向および摺動速さを求めた。これに対して、実施の形態2では、CPU201が、パルス信号A,Bが入力される入出力ポート(例えば、IO0,IO1)の値を、リードして、これらの値を基に、摺動操作部材40の摺動方向及び摺動速さを求める。
また、実施の形態1では、被摺動鞍部33は、断面視において、山状であった。これに対して、実施の形態2では、被摺動鞍部533は、断面視において、円弧状である。
以下、実施の形態1と異なる点を中心に説明し、同様の部分については、適宜説明を省略する。図46は、本発明の実施の形態2における自動演奏システムの全体構成を示す図である。図47(a)は、図46の自動演奏装置本体500の平面図である。図47(b)は、図46の自動演奏装置本体500の側面図である。なお、図46の自動演奏装置本体500の底面は、図1の自動演奏装置本体1の底面と同様であり説明を省略する(図3参照)。
図46に示すように、この自動演奏装置は、自動演奏装置本体500、及び、摺動操作部材40、を含む。本実施の形態では、自動演奏装置本体500の形状の1例として、バイオリンを模した形状を挙げている。自動演奏装置本体500の胴部10の表面には、自動演奏装置本体1の被摺動鞍部33とは異なる被摺動鞍部533が設けられる。
図47(a)(b)を用いて、被摺動鞍部533について説明する。後で詳述するが、被摺動鞍部533は、断面視において、円弧状に形成されている。この被摺動鞍部533の両端の頂部には、それぞれガイド531及びガイド532が突出して形成される。対向するガイド531,532の側縁は、摺動操作部材40が接する部分であって、平面視において、曲面となっている。これは、主に、摺動操作部材40が接触しても、滑らかに摺動操作部材40を動かすことができるようにするため、及び、摺動操作部材40の接触を原因としたガイド531,532の劣化を防止するため、である。操作者は、被摺動鞍部533のガイド531とガイド532との間の曲面に摺動操作部材40を接触させた状態で摺り動かし、自動演奏装置による自動演奏を制御する。
図48(a)は、図47(a)に示した被摺動鞍部533の拡大図、図48(b)は、図48(a)に示した光センサユニット90の平面図、である。図48(a)に示すように、被摺動鞍部533の内部であって、摺動操作部材40が通過する位置には、光センサユニット90が配置される。この光センサユニット90は、発光ダイオード36、光ファイバ89,92、及び、フォトトランジスタ34,35(図48には現れていない。)、を含む。光ファイバ89及び光ファイバ92は、摺動操作部材40の摺動方向に並んで配置されている。
また、発光ダイオード36は、光ファイバ89,92と対向する位置に設けられる。なお、図48(b)に示すように、光センサユニット90の上面には、つまり、被摺動鞍部533の内面に接触する部分には、周縁に沿って、密着部材93が取り付けられている。この密着部材93は、光センサユニット90と被摺動鞍部533との密着性をよくして、光センサユニット90の位置ずれを防止するとともに、塵埃が侵入して光ファイバ89,92に付着するのを防止している。
図49は、図48(a)のC−C断面図である。図50は、図48(a)のD−D断面図である。図49に示すように、被摺動鞍部533は、断面視において、円弧状になっている。つまり、被摺動鞍部533は、中央部が最頂部となり、両端部に向かって湾曲しながら傾斜する形状をしている。
光センサユニット90は、被摺動鞍部533の内面に密着するように取り付けられる。光ファイバ89,92の一方端は、光センサユニット90の上面(被摺動鞍部533と対向する側)から露出している。光ファイバ89と光ファイバ92とは、摺動方向に、所定間隔をおいて配置され、その所定間隔は、フォトトランジスタ34からのパルス信号Aとフォトトランジスタ35からのパルス信号Bとの間に、一定の位相差が生じる間隔である。この点は、後で詳述する。
一方、光ファイバ89,92の他方端は、それぞれ、フォトトランジスタ34,35の頂部付近に固定される。このようにして、発光ダイオード36が発光し、摺動操作部材40により反射された光は、光ファイバ89,92により、フォトトランジスタ34,35まで導かれる。光センサユニット90及びフォトトランジスタ34,35は、基板94に取り付けられる。さらに、フォトトランジスタ34,35は、それぞれ、光センサユニット90の下部に形成された2つの穴に挿入されている。これにより、フォトトランジスタ34,35には、光ファイバ89,92からの光のみが入射し、それ以外の光の入射を防止できる。
また、図50に示すように、フォトダイオード36は、光センサユニット90の上部に形成された傾斜面に取り付けられる。これにより、矢印#に示すように、発光ダイオード36が発光し、摺動操作部材40が反射した光の光ファイバ89,92への入射光量を多くすることができる。なお、発光ダイオード36は、赤外光を発生する。そして、フォトトランジスタ34,35が、発光ダイオード36が発生する赤外光だけを極力検知できるように、被摺動鞍部533は、赤外光だけを通過させる赤外フィルタとしての機能を有している。
図46の自動演奏装置による自動演奏について簡単に説明する。操作者は、自動演奏装置本体500とテレビジョンモニタ80とを、AVケーブル60により接続する。そして、電源スイッチ24(図3参照)をオン(テレビモード)にする。すると、テレビジョンモニタ80のスクリーン82に、操作スタイル選択画面(図12参照)が表示されるので、操作者は、選択キー12a,12bにより操作スタイルを選択し、決定キー12dを押下する。すると、楽曲選択画面(図13参照)が表示されるので、操作者は、選択キー12a,12bにより曲を選択し、決定キー12dを押下する。
操作者が曲を選択し確定すると、スクリーン82には、操作ガイド画面(図14参照)が表示される。操作者は、操作ガイド画面を見ることで、適切にトリガを発生させることができる。実施の形態1と同様に、トリガが発生する度に、楽曲の一音一音が発音される。トリガは、摺動操作部材40の自動演奏装置本体500に対する相対的な速さ(摺動速さ)が、予め定められた閾値より大きくなり、かつ、摺動操作部材40の摺動方向が変化した場合に発生する。また、摺動操作部材40の摺動速さに応じて、楽音の音量が制御される。これらの点も実施の形態1と同様である。
摺動操作部材40の摺動速さ、及び、摺動操作部材40の摺動方向、を求める方法を説明する。図51は、図48(a)の光センサユニット90の光ファイバ89,92の配置と、摺動操作部材40の反射パターン43と、の関係を示す図である。図51に示すように、摺動操作部材40の反射パターン43において、光反射部45の幅及び光吸収部44の幅の合計距離をLとする。この場合、光ファイバ89の露出端と光ファイバ92の露出端とを、L/4だけ離して配置する。ここで、露出端とは、光ファイバ89,92の先端であって、被摺動鞍部533の内面側に露出している先端である。
フォトトランジスタ34,35は、発光ダイオード36により発光され、反射パターン43で反射された赤外光を、光ファイバ89,92を介して受光する。反射パターン43は、光反射部45及び光吸収部44を交互に配置して形成されるため、摺動操作部材40が操作されると、フォトトランジスタ34,35には、間欠的に赤外光が入射することになる。従って、摺動操作部材40が操作されると、フォトトランジスタ34,35は、摺動操作部材40の摺動速さに応じた周波数のパルス信号A,Bを出力する。
つまり、摺動操作部材40の摺動速さが大きいほど、フォトトランジスタ34,35が出力するパルス信号A,Bの周波数は高くなり、一方、摺動操作部材40の摺動速さが小さいほど、フォトトランジスタ34,35が出力するパルス信号A,Bの周波数は低くなる。この点は実施の形態1と同様である。
フォトトランジスタ34に赤外光を導く光ファイバ89とフォトトランジスタ35に赤外光を導く光ファイバ92とは、L/4だけ離して配置されているため、フォトトランジスタ34が出力するパルス信号Aとフォトトランジスタ35が出力するパルス信号Bとの位相差は、摺動操作部材40の摺動方向によって、(90度)あるいは(−90度)になる。この理由は、実施の形態1の場合と同じである(図19(a)(b)および図20参照)。
従って、実施の形態1と同様に、パルス信号A,Bの状態遷移を検知することで、摺動操作部材40の摺動方向を求めることができる。ただし、この状態遷移の検出は、実施の形態1ではハードウエア(カウンタ290)により行ったが、実施の形態2では、ソフトウエアにより行う。この点は、後述する。
ここで、実施の形態2では、説明の便宜上、図20の時計回りの遷移を「(+)方向遷移」と呼び、反時計回りの遷移を「(−)方向遷移」と呼ぶ。
自動演奏装置本体500に内蔵される検知部510について説明する。自動演奏装置本体500の電気的構成は、図15と同様であるが、図15の検知部30に代えて、次のような検知部510を設けている。
図52は、自動演奏装置本体500に内蔵される検知部510の回路図である。図52に示すように、この検知部510は、発光ダイオード36、抵抗素子57、及び、検知回路652,655、を含む。検知回路652は、フォトトランジスタ34、電解コンデンサ555、抵抗素子552、アンプ654、及び、波形整形回路653、を含む。検知回路655は、フォトトランジスタ35、電解コンデンサ555、抵抗素子552、アンプ654、及び、波形整形回路653、を含む。
アンプ654は、抵抗素子551,556、コンデンサ538、及び、インバータ553を含む。波形整形回路653は、抵抗素子537,554およびインバータ650,651を含む。
抵抗素子57と発光ダイオード36とは、電源Vcc2と接地GNDとの間に直列に接続される。フォトトランジスタ34と抵抗素子552とは、電源Vcc2と接地GNDとの間に直列に接続される。フォトトランジスタ34及び抵抗素子552の接続点と、インバータ553の入力端と、の間には、抵抗素子556及び電解コンデンサ555が直列に接続される。インバータ553の入力端と出力端との間には、コンデンサ538及び抵抗素子551が並列に接続される。
抵抗素子554の一方端は、インバータ553の出力端に接続され、他方端は、インバータ651の入力端に接続される。インバータ651の出力端は、インバータ650の入力端に接続され、インバータ651の入力端とインバータ650の出力端との間には、抵抗素子537が接続される。検知回路655も検知回路652と同様の接続関係となっており、説明を省略する。
アンプ654は、負帰還増幅回路であり、フォトトランジスタ34からの電気信号を増幅する。また、このアンプ654は、ローパスフィルタとしても機能し、高周波成分を除去する。波形整形回路653は、入力波形をシャープな方形波に整形する。つまり、波形整形回路653は、抵抗素子537と抵抗素子554との比で決まる不感帯をつくって、一定の電圧範囲で出力が反転しないようにしながら、シャープなパルス信号Aを生成する。なお、検知回路655のアンプ654及び波形整形回路653も、検知回路652のものと同様の動作をするので説明を省略する。
以上のような検地回路652,655から出力されるパルス信号A,Bは、高速プロセッサ200の入出力ポート(本実施の形態では、例えば、IO0,IO1)へ入力される。
次に、図46の自動演奏装置の全体の処理の流れをフローチャートを用いて説明する。図53は、図46の自動演奏装置の全体処理の流れの一例を示すフローチャートである。図53に示すように、ステップS500にて、CPU201は、システムの初期設定を実行する。ステップS501にて、CPU201は、自動演奏の状態をチェックする。ステップS502にて、CPU201は、自動演奏が終了したかどうかを判断する。CPU201は、自動演奏が終了した場合(音楽終了フラグがオン)は処理を終了し、自動演奏が終了していない場合は、ステップS503に進む。
ステップS503にて、CPU201は、摺動操作部材40の摺動方向及び摺動速さを計測して、それらが、トリガ発生条件を満足している場合に、トリガを発生させる(発音フラグオン)。ステップS504にて、CPU201は、トリガに応じて発音する楽音の音量を制御すべく、摺動操作部材40の摺動速さに応じて、エンベロープ係数を算出する。
ステップS505にて、CPU201は、トリガによる発音のための楽音関連情報を内部メモリ207に格納する。この処理は、図28のステップS6の処理と同様であり、説明を省略する。ステップS506にて、CPU201は、オブジェクト関連情報を内部メモリ207に格納する。この処理は、図28のステップS7の処理と同様であり、説明を省略する。
ステップS507では、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。ビデオ同期の割込み待ちであれば、同じステップS507に戻る。一方、ビデオ同期の割込み待ちでなければ、ステップS508に進む。この処理は、図28のステップS8の処理と同様である。
ステップS508にて、CPU201は、オブジェクト関連情報をグラフィックプロセッサ202に与えるとともに、グラフィックプロセッサ202は、内部メモリ207から背景関連情報を取得する。グラフィックプロセッサ202は、オブジェクト及び背景を表す画像信号VDを生成して、テレビジョンモニタ80に与える。この処理は、図28のステップS9の処理と同様である。
ステップS509にて、CPU201は、BGM用の楽譜データに従って、BGM発音のための楽音関連情報を内部メモリ207に格納する。サウンドプロセッサ203は、内部メモリ207から、トリガ発音(ステップS505参照)およびBGM発音のための楽音関連情報を取得して、これらの情報を基に楽音信号AL,ARを生成し、テレビジョンモニタ80に与える。また、ステップS509では、CPU201は、音符マーク登録用の楽譜データに従って、音符マークnを登録する。さらに、ステップS509では、ビブラートスイッチ12eが押されたときに、ビブラート処理を実行する。これらの処理は、図28のステップS10の処理と同様であり、説明を省略する。
ステップS510のパルスカウント処理は、タイマ回路210による割り込みが発生したときに、CPU201により実行される。このパルスカウント処理は、フォトトランジスタ34,35(図52参照)が出力するパルス信号A,Bの状態遷移をカウントする処理である。
図54は、図53のステップS500の初期設定処理の流れの1例を示すフローチャートである。図54のステップS530〜S537の処理は、それぞれ、図29のステップS30〜S37の処理と同様であり説明を省略する。ステップS538では、CPU201は、タイマ回路210をステップS510のパルスカウントのための割込み源としてセットする。この場合、フォトトランジスタ34からのパルス信号Aあるいはフォトトランジスタ35からのパルス信号Bの最も短いハイレベル期間あるいはローレベル期間より短い間隔で、割り込みが発生するように、タイマ回路210がセットされる。
例えば、10kHzで割り込みを発生させる。また、例えば、表示画像の更新(フレーム更新)は、1/60秒ごとに行う。
図55は、図53のステップS510のパルスカウント処理の流れの一例を示すフローチャートである。この例では、高速プロセッサ200の入出力ポートIO0及びIO1にそれぞれ、パルス信号Aおよびパルス信号Bが入力されるとする。図55に示すように、ステップS550にて、CPU201は、入出力制御回路209を介して、入出力ポートIO0及びIO1の値を読み込む。
ステップS551にて、CPU201は、入出力ポートIO0の値がハイレベルであり、かつ、入出力ポートIO1の値がローレベルであるときは、入出力ポートIO0,IO1の状態情報を「0」として、ステップS554に進み、それ以外のときは、ステップS552に進む。ステップS552にて、CPU201は、入出力ポートIO0の値がハイレベルであり、かつ、入出力ポートIO1の値がハイレベルであるときは、入出力ポートIO0,IO1の状態情報を「1」として、ステップS554に進み、それ以外のときは、ステップS553に進む。
ステップS553にて、CPU201は、入出力ポートIO0の値がローレベルであり、かつ、入出力ポートIO1の値がハイレベルであるときは、入出力ポートIO0,IO1の状態情報を「2」として、ステップS554に進み、それ以外のときは、入出力ポートIO0の値がローレベルであり、かつ、入出力ポートIO1の値がローレベルであるので、入出力ポートIO0,IO1の状態情報を「3」として、ステップS554に進む。
ステップS554にて、CPU201は、入出力ポートIO0,IO1の今回の状態情報を内部メモリ207に格納する。ステップS555にて、CPU201は、入出力ポートIO0,IO1の今回の状態情報と前回の状態情報と比較する。ステップS556にて、CPU201は、入出力ポートIO0,IO1の状態情報に変化があった場合は、ステップS557に進む。
ステップS557にて、CPU201は、入出力ポートIO0,IO1の状態情報の変化の方向を判断する(図20参照)。CPU201は、状態情報の変化の方向が、(+)方向遷移であれば、速度カウンタCvを1つインクリメントする。一方、CPU201は、状態情報の変化が、(−)方向遷移であれば、ステップS559に進み、速度カウンタCvを1つデクリメントする。以上ようにして、フォトトランジスタ34,35からのパルス信号A,Bの状態遷移をカウントする。なお、速度カウンタCvは、ソフトウエアカウンタである。
図56は、図53のステップS503のトリガ処理の流れの一例を示すフローチャートである。図56に示すように、ステップS570にて、CPU201は、速度カウンタCvを参照して、そのカウント値を取得する。取得したカウント値は、1フレーム当たりのカウント値であり、摺動操作部材40の現在の摺動速度を表す。ステップS571にて、CPU201は、速度カウンタCvをリセットする。
ステップS572にて、CPU201は、摺動操作部材40の摺動速度(速度カウンタCvのカウント値)の移動平均を算出する。例えば、摺動操作部材40の現在の摺動速度および過去9フレーム分の摺動速度を用いて、10フレーム分の移動平均を算出する。摺動操作部材40の摺動速度の移動平均を摺動速度Vaと表記する。
ステップS573にて、CPU201は、摺動速度Vaの絶対値|Va|、つまり、摺動速さ|Va|を算出する。ステップS574にて、CPU201は、摺動操作部材40の摺動速さ|Va|が、予め定められた最大値MAXを超えているか否かを判断する。摺動操作部材40の摺動速さ|Va|が、予め定められた最大値MAXを超えていなければ、ステップS580に進み、超えていれば、ステップS575に進む。
ステップS575にて、CPU201は、摺動速度Vaの符号を判断し、正であれば、ステップS577にて、摺動速度Vaに、最大値MAXを代入する。一方、CPU201は、摺動速度Vaの符号が、負であれば、ステップS576にて、摺動速度Vaに、(−1)×MAXを代入する。ステップS578では、CPU201は、摺動速さ|Va|に、最大値MAXを代入して、ステップS579に進む。
ステップS579にて、CPU201は、摺動操作部材40の摺動速さ|Va|が予め定められた閾値ThV1を超えているかどうか判断する。摺動速さ|Va|が予め定められた閾値ThV1を超えていれば、ステップS580に進み、閾値ThV1以下であれば、ステップS584に進む。
ステップS580にて、CPU201は、摺動操作部材40の前回と今回の摺動速度Vaの符号を比較する。そして、CPU201は、摺動速度Vaの符号が変化していない場合は、摺動方向に変化がないとして、メインルーチンにリターンし、摺動速度Vaの符号が変化している場合は、摺動方向が変化したとして、ステップS582に進む。そして、ステップS582では、CPU201は、発音フラグをオンにする。発音フラグのオンは、トリガ発生を意味する。
ステップS583にて、CPU201は、発音中フラグをチェックする。発音中フラグは、例えば、発音中でない場合は「00」がセットされ、チャンネルCH0,CH1が発音中であれば「01」がセットされ、チャンネルCH2,CH3が発音中であれば「10」がセットされる。このうち、「00」がオフを意味し、「01」や「10」はオンを意味する。ステップS583では、発音中フラグがオフであればステップS585に進み、オンであればステップS584に進む。ステップS584では、CPU201は、ハードウエアリリースフラグをオンにする。なぜなら、発音中に新たなトリガが発生したからである。
ステップS585にて、CPU201は、トリガカウンタCtgを1つインクリメントして、メインルーチンにリターンする。
以上のように、トリガは、摺動操作部材40の自動演奏装置本体500に対する相対的な速さ(つまり、摺動速さ|Va|)が、予め定められた閾値ThV1より大きくなり(ステップS579参照)、かつ、摺動操作部材40の摺動方向が変化した場合(ステップS581参照)に発生する。
さて、ステップS586にて、CPU201は、摺動操作部材40の摺動速さ|Va|が「0」か否かを判断する。摺動操作部材40の摺動速さ|Va|が「0」でないならば、ステップS591へ進み、リリースカウンタCrlをリセットして、メインルーチンにリターンし、摺動速さ|Va|が「0」ならば、ステップS587へ進む。
ステップS587にて、CPU201は、リリースカウンタCrlを1つインクリメントする。ステップS588にて、CPU201は、リリースカウンタCrlが一定値kになったかどうかを判断する。リリースカウンタCrlが一定値kになっていない場合は、メインルーチンにリターンし、一定値kになった場合は、ステップS589に進む。ステップS589にて、CPU201は、リリースカウンタCrlをリセットする。ステップS590にて、CPU201は、ハードウエアリリースフラグをオンにして、メインルーチンにリターンする。
ステップS586〜S590の処理は、摺動速さ|Va|が、k(例えば、k=7)回連続して「0」であった場合に、ハードウエアリリースを実行する処理である。なお、ハードウエアリリースの代わりに、ソフトウエアリリースを行うことができる。
図57は、図53のステップS504の音量制御処理の流れの1例を示すフローチャートである。図57に示すように、ステップS610にて、CPU201は、摺動操作部材40の摺動速さ|Va|が、予め定められた閾値ThV2より大きいかどうかを判断し、閾値ThV2より大きい場合はステップS611に進み、閾値ThV2以下の場合は、ステップS612に進む。
ステップS611では、CPU201は、摺動操作部材40の摺動速さ|Va|に応じたエンベロープ係数を算出して、メインルーチンにリターンする。例えば、速度カウンタCvを8ビットカウンタとしたとき、エンベロープ係数を、8×|Va|×(1/255)とし、これが「1」を超えたら、「1」にクリッピングする。一方、ステップS612では、CPU201は、ハードウエアリリースフラグをオンにして、メインルーチンにリターンする。
ここで、ステップS610,S612の処理は、摺動速さ|Va|が、k回連続して「0」でない場合でも、摺動速さ|Va|が閾値ThV2以下であれば、ハードウエアリリースを実行するための処理である。別の言い方をすれば、ステップS610,S612の処理は、操作者の意図に沿うように、摺動操作部材40の停止を認識させる処理である。つまり、摺動操作部材40を段々と遅く動かしていき、発音を停止させたい場合に、このような操作者の意図に沿って、摺動操作部材40の停止を認識する処理である。
また、例えば、ThV2≦ThV1、である。このように、ThV1を大きくしたのは、操作者が意図しない操作(例えば、手のぶれなどによる操作部材40の微動など)によりトリガが発生するのを防止するためである。一方、ThV2を小さくしたのは、操作者が意図してゆっくりと操作部材40を操作しているときに、操作停止と認識されるのを防止するためである。ただし、試行錯誤により、経験的に、ThV1=ThV2、とすることもできる。
さて、以上のように、本実施の形態によれば、操作者が摺動操作部材40の摺動方向を変えたり、摺動速さを変えたり、という直感的な操作により、自動演奏のトリガを発生させたり、音量を制御したり、できる。
このように、自動演奏装置(コンピュータ)が自動演奏する楽曲に対して、直感的な操作方法により、テンポを調整したり、強弱を加えたりでき、特別な音楽的知識や技量を有しない操作者でも、個性的な自動演奏を楽しむことができる。
また、摺動操作部材40の摺動速さが、予め定められた閾値ThV2を下回った場合に(図57のステップS610参照)、最新のトリガによる発音の終了処理が行われるだけでなく、新たなトリガが発生した場合に、前回のトリガによる発音の停止処理が行われる(図56のステップS584参照)。
従って、摺動操作部材40の摺動速さが、予め定められた閾値ThV1を超えたことのみをトリガの発生条件とし、予め定められた閾値ThV2を下回ったことのみを、発音の終了条件とする場合と比べて、次の利点がある。
操作者が、大きい摺動速さで、しかも、素早く摺動方向を変化させた場合、摺動速さが予め定められた閾値ThV2を下回ったことが検知されず、そのため、発音終了処理が実行されず、しかも、変化直後に検知した摺動速さが予め定められた閾値ThV2を超えていることもあり得る。この場合、1つのトリガによる発音が持続してしまうという不都合が生じる。大きい摺動速さで、しかも、素早く摺動方向を変化させる操作は、度々行われ、上記不都合は大きな問題である。
新たなトリガの発生を(前回のトリガの後に、摺動速さが予め定められた閾値ThV1を超えた場合であって、かつ、摺動方向が変化した場合)、前回のトリガによる発音の終了条件とすることで、以上のような問題を回避できる。
また、摺動操作部材40の摺動方向が変化したことのみをトリガの発生条件とする場合、例えば、僅かな手のぶれ等でもトリガが発生してしまう、等の不都合が発生し得るが、摺動方向の変化に加えて、摺動速さが予め定められた閾値ThV1を超えたことをトリガ発生の条件としているため、このような問題を回避できる。
ここで、発音の終了処理とは、発音を直ちに中止するという意味ではなく、音の減衰処理(本実施の形態では、ハードウエアリリース)を行うという意味である。従って、発音の停止処理が開始されてから、音が出なくなるまで、一定時間(リリースタイム)要することになる。
また、本実施の形態では、発光ダイオード36及びフォトトランジスタ34,35により反射型の光センサを構成して、摺動操作部材40の摺動速さ及び摺動方向を簡易に求めている。この場合、摺動操作部材40の反射パターン43で反射した赤外光は、光ファイバ89,92により、フォトトランジスタ34,35に導かれる。従って、光ファイバ89の一方端(被摺動鞍部533の内面側に露出している先端)と光ファイバ92の一方端(被摺動鞍部533の内面側に露出している先端)との間隔を調整することにより、フォトトランジスタ34が出力する受光信号と、フォトトランジスタ35が出力する受光信号と、の位相差の調整を、容易、かつ、高精度に行うことができる。
また、本実施の形態によれば、2つのガイド531,532により、摺動操作部材40の摺動位置が規制されるため、操作者は特別に意識することなく、摺動操作部材40を、発光ダイオード36及び光ファイバ89,92上を通過させることができる。また、被摺動鞍部533は、断面視において、円弧状となっているので、摺動操作部材40の動きの自由度を大きくでき、様々な態様の摺動操作が可能となる。
また、本実施の形態では、実施の形態1と同様に、自動演奏の状態を表す画像103,104、及び、操作ガイドを表す画像n,100,101,102、をテレビジョンモニタ80に表示し(図14参照)また、メモリカートリッジ29を装着するカートリッジソケット23が本体500に設けられる。また、本実施の形態では、実施の形態1と同様のトリガ発生条件を設定し、また、新たなトリガに応じた発音のための発音チャンネルを、前回のトリガに応じた発音のための発音チャンネルと異ならせる(図40のステップS286〜S288参照)。従って、これらのことを起因として、本実施の形態では、実施の形態1と同様の効果を奏する。
(実施の形態3)
実施の形態3では、スクリーン82に表示される操作ガイド画面が、図14と異なっている。図58は、実施の形態3における操作ガイド画面の例示図である。この操作ガイド画面には、図14の操作ガイド画面の表示に加えて、ベスト操作領域A1、セカンド操作領域A2、サード操作領域A3、ライフ表示部700、及び、点数表示部701が表示される。ただし、図58の操作ガイド画面では、図14の操作指示枠101、操作指示マーク102及びシンクロ値99の表示はない。なお、ベスト操作領域A1、セカンド操作領域A2およびサード操作領域A3を包括して表現するときは、操作領域Aと表記する。
操作者が、音符マークnがベスト操作領域A1に入った時にトリガを発生させると、例えば、50点を取得する。操作者が、音符マークnがセカンド操作領域A2に入った時にトリガを発生させると、例えば、30点を取得する。操作者が、音符マークnがサード操作領域A3に入った時にトリガを発生させると、例えば、10点を取得する。
また、例えば、ベスト操作領域A1内で、5〜9回連続してトリガを発生させた時点で60点、10〜29回連続してトリガを発生させた時点で70点、30〜49回連続してトリガを発生させた時点で80点、50〜99回連続してトリガを発生させた時点で90点、100回以上連続してトリガを発生させた時点で100点、が与えられる。
自動演奏のスタート時において、操作者には、例えば、8つのライフが与えられる。そして、ベスト操作エリアA1、セカンド操作エリアA2およびサード操作エリアA3以外の領域で、トリガを発生させたときは、1つライフが消滅する。全てのライフが消滅したら、自動演奏は終了する。また、例えば、ベスト操作エリアA1内で、10回、30回、50回、あるいは、100回、連続してトリガを発生させた時点でライフが1つ回復する。ただし、ライフが8を超えることはない。
操作者が取得した上記の点数は、リアルタイムで点数表示部701に表示される。また、操作者のライフは、ライフ表示部700に表示される。1つのライフが消滅すると、ライフ表示部700の特定色の領域が、1/8減少する。さらに、ライフが1つ回復すると、特定色の領域が1/8増加する。特定色の領域が、消滅したら、8つ全てのライフが消滅したことを示し、自動演奏が終了する。
なお、音符マークnが、ベスト操作領域A1に入った時に、操作者がトリガを発生させると、自動演奏装置は、BGMの進行に合った楽音を発生させる。この点、ベスト操作領域A1は、図14の操作指示枠101と同様である。
また、例えば、音符マークnが、ベスト操作領域A1に入った時にトリガを発生させた場合、セカンド操作領域A2に入った時にトリガを発生させた場合、および、サード操作領域A3に入った時にトリガを発生させた場合に、それぞれ、ベストである旨の表示、セカンドである旨の表示、および、サードである旨の表示を行うこともできる。さらに、例えば、ベスト操作領域A1で連続してトリガを発生させた回数を表示することもできる。
ここで、本実施の形態では、3つの異なるモード(ハードモード、スタンダードモード、イージーモード)を設けている。図59(a)は、ハードモードの説明図、図59(b)は、スタンダードモードの説明図、図59(c)は、イージーモードの説明図、である。図59(a)〜図59(c)に示すように、ハードモード、スタンダードモードおよびイージーモードの順で、操作領域Aの水平方向の幅が狭くなっている。従って、難易度は、高い順に、ハードモード、スタンダードモードおよびイージーモードとなる。
本実施の形態の自動演奏装置としては、図1の自動演奏装置および図46の自動演奏装置のいずれでも使用できる。図1の自動演奏装置を使用するときは、例えば、図28のステップS6とステップS7との間で、下記のトリガ発生領域判定処理を実行する。一方、図46の自動演奏装置を使用するときは、例えば、図53のステップS505とステップS506との間で、下記のトリガ発生領域判定処理を実行する。
図60は、本実施の形態の自動演奏装置によるトリガ発生領域判定処理の流れの1例を示すフローチャートである。図60に示すように、ステップS799にて、CPU201は、トリガカウンタCtgが更新されたか(インクリメントされたか)どうかを判断し、更新されていれば、ステップS800に進み、更新されていなければ、メインルーチンにリターンする。
ステップS800にて、CPU201は、トリガカウンタCtgの値と同じ番号の音符マークnの座標を取得する。音符マークnの座標は、音符マークnを構成するスプライトの中心座標である。ステップS801にて、CPU201は、トリガカウンタCtgの値と同じ番号の音符マークnの座標が、ベスト操作領域A1に存在するかどうかを判断して、存在する場合は、ステップS802に進み、存在しない場合は、ステップS806に進む。
ステップS802では、CPU201は、点数Pに50点を加算する。ステップS803にて、CPU201は、ベストカウンタCbsをインクリメントする。ステップS804にて、CPU201は、ベストカウンタCbsの値に応じて、点数Pに値を加算する。よって、上述のように、ベスト操作領域A1で、連続してトリガを発生させると、その連続回数に応じた点数が加算される。ステップS805にて、CPU201は、ベストカウンタCbsの値に応じて、ライフLを1つ回復させて、メインルーチンにリターンする。よって、上述のように、ベスト操作領域A1で、連続してトリガを発生させると、その連続回数に応じて、ライフLが1つ回復する。
一方、ステップS806では、CPU201は、トリガカウンタCtgの値と同じ番号の音符マークnの座標が、セカンド操作領域A2に存在するかどうかを判断して、存在する場合は、ステップS807に進み、点数Pに30点を加算し、ステップS812に進み、一方、存在しない場合は、ステップS808に進む。
ステップS808では、CPU201は、トリガカウンタCtgの値と同じ番号の音符マークnの座標が、サード操作領域A3に存在するかどうかを判断して、存在する場合は、ステップS809に進み、点数Pに10点を加算し、ステップS812に進み、一方、存在しない場合は、ステップS810に進む。
ステップS810にて、CPU201は、ライフLを1つ減少させる。なぜなら、この場合は、ベスト操作領域A1、セカンド操作領域A2およびサード操作領域A3のいずれにも属しない範囲で、トリガが発生したからである。ステップS811では、CPU201は、ライフLが「0」かどうかを判断して、「0」でなければ、ステップS812に進み、一方、「0」であれば、ステップS813に進んで、音楽終了フラグをオンにして、メインルーチンにリターンする。
ステップS812では、CPU201は、ベストカウンタCbsをリセットする。なぜなら、ベストカウンタCbsは、ベスト操作領域A1で連続してトリガを発生させた回数を表すからである。
さて、本実施の形態では、図33のステップS129のシンクロ値制御処理の代わりに、点数表示制御処理を実行する。この処理では、CPU201は、点数Pに応じて、5つのベルトオブジェクトを選択して、それぞれの座標を設定する。
具体的には次の通りである。0〜9までの10個の数字オブジェクトが用意される。各数字オブジェクトは、16画素×16画素のスプライト1つからなる。CPU201は、点数Pを表す数字オブジェクトを選択して、x座標およびy座標を設定する。例えば、点数Pが、「2700」である場合は、「0」を表す数字オブジェクトを3個、「2」を表す数字オブジェクトを1個、「7」を表す数字オブジェクトを1個選択して、それぞれのx座標およびy座標を設定する。
また、本実施の形態では、例えば、点数表示制御処理の後に、ライフ表示制御処理を実行する。この処理では、CPU201は、ライフLの数に応じて、2つのベルトオブジェクトを選択して、それぞれの座標を設定する。
具体的には、次の通りである。ライフ表示部700は、例えば、2つのベルトオブジェクトから構成され、このベルトオブジェクトは、16画素×16画素のスプライト1つにより構成されるとする。そして、このベルトオブジェクトの種類は、5種類である。第1は透明のスプライト、第2は長さが4画素のベルトを表すスプライト、第3は長さが8画素のベルトを表すスプライト、…、第5は長さが16画素のベルトを表すスプライトである。ライフ表示部700の水平方向の長さは、例えば、32画素、つまり、ベルトオブジェクト2個分である。
CPU201は、ライフLの数に応じて、表示するベルトオブジェクトを2つ選択する。そして、CPU201は、選択した全ベルトオブジェクトのx座標およびy座標を設定する。例えば、ライフLの数が「5」、であれば、第5ベルトオブジェクト1個および第2ベルトオブジェクト1個が選択され、それぞれのx座標およびy座標が設定される。
さて、以上のように、本実施の形態では、スクリーン82に、ベスト操作領域A1、セカンド操作領域A2及びサード操作領域A3を表示して、トリガが発生した領域に応じて、点数やライフの加算及び減算が行われる。このように、自動演奏にゲーム性が付加されるため、操作者に対して、別の楽しみ方を与えることができる(図58参照)。
(実施の形態4)
実施の形態4では、2台の自動演奏装置本体を接続して、二人の操作者が同時に同一楽曲の自動演奏に参加できるようにしている。この場合、図1の自動演奏装置本体1および摺動操作部材40を二組用意して、本体1同士を接続して使用することもできるし、図46の自動演奏装置本体500および摺動操作部材40を二組用意して、本体500同士を接続して使用することもできる。まず、本実施の形態における操作ガイド画面について説明する。
図61は、本実施の形態における操作ガイド画面の例示図である。図61に示すように、この操作ガイド画面には、一方の自動演奏装置を操作する操作者のためのガイド部800Aと、他方の自動演奏装置を操作する操作者のためのガイド部800Bと、が表示される。ガイド部800Aおよび800Bのそれぞれは、音符マークn、発音長指示バー100、操作指示枠101、操作指示マーク102、及び、シンクロ値99、を含む。これらの機能は、図14と同じである。
また、図14と同じインジケータ103が表示され、この上縁に沿って、上記一方の自動演奏装置を操作する操作者のための操作位置明示オブジェクト801Aが表示され、この下縁に沿って、上記他方の自動演奏装置を操作する操作者のための操作位置明示オブジェクト801Bが表示される。操作位置明示オブジェクト801A,801Bの機能は、図14の縦棒104と同じであり、それぞれの操作者の現在の操作位置を表している。
従って、二人の操作者は、適切な操作位置に対して、どの程度ずれて操作しているかを把握できる。なお、操作位置とは、楽曲全体の時間を表す時間軸上の位置のことである。
図61から分かるように、ガイド部800Aの内容とガイド部800Bの内容(音符マークnの出現)は異なっており、二人の操作者は、それぞれ異なるパートを担当する。このように、二人の操作者に、異なるパートを割り当てている。従って、トリガにより発生される楽音も異なってくる。
図62は、本実施の形態における操作ガイド画面の他の例示図である。図62に示すように、この操作ガイド画面には、一方の自動演奏装置を操作する操作者のためのガイド部810Aと、他方の自動演奏装置を操作する操作者のためのガイド部810Bと、が表示される。ガイド部810Aおよび810Bのそれぞれは、音符マークn、発音長指示バー100、ベスト操作領域A1、セカンド操作領域A2、サード操作領域A3、点数表示部701、及び、ライフ表示部700、を含む。これらの機能は、図58と同じである。また、この操作ガイド画面は、図61と同じインジケータ103および操作位置明示オブジェクト801A,801Bが表示される。
図62から分かるように、ガイド部810Aの内容とガイド部810Bの内容(音符マークnの出現)は同じであり、二人の操作者に、同じパートを割り当てている。従って、トリガにより発生される楽音も同じである。
図63は、本実施の形態による自動演奏システムの全体構成を示す図である。図63に示すように、この自動演奏システムは、自動演奏装置本体500m(以下、「本体500m」と呼ぶ。)、摺動操作部材40m、自動演奏装置本体500s(以下、「本体500S」と呼ぶ。)、摺動操作部材40s、および、テレビジョンモニタ80を含む。本体500mおよび500sの構成は、図46の自動演奏装置本体500の構成と同じであり、また、摺動操作部材40m,40sの構成も、図46の摺動操作部材40の構成と同じである。従って、本体500m,500sを包括して表現するときは、本体500と表記し、摺動操作部材40m,40sを包括して表現するときは、摺動操作部材40と表記する。
図63に示すように、マスタである本体500mが、AVケーブル60により、テレビジョンモニタ80に接続される。この場合、AVケーブル60は、本体500mのAV端子18(図47(b)参照)およびテレビジョンモニタ80のAV端子81(図46参照)に接続される。
また、本体500mと本体500sとを、ケーブル411により接続する。この場合、ケーブル411は、本体500m,500sのコネクタ22に接続される。
図64は、図63のケーブル411の内部構造を示す模式図である。図64に示すように、ケーブル411は、マスタである本体500mのコネクタ22に接続されるコネクタ850mおよびスレイブである本体500sのコネクタ22に接続されるコネクタ850sを含む。コネクタ850mは、端子Tm1〜Tm9を含み、コネクタ850sは、端子Ts1〜Ts9を含む。
端子Tm1と端子Ts1とは、ラインL1により接続される。ラインL1は、マスタの本体500mからスレイブの本体500sへ電源電圧Vcc2を供給する。後述するが、この電源電圧Vcc2は、本体500sの検知部30およびビブラートスイッチ12eに供給され、本体500sの高速プロセッサ200およびその周辺回路には供給されない。端子Tm9と端子Ts9とは、ラインL9により接続される。ラインL9は、マスタの本体500mからスレイブの本体500sへ接地電圧GNDを供給する。
端子Tm2と端子Ts6とは、ラインL2により接続される。端子Tm4と端子Ts8とは、ラインL4により接続される。端子Tm6と端子Ts2とは、ラインL6により接続される。端子Tm8と端子Ts4とは、ラインL8により接続される。ラインL6およびラインL8は、それぞれ、スレイブの本体500sからマスタの本体500mへ、本体500sの検知部30が出力するパルス信号AおよびBを供給する。
端子Tm3と端子Ts7とは、ラインL3により接続される。端子Tm7と端子Ts3とは、ラインL7により接続される。ラインL7は、スレイブの本体500sからマスタの本体500mへ、本体500sのビブラートスイッチ12eのオン/オフ信号を供給する。
端子Tm5は、接地電圧GNDを供給するラインL9に接続され、端子Ts5は、電源電圧Vcc2を供給するラインL1に接続される。端子Tm5が接続される本体500mは、電源回路が活性状態となって、マスタとなり、端子Ts5が接続される本体500sは、電源回路が非活性状態となって、スレイブとなる。この点を、電源関連回路の回路図を用いて詳しく説明する。
図65は、本体500mおよび本体500sの各々に内蔵される電源関連回路の回路図である。図65に示すように、電源関連回路は、電源電圧Vcc1を生成する電源回路900、電源スイッチ24、高速プロセッサ200の異常動作を検出して電源回路900を非活性状態にする暴走監視回路930、及び、スレイブの本体500sの電源回路900を停止させる電源停止回路940、を含む。
電源回路900は、電解コンデンサ901、コンデンサ902,912、抵抗素子903,904,906,909,910,913、NPNトランジスタ905,907、PNPトランジスタ908、ツェナダイオード911、及び、ショットキダイオード914を含む。電源スイッチ24は、8つの端子921〜928を含む。
暴走監視回路930は、NPNトランジスタ931、PNPトランジスタ932、抵抗素子933,935,939、電解コンデンサ934,938、および、ダイオード936,937を含む。電源停止回路940は、抵抗素子941およびNPNトランジスタ942を含む。
電源回路900のPNPトランジスタ908のコレクタは、NPNトランジスタ905のコレクタ、抵抗素子913の一方端、抵抗素子903の一方端、コンデンサ902の一方端、及び、電解コンデンサ901のプラス端子、に接続される。コンデンサ902の他方端および電解コンデンサ901のマイナス端子は、接地される。NPNトランジスタ905のベースには、抵抗素子903の他方端および抵抗素子904の一方端が接続される。抵抗素子904の他方端は接地される。ショットキダイオード914のアノードは、抵抗素子913の他方端に接続され、カソードは、コネクタ850mの端子Tm1あるいはコネクタ850sの端子Ts1に接続される。
PNPトランジスタ908のベースには、NPNトランジスタ907のコレクタおよび抵抗素子909の一方端が接続される。NPNトランジスタ905,907のエミッタは、抵抗素子906の一方端に接続される。抵抗素子906の他方端は、接地される。
NPNトランジスタ907のベースには、抵抗素子910の一方端、ツェナダイオード911のカソード、NPNトランジスタ931のコレクタ、および、PNPトランジスタ932のベースが接続される。ツェナダイオード911のアノードは接地される。
PNPトランジスタ908のエミッタには、抵抗素子909の他方端、抵抗素子910の他方端、コンデンサ912の一方端、および、電源スイッチ24の端子922,924が接続される。
電源スイッチ24の端子921,925,926は、ハイインピーダンス状態にされる。端子923には、電池あるいはACアダプタ50から電源電圧VccS(例えば、6V)が与えられる。端子928には、電源回路900から電源電圧Vcc1(例えば、3.3V)が与えられる。端子927は、テレビモード信号/TVを出力するラインに接続される。
暴走監視回路930のNPNトランジスタ931のベースは、PNPトランジスタ932のコレクタに接続され、エミッタは接地される。PNPトランジスタ932のエミッタは、抵抗素子933の一方端に接続される。ダイオード936のアノードには、抵抗素子935の一方端、抵抗素子933の他方端、および、電解コンデンサ934のプラス端子が接続される。抵抗素子935の他方端は電源Vcc1に接続され、電解コンデンサ934のマイナス端子は接地される。
ダイオード936のカソードには、ダイオード937のアノードおよび電解コンデンサ938のプラス端子が接続される。ダイオード937のカソードは電源Vcc1に接続される。電解コンデンサ938のマイナス端子は、NPNトランジスタ942のコレクタおよび抵抗素子939の一方端に接続される。抵抗素子939の他方端は、高速プロセッサ200の入出力ポート(例えばIO9)に接続される。
電源停止回路940のNPNトランジスタ942のエミッタは接地され、ベースは抵抗素子941の一方端に接続される。抵抗素子941の他方端は、コネクタ850mの端子Tm5あるいはコネクタ850sの端子Ts5に接続される。
電源回路900の動作を説明する。電源回路900は、ノードN2の電位(ツェナダイオード911が発生する基準電圧Vref)と、ノードN1の電位(出力ノードN0の電位(つまり、電源電圧Vcc1)を、抵抗素子903と抵抗素子904とで分圧した電圧)と、を比較して、ノードN1の電圧が基準電圧Vrefより大きい場合は、PNPトランジスタ908により、出力ノードN0に供給する電流を小さくし、一方、ノードN1の電圧が基準電圧Vrefより小さい場合は、PNPトランジスタ908により、出力ノードN0に供給する電流を大きくする。このようにして、出力ノードN0の電位(電源電圧Vcc1)を一定値に保つ。
例えば、基準電圧Vrefを2Vとし、抵抗素子903の抵抗値:抵抗素子904の抵抗値=1.3:2として、電源電圧Vcc1を3.3Vに保つ。電源電圧Vcc1は、高速プロセッサ200およびその周辺回路に供給される。
電源スイッチ24について説明する。電源スイッチ24がオフの状態では、端子921と端子922とが接続されるとともに、端子925と端子926とが接続される。従って、ノードN5は、ハイインピーダンス状態となって、電源電圧Vcc0の出力が停止するとともに、電源回路900が非活性状態になり、電源電圧Vcc1の出力も停止する。
テレビモードでは、端子922と端子923とが接続されるとともに、端子926と端子927とが接続される。従って、ノードN5には、電源電圧VccSが供給され、電源回路900は活性状態となり、電源電圧Vcc1を出力する。一方、ノードN6は、ハイインピーダンス状態となる。この状態は、テレビモード信号/TVが、活性化された状態である(ローレベル)。
スピーカモードでは、端子923と端子924とが接続され、端子927と端子928とが接続される。従って、ノードN5には、電源電圧VccSが供給され、電源回路900は活性状態となり、電源電圧Vcc1を出力する。一方、ノードN6には、電源電圧Vcc1が供給される。この状態は、テレビモード信号/TVが、非活性化された状態である(ハイレベル)。
高速プロセッサ200は、以上のようなテレビモード信号/TVに基づいて、どのようなモードが選択されたかを判断して、モードに応じた処理を実行する。また、テレビモードのときは、テレビモード信号/TVに基づいて、スピーカ部11のスイッチがオフになって、スピーカ部11からは音声が出力されない。一方、スピーカモードのときは、テレビモード信号/TVに基づいて、スピーカ部11のスイッチがオンになって、スピーカ部11から音声が出力される。
暴走監視回路930について説明する。暴走監視回路930の入力ノードN3には、高速プロセッサ200の入出力ポートIO9から、一定周波数のパルス信号が与えられる。そして、このパルス信号が来なくなったらプログラムが暴走していると判断して、電源を遮断する。この点を詳しく説明する。
電解コンデンサ934は、抵抗素子935により、常時充電されている。入出力ポートIO9からのパルス信号のローレベルで、電解コンデンサ938にダイオード936を介して電解コンデンサ934の電荷が流れ込んで、電解コンデンサ938が充電される。一方、パルス信号のハイレベルで、電解コンデンサ938の電荷は、ダイオード937を介して、出力ノードN0へ流れ込む。このようにして、入力ノードN3にパルス信号が供給されている間は、電解コンデンサ934の充放電が繰り返され、ノードN4の電位は上昇しない。
プログラムが暴走して、入力ノードN3にパルス信号が来なくなると、電解コンデンサ934の放電ができなくなり、ノードN4の電位が上昇する。なぜなら、入力ノードN3がローレベルの場合、電解コンデンサ938の電荷を出力ノードN0に捨てることができず、電解コンデンサ938は、電解コンデンサ934の電荷を充電できなくなるからである。
ノードN4の電位が上昇して、PNPトランジスタ932のエミッタの電位が、ノードN2の電位より、一定値(トランジスタ932の入力特性で決まる。)以上大きくなると、PNPトランジスタ932がオンし、応じて、NPNトランジスタ931がオンする。すると、ノードN2の電位が下降し、PNPトランジスタ932がさらに強くオンし、応じて、NPNトランジスタ931もさらに強くオンする。このような動作により、ツェナダイオード911のアノードとカソードとをショートする。これにより、基準電圧Vrefが0Vとなるので、電源回路900の出力電圧(つまり電源電圧Vcc1)の発生が停止する。
電源停止回路940について説明する。まず、ケーブル411のコネクタ850mが接続された本体500mの電源停止回路940について説明する。この場合は、電源停止回路940のノードN7は、コネクタ850mの端子Tm5に接続される。図64から分かるように、この端子Tm5は、接地電圧GNDが供給されるラインL9に接続される。従って、ノードN7の電位は、ローレベルとなる。この場合、NPNトランジスタ942はオフしており、ノードN3にパルス信号が与えられている限り、電源回路900から電源電圧Vcc1が出力される。
また、この電源電圧Vcc1は、抵抗素子913及びショットキダイオード914により、電源電圧Vcc2として、コネクタ850mの端子Tm1、並びに、本体500mの検知部30及びビブラートスイッチ12eに与えられる。
次に、ケーブル411のコネクタ850sが接続された本体500sの電源停止回路940動作について説明する。この場合は、電源停止回路940のノードN7は、コネクタ850sの端子Ts5に接続される。図64から分かるように、この端子Ts5は、電源電圧Vcc2が供給されるラインL1に接続される。従って、ノードN7の電位は、ハイレベルとなる。この場合、NPNトランジスタ942がオンして、ノードN8は、パルス信号の入力に関係なく、ローレベルになる。よって、プログラムが暴走したときと同様の状態が作り出され、電源回路900から電源電圧Vcc1の出力が停止する。
また、コネクタ850sの端子Ts1からノードN8に、電源電圧Vcc2が与えられ、本体500sの検知部30及びビブラートスイッチ12eに供給される。この場合、ショットキダイオード914により、ノードN0に電流が供給されることはない。
以上のようにして、コネクタ850mが接続される本体500mの電源回路900はオンして、電源電圧Vcc1を、高速プロセッサ200およびその周辺回路に供給するとともに、図64のラインL1を介して、コネクタ850sが接続される本体500sの検知部30およびビブラートスイッチ12eに電源電圧Vcc2を供給する。
一方、コネクタ850sが接続される本体500sの電源回路900はオフして、その結果、本体500sの高速プロセッサ200には、電源電圧Vcc1が供給されず停止する。
次に、スレイブからマスタへの信号伝達経路について説明する。図66は、図63のスレイブの本体500sからマスタの本体500mへのパルス信号A,Bおよびビブラートスイッチ12eのオン/オフ信号の伝達経路の説明図である。
図66に示すように、ケーブル411のコネクタ850mは、マスタである本体500mに接続される。言い換えると、コネクタ850mが接続される本体500mがマスタである。一方、コネクタ850sは、スレイブである本体500sに接続される。言い換えると、コネクタ850sが接続される本体500sがスレイブである。
スレイブである本体500sの検知部30が出力するパルス信号A,Bは、端子Ts2,Ts4、ラインL6,L8、及び、端子Tm6,Tm8を介して、マスタである本体500mの高速プロセッサ200の入出力ポートIO6,IO8に入力される。
一方、マスタである本体500mの検知部30が出力するパルス信号A,Bは、本体500mの高速プロセッサ200の入出力ポートIO2,IO4に入力される。
また、スレイブである本体500sのビブラートスイッチ12eからのオン/オフ信号は、端子Ts3、ラインL7、及び、端子Tm7を介して、マスタである本体500mの高速プロセッサ200の入出力ポートIO7に入力される。
一方、マスタである本体500mのビブラートスイッチ12eからのオン/オフ信号は、本体500mの高速プロセッサ200の入出力ポートIO3に入力される。
以上のようにして、マスタである本体500mの高速プロセッサ200には、本体500m,500sの検知部30からのパルス信号A,B、が入力されるとともに、本体500m,500sのビブラートスイッチ12eのオン/オフ信号が入力される。
さて、本体500mの高速プロセッサ200は、図53の処理を実行する。ただし、処理は、本体500mおよび本体500sのそれぞれに対して行われる。本体500mおよび本体500sのそれぞれに対して行われる処理は、次の通りである。ただし、下記に挙げていない処理でも、必要に応じて、それぞれに対して行われる。
本体500mの高速プロセッサ200は、図53のステップS510の処理を、本体500mのパルス信号A,Bおよび本体500sのパルス信号A,Bのそれぞれに対して行う。
本体500mの高速プロセッサ200は、図53のステップS500において、図54のステップS530,S531,S534を、本体500mおよび本体500sのそれぞれに対して行う。
本体500mの高速プロセッサ200は、図53のステップS503,S504,S505の処理を、本体500mおよび本体500sのそれぞれに対して行う。
本体500mの高速プロセッサ200は、図53のステップS506において、図33のステップS125,S126,S127,S129の処理を、本体500mおよび本体500sのそれぞれに対して行う。
本体500mの高速プロセッサ200は、図53のステップS509において、図37のステップS201,S202,S203の処理を、本体500mおよび本体500sのそれぞれに対して行う。
以上の処理により、図61の画面がスクリーン82に表示される。一方、図61の画面を表示する際は、本体500mの高速プロセッサ200は、図60の処理を、本体500mおよび本体500sのそれぞれに対して行う。
ここで、マスタである本体500mの高速プロセッサ200は、本体500mのROM300あるいは本体500mに装着されるROM91に格納された制御プログラム301を実行して、上記処理を行う。この場合、本体500mの高速プロセッサ200は、本体500mのROM300あるいは本体500mに装着されるROM91に格納された画像データ302および楽曲データ305を用いて、楽音信号AR,AL及び画像信号VDを生成する。
図61の画面を表示する例では、図25の音符マーク登録用の楽譜データ及び図26のトリガ発音用の楽譜データは、本体500mおよび本体500sのそれぞれに対して用意される。図62の画面を表示する例では、音符マーク登録用の楽譜データ及びトリガ発音用の楽譜データは、一方に対して用意すればよい。
さて、以上のように、本実施の形態では、本体500mをマスタとして、本体500sと本体500mとを、ケーブル411により接続している。そして、本体500s,500mのそれぞれに対して、1つのスクリーン82に操作ガイドを表示している。従って、操作者二人で自動演奏される楽曲に変化や表情を加味できる。
また、本実施の形態では、スレイブの本体500sの電源をオフにし、ケーブル411を介して、マスタの本体500mから電源電圧Vcc2及び接地電圧GNDを供給している。この場合、本体500sの検知部30及びビブラートスイッチ12eのみに、電源電圧Vcc2が供給される。したがって、本体500sの高速プロセッサ200及び他の周辺回路には、電源電圧Vcc2が供給されないため、本体500sの消費電力を抑制できる。
また、本実施の形態では、本体500mの検知部30からの信号線に接続される端子Tm2,Tm4が、本体500sの検知部30からの信号線に接続される端子Ts2,Ts4とは異なる端子Ts6,Ts8に接続され、一方、本体500sの検知部30からの信号線に接続される端子Ts2,Ts4が、本体500mの検知部30からの信号線に接続される端子Tm2,Tm4とは異なる端子Tm6,Tm8に接続される。しかも、端子Tm2,Tm4と端子Ts2,Ts4とは、配置される位置が同じであり、また、端子Tm6,Tm8と端子Ts6,Ts8とは、配置される位置が同じである。
さらに、本体500mのビブラートスイッチ12eからの信号線に接続される端子Tm3が、本体500sのビブラートスイッチ12eからの信号線に接続される端子Ts3とは異なる端子Ts7に接続され、一方、本体500sのビブラートスイッチ12eからの信号線に接続される端子Ts3が、本体500mのビブラートスイッチ12eからの信号線に接続される端子Tm3とは異なる端子Tm7に接続される。しかも、端子Tm3と端子Ts3とは、配置される位置が同じであり、また、端子Tm7と端子Ts7とは、配置される位置が同じである。
さらに、電源電圧Vcc2を供給するラインが接続される端子Tm1と端子Ts1とは、配置される位置が同じであり、また、接地電圧GNDを供給するラインが接続される端子Tm9と端子Ts9とは、配置される位置が同じである。
さらに、暴走監視回路930に接続される端子Ts5と端子Tm5とは、配置される位置が同じである。そして、スレイブに接続される端子Ts5には電源電圧Vcc2が供給され、マスタに接続される端子Tm5には接地電圧GNDが供給される。
以上のような構成のケーブル411を採用することにより、コネクタ850mを、本体500mに接続し、コネクタ850sを本体500sに接続することもできるし、また、その逆も可能である。このように、コネクタ850m,850sの接続先を変えるだけで、任意にマスタやスレイブを選択できる。
また、本実施の形態では、暴走監視回路930に接続される端子Ts5と端子Tm5との極性を逆にすることで、暴走監視回路930の状態を定め、スレイブ側の暴走監視回路930が、スレイブ側の電源電圧発生回路900をオフにする。このように、ケーブル411を接続するだけで、スレイブの本体500sの電源をオフにできる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)実施の形態1では、摺動操作部材40の摺動速さを知るためのパルス信号aと、摺動操作部材40の摺動方向の変化を知るためのパルス信号Aと、を同一の信号とした(図23参照)。
しかし、摺動操作部材40の摺動速さを知るためのパルス信号を、摺動操作部材40の摺動方向の変化を知るためのパルス信号Aおよびパルス信号Bと異なる信号とすることもできる。
例えば、次のようにする。摺動操作部材40の摺動方向の変化を検知するために、図23の信号A及びBの状態遷移を検知する(図20参照)。この点は、上記と同様である。これに加えて、フォトトランジスタをさらに設けて、このフォトトランジスタにより、摺動操作部材40の反射パターンからの反射光を検出して、その反射光に応じたパルス信号(「パルス信号C」と呼ぶ。)を出力することもできる。そして、このパルス信号Cの周波数あるいは周波数に依存するものを検出することで、摺動操作部材40の摺動速さを知る。
つまり、この新たに設けたフォトトランジスタからのパルス信号Cは、摺動操作部材40の摺動速さを検出するための専用の信号である。一方で、フォトトランジスタ34,35からのパルス信号A,Bは、摺動操作部材40の摺動方向の変化を検知するための専用の信号と言える。
従って、パルス信号Cの検知の精度を、パルス信号A,Bの検知の精度より高くしたり、また、その逆とすることも可能である。例えば、摺動操作部材40の反射パターン43による反射光をフォトトランジスタ34,35で検知し、同じ摺動操作部材40に設けた別の反射パターンによる反射光を、新たに設けたフォトトランジスタで検知する。そして、反射パターン43の光反射部45(光吸収部44)の間隔と、その別の反射パターンの光反射部(光吸収部)の間隔と、を異ならせる。反射パターンの光反射部(光吸収部)の間隔が異なれば、出力されるパルス信号の周波数も異なってくる。このように、自動演奏装置の設計の自由度が向上する。
(2)実施の形態1では、ガイド31,32を、三角柱状に構成した(図7参照)。しかし、これに限定されるものではない。例えば、実施の形態2のガイド531,532を設けることもできる。逆に、実施の形態2において、ガイド31,32を設けることもできる。また、ガイドによって、摺動操作部材40が直線状に案内されるようにしてもよい。
(3)実施の形態1では、実施の形態2と同様に、図8の被摺動鞍部33の内面から、フォトトランジスタ34,35の受光部まで、光ファイバ、あるいはチューブ等で光路を形成して、フォトトランジスタ34,35へ赤外光を導くようにすることができる。
(4)実施の形態1の図18の例では、フォトトランジスタ34とフォトトランジスタ35との距離をL/4として、パルス信号Aとパルス信号Bとの位相差が、−90度又は90度になるようにした。しかし、この距離は、これに限定されるものではない。例えば、5L/4等、任意の値とすることができる。この点は、実施の形態2の光ファイバ89,92についても同様である。
(5)実施の形態4では、スレイブの本体500sとマスタの本体500mの構成を同じものとした。ただし、本体500sをスレイブ専用とする場合は、本体500sには、検知部30及びビブラートスイッチ12eだけを設ければよく、高速プロセッサ200等は必ずしも設ける必要はない。なぜなら、実施の形態4で説明したように、情報処理は全てマスタ側の高速プロセッサ200が実行するからである。また、スレイブへの電源電圧は、マスタから供給されるので、スレイブ側に電源を設ける必要がない。以上のことから、スレイブの本体500sのコスト削減及び消費電力の低減を図ることができる。
(6)上記の例では、操作者の摺動操作(摺動速さ及び摺動方向)により制御される旋律を1種類とした。しかし、外部ROM300に、複数の旋律の楽曲データを格納して、操作者の摺動操作により、複数の旋律を制御できるようにすることもできる。
この場合、操作者は、複数の旋律について、自動演奏装置による自動演奏に変化、表情を加えることができるので、操作者は、自動演奏装置による自動演奏をより一層楽しむことができる。
(7)音源データ309としては、1種類の楽器音を表す音源データだけでなく、複数種類の楽器音を表す音源データを格納して、発音することもできる。
上記例では、本体1は、バイオリンを模した形状としたため、バイオリンの音を表す音源データを格納することもできるし、また、ピアノ、ギター、ラッパ、等の様々な楽器音を表す音源データを格納できる。これにより、操作者は、自動演奏装置による自動演奏をより一層楽しむことができる。なお、格納する音源データは、楽器音に限られるものではない。
(8)上記では、摺動操作部材40に、光吸収部44と光反射部45とからなる反射パターン43を設け、反射型の光センサ(フォトダイオード36及びフォトトランジスタ34,35)により、反射光を検知した。しかし、このような反射型に限定されるものではなく、透過型にすることもできる。即ち、光透過部と遮光部とを交互に設けたパターンを、摺動操作部材40に設ける。そして、透過型の光センサにより、透過光を検知する。
(9)図14、図58、図61及び図62の操作ガイド画面において、さらに、楽譜に記載される記号、図形などの表示を行うこともできる。また、楽譜に記載される記号、図形などを分かり易く模式的に表したものを表示することができる。例えば、強弱を表す記号、テンポを表す記号、譜線など、様々な表示をすることができる。
(10)図6の反射パターン43を、直接、被摺動鞍部33,533に接触するようにすると、反射パターン43にキズが付いて不都合が生じる恐れもある。これを防止するために、反射パターン43の表面に滑らかなカバー(赤外線は透過)を装着することもできる。また、摺動操作部材40の底面41に、摺動操作部材40の長さ方向に溝を形成して、この溝の中に反射パターン43を設けることもできる。また、その双方を実行することも可能である。
図67(a)は、摺動操作部材40の他の例の側面図、図67(b)は、摺動操作部材40の他の例の底面図、図67(c)は、摺動操作部材40の他の例のE−E断面図、である。図67(c)に示すように、この摺動操作部材40の底面41には、その長さ方向に溝部778が形成され、この溝部778の底に反射パターン43が形成される。言い換えると、摺動操作部材40の底面41には、その長さ方向に直線状の2つのスペーサ777が平行に形成され、反射パターン43が、2つのスペーサ777の間に形成される。
(11)上記例では、1つのトリガにより単音が出力されたが、1つのトリガで重音を出力することもできる。
(12)上記例では、「BGM、ガイド付き」モードを中心に説明したが、「ソロ」モードでは、BGMや操作ガイド画面がなく、トリガによる楽音だけが出力され、「BGM付き」モードでは、操作ガイド画面が表示されないだけで、「BGM、ガイド付き」モードと同じである。
(13)図17の高速プロセッサ200として、任意の種類のプロセッサを使用できるが、本件出願人が既に特許出願している高速プロセッサを用いることが好ましい。この高速プロセッサは、例えば、特開平10−307790号公報およびこれに対応するアメリカ特許第6,070,205号に詳細に開示されている。
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。従って、本願の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。