(57)【要約】【課題】コンピュータ内で実行され、そのコンピュータを、一連の時間情報が付された演奏情報に基づいて自動演奏する自動演奏装置として動作させる自動演奏プログラムに関し、タイムレートを変更した際に生じる、所定の区間の開始時刻と終了時刻の再設定の煩わしさを解消する。【解決手段】時間を計時するステップ１１と、一連の時間情報が付された演奏情報およびその一連の演奏情報の所定の区間の開始時刻および終了時刻からなる区間指定情報を記憶する記憶手段１２０から計時ステップ１１が計時する時間に応じて自動演奏を行う演奏ステップ１２と、タイムレートが入力される入力ステップ１３と、入力ステップ１３で入力されたタイムレートに基づき記憶手段１２０に記憶した演奏情報に付された時間情報が変更されるとともに、記憶手段１２０に記憶した区間指定情報が変更される変更ステップ１４とを有する【選択図】　　　　図１
2004117817.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実行される自動演奏プログラムであって、
時間を計時するステップと、
一連の時間情報が付された演奏情報およびその一連の演奏情報の所定の区間の開始時刻および終了時刻からなる区間指定情報を記憶する記憶手段から前記計時ステップが計時する時間に応じて自動演奏を行う演奏ステップと、
タイムレートが入力される入力ステップと、
前記入力ステップで入力されたタイムレートに基づき前記記憶手段に記憶した演奏情報に付された時間情報が変更されるとともに、前記記憶手段に記憶した区間指定情報が変更される変更ステップと
を有することを特徴とする自動演奏プログラム。
【請求項２】
請求項１記載の自動演奏プログラムにおいて、
表示器上に、時間軸に応じて前記演奏情報及び区間指定情報を表示するステップとを有することを特徴とする自動演奏プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ内で実行され、そのコンピュータを、一連の時間情報が付された演奏情報に基づいて自動演奏する自動演奏装置として動作させる自動演奏プログラムに関する。
【０００２】
【従来の技術】
従来より、一連の時間情報が付された演奏情報に基づいて、所定のテンポで自動演奏を行う場合、テンポと演奏情報の読出速度との比であるＴｉｍｅ　Ｒａｔｅ（タイムレート）を用い、演奏情報の読出時刻を変更する自動演奏装置が知られている（例えば特許文献１参照。）。さらに、この特許文献１には、タイムレートをＧＵＩ上の編集画面に表示し、この編集画面上でマウス等のポインティングデバイスの操作により表示したタイムレートを編集する技術も開示されている。
【０００３】
【特許文献１】
特開２００１−４７６９１号公報
【０００４】
【発明が解決しようとする課題】
ここで、タイムレートを変更自在な自動演奏装置において、演奏情報を繰り返して読み出す（ループ再生をする）区間、又は演奏情報に上書き（パンチイン・アウト記憶）する区間を規定するにあたり、これらの区間の開始時刻と終了時刻を設定することを考える。
【０００５】
このような自動演奏装置では、タイムレートを変更すると、演奏情報の読出時刻は、タイムレートの変更に併せて変更されるが、これらの区間を規定する開始時刻と終了時刻は変更されず、ユーザによって設定された時刻のままである。このため、区間内の演奏情報は、意図したものとは違ったものになってしまい、区間の開始時刻と終了時刻を再設定しなければならないという煩わしさがある。
【０００６】
本発明は、上記事情に鑑み、タイムレートを変更した際に生じる、所定の区間の開始時刻と終了時刻の再設定の煩わしさを解消することができる自動演奏プログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成する本発明の自動演奏プログラムは、コンピュータにより実行される自動演奏プログラムであって、
時間を計時するステップと、
一連の時間情報が付された演奏情報およびその一連の演奏情報の所定の区間の開始時刻および終了時刻からなる区間指定情報を記憶する記憶手段から上記計時ステップが計時する時間に応じて自動演奏を行う演奏ステップと、
タイムレートが入力される入力ステップと、
上記入力ステップで入力されたタイムレートに基づき上記記憶手段に記憶した演奏情報に付された時間情報が変更されるとともに、上記記憶手段に記憶した区間指定情報が変更される変更ステップと
を有することを特徴とする。
【０００８】
本発明の自動演奏プログラムによれば、上記変更ステップによって、上記入力ステップで入力されたタイムレートに基づき上記記憶手段に記憶した区間指定情報が変更されるため、所定の区間の開始時刻と終了時刻の再設定の煩わしさを解消することができる。
【０００９】
また、本発明の自動演奏プログラムにおいて、
表示器上に、時間軸に応じて上記演奏情報及び区間指定情報を表示するステップとを有することが好ましい。
【００１０】
このようなステップを有することで、上記変更ステップによって変更された区間指定情報に基づく開始時刻および終了時刻が、演奏情報に基づく情報とともに所定の表示器上に表示されるため、ユーザに、自動演奏されている楽音を視覚的に認識させることができる。
【００１１】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【００１２】
ここではまず、本発明の一実施形態である自動演奏プログラムがインストールされて自動演奏装置として動作する楽音生成装置について、図１を用いて説明する。
【００１３】
図１は、本発明の一実施形態である自動演奏プログラムがインストールされた楽音生成装置のハードウェア構成図である。
【００１４】
図１に示す楽音生成装置１は、自動演奏している楽曲を編集する楽曲編集機能を有するものである。この楽音生成装置１は、各種のプログラムを実行するＣＰＵ１１０、ＣＰＵ１１０で実行されるプログラムで参照されるデータの記憶領域やそのプログラムの作業領域として使用されるＲＡＭ１２０、装置全体の基本的な処理を行うＯＳ等の基本プログラムが記憶されているＲＯＭ１３０、および本発明の一実施形態である自動演奏プログラムが記憶されていると共に、波形データや楽曲編集処理の対象となる自動演奏データが記憶されているＨＤＤ（ハードディスクドライブ）１４０を備えている。ＣＰＵ１１０は、ＲＯＭ１３０に記憶された基本プログラムに従って装置全体の基本的な処理を行うほか、ＨＤＤ１４０に記憶された自動演奏プログラムや自動演奏データや波形データをＲＡＭ１２０に転送し、自動演奏処理を行う。また、この楽音生成装置１は、ＭＩＤＩインターフェース（Ｉ／Ｆ）１５０と、表示器（ＤＩＳＰＬＡＹ）１６０と、設定操作子１７０を備えている。ＭＩＤＩインターフェース１５０は、外部のＭＩＤＩ（Ｍｕｓｉｃａｌ　Ｉｎｓｔｒｕｍｅｎｔ　Ｄｉｇｉｔａｌ　Ｉｎｔｅｒｆａｃｅ）機器等と、ＭＩＤＩ情報をやり取りするためのインターフェースである。ＭＩＤＩ情報には演奏データやコントロールチェンジ情報等が含まれており、この楽音生成装置１では、ＭＩＤＩインターフェース１５０から入力された演奏データは、自動演奏データとして取り扱われる。表示器１６０は、後述する楽曲編集画面を表示するものであり、ここでは液晶ディスプレイ（ＬＣＤ）である。設定操作子１７０は、表示器１６０に表示された楽曲編集画面上で各種の操作を行うためのマウスや、自動演奏を行う楽曲のテンポ値を設定するテンポ設定操作子を有する。なお、表示器１６０は、ＬＣＤに限らずＣＲＴディスプレイであってもよく、楽曲編集画面上で各種の操作を行うための操作子は、マウスに限らずタブレット等のポインティングデバイスであってもよい。さらに、この楽音生成装置１は音源１８０を備えている。音源１８０は、ＨＤＤ１４０からＲＡＭ１２０に転送された波形データを取得し、取得した波形データを、自動演奏データに基づいて読み出すことにより楽音生成を行う。生成された楽音は、不図示の外部のスピーカーなどに出力される。
【００１５】
なお、この図１に示す楽音生成装置１を構成するこれらの構成要素１１０〜１８０は、バス１９０により相互に接続されている。
【００１６】
続いて、図２を用いて、図１に示すＨＤＤ１４０からＲＡＭ１２０に転送された自動演奏データについて説明する。
【００１７】
図２は、図１に示すＲＡＭに記憶された各種データを示すものである。
【００１８】
図２の上方には、自動演奏データ２０が示されている。この自動演奏データには、楽音生成開始を指示するノートオンと楽音生成停止を指示するノートオフが含まれている。これらのノートオンおよびノートオフは、生成を開始あるいは停止させる楽音の音高を規定するノートナンバ（［６０］（ハ），［６１］（レ），［６２］（ル），［６３］（ヤ））を有する。なお、以下の説明では、ノートオンおよびノートオフを総称して演奏データと称するが、演奏データには、音量情報や音色情報等も含まれている。
【００１９】
また、図１に示すＲＡＭ１２０には、タイムレートが記憶されている。タイムレートは、自動演奏との進行速度比、及び音源１８０における波形データの読み出し位置の移動速度比を規定するものである。すなわち、タイムレートが‘１’ならばテンポ値と同じ速度で自動演奏を行い、音源１８０は通常の速度で波形データの読み出し位置を移動し、タイムレートが‘２’ならば２倍のテンポ値と同じ速度で自動演演奏を行い、音源１８０は通常の２倍の速度で波形データの読み出し位置を移動し、タイムレートが０．５ならば０．５倍のテンポ値と同じ速度で自動演奏を行い、音源１８０は通常の０．５倍の速度で波形データの読み出し位置を移動する。このようなタイムレートは、ＭＩＤＩ情報に含まれるコントロールチェンジ情報の１つとして図１に示すＭＩＤＩインターフェース１５０から入力される。図１に示す楽音生成装置１では、タイムレートが一旦入力された後、再び入力されると、ＲＡＭに記憶されているタイムレートが、新たに入力されたタイムレートに変更される。
【００２０】
ここで、図１に示すＣＰＵ１１０は、ＨＤＤ１４０からＲＡＭ１２０に転送された自動演奏データに含まれる、ノートオンおよびノートオフを音源１８０に出力する。なお、ノートオンおよびノートオフはいずれも、上述のごとくノートナンバを有する。また、図１に示すＣＰＵ１１０は、タイムレートについても音源１８０に出力する。図２に示す各ノートオン、各ノートオフ、および各タイムレートには、音源１８０への出力時刻が付されている。この出力時刻は、１拍を所定数で分割した時間であるティックを単位に規定したものであって、ここでは、１拍を分割する所定数を４８０として説明する。自動演奏を行う楽曲のテンポ値は、この図２には図示されていないが自動演奏データに含まれている。
【００２１】
図１に示す音源１８０は、特開平１０−２６０６８５号公報記載の技術を用いて、タイムレートに基づく時間軸圧縮伸長を行い、ノートナンバによって規定された音高に基づく楽音を生成する。
【００２２】
また、図１に示す楽音生成装置１は、自動演奏されている楽曲の所定区間を指定してその所定区間に、図１に示すＭＩＤＩインターフェース１５０から入力された、演奏データおよびタイムレートを記憶する、いわゆるパンチイン・アウト処理機能を有する。このパンチイン・アウト処理機能では、ＭＩＤＩインターフェース１５０から入力された演奏データおよびタイムレートが図１に示すＲＡＭ１２０に一旦記憶され、最終的にはＨＤＤ１４０に保存されることで自動演奏データに上書きされる。また、この楽音生成装置１は、自動演奏されている楽曲の所定区間を指定してその所定区間を繰り返し演奏させる、いわゆるループ再生機能も有する。自動演奏されている楽曲の、パンチイン・アウトの所定区間やループ再生の所定区間はいずれも、その楽曲の自動演奏データの出力時刻を示す時間軸上で、所定区間の開始時刻と終了時刻を指定することによって設定される。これらの開始時刻や終了時刻が指定されると、これらの時刻はＲＡＭ１２０に一旦記憶され、最終的にはＨＤＤ１４０に保存される。図２の下方には、ＲＡＭ１２０に記憶された、ループ再生の開始（ループスタート）の時刻、ループ再生の終了（ループエンド）の時刻、パンチイン・アウト処理における記憶開始（パンチイン）の時刻、およびその記憶終了（パンチアウト）の時刻が示されている。以下、これらの時刻を総称して区間指定時刻と称することにする。
【００２３】
次に、図３を用いて、図１に示す表示器１６０に表示される楽曲編集画面について説明する。
【００２４】
図３は、図１に示す楽音生成装置に備えられた表示器に表示された楽曲編集画面を示す図である。
【００２５】
図３に示す楽曲編集画面１６００には、ルーラ１６１０と、ノートエリア１６２０と、タイムレートエリア１６３０が上下に並べて示されている。この楽曲編集画面１６００は、図２に示す各種情報に基づく画面である。
【００２６】
ルーラ１６１０はティックを単位にして時刻を表示するエリアであり、ノートエリア１６２０における時刻およびタイムレートエリア１６３０における時刻を表示するものである。また、ルーラ１６１０には、小節数／拍数が示されている。さらに、図３に示すルーラ１６１０には、パンチインマーカ１６１１、パンチアウトマーカ１６１２、ループスタートマーカ１６１３、およびループエンドマーカ１６１４が示されている。パンチインマーカ１６１１はパンチイン時刻を指し示すものであり、パンチアウトマーカ１６１２はパンチアウト時刻を指し示すものである。また、ループスタートマーカ１６１３はループスタート時刻を指し示すものであり、ループエンドマーカ１６１４はループエンド時刻を指し示すものである。これら４つのマーカはいずれも、上述のマウスのポインタ１７１をマーカに合わせ、ドラック・アンド・ドロップすることによって、ルーラ１６１０内の所望の位置に移動させることができ、これら４つのマーカによって指し示された時刻（区間指定時刻）は、ＲＡＭ１２０に一旦記憶される。
【００２７】
ノートエリア１６２０は、自動演奏データに基づく情報（楽音の音高と音長）を表示するエリアである。すなわち、このノートエリア１６２０では、１矩形１６２１が１ノートを表しており、矩形１６２１の横軸の長さがノートの音長に相当する。また、このエリアの縦軸はノートナンバを表し、この縦軸に対する矩形１６２１の表示位置がノートの音高に相当する。図３には、音源１８０で「ハレルヤ」と発音される各ノートが示されている。
【００２８】
タイムレートエリア１６３０は、タイムレートを表示するエリアである。このエリアの縦軸はタイムレートの値を表し、上端が２．０、下端が０．１、中央が１．０である。この図３に示す楽曲編集画面１６００では、タイムレートは、タイムレートを表す直線１６３１が示すように１．０に揃えられている。図１に示す楽音生成装置１では、タイムレートの変更は、ＭＩＤＩインターフェース１５０から入力されたタイムレートを用いて行われるが、これに限らず、例えば、特開２００１−１４７６９１号公報に開示されているような、楽曲編集画面上でタイムレートを変更する範囲をマウスで指定し、次にその範囲内のタイムレートを、所定の変化形状により、マウスの上下のドラッグ量に基づく量だけ変化させてもよく、あるいは、各時刻毎のタイムレートの値の軌跡をマウスにより描いて入力してもよい。
【００２９】
また、この楽曲編集画面１６００には、ノートエリア１６２０からタイムレートエリア１６３０に跨って自動演奏カーソル１６４０が示されている。この自動演奏カーソル１６４０は、自動演奏の進行を示すカーソルであって、現在発音されているノートの表示位置にこのカーソル１６４０が表示される。この図３に示す楽曲編集画面１６００によれば、「ハ」が発音されていることになる。自動演奏カーソル１６４０は、自動演奏の進行に合わせて、楽曲編集画面１６００の横方向に移動する。
【００３０】
このような楽曲編集画面１６００が表示器１６０に表示されることにより、ユーザは、自動演奏されている楽音を視覚的に認識することができる。
【００３１】
さらに、この楽曲編集画面１６００の左上には、記憶ボタン１６５０が設けられている。この記憶ボタン１６５０がマウスのクリック操作によって一回押下されると、記憶処理が開始される。この記憶処理では、ＭＩＤＩインターフェース１５０から入力された演奏データとタイムレートがＲＡＭ１２０に記憶される。図１に示す楽音生成装置１は、記憶ボタン１６５０が一回押下されると、自動演奏する楽曲の先頭から楽音生成を開始する。パンチインマーカ１６１１およびパンチアウトマーカ１６１２によってパンチイン・アウトの所定区間が指定された状態で記憶処理が開始されると、自動演奏カーソル１６４０が、ルーラ１６１０に表示されたパンチインマーカ１６１１に到達したタイミングで記憶が開始され、パンチアウトマーカ１６１２に到達したタイミングで記憶が停止する。したがって、ユーザは、ＭＩＤＩインターフェース１５０に鍵盤楽器を接続し、この楽音生成装置１に自動演奏させながら、自動演奏されている楽曲の、パンチインマーカ１６１１とパンチアウトマーカ１６１２によって指定した所望の区間に、その鍵盤楽器で演奏により生成した演奏データを記憶させることができる。記憶ボタン１６５０がマウスのクリック操作によって再度押下されると、記憶処理が終了する。
【００３２】
続いて、図４を用いて、本発明の一実施形態である自動演奏プログラムについて説明する。
【００３３】
図４は、図１に示すＨＤＤに記憶された自動演奏プログラムの概要を示す模式図である。
【００３４】
図１に示すＨＤＤ１４０に記憶された自動演奏プログラム１０は、図１に示すＣＰＵ１１０によって実行されるものであって、計時ステップ１１，演奏ステップ１２，入力ステップ１３，変更ステップ１４、および表示ステップ１５から構成されている。計時ステップ１１は、ティックを単位に時刻を計時するステップである。演奏ステップ１２は、計時ステップ１１によって計時した時刻と一致する出力時刻（図２参照）が付されたノートオンやノートオフやタイムレートを音源１８０に出力するステップである。また、この演奏ステップ１２は、計時ステップ１１によって計時した時刻が図２に示すループエンド時刻に一致すると、時刻をループスタート時刻にするステップであり、出力時刻に一致すると演奏内容を音源に出力するステップである。入力ステップ１３は、ＭＩＤＩインターフェース１５０から入力されたタイムレートを図１に示すＲＡＭ１２０に入力するステップであり、変更ステップ１４は、入力ステップ１３で入力されたタイムレートに基づき、図２に示す出力時刻および区間指定時刻を変更するステップである。表示ステップ１５は、図１に示す表示器１６０に、変更ステップ１４で変更した出力時刻および区間指定時刻に基づく表示を行うステップである。この表示は、図３に示す楽曲編集画面１６００上で行われる。
【００３５】
続いて、タイムレートの変更について説明する。
【００３６】
図１に示す表示器１６０に楽曲編集画面が表示されるとともに自動演奏が開始された後、ＭＩＤＩインターフェース１５０からタイムレートが入力されると、図４に示す入力ステップ１３が実行されることで、入力されたタイムレートが、ＲＡＭ１２０に、タイムレートの入力時刻を音源１８への出力時刻とするデータとして記憶される。図４に示す変更ステップ１４では、ＲＡＭ１２０に記憶されているデータ（ノートオン，ノートオフ，タイムレート）の出力時刻および区間指定時刻の変更が行われる。この出力時刻および区間指定時刻の変更では、タイムレートの入力時刻から、その入力時刻より後の出力時刻が付されたタイムレートのうち最初のタイムレート（以下、次のタイムレートと称する）に付された出力時刻までの間に属する出力時刻および区間指定時刻と、次のタイムレートに付された出力時刻より後の出力時刻および区間指定時刻とを分けて処理する。図２に示す、ＲＡＭ１２０に記憶された各種データを例にあげて説明すると、時刻が４８０ティックになった時点（１拍分の時間が経過した時点）で、タイムレート［０．２５］が入力されると、入力ステップ１３が実行されることで、４８０ティックの出力時刻が付されたタイムレート［１．０］が削除され、４８０ティックにタイムレート［０．２５］が記憶される。また、変更スッテプ１４が実行されることで、タイムレートの入力時刻である４８０ティックから、次のタイムレートに付された出力時刻の６００ティックまでの間に属する出力時刻および区間指定時刻双方の時刻が、入力されたタイムレートに基づいて変更される。以下、このような変更を第１の時刻変更と称することにする。また、６００ティックより後の、出力時刻（７２０，８４０，９６０ティック等）および区間指定時刻（１４４０，１３２０ティック）が、次のタイムレートに付された、第１の時刻変更前後の出力時刻に基づいて変更される。以下、このような変更を第２の時刻変更と称することにする。なお、この第２の時刻変更において基づく、次のタイムレートに付された、第１の時刻変更後の出力時刻は、入力されたタイムレートに基づいて変更されたものであることから、この第２の時刻変更も入力されたタイムレートに基づく変更である。図２に示す各種データの中には、４８０ティックより後の出力時刻が付された複数のタイムレート（６００ティック，７２０ティック，８４０ティック，９６０ティックの出力時刻が付された、いずれも値が１．０のタイムレート）があるが、この時点におけるタイムレートの変更では、それらのタイムレートのうち、タイムレートの入力時刻である４８０ティックの出力時刻が付されたタイムレートのみが削除される。そして、次のタイムレートに付された、第１の時刻変更による変更後の出力時刻が経過するまでの間に、新たなタイムレートが入力されなければ、次のタイムレートを、４８０ティックの時刻に入力されたタイムレートを有効にするため削除し、次のタイムレートの削除に伴なって、次のタイムレートをさらに次のタイムレート（タイムレート入力前に、７２０ティックの出力時刻が付されたタイムレート）に更新するとともに、次のタイムレートの更新に伴なって第１および第２の時刻変更が行われる。一方、新たなタイムレートが入力されると、入力された時点で、タイムレートの記憶を行い、それに伴い、第１および第２の時刻変更も行われる。
【００３７】
図５は、自動演奏開始から１５４０ティック経過後の、ＲＡＭに記憶された各種データの一例を示す図である。
【００３８】
この図５に示す各種データは、図２に示す各種データに対し、タイムレートの記憶および削除と、第１および第２の時刻変更とが行われたものである。すなわち、図２に示す各種データに基づく自動演奏中に、まず、４８０ティックの時点でタイムレート［０．２５］が入力される。すると、４８０ティックの出力時刻が付されたタイムレートを削除するとともに、４８０ティックの出力時刻が付された０．２５のタイムレートを記憶し、記憶した０．２５のタイムレートが図１に示す音源１８０に出力される。また、タイムレートの変更に伴い、第１の時刻変更によって、次のタイムレート　の出力時刻が、６００ティックから９６０ティックに変更される。さらに、第２の時刻変更も行われるがここではその詳しい説明は省略する。続いて、９６０ティックの時点でタイムレート［１．０］が入力されると、９６０ティックの出力時刻が付されたタイムレートを削除するとともに、９６０ティックの出力時刻が付された１．０のタイムレートを記憶し、記憶した１．０のタイムレートを音源１８０に出力し、第１の時刻変更および第２の時刻変更が行われる。そして、９６１ティックから１５４０ティックの間には、新たなタイムレートが入力されず、９６１ティックから１５４０ティックの間に属する出力時刻が付されたタイムレートは１．０に順次削除される。このため、図２には、７２０ティック，８４０ティック，および９６０ティックの出力時刻が付されたタイムレートが示されているが、図５には、これらに対応するタイムレートが示されていない。図５に示された、１０８０ティック，１４４０ティックの出力時刻、および１６８０ティック，１８００ティックの区間指定時刻は、入力したタイムレートに伴って変更された時刻である。
【００３９】
図６は、図５に示す各種情報に基づく楽曲編集画面を示す図である。
【００４０】
図６に示す楽曲編集画面１６００’と、図３に示す楽曲編集画面１６００とを見比べることで明らかなように、図６に示す楽曲編集画面１６００’では、タイムレートエリア１６３０に示されたタイムレートが、１／２から１／３の間（４８０ティックから９６０ティックの間）では、０．２５に低下している。また、図６に示す楽曲編集画面１６００’では、６１（Ｃ＃４）である「レ」のノートオフの時刻が遅い時刻に変更され、この音の音長が延びている。さらに、６２（Ｄ４）である「ル」および６３（Ｄ＃４）である「ヤ」はともに、ノートオンの時刻とノートオフの時刻が遅い時刻に変更されている。またさらに、図６に点線で示したパンチアウトマーカ１６１２やループエンドマーカ１６１４は、図３に示したパンチアウトマーカ１６１２やループエンドマーカ１６１４を参考のために示したものであり、図６に実線で示したこれらのマーカ１６１２，１６１４が、図５に示すループエンド時刻とパンチアウト時刻に基づくもである。これらのマーカ１６１２，１６１４はいずれも、遅い時刻に移動させられている。
【００４１】
次に、この楽音生成装置１に自動演奏させながら、自動演奏されている楽曲の、パンチインマーカ１６１１とパンチアウトマーカ１６１２によって指定した所望の区間に、ユーザがその場で演奏したフレーズに基づく演奏データを記憶させる場合について説明する。まず、ユーザは、自動演奏される楽曲の所望の区間を、パンチインマーカ１６１１とパンチアウトマーカ１６１２によって指定するとともに、ＭＩＤＩインターフェース１５０に演奏する楽器を接続する。次に、ユーザは、図３に示す記憶ボタン１６５０を、マウスのクリック操作で１回押下する。すると、自動演奏される楽曲の先頭から自動演奏が開始され、図３に示す楽音編集画面１６００上では、自動演奏の進行に合わせて自動演奏カーソル１６４０が移動する。ユーザは、自動演奏カーソル１６４０が、パンチインマーカ１６１１に到達したタイミングで、ＭＩＤＩインターフェース１５０に接続された楽器を演奏する。ここで、ユーザが音楽にノッてくると、自動演奏カーソル１６４０がパンチインマーカ１６１１に到達する前に演奏を開始してしまい、所望の区間にはフレーズの途中からの演奏データしか記憶されない。そこで、図１に示す楽音生成装置１は、自動演奏カーソル１６４０が、パンチインマーカ１６１１に到達するよりもワンテンポ早く記憶を開始するようにしている。
【００４２】
図７（ａ）に示す例では、パンチイン時刻よりも６０ティック（１／８拍分の時間）前の時刻からパンチイン時刻までの間、すなわちパンチイン時刻直前の６０ティックの時間幅内に、ＭＩＤＩインターフェース１５０から演奏データが入力されると、その時間幅内に入力された演奏データはパンチイン時刻に入力されたものとみなしてＲＡＭ１２０に記憶する。したがって、図３に示す自動演奏カーソル１６４０がパンチインマーカ１６１１に到達する６０ティック手前から演奏を開始しても、その演奏に基づく演奏データは最初から記憶される。なお、パンチイン時刻直前の時間幅は６０ティックに限られるものではない。
【００４３】
図７（ｂ）に示す例では、自動演奏が、ループスタートマーカ１６１３とループエンドマーカ１６１４の間でループ再生される。また、この例では、パンチイン時刻は、ループスタート時刻と同時刻に設定されており、パンチアウト時刻は、ループエンド時刻の手前に設定されている。この例では、ループエンド時刻よりも６０ティック前の時刻からループエンド時刻までの間、すなわちループエンド時刻直前の６０ティックの時間幅内に、ＭＩＤＩインターフェース１５０から演奏データが入力されると、その時間幅内に入力された演奏データはパンチイン時刻に入力されたものとみなしてＲＡＭ１２０に記憶する。したがって、ループ区間の２回目以降の再生時に記憶が行われる場合、自動演奏カーソル１６４０が、ループエンドマーカ１６１４に到達する６０ティック手前、すなわちパンチインマーカ１６１１に到達する６０ティック手前から演奏を開始しても、その演奏に基づく演奏データは最初から記憶される。なお、ループエンド時刻直前の時間幅は６０ティックに限られるものではない。
【００４４】
続いて、図８を用いて、図１に示す楽音生成装置１におけるメイン処理について説明する。
【００４５】
図８は、図１に示す楽音生成装置に備えられたＣＰＵで実行されるメイン処理のフローチャートである。
【００４６】
この図８に示すメイン処理は、図１に示す楽音生成装置１の電源投入時から電源切断時まで繰り返し実行される。
【００４７】
ＣＰＵ１１０は、図４に示す計時ステップ１１において時刻を計時しており、ここでは、計時された時刻を現在時刻ｔとして取り扱う。このメイン処理では、まず初期化が行われる（ステップＳ１００）。図１に示すＲＡＭ１２０は、タイムレート入力フラグと記憶中フラグを有する。タイムレート入力フラグは、演奏データを記憶中にＭＩＤＩインターフェース１５０からタイムレートが入力されたか否かを示すフラグであって、タイムレートが記憶中に入力されるまではリセット（０にセットする）された状態にあり、タイムレートが記憶中に入力されるとセット（１にセットする）されるものである。記憶中フラグは、記憶中であるか否かを示すフラグであって、記憶処理中に、現在時刻ｔが、パンチイン時刻に到達するとセットされ、パンチアウト時刻に到達するとリセットされるものである。ステップＳ１００における初期化では、これらのフラグがリセットされる。続いて、図３に示す記憶ボタン１６５０がマウスによってクリック操作されたか否かを判定し（ステップＳ１０１）、無操作の場合には、その他の処理（ステップＳ１０２）を実行した後、ステップＳ１０１に戻る。ステップＳ１０２におけるその他の処理では、ループスタート時刻Ｌ＿ＳＴＡＲＴ，ループエンド時刻Ｌ＿ＥＮＤ，パンチイン時刻Ｐ＿ＩＮ，およびパンチアウト時刻Ｐ＿ＯＵＴの設定処理等を行う。
【００４８】
一方、記憶ボタン１６５０が操作された場合には、記憶処理中か否かを判定し（ステップＳ１０３）、記憶処理中であれば、記憶処理の終了を指示し（ステップＳ１０４）、ステップＳ１０２に戻り、記憶処理中でなければ、ステップＳ１０５に進む。図１に示すＲＡＭ１２０には、このＲＡＭ１２０に記憶されているノートオン、ノートオフ、およびタイムレートの中から、音源１８０に次に出力するものを指し示す出力ポインタが用意されている。なお、以下の説明では、ノートオン、ノートオフ、およびタイムレートを総称して単にデータと称することにする。ステップＳ１０５では、現在時刻ｔを０ティックに戻し、出力ポインタを自動演奏データの先頭のデータにセットする。また、このステップＳ１０５では、タイムレート入力フラグと記憶中フラグの双方のフラグをリセットし、記憶処理の開始を指示する。ステップＳ１０５における処理が完了すると、ステップＳ１０２に戻る。
【００４９】
次に、図９を用いて、図１に示す楽音生成装置１における記憶処理について説明する。
【００５０】
図９は、図１に示す楽音生成装置に備えられたＣＰＵで実行される記憶処理のフローチャートである。
【００５１】
この図９に示す記憶処理は、タイマインタラプトによって１ティックごとに起動する処理であり、図８に示すステップＳ１０５における記憶処理の開始指示を受けて、このタイマインタラプトが許可され、図８に示すステップＳ１０４における記憶処理の終了指示を受けて、このタイマインタラプトが禁止される。
【００５２】
この記憶処理では、まず、現在時刻ｔがパンチイン時刻Ｐ＿ＩＮであるか否かを判定し（ステップＳ２０１）、パンチイン時刻Ｐ＿ＩＮであれば、記憶中フラグをセットし（ステップＳ２０２）、ステップＳ２０３に進み、パンチイン時刻Ｐ＿ＩＮでなければ、何も処理せずにステップＳ２０３に進む。
【００５３】
ステップＳ２０３では、今度は、現在時刻ｔがパンチアウト時刻Ｐ＿ＯＵＴであるか否かを判定し、パンチアウト時刻Ｐ＿ＯＵＴであれば、記憶中フラグとタイムレート入力フラグとの双方のフラグをリセットし（ステップＳ２０４）、ステップＳ２０５に進み、パンチアウト時刻Ｐ＿ＯＵＴでなければ、何も処理せずにステップＳ２０５に進む。
【００５４】
ステップＳ２０５では、現在時刻ｔがループエンド時刻Ｌ＿ＥＮＤであるか否かを判定し、ループエンド時刻Ｌ＿ＥＮＤであれば、現在時刻ｔを、ループスタート時刻Ｌ＿ＳＴＡＲＴに更新するとともに、出力ポインタを、ループスタート時刻Ｌ＿ＳＴＡＲＴ以降の最も早い出力時刻が付されたデータにセットして（ステップＳ２０６）、ステップＳ２０７に進む。一方、ループエンド時刻Ｌ＿ＥＮＤでなければそのままステップＳ２０７に進む。
【００５５】
ステップＳ２０７では、現在時刻ｔが、出力ポインタが指し示すデータに付された出力時刻に一致するか否かを判定し、一致すれば、出力ポインタが指し示すデータがタイムレートのデータであって、かつタイムレート入力フラグがセットされているという条件を満足するか否かを判定する（ステップＳ２０８）。ここではまず、この条件を満足しない否定的な場合、すなわち、出力ポインタが指し示すデータがノートオンあるいはノートオフである場合、もしくは、出力ポインタが指し示すデータがタイムレートではあるがタイムレート入力フラグがリセットされている（記憶中にタイムレート入力がない）場合について説明し、この条件を満足する肯定的な場合については最後に説明する。ステップＳ２０８における判定で否定的な判定がなされると、出力ポインタが指し示すデータを図１に示す音源１８０に出力する（ステップＳ２０９）。ここで出力されるデータは、ノートオン、ノートオフ、あるいはタイムレートのいずれかであり、このステップＳ２０９は図４に示す演奏ステップ１２に相当する。続いて、出力ポインタを次のデータにセットして（ステップＳ２１０）、ステップＳ２０７に戻る。
【００５６】
一方、ステップＳ２０７において、現在時刻ｔと出力ポインタが指し示すデータに付された出力時刻とが不一致である旨の判定がなされると、ＭＩＤＩインターフェース１５０からデータが入力されたか否かを判定する（ステップＳ２１１）。ここで、データが未入力ならば、現在時刻ｔを１ティック進めるとともに図３に示す自動演奏カーソル１６４０を移動させて（ステップＳ２１２）終了する。このステップＳ２１２における現在時刻ｔの歩進が、図４に示す計時ステップ１１に相当する。反対に、データが入力されていれば、ステップＳ２１１からステップＳ２１３に進み、ステップＳ２１３では、入力されたデータがタイムレートか否かを判定する。このステップにおいて、タイムレートでない旨の判定がなされた場合には、入力されたデータは、ノートオンか、あるいはノートオフである。このような否定的な判定がなされた場合には、パンチイン時刻Ｐ＿ＩＮから現在時刻ｔを引いた値が０ティックより大きくかつ６０ティック以下であるか否かを判定する（ステップＳ２１４）。このステップＳ２１４は、図７（ａ）を用いて説明したワンテンポ早く記憶を開始するためのステップである。ステップＳ２１４において肯定的な判定がなされると、ＲＡＭ１２０に、入力されたデータ（ノートオン又はノートオフ）を、パンチイン時刻Ｐ＿ＩＮに入力されたデータとして記憶し、さらに、出力ポインタがセットされているデータに付された出力時刻が、パンチイン時刻Ｐ＿ＩＮよりも後の時刻である場合、出力ポインタを、ここで記憶したデータにセットして（ステップＳ２１５）、ステップＳ２１６に進む。一方、ステップＳ２１４において否定的な判定がなされると、今度は、ループエンド時刻Ｌ＿ＥＮＤから現在時刻ｔを引いた値が０より大きくかつ６０ティック以下であって、さらにパンチイン時刻とループスタート時刻が等しいか否かを判定し（ステップＳ２１７）、肯定的な場合は、入力されたデータ（ノートオン又はノートオフ）を、パンイチン時刻Ｐ＿ＩＮに入力されたデータとして記憶し（ステップＳ２１８）、ステップＳ２１６に進む。ステップＳ２１７は、図７（ｂ）を用いて説明したワンテンポ早く記憶を開始するためのステップである。また、ステップＳ２１８では、ステップＳ２１５とは異なり、出力ポインタの再セットの処理が実行されないが、このステップＳ２１８で記憶したデータへの出力ポインタのセットは、パンチイン時刻がループスタート時刻に等しいため、この図９に示す記憶処理が繰り返し起動する間に、上述のステップＳ２０６において実行されることになる。一方、ステップＳ２１７において否定的な判定がなされると、入力されたデータ（ノートオン又はノートオフ）を音源１８０に出力し（ステップＳ２１９）、記憶中フラグがセットされているか否かを判定する（ステップＳ２２０）。したがって、ステップＳ２１９における音源１８０への出力が図４に示す演奏ステップ１２に相当する。また、ステップＳ２１３における判定で、入力されたデータがタイムレートである旨の判定がなされた場合には、何の処理も行わずにこのステップＳ２２０に進む。
【００５７】
ステップＳ２２０において、記憶中フラグがセットされている旨の判定がなされると、入力されたデータを、ＲＡＭ１２０に、現在時刻ｔを出力時刻とするデータとして記憶し（ステップＳ２２１）、ＲＡＭ１２０に記憶されているこの時点におけるデータに基づいて、図３に示す楽曲編集画面１６００の表示を変更する（ステップＳ２１６）。ステップＳ２２１においてＲＡＭ１２０に記憶される入力されたデータは、ノートオン、ノートオフ、あるいはタイムレートのいずれかであり、タイムレートを記憶する処理が、図４に示す入力ステップ１３に相当する。ここで、タイムレートを記憶する時刻にタイムレートが記憶されている場合は、記憶されているタイムレートを削除して、入力したタイムレートを記憶する。なお、記憶されてるタイムレートを削除せずに、入力したタイムレートにより上書きしてもよい。一方、記憶中フラグがリセットされていれば、ステップＳ２２０からステップＳ２１２に直接進む。ステップＳ２１６に続いてステップＳ２２２では、再度、入力されたデータがタイムレートか否かを判定し、タイムレートでなければ（ノートオン又はノートオフであれば）ステップＳ２１２に進み、タイムレートであればステップＳ２２３の処理を実行した後にステップＳ２１２に進む。ステップＳ２２３では、入力されたデータ、すなわち入力されたタイムレートＴＲを音源１８０に出力し、タイムレート入力フラグをセットする。したがって、このステップＳ２２３で行われる、タイムレートの音源１８０への出力が、図４に示す演奏ステップ１２に相当する。また、このステップＳ２２３では、このステップにおいて出力したタイムレートＴＲに基づき、ＲＡＭ１２０に記憶されている、現在時刻ｔより後のデータおよび区間指定情報双方の時刻の変更を行う。この出力時刻および区間指定時刻の変更は、図４に示す変更ステップ１４に相当し、この時刻変更では、上述した第１の時刻変更と第２の時刻変更が行われる。すなわち、ここでの第１の時刻変更では、現在時刻ｔから、次のタイムレート（現在時刻ｔより後の出力時刻が付されたタイムレートのうち最初のタイムレート）に付された出力時刻までの間に属するデータおよび区間指定情報双方の時刻を対象にし、このステップにおいて出力したタイムレートＴＲを用いた以下に示す式（１）によって時刻Ｔ１’を算出して、ＲＡＭ１２０に記憶されている時刻（変更前の時刻Ｔ１）を、その算出した時刻Ｔ１’に変更する。
Ｔ１’＝ｔ＋（Ｔ１―ｔ）／（ＴＲ／ＴＲ’）　　　（１）
ただし、ＴＲ’は、ステップＳ２０９において出力されたタイムレートのうち、最も直近に出力されたタイムレート、あるいは以前に実行されたステップＳ２２３において出力されたタイムレートを表す。
また、第２の時刻変更では、次のタイムレートに付された出力時刻Ｔｔｒより後のデータおよび区間指定情報双方の時刻を対象にし、次のタイムレートの、第１の時刻変更前後の出力時刻（変更前時刻Ｔｔｒ，変更後時刻Ｔｔｒ’）を用いた式（２）によって時刻Ｔ２’を算出して、ＲＡＭ１２０に記憶されている時刻（変更前の時刻Ｔ２）を、その算出した時刻Ｔ２’に変更する。
Ｔ２’＝Ｔ２＋（Ｔｔｒ’―Ｔｔｒ）　　　（２）
さらに、このステップＳ２２３では、変更後の各時刻に基づいて図３に示す楽曲編集画面１６００の表示を変更する。この表示変更は、図４に示す表示ステップ１５に相当する。
【００５８】
最後に、ステップＳ２０８において、出力ポインタが指し示すデータがタイムレートのデータであって、かつタイムレート入力フラグがセットされているという条件を満足する肯定的な判定がなされた場合について説明する。この場合は、ステップＳ２２３が実行されてから、そのステップＳ２２３を実行した時点における次のタイムレートの、第１の時刻変更後の時刻Ｔｔｒ’が経過するまでの間に、新たなタイムレートの入力がない場合に相当する。このような場合には、ステップＳ２２４を実行した後、ステップＳ２１０に進む。ステップＳ２２４では、先に実行されたステップＳ２２３の処理時点における次のタイムレートをＲＡＭ１２０上から削除する。なお、タイムレートを削除せずに、先に実行されたステップＳ２２３で出力したタイムレートＴＲを上書き処理してもよい。また、このステップＳ２２４では、先に実行されたステップＳ２２３で出力したタイムレートＴＲに基づき、ＲＡＭ１２０に記憶されている、現在時刻ｔより後のデータおよび区間指定情報双方の時刻の変更を行う。この出力時刻および区間指定時刻の変更も、図４に示す変更ステップ１４に相当し、この時刻変更でも、上述した第１の時刻変更と第２の時刻変更が行われる。すなわち、第１の時刻変更では、このステップＳ２２４が実行される時点の現在時刻ｔから、このステップが実行される時点における次のタイムレートに付された出力時刻までの間に属するデータおよび区間指定情報を対象にし、先に実行したステップＳ２２３において出力したタイムレートＴＲを用いた以下に示す式（３）によって時刻Ｔ１’を算出して、ＲＡＭ１２０に記憶されている時刻（変更前の時刻Ｔ１）を、その算出した時刻Ｔ１’に変更する。
Ｔ１’＝ｔ＋（Ｔ１―ｔ）／（ＴＲ／ＴＲ’’）　　　（３）
ただし、ＴＲ’’は、先に実行されたステップＳ２２３の処理時点における次のタイムレート（このステップＳ２２４において削除したタイムレート）を表す。また、第２の時刻変更では、このステップが実行される時点における次のタイムレートに付された出力時刻Ｔｔｒより後のデータおよび区間指定情報双方の時刻を対象にし、このステップが実行される時点における次のタイムレートの、式（３）による第１の時刻変更前後の出力時刻（変更前時刻Ｔｔｒ，変更後時刻Ｔｔｒ’）を用いた式（４）によって時刻Ｔ２’を算出して、ＲＡＭ１２０に記憶されている時刻（変更前の時刻Ｔ２）を、その算出した時刻Ｔ２’に変更する。
Ｔ２’＝Ｔ２＋（Ｔｔｒ’―Ｔｔｒ）　　　（４）
さらに、このステップＳ２２４でも、変更後の各時刻に基づいて図３に示す楽曲編集画面１６００の表示を変更する。この表示変更も、図４に示す表示ステップ１５に相当する。
【００５９】
以上説明したように、本実施形態の自動演奏プログラムによれば、入力されたタイムレートに基づいて、第１の時刻変更および第２の時刻変更が実行されるため、区間指定情報の時刻のユーザによる再設定が不要となる。
【００６０】
なお、入力されたデータがタイムレートであり、ステップＳ２２１において、そのタイムレートを、現在時刻ｔを出力時刻とするデータとして記憶する場合であっても、現在時刻ｔを出力時刻とするデータとしての記憶は行わず、単に、タイムレートを一時的にＲＡＭ１２０へ記憶させておき、ステップＳ２２３では、上述したいくつかの処理のうち、タイムレートフラグをセットする処理のみを実行し、この図９に示す記憶処理が繰り返し起動する間に実行されるステップＳ２２４において、削除するタイムレートにＲＡＭ１２０に記憶したタイムレートを上書きし、この上書きの時点でそのタイムレートを音源１８０に出力してもよい。こうすることで、ＲＡＭ１２０のデータ容量を抑えることができる。
【００６１】
【発明の効果】
以上、説明したように、本発明の自動演奏プログラムによれば、タイムレートを変更した際に生じる、所定の区間の開始時刻と終了時刻の再設定の煩わしさを解消することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態である自動演奏プログラムがインストールされた楽音生成装置のハードウェア構成図である。
【図２】図１に示すＲＡＭに記憶された各種データを示すものである。
【図３】図１に示す楽音生成装置に備えられた表示器に表示された楽曲編集画面を示す図である。
【図４】図１に示すＨＤＤに記憶された自動演奏プログラムの概要を示す模式図である。
【図５】自動演奏開始から１５４０ティック経過後の、ＲＡＭに記憶された各種データの一例を示す図である。
【図６】図５に示す各種情報に基づく楽曲編集画面を示す図である。
【図７】ユーザが演奏したフレーズを記憶する場合の一例を示す図である。
【図８】図１に示す楽音生成装置に備えられたＣＰＵで実行されるメイン処理のフローチャートである。
【図９】図１に示す楽音生成装置に備えられたＣＰＵで実行される記憶処理のフローチャートである。
【符号の説明】
１　　楽音生成装置
１１０　　ＣＰＵ
１２０　　ＲＡＭ
１３０　　ＲＯＭ
１４０　　ＨＤＤ
１５０　　ＭＩＤＩインターフェース
１６０　　表示器
１７０　　設定操作子
１８０　　音源
１９０　　バス
１０　　自動演奏プログラム
１１　　計時ステップ
１２　　演奏ステップ
１３　　入力ステップ
１４　　変更ステップ
１５　　表示ステップ
２０　　自動演奏データ
【図１】
2004117817.tif 000003
【図２】
2004117817.tif 000004
【図３】
2004117817.tif 000005
【図４】
2004117817.tif 000006
【図５】
2004117817.tif 000007
【図６】
2004117817.tif 000008
【図７】
2004117817.tif 000009
【図８】
2004117817.tif 000010
【図９】
2004117817.tif 000011