説明

演奏データ生成装置およびプログラム

【課題】多重奏効果をもたらす演奏データを自動的に生成する演奏データ生成装置を実現する。
【解決手段】CPU10は、RAM12の演奏データエリアにおいて、トラック0に格納された基本演奏データを、他のトラック1〜MAX_TRKにコピーした後、これらトラック1〜MAX_TRKの全てのデータtimeに演奏傾向とばらつき幅とを加え、基本演奏データに対してそれぞれイベントタイミングが異なるトラック1〜MAX_TRKの演奏データを生成する。したがって、従来のように複数回の演奏を行ってリアルタイム入力したり、ステップ入力された1曲分の演奏データを複数トラック分コピーした後、それら各トラック毎に演奏データをマニュアル編集したりする煩雑な操作が不要となり、多重奏効果をもたらす演奏データを自動的に生成することが可能になる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多重奏効果をもたらす演奏データを自動的に生成する演奏データ生成装置およびプログラムに関する。
【背景技術】
【0002】
周知のように、シーケンサなどの自動演奏装置では、リアルタイム入力方式やステップ入力方式により入力された演奏データをメモリに記憶しておき、このメモリ記憶された演奏データを曲テンポに同期して順次再生して自動演奏する。この種の技術として、例えば特許文献1には、複数パートから成る楽曲データ(演奏データ)を再生可能な楽曲再生手段(自動演奏装置)を備える携帯機器において、バッテリの電圧レベル低減を検出した場合に、各パートの楽曲データを本来のパートに加えて空きパートに割り当てたり、或いは各パートの楽曲データをコピー処理してパート数を倍加させたりして楽曲再生手段が各パートを複数ずつ再生出来るようにし、これによりバッテリの電圧レベルが低減した時の各パートの音量レベル低下を補償して自動演奏音の音質低下を回避する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−296862号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、オーケストラのバイオンリン群など、複数の楽器で同じ旋律を演奏する場合には、各楽器毎に微妙に発音タイミング、音程、音色および音量が異なり、これによりいわゆる多重奏効果を醸し出すことが知られている。こうした多重奏効果を自動演奏装置で再現するには、例えばリアルタイム入力方式を用いるならば、同じ楽譜に従った演奏を複数回行い、各回毎の演奏でリアルタイム入力される演奏データをそれぞれ異なるトラックに記録し、それら各トラックの演奏データを並列的に再生することになる。
【0005】
また、ステップ入力方式を用いる場合には、先ず1音ずつ入力される演奏データをトラックに1曲分入力し終えた後、上記特許文献1に開示の技術のように、複数のトラックにそれぞれコピーし、コピーされた各トラック毎に、曲を構成する各音(演奏データ)について発音タイミング、音程、音色および音量が他のトラックの音と微妙に異なるようにマニュアル編集し、編集し終えた各トラックの演奏データを並列的に再生することになる。
【0006】
このように、多重奏効果をもたらす演奏データを生成するには、複数回の演奏を行ってリアルタイム入力したり、ステップ入力された1曲分の演奏データを複数トラック分コピーした後、それら各トラック毎に演奏データをマニュアル編集したりしなければならず、極めて煩雑な操作が要求されるという問題がある。
【0007】
本発明は、このような事情に鑑みてなされたもので、多重奏効果をもたらす演奏データを自動的に生成することができる演奏データ生成装置およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するため、請求項1に記載の発明では、複数の演奏トラックを有し、それら演奏トラックの一つに、少なくとも演奏曲の各音を表す基本演奏データを記憶する記憶手段と、前記記憶手段の所定の演奏トラックに記憶された基本演奏データを、他の演奏トラックにそれぞれコピーして登録する登録手段と、前記登録手段によりコピー登録された基本演奏データが表す演奏曲の各音の属性を演奏トラック毎に変化させて当該基本演奏データと比較して属性の少なくとも一部が異なる演奏データに変換する演奏データ変換手段とを具備することを特徴とする。
【0009】
上記請求項1に従属する請求項2に記載の発明では、前記演奏データ変換手段は、基本演奏データが表す演奏曲の各音の発音タイミング、音高、音色および音量の何れか若しくは全てを演奏トラック毎に変化させることを特徴とする。
【0010】
上記請求項2に従属する請求項3に記載の発明では、前記演奏データ変換手段は、変化の傾向および変化のばらつき幅を演奏トラック毎に異ならせることを特徴とする。
【0011】
請求項4に記載の発明では、コンピュータに、複数の演奏トラックの一つに少なくとも演奏曲の各音を表す基本演奏データを記憶する記憶ステップと、前記記憶ステップにより所定の演奏トラックに記憶された基本演奏データを、他の演奏トラックにそれぞれコピーして登録する登録ステップと、前記登録ステップによりコピー登録された基本演奏データが表す演奏曲の各音の属性を演奏トラック毎に変化させて当該基本演奏データと比較して属性の少なくとも一部が異なる演奏データに変換する演奏データ変換ステップとを実行させるを特徴とする。
【発明の効果】
【0012】
本発明では、多重奏効果をもたらす演奏データを効率良く生成することができる。
【図面の簡単な説明】
【0013】
【図1】実施の一形態による自動演奏装置100の構成を示すブロック図である。
【図2】RAM12に記憶される演奏データの構造を示すメモリマップである。
【図3】メインルーチンの動作を示すフローチャートである。
【図4】データ生成処理の動作を示すフローチャートである。
【図5】再生処理の動作を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施形態について説明する。
A.構成
図1は、本発明の実施の一形態による演奏データ生成装置を備えた自動演奏装置100の全体構成を示すブロック図である。この図において、CPU10は、操作部13が発生するスイッチイベントに応じて装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。ROM11には、CPU10にロードされる各種プログラムのデータが記憶される。ここで言う各種プログラムとは、後述するメインルーチン、データ生成処理および再生処理を含む。
【0015】
RAM12は、ワークエリアおよび演奏データエリアを備える。RAM12のワークエリアには、CPU10の処理に用いられる各種レジスタ・フラグデータが一時記憶される。RAM12の演奏データエリアには、図2に図示するデータ構造の演奏データが記憶される。図2に図示するように、演奏データは、カウンタmastertime、トラック・ポインタおよびトラック0演奏データ〜トラックMAX_TRK演奏データから構成される。
【0016】
カウンタmastertimeは、CPU10が発生するテンポクロックを累算して曲進行時間を計時する。トラック・ポインタは、各トラック0〜MAX_TRKにおいて、それぞれ現在処理中の演奏データを指定するトラック・ポインタ0〜トラック・ポインタMAX_TRKから構成される。トラック0演奏データ〜トラックMAX_TRK演奏データは、イベントタイミングを表わすデータtimeと、そのイベント内容(ノートオン/ノートオフなど)を表わすデータeventとを一組とする演奏データを、曲進行に対応した時系列のアドレス順に複数組(time0,event0)〜(timeM,eventM)記憶したものである。
【0017】
操作部13は、例えば動作モードを選択するモード選択スイッチ(不図示)などの各種操作スイッチを備え、ユーザのスイッチ操作に応じた種類のスイッチイベントを発生する。このスイッチイベントはCPU10に取り込まれる。表示部14は、CPU10から供給される表示制御信号に応じて、装置の動作状態や設定状態などを画面表示する。MIDIインタフェース15は、CPU10の制御の下に、MIDIデータ形式の演奏データを外部の電子楽器等と授受する。音源16は、波形メモリ読み出し方式で構成され、CPU10から供給される演奏データに応じた楽音信号を発生する。サウンドシステム17は、音源16から出力される楽音信号にノイズ除去するフィルタリングを施した後、出力増幅してスピーカから放音する。
【0018】
B.動作
次に、図3〜図5を参照して上記構成による自動演奏装置100の動作を説明する。以下では、CPU10が実行するメインルーチン、データ生成処理および再生処理の各動作について述べる。
【0019】
(1)メインルーチンの動作
装置電源が投入されると、CPU10は図3に図示するメインルーチンを実行してステップSA1に進み、RAM12のワークエリアに設けられる各種レジスタやフラグ類をリセットしたり、音源16に対して各種レジスタ・フラグを初期化するよう指示するイニシャライズを実行する。こうして初期化が完了すると、CPU10は次のステップSA2に進み、装置の動作状態や設定状態などを表示部14に画面表示する表示処理を実行する。
【0020】
続いて、ステップSA3では、例えばモード選択スイッチが操作された場合にはスイッチ操作で選択された動作モードの実行を指示するスイッチ処理を実行する。次いで、ステップSA4では、上記ステップSA3のスイッチ処理において「再生モード」の実行が指示されたか否かを判断する。「再生モード」の実行が指示された場合には、判断結果が「YES」になり、ステップSA5を介して再生処理(後述する)を実行した後、上述のステップSA2に処理を戻す。
【0021】
一方、「再生モード」の実行が指示されなければ、上記ステップSA4の判断結果は「NO」になり、ステップSA6に進み、「データ生成モード」の実行が指示されたか否かを判断する。「データ生成モード」の実行が指示されると、判断結果は「YES」となり、ステップSA7を介してデータ生成処理(後述する)を実行した後、上述のステップSA2に処理を戻す。
【0022】
これに対し、「再生モード」および「データ生成モード」以外の動作モードの実行が指示された場合には、上記ステップSA6の判断結果が「NO」になり、ステップSA8に進み、その他の処理を実行した後、上述のステップSA2に戻る。なお、ステップSA8(その他の処理)では、例えばRAM12の演奏データエリアのトラック0に演奏データが格納されていない場合、すなわち多重奏効果をもたらす演奏データを生成する際の基となる基本演奏データが無い場合に、MIDIインタフェース15を介して外部の電子楽器(不図示)からMIDIデータ形式の演奏データを取り込み、これを基本演奏データとしてRAM12の演奏データエリアのトラック0にストアする処理などを実行する。
【0023】
(2)データ生成処理の動作
次に、図4を参照してデータ生成処理の動作を説明する。上述したメインルーチンのステップSA7(図3参照)を介して本処理が実行されると、CPU10は図4に図示するステップSB1に進み、RAM12の演奏データエリアのトラック0に演奏データが格納されているか否か、つまり多重奏効果をもたらす演奏データを生成する際の基となる基本演奏データの有無を判断する。基本演奏データがトラック0に格納されていなければ、判断結果は「NO」となり、本処理を終える。
【0024】
なお、基本演奏データがトラック0に格納されていない場合には、前述したメインルーチンのステップSA8(その他の処理)において、MIDIインタフェース15を介して外部の電子楽器(不図示)からMIDIデータ形式の演奏データを取り込み、これを基本演奏データとしてRAM12の演奏データエリアのトラック0に格納する。
【0025】
一方、基本演奏データがトラック0に格納済みであると、上記ステップSB1の判断結果は「YES」になり、ステップSB2に進む。ステップSB2では、各トラック0〜MAX_TRKの先頭をそれぞれ指し示すようにトラック・ポインタ0〜トラック・ポインタMAX_TRKをセットし、続くステップSB3では、トラック0演奏データ(基本演奏データ)をトラック1〜MAX_TRKにコピーする。
【0026】
次いで、ステップSB4では、トラックの番号を表すトラックカウンタiに初期値「1」をセットする。そして、ステップSB5に進み、トラックカウンタiの値で指定されるトラックiにおいて、トラック・ポインタで指定されるデータtime(トラックiデータtime)を次式(1)に従って変更する。
トラックiデータtime ←
トラックiデータtime+offset[i]+spread[i]×rnd…(1)
【0027】
上記(1)式において、offset[i]はトラックiにおけるイベントタイミングをオフセットさせる値、すなわちイベントタイミングを所定ティック分早める(または遅くする)ものであり、その値はトラック毎の演奏傾向として予めoffset[1]〜offset[MAX_TRK]に設定される。例えばトラック0の基本演奏データに対して、トラック1演奏データでは各音符を16分音符長分早めに発音する傾向の演奏としたい場合、4分音符長が「480ティック」であれば、offset[1]の値は「−120」となる。
【0028】
spread[i]は、−1≦rnd≦1を値域とする乱数rndの乗算によってトラックiにおけるイベントタイミングのばらつき幅を指定する値であり、その値はトラック毎のばらつき幅として予めspread[1]〜spread[MAX_TRK]に設定される。例えばトラック0の基本演奏データに対して、トラック1演奏データでは乱数rndの乗算によってイベントタイミングのばらつき最大値を32分音符長(ばらつき幅を16分音符長)としたい場合、4分音符長が「480ティック」であれば、spread[1]の値は「60」となる。
【0029】
こうして、上記(1)式に基づき、トラックカウンタiの値で指定されるトラックiにおいて、トラック・ポインタで指定されるデータtime(トラックiデータtime)にoffset[i](演奏傾向)とspread[i]×rnd(ばらつき幅)とを加算して変更すると、ステップSB6に進み、その変更されたトラックiデータtimeが負数になっているか否かを判断する。変更されたトラックiデータtimeが正数ならば、判断結果は「NO」となり、後述のステップSB8に進む。
【0030】
一方、変更されたトラックiデータtimeが負数であると、上記ステップSB6の判断結果が「YES」になり、ステップSB7に進み、トラックiデータtimeを「0」に補正した後、ステップSB8に進む。ステップSB8では、次のデータtimeを指定する為、トラックiにおけるトラック・ポインタを2つ進める。続いて、ステップSB9では、2つ進められたトラック・ポインタが、トラックカウンタiの値で指定されるトラックi演奏データ終端に達したかどうかを判断する。
【0031】
演奏データ終端に達していなければ、判断結果は「NO」になり、上記ステップSB5に処理を戻す。以後、トラックi演奏データの終端に達するまでステップSB5〜SB9を繰り返す。これにより、トラックカウンタiの値で指定されるトラックiにおける全てのデータtimeについてoffset[i](演奏傾向)とspread[i]×rnd(ばらつき幅)とが加算される結果、トラック0の基本演奏データとは異なる演奏傾向およびばらつきを備えるトラックi演奏データが生成される。
【0032】
そして、歩進されたトラック・ポインタが、トラックカウンタiの値で指定されるトラックi演奏データ終端に達すると、上記ステップSB9の判断結果が「YES」となり、ステップSB10に進み、トラックカウンタiをインクリメントして歩進させる。続いて、ステップSB11では、歩進されたトラックカウンタiの値がMAX_TRK以下であるか否か、すなわち全てのトラック1〜MAX_TRKのデータtimeを変更し終えたかどうかを判断する。全てのトラック1〜MAX_TRKのデータtimeを変更し終えていなければ、判断結果は「YES」となり、上述のステップSB5に処理を戻す。
【0033】
これに対し、全てのトラック1〜MAX_TRKのデータtimeを変更し終えると、上記ステップSB11の判断結果が「NO」になり、ステップSB12に進み、各トラック0〜MAX_TRKの先頭をそれぞれ指し示すようにトラック・ポインタ0〜トラック・ポインタMAX_TRKをセットして本処理を終える。
【0034】
このように、データ生成処理では、トラック0の基本演奏データを他のトラック1〜MAX_TRKにコピーした後、これらトラック1〜MAX_TRKの全てのデータtimeに演奏傾向とばらつき幅とを加え、基本演奏データに対してそれぞれイベントタイミングが異なるトラック1〜MAX_TRKの演奏データを生成する。例えば、基本演奏データに対してトラック1演奏データについては各音の発音タイミングを早め、かつそのばらつき幅を大きくし、トラック2演奏データについては各音の発音タイミングを遅らせ、かつそのばらつき幅を大きくする等、各トラックの演奏の個性を個々に設定し得る結果、多重奏効果をもたらす演奏データを自動的に生成することが可能になっている。
【0035】
(3)再生処理の動作
次に、図5を参照して再生処理の動作を説明する。前述したメインルーチンのステップSA5(図3参照)を介して本処理が実行されると、CPU10は図5に図示するステップSC1に進み、RAM12の演奏データエリアにおけるトラックの番号を表すトラックカウンタiをゼロリセットする。続いて、ステップSC2では、カウンタmastertimeが、トラックカウンタiの値で指定されるトラックi(最初はトラック0)において、トラック・ポインタで指定されるデータtimeの値以上であるか、つまりイベントタイミングに達しているかどうかを判断する。
【0036】
イベントタイミングに達していると、判断結果は「YES」となり、ステップSC3に進み、トラックiにおけるトラック・ポインタをインクリメントして歩進させる。次いで、ステップSC4では、歩進されたトラック・ポインタで指定されるデータeventを、RAM12の演奏データエリアのトラックiから読み出して音源16に送出する。これにより、音源16では、CPU10から供給されるデータeventの内容に応じて楽音形成する。例えばデータeventがノートオンイベントならば指定音高の楽音を発音させ、ノートオフイベントならば指定音高の楽音を消音する。
【0037】
なお、本実施形態では、データeventを音源16に供給する態様としたが、これに限らず、トラック・ポインタで指定されるデータeventを、RAM12の演奏データエリアのトラックiから読み出し、MIDIインタフェース15を介して外部のMIDI楽器に送出して再生させる態様であっても構わない。
【0038】
続いて、ステップSC5では、次のデータtimeを指定する為、トラックiにおけるトラック・ポインタをインクリメントして歩進させた後、上述のステップSC2に処理を戻し、次のイベントタイミングであるか否かを判断する。次のイベントタイミングに達していなければ、ステップSC2の判断結果は「NO」になり、ステップSC6に進む。ステップSC6では、次トラック再生の為にトラックカウンタiの値をインクリメントして歩進させる。
【0039】
次いで、ステップSC7では、上記ステップSC6にて歩進されたトラックカウンタiの値がMAX_TRK未満であるか否か、すなわち全てのトラック0〜MAX_TRKについてイベントタイミング下にあるデータeventを処理し終えたかどうかを判断する。処理し終えていない場合(トラックカウンタiの値がMAX_TRK未満の場合)には、判断結果が「YES」となり、上記ステップSC2に戻る。
【0040】
以後、全てのトラック0〜MAX_TRKについてイベントタイミング下にあるデータeventを処理し終えるまで上記ステップSC2〜SC7を繰り返す。そして、全てのトラック0〜MAX_TRKについてイベントタイミング下にあるデータeventを処理し終えると、上記ステップSC7の判断結果が「NO」となり、ステップSC8に進み、カウンタmastertimeを現在値に更新する。
【0041】
次いで、ステップSC9では、全トラック0〜MAX_TRKの演奏データの再生が完了したか否かを判断する。再生未完ならば、判断結果は「NO」となり、一旦本処理を終える。なお、一旦本処理を終えた後にメインルーチンに復帰した場合、再生モードを維持する間は、ステップSA5(図3参照)を介して繰り返し本処理が実行される為、自動演奏が進行する。
これに対し、全トラック0〜MAX_TRKの演奏データの再生が完了した場合には、ステップSC9の判断結果が「YES」となり、ステップSC10に進み、再生モードを終了させて本処理を終える。これにより自動演奏が停止する。
【0042】
このように、再生処理では、各トラック0〜MAX_TRKにおいて、イベントタイミングに達したデータeventを順次再生する自動演奏を行う為、前述したデータ生成処理によって生成された演奏データを用いれば、多重奏効果を有する自動演奏音が再生される。
【0043】
以上のように、本実施形態では、トラック0の基本演奏データを、他のトラック1〜MAX_TRKにコピーした後、これらトラック1〜MAX_TRKの全てのデータtimeに演奏傾向とばらつき幅とを加え、基本演奏データに対してそれぞれイベントタイミングが異なるトラック1〜MAX_TRKの演奏データを生成するので、従来のように、複数回の演奏を行ってリアルタイム入力したり、ステップ入力された1曲分の演奏データを複数トラック分コピーした後、それら各トラック毎に演奏データをマニュアル編集したりする煩雑な操作が不要となり、多重奏効果をもたらす演奏データを自動的に生成することができる。
【0044】
なお、上述した実施形態では、説明の簡略化を図る為、トラック1〜MAX_TRKの全てのデータtimeに演奏傾向とばらつき幅とを加えてイベントタイミングを異ならせた演奏データを生成する一例について言及したが、これに限らず、更にデータeventの内容を修飾し、トラック0の基本演奏データに対してトラック1〜MAX_TRKの各音の音程、音色および音量がトラック毎に微妙に異なる演奏データを生成する態様も可能である。そのようにすれば、より一層の多重奏効果をもたらす演奏データにすることができる。
【符号の説明】
【0045】
10 CPU
11 ROM
12 RAM
13 操作部
14 表示部
15 MIDIインタフェース
16 音源
17 サウンドシステム
100 自動演奏装置

【特許請求の範囲】
【請求項1】
複数の演奏トラックを有し、それら演奏トラックの一つに、少なくとも演奏曲の各音を表す基本演奏データを記憶する記憶手段と、
前記記憶手段の所定の演奏トラックに記憶された基本演奏データを、他の演奏トラックにそれぞれコピーして登録する登録手段と、
前記登録手段によりコピー登録された基本演奏データが表す演奏曲の各音の属性を演奏トラック毎に変化させて当該基本演奏データと比較して属性の少なくとも一部が異なる演奏データに変換する演奏データ変換手段と
を具備することを特徴とする演奏データ生成装置。
【請求項2】
前記演奏データ変換手段は、基本演奏データが表す演奏曲の各音の発音タイミング、音高、音色および音量の何れか若しくは全てを演奏トラック毎に変化させることを特徴とする請求項1記載の演奏データ生成装置。
【請求項3】
前記演奏データ変換手段は、変化の傾向および変化のばらつき幅を演奏トラック毎に異ならせることを特徴とする請求項2記載の演奏データ生成装置。
【請求項4】
コンピュータに、
複数の演奏トラックの一つに、少なくとも演奏曲の各音を表す基本演奏データを記憶する記憶ステップと、
前記記憶ステップにより所定の演奏トラックに記憶された基本演奏データを、他の演奏トラックにそれぞれコピーして登録する登録ステップと、
前記登録ステップによりコピー登録された基本演奏データが表す演奏曲の各音の属性を演奏トラック毎に変化させて当該基本演奏データと比較して属性の少なくとも一部が異なる演奏データに変換する演奏データ変換ステップと
を実行させるを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate