(57)【特許請求の範囲】
【請求項１】
自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶する第１の記憶手段と、
複数の伴奏パターン生成用データを記憶する第２の記憶手段と、
前記第１の記憶手段から時間経過に応じたタイミングデータを順に読み出し、前記読み出したタイミングデータの発音タイミングに対し分解能で除算した値を演算する演算手段を有し、当該演算した値に対応する伴奏パターン生成用データを前記第２の記憶手段から選択して読み出すデータ読出手段と、
前記読み出されたタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成するデータ生成手段と、
を有する自動伴奏装置。
【請求項２】
コンピュータに、
自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶する第１の記憶手段から時間経過に応じたタイミングデータを読み出す手順と、
読み出されたタイミングデータに対し分解能で除算した値を演算する演算手順を有し、当該演算した値に対応する伴奏パターン生成用データを複数の伴奏パターン生成用データを記憶する第２の記憶手段から選択して読み出す手順と、
読み出されたタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成する手順と、
を実行させる自動伴奏プログラムを記憶した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動伴奏装置及び自動伴奏プログラムを記憶した記憶媒体に関する。
【０００２】
【従来の技術】
従来、自動伴奏装置には演奏者のメロディ演奏に合わせて自動的にコードやリズムの伴奏演奏を行う機能が具備されている。このため、自動伴奏装置のメモリには複数種類の伴奏パターンが記憶されており、演奏者によって選択された伴奏パターンの伴奏演奏を行う。伴奏パターンの構成は、伴奏音の発音タイミング、音高、音量、音色等で構成され、演奏が開始して発音タイミングの時間になると、音高を示すノートデータ、音量を示すベロシティデータ、音色を示すトーンデータ等をメモリから読み出して、伴奏音の発音データを生成するようになっている。
【０００３】
【発明が解決しようとする課題】
しかしながら上記従来の自動伴奏装置においては、メモリに記憶されている固定の伴奏パターンだけで伴奏演奏を行うので、伴奏演奏のバリエーションが乏しいという問題があった。この対策として、メモリの容量を大きくして記憶する伴奏パターンを増加する提案もされているが、製品のコストが高くなるとともに、使用する伴奏パターンが少ない演奏者にとっては資源活用が不経済になるので採用されていない。
【０００４】
本発明の課題は、少ないメモリ容量で豊富なバリエーションの演奏パターンを得ることができるようにすることである。
【０００５】
【課題を解決するための手段】
請求項１に記載の自動伴奏装置は、自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶する第１の記憶手段（実施形態においては、図１のＲＯＭ３の記憶エリアに対応する）と、複数の伴奏パターン生成用データを記憶する第２の記憶手段（実施形態においては、図１のＲＯＭ３の記憶エリアに対応する）と、前記第１の記憶手段から時間経過に応じたタイミングデータを順に読み出し、前記読み出したタイミングデータの発音タイミングに対し分解能で除算した値を演算する演算手段を有し、当該演算した値に対応する伴奏パターン生成用データを前記第２の記憶手段から選択して読み出すデータ読出手段（実施形態においては、図１のＣＰＵ１に対応する）と、前記読み出されたタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成するデータ生成手段（実施形態においては、図１のＣＰＵ１に対応する）と、を有する構成になっている。
【０００６】
請求項２に記載の記憶媒体は、コンピュータに、自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶する第１の記憶手段から時間経過に応じたタイミングデータを読み出す手順と、読み出されたタイミングデータに対し分解能で除算した値を演算する演算手順を有し、当該演算した値に対応する伴奏パターン生成用データを複数の伴奏パターン生成用データを記憶する第２の記憶手段から選択して読み出す手順と、読み出されたタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成する手順と、を実行させる自動伴奏プログラムを記憶している。
【００１２】
【発明の実施の形態】
以下、本発明による 図を参照して説明する。
図１は、各実施形態における装置のシステム構成を示している。図において、ＣＰＵ１は、システムバス２を介して、ＲＯＭ３、ＲＡＭ４、鍵盤５、スイッチ部６、音源７に接続され、これらとの間でコマンド及びデータの授受を行って装置全体を制御する。ＲＯＭ３は、ＣＰＵ１が実行する制御プログラムを記憶しているとともに、後述するように、伴奏パターン生成用データ及びリズムデータを記憶している。ＲＡＭ４は、ＣＰＵ１のワークエリアであり、ＣＰＵ１によって処理されるデータを一時的に記憶するとともに、制御プログラムの実行に必要な各種のレジスタやフラグが設けられている。
【００１３】
鍵盤５は、メロディ等の音高やベロシティを演奏する高音域と、コードを演奏する低音域とに分離したスプリットモードが可能である。スイッチ部６は、演奏に関する各種の設定や自動伴奏のスタート／ストップを操作に応じて入力する。音源７は、ＣＰＵ１から与えられるメロディデータ、伴奏パターン、その他のデータに基づいて楽音信号を生成する。音源７には、発音回路８が接続され、音源７からの楽音信号に応じて発音を行う。
【００１４】
図２は、ＲＯＭ３に記憶された伴奏パターン生成用データを示している。この伴奏パターン生成用データは、音量に関するノート・タイミングデータ及びこのノート・タイミングデータによって選択されるベロシティデータ、並びに、音色に関するノート・タイミングデータ及びこのノート・タイミングデータによって選択される音色指定データで構成されている。各データは、図に示すように、括弧内のパターン番号で指定される複数のデータで構成されている。さらに、各ノート・タイミングデータ、ベロシティデータ、音色指定データは、「０」から「１５」までのアドレスごとに、タイミングデータ及び音高（Ｆ＃２）、音量値、ハイハットの状態（ｏｐｅｎ／ｃｌｏｓｅ）が設定されている。
【００１５】
なお、伴奏の定義は、主たるメロディパートの演奏を多面的にサポートする全てのパートであるが、本発明の技術分野においては、コードパート及びベースパートを伴奏パートとし、ドラム系その他のリズムパートを伴奏パートから独立したパートとして取り扱うことが多く、この実施形態の自動伴奏装置のスイッチもコード及びベースのノート・タイミングデータを選択する伴奏用ＮＴＰスイッチと、リズムのノート・タイミングデータを選択するリズムＮＴＰスイッチは別になっている。
【００１６】
次に、この実施形態における自動伴奏装置の動作について、図３乃至図１５に示すＣＰＵ１のフローチャートを参照して説明する。
図３はメインフローであり、所定のイニシャライズ処理(ステップＡ１)の後、スイッチ処理(ステップＡ２)、鍵盤処理(ステップＡ３)、伴奏処理(ステップＡ４)、その他の処理(ステップＡ５)を繰り返す。
【００１７】
図４はメインフローにおけるステップＡ２のスイッチ処理のフローである。このスイッチ処理では、伴奏用ＮＴＰ選択スイッチ処理(ステップＢ１)、ＶＥＬＰ選択スイッチ処理(ステップＢ２)、リズム用ＮＴＰ選択処理(ステップＢ３)、ＯＨＰ選択スイッチ処理(ステップＢ４)、スタート／ストップスイッチ処理(ステップＢ５)、その他のスイッチ処理(ステップＢ６)を実行する。
【００１８】
上記スイッチ処理のステップＢ１における伴奏用ＮＴＰ選択スイッチ処理を図５に示す。まず、このスイッチが操作されたか否かを判別する(ステップＣ１)。スイッチが操作されない場合にはこのフローを終了するが、操作されたときはパターン番号をレジスタＰにセットする(ステップＣ２)。次に、Ｐにセットしたパターン番号の伴奏用ＮＴＰ（Ｐ）の先頭アドレスをレジスタＡＤＤ１にセットする(ステップＣ３)。そして、図４のスイッチ処理のフローに戻る。
【００１９】
スイッチ処理のステップＢ２におけるＶＥＬＰ選択スイッチ処理を図６に示す。まず、このスイッチが操作されたか否かを判別する(ステップＤ１)。スイッチが操作されない場合にはこのフローを終了するが、操作されたときはパターン番号をレジスタＰにセットする(ステップＤ２)。次に、Ｐにセットしたパターン番号のＶＥＬＰ（Ｐ）の先頭アドレスをレジスタＡＤＤ２にセットする(ステップＤ３)。そして、図４のスイッチ処理のフローに戻る。
【００２０】
スイッチ処理のステップＢ３におけるリズム用ＮＴＰ選択スイッチ処理を図７に示す。まず、このスイッチが操作されたか否かを判別する(ステップＥ１)。スイッチが操作されない場合にはこのフローを終了するが、操作されたときはパターン番号をレジスタＰにセットする(ステップＥ２)。次に、Ｐにセットしたパターン番号のリズム用ＮＴＰ（Ｐ）の先頭アドレスをレジスタＡＤＤ３にセットする(ステップＥ３)。そして、図４のスイッチ処理のフローに戻る。
【００２１】
スイッチ処理のステップＢ４におけるＯＨＰ選択スイッチ処理を図８に示す。まず、このスイッチが操作されたか否かを判別する(ステップＦ１)。スイッチが操作されない場合にはこのフローを終了するが、操作されたときはパターン番号をレジスタＰにセットする(ステップＦ２)。次に、Ｐにセットしたパターン番号のＯＨＰ（Ｐ）の先頭アドレスをレジスタＡＤＤ４にセットする(ステップＦ３)。そして、図４のスイッチ処理のフローに戻る。
【００２２】
スイッチ処理のステップＢ５におけるスタート／ストップ処理を図９に示す。まず、このスイッチのオン操作を判別し(ステップＧ１)、オン操作がない場合にはこのフローを終了する。オン操作があったときは、リズムスタートフラグＳＴＦを反転する(ステップＧ２)。そして、反転したＳＴＦが「１（リズムスタート）」であるか「０（リズムストップ）」であるかを判別する(ステップＧ３)。ＳＴＦが「１」である場合には、タイマレジスタＴを「０」にリセットし(ステップＧ４)、タイマインタラプトの禁止を解除する(ステップＧ５)。
【００２３】
次に、伴奏スタートフラグＢＳＴＦに「０（伴奏ストップ）」をセットする(ステップＧ６)。また、根音レジスタＲＯＯＴにデフォルトの音高「Ｃ」をセットし、コードレジスタＣＨＯＲＤにデフォルトのコード種Ｍａｊ（長調）をセットする(ステップＧ７)。ステップＧ３においてＳＴＦが「０」である場合には、タイマインタラプトを禁止し(ステップＧ８)、音源７に対して全ての音を消音する指示をする(ステップＧ９)。また、ＢＳＴＦに「０（伴奏ストップ）」をセットする(ステップＧ１０)。ステップＧ７又はステップＧ１０の後は、図４のスイッチ処理に戻る。
【００２４】
図１０は、図３のメインフローにおけるステップＡ３の鍵盤処理のフローである。この場合、鍵盤５はスプリットモードが設定されており、最初に低鍵域すなわちコード用の鍵域を走査する(ステップＨ１)。そして、低域の鍵がオンされたか否かを判別する(ステップＨ２)。オンされたときは、ＢＳＴＦに「１（伴奏スタート）」をセットする(ステップＨ３)。次に、オンされた鍵によってコードが確立できるか否かを判別する(ステップＨ４)。コードが確立できる場合には、ＲＯＯＴにオンされた鍵の根音をセットし、ＣＨＯＲＤに確立されたコード種をセットする(ステップＨ５)。
【００２５】
根音及びコード種をセットした後、若しくはステップＨ４においてコード種が確立できない場合、又はステップＨ１０において鍵がオンされない場合には、高音域を走査する(ステップＨ６)。そして、鍵変化があるか否かを判別する(ステップＨ７)。オフからオンへの鍵変化があったときは、ノートオンイベントを生成する(ステップＨ８)。一方、オンからオフへの鍵変化があったときは、ノートオフイベントを生成する(ステップＨ９)。
ノートオンイベント若しくはノートオフイベントを生成した後、又はステップＨ７において鍵変化がない場合には、図３のメインフローに戻る。
【００２６】
図１１は、メインフローにおけるステップＡ４の伴奏処理のフローである。このフローでは、コード伴奏処理(ステップＪ１)、ベース伴奏処理(ステップＪ２)、ハイハット伴奏処理(ステップＪ３)、その他のリズムパターン処理(ステップＪ４)を実行する。
【００２７】
図１２は、伴奏処理におけるステップＪ１のコード伴奏処理のフローである。まず、ＳＴＦが「１（リズムスタート）」であるか否かを判別し（ステップＫ１）、ＳＴＦが「０（リズムストップ）」である場合には、自動伴奏が停止状態であるのでこのフローを終了する。ＳＴＦが「１」である場合には、ＡＤＤ１にセットされたパターン番号の伴奏用ＮＴＰ（ＡＤＤ１）のタイミングデータ（発音開始時間）をレジスタＣＴＩＭＩＮＧにセットする(ステップＫ２)。次に、タイマインタラプトごとにインクリメントされるＴの経過時間が、ＣＴＩＭＩＮＧの発音開始時間に達したか否かを判別する(ステップＫ３)。
なお、発音開始時間及び経過時間は、クロックをカウントして計測される。
【００２８】
Ｔの経過時間がＣＴＩＭＩＮＧの発音開始時間に達していない場合には、このフローを終了する。Ｔの経過時間がＣＴＩＭＩＮＧの発音開始時間に達したときは、ＡＤＤ１にセットされているパターン番号の伴奏用ＮＴＰ（ＡＤＤ１）のノートデータをレジスタＣＮＯＴＥにセットする(ステップＫ４)。そして、ＣＮＯＴＥのノートデータをＲＯＯＴ，ＣＨＯＲＤで変換する(ステップＫ５)。次に、Ｔの値すなわち発音開始時間を１６分音符当たりの分解能（クロック数）ＲＥＳＯで除算する演算をして、除算結果の小数点以下を切り捨てた整数部分をレジスタＮにセットする(ステップＫ６)。実施形態における自動伴奏装置では、ＲＥＳＯは「４８」に設定されている。
【００２９】
そして、Ｎにセットした値が「１６」以上になったか否かを判別する(ステップＫ７)。すなわち、Ｎの値が図２に示したノート・タイミングデータにおいて最後のデータのパターン番号「１５」を超えたか否かを判別する。「１６」以上になった場合には、Ｎに「０（最初のパターン番号）」をセットする(ステップＫ８)。次に、ＡＤＤ２のパターン番号にＮのパターン番号を加算したパターン番号のＶＥＬＰ（ＡＤＤ２＋Ｎ）のベロシティデータをレジスタＶＥＬにセットする(ステップＫ９)。すなわち、タイミングデータに対応するアドレスのベロシティデータを読み出して、ＶＥＬにセットする。
【００３０】
次に、ＢＳＴＦの値が「１（伴奏スタート）」であるか否かを判別する(ステップＫ１０)。ＢＳＴＦの値が「１」である場合には、音源７に対してＣＮＯＴＥの音高及びＶＥＬの音量で発音を指示する(ステップＫ１１)。発音指示の後、又はステップＫ１０においてＢＳＴＦの値が「０（伴奏ストップ）」である場合には、ＡＤＤ１をインクリメントして、次のノート・タイミングデータを指定する(ステップＫ１２)。そして、ＡＤＤ１の値が最大数「１５」を超えたか否かを判別する(ステップＫ１３)。ＡＤＤ１の値が最大数を超えたときは、ＡＤＤ１を現在選択されている伴奏用ＮＴＰ（Ｐ）の先頭アドレスにする(ステップＫ１４)。先頭アドレスにした後、又はＡＤＤ１の値が最大数を超えない場合には、図１１の伴奏処理のフローに戻る。
【００３１】
伴奏処理におけるステップＪ３のハイハットパターン処理のフローを図１３及び図１４に示す。図１３において、ＳＴＦが「１（リズムスタート）」であるか否かを判別し（ステップＬ１）、ＳＴＦが「０（リズムストップ）」である場合には、自動伴奏が停止状態であるのでこのフローを終了する。ＳＴＦが「１」である場合には、ＡＤＤ３にセットされているパターン番号のリズム用ＮＴＰ（ＡＤＤ３）のタイミングデータ（発音開始時間）をレジスタＲＴＩＭＩＮＧにセットする(ステップＬ２)。次に、タイマインタラプトごとにインクリメントされるＴの経過時間が、ＲＴＩＭＩＮＧの発音開始時間に達したか否かを判別する(ステップＬ３)。
【００３２】
Ｔの経過時間がＲＴＩＭＩＮＧの発音開始時間に達していない場合には、このフローを終了する。Ｔの経過時間がＲＴＩＭＩＮＧの発音開始時間に達したときは、ＡＤＤ３にセットされているパターン番号の伴奏用ＮＴＰ（ＡＤＤ３）のノートデータをレジスタＲＮＯＴＥにセットする(ステップＬ４)。次に、Ｔの値すなわち発音開始時間をＲＥＳＯの値で除算する演算をして、除算結果の整数部分をレジスタＮにセットする(ステップＬ５)。
【００３３】
そして、Ｎにセットした値が「１６」以上になったか否かを判別する(ステップＬ６)。「１６」以上になった場合には、Ｎに「０（最初のパターン番号）」をセットする(ステップＬ７)。次に、ＡＤＤ４のパターン番号にＮのパターン番号を加算したパターン番号のＯＨＰ（ＡＤＤ４＋Ｎ）の音色指定データをレジスタＨＴＯＮＥにセットする(ステップＬ８)。すなわち、タイミングデータに対応するアドレスの音色指定データを読み出して、ＨＴＯＮＥにセットする。
【００３４】
そして、ＨＴＯＮＥの音色指定データがｏｐｅｎ又はｃｌｏｓｅのいずれであるかを判別する(ステップＬ９)。ｏｐｅｎである場合には、ＲＴＯＮＥにセットする音色をオープンハイハットの音色に指定する(ステップＬ１０)。ｃｌｏｓｅの場合には、ＲＴＯＮＥにセットする音色をクローズハイハットの音色に指定する(ステップＬ１１)。そして、図１４のフローにおいて、音源７に対してＲＮＯＴＥ，ＲＴＯＮＥで発音を指示する(ステップＬ１２)。
【００３５】
次に、ＡＤＤ３をインクリメントして、次のノート・タイミングデータを指定する(ステップＬ１３)。そして、ＡＤＤ３の値が最大数「１５」を超えたか否かを判別する(ステップＬ１４)。ＡＤＤ３の値が最大数を超えたときは、ＡＤＤ３を現在選択されているリズム用ＮＴＰ（Ｐ）の先頭アドレスにする(ステップＬ１５)。先頭アドレスにした後、又はＡＤＤ３の値が最大数を超えない場合には、図１１の伴奏処理のフローに戻る。
【００３６】
図１５は、タイマインタラプト処理のフローである。一定時間（１クロックの時間間隔）ごとにタイマインタラプトが入ると、メインフローからこのフローに移行して、時間経過を表すタイマレジスタＴの値をインクリメントする（ステップＭ１）。そして、Ｔの値が所定値（この場合は「６７２」クロック分の時間）を超えたか否かを判別する(ステップＭ２)。所定値を超えたときは、Ｔの値を「０」にセットする(ステップＭ３)。Ｔの値が所定値以内である場合、又はＴの値を「０」にセットした後は、メインフローに戻る。
【００３７】
以上のように上記実施形態によれば、ＲＯＭ３は、自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶するとともに、複数の伴奏パターン生成用データを記憶する。ＣＰＵ１は、ＲＯＭ３から時間経過に応じたタイミングデータを順に読み出し、その読み出したタイミングデータに対応する伴奏パターン生成用データを複数の伴奏パターン生成用データの中から選択してＲＯＭ３から読み出して、読み出したタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成する。
したがって、少ないメモリ容量で豊富なバリエーションの演奏パターンを得ることができる。
【００３８】
なお、上記実施形態においては、ＲＯＭ３内に自動伴奏の制御プログラムが格納された構成にしたが、フロッピーディスクやＣＤ等の汎用の記憶媒体に自動伴奏プログラムを記憶し、ＣＰＵ１によってそのプログラムを読み出して実行させるようにしてもよい。
すなわち、自動伴奏における伴奏音の発音タイミング及び発音音高を示すタイミングデータを記憶する第１の記憶手段から時間経過に応じたタイミングデータを読み出す手順と、読み出されたタイミングデータに応じた伴奏パターン生成用データを複数の伴奏パターン生成用データを記憶する第２の記憶手段から選択して読み出す手順と、読み出されたタイミングデータ及び伴奏パターン生成用データに基づいて発音すべき伴奏パターンを生成する手順と、を実行する自動伴奏プログラムを記憶させる。この場合には、記憶媒体の発明を構成する。
【００３９】
【発明の効果】
本発明によれば、記憶手段から読み出したタイミングデータに対応する伴奏パターン生成用データを記憶手段から選択的に読み出して、そのタイミングデータと伴奏パターン生成用データとをその都度組み合わせて伴奏パターンを生成する。
したがって、少ないメモリ容量で豊富なバリエーションの演奏パターンを得ることができるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施形態における自動伴奏装置のシステム構成を示すブロック図。
【図２】図１のＲＯＭに記憶された伴奏パターン生成用データを示す図。
【図３】図１のＣＰＵ１が実行する自動伴奏処理のメインフローチャート。
【図４】図３におけるスイッチ処理のフローチャート。
【図５】図４における伴奏用ＮＴＰ選択処理のフローチャート。
【図６】図４におけるＶＥＬＰ選択スイッチ処理のフローチャート。
【図７】図４におけるリズム用ＮＴＰ選択処理のフローチャート。
【図８】図４におけるＯＨＰ選択スイッチ処理のフローチャート。
【図９】図４におけるスタート／ストップ処理のフローチャート。
【図１０】図３における鍵盤処理のフローチャート。
【図１１】図３における伴奏処理のフローチャート。
【図１２】図１１におけるコード伴奏処理のフローチャート。
【図１３】図１１におけるハイハットパターン処理のフローチャート。
【図１４】図１３に続くハイハットパターン処理のフローチャート。
【図１５】タイマインタラプト処理のフローチャート。
【符号の説明】
１  ＣＰＵ
２  システムバス
３  ＲＯＭ
４  ＲＡＭ
５  鍵盤
６  スイッチ部
７  音源
８  発音回路
【図１】
0003928333.tif 000002
【図２】
0003928333.tif 000003
【図３】
0003928333.tif 000004
【図４】
0003928333.tif 000005
【図５】
0003928333.tif 000006
【図６】
0003928333.tif 000007
【図７】
0003928333.tif 000008
【図８】
0003928333.tif 000009
【図９】
0003928333.tif 000010
【図１０】
0003928333.tif 000011
【図１１】
0003928333.tif 000012
【図１２】
0003928333.tif 000013
【図１３】
0003928333.tif 000014
【図１４】
0003928333.tif 000015
【図１５】
0003928333.tif 000016