以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図1は、この発明に係る自動演奏装置を適用した電子楽器の全体構成の一実施例を示したハード構成ブロック図である。本実施例に示す電子楽器は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータによって制御される。なお、この実施例に示す電子楽器は、自動演奏用のチャンネルとして例えば16チャンネル分の同時発音が可能である。すなわち、16種類の演奏データを同時再生することが可能となっている。
CPU1は、この電子楽器全体の動作を制御するものである。このCPU1に対して、通信バス1D(例えばデータ及びアドレスバス)を介してROM2、RAM3、検出回路4,5、表示回路6、音源回路7、効果回路8、外部記憶装置9、MIDIインタフェース(I/F)10、通信インタフェース(I/F)11がそれぞれ接続されている。ROM2は、CPU1により実行あるいは参照される各種制御プログラムや各種データ等を格納する。例えば、ナンバ「01」〜「99」までが付された99個の自動伴奏用のスタイルデータ(後述する図2参照)、複数の「ノート変換テーブル(NTT:Note Transposition Table)」(後述する図3参照)や図示を省略した複数の「ノート変換ルール(NTR:Note Transposition Rule)」、さらにはその他の楽音に関する各種のパラメータやデータなどを記憶する。RAM3は、CPU1が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。
勿論、スタイルデータ以外の各種の自動演奏のデータ(例えば、ソングデータ、あるいはメロディシーケンスやコード(和音)シーケンスなど)が、ROM2及び/又はRAM3に記憶されるようになっていてよい。これらについては特に詳しく説明しないが、どのような種類の自動演奏においても、以下で説明する実施の形態に準じて、及び必要に応じて適宜変形した形態で、本発明を適用することができる。なお、和音演奏は、自動伴奏演奏と同時に、演奏操作子4Aをリアルタイムに押鍵操作して演奏入力するか、あるいは所望の和音シーケンス演奏を図示しないコード(和音)シーケンサに記憶しておき、これを再生読出しすることによって適宜行われるようにしてもよい。
演奏操作子4Aは、楽音の音高を選択するための複数の鍵を備えた例えば鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子4A(鍵盤等)は、ユーザの手弾きによるマニュアル演奏や自動伴奏演奏のためのコード指定(入力)に使用できるのは勿論のこと、自動伴奏用のスタイルデータや自動伴奏対象のセクション(例えばイントロ、メイン、フィルイン、エンディング)等を選択する手段、あるいは音色や効果等を設定する手段などとして使用することもできる。パネル操作子5Aは、自動伴奏用のスタイルデータを選択するスタイル選択スイッチ、自動伴奏対象のセクションを指定するセクション選択ボタン、さらには自動演奏の開始・停止を指示する「自動演奏開始/停止」スイッチ等の各種の操作子である。勿論、パネル操作子5Aは上記した以外にも、音高、音色、効果等を選択・設定・制御するための数値データ入力用のテンキーや文字データ入力用のキーボードなどの各種操作子を含んでいてもよい。検出回路5は、上記パネル操作子5Aの操作状態を検出し、その操作状態に応じたスイッチ情報等をデータ及びアドレスバス1Dを介してCPU1に出力する。
表示回路6は、例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイ6Aに、上記パネル操作子5Aの操作に応じた各種画面を表示するのは勿論のこと、ROM2やRAM3さらには外部記憶装置9に記憶されている各種データあるいはCPU1の制御状態などを表示する。ユーザはディスプレイ6Aに表示されるこれらの各種情報を参照することで、スタイルデータの選択や各種演奏パラメータの設定などを容易に行うことができる。
音源回路7は複数のチャンネル(この実施例では16チャンネル)で楽音信号の同時発生が可能であり、データ及びアドレスバス1Dを経由して与えられた、ユーザによる演奏操作子4Aの操作に応じて発生される演奏データ、あるいはスタイルデータに基づく演奏データを入力し、これらの演奏データに基づいて楽音信号を発生する。そして、16個の自動演奏用のチャンネル(例えばMIDIチャンネル)に対応し、同時に16種類の音色(パート)にて楽音の発生が可能である。音源回路7から発生された楽音信号は、効果回路8を介して効果付与されてアンプやスピーカなどを含むサウンドシステム8Aから発音される。この音源回路7と効果回路8とサウンドシステム8Aの構成には、従来のいかなる構成を用いてもよい。例えば、音源回路7はFM、PCM、物理モデル、フォルマント合成等の各種楽音合成方式のいずれを採用してもよく、また専用のハードウェアで構成してもよいし、CPU1によるソフトウェア処理で構成してもよい。
外部記憶装置9は、例えば自動伴奏用のスタイルデータ(図2参照)あるいは「ノート変換テーブル(NTT)」(図3参照)などの各種データや、CPU1が実行する各種制御プログラム等を記憶する。なお、上述したROM2に制御プログラムが記憶されていない場合、この外部記憶装置9(例えばハードディスク)に制御プログラムを記憶させておき、それをRAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、外部記憶装置9はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD‐ROM・CD‐RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の様々な形態の記憶媒体を利用する記憶装置であればどのようなものであってもよい。あるいは、フラッシュメモリなどの半導体メモリであってもよい。
MIDIインタフェース(I/F)10は、外部接続された他のMIDI機器10A等からMIDI形式の演奏データ(MIDIデータ)を当該電子楽器へ入力したり、あるいは当該電子楽器からMIDIデータを他のMIDI機器10A等へ出力するためのインタフェースである。他のMIDI機器10Aは、ユーザによる操作に応じてMIDIデータを発生する機器であればよく、鍵盤型、ギター型、管楽器型、打楽器型、身振り型等どのようなタイプの操作子を具えた(若しくは、操作形態からなる)機器であってもよい。
通信インタフェース(I/F)11は、例えばLANやインターネット、電話回線等の有線あるいは無線の通信ネットワークXに接続されており、該通信ネットワークXを介してサーバコンピュータ11Aと接続され、当該サーバコンピュータ11Aから制御プログラムあるいは各種データなどを電子楽器側に取り込むためのインタフェースである。すなわち、ROM2や外部記憶装置9(例えば、ハードディスク)等に制御プログラムや各種データが記憶されていない場合には、サーバコンピュータ11Aから制御プログラムや各種データをダウンロードするために用いられる。こうした通信インタフェース11は、有線あるいは無線のものいずれかでなく双方を具えていてよい。
なお、本実施例に係る自動演奏装置を電子楽器に適用した場合、演奏操作子4Aは鍵盤楽器の形態に限らず、弦楽器や管楽器等どのようなタイプの形態でもよい。また、演奏操作子4Aやディスプレイ6Aあるいは音源回路7などを1つの装置本体に内蔵したものに限らず、それぞれが別々に構成され、通信インタフェースや各種ネットワーク等の通信手段を用いて各装置を接続するように構成されたものにも同様に適用できることはいうまでもない。
なお、本発明に係る自動演奏装置は上記したような電子楽器の形態に限らず、カラオケ装置やゲーム装置、あるいは携帯電話等の携帯型通信端末、自動演奏ピアノなど、どのような形態の電子楽器・機器に適用してもよい。また、パーソナルコンピュータとアプリケーションソフトウェアという構成であってもよい。
次に、上記した電子楽器において採用するスタイルデータについて、図2を用いて説明する。図2は、スタイルデータのデータ構成の一実施例を示す概念図である。図2(a)に示すように、スタイルデータ(ファイル)は、演奏スタイル(例えば、ポップス、ロック、ジャズ、ワルツなどのリズム種類に対応した伴奏スタイル)毎に設けられている。
図2(b)に示すように、1つのスタイルデータはヘッダチャンク、トラックチャンク及びCTAB群から構成される。ヘッダチャンクには、例えばデータ形式やスタイルデータ内のトラック数や時間情報の時間分解能などが記憶される。トラックチャンクは図2(c)に示すように、初期設定データである「Initial Setupのイベント群」と、各セクション(イントロ、メイン、フィルイン、エンディング)の伴奏パターンデータである「Source patternのイベント群とそのタイミング情報」とで構成されている。初期設定データは、各チャンネルの音色、演奏パート名、初期テンポなどのデータで構成される。イントロパターンデータは、イントロ演奏(イントロセクション)の伴奏パターンである。メインパターンデータは繰り返し演奏されるメインセクションの伴奏パターンであり、例えば1フレーズ分の演奏区間の短いデータである。図示を省略したが、フィルインパターンデータはフィルイン演奏(フィルインセクション)の伴奏パターンであり、またエンディングパターンデータはエンディング演奏(エンディングセクション)の伴奏パターンである。勿論、これら以外の伴奏セクションがあってもよいことは言うまでもない。また、これらの初期設定データとセクション毎の伴奏パターンデータのそれぞれには、メモリにおける各データの区切りを示すマーカデータを含む「マーカ」が付されている。この「マーカ」には、該「マーカ」に続いて記憶されている各データが初期設定データであるか、あるいはイントロ、メイン、フィルイン、エンディングなどのどのセクションであるかを示す種類情報などが含まれている。
各セクションのパターンデータは、図2(d)に示すように、イベントデータ(Source patternのイベント群)とデルタタイムデータ(タイミング情報)とが演奏順に並べられたシーケンスデータである。イベントデータはその内容によって複数種類に分けられるが、ここでは主に、ノートオン、ノートオフ、プログラムチェンジ、ボリューム、エフェクトなどの自動演奏を指示するデータである。例えばノートイベントは、ノートオン/オフと「1」〜「16」のチャンネル番号、ノートナンバ及びベロシティなどで構成される。他のイベントデータの場合も、そのイベントを示すデータやチャンネル番号などで構成される。デルタタイムデータは、イベントとイベントとの間の時間を示すデータである。
CTAB群は、図2(e)に示すように、各セクション(イントロ、メイン、フィルイン、エンディング)毎に、「1」〜「16」のチャンネルに対応するだけの複数のCTAB(Channel Table)から構成される。「1」〜「16」のチャンネルに対応する各CTABに設定される情報はノート変換に関する情報であって、図2(f)に示すように、チャンネルナンバ(Channel#)、ソースコードルート(Source Chord Root)、ソースコードタイプ(Source Chord Type)、NTRスプリットポイントの下限(LS:Lower Split point)及び上限(US:Upper Split point)、NTR情報及びNTT情報、ノートリミットの下限(Low Limit)及び上限(High Limit)、パート情報、その他の情報等である。これらの情報の具体的な設定例については後述する(後述する図5又は図8参照)。
チャンネルナンバはMIDIチャンネルに対応する「1」〜「16」のいずれかのナンバであり、1つのセクション内の複数のCTABにおいて、各チャンネルナンバは全て異なる固定ナンバで定義される。ソースコードルートは、そのチャンネルのシーケンスデータ(伴奏パターンデータ)がどのコードルート(和音の根音)で作成されたかを示すものであって、デフォルト値は例えば「C」である。ソースコードタイプは、そのチャンネルのシーケンスデータ(伴奏パターンデータ)がどのコードタイプ(和音の種類)で作成されたかを示すものであって、デフォルト値は例えばメジャー7th(maj7)である。従来知られているように、これらのソースコードルート及びソースコードタイプに基づいて、シーケンスデータがどのようなコードルート、コードタイプで作成されている場合であっても、そのシーケンスデータをCメジャー7thの音(ノート変換を行うときの基準の音)に変換することができるようになっている。
NTRスプリットポイントの下限及び上限(分割情報)は、複数の音高範囲(これをゾーンと呼ぶ)を定義するためのものであって、音高(音名)により定義されている。前記ゾーンの境目とする音高をNTRスプリットポイントと呼び、ここでは下限と上限の2つのNTRスプリットポイントを定義することによって、該電子楽器において発音可能な全ての音高範囲(例えば、C-2〜G8)を最大3つのゾーン(zone1〜zone3)に分けることができるようにしている。勿論、より多くのゾーンに分けるように、NTRスプリットポイント(分割情報)を定義することができるようになっていてもよい。詳しくは後述するが(後述する図7参照)、前記ゾーン(zone1〜zone3)は、自動演奏時においてノート変換によってノートナンバを変換する際に、変換前のノートナンバに応じて適用すべきノート変換方法を異ならせて適用するために、ノート変換前のノートナンバ(具体的にはノートナンバに応じた音高)を所定の複数の音高範囲のいずれかに分類するために用いられるものである。
NTR情報は、複数の公知のノート変換ルール(例えば、「Root Transposition Rule」,「Root Fixed Rule」,「その他のRule」など)の中から、どのルールを用いてノート変換を行うのかを指定する情報である。NTT情報は、複数のノート変換テーブルの中から、どのテーブルを用いてノート変換を行うのかを指定する情報である。このNTR情報及びNTT情報に従って指定されるノート変換ルールとノート変換テーブルとの組み合わせに応じて、複数の異なるタイプのノート変換方法の中から1つのノート変換方法(変換態様)が決まる。ノートリミットの下限及び上限はノート変換によってノートナンバを変換した場合に、変換後のノートナンバの範囲がある音域内に収まるように、その音域の下限(Low Limit)及び上限(High Limit)を規定するものである。ここに示す実施例においては、各チャンネルのCTABに、NTR情報及びNTT情報(さらにはノートリミットの下限及び上限)が複数のゾーン(zone)毎に含まれている。つまり、1つのチャンネルに対して、異なる設定でのノート変換を行い得る複数の「コード変換情報」が対応付けられている。
図2(g)に示すように、各ゾーン(zone1〜zone3)において楽音を発生すべき音域を制限する音域の下限(Low Limit)及び音域の上限(High Limit)の各々のパラメータは、「制限値情報」と「オクターブシフト又は無発音の指定情報」とを含んでなる。「制限値情報」は既に説明したように、適用される音色やパート等のそれぞれにふさわしい音域で楽音を発音させるために、使用する音域の下限又は上限を音高(例えばMIDIノートナンバ等)により指定するパラメータである。ノート変換処理時には、該制限値に従う範囲内にある音高(音名)のいずれかに音高が変換される。「オクターブシフト又は無発音の指定情報」は、上記制限値情報に基づく音域の下限を下回る又は上限を上回る音高のデータが生成された場合(本実施例ではコードに基づくノート変換後のデータの音高が上記制限値情報に基づく音域の下限を下回る又は上限を上回る場合)に、該データの処理態様を指定するパラメータである。前記指定情報はデータの処理態様として、「オクターブシフト」又は「無発音」のいずれかを指定する。「オクターブシフト」を指定している場合には、下限を下回る音高についてはオクターブアップし、上限を上回る音高についてはオクターブダウンさせることにより音高変換(オクターブ折り返し)を行い、該音高変換後のデータに基づき楽音を発生する。他方、「無発音」を指定している場合には、オクターブシフトによる音高変換(オクターブ折り返し)を行うことなく、音高変換後のデータに基づく楽音発生を行わない。詳しくは後述する。
ここで、上記NTT情報に従って指定されるノート変換テーブルの一実施例を図3に示す。図3(a)に示すように、NTT(ノート変換テーブル)は「ベース(Bass)」、「コード(Chord)」、「メロディ(Melody)」の3種類のいずれかに分類されている。こうしたNTTの種類は、上記したゾーン(zone)の数に対応するだけのものが用意されているとよいが、これに限られるものではない。ここでは上記3つのゾーン(zone1〜zone3)に対応する3種類のNTTが予め用意されている例を示している。上記3種類の各NTTはそれぞれ、図3(b)に示すような属性が「コード音」のノート変換テーブル、図3(c)に示すような属性が「スケール音」のノート変換テーブル、図3(d)に示すような属性が「ノンスケール音」のノート変換テーブルを含む。公知のように、各NTTには属性に応じたインデックスが付されており、テーブル内容としては、和音の種類毎に応じてノートナンバのシフトデータ(0,-1,-2,…)を記憶している。
また、伴奏パターンデータのノートナンバを、和音に対応させて上記属性のいずれかに分類するための分類テーブル(Applicable Scale Table)が従来知られている。公知であるが、この分類テーブルの一例を図4に示す。この分類テーブルも「ベース(Bass)」、「コード(Chord)」、「メロディ(Melody)」の3種類のいずれかに分類されていて、それぞれ各和音の種類(Maj,Maj6,Maj7,…)に対して各音名(C,C♯,D,D♯,…)が「コード音(c)」、「スケール音(s)」及び「ノンスケール音(n)」の何れかの属性を有するかを分類したものである。自動伴奏時には、伴奏パターンデータから読み出したノートナンバにより分類テーブルを参照して、このノートナンバを和音の種類に応じてコード音、スケール音及び非スケール音の何れかに分類する。そして、この分類に対応するそれぞれのノート変換テーブルを参照してノート変換が行われる。
図2の説明に戻って、パート情報はどの演奏パートに関するデータであるかを示すパートナンバ等であり、スタイルのアウトプットパートに対応する。例えば、パートナンバが「1,2」である場合にはリズムパート1,2に、「3」である場合にはベースパートに、「4,5」である場合にはコードパート1,2に、「6,7」である場合にはフレーズメロディパート1,2に対応する。勿論、演奏パート(アウトプットパート)はこれに限らない。その他の情報としては、例えば現在押鍵中のコードルート及びコードタイプが特定の種類である場合に、そのチャンネルの発音を行うように設定するための所謂「チャンネルスイッチ」(例えば、「0」である場合に当該チャンネルの発音を行わないものと機器設定する)等がある。
ここで、各チャンネルのCTABに設定されるノート変換に関する情報について、具体的な設定例を図5に示す。図5は、CTABに設定されるデータ内容の具体例を説明するための概念図である。この実施例では特殊な音色「Mega Guitar音色」を用いる場合に、図5(b)に示すようにして2分割した各音高範囲において、「C-2」〜「B5」までの低音側のゾーン(zone2)を通常の楽器音色でコードパートの楽音を発生する範囲、「C6」〜「G8」までの高音側のゾーン(zone3)を効果音(奏法依存音色)を発生する範囲としたい場合の設定例について説明する。なお、便宜的に、チャンネルナンバはMIDIチャンネル「1」、ソースコードルートはデフォルト値「C」、ソースコードタイプはデフォルト値メジャー7th(maj7)とした。
図5(b)に示すようにして、音高範囲を「zone2」と「zone3」とに2分割する場合、NTRスプリットポイントの下限に「C-2」、NTRスプリットポイントの上限に「C6」をそれぞれ設定する。この場合、NTRスプリットポイントの下限に当該電子楽器で発音可能な音高範囲のうち最低音である「C-2」を設定することで、音高範囲を2分割している。ここではzone1を使用しないものとして、zone1に関してNTR情報,NTT情報、ノートリミットの下限(Llim)及び上限(Hlim)についてそれぞれ「ignored(無視)」と設定する。範囲「zone2」に関しては、通常の楽器音色でコードパートの楽音を発生する範囲としたいことから、ノート変換を行う設定とする。すなわち、NTR情報に「Root Transposition Rule」を、NTT情報に「Chord」を設定する。なお、ここではノートリミットの下限及び上限に「C-2」,「C6」(つまりzone2全体)を設定してある。他方、範囲「zone3」に関しては、効果音(奏法依存音色)を発生する範囲としたいことから、ノート変換をしない設定とする。すなわち、NTR情報に「Root Fixed Rule」を、NTT情報に「Bypass(NTTを参照しない)」を設定する。
次に、本実施例に示す電子楽器において、伴奏パターンデータと入力されたコードとに応じて、音高を変換しながら自動伴奏を実行する処理について、図6及び図7を用いて説明する。図6は、「メイン処理」の一実施例を示すフローチャートである。当該処理はCPU1によって実行される処理であって、電子楽器本体の電源オンに応じて開始され、電子楽器本体の電源オフに応じて終了される。
ステップS1は、初期設定を実行する。初期設定としては、レジスタのクリアや電源オン時における現状の設定状態の初期設定などがある。具体的には、自動伴奏を行うことが可能な状態であるか否かを表す伴奏中フラグを「FALSE(偽:自動伴奏できない状態)」に設定する、あるいはデフォルトのデータとして予め指定されている伴奏パターンデータやセクションを利用できるように機器設定するなどである。ステップS2は、ユーザの手弾きによる演奏操作に応じて発生されたあるいは外部機器から取得した演奏情報(MIDIデータ)に応じて、楽音生成する。ステップS3は、ユーザによるスタイル選択スイッチ等の操作に応じて該当のスタイルデータ(ファイル)を読み込み、RAM3等に一時記憶し演奏に反映させるよう準備する。ステップS4は、伴奏中フラグが「TRUE(正:自動伴奏可能な状態)」であるか否かを判定する。
伴奏中フラグが「TRUE」でないと判定された場合には(ステップS4のno)、自動伴奏開始操作(ユーザによる自動演奏開始/停止スイッチ等の操作)がなされたか否かを判定する(ステップS5)。自動伴奏開始操作がなされていないと判定した場合には(ステップS5のno)、自動伴奏を演奏に反映する必要がないので特に自動伴奏に関する処理(後述する割り込み処理)の実行を許可することなしに、ステップS2の処理に戻る。一方、自動伴奏開始操作がなされたと判定した場合には(ステップS5のyes)、演奏対象のセクションを「イントロA」に初期設定すると共に(ステップS6)、前記ユーザが指定したスタイルデータにおける該セクション「IntroA」の先頭位置に演奏位置を初期セットする(ステップS7)。ステップS8は、前記ユーザが指定したスタイルデータにおけるトラックチャンク内の「Initial Setup」に従う設定を行う。ステップS9は、伴奏中フラグを「TRUE」にセットする。ステップS10は、自動伴奏を実現する「割り込み処理」による該「メイン処理」へのタイマ割り込み実行を許可する。これらステップS6〜ステップS10までの一連の処理は、自動伴奏処理を行うための準備処理である。
上記ステップS4において、伴奏中フラグが「TRUE」であると判定された場合には(ステップS4のno)、自動伴奏停止操作(ユーザによる自動演奏開始/停止スイッチ等の操作)がなされたか否かを判定する(ステップS11)。自動伴奏停止操作がなされたと判定した場合には(ステップS11のyes)、伴奏中フラグを「FALSE」にセットし(ステップS12)、「割り込み処理」による該「メイン処理」へのタイマ割り込み実行を禁止する(ステップS13)。一方、自動伴奏停止操作がなされていないと判定した場合には(ステップS11のno)、タイマ割り込みを許可した状態を維持したままで、ユーザによるスタイル選択に応じて指定されたスタイルデータをROM2等から読み出してバッファに保持する(ステップS14)。そして、ユーザによるセクション指定に応じて、さらに指定されたセクションの伴奏パターンデータのみを次の演奏対象としてバッファに保持する(ステップS15)。上記ステップS13又はステップS15の処理終了後は共に、ステップS2の処理に戻る。
次に、自動伴奏を実現する「割り込み処理」について、図7を用いて説明する。図7は、「割り込み処理」の一実施例を示すフローチャートである。当該処理は、「メイン処理」におけるタイマ割り込み許可(図6のステップS10)に応じて、前記「メイン処理」の実行中であっても優先的に処理される。
ステップS21は、ユーザによるコード鍵域の演奏操作に応じて(あるいは別途記憶されている和音進行データ等に応じて)、出力する伴奏のコード(詳しくはコードタイプとルート(根音))を決定する。ステップS22は、指定されたデータのトラックチャンクを参照して、「Source patternのイベント群とそのタイミング情報」において、現在の演奏位置に対応するイベントがあるか否かを判定する。現在の演奏位置に対応するイベントがあると判定した場合には(ステップS22のyes)、セクション指定とノートイベント内に定義されているチャンネル番号とにより「CTAB」を特定する(ステップS23)。一方、現在の演奏位置に対応するイベントがないと判定した場合には(ステップS22のno)、自動伴奏の停止処理がなされたか否かを判定する(ステップS37)。自動伴奏の停止処理がなされたと判定した場合には(ステップS37のyes)、それ以上自動伴奏を続ける必要がないために、当該処理を終了する。自動伴奏の停止処理がなされていないと判定した場合には(ステップS37のno)、ステップS22の処理に戻って本処理を続ける。
ステップS24は、指定されたデータのトラックチャンクの「Source patternのイベント群とそのタイミング情報」において、現在の演奏位置に対応するイベントが「ノートイベント」であるか否かを判定する。「ノートイベント」でないと判定した場合には(ステップS24のno)、ステップS36の処理に移る。「ノートイベント」であると判定した場合には(ステップS24のyes)、ノートイベントのノートナンバと「CTAB」のNTRスプリットポイントの下限「LS」と上限「US」とを比較し、当該ノート(ノートナンバに応じた音高)が属する所定の音高範囲であるゾーン(zone)を決定する(ステップS25)。そして、ノートイベントのノートナンバと「CTAB」のソースコード情報(Source Chord RootとSource Chord Type)とを元に、図4に示した「分類テーブル(Applicable Scale Table)」のうち前記決定したゾーン(zone)のNTT情報に対応したテーブルを参照し、コード音(c)、スケール音(s)及びノンスケール音(n)の何れかにノートの属性を決定し(ステップS26)、前記決定したゾーン(zone)に対応する「CTAB」のNTT情報と前記決定したノートの属性とから、ノート変換処理の際に用いるべき「NTT」を決定する(ステップS27)。
ステップS28は、ゾーン(zone)に対応する「CTAB」内のNTR情報に応じて異なるタイプのノート変換処理をそれぞれ実行するよう、NTR情報毎に処理を振り分ける。
ここで、NTR情報が「Root Transposition Rule」と設定されている場合には、該当するノート変換ルール「Root Transposition Rule」に則り、またコードタイプとルートとでNTTを参照しながら、ノート変換処理を実行する(ステップS29)。NTR情報が「Root Fixed Rule」と設定されている場合には、該当するノート変換ルール「Root Fixed Rule」に則り、コードタイプとルートとでNTTを参照しながら、ノート変換処理を実行する(ステップS30)。NTR情報が「Root Transposition Rule」及び「Root Fixed Rule」以外の「その他のRule」(例えば、単純なオクターブシフトなど)と設定されている場合には、該当するノート変換ルール「その他のRule」に則りノート変換処理を実行する(ステップS31)。この場合には、NTTを参照しないでよい。こうした各変換ルール(NTR)や変換テーブル(NTT)に従ってのノート変換処理は公知のどのような方法のものであってもよいことから、ここでの説明を省略する。
ステップS32は、上記ノート変換処理によるノート変換後の音高が前記決定したゾーン(zone)に対応する「CTAB」の音域の下限(Low Limit)又は音域の上限(High Limit)の各制限値(図2(g)参照)を超えるか否か、つまり下限の制限値が指定されている場合には該下限値を下回るか否か、上限の制限値が指定されている場合には該上限値を上回るか否かをそれぞれ判定する。ノート変換後の音高が制限値を超える、つまり下限値を下回るか上限値を上回るかしている場合には(ステップS32のyes)、前記「CTAB」の音域の下限(Low Limit)又は音域の上限(High Limit)の指定情報が「オクターブシフト」と設定されているか否かを判定する(ステップS33)。指定情報が「オクターブシフト」と設定されていると判定した場合には(ステップS33のyes)、上記ノート変換処理によるノート変換後の音高をさらにオクターブシフトする(ステップS34)。この際には、下限値を下回る場合にオクターブアップを行い、上限値を上回る場合にオクターブダウンを行うが、上記ノート変換処理によるノート変換後の音高が前記制限値に基づく音域内に収まるまで、前記オクターブシフトを1乃至複数回実行する。具体的には図9(a)に示すように、「High limit」が例えば「A4」に定義されている場合において、コードに基づく変換後の音高が「B4」であるとすると、当該音「B4」はさらにオクターブダウンされることによって「B3」へと音高変換される(図中において矢印で示す)。ただし、図9(a)に示した例は従来例と同様であって、発生される楽音に音のうなり(フランジング)等の不具合が生ずる。
一方、指定情報が「オクターブシフト」と設定されていないと判定した場合には(ステップS33のno)、上記ノート変換処理の対象とされた当該ノートを発音しないように処理する(ステップS35)。勿論、当該ノートを発音しないように処理する方法としては、音源回路7に当該ノート(イベント)を送らない、当該ノートを無視するよう機器設定する、あるいは当該ノートに関するデータを削除すると共に前後する他のノートに関するデータを更新する等、どのような方法であってもよい。ステップS36は、「CTAB」内のPart情報で指定された音源のチャンネルを指定して、音源回路7にイベントを送る。イベントを送られた音源回路7は、チャンネル毎にイベントをマージして楽音生成に反映させる。その後、ステップS22の処理に戻る。ただし、発音しないように処理されたノートについては音源回路7にイベントを送らない。その場合には図9(b)に示すように、「High limit」が例えば「A4」に定義されている場合において、コードに基づく変換後の音高が「B4」であるとすると、当該音「B4」はさらにオクターブダウンされることなく、単に発音がなされないだけである(図中において×印で示す)。このように、音高変換することによって同音重複が生じた場合にそれぞれが異なるオクターブラインのうちのいずれか1音を発音せずに単音発音とすることになるが、これは音楽的に自然な音の遷移であるので問題ない。また、発生される楽音に音のうなり(フランジング)等の不具合が生ずることもない。
以上のように、本実施の形態によれば、1つのチャンネルに対して複数の異なるノート変換に関する情報を所定の音高範囲毎に対応付けておき、自動伴奏時においてノート情報を予め決められた複数の音高範囲に分類し、該音高範囲毎に対応付けられているノート変換に関する情報に従ってノート変換処理を行うようにした。これにより、コードに基づいて自動演奏音のノート変換を行う際には、1つのチャンネルにおいて複数の異なるタイプ(変換態様)のノート変換を行うことができ、効果音(奏法依存音色)を含む特殊な音色であっても1つのチャンネルで制御することができるので、チャンネルを無駄に使用することがない。また、ユーザは楽器音色用の伴奏パターンデータと効果音用の伴奏パターンデータとを別データとして用意する必要がないことからデータ作成が容易になる、という利点もある。
また、ノート変換後の音高が所定の制限値に基づく音域を外れる場合に、該ノートについてさらにオクターブシフト(オクターブ折り返し)により音高変換を行うかあるいは当該ノートを無発音とするかを、複数の異なるノート変換に関する情報に従って選択的に実行できるようにした。これにより、発生させる楽音の音域をフランジングを引き起こすことなしに制限する、あるいはあえてフランジングを引き起こしてでも音域を制限することが複数の音高範囲それぞれで異ならせることができ、さらに各音域の上限と下限とで異なる処理を指定することができるので、ユーザは自身の意図に応じてより多彩な音楽的表現を実現する自動伴奏データを作成することが容易にできるようになる。
なお、上述した実施例においては、通常の楽器音色に加えて効果音(奏法依存音色)等を含む特殊な音色(Mega Guitar音色)を用いた場合について説明したがこれに限らない。通常の音色における自動演奏においても、上記説明した実施の形態に準じて、及び必要に応じて適宜変形した形態で、本発明を適用することができる。例えば通常の音色のみからなるピアノ音色において、低音域をベースパート、中間音域をコードパート、高音域をフレーズメロディの楽音を発生させる場合などにも、本発明を適用することができる。こうした場合における、各チャンネルのCTABに設定されるノート変換に関する情報について、具体的な設定例を図8に示す。図8(a)に示す実施例は通常の楽器音色「ピアノ音色」を用いる場合に、図8(b)に示すようにして3分割した各音高範囲において、「C-2」〜「F♯2」までの低音側のゾーン(zone1)をベースパートの楽音を発生する範囲、「F♯2」〜「C4」までのゾーン(zone2)をコードパートの楽音を発生する範囲、「C4」〜「G8」までの高音側のゾーン(zone3)をフレーズメロディを発生する範囲とした場合の設定例である。
また、図示を省略したが、上述した特殊な音色(Mega Guitar音色)を用いる場合において、ゾーン(zone1)をベースパートとユニゾンで動作する低音のフレーズメロディを発生する範囲、ゾーン(zone2)をベースパートの楽音を発生する範囲、ゾーン(zone3)を効果音(奏法依存音色)を発生する範囲とするように、該当するチャンネルのCTABに設定することもできることは言うまでもない。すなわち、何らかのコードを基準として作成されたオリジナルの自動演奏データ(上記した伴奏パターンデータやフレーズメロディデータなど)に基づいて楽音を発生させる際に、コード進行に応じてノート変換を行うものであればどのような形態のものであっても、上記説明した実施の形態に準じて、及び必要に応じて適宜変形した形態で、本発明を適用することができる。さらに、NTRスプリットポイント(分割情報)を適宜に変更して、低音域,中音域、高音域、さらにはそれら以外のより細かな多数の音域毎にノート変換に係る情報をそれぞれ対応付けることで、より多くのさまざまな音色や用途に本発明を適用することができる。
なお、ユーザはCTAB(NTR情報,NTT情報,ノートリミットの下限及び上限)の値を任意に設定することができてよい。ユーザによりCTABの値が任意に入力された場合、この入力値がスタイルデータに予め設定済みであるCTABの値に優先して処理されることは言うまでもない。
1…CPU、2…ROM、3…RAM、4,5…検出回路、4A…演奏操作子、5A…パネル操作子、6…表示回路、6A…ディスプレイ、7…音源回路、8…効果回路、8A…サウンドシステム、9…外部記憶装置、10…MIDIインタフェース、10A…MIDI機器、11…通信インタフェース、11A…サーバ装置、X…通信ネットワーク、1D…通信バス