以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の第1の実施の形態にかかる楽音発生装置の外観を示す図である。本実施の形態にかかる楽音生成装置10は、下側に種々のスイッチが配置されたスイッチ部11、大型の液晶表示装置を含む表示部12、表示部12に重ねあわされて配置されたタッチパネル13およびスピーカ14を有している。本実施の形態にかかる楽音発生装置10では、表示部12の画面上に表示された音符を、演奏者が触ると、タッチパネル13およびCPU21により当該接触が検出され、所定の音高の楽音が発生するようになっている。
図2は、本実施の形態に楽音生成装置の構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる楽音生成装置10は、CPU21、ROM22、RAM23、フラッシュメモリ24、サウンドシステム25、外部I/F28、スイッチ部11、表示部12およびタッチパネル13を備える。
CPU21は、楽音生成装置10全体の制御、スイッチ部11を構成するスイッチの操作の検出、タッチパネル13への接触の検出、タッチパネル13への接触にしたがったサウンドシステム14の制御、表示部12の画面上に表示する楽譜データの生成など、種々の処理を実行する。
ROM22は、CPU21に実行させる種々の処理、たとえば、楽音生成装置10全体の制御、スイッチ部11を構成するスイッチの操作の検出、タッチパネル13への接触の検出、タッチパネル13への接触にしたがったサウンドシステム14の制御、表示部12の画面上に表示する楽譜データの生成などのプログラムを記憶する。また、ROM22は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリアを有する。RAM23は、ROM22から読み出されたプログラムや、処理の過程で生じたデータを記憶する。また、フラッシュメモリ24には、種々の楽曲の曲データおよび当該楽曲の自動伴奏データが格納される。
サウンドシステム25は、音源部26、オーディオ回路27およびスピーカ14を有する。音源部26は、たとえば、タッチパネルの接触に基づくノートオンイベントなどをCPU21から受信すると、ROM22の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部26は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路27は、楽音データをD/A変換して増幅する。これによりスピーカ14から音響信号が出力される。
外部I/F28は、メモリカードスロットを有し、メモリカード(図示せず)を受け入れて、メモリカード中のデータを読み出し、或いは、メモリカードにデータを書きこむことも可能である。また、外部I/F28は、インターネットなどの外部ネットワークとの接続を実現するための通信手段も備え、外部ネットワークを介した他の機器との間のデータ送受信を実現する。また、本実施の形態にかかる楽音生成装置10は、通常モードおよび自動伴奏モードの何れの下においても、タッチパネル13上の接触に基づき、所定の音高の楽音を発生する。
以下、本実施の形態にかかる楽音生成装置10において実行される処理についてより詳細に説明する。図3は、本実施の形態にかかる楽音生成装置において実行される処理の概略を例示するフローチャートである。楽音生成装置10のCPU21は、楽音生成装置10の電源が投入されると、RAM23中のデータや、表示部12の表示画面のクリアを含むイニシャル処理(初期化処理)を実行する(ステップ301)。
イニシャル処理(ステップ301)が終了すると、CPU21は、入力部11を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する(ステップ302)。図4は、本実施の形態にかかるスイッチ処理の例を示すフローチャートである。図4に示すように、スイッチ処理には、ソング選択処理(ステップ401)、モード選択処理(ステップ402)、スタート・ストップスイッチ処理(ステップ403)、音色選択処理(ステップ404)および他のスイッチ処理(ステップ405)が含まれる。
図5は、本実施の形態にかかるソング選択処理の例を示すフローチャートである。図5に示すように、CPU21は、入力部11中のソングボタンがオンされたかを判断する(ステップ501)。ステップ501でNoと判断された場合には、ソング選択処理が終了される。ステップ501でYesと判断された場合には、CPU21は、フラッシュメモリ24から、曲データのタイトル(曲名)を取得して、表示部12の画面上に、曲名のリスト(ソングリスト)を表示する。また、CPU21は、演奏者による入力部11中のカーソルボタンの操作にしたがって、カーソル位置に対応する曲名を強調表示する(ステップ502)。
CPU21は、入力部11中の決定スイッチがオンされたかを判断する(ステップ503)。ステップ503でNoと判断された場合には、ステップ502に戻る。ステップ503でYesと判断された場合には、CPU21は、カーソル位置にある曲名の曲データのレコードを、当該曲データの先頭アドレスから所定数だけ読み出す(ステップ504)。
図6(a)は、本実施の形態にかかる曲データの構成例を示す図である。図6(a)に示すように、本実施の形態にかかる曲データ600は、ノートオンイベントのレコード(符号601参照)、ゲートタイムのレコード(符号602参照)およびステップタイムのレコード(符号603)を有する。ノートオンイベントのレコードには、音色および音高を示す情報が含まれる。ゲートタイムは、ノートオンイベントにかかる楽音の音長を示す。したがって、ノートオンイベント中の音高情報およびゲートタイムの音長とにより、五線譜における音符の位置および音符の種別が特定され得る。ステップタイムは、隣接するノートオンイベントの時間差を示す。したがって、ステップタイムとゲートタイムとの差により、隣接する音符間の休符が特定され得る。
なお、本実施の形態においては、楽曲の曲データとともに、その伴奏音のデータである伴奏音データがフラッシュメモリ24に格納されている。本実施の形態において、伴奏音データには、メロディデータ、コード音データ、および、リズム音データが含まれる。メロディデータ、コード音データおよびリズム音データは、それぞれ、曲データと同様に構成され、ノートオンイベント、ゲートタイムおよびステップタイムのレコードを有する。また、コード音データのノートオンイベントには、和音として同時に発音させることを示す和音フラグが含まれる。
ステップ504において、CPU21は、表示部12の画面上に初期的に表示すべく、先頭の小節から所定数の小節に含まれる曲データのレコードを読み出せば良い。次いで、CPU21は、読み出された曲データのレコード中、ノートオンイベントおよび次のゲートタイムに基づき、音符位置および音符種別を含む音符データを生成する(ステップ505)。また、ゲートタイムおよび次のステップタイムに基づく休符データも、ステップ505において生成される。
次いで、CPU21は、ステップ505で生成された音符データおよび休符データにしたがった音符や休符のシンボルを、五線譜中に配置した画像データを生成する(ステップ506)。また、CPU21は、上記画像中の音符や休符の各々の位置情報(座標)を、RAM23中に格納する(ステップ507)。また、CPU21は、表示部12の画面上に表示された音符および休符に対応する曲データのレコードのアドレス(たとえば最終アドレス)を、アドレスDADとしてRAM23に格納する(ステップ508)。図6(b)は、このようにして表示部12の画面610上に表示された楽譜の例を示す図である。
ソング選択処理(ステップ401)に引き続いて実行されるモード選択処理(ステップ402)において、CPU21は、入力部11中のモード選択ボタンにより、通常モード、および、自動伴奏モードの何れかが選択され、当該モードを示す情報がRAM23中に格納される。
モード選択処理(ステップ402)に引き続いて、CPU21は、スタート・ストップスイッチ処理を実行する(ステップ403)。図7は、本実施の形態にかかるスタート・ストップスイッチ処理の例を示すフローチャートである。図7に示すように、CPU21は、入力部11中のスタート・ストップスイッチの操作があったかを判断する(ステップ701)。ステップ701でNoと判断された場合には、スタート・ストップスイッチ処理を終了する。
ステップ701でYesと判断された場合には、CPU21は、RAM23に格納されたスタートフラグSTFを反転させ(ステップ702)、スタートフラグSTFが「1」であるかを判断する(ステップ703)。ステップ703でYesと判断された場合には、CPU21は、選択されている楽曲の伴奏データを構成するメロディ音データ、コード音データおよびリズム音データの、ぞれぞれのレコードの先頭アドレスを取得して、RAM23に格納する(ステップ704)。また、CPU21は、タイマインタラプトを解除する(ステップ705)。タイマインタラプトが解除されることにより、所定の時間間隔でタイマインタラプト処理が実行され、CPU21の内部に設けられたタイマがインクリメントされる。ステップ703でNoと判断された場合、つまり、STFが「0」である場合には、CPU21は、タイマインタラプトを停止する(ステップ706)。
スタート・ストップスイッチ処理(ステップ403)に引き続いて、CPU21は、音色選択処理を実行する(ステップ404)。音色選択処理では、演奏者による、スイッチ部11の音色選択スイッチ(トーンスイッチ)の操作により、選択された楽音の音色情報が、RAM23に格納される。音色選択処理(ステップ404)の後、CPU21は、他のスイッチ処理を実行する(ステップ405)。他のスイッチ処理には、テンポスイッチの操作によるテンポデータの設定およびテンポデータのRAM23への格納などが含まれる。
スイッチ処理(ステップ302)が終了すると、CPU21は、パネル操作検出処理を実行する(ステップ303)。図8および図9は、本実施の形態にかかるパネル操作検出処理の例を示すフローチャートである。CPU21は、演奏者によるタッチパネルへの操作状態を検出する(ステップ801)。
タッチパネルへの操作状態が「なし」、つまり、演奏者の指がタッチパネルに触れられていない状態が継続されていれば、パネル操作検出処理は終了する。なお、演奏者の指が新たにオフ(新規オフ)となった場合については後述する。演奏者の指がタッチパネルに触れられているとき(オン)には、CPU21は、演奏者の指が新たにタッチパネルに触れられたか(新規オン)を判断する(ステップ802)。
ステップ802でYes、つまり、新規オンであった場合には、CPU21は、演奏者が指で触れた位置が、画面上に表示された音符の周辺領域に該当するかを判断する。図10は、本実施の形態にかかる周辺領域の例を示す図である。図10においては、表示部12の画面上に、五線(符号1010)およびC4の音高の四分音符(符号1000)が配置されている。本実施の形態において、音符1000が配置されている位置から、所定の第1の半径の範囲(符号1001参照)内を、第1の領域(a領域)、第2の半径(>第1の半径)の範囲(符号1002参照)内であって第1の領域を除く領域を、第2の領域(b領域)としている。さらに、第2の領域(b領域)において、そのY座標が、音符の位置のY座標より小さいような領域を、b−領域(符号1003参照)、そのY座標が、音符の位置のY座標以上であるような領域をb+領域(符号1004参照)としている。
本実施の形態では、基本的には、演奏者の指が、第1の領域(a領域)にある場合には、音符に対応する音高の楽音が発音される。また、演奏者の指が、b−領域にある場合には、音符に対応する音高より半音下の音高の楽音が発音され、演奏者の指がb+領域にある場合には、音符に対応する音高より半音上の音高の楽音が発音される。これら第1の領域(a領域)および第2の領域(b領域)の総称として、周辺領域と称する。
ステップ803においては、CPU21は、演奏者により新たにオンされた指の位置と、表示部12の画面上に表示された音符の周辺領域とに基づき、指が位置する周辺領域を特定する(ステップ803)。なお、図13などを参照して後述するが、複数の音符の周辺領域が重なっている場合がある。この場合には、CPU21は、楽曲において時間的に先行する音符(つまり、楽譜上で左側に位置する音符)を優先して、周辺領域を特定する。CPU21は、指の位置が、何れかの音符の周辺領域内にあるかを判断する(ステップ804)。ステップ804でNoと判断された場合には、パネル操作検出処理が終了される。その一方、ステップ804でYesと判断された場合には、CPU21は、周辺領域の種別に従った発音処理を実行する(ステップ805)。発音処理では、発音すべき楽音の音高および音色情報を含むノートオンイベントが生成される。
図10に示す例において、演奏者の指が、第1の領域(a領域)1001内で新たにオン状態となった場合には、CPU21は、音符に示す音高(C4)と、予め設定された音色情報とを含むノートオンイベントを生成して、ノートオンイベントを音源部26に出力する。また、演奏者の指が第2の領域(b領域)のうちb+領域1004内で新たにオン状態となった場合、或いは、b−領域1003内で新たにオン状態となった場合には、それぞれ、音符に示す音高より半音上の音高(C#4)と音色情報とを含むノートオンイベント、或いは、音符に示す音高より半音下の音高(B3)と音色情報とを含むノートオンイベントを生成して、音源部26に出力する。
ステップ805の後、CPU21は、RAM23中のノートオンイベントが生成された音高の楽音について、発音ステータスを「発音中」とする(ステップ806)。
その一方、ステップ801で「新規オフ」と判断された場合には、CPU21は、RAM23中の発音ステータスが発音中であるかを判断する(ステップ807)。ステップ807でNoと判断された場合には、パネル操作検出処理を終了する。ステップ807でYesと判断された場合には、CPU21は、発音ステータスが「発音中」となっている楽音について、ノートオフイベントを生成して、音源部26に出力する(ステップ808)。次いで、CPU21は、「発音中」となっていた発音ステータスを「消音」に変更する(ステップ809)。
図11(a)は、演奏者が指をタッチパネル上に接触して、その状態で指を移動した後、指をタッチパネルから離間された例を示す図である。図11(a)において、矢印付きの線の一方端の黒点が、タッチパネル上に新たに接触した位置を示し、矢印の先端が、タッチパネル上で離間した位置を示す。たとえば、線1101の例では、演奏者の指は、第1の領域内で新規オンして、第1の領域内を接触した状態で移動し、同じく第1の領域内で新規オフしている。したがって、新規オンに伴って、音高C4を含むノートオンイベントが生成され、新規オフに伴って音高C4のノートオフイベントが生成される。
また、線1102に示す例では、演奏者の指は、b−領域内で新規オンして、同じくb−領域内で新規オフしている。したがって、新規オンに伴って、音高B3を含むノートオンイベントが生成され、新規オフに伴って音高B3のノートオフイベントが生成される。さらに、線1103に示す例では、音符の周辺領域に演奏者の指が位置していないため、ノートオンイベントが生成されない。
その一方、図11(b)に示すように、複数の領域にわたって演奏者の指が移動する場合も考えられる。たとえば、以下のような態様を考えることができる。
b−領域で新規オンして、a領域で移動した後、a領域において新規オフとなる(符号1111)
b+領域で新規オンして、a領域で移動した後、a領域において新規オフとなる(符号1112)
周辺領域外で新規オンして、b−領域に移動した後、b−領域において新規オフとなる(符号1113)
周辺領域外で新規オンして、b−領域に移動した後、さらに、a領域に移動して当該a領域において新規オフとなる(符号1114)
上記以外にも、複数の領域にわたる場合が生じ得る。したがって、本実施の形態にかかるパネル操作検出処理では、上述した演奏者の指の移動にも対応できるようになっている。図9に示すように、ステップ802でNo、つまり、演奏者がタッチパネル上で指をオン中である場合には、CPU21は、演奏者の指が触れている位置が、画面上に表示された音符についての周辺領域に該当するかを判断する(ステップ901)。次いで、CPU21は、検出された周辺領域が、前回の処理において検出された周辺領域と異なるか、つまり、周辺領域の種別が変更されたかを判断する(ステップ902)。なお、b−領域からb+領域の移動も、周辺領域の変更と判断される。
ステップ902でNoと判断された場合には、パネル操作検出処理を終了する。ステップ902でYesと判断された場合には、CPU21は、演奏者の指の位置が、周辺領域内、つまり、第1の領域(a領域)或いは第2の領域(b−領域またはb+領域)の何れかにあるかを判断する(ステップ903)。ステップ903でYesと判断された場合には、CPU21は、RAM23に格納された発音ステータスが「発音中」であるかを判断する(ステップ904)。ステップ904でYesと判断された場合には、CPU21は、指が位置する周辺領域の種別に従った音高変更処理を実行する(ステップ907)。
音高変更処理においては、移動前の周辺領域に対応する音高の楽音を消音するノートオフイベントを生成して、音源部26に出力するとともに、移動後の周辺領域に対応する音高および音色情報を含むノートオンイベントを生成して、音源部26に出力する。これにより、移動後の周辺領域に対応する音高の楽音を発生させることができる。
図11(b)において、b−領域で新規オンして、a領域で移動した場合(符号1111)には、b−領域での新規オンにより、C4より半音下のB3の楽音が発生し、b−領域からa領域に移動することにより、楽音の音高がC4に変更される。また、b+領域で新規オンして、a領域で移動した場合(符号1112)には、b+領域での新規オンにより、C4より半音上のC#4の楽音が発生し、b+領域からa領域に移動することにより、楽音の音高がC4に変更される。
ステップ904でNoと判断された場合には、CPU21は、周辺領域の種別に従った発音処理を実行する(ステップ905)。ステップ905においては、図8のステップ805と同様に、CPU21は、周辺領域に対応する音高および音色情報を含むノートオンイベントを生成して、音源部26に出力する。その後、CPU21は、RAM23中のノートオンイベントが生成された音高の楽音について、発音ステータスを「発音中」とする(ステップ906)。
図11(b)において、周辺領域外で新規オンして、b−領域に移動した場合(符号1113参照)には、領域b−に移動することにより、音符の音高C4より半音低いB3の楽音が発生する。また、周辺領域外で新規オンして、b−領域に移動した後、さらに、a領域に移動した場合(符号1114参照)には、領域b−に移動することにより、音符の音高C4より半音低いB3の楽音が発生し、さらに、a領域に移動することにより、音高がC4に変更される。
次に、ステップ903でNoと判断された場合について説明する。この場合に、CPU21は、RAM23に格納された発音ステータスが「発音中」であるかを判断する(ステップ908)。ステップ908でYesと判断されるときは、演奏者の指の位置が周辺領域の何れかから周辺領域外に移動したことを意味する。したがって、この場合には、CPU21は、消音処理を実行する(ステップ909)。消音処理において、CPU21は、発音ステータスが「発音中」である楽音についてのノートオフイベントを生成して、音源部26に出力する。
ステップ908でNoと判断された場合、或いは、ステップ909が実行された後、CPU21は、演奏者の指の位置が、他の音符についての周辺領域にあるかを判断する(ステップ910)。図12および図13は、表示部の画面上の画像において、五線上に複数の音符が配置されている例を示す図である。図12に示す例では、2つの音符1200および1210の周辺領域は重なり合っていない。つまり、音符1200の第2の領域(符号1201参照)と、音符1210の第2の領域(符号1211参照)とは離間している。したがって、演奏者の指が、音符1200の第1の領域(a領域)でオン状態となり、第2の領域(この例では、b−領域)を経て、周辺領域外に出たそのときに、他の音符についての周辺領域内に位置することはない(矢印1220参照)。
これに対して、図13に示す例では、2つの音符1300、1310は隣接して配置され、その周辺領域が重なり合っている。この例では、音符1300の第1の領域1302は、部分的に音符1310の第2の領域1311と重なり合い、第2の領域1301は、部分的に音符1310の第1の領域1312、第2の領域1311と重なり合っている。このようなときに、演奏者の指が、線1320に沿って移動した場合には、音符1300を優先と考えると、音符1300の第1の領域1302、音符1300の第2の領域1301(より詳細にはb−領域からb+領域)を経て、音符1310の第1の領域1312に達する)。本実施の形態においては、このように、演奏者の指が、ある音符の周辺領域外に出たその時に、他の音符の周辺領域内に位置する場合を考慮して、以下の処理を実行する。
ステップ910でYesと判断された場合には、CPU21は、他の音符についての新たな周辺領域の種別に基づく発音処理を実行する(ステップ911)。ステップ911においては、CPU21は、他の音符についての周辺領域に対応する音高および音色情報を含むノートオンイベントを生成して、音源部26に出力する。ステップ910でNoと判断された場合には、CPU21は、RAM23中の発音ステータスを「消音」とする(ステップ912)。
図14は、表示部の画面上の画像において、五線上に複数の音符が配置されている例を示す図である。図14における線1320および1410は、演奏者の指の移動の軌跡を示している。図14において、線1320は、音符1300についての第1の領域(a領域)1302で新規オンして、第2の領域1301のb−領域およびb+領域を経て、他の音符1310の第1の領域(a領域)1312に達したことを示している。この場合には、C4(音符1300の第1の領域)、B3(音符1300のb−領域)、C#4(音符1300のb+領域)、E4(音符1310の第1の領域)の順で楽音が発音される。
また、図14において、線1410は、音符1300の第1の領域(a領域)で新規オンして、第2の領域1301のb−領域を経た後、さらに、他の音符1310の第2の領域1311のb−領域を経て、他の音符1310の第1の領域1312に達したことを示している。この場合には、C4(音符1300の第1の音域)、B3(音符1300のb−領域)、E♭4(音符1310のb−領域)、E4(音符1310の第1の領域)の順で楽音が発音される。
なお、本実施の形態においては、タッチパネル13への新規オンにおいて、複数の音符の周辺領域が重なっている場合には、楽曲において時間的に先行する音符(つまり、楽譜上で左側に位置する音符)を優先して、周辺領域が特定される。つまり、図14に示すように、新規オンの際には、左側に位置する音符1300の周辺領域(符号1301,1302参照)が、右側に位置する音符1310の周辺領域(符号1311、1312参照)に優先して判断される。しかしながら、いったん、演奏者の指のオン状態が維持された状態で、他の音符の周辺領域内に移動すると、当該他の音符の周辺領域が優先することになる。
図22は、演奏者の指の軌跡が、他の音符の周辺領域に移ったときの状態を示す図である。図14の符号1320と同じような動きで、演奏者の指が、音符1300の周辺領域(実際には、第2の領域1301)から、音符1310の周辺領域(実際には、第1の領域1312)に移動すると(符号2201参照)、音符1310の周辺領域が、音符1300の周辺領域に優先する。すなわち、演奏者の指が線1320に沿って動き、位置2201に移動すると、音符1310の周辺領域と、音符1300の周辺領域が重なり合う部分では、音符1310の周辺領域が優先する。したがって、位置2201以降の演奏者の指の移動に伴う発音は、図22に示すように、音符1310の周辺領域に位置する限り、音符1310に関する楽音(E4、半音下のE♭4、或いは、半音上のF4)となる。
演奏者の指が線1410に沿って動き、位置2202に達したときにも同様に、音符1310の周辺領域と、音符1300の周辺領域が重なり合う部分では、音符1310の周辺領域が優先する。
パネル操作検出処理が終了すると、CPU21は、ソング処理を実行する。図15は、本実施の形態にかかるソング処理の例を示すフローチャートである。図15に示すように、CPU21は、RAM23中のスタートフラグSTFが「1」であるかを判断する(ステップ1501)。ステップ1501でNoと判断された場合には、ソング処理は終了する。
ステップ1501でYesと判断された場合には、CPU21は、現在時刻が、次のメロディ音のノートオン或いはノートオフの時刻に達しているかを判断する(ステップ1502)。上述したように、本実施の形態にかかる伴奏データには、メロディデータ、コード音データ、および、リズム音データが含まれ、それぞれが、ノートオンイベント、ゲートタイムおよびステップタイムのレコードを有している。
したがって、CPU21は、タイマインタラプト処理によってカウントされるタイマ値を参照して、前回のノートオンイベントが生じた時刻からの経過時間が、ゲートタイムより大きくなっていれば、ノートオフイベントを生成して、音源部26に出力する。また、CPU21は、前回のノートオンイベントが生じた時刻からの経過時間が、ステップタイムより大きくなっていれば、次のノートオンイベントのレコードを生成して、音源部26に出力する。このように、ステップ1502でYesと判断された場合には、CPU21により、メロディ音の発音処理、消音処理が実行される(ステップ1503)。
CPU21は、フラッシュメモリ24中のコード音データのレコードを参照して、現在時刻が、次のコード音のノートオン或いはノートオフの時刻に達しているかを判断する(ステップ1504)。ステップ1504でYesと判断された場合には、CPU21は、コード音の発音処理、消音処理を実行する(ステップ1505)。
また、CPU21は、フラッシュメモリ24中のリズム音データのレコードを参照して、現在事項が、次のリズム音のノートオン或いはノートオフの時刻に達しているかを判断する(ステップ1506)。ステップ1506でYesと判断された場合には、CPU21は、リズム音の発音処理、消音処理を実行する(ステップ1507)。
ソング処理(ステップ304)が終了すると、音源部26において音源発音処理が実行される(ステップ305)。音源発音処理では、音源部26が、CPU21からノートオンイベントを受理すると、ノートオンイベントに含まれる音高および音色情報に基づき、ROM22から所定の音色の波形データを、音高にしたがった速度で読み出して、所定の楽音データを生成する。また、音源部26が、CPU21からノートオフイベントを受理すると、ノートオフイベントに示される音色および音高の楽音を消音する。
音源発音処理(ステップ305)が終了すると、CPU21は、画像更新処理を実行する(ステップ306)。図16は、本実施の形態にかかる画像更新処理の例を示すフローチャートである。
図16に示すように、CPU21は、演奏者によるタッチパネルへの操作状態を検出する(ステップ1601)。タッチパネルに演奏者の指が接触していない状態であれば(ステップ1601で「オフ」)、画像更新処理は終了する。タッチパネルに演奏者の指が接触していれば(ステップ1601で「オン」)、CPU21は、演奏者が指で触れた位置が画面上に表示された音符についての周辺領域に該当するかを判断する(ステップ1602)。ステップ1602でYesと判断された場合には、CPU21は、演奏者の指がその周辺領域に位置する音符の音高が、アドレスを示すパラメータDADにて特定されるレコード中の音高と一致するかを判断する(ステップ1603)。
ステップ1602或いはステップ1603でNoと判断された場合には、楽譜更新処理は終了する。ステップ1603でYesと判断された場合は、表示部の画面上に配置された楽譜において、最後尾の音符(時間的にもっとも新しい音符)の周辺領域に演奏者の指が触れていることを意味する。したがって、ステップ1603でYesと判断された場合には、CPU21は、曲データのレコードを、アドレスDADが示すパラメータの後、所定数だけ読み出す(ステップ1604)。
CPU21は、読み出された曲データのレコード中、ノートオンイベントおよび次のゲートタイムに基づき、音符位置および音符種別を含む音符データを生成する(ステップ1605)。また、ゲートタイムおよび次のステップタイムに基づく休符データも、ステップ1605において生成される。
次いで、CPU21は、ステップ1605で生成された音符データおよび休符データにしたがった音符や休符を、五線譜中に配置した画像データを生成する(ステップ1606)。また、CPU21は、上記画像中の音符や休符の各々の位置情報(座標)を、RAM23中に格納する(ステップ1607)。また、CPU21は、表示部12の画面上に表示された音符および休符に対応する曲データのレコードのアドレス(たとえば最終アドレス)を、アドレスDADとしてRAM23に格納する(ステップ1608)。
楽譜更新処理(ステップ306)が終了すると、CPU21は、その他の処理を実行して(ステップ307)、ステップ302に戻る。その他の処理には、外部I/F28を介したメモリカードからのデータの読み出し、メモリカードへのデータ書き込み、外部ネットワークを介した他の機器とのデータ送受信などが含まれる。
本実施の形態によれば、CPU21は、表示部12の画面上に表示された楽譜中の音符のそれぞれの位置と、タッチパネル13上の演奏者による接触位置とを比較して、接触位置が、何れかの音符の位置を含む周辺領域内であるかを判断して、接触位置が、周辺領域内である場合に、当該音符の音高に基づくノートオンイベントを生成して、音源部26に出力する。これにより、音源部26により所定の音高の楽音データが生成される。このように、本実施の形態によれば、演奏者が、表示画面上の音符或いはその周辺領域に触れることにより、楽曲を構成する音符に対応する楽音を発生することができる。したがって、楽譜表示から、その音符表記の解釈を経ることなく、直接的に楽音を発生することが可能となる。
また、本実施の形態によれば、周辺領域が、音符を含む第1の領域と、第2の領域の周囲に位置する第2の領域と、を有し、CPU21は、演奏者による接触位置が、音符の位置の第1の領域、或いは、第2の領域内であるかを判断し、接触位置が属する領域に基づき楽音の音高を決定する。これにより、演奏者による接触位置と音符との近さに基づいて音高を変化させることが可能となる。
さらに、第2の領域は、音符が配置される五線と垂直方向において、音符より上側に位置する上側領域(b+領域)と、下側に位置する下側領域(b−領域)とを備える。CPU21は、演奏者による接触位置が、第1の領域内である場合には、発音すべき楽音の音高を、音符の音高に対応する音高と決定し、上側領域である場合には、音符の音高より所定だけ高い音高(たとえば半音高い音高)と決定し、また、下側領域である場合には、前記音符の音高より所定だけ低い音高(たとえば半音低い音高)と決定する。
また、本実施の形態においては、接触位置が移動して、周辺領域中の他の領域に移動したときには、CPU21は、発音している楽音の音高を移動後の他の領域に対応する音高に変更する。これにより、演奏者による接触位置の移動に応じた音高変化を実現することができる。
また、本実施の形態においては、接触位置が移動して、音符の周辺領域外に移動したときに、CPU21は、発音中の楽音を消音する。これにより、演奏者による接触位置が、音符から所定なだけ離間したときに適切に楽音を消すことが可能となる。
さらに、本実施の形態においては、接触位置が移動して、音符の周辺領域外に移動したときに、当該接触位置が、他の音符の周辺領域内であるときに、CPU21は、他の音符の音高に基づく楽音を生成する。したがって、いったん演奏者は指をタッチパネルから離間させて新たに接触することなく、楽譜上の次の楽音を発音させることが可能となる。
次に、本発明の第2の実施の形態について説明する。第1の実施の形態においては、図10に示すように、音符1000が配置されている位置から、所定の第1の半径の範囲(符号1001参照)内を第1の領域(a領域)、所定の第2の半径(>第1の半径)の範囲(符号1002参照)内を第2の領域(b領域)としている。さらに、第2の領域(b領域)において、そのY座標が、音符の位置のY座標より小さいような領域を、b−領域(符号1003参照)、そのY座標が、音符の位置のY座標以上であるような領域をb+領域(符号1003参照)としている。
第1の実施の形態では、演奏者の指が、第1の領域(a領域)にある場合には、音符に対応する音高の楽音が発音される。また、演奏者の指が、b−領域にある場合には、音符に対応する音高より半音下の音高の楽音が発音され、演奏者の指がb+領域にある場合には、音符に対応する音高より半音上の音高の楽音が発音される。
第2の実施の形態においても、音符1700の周囲に第1の領域および第2の領域(b−領域およびb+領域)が設けられているが、第1の領域の形状が、第1の実施の形態と異なる。図17(a)は、第2の実施の形態にかかる周辺領域の例を示す図である。図17(a)に示すように、この例では、第1の領域1701の長径は、第2の領域1702の直径と等しく、したがって、左右端で第1の領域1701と第2の領域1702とは接触している(符号1705、1706参照)。
また、第1の実施の形態と同様に、第2の領域において、そのY座標が、音符の位置のY座標より小さいような領域を、b−領域(符号1703参照)、そのY座標が、音符の位置のY座標以上であるような領域をb+領域(符号1704参照)としている。
第2の実施の形態においても、演奏者の指が、第1の領域(a領域)(符号1701参照)にある場合には、音符に対応する音高の楽音が発音される。また、演奏者の指が、b−領域(符号1703参照)にある場合には、音符に対応する音高より半音下の音高の楽音が発音され、演奏者の指がb+領域(符号1704参照)にある場合には、音符に対応する音高より半音上の音高の楽音が発音される。
また、演奏者の指が、タッチパネル13の画面上に触れた状態で周辺領域などを移動した場合の音高の変化は、第1の実施の形態と同様である(図8および図9参照)。
第2の実施の形態においては、左右端において、第1の領域と第2の領域とが接触している。したがって、演奏者の指が、ある音符のb−領域からb+領域に、或いは、ある音符のb+領域からb−領域に直接移動することがない。したがって、ユーザの指の動きに伴って、発音される音高は、実際の音符の音高の半音上から半音下に直接変化し、或いは、実際の音符の音高の半音下から半音上に直接変化するような、大きな音高変化は生じない。
次に、本発明の第3の実施の形態について説明する。図17(b)は、第3の実施の形態にかかる周辺領域の例を示す図である。図17(b)に示すように、第3の実施の形態では、第1の領域(符号1711参照)および第2の領域(符号1712参照)の間に、第3の領域(符号1713参照)が設けられている(第1の領域の半径<第3の領域の半径<第2の領域の半径)。第3の領域も、第2の領域と同様に、Y座標が音符の位置するY座標より小さいこと、或いは、大きいことにしたがって、c−領域(符号1716参照)とc+領域(符号1717参照)とを含んでいる。
第3の実施の形態においては、領域に対応して以下に示す音高の楽音が発音されるようになっている。
演奏者の指が、a領域(符号1711参照)にある場合には、音符に対応する音高の楽音が発音される。
演奏者の指が、b−領域(符号1714参照)にある場合には、音符に対応する音高より半音下の音高の楽音が発音され、演奏者の指がb+領域(符号1715参照)にある場合には、音符に対応する音高より半音上の音高の楽音が発音される。
演奏家の指が、c−領域(符号1716参照)にある場合には、音符に対応する音高より1/4音下の音高の楽音が発音され、演奏者の指がc+領域(符号1717参照)にある場合には、音符に対応する音高より1/4音上の楽音が発音される。
なお、第3の実施の形態においても、演奏者の指が、タッチパネル13の画面上に触れた状態で周辺領域などを移動した場合の音高の変化は、第1の実施の形態と同様である(図8および図9参照)。
第3の実施の形態においては、演奏者の指の動きに基づいて、より細かい音程変化を実現することが可能となる。
また、上記第1の実施の形態〜第3の実施の形態においては、周辺領域の種別に応じて、楽音の音高を変化させているが、これに限定されるものではなく、他の楽音の構成要素(たとえば、効果音の特定変化などを含む音色の変化)を変化させても良い。第4の実施の形態においては、変化させる楽音の構成要素として、フィルタ特性を採用している。図18〜図20は、第4の実施の形態にかかるタッチパネル操作検出処理の例を示すフローチャートである。第4の実施の形態にかかる音符の周辺領域は、第1の実施の形態と同様であり、第1の領域(a領域)と、b−領域およびb+領域を含む第2の領域(b領域)とを備える。
図18において、ステップ1801〜ステップ1804は、図8のステップ801〜804と同様である。新たにオン状態となった指の位置が、何れかの音符の周辺領域内にある場合(ステップ1804でYes)には、CPU21は、周辺領域の種別に従った音色効果情報を生成する(ステップ1805)。音色効果情報とは、音色を変化させるためのパラメータであり、第4の実施の形態では、フィルタ特性が該当する。
第4の実施の形態では、演奏者の指が第1の領域(a領域)に位置するときには、楽音データに施されるフィルタの特性は、デフォルト値となる。その一方、演奏者の指がb−領域に位置するときには、デフォルト値のフィルタ特性より、フィルタを閉じる、つまり、図21に示すように、デフォルト値におけるフィルタ特性(符号2101参照)のときよりも、高域におけるゲインをより小さくする、つまり、デフォルト値のフィルタ特性よりも高域になるのしたがって減少するゲインの度合いが大きくなるようなフィルタ特性とする(符号2102参照)。また、演奏者の指がb+領域に位置するときには、フィルタを開く、つまり、デフォルト値のフィルタ特定(符号2101参照)のときよりも、高域におけるゲインをより大きくする、つまり、デフォルト値のフィルタ特性よりも高域になるのにしたがって減少するゲインの度合いが小さいようなフィルタ特性とする(符号2103参照)。ステップ1805では、上記フィルタ特性を示す情報が、音色効果情報として生成される。
第4の実施の形態においては、音高は、周辺領域の種別(第1の領域或いは第2の領域)にかかわらず、演奏者の指がその周辺領域に触れている音符の音高となる。そこで、CPU21は、発音すべき楽音の音高(音符の音高)と、音色(楽器種別)情報およびステップ1805で生成された音色効果情報とを含むノートオンイベントを生成して、音源部26に出力する(ステップ1806)。ステップ1806の後、CPU21は、RAM23中のノートオンイベントが生成された音高の楽音について、発音ステータスを「発音中」とする(ステップ1807)。
タッチパネルへの操作状態が新規オフであるときに実行される処理ステップ(ステップ1808〜1810)は、図8のステップ807〜809にそれぞれ対応する。また、タッチパネルへの操作状態がオンであるが、新規オンではなかった場合(ステップ1802でNo)に実行される処理のうち、ステップ1901〜1904は、図9のステップ901〜904と同様である。
ステップ1904でYesと判断された場合には、CPU21は、周辺領域の種別にしたがった音色効果変更処理を実行する(ステップ1908)。ステップ1908においては、CPU21は、新たな周辺領域の種別にしたがったフィルタ特性を示す情報を、音源部25に出力する。ステップ1904でNoと判断された場合には、CPU21は、周辺領域の種別に従った音色効果情報を生成する(ステップ1905)。次いで、CPU21は、発音すべき楽音の音高(音符の音高)と、音色(楽器種別)情報およびステップ1905で生成された音色効果情報とを含むノートオンイベントを生成して、音源部26に出力する(ステップ1906)。また、CPU21は、RAM23中のノートオンイベントが生成された音高の楽音について、発音ステータスを「発音中」とする(ステップ1907)。
次に、ステップ1903でNoと判断された場合について説明する。ステップ1903でNo、つまり、演奏者の指が移動して、周辺領域外となった場合に実行される処理のうち、ステップ2001〜2003は、図9のステップ908〜910と、それぞれ同様である。ステップ2003でYes、つまり、演奏者の指の位置が、他の音符についての周辺領域にあるかと判断された場合、CPU21は、他の音符についての新たな周辺領域の種別にしたがった音色効果情報(フィルタ特性を示す情報)を生成する(ステップ2004)。また、CPU21は、発音すべき楽音の新たな音高(新たな音符の音高)と、音色(楽器種別)情報およびステップ2004で生成された音色効果情報とを含むノートオンイベントを生成して、音源部26に出力する(ステップ2005)。
ステップ2003でNoと判断された場合には、第1の実施の形態と同様に(図9のステップ912参照)、CPU21は、RAM23中の発音ステータスを「消音」とする(ステップ2006)。
第4の実施の形態によれば、CPU21は、演奏者による接触位置が、前記第1の領域或いは第2の領域の何れかに属するかにより、楽音の音色を決定する。したがって、演奏者は、表示された音符の周囲において、所望の位置に指を置くことにより、所望の音色効果をもつ楽音を発生させることが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、第1の実施の形態および第2の実施の形態では、周辺領域として、第1の領域(a領域)と第2の領域(b+領域およびb−領域)を設け、第1の領域(a領域)、b+領域、b−領域のそれぞれにおいて、表示された音符の音高に基づく所定の音高を対応付けている。しかしながら、これに限定されず、周辺領域として、第1の領域(a領域)だけを設け、演奏者の指が第1の領域に接触したときに、音符に対応する音高の楽音を発音するように構成しても良い。
また、本実施の形態においては、ノートオンイベント、ゲートタイムおよびステップタイムのレコードを含む曲データに基づいて、音符の音高および音長を含む楽譜データを生成し、表示部12の画面上、所定の位置に音符のシンボルを配置したような楽譜を表示している。しかしながら、これに限定されるものではなく、曲データとは別に音符及び音長を示すレコードを含む楽譜データをフラッシュメモリ24に格納し、CPU21が、楽譜データを読み出して、表示部12の画面上、所定の位置に音符のシンボルを配置したような楽譜を表示しても良い。