JP5659648B2 - コード検出装置およびコード検出方法を実現するためのプログラム - Google Patents

コード検出装置およびコード検出方法を実現するためのプログラム Download PDF

Info

Publication number
JP5659648B2
JP5659648B2 JP2010206563A JP2010206563A JP5659648B2 JP 5659648 B2 JP5659648 B2 JP 5659648B2 JP 2010206563 A JP2010206563 A JP 2010206563A JP 2010206563 A JP2010206563 A JP 2010206563A JP 5659648 B2 JP5659648 B2 JP 5659648B2
Authority
JP
Japan
Prior art keywords
code
chord
name
function
degree
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
Application number
JP2010206563A
Other languages
English (en)
Other versions
JP2012063502A (ja
Inventor
成淑 原
成淑 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2010206563A priority Critical patent/JP5659648B2/ja
Priority to US13/218,521 priority patent/US8492636B2/en
Publication of JP2012063502A publication Critical patent/JP2012063502A/ja
Application granted granted Critical
Publication of JP5659648B2 publication Critical patent/JP5659648B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/36Accompaniment arrangements
    • G10H1/38Chord
    • G10H1/383Chord detection and/or recognition, e.g. for correction, or automatic bass generation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/031Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal
    • G10H2210/056Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal for extraction or identification of individual instrumental parts, e.g. melody, chords, bass; Identification or separation of instrumental parts by their characteristic voices or timbres
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/031Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal
    • G10H2210/081Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal for automatic key or tonality recognition, e.g. using musical rules or a knowledge base
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/571Chords; Chord sequences
    • G10H2210/576Chord progression

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

本発明は、演奏操作に応じて入力された演奏データに対して音楽的なつながりのあるコード(和音)を検出するコード検出装置およびコード検出方法を実現するためのプログラムに関する。
演奏データに対して音楽的なつながりのあるコードを検出するコード検出装置は、従来から知られている。
このようなコード検出装置として、音符のシーケンスを示す演奏データを入力して記憶した後、当該演奏データを所定の区間に分割し、予め多数のコード進行を記憶したコード進行データベースから、上記分割された所定区間の演奏データに適合するコード進行を抽出するようにしたものがある(たとえば、特許文献1参照)。
特開2001−142462号公報
しかし、上記従来のコード検出装置では、コード進行を抽出するために参照する演奏データは予め入力されたものであるので、演奏データ中の音符の流れをその前後あるいは広い範囲で見ることで、当該演奏データ(を構成する音符)と音楽的につながりのよいコード進行を抽出することができるものの、コード進行を抽出するための参照対象として、たとえばリアルタイム演奏によって入力中の演奏データを採用し、この入力中の演奏データと音楽的につながりのよいコード進行を抽出しようとすると、次に入力される演奏音がどの音か分からないため、上記従来の電子楽器の手法、つまり現在の演奏音より過去の演奏音だけでなく、先の演奏音まで考慮してコード進行を抽出する手法を単純に適用しただけでは、入力された演奏データと音楽的につながりのよいコード進行が抽出されないことがある。
この問題に対処するために、過去に連続して抽出された複数のコードからなるコード進行がコード進行データベース内に記憶されているかどうかを調査し、記憶されている場合には、そのコード進行から次に来るコードを予測し、予測したコードが次に入力される演奏データと調和するものであるかどうかを判定する手法が考えられる。この手法では、予測したコードが次に入力される演奏データと調和しなければ、音楽的なつながりのない別のコードが抽出されることになる。これとは逆に、予測したコードが次に入力される演奏データと調和して、コード進行データベースから目的のコード進行が抽出されたときには、音楽的なつながりのある安定した聴感のコード進行が得られる反面、同じコード進行が出現しやすくなりユーザが飽きてしまう可能性がある。
本発明は、この点に着目してなされたものであり、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となるコード検出装置およびコード検出方法を実現するためのプログラムを提供することを目的とする。
上記目的を達成するため、請求項1に記載のコード検出装置は、ユーザの演奏操作に応じて演奏データを入力する入力手段と、演奏曲の調情報を取得する取得手段と、コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、所定の基準コードを参照する参照手段と、前記取得手段によって取得された調情報に基づいて、前記参照手段によって参照された基準コードの機能を割り出し、該割り出した機能から次に進むことのできる各機能を判定し、該判定した各機能を持つディグリーネームをコード候補として抽出する抽出手段と、前記抽出手段によって抽出されたディグリーネームを前記取得された調情報に基づいてコードネームに変換する変換手段と、前記指示手段によってコードの検出が指示されたときに、前記入力手段によって入力された演奏データに基づいて、前記変換手段によって変換されたコードネームの中からいずれか1つ選出する選出手段と、前記選出手段によって選出されたコードネームを前記参照手段が参照できるように記憶する記憶手段とを有することを特徴とする。
請求項に記載の電子楽器は、請求項1の電子楽器において、前記演奏曲の区切りを検出する検出手段をさらに有し、前記抽出手段は、前記検出手段によって区切りが検出された後、コード候補抽出されたことに応じて、インターラプテッド・ケーデンスとなり得るディグリーネームも前記コード候補に追加することを特徴とする。
請求項に記載の電子楽器は、請求項1または2の電子楽器において、前記判定対象となる機能には非機能的なコード進行テクニックが含まれ、前記抽出手段は、前記非機能的なコード進行テクニックを判定したときには、当該非機能的なコード進行テクニックに沿って進行可能なディグリーネームも前記コード候補に追加することを特徴とする。
請求項4に記載の電子楽器は、請求項1〜3の電子楽器において、前記選出手段によって選出されたコードネームを最新のものから過去に遡って複数個保存する保存手段と、 前記保存手段に同じ機能のコードネームが所定個続いて保存された場合には、次のコード候補の抽出に際して、当該機能を持つディグリーネームを抽出しないように前記抽出手段を制御する制御手段とをさらに有することを特徴とする。
上記目的を達成するため、請求項5に記載のプログラムは、請求項1と同様の技術的思想によって実現できる。
請求項1または5に記載の発明によれば、取得された調情報に基づいて、参照された基準コードの機能が割り出され、該割り出された機能から次に進むことのできる各機能が判定され、該判定された各機能を持つディグリーネームがコード候補として抽出され、前記抽出されたディグリーネームが前記取得された調情報に基づいてコードネームに変換され、コードの検出が指示されたときに、入力された演奏データに基づいて、前記変換されたコードネームの中からいずれか1つ選出され、該選出されたコードネームが参照できるように記憶されるので、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となる。また、コード候補としてディグリーネームで表現したものを抽出し、抽出したコード候補を現在の調に基づいてコードネームに変換するようにしたので、たとえば“F#Maj7”と“G♭Maj7”という異名同音コードを区別して生成(変換)することができる。
請求項に記載の発明によれば、検出手段によって区切りが検出された後、コード候補抽出されたことに応じて、インターラプテッド・ケーデンスとなり得るディグリーネーム、つまり通常ではコード進行として禁止されているディグリーネームも前記コード候補に追加されるので、ユーザもしくは聴き手の期待を裏切るコードが検出されることがあり、これにより、コードの流れに新鮮さが出る。
請求項に記載の発明によれば、前記判定対象となる機能には非機能的なコード進行テクニックが含まれ、その非機能的なコード進行テクニックが判定されたときには、当該非機能的なコード進行テクニックに沿って進行可能なディグリーネームも前記コード候補に追加されるので、さらにバラエティに富むコードを検出することができる。
請求項4に記載の発明によれば、同じ機能のコードネームが所定個続いて保存された場合には、次のコード候補の抽出に際して、当該機能を持つディグリーネームが抽出されないように制御されるので、単調なコード選出を抑制することができる。
本発明の一実施の形態に係るコード検出装置を適用した電子楽器の概略構成を示すブロック図である。 コード検出タイミングの設定例を示す図である。 メジャ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。 マイナ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。 メジャ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。 マイナ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。 図1の電子楽器、特にCPUが実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。 図5Aの自動伴奏を使った演奏処理の続きの手順を示すフローチャートである。 図5A中のノートイベント処理の詳細な手順を示すフローチャートである。 図5B中のコード候補抽出処理の詳細な手順を示すフローチャートである。 図7Aのコード候補抽出処理の続きの手順を示すフローチャートである。 図7B中の次に進むことのできる機能を持つディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。 図8Aの抽出処理の続きの手順を示すフローチャートである。 図7B中のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。 図7B中の非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係るコード検出装置を適用した電子楽器の概略構成を示すブロック図である。
同図に示すように、本実施の形態の電子楽器は、ユーザの演奏操作に応じて音高情報を含む演奏データを入力する鍵盤を含む演奏操作子1と、各種情報を入力するための複数のスイッチやロータリエンコーダを含む設定操作子2と、演奏操作子1の操作状態を検出する検出回路3と、設定操作子2の操作状態を検出する検出回路4と、装置全体の制御を司るCPU5と、該CPU5が実行する制御プログラムや各種テーブルデータ等を記憶するROM6と、演奏データ、各種入力情報および演算結果等を一時的に記憶するRAM7と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ8と、後述するようにCPU5が供給するコード情報に基づいて演奏データ(伴奏音を発生させるためのもの)を生成する自動伴奏装置9と、各種情報等を表示する、たとえばLCD(liquid crystal display)およびLED(light emitting diode)等を備えた表示装置10と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する記憶装置11と、外部MIDI(musical instrument digital interface)機器等の外部機器100を接続し、この外部機器100とデータの送受信を行う通信インターフェース(I/F)12と、演奏操作子1から入力された演奏データや、前記自動伴奏装置9によって生成された演奏データ等を楽音信号に変換する音源回路13と、該音源回路13からの楽音信号に各種効果を付与するための効果回路14と、該効果回路14からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム15とにより構成されている。
上記構成要素3〜14は、バス16を介して相互に接続され、CPU5および自動伴奏装置9にはタイマ8が接続され、通信I/F12には外部機器100が接続され、音源回路13には効果回路14が接続され、効果回路14にはサウンドシステム15が接続されている。
自動伴奏装置9は、たとえば、ROM6に予め記憶されたシーケンサソフトウェアをCPU5に実行させることによって実現され、前述のように、供給されたコード情報に基づいて演奏データを生成し、生成した演奏データを音源回路13に供給することで、伴奏音を発生させる。また、自動伴奏装置9は、たとえば、ROM6に予め記憶された各種伴奏スタイルデータからユーザが選択したいずれかの伴奏スタイルデータを再生して、演奏データを生成する機能も備えている。この機能を営むときに、自動伴奏装置9は、タイマ8から供給される時間情報に基づいて伴奏スタイルデータを再生する。なお、本発明の特徴は、自動伴奏装置9の構成や作用にある訳ではないので、自動伴奏装置9の構成や作用についてのこれ以上の説明は行わない。
記憶装置11は、たとえば、フレキシブルディスク(FD)、ハードディスク(HD)、CD−ROM、DVD(digital versatile disc)、光磁気ディスク(MO)および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置11自体が本実施の形態の電子楽器から着脱可能であってもよい。あるいは、記憶媒体も記憶装置11も着脱不可能であってもよい。なお記憶装置11(の記憶媒体)には、前述のように、CPU5が実行する制御プログラムも記憶でき、ROM6に制御プログラムが記憶されていない場合には、この記憶装置11に制御プログラムを記憶させておき、それをRAM7に読み込むことにより、ROM6に制御プログラムを記憶している場合と同様の動作をCPU5にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
通信I/F12には、図示例では外部機器100が接続されているが、これに限られず、たとえばLAN(local area network)やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置11に上記各プログラムや各種パラメータが記憶されていなければ、通信I/F12はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子楽器は、通信I/F12および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して電子楽器へと配信し、電子楽器が通信I/F12を介して、これらプログラムやパラメータを受信して記憶装置11に蓄積することにより、ダウンロードが完了する。
なお、本実施の形態の電子楽器は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。
以上のように構成された電子楽器が実行する制御処理を、まず図2〜図4を参照してその概要を説明し、次に図5〜図10を参照して詳細に説明する。
図2は、コード検出タイミングの設定例を示す図であり、同図には、演奏曲として4/4拍子の曲を選択し、1拍目と3拍目をコード検出基準位置に設定し、そのコード検出基準位置の250ms前から50ms後までの期間をコード検出タイミングに設定する例が示されている。なお図示例では、1拍目にはコード検出タイミングが描かれていないが、これは、どちらか一方の拍位置にコード検出タイミングを描いておけば、他方の拍位置にも同様にコード検出タイミングが設定されていることが容易に分かるからである。また、詳細は後述するが、コード検出タイミングをどの位置にどれくらいの時間幅で、どれくらいの個数(あるいは、どれくらいの頻度で)設定するかは、ユーザが自由に選択できるようになっている。
本実施の形態の電子楽器は、ユーザが前記鍵盤を用いて演奏することで、リアルタイム入力された演奏データをそのまま前記音源回路13に供給して発音するとともに、リアルタイム入力された演奏データに対して音楽的なつながりのあるコードを検出して前記自動伴奏装置9に供給することにより、伴奏音も発音するようにしている。前記コード検出タイミングの期間(時間幅)は、コードを検出するために参照する演奏データを入力する期間である。つまり、コード検出タイミングの期間内に入力された演奏データのみが、伴奏音を発音するためのコードを検出する際に参照される。コードの検出は、まず、
(101)次に進むことのできる機能を持つディグリーネーム候補の抽出処理
(102)インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理
(103)非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理
の3種類の抽出処理によって、検出候補となるコード候補(ディグリーネームで表現したもの)を抽出する。ただし上記(102)の抽出処理は、演奏曲の区切りが検出されるまでは実行されない。
上記(101)の抽出処理では、図3A(メジャ調の場合)および図3B(マイナ調の場合)のコードの機能とディグリーネームの対応表のうち、現在の調に対応する方を参照し、前回検出されたコードの機能から次に進むことのできる機能をすべて抽出する。そして、同対応表を参照して、抽出した機能を持つディグリーネームをダイアトニック・スケール・コードに属するものも、ダイアトニック・スケール・コード以外に属するものもすべて抽出して、ディグリーネームリストに登録する。ただし、所定の条件が満たされた場合、ダイアトニック・スケール・コードに属するものを抽出しないことがあるが、ここでは、これ以上説明しない。
上記(102)の抽出処理では、 上記(101)の抽出処理と同様に、図3Aおよび図3Bのコードの機能とディグリーネームの対応表のうち、現在の調に対応する方を参照し、インターラプテッド・ケーデンスに対応したディグリーネーム候補をすべて抽出して、ディグリーネームリストに登録する。なお、この抽出処理の詳細については、ここでは説明しない。
上記(103)の抽出処理では、図4A(メジャ調の場合)および図4B(マイナ調の場合)の非機能的コード進行に登場するディグリーネームの一覧表のうち、現在の調に対応する方を参照し、非機能的コード進行テクニックに対応したディグリーネーム候補をすべて抽出して、ディグリーネームリストに登録する。なお、この抽出処理の詳細についても、ここでは説明しない。
次に、ディグリーネームリストに登録された各ディグリーネームを現在の調に基づいて各コードネームに展開し、これらコードネームに展開されたコードの中から、入力された演奏データに基づいて1つコードを選出し、選出したコードを自動伴奏装置9に出力して発音させるとともに、前回選出したコードとして記憶しておく。前回(必要に応じて前々回)選出したコードは、前記(101)〜(103)の各抽出処理で使われる。
前記(101)〜(103)の各抽出処理を開始してから1つのコードを選出して自動伴奏装置9に出力するまでのコード検出処理(後述する「制御処理の詳細」では、「(6)コードの検出タイミング時処理」に相当する)は、図2の例では、1拍目と3拍目に実行されるが、より厳密には、当該各拍のコード検出タイミングの期間の末尾、つまり時間T3に実行の開始が指示される。これは、コード検出処理で参照する演奏データの検出期間をコード検出タイミングの全期間、つまり期間T1〜T3としているからである。
このように本実施の形態の電子楽器では、次に進行するコードとして、音楽的なつながりのあるコード候補を抽出し、抽出したコード候補の中から、リアルタイム入力された演奏データと調和するコードを検出するようにしたので、リアルタイム演奏に対して音楽的なつながりのあるコードを検出することができる。そして、検出されたコードは常に、リアルタイム入力された演奏データと調和している。
また、コード候補としてディグリーネームで表現したものを抽出し、抽出したコード候補を現在の調に基づいてコードネームに展開するようにしたので、たとえば“F#Maj7”と“G♭Maj7”という異名同音コードを区別して生成(展開)することができる。
また、クリシェ、パッシングディミニッシュ、パラレルモーションといった、非機能的なコード進行を形成するコードもコード候補として抽出するようにしたので、バラエティに富むコード進行を得ることができるとともに、ユーザの演奏のちょっとしたタッチの違いでも、異なるコード進行が得られる可能性がある。さらに、音楽的に矛盾がなく、面白味のあるコード進行を得ることができる。
また、通常は、次に進行可能なコードを候補として抽出するが、演奏中、曲の区切りと判断したときのみ、普段は禁止しているコード進行を候補に追加するようにしたので、曲の区切れ目で、ユーザもしくは聴き手の期待を裏切るコード進行となり、これにより、コード進行(コードの流れ)に新鮮さが出る。普段は禁止しているコード進行とは、インターラプテッド・ケーデンス(=サブドミナント・マイナの終止保留:通常は使わないコード進行で、メジャ調ではドミナント(D)→サブドミナント・マイナ(SM)と進行し、マイナ調ではドミナント(D)→サブドミナント(S)と進行する)である。インターラプテッド・ケーデンスは、原則として音楽的な区切りの部分で使用される作曲方法なので、実際の使われ方と一致する。
次に、この制御処理を詳細に説明する。
図5Aおよび図5Bは、本実施の形態の電子楽器、特にCPU5が実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。本実施の形態の電子楽器では、ユーザが演奏操作子1を用いてリアルタイム演奏する際の演奏モードとして、自動伴奏装置9を作動させずに、演奏操作子1を用いて入力された演奏データに応じた楽音を発音させる第1の演奏モードと、自動伴奏装置9を作動させて、演奏操作子1を用いて入力された演奏データに応じた楽音とともに、自動伴奏装置9によって生成された演奏データに応じた楽音(伴奏音)も発音させる第2の演奏モードの2種類の演奏モードを備えている。通常の演奏モード、つまり、本実施の形態の電子楽器の電源をオンしたときに最初に選択される演奏モードは、第1の演奏モードであるので、第2の演奏モードに移行するには、ユーザによる所定の移行指示が必要となる。上記「自動伴奏を使った演奏処理」は、この移行指示がなされたときに起動される処理である。なお本実施の形態では、本発明の特徴を「自動伴奏を使った演奏処理」内にすべて盛り込み、この「自動伴奏を使った演奏処理」を用いて本発明の特徴を説明するようにしたので、「自動伴奏を使わない演奏処理」についての説明は行わない。したがって、以下「自動伴奏を使った演奏処理」を「演奏処理」と略して言う。ただし、本発明の特徴を「自動伴奏を使わない演奏処理」内にすべて盛り込み、この「自動伴奏を使わない演奏処理」を用いて本発明の特徴を説明することもできる(この場合には、伴奏音は発生しない)ので、「自動伴奏を使った演奏処理」を用いて本発明の特徴を説明したのは、便宜上のことに過ぎない。
本演奏処理は、主として、
(1)起動時処理(ステップS1〜S4)
(2)自動伴奏のスタート時処理(ステップS7)
(3)自動伴奏のストップ時処理(ステップS9)
(4)ノートイベント処理(ステップS12)
(5)曲の区切り検出時処理(ステップS14)
(6)コードの検出タイミング時処理(図5BのステップS16〜S25)
によって構成されている。
本演奏処理が起動されると、前記(1)の起動時処理が1回実行された後、自動伴奏のスタート指示があるまで待機状態となり(ステップS6→S5→S6)、自動伴奏のスタート指示があると、前記(2)の自動伴奏のスタート時処理が実行され、これに続いて、前記(4)〜(6)の各処理が適宜実行される。そして(4)〜(6)の各処理は、自動伴奏のストップ指示があるまで(ステップS8)、あるいは第1の演奏モードに戻る指示があるまで(ステップS5)、適宜繰り返し実行される。なお、自動伴奏のストップ指示があると、前記(3)の自動伴奏のストップ時処理が実行された後、伴奏スタイルなどの設定変更があったかどうか判定され(ステップS10)、設定変更があったときには、前記(1)の起動時処理に戻る一方、設定変更がなかったときには、前記待機状態に戻る。また、第1の演奏モードに戻る指示があると、本演奏処理は終了する(ステップS5→終了)。
前記(1)の起動時処理は、
(11)演奏開始前の設定処理(ステップS1)
(12)コード検出タイミングおよび各種ルールの設定処理(ステップS2)
(13)初期化処理(ステップS3)
(14)コード検出タイミングの始点および終点の算出設定処理(ステップS4)
によって構成されている。
この(1)起動時処理に処理が進むと、まずCPU5は、前記(11)の演奏開始前の設定処理を実行する。この(11)演奏開始前の設定処理では、CPU5は、演奏テンポ、拍子、伴奏スタイル、ボリューム値および演奏音色などの各項目の設定を行う。各項目は、ユーザに設定すべき値あるいは種類を問い合わせ、これに応じてユーザが入力あるいは選択した値あるいは種類を設定するようにしてもよいし、デフォルト設定されたものあるいは前回設定されたものをそのまま、あるいは一部変更して設定するようにしてもよい。
次にCPU5は、処理を前記(12)のコード検出タイミングおよび各種ルールの設定処理に進める。この(12)コード検出タイミングおよび各種ルールの設定処理では、CPU5は、コード検出タイミングの設定ルールと、それ以外の各種ルールを設定する。
コード検出タイミングの設定ルールとは、具体的には、コードを検出するタイミングとして、時間幅を設けるのか、あるいは時間幅を設けずに時点とするのか、また、時間幅を設けるのであれば、どの時点を基準位置として、その前後にどのくらいの時間幅を設けるのか、あるいは時点とするのであれば、どの時点とするのかということである。時間幅を設ける例としては、前記図2で示したように、2拍毎に(4/4拍子が選択された場合には、たとえば1拍目と3拍目)拍位置をコード検出基準位置として、250ms前から50ms後までの期間とすることが挙げられる。図示例では、時間幅を設定する単位として“ms”を採用したが、もちろんこれに限らず、音符長であってもよい。また、コード検出基準位置は2拍毎の拍位置に限らず、1拍毎の拍位置であってもよいし、テンポが変化したときに、たとえば2拍毎から1拍毎に変動するようにしてもよいし、拍に限らず、小節毎の所定位置(たとえば、先頭位置)であってもよい。さらに、コード検出基準位置をどこに設定するかは、テンポ値や伴奏スタイルによって決まっていてもよい。一方、時点の例としては、時間幅を設ける場合で例示した各種コード検出基準位置、つまり、所定拍毎の拍位置や小節毎の所定位置、あるいは、ユーザが、たとえば前記設定操作子2に含まれる所定の操作子を操作した時点や、所定の拍内で、ユーザが所定の操作子を操作した時点などが考えられる。なお本実施の形態では、コード検出タイミングの設定ルールとして、前記図2の例で示したルールが選択設定されているものとする。
各種ルールとしては、(R1)調情報の検出ルールや(R2)コードの選出ルール、(R3)曲の区切り検出ルールなどを挙げることができる。
前記(R1)の調情報の検出ルールとしては、たとえば、演奏前にユーザに調情報を問い合わせ、これに応じてユーザが入力した調情報を検出(取得)するというルールや、ユーザの演奏操作に応じて入力された演奏データを解析して、随時調情報を検出するというルールなどが考えられる。なお本実施の形態では、調情報は、主音名+メジャ/マイナによって表現したものを入力あるいは検出するものとする。また、演奏データを解析して調情報を検出する方法は、公知のものを用いればよい。そして、調情報を随時検出する方法を採用した場合には、コードが選出される度に(後述する図5BのステップS20を参照)、そのとき検出された調情報を当該選出されたコードに対応付けて記憶しておくとよい。
前記(R2)のコードの選出ルールとしては、たとえば、
(R2a)各コードに予め優先順位を付けておき(たとえば、ダイアトニック・スケール・コードのトニックコードを上位にするなど)、候補コードのうち、最上位のコードを選出するというルール
(R2b)参照対象の演奏データの全ての音名と候補コードの各コードの構成音との一致度合い(完全一致、3音以上が一致、2音が一致など)が最も高いコードを選出するというルール
などを挙げることができる。また、候補コードの各コードの根音が参照対象の演奏データに含まれることを追加条件にしてもよい。
前記(R3)の曲の区切り検出ルールとしては、たとえば、
(R3a)選択された伴奏スタイルデータのうち、「フィルイン」のセクションに属するデータを再生する指示がなされたときに、曲の区切りと検出するというルール
(R3b)ユーザの演奏が、たとえば2小節以上途絶えた後に再開されたときに、曲の区切りと検出するというルール
(R3c)別の伴奏スタイルデータが選択されたときに、曲の区切りと検出するというルール
などを挙げることができる。
また、(12)コード検出タイミングおよび各種ルールの設定処理では、メジャ調でのドミナント(D)→サブドミナント・マイナ(SM)進行(インターラプテッド・ケーデンス)を通常時も許可するかどうかも設定できるようになっている。ここで、「通常時も許可」とは、前記(102)のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理時だけではなく、前記(101)の次に進むことのできる機能を持つディグリーネーム候補の抽出処理時でも、メジャ調においてインターラプテッド・ケーデンスとなるコード進行(を形成するコード機能を有するディグリーネーム)の抽出を許可することを意味する。そして、「通常時も許可」が設定された場合には、前記図3Aのメジャ調におけるコードの機能とディグリーネームの対応表中、機能が「D:ドミナント」である「次に進む事の出来る機能」に“SM”が追加されて、「次に進む事の出来る機能」は“T”,“D”および“SM”の3種類となる一方、「通常時は不許可」が設定された場合には、当該「次に進む事の出来る機能」には“SM”が追加されずに、“T”および“D”の2種類となる。図3Aの当該「次に進む事の出来る機能」中、“SM”がカッコ書きで示されているのは、“SM”が機能として選択される場合と選択されない場合の両方があり得るからである。本実施の形態では、図3Aの対応表は前記ROM6に予め記憶されており、必要なときに読み出して参照するようにしているが、「通常時も許可」が設定されたかどうかで、対応表のうちの一部データ(“SM”)を採用するかどうかを判断するのは面倒なので、「通常時も許可」が設定された場合の対応表と「通常時は不許可」が設定された場合の対応表を予め別々に作成して記憶しておき、必要に応じて必要な方を読み出して参照すればよい。
なお、(12)コード検出タイミングおよび各種ルールの設定処理でも、前記(11)演奏開始前の設定処理と同様に、各ルールは、ユーザに設定すべきルール内容を問い合わせ、これに応じてユーザが入力あるいは選択した内容を設定するようにしてもよいし、デフォルト設定されたものあるいは前回設定されたものをそのまま、あるいは一部変更して設定するようにしてもよい。
次にCPU5は、処理を前記(13)の初期化処理に進める。この(13)初期化処理では、CPU5は、前記RAM7上に確保した次の各領域を初期化する。つまり、
ノートイベントリストNList:コード検出タイミングの期間内に入力されたノートオンイベントに対応するノートイベント情報(音高+入力タイミング)を登録するリストである;
区切りカウンタ:曲の区切りが検出される度に“1”ずつカウントアップして行くソフトウェアカウンタである;
コード検出タイミングの始点sTime:コード検出タイミングの始点を記憶しておく領域である;
コード検出タイミングの終点eTime:コード検出タイミングの終点を記憶しておく領域である;
調情報Key:前記設定された調検出ルールに従って検出された調情報を記憶しておく領域である;
ディグリーネームリストDNList:後述するコード候補抽出処理によって抽出されたコード候補のディグリーネームを登録するリストである;
コードリストCList:ディグリーネームリストDNListに登録された各ディグリーネームを調情報Keyに基づいて展開して生成したコードネームを登録するリストである;
選出コードChord:ノートイベントリストNListに登録されたノートイベント情報に基づいてコードリストCListから選出した1つのコードネームを記憶しておく領域である;
出力結果リストRList:選出コードChord、調情報Keyおよび選出コードChordに対応するディグリーネームを登録するリストである;
前回のディグリーネームLDN:前回の選出コードChordに対応するディグリーネームを記憶しておく領域である;
前回の機能LF:前回の選出コードChordに対応する機能を記憶しておく領域である;
の各領域をクリアする。
次にCPU5は、処理を前記(14)のコード検出タイミングの始点および終点の算出設定処理に進める。この(14)コード検出タイミングの始点および終点の算出設定処理では、CPU5は、前記設定されたコード検出タイミングの設定ルールに従って、最初のコード検出タイミングの始点および終点を算出し、算出した始点を前記始点sTimeに記憶(設定)するとともに、算出した終点を前記終点eTimeに記憶(設定)する。ただし本実施の形態では、コード検出タイミングとして、曲の先頭拍の拍位置をコード検出基準位置に取るとともに、その拍位置からさらに250ms前をコード検出タイミングの始点に取るのに対して、曲は先頭拍から開始されるので、曲の開始時に、その開始位置より前の位置を算出して、始点sTimeに設定するのは無意味である。したがって、この場合、始点sTimeには先頭拍の拍位置、つまりコード検出基準位置を設定することが好ましい。しかしこの場合に、原則通り、先頭拍の拍位置より250ms前の位置を算出して、始点sTimeに設定したとしても、設定された始点より後の時刻から制御処理が開始されるだけであって、その後の制御処理に問題が生じることはない。
このようにして(1)起動時処理が1回実行されると、CPU5は、ユーザによる自動伴奏のスタート指示を待ち、自動伴奏のスタート指示がなされると、処理を前記(2)の自動伴奏のスタート時処理に進める(ステップS6→S7)。この(2)自動伴奏のスタート時処理では、CPU5は、前記タイマ8を起動して、タイマ8による計時を開始する。タイマ8の計時時間は、前述のように前記自動伴奏装置9にも供給され、さらに本演奏処理では、前述のように自動伴奏装置9は作動状態であるので、伴奏スタイルデータが選択設定されていれば、自動伴奏装置9は、本演奏処理とは独立して、タイマ8から供給された計時時間(時間情報)に基づいてその伴奏スタイルデータを再生する。
そしてCPU5は、ユーザによって自動伴奏のストップ指示がなされるまで、ノートオンイベントが受け付けられたときには、前記(4)のノートイベント処理を実行し(ステップS8→S11→S12)、曲の区切りが検出されたときには、前記(5)の曲の区切り検出時処理を実行し(ステップS13→S14)、タイマ8によって前記コード検出タイミング(の終点eTime)が計時されたときには、前記(6)のコードの検出タイミング時処理を実行する(図5BのステップS15→S16)。
一方、ユーザによって自動伴奏のストップ指示がなされると、CPU5は、処理を前記(3)の自動伴奏のストップ時処理に進める(ステップS8→S9)。この(3)自動伴奏のストップ時処理では、CPU5は、タイマ8を停止する。これにより当然ながら、自動伴奏装置9による前記伴奏スタイルデータの再生は停止する。
図6は、前記(4)のノートイベント処理の詳細な手順を示すフローチャートである。
同図に示すように、本ノートイベント処理は、
(41)タイマ8がコード検出タイミング期間内の時間、つまり前記始点sTimeから前記終点eTimeまでの間の時間を計時しているときに
(41a)ノートオンイベントが受け付けられた場合の処理(ステップS33,S34)
(41b)ノートオフイベントが受け付けられた場合の処理(ステップS35,S36)
(42)タイマ8がコード検出タイミング期間外の時間を計時しているときに
(42a)ノートオンイベントが受け付けられた場合の処理(ステップS38)
(42b)ノートオフイベントが受け付けられた場合の処理(ステップS39)
によって構成されている。
そして、上記(41a)の処理は、上記(42a)の処理、つまり、受け付けられたノートオンイベントを前記音源回路13に出力することでなされる発音処理に、当該ノートオンイベントに対応するノートイベント情報(音高+入力タイミング)を前記ノートイベントリストNListに追加する処理を加えて構成され、上記(41b)の処理は、上記(42b)の処理、つまり、受け付けられたノートオフイベントを音源回路13に出力することでなされる消音処理に、当該ノートオフイベントに対応するノートイベント情報を前記ノートイベントリストNListから削除する処理を加えて構成されている。
前記(5)の曲の区切り検出時処理では、CPU5は、前記区切りカウンタを“1”だけインクリメントする(ステップS14)。
前記(6)のコードの検出タイミング時処理では、まずCPU5は、前記(12)のコード検出タイミングおよび各種ルールの設定処理によって設定された調検出ルールに従って、調情報を取得し(ステップS16)、取得した調情報を前記調情報Keyに記憶する(ステップS17)。次にCPU5は、コード候補抽出処理を実行する(ステップS18)。
図7Aおよび図7Bは、このコード候補抽出処理の詳細な手順を示すフローチャートである。
本コード候補抽出処理は、主として、前記(101)〜(103)の抽出処理、つまり、
(101)次に進むことのできる機能を持つディグリーネーム候補の抽出処理(ステップS55)
(102)インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理(ステップS56)
(103)非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理(ステップS57)
によって構成され、上記(101)の抽出処理の前に、
(100a)起動時処理(ステップS41〜S43)
(100b)上記(101)の抽出処理の前処理(ステップS44〜S52)
を実行するように構成されている。ただし、上記(102)の抽出処理は、区切りカウンタの値が“1”以上のとき、つまり、曲の区切りが1回以上検出されたときに実行される。
本コード候補抽出処理が起動されると、まずCPU5は、処理を前記(100a)の起動時処理に進める。この(100a)起動時処理では、CPU5は、
(100a1)ノートイベントリストNListが空である場合、つまり、ノートイベントリストNListにノートイベント情報が1個も記録されていない場合:本コード候補抽出処理を直ちに終了する(ステップS41→リターン);
(100a2)ノートイベントリストNListが空でない場合:かつ
(100a21)出力結果リストRListが空である場合:ノートイベントリストNListに記録されたノートイベント情報と調情報Keyに基づいて初回コードのディグリーネームを検出し、検出したディグリーネームをディグリーネームリストDNListに登録した後、本コード候補抽出処理を終了する(ステップS41→S42→S43→リターン);
(100a22)出力結果リストRListが空でない場合:前記(100b)の前処理に進む(ステップS41→S42→S44)。
なお前記(100a21)の処理において、初回コードのディグリーネームの検出は、通常の方法によって行えばよい。またこの場合、参照する前回のコードがまだ記憶されていないので、たとえば、調の主音をルートとしたメジャ調かマイナ調のトニックコードを参照すべき基準コードとしてもよい。
前記(100b)の前処理では、CPU5は、トニック禁止フラグ、サブドミナント禁止フラグおよびドミナント禁止フラグのセット/リセットを行う。具体的には、
(100b1)出力結果リストRListに4個以上のコード情報が登録されており、末尾から4個、つまり最新に登録されたものから遡って4個がすべて、ダイアトニック・スケール・コードのトニック(T)に該当するかどうか判定し(ステップS44)、
当該4個のコード情報がすべて、ダイアトニック・スケール・コードのトニックに該当する場合:トニック禁止フラグをセット(“1”)(ステップS45);
当該4個のコード情報のうち、少なくとも1個が、ダイアトニック・スケール・コードのトニックに該当しない場合:トニック禁止フラグをリセット(“0”)(ステップS46);
(100b2)出力結果リストRListに2個以上のコード情報が登録されており、末尾から2個がすべて、ダイアトニック・スケール・コードのサブドミナント(S)に該当するかどうか判定し(ステップS47)、
当該2個のコード情報がすべて、ダイアトニック・スケール・コードのサブドミナントに該当する場合:サブドミナント禁止フラグをセット(ステップS48);
当該2個のコード情報のうち、少なくとも1個が、ダイアトニック・スケール・コードのサブドミナントに該当しない場合:サブドミナント禁止フラグをリセット(ステップS49);
(100b3)出力結果リストRListに2個以上のコード情報が登録されており、末尾から2個がすべて、ダイアトニック・スケール・コードのドミナント(D)に該当するかどうか判定し(ステップS50)、
当該2個のコード情報がすべて、ダイアトニック・スケール・コードのドミナントに該当する場合:ドミナント禁止フラグをセット(ステップS51);
当該2個のコード情報のうち、少なくとも1個が、ダイアトニック・スケール・コードのドミナントに該当しない場合:ドミナント禁止フラグをリセット(ステップS52)。
上記3種類の禁止フラグをそれぞれセットする場合は、対応する機能を持つダイアトニック・スケール・コードが所定個続いて選出されて発音される(後述する図5BのステップS20〜S23を参照)場合に相当する。つまり、各禁止フラグは、対応する機能を持つダイアトニック・スケール・コードが所定個続いて選出されないように制限する機能を営んでいる(後述する図8AのステップS63,S67、および図8BのステップS71を参照)。このような禁止フラグを設けたことにより、単調なコード選出およびその発音を抑制することができる。なお、同じ機能を持つダイアトニック・スケール・コードが何個続いたときに、同じ機能を持つ新たなダイアトニック・スケール・コードの選出を禁止するかの上記例示した個数は、あくまでも例示に過ぎず、複数個であれば2個と4個に限られない。
さらにCPU5は、出力結果リストRListの末尾のコード情報を参照し、前回コードのディグリーネームとその機能を取得し(ステップS53)、取得したディグリーネームを前回のディグリーネームLDNに記憶するとともに、取得した機能を前回の機能LFに記憶する(ステップS54)。
次にCPU5は、処理を前記(101)の次に進むことのできる機能を持つディグリーネーム候補の抽出処理に進める(図7BのステップS53)。
図8Aおよび図8Bは、この(101)次に進むことのできる機能を持つディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
同図A,Bに示すように本抽出処理では、まずCPU5は、前回の機能LFおよび調情報Keyに基づいて、次に進むことのできる機能を全て抽出する(ステップS61)。このとき、前記図3A(調情報Keyがメジャ調の場合)または図3B(調情報Keyがマイナ調の場合)のいずれかのコードの機能とディグリーネームの対応表を参照して、次に進むことのできる機能を全て抽出する。たとえば、前回の機能LFがトニック(T)であり、調情報Keyがメジャ調である場合には、CPU5は、次に進むことのできる機能として、トニック(T)、サブドミナント(S)、ドミナント(D)およびサブドミナント・マイナ(SM)を抽出する。また、前回の機能LFがドミナント(D)であり、調情報Keyがメジャ調である場合には、さらに、メジャ調でのドミナント(D)→サブドミナント・マイナ(SM)進行(インターラプテッド・ケーデンス)を通常時も許可するかどうかに応じて、CPU5は、次に進むことのできる機能として、トニック(T)、ドミナント(D)およびサブドミナント・マイナ(SM)(「通常時も許可」の設定時)と、トニック(T)およびドミナント(D)(「通常時は不許可」の設定時)のいずれかを抽出する。
次にCPU5は、抽出した機能とその機能に対応する禁止フラグのセット状態に応じて、次のように場合分けし、各場合に対応する処理を実行する。すなわち、
(101a)抽出した機能にトニックがあり、かつ
トニック禁止フラグの値=0(リセット状態)の場合:ダイアトニック・スケール・コードのトニックに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS64)とともに、ダイアトニック・スケール・コード以外のトニックに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS65);
トニック禁止フラグの値=1(セット状態)の場合:上記ステップS64の処理をスキップして、上記ステップS65の処理のみを行う;
(101b)抽出した機能にサブドミナントがあり、かつ
サブドミナント禁止フラグの値=0の場合:ダイアトニック・スケール・コードのサブドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS68)とともに、ダイアトニック・スケール・コード以外のサブドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS69);
サブドミナント禁止フラグの値=1の場合:上記ステップS68の処理をスキップして、上記ステップS69の処理のみを行う;
(101c)抽出した機能にドミナントがあり、かつ
ドミナント禁止フラグの値=0の場合:ダイアトニック・スケール・コードのドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(図8BのステップS72)とともに、ダイアトニック・スケール・コード以外のドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS73);
ドミナント禁止フラグの値=1の場合:上記ステップS72の処理をスキップして、上記ステップS73の処理のみを行う;
(101d)抽出した機能にサブドミナント・マイナがある場合:サブドミナント・マイナに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS75)。
なお、抽出した機能にトニック、サブドミナント、ドミナントまたはサブドミナント・マイナがない場合には、それぞれ以下の(101a)〜(101d)の各処理はなされない。
図7Bに戻り、CPU5は、区切りカウンタの値が“0”より大きいかどうかを判定し、区切りカウンタの値>0のときには、処理を前記(102)のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理に進める(ステップS56→S57)一方、区切りカウンタの値=0のときには、前記(102)のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理をスキップする(ステップS56→S58)。
図9は、この(102)インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
本抽出処理が起動されると、CPU5は、区切りカウンタの値をチェックし、区切りカウンタの値が“1”であれば、区切りカウンタの値を“1”だけインクリメントして“2”にした(ステップS81→S82)後、本抽出処理を終了する一方、区切りカウンタの値が“0”または“3”以上であれば、本抽出処理を直ちに終了する(ステップS81→S83→リターン)。
さらに、区切りカウンタの値が“2”であれば、CPU5は、次のようにしてディグリーネーム候補を抽出する。すなわち、
(102a)前回の機能LFがドミナントであり、かつ
調情報Keyがマイナ調である場合:サブドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS84→S85→S88:このステップS88の処理では、マイナ調においてインターラプテッド・ケーデンスとなるコード進行、つまり、ドミナント→サブドミナント進行のうち、後者のコード機能(サブドミナント)を持つディグリーネームをすべて抽出する。そして、この抽出に際して、前記図3Bのマイナ調におけるコードの機能とディグリーネームの対応表を参照する)とともに、区切りカウンタをクリアする(ステップS89);
調情報Keyがメジャ調である場合には、さらに、メジャ調でのドミナント→サブドミナント・マイナ進行(インターラプテッド・ケーデンス)が通常時は許可されていなければ、サブドミナント・マイナに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS84→S85→S86→S87:このステップS87の処理では、メジャ調においてインターラプテッド・ケーデンスとなるコード進行、つまり、ドミナント→サブドミナント・マイナ進行のうち、後者のコード機能(サブドミナント・マイナ)を持つディグリーネームをすべて抽出する。そして、この抽出に際して、前記図3Aのメジャ調におけるコードの機能とディグリーネームの対応表を参照する)とともに、区切りカウンタをクリアする(ステップS89);
(102b)前回の機能LFがドミナントでない場合:区切りカウンタをクリアした(ステップS84→S89)後、本抽出処理を終了する。
なお、調情報Keyがメジャ調である場合に、メジャ調でのドミナント→サブドミナント・マイナ進行(インターラプテッド・ケーデンス)が通常時も許可されていれば、CPU5は、前記ステップS87の処理をスキップして、区切りカウンタをクリアした(ステップS86→S89)後、本抽出処理を終了する。ここで、ステップS87の処理をスキップしたのは、メジャ調でのドミナント→サブドミナント・マイナ進行が通常時も許可されていれば、前記図8BのステップS75の処理により、当該進行を形成するコードの機能を持つディグリーネームは既に、ディグリーネームリストDNListに登録されており、再度登録する必要はないからである。もちろんこの場合も、ステップS87の処理を実行して、当該進行を形成するコードの機能を持つディグリーネームをディグリーネームリストDNListに再登録するようにしてもよい。
この(102)の抽出処理は実質的に、区切りカウンタの値が“2”であるときにのみなされている(前記ステップS83を参照)が、このようにした理由は、次の通りである。つまり、曲の区切りが検出されてから、最初のコード検出期間の終点eTimeに到達すると、この(102)の抽出処理が起動されるが、このときの「前回の機能LF」は曲の区切りが検出される前の機能であるため、「前回の機能LF」として、曲の区切りが検出された後の機能が記憶されるまで、1回待つ必要がある。そこで、区切りカウンタの値が“1”であるときには、その値のインクリメントだけ行って本抽出処理を終了し(ステップS81→S82→リターン)、本抽出処理による実質的な処理を行わずに1回待つようにしている。そして、次のコード検出期間の終点eTimeに到達すると、このときの「前回の機能LF」は曲の区切りが検出された後の機能であるため、「インターラプテッド・ケーデンスに対応したディグリーネーム候補」の抽出処理を適正に行うことができる。
図7Bに戻り、次にCPU5は、処理を前記(103)の非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理に進める(ステップS58)。
図10は、この(103)非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
本抽出処理が起動されると、CPU5は、次のようにしてディグリーネーム候補を抽出する。すなわち、
(103a)前回のディグリーネームLDNから非機能的コード進行をする可能性がある場合:前回のディグリーネームLDNから調情報Keyに合った非機能的コード進行となるディグリーネームをすべて抽出し、ディグリーネームリストDNListに登録する(ステップS91→S92→リターン);
(103b)前回のディグリーネームLDNは非機能的コード進行のコードでない場合:何もせずに本抽出処理を終了する(ステップS93→リターン);
(103c)前回のディグリーネームLDNはクリシェのコードである場合:出力結果リストRListの末尾から2番目のコード情報を参照し、前々回のコードのディグリーネームを取得し(ステップS95→S96)、取得したディグリーネームを、前々回のディグリーネームを記憶するために前記RAM7上に設けられた領域BDN(以下、この領域BDNに記憶された前々回のディグリーネームを「前々回のディグリーネームBDN」という)に記憶し(ステップS97)、クリシェとして、前々回のディグリーネームBDN→前回のディグリーネームLDNと進行し、その次に進行する可能性のあるディグリーネームをすべて抽出し、抽出したディグリーネームを、次回のディグリーネームを登録するためのリスト(以下、「次回のディグリーネームリスト」という)NDNListに登録し(ステップS98)、さらに、次回のディグリーネームリストNDNListに登録されているディグリーネームのうち、まだディグリーネームリストDNListに登録されていないものをディグリーネームリストDNListに登録する(ステップS100);(103d)前記(103a)〜(103c)のいずれの場合にも該当しない場合:調情報Keyに合った非機能的コード進行として、前回のディグリーネームLDNの次に可能となるディグリーネームをすべて抽出し、抽出したディグリーネームを次回のディグリーネームリストNDNListに登録した(ステップS99)後、上記ステップS100の処理を行う。
なお、次回のディグリーネームリストNDNListの初期化処理は、前記(103c)の処理の前に行うようにしている(ステップS94)。
また、前記(103a)〜(103d)の処理では、前記図4A(調情報Keyがメジャ調の場合)または図4B(調情報Keyがマイナ調の場合)のいずれかの非機能的コード進行に登場するディグリーネームの一覧表を適宜参照するようにしている。
具体的には、前記(103a)の場合に該当するかどうかは、前回のディグリーネームLDNが調情報Key側の一覧表の「前回」に記載されているディグリーネーム群に含まれているかどうかで判定する。たとえば、前回のディグリーネームLDNが“IMaj7”であり、調情報Keyがメジャ調である場合には、“IMaj7”は図4Aの一覧表の「パッシング・ディミニッシュ」と「クリシェ」の「前回」のディグリーネーム群に含まれているので、この場合について前記(103a)の処理、つまりステップS92の処理を行うと、抽出されるディグリーネームは、“IMaj7”を「前回」に含む「今回」のディグリーネーム、つまり“#Idim”,“♭IIIdim”および“Iaug”となる。
また、前記(103b)の場合に該当するかどうかは、前回のディグリーネームLDNが調情報Key側の一覧表の「今回」に記載されている各ディグリーネームに該当しないかどうかで判定する。
さらに、前記(103c)の場合に該当するかどうかは、前回のディグリーネームLDNがメジャ調側の一覧表の「クリシェ」の「今回」に記載されているディグリーネーム、つまり“Iaug”であるかどうかで判定する。そして、前々回のディグリーネームBDNは「クリシェ」の「前回」に記載されているいずれのディグリーネーム群に含まれるかを判定し、前々回のディグリーネームBDNを「前回」に含む方の「次回」に記載されているディグリーネームが次回のディグリーネームリストNDNListに登録される。ただし、前々回のディグリーネームBDNが“I”または“Isus4”である場合には、前々回のディグリーネームBDNは「クリシェ」の両方の「前回」に含まれてしまい、「次回」を1つに決めることができないので、この場合には、両方の「次回」にともに記載されているディグリーネームを抽出して、次回のディグリーネームリストNDNListに登録するようにすればよい。
また、ステップS99の処理では、前回のディグリーネームLDNは調情報Key側の一覧表の「今回」に記載されている各ディグリーネームに該当するかどうかで判定する。
図5Bに戻り、次にCPU5は、処理をステップS19に進める。このステップS19では、ディグリーネームリストDNListに登録されている各ディグリーネームを調情報Keyに基づいてコードネームに展開し、それぞれ前記コードリストCListに登録する。ここで、ディグリーネームからコードネームへの展開は、調情報の主音をI度としてディグリーネームの度数からルートを算出することによって行う。これにより、たとえば、ディグリーネーム“IIm7”を調情報“FMaj”によって展開すると、コードネーム“Gm7”が得られる。
次にCPU5は、ノートイベントリストNListとコードリストCListに基づいて、コードを1つ選出し(ステップS20)、選出したコードを選出コードChordに記憶する(ステップS21)とともに、選出コードChordを前記自動伴奏装置9に出力する(ステップS22)。なお、上記ステップS20での「コードの選出」は、前記(12)のコード検出タイミングおよび各種ルールの設定処理で設定した前記(R2)コードの選出ルール、つまり本実施の形態では、前記(R2a)または(R2b)のいずれかに従って行われる。
さらにCPU5は、選出コードChordと、調情報Keyと、選出コードChordに対応するディグリーネームを出力結果リストRListの末尾に追加し(ステップS23)、コード検出タイミングの設定内容(設定ルール)に基づいて、次のコード検出期間の始点および終点を算出して、それぞれ始点sTimeおよび終点eTimeを更新し(ステップS24)、ノートイベントリストNList、ディグリーネームリストDNListおよびコードリストCListを初期化(クリア)する(ステップS25)。
なお本実施の形態では、入力された演奏データに対して音楽的なつながりのあるコードを検出し、検出したコードに基づいて自動伴奏を行うようにしたが、これに限らず、検出したコードに基づいて、入力された演奏データに対するハーモニー音を生成するようにしてもよい。
また本実施の形態では、出力結果リストRListの初期化は、前記図5AのステップS3でのみなされるので、自動伴奏がスタートした以降は、自動伴奏がストップしたときに、設定変更があった場合にのみなされる。つまり、出力結果リストRListの初期化は、自動伴奏を使った演奏処理が起動されている間、特別な場合を除いてなされないので、自動伴奏がスタートした以降に検出されたコードのほとんどは、登録されている。このようしたのは、説明を簡略化するために過ぎず、最新に検出されたコードを任意の所定個数、記憶するようにし、新たなコードが検出される度に更新するようにしてもよい。また、検出されたコードを記憶する場合、コードネームの形式で記憶するようにしてもよいし、その時点での調情報と対応付けたディグリーネームの形式で記憶するようにしてもよい。さらに、コードネームとディグリーネームの両方を記憶するようにしてもよい。なお、検出したコードがコードネームの形式でしか記憶されていない場合には、次回以降のコード検出時に参照する際には、その都度、調情報を用いてディグリーネームに展開するようにしてもよい。
また本実施の形態では、参照対象の演奏データについて何の処理も施さず、入力されたものをそのまま使うようにしたが、これに限らず、入力された演奏データから装飾音やミスタッチと推測される音符データを取り除いた後、コード検出を行うようにすると、コード検出の精度がさらに向上する。
さらに本実施の形態では、図3の各調におけるコードの機能とディグリーネームの対応表や、図4の各調における非機能的コード進行に登場するディグリーネームの一覧表に記載のコードの種類は、たとえばROM6内に予め設定されて記憶されているが、任意に追加登録できるかどうかには言及していなかった。任意に追加登録できるようになっていた方が好ましいが、追加登録できないようになっていてもよい。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
1…演奏操作子(入力手段),5…CPU(取得手段、参照手段、抽出手段、変換手段、選出手段、検出手段、制御手段),7…RAM(記憶手段、保存手段

Claims (5)

  1. ユーザの演奏操作に応じて演奏データを入力する入力手段と、
    演奏曲の調情報を取得する取得手段と、
    コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、
    所定の基準コードを参照する参照手段と、
    前記取得手段によって取得された調情報に基づいて、前記参照手段によって参照された基準コードの機能を割り出し、該割り出した機能から次に進むことのできる各機能を判定し、該判定した各機能を持つディグリーネームをコード候補として抽出する抽出手段と、
    前記抽出手段によって抽出されたディグリーネームを前記取得された調情報に基づいてコードネームに変換する変換手段と、
    前記指示手段によってコードの検出が指示されたときに、前記入力手段によって入力された演奏データに基づいて、前記変換手段によって変換されたコードネームの中からいずれか1つ選出する選出手段と、
    前記選出手段によって選出されたコードネームを前記参照手段が参照できるように記憶する記憶手段と
    を有することを特徴とするコード検出装置
  2. 前記演奏曲の区切りを検出する検出手段をさらに有し、
    前記抽出手段は、前記検出手段によって区切りが検出された後、コード候補抽出されたことに応じて、インターラプテッド・ケーデンスとなり得るディグリーネームも前記コード候補に追加することを特徴とする請求項1に記載のコード検出装置
  3. 前記判定対象となる機能には非機能的なコード進行テクニックが含まれ、前記抽出手段は、前記非機能的なコード進行テクニックを判定したときには、当該非機能的なコード進行テクニックに沿って進行可能なディグリーネームも前記コード候補に追加することを特徴とする請求項1または2に記載のコード検出装置
  4. 前記選出手段によって選出されたコードネームを最新のものから過去に遡って複数個保存する保存手段と、
    前記保存手段に同じ機能のコードネームが所定個続いて保存された場合には、次のコード候補の抽出に際して、当該機能を持つディグリーネームを抽出しないように前記抽出手段を制御する制御手段と
    をさらに有することを特徴とする請求項1乃至3のいずれか1項に記載のコード検出装置。
  5. コード検出方法をコンピュータに実行させるプログラムであって、
    前記コード検出方法は、
    ユーザの演奏操作に応じて演奏データを入力する入力ステップと、
    演奏曲の調情報を取得する取得ステップと、
    コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示ステップと、
    所定の基準コードを参照する参照ステップと、
    前記取得ステップによって取得された調情報に基づいて、前記参照ステップによって参照された基準コードの機能を割り出し、該割り出した機能から次に進むことのできる各機能を判定し、該判定した各機能を持つディグリーネームをコード候補として抽出する抽出ステップと、
    前記抽出ステップによって抽出されたディグリーネームを前記取得された調情報に基づいてコードネームに変換する変換ステップと、
    前記指示ステップによってコードの検出が指示されたときに、前記入力ステップによって入力された演奏データに基づいて、前記変換ステップによって変換されたコードネームの中からいずれか1つを選出する選出ステップと、
    前記選出ステップによって選出されたコードネームを前記参照手段が参照できるように記憶手段に記憶させる記憶ステップと
    を有する
    ことを特徴とするプログラム。
JP2010206563A 2010-09-15 2010-09-15 コード検出装置およびコード検出方法を実現するためのプログラム Expired - Fee Related JP5659648B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010206563A JP5659648B2 (ja) 2010-09-15 2010-09-15 コード検出装置およびコード検出方法を実現するためのプログラム
US13/218,521 US8492636B2 (en) 2010-09-15 2011-08-26 Chord detection apparatus, chord detection method, and program therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010206563A JP5659648B2 (ja) 2010-09-15 2010-09-15 コード検出装置およびコード検出方法を実現するためのプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014245776A Division JP5822187B2 (ja) 2014-12-04 2014-12-04 コード検出装置およびコード検出をコンピュータに実行させるためのプログラム

Publications (2)

Publication Number Publication Date
JP2012063502A JP2012063502A (ja) 2012-03-29
JP5659648B2 true JP5659648B2 (ja) 2015-01-28

Family

ID=45805364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010206563A Expired - Fee Related JP5659648B2 (ja) 2010-09-15 2010-09-15 コード検出装置およびコード検出方法を実現するためのプログラム

Country Status (2)

Country Link
US (1) US8492636B2 (ja)
JP (1) JP5659648B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5659648B2 (ja) * 2010-09-15 2015-01-28 ヤマハ株式会社 コード検出装置およびコード検出方法を実現するためのプログラム
GB2490877B (en) * 2011-05-11 2018-07-18 British Broadcasting Corp Processing audio data for producing metadata
GB2560458B (en) * 2011-05-11 2019-01-30 British Broadcasting Corp Processing audio data for producing metadata
US9286901B1 (en) * 2011-11-23 2016-03-15 Evernote Corporation Communication using sound
JP5790686B2 (ja) * 2013-03-25 2015-10-07 カシオ計算機株式会社 コード演奏ガイド装置、方法、およびプログラム
JP6500869B2 (ja) * 2016-09-28 2019-04-17 カシオ計算機株式会社 コード解析装置、方法、及びプログラム
JP6500870B2 (ja) * 2016-09-28 2019-04-17 カシオ計算機株式会社 コード解析装置、方法、及びプログラム
JP7190284B2 (ja) * 2018-08-28 2022-12-15 ローランド株式会社 ハーモニー生成装置およびそのプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179241A (en) * 1990-04-09 1993-01-12 Casio Computer Co., Ltd. Apparatus for determining tonality for chord progression
JP3099436B2 (ja) * 1991-07-24 2000-10-16 ヤマハ株式会社 和音検出装置および自動伴奏装置
JPH06314096A (ja) * 1993-04-30 1994-11-08 Kawai Musical Instr Mfg Co Ltd 電子楽器の前コード検出装置
US5760325A (en) * 1995-06-15 1998-06-02 Yamaha Corporation Chord detection method and apparatus for detecting a chord progression of an input melody
US6031171A (en) * 1995-07-11 2000-02-29 Yamaha Corporation Performance data analyzer
JP3591444B2 (ja) 1995-07-11 2004-11-17 ヤマハ株式会社 演奏データ分析装置
JP3637952B2 (ja) * 1999-02-08 2005-04-13 ヤマハ株式会社 コード進行検索装置および記憶媒体
JP4244133B2 (ja) * 2002-11-29 2009-03-25 パイオニア株式会社 楽曲データ作成装置及び方法
JP4203308B2 (ja) * 2002-12-04 2008-12-24 パイオニア株式会社 楽曲構造検出装置及び方法
JP4313563B2 (ja) * 2002-12-04 2009-08-12 パイオニア株式会社 楽曲検索装置及び方法
JP4199097B2 (ja) * 2003-11-21 2008-12-17 パイオニア株式会社 楽曲自動分類装置及び方法
DE102004049477A1 (de) * 2004-10-11 2006-04-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren und Vorrichtung zur harmonischen Aufbereitung einer Melodielinie
JP4823804B2 (ja) * 2006-08-09 2011-11-24 株式会社河合楽器製作所 コード名検出装置及びコード名検出用プログラム
JP5463655B2 (ja) * 2008-11-21 2014-04-09 ソニー株式会社 情報処理装置、音声解析方法、及びプログラム
JP5040927B2 (ja) * 2009-01-09 2012-10-03 ヤマハ株式会社 演奏教習装置及びプログラム
US8735709B2 (en) * 2010-02-25 2014-05-27 Yamaha Corporation Generation of harmony tone
JP5659648B2 (ja) * 2010-09-15 2015-01-28 ヤマハ株式会社 コード検出装置およびコード検出方法を実現するためのプログラム

Also Published As

Publication number Publication date
US8492636B2 (en) 2013-07-23
US20120060667A1 (en) 2012-03-15
JP2012063502A (ja) 2012-03-29

Similar Documents

Publication Publication Date Title
JP5659648B2 (ja) コード検出装置およびコード検出方法を実現するためのプログラム
EP2772904B1 (en) Apparatus and method for detecting music chords and generation of accompaniment.
JP3484986B2 (ja) 自動作曲装置、自動作曲方法および記憶媒体
JP3637775B2 (ja) メロディ生成装置と記録媒体
JP6295583B2 (ja) 音楽データ生成装置および音楽データ生成方法を実現するためのプログラム
JP2012098480A (ja) コード検出装置及びプログラム
JP5822187B2 (ja) コード検出装置およびコード検出をコンピュータに実行させるためのプログラム
JP4670686B2 (ja) コード表示装置及びプログラム
JP6604307B2 (ja) コード検出装置、コード検出プログラムおよびコード検出方法
JP5742321B2 (ja) コード検出装置およびコード検出方法を実現するためのプログラム
JP5712701B2 (ja) コード検出装置およびコード検出方法を実現するためのプログラム
JP6554826B2 (ja) 音楽データ検索装置及び音楽データ検索プログラム
JP5712702B2 (ja) コード検出装置およびコード検出方法を実現するためのプログラム
JPH05346781A (ja) 調検出装置および自動編曲装置
JP6525034B2 (ja) コード進行情報生成装置およびコード進行情報生成方法を実現するためのプログラム
JP5825449B2 (ja) コード検出装置
JP5560759B2 (ja) 電子音楽装置およびハーモニー音生成方法を実現するためのプログラム
JP5703693B2 (ja) コード検出装置及びプログラム
JP3818298B2 (ja) アベイラブル・ノート・スケール決定装置及び記録媒体
JP3565107B2 (ja) メロディ生成装置、コード進行データ作成装置及び記録媒体
JP2000066665A (ja) 自動作曲装置と記録媒体
JP4470895B2 (ja) コード表示装置及びプログラム
JP4148184B2 (ja) 自動伴奏データ生成方法を実現するためのプログラムおよび自動伴奏データ生成装置
JP5560695B2 (ja) 演奏補助装置および演奏補助方法を実現するためのプログラム
JP5560742B2 (ja) 電子音楽装置およびハーモニー音生成方法を実現するためのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140602

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: 20141104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141117

R151 Written notification of patent or utility model registration

Ref document number: 5659648

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees