JP3591444B2 - 演奏データ分析装置 - Google Patents
演奏データ分析装置 Download PDFInfo
- Publication number
- JP3591444B2 JP3591444B2 JP2000313698A JP2000313698A JP3591444B2 JP 3591444 B2 JP3591444 B2 JP 3591444B2 JP 2000313698 A JP2000313698 A JP 2000313698A JP 2000313698 A JP2000313698 A JP 2000313698A JP 3591444 B2 JP3591444 B2 JP 3591444B2
- Authority
- JP
- Japan
- Prior art keywords
- chord
- section
- note
- data
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、電子楽器やコンピュータミュージック等における演奏データを分析する装置に関わり、入力された演奏データから和音進行を検出する演奏データ分析装置に関する。
【0002】
【従来の技術】
従来、電子楽器やコンピュータミュージック等においてメロディにコード(和音)を付けたり編曲等を行うために、演奏データから和音を検出する必要がある。このような演奏データの和音を検出する方法として、演奏データの構成音から和音を解析することが行われる。しかし、和音を一つずつ付与していくと、連続する和音の間で、つながりが悪くなる可能性がある。
【0003】
【発明が解決しようとする課題】
本発明は、音符のシーケンスを示す演奏データに、つながりのよい和音進行を付与することを課題とする。
【0004】
【課題を解決するための手段】
上記の課題を解決するためになした本発明の請求項1記載の演奏データ分析装置は、音符のシーケンスを示す演奏データを入力する演奏データ入力手段と、前記演奏データ入力手段によって入力された演奏データを所定の区間に分割する区間分割手段と、互いに異なるコード数で、それぞれが複数のコードで構成される和音進行を複数記憶した和音進行データベースと、前記和音進行データベースに記憶されている和音進行のうちから、前記区間分割により分割された所定区間の演奏データに適合する和音進行を抽出する和音進行抽出手段と、を備え、前記和音進行抽出手段は、前記複数のコードで構成される和音進行のなかで所定の長さで和音進行を決定できなかったときは、他の長さの和音進行を用いて和音進行を決定することを特徴とする。
【0005】
本発明の請求項2記載の演奏データ分析装置は、請求項1の構成を備え、前記和音進行データベースに記憶されている複数の和音進行のそれぞれには優先順位が付与されており、前記所定区間の演奏データに適合する和音進行が複数存在するとき、前記優先順位に従った和音進行を抽出することを特徴とする。
【0006】
請求項1の演奏データ分析装置によれば、和音進行データベースから、所定区間の演奏データに適合する和音進行を抽出するので、典型的な和音進行の中から和音進行を選択することにより、連続する和音の間で音楽的につながりのよい和音進行を付与することができる。
【0007】
また、請求項2の演奏データ分析装置によれば、請求項1の作用効果に加えて、和音進行としての優先順位に従う和音進行を抽出するので、さらにつながりのよい和音進行を付与することができる。
【0008】
【発明の実施の形態】
図2は本発明実施例の演奏データ分析装置を適用した電子楽器のブロック図であり、CPU1はプログラムメモリ2に格納されている制御プログラムに基づいてワーキングメモリ3のワーキングエリアを使用して電子楽器全体の制御を行い、パネルスイッチ等の操作子4の操作と表示装置5への表示処理により、通常モードまたはメロディ分析モードで動作する。
【0009】
通常モードでは、CPU1は鍵盤6のキーイベントに応じたキーコード、タッチデータ、キーオン信号(またはキーオフ信号)等を取り込み、キーコードとノートオンまたはノートオフを音源7に出力して鍵盤演奏に対応する発音処理と消音処理を行う。なお、音源7は上記CPU1から入力されるデータに応じた楽音信号を発生し、サウンドシステム8は楽音信号のD/A変換および増幅等を行って楽音を発生する。
【0010】
メロディ分析モードでは、先ず、CPU1は鍵盤6のキーイベントに応じたキーコード、タッチデータ、キーオン信号(またはキーオフ信号)等を取り込み、これらのデータに基づいて演奏データを生成する。なお、この演奏データを生成する処理は、鍵盤6による通常の演奏操作に応じて演奏データを生成するリアルタイムレコードのモードまたは鍵盤6と操作子4の操作によって1音づつ入力して演奏データを生成するステップレコードのモードで行う。
【0011】
また、この演奏データから入力演奏時の音長のバラツキ等を修正(クオンタイズ)して音符の符長を示す音長データを生成し、音高データ、音長データ、休符データ、休符長データからなるメロディデータを構成してデータメモリ9(RAM)に記憶する。そして、メロディデータを記憶すると、後述詳細に説明するように、CPU1はこの記憶したメロディデータの分析を行い、メロディデータを分割した区間分析データ、検出調のデータおよび検出コード(和音)のデータを分析データとしてデータメモリ9に記憶する。
【0012】
図3はメロディデータと分析データ中の区間分析データの各フォーマットを示す図である。同図(A) に示したメロディデータは、ピッチに対応する音高データと音符の符長に対応する音長データで一つの音符を表し、休符データと休符の符長に対応する休符長データで一つの休符を表している。音高データはキーコードであり、休符データは予め決められた特定の識別コードである。また、音長データおよび休符長データは、所定のクロック(例えば4分音符を24個に分割したクロック)を単位としてクロック数で時間長を表したデータである。
【0013】
なお、実際の演奏では、同じ音符でもスラーで弾く場合とスタッカートで弾く場合のように実際の発音時間が異なることがあるが、前述のように、上記音長データと休符長データは実際の発音時間に関係なく符長分のクロック数となるように加工されている。したがって、メロディデータの先頭から音長データと休符長データを加算することにより小節線の位置が判明し、これによりメロディデータを小節単位やフレーズ単位でも検索することができる。
【0014】
図3(B) に示した区間分析データは、後述説明するようにメロディデータをメロディの分析結果に応じてコードリズム区間に分割したものであり、図3(A) のメロディデータに各コードリズム区間の境界を示す分割データを挿入したフォーマットで記録される。なお、メロディデータと区間分析データの最後にはエンドデータが記録される。
【0015】
図1は実施例におけるメロディ分析の流れを説明する概念図である。まず、データメモリ9のメロディデータをフレーズ(#1〜#N)に分割し、この各フレーズをさらに細かくコードリズム(#11 〜#1M ,〜,#N1 〜#NL )に分割する。ここで、フレーズとは、メロディデータを区切りのよい所定長を分割したときの単位区間であり、この分割の仕方は後述する。コードリズムは1小節あるいは2拍のようにフレーズより小さな区間であり、コード進行において1つのコードが占める単位区間を意味する。この分割の仕方は後述説明するようにメロディの特徴に応じて決定する。
【0016】
次に、この各コードリズム区間から和声音を抽出し、この和声音に基づいて、調検出用の検出区間とするためにコードリズムを必要に応じて結合し、区間を変更したコードリズム(#11 〜#1M’,〜,#N1 〜#NL’)とする。この再構成したコードリズムの各検出区間毎に和声音と音名列を抽出してこの和声音と音名列に基づいて候補となる調を抽出する。
【0017】
この実施例では、例えば次表1に示したように、各調の音階に対応してその調を特徴つける主要な音名からなる音名列をI ,II,III ,IVのような度数で音階音列テーブルとしてプログラムメモリ2に記憶しており、和声音と音名列とから候補調を抽出するとき、この音階音列テーブルの中から検出区間の音名列に含まれる音階音列を検索し、この音階音列と検出区間の和声音とを含む音階の調を候補調とする。そして、この候補調から検出区間の調を確定する。
【0018】
【表1】
【0019】
次に、調検出用に分割した検出区間とその和声音から検出区間のコード(和音)を決定する処理について説明する。この処理では、コードシーケンスDB(データベース)10(図2)に記憶されたコード進行データに基づいてコードを検出する。このとき、決定するコードがフレーズの先頭や最後のコードとして適しているか検査しつつ、コード進行データとのマッチングによりコードを決定する。
【0020】
図5はコード進行データの一例を示す図である。コード進行データは代表的なコード進行を示すものであり、4つのコードで構成される4コード進行、3つのコードで構成される3コード進行、2つのコードで構成される2コード進行がある。また、これらの4コード進行、3コード進行、2コード進行は、それぞれ長調と短調に対応するコード進行データに分類されている。さらに、4コード進行については1小節に1つのコードが対応するような同期型とコードと小節が対応しない非同期型とに分類されている。これらのコード進行の各コードはImaj のように根音(I) とタイプ(maj) の組み合わせで示されている。ここで、根音は調の主音を基準とした度数で表わされているので、コード進行データは12音名(C,C♯,D,〜,B)の主音の調に対してそれぞれ共通に対応可能となっている。
【0021】
また、同類のコード進行データ同志には優先準位が付けられている。例えば、図5に示した4コード進行(同期)DBの長調用では、「Imaj→VImin →IIm7→V7」(ハ長調の場合、Cmaj →Amin →Dm7→G7 )が最も優先準位が高く、「IIIm7 →IVmin →IIm7→V7」(ハ長調の場合、Em7→Fmin →Dm7→G7 )、「Imaj→IIm7→V7→Imaj」(ハ長調の場合、Cmaj →Dm7→G7 →Cmaj )、の順に優先準位が低くなっている。
【0022】
図6は実施例におけるメロディ分析モードでの制御プログラムのメロディ分析処理のフローチャート、図7〜図17はサブルーチンのフローチャートであり、各フローチャートに基づいて実施例の動作を説明する。
【0023】
操作子4の操作によりメロディ分析モードが指定されると、図6のメロディ分析処理が開始され、ステップS1で図7のデータ入力処理を行ってメロディデータを記憶し、コードリズム入力があればそれも記憶し、なければコードリズム自動設定モードにする。ステップS1−1ではコードリズム自動設定モードか否かを判定し、コードリズム自動設定モードならステップS2に、そうでなければステップS4に進む。ステップS2では図8の区間仮分割処理を行ってメロディデータをフレーズに分割する。次に、ステップS3で図9のコードリズム区間抽出処理を行って各フレーズをコードリズム区間に分割し、ステップS4で図10の和声音抽出処理を行うとともにステップS5で図13の和声音再抽出処理を行って和声音を抽出し、ステップS6で図14のコードリズム結合処理を行って調検出用の検出区間としてコードリズムの区間を決定する。そして、ステップS7で図15の調検出処理を行って調を確定する。また、ステップS8で図17のコード検出処理を行ってコードを決定する。
【0024】
図7のデータ入力処理では、ステップS11で、鍵盤6からの演奏操作に基づいてメロディ入力を行い、メロディデータをデータメモリ9に記憶する。次に、ステップS12で、操作子4により4分の4拍子や4分の3拍子など拍子のデータのマニュアル入力処理を行い、ステップS13で、操作子4によるコードリズム区間のマニュアル指定入力が無い場合には自動設定モードにしてコードリズムを自動的に設定する。マニュアル指定入力が有れば指定されたコードリズム区間の区切りを記憶する。
【0025】
図8の区間仮分割処理では、ステップS21で、2分音符以上の音符(2分音符の符長以上に符長が長い音符)が小節線の直前にあったときその小節線の位置をフレーズの分割位置とする。フレーズが4小節以上になったときは、前から4小節毎の小節線の位置をフレーズの分割位置として、メロディデータをフレーズに再分割していく。なお、このとき図3(B) の場合と同様にメロディデータにコードリズムとは異なるフレーズの分割データを挿入することにより分割位置を記憶する。
【0026】
ここで、後述説明する図9のコードリズム抽出処理において上記の記憶した各フレーズをメロディパターンに応じて1小節または2拍毎のコードリズム区間にさらに仮分割するが、このときメロディパターンの検査条件をフレーズ中の音符密度に応じて切り換えるようにする。このために各フレーズに対応するフラグDV(FN)(FNはフレーズ番号)を用い、次の処理のように、フレーズの音符密度が低いときフラグDV(FN)を“1”とし、音符密度が高いときフラグDV(FN)を“2”として記憶しておく。
【0027】
先ず、ステップS22で現在設定されている拍子が4分の3拍子であるか否かを判定し、4分の3拍子であればステップS23で全てのフレーズに対応する全てのフラグDV(all)を“1”にセットして元のルーチンに復帰し、4分の3拍子でなければ、ステップS24で読出しポインタ(データメモリ9における読出しポインタ。以下同じ。)をセットして最初のフレーズに注目してステップS25に進む。
【0028】
ステップS25では、フレーズ中の音符のうち8分音符以上の符長の合計とフレーズの長さの比が0.6以上であるか否かを判定して、0.6以上であればフラグDV(FN)を“1”にセットし、それ以外のときはフラグDV(FN)を“2”にセットする。そして、ステップS26で現在最後のフレーズであるか否かを判定し、最後のフレーズでなければステップS27で読出しポインタを次のフレーズに更新してステップS25に進み、最後のフレーズであればそのまま元のルーチンに復帰する。
【0029】
以上の処理により、4分の3拍子の場合と4分の3拍子以外で8分音符以上の符長の合計とフレーズの長さの比が0.6以上の場合は、フレーズ中に符長の長い音符が多い(音符密度が低い)とみなし、4分の3拍子以外で8分音符以上の符長の合計とフレーズの長さの比が0.6に満たない場合は、符長の短い音符が多い(音符密度が高い)と見なし、図9のコードリズム抽出処理でこの音符密度に応じて検査条件を切り換えてメロディパターンを検査する。
【0030】
図9において、先ず、ステップS31で読出しポインタをセットして最初の小節に注目し、ステップS32でDV(FN)=1であるか否かを判定する。DV(FN)=1であれば(音符密度が低い)、ステップS33でその現在の小節に含まれる音符が2音以下であるか否かを判定し、2音以下であればステップS37で分割データを挿入して1小節のコードリズム区間に分割する。ステップS33で2音以下でなければ、ステップS34でトリルパターンを検索してトリルパターンが1小節全体にわたっているかを検査する。なお、トリルパターンとは、音高aと音高b(aとbの音程差は1音以内)の音符がabab…と2回以上繰り返すパターンである。
【0031】
ステップS35の判定で、1小節のトリルパターンであればステップS37で1小節のコードリズム区間に分割し、1小節のトリルパターンでなければステップS36に進む。ステップS36では、1小節の全ての音符が4分音符であるか否かを判定し、全ての音符が4分音符であればステップS37で1小節のコードリズム区間に分割し、そうでなければステップS305で小節内に分割データを挿入して2拍ずつのコードリズム区間に分割し、ステップS306に進む。
【0032】
一方、ステップS32でDV(FN)=1でなければ(音符密度が高い)、ステップS38で図4に示した特殊パターンを現在の小節内で検索し、ステップS39でこの特殊パターンがあったか否かを判定する。この特殊パターンは1拍目から2拍目または3拍目から4拍目にかけて現れた2拍長の発音タイミングのパターンであり、2拍3拍間にまたがるようなパターンは無視する。この特殊パターンは使用頻度が高い2拍で1まとまりになっている。また、最初に入力したままのメロディデータの原メロディパターンおよび連続する同音高の音を1つの音としてまとめた結果生じる発音タイミングパターンの場合のいずれもチェックする。図4(A) の場合は順次進行で同方向進行のみのという条件付きである。なお、順次進行とは隣り合う音符の音高差が2度(全音または半音)で上または下に進行することであり、同方向とは音高が上がるか下がるかの1方向の場合である。また、図4(B) ,(c) の場合は無条件である。
【0033】
この特殊パターンがあれば2拍長でひとまとまりのパターンであるのでステップS305で2拍ずつのコードリズム区間に分割し、特殊パターンが無ければまだ2拍ずつに決めないでステップS301で4拍長のトリルパターンを検索する。そして、ステップS302の判定で4拍長のトリルパターンがあればステップS37で1小節のコードリズム区間に分割し、4拍長のトリルパターンが無ければステップS303で全て同音名であるか否かを判定する。全て同音名であればステップS37で1小節のコードリズム区間に分割し、少なくとも1つが異音名であれば、ステップS304で8分音符以下の符長の音符が有るか否かを判定する。そして、8分音符以下の音符が無ければステップS37で1小節のコードリズム区間に分割し、8分音符以下の音符があればステップS305で2拍づつのコードリズム区間に分割する。
【0034】
以上一つの小節についての処理が終了すると、ステップS306で現在注目している小節が最後の小節であるか否かを判定し、最後の小節でなければステップS307で読出しポインタを次の小節に更新してステップS32に進み、最後の小節であればそのまま元のルーチンに復帰する。
【0035】
以上の処理により、トリルパターンが1小節にわたる場合、1小節の全ての音符が4分音符の場合、1小節に4拍長のトリルパターンがある場合、1小節で全て同音名であった場合など、1小節内で調の変化(あるいはコードの変化)が無さそうな場合に1小節のコードリズム区間に分割される。また、2拍長でひとまとまりの特殊パターンがある場合や長いトリルパターンがなかったり音名が分散している場合など、1小節内で調の変化がありそうな場合に2拍長のコードリズム区間に分割される。このように、メロディパターンや符長に応じて各フレーズが1小節または2拍づつのコードリズム区間に仮分割される。なお、上記のコードリズム区間への分割の際、原メロディパターンの音符が2つのコードリズム区間にまたがるときは、その音符(前のコードリズム区間の最後の音符)の符長を分割位置で切断し、後ろのコードリズム区間の最初の音符の前に切断した残りの符長を示すタイ情報(図3(B) 参照)を付加する。
【0036】
次に、図10の和声音抽出処理(および図11の和声音抽出ルール処理と図12の先取音処理)によりメロディの先頭からコードリズム区間の和声音を抽出し、和声音が抽出できなかったコードリズム区間については図13の和声音再抽出処理によりメロディの後ろから順に和声音を再抽出する。そこで、各コードリズム区間に対応して和声音が検出されたか否かを示す検出フラグを用い、和声音の未検出状態を検出フラグ“0”で記憶し、和声音の検出済状態を検出フラグ“1”で記憶する。
【0037】
図10の和声音抽出処理では、ステップS41で読出しポインタをセットして最初のコードリズム区間に注目し、ステップS42で注目コードリズム区間の検出フラグを予め“0”(未検出)にセットしてステップS43に進む。ステップS43では、注目コードリズム区間の先頭が休符であり、かつ直前のコードリズム区間に音符があり、かつその音符が和声音でないとき、この休符を直前の音符に吸収させる。すなわち、休符データを削除し、この休符の符長を直前の音符の符長に加えて音長データとする。
【0038】
次に、ステップS44で、注目コードリズム区間内で音高aと音高bの音符がabaの並びになっているメロディすなわち刺繍音を含むパターンの検出を行い(ab間,ba間に休符があってもこの休符は無視する。)、ステップS45で刺繍音パターンが検出されたか否かを判定する。刺繍音パターンが検出されていたら、ステップS46で音高aの音符を和声音、音高bの音符を刺繍音とし、ステップS47で、注目コードリズム区間の音符で音高aを1度としたときの3度音が有るか、無ければ6度音が有るか、無ければ増4度音が有るかを優先準位で検索し、この優先準位で検出された音を和声音とする。そして、ステップS48でその他の音符をその他非和声音とし、ステップS49で注目コードリズム区間の検出フラグを“1”とし、ステップS402に進む。
【0039】
このように刺繍音パターンに着目して和声音を検出する一方、ステップS45で刺繍音パターンが検出されていなければ、ステップS401で図11の和声音抽出ルール処理を行って刺繍音パターン以外のルールで和声音を抽出し、ステップS402に進む。そして、一つのコードリズム区間についての処理が終了すると、ステップS402で現在の注目コードリズム区間が最後のコードリズム区間であるか否かを判定し、最後のコードリズム区間でなければステップS403で読出しポインタを次のコードリズム区間に更新してステップS42に進み、最後のコードリズム区間であればそのまま元のルーチンに復帰する。
【0040】
図11の和声音抽出ルール処理では、ステップS410で注目コードリズム区間が休符のみであるか否かを判定し、休符のみであればそのまま元のルーチンに復帰し、休符のみでなければステップS411で音名が1種類であるか否かを判定する。音名が1種類であれば、ステップS412で全ての音符を和声音としてステップS418に進む。
【0041】
一方、ステップS411で音名が1種類でなければ、ステップS413で図12の先取音処理を行う。ここで、図12の先取音処理は、例えばコードが変化するときに後のコードの構成音を前のコードの最終拍に先行させたアンティシペーションと称する音符に対する処理である。先ず、ステップS420で「次のコードリズム区間の先頭は音符でかつ4分音符以上の符長である」という条件を満足するか否かを判定し、条件を満足しなければそのまま元のルーチンに復帰し、条件を満足すればステップS421で現在の注目コードリズム区間の最後が音符ならばその音符を次のコードリズム区間の最初の音符として元のルーチンに復帰する。これによりアンティシペーションの音符が同じコードリズム区間内に配置される。
【0042】
この先取音処理が終了すると図11において、ステップS414で注目コードリズム区間の音符数が3音であるか否かを判定し、3音あれば、ステップS415で3音の内で最大の音高差をもつ2音を和声音としてステップS418に進む。3音でなければ、ステップS416でコードリズム区間の長さの1/2以上の符長の音符(以下、音符iという。)があるか否かを判定する。音符iが無ければそのまま元のルーチンに復帰し、音符iがあれば、ステップS417で音符iを和声音とするとともに、音符iをコード構成音とするコードの他のコード構成音があればそれらを和声音としてステップS418に進む。そして、ステップS418でその他の音符をその他非和声音とし、ステップS419で注目コードリズム区間の検出フラグを“1”として元のルーチンに復帰する。
【0043】
以上のように図10の和声音抽出処理、図11の和声音抽出ルール処理および図12の先取音処理により、メロディの先頭からコードリズム区間の和声音が抽出され、和声音が抽出されたコードリズム区間は検出フラグが“1”となり、和声音が抽出されなかったコードリズム区間は検出フラグが“0”となる。そこで、図13の和声音再抽出処理によりメロディの最後から検査して検出フラグが“0”のコードリズム区間について和声音を再抽出する。
【0044】
先ず、ステップS51で読出しポインタをセットして最後のコードリズム区間に注目し、ステップS52で注目コードリズム区間の検出フラグ=0であるか否かを判定する。検出フラグ=0でなければすでに和声音が検出されているので、ステップS501に進み、検出フラグ=0であれば和声音が検出されていないのでステップS54以降で和声音を検出する。
【0045】
ステップS54では、注目コードリズム区間が「2音で、かつ、後ろのコードリズム区間の先頭音が和声音で、かつ、これら3音が同方向順次進行である」という条件を満足するか否かを判定し、条件を満足すればステップS55でその3音の先頭音を和声音とし、ステップS59に進む。
【0046】
一方、ステップS54で条件を満足しなければ、ステップS56で、注目コードリズム区間が「2音で、かつ、後ろのコードリズム区間の音が1音である」という条件を満足するか否かを判定し、条件を満足すればステップS57で2番目の音符を和声音としてステップS59に進み、条件を満足しなければ、ステップS58で、注目コードリズム区間の任意の2音の音高差で3度が有るか、無ければ6度が有るか、無ければ増4度が有るかを優先順位で調べ、その優先順位で検出された音高差をもつ2音を和声音とする。なお、これらの音高差をもつ組のうち最優先順位の同じ度数の組が2つ以上あるときは低音側を優先する。そして、ステップS59でその他の音符をその他非和声音とする。
【0047】
以上のように一つのコードリズム区間についての和声音の検出が終了すると、ステップS501で現在注目しているコードリズム区間が最初のコードリズム区間であるか否かを判定し、最初のコードリズム区間でなければステップS53で読出しポインタを直前のコードリズム区間に更新してステップS52に進み、最初のコードリズム区間であればそのまま元のルーチンに復帰する。
【0048】
以上の処理により、フレーズを1小節または2拍づつに仮分割したコードリズム区間の和声音が抽出される。次に、このコードリズム区間への仮分割が調検出にとって必要以上に分割されている可能性があるので、図14のコードリズム結合処理により、必要以上に仮分割されたコードリズム区間をそれに含まれる和声音に基づいて結合する処理を行う。
【0049】
図14のコードリズム結合処理では、ステップS61で読出しポインタをセットして最初の小節に注目し、ステップS62で注目小節が2拍毎のコードリズム区間に分割されているか否かを判定する。2拍毎のコードリズム区間に分割されていなければ、ステップS64で注目小節に対してその1小節を検出区間として設定し、ステップS66に進む。
【0050】
一方、注目小節が2拍毎のコードリズム区間に分割されていれば、ステップS63で「注目小節の全ての和声音とマッチする構成音のコードが存在し、かつ、設定されているテンポが4分音符>46(4分音符を1拍としたとき1分間に46拍を超えるテンポ)である」という条件を満足するか否かを判定する。条件を満足すれば、ステップS64で注目小節に対してその1小節を検出区間として設定し、条件を満足しなければ、ステップS65で注目小節に対して2拍毎を検出区間として設定する。そして、以上一つの小節についての処理が終了すると、ステップS66で注目小節が最後の小節であるか否かを判定し、最後の小節でなければステップS67で読出しポインタを次の小節に更新してステップS62に進み、最後の小節であればそのまま元のルーチンに復帰する。
【0051】
なお、以上のコードリズム結合処理においては、小節が2拍毎のコードリズム区間に仮分割されている場合に、その小節の全ての和声音とマッチする構成音のコードが存在する場合で、さらに、テンポが比較的速い場合は、その小節内で調が変化しない可能性が高いとみなしており、この2拍毎のコードリズム区間を1小節にまとめて検出区間とするようにしている。
【0052】
以上のようにメロディデータを1小節または2拍に分割して検出区間を決定すると図15の調検出処理で調検出を行う。先ず、ステップS71で読出しポインタをセットして最初の検出区間に注目し、ステップS72で直前の検出区間の調が確定しているか否かを判定する。直前の検出区間の調が確定していなければ(注目検出区間が最初の検出区間であって直前の検出区間が存在しない場合も含む)、ステップS76で図16の候補調抽出処理を行って検出区間の候補調を抽出し、ステップS77に進む。
【0053】
一方、ステップS72で直前の検出区間の調が確定していれば、ステップS73で注目検出区間にその確定している調に対する調外音(調の音階に無い音)が有るか否かを判定し、調外音が有ればステップS76に進み、調外音が無ければステップS74で注目検出区間の調を直前の検出区間の調に確定し、ステップS705に進む。
【0054】
ここで、図16の候補調抽出処理を先に説明する。先ず、ステップS81で注目検出区間の音符の音名をピックアップしてソートし、ステップS82で、前掲の表1の音階音列テーブルのうちソートした音名列に3音名以上含まれる音階音列を検索し、ステップS83で、マッチした音階音列があればマッチした各音階音列と注目検出区間の和声音とが含まれる音階の調を検索し、検出された調(複数あれば複数の調)を注目検出区間の候補調として記憶する。そして、ステップS84で、記憶した候補調から、注目検出区間にその調の5度音および短7度音がある短調を候補調を除き、元のルーチンに復帰する。以上のように候補調を抽出すると、図15のステップS77以降で所定の条件に合えば調を確定する。
【0055】
先ず、ステップS77で、条件(A) 「調が確定されていない検出区間から注目検出区間までに調の音階の1度音と7度音とがある長調(maj)の候補調」をピックアップし、ステップS78で、条件(B) 「調が確定されていない検出区間から注目検出区間までに調の音階の1度音と5度音と7度音とがある短調(minor) の候補調をピックアップし、ステップS79で、条件(C) 「調が確定されていない検出区間から注目検出区間までに調の音階の1度音と6度音と7度音とがある短調(minor) の候補調をピックアップする。
【0056】
次に、ステップS701で条件(A) 〜(C) でピックアップされた候補調が有るか否かを判定し、候補調が無ければステップS702で注目検出区間が最後の検出区間であるか否かを判定する。最後の検出区間であれば、ステップS703で、調が確定されていない検出区間から注目検出区間までを直前に決定された調に確定して元のルーチンに復帰し、最後の検出区間でなければ調を確定しないでステップS75に進む。
【0057】
一方、条件(A) 〜(C) でピックアップされた候補調が有れば、ステップS704で、調が確定されていない検出区間から注目検出区間までに候補調として最も多く挙げられた調を、この確定されていない検出区間から注目検出区間までの調として確定して記憶し、ステップS705に進む。なお、最も多く挙げられた調が複数有るときは前の検出区間(最後に確定された検出区間)の調と同じ調、近親調優先という条件により決定する。また、前の調が確定されてないときは(A)(B) (C) の優先順位でピックアップされた調に確定する。
【0058】
以上の一つの検出区間についての処理が終了すると、ステップS705で注目検出区間が最後の検出区間であるか否かを判定し、最後の検出区間でなければステップS75で読出しポインタを次の検出区間に更新してステップS72に進み、最後の検出区間であれば元のルーチンに復帰する。
【0059】
以上のように、メロディが和声音とメロディパターンに応じて2拍または1小節の検出区間に分割され、和声音と音名列とにより検出区間毎に候補調が抽出され、この候補調に基づき検出区間毎に調が確定される。なお、図15のステップS77〜S79、ステップS703およびステップS704において、「調が確定されていない検出区間から注目検出区間まで」とは、直前の検出区間まで調が確定している場合は注目検出区間だけを指しており、少なくとも調の確定が可能な場合は、検出区間毎に調を確定していることになる。
【0060】
図17のコード検出処理では、ステップS91で検出区間が1小節単位で4つ以上連続している部分がある場合(全て1小節単位の場合も含む)の処理を行う。すなわち、コード進行データ中の4コード進行(同期)の4つのコードと4つの検出区間を対応させ、それぞれの検出区間の和声音が対応するコードの構成音に含まれ、かつ、検出区間の1つがフレーズの最初または最後の場合はフレーズの最初または最後に適したコードであるとき、この4つの検出区間のコードをその4コード進行(同期)の4つのコードにそれぞれ決定する。このとき、長調用のDBと短調用のDBのどちらを用いるかは、前述のようにして求めた調(メジャまたはマイナ)によって決定され、調の主音を考慮することにより、度数で表された和音を実和音に変換することができる。なお、このような4コード進行(同期)が複数ある場合は優先順位に従って決定する。また、フレーズの最初または最後に適したコード群は予めプログラムメモリ2に記憶されており、それらと比較することにより適するか否か判別する。ここで、ある4つの検出区間において、4コード進行(同期)の4つのコードと4つの検出区間の対応がとれたとすると、次はそれに続く新たな4つの検出区間について同様の処理を行う。一方、4つのコードと4つの検出区間との対応がとれなかった場合、4つの検出区間を後方へ1つすらし、前回の後ろ3区間+新たな1区間の計4区間で同様の処理を行う。このような処理を繰り返し実行することによって、全検出区間について4コード進行(同期)のコードが当てはまる場合を確定していく。
【0061】
次に、ステップS92で前述S91でコードを決定することができなかった検出区間の処理を行う。すなわち、コードが決定されていない検出区間(ステップS91で処理の対象とならなかった検出区間)に対して、コード進行データ中の4コード進行(非同期)の4つのコードと4つの検出区間を対応させ、それぞれの検出区間の和声音が対応するコードの構成音に含まれ、かつ、検出区間の1つがフレーズの最初または最後の場合はフレーズの最初または最後に適したコードであるとき、この4つの検出区間のコードをその4コード進行(非同期)の4つのコードにそれぞれ決定する。なお、このような4コード進行(非同期)が複数ある場合は優先順位に従って決定する。ここで、非同期とは4つのコード進行が必ずしも4つの検出区間と対応するとは限らないことを意味する。すなわち、1つのコードが複数の検出区間に渡ってもよいということである。例えば、C→Am →Dm7→G7 という非同期コード進行があったとする。このコード進行を、8つの検出区間に対応させ、C→C→C→C→Am →Am →Dm7→G7 のように割り振ってもよい。したがって、前述のステップS91において決定できなかった連続する4以上の検出区間に対して非同期コード進行を対応させる場合、まず最初の4区間について該区間に対応するコード進行があるか否かを判断し、あればそのコード進行に決定し、無ければ区間を1つ増やして5区間とする。そしてこの5区間を任意に4区間にグループ化し、グループ化された4区間についてコード進行との一致を判断する。以降、一致するコード進行がないと判断される毎に区間を1つずつ増やして同様の処理を行う。そして、連続する区間の最後まで達しても一致するコード進行が見つからなかった場合は、区間を後方へ1つずらし、同様の処理を行う。これを連続する区間の最後4区間に達するまで繰り返し行う。それでも一致するコード進行が見つからなかったときは次のステップS93へと進む。
【0062】
次に、ステップS93で、コードが決定されなかった部分で検出区間が少なくとも3つ連続している部分の処理を行う。すなわち、コードが決定されていない検出区間に対して、コード進行データ中の3コード進行の3つのコードと3つの検出区間を対応させ、それぞれの検出区間の和声音が対応するコードの構成音に含まれるとき、この3つの検出区間のコードをその3コード進行の3つのコードにそれぞれ決定する。なお、このような3コード進行が複数ある場合は優先順位に従って決定する。3コード進行の場合は、4コード進行(同期)と同様に、検出区間との対応がとれなかった場合には、検出区間を後方へ1つずらしながら、処理を繰り返す。
【0063】
次に、ステップS94で、コードが決定されなかった部分で検出区間が少なくとも2つ連続している部分の処理を行う。すなわち、コードが決定されていない検出区間に対して、コード進行データ中の2コード進行の2つのコードと2つの検出区間を対応させ、それぞれの検出区間の和声音が対応するコードの構成音に含まれるとき、この2つの検出区間のコードをその2コード進行の2つのコードにそれぞれ決定する。なお、このような2コード進行が複数ある場合は優先順位に従って決定する。この2コード進行の場合も4コード進行(同期)の場合と同様の処理手順である。
【0064】
次に、ステップS95で4コード進行、3コード進行および2コード進行でコードが決定されなかった部分の処理を行う。すなわち、コードが決定されていない各検出区間に対して、それぞれの検出区間の和声音が対応するコードの構成音に含まれるコードのうち、優先順位が最も高いコードに決定する。この処理により、コード未決定区間はなくなり、全ての区間のコード決定が完了する。
【0065】
なお、上記のコード決定の際には、例えば次表2に示したようなメロディと競合するコードは除くようにする。同表は根音が“C”の場合を示しているが他の根音の場合でもメロディと競合するコードとは同表と同じ音程関係にある。
【0066】
【表2】
【0067】
この実施例では、フレーズの最初または最後に適したコードであるかを検査しているが、曲の最初または最後に適したコードであるかを検査するようにしてもよい。また、コード進行データはリズム種類、曲風、テンポ、拍子などにより異なるデータベースとしてもっていてもよい。
【0068】
以上のように、メロディデータの和声音と音名列とを抽出し、この和声音と音名列とを含む音階から調を検出するので、メロディに忠実な調検出を行うことができる。また、メロディデータを和声音とメロディパターンに応じてフレーズより短い2拍または1小節の検出区間に分割し、少なくとも検出可能な検出区間については検出区間毎に調を検出するので、正確な調検出を行うことができる。
【0069】
なお、実施例では、コードリズム区間を2拍または1小節に分割するようにしているが、この分割の長さをテンポに応じて切り換えるようにしてもよい。
【0070】
また、実施例では、メロディデータを区間仮分割処理でフレーズに分割し、コードリズム区間抽出処理で1小節または2拍の検出区間に分割するようにしているが、予め決められた区間(1小節単位、1拍単位等)に分割するようにしてもよい。
【0071】
さらに、実施例では、鍵盤から演奏データを入力するようにしているが、演奏データあるいはメロディデータを例えばMIDIデータにより外部から供給するようにしてもよい。このとき、MIDIや各種ネットワークなどの通信インタフェース、FDやCD−ROMなどの記憶媒体からメロディデータを供給することができる。また、本願実施例では制御プログラムはプログラムメモリに格納されているものとしているが、外部記憶媒体にプログラムを格納しておき、必要に応じてCPUを有する装置にロードさせて用いるようにしてもよい。
【0072】
【発明の効果】
以上説明したように本発明の請求項1の演奏データ分析装置によれば、和音進行データベースから、所定区間の演奏データに適合する和音進行を抽出するので、典型的な和音進行の中から和音進行を選択することにより、連続する和音の間で音楽的につながりのよい和音進行を付与することができる。
【0073】
また、請求項2の演奏データ分析装置によれば、請求項1の効果に加えて、和音進行としての優先順位に従う和音進行を抽出するので、さらにつながりのよい和音進行を付与することができる。
【図面の簡単な説明】
【図1】本発明の実施例のメロディ分析の流れを説明する概念図である。
【図2】実施例の演奏データ分析装置を適用した電子楽器のブロック図である。
【図3】実施例におけるメロディデータと区間分析データの各フォーマットを示す図である。
【図4】実施例における2拍長の特殊パターンを示す図である。
【図5】実施例におけるコード進行データの一例を示す図である。
【図6】実施例におけるメロディ分析処理のフローチャートである。
【図7】実施例におけるデータ入力処理のフローチャートである。
【図8】実施例における区間仮分割処理のフローチャートである。
【図9】実施例におけるコードリズム区間抽出処理のフローチャートである。
【図10】実施例における和声音抽出処理のフローチャートである。
【図11】実施例における和声音抽出ルール処理のフローチャートである。
【図12】実施例における先取音処理のフローチャートである。
【図13】実施例における和声音再抽出処理のフローチャートである。
【図14】実施例におけるコードリズム結合処理のフローチャートである。
【図15】実施例における調検出処理のフローチャートである。
【図16】実施例におけるコード検出処理のフローチャートである。
【図17】実施例におけるベースパターンについての音高変換処理のフローチャートである。
【符号の説明】
1…CPU、2…プログラムメモリ、3…ワーキングメモリ、4…操作子、6…鍵盤、9…データメモリ、10…コードシーケンスDB
Claims (2)
- 音符のシーケンスを示す演奏データを入力する演奏データ入力手段と、
前記演奏データ入力手段によって入力された演奏データを所定の区間に分割する区間分割手段と、
互いに異なるコード数で、それぞれが複数のコードで構成される和音進行を複数記憶した和音進行データベースと、
前記和音進行データベースに記憶されている和音進行のうちから、前記区間分割により分割された所定区間の演奏データに適合する和音進行を抽出する和音進行抽出手段と、
を備え、
前記和音進行抽出手段は、前記複数のコードで構成される和音進行のなかで所定の長さで和音進行を決定できなかったときは、他の長さの和音進行を用いて和音進行を決定する
ことを特徴とする演奏データ分析装置。 - 前記和音進行データベースに記憶されている複数の和音進行のそれぞれには優先順位が付与されており、前記所定区間の演奏データに適合する和音進行が複数存在するとき、前記優先順位に従った和音進行を抽出することを特徴とする請求項1記載の演奏データ分析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000313698A JP3591444B2 (ja) | 1995-07-11 | 2000-10-13 | 演奏データ分析装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17524895 | 1995-07-11 | ||
JP7-175248 | 1995-07-11 | ||
JP2000313698A JP3591444B2 (ja) | 1995-07-11 | 2000-10-13 | 演奏データ分析装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP17957396A Division JP3216529B2 (ja) | 1995-07-11 | 1996-07-09 | 演奏データ分析装置および演奏データ分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001142462A JP2001142462A (ja) | 2001-05-25 |
JP3591444B2 true JP3591444B2 (ja) | 2004-11-17 |
Family
ID=26496577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000313698A Expired - Fee Related JP3591444B2 (ja) | 1995-07-11 | 2000-10-13 | 演奏データ分析装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3591444B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100634572B1 (ko) * | 2005-04-25 | 2006-10-13 | (주)가온다 | 오디오 데이터 자동 생성 방법 및 이를 이용한 사용자단말기 및 기록매체 |
JP5659648B2 (ja) | 2010-09-15 | 2015-01-28 | ヤマハ株式会社 | コード検出装置およびコード検出方法を実現するためのプログラム |
JP6151121B2 (ja) * | 2013-07-31 | 2017-06-21 | 株式会社河合楽器製作所 | コード進行推定検出装置及びコード進行推定検出プログラム |
-
2000
- 2000-10-13 JP JP2000313698A patent/JP3591444B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001142462A (ja) | 2001-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3704980B2 (ja) | 自動作曲装置と記録媒体 | |
AU731747B2 (en) | Automatic improvisation system and method | |
US6417437B2 (en) | Automatic musical composition method and apparatus | |
US6740804B2 (en) | Waveform generating method, performance data processing method, waveform selection apparatus, waveform data recording apparatus, and waveform data recording and reproducing apparatus | |
US5852252A (en) | Chord progression input/modification device | |
US6294720B1 (en) | Apparatus and method for creating melody and rhythm by extracting characteristic features from given motif | |
JP5293710B2 (ja) | 調判定装置および調判定プログラム | |
US6100462A (en) | Apparatus and method for generating melody | |
JP3698057B2 (ja) | 自動アレンジ装置及び方法 | |
US6486390B2 (en) | Apparatus and method for creating melody data having forward-syncopated rhythm pattern | |
JP3591444B2 (ja) | 演奏データ分析装置 | |
JP3216529B2 (ja) | 演奏データ分析装置および演奏データ分析方法 | |
US6031171A (en) | Performance data analyzer | |
JPH0990952A (ja) | 和音分析装置 | |
JPH0926790A (ja) | 演奏データ分析装置 | |
Sutcliffe et al. | The C@ merata task at MediaEval 2016: Natural Language Queries Derived from Exam Papers, Articles and Other Sources against Classical Music Scores in MusicXML. | |
JPH0926789A (ja) | 演奏データ分析装置 | |
JP3163654B2 (ja) | 自動伴奏装置 | |
JP3807333B2 (ja) | メロディ検索装置およびメロディ検索プログラム | |
JPH05346781A (ja) | 調検出装置および自動編曲装置 | |
JP3163653B2 (ja) | 調性判定装置 | |
JP3316547B2 (ja) | 和音付装置 | |
JP3364940B2 (ja) | 自動作曲機 | |
JP6658785B2 (ja) | 自動伴奏方法および自動伴奏装置 | |
JP2017027087A (ja) | コード選択装置、自動伴奏装置、自動伴奏方法およびコード選択方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040330 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040531 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040803 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040816 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070903 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080903 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090903 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100903 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100903 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110903 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120903 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130903 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |