(58)【調査した分野】(Int.Cl.,DB名)
前記第2の再生部は、前記現区間の次区間から、前記第1の再生部により再生される前記トラックのシーケンスデータに同期して前記対象トラックのシーケンスデータを再生する、請求項1に記載の自動演奏装置。
前記第2の再生部は、前記トラック指定部により対象トラックが指定されたタイミングが、前記第1の再生部が再生している前記トラックのシーケンスデータの現区間の区間先頭から所定時間内の場合に、前記対象トラックのシーケンスデータの現区間を早送り再生する請求項1または2に記載の自動演奏装置。
前記対象トラックが指定されたタイミングが、再生している前記トラックのシーケンスデータの現区間の区間先頭から所定時間内の場合に、前記対象トラックのシーケンスデータの現区間を早送り再生することを特徴とする請求項4または5の何れかに記載の自動演奏方法。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施形態について説明する。
A.構成
図1は、本発明の一実施形態による電子楽器100の全体構成を示すブロック図である。この図において、鍵盤10は演奏入力操作(押離鍵操作)に応じたキーオン/キーオフ信号、鍵番号およびベロシティ等からなる演奏入力情報を発生する。鍵盤10が発生する演奏入力情報は、CPU13においてMIDI形式のノートオン/ノートオフイベントに変換された後、音源部16に供給される。また、鍵盤10では、所定鍵域における複数の鍵の鍵スイッチが後述の操作部11に含まれるトラックオンオフスイッチ(1)〜(N)として機能する。
【0014】
操作部11は、装置電源をパワーオン/パワーオフする電源スイッチの他、例えば自動演奏する曲の曲番号を選択する曲選択スイッチ、自動演奏の開始・停止を指示するスタート・ストップスイッチ、自動演奏する各演奏パート(楽器パート)に相当する複数のトラックにそれぞれアサインされる複数の鍵の鍵スイッチから構成され、該当トラックのオン(再生開始)・オフ(再生停止)を指示する上記トラックオンオフスイッチ(1)〜(N)等の各種操作スイッチを備え、これら各スイッチ操作に応じた種類のスイッチイベントを発生する。操作部11が発生する各種スイッチイベントはCPU13に取り込まれる。
【0015】
なお、上述したスタート・ストップスイッチおよびトラックオンオフスイッチ(1)〜(N)は、押下操作される毎にオン/オフの状態が交互に変化する所謂トグルスイッチとして機能する。したがって、押下操作は、オン状態に変化して開始を指示するオン操作と、オフ状態に変化して停止を指示するオフ操作とに分かれる。表示部12は、カラー液晶表示パネルおよび表示ドライバ等から構成され、CPU13から供給される表示制御信号に応じて、楽器各部の設定状態や動作状態などを画面表示する。
【0016】
CPU13は、操作部11から供給される各種スイッチイベントに基づき装置各部の動作状態を設定する他、鍵盤10から供給される演奏入力情報に基づき音源部16に楽音波形データの発生を指示したり、スタート・ストップスイッチの押下操作に応じて音源部16に自動演奏の開始・停止を指示したりする。
【0017】
また、CPU13は、自動演奏進行中にトラックオンオフスイッチがオン操作されたタイミングに応じて、対象トラックの再生形態を制御すると共に、制御された再生形態に従って当該対象トラックに対応する演奏パート(楽器パート)の再生を音源部16に指示し、一方、トラックオンオフスイッチのオフ操作されると、再生進行を管理する演奏時間が小節先頭のタイミングに達する毎に、対象トラックに対応する演奏パート(楽器パート)をミュート・オンして消音させた状態でシーケンスデータSDを次小節先頭まで早送りするこうした本発明の要旨に係るCPU13の特徴的な処理動作、すなわち自動演奏処理の動作については追って詳述する。
【0018】
ROM14は、
図2(a)に図示するように、プログラムエリアPAおよび曲データエリアMDAを備える。ROM14のプログラムエリアPAには、CPU13にロードされる各種制御プログラムを記憶する。各種制御プログラムとは、後述するメインルーチンと、当該メインルーチンからコールされるスイッチ処理や自動演奏処理を含む。ROM14の曲データエリアMDAには、複数の曲のシーケンスデータSD(1)〜SD(N)が記憶される。これら複数の曲のシーケンスデータSD(1)〜SD(N)の内、前述した曲選択スイッチ操作で選択される曲の曲番号nに対応付けられたシーケンスデータSD(n)が自動演奏に供する曲データとして用いられる。
【0019】
RAM15は、
図2(b)に図示するように、シーケンスデータエリアSDAおよびワークエリアWAを備える。RAM15のシーケンスデータエリアSDAには、曲選択スイッチ操作で選択された曲番号nのシーケンスデータSD(n)が、ROM14の曲データエリアMDAから読み出されて格納される。
【0020】
シーケンスデータSD(n)は、ヘッダHD、トラックTrack(0)、トラックTrack(1)〜(N)から構成される。ヘッダHDには、データ形式を示すフォーマットや分解能を表すタイムベース等が格納される。トラックTrack(0)には、曲名、テンポ(BPM)および拍子等が格納される。曲の各演奏パート(楽器パート)に対応させたトラックTrack(1)〜(N)には、それぞれ対応する演奏パートを構成する各音符の音高や発音タイミングを表すシーケンスデータSDが格納される。
【0021】
シーケンスデータSDは、前イベントとの差分時間により現在のイベントEVENTのタイミングを表すデルタタイムΔTと、発音する音高又は消音する音高を表すイベントEVENTとを一組とし、それを曲進行に対応する時系列順にアドレッシングしたものであって、その終端には曲の終りを示すENDデータが設けられる。
【0022】
RAM15のワークエリアWAには、CPU13の処理に用いられる各種レジスタ・フラグデータが一時記憶される。
図2(b)には、本発明の要旨に係る主要なレジスタ・フラグデータを図示している。この図において、スタート・ストップフラグSTFは、前述したスタート・ストップスイッチの押下操作に応じて反転されるフラグであり、「1」となった場合に自動演奏開始(又は自動演奏中)を表し、「0」となった場合に自動演奏停止を表す。
【0023】
トラックオンオフフラグTONF(1)〜TONF(n)は、前述したトラックオンオフスイッチ(1)〜(N)、すなわち自動演奏する各演奏パート(楽器パート)に相当する各トラックTrack(1)〜Track(N)にそれぞれアサインされた鍵スイッチの押下操作に応じて反転されるフラグであり、「1」となった場合に対応する演奏パート(楽器パート)の再生開始(又は再生中)を表し、「0」となった場合に対応する演奏パート(楽器パート)の再生停止を表す。
【0024】
演奏時間TCTは、スタート・ストップフラグSTFが「1」となった時点、つまり曲頭からの経過時間を計時するタイマカウンタである。なお、演奏時間TCTは、図示されていない公知のタイマ割り込み処理によって、スタート・ストップフラグSTFが「1」となった時点からTick累算にて計時される。対象トラック演奏時間DCT(1)〜DCT(n)は、各演奏パート(楽器パート)に対応付けられた各トラックTrack(1)〜Track(n)毎の演奏時間を計時するタイマカウンタである。
【0025】
フラグTHF(1)〜THF(n)は、トラックオンオフスイッチ操作により再生開始となった対象トラックTrack(n)のシーケンスデータSDについて、他のトラックTrackで再生中の現在小節先頭までミュート・オンして早送りした後、ミュート・オフして再生レートRate(後述する)に従って再生中の場合に「1」、それ以外では「0」となるフラグであり、本フラグが意図するところについては追って述べる。
【0026】
閾値THは、小節先頭から所定期間の時間長を表す。この閾値THが意図するところについては追って述べる。デフォルトトラック番号DNは、自動演奏開始時点において、前述のトラックオンオフスイッチ操作により再生を開始したトラックTrackが存在しない場合に、一意的に再生(もしくは再生するが発音させずにミュート)するトラックの番号を表す。
【0027】
なお、後述する動作説明では、少なくともデフォルトトラック番号DNで指定されるトラックTrack(DN)を含み、演奏時間TCTに同期して再生するトラックを「他のトラック」と称する。また、この「他のトラック」と対比される「対象トラック」とは、オン操作されたトラックオンオフスイッチ(n)に対応付けられ、対象トラック演奏時間DCT(n)に同期して再生するトラックTrack(n)を指す。
【0028】
また、本実施形態では、説明の簡略化を図る為、デフォルトトラック番号DNで単一のトラックを指定する態様としたが、これに限らず、複数のデフォルトトラック番号DN1,DN2,…,DNnを設けて複数のトラックを指定する態様であっても構わない。さらにデフォルト設定する方式もユーザが任意に設定する方式や、ファクトリープリセットされる方式としても構わない。
【0029】
次に、再び
図1を参照して電子楽器100の構成について説明を進める。
図1において、音源部16は、周知の波形メモリ読み出し方式にて構成される複数の発音チャンネルを備え、CPU13から供給され、演奏入力情報に基づくノートオン/ノートオフイベントに従って楽音波形データを発生する他、自動演奏進行に応じてCPU13がRAM15のシーケンスデータエリアSDAから読み出す各トラックTrack(1)〜(N)のシーケンスデータSDを再生して各トラック毎の演奏音データを発生する。
【0030】
サウンドシステム17は、音源部16から出力される楽音データ/演奏音データを、アナログ形式の楽音信号/演奏音信号に変換し、当該楽音信号/演奏音信号から不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカ(不図示)から発音させる。
【0031】
B.動作
次に、上記構成による電子楽器100の動作として、CPU13が実行するメインルーチン、当該メインルーチンからコールされるスイッチ処理および自動演奏処理の各動作について
図3〜
図6を参照して説明する。
【0032】
(1)メインルーチンの動作
図3(a)は、CPU13が実行するメインルーチンの動作を示すフローチャートである。CPU13は、電子楽器100のパワーオンに応じてメインルーチンを実行すると、先ず
図3(a)に図示するステップSA1に処理を進め、RAM15の各種レジスタ・フラグを初期化するイニシャライズ処理を実行する。そして、CPU13は、ステップSA2に処理を進め、スイッチ処理を実行する。
【0033】
スイッチ処理では、後述するように、CPU13がユーザの曲選択スイッチ操作に応じて選択された曲番号nのシーケンスデータSD(n)をROM14から読み出してRAM15のシーケンスデータエリアSDAに転送したり、ユーザによるスタート・ストップスイッチの押下操作に応じてスタート・ストップフラグSTFを反転させる他、ユーザによるトラックオンオフスイッチ(n)の押下操作に応じて、当該トラックオンオフスイッチ(n)に対応付けられたオンオフフラグTONF(n)を反転させる。
【0034】
次いで、ステップSA3に処理を進めると、CPU13は自動演奏処理を実行する。自動演奏処理では、後述するように、ユーザのスタート・ストップスイッチ操作に応じて、スタート・ストップフラグSTFが「1」にセットされると、CPU13は演奏パート(楽器パート)に対応させた複数のトラックTrack(1)〜(N)の中でデフォルトトラック番号DNで指定されるトラックTrack(DN)を演奏時間TCTに同期して曲頭から再生させる一方、各トラックTrack(1)〜(N)に対応付けられたトラックオンオフスイッチ(1)〜(N)のオン・オフ状態を、トラックオンオフフラグTONF(1)〜TONF(n)に基づき判別する。
【0035】
ポインタnで指定される対象トラックTrack(n)のトラックオンオフスイッチ(n)がオフ状態(再生停止)であると、CPU13は演奏時間TCTが小節先頭のタイミングに達する毎に、ミュート・オン(消音状態)に設定して当該トラックTrack(n)のシーケンスデータSDを次小節先頭まで早送りする。
【0036】
一方、対象トラックTrack(n)のトラックオンオフスイッチ(n)が、小節先頭から閾値THまでの間にオン操作されると、CPU13は対象トラックTrack(n)をミュート・オフ(発音状態)に設定した後、演奏時間TCTを対象トラック演奏時間DCT(n)にセットし、さらに後述する(1)式に基づいて算出した再生レートRateを用いてレート加算される対象トラック演奏時間DCT(n)に同期して対象トラックTrack(n)のシーケンスデータSDを次小節タイミングT1まで再生させる。
【0037】
この後、対象トラック演奏時間DCT(n)が次小節タイミングT1に到達すると、対象トラックTrack(n)を、演奏時間TCTに同期して再生中の他のトラックTrack(1)〜(N)と同じ再生レートで再生させる。これにより、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避する結果、CPU負荷の低減を図るようになっている。
【0038】
また、対象トラックTrack(n)のトラックオンオフスイッチ(n)が、閾値THを超えた時点でオン操作されると、CPU13はミュート・オン(消音状態)に設定した対象トラックTrack(n)のシーケンスデータSDを、他のトラックTrack(DN)で再生中の現在タイミングまで早送りした後にミュート・オフ(発音状態)に設定し、演奏時間TCTに同期させた対象トラック演奏時間DCT(n)に従って対象トラックTrack(n)のシーケンスデータSDを再生させる。これにより、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避する結果、CPU負荷の低減を図るようになっている。
【0039】
そして、CPU13はステップSA4に処理を進め、例えば鍵盤10の押離鍵操作に応じて発生する演奏入力情報をMIDI形式のノートオン/ノートオフイベントに変換し、これを音源部16に供給して発音・消音指示する処理や、発生した楽音にユーザ指定のエフェクトを付与させる等の、その他の処理を実行した後、上記ステップSA2に処理を戻す。以後、電子楽器100がパワーオフされるまで上記ステップSA2〜SA4を繰り返し実行する。
【0040】
(2)スイッチ処理の動作
次に、
図3(b)を参照してスイッチ処理の動作を説明する。
図3(b)は、CPU13が実行するスイッチ処理の動作を示すフローチャートである。前述したメインルーチンのステップSA2(
図3(a)参照)を介してスイッチ処理が実行されると、CPU13は
図3(b)に図示するステップSB1に進み、曲選択スイッチのオン操作の有無を判断する。
【0041】
ユーザにより曲選択スイッチがオン操作されると、上記ステップSB1の判断結果は「YES」になり、CPU13はステップSB2に処理を進め、曲選択スイッチの操作で選択された曲番号nのシーケンスデータSD(n)をROM14の曲データエリアMDA(
図2参照)から読み出してRAM15のシーケンスデータエリアSDAに転送した後、後述のステップSB10に処理を進める。
【0042】
これに対し、曲選択スイッチがオン操作されなければ、上記ステップSB1の判断結果は「NO」になり、CPU13はステップSB3に処理を進め、スタート・ストップスイッチの押下操作の有無を判断する。ユーザによりスタート・ストップスイッチが押下操作されると、判断結果は「YES」になり、CPU13はステップSB4に処理を進め、スタート・ストップフラグSTFを反転させた後、後述のステップSB10に処理を進める。
【0043】
一方、スタート・ストップスイッチが押下操作されなければ、上記ステップSB3の判断結果は「NO」になり、CPU13はステップSB5に処理を進め、ポインタnに初期値「1」をセットする。続いて、ステップSB6に進むと、CPU13はポインタnで指定されるトラックオンオフスイッチ(n)の押下操作の有無を判断する。
【0044】
押下操作されていなければ、上記ステップSB6の判断結果は「NO」になり、CPU13はステップSB8に処理を進め、ポインタnをインクリメントして歩進させた後、ステップSB9に処理を進める。ステップSB9に進むと、CPU13は歩進させたポインタnがトラックの数Nを超えたか否かを判断する。歩進させたポインタnがトラックの数Nを超えていなければ、判断結果は「NO」になり、上記ステップSB6に処理を戻す。
【0045】
そして、歩進させたポインタnで指定されるトラックオンオフスイッチ(n)が押下操作されたとする。そうすると、上記ステップSB6の判断結果は「YES」になり、CPU13はステップSB7に処理を進め、歩進させたポインタnで指定されるトラックオンオフフラグTONF(n)を反転する。この後、CPU13はステップSB8に処理を進め、ポインタnをインクリメントして歩進させ、続くステップSB9において、歩進させたポインタnがトラックの数Nを超えたか否かを判断する。
【0046】
以後、CPU13は全てのトラックオンオフスイッチ(n)について押下操作の有無を判断し終えるまで上記ステップSB6〜SB9を繰り返す。これにより、押下操作されたトラックオンオフスイッチ(n)に対応付けられたオンオフフラグTONF(n)が反転される。そして、全てのトラックオンオフスイッチ(n)について押下操作の有無を判断し終えると、上記ステップSB9の判断結果が「YES」になり、CPU13はステップSB10に処理を進め、例えば音色選択スイッチ操作に応じて発生する楽音の音色を選択したり、エフェクト選択スイッチ操作に応じて発生する楽音に付加するエフェクトを選択したりする、その他のスイッチ処理を実行して本処理を終える。
【0047】
このように、スイッチ処理では、CPU13がユーザの曲選択スイッチ操作に応じて選択された曲番号nのシーケンスデータSD(n)をROM14から読み出してRAM15のシーケンスデータエリアSDAに転送したり、ユーザによるスタート・ストップスイッチの押下操作に応じてスタート・ストップフラグSTFを反転させる他、ユーザによるトラックオンオフスイッチ(n)の押下操作に応じて、当該トラックオンオフスイッチ(n)に対応付けられたオンオフフラグTONF(n)を反転させる。
【0048】
(3)自動演奏処理の動作
次に、
図4〜
図5を参照して自動演奏処理の動作を説明する。
図4〜
図5は、CPU13が実行する自動演奏処理の動作を示すフローチャートである。前述したメインルーチンのステップSA3(
図3(a)参照)を介して本処理が実行されると、CPU13は
図4に図示するステップSC1に処理を進め、スタート・ストップフラグSTFが「1」、すなわち自動演奏の開始(又は自動演奏中)の状態であるか否かを判断する。以下、[自動演奏開始(又は自動演奏中)の場合]と、[自動演奏停止の場合]とに分けて本処理の動作の説明を進める。
【0049】
[自動演奏開始(又は自動演奏中)の場合]
ユーザのスタート・ストップスイッチ操作に応じて、スタート・ストップフラグSTFが「1」にセットされると、上記ステップSC1の判断結果は「YES」になり、ステップSC2に進む。ステップSC2に進むと、CPU13は、演奏パート(楽器パート)に対応させた複数のトラックTrack(1)〜(N)の中でデフォルトトラック番号DNで指定されるトラックTrack(DN)を再生する。具体的には、CPU13がトラックTrack(DN)のシーケンスデータSDを読み出して音源部16に供給する。これにより、音源部16では、CPU13から供給されるシーケンスデータSDに基づいて楽音を発生する。
【0050】
こうして、デフォルトトラック番号DNで指定されるトラックTrack(DN)を再生させると、CPU13は次のステップSC3に進み、トラックを指定するポインタnに初期値「1」をセットする。続いて、ステップSC4に進むと、CPU13はポインタnで指定されるトラックオンオフフラグTONF(n)が「0」、つまりポインタnで指定されるトラックTrack(n)が再生停止の状態であるか否かを判断する。以下、ポインタnで指定されるトラックオンオフフラグTONF(n)が「0」(再生停止)の場合と、「1」(再生中)の場合とに分けて動作の説明を進める。
【0051】
a.トラックオンオフフラグTONF(n)が「0」(再生停止)の場合
この場合、上記ステップSC4の判断結果は「YES」になり、CPU13はステップSC5に処理を進める。ステップSC5に進むと、CPU13はTCT(mod t_m)=0であるか否か、すなわち演奏時間TCTが小節先頭のタイミング下であるかどうかを判断する。なお、TCT(mod t_m)とは、演奏時間TCTの1小節長t_mによる剰余演算を表し、この剰余演算の値が「0」とは小節先頭を意味する。
【0052】
演奏時間TCTが小節先頭のタイミング下でなければ、上記ステップSC5の判断結果は「NO」になり、CPU13は後述のステップSC8に処理を進める。これに対し、演奏時間TCTが小節先頭のタイミング下であると、上記ステップSC5の判断結果は「YES」になり、CPU13は次のステップSC6に進み、ポインタnで指定されるトラックTrack(n)をミュート・オン(消音状態)に設定し、続くステップSC7では、ポインタnで指定されるトラックTrack(n)のシーケンスデータSDを次小節先頭まで早送りする。
【0053】
そして、ステップSC8に進むと、CPU13はポインタnをインクリメントして歩進させ、続くステップSC9では、歩進させたポインタnの値がデフォルトトラック番号DNに一致するか否かを判断する。歩進させたポインタnの値がデフォルトトラック番号DNに一致すると、上記ステップSC9の判断結果は「YES」になり、再びステップSC8に進み、ポインタnを歩進させる。すなわち、デフォルトトラック番号DNで指定されるトラックTrack(DN)は、前述したように、スタート・ストップフラグSTFが「1」の場合、トラックオンオフスイッチ操作に依らず一意的に演奏時間TCTに同期して再生(もしくは再生するが発音させずにミュート)する為、上述の処理から除外するようになっている。
【0054】
一方、歩進させたポインタnの値がデフォルトトラック番号DNに一致しなければ、上記ステップSC9の判断結果が「NO」になり、CPU13はステップSC10に処理を進め、歩進させたポインタnがトラック番号Nを超えたか否か、つまり全ての演奏パート(楽器パート)に対応するトラックTrack(1)〜(N)について処理し終えたかどうかを判別する。そして、全てのトラックTrack(1)〜(N)について処理し終えていない場合には、上記ステップSC10の判断結果が「NO」になり、CPU13は前述したステップSC4に処理を戻す。
【0055】
このように、CPU13は、ポインタnで指定されるトラックTrack(n)が再生停止の状態であると、演奏時間TCTが小節先頭のタイミングに達する毎に、ミュート・オン(消音状態)に設定して当該トラックTrack(n)のシーケンスデータSDを次小節先頭まで早送りする。
【0056】
b.トラックオンオフフラグTONF(n)が「1」(再生中)の場合
これに対し、歩進させたポインタnで指定されるトラックオンオフフラグTONF(n)が「1」であったとする。そうすると、この場合、前述したステップSC4の判断結果が「NO」になり、ステップSC11に処理を進める。ステップSC11に進むと、CPU13はポインタnで指定されるトラックオンオフフラグTONF(n)が「1」、つまりポインタnで指定されるトラックTrack(n)が再生中の状態であるか否かを判断する。この場合、判断結果は「YES」になり、CPU13はステップSC12に処理を進める。
【0057】
ステップSC12に進むと、CPU13はポインタnで指定されるフラグTHF(n)が「1」、つまりトラックオンオフスイッチ操作により再生開始となった対象トラックTrack(n)のシーケンスデータSDを、他のトラックTrack(DN)で再生中の現在小節先頭までミュート・オンして早送りした後、ミュート・オフして再生レートRateに従って再生中であるか否かを判断する。なお、ここで言う対象トラックとは、押下操作されたトラックオンオフスイッチ(鍵スイッチ)に対応付けられた演奏パート(楽器パート)のトラックを指す。
【0058】
フラグTHF(n)が「1」、つまり対象トラックTrack(n)をミュート・オンして早送りした後、ミュート・オフして再生レートRateに従って再生中ならば、上記ステップSC12の判断結果は「YES」になり、CPU13は後述するステップSC21(
図5参照)に処理を進める。
【0059】
一方、フラグTHF(n)が「0」、つまり対象トラックTrack(n)をミュート・オンして早送りした後、ミュート・オフして再生レートRateに従って再生中でなければ、上記ステップSC12の判断結果は「NO」になり、CPU13はステップSC13に処理を進める。
【0060】
ステップSC13に進むと、CPU13は、TCT(mod t_m)<閾値THであるか否か、すなわちポインタnで指定されるトラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値TH未満であるかどうかを判断する。TCT(mod t_m)とは、演奏時間TCTの1小節長t_mによる剰余演算を表す。
【0061】
以下、トラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値TH未満の場合と、閾値THを超えた場合とに分けて動作の説明を進める。
【0062】
b−1.オンタイミングが現在小節先頭から閾値TH未満の場合
トラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値TH未満であると、上記ステップSC13の判断結果が「YES」になり、CPU13は
図5に図示するステップSC17に処理を進め、ポインタnで指定されるフラグTHF(n)を「1」にセットする。
【0063】
続いて、CPU13はステップSC18に進み、対象トラックTrack(n)をミュート・オフ(発音状態)に設定する。次に、CPU13は、ステップSC19に処理を進め、演奏時間TCTを、ポインタnで指定される対象トラック演奏時間DCT(n)にセットすると共に、次式(1)に従って再生レートRateを算出する。
再生レートRate=(t_m/t_o)×最少単位時間 …(1)
【0064】
上記(1)式において、t_mは1小節長であり、60/BPM(テンポ)×拍数から算出される。BPM(テンポ)および拍数は、トラックTrack(0)から抽出する。t_oは、トラックオンオフスイッチのオンタイミング(オン操作されたタイミング)から次小節タイミングT1までの期間長であり、次小節タイミングT1−トラックオンオフスイッチがオン操作された時点の演奏時間TCTで算出される。次小節タイミングT1は、対象トラックTrack(n)のシーケンスデータSDから抽出する。最少単位時間は、60/BPM(テンポ)/タイムベース(分解能)で算出される1Tickである。
【0065】
こうして再生レートRateを算出すると、CPU13はステップSC20に進み、算出した再生レートRateを用いてレート加算される対象トラック演奏時間DCT(n)に同期して対象トラックTrack(n)を早送りで再生させる。次に、CPU13はステップSC21に処理を進め、再生レートRateに従って早送りで再生中の対象トラックTrack(n)の対象トラック演奏時間DCT(n)が、次小節タイミングT1に到達したか否かを判断する。
【0066】
対象トラック演奏時間DCT(n)が次小節タイミングT1に到達していなければ、上記ステップSC21の判断結果は「NO」になり、後述のステップSC23に進む。これに対し、対象トラック演奏時間DCT(n)が次小節タイミングT1に到達すると、上記ステップSC21の判断結果が「YES」になり、CPU13は次のステップSC22に処理を進め、ポインタnで指定される対象トラックTrack(n)を、演奏時間TCTに同期して再生中のデフォルトトラック番号DNで指定されるトラックTrack(DN)を含む他のトラックTrackと同じ再生レートで再生させる。
【0067】
そして、CPU13はステップSC23に処理を進め、ポインタnで指定されるフラグTHF(n)をゼロリセットした後、
図4に図示するステップSC8に処理を進める。ステップSC8に進むと、CPU13はポインタnをインクリメントして歩進させ、続くステップSC9では、歩進させたポインタnの値がデフォルトトラック番号DNに一致したか否かを判断する。
【0068】
歩進させたポインタnの値がデフォルトトラック番号DNに一致した場合には、判断結果が「YES」になり、再びステップSC8に戻り、ポインタnを歩進させる。これに対し、歩進させたポインタnの値がデフォルトトラック番号DNに一致しない場合には、判断結果が「NO」になり、CPU13はステップSC10に処理を進め、歩進させたポインタnがトラック番号Nを超えたか否か、つまり全ての演奏パート(楽器パート)に対応するトラックTrack(1)〜(N)について処理し終えたかどうかを判別する。
【0069】
全てのトラックTrack(1)〜(N)について処理し終えていなければ、上記ステップSC10の判断結果は「NO」になり、前述したステップSC4以降の処理を繰り返す。そして、全てのトラックTrack(1)〜(N)について処理し終えると、上記ステップSC10の判断結果が「YES」になり、CPU13は自動演奏処理を完了してメインルーチンへ復帰する。
【0070】
このように、トラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値TH未満であると、CPU13は対象トラックTrackをミュート・オフ(発音状態)に設定した後、演奏時間TCTを対象トラック演奏時間DCT(n)にセットし、さらに前述した(1)式に基づいて算出した再生レートRateを用いてレート加算される対象トラック演奏時間DCT(n)に同期して対象トラックTrack(n)の第2小節目のシーケンスデータSDを次小節タイミングT1まで再生させる。
【0071】
つまり、トラックオンオフスイッチ(n)がオン操作されたオンタイミングから次小節タイミングT1までの間、当該対象トラックTrack(n)のシーケンスデータSDを再生レートRateに従って早送りで再生する。そして、対象トラック演奏時間DCT(n)が次小節タイミングT1に到達すると、対象トラックTrack(n)を、演奏時間TCTに同期して再生中の他のトラックTrack(1)〜(N)と同じ再生レートで再生させる。
【0072】
b−2.オンタイミングが閾値THを超えた場合
トラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値THの範囲を超えると、
図4に図示するステップSC13の判断結果が「NO」になり、CPU13はステップSC14に処理を進め、ポインタnで指定される対象トラックTrack(n)をミュート・オン(消音状態)に設定すると共に、当該対象トラックTrack(n)のシーケンスデータSDを、他のトラックTrack(DN)で再生中の現在のタイミングまで早送りする。
【0073】
続いて、ステップSC15に進むと、CPU13はポインタnで指定される対象トラックTrack(n)をミュート・オフ(発音状態)に設定した後、演奏時間TCTをポインタnで指定される対象トラック演奏時間DCT(n)にセットする。そして、CPU13はステップSC16に処理を進め、ポインタnで指定される対象トラックTrack(n)を、他のトラックTrack(DN)と同じ再生レートで再生させた後、本処理を完了してメインルーチンへ復帰する。
【0074】
このように、トラックオンオフスイッチ(n)のオンタイミングが、演奏時間TCTに同期して再生中の現在小節先頭から閾値THの範囲を超えると、CPU13はミュート・オン(消音状態)に設定した対象トラックTrack(n)のシーケンスデータSDを、他のトラックTrack(DN)で再生中の現在タイミングまで早送りした後にミュート・オフ(発音状態)に設定し、演奏時間TCTに同期させた対象トラック演奏時間DCT(n)に従って対象トラックTrack(n)のシーケンスデータSDを再生させる。
【0075】
[自動演奏停止の場合]
ユーザのスタート・ストップスイッチ操作に応じて、スタート・ストップフラグSTFが「0」にセットされると、前述したステップSC1の判断結果が「NO」になり、CPU13はステップSC24に処理を進める。ステップSC24に進むと、CPU13は全ての演奏パート(楽器パート)に対応するトラックTrack(1)〜(N)の再生停止を音源部16に指示する。この後、CPU13はステップSC25に処理を進め、トラックオンオフフラグTONF(1)〜(N)およびフラグTHF(1)〜(N)をゼロリセットした後、本処理を完了してメインルーチンへ復帰する。
【0076】
以上説明したように、自動演奏処理では、ユーザのスタート・ストップスイッチ操作に応じて、スタート・ストップフラグSTFが「1」にセットされると、CPU13は演奏パート(楽器パート)に対応させた複数のトラックTrack(1)〜(N)の内、例えば
図6に図示するように、対象トラックTrack(n)を除く他のトラックTrack(1)〜(N)のシーケンスデータSDを演奏時間TCTに同期して曲頭から再生させる。
【0077】
そして、
図6に図示する一例のように、第1小節から第2小節にかけて対象トラックTrack(n)のトラックオンオフスイッチ(n)がオフ状態のままで再生停止の状態となっていると、CPU13は演奏時間TCTが小節先頭のタイミングに達する毎に、ミュート・オン(消音状態)に設定して当該トラックTrack(n)のシーケンスデータSDを次小節先頭まで早送りする。
【0078】
次に、ユーザが第3小節先頭から閾値THまでの間に対象トラックTrack(n)に対応付けられたトラックオンオフスイッチ(n)をオン操作したとする。そうすると、CPU13は、対象トラックTrackをミュート・オフ(発音状態)に設定した後、演奏時間TCTを対象トラック演奏時間DCT(n)にセットし、さらに前述した(1)式に基づいて算出した再生レートRateを用いてレート加算される対象トラック演奏時間DCT(n)に同期して対象トラックTrack(n)の第3小節目のシーケンスデータSDを次小節タイミングT1まで再生させる。
【0079】
つまり、トラックオンオフスイッチ(n)がオン操作されたオンタイミングから次小節タイミングT1までの間、当該対象トラックTrack(n)のシーケンスデータSDを再生レートRateに従って早送りで再生する。この後、対象トラック演奏時間DCT(n)が次小節タイミングT1に到達すると、対象トラックTrack(n)を、演奏時間TCTに同期して再生中の他のトラックTrack(1)〜(N)と同じ再生レートで再生させる。
【0080】
この結果、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避する為、CPU負荷の低減を図ることが可能になる。加えて、第3小節先頭から閾値THまでの間に対象トラックTrack(n)に対応付けられたトラックオンオフスイッチ(n)をオン操作すると、オン操作されたオンタイミングから次小節タイミングT1までの間、当該対象トラックTrack(n)のシーケンスデータSDを再生レートRateに従って早送りで再生する為、ビギナーユーザでも意図した通りにトラックオンオフさせて音楽的に重要なアタック音を発音させることが可能になる。
【0081】
一方、ユーザが閾値THを超えた時点で対象トラックTrack(n)に対応付けられたトラックオンオフスイッチ(n)をオン操作すると、
図6には図示していないが、CPU13はミュート・オン(消音状態)に設定した対象トラックTrack(n)のシーケンスデータSDを、他のトラックTrack(DN)で再生中の現在タイミングまで早送りした後にミュート・オフ(発音状態)に設定した後、演奏時間TCTに同期させた対象トラック演奏時間DCT(n)に従って対象トラックTrack(n)のシーケンスデータSDを再生させるので、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避してCPU負荷の低減を図ることが可能になる。
【0082】
以上説明したように、本実施形態では、演奏すべき曲の各音符を表すシーケンスデータを各トラック別に設け、これら各トラックの中から少なくとも1つのトラックのシーケンスデータを、曲頭からの経過時間を計時した演奏時間に同期して再生しておき、前記各トラックの内、再生停止しているトラックのシーケンスデータを、前記演奏時間が予め区切られた曲の各区間先頭のタイミングに達する毎に、再生中の現区間に続く次区間の先頭までミュート・オンして早送りする。
【0083】
そして、前記各トラックの内、再生停止しているトラックの中から再生を開始する対象トラックを指定し、前記対象トラックが指定された時点の前記演奏時間が、予め区切られた曲の区間先頭から所定時間未満の期間に収まる場合に、当該対象トラックをミュート・オフすると共に、予め区切られた曲の区間長と、再生中の現区間に続く次区間の先頭時間から前記対象トラックが指定された時点の前記演奏時間を減算した差分時間との比に応じた再生レートに従って前記演奏時間をレート加算して対象トラック演奏時間を生成し、早送りされた前記対象トラックの現区間のシーケンスデータを、生成された前記対象トラック演奏時間に同期して再生し、当該対象トラック演奏時間が前記次区間の先頭時間に達した時点から前記対象トラックのシーケンスデータを前記演奏時間に同期して再生する。したがって、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避する為、CPU負荷の低減を図ることが出来る。
【0084】
また、本実施形態では、前記対象トラックが指定された時点の前記演奏時間が、予め区切られた曲の区間先頭から所定時間未満の期間に収まらない場合に、当該対象トラックのシーケンスデータを再生中の現在タイミングまでミュート・オンして早送りした後にミュート・オフして前記演奏時間に同期して再生する。したがって、従来のように、シーケンスデータSDをミュート・オンで一気に早送りすることを回避する為、CPU負荷の低減を図ることが出来る。
【0085】
以上、本発明の実施形態について説明したが、本発明はそれに限定されるものではなく、本願出願の特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0086】
以下では、本願出願当初の特許請求の範囲に記載された各発明について付記する。
(付記)
[請求項1]
複数の区間を有する演奏すべき曲のシーケンスデータであって、各トラックの中から少なくとも1つのトラックに対応したシーケンスデータを再生する第1の再生部と、
前記第1の再生部により再生される前記トラックのシーケンスデータが各区間先頭まで再生されるタイミングに合わせて、前記各トラックのうちの少なくとも1つの他トラックのシーケンスデータを各区間先頭までミュート・オンして早送りする早送り部と、
前記他トラックの中から発音を開始する対象トラックを指定するトラック指定部と、
前記トラック指定部により発音を開始する対象トラックが指定された場合に、前記対象トラックをミュート・オフすると共に、前記区間の区間長と前記トラック指定部により指定されたタイミングに基づいて得られる再生レートに従って、前記第1の再生部が再生している前記トラックのシーケンスデータの現区間に対応する前記対象トラックのシーケンスデータの現区間を早送り再生する第2の再生部と
を備える自動演奏装置。
[請求項2]
前記第2の再生部は、前記現区間の次区間から、前記第1の再生部により再生される前記トラックのシーケンスデータに同期して前記対象トラックのシーケンスデータを再生する、請求項1に記載の自動演奏装置。
[請求項3]
前記第2の再生部は、前記トラック指定部により対象トラックが指定されたタイミングが、前記第1の再生部が再生している前記トラックのシーケンスデータの現区間の区間先頭から所定時間内の場合に、前記対象トラックのシーケンスデータの現区間を早送り再生する請求項1または2に記載の自動演奏装置。
[請求項4]
自動演奏装置に用いられる自動演奏方法であって、
前記自動演奏装置が、
複数の区間を有する演奏すべき曲のシーケンスデータであって、各トラックの中から少なくとも1つのトラックに対応したシーケンスデータを再生し、
再生される前記トラックのシーケンスデータが各区間先頭まで再生されるタイミングに合わせて、前記各トラックのうちの少なくとも1つの他トラックのシーケンスデータを各区間先頭までミュート・オンして早送りし、
前記他トラックの中から発音を開始する対象トラックを指定し、
発音を開始する対象トラックが指定された場合に、前記対象トラックをミュート・オフすると共に、前記区間の区間長と指定されたタイミングに基づいて得られる再生レートに従って、再生している前記トラックのシーケンスデータの現区間に対応する前記対象トラックのシーケンスデータの現区間を早送り再生する
ことを特徴とする自動演奏方法。
[請求項5]
前記現区間の次区間から、前記第1の再生部により再生される前記トラックのシーケンスデータに同期して前記対象トラックのシーケンスデータを再生することを特徴とする請求項4に記載の自動演奏方法。
[請求項6]
前記対象トラックが指定されたタイミングが、再生している前記トラックのシーケンスデータの現区間の区間先頭から所定時間内の場合に、前記対象トラックのシーケンスデータの現区間を早送り再生することを特徴とする請求項4または5の何れかに記載の自動演奏方法。
[請求項7]
自動演奏装置に搭載されるコンピュータに、
複数の区間を有する演奏すべき曲のシーケンスデータであって、各トラックの中から少なくとも1つのトラックに対応したシーケンスデータを再生する第1の再生ステップと、
前記第1の再生ステップで再生される前記トラックのシーケンスデータが各区間先頭まで再生されるタイミングに合わせて、前記各トラックのうちの少なくとも1つの他トラックのシーケンスデータを各区間先頭までミュート・オンして早送りする早送りステップと、
前記他トラックの中から発音を開始する対象トラックを指定するトラック指定ステップと、
前記トラック指定ステップで発音を開始する対象トラックが指定された場合に、前記対象トラックをミュート・オフすると共に、前記区間の区間長と前記トラック指定部により指定されたタイミングに基づいて得られる再生レートに従って、前記第1の再生ステップにて再生している前記トラックのシーケンスデータの現区間に対応する前記対象トラックのシーケンスデータの現区間を早送り再生する第2の再生ステップと、
を実行させることを特徴とするプログラム。
[請求項8]
前記第2の再生ステップは、前記現区間の次区間から、前記第1の再生部により再生される前記トラックのシーケンスデータに同期して前記対象トラックのシーケンスデータを再生することを特徴とする請求項7に記載のプログラム。
[請求項9]
前記第2の再生ステップは、前記トラック指定部により対象トラックが指定されたタイミングが、前記第1の再生部が再生している前記トラックのシーケンスデータの現区間の区間先頭から所定時間内の場合に、前記対象トラックのシーケンスデータの現区間を早送り再生することを特徴とする請求項7または8の何れかに記載のプログラム。
[請求項10]
演奏入力操作に応じた演奏入力情報を発生する演奏入力部と、
請求項1乃至3の何れかに記載の自動演奏装置と、
前記演奏入力部が発生する演奏入力情報に応じた楽音を形成すると共に、前記自動演奏装置からの再生指示に従った演奏音を発生する音源部と、
を具備することを特徴とする電子楽器。