(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下、添付図面を参照して、本発明の楽音情報処理装置及びプログラムの一実施形態を説明する。
【0018】
図1は、本発明の楽音情報処理装置を適用した電子楽器100の電気的ハードウェア構成の一例を示すブロック図である。電子楽器100は、例えば自動伴奏機能(スタイル再生機能)を具備する電子鍵盤楽器であり、伴奏パターンデータ等から取得した楽音情報を、再生時に指定されたコード(和音)に合うように変換きるように構成されており、詳しくは、楽音情報によって示される1つの楽音が、その発音中に或る第1の音高から別の第2の音高に連続的に変化する場合は、第1の音高と第2の音高とをそれぞれ独立に、コード情報に合うように変換することにより、連続的な音高変化を持つ楽音情報を、取得したコード情報に合うように適切に変換することに特徴がある。なお、「コードに合った音高」、「コードに合うような音高」、「コードに合わせた音高」或いは「コードにふさわしい音高」とは、そのコード上でメロディーに使うことが可能な音高であり、例えば、そのコードの構成音、及び、コード構成音以外の音のうち、コードに対してしてアヴォイドノート(回避音)ではない「テンションノート」を指す。なお、アヴォイドノートは、コードと不協和な音として定められた音である。
【0019】
図1に示す電子楽器100は、CPU1(Central Processing Unit、中央処理装置)、ROM2(Read Only Memory、リードオンリーメモリ)、RAM3(Random Access Memory、ランダムアクセスメモリ)、入力操作部4、表示部5、音源6、記憶装置7及び通信インタフェース(通信I/F)8を備え、各部がデータ及び通信バス9を介して接続される。
【0020】
CPU1は、ROM2又はRAM3に記憶されたプログラムを実行して、電子楽器100の全体動作を制御する。ROM2は、CPU1が実行する各種のプログラムや各種のデータなどを格納した不揮発性メモリである。RAM3は、CPU1が実行するプログラムのロード領域やワーク領域に使用される。
【0021】
入力操作部4は、ユーザによる各種の操作を受け付ける操作子群と、各操作子の操作イベントを検出する検出部を含む。CPU1は、入力操作部4にて検出された操作イベントを取得して、該取得した操作イベントに対応する処理を行う。操作子群は、各種スイッチなどデータ入力用操作子と、鍵盤など演奏入力用操作子とを含んでよい。入力操作部4にて行われる操作は、例えば伴奏スタイル選択操作、自動伴奏開始操作、各種情報入力操作、コード入力操作、及び、演奏入力操作などである。
【0022】
表示部5は、例えば液晶表示パネル(LCD)やCRT等から構成され、CPU1の制御に基づき、当該電子楽器100で使用される各種情報を表示できる。表示部5に表示される各種情報は、例えば自動伴奏に用いる伴奏スタイルデータの選択肢、自動演奏に用いるシーケンスデータの選択肢、音高変換ルールの選択肢等である。
【0023】
音源6は、CPU1の制御に基づき、楽音情報に応じた楽音信号を電子的に生成し、生成された楽音信号に各種音響的効果を付与して、サウンドシステム10に出力する。楽音情報は、鍵盤等を用いた演奏入力、後述する伴奏パターンデータ、或いは、シーケンスデータなどに基づいてCPU1により生成され、バス9を介して音源6に供給される。音源6は、例えばFM音源、PCM音源或いは物理モデル音源等、周知のどのような楽音合成方式を用いて構成されてもよい。また、音源6は、ハードウェア音源装置により構成されてもよいし、或いは、CPU1又は図示外のDSP(Digital Signal Processor)によるソフトウェア処理により構成されてもよい。サウンドシステム10は、DAC、アンプ、スピーカなどを含み、音源6で生成された楽音信号をアナログ信号に変換して、アナログ変換された楽音信号をスピーカ等から発音する。
【0024】
記憶装置7は、例えばハードディスク、FD(フレキシブルディスク又はフロッピー(登録商標)ディスク)、CD(コンパクトディスク)、DVD(デジタル多目的ディスク)、あるいはフラッシュメモリ等の半導体メモリからなり、後述する伴奏スタイルデータなど、電子楽器100で使用する各種データを記憶できる。
【0025】
通信I/F8は、例えば、MIDI(Musical Instrument Digital Interface)機器を接続するMIDIインタフェース、USBやIEEE1394など周辺機器を接続する汎用の通信インタフェース、Ethernet(登録商標)規格等に準拠する汎用のネットワークインタフェースなどを含み、有線及び無線いずれの通信方式で構成されてもよい。電子楽器100は、例えば、通信I/F8を介して外部記憶装置11を接続したり、或いは、通信I/F8を介して通信ネットワーク上のサーバコンピュータと通信可能に接続したりできる。
【0026】
電子楽器100は、ROM2、RAM3、記憶装置7或いは外部記憶装置11など任意の記憶媒体内に、1以上の伴奏スタイルデータを記憶する。これら伴奏スタイルデータは、例えばジャズ、ロック、クラッシック等の音楽ジャンル毎に分類されており、それぞれ対応するジャンルに適した伴奏内容を表す伴奏パターンを持っている。1つの伴奏スタイルデータは、例えばアルペジオパターン等の伴奏音列を示す伴奏パート、ベースラインを示すベースパート、リズムパターンを示すドラムパート等を含む複数のパートで構成されており、パート毎に伴奏パターンデータが用意される。また、1つのパートに対して、例えばイントロ、メイン、フィルイン、エンディング等、楽曲の場面に合わせた複数セクションの伴奏パターンデータが用意される。
【0027】
各伴奏パターンデータには、基準コード情報と音高変換ルールとが対応付けて記憶される。基準コード情報は、その伴奏パターンの作成時に基準としたコードであり、伴奏パターンに含まれる伴奏音の音高は、その基準コードに合うような音高になっている。音高変換ルールは、伴奏パターンデータ内の各伴奏音の音高を、現在コード情報の種類に合うように音高変換するためのルールである。かかる音高変換ルール自体は従来知られる技術を利用してよい(例えば特許文献1を参照)。音高変換ルールは、例えばテーブル形式のデータ(音高変換テーブル)で構成される。音高変換テーブルを記憶する記憶媒体は、伴奏スタイルデータを記憶した記憶媒体でもよいし、或いは、その記憶媒体とは別の記憶媒体でもよい。音高変換ルールは、テーブル形式でなく、音高変換テーブルに相当する音高変換アルゴリズムを実行する形式で構成されてもよい。アルゴリズムとしては、例えば、伴奏パターン内の各伴奏音の音高を指定されたコード構成音に変換するもの、或いは、伴奏パターン内の各伴奏音がコード構成音のときはそのまま指定されたコード構成音に変換する一方、各伴奏音がコード構成音以外のときには指定されたコードに合うスケール音に変換するものを適用できる。
【0028】
図2は、伴奏パターンデータの一例を説明する図である。縦軸は音階名(C、D、E、F、G・・・)により音高を表す。横軸は「小節数:拍数」の形式で時間を表す。伴奏パターンデータ20は、第1楽音情報21(「楽音情報1」)、第2楽音情報22(「楽音情報2」)、及び、第3楽音情報23(「楽音情報3」)からなる2小節分の伴奏パターンである。伴奏パターンデータ20は、「Cmaj」(シーメジャー)を基準コードとして作成され、「Cmaj」のスケールに合う音高の楽音情報21、22及び23を発音タイミング順に配列してなる。
【0029】
図2において、各楽音情報21,22,23によって示される1つの楽音は、線分として描かれている。線分の縦軸上の位置が、各楽音情報21,22,23が示す楽音に含まれる音高要素を示している。また、線分の横軸上の位置が、各楽音情報21,22,23が示す楽音の発音期間を表す。楽音情報は、ノートイベントデータにより音高を示すMIDIデータ形式のデータであってもよいし、或いは、例えば波形データそのものが音高要素を示すPCM波形データ、マイク入力或いは音声データなど、波形データの形式でもよい。なお、波形データの場合、楽音情報は、単旋律又はユニゾンのデータ(同時発音が1音高のみのデータ)とし、和音状態は考慮しない。
【0030】
第1楽音情報21は、その発音中に或る音高から別の音高に連続的(持続的)に変化する楽音情報の例示である。第1楽音情報21が示す楽音は、図示の通り、その発音中に、「C」音から「E」音に、そして、「G」音に連続的に変化するようになっている。楽音情報がMIDI形式のデータである場合、第1楽音情報21は、先頭の音高(C音)を示すノートイベントと、このノートイベントの示す音高(C音)を別の音高(E音,G音)に連続的に変化させる複数の音高変化制御用MIDIイベントとの組み合わせからなる。この実施例では、音高変化制御用のMIDIイベントとしてピッチベンドイベントを想定する。音高変化制御用のMIDIイベントは、ピッチベンドに限らず、例えばポルタメントなどその他の種類のイベントでもよい。
【0031】
また、波形データの場合、第1楽音情報21は、その波形データに対応する楽音が、或る音高要素(C音)から別の音高要素(E音,G音)へ連続的に変化する(ピッチベンドされる)波形形状の波形データからなる。
【0032】
第2楽音情報22はE音の発音を示し、また、第3楽音情報23はC音の発音を示す。これら第2楽音情報22と第3楽音情報23は1発音中に音高変化の表現を持たない。第2楽音情報22及び第3楽音情報23は、MIDI形式のデータの場合、それぞれの音高を示すノートイベントからなる。波形データ形式の場合、第2楽音情報22及び第3楽音情報23は、それぞれ音高変化の表現を含まない1発音分の波形データからなる。
【0033】
本発明にかかる音高変換処理の一実施例として、
図2の伴奏パターンデータ(伴奏スタイル)内の楽音情報を変換対象として音高変換した自動伴奏データを出力する際の動作を説明する。
図3は、
図2の伴奏パターンデータ(伴奏スタイル)を用いて自動伴奏を行うための自動動伴奏データ生成処理のフローチャートである。CPU1は、例えば、電子楽器の電源投入時や、電子楽器で自動伴奏機能の開始が指示されたときなど、
図3の処理を実行する。
【0034】
ユーザが、入力操作部4を用いて、所望の伴奏スタイルを選択する操作を行うと、CPU1は、ステップS1において、ユーザにより選択された伴奏スタイルデータを特定(伴奏スタイルを選択)して、伴奏スタイルデータを記憶したメモリから該特定した伴奏スタイルデータを読み出す。
【0035】
ステップS2において、CPU1は初期設定を行う。この初期設定は、選択された伴奏スタイルから処理対象となる1つの伴奏パターンデータを特定すること、該特定した伴奏パターンデータに対応付けられた基準コード情報と音高変換ルール(音高変換テーブル又はアルゴリズム)と基準テンポ情報を取得すること、現在コード情報の設定値と直前コード情報の設定値を初期化すること、RUNフラグの値を初期化する(RUNフラグに「0」をセットする)こと、演奏テンポを設定すること、及び、「対応音高情報(Data)」を初期化することなどを含む。
【0036】
ステップS3において、CPU1は、前記特定された1つの伴奏パターンデータを分析して、当該伴奏パターンデータに基づく対応音高情報(Data)を生成し、生成された対応音高情報を対応音高情報(Data)記憶領域に記憶する。対応音高情報のデータは、伴奏パターンデータに時間的に対応付けられた聴覚上の音高の配列からなる。具体的には、対応音高情報は、伴奏パターンデータ内の楽音情報毎に、その楽音情報が示す楽音(伴奏音)に含まれる聴覚上の音高を示すデータと、聴覚上の各音高のタイミングを示すデータとを、発生順に配置したものである。
【0037】
図4(a)、(b)は、それぞれ、
図2に示す伴奏パターンデータに基づく対応音高情報のデータ構成例を示す。タイミングは、「小節:拍:クロック」単位で示されており、1小節が4拍、1拍が480クロックとする。なお、タイミングは、例えば「時間:分:ミリ秒」など時間単位など、その他の単位で表されても良い。
【0038】
図4(a)に示す構成例では、対応音高情報は、伴奏パターンデータ内の楽音情報を識別する楽音情報番号「No.」と、1つの楽音情報が示す楽音に含まれる全ての聴覚上の音高と、聴覚上の各音高の開始タイミングと、聴覚上の各音高の終了タイミングからなる。楽音情報番号は例えば発音タイミングの順に番号付けする。この例では、第1楽音情報21の楽音情報番号は「1」、第2楽音情報22の楽音情報番号は「2」、第3楽音情報23の楽音情報番号は「3」とする。
【0039】
図4(a)の構成例において、1つの楽音情報の示す楽音が、その発音中に或る音高から別の音高に途切れず連続的に変化させる表現(ピッチベンド)を含む場合は、その楽音情報における先頭の音高と、ピッチベンドによる音高変化結果に含まれる全ての音高(半音単位の音階音)が、それぞれ独立に、当該楽音情報が示す楽音に含まれる「聴覚上の音高」として設定される。例えば、第1楽音情報21に関しては、先頭の「C」音と、ピッチベンドに従う音高変化に含まれる「E」音及び「G」音との3つの音高が「聴覚上の音高」として設定される。また、それら聴覚上の音高毎に開始タイミングと終了タイミングとが設定される。1つの楽音情報の示す楽音に含まれる全ての音高は共通の楽音情報番号で管理されており、楽音情報番号に対する付加的情報(図では数値を囲む括弧により付加的情報を示す)や、各音高前後の開始タイミングや、終了タイミングにより、複数の音高のうちいずれが当該楽音情報中の先頭の音高であるかを識別できる。また、第2楽音情報22及び第3楽音情報23に対応する対応音高情報としては、それぞれ、楽音情報が示す楽音に含まれる1つの音高と、その開始タイミング及び終了タイミングが設定される。
【0040】
図4(b)に示す対応音高情報のデータ構成例では、対応音高情報には、楽音情報毎に、その楽音情報に含まれる先頭の音高と、その開始タイミングとが設定されるとともに、音高変化情報が設定される。音高変化情報は、その楽音情報が示す楽音に含まれる連続的な音高変化を示すデータであり、ピッチベンドによって先頭の音高から音高変化した結果の全ての音高(音階音)と、それら音高の開始タイミングとからなる。例えば、第1楽音情報21に対応する対応音高情報は、音高変化情報として、ピッチベンドに従う音高変化に含まれる「E」音及び「G」音の情報と、それぞれ音高の開始タイミングを記憶する。(b)の構成では、音高変化情報によって、楽音情報中の先頭の音高とピッチベンドに従う音高変化結果の音高とを区別できる。なお、音高変化情報のデータ構造は、対応する楽音情報(楽音情報番号)毎にデータを持つ構造に限らず、例えばポインタリストの形式でもよい。なお、図の例では、各音高は開始タイミングのみを持つが、更に音高終了タイミングを持つようにしてもよい。
【0041】
図3に戻り、前記ステップS3における対応音高情報の生成処理の具体例を説明する。先ず、伴奏パターンデータがMIDIデータ(ノートイベントとピッチベンドイベント)からなる場合を説明する。CPU1は、伴奏パターンデータ中の各楽音情報を示すノートイベントとピッチベンドイベントに基づいて、1つのノートイベントの発音期間中の全ての聴覚上の音高値群を算出する。聴覚上の音高値群は、ノートイベントをピッチベンドイベントによって制御した結果(発音結果)として得られる音高を示しており、例えばセント単位(100セント=半音)の数値で算出・管理される。第1楽音情報21の楽音のように、その発音中に音高変化がある場合、
図2に示す線分21の変化形状(音高変化)に対応する変動量で変化する複数の値が、発音期間中の聴覚上の音高値群として算出される。楽音情報22、23の楽音のように、発音期間中の音高変化がないものは、発音期間中一定の複数の値が、聴覚上の音高値群として算出される。
【0042】
次に、CPU1は、算出された1発音期間分の音高値群に基づいて、対応する1つのノートイベント(1つの楽音情報が示す楽音)の発音期間を、音高が半音単位で一定する「一定区間」と、音高が半音単位をまたいで変化する「変化区間」とに分割する(区間分割情報を作成する処理)。「一定区間」は、音高が半音単位の音階音で一定するか、若しくは、音高の変化が半音単位の範囲内に収まる区間である。また、「変化区間」は、音高が半音単位以上変化する区間であり、変化区間において、音高は、或る半音単位の音階音(直前の一定区間)から別の半音単位の音階音(後続の一定区間)へ連続的に変化する。
【0043】
具体的な処理例は次の通りである。CPU1は、先ず、算出された聴覚上の音高値群を1つずつ発音期間全体にわたり走査して、該聴覚上の音高が半音単位で変化するタイミング(時刻)と、その変化方向を調べる。そして、半音を超える変化があった場合には、その音高の変化が「急激な(離散的)変化」か否かを調べる。半音を超える変化の有無については、例えば、CPU1は、現在調査対象の音高値と、その直前の音高値を丸めた値(例えば100セント単位(半音単位))とを比較して、閾値(例えば、85セントなど半音単位よりもやや小さい値)以上の変化があるか否かによって判断できる。また、変化方向については、例えば、CPU1は、現在調査中の音高値と、その直前の音高値の実値(半音単位で丸めない値)との比較により決定できる。また、「急激な(離散的)変化」有無については、例えば、CPU1は、現在調査中の音高値と、その直前の音高値の実値とを比較して、閾値(例えば85セント)以上の変化があるか否かによって判断できる。CPU1は、「急激な音高の変化」があった場合、その音高値の時刻を、半音単位を越える急激な(離散的)音高変化の生じる時刻=「離散的変化の時刻」と評価する。他方、直前音高値から音高の変化はあったが急激な変化でない場合、その音高値の時刻を、半音単位にわたり連続的に音高が変化する連続的変化の到達時刻=「連続的変化の到達時刻」と評価する。
【0044】
「連続的変化の到達時刻」と評価される音高値があった場合、CPU1は、その音高値から時間を翻って1つずつ音高値を調べて、半音単位にわたり連続的に音高が変化する連続的変化の開始時刻と推測できるデータを探す。具体的には、CPU1は、調査対象の音高値と、その直前の音高値を丸めた値(例えば100セント(単位半音単位))とを比較して、閾値(例えば85セント)以上の変化を発見したとき、その音高値の時刻を、この「連続的変化の到達時刻」に係る連続的変化の開始時刻(「連続的変化の開始時刻」)とみなす。なお、時間を翻る範囲は所定の時間範囲(クオンタイズ長)とする。所定の時間範囲以内で「開指示刻」に該当するデータが見つからなかった場合、CPU1は、「連続的変化の開始時刻」とみなす仮想データを作成してよい。なお、見つからなかった場合の別の例として、例えば閾値をより小さい値(50セントなど)に変更して再走査して、再走査により該当するデータが見つかった場合、それを「連続的変化の開始時刻」とみなし、見つからなければ、その「連続的変化の開始時刻」を不採用としてもよい。
【0045】
以上の手順により、当該楽音情報の示す楽音(ノートイベント)の発音期間中の全ての「離散的変化の時刻」、「連続的変化の到達時刻」及び「連続的変化の開始時刻」を抽出した後、CPU1は、これら3種類の時刻情報とノートイベントに含まれるノートオンタイミングとに基づいて、当該楽音情報の示す楽音の発音期間を「一定区間」と「変化区間」とに分割する。「一定区間」は、「離散的変化の時刻」、「連続的変化の到達時刻」又は「ノートオンタイミング」から開始して、その開始時刻の次に到達する「離散的変化の時刻」又は「連続的変化の開始時刻」で終了する区間である。一方、「変化区間」は、「連続的変化の開始時刻」又は「連続的変化の到達時刻」から開始して、その開始時刻の次に到達する「連続的変化の到達時刻」で終了する区間、又は、「ノートオンタイミング」から開始してその開始時刻の次に到達する「連続的変化の到達時刻」で終了する区間である。
【0046】
上記の区分に従い、「一定区間」と「変化区間」とを決定した後、CPU1は、以下の調整処理を行う。(1)所定の最短時間(例えば16分音符相当の時間)を越えない短時間の「一定区間」は、その直前区間が「変化区間」である場合は、その直前の「変化区間」に吸収される。ただし、この吸収処理は、当該「一定区間」の音高値が直前の「変化区間」の末尾の音高値に一致している場合にのみ行う。(2)連続する「変化区間」(或る「変化区間」の直前が「変化区間」である場合)は、それらを1つの「変化区間」に統合する。ただし、この統合処理は、双方の区間の音高値の変化方向が同じ場合にのみ行う。(3)「ノートオンタイミング」から開始して「連続的変化の到達時刻」で終了する「変化区間」は、その直後の区間が「一定区間」である場合、その「一定区間」に吸収される。
【0047】
上記の詳細手順によれば、例えば、(1)音高として認識される最初の音高を「一定区間」の先頭に採用すること(連続的な装飾的音高の変化を無視すること)、(2)離散的な装飾的な音高の変化を「一定区間」として採用すること、(3)音高が離散的に連続変化している場合には、それら離散的な音高群のうち最初の「一定区間」の音高のみを採用すること、(4)音高が連続的に変化している場合には、後続の「一定区間」より前に変化方向が逆転する箇所があれば、その箇所の半音単位の音高を採用することができる。
【0048】
以上の手順により「一定区間」と「変化区間」とを決定することより、CPU1は、楽音情報の示す楽音が連続的に音高変化する場合には、その楽音情報における先頭の音高の区間と、ピッチベンドに従う音高変化の中で音高が半音単位で一定する区間とを、「一定区間」として抽出できる。また、或る「一定区間」から別の「一定区間」までの区間は「変化区間」として抽出される。例えば
図2の第1楽音情報21であれば、第1小節1拍目から第1小節2拍目360クロックまでが「C」音の「一定区間」、第1小節3拍目から第1小節3拍目400クロックまでが「E」音の「一定区間」、第1小節4拍目から第2小節1拍目までが「G」音の「一定区間」になる。そして、2つの一定区間をつなぐ区間が「変化区間」として抽出される。また、楽音情報22、23のように音高変化の表現を含まない楽音は、ノートオンからノートオフまでの発音期間全体が1つの「一定区間」となる。
【0049】
「一定区間」と「変化区間」とを決定した後、CPU1は、前記算出された発音期間中の聴覚上の各音高値と、各「一定区間」(区間の開始タイミングと終了タイミング)とを対応付けることで、
図4(a),(b)のような対応音高情報を生成できる。対応音高情報の一例として、「一定区間」毎に、その一定区間の先頭の音高値を半音単位で丸めた音高(半音単位の音階音)を対応付けて記憶するようにしてよい。楽音情報の示す楽音が連続的に音高変化する場合、楽音の先頭の音高と、ピッチベンドに従う音高変化に含まれる全ての音高(半音単位の音階音として認識できる音高)とが、それぞれ対応する「一定区間」に対応付けて記憶される。
【0050】
一方、伴奏パターンデータが波形データの場合の対応音高情報生成処理は次の通りである。CPU1は、まず、従来から知られるピッチ分析方法を用いて、伴奏パターンデータ中の各楽音情報(波形データ)毎に、1発音期間中の聴覚上の音高値群を算出する。そして、CPU1は、前述した「区間分割情報を作成する処理」と同様の処理により、1発音分の楽音情報の発音期間を「一定区間」と「変化区間」とに分割する。そして、CPU1は、算出した聴覚上の音高値群と、各「一定区間」とを対応付けることで、
図4(a),(b)のような対応音高情報を生成できる。
【0051】
なお、「一定区間」と「変化区間」とを自動算出した後に、算出された各区間を、ユーザが手動で修正(調整)してもよい。また、前記ステップS3において「一定区間」と「変化区間」を自動算出する処理を行う構成に替えて、予め伴奏パターンデータに対して「一定区間」と「変化区間」とを手動で設定又は自動算出しておき、前記ステップS3では該予め設定又は算出した「一定区間」と「変化区間」とに基づいて対応音高情報を生成するように構成してもよい。この変更例の場合、CPU1は、上述した区間分割のための計算や判定処理を省略できる。
【0052】
以上の手順により、CPU1は、前記ステップS2で特定された伴奏パターンデータに基づく対応音高情報を作成して、作成した対応音高情報を対応音高情報(Data)記憶領域に記憶する。対応音高情報(Data)記憶領域には、前記特定された伴奏パターンデータ内の各楽音情報に対応する対応音高情報のデータを記憶する。続いて、CPU1は、ユーザから終了操作、自動伴奏スタート指示、または、自動伴奏ステップ指示を受け付けるまで、ステップS4、6、8、10をNOに分岐してステップS4〜S10をループして、ユーザによる操作を待つ。
【0053】
自動伴奏スタート指示を受け付けたとき(ステップS6のYES)、CPU1は、ステップS9において、RUNフラグに「1」をセットし、且つ、直前コード情報及び現在コード情報をクリアして、自動伴奏の時間進行を制御するタイマを起動する。そして、CPU1は、ステップ10をYESに分岐して、ステップS11においてコード情報を新たに受け付けているかどうかを判断する。初回コード情報入力がないうちは、CPU1は、ステップS4〜S14をループして、コード情報入力を待つ。
【0054】
ユーザは、例えば入力操作部4(例えば鍵盤)を用いて、自動伴奏の再生に使用するコード(和音)を指定するコード情報を入力できる。コード情報の入力を受け付けたとき(ステップS11のYES)、CPU1は、ステップS12において、直前コード情報に既存の現在コード情報をセットし、且つ、現在コード情報に今回受け付けたコードを新たにセットする。該ステップS12がコード情報取得手段に相当し、コードを指定するコード情報を取得できる。なお、前記ステップS7で直前コード情報及び現在コード情報がクリアされているので、初回のコード入力時点では、直前コード情報は初期状態(コード無し)になる。
【0055】
ステップS13において、CPU1は、前記ステップS12で指定された現在コード情報に基づいて、前記ステップS2で特定された伴奏パターンデータを音高変換することにより、現在コード情報に合うように音高変換された「コード対応伴奏パターンデータ」を生成する。このコード対応伴奏パターンデータ生成処理の詳細は後述する。
【0056】
CPU1は、ステップS15において、前記ステップS13で作成されたコード対応伴奏パターンデータから、現在のタイマカウント値に合う時間位置のデータを、現在の演奏テンポに合わせて読み出して、読み出したデータを自動伴奏データとして出力する。そして、新たなコード入力又はユーザの何らかの操作がなければ(ステップS4,S6,S8,S11のNO)、CPU1はステップS4〜S15をループする。
【0057】
新たなコード入力があったとき(ステップS11のYES)、CPU1は、新たなコード入力に応じて直前コード情報及び現在コード情報を更新し(ステップS12)、新たに入力されたコードにふさわしい「コード対応伴奏パターンデータ」を生成する(ステップS13)。また、自動伴奏ストップ指示があったとき(ステップS8のYES)、CPU1は、Runフラグを0にセットして自動伴奏停止処理を行い(ステップS9)、S4〜S10をループする。また、終了操作示があったとき(ステップS4のYES)、CPU1は、タイマ停止や消音処理などを含む終了処理を行い(ステップS5)、自動伴奏データ生成処理を終了する。
【0058】
図5は、前記ステップS13のコード対応伴奏パターンデータ生成処理を示すフローチャートである。ステップS20において、CPU1は、これから生成するコード対応伴奏パターンデータを書き込むためのコード対応伴奏パターンデータ書き込み領域のデータをクリアする。
【0059】
ステップS21において、CPU1は、前記ステップS3で生成した対応音高情報(Data)記憶領域内にある最初の楽音情報に対応する対応音高情報を、「対象の楽音」としてセットする。続いて、CPU1は、ステップS22において、ノート書き込み領域(Note)をクリアする。そして、ステップS23において、CPU1は、前記ステップS2で特定された伴奏パターンデータから、前記ステップS21でセットした「対象の楽音」に対応する1発音分の楽音情報(MIDIデータ又は波形データ)を取得して、取得した楽音情報をノート書き込み領域(Note)に書き込む。ノート書き込み領域に書き出されるデータは、MIDIデータの場合、MIDIイベント(ノートイベントと複数ピッチベンドイベント、その他の表情付け用MIDIイベンドデータ(例えばエクスプレッションやソステヌートなど))であり、波形データの場合、当該楽音情報の楽音に対応する波形データである。ステップS21〜23が音高要素を含む楽音を示す楽音情報を取得する楽音情報取得手段に相当する。
【0060】
ステップS24において、CPU1は、前記ステップS21でセットした「対象の楽音」が、その発音中に或る音高から別の音高に変化するか否かを判定する。音高変化の有無の判定は、「対象の楽音」としてセットされた対応音高情報が持つ情報(
図4(a)の場合、楽音情報番号の付加的情報、各音高の前後のタインミグ、或いは、終了タイミング、(b)の場合、音高変化情報の有無)に基づき行うことができる。前記ステップS24が判定手段に相当する。
【0061】
「対象の楽音」が、その発音中に或る音高から別の音高に変化する場合(ステップS24のYES)、CPU1は、ステップS25において、前記ステップS21でセットした「対象の楽音」としてセットされた対応音高情報に含まれる複数の音高を、それぞれ独立に、前記ステップS2で取得した基準コード情報及び音高変換ルールと、前記ステップS12で設定した現在コード情報とに基づいて音高変換することにより、該複数の音高それぞれに対応する「目標音高」を算出する。「対象の楽音」に含まれる複数の音高は、前述の通り、楽音の先頭の音高と、ピッチベンドに従う音高変化結果に含まれる全ての音高である。つまり、1発音中の音高変化に含まれる半音単位の音階音を抽出した音高である。したがって、このステップS25により、連続的な音高変化に含まれる全ての音高(半音単位の音階音)を、それぞれ独立に、現在コード情報等に合わせた「目標音高」に変換できる。なお、音高毎の音高変換処理の計算自体は、従来知られる基準コード情報、音高変換ルール及び現在コード情報とに基づく方法を適用できる。
【0062】
そして、ノート書き込み領域内の楽音情報がMIDIデータの場合(ステップS26のNO)、CPU1は、ステップS27において、ノート書き込み領域内のノートイベントが示す音高を、前記ステップS25で算出した複数の「目標音高」のうち、「対象の楽音」内で参照できる先頭の音高に対応する「目標音高」に変更する。例えば、第1楽音情報21(
図4の楽音情報番号「1」)の例では、ノート書き込み領域に書き出した楽音情報中のノートイベントの音高を、楽音情報番号「1」の音高「C音」に対応して算出された「目標音高」に変更する。このステップS27により、CPU1は、楽音情報が示す楽音の先頭の音高を、指定されたコード情報に合うように変換できる。
【0063】
ステップS28において、CPU1は、前記ステップS25で算出した複数の「目標音高」によって示される音高変化を実現するようなピッチベンドイベント群を生成する。つまり、CPU1は、ノート書き込み領域に書き出した楽音情報の示す楽音の音高が、「対象の楽音」内の2番目以降の音高(つまりピッチベンドに従う音高変化に含まれる音高)のタイミングにて、対応する目標音高に聴こえるようなピッチベンドイベント群を生成する。そして、CPU1は、当該ステップS28において、ノート書き込み領域内の全ピッチベンドイベントを消去し、新たに生成したピッチベンドイベント群を挿入する。ステップS28においてピッチベンドイベント群を新たに生成することにより、ピッチベンドによる音高変化量をコードに合わせて変換できる。
【0064】
前記ステップS27及びS28が音高変換手段に相当するものであり、楽音情報によって示された1つの楽音が或る音高から別の音高に連続的に変化する場合に、それら音高をそれぞれ独立に、前記コード情報に合うように変換する。したがって、変換前の連続的な音高変化の表現を維持したまま、指定されたコードに合わせた別の音高で始まる楽音情報を得ることができる。例えば、
図2の第1楽音情報21(C音→E音→G音)は、指定されたコードが「Cmin」の場合、C音→Eフラット音→G音という具合に、ピッチベンドによる音高変化に含まれる音高(音階音)がそれぞれ独立に指定されたコード「Cmin」に合った音高に変換される。
【0065】
前記ステップS28においてピッチベンドイベントを生成する処理の具体例を以下に説明する。まず、CPU1は、前記ステップS21でセットした「対象の楽音」(1発音分の対応音高情報)に含まれる各音高(音高変換前の音高)と、前記ステップS27で算出した各目標音高(音高変換後の音高)とを比較することにより、音高変換前の音高から音高変換後の音高への変化量を実現するための「加算値」と「乗算値」とを算出し、且つ、「対象の楽音」の「一定区間」と「変化区間」の境界部におけるピッチベンドデータの値を半音単位で丸めた値(「変換前ピッチベンド値」)を算出する。「加算値」は、例えば各「一定区間」及び各「変化区間」の開始時刻における音高変換前の音高と音高変換後の音高との差(変化量)を半音単位で丸めた値であり、区間毎に算出される。「乗算値」は、例えば各「一定区間」及び各「変化区間」の終了時刻における音高変換前の音高と音高変換後の音高との変化幅(半音単位)であり、区間毎に算出される。また、「変換前ピッチベンド値」は、例えば「対象の楽音」内の先頭の音高(音高変換前のノートイベントの音高)と、各区間の先頭の音高との差から算出できる。
【0066】
そして、CPU1は、「加算値」、「乗算値」及び「変換前ピッチベンド値」に基づき、ノート書き込み領域内の全てのピッチベンドイベントを変更して、新たなピッチベンドイベント群を生成する。具体的には、まず、「一定区間」に存在する全てのピッチベンドイベントに「加算値」を一定加算して、「一定区間」に対する新たなピッチベンドイベント群を生成する。つまり、前記ステップS28においてCPU1は、対応音高情報に音高を記憶している「一定区間」に存在するピッチベンドイベントについては、該音高から「目標音高」までの変化量を一定加算する処理を行う。
【0067】
また、「変化区間」に対しては、以下の処理によりピッチベンドイベント群を生成する。まず、CPU1は、当該「変化区間」の開始時刻での「変換前ピッチベンド値」を「ピッチベンド初期値」として設定する。ピッチベンド初期値は、「変化区間」の開始時刻における音高変換前のピッチベンドイベントの値を半音単位で丸めた値に相当する。そのうえで、CPU1は、(1)〜(4)の手順で、「変化区間」の全ピッチベンドイベントをそれぞれ変更する。(1)ピッチベンドイベントの値に対して、前記「ピッチベンド初期値」を「0」にするような加算(つまりピッチベンドイベントの値にピッチベンド初期値の正負を逆転して加算)処理を行う。次に、(2)前記加算処理したピッチベンドイベントの値に「乗算値」を乗算する。次に、(3)前記乗算処理したピッチベンドイベントの値に「ピッチベンド初期値」を加算する。そして、(4)前記加算処理したピッチベンドイベントの値に「加算値」を加算する。つまり、前記ステップS28においてCPU1は、対応音高情報に記憶した各音高のつなぎ区間である「変化区間」に存在するピッチベンドイベントに対しては、上記の(1)〜(4)により、当該「変化区間」での音高変形形状が音高変換前後で相似変化するように加算処理と乗算処理とを行う。この処理手順によれば、或る「一定区間」(或る音階音)から別の「一定区間」(別の音階音)への音高変化が自然な連続的変化になるように、「変化区間」における音高変化の様子を制御できる。すなわち、連続変化内でそれぞれ独立に、コードに合わせて変換した各音高(音階音)の相互間を滑らかに補間するようなピッチベンドイベント群を「変化区間」用に生成できる。
【0068】
なお、前記ステップS28のピッチベンドイベント作成において、CPU1は、ノート書き込み領域内の楽音情報の発音期間の末尾に位置するピッチベンドイベントの値をセンター値(ベンド効果を付与しない値)に戻すようにする。また、生成されるピッチベンドイベントイベントの値は、ピッチベンドレンジを越えないように設定される。算出されたピッチベンドイベント群の値がピッチベンドレンジを一方向に越える場合、当該楽音情報の先頭の音高(ノートイベントの音高)をシフトさせることで、ピッチベンドイベント群の値がレンジ内に収まるかどうか計算する。収まる場合、音高シフトした上で、ピッチベンドイベント群の値を当該音高シフトとは逆方向にシフトした結果を出力する。一方、音高シフトしてもピッチベンドイベント群の値がレンジ内に収まらない場合、又は、ピッチベンドイベント群の値がレンジを上下両方向に超えている場合、ピッチベンドイベント群の値がレンジを超える時点で、当該楽音情報の発音期間を2つに分けて、それぞれ区間毎に処理することで、ピッチベンドイベント群の値をレンジ内に収めるようにする。
【0069】
また、「対象の楽音」が、その発音中に或る音高から別の音高に変化し(ステップS24のYES)、且つ、ノート書き込み領域内の楽音情報が波形データの場合(ステップS26のYES)、ステップS29において、CPU1は、「対象の楽音」内の各音高の開始タイミング(各「一定区間」の開示時刻)に基づいてノート書き込み領域内の楽音情報(波形データ)を複数区間に分割して、分割された各区間の波形データが、それぞれ対応する目標音高(前記ステップS25で算出されたもの)に聴こえるように、該ノート書き込み領域内の楽音情報(波形データ)をピッチチェンジする。必要に応じて、音高の相互間(変化区間)を滑らかにつなぐような波形データの補間を行う。具体的な処理例として、CPU1は、「対象の楽音」に含まれる各音高(音高変換前の音高)と、前記算出した各目標音高(音高変換後の音高)との差を算出し、算出した差をオフセット情報とする。そして、このオフセット情報に基づき、前記分割された各区間の波形データをピッチシフト再生する。その結果、指定されたコードに適した音高での楽音情報(波形データ)の再生が可能になる。
【0070】
他方、「対象の楽音」が発音中に音高変化しない場合(ステップS24のNO)、コード入力に応じて伴奏パターンを音高変換する従来技術(例えば特許文献1など)と同様な処理となる。すなわち、CPU1は、ステップS30において、「対象の楽音」に含まれる1つの音高を、基準コード情報、音高変換ルール及び現在コード情報に基づいて音高変換して、「目標音高」を算出する。そして、伴奏パターンデータがMIDIデータの場合(ステップS31のNO)、CPU1は、ノート書き込み領域内の楽音情報(ノートイベント)の音高を、前記算出した目標音高に変更する(ステップS32)。一方、伴奏パターンデータが波形データの場合(ステップS31のYES)、CPU1は、ノート書き込み領域内の楽音情報(波形データ)の音高が前記算出した目標音高になるように、該ノート書き込み領域内の楽音情報(波形データ)をピッチチェンジする(ステップS33)。
【0071】
そして、CPU1は、ステップS34において、コード対応伴奏パターンデータ書き込み領域の末尾から順に、前記ステップS27及びS28、又はS29又はS32又はS33により現在指定されているコードにふさわしく音高変換された1発音分の楽音情報(ノート書き込み領域の内容)を書き出す。上述したステップS25〜S33が音高変換手段である。
【0072】
対応音高情報記憶領域内に未処理の楽音情報がある場合(ステップS35のNO)、CPU1は、対応音高情報記憶領域内に未処理の楽音情報に対応する対応音高情報のデータを順番に「対象の楽音」として設定し(ステップS36)、ステップS22以下の処理を繰り返す。そして、対応音高情報記憶領域内の全ての楽音情報を処理し終えたら(ステップS35のYES)、CPU1は、コード対応伴奏パターンデータ生成処理を終了する。
【0073】
なお、
図3、
図5の自動伴奏データ生成処理では、説明の便宜上、伴奏パートデータを成す複数パート(トラック)のうち1パートのみに着目した処理を説明したが、複数パートについてそれぞれ処理を行ってもよい。また、説明簡略化のため、伴奏パターンデータのセクション変更(例えばイントロ、フィルイン、エンディング等の挿入)と、1伴奏パターンデータ内の1楽音情報の出力途中でのコード変更は行われないものとした。また、ユーザの演奏入力処理の説明も省略した。また、
図5のコード対応伴奏パターンデータ生成処理では、説明簡略化のため、対象となる伴奏パターンデータとして、1パート分の伴奏パターンを想定した。複数パート分の伴奏パターンデータの処理は、前述した
図5の処理をパート毎に行えばよい。なお、
図3、
図5の自動伴奏データ生成処理では、簡略化のため、コード対応伴奏パターンデータは1サイクル分生成しており、前記ステップS15では、この1サイクル分のデータをループして読み出すようになっている。また、前記ステップS28及びS30で扱う現在コード情報と基準コード情報とはそれぞれコード情報として有効な情報が設定されるものとした(無効な情報が設定される状況は考慮しなかった)。
【0074】
次に、本発明にかかる音高変換処理の別の実施例として、シーケンスデータから取得した1発音分の楽音情報毎に、指定されたコードに合ったハーモニー音を生成する動作を説明する。
図6は、本発明に従うハーモニー音生成処理のフローチャートを示す。シーケンスデータは、例えば自動演奏すべきメロディーを表す楽音情報群を配列したデータである。ハーモニー音生成処理は、大略、シーケンスデータ中の各楽音情報の示す楽音を、指定されたコードに合わせて音高変換してハーモニー音を生成することにより、指定されたコードに合わせたハーモニー音を、シーケンスデータのメロディーに付加できるようにする処理である。シーケンスデータは記憶装置7,11等の適宜の記憶媒体や通信I/F8を介して接続されたネットワーク上のサーバコンピュータから取得できる。シーケンスデータに含まれる楽音情報は、前述した伴奏パターンデータに含まれる楽音情報(
図2参照)と同様に構成され、ノートイベントデータにより音高を示すMIDIデータ形式のデータであってもよいし、或いは、波形データそのものが音高要素を示す波形データ形式でもよい。なお、シーケンスデータは単音旋律のデータとし、和音状態はないものとする。また、
図6の処理は、リアルタイム処理でなく、シーケンスデータの中から、発音タイミング順に1つずつ、生成すべきハーモニー音の基になる楽音情報を取得して処理するものとする。
【0075】
図6の処理は、例えばハーモニー音生成機能の起動指示やシーケンスデータ再生機能(自動演奏機能)の起動指示などに応じて開始する。ステップS40において、CPU1は、初期設定を行う。初期設定は、例えば、音高変換ルールの取得、現在コード情報の初期化、現在処理対象の楽音を示す楽音情報の初期化、現在処理対象の楽音に対応する対応音高情報(Data)の初期化、音高変換後の楽音を示す楽音情報(1発音分のハーモニーデータ)を書き込むノート書き込み領域(Note)書き込み領域、及び、生成したハーモニーデータを記憶するためのハーモニーデータ書き込み領域の初期化などを含む。CPU1は、終了操作を受け付けない限り、ステップS41の判断をNOに分岐して、ステップS42以下の処理を繰り返す。
【0076】
ステップS42において、CPU1は、再生すべきシーケンスデータから、ハーモニー音生成の基になる1発音分の楽音を示す楽音情報を取得する。該ステップS42が楽音情報取得手段に相当する。楽音情報は発音タイミング順に1発音分ずつ取得される。ステップS43において、CPU1は、対応音高情報(Data)書き込み領域と、ノート書き込み領域(Note)をクリアする。ステップS44において、CPU1は、前記ステップS42で取得した楽音を示す楽音情報をノート書き込み領域に書き込む。そして、ステップS45において、前記ノート書き込み領域に書き込んだ楽音情報を分析して、この楽音情報に対応する対応音高情報を生成する。前記ステップS43にて、対応音高情報書き込み領域とノート書き込み領域とがクリアされるので、
図6のハーモニー音生成処理では、対応音高情報として保持するデータは、発音分の楽音に対応する対応音高情報のみである。
図6のハーモニー音生成処理は、1発音分の楽音情報ずつ対応音高情報を生成するという点で、前述した
図3、
図5のように、伴奏パターンデータ中の複数の楽音情報に対応する対応音高情報を生成する処理とは異なる。なお、対応音高情報を生成する処理の詳細は前述ステップS3と同様である。
【0077】
ステップS46において、CPU1はコード情報を取得する。コード情報は例えばユーザの演奏入力により指定される。該ステップS46がコード情報取得手段に相当する。
【0078】
ステップS47において、CPU1は、前記生成した対応音高情報に基づいて、処理対象の楽音が、その発音中に或る音高から別の音高に変化するか否かを調べる。当該ステップ47が判定手段に相当する。音高変化する場合(ステップS47のYES)、CPU1は、ステップS48において、前記生成した対応音高情報に含まれる複数の音高を、それぞれ、現在コード情報及び音高変換ルールに基づいて音高変換することにより、該複数の音高それぞれに対応する「目標音高」を算出する。この処理は、「基準コード情報」を使わない点を除き、前記
図5のステップS25と同様である。
【0079】
ノート書き込み領域内の楽音情報がMIDIデータの場合(ステップS49のNO)、CPU1は、ステップS50において、ノート書き込み領域内のノートイベントが示す音高を、前記算出した複数の「目標音高」のうち、前記生成した対応音高情報の先頭の音高に対応する「目標音高」に変更する。そして、ステップS51において、CPU1は、前記算出した複数の「目標音高」によって示される音高変化を実現するようなピッチベンドイベント群を生成し、そして、ノート書き込み領域内の全ピッチベンドイベントを消去し、新たに生成したピッチベンドイベント群を挿入する。これらステップS50及びS51は、前述した
図5のステップS27,S28と同様な処理である。
【0080】
また、処理対象の楽音が、その発音中に或る音高から別の音高に変化し(ステップS47のYES)、且つ、ノート書き込み領域内の楽音情報が波形データの場合(ステップS49のYES)、ステップS52において、CPU1は、前記生成した対応音高情報内の各音高の開始タイミング(各「一定区間」の開示時刻)に基づいて、ノート書き込み領域内の楽音情報(波形データ)を複数区間に分割して、分割された各区間の波形データを、それぞれ対応する目標音高に聴こえるように、該ノート書き込み領域内の楽音情報(波形データ)をピッチチェンジする。この処理は、前述した
図5のステップS29と同様である。
【0081】
また、処理対象の楽音が音高変化しない場合(ステップS47のNO)、CPU1は、前記生成した対応音高情報に含まれる1つの音高を、現在コード情報及び音高変換ルールに基づいて音高変換して、「目標音高」を算出する(ステップS53)。そして、伴奏パターンデータがMIDIデータの場合(ステップS54のNO)、CPU1は、ノート書き込み領域内のノートイベントが示す音高を、前記算出した目標音高に変更する(ステップS55)。一方、伴奏パターンデータが波形データの場合(ステップS54のYES)、CPU1は、ノート書き込み領域内の楽音情報(波形データ)の音高が、前記算出した目標音高になるように、該ノート書き込み領域内の楽音情報をピッチチェンジする(ステップS56)。このステップS53〜S56処理は、前述した
図5のステップS30〜33と同様である。前記ステップS48〜S56が音高変換手段に相当する。
【0082】
ステップS57において、CPU1は、ハーモニーデータ書き込み領域の末尾から順に、前記ステップS50及びS51、又はS52又はS55又はS56にて書き換えられたノート書き込み領域内の楽音情報を書き出す。ノート書き込み領域からハーモニーデータ書き込み領域に書き出される楽音情報は、処理対象の楽音を指定されたコードに合わせて音高変換した「ハーモニー音」を示す。そして、CPU1は、終了操作を受け付けるまで、ステップS41〜S57をループする。これにより、シーケンスデータに含まれる1発音分の楽音情報毎に、現在指定されているコードに合わせたハーモニー音が生成される。終了操作を受け付けたとき(ステップS41のYES)、CPU1は、ステップS41〜S57のループを抜けて、ハーモニーデータ書き込み領域に書き込まれたハーモニーデータを出力する(ステップS58)。そして、図示外のシーケンスデータの再生処理及びハーモニー音の再生処理によりシーケンスデータに対してコードに合わせたハーモニー音を付けることができる。再生するシーケンスデータ中の1発音分のメロディー音が、その発音中に連続的な音高変化を含む場合であっても、そのメロディー音が持つ音高の変化の状態を維持したまま、指定されたコードに合わせた別の音高から始まるハーモニー音を生成及び出力できる。
【0083】
以上説明したとおり、本発明によれば、楽音情報によって示される1つの楽音が、その発音中に或る第1の音高から別の第2の音高に連続的に変化する場合は、記第1の音高と前記第2の音高とをそれぞれ独立に、コード情報に合うように変換する構成により、1発音中に起こる音高変化に含まれる全ての音高を、それぞれ独立に、取得されたコード情報に合うように変換できる。変換後の音高の相互間を途切れず自然な音高変化形状でつなぐことにより、音高が連続的に変化する様子(音高変化量、変化速度など、音高変化の形状)が音高変換後の楽音情報に維持もされるので、音高変換前の楽音情報の持つ音高変化の表現力を、変換後も損なうことなく再現できるようになる。したがって、楽音情報中に1回以上の複数の音高変化が含まれていても、その楽音情報を指定されたコードに合わせて適切に音高変換できる。
【0084】
したがって、例えば、自動伴奏機能で用いる伴奏パターンデータ中に、1発音中に途切れることなく連続的に別の音高に変化する表現(例えばピッチベンドやポルタメントなど)を持つ楽音情報を持たせることができるようになる。このため、例えば、ある種の民族楽器音色のような持続音系の音色を用いて伴奏パターンを作成するにあたり、民族楽器音色など持続系音色に特徴的な途切れない連続的な音高変化の演奏表現を、伴奏パターンデータに付加することができ、その伴奏パターンデータの再生時には、指定されたコード情報に合わせて自然に、連続的な音高変化の表現を再生できるようになる。
【0085】
なお、
図3のステップS3及び
図6のステップS45における対応音高情報を生成するための詳細な計算手順、並びに、
図5のステップS27,S28,S29,
図6のステップS50,S51,S52における「前記楽音情報が前記音高変化の表現を含んでいる場合は、その音高変化の表現に従って発音されるべき音高の全てを、前記コード情報に合った音高に変換する」ための詳細な計算手順は一例に過ぎず、他の計算手法を適用してもよい。
【0086】
なお、
図3、
図5、
図6の処理例では、変換対象の楽音情報は予め記憶されたものであるが、音高変換結果の出力の遅延が許容されるのであれば、変換対象の楽音情報が入力される毎に音高変換と変換結果の出力とを行うようにしてもよいし、あるいは1発音分の楽音情報内に含まれる1回以上の連続的音高変化の始まりを検出したときに一旦出力を停止して、1発音中の音高変化の終わりを検出したときに1発音中の音高変化に関する音高変換と出力を再開するようにしてもよい。
【0087】
なお、
図3、
図5、
図6の処理例では、変換対象の楽音情報は、記憶媒体に記憶された伴奏パターンデータやシーケンスデータから読み出すようにしたが、通信I/F8を介して接続されたネットワーク上のサーバから取得した伴奏パターンデータやシーケンスデータから読み出してもよい。また、変換対象の楽音情報は、入力操作部4(鍵盤)や外部オーディオ入力(マイク等)からリアルタイム入力された楽音情報を順次処理、もしくは一時記憶して順次処理するようにしてもよい。
【0088】
なお、実施例では、コード情報の入力(指定)は、ユーザの演奏入力(鍵盤操作)により行われるものを想定していたが、予め記憶されたコード情報列を順次読み込む形式により行われてもよいし、あるいは、伴奏パターンデータやシーケンスデータから検出されたものでもよい。
【0089】
なお、
図3のステップS13の変更例として、前記ステップS2の使用される伴奏パターンデータが特定された時点で、使用可能な全コードのそれぞれに対応して「コード対応伴奏パターンデータ」を生成及び記憶しておき、コード入力があっときに、ステップS13において、そのコードに対応する「コード対応伴奏パターンデータ」を読み出す構成を採用してもよい。
【0090】
なお、
図6のハーモニー音生成処理は、シーケンスデータを基にしてハーモニー音を生成することに限らず、例えば手弾き演奏に合わせてハーモニー音を生成するなど、なんらかのメロディデータを基にしてハーモニー音を生成するものでさえあればよい。
【0091】
実施例では、電子楽器に適用した楽音情報処理装置を説明したが、コンピュータに楽音情報処理装置の動作を実行させるためのプログラムにより、本発明の実施することもできる。