(57)【要約】      （修正有）【課題】楽音情報の示す楽音が、その発音中に連続的に音高変化する場合であっても、指定されたコードに合わせて適切に楽音情報を変換できるようにする。【解決手段】伴奏パターンデータから音高変換対象となる１発音分の楽音情報を取得する（S23）。ユーザにより指定されたコード情報を取得するコード情報、伴奏パターンに対応付けられた基準コード及び音高変換ルールに基づいて、１発音分の楽音情報の音高を変換する（S27-S29.S32,S33）。この音高変換に際して、取得した楽音情報の示す楽音が、その発音中に或る第１音高から別の第２音高に変化するか否かを判定する（S24）。楽音情報の示す楽音が、その発音中に音高変化する場合、その音高変化に含まれる第１音高と別の第２音高との全てを、それぞれ独立に、コード情報に合うような音高に変換する（S27−S29）。【選択図】図５
2014174205.tif 000002
【特許請求の範囲】
【請求項１】
音高要素を含む楽音を示す楽音情報を取得する楽音情報取得手段と、
コードを指定するコード情報を取得するコード情報取得手段と、
前記取得された楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化するかどうかを判定する判定手段と、
前記取得された楽音情報の音高を、前記取得されたコード情報に合うように変換する音高変換手段であって、前記楽音情報によって示された１つの楽音が前記第１の音高から前記第２の音高に連続的に変化する場合は、前記第１の音高と前記第２の音高とをそれぞれ独立に、前記コード情報に合うように変換する音高変換手段と
を具備することを特徴とする楽音情報処理装置。
【請求項２】
前記音高変換手段は、
前記前記楽音情報によって示された１つの楽音が前記第１の音高から前記第２の音高に連続的に変化する場合、更に、前記コード情報に合うように変換した後の前記第１の音高から前記第２の音高への音高変化が自然な連続的変化になるように制御するように構成されることを特徴とする請求項１に記載の楽音情報処理装置。
【請求項３】
音高要素を含む楽音を示す楽音情報を取得するステップと、
コードを指定するコード情報を取得するステップと、
前記取得された楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化するかどうかを判定するステップと、
前記取得された楽音情報の音高を、前記取得されたコード情報に合うように変換する音高変換手段であって、前記楽音情報によって示された１つの楽音が前記第１の音高から前記第２の音高に連続的に変化する場合は、前記第１の音高と前記第２の音高とをそれぞれ独立に、前記コード情報に合うように変換するステップと
をコンピュータに実行させるプログラム。
【請求項４】
前記取得された楽音情報の音高を、前記指定されたコード情報に合うように変換するステップは、
前記前記楽音情報によって示された１つの楽音が前記第１の音高から前記第２の音高に連続的に変化する場合、更に、前記コード情報に合うように変換した後の前記第１の音高から前記第２の音高への音高変化が自然な連続的変化になるように制御することを特徴とする請求項３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コード（和音）に合わせて楽音情報の音高を変換するための楽音情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来、電子鍵盤楽器等において、例えばジャズやロックなどの音楽ジャンル毎に分類される伴奏スタイルデータに記憶される複数パート分の伴奏パターン内の各音を、再生時に指定されたコード（和音）に合うように音高変換して、再生する自動伴奏機能（スタイル再生機能）があった。かかる自動伴奏機能に用いる伴奏パターンは、任意の基準コードに基づく音高の伴奏音を配列するよう作成されている。この伴奏パターンに対応付けて、再生時に指定されたコードに合う音高に伴奏パターン内の各音高を変換するためのノート変換テーブルが用意されており、このノート変換テーブルに基づき指定されたコードの種類に応じた音高シフトデータを読み出して、読み出した音高シフトデータに基づいて、伴奏パターンに含まれる各伴奏音の音高を、指定されたコードに合った音高に変換する（特許文献１を参照）。
【０００３】
例えば、ある種の民族楽器音色のような持続音系の音色では、楽音の発音中に或る音高から別の音高へ途切れずに持続的（連続的）に変化させる表現を含むことが多々ある。かかる持続音系の音色を用いてリアルな演奏表現を持つ伴奏パターンデータを作成するためには、１発音中に連続的に音高を変化させる表現を伴奏パターンデータ内に含ませる必要がある。しかし、特許文献１の自動伴奏機能では、伴奏パターンデータ内に、例えばピッチベンドなどにより１発音中に或る音高を別の音高に持続的（連続的）に変化させるような楽音情報を持たせることができなかった。
【０００４】
具体的には、伴奏パターン内に、ピッチベンドなどにより音高が連続的に変化する楽音情報が存在した場合、特許文献１の音高変換の構成では、途中のピッチベンドなどに関わらず、ノートナンバ（音高）に対するシフト量のみで音高変換してしまう。そうすると、ピッチベンド等による連続的な音高変化の表現が、指定されたコードの種類に合わないものとなる。例えば、「Ｃｍａｊ」コードに基づき作成された伴奏パターン内に、Ｃ音から聴覚上Ｅ音に4半音分変化させるピッチベンドを含むとすると、再生時に「Ｃｍｉｎ」コードを指定した場合には、「Ｃ音から聴覚上Ｅフラット音に３半音分変化させるピッチベンド」になって欲しいにも関わらず、従来の音高変換では「Ｃ音から聴覚上Ｅ音に4半音分変化させるピッチベンド」のままになってしまう。
【０００５】
また、特許文献２には、指定されたコードに合わせて連続的に音高を変化させる技術が開示されている。ここには、例えば再生中のシーケンスデータに含まれるコード変更指示に合わせて演奏入力音の音高を自動変換するに際して、演奏入力音の音色が持続音の場合、発音中の音を消音せずに、例えばピッチベンド等を用いて、コード変更指示に合わせて、発音中の音高から別の音高に連続的に変化させることが記載されておいる。なお、発音中の音の音色が持続音でない場合には、発音中の音を消音し、コード変更指示に合わせた別の音高に変換してから再発音するようになっている。
【０００６】
しかし、特許文献２の技術では、音高変換の基となる１つの演奏入力音には１つの音高のみが対応付けられており、１つの演奏入力音が「その発音中に或る音高から別の音高に連続的に変化する」こと、或いは、１つの演奏入力音に対して「その発音中に或る音高から別の音高に連続的に変化させる表現」を付けることは考慮されていない。したがって、特許文献２の技術でも、１つの演奏入力音が、その発音中に或る音高から別の音高に連続的に変化する場合には、指定されたコードに合わせて適切に音高変換することはできなかった。
【０００７】
また、引用文献３には、波形データの形式で用意されたアルペジオパターンの音高を変換するための技術が記載されている。これによれば、１つのアルペジオパターンに対して、テンポ、コードルート（根音）、コードタイプなどに基づく複数の適用範囲に対応付けられた複数の波形データを用意しておき、且つ、各アルペジオパターンを示す波形データを、アルペジオを成す１楽音毎の区間に分割しておき、ユーザの演奏入力（テンポやコードの指定など）に応じたアルペジオパターン（波形データ）を読み出して、読み出した波形データの１音区間毎の音高を、指定されたコードに合わせて変換するようになっている。
【０００８】
しかし、特許文献３は、アルペジオ内の１楽音を区間分けする構成であり、１つの楽音が、その発音中に或る音高から別の音高に連続的に変化する場合を想定していなかった。したがって、特許文献３のような、波形データ形式のアルペジオパターンを再生時に指定されたコードに合わせて音高変換する従来技術においても、アルペジオパターン内に、１発音中に連続的に音高変化する楽音（アルペジオ構成音）を含む場合、アルペジオパターンを指定されたコードに合わせて適切に音高変換することはできなかった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０‐２９３５８６号公報
【特許文献２】特開２００４‐１７０８４０号公報
【特許文献３】特開２００７‐２９３３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は上述の点に鑑みてなされたもので、或る音高から別の音高に連続的に変化するような表現を持つ楽音情報を、指定されたコードに合わせて適切に音高変換できるようにした楽音情報処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明は、音高要素を含む楽音を示す楽音情報を取得する楽音情報取得手段と、コードを指定するコード情報を取得するコード情報取得手段と、前記取得された楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化するかどうかを判定する判定手段と、前記取得された楽音情報の音高を、前記取得されたコード情報に合うように変換する音高変換手段であって、前記楽音情報によって示された１つの楽音が前記第１の音高から前記第２の音高に連続的に変化する場合は、前記第１の音高と前記第２の音高とをそれぞれ独立に、前記コード情報に合うように変換する音高変換手段とを具備することを特徴とする楽音情報処理装置である。
【００１２】
この発明のよれば、楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化する場合は、前記第１の音高と前記第２の音高とをそれぞれ独立に、前記コード情報に合うように変換する構成により、１発音中に起こる音高変化に含まれる音高それぞれが、取得されたコード情報に合うような音高に変換される。したがって、或る音高から別の音高に連続的に変化させるような楽音情報を、音高変換前後で音高の変化の状態を維持したまま、別の音高から始まる楽音情報に変換できる。したがって、楽音情報が示す楽音の発音中に１回以上の音高変化が含まれていても、その楽音情報を指定されたコード情報に合わせて適切に音高変換できる。
【００１３】
これにより、例えば、自動伴奏機能で用いる伴奏パターンデータ中に、１発音中に或る音高から別の音高に連続的に変化させる表現（例えばピッチベンドなど）を持つ楽音情報を持たせることができるようになる。このため、例えば、ある種の民族楽器音色のような持続音系の音色を用いて伴奏パターンを作成するにあたり、民族楽器音色など持続系音色に特徴的な途切れない連続的な音高変化の演奏表現を、伴奏パターンデータに付加することができ、その伴奏パターンデータの再生時には、指定されたコード情報に合わせて自然に、連続的な音高変化の表現を再生できるようになる。
【００１４】
また、この発明に係る楽音情報処理装置において、前記音高変換手段は、前記楽音情報が前記音高変化の表現を含んでいる場合は、更に、その音高変化の表現に従って変化する音高の相互間が途切れずに自然な音高変化形状でつながるように前記変換を制御するように構成されてよい。これにより、音高が連続的に変化する様子（音高変化量、変化速度など、音高変化の形状）が音高変換後の楽音情報に維持もされるので、音高変換前の楽音情報の持つ音高変化の表現力を、変換後も損なうことなく再現できるようになる。
【００１５】
また、本発明は、前記の楽音情報処理装置の動作をコンピュータに実行させるプログラムとして構成及び実施することもできる。
【図面の簡単な説明】
【００１６】
【図１】本発明の楽音情報処理装置を適用した電子楽器の電気的ハードウェア構成の一例を示すブロック図。
【図２】図１の電子楽器において自動伴奏機能に用いる伴奏パターンデータを説明する図。
【図３】本発明に係る音高変換処理の一実施例であり、図１の電子楽器が実行する自動動伴奏データ生成処理のフローチャート。
【図４】図２の伴奏パターンデータに基づく対応音高情報のデータ構成例。
【図５】図３の自動伴奏データ生成処理におけるコード対応伴奏パターンデータ生成処理のフローチャート。
【図６】本発明に係る音高変換処理の別の実施例であり、図１の電子楽器が実行するハーモニー音生成処理のフローチャート。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照して、本発明の楽音情報処理装置及びプログラムの一実施形態を説明する。
【００１８】
図１は、本発明の楽音情報処理装置を適用した電子楽器１００の電気的ハードウェア構成の一例を示すブロック図である。電子楽器１００は、例えば自動伴奏機能（スタイル再生機能）を具備する電子鍵盤楽器であり、伴奏パターンデータ等から取得した楽音情報を、再生時に指定されたコード（和音）に合うように変換きるように構成されており、詳しくは、楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化する場合は、第１の音高と第２の音高とをそれぞれ独立に、コード情報に合うように変換することにより、連続的な音高変化を持つ楽音情報を、取得したコード情報に合うように適切に変換することに特徴がある。なお、「コードに合った音高」、「コードに合うような音高」、「コードに合わせた音高」或いは「コードにふさわしい音高」とは、そのコード上でメロディーに使うことが可能な音高であり、例えば、そのコードの構成音、及び、コード構成音以外の音のうち、コードに対してしてアヴォイドノート（回避音）ではない「テンションノート」を指す。なお、アヴォイドノートは、コードと不協和な音として定められた音である。
【００１９】
図１に示す電子楽器１００は、ＣＰＵ１（Central Processing Unit、中央処理装置）、ＲＯＭ２（Read Only Memory、リードオンリーメモリ）、ＲＡＭ３（Random Access Memory、ランダムアクセスメモリ）、入力操作部４、表示部５、音源６、記憶装置７及び通信インタフェース（通信Ｉ／Ｆ）８を備え、各部がデータ及び通信バス９を介して接続される。
【００２０】
ＣＰＵ１は、ＲＯＭ２又はＲＡＭ３に記憶されたプログラムを実行して、電子楽器１００の全体動作を制御する。ＲＯＭ２は、ＣＰＵ１が実行する各種のプログラムや各種のデータなどを格納した不揮発性メモリである。ＲＡＭ３は、ＣＰＵ１が実行するプログラムのロード領域やワーク領域に使用される。
【００２１】
入力操作部４は、ユーザによる各種の操作を受け付ける操作子群と、各操作子の操作イベントを検出する検出部を含む。ＣＰＵ１は、入力操作部４にて検出された操作イベントを取得して、該取得した操作イベントに対応する処理を行う。操作子群は、各種スイッチなどデータ入力用操作子と、鍵盤など演奏入力用操作子とを含んでよい。入力操作部４にて行われる操作は、例えば伴奏スタイル選択操作、自動伴奏開始操作、各種情報入力操作、コード入力操作、及び、演奏入力操作などである。
【００２２】
表示部５は、例えば液晶表示パネル（ＬＣＤ）やＣＲＴ等から構成され、ＣＰＵ１の制御に基づき、当該電子楽器１００で使用される各種情報を表示できる。表示部５に表示される各種情報は、例えば自動伴奏に用いる伴奏スタイルデータの選択肢、自動演奏に用いるシーケンスデータの選択肢、音高変換ルールの選択肢等である。
【００２３】
音源６は、ＣＰＵ１の制御に基づき、楽音情報に応じた楽音信号を電子的に生成し、生成された楽音信号に各種音響的効果を付与して、サウンドシステム１０に出力する。楽音情報は、鍵盤等を用いた演奏入力、後述する伴奏パターンデータ、或いは、シーケンスデータなどに基づいてＣＰＵ１により生成され、バス９を介して音源６に供給される。音源６は、例えばＦＭ音源、ＰＣＭ音源或いは物理モデル音源等、周知のどのような楽音合成方式を用いて構成されてもよい。また、音源６は、ハードウェア音源装置により構成されてもよいし、或いは、ＣＰＵ１又は図示外のＤＳＰ（Digital Signal Processor）によるソフトウェア処理により構成されてもよい。サウンドシステム１０は、ＤＡＣ、アンプ、スピーカなどを含み、音源６で生成された楽音信号をアナログ信号に変換して、アナログ変換された楽音信号をスピーカ等から発音する。
【００２４】
記憶装置７は、例えばハードディスク、ＦＤ（フレキシブルディスク又はフロッピー（登録商標）ディスク）、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多目的ディスク）、あるいはフラッシュメモリ等の半導体メモリからなり、後述する伴奏スタイルデータなど、電子楽器１００で使用する各種データを記憶できる。
【００２５】
通信Ｉ／Ｆ８は、例えば、ＭＩＤＩ（Musical Instrument Digital Interface)機器を接続するＭＩＤＩインタフェース、ＵＳＢやＩＥＥＥ１３９４など周辺機器を接続する汎用の通信インタフェース、Ｅｔｈｅｒｎｅｔ（登録商標）規格等に準拠する汎用のネットワークインタフェースなどを含み、有線及び無線いずれの通信方式で構成されてもよい。電子楽器１００は、例えば、通信Ｉ／Ｆ８を介して外部記憶装置１１を接続したり、或いは、通信Ｉ／Ｆ８を介して通信ネットワーク上のサーバコンピュータと通信可能に接続したりできる。
【００２６】
電子楽器１００は、ＲＯＭ２、ＲＡＭ３、記憶装置７或いは外部記憶装置１１など任意の記憶媒体内に、１以上の伴奏スタイルデータを記憶する。これら伴奏スタイルデータは、例えばジャズ、ロック、クラッシック等の音楽ジャンル毎に分類されており、それぞれ対応するジャンルに適した伴奏内容を表す伴奏パターンを持っている。１つの伴奏スタイルデータは、例えばアルペジオパターン等の伴奏音列を示す伴奏パート、ベースラインを示すベースパート、リズムパターンを示すドラムパート等を含む複数のパートで構成されており、パート毎に伴奏パターンデータが用意される。また、１つのパートに対して、例えばイントロ、メイン、フィルイン、エンディング等、楽曲の場面に合わせた複数セクションの伴奏パターンデータが用意される。
【００２７】
各伴奏パターンデータには、基準コード情報と音高変換ルールとが対応付けて記憶される。基準コード情報は、その伴奏パターンの作成時に基準としたコードであり、伴奏パターンに含まれる伴奏音の音高は、その基準コードに合うような音高になっている。音高変換ルールは、伴奏パターンデータ内の各伴奏音の音高を、現在コード情報の種類に合うように音高変換するためのルールである。かかる音高変換ルール自体は従来知られる技術を利用してよい（例えば特許文献１を参照）。音高変換ルールは、例えばテーブル形式のデータ（音高変換テーブル）で構成される。音高変換テーブルを記憶する記憶媒体は、伴奏スタイルデータを記憶した記憶媒体でもよいし、或いは、その記憶媒体とは別の記憶媒体でもよい。音高変換ルールは、テーブル形式でなく、音高変換テーブルに相当する音高変換アルゴリズムを実行する形式で構成されてもよい。アルゴリズムとしては、例えば、伴奏パターン内の各伴奏音の音高を指定されたコード構成音に変換するもの、或いは、伴奏パターン内の各伴奏音がコード構成音のときはそのまま指定されたコード構成音に変換する一方、各伴奏音がコード構成音以外のときには指定されたコードに合うスケール音に変換するものを適用できる。
【００２８】
図２は、伴奏パターンデータの一例を説明する図である。縦軸は音階名（Ｃ、Ｄ、Ｅ、Ｆ、Ｇ・・・）により音高を表す。横軸は「小節数：拍数」の形式で時間を表す。伴奏パターンデータ２０は、第１楽音情報２１（「楽音情報１」）、第２楽音情報２２（「楽音情報２」）、及び、第３楽音情報２３（「楽音情報３」）からなる２小節分の伴奏パターンである。伴奏パターンデータ２０は、「Ｃｍａｊ」（シーメジャー）を基準コードとして作成され、「Ｃｍａｊ」のスケールに合う音高の楽音情報２１、２２及び２３を発音タイミング順に配列してなる。
【００２９】
図２において、各楽音情報２１，２２，２３によって示される１つの楽音は、線分として描かれている。線分の縦軸上の位置が、各楽音情報２１，２２，２３が示す楽音に含まれる音高要素を示している。また、線分の横軸上の位置が、各楽音情報２１，２２，２３が示す楽音の発音期間を表す。楽音情報は、ノートイベントデータにより音高を示すＭＩＤＩデータ形式のデータであってもよいし、或いは、例えば波形データそのものが音高要素を示すＰＣＭ波形データ、マイク入力或いは音声データなど、波形データの形式でもよい。なお、波形データの場合、楽音情報は、単旋律又はユニゾンのデータ（同時発音が１音高のみのデータ）とし、和音状態は考慮しない。
【００３０】
第１楽音情報２１は、その発音中に或る音高から別の音高に連続的（持続的）に変化する楽音情報の例示である。第１楽音情報２１が示す楽音は、図示の通り、その発音中に、「Ｃ」音から「Ｅ」音に、そして、「Ｇ」音に連続的に変化するようになっている。楽音情報がＭＩＤＩ形式のデータである場合、第１楽音情報２１は、先頭の音高（Ｃ音）を示すノートイベントと、このノートイベントの示す音高（Ｃ音）を別の音高（Ｅ音，Ｇ音）に連続的に変化させる複数の音高変化制御用ＭＩＤＩイベントとの組み合わせからなる。この実施例では、音高変化制御用のＭＩＤＩイベントとしてピッチベンドイベントを想定する。音高変化制御用のＭＩＤＩイベントは、ピッチベンドに限らず、例えばポルタメントなどその他の種類のイベントでもよい。
【００３１】
また、波形データの場合、第１楽音情報２１は、その波形データに対応する楽音が、或る音高要素（Ｃ音）から別の音高要素（Ｅ音，Ｇ音）へ連続的に変化する（ピッチベンドされる）波形形状の波形データからなる。
【００３２】
第２楽音情報２２はＥ音の発音を示し、また、第３楽音情報２３はＣ音の発音を示す。これら第２楽音情報２２と第３楽音情報２３は１発音中に音高変化の表現を持たない。第２楽音情報２２及び第３楽音情報２３は、ＭＩＤＩ形式のデータの場合、それぞれの音高を示すノートイベントからなる。波形データ形式の場合、第２楽音情報２２及び第３楽音情報２３は、それぞれ音高変化の表現を含まない１発音分の波形データからなる。
【００３３】
本発明にかかる音高変換処理の一実施例として、図２の伴奏パターンデータ（伴奏スタイル）内の楽音情報を変換対象として音高変換した自動伴奏データを出力する際の動作を説明する。図３は、図２の伴奏パターンデータ（伴奏スタイル）を用いて自動伴奏を行うための自動動伴奏データ生成処理のフローチャートである。ＣＰＵ１は、例えば、電子楽器の電源投入時や、電子楽器で自動伴奏機能の開始が指示されたときなど、図３の処理を実行する。
【００３４】
ユーザが、入力操作部４を用いて、所望の伴奏スタイルを選択する操作を行うと、ＣＰＵ１は、ステップＳ１において、ユーザにより選択された伴奏スタイルデータを特定（伴奏スタイルを選択）して、伴奏スタイルデータを記憶したメモリから該特定した伴奏スタイルデータを読み出す。
【００３５】
ステップＳ２において、ＣＰＵ１は初期設定を行う。この初期設定は、選択された伴奏スタイルから処理対象となる１つの伴奏パターンデータを特定すること、該特定した伴奏パターンデータに対応付けられた基準コード情報と音高変換ルール（音高変換テーブル又はアルゴリズム）と基準テンポ情報を取得すること、現在コード情報の設定値と直前コード情報の設定値を初期化すること、ＲＵＮフラグの値を初期化する（ＲＵＮフラグに「０」をセットする）こと、演奏テンポを設定すること、及び、「対応音高情報（Ｄａｔａ）」を初期化することなどを含む。
【００３６】
ステップＳ３において、ＣＰＵ１は、前記特定された１つの伴奏パターンデータを分析して、当該伴奏パターンデータに基づく対応音高情報（Ｄａｔａ）を生成し、生成された対応音高情報を対応音高情報（Ｄａｔａ）記憶領域に記憶する。対応音高情報のデータは、伴奏パターンデータに時間的に対応付けられた聴覚上の音高の配列からなる。具体的には、対応音高情報は、伴奏パターンデータ内の楽音情報毎に、その楽音情報が示す楽音（伴奏音）に含まれる聴覚上の音高を示すデータと、聴覚上の各音高のタイミングを示すデータとを、発生順に配置したものである。
【００３７】
図４（ａ）、（ｂ）は、それぞれ、図２に示す伴奏パターンデータに基づく対応音高情報のデータ構成例を示す。タイミングは、「小節：拍：クロック」単位で示されており、１小節が４拍、１拍が４８０クロックとする。なお、タイミングは、例えば「時間：分：ミリ秒」など時間単位など、その他の単位で表されても良い。
【００３８】
図４（ａ）に示す構成例では、対応音高情報は、伴奏パターンデータ内の楽音情報を識別する楽音情報番号「Ｎｏ．」と、１つの楽音情報が示す楽音に含まれる全ての聴覚上の音高と、聴覚上の各音高の開始タイミングと、聴覚上の各音高の終了タイミングからなる。楽音情報番号は例えば発音タイミングの順に番号付けする。この例では、第１楽音情報２１の楽音情報番号は「１」、第２楽音情報２２の楽音情報番号は「２」、第３楽音情報２３の楽音情報番号は「３」とする。
【００３９】
図４（ａ）の構成例において、１つの楽音情報の示す楽音が、その発音中に或る音高から別の音高に途切れず連続的に変化させる表現（ピッチベンド）を含む場合は、その楽音情報における先頭の音高と、ピッチベンドによる音高変化結果に含まれる全ての音高（半音単位の音階音）が、それぞれ独立に、当該楽音情報が示す楽音に含まれる「聴覚上の音高」として設定される。例えば、第１楽音情報２１に関しては、先頭の「Ｃ」音と、ピッチベンドに従う音高変化に含まれる「Ｅ」音及び「Ｇ」音との３つの音高が「聴覚上の音高」として設定される。また、それら聴覚上の音高毎に開始タイミングと終了タイミングとが設定される。１つの楽音情報の示す楽音に含まれる全ての音高は共通の楽音情報番号で管理されており、楽音情報番号に対する付加的情報（図では数値を囲む括弧により付加的情報を示す）や、各音高前後の開始タイミングや、終了タイミングにより、複数の音高のうちいずれが当該楽音情報中の先頭の音高であるかを識別できる。また、第２楽音情報２２及び第３楽音情報２３に対応する対応音高情報としては、それぞれ、楽音情報が示す楽音に含まれる１つの音高と、その開始タイミング及び終了タイミングが設定される。
【００４０】
図４（ｂ）に示す対応音高情報のデータ構成例では、対応音高情報には、楽音情報毎に、その楽音情報に含まれる先頭の音高と、その開始タイミングとが設定されるとともに、音高変化情報が設定される。音高変化情報は、その楽音情報が示す楽音に含まれる連続的な音高変化を示すデータであり、ピッチベンドによって先頭の音高から音高変化した結果の全ての音高（音階音）と、それら音高の開始タイミングとからなる。例えば、第１楽音情報２１に対応する対応音高情報は、音高変化情報として、ピッチベンドに従う音高変化に含まれる「Ｅ」音及び「Ｇ」音の情報と、それぞれ音高の開始タイミングを記憶する。（ｂ）の構成では、音高変化情報によって、楽音情報中の先頭の音高とピッチベンドに従う音高変化結果の音高とを区別できる。なお、音高変化情報のデータ構造は、対応する楽音情報（楽音情報番号）毎にデータを持つ構造に限らず、例えばポインタリストの形式でもよい。なお、図の例では、各音高は開始タイミングのみを持つが、更に音高終了タイミングを持つようにしてもよい。
【００４１】
図３に戻り、前記ステップＳ３における対応音高情報の生成処理の具体例を説明する。先ず、伴奏パターンデータがＭＩＤＩデータ（ノートイベントとピッチベンドイベント）からなる場合を説明する。ＣＰＵ１は、伴奏パターンデータ中の各楽音情報を示すノートイベントとピッチベンドイベントに基づいて、１つのノートイベントの発音期間中の全ての聴覚上の音高値群を算出する。聴覚上の音高値群は、ノートイベントをピッチベンドイベントによって制御した結果（発音結果）として得られる音高を示しており、例えばセント単位（１００セント＝半音）の数値で算出・管理される。第１楽音情報２１の楽音のように、その発音中に音高変化がある場合、図２に示す線分２１の変化形状（音高変化）に対応する変動量で変化する複数の値が、発音期間中の聴覚上の音高値群として算出される。楽音情報２２、２３の楽音のように、発音期間中の音高変化がないものは、発音期間中一定の複数の値が、聴覚上の音高値群として算出される。
【００４２】
次に、ＣＰＵ１は、算出された１発音期間分の音高値群に基づいて、対応する１つのノートイベント（１つの楽音情報が示す楽音）の発音期間を、音高が半音単位で一定する「一定区間」と、音高が半音単位をまたいで変化する「変化区間」とに分割する（区間分割情報を作成する処理）。「一定区間」は、音高が半音単位の音階音で一定するか、若しくは、音高の変化が半音単位の範囲内に収まる区間である。また、「変化区間」は、音高が半音単位以上変化する区間であり、変化区間において、音高は、或る半音単位の音階音（直前の一定区間）から別の半音単位の音階音（後続の一定区間）へ連続的に変化する。
【００４３】
具体的な処理例は次の通りである。ＣＰＵ１は、先ず、算出された聴覚上の音高値群を１つずつ発音期間全体にわたり走査して、該聴覚上の音高が半音単位で変化するタイミング（時刻）と、その変化方向を調べる。そして、半音を超える変化があった場合には、その音高の変化が「急激な（離散的）変化」か否かを調べる。半音を超える変化の有無については、例えば、ＣＰＵ１は、現在調査対象の音高値と、その直前の音高値を丸めた値（例えば１００セント単位（半音単位））とを比較して、閾値（例えば、８５セントなど半音単位よりもやや小さい値）以上の変化があるか否かによって判断できる。また、変化方向については、例えば、ＣＰＵ１は、現在調査中の音高値と、その直前の音高値の実値（半音単位で丸めない値）との比較により決定できる。また、「急激な（離散的）変化」有無については、例えば、ＣＰＵ１は、現在調査中の音高値と、その直前の音高値の実値とを比較して、閾値（例えば８５セント）以上の変化があるか否かによって判断できる。ＣＰＵ１は、「急激な音高の変化」があった場合、その音高値の時刻を、半音単位を越える急激な（離散的）音高変化の生じる時刻＝「離散的変化の時刻」と評価する。他方、直前音高値から音高の変化はあったが急激な変化でない場合、その音高値の時刻を、半音単位にわたり連続的に音高が変化する連続的変化の到達時刻＝「連続的変化の到達時刻」と評価する。
【００４４】
「連続的変化の到達時刻」と評価される音高値があった場合、ＣＰＵ１は、その音高値から時間を翻って１つずつ音高値を調べて、半音単位にわたり連続的に音高が変化する連続的変化の開始時刻と推測できるデータを探す。具体的には、ＣＰＵ１は、調査対象の音高値と、その直前の音高値を丸めた値（例えば１００セント（単位半音単位））とを比較して、閾値（例えば８５セント）以上の変化を発見したとき、その音高値の時刻を、この「連続的変化の到達時刻」に係る連続的変化の開始時刻（「連続的変化の開始時刻」）とみなす。なお、時間を翻る範囲は所定の時間範囲（クオンタイズ長）とする。所定の時間範囲以内で「開指示刻」に該当するデータが見つからなかった場合、ＣＰＵ１は、「連続的変化の開始時刻」とみなす仮想データを作成してよい。なお、見つからなかった場合の別の例として、例えば閾値をより小さい値（５０セントなど）に変更して再走査して、再走査により該当するデータが見つかった場合、それを「連続的変化の開始時刻」とみなし、見つからなければ、その「連続的変化の開始時刻」を不採用としてもよい。
【００４５】
以上の手順により、当該楽音情報の示す楽音（ノートイベント）の発音期間中の全ての「離散的変化の時刻」、「連続的変化の到達時刻」及び「連続的変化の開始時刻」を抽出した後、ＣＰＵ１は、これら３種類の時刻情報とノートイベントに含まれるノートオンタイミングとに基づいて、当該楽音情報の示す楽音の発音期間を「一定区間」と「変化区間」とに分割する。「一定区間」は、「離散的変化の時刻」、「連続的変化の到達時刻」又は「ノートオンタイミング」から開始して、その開始時刻の次に到達する「離散的変化の時刻」又は「連続的変化の開始時刻」で終了する区間である。一方、「変化区間」は、「連続的変化の開始時刻」又は「連続的変化の到達時刻」から開始して、その開始時刻の次に到達する「連続的変化の到達時刻」で終了する区間、又は、「ノートオンタイミング」から開始してその開始時刻の次に到達する「連続的変化の到達時刻」で終了する区間である。
【００４６】
上記の区分に従い、「一定区間」と「変化区間」とを決定した後、ＣＰＵ１は、以下の調整処理を行う。（１）所定の最短時間（例えば１６分音符相当の時間）を越えない短時間の「一定区間」は、その直前区間が「変化区間」である場合は、その直前の「変化区間」に吸収される。ただし、この吸収処理は、当該「一定区間」の音高値が直前の「変化区間」の末尾の音高値に一致している場合にのみ行う。（２）連続する「変化区間」（或る「変化区間」の直前が「変化区間」である場合）は、それらを１つの「変化区間」に統合する。ただし、この統合処理は、双方の区間の音高値の変化方向が同じ場合にのみ行う。（３）「ノートオンタイミング」から開始して「連続的変化の到達時刻」で終了する「変化区間」は、その直後の区間が「一定区間」である場合、その「一定区間」に吸収される。
【００４７】
上記の詳細手順によれば、例えば、（１）音高として認識される最初の音高を「一定区間」の先頭に採用すること（連続的な装飾的音高の変化を無視すること）、（２）離散的な装飾的な音高の変化を「一定区間」として採用すること、（３）音高が離散的に連続変化している場合には、それら離散的な音高群のうち最初の「一定区間」の音高のみを採用すること、（４）音高が連続的に変化している場合には、後続の「一定区間」より前に変化方向が逆転する箇所があれば、その箇所の半音単位の音高を採用することができる。
【００４８】
以上の手順により「一定区間」と「変化区間」とを決定することより、ＣＰＵ１は、楽音情報の示す楽音が連続的に音高変化する場合には、その楽音情報における先頭の音高の区間と、ピッチベンドに従う音高変化の中で音高が半音単位で一定する区間とを、「一定区間」として抽出できる。また、或る「一定区間」から別の「一定区間」までの区間は「変化区間」として抽出される。例えば図２の第１楽音情報２１であれば、第１小節１拍目から第１小節２拍目３６０クロックまでが「Ｃ」音の「一定区間」、第１小節３拍目から第１小節３拍目４００クロックまでが「Ｅ」音の「一定区間」、第１小節４拍目から第２小節１拍目までが「Ｇ」音の「一定区間」になる。そして、２つの一定区間をつなぐ区間が「変化区間」として抽出される。また、楽音情報２２、２３のように音高変化の表現を含まない楽音は、ノートオンからノートオフまでの発音期間全体が１つの「一定区間」となる。
【００４９】
「一定区間」と「変化区間」とを決定した後、ＣＰＵ１は、前記算出された発音期間中の聴覚上の各音高値と、各「一定区間」（区間の開始タイミングと終了タイミング）とを対応付けることで、図４（ａ），（ｂ）のような対応音高情報を生成できる。対応音高情報の一例として、「一定区間」毎に、その一定区間の先頭の音高値を半音単位で丸めた音高（半音単位の音階音）を対応付けて記憶するようにしてよい。楽音情報の示す楽音が連続的に音高変化する場合、楽音の先頭の音高と、ピッチベンドに従う音高変化に含まれる全ての音高（半音単位の音階音として認識できる音高）とが、それぞれ対応する「一定区間」に対応付けて記憶される。
【００５０】
一方、伴奏パターンデータが波形データの場合の対応音高情報生成処理は次の通りである。ＣＰＵ１は、まず、従来から知られるピッチ分析方法を用いて、伴奏パターンデータ中の各楽音情報（波形データ）毎に、１発音期間中の聴覚上の音高値群を算出する。そして、ＣＰＵ１は、前述した「区間分割情報を作成する処理」と同様の処理により、１発音分の楽音情報の発音期間を「一定区間」と「変化区間」とに分割する。そして、ＣＰＵ１は、算出した聴覚上の音高値群と、各「一定区間」とを対応付けることで、図４（ａ），（ｂ）のような対応音高情報を生成できる。
【００５１】
なお、「一定区間」と「変化区間」とを自動算出した後に、算出された各区間を、ユーザが手動で修正（調整）してもよい。また、前記ステップＳ３において「一定区間」と「変化区間」を自動算出する処理を行う構成に替えて、予め伴奏パターンデータに対して「一定区間」と「変化区間」とを手動で設定又は自動算出しておき、前記ステップＳ３では該予め設定又は算出した「一定区間」と「変化区間」とに基づいて対応音高情報を生成するように構成してもよい。この変更例の場合、ＣＰＵ１は、上述した区間分割のための計算や判定処理を省略できる。
【００５２】
以上の手順により、ＣＰＵ１は、前記ステップＳ２で特定された伴奏パターンデータに基づく対応音高情報を作成して、作成した対応音高情報を対応音高情報（Ｄａｔａ）記憶領域に記憶する。対応音高情報（Ｄａｔａ）記憶領域には、前記特定された伴奏パターンデータ内の各楽音情報に対応する対応音高情報のデータを記憶する。続いて、ＣＰＵ１は、ユーザから終了操作、自動伴奏スタート指示、または、自動伴奏ステップ指示を受け付けるまで、ステップＳ４、６、８、１０をＮＯに分岐してステップＳ４〜Ｓ１０をループして、ユーザによる操作を待つ。
【００５３】
自動伴奏スタート指示を受け付けたとき（ステップＳ６のＹＥＳ）、ＣＰＵ１は、ステップＳ９において、ＲＵＮフラグに「１」をセットし、且つ、直前コード情報及び現在コード情報をクリアして、自動伴奏の時間進行を制御するタイマを起動する。そして、ＣＰＵ１は、ステップ１０をＹＥＳに分岐して、ステップＳ１１においてコード情報を新たに受け付けているかどうかを判断する。初回コード情報入力がないうちは、ＣＰＵ１は、ステップＳ４〜Ｓ１４をループして、コード情報入力を待つ。
【００５４】
ユーザは、例えば入力操作部４（例えば鍵盤）を用いて、自動伴奏の再生に使用するコード（和音）を指定するコード情報を入力できる。コード情報の入力を受け付けたとき（ステップＳ１１のＹＥＳ）、ＣＰＵ１は、ステップＳ１２において、直前コード情報に既存の現在コード情報をセットし、且つ、現在コード情報に今回受け付けたコードを新たにセットする。該ステップＳ１２がコード情報取得手段に相当し、コードを指定するコード情報を取得できる。なお、前記ステップＳ７で直前コード情報及び現在コード情報がクリアされているので、初回のコード入力時点では、直前コード情報は初期状態（コード無し）になる。
【００５５】
ステップＳ１３において、ＣＰＵ１は、前記ステップＳ１２で指定された現在コード情報に基づいて、前記ステップＳ２で特定された伴奏パターンデータを音高変換することにより、現在コード情報に合うように音高変換された「コード対応伴奏パターンデータ」を生成する。このコード対応伴奏パターンデータ生成処理の詳細は後述する。
【００５６】
ＣＰＵ１は、ステップＳ１５において、前記ステップＳ１３で作成されたコード対応伴奏パターンデータから、現在のタイマカウント値に合う時間位置のデータを、現在の演奏テンポに合わせて読み出して、読み出したデータを自動伴奏データとして出力する。そして、新たなコード入力又はユーザの何らかの操作がなければ（ステップＳ４，Ｓ６，Ｓ８，Ｓ１１のＮＯ）、ＣＰＵ１はステップＳ４〜Ｓ１５をループする。
【００５７】
新たなコード入力があったとき（ステップＳ１１のＹＥＳ）、ＣＰＵ１は、新たなコード入力に応じて直前コード情報及び現在コード情報を更新し（ステップＳ１２）、新たに入力されたコードにふさわしい「コード対応伴奏パターンデータ」を生成する（ステップＳ１３）。また、自動伴奏ストップ指示があったとき（ステップＳ８のＹＥＳ）、ＣＰＵ１は、Ｒｕｎフラグを０にセットして自動伴奏停止処理を行い（ステップＳ９）、Ｓ４〜Ｓ１０をループする。また、終了操作示があったとき（ステップＳ４のＹＥＳ）、ＣＰＵ１は、タイマ停止や消音処理などを含む終了処理を行い（ステップＳ５）、自動伴奏データ生成処理を終了する。
【００５８】
図５は、前記ステップＳ１３のコード対応伴奏パターンデータ生成処理を示すフローチャートである。ステップＳ２０において、ＣＰＵ１は、これから生成するコード対応伴奏パターンデータを書き込むためのコード対応伴奏パターンデータ書き込み領域のデータをクリアする。
【００５９】
ステップＳ２１において、ＣＰＵ１は、前記ステップＳ３で生成した対応音高情報（Ｄａｔａ）記憶領域内にある最初の楽音情報に対応する対応音高情報を、「対象の楽音」としてセットする。続いて、ＣＰＵ１は、ステップＳ２２において、ノート書き込み領域（Ｎｏｔｅ）をクリアする。そして、ステップＳ２３において、ＣＰＵ１は、前記ステップＳ２で特定された伴奏パターンデータから、前記ステップＳ２１でセットした「対象の楽音」に対応する１発音分の楽音情報（ＭＩＤＩデータ又は波形データ）を取得して、取得した楽音情報をノート書き込み領域（Ｎｏｔｅ）に書き込む。ノート書き込み領域に書き出されるデータは、ＭＩＤＩデータの場合、ＭＩＤＩイベント（ノートイベントと複数ピッチベンドイベント、その他の表情付け用ＭＩＤＩイベンドデータ（例えばエクスプレッションやソステヌートなど））であり、波形データの場合、当該楽音情報の楽音に対応する波形データである。ステップＳ２１〜２３が音高要素を含む楽音を示す楽音情報を取得する楽音情報取得手段に相当する。
【００６０】
ステップＳ２４において、ＣＰＵ１は、前記ステップＳ２１でセットした「対象の楽音」が、その発音中に或る音高から別の音高に変化するか否かを判定する。音高変化の有無の判定は、「対象の楽音」としてセットされた対応音高情報が持つ情報（図４（ａ）の場合、楽音情報番号の付加的情報、各音高の前後のタインミグ、或いは、終了タイミング、（ｂ）の場合、音高変化情報の有無）に基づき行うことができる。前記ステップＳ２４が判定手段に相当する。
【００６１】
「対象の楽音」が、その発音中に或る音高から別の音高に変化する場合（ステップＳ２４のＹＥＳ）、ＣＰＵ１は、ステップＳ２５において、前記ステップＳ２１でセットした「対象の楽音」としてセットされた対応音高情報に含まれる複数の音高を、それぞれ独立に、前記ステップＳ２で取得した基準コード情報及び音高変換ルールと、前記ステップＳ１２で設定した現在コード情報とに基づいて音高変換することにより、該複数の音高それぞれに対応する「目標音高」を算出する。「対象の楽音」に含まれる複数の音高は、前述の通り、楽音の先頭の音高と、ピッチベンドに従う音高変化結果に含まれる全ての音高である。つまり、１発音中の音高変化に含まれる半音単位の音階音を抽出した音高である。したがって、このステップＳ２５により、連続的な音高変化に含まれる全ての音高（半音単位の音階音）を、それぞれ独立に、現在コード情報等に合わせた「目標音高」に変換できる。なお、音高毎の音高変換処理の計算自体は、従来知られる基準コード情報、音高変換ルール及び現在コード情報とに基づく方法を適用できる。
【００６２】
そして、ノート書き込み領域内の楽音情報がＭＩＤＩデータの場合（ステップＳ２６のＮＯ）、ＣＰＵ１は、ステップＳ２７において、ノート書き込み領域内のノートイベントが示す音高を、前記ステップＳ２５で算出した複数の「目標音高」のうち、「対象の楽音」内で参照できる先頭の音高に対応する「目標音高」に変更する。例えば、第１楽音情報２１（図４の楽音情報番号「１」）の例では、ノート書き込み領域に書き出した楽音情報中のノートイベントの音高を、楽音情報番号「１」の音高「Ｃ音」に対応して算出された「目標音高」に変更する。このステップＳ２７により、ＣＰＵ１は、楽音情報が示す楽音の先頭の音高を、指定されたコード情報に合うように変換できる。
【００６３】
ステップＳ２８において、ＣＰＵ１は、前記ステップＳ２５で算出した複数の「目標音高」によって示される音高変化を実現するようなピッチベンドイベント群を生成する。つまり、ＣＰＵ１は、ノート書き込み領域に書き出した楽音情報の示す楽音の音高が、「対象の楽音」内の２番目以降の音高（つまりピッチベンドに従う音高変化に含まれる音高）のタイミングにて、対応する目標音高に聴こえるようなピッチベンドイベント群を生成する。そして、ＣＰＵ１は、当該ステップＳ２８において、ノート書き込み領域内の全ピッチベンドイベントを消去し、新たに生成したピッチベンドイベント群を挿入する。ステップＳ２８においてピッチベンドイベント群を新たに生成することにより、ピッチベンドによる音高変化量をコードに合わせて変換できる。
【００６４】
前記ステップＳ２７及びＳ２８が音高変換手段に相当するものであり、楽音情報によって示された１つの楽音が或る音高から別の音高に連続的に変化する場合に、それら音高をそれぞれ独立に、前記コード情報に合うように変換する。したがって、変換前の連続的な音高変化の表現を維持したまま、指定されたコードに合わせた別の音高で始まる楽音情報を得ることができる。例えば、図２の第１楽音情報２１（Ｃ音→Ｅ音→Ｇ音）は、指定されたコードが「Ｃｍｉｎ」の場合、Ｃ音→Ｅフラット音→Ｇ音という具合に、ピッチベンドによる音高変化に含まれる音高（音階音）がそれぞれ独立に指定されたコード「Ｃｍｉｎ」に合った音高に変換される。
【００６５】
前記ステップＳ２８においてピッチベンドイベントを生成する処理の具体例を以下に説明する。まず、ＣＰＵ１は、前記ステップＳ２１でセットした「対象の楽音」（１発音分の対応音高情報）に含まれる各音高（音高変換前の音高）と、前記ステップＳ２７で算出した各目標音高（音高変換後の音高）とを比較することにより、音高変換前の音高から音高変換後の音高への変化量を実現するための「加算値」と「乗算値」とを算出し、且つ、「対象の楽音」の「一定区間」と「変化区間」の境界部におけるピッチベンドデータの値を半音単位で丸めた値（「変換前ピッチベンド値」）を算出する。「加算値」は、例えば各「一定区間」及び各「変化区間」の開始時刻における音高変換前の音高と音高変換後の音高との差（変化量）を半音単位で丸めた値であり、区間毎に算出される。「乗算値」は、例えば各「一定区間」及び各「変化区間」の終了時刻における音高変換前の音高と音高変換後の音高との変化幅（半音単位）であり、区間毎に算出される。また、「変換前ピッチベンド値」は、例えば「対象の楽音」内の先頭の音高（音高変換前のノートイベントの音高）と、各区間の先頭の音高との差から算出できる。
【００６６】
そして、ＣＰＵ１は、「加算値」、「乗算値」及び「変換前ピッチベンド値」に基づき、ノート書き込み領域内の全てのピッチベンドイベントを変更して、新たなピッチベンドイベント群を生成する。具体的には、まず、「一定区間」に存在する全てのピッチベンドイベントに「加算値」を一定加算して、「一定区間」に対する新たなピッチベンドイベント群を生成する。つまり、前記ステップＳ２８においてＣＰＵ１は、対応音高情報に音高を記憶している「一定区間」に存在するピッチベンドイベントについては、該音高から「目標音高」までの変化量を一定加算する処理を行う。
【００６７】
また、「変化区間」に対しては、以下の処理によりピッチベンドイベント群を生成する。まず、ＣＰＵ１は、当該「変化区間」の開始時刻での「変換前ピッチベンド値」を「ピッチベンド初期値」として設定する。ピッチベンド初期値は、「変化区間」の開始時刻における音高変換前のピッチベンドイベントの値を半音単位で丸めた値に相当する。そのうえで、ＣＰＵ１は、（１）〜（４）の手順で、「変化区間」の全ピッチベンドイベントをそれぞれ変更する。（１）ピッチベンドイベントの値に対して、前記「ピッチベンド初期値」を「０」にするような加算（つまりピッチベンドイベントの値にピッチベンド初期値の正負を逆転して加算）処理を行う。次に、（２）前記加算処理したピッチベンドイベントの値に「乗算値」を乗算する。次に、（３）前記乗算処理したピッチベンドイベントの値に「ピッチベンド初期値」を加算する。そして、（４）前記加算処理したピッチベンドイベントの値に「加算値」を加算する。つまり、前記ステップＳ２８においてＣＰＵ１は、対応音高情報に記憶した各音高のつなぎ区間である「変化区間」に存在するピッチベンドイベントに対しては、上記の（１）〜（４）により、当該「変化区間」での音高変形形状が音高変換前後で相似変化するように加算処理と乗算処理とを行う。この処理手順によれば、或る「一定区間」（或る音階音）から別の「一定区間」（別の音階音）への音高変化が自然な連続的変化になるように、「変化区間」における音高変化の様子を制御できる。すなわち、連続変化内でそれぞれ独立に、コードに合わせて変換した各音高（音階音）の相互間を滑らかに補間するようなピッチベンドイベント群を「変化区間」用に生成できる。
【００６８】
なお、前記ステップＳ２８のピッチベンドイベント作成において、ＣＰＵ１は、ノート書き込み領域内の楽音情報の発音期間の末尾に位置するピッチベンドイベントの値をセンター値（ベンド効果を付与しない値）に戻すようにする。また、生成されるピッチベンドイベントイベントの値は、ピッチベンドレンジを越えないように設定される。算出されたピッチベンドイベント群の値がピッチベンドレンジを一方向に越える場合、当該楽音情報の先頭の音高（ノートイベントの音高）をシフトさせることで、ピッチベンドイベント群の値がレンジ内に収まるかどうか計算する。収まる場合、音高シフトした上で、ピッチベンドイベント群の値を当該音高シフトとは逆方向にシフトした結果を出力する。一方、音高シフトしてもピッチベンドイベント群の値がレンジ内に収まらない場合、又は、ピッチベンドイベント群の値がレンジを上下両方向に超えている場合、ピッチベンドイベント群の値がレンジを超える時点で、当該楽音情報の発音期間を２つに分けて、それぞれ区間毎に処理することで、ピッチベンドイベント群の値をレンジ内に収めるようにする。
【００６９】
また、「対象の楽音」が、その発音中に或る音高から別の音高に変化し（ステップＳ２４のＹＥＳ）、且つ、ノート書き込み領域内の楽音情報が波形データの場合（ステップＳ２６のＹＥＳ）、ステップＳ２９において、ＣＰＵ１は、「対象の楽音」内の各音高の開始タイミング（各「一定区間」の開示時刻）に基づいてノート書き込み領域内の楽音情報（波形データ）を複数区間に分割して、分割された各区間の波形データが、それぞれ対応する目標音高（前記ステップＳ２５で算出されたもの）に聴こえるように、該ノート書き込み領域内の楽音情報（波形データ）をピッチチェンジする。必要に応じて、音高の相互間（変化区間）を滑らかにつなぐような波形データの補間を行う。具体的な処理例として、ＣＰＵ１は、「対象の楽音」に含まれる各音高（音高変換前の音高）と、前記算出した各目標音高（音高変換後の音高）との差を算出し、算出した差をオフセット情報とする。そして、このオフセット情報に基づき、前記分割された各区間の波形データをピッチシフト再生する。その結果、指定されたコードに適した音高での楽音情報（波形データ）の再生が可能になる。
【００７０】
他方、「対象の楽音」が発音中に音高変化しない場合（ステップＳ２４のＮＯ）、コード入力に応じて伴奏パターンを音高変換する従来技術（例えば特許文献１など）と同様な処理となる。すなわち、ＣＰＵ１は、ステップＳ３０において、「対象の楽音」に含まれる１つの音高を、基準コード情報、音高変換ルール及び現在コード情報に基づいて音高変換して、「目標音高」を算出する。そして、伴奏パターンデータがＭＩＤＩデータの場合（ステップＳ３１のＮＯ）、ＣＰＵ１は、ノート書き込み領域内の楽音情報（ノートイベント）の音高を、前記算出した目標音高に変更する（ステップＳ３２）。一方、伴奏パターンデータが波形データの場合（ステップＳ３１のＹＥＳ）、ＣＰＵ１は、ノート書き込み領域内の楽音情報（波形データ）の音高が前記算出した目標音高になるように、該ノート書き込み領域内の楽音情報（波形データ）をピッチチェンジする（ステップＳ３３）。
【００７１】
そして、ＣＰＵ１は、ステップＳ３４において、コード対応伴奏パターンデータ書き込み領域の末尾から順に、前記ステップＳ２７及びＳ２８、又はＳ２９又はＳ３２又はＳ３３により現在指定されているコードにふさわしく音高変換された１発音分の楽音情報（ノート書き込み領域の内容）を書き出す。上述したステップＳ２５〜Ｓ３３が音高変換手段である。
【００７２】
対応音高情報記憶領域内に未処理の楽音情報がある場合（ステップＳ３５のＮＯ）、ＣＰＵ１は、対応音高情報記憶領域内に未処理の楽音情報に対応する対応音高情報のデータを順番に「対象の楽音」として設定し（ステップＳ３６）、ステップＳ２２以下の処理を繰り返す。そして、対応音高情報記憶領域内の全ての楽音情報を処理し終えたら（ステップＳ３５のＹＥＳ）、ＣＰＵ１は、コード対応伴奏パターンデータ生成処理を終了する。
【００７３】
なお、図３、図５の自動伴奏データ生成処理では、説明の便宜上、伴奏パートデータを成す複数パート（トラック）のうち１パートのみに着目した処理を説明したが、複数パートについてそれぞれ処理を行ってもよい。また、説明簡略化のため、伴奏パターンデータのセクション変更（例えばイントロ、フィルイン、エンディング等の挿入）と、１伴奏パターンデータ内の１楽音情報の出力途中でのコード変更は行われないものとした。また、ユーザの演奏入力処理の説明も省略した。また、図５のコード対応伴奏パターンデータ生成処理では、説明簡略化のため、対象となる伴奏パターンデータとして、１パート分の伴奏パターンを想定した。複数パート分の伴奏パターンデータの処理は、前述した図５の処理をパート毎に行えばよい。なお、図３、図５の自動伴奏データ生成処理では、簡略化のため、コード対応伴奏パターンデータは１サイクル分生成しており、前記ステップＳ１５では、この１サイクル分のデータをループして読み出すようになっている。また、前記ステップＳ２８及びＳ３０で扱う現在コード情報と基準コード情報とはそれぞれコード情報として有効な情報が設定されるものとした（無効な情報が設定される状況は考慮しなかった）。
【００７４】
次に、本発明にかかる音高変換処理の別の実施例として、シーケンスデータから取得した１発音分の楽音情報毎に、指定されたコードに合ったハーモニー音を生成する動作を説明する。図６は、本発明に従うハーモニー音生成処理のフローチャートを示す。シーケンスデータは、例えば自動演奏すべきメロディーを表す楽音情報群を配列したデータである。ハーモニー音生成処理は、大略、シーケンスデータ中の各楽音情報の示す楽音を、指定されたコードに合わせて音高変換してハーモニー音を生成することにより、指定されたコードに合わせたハーモニー音を、シーケンスデータのメロディーに付加できるようにする処理である。シーケンスデータは記憶装置７，１１等の適宜の記憶媒体や通信Ｉ／Ｆ８を介して接続されたネットワーク上のサーバコンピュータから取得できる。シーケンスデータに含まれる楽音情報は、前述した伴奏パターンデータに含まれる楽音情報（図２参照）と同様に構成され、ノートイベントデータにより音高を示すＭＩＤＩデータ形式のデータであってもよいし、或いは、波形データそのものが音高要素を示す波形データ形式でもよい。なお、シーケンスデータは単音旋律のデータとし、和音状態はないものとする。また、図６の処理は、リアルタイム処理でなく、シーケンスデータの中から、発音タイミング順に１つずつ、生成すべきハーモニー音の基になる楽音情報を取得して処理するものとする。
【００７５】
図６の処理は、例えばハーモニー音生成機能の起動指示やシーケンスデータ再生機能（自動演奏機能）の起動指示などに応じて開始する。ステップＳ４０において、ＣＰＵ１は、初期設定を行う。初期設定は、例えば、音高変換ルールの取得、現在コード情報の初期化、現在処理対象の楽音を示す楽音情報の初期化、現在処理対象の楽音に対応する対応音高情報（Ｄａｔａ）の初期化、音高変換後の楽音を示す楽音情報（１発音分のハーモニーデータ）を書き込むノート書き込み領域（Ｎｏｔｅ）書き込み領域、及び、生成したハーモニーデータを記憶するためのハーモニーデータ書き込み領域の初期化などを含む。ＣＰＵ１は、終了操作を受け付けない限り、ステップＳ４１の判断をＮＯに分岐して、ステップＳ４２以下の処理を繰り返す。
【００７６】
ステップＳ４２において、ＣＰＵ１は、再生すべきシーケンスデータから、ハーモニー音生成の基になる１発音分の楽音を示す楽音情報を取得する。該ステップＳ４２が楽音情報取得手段に相当する。楽音情報は発音タイミング順に１発音分ずつ取得される。ステップＳ４３において、ＣＰＵ１は、対応音高情報（Ｄａｔａ）書き込み領域と、ノート書き込み領域（Ｎｏｔｅ）をクリアする。ステップＳ４４において、ＣＰＵ１は、前記ステップＳ４２で取得した楽音を示す楽音情報をノート書き込み領域に書き込む。そして、ステップＳ４５において、前記ノート書き込み領域に書き込んだ楽音情報を分析して、この楽音情報に対応する対応音高情報を生成する。前記ステップＳ４３にて、対応音高情報書き込み領域とノート書き込み領域とがクリアされるので、図６のハーモニー音生成処理では、対応音高情報として保持するデータは、発音分の楽音に対応する対応音高情報のみである。図６のハーモニー音生成処理は、１発音分の楽音情報ずつ対応音高情報を生成するという点で、前述した図３、図５のように、伴奏パターンデータ中の複数の楽音情報に対応する対応音高情報を生成する処理とは異なる。なお、対応音高情報を生成する処理の詳細は前述ステップＳ３と同様である。
【００７７】
ステップＳ４６において、ＣＰＵ１はコード情報を取得する。コード情報は例えばユーザの演奏入力により指定される。該ステップＳ４６がコード情報取得手段に相当する。
【００７８】
ステップＳ４７において、ＣＰＵ１は、前記生成した対応音高情報に基づいて、処理対象の楽音が、その発音中に或る音高から別の音高に変化するか否かを調べる。当該ステップ４７が判定手段に相当する。音高変化する場合（ステップＳ４７のＹＥＳ）、ＣＰＵ１は、ステップＳ４８において、前記生成した対応音高情報に含まれる複数の音高を、それぞれ、現在コード情報及び音高変換ルールに基づいて音高変換することにより、該複数の音高それぞれに対応する「目標音高」を算出する。この処理は、「基準コード情報」を使わない点を除き、前記図５のステップＳ２５と同様である。
【００７９】
ノート書き込み領域内の楽音情報がＭＩＤＩデータの場合（ステップＳ４９のＮＯ）、ＣＰＵ１は、ステップＳ５０において、ノート書き込み領域内のノートイベントが示す音高を、前記算出した複数の「目標音高」のうち、前記生成した対応音高情報の先頭の音高に対応する「目標音高」に変更する。そして、ステップＳ５１において、ＣＰＵ１は、前記算出した複数の「目標音高」によって示される音高変化を実現するようなピッチベンドイベント群を生成し、そして、ノート書き込み領域内の全ピッチベンドイベントを消去し、新たに生成したピッチベンドイベント群を挿入する。これらステップＳ５０及びＳ５１は、前述した図５のステップＳ２７，Ｓ２８と同様な処理である。
【００８０】
また、処理対象の楽音が、その発音中に或る音高から別の音高に変化し（ステップＳ４７のＹＥＳ）、且つ、ノート書き込み領域内の楽音情報が波形データの場合（ステップＳ４９のＹＥＳ）、ステップＳ５２において、ＣＰＵ１は、前記生成した対応音高情報内の各音高の開始タイミング（各「一定区間」の開示時刻）に基づいて、ノート書き込み領域内の楽音情報（波形データ）を複数区間に分割して、分割された各区間の波形データを、それぞれ対応する目標音高に聴こえるように、該ノート書き込み領域内の楽音情報（波形データ）をピッチチェンジする。この処理は、前述した図５のステップＳ２９と同様である。
【００８１】
また、処理対象の楽音が音高変化しない場合（ステップＳ４７のＮＯ）、ＣＰＵ１は、前記生成した対応音高情報に含まれる１つの音高を、現在コード情報及び音高変換ルールに基づいて音高変換して、「目標音高」を算出する（ステップＳ５３）。そして、伴奏パターンデータがＭＩＤＩデータの場合（ステップＳ５４のＮＯ）、ＣＰＵ１は、ノート書き込み領域内のノートイベントが示す音高を、前記算出した目標音高に変更する（ステップＳ５５）。一方、伴奏パターンデータが波形データの場合（ステップＳ５４のＹＥＳ）、ＣＰＵ１は、ノート書き込み領域内の楽音情報（波形データ）の音高が、前記算出した目標音高になるように、該ノート書き込み領域内の楽音情報をピッチチェンジする（ステップＳ５６）。このステップＳ５３〜Ｓ５６処理は、前述した図５のステップＳ３０〜３３と同様である。前記ステップＳ４８〜Ｓ５６が音高変換手段に相当する。
【００８２】
ステップＳ５７において、ＣＰＵ１は、ハーモニーデータ書き込み領域の末尾から順に、前記ステップＳ５０及びＳ５１、又はＳ５２又はＳ５５又はＳ５６にて書き換えられたノート書き込み領域内の楽音情報を書き出す。ノート書き込み領域からハーモニーデータ書き込み領域に書き出される楽音情報は、処理対象の楽音を指定されたコードに合わせて音高変換した「ハーモニー音」を示す。そして、ＣＰＵ１は、終了操作を受け付けるまで、ステップＳ４１〜Ｓ５７をループする。これにより、シーケンスデータに含まれる１発音分の楽音情報毎に、現在指定されているコードに合わせたハーモニー音が生成される。終了操作を受け付けたとき（ステップＳ４１のＹＥＳ）、ＣＰＵ１は、ステップＳ４１〜Ｓ５７のループを抜けて、ハーモニーデータ書き込み領域に書き込まれたハーモニーデータを出力する（ステップＳ５８）。そして、図示外のシーケンスデータの再生処理及びハーモニー音の再生処理によりシーケンスデータに対してコードに合わせたハーモニー音を付けることができる。再生するシーケンスデータ中の１発音分のメロディー音が、その発音中に連続的な音高変化を含む場合であっても、そのメロディー音が持つ音高の変化の状態を維持したまま、指定されたコードに合わせた別の音高から始まるハーモニー音を生成及び出力できる。
【００８３】
以上説明したとおり、本発明によれば、楽音情報によって示される１つの楽音が、その発音中に或る第１の音高から別の第２の音高に連続的に変化する場合は、記第１の音高と前記第２の音高とをそれぞれ独立に、コード情報に合うように変換する構成により、１発音中に起こる音高変化に含まれる全ての音高を、それぞれ独立に、取得されたコード情報に合うように変換できる。変換後の音高の相互間を途切れず自然な音高変化形状でつなぐことにより、音高が連続的に変化する様子（音高変化量、変化速度など、音高変化の形状）が音高変換後の楽音情報に維持もされるので、音高変換前の楽音情報の持つ音高変化の表現力を、変換後も損なうことなく再現できるようになる。したがって、楽音情報中に１回以上の複数の音高変化が含まれていても、その楽音情報を指定されたコードに合わせて適切に音高変換できる。
【００８４】
したがって、例えば、自動伴奏機能で用いる伴奏パターンデータ中に、１発音中に途切れることなく連続的に別の音高に変化する表現（例えばピッチベンドやポルタメントなど）を持つ楽音情報を持たせることができるようになる。このため、例えば、ある種の民族楽器音色のような持続音系の音色を用いて伴奏パターンを作成するにあたり、民族楽器音色など持続系音色に特徴的な途切れない連続的な音高変化の演奏表現を、伴奏パターンデータに付加することができ、その伴奏パターンデータの再生時には、指定されたコード情報に合わせて自然に、連続的な音高変化の表現を再生できるようになる。
【００８５】
なお、図３のステップＳ３及び図６のステップＳ４５における対応音高情報を生成するための詳細な計算手順、並びに、図５のステップＳ２７，Ｓ２８，Ｓ２９，図６のステップＳ５０，Ｓ５１，Ｓ５２における「前記楽音情報が前記音高変化の表現を含んでいる場合は、その音高変化の表現に従って発音されるべき音高の全てを、前記コード情報に合った音高に変換する」ための詳細な計算手順は一例に過ぎず、他の計算手法を適用してもよい。
【００８６】
なお、図３、図５、図６の処理例では、変換対象の楽音情報は予め記憶されたものであるが、音高変換結果の出力の遅延が許容されるのであれば、変換対象の楽音情報が入力される毎に音高変換と変換結果の出力とを行うようにしてもよいし、あるいは１発音分の楽音情報内に含まれる１回以上の連続的音高変化の始まりを検出したときに一旦出力を停止して、１発音中の音高変化の終わりを検出したときに１発音中の音高変化に関する音高変換と出力を再開するようにしてもよい。
【００８７】
なお、図３、図５、図６の処理例では、変換対象の楽音情報は、記憶媒体に記憶された伴奏パターンデータやシーケンスデータから読み出すようにしたが、通信Ｉ／Ｆ８を介して接続されたネットワーク上のサーバから取得した伴奏パターンデータやシーケンスデータから読み出してもよい。また、変換対象の楽音情報は、入力操作部４（鍵盤）や外部オーディオ入力（マイク等）からリアルタイム入力された楽音情報を順次処理、もしくは一時記憶して順次処理するようにしてもよい。
【００８８】
なお、実施例では、コード情報の入力（指定）は、ユーザの演奏入力（鍵盤操作）により行われるものを想定していたが、予め記憶されたコード情報列を順次読み込む形式により行われてもよいし、あるいは、伴奏パターンデータやシーケンスデータから検出されたものでもよい。
【００８９】
なお、図３のステップＳ１３の変更例として、前記ステップＳ２の使用される伴奏パターンデータが特定された時点で、使用可能な全コードのそれぞれに対応して「コード対応伴奏パターンデータ」を生成及び記憶しておき、コード入力があっときに、ステップＳ１３において、そのコードに対応する「コード対応伴奏パターンデータ」を読み出す構成を採用してもよい。
【００９０】
なお、図６のハーモニー音生成処理は、シーケンスデータを基にしてハーモニー音を生成することに限らず、例えば手弾き演奏に合わせてハーモニー音を生成するなど、なんらかのメロディデータを基にしてハーモニー音を生成するものでさえあればよい。
【００９１】
実施例では、電子楽器に適用した楽音情報処理装置を説明したが、コンピュータに楽音情報処理装置の動作を実行させるためのプログラムにより、本発明の実施することもできる。
【符号の説明】
【００９２】
１００  電子楽器（楽音情報処理装置）、１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  入力操作部、５  表示部、６  音源、７  記憶装置、８  通信インタフェース、９  バス、１０  サウンドシステム、１１  外部記憶装置、２０  伴奏パターンデータ、２１  １発音中に途切れず音高を変化させる音高変化の表現を含む楽音情報、２２，２３  楽音情報
【図１】
2014174205.tif 000003
【図２】
2014174205.tif 000004
【図３】
2014174205.tif 000005
【図４】
2014174205.tif 000006
【図５】
2014174205.tif 000007
【図６】
2014174205.tif 000008