以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
<第1の実施形態>
図1は、第1の実施形態による演奏装置を搭載したカラオケ装置の外観図である。そのカラオケ装置は、テレビジョン(以降「テレビ」と略記)の利用を想定したものであり、カラオケ装置本体(以降「本体」と略記)1、及びその本体1と無線で通信を行うワイヤレスマイク(以降「マイク」と略記)2から構成される。本実施形態による演奏装置は、カラオケ用に楽曲を自動演奏する場合に、1演奏パートの演奏をユーザーが行えるようにするために本体1に搭載されている。その演奏装置自体は、本実施形態による楽音設定装置を搭載することで実現されている。
本実施形態では、ユーザーの演奏は、本体1に設けられた2つのパッド101、102を用いて行えるようにさせている。図1中の103は本体1に設けられた表示装置(液晶表示装置)、3は本体1を不図示のテレビと接続するためのAVケーブルである。演奏用の操作子は、パッド101、102に限定されるものではない。また、本体1(演奏装置)に設けられていなくとも良い。
図2は、上記本体1の構成図である。その本体1は、図2に示すように、全体を制御するCPU11と、CPU11が実行するプログラム、各種制御用データ、およびカラオケ用の楽曲データ等を格納したROM12と、CPU11がワークに用いるRAM13と、AVケーブル3を介して接続されるテレビに画像を表示させるためのビデオ(Video)システム14と、上記2つのパッド101、102、及びそれらへの操作を検出する検出回路を有するパッド群15と、複数のスイッチ、及びそれらへの操作を検出する検出回路を有するスイッチ群16と、表示装置103と、マイク2に入力された音声をテレビから放音させるための音声処理システム17と、カラオケ用の演奏をテレビから放音させるための音源システム18と、各部11〜18、及び表示装置103を互いに接続するバス19と、AVケーブル3を接続するためのAV端子20と、マイク2から送信される音声信号を受信するための無線受信機21と、を備えた構成となっている。
上記構成において動作を説明する。
CPU11はROM12に記録されているプログラムを実行することにより、ユーザー(演奏者)がスイッチ群16或いはパッド群15に対して行った操作を認識し、認識した操作に応じた制御を行う。スイッチ群16への操作が行われた場合には、操作が行われたスイッチに応じて、RAM13を用いた画像の生成・表示、各種設定を行う。それにより、テレビ、或いは表示装置103を通して必要な情報をユーザーに随時、提供しつつ、楽曲の選択やモード設定、或いは楽曲の再生条件(テンポや付与する音響効果、音量などの設定)の設定などを行わせる。表示装置103への画像表示は、表示させるべき画像(データ)を表示装置103に送出することで実現され、テレビへの画像表示は、表示させるべき画像(データ)をビデオシステム14に送出し、そのシステム14にテレビの規格に応じた変調を行わせ、その変調によって得られる映像信号をAV端子20に出力させることで実現される。
上記2つのパッド101、102は通常、割り当てられた効果音の発音用の操作子として機能する。1演奏パートの演奏を可能とするモード(以降「演奏モード」と呼ぶ)が設定された場合にのみ、その演奏用の操作子として機能する。2つのパッド101、102としては共に、それを操作した際の速さを検出できるものを採用している。以降、速さは「ベロシティ」、その値を「ベロシティ値」とそれぞれ表記する。
上記効果音、及びカラオケ演奏のための楽音の放音は、音源システム18がCPU11の指示に従って楽音放音用の波形データを生成し、生成した波形データをテレビの規格に応じた変調方式で変調してAV端子20に出力することで可能とさせている。その波形データの生成は、周知の技術を用いて行われる。波形データを生成することにより楽音が発音されることから、その音源システム18は楽音発生装置に相当する。その楽音発生装置は、自身が楽音を放音可能なものであっても良い。演奏装置に搭載されないものであっても良い。
図1に示すマイク2は、ユーザーが発した音声を入力するためのものである。そのマイク2は、音声を信号に変換して入力し、その信号(音声)を例えばデジタル値に変換して送信する。そのようにして送信された音声信号は無線受信機21により受信され、音声処理システム17に送られる。音声処理システム17は、音声信号(デジタルデータ)をテレビの規格に応じた変調方式で変調してAV端子20に出力する。それにより、マイク2が入力した音声をテレビから放音可能とさせる。音声処理システム17から出力される音声信号は、音源システム18から出力される音声信号に重畳されてAV端子20に入力される。
図3は、上記楽曲データを構成する楽音データ、及び候補音階バッファの構成を説明する図である。
楽曲データを構成する楽音データは、図3(a)に示すように、演奏上のイベントの内容を示すイベントデータ、及び次に処理すべき楽音データを処理するまでの時間間隔(Δt)を示す時間データから構成される。
上記時間間隔Δtは、テンポによって変更される最小時間間隔を単位として表現されたものである。これは他の時間、或いは時間間隔についても同様である。楽音の発音に係わるイベントデータは、例えばイベントが楽音の発音、及び消音の何れであるかを示すイベント種別、楽音の音高を示す番号(以降「音階番号」)、及びチャンネル番号の各データを有するものである。それにより楽曲データは、イベント(楽音)単位で用意された楽音データをその処理順に並べた形の構成となっている。楽曲を構成する演奏パートにはそれぞれ異なるチャンネルが割り当てられる。楽曲データ、或いは楽音データは、上述したような構成に限定されるものではない。また、楽曲データは、ROM12等の不揮発性メモリに用意するのではなく、通信ネットワーク、或いは可搬性の記録媒体を介して取得できるようにしても良い。
CPU11は、処理すべきタイミングとなったイベントデータから音源システム18に送出すべきコマンド(以降MIDIデータを想定する)を生成して送出することで楽音の発音開始、或いは消音を指示する。それにより、自動演奏、つまり楽曲データの再生を行う。楽音の発音開始を指示してからその消音を指示するまでの時間間隔が発音持続時間(ゲートタイム)である。ユーザーの演奏では、操作子への操作により発音させるべき楽音の発音開始を指示するMIDIデータを生成して送出し、その楽音の消音を指示すべきタイミングで消音を指示するMIDIデータを送出する。
音源システム18は、例えばCPU11から送られたMIDIデータ中の音階番号(ノートナンバー)で指定される音高に応じて、楽音発音用の波形データを生成し、生成した波形データをテレビの規格に応じた変調方式で変調してAV端子20に出力する。波形データの生成は、消音を指示するMIDIデータがCPU11から送出されて実際に消音させるまでの間、行う。そのような波形データの生成、及び生成した波形データを変調しての出力を行うことにより、自動演奏による楽音のテレビからの放音を可能とさせる。
図3(b)に示す候補音階バッファは、RAM13に確保される作業領域である。そのバッファには、ユーザーが演奏対象とする演奏パート(チャンネル)で発音すべきタイミングとなっている楽音毎に、その楽音を示すデータ(ここでは音階番号)が格納される。本実施形態では、その演奏パートとしてコード(和音)の演奏用のコードパートを想定する。コード発音用のイベントデータとして、音階番号の代わりに、コードの種類を示すコード番号、及びルート(根音)の音高を示す音階番号が挿入されているものを想定する。以降、コードパートが割り当てられたチャンネルを「コードチャンネル」と表記する。チャンネルは「ch」とも表記する。
上述したように2つのパッド101、102(これらを総称する場合は「操作子」と表記する)としては共に、操作時のベロシティを検出可能なものを採用している。このことから本実施形態では、2つのパッド101、102のなかで実際に操作されたパッドの操作時のベロシティに応じて、全ての構成音を同時(正確にはほぼ同時に発音されると見なすべき短時間内)に発音させるコードをアルペジオ(分散和音)として分散させて発音させるようにしている。つまり、演奏用の操作子を操作した際のベロシティを操作内容として着目し、そのベロシティに応じて、コードをコードのまま発音させる、及びアルペジオとして発音させる、のうちの何れかを自動的に選択することにより、楽曲データが示す演奏内容を変更する形で発音させる楽音(構成音)の発音タイミング、つまり発音開始タイミング、及びその発音持続時間を変更するようにしている。
そのような変更を行うことにより、コードの構成音間の相対的な発音タイミングは変化する。その変化を操作子(ここではパッド101、或いは102)への操作内容に応じて発生させることにより、より幅広い音楽表現を任意に行うことができるようになる。そのような音楽表現は、一つの操作子への操作によって行うことができる。このため、簡単に音楽表現を変えた演奏を行うことができる。本実施形態による楽音設定装置は、そのような音楽表現を可能とするために搭載されており、本実施形態による演奏装置と同様に、ROM12に格納されたプログラムをCPU11が実行することで実現される。
コードパートの演奏は、他のパートの自動演奏と合わせて行う必要がある。このことから、その演奏の進行には、楽曲データに沿って自動的に進行させる自動進行方法を採用している。コードをコードのまま発音させるか否かに係わらず、全ての構成音は1回の操作で発音させるようにしている。それにより、アルペジオとして発音させる場合であっても、構成音毎に操作を行わなくとも良いようにしている。
図4は、演奏管理用データを説明する図である。図4に示す演奏管理用データは、上記操作子への操作に応じて更新・格納される、コード構成音の演奏(発音)管理用のものであり、RAM13、或いはCPU11に搭載されたメモリに格納される。そのデータは、コード発音状態を示すフラグ(以降「コード発音状態フラグ」)、和音分散時間、及び初回ONフラグの各データを有している。
上記コード発音状態フラグは、コードチャンネル(パート)のコードを発音中か否かを示すものである。和音分散時間は、コード構成音間の発音開始タイミングの時間差を示すものである。全ての構成音を同時に発音させる場合には、デフォルト値、例えば「0」或いは負の値が格納される。ここではデフォルト値として「0」を仮定する。初回ONフラグは、コードの発音開始タイミングとなってから初めての操作子への操作を認識するためのものである。
操作子が操作されたことをパッド群15から操作時のベロシティを示すベロシティ値と併せて通知されたCPU11は、例えば候補音階バッファを参照して、発音対象となるコードの有無を確認し、そのコードが存在することを確認できた場合、コード発音状態フラグの値はコードが発音中であることを示す値に更新し、初回ONフラグはコードを発音させるための初めての操作が行われたことを示す値に更新する。以降、このような更新を行う操作を共に「オンとする」或いは「設定する」等と表現する。逆の更新を行う操作については「オフとする」或いは「解除する」等と表現する。
和音分散時間(データ)としては、例えばベロシティ値が予め定めた閾値以上であれば0を格納する。閾値未満であれば、コードのゲートタイム、操作タイミング、及びコード構成音数から、1構成音の発音開始タイミング、及び発音期間(ゲートタイム)を計算し、連続する構成音間の発音開始タイミングの時間差を示す値を和音分散時間(データ)として格納する。そのような値を和音分散時間データとするのは、アルペジオとして発音させる場合には、操作子への操作によって発音を実際に開始するタイミングから消音させるべきタイミングとなるまでの間、各構成音を同じ時間間隔で順次、発音を開始させることを前提としているためである。ゲートタイムは、コードの発音開始を指示する楽音データから、その消音を指示する楽音データの直前までに存在する全ての楽音データで時間データが示す時間間隔Δtの合計時間を算出することで得られる。
以降は図5〜図8に示す各種フローチャートを参照して、上述したような操作子を操作しての演奏を実現させるCPU11の動作について詳細に説明する。CPU11の動作は、そのCPU11がROM12に格納されたプログラムを読み出して実行することで実現される。
図5は、全体処理のフローチャートである。始めに図5を参照して、CPU11の動作について詳細に説明する。その全体処理は、電源の投入後に実行される主な処理を抜粋してその流れを示したものである。
先ず、ステップA1では、イニシャル処理を実行し、各種変数の初期化等を行う。続くステップA2では、スイッチ群16を構成するスイッチへのユーザーの操作に対応するためのスイッチ処理を実行する。その実行後はステップA3に移行する。パッド101、102を操作しての演奏を可能とする演奏モードは、このスイッチ処理の実行によって設定/解除される。
ステップA3では、自動演奏を実現させるための自動演奏処理を実行する。次のステップA4では、演奏モードの設定時におけるコード発音を実現させるためのコード発音処理を実行する。それ以降は、音源システム18を用いた楽音の発音を実現させるための音源発音処理をステップA5で実行し、表示装置103、或いはテレビに表示させる画像の更新等を含むその他処理をステップA6で実行してから、上記ステップA2に戻る。それにより、電源がオンされている間、ステップA2〜A6で形成される処理ループを繰り返し実行することにより、ユーザーの指示に応じた動作を行うようになっている。
図6は、パッド処理のフローチャートである。このパッド処理は、パッド101、102への操作による演奏を実現させるために、上記ステップA2のスイッチ処理内のサブルーチン処理として実行されるものである。次に図6を参照して、このパッド処理について詳細に説明する。
上述したようにパッド101、及び102に割り当てられる機能はモードによって異なる。しかし、本発明に係わる機能が割り当てられるのは演奏モード設定時である。このことから便宜的に、図6には演奏モード設定時に実行される主な処理を抜粋してその流れを示している。それによりここでは、演奏モード設定時に実行される処理にのみ着目する形で説明を行う。CPU11は、パッド群15(を構成する検出回路)から出力される情報により、パッド101、或いは102への操作の有無、その操作時のベロシティを認識する。操作(その内容)は情報から認識できるため、情報は外部から入力、つまり操作子は外部の装置に搭載されたものであっても良い。
先ず、ステップB1では、パッド101、102の何れかがONされたか否か判定する。パッド群15からパッド101、或いは102に対する操作が通知された場合、判定はYESとなってステップB2に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップB2では、図4(b)に示す候補音階バッファを参照して、音階番号が格納されているか否か確認することにより、音階番号が格納されている場合に、コード発音状態フラグを設定(オン)し、コードを発音中とする。音階番号が格納されていない場合には、コード発音状態フラグは設定せず、それ以降の処理を実行することなく、ここで一連の処理を終了する。
ステップB2に続くステップB3では、パッド群15から通知されたベロシティ値をチェックし、そのベロシティ値が上記閾値以上か否かにより、和音分散時間を決定して格納する(図4)。決定される和音分散時間は、上述したように、ベロシティ値が閾値以上であれば0であり、そのベロシティ値が閾値未満であれば、コードのゲートタイム、操作タイミング、及びコード構成音数から算出される、連続する構成音間の発音開始タイミングの時間差を示す値である。そのような和音分散時間の決定・格納を行った後はステップB4に移行して、初回ONフラグを設定してから、一連の処理を終了する。
上述したようにして、パッド処理の実行により、状況に応じて図4に示す演奏管理用データが更新・格納される。その管理用データを用いたコード構成音の発音管理は、上記ステップA4として実行されるパッド処理により行われる。
図7は、図5の全体処理内でステップA3として実行される自動演奏処理のフローチャートである。次に図7を参照して、この自動演奏処理について詳細に説明する。
通常、カラオケ用の自動演奏は、楽曲データを構成する全ての演奏パート(チャンネル)を対象に行われる。演奏モード設定時には、コードパートは自動演奏の対象から除外される。自動演奏は、それ(楽曲データの再生)を行っている間のみ、指定された楽曲データを対象に行う。このようなことから、自動演奏処理では、楽曲データを再生中か否か、設定されているモードの種類等を判定して、実行すべき処理を実行するようになっている。しかし便宜的に図7には演奏モード設定時の自動演奏中に実行される主な処理を抜粋してその流れを示している。それによりここでは、そのような状況下に実行される処理にのみ着目する形で説明を行う。
先ず、ステップC1では、直前に位置する楽音データ中のイベントデータの処理タイミングから、その楽音データを構成する時間データが示す時間間隔Δtが経過したか否か判定する。その時間間隔Δtが経過した、或いは直前に位置する楽音データが存在しない、つまり先頭に位置する楽音データである場合、判定はYESとなってステップC2に移行する。それらの何れでもない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップC2では、次の楽音データ中のイベントデータを例えばROM12から読み出す。続くステップC3では、読み出したイベントデータのチャンネル番号がコードチャンネルを示すものか否か判定する。そのイベントデータがコードチャンネルの番号を格納したものであった場合、判定はYESとなってステップC4に移行し、そのイベントデータが示すイベント種別に応じて、各コード構成音の音階番号を音階候補バッファに記憶させるか、或いはそのバッファに記憶されている音階番号を消去した後、一連の処理を終了する。そうでない場合には、つまりコードチャンネルの番号以外の番号が格納されていた場合には、判定はNOとなってステップC5に移行し、イベントデータからMIDIデータを生成して音源システム18に送出することにより楽音の発音、或いは消音を指示した後、一連の処理を終了する。
上述したようにして、コードが発音開始タイミングとなると、それの各構成音の音階番号が候補音階バッファに格納され、候補音階バッファに格納された音階番号は、発音終了タイミングとなると消去される。それにより、発音タイミング(発音開始から発音終了までの間)となったコードの有無は候補音階バッファを参照することで特定できるようになっている。
図8は、図5の全体処理内でステップA4として実行されるコード発音処理のフローチャートである。最後に図8を参照して、この発音処理について詳細に説明する。ここでも図7に示す自動演奏処理と同様に、図8には演奏モード設定時の自動演奏中に実行される主な処理を抜粋してその流れを示し、そのような状況下に実行される処理にのみ着目する形で説明を行う。
先ず、ステップD1では、コード発音状態フラグ(図4)を参照して、そのフラグが設定されているか否か判定する。そのフラグが設定されている、つまり発音タイミングとなったコードが発音中となっている場合、判定はYESとなってステップD2に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップD2では、初回ONフラグが設定されているか否か判定する。そのフラグが設定されている場合、判定はYESとなり、ステップD3でそのフラグの設定を解除してからステップD5に移行する。そうでない場合には、判定はNOとなってステップD4に移行する。
ステップD4では、和音分散時間を参照して、次のコード構成音の発音開始を指示すべきタイミングか否か判定する。和音分散時間として0(全ての構成音を同時に発音させることを表す値)が設定されている、或いは直前の構成音の発音開始を指示してから和音分散時間が経過した場合、判定はYESとなってステップD5に移行する。それらの何れでもない場合には、判定はNOとなってステップD7に移行する。
ステップD5では、和音分散時間を参照して、候補音階バッファから楽音の発音を指示すべき音階番号を選択し、選択した音階番号の楽音の発音を指示するためのMIDIデータを生成して音源システム18に送出する。音階番号の選択では、和音分散時間として0が設定されているならば、候補音階バッファに格納されている全ての音階番号が選択され、それ以外の値が和音分散時間として設定されているならば、未選択の音階番号のなかから一つが選択される。未選択の音階番号のなかからの選択は、例えば未選択の音階番号のなかで最小、或いは最大の音階番号を抽出することで行う。そのようにして、アルペジオの形で構成音を順次、発音させる。
コードの構成音をアルペジオの形で発音させる場合、発音中の構成音は、次の構成音を発音させる前に消音を指示するようにしている。つまり、各構成音のゲートタイムは和音分散時間より短いものとしている。例えば和音分散時間から予め定めた時間を引くことで得られるものとしている。このことから、ステップD5に続くステップD6では、ステップD5で発音を指示した楽音の消音を指示するタイミングを特定するために、時間の計時(図中「自動OFFカウント」と表記)を開始する。その後、一連の処理を終了する。図8中、各構成音のゲートタイムは「自動OFF時間」と表記している。以降その表記を用いることにする。コードをそのままの形で発音させる場合には、自動OFF時間としてはコード自体のゲートタイムが設定される。
上記ステップD2の判定がYESとなると、ステップD3の処理を実行した後、ステップD5に移行させるようになっている。これは、ユーザーがコード発音に有効な操作をパッド101、或いは102に対して行った場合、直ちに楽音の発音を開始させるためである。
一方、上記ステップD4の判定がNOとなって移行するステップD7では、直前の発音指示を行ってから自動OFF時間が経過したか否か判定する。直前のステップD6で計時を開始させた時間が自動OFF時間以上となった場合、判定はYESとなってステップD8に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップD8では、直前のステップD5で発音指示した楽音(構成音)の消音指示のためのMIDIデータを生成して音源システム18に送出する。その後に移行するステップD9では、候補音源バッファに格納されている音階番号で楽音の発音を全て行ったか否か判定する。直前のステップD5で発音指示した楽音が全ての構成音、或いは最後の構成音であった場合、判定はYESとなってステップD10に移行し、コード発音状態フラグの設定を解除した後、一連の処理を終了する。それらの何れでもない場合には、判定はNOとなり、ここで一連の処理を終了する。
なお、本実施形態では、コードの構成音を発音させる方法を操作子(パッド101或いは102)に対する操作のベロシティに着目して選択しているが、操作時の圧力の大きさに着目して選択するようにしても良い。また、アルペジオで構成音を分散させて発音させる場合の発音間隔(和音分散時間)はコードに応じた固有の固定値としているが、その発音間隔の設定にベロシティを反映させるようにしても良い。候補音階バッファに格納された音階番号のなかから一つを選択するためにベロシティを考慮するようにしても良い。その場合には、例えば楽音(構成音)を音高が低い順に発音させる、及び高い順に発音させるのうちの一方を選択できるようにしても良い。これは、圧力に着目する場合も同様である。
<第2の実施形態>
上記第1の実施形態では、操作子(パッド101或いは102)に対する操作内容としてベロシティに着目し、コードの構成音を発音させる方法を選択するようになっている。これに対し第2の実施形態は、操作子を操作している時間、及び操作子の操作順序に応じてコードの構成音の発音させる方法を選択するようにしたものである。それにより、簡単な操作で音楽表現を行えるように維持させつつ、第1の実施形態と比較して、より幅広い音楽表現を可能とさせている。
第2の実施形態による楽音設定装置を含む演奏装置は第1の実施形態と同様に、カラオケ装置に搭載されたものである。そのカラオケ装置の構成は基本的に第1の実施形態と同じである。このことから、第1の実施形態で付した符号をそのまま用いつつ、第1の実施形態から異なる部分にのみ着目する形で説明を行う。
図9は、第2の実施形態における演奏管理用データを説明する図である。図9に示すように第2の実施形態では、演奏管理用データとして更に、スイッチON時間、及びパッド番号を有している。
演奏用の操作子はパッド101及び102である。第2の実施形態では、それらの操作子のなかで実際に操作が行われた操作子が1個であれば、その操作子が操作(ON)されていた時間を計時し、その操作子が2個であれば、1個目の操作子を操作してから2個目の操作子を操作するまでの時間を計時するようにしている。操作子の数が1個か否かを区別するために、2個目の操作子は1個目の操作子への操作を解除する前に操作することを前提としている。スイッチON時間は、そのように操作された操作子数に応じて計時された時間である。
スイッチON時間は、第1の実施形態と同様に、コード構成音を同時に発音させるか否かの選択に用いている。そのON時間が予め閾値として定めた時間(以降「基準時間」)以上であればアルペジオの構成音として発音し、その基準時間未満であれば同時に発音させるようにしている。
2個の操作子をユーザーが操作した結果、アルペジオとして発音させることを決定した場合には、それらの操作順序に応じて、構成音の発音順序を設定するようにしている。上記パッド番号は、操作子の操作順序特定用に保存するデータであり、保存するパッド番号は、1個目のパッドに割り当てたものである。ここでは、パッド101及び102にそれぞれ割り当てられたパッド番号は1及び2と仮定する。コード構成音の発音順序は、パッド101→パッド102の順序で操作された場合には音高の低い構成音から順に発音させ(以降、この発音順序を「上昇方向」と呼ぶ)、その逆の順序で操作された場合には音高の高い低い構成音から順に発音させるようにしている(以降、この発音順序を「下降方向」と呼ぶ)。
このようにして第2の実施形態では、コード構成音の発音方法に加えて、コード構成音の発音順序をユーザー(演奏者)が制御できるようにしている。このため、第1の実施形態と比較して、より幅広い音楽表現をユーザーは任意、且つ容易に行うことができる。
より幅広い音楽表現を可能とさせるために第2の実施形態では、パッド処理(図6)、及びコード発音処理(図8)が第1の実施形態から異なっている。それにより以降、第2の実施形態で実行されるパッド処理、及びコード発音処理について詳細に説明する。
図10は、第2の実施形態で実行されるパッド処理のフローチャートである。始めに図10を参照して、そのパッド処理について詳細に説明する。そのパッド処理は、図5に示す全体処理において、ステップA2のスイッチ処理内でサブルーチン処理として実行される。
先ず、ステップE1では、パッド101、102の何れかがONされたか否か判定する。パッド群15からパッド101、或いは102に対する操作が通知された場合、判定はYESとなってステップE2に移行する。そうでない場合には、判定はNOとなってステップE13に移行する。
ステップE2では、1個目に操作されたものか否か判定する。他に操作されている操作子が存在する、つまり2個共、操作されている場合、判定はNOとなってステップE7に移行し、そうでない場合には、判定はYESとなってステップE3に移行する。
ステップE3では、図4(b)に示す候補音階バッファを参照して、音階番号が格納されているか否か確認することにより、音階番号が格納されている場合に、コード発音状態フラグを設定(オン)し、コードを発音中とする。音階番号が格納されていない場合には、コード発音状態フラグは設定せず、それ以降の処理を実行することなく、ここで一連の処理を終了する。それにより、発音対象とすべきコードが存在しない状況下での操作は無効とする。
ステップE3に続くステップE4では、スイッチON時間の計時を開始する。その計時は、所定時間間隔毎に実行されるタイマーインタラプト処理、或いはCPU11に搭載されたハードタイマにより行うものである。ここでは便宜的に、ハードタイマにより計時するものとする。その計時開始後は、ステップE5で初回ONフラグの設定を行い、今回、操作されたパッドのパッド番号を次のステップE6で保存してから、一連の処理を終了する。
上記ステップE2の判定がNOとなって移行するステップE7では、ハードタイマにより計時した時間をスイッチON時間として保存する。次のステップE8では、そのスイッチON時間が上記基準時間以上か否かにより、和音分散時間を決定して格納する。その決定は、第1の実施形態と同様に行う。その決定後はステップE9に移行して、パッド番号で表す2個の操作子の操作順序が1→2であるか否か判定する。パッド101→パッド102の順序でそれらをユーザーが操作した場合、判定はYESとなり、ステップE10でコード構成音の発音順序(図中「音階順」と表記)を上昇方向に設定し、保存したパッド番号を次のステップE11で消去した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ステップE12でコード構成音の発音順序を下降方向に設定してからステップE11に移行する。このようにして、1個目の操作子への操作を解除することなく、2個目の操作子を操作した場合には、その操作順序に応じた発音順序が設定される。
上記ステップE1の判定がNOとなって移行するステップE13では、1個目の操作子がOFFされたか否か判定する。上記ステップE6で保存されたパッド番号が存在し、その番号が割り当てられた操作子への操作をユーザーが解除した場合、判定はYESとなってステップE14に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップE14では、ハードタイマにより計時した時間をスイッチON時間として保存する。次のステップE15では、そのスイッチON時間が上記基準時間以上か否かにより、和音分散時間を決定して格納する。その後は、ステップE16でコード構成音の発音順序を上昇方向に設定し、保存したパッド番号を次のステップE17で消去してから、一連の処理を終了する。
第2の実施形態におけるコード発音処理で実行される処理の流れは基本的に第1の実施形態におけるそれと同じである。このことから図8を参照して、第1の実施形態から異なるステップの処理についてのみ具体的に説明する。
第1の実施形態では、ステップD10でコード発音状態フラグの設定を解除する。第2の実施形態では、その設定解除を行うと共に、和音分散時間として非常に大きな時間を設定する。これは、初回ONフラグの設定によって最初のコード構成音を発音させた後、和音分散時間が上記パッド処理で設定されるまでの間、2音目のコード構成音を発音させないようにするためである。それにより、コードとして発音させる場合には、2段階、つまり1段階目では1音、2段階目では残りを発音させるようにしている。
発音させるコード構成音は、ステップD5で選択される。そのステップD5では、ステップD3から移行した場合、コード構成音のなかで最低音のものを選択して発音させるようになっている。これは、1個の操作子のみをユーザーが操作する(その操作解除は2個目の操作子が操作される前に行われる)との想定で構成音を発音させるためである。その想定は、ユーザーが2個目の操作子を操作するか否かを事前に知ることができないことから採用している。その後の実行時には、和音分散時間(コードとして発音させるか否かを示す設定)、コード構成音の発音順序は確定していることから、確定した設定内容に従った構成音の選択が行われる。既に選択し発音中の構成音が発音させるべきものでなかった場合には、つまり発音順序として下降方向が設定された場合には、例えばその消音を指示し、発音させるべき構成音の発音を指示することが行われる。
発音させるべきでない構成音(楽音)の発音は回避すべきであり、たとえ回避することができないとしても、その発音器官はより短いものとすることが望まれる。このことから、上記基準時間は短い時間とすることが望ましい。或いは発音タイミング(発音開始から発音終了までの期間)内での操作子への操作のみを有効とするのではなく、そのタイミングより前の操作を有効として、図9に示す管理用データの設定を行うようにしても良い。そのようにした場合には、発音させるべきでない構成音の発音を回避できるようになる。その場合、ユーザーの新たな操作を行うまでの間、直前のユーザーの指示を有効とし、構成音を発音させるようにしても良い。
上記有効と想定する指示とは、構成音を同時に発音させるか否か(同時に発音させない指示であれば発音順序を含む)である。同時に発音させない場合に設定される和音分散時間はコード固有のものであることから、有効とする指示内容は別に保存する必要がある。
なお、本実施形態(第1及び第2の実施形態)による演奏装置(楽音設定装置を含む)は、カラオケ装置に搭載されたものであるが、その演奏装置は携帯電話機、PDA、携帯型の再生装置、などに搭載しても良い。或いは鍵盤等の専用の演奏操作子を備えた楽器に搭載しても良い。楽音設定装置については、ユーザーが演奏することで行われた操作子への操作の内容を示す操作情報を外部から受信し、発音させるべき楽音を選択(設定)するものとして実現させても良い。また、自動演奏される楽曲のアレンジ用などに用いることもできる。
ユーザーの演奏対象はコードパートとしているが、これはコードの構成音の発音タイミングを自動的に操作しても、他の演奏パートとの調和を維持した演奏内容の変更が容易に行えるからである。そのためにコードを演奏単位とした演奏内容の変更を行うようにしている。しかし、他の演奏パートを演奏対象としても良い。ユーザーの操作子への操作に応じた楽曲データが示す演奏内容の変更は、演奏対象とする演奏パートに応じて決定すれば良い。演奏内容の変更内容はユーザーに任意に指定させるようにしても良い。その変更は、効果音、或いは音響効果の付加であっても良い。
上述したように動作する演奏装置(楽音設定装置)は、CPU11に実行させるプログラムをROM12に格納することで実現させているが、そのようなプログラムは、CD−ROM、DVD、或いは着脱自在なフラッシュメモリ等の記録媒体に記録させて配布しても良い。公衆網等の通信ネットワークを介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得して、演奏装置(楽音設定装置)として用いることが可能なコンピュータにロードすることにより、そのコンピュータに本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。そのコンピュータは、パーソナル・コンピュータ等であっても良いが、上述したように、カラオケ装置、携帯電話機、PDA、或いは楽器等に搭載されたものであっても良い。