(57)【特許請求の範囲】
【請求項１】
それぞれ発音タイミングを指し示す情報を有する第１のリズムパートの演奏データと第２のリズムパートの演奏データとを含む自動演奏データを供給する供給手段と、
前記発音タイミングを指し示す情報に基づいて前記供給された演奏データを順次出力する出力手段と
を備えた自動演奏装置において、
前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルで発音するように設定するチャンネル設定手段と、
前記供給された前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとが同じ発音タイミングである場合は、前記第２のリズムパートの演奏データを前記第１のリズムパートの演奏データよりも先に出力するよう各演奏データを相次いで出力する出力制御手段と
を備え、同じ発音タイミングに対応して前記出力制御手段により相次いで出力された各演奏データのうち後に出力された前記第１のリズムパートの演奏データの音が最終的に当該発音タイミングの音として発音されるようにしたことを特徴とする自動演奏装置。
【請求項２】
それぞれ発音タイミングを指し示す情報を有する第１のリズムパートの演奏データと第２のリズムパートの演奏データとを含む自動演奏データを供給する供給手段と、
前記発音タイミングを指し示す情報に基づいて前記供給された演奏データを順次出力する出力手段と
を備えた自動演奏装置において、
第１の動作モードと第２の動作モードのうち何れかを指定する動作モード指定手段と、
前記第１の動作モードが指定された場合に、前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルで発音するように設定するチャンネル設定手段と、
前記第１の動作モードが指定された場合に、前記供給された前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとが同じ発音タイミングである場合は、前記第２のリズムパートの演奏データを前記第１のリズムパートの演奏データよりも先に出力するよう各演奏データを相次いで出力する出力制御手段と
を備え、同じ発音タイミングに対応して前記出力制御手段により相次いで出力された各演奏データのうち後に出力された前記第１のリズムパートの演奏データの音が最終的に当該発音タイミングの音として発音されるようにしたことを特徴とする自動演奏装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は自動伴奏機能を有するシーケンサ等の自動演奏装置に係り、特に自動演奏時の演奏曲のアレンジを容易に行うことのできる自動演奏装置に関する。
【０００２】
【従来の技術】
従来の自動演奏装置の中には、リズムパート、ベースパート及びコードパートの一部のパートの演奏については、シーケンシャルな演奏データとは別途に記憶された伴奏パターンデータに基づいて自動伴奏を行うものがある。このような自動演奏装置はどの伴奏パターンデータに基づいて自動伴奏を行うのか、予めシーケンシャルな演奏データのヘッダや操作子などでパターン番号を設定するものや、そのパターン番号を曲の進行に従って順番に記憶したシーケンシャルな伴奏データを有するものなどがある。なお、リズムパート以外のベースパート及びコードパートは曲の進行に従って別途記憶されている和音進行データ又はユーザにより指定される和音に基づきその和音に適した音に変換されるようになっている。
【０００３】
【発明が解決しようとする課題】
従来の自動演奏装置のように、一部の演奏パートを自動伴奏によって補うタイプのものは、伴奏パターンデータを指定するパターン番号を変更してやるだけで簡単に曲のアレンジを変更することができるので、初心者でも容易に取り扱うことができるという利点がある。また、１つの演奏パートが１つのチャンネルすなわち１つの伴奏パターンデータで構成されている場合には、対応するチャンネルの伴奏パターンデータの内容を直接エディットするだけでよいので、初心者でも容易にエディットすることができるので、曲のアレンジを容易に変更することができる。
ところが、１つの演奏パートが複数のチャンネルやパートで構成されている場合には、複数のチャンネル間の相互関係に習熟した者でないと、どのチャンネルをどのようにエディットしてよいのか分からないため、このような演奏パートをエディットして曲のアレンジを変更するということは初心者にとっては極めて困難な作業であり、初心者がエディットすると音楽的に不自然なものになってしまうおそれがあった。
また、演奏パートが複数のチャンネルやパートで構成されている場合に、これらのチャンネル又はパートの音を共通のデータにマージさせて演奏すると、両方のイベント同士が互いに相容れない関係（例えば、両イベントがハイハットオープンイベントとハイハットクローズイベントである場合や両イベントが同一種類のイベントでベロシティだけが異なる場合など）にあり、音楽的に不自然なものになってしまう場合がある。
【０００４】
この発明は、複数のチャンネルやパートからなる演奏データを演奏する際にも音楽的に自然な演奏ができる自動演奏装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
この発明に係る自動演奏装置は、それぞれ発音タイミングを指し示す情報を有する第１のリズムパートの演奏データと第２のリズムパートの演奏データとを含む自動演奏データを供給する供給手段と、前記発音タイミングを指し示す情報に基づいて前記供給された演奏データを順次出力する出力手段とを備えた自動演奏装置において、前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルで発音するように設定するチャンネル設定手段と、前記供給された前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとが同じ発音タイミングである場合は、前記第２のリズムパートの演奏データを前記第１のリズムパートの演奏データよりも先に出力するよう各演奏データを相次いで出力する出力制御手段とを備え、同じ発音タイミングに対応して前記出力制御手段により相次いで出力された各演奏データのうち後に出力された前記第１のリズムパートの演奏データの音が最終的に当該発音タイミングの音として発音されるようにしたことを特徴とする。
【０００６】
これによれば、供給された自動演奏データに含まれる第１のリズムパートの演奏データと第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルで発音するように設定することで、２つのリズムパートの演奏データを一つのＭＩＤＩチャンネルにマージすることができる。この場合、第１のリズムパートの演奏データと第２のリズムパートの演奏データとが同じ発音タイミングである場合は、前記第２のリズムパートの演奏データを前記第１のリズムパートの演奏データよりも先に出力するよう各演奏データを相次いで出力することで、同じ発音タイミングに対応して相次いで出力された各演奏データのうち後に出力された前記第１のリズムパートの演奏データの音が最終的に当該発音タイミングの音として発音されるよう制御することができる。従って、異なるリズムパートのイベントが同じ発音タイミングに相当し、かつ、そのイベント同士が互いに相容れない関係にある場合（例えば、両イベントがハイハットオープンイベントとハイハットクローズイベントである場合や両イベントが同一種類のイベントでベロシティだけが異なる場合など）は、両リズムパートのいずれのイベントも消去することなく、その中のいずれか１つのリズムパートのイベントの音のみが優先的に発音されるようにすることができる。これによって、優先的に演奏されるリズムパートの音が必ず発音されるようになるので、そのリズムパートの関係に習熟していない者であっても、これらのリズムパートの音を共通のＭＩＤＩチャンネルのデータにマージさせて音楽的に自然な演奏を行うことができるようになる。しかも、両リズムパートのいずれのイベントも消去することがないので、両リズムパートの分離・復元を問題なく行うことができる。
【０００７】
この発明の別の観点に係る自動演奏装置は、それぞれ発音タイミングを指し示す情報を有する第１のリズムパートの演奏データと第２のリズムパートの演奏データとを含む自動演奏データを供給する供給手段と、前記発音タイミングを指し示す情報に基づいて前記供給された演奏データを順次出力する出力手段とを備えた自動演奏装置において、第１の動作モードと第２の動作モードのうち何れかを指定する動作モード指定手段と、前記第１の動作モードが指定された場合に、前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルで発音するように設定するチャンネル設定手段と、前記第１の動作モードが指定された場合に、前記供給された前記第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとが同じ発音タイミングである場合は、前記第２のリズムパートの演奏データを前記第１のリズムパートの演奏データよりも先に出力するよう各演奏データを相次いで出力する出力制御手段とを備え、同じ発音タイミングに対応して前記出力制御手段により相次いで出力された各演奏データのうち後に出力された前記第１のリズムパートの演奏データの音が最終的に当該発音タイミングの音として発音されるようにしたことを特徴とする。
【０００８】
このように第１及び第２の動作モードのうち第１の動作モードが選択された場合に上述と同様の出力制御を行うようにしたことにより、第１のリズムパートの演奏データと前記第２のリズムパートの演奏データとを同一のＭＩＤＩチャンネルにマージするモード（第１の動作モード）と、そうせずに個別のリズムパートの演奏データとしてそのまま出力するモード（第２の動作モード）の使い分けを行うことができ、出力先の自動リズム演奏機能に応じた使い分けが可能となる。
【０００９】
【発明の実施の形態】
以下、添付図面を参照してこの発明の一実施例を詳細に説明する。
図１はこの発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。この実施例においては、マイクロプロセッサユニット（ＣＰＵ）１０、ＲＯＭ１１、ＲＡＭ１２を含むマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。
この実施例では１つのＣＰＵ１０によって自動演奏処理等を行う電子楽器を例に説明する。この実施例では電子楽器は自動演奏用のチャンネルとして１６チャンネル分の同時発音が可能である。すなわち、１６種類の演奏データを同時再生可能である。
【００１０】
ＣＰＵ１０はこの電子楽器全体の動作を制御するものである。このＣＰＵ１０に対して、データ及びアドレスバス１Ｄを介してＲＯＭ１１、ＲＡＭ１２、押鍵検出回路１３、スイッチ検出回路１４、表示回路１５、音源回路１６、タイマ１７、ＭＩＤＩインターフェイス（Ｉ／Ｆ）１８及びディスクドライブ１９が接続されている。
【００１１】
ＲＯＭ１１はＣＰＵ１０のシステム関連のプログラム、ナンバ『０１』から『９９』までの９９個の自動伴奏用のスタイルデータ、デフォルト用のＣＴＡＢ（Ｃｈａｎｎｅｌ  Ｔａｂｌｅ）、ノート変換テーブル、その他に楽音に関する各種のパラメータやデータなどを記憶している。
ＲＡＭ１２はＣＰＵ１０がプログラムを実行する際に発生する各種の演奏データや各種のデータを一時的に記憶するものであり、ランダムアクセスメモリ（ＲＡＭ）の所定のアドレス領域がそれぞれ割り当てられ、レジスタやフラグ等として利用される。また、ＲＡＭ１２はユーザが自由に使用することのできるナンバ『００』のユーザスタイルデータを記憶する。
【００１２】
図２はこのＲＯＭ１１及びＲＡＭ１２に記憶されているスタイルデータの内容及びデフォルトＣＴＡＢの内容を示す図である。ＲＡＭ１２はナンバ『００』のユーザスタイルデータを記憶し、ＲＯＭ１１はナンバ『０１』から『９９』までの９９個のスタイルデータとデフォルトＣＴＡＢを記憶する。スタイルデータは演奏スタイル（例えば、ポップス、ロック、ジャズ、ワルツなど）毎に設けられている。
【００１３】
１つのスタイルデータは、ヘッダ部、シーケンスデータ部及びＣＴＡＢ群から構成される。
ヘッダ部にはスタイルの名称などが記憶される。
シーケンスデータ部は図２（Ｂ）に示すように、初期設定データと各セクション（メイン、フィルイン、イントロ及びエンディング）のパターンデータで構成される。初期設定データは各チャンネルの音色、演奏パート名、初期テンポなどのデータで構成される。メインパターンデータは繰り返し演奏されるメインの伴奏パターンである。フィルインパターンデータはフィルイン演奏時の伴奏パターンである。イントロパターンデータはイントロ演奏時の伴奏パターンである。エンディングパターンデータはエンディング演奏時の伴奏パターンである。
【００１４】
各セクションのパターンデータは、図２（Ｃ）に示すよう、マーカー、デルタタイムデータ及びイベントデータから構成される。マーカーはセクションとセクションの区切りを示すものであり、メイン、フィルイン、イントロ及びエンディングなどのセクションの種類を示すデータである。デルタタイムデータはイベントとイベントとの間の時間を示すデータである。イベントデータは図２（Ｄ）に示すように、ノートイベントの場合は、ノートオン／オフと『１』〜『１６』のチャンネル番号、ノートナンバ及びベロシティデータなどで構成される。他のイベントデータ（ピッチベンドやボリューム制御など）の場合もそのイベントを示すデータやチャンネル番号などで構成される。このデルタタイムデータとイベントデータは対で記憶され、同じタイミングのイベントを示す場合にはデルタタイムデータは『０』となっている。
【００１５】
ＣＴＡＢ群は、図２（Ｅ）に示すように、ノート変換に関する各種情報を各セクション（メイン、フィルイン、イントロ及びエンディング）の『１』〜『１６』の各チャンネル毎に設けられたＣＴＡＢ（Ｃｈａｎｎｅｌ  Ｔａｂｌｅ）の複数で構成される。このようにＣＴＡＢを各セクションの各チャンネル毎に設けたのは、シーケンスデータ内のコードに基づいてどのようにノート変換すべきであるか、その最適の状態が各セクションの各チャンネル毎にそれぞれ異なるからである。
【００１６】
ＣＴＡＢは基本的には各セクションの各チャネル毎に設けられているが、特殊な設定を必要としないスタイルのセクションにおけるチャンネルに関しては、このようなＣＴＡＢは設けられない。ＣＴＡＢが設けられていない場合には、ＲＯＭ１１内に設けられているデフォルト用ＣＴＡＢによってノート変換が行われるようになっている。このように共通のデフォルトＣＴＡＢを用いることによってデータ記憶容量を削減することができる。
【００１７】
図２（Ｅ）のＣＴＡＢ群を構成する各ＣＴＡＢは、図２（Ｆ）に示すように、チャンネルナンバ、楽器名、パートナンバ、パートエディットビット、ソースルート、ソースタイプ、ノート変換テーブル種類、ノートリミット、チャンネルスイッチ等から構成される。
チャンネルナンバはＭＩＤＩチャンネルに対応した『１』〜『１６』のチャンネルナンバであり、１つのセクション内のＣＴＡＢのチャンネルナンバは全て異なるようになっている。
楽器名はチャンネルナンバで指定された音源回路１６のＭＩＤＩチャンネルに設定されるべき音色の楽器名である。
【００１８】
パートナンバはどの演奏パートに関するデータであるかを示すものであり、『１』〜『５』のデータで構成される。パートナンバ『１』はリズム１パートを、パートナンバ『２』はリズム２パートを、パートナンバ『３』はベースパートを、パートナンバ『４』はコード１パートを、パートナンバ『５』はコード２パートを示す。
パートエディットビット（ＰＥＢ）はそのチャンネルをパート単位で編集してもよいか否かを示す『０』又は『１』のデータである。パートエディットビットが『１』の場合は１つの演奏パートが複数チャンネルで構成されているので、パート単位での編集はできない（複数チャンネルあるうちのどのチャンネルをどのようにエディットすれば音楽的に好ましい状態でエディットできるのかが分からない）ことを示し、『０』の場合は１つの演奏パートがこのチャンネルだけで構成されているので、パート単位で編集ができることを示す。なお、１つの演奏パートが１つのチャンネルで構成されていても、このチャンネルのエディットを行ってはいけない場合などには、パートエディットビット（ＰＥＢ）が『１』に設定されている場合もある。
【００１９】
ソースルートはそのチャンネルのシーケンスデータ（自動伴奏データ）がどのコードルートで作成されたかを示すものである。このソースルートのデフォルト値は『Ｃ』である。
ソースタイプはそのチャンネルのシーケンスデータ（自動伴奏データ）がどのコードタイプで作成されたかを示すものである。このソースタイプのデフォルト値はメジャー７ｔｈ（ｍａｊ７）である。
シーケンスデータ（自動伴奏データ）がどのようなコードルート、コードタイプで作成されている場合であっても、このソースルート及びソースタイプに基づいてそのチャンネルのシーケンスデータをＣメジャー７ｔｈの音（ノート変換を行うときの基準の音）に変換することができる。
【００２０】
ノート変換テーブル種類は複数のノート変換テーブルの中から、どれを用いてノート変換を行うのかを指定するものである。例えば、ノート変換テーブルにはベースパートに適したＬ個のノート変換テーブル１〜Ｌ、コードパートに適したＭ個のノート変換テーブル１〜Ｍ、「全く変換しない」等の種類があるので、ノート変換テーブル種類はこれらの中のどのテーブルに基づいて変換を行うかを指定するものである。このノート変換テーブル種類のデフォルト値は、リズムパートの場合には「全く変換しない（無変換）」であり、ベースパートの場合にはベースパートに適したノート変換テーブル１であり、コードパートの場合にはコードパートに適したノート変換テーブル１である。
【００２１】
ノートリミットはノート変換によってノートナンバを変換した場合に、変換後のノートナンバの範囲がある音域内に収まるように、その音域の上限及び下限を規定するものである。
チャンネルスイッチは現在押鍵中のコードルート及びコードタイプが特定の種類である場合に、そのチャンネルの発音を行うように設定するためのメモリスイッチであり、全てのコードルート及びコードタイプに対応してオン・オフを示す『０』又は『１』のデータで構成されている。１つの演奏パートが複数チャンネルで構成されている場合に、このチャンネルスイッチを用いて、コードの種類によってチャンネルを切り換えることができるようにする。このチャンネルスイッチのデフォルト値は「全てチャンネルを常時発音させる」である。
【００２２】
デフォルトＣＴＡＢは、図２（Ｇ）に示すように、図２（Ｆ）のＣＴＡＢと同様に各チャンネル毎にチャンネルナンバＣＨ、楽器名、パートナンバ、パートエディットビット（ＰＥＢ）、ソースルート、ソースタイプ、ノート変換テーブル種類、ノートリミット、チャンネルスイッチから構成される。
この実施例ではチャンネルナンバ『１』〜『５』に対して所定のデフォルト値が設定されており、これ以外のチャンネルナンバ『６』〜『１６』に対してはデフォルト値は設定されていない。
【００２３】
デフォルトＣＴＡＢにおいて、楽器名は設定されていない。
パートナンバについては、チャンネルナンバ『１』がパートナンバ『１』のリズム１パートに、チャンネルナンバ『２』がパートナンバ『２』のリズム２パートに、チャンネルナンバ『３』がパートナンバ『３』のベースパートに、チャンネルナンバ『４』がパートナンバ『４』のコード１パートに、チャンネルナンバ『５』がパートナンバ『５』のコード２パートになるように設定されている。
パートエディットビット（ＰＥＢ）については、全てのチャンネルナンバ『１』〜『５』に対して『０』が設定されている。
ソースルートについては、チャンネルナンバ『１』〜『５』に『Ｃ』が設定されている。
ソースタイプについては、チャンネルナンバ『１』〜『５』にメジャー７ｔｈ（ｍａｊ７）が設定されている。
ノート変換テーブル種類については、リズムパートのチャンネルナンバ『１』及び『２』には『無し（無変換）』が、ベースパートのチャンネルナンバ『３』にはベースパートに適したノート変換テーブル１が、コードパートのチャンネルナンバ『４』及び『５』にはコードパートに適したノート変換テーブル１がそれぞれ設定されている。
ノートリミットについては図示していないが上限及び下限の設定は『無し』に設定されている。
チャンネルスイッチについては、『全てチャンネルを常時発音させる』が設定されている。
【００２４】
鍵盤１Ａは発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応したキースイッチを有しており、また必要に応じて押圧力検出装置等のタッチ検出手段を有している。鍵盤１Ａは音楽演奏のための基本的な操作子であり、これ以外の演奏操作子でもよいことはいうまでもない。
押鍵検出回路１３は発生すべき楽音の音高を指定する鍵盤１Ａのそれぞれの鍵に対応して設けられたキースイッチ回路を含むものである。この押鍵検出回路１３は鍵盤１Ａの離鍵状態から押鍵状態への変化を検出してキーオンイベントを出力し、押鍵状態から離鍵状態への変化を検出してキーオフイベントを出力すると共にそれぞれのキーオンイベント及びキーオフイベントに関する鍵の音高を示すキーコード（ノートナンバ）を出力する。押鍵検出回路１３はこの他にも鍵押し下げ時の押鍵操作速度や押圧力等を判別してベロシティデータやアフタタッチデータとして出力する。
【００２５】
スイッチ検出回路１４はパネル１Ｂ上に設けられた各々の操作子に対応して設けられており、各々の操作子の操作状況に応じた操作データをイベント情報として出力する。
表示回路１５はパネル１Ｂ上に設けられた表示手段（ＬＣＤ２）の表示内容などを制御する。
パネル１Ｂには各種操作子及びＬＣＤ２が設けられている。パネル１Ｂに設けられている操作子としては、『０』から『９』の数字及び『＋』『−』の付されたスタイル選択スイッチ、『Ｙｅｓ』の付されたイエススイッチ、『Ｎｏ』の付されたノースイッチ、『リズム１』、『リズム２』、『ベース』、『コード１』、『コード２』の付されたパート選択スイッチ、『イントロ』、『フィルイン』、『メイン』、『エンディング』の付されたセクション選択スイッチ、『ＲＥＣ』の付された録音スイッチ、『クリア』の付されたクリアスイッチ、『カスタム』の付されたカスタムスイッチ、『スタート／ストップ』の付されたスタート／ストップスイッチなどがある。この他にも、パネル１Ｂには発生すべき楽音の音色、音量、音高、効果等を選択、設定、制御するための各種の操作子を有するが、ここでは実施例の説明に必要なものだけについて説明する。
【００２６】
スタイル選択スイッチは、『００』から『９９』までのスタイルナンバを入力することによって、いずれか１つのスタイルナンバを選択するためのスイッチである。スタイル選択スイッチによって選択されたスタイル名はＬＣＤ２上に表示される。イエススイッチ及びノースイッチはＬＣＤ２に表示された電子楽器からのメッセージに対して操作者が回答するためのものである。
パート選択スイッチは編集する演奏パートを指定するためのスイッチである。セクション選択スイッチは編集するセクションを指定するためのスイッチである。録音スイッチはセクション選択スイッチ及びパート選択スイッチによって選択されたセクション及びパートの演奏データを編集するモードを指定するためのスイッチである。なお、この実施例では録音スイッチとパート選択スイッチが同時に操作された場合に、その操作された演奏パートにおける演奏データの編集を行う編集モードに移行するようにしている。
クリアスイッチは編集モードにある演奏データを消去するためのスイッチである。カスタムスイッチはスタイルナンバ『０１』〜『９９』の中からスタイル選択スイッチによって選択されたデータをスタイルナンバ『００』のユーザスタイルデータとしてＲＡＭ１１のカスタムエリアにコピーするためのスイッチである。スタート／ストップスイッチは自動演奏のスタート／ストップを制御するためのスイッチである。
【００２７】
音源回路１６は複数の時分割発音チャンネル（この実施例では１６チャンネル）で楽音信号の同時発生が可能であり、データ及びアドレスバス１Ｄを経由して与えられた演奏データ（ＭＩＤＩ規格に準拠したデータ）を入力し、この演奏データに基づき楽音信号を発生する。そして、１６個のＭＩＤＩチャンネルに対応し、同時に１６種類の音色（パート）にて楽音の発生が可能である。
音源回路１６における楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるＦＭ方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるＡＭ方式等の公知の方式を適宜採用してもよい。
【００２８】
音源回路１６から発生される楽音信号はアンプ及びスピーカから構成されるサウンドシステム１Ｃを介して発音される。
タイマ１７は時間間隔を計数したり、自動演奏のテンポを設定したりするためのテンポクロックパルスを発生するものであり、このテンポクロックパルスの周波数はパネル１Ｂ上のテンポスイッチ（図示していない）によって調整される。タイマ１７からのテンポクロックパルスはＣＰＵ１０に対してインタラプト命令として与えられ、ＣＰＵ１０はインタラプト処理により自動演奏の各種処理を実行する。この実施例においてはテンポクロックパルスは４分音符につき９６回発生されるものとする。
ＭＩＤＩインターフェイス（Ｉ／Ｆ）１８及びディスクドライブ１９は、演奏データを外部に出力したり、外部から演奏データを入力したりするためのインターフェイスである。なお、これらの装置以外に、公衆回線、各種ネットワーク、ＨＤＤ等を介して演奏データのやりとりを行ってもよい。
【００２９】
次に、ＣＰＵ１０によって実行される電子楽器の処理の一例を図３から図７のフローチャートに基づいて説明する。
図３はパネル１Ｂ上の各スイッチの操作に応じて図１の電子楽器のＣＰＵ１０が処理するカスタムスタイル作成処理の一例を示す図である。このカスタムスタイル作成処理は操作者がスタイルナンバ『００』のユーザスタイルデータを作成する際にパネル１Ｂ上のスイッチを操作することによって行われる処理である。このカスタムスタイル作成処理は次のようなステップで順番に実行される。
【００３０】
ステップ３１：操作者はＬＣＤ２に表示されるスタイル名を見ながらスタイル選択スイッチ『０』〜『９』、『＋』又は『−』を操作して『００』から『９９』までのスタイルナンバを入力し、１つのスタイルナンバを選択する。
ステップ３２：操作者がカスタムスイッチ『カスタム』を操作（オン）すると、それに応じてＣＰＵ１０はＲＡＭ１１のカスタムエリアにステップ３１で選択されたスタイルナンバの演奏データをスタイルナンバ『００』のユーザスタイルデータとしてコピーする。
【００３１】
ステップ３３：操作者は編集したいセクションに対応するセクション選択スイッチ『イントロ』、『フィルイン』、『メイン』又は『エンディング』を操作する。
ステップ３４：操作者は録音スイッチ『ＲＥＣ』を操作（オン）しながら、同時に編集したい演奏パートに対応するパート選択スイッチ『リズム１』、『リズム２』、『ベース』、『コード１』又は『コード２』を操作（オン）する。
ステップ３５：ＣＰＵ１０はステップ３３及び３４のスイッチ操作に応じて、選択されたセクション及びパートに対応するチャンネルのパートエディットビットをチェックする。すなわち、選択されたセクションのＣＴＡＢの中から選択されたパートナンバに対応するＣＴＡＢの中のパートエディットビットの内容を読み出す。
ステップ３６：ＣＰＵ１０はステップ３５で読み出されたパートエディットビット（ＰＥＢ）が『１』であるかどうかを判定し、『１』（ＹＥＳ）の場合は次のステップ３７に進み、『０』（ＮＯ）の場合はステップ３Ｄにジャンプする。
【００３２】
ステップ３７：ステップ３６でパートエディットビットが『１』だと判定されたということは、ステップ３３及び３４で選択されたパートの演奏データは編集できないことを意味するので、ＣＰＵ１０はＬＣＤ２上に「このパートはエディットできません。消去していいですか？」というメッセージを表示する。
ステップ３８：このメッセージを確認した操作者は、イエススイッチ『Ｙｅｓ』又はノースイッチ『Ｎｏ』のいずれかを操作（オン）するので、ＣＰＵ１０はイエススイッチ『Ｙｅｓ』が操作（オン）されたかどうかを判定し、操作された（ＹＥＳ）場合は次のステップ３Ａに進み、操作されていない（ＮＯ）場合はステップ３９に進む。
ステップ３９：ステップ３８でイエススイッチ『Ｙｅｓ』が操作されていなと判定されたので、今度はＣＰＵ１０はノースイッチ『Ｎｏ』が操作（オン）されたかどうかを判定し、操作された（ＮＯ）場合は次のステップ３Ｅに進み、操作されていない（ＮＯ）場合はステップ３８にリターンする。
すなわち、操作者がイエススイッチ『Ｙｅｓ』又はノースイッチ『Ｎｏ』のいずれかを操作（オン）するまでステップ３８及びステップ３９の判定を繰り返し行う。
【００３３】
ステップ３Ａ：ステップ３８で操作者がイエススイッチ『Ｙｅｓ』を操作したと判定されたので、ＣＰＵ１０はＬＣＤ２から上記メッセージを消去する。
ステップ３Ｂ：ＣＰＵ１０はステップ３３及び３４で選択された演奏パートに対応するチャンネルのシーケンスデータを消去する。すなわち、シーケンスデータ中から該チャンネルナンバのついたイベントをサーチし消去してシーケンスデータを作り直す。演奏パートが複数チャンネルで構成されている場合にはその全チャンネルのシーケンスデータを消去する。
ステップ３Ｃ：ＣＰＵ１０はステップ３３及び３４で選択されたパートに対応するチャンネルのＣＴＡＢをＲＯＭ１１内のデフォルトＣＴＡＢに書き換える。なお、この書き換えの際、チャンネルナンバ、楽器名、パートナンバなどのようにそのＣＴＡＢ固有のデータはそのまま維持し、これ以外の値をデフォルトＣＴＡＢの値に書き換える。
【００３４】
ステップ３Ｄ：操作者はステップ３Ｂで消去されたシーケンスデータに代えて新たなシーケンスデータを記録したり、編集したりする。なお、新たなシーケンスデータの作成・記録・編集作業は鍵盤１Ａの操作に応じたリアルタイム入力（オーバーダビング処理）や図示していない他のスイッチ類の操作に応じたステップ入力処理、クリア処理又はクォンタイズ処理などによって行われる。
ステップ３Ｅ：操作者がノースイッチ『Ｎｏ』を操作したとステップ３９で判定されたので、ＣＰＵ１０はＬＣＤ２から上記メッセージを消去する。
ステップ３Ｆ：スタート／ストップスイッチが操作（オン）されたかどうかを判定し、操作された（ＹＥＳ）場合は処理を終了し、メインルーチン（図示せず）にリターンし、操作されていない（ＮＯ）場合はステップ３３にリターンし、ステップ３３以降の処理を繰り返し行う。
【００３５】
図４は操作者によってパネル１Ｂ上のスタート／ストップスイッチが操作され、自動演奏のスタートが指示された場合にＣＰＵ１０が行うスタート処理の一例を示す図である。このスタート処理では、電子楽器がこの実施例のように複数のリズムパート（リズム１パート及びリズム２パート）を有する場合において、音源回路１６が両方のパートの音をそれぞれ独立したＭＩＤＩチャンネルで発音可能な音源であっても、リズムパートの音がＭＩＤＩチャンネル番号『１０』の１つに固定されているＧＭ（Ｇｅｎｅｒａｌ  Ｍｉｄｉ）システムの音源であっても支障なく発音できるようにするための処理を行っている。
【００３６】
すなわち、リズム１パート及びリズム２パートのようにリズムパートが２つ存在し、かつ、音源回路１６がＧＭシステムの音源である場合には、両方のパートの音がＭＩＤＩチャンネル番号『１０』に出力されなければならない。このとき、両方のパートから同じタイミングで同時に発音してはならない複数のイベント（例えば、ハイハットのオープンとクローズ、同じ種類のイベントでベロシティが異なるものなど）が発生した場合には、時間的に後から出力されたイベントが優先的に発音されるようになる。そこで、この実施例では、例えば後述する図７のステップ７３及び７４の処理を行なうことにより、複数のリズムパートの内、いずれか一つをメインのリズムパートとし、残りのものをサブのリズムパートとして、同じタイミングでイベントが発生した場合にそのメインのリズムパートのイベントを最後に出力するようにした。これによって、メインのリズムパートの音が必ず発音されるようになるので、メインパートの演奏音が発音されないといった不都合がなくなり、音楽的に好ましい演奏が可能となる。
【００３７】
このスタート処理は次のようなステップで順番に実行される。
ステップ４１：図２（Ｂ）の初期設定データに基づいて、音源回路１６の各ＭＩＤＩチャンネルに音色などの各種設定を行う。
ステップ４２：現在の発音モードが第１の発音モードかどうかを判定し、第１の発音モード（ＹＥＳ）の場合は次ステップ４３に進み、第２の発音モード（ＮＯ）の場合はリターンする。ここで、第１の発音モードとは、リズム１パート及びリズム２パートの２つのリズムパートの演奏データを１つのＭＩＤＩチャンネル分の演奏データにマージして発音することであり、第２の発音モードとは、２つのリズムパートの演奏データをそれぞれ別々のＭＩＤＩチャンネルの演奏データとして発音することである。この発音モードは、図示していないモード選択スイッチの操作によって設定するか、又は音源回路１６がＧＭシステムの音源であるかどうかを検出して自動的に設定してもよい。この場合、音源回路１６がＧＭシステムの場合には第１の発音モードが選択され、そうでない場合には第２の発音モードが選択される。
【００３８】
ステップ４３：チャンネル番号『１０』がリズム１パートであるかどうかを判定し、リズム１パート（ＹＥＳ）の場合はステップ４５に進み、リズム１パート以外（ＮＯ）の場合はステップ４４に進む。
ステップ４４：ステップ４３でリズム１パートのチャンネル番号が『１０』以外のチャンネル番号『ｎ』であると判定されたので、ここではチャンネル番号『１０』の音色をリズム１パートの音色に変更し、変更前のチャンネル番号『１０』の音色をチャンネル番号『ｎ』の音色に変更する。すなわち、互いの音色を交換する。
【００３９】
ステップ４５：リズム１パート及びリズム２パートの演奏データがチャンネル番号『１０』となるように、チャンネル入れ替えテーブルを作成する。すなわち、ステップ４３でチャンネル番号『１０』がリズム１パートである（ＹＥＳ）と判定された場合にはリズム２パートの演奏データをチャンネル番号『１０』にするためのリズム２パートに関するチャンネル入れ替えテーブルを作成する。また、ステップ４３でチャンネル番号『１０』がリズム１パートでない（ＮＯ）と判定され、ステップ４４で音色交換が行われた場合にはリズム１パート及びリズム２パートの演奏データがチャンネル番号『１０』となるようにチャンネル入れ替えテーブルを作成する。また、ステップ４３の判定時点でチャンネル番号『１０』がリズム２パートであった場合には、ステップ４４の音色交換を行い、リズム１パートの演奏データをチャンネル番号『１０』にするためのリズム１パートに関するチャンネル入れ替えテーブルを作成する。
【００４０】
図５は４分音符当たり９６回のタイマ割り込みで実行される再生処理の一例を示す図である。この再生処理は次のようなステップで順番に実行される。
ステップ５１：タイミングレジスタＴＩＭＥの値が『０』かどうかを判定し、『０』（ＹＥＳ）の場合は図２（Ａ）のシーケンスデータから次のデータを読み出すタイミングになったことを意味するので次のステップ５２に進み、『０』以外（ＮＯ）の場合はステップ５Ｂに進む。
【００４１】
ステップ５２：ステップ５１でシーケンスデータの読み出しタイミングになったと判定されたので、ここでは、図２（Ａ）のスタイルデータの中から次のデータを読み出す。
ステップ５３：ステップ５２で読み出されたデータがデルタタイムデータであるかどうかを判定し、デルタタイムデータ（ＹＥＳ）の場合はステップ５８に進み、そうでない場合はステップ５４に進む。
【００４２】
ステップ５４：読み出されたデータがデルタタイムデータでないとステップ５３で判定されたので、今度はその読み出されたデータがセクションの区切りを示すマーカーであるかどうかの判定を行い、マーカー（ＹＥＳ）の場合はステップ５７に進み、マーカー以外の他のデータ（ＮＯ）の場合はステップ５５に進む。
ステップ５５：ステップ５４でセクション区切りでない（ＮＯ）と判定されたということは、ステップ５２で読み出されたデータがイベントデータであることを意味するので、ここでは、そのイベントを対応チャンネルのＣＴＡＢ及びノート変換テーブルに基づいて処理する。ただし、ノートイベント以外のイベントの場合はこのステップ５５の処理は省略する。
【００４３】
図６はステップ５５の処理の詳細を示す図である。この処理は次のようなステップで順番に実行される。
ステップ６１：ステップ５２で読み出されたノートイベントデータに対応するＣＴＡＢがＣＴＡＢ群の中に存在するかどうかを現在演奏中のセクション及びイベントデータ内のチャンネルナンバに基づいて判定し、存在する（ＹＥＳ）場合はステップステップ６３にジャンプし、存在しない（ＮＯ）場合はステップ６２に進む。
ステップ６２：ステップ６１で対応するＣＴＡＢが存在しないと判定されたので、ここではそのイベントに対するＣＴＡＢとしてデフォルトＣＴＡＢを適用する。
【００４４】
ステップ６３：ＣＴＡＢ内のパートナンバに基づいてそのＣＴＡＢがリズムパート以外であるかどうかを判定し、リズムパート以外のベースパート、コードパート（ＹＥＳ）の場合は次のステップ６４に進み、リズムパート（ＮＯ）の場合はリターンして図５のステップ５６に進む。
ステップ６４：操作者によって押鍵されている現時点のコードルート及びコードタイプに対応するＣＴＡＢ内のチャンネルスイッチデータが『１』（オン）であるかどうか、すなわち発音すべきパートか否かを判定し、チャンネルスイッチデータが『１』であり、発音すべきパートである（ＹＥＳ）と判定された場合には次のステップ６５に進み、『０』であり、発音しないパートである（ＮＯ）と判定された場合にはステップ６７に進む。
【００４５】
ステップ６５：ＣＴＡＢ内のノート変換テーブル種類のデータに基づいてノート変換テーブルを選択する。
ステップ６６：ＣＴＡＢ内のデータ、選択されたノート変換テーブル及び操作者によって押鍵されている現時点のコードルート及びコードタイプあるいは図示しないコードシーケンサにより再生されたコードルート及びコードタイプに基づいてノートデータを修正する。なお、ＣＴＡＢ内のソースルート及びソースタイプがシーメジャー７ｔｈ（Ｃｍａｊ７）でない場合には、一旦そのノートデータをソースルート及びソースタイプをシーメジャー７ｔｈ（Ｃｍａｊ７）に対応するように変換する。そして、変換されたノートデータをさらにノート変換テーブル並びに現時点のコードルート及びコードタイプに応じて修正して、図５のステップ５６に進む。
【００４６】
ステップ５６：ステップ５５（図６の処理）によってノートナンバが修正されたノートイベントをバッファに書き込み、ステップ５２にリターンする。
ステップ５７：ステップ５４でセクションの区切り（ＹＥＳ）であると判定されたということは、ステップ５２で読み出されたデータがセクションの区切りを示すマーカーであると判定されたことを意味するので、そのセクションの先頭へ移行するか、又は終了する。先頭へ移行する場合は該セクションの先頭のデルタタイムを読み出し、タイミングレジスタＴＩＭＥへ格納した後、次の割り込みタイミングまで待機する。
【００４７】
ステップ５８：読み出されたデータがデルタタイムデータであるとステップ５３で判定されたので、ここでは、そのデルタタイムデータをタイミングレジスタＴＩＭＥに格納する。
ステップ５９：タイミングレジスタＴＩＭＥの格納値が『０』かどうか、すなわち、ステップ５２で読み出されたデルタタイムデータが『０』かどうかを判定し、『０』（ＹＥＳ）の場合は同じタイミングに該当するので、ステップ５２にリターンし、そのデルタタイムに対応するイベントデータを読み出してステップ５４〜５７の処理を行い、『０』以外（ＮＯ）の場合はステップ５Ａに進む。
【００４８】
ステップ５Ａ：バッファ内のデータを音源回路１６に出力し、ステップ５Ｂへと進む。
ステップ５Ｂ：ステップ５１でタイミングレジスタＴＩＭＥの値が『０』でないと判定されたか、又はステップ５８で『０』以外の値がタイミングレジスタＴＩＭＥに格納されてステップ５９でタイミングレジスタＴＩＭＥの値が『０』でないと判定されたので、ここでは、そのタイミングレジスタＴＩＭＥの値を１だけデクリメント処理してリターンし、次の割り込みタイミングまで待機する。
図７はこのステップ５Ａの処理の詳細を示す図である。この処理は次のようなステップで順番に実行される。
ステップ７１：発音モードは第１の発音モードかどうかを判定し、第１の発音モード（ＹＥＳ）の場合は次のステップ７２に進み、第２の発音モード（ＮＯ）の場合はステップ７５にジャンプする。
【００４９】
ステップ７２：ステップ７１で第１の発音モード（ＹＥＳ）と判定されたので、図４のステップ４５の処理によって作成されたチャンネル入れ替えテーブルに基づいてチャンネル番号の入れ替えを行う。これにより、リズム１パート及びリズム２パートのイベントのチャンネル番号は『１０』に変更される。
ステップ７３：リズム１パートとリズム２パートのノートオンイベントが両方バッファ内に存在するかどうかを判定し、存在する（ＹＥＳ）場合はステップ７４に進み、存在しない（ＮＯ）場合はステップ７５に進む。つまり、前述した通り、リズム１パート及びリズム２パートは、同じリズムパートであるため、両方のパートで同じタイミングで同時に発音してはならない、つまり相容れない、複数のイベント（例えば、ハイハットのオープンとクローズ、同じ種類のイベントでベロシティが異なるものなど）が発生される可能性がある。そこで、このステップ７３では、リズム１パートとリズム２パートのノートオンイベントが両方バッファ内に存在するかどうかを判定することで、該イベント同士が相容れない関係であることを判定しているのである。
【００５０】
ステップ７４：イベントの出力順序、すなわちリズム２パートのノートイベントの方がリズム１パートのノートイベントよりも先に出力されるように、バッファ内のデータ並びを変更する。すなわち、この実施例ではリズム１パートを優先度の高いパートとするようにしている。
ステップ７５：バッファ内のノートオンイベントをバッファ内の並び順に従って音源回路１６に出力し、次の割り込みタイミングまで待機する。
【００５１】
このステップ７４及び７５の処理によって、両方のリズム１パート及びリズム２パートから同じタイミングでイベントが発生した場合でも、リズム１パートのイベントの方がリズム２パートのイベントよりも後で出力されるようになるので、両パートのイベントが同じ発音タイミングに相当し、かつ、そのイベント同士が互いに相容れない関係にある場合（例えば、両イベントがハイハットオープンイベントとハイハットクローズイベントである場合や両イベントが同一種類のイベントでベロシティだけが異なる場合など）には、音源回路１６はリズム１パートのイベントに対応した発音だけを優先的に行うようになる。
なお、ここでは、リズム１パート及びリズム２パートのノートイベントの出力タイミングを調整する場合について説明したが、そのイベント同士が互いに相容れない関係にある場合はリズム２パートのノートイベントを消去してもよいことはいうまでもない。
【００５２】
また、上述の実施例では音源回路及び自動演奏装置を内蔵した電子楽器について説明したが、自動演奏処理を行うシーケンサモジュールと、音源回路からなる音源モジュールとがそれぞれ別々に構成され、各モジュール間のデータの授受を周知のＭＩＤＩ規格で行うように構成されたものにも同様に適用できることは言うまでもない。
さらに、上述の実施例では、本発明をリズム、ベース、コードパート等からなる演奏データを繰り返し読み出す自動伴奏に適用した場合について説明したが、これに限らずシーケンサタイプの自動演奏に適用してもよいことは言うまでもない。
【００５３】
上述の実施例では、パートエディットビット（ＰＥＢ）を各チャンネル毎に持たせる場合について説明したが、パート毎に持たせるようにしてもよい。すなわち、実施例ではチャンネル毎に各チャンネルがどのパートに属するかなどの情報を持たせるようにしたが、パート毎にどのチャンネルがそのパートに属するかなどの情報を持たせ、そこにそのパートをエディットしてもよいか否かを示す情報を持たせるようにしてもよい。
また、リズムパートの数は３つ以上であってもよい。その場合、各パートの間に優先度を付与し、優先度の高いパートの音が優先的に発音されるようにすればよい。
【００５４】
また、上述の実施例では、リズムパートがリズム１パート及びリズム２パートの２以上の場合について両パートのイベントをマージして発音する場合について説明したが、これ以外のパート（ベースパート、コード１パート）についても同様にマージして発音してもよいことはいうまでもない。また、複数パートのイベントをマージして発音する場合だけでなく、複数チャンネルのイベントをマージして発音する場合にも同様に優先チャンネルを設定し、そのチャンネルのイベントを優先的に発音するようにしてもよい。
【００５５】
【発明の効果】
この発明によれば、音楽的に不都合のない演奏をすることができるという効果がある。
【図面の簡単な説明】
【図１】  この発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。
【図２】  図１のＲＯＭ及びＲＡＭに記憶されているスタイルデータの内容及びデフォルトＣＴＡＢの内容を示す図である。
【図３】  図１のパネル上の各スイッチの操作に応じて図１の電子楽器のＣＰＵが処理するカスタムスタイル作成処理の一例を示す図である。
【図４】  操作者によってパネル上のスタート／ストップスイッチが操作され、自動演奏のスタートが指示された場合にＣＰＵが行うスタート処理の一例を示す図である。
【図５】  ４分音符当たり９６回のタイマ割り込みで実行される再生処理の一例を示す図である。
【図６】  図５のステップ５５の処理の詳細を示す図である。
【図７】  図５のステップ５Ａの処理の詳細を示す図である。
【符号の説明】
１０…ＣＰＵ、１１…ＲＯＭ、１２…ＲＡＭ、１３…押鍵検出回路、１４…スイッチ検出回路、１５…表示回路、１６…音源回路、１７…タイマ、１８…ＭＩＤＩインターフェイス、１９…ディスクドライブ、１Ａ…鍵盤、１Ｂ…パネル、１Ｃ…サウンドシステム、１Ｄ…データ及びアドレスバス、２…ＬＣＤ
【図１】
0003669335.tif 000002
【図２】
0003669335.tif 000003
【図３】
0003669335.tif 000004
【図４】
0003669335.tif 000005
【図５】
0003669335.tif 000006
【図６】
0003669335.tif 000007
【図７】
0003669335.tif 000008