JPH11327558A - 自動コード付装置 - Google Patents
自動コード付装置Info
- Publication number
- JPH11327558A JPH11327558A JP10145138A JP14513898A JPH11327558A JP H11327558 A JPH11327558 A JP H11327558A JP 10145138 A JP10145138 A JP 10145138A JP 14513898 A JP14513898 A JP 14513898A JP H11327558 A JPH11327558 A JP H11327558A
- Authority
- JP
- Japan
- Prior art keywords
- chord progression
- chord
- progression
- code
- melody
- 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.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC 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/00—Details of electrophonic musical instruments
- G10H1/0008—Associated control or indicating means
- G10H1/0025—Automatic or semi-automatic music composition, e.g. producing random music, applying rules from music theory or modifying a musical piece
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC 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/00—Details of electrophonic musical instruments
- G10H1/36—Accompaniment arrangements
- G10H1/38—Chord
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC 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/00—Aspects 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/101—Music Composition or musical creation; Tools or processes therefor
- G10H2210/111—Automatic composing, i.e. using predefined musical rules
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC 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/00—Aspects 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/571—Chords; Chord sequences
- G10H2210/576—Chord progression
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC 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
- G10H2250/00—Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
- G10H2250/005—Algorithms for electrophonic musical instruments or musical processing, e.g. for automatic composition or resource allocation
- G10H2250/011—Genetic algorithms, i.e. using computational steps analogous to biological selection, recombination and mutation on an initial population of, e.g. sounds, pieces, melodies or loops to compose or otherwise generate, e.g. evolutionary music or sound synthesis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
(57)【要約】
【課題】 コード進行生成空間が広く、かつ与えられた
メロディに対し所望の適合度をもつようなコード進行を
合成する自動コード付装置を提供する。 【解決手段】 まずコード進行の初期集団を与える(B
1)。処理対象であるリズム集団の各コード進行の評価
値として、与えられたメロディに対する適合度を算出す
る(B2)。コード進行集団に対し、遺伝的操作B4
(選択、交配、突然変異等)を行い、コード進行集団の
世代が進むにつれ、コード進行評価値(メロディ適合
値)が全体として高くなっていくように制御する。
メロディに対し所望の適合度をもつようなコード進行を
合成する自動コード付装置を提供する。 【解決手段】 まずコード進行の初期集団を与える(B
1)。処理対象であるリズム集団の各コード進行の評価
値として、与えられたメロディに対する適合度を算出す
る(B2)。コード進行集団に対し、遺伝的操作B4
(選択、交配、突然変異等)を行い、コード進行集団の
世代が進むにつれ、コード進行評価値(メロディ適合
値)が全体として高くなっていくように制御する。
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はコンピュータ等を
用いた音楽装置に関し、特に与えられたメロディに対し
コード進行を付ける自動コード付装置に関する。
用いた音楽装置に関し、特に与えられたメロディに対し
コード進行を付ける自動コード付装置に関する。
【0002】
【従来の技術】与えられたメロディに対し自動的にコー
ド進行を付ける自動コード付装置は既に知られている
(例えば、特開昭58−87593号、特開昭58−1
14097号、特開平1−296287号、特開平2−
197885号)。例えば、特開平1−296287号
に記載される自動コード付装置は、メロディを複数の区
間に分け、区間毎のメロディの音高内容に基づいて区間
メロディに対するいくつかのコード候補を生成し、時間
軸上での音楽進行規則(調性距離を尺度とする規則)を
用いて候補の1つを区間メロディに対するコードとして
決定する。
ド進行を付ける自動コード付装置は既に知られている
(例えば、特開昭58−87593号、特開昭58−1
14097号、特開平1−296287号、特開平2−
197885号)。例えば、特開平1−296287号
に記載される自動コード付装置は、メロディを複数の区
間に分け、区間毎のメロディの音高内容に基づいて区間
メロディに対するいくつかのコード候補を生成し、時間
軸上での音楽進行規則(調性距離を尺度とする規則)を
用いて候補の1つを区間メロディに対するコードとして
決定する。
【0003】
【発明が解決しようとする課題】しかしながら、従来の
自動コード付装置は、いずれも自動コード付のための諸
規則が固定の論理で構成されているため、いったんメロ
ディが決まれば、それに対するコード進行を確定的な方
法で付けるため、メロディに付けることができるコード
進行に限界があった。したがってこの発明の目的は、従
来にはない新規なアプローチによりメロディにコード進
行を付ける自動コード付装置を提供することである。更
に、この発明の目的は、コード進行が確率的プロセスを
経ながら所望のメロディ適合度をもつようなコード進行
へと進化していくような方法でメロディにコード進行を
付る自動コード付装置を提供することである。
自動コード付装置は、いずれも自動コード付のための諸
規則が固定の論理で構成されているため、いったんメロ
ディが決まれば、それに対するコード進行を確定的な方
法で付けるため、メロディに付けることができるコード
進行に限界があった。したがってこの発明の目的は、従
来にはない新規なアプローチによりメロディにコード進
行を付ける自動コード付装置を提供することである。更
に、この発明の目的は、コード進行が確率的プロセスを
経ながら所望のメロディ適合度をもつようなコード進行
へと進化していくような方法でメロディにコード進行を
付る自動コード付装置を提供することである。
【0004】
【課題を解決するための手段】上記の目的を達成するた
め、この発明によれば、(A)メロディを与えるメロデ
ィ付与手段と、(B)複数のコード進行を初期世代のコ
ード進行集団として与える初期コード進行集団付与手段
と、(C)処理対象である、ある世代のコード進行集団
(最初は初期世代のコード進行集団)から次の世代のコ
ード進行集団を生成する処理をくり返すコード進行進化
手段と、を備え、上記コード進行進化手段は、(i)処
理対象のコード進行集団の各コード進行について、上記
メロディに対する適合度を所定の評価関数に従って評価
してメロディ適合値を算出するコード進行評価手段と、
(ii)世代が進むにつれ、コード進行集団のメロディ適
合値が全体として高くなるように、処理対象のコード進
行集団に対して遺伝的操作を行う遺伝操作手段と、から
成り、更に、(D)所定の終了条件が成り立つときに上
記コード進行進化手段の動作を停止する停止手段、を備
えることを特徴とする自動コード付装置が提供される。
この構成によれば、ある世代のコード進行集団に対して
遺伝的操作(選択交配、突然変異等)を行い、かつ世代
が進むにつれ遺伝的操作の繰り返しによりコード進行集
団のメロディ適合値が全体として高くなるようにしてい
るので、所望のメロディ適合度をもつようなコード進行
を容易に得ることができる。また、コード進行集団に対
して行う遺伝的操作は確定的プロセスではなく確率的過
程であるので広いコード進行生成空間を与えることがで
きる。一構成例において、上記遺伝操作手段は処理対象
のコード進行集団におけるコード進行相互間でコード進
行の一部交換を行うコード進行交配手段を含む。更に遺
伝操作手段はコード進行交配手段の交配結果である複数
のコード進行のなかでメロディ適合値が低いコード進行
をメロディ適合値の高いコード進行に置き換える置換手
段を含む。これにより、メロディ適合値の低いコード進
行は次の世代のコード進行集団から除かれるのでコード
進行集団のメロディ適合値が全体として高くなってい
く。この置換手段の代りに、あるいはこれと組み合わせ
て、遺伝操作手段内に、処理対象のコード進行集団のコ
ード進行のなかでメロディ適合値が高いものほどコード
進行交配手段によるコード進行の一部交換のために使用
される頻度が高くなるように交配頻度を制御する手段を
設けることができる。この場合、ある世代のコード進行
集団のなかでメロディ適合値が高いコード進行ほど次世
代のコード進行集団中にその遺伝子(コード進行の要
素)が多く分配されるため、世代が進むにつれコード進
行集団のメロディ適合値は全体として高くなっていく。
遺伝操作手段は各コード進行を構成するコード進行要素
を突然変異させる手段を含み得る。上記停止手段は、処
理対象のコード進行集団のメロディ適合値が所定値を超
えたときに上記コード進行進化手段の動作を停止する手
段で構成できる。この代りに、所定の回数、遺伝操作を
繰り返した時点で動作を停止するようにしてもよい。
め、この発明によれば、(A)メロディを与えるメロデ
ィ付与手段と、(B)複数のコード進行を初期世代のコ
ード進行集団として与える初期コード進行集団付与手段
と、(C)処理対象である、ある世代のコード進行集団
(最初は初期世代のコード進行集団)から次の世代のコ
ード進行集団を生成する処理をくり返すコード進行進化
手段と、を備え、上記コード進行進化手段は、(i)処
理対象のコード進行集団の各コード進行について、上記
メロディに対する適合度を所定の評価関数に従って評価
してメロディ適合値を算出するコード進行評価手段と、
(ii)世代が進むにつれ、コード進行集団のメロディ適
合値が全体として高くなるように、処理対象のコード進
行集団に対して遺伝的操作を行う遺伝操作手段と、から
成り、更に、(D)所定の終了条件が成り立つときに上
記コード進行進化手段の動作を停止する停止手段、を備
えることを特徴とする自動コード付装置が提供される。
この構成によれば、ある世代のコード進行集団に対して
遺伝的操作(選択交配、突然変異等)を行い、かつ世代
が進むにつれ遺伝的操作の繰り返しによりコード進行集
団のメロディ適合値が全体として高くなるようにしてい
るので、所望のメロディ適合度をもつようなコード進行
を容易に得ることができる。また、コード進行集団に対
して行う遺伝的操作は確定的プロセスではなく確率的過
程であるので広いコード進行生成空間を与えることがで
きる。一構成例において、上記遺伝操作手段は処理対象
のコード進行集団におけるコード進行相互間でコード進
行の一部交換を行うコード進行交配手段を含む。更に遺
伝操作手段はコード進行交配手段の交配結果である複数
のコード進行のなかでメロディ適合値が低いコード進行
をメロディ適合値の高いコード進行に置き換える置換手
段を含む。これにより、メロディ適合値の低いコード進
行は次の世代のコード進行集団から除かれるのでコード
進行集団のメロディ適合値が全体として高くなってい
く。この置換手段の代りに、あるいはこれと組み合わせ
て、遺伝操作手段内に、処理対象のコード進行集団のコ
ード進行のなかでメロディ適合値が高いものほどコード
進行交配手段によるコード進行の一部交換のために使用
される頻度が高くなるように交配頻度を制御する手段を
設けることができる。この場合、ある世代のコード進行
集団のなかでメロディ適合値が高いコード進行ほど次世
代のコード進行集団中にその遺伝子(コード進行の要
素)が多く分配されるため、世代が進むにつれコード進
行集団のメロディ適合値は全体として高くなっていく。
遺伝操作手段は各コード進行を構成するコード進行要素
を突然変異させる手段を含み得る。上記停止手段は、処
理対象のコード進行集団のメロディ適合値が所定値を超
えたときに上記コード進行進化手段の動作を停止する手
段で構成できる。この代りに、所定の回数、遺伝操作を
繰り返した時点で動作を停止するようにしてもよい。
【0005】
【発明の実施の形態】以下、図面を参照してこの発明の
実施の形態を説明する。図1はこの発明の自動コード付
装置のハードウェア構成である。CPU1にてシステム
制御とコード進行生成処理等を行う。ROM2はプログ
ラムと固定データを記憶する。RAM3は入力データと
処理データのメモリとして使用される。入力装置4はコ
ード付けに必要なパラメータを入力するのに使用され
る。モニター5はコード進行生成の処理結果の表示や入
力の補助として使用される。
実施の形態を説明する。図1はこの発明の自動コード付
装置のハードウェア構成である。CPU1にてシステム
制御とコード進行生成処理等を行う。ROM2はプログ
ラムと固定データを記憶する。RAM3は入力データと
処理データのメモリとして使用される。入力装置4はコ
ード付けに必要なパラメータを入力するのに使用され
る。モニター5はコード進行生成の処理結果の表示や入
力の補助として使用される。
【0006】図2に自動コード付装置の全体動作を表わ
すメインフローを示す。A1でシステムを初期化した
後、定期的に入力装置4のキースキャンA2を行ってユ
ーザーの指示に従った処理を行う。即ち、入力指示A3
に対しては入力処理A4を行い、生成指示A5に対して
はコード進行生成処理A6を行い、モニター指示A7に
対してはモニター処理A8を行う。
すメインフローを示す。A1でシステムを初期化した
後、定期的に入力装置4のキースキャンA2を行ってユ
ーザーの指示に従った処理を行う。即ち、入力指示A3
に対しては入力処理A4を行い、生成指示A5に対して
はコード進行生成処理A6を行い、モニター指示A7に
対してはモニター処理A8を行う。
【0007】図3にメロディのデータ構造をmelod
y[ ][ ]として示す。メロディデータは複数のノ
ート(ノートレコード)から成り、各ノートレコードは
データ項目として、前のノート(音)からの時間デー
タ、音高データ、ベロシティデータ、ゲートタイムデー
タを有する。ノートレコードはノートポインタnpによ
り指し示され(np=0が一番目のノートを指す)、デ
ータ項目は項目ポインタipにより指し示される。即
ち、melody[np][ip]は与えられたメロデ
ィにおける、あるノートnpのあるデータ項目ipを表
している。
y[ ][ ]として示す。メロディデータは複数のノ
ート(ノートレコード)から成り、各ノートレコードは
データ項目として、前のノート(音)からの時間デー
タ、音高データ、ベロシティデータ、ゲートタイムデー
タを有する。ノートレコードはノートポインタnpによ
り指し示され(np=0が一番目のノートを指す)、デ
ータ項目は項目ポインタipにより指し示される。即
ち、melody[np][ip]は与えられたメロデ
ィにおける、あるノートnpのあるデータ項目ipを表
している。
【0008】図4にコード進行集団のデータ構造をch
o[ ][ ][ ]として示す。コード進行集団は複
数のコード進行から成り、各コード進行は複数のコード
から成り、各コードはデータ項目として、前のコードか
らの時間、ルート、タイム及びベースから成る。コード
進行はコード進行ポインタppにより指し示され(pp
=0が最初のコード進行を指す)、コードはコードポイ
ンタcpにより指し示され、データ項目は項目ポインタ
iにより指し示される。即ち、cho[pp][cp]
[i]は、コード進行集団における、あるコード進行p
pのあるコードcpのあるデータ項目iを表わしてい
る。
o[ ][ ][ ]として示す。コード進行集団は複
数のコード進行から成り、各コード進行は複数のコード
から成り、各コードはデータ項目として、前のコードか
らの時間、ルート、タイム及びベースから成る。コード
進行はコード進行ポインタppにより指し示され(pp
=0が最初のコード進行を指す)、コードはコードポイ
ンタcpにより指し示され、データ項目は項目ポインタ
iにより指し示される。即ち、cho[pp][cp]
[i]は、コード進行集団における、あるコード進行p
pのあるコードcpのあるデータ項目iを表わしてい
る。
【0009】図5にコード進行生成処理のフローチャー
トを示す。まず初期世代のコード進行集団を与える(B
1)。この初期世代のコード進行集団は乱数的に生成す
る(後述する)か、あるいはあらかじめ記憶してあるも
のであってもよい。次に各コード進行を評価してコード
進行評価値(メロディ適合値)を算出する(B2)。コ
ード進行評価B2の詳細は後述する。次にコード進行集
団に対して終了条件を検査し(B3)、終了条件を満た
さなければコード進行変形処理B4でコード進行集団に
対し遺伝的操作を行って次の世代のコード進行集団を生
成する。B3での終了条件のチェックとしては、B4の
処理を所定回数を行ったかどうかのチェック、あるい
は、処理対象のコード進行集団のコード進行評価値が所
定値を超えたかどうかの判定により行える。コード進行
集団のコード進行評価値(メロディ適合値)としては、
集団各コード進行の評価値(each_val[p
p])の総和または、平均値、あるいは、コード進行の
評価値each_val[pp]の最大値を使用でき
る。B3で終了条件が成立したら、コード進行選択処理
B5を実行して、最終世代のコード進行集団のなかから
メロディに付けるべきコード進行を決定する。これは、
例えば、最終世代のコード進行集団のなかで評価値(メ
ロディ適合値)each_val[pp]が最大のコー
ド進行を選ぶことで行われる。なお、コード進行選択処
理B5の代りに、モニター処理A8のなかで、ユーザー
が、最終世代のコード進行集団に基づいてメロディに付
けるコード進行を決定するようにしてもよい。
トを示す。まず初期世代のコード進行集団を与える(B
1)。この初期世代のコード進行集団は乱数的に生成す
る(後述する)か、あるいはあらかじめ記憶してあるも
のであってもよい。次に各コード進行を評価してコード
進行評価値(メロディ適合値)を算出する(B2)。コ
ード進行評価B2の詳細は後述する。次にコード進行集
団に対して終了条件を検査し(B3)、終了条件を満た
さなければコード進行変形処理B4でコード進行集団に
対し遺伝的操作を行って次の世代のコード進行集団を生
成する。B3での終了条件のチェックとしては、B4の
処理を所定回数を行ったかどうかのチェック、あるい
は、処理対象のコード進行集団のコード進行評価値が所
定値を超えたかどうかの判定により行える。コード進行
集団のコード進行評価値(メロディ適合値)としては、
集団各コード進行の評価値(each_val[p
p])の総和または、平均値、あるいは、コード進行の
評価値each_val[pp]の最大値を使用でき
る。B3で終了条件が成立したら、コード進行選択処理
B5を実行して、最終世代のコード進行集団のなかから
メロディに付けるべきコード進行を決定する。これは、
例えば、最終世代のコード進行集団のなかで評価値(メ
ロディ適合値)each_val[pp]が最大のコー
ド進行を選ぶことで行われる。なお、コード進行選択処
理B5の代りに、モニター処理A8のなかで、ユーザー
が、最終世代のコード進行集団に基づいてメロディに付
けるコード進行を決定するようにしてもよい。
【0010】図6に初期コード進行集団を乱数的に生成
する処理のフローチャートを示す。まず、コード進行ポ
インタppを0に初期化し(C1)、ppが所定値にな
るまで(C2)、C3以下の処理を繰り返す。C3でコ
ードポインタcpを0に初期化し、C4でメロディの長
さに相当するコード進行が得られるまで、C5以下の処
理を繰り返す。C5で、前コードからの時間データch
o[pp][cp][0]を生成する。図示のフローで
は、各コードの長さを1小節としているので、cho
[pp][cp][0]として、cp=0のときは、0
が入り、cp≠0のときは1小節に相当する時間データ
が入る。なおコード長を可変として(例えば、コード長
として1小節の長さ、1/2小節の長さ、1/4小節の
長さのいずれかをとり得るとし、1小節当りのコード数
が1、2または4となるようにする)、乱数的に各コー
ドの長さを決めるようにしてもよい。次にC6でコード
cpのルートcho[pp][cp][1]を乱数的に
生成し、C7でコードのタイプを乱数的に生成し、C8
でコードのベースを乱数的に生成し、C9でコードポイ
ンタcpをインクリメントする。メロディの長さに相当
するコード進行が得られたら(C4でno)、コード進
行ポインタppをインクリメントする(C10)。
する処理のフローチャートを示す。まず、コード進行ポ
インタppを0に初期化し(C1)、ppが所定値にな
るまで(C2)、C3以下の処理を繰り返す。C3でコ
ードポインタcpを0に初期化し、C4でメロディの長
さに相当するコード進行が得られるまで、C5以下の処
理を繰り返す。C5で、前コードからの時間データch
o[pp][cp][0]を生成する。図示のフローで
は、各コードの長さを1小節としているので、cho
[pp][cp][0]として、cp=0のときは、0
が入り、cp≠0のときは1小節に相当する時間データ
が入る。なおコード長を可変として(例えば、コード長
として1小節の長さ、1/2小節の長さ、1/4小節の
長さのいずれかをとり得るとし、1小節当りのコード数
が1、2または4となるようにする)、乱数的に各コー
ドの長さを決めるようにしてもよい。次にC6でコード
cpのルートcho[pp][cp][1]を乱数的に
生成し、C7でコードのタイプを乱数的に生成し、C8
でコードのベースを乱数的に生成し、C9でコードポイ
ンタcpをインクリメントする。メロディの長さに相当
するコード進行が得られたら(C4でno)、コード進
行ポインタppをインクリメントする(C10)。
【0011】上述したコード進行評価B2は、コード集
団の各コード進行について、与えられたメロディに対す
る適合度を所定の評価関数に従って評価してコード進行
評価値(メロディ適合値)を算出するものである。コー
ド進行評価B2の例を図7にノートタイプ評価として示
す。図7に示すノートタイプ評価のフローは、調性和声
の面から、コード進行のメロディ適合度を評価するもの
である。まず、D1でメロディのノートポインタnpと
メロディ適合度(評価値)のアキュムレータvalを0
に初期化する。そしてD2でメロディの最後のノートま
でコード進行ppの評価処理が完了するまで(np<メ
ロディの音数の間)D3〜D14のループを繰り返す。
D3で現在のノートnpに時間的に対応するコードcp
をコード進行ppからサーチし、D4で現在のノートn
pに時間的に対応するキーkeyをキー進行からサーチ
する。
団の各コード進行について、与えられたメロディに対す
る適合度を所定の評価関数に従って評価してコード進行
評価値(メロディ適合値)を算出するものである。コー
ド進行評価B2の例を図7にノートタイプ評価として示
す。図7に示すノートタイプ評価のフローは、調性和声
の面から、コード進行のメロディ適合度を評価するもの
である。まず、D1でメロディのノートポインタnpと
メロディ適合度(評価値)のアキュムレータvalを0
に初期化する。そしてD2でメロディの最後のノートま
でコード進行ppの評価処理が完了するまで(np<メ
ロディの音数の間)D3〜D14のループを繰り返す。
D3で現在のノートnpに時間的に対応するコードcp
をコード進行ppからサーチし、D4で現在のノートn
pに時間的に対応するキーkeyをキー進行からサーチ
する。
【0012】次のD5で、現在のキーkeyとコードポ
インタcpの指すコードの情報(ルートとタイプ)に基
づき、ノートポインタnpの指すノートの音高pitc
hの音種(ノートタイプ)ntを分類する。このため
に、コードトーンのデータベース、テンションノートの
データベース、及びスケールノートのデータベースが使
用される。コードトーンのデータベースはルートがCの
ときのコードトーンをコードタイプ別に記憶し、テンシ
ョンノートのデータベースはルートがCのときのテンシ
ョンノートをコードタイプ別に記憶し、スケールノート
のデータベースはキーがCのときのスケールノートを記
憶している。例えばコードトーンのデータベースは、c
t[type][pitch]でデータ(“1”ならコ
ードトーン、“0”ならノンコードトーン)を参照で
き、ノートポインタnpの指すノートの音高pitch
(=melody[np][1])が現在のコードのル
ートroot(=cho[pp][cp][1])、タ
イプtype(=cho[pp][cp][2])のと
き、コードトーンであるかどうかはct[type]
[(pitch+12−root)mod12]を調
べ、“1”なら“コードトーン”、“0”なら“ノンコ
ードトーン”である。同様にテンションノートのデータ
ベースはtn[type][pitch]でデータを参
照でき、現在のノート(音高はpitch)が現在のコ
ード(ルート=root、タイプ=type)において
テンションノートかどうかは、tn[type][(p
itch+12−root)mod12]が“1”なら
“テンションノート”、“0”なら“ノンテンションノ
ート”となる。同様にスケールノートのデータベースは
sn[pitch]でデータを参照でき、現在のノート
(音高はpitchが現在のキーkeyにおいてスケー
ルノートかどうかは、sn[(pitch+12−ke
y)mod12]が“1”なら“スケールノート”、
“0”なら“ノンスケールノート”となる。D5の分類
結果であるノートタイプntは、コードトーン(cho
rd)、アベイラベルノート(available)、
スケールノート(scale)、テンションノート(t
ension)、アボイドノート(avoid)のいず
れかになる。コードトーンとなるのはコードトーンのデ
ータベースを調べた結果が“コードトーン”のときであ
る。アベイラベルノートと分類されるのは、テンション
ノートのデータベースのサーチ結果が“テンションノー
ト”であり、スケールデータベースのサーチ結果が“ス
ケールノート”の場合である。スケールノートと分類さ
れるのは“テンションノート”でなく“スケールノー
ト”の場合であり、テンションノートと分類されるのは
“スケールノート”でなく“テンションノート”の場合
である。コードトーン、アベイラベルノート、スケール
ノート、テンションノートのいずれにも分類されないノ
ートはアボイドノートと分類される。
インタcpの指すコードの情報(ルートとタイプ)に基
づき、ノートポインタnpの指すノートの音高pitc
hの音種(ノートタイプ)ntを分類する。このため
に、コードトーンのデータベース、テンションノートの
データベース、及びスケールノートのデータベースが使
用される。コードトーンのデータベースはルートがCの
ときのコードトーンをコードタイプ別に記憶し、テンシ
ョンノートのデータベースはルートがCのときのテンシ
ョンノートをコードタイプ別に記憶し、スケールノート
のデータベースはキーがCのときのスケールノートを記
憶している。例えばコードトーンのデータベースは、c
t[type][pitch]でデータ(“1”ならコ
ードトーン、“0”ならノンコードトーン)を参照で
き、ノートポインタnpの指すノートの音高pitch
(=melody[np][1])が現在のコードのル
ートroot(=cho[pp][cp][1])、タ
イプtype(=cho[pp][cp][2])のと
き、コードトーンであるかどうかはct[type]
[(pitch+12−root)mod12]を調
べ、“1”なら“コードトーン”、“0”なら“ノンコ
ードトーン”である。同様にテンションノートのデータ
ベースはtn[type][pitch]でデータを参
照でき、現在のノート(音高はpitch)が現在のコ
ード(ルート=root、タイプ=type)において
テンションノートかどうかは、tn[type][(p
itch+12−root)mod12]が“1”なら
“テンションノート”、“0”なら“ノンテンションノ
ート”となる。同様にスケールノートのデータベースは
sn[pitch]でデータを参照でき、現在のノート
(音高はpitchが現在のキーkeyにおいてスケー
ルノートかどうかは、sn[(pitch+12−ke
y)mod12]が“1”なら“スケールノート”、
“0”なら“ノンスケールノート”となる。D5の分類
結果であるノートタイプntは、コードトーン(cho
rd)、アベイラベルノート(available)、
スケールノート(scale)、テンションノート(t
ension)、アボイドノート(avoid)のいず
れかになる。コードトーンとなるのはコードトーンのデ
ータベースを調べた結果が“コードトーン”のときであ
る。アベイラベルノートと分類されるのは、テンション
ノートのデータベースのサーチ結果が“テンションノー
ト”であり、スケールデータベースのサーチ結果が“ス
ケールノート”の場合である。スケールノートと分類さ
れるのは“テンションノート”でなく“スケールノー
ト”の場合であり、テンションノートと分類されるのは
“スケールノート”でなく“テンションノート”の場合
である。コードトーン、アベイラベルノート、スケール
ノート、テンションノートのいずれにも分類されないノ
ートはアボイドノートと分類される。
【0013】D6で分類されたノートタイプntを識別
し、コードトーン(chord)ならV=4、アベイラ
ベルノート(available)ならV=3、スケー
ルノート(scale)ならV=2、テンションノート
(tension)ならV=1、アボイドノート(av
oid)ならV=0として評価点Vをつける(D7〜D
11)。D12でV=V×melody[np][3]
を実行して、ノートタイプごとの評価点にノートnpの
ゲートタイム(音長)を掛ける。D13でval=va
l+Vを実行して、評価値を累算する。D14でノート
ポインタnpをインクリメントしてD2に戻る。D2で
np<メロディの音数でなくなったら、D15に進み、
each_val[pp]=valを実行して、コード
進行ppの評価値(メロディ適合値)を得る。
し、コードトーン(chord)ならV=4、アベイラ
ベルノート(available)ならV=3、スケー
ルノート(scale)ならV=2、テンションノート
(tension)ならV=1、アボイドノート(av
oid)ならV=0として評価点Vをつける(D7〜D
11)。D12でV=V×melody[np][3]
を実行して、ノートタイプごとの評価点にノートnpの
ゲートタイム(音長)を掛ける。D13でval=va
l+Vを実行して、評価値を累算する。D14でノート
ポインタnpをインクリメントしてD2に戻る。D2で
np<メロディの音数でなくなったら、D15に進み、
each_val[pp]=valを実行して、コード
進行ppの評価値(メロディ適合値)を得る。
【0014】図7のフローは、あるコード進行ppの評
価値(メロディ適合値)を算出するように示されてい
る。したがってコード進行集団のすべてのコード進行を
評価するには、図7のフローに外側のループを設け、コ
ード進行ポインタppをpp=0からpp=(PN−
1)(ここにPNはコード進行集団のコード進行の数)
まで動かして、図7の処理を繰り返えせばよい。
価値(メロディ適合値)を算出するように示されてい
る。したがってコード進行集団のすべてのコード進行を
評価するには、図7のフローに外側のループを設け、コ
ード進行ポインタppをpp=0からpp=(PN−
1)(ここにPNはコード進行集団のコード進行の数)
まで動かして、図7の処理を繰り返えせばよい。
【0015】コード進行変形処理B4(遺伝的操作)に
ついて以下詳述する。図8はコード進行変形処理B4の
一部であるコード進行の一部交換(コード進行交配)の
フローチャートである。このコード進行の一部交換処理
では、処理対象のコード進行集団から、コード進行を2
つずつ選び出し、対応するコード進行間で参照番号10
0に示すように、その内容を一部交換(クロスオーバ
ー)する。なお、図では2点クロスオーバーとなってい
るが、これには限られない。まず、コード進行の対をつ
くるために、参照元フラグpair_flag[]を
“0”に初期化し(E1)、参照先pair[pp]を
ランダムに決定し(E2)、その都度、重復を避けるた
めに参照元フラグをオンにする。コード進行集団のコピ
ーをバッファbuf[ ][ ][ ]にとり(E
3)、クロスオーバーE4を実行して、各コード進行対
について2点クロスオーバーを実行する。
ついて以下詳述する。図8はコード進行変形処理B4の
一部であるコード進行の一部交換(コード進行交配)の
フローチャートである。このコード進行の一部交換処理
では、処理対象のコード進行集団から、コード進行を2
つずつ選び出し、対応するコード進行間で参照番号10
0に示すように、その内容を一部交換(クロスオーバ
ー)する。なお、図では2点クロスオーバーとなってい
るが、これには限られない。まず、コード進行の対をつ
くるために、参照元フラグpair_flag[]を
“0”に初期化し(E1)、参照先pair[pp]を
ランダムに決定し(E2)、その都度、重復を避けるた
めに参照元フラグをオンにする。コード進行集団のコピ
ーをバッファbuf[ ][ ][ ]にとり(E
3)、クロスオーバーE4を実行して、各コード進行対
について2点クロスオーバーを実行する。
【0016】図9は参照先決定E2の詳細フローであ
る。まずppと対に参加したコード進行のカウンタcを
“0”に初期化し(F1)、pair_flag[p
p]を“1”にオンする(F2)。次に0〜PN−C−
2の範囲で乱数RND(整数値)を発生し、ペアになっ
ていないコード進行(pair_flag[ ]が
“0”になっているコード進行)のなかでRNDに対応
するコード進行を見つけ出し、ppに対して対とすべき
参照先のコード進行pair[pp]を決め、そのフラ
グをオンにする(F3〜F9)。1つの対がきまったの
でカウンタcを2インクリメントしてPNに達したかど
うかチェックする(F10、F11)。達してなけれ
ば、まだ決定すべき対が残っているので、対の片方(参
照元)となるコード進行ppを決め(F12、F1
3)、F2に戻る。
る。まずppと対に参加したコード進行のカウンタcを
“0”に初期化し(F1)、pair_flag[p
p]を“1”にオンする(F2)。次に0〜PN−C−
2の範囲で乱数RND(整数値)を発生し、ペアになっ
ていないコード進行(pair_flag[ ]が
“0”になっているコード進行)のなかでRNDに対応
するコード進行を見つけ出し、ppに対して対とすべき
参照先のコード進行pair[pp]を決め、そのフラ
グをオンにする(F3〜F9)。1つの対がきまったの
でカウンタcを2インクリメントしてPNに達したかど
うかチェックする(F10、F11)。達してなけれ
ば、まだ決定すべき対が残っているので、対の片方(参
照元)となるコード進行ppを決め(F12、F1
3)、F2に戻る。
【0017】図10はクロスオーバーE4の詳細フロー
である。まずppとカウンタc(ここではクロスオーバ
ーを実行したコード進行のカウンタ)を“0”に初期化
する(G1)。0〜CN−1(ここにCNはコード進行
のコード数)の範囲で2つの異なる乱数RND1、RN
D2を生成し、小さい方を交配のスタート位置STAR
T、大きい方を交配のエンド位置ENDとしてきめる
(G2〜G4)。コードポインタcpをスタート位置S
TARTに置き、スタート位置STARTからエンド位
置ENDまでの間で、参照元コード進行のコード進行デ
ータと参照先コード進行のコード進行データとをバッフ
ァを用いて交換する(G5〜G11)。
である。まずppとカウンタc(ここではクロスオーバ
ーを実行したコード進行のカウンタ)を“0”に初期化
する(G1)。0〜CN−1(ここにCNはコード進行
のコード数)の範囲で2つの異なる乱数RND1、RN
D2を生成し、小さい方を交配のスタート位置STAR
T、大きい方を交配のエンド位置ENDとしてきめる
(G2〜G4)。コードポインタcpをスタート位置S
TARTに置き、スタート位置STARTからエンド位
置ENDまでの間で、参照元コード進行のコード進行デ
ータと参照先コード進行のコード進行データとをバッフ
ァを用いて交換する(G5〜G11)。
【0018】コードポインタcpがエンド位置ENDを
超えれば(G8でYES)、1つのコード進行対につい
てコード進行の2点クロスオーバーが完了したことにな
るのでこのコード進行対のフラグをオフ“0”にし(G
9)、カウンタcを2インクリメントし、全部実行した
かどうか見(G10、G11)、クロスオーバーを実行
していないコード進行対が残っていれば、次の参照元コ
ード進行ppを選び(G12、G13)、G2に戻る。
超えれば(G8でYES)、1つのコード進行対につい
てコード進行の2点クロスオーバーが完了したことにな
るのでこのコード進行対のフラグをオフ“0”にし(G
9)、カウンタcを2インクリメントし、全部実行した
かどうか見(G10、G11)、クロスオーバーを実行
していないコード進行対が残っていれば、次の参照元コ
ード進行ppを選び(G12、G13)、G2に戻る。
【0019】図11は、コード進行変形処理B4(遺伝
的操作)のなかで行われるコード進行の取捨選択処理2
0のフローチャートである。このコード進行の取捨選択
処理20はコード進行交配(例えば、図8のコード進行
の一部交換処理10)の後に行うのが好ましいが、遺伝
的操作B4の任意の段階で行ってもよい。以下では、コ
ード進行交配の後に、この取捨選択処理20を行うとし
て説明する。この場合、コード進行交配によって得られ
たコード進行集団の各コード進行のコード進行評価値
(メロディ適合値)を算出する(H1)。そして、コー
ド進行集団を形成する複数のコード進行のなかで評価値
が最大のコード進行と最小のコード進行とを求め(H
2、H3)、評価値が最小のコード進行を最大のコード
進行に置き換える(H4)。なお、最大、最小には限ら
ず、評価値が高いコード進行と低いコード進行をそれぞ
れ複数選び(例えば、第1から第N番目までの高いコー
ド進行と第1から第N番目までの低いコード進行を選
び)、低いコード進行のデータを高いコード進行のデー
タで置き換えるようにしてもよい。
的操作)のなかで行われるコード進行の取捨選択処理2
0のフローチャートである。このコード進行の取捨選択
処理20はコード進行交配(例えば、図8のコード進行
の一部交換処理10)の後に行うのが好ましいが、遺伝
的操作B4の任意の段階で行ってもよい。以下では、コ
ード進行交配の後に、この取捨選択処理20を行うとし
て説明する。この場合、コード進行交配によって得られ
たコード進行集団の各コード進行のコード進行評価値
(メロディ適合値)を算出する(H1)。そして、コー
ド進行集団を形成する複数のコード進行のなかで評価値
が最大のコード進行と最小のコード進行とを求め(H
2、H3)、評価値が最小のコード進行を最大のコード
進行に置き換える(H4)。なお、最大、最小には限ら
ず、評価値が高いコード進行と低いコード進行をそれぞ
れ複数選び(例えば、第1から第N番目までの高いコー
ド進行と第1から第N番目までの低いコード進行を選
び)、低いコード進行のデータを高いコード進行のデー
タで置き換えるようにしてもよい。
【0020】コード進行の取捨選択処理20を遺伝的操
作B4のなかに組み込むことにより、後世代のコード進
行集団ではコード進行評価値(メロディ適合値)の低い
コード進行の数が減り、コード進行評価値の高いコード
進行の数が増えるので、遺伝的操作B4を繰り返すにつ
れ、コード進行集団のコード進行評価値(メロディ適合
値)を全体として高めていくことができる。上述したコ
ード進行の一部交換10では、処理対象のコード進行集
団のどのコード進行も等しく選択されてクロスオーバー
に参加した(交配のために使用された)。この代りに、
あるいはこれと組み合わせて、交配のために選択される
コード進行がコード進行の評価値(メロディ適合値)に
依存するような方式が考えられる。例えば、処理対象の
コード進行集団のコード進行のなかでコード進行評価値
(メロディ適合値)の高いものほど交配(クロスオーバ
ー)のために使用される頻度が高くなるように制御す
る。
作B4のなかに組み込むことにより、後世代のコード進
行集団ではコード進行評価値(メロディ適合値)の低い
コード進行の数が減り、コード進行評価値の高いコード
進行の数が増えるので、遺伝的操作B4を繰り返すにつ
れ、コード進行集団のコード進行評価値(メロディ適合
値)を全体として高めていくことができる。上述したコ
ード進行の一部交換10では、処理対象のコード進行集
団のどのコード進行も等しく選択されてクロスオーバー
に参加した(交配のために使用された)。この代りに、
あるいはこれと組み合わせて、交配のために選択される
コード進行がコード進行の評価値(メロディ適合値)に
依存するような方式が考えられる。例えば、処理対象の
コード進行集団のコード進行のなかでコード進行評価値
(メロディ適合値)の高いものほど交配(クロスオーバ
ー)のために使用される頻度が高くなるように制御す
る。
【0021】この例を図12に評価値による対決定30
として示す。まず、各コード進行のコード進行評価値e
ach_val[pp]を取り込み(I1)、その総和
を算出して、コード進行集団の評価合計値Vとする(I
2)。そして、対を決定したコード進行のカウンタcを
“0”に初期化する(I3)。この後、I4で0〜Vの
範囲で2つの乱数RND1、RND2(例えば実数値)
を発生させ、RND1からコード進行ppを決めてそれ
を対の一方mmate[c]とし(I5、I6)、RN
D2からコード進行ppを決めてそれを対の他方fma
te[c]とする(I7、I8)。
として示す。まず、各コード進行のコード進行評価値e
ach_val[pp]を取り込み(I1)、その総和
を算出して、コード進行集団の評価合計値Vとする(I
2)。そして、対を決定したコード進行のカウンタcを
“0”に初期化する(I3)。この後、I4で0〜Vの
範囲で2つの乱数RND1、RND2(例えば実数値)
を発生させ、RND1からコード進行ppを決めてそれ
を対の一方mmate[c]とし(I5、I6)、RN
D2からコード進行ppを決めてそれを対の他方fma
te[c]とする(I7、I8)。
【0022】乱数RND1(またはRND2)からコー
ド進行ppを決める処理I5、I7の詳細は図13に示
す通りである。まず、RND1またはRND2をrnd
に代入し(J1)、コード進行ポインタppとVold
を“0”に初期化する(J2、J3)。J4で、 Vnew=Vold+each_val[pp] により、Vnewを求め、乱数rndがVoldとVn
ewの間に入っているかどうか、即ち、 Vold≦rnd<Vnew かどうかをチェックし(J5)、入っていれば、I6ま
たはI8へリターンし、入ってなければVoldにVn
ewを代入し(J6)、コード進行ポインタppをイン
クリメントして(J7)J4へ戻る。
ド進行ppを決める処理I5、I7の詳細は図13に示
す通りである。まず、RND1またはRND2をrnd
に代入し(J1)、コード進行ポインタppとVold
を“0”に初期化する(J2、J3)。J4で、 Vnew=Vold+each_val[pp] により、Vnewを求め、乱数rndがVoldとVn
ewの間に入っているかどうか、即ち、 Vold≦rnd<Vnew かどうかをチェックし(J5)、入っていれば、I6ま
たはI8へリターンし、入ってなければVoldにVn
ewを代入し(J6)、コード進行ポインタppをイン
クリメントして(J7)J4へ戻る。
【0023】図12に戻り、I9で対決定コード進行カ
ウンタcを2インクリメントし、また決定(選択)すべ
き対が残っているかどうかチェックし(I10)、残っ
ておればI4へリターンする。したがって、評価値によ
る対決定処理30によれば、コード進行集団のなかの各
コード進行はそのコード進行評価値、即ちメロディ適合
値each_val[pp]に応じた頻度で対に(mm
ate[ ]またはfmate[ ]として)参加する
ことになる。
ウンタcを2インクリメントし、また決定(選択)すべ
き対が残っているかどうかチェックし(I10)、残っ
ておればI4へリターンする。したがって、評価値によ
る対決定処理30によれば、コード進行集団のなかの各
コード進行はそのコード進行評価値、即ちメロディ適合
値each_val[pp]に応じた頻度で対に(mm
ate[ ]またはfmate[ ]として)参加する
ことになる。
【0024】図14は、評価値による対決定処理30の
後実行されるクロスオーバー(交配)40のフローチャ
ートである(ただし前処理として、図8のE3で行った
ように各コード進行のコピーをバッファにとってお
く)。まずppとcを“0”に初期化する(K1)。0
〜CN−1(ここにCNはコード進行のコード数)の範
囲で2つの異なる乱数RND1、RND2(整数値)を
発生させ、小さい方を交配の開始位置START、大き
い方を交配の終了位置ENDとする(K2〜K4)。K
5〜K14において、コード進行対であるmmate
[c]とfmate[c]との間で、開始位置STAR
Tから終了位置ENDまでの範囲でコード進行データの
交換(交配)を行って、交配の結果をcho[pp]
[cp][ ]とcho[pp+1][cp][ ]と
して格納している。
後実行されるクロスオーバー(交配)40のフローチャ
ートである(ただし前処理として、図8のE3で行った
ように各コード進行のコピーをバッファにとってお
く)。まずppとcを“0”に初期化する(K1)。0
〜CN−1(ここにCNはコード進行のコード数)の範
囲で2つの異なる乱数RND1、RND2(整数値)を
発生させ、小さい方を交配の開始位置START、大き
い方を交配の終了位置ENDとする(K2〜K4)。K
5〜K14において、コード進行対であるmmate
[c]とfmate[c]との間で、開始位置STAR
Tから終了位置ENDまでの範囲でコード進行データの
交換(交配)を行って、交配の結果をcho[pp]
[cp][ ]とcho[pp+1][cp][ ]と
して格納している。
【0025】詳細には、コードポインタcpが 0≦cp<START, または END<cp≦NBEAT−1 のときは、 cho[pp][cp][ ]=buf[mmate
[c]][cp][] cho[pp+1][cp][ ]=buf[fmat
e[c]][cp][ ] により、バッファ上から、コード進行mmate
[c]、コードポインタcpにあるデータをコード進行
集団メモリのコード進行pp、コードポインタcpのデ
ータcho[pp][cp][ ]として取り込み、バ
ッファ上からコード進行fmate[c]、コードポイ
ンタcpにあるデータをコード進行集団メモリのコード
進行(pp+1)、コードポインタcpのデータcho
[pp+1][cp][ ]として取り込む(K5〜K
8、K12〜K14)。
[c]][cp][] cho[pp+1][cp][ ]=buf[fmat
e[c]][cp][ ] により、バッファ上から、コード進行mmate
[c]、コードポインタcpにあるデータをコード進行
集団メモリのコード進行pp、コードポインタcpのデ
ータcho[pp][cp][ ]として取り込み、バ
ッファ上からコード進行fmate[c]、コードポイ
ンタcpにあるデータをコード進行集団メモリのコード
進行(pp+1)、コードポインタcpのデータcho
[pp+1][cp][ ]として取り込む(K5〜K
8、K12〜K14)。
【0026】一方、コードポインタcpが、 START≦cp≦END のときは、 cho[pp][cp][ ]=buf[fmate
[c]][cp][] cho[pp+1][cp][ ]=buf[mmat
e[c]][cp][ ] により、データcho[pp][cp][ ]の取込先
(ソース)をmmate[c]からではなくfmate
[c]から取り込み、データcho[pp+1][c
p][ ]の取込先をfmate[c]からではなくm
mate[c]から取り込むことにより、コード進行デ
ータのクロスオーバーを実行している。
[c]][cp][] cho[pp+1][cp][ ]=buf[mmat
e[c]][cp][ ] により、データcho[pp][cp][ ]の取込先
(ソース)をmmate[c]からではなくfmate
[c]から取り込み、データcho[pp+1][c
p][ ]の取込先をfmate[c]からではなくm
mate[c]から取り込むことにより、コード進行デ
ータのクロスオーバーを実行している。
【0027】親のコード進行対mmate[c]とfm
ate[c]との間でのクロスオーバーが完了すると
(1対の子のコード進行が生成されると)cp=CNと
なるので(K12でNO)、cとppを2インクリメン
トし(K15)、全ての対についてクロスオーバーが完
了した(c=PN)かどうか調べ(K16)、残ってお
ればK2にリターンする。このように、評価値に比例す
る対決定(選択)処理30と、対間でのコード進行のク
ロスオーバー40を実行することにより、子世代のコー
ド進行集団には、親世代のコード進行集団のなかでコー
ド進行評価値(メロディ適合値)の高いコード進行ほど
その遺伝子(コード進行要素)が広く伝搬するので、子
世代あるいは後世代のコード進行集団のコード進行評価
値(メロディ適合値)は高くなっていく。
ate[c]との間でのクロスオーバーが完了すると
(1対の子のコード進行が生成されると)cp=CNと
なるので(K12でNO)、cとppを2インクリメン
トし(K15)、全ての対についてクロスオーバーが完
了した(c=PN)かどうか調べ(K16)、残ってお
ればK2にリターンする。このように、評価値に比例す
る対決定(選択)処理30と、対間でのコード進行のク
ロスオーバー40を実行することにより、子世代のコー
ド進行集団には、親世代のコード進行集団のなかでコー
ド進行評価値(メロディ適合値)の高いコード進行ほど
その遺伝子(コード進行要素)が広く伝搬するので、子
世代あるいは後世代のコード進行集団のコード進行評価
値(メロディ適合値)は高くなっていく。
【0028】図15は遺伝的操作であるコード進行変形
処理B4のなかで行われるコード進行突然変異50のフ
ローチャートである。コード進行突然変異50はコード
進行変形処理B4のなかの任意の段階で行うことができ
る。コード進行突然変異50では、各コード進行におけ
るコードのデータを確率的に変化させている。特に、図
の例では、コードのデータ(時間値、ルート、タイプ及
びベース)のうち、ルート、タイプ、ベースを確率的に
変化させている。まず、コード進行ポインタppを
“0”に初期化し(L1)、ppがPNに達するまで
(L2)、L2〜L12のループ処理を行う。L3でコ
ードポインタcpを“0”に初期化しcpがCNに達す
るまで(L4)、ループ処理L4〜L11を行い、cp
=CNになればコード進行ポインタppを次に進める
(L12)。
処理B4のなかで行われるコード進行突然変異50のフ
ローチャートである。コード進行突然変異50はコード
進行変形処理B4のなかの任意の段階で行うことができ
る。コード進行突然変異50では、各コード進行におけ
るコードのデータを確率的に変化させている。特に、図
の例では、コードのデータ(時間値、ルート、タイプ及
びベース)のうち、ルート、タイプ、ベースを確率的に
変化させている。まず、コード進行ポインタppを
“0”に初期化し(L1)、ppがPNに達するまで
(L2)、L2〜L12のループ処理を行う。L3でコ
ードポインタcpを“0”に初期化しcpがCNに達す
るまで(L4)、ループ処理L4〜L11を行い、cp
=CNになればコード進行ポインタppを次に進める
(L12)。
【0029】L5〜L10がコードポインタcpの指す
コードのデータ内容の突然変異処理である。即ち、ルー
トを変更すべきときは(L5でYES)、コードのルー
トcho[pp][cp][1]を乱数により変更し
(L6)、タイプを変更すべきときは(L7でYE
S)、コードのタイプcho[pp][cp][2]を
乱数により変更し(L8)、ベースを変更すべきときは
(L9でYES)、コードのベースcho[pp][c
p][3]を乱数により変更する。コード内容の突然変
異処理の後、コードポインタcpを次に進め(L1
1)、L4へ戻る。
コードのデータ内容の突然変異処理である。即ち、ルー
トを変更すべきときは(L5でYES)、コードのルー
トcho[pp][cp][1]を乱数により変更し
(L6)、タイプを変更すべきときは(L7でYE
S)、コードのタイプcho[pp][cp][2]を
乱数により変更し(L8)、ベースを変更すべきときは
(L9でYES)、コードのベースcho[pp][c
p][3]を乱数により変更する。コード内容の突然変
異処理の後、コードポインタcpを次に進め(L1
1)、L4へ戻る。
【0030】図16はL5、L7、またはL9における
コードのデータ項目を変更すべきかどうかを決める変更
チェックのフローチャートである。0から(REF−
1)の範囲で乱数(整数値)RNDを発生させRND=
0なら“変更する”と決定し、RND≠0なら“変更し
ない”と決定している(M1、M2)。ここにRND=
0は1/REFの確率で発生する(REFは所定の整数
値)。上述したように、コード進行の各コードの長さを
可変とし、例えば、1小節につき1、2または4つのコ
ードをもたせることができる。このようなコード長可変
方式の場合、コード進行の突然変異処理の一部として、
コード長変更処理を設けることができる。
コードのデータ項目を変更すべきかどうかを決める変更
チェックのフローチャートである。0から(REF−
1)の範囲で乱数(整数値)RNDを発生させRND=
0なら“変更する”と決定し、RND≠0なら“変更し
ない”と決定している(M1、M2)。ここにRND=
0は1/REFの確率で発生する(REFは所定の整数
値)。上述したように、コード進行の各コードの長さを
可変とし、例えば、1小節につき1、2または4つのコ
ードをもたせることができる。このようなコード長可変
方式の場合、コード進行の突然変異処理の一部として、
コード長変更処理を設けることができる。
【0031】図17と18にコード長変更処理のフロー
チャートを参照番号60として示す。まずコード進行ポ
インタppを0に初期化する(N1)。N2でpp<P
N(PNはコード進行集団のコード進行の数)なら、N
3〜N30において、コード進行ppについてコード長
変更処理を行う。まず、cho[pp][ ][ ]上
の時間データのフォーマットは通常は前コードからの時
間値(図4参照)であるが、コード長変更処理では現コ
ードの長さを用いるので、このための時間データフォー
マットの変換を行う(N3)。N4で小節ポインタba
rを0に初期化し、cho[pp][ ][ ]のコー
ドポインタcpとバッファbuf[pp][ ][ ]
用のコードポインタcp2を0に初期化する。以下、説
明するようにバッファbuf[pp][ ][]はコー
ド長変更処理したコード進行ppのデータを一時的にと
り込むためのものである。
チャートを参照番号60として示す。まずコード進行ポ
インタppを0に初期化する(N1)。N2でpp<P
N(PNはコード進行集団のコード進行の数)なら、N
3〜N30において、コード進行ppについてコード長
変更処理を行う。まず、cho[pp][ ][ ]上
の時間データのフォーマットは通常は前コードからの時
間値(図4参照)であるが、コード長変更処理では現コ
ードの長さを用いるので、このための時間データフォー
マットの変換を行う(N3)。N4で小節ポインタba
rを0に初期化し、cho[pp][ ][ ]のコー
ドポインタcpとバッファbuf[pp][ ][ ]
用のコードポインタcp2を0に初期化する。以下、説
明するようにバッファbuf[pp][ ][]はコー
ド長変更処理したコード進行ppのデータを一時的にと
り込むためのものである。
【0032】図示のフローでは、小節単位で小節のコー
ド数を変更可能にしている。このために、まずN5でc
ho[pp][ ][ ]からbar小節にあるコード
数をカウントし、それをOLDCNTとする。次にN6
でbar小節のコード数を変更すべきかどうかを図16
のような方法で確率的に決定する。変更すべきときは、
乱数RND(0か1か2の値をとる)を発生させ、RN
D=0なら、bar小節のコード数を1(NEWCNT
=1)、コード長を1小節(TIME=“1小節”)と
し、RND=1ならbar小節のコード数を2(NEW
CNT=2)、コード長を1/2小節(TIME=“1
/2小節”)とし、RND=2ならコード数を4(NE
WCNT=4)、コード長を1/4小節(TIME=
“1/4小節”)とする(N8〜N14)。
ド数を変更可能にしている。このために、まずN5でc
ho[pp][ ][ ]からbar小節にあるコード
数をカウントし、それをOLDCNTとする。次にN6
でbar小節のコード数を変更すべきかどうかを図16
のような方法で確率的に決定する。変更すべきときは、
乱数RND(0か1か2の値をとる)を発生させ、RN
D=0なら、bar小節のコード数を1(NEWCNT
=1)、コード長を1小節(TIME=“1小節”)と
し、RND=1ならbar小節のコード数を2(NEW
CNT=2)、コード長を1/2小節(TIME=“1
/2小節”)とし、RND=2ならコード数を4(NE
WCNT=4)、コード長を1/4小節(TIME=
“1/4小節”)とする(N8〜N14)。
【0033】NEWCNTとOLDCNTを比較し(N
15)、等しくなければ、N16〜N21で、buf
[pp][ ][ ]上にbar小節のコード進行を作
成する。ここで、バッファbuf[pp][ ][ ]
にはbar小節のコード進行としてNEWCNTの数の
コードが作成される。各コードの長さはTIMEにセッ
トされ(N18のbuf[pp][cp2][0]=T
IME)、各コードのルート、タイプ、ベースは乱数的
に生成される(N19のbuf[pp][cp2][1
〜3]乱数生成)。なお、各コードのルート、タイプ、
ベース(コード情報のうちコード長を除くデータ)を乱
数的に生成する代りに、OLDCNT>NEWCNTな
ら、cho[pp][ ][ ]にあるbar小節のな
かから、NEWCNTの数だけコードを選び、それらの
コードのルート、タイプ、ベースの写しをとるように
し、NEWCNT>OLDCNTなら、cho[pp]
[ ][ ]にあるbar小節のコードの情報(ルー
ト、タイプ、ベース)をOLDCNTの数だけ用い、追
加すべきコード(追加数=NEWCNT−OLDCN
T)のみ、その情報(ルート、タイプ、ベース)を乱数
的に生成するようにしてもよい。
15)、等しくなければ、N16〜N21で、buf
[pp][ ][ ]上にbar小節のコード進行を作
成する。ここで、バッファbuf[pp][ ][ ]
にはbar小節のコード進行としてNEWCNTの数の
コードが作成される。各コードの長さはTIMEにセッ
トされ(N18のbuf[pp][cp2][0]=T
IME)、各コードのルート、タイプ、ベースは乱数的
に生成される(N19のbuf[pp][cp2][1
〜3]乱数生成)。なお、各コードのルート、タイプ、
ベース(コード情報のうちコード長を除くデータ)を乱
数的に生成する代りに、OLDCNT>NEWCNTな
ら、cho[pp][ ][ ]にあるbar小節のな
かから、NEWCNTの数だけコードを選び、それらの
コードのルート、タイプ、ベースの写しをとるように
し、NEWCNT>OLDCNTなら、cho[pp]
[ ][ ]にあるbar小節のコードの情報(ルー
ト、タイプ、ベース)をOLDCNTの数だけ用い、追
加すべきコード(追加数=NEWCNT−OLDCN
T)のみ、その情報(ルート、タイプ、ベース)を乱数
的に生成するようにしてもよい。
【0034】なお、コード長TIMEが1小節、1/2
小節、1/4小節のいずれになるかがそれぞれ異なる確
率(指定された確率)で発生するようにすることができ
る。N21でcp2=A+NEWCNTが成り立つと
き、cp2は、バッファbuf[pp][cp2]
[ ]上の次の小節の最初のコードの位置を指してい
る。また、cho[pp][cp][ ]用のコードポ
インタcpをcp=cp+OLDCNTにセットする
(N16)ことにより、cpはcho[pp][cp]
[ ]上の次の小節の最初のコードを指す状態になる。
コード数を変更しないと決定したとき(N6でNO)、
または、NEWCNT=OLDCNTのとき(N15で
NO)は、cho[pp][cp][ ]にあるbar
小節のコード進行データをバッファbuf[pp][c
p2][ ]に写しとる(N22〜N25)。
小節、1/4小節のいずれになるかがそれぞれ異なる確
率(指定された確率)で発生するようにすることができ
る。N21でcp2=A+NEWCNTが成り立つと
き、cp2は、バッファbuf[pp][cp2]
[ ]上の次の小節の最初のコードの位置を指してい
る。また、cho[pp][cp][ ]用のコードポ
インタcpをcp=cp+OLDCNTにセットする
(N16)ことにより、cpはcho[pp][cp]
[ ]上の次の小節の最初のコードを指す状態になる。
コード数を変更しないと決定したとき(N6でNO)、
または、NEWCNT=OLDCNTのとき(N15で
NO)は、cho[pp][cp][ ]にあるbar
小節のコード進行データをバッファbuf[pp][c
p2][ ]に写しとる(N22〜N25)。
【0035】N26でbarをインクリメントする。b
ar<BARN(BARNはコード進行の小節数であ
り、メロディの小節数でもある)なら、まだ小節が残っ
ているので(N27でYES)、N5へリターンする。 bar=BARNなら(N27でNO) コード進行ppについてコード長変更処理したものがb
uf[pp][ ][]に完成している。このとき、c
p2はコード長変更後のコード進行ppのコード数を表
わしているので、その変数CN[pp]にcp2をセッ
トする(N28)。バッファ上に作成したコード進行p
pのデータbuf[pp][ ][ ]をcho[p
p][ ][ ]に戻し、その時間データフォーマット
を元のフォーマット(前コードからの時間値)に戻す
(N29、N30)。以上で、コード進行ppについて
のコード長変更処理が終ったのでコード進行ポインタを
次に進め(N31)、N2にリターンする。
ar<BARN(BARNはコード進行の小節数であ
り、メロディの小節数でもある)なら、まだ小節が残っ
ているので(N27でYES)、N5へリターンする。 bar=BARNなら(N27でNO) コード進行ppについてコード長変更処理したものがb
uf[pp][ ][]に完成している。このとき、c
p2はコード長変更後のコード進行ppのコード数を表
わしているので、その変数CN[pp]にcp2をセッ
トする(N28)。バッファ上に作成したコード進行p
pのデータbuf[pp][ ][ ]をcho[p
p][ ][ ]に戻し、その時間データフォーマット
を元のフォーマット(前コードからの時間値)に戻す
(N29、N30)。以上で、コード進行ppについて
のコード長変更処理が終ったのでコード進行ポインタを
次に進め(N31)、N2にリターンする。
【0036】次に、コード長可変方式の場合のコード進
行対のクロスオーバー(交配処理)について説明する。
図19〜図21にそのフローチャートを参照番号70と
して示す。図示のフローは、上述したコード長固定方式
のクロスオーバー処理(図10)の代りに、コード長可
変方式で使用される。この図19〜図21のフローで
は、クロスオーバーの範囲はSTART小節からEND
小節までの小節単位で行えるようにしている。まず、コ
ード進行ポインタppとカウンタc(ここではクロスオ
ーバーしたコード進行の数のカウンタ)を0に初期化す
る(O1)。0〜BARN−1の範囲で乱数(整数値)
を2つ(RND1、RND2)発生させ、小さい方をS
TART、大きい方をENDとする(O2、O3)。な
おSTART=ENDの場合もあり得る。
行対のクロスオーバー(交配処理)について説明する。
図19〜図21にそのフローチャートを参照番号70と
して示す。図示のフローは、上述したコード長固定方式
のクロスオーバー処理(図10)の代りに、コード長可
変方式で使用される。この図19〜図21のフローで
は、クロスオーバーの範囲はSTART小節からEND
小節までの小節単位で行えるようにしている。まず、コ
ード進行ポインタppとカウンタc(ここではクロスオ
ーバーしたコード進行の数のカウンタ)を0に初期化す
る(O1)。0〜BARN−1の範囲で乱数(整数値)
を2つ(RND1、RND2)発生させ、小さい方をS
TART、大きい方をENDとする(O2、O3)。な
おSTART=ENDの場合もあり得る。
【0037】次に参照元であるコード進行cho[p
p][ ][ ]からSTART小節の最初のコード位
置S1、END小節の最後のコード位置E1をサーチ
し、参照先であるコード進行cho[pair[p
p]][ ][ ]からSTART小節の最初のコード
S2、END小節の最後のコードE2をサーチする(O
4、O5)。次にO6で、 CN[pp]=CN[pp]+(E2−S2)−(E1
−S1) CN[pair[pp]]=CN[pair[pp]]
+(E1−S1)−(E2−S2) を実行する。これにより、CN[pp]はクロスオーバ
ー処理後のコード進行ppのコード数を表わし、CN
[pair[pp]]はクロスオーバー処理後のコード
進行pair[pp]のコード数を表わす。O7〜O1
4で、バッファを介して、cho[pp][ ][ ]
上にコード進行ppのクロスオーバーの結果を入れてい
る。
p][ ][ ]からSTART小節の最初のコード位
置S1、END小節の最後のコード位置E1をサーチ
し、参照先であるコード進行cho[pair[p
p]][ ][ ]からSTART小節の最初のコード
S2、END小節の最後のコードE2をサーチする(O
4、O5)。次にO6で、 CN[pp]=CN[pp]+(E2−S2)−(E1
−S1) CN[pair[pp]]=CN[pair[pp]]
+(E1−S1)−(E2−S2) を実行する。これにより、CN[pp]はクロスオーバ
ー処理後のコード進行ppのコード数を表わし、CN
[pair[pp]]はクロスオーバー処理後のコード
進行pair[pp]のコード数を表わす。O7〜O1
4で、バッファを介して、cho[pp][ ][ ]
上にコード進行ppのクロスオーバーの結果を入れてい
る。
【0038】このために、コード進行pair[pp]
のバッファbuf[pair[pp]][cp2]
[ ]上の、cp2=S2〜E2までのコード進行デー
タをcho[pp][cp][ ]上のcp=S1〜
(S1+E2−S2)の範囲に取り込む(O7〜O1
0)。この続きのコード進行データは、コード進行pp
のバッファbuf[pp][cp2][ ]のcp2=
E1+1以降に入っているので、cp2とcpをインク
リメントしながら cho[pp][cp][ ]=buf[pp][cp
2][ ] を実行して、続きのコード進行データをcho[pp]
[cp][ ]上に取り込む(O11〜O14)。cp
=CN[pp]になれば(O12でNO)、クロスオー
バーされたコード進行ppが完成している。
のバッファbuf[pair[pp]][cp2]
[ ]上の、cp2=S2〜E2までのコード進行デー
タをcho[pp][cp][ ]上のcp=S1〜
(S1+E2−S2)の範囲に取り込む(O7〜O1
0)。この続きのコード進行データは、コード進行pp
のバッファbuf[pp][cp2][ ]のcp2=
E1+1以降に入っているので、cp2とcpをインク
リメントしながら cho[pp][cp][ ]=buf[pp][cp
2][ ] を実行して、続きのコード進行データをcho[pp]
[cp][ ]上に取り込む(O11〜O14)。cp
=CN[pp]になれば(O12でNO)、クロスオー
バーされたコード進行ppが完成している。
【0039】同様にして、O15〜O22で、バッファ
を介して、cho[pair[pp]][cp][ ]
上にコード進行pair[pp]のクロスオーバー結果
を入れている。その後O23〜O29を実行する。O2
3〜O29は図10のG9〜G13と同様の処理であ
る。クロスオーバーすべきコード進行対をコード進行の
メロディ適合値に応じて選択した後に行うクロスオーバ
ー処理(図14)のフローについても、コード長可変方
式に適合するよう変形することは容易である。以上に、
実施の形態についての説明を終えるが、この発明の範囲
内で種々の変形が可能である。
を介して、cho[pair[pp]][cp][ ]
上にコード進行pair[pp]のクロスオーバー結果
を入れている。その後O23〜O29を実行する。O2
3〜O29は図10のG9〜G13と同様の処理であ
る。クロスオーバーすべきコード進行対をコード進行の
メロディ適合値に応じて選択した後に行うクロスオーバ
ー処理(図14)のフローについても、コード長可変方
式に適合するよう変形することは容易である。以上に、
実施の形態についての説明を終えるが、この発明の範囲
内で種々の変形が可能である。
【0040】例えば、遺伝的操作によるコード進行集団
のコード進行評価値(メロディ適合値)が世代が進むに
つれ、効率よく所望のレベルまで上がるようにするた
め、コード進行集団(各世代)のコード進行を区間毎
(例えば小節毎あるいは楽節毎)に評価して、区間ごと
のメロディ適合値(評価値)each_val[pp]
[bar]を算出し、評価値が低い区間のコード進行
を、他のコード進行のなかで同じ区間について高い評価
値をもつ、当該区間のコード進行に置換する操作を行う
ようにすることができる。
のコード進行評価値(メロディ適合値)が世代が進むに
つれ、効率よく所望のレベルまで上がるようにするた
め、コード進行集団(各世代)のコード進行を区間毎
(例えば小節毎あるいは楽節毎)に評価して、区間ごと
のメロディ適合値(評価値)each_val[pp]
[bar]を算出し、評価値が低い区間のコード進行
を、他のコード進行のなかで同じ区間について高い評価
値をもつ、当該区間のコード進行に置換する操作を行う
ようにすることができる。
【0041】
【発明の効果】この発明によれば、ある世代のコード進
行集団に対して遺伝的操作(選択交配、突然変異等)を
行い、かつ遺伝的操作の繰り返しによりコード進行集団
のコード進行評価値(メロディ適合値)が世代が進むに
つれ全体として高くなるようにしているので、与えられ
たメロディに対し所望の適合度をもつようなコード進行
を容易に得ることができる。また、コード進行集団に対
して行う遺伝的操作は確定的プロセスではなく確率的過
程であるので広いコード進行生成空間を与えることがで
きる。
行集団に対して遺伝的操作(選択交配、突然変異等)を
行い、かつ遺伝的操作の繰り返しによりコード進行集団
のコード進行評価値(メロディ適合値)が世代が進むに
つれ全体として高くなるようにしているので、与えられ
たメロディに対し所望の適合度をもつようなコード進行
を容易に得ることができる。また、コード進行集団に対
して行う遺伝的操作は確定的プロセスではなく確率的過
程であるので広いコード進行生成空間を与えることがで
きる。
【図1】この発明による自動コード付装置のハードウエ
ア構成例を示すブロック図。
ア構成例を示すブロック図。
【図2】本自動コード付装置の全体動作を表わすメイン
のフローチャート。
のフローチャート。
【図3】メロディのデータ構造を示す図。
【図4】コード進行集団のデータ構造を示す図。
【図5】遺伝的操作を含むコード進行生成のフローチャ
ート。
ート。
【図6】初期コード進行集団の生成のフローチャート。
【図7】コード進行の評価のフローチャート。
【図8】遺伝的操作の一部であるコード進行の一部交換
のフローチャート。
のフローチャート。
【図9】参照先を決定する処理のフローチャート。
【図10】クロスオーバーのフローチャート。
【図11】遺伝的操作の一部であるコード進行の取捨選
択のフローチャート。
択のフローチャート。
【図12】コード進行評価値(メロディ適合値)に応じ
た対決定を行う処理のフローチャート。
た対決定を行う処理のフローチャート。
【図13】乱数からコード進行を決定(選択)する処理
のフローチャート。
のフローチャート。
【図14】クロスオーバーのフローチャート。
【図15】遺伝的操作の一部であるコード進行突然変異
のフローチャート。
のフローチャート。
【図16】コードのデータ項目を変更すべきかどうかを
決定する処理のフローチャート。
決定する処理のフローチャート。
【図17】コード進行の突然変異処理の一部として行わ
れるコード長変更処理のフローチャート。
れるコード長変更処理のフローチャート。
【図18】コード進行の突然変異処理の一部として行わ
れるコード長変更処理のフローチャート。
れるコード長変更処理のフローチャート。
【図19】コード長可変方式に適用されるクロスオーバ
ー処理のフローチャート。
ー処理のフローチャート。
【図20】コード長可変方式に適用されるクロスオーバ
ー処理のフローチャート。
ー処理のフローチャート。
【図21】コード長可変方式に適用されるクロスオーバ
ー処理のフローチャート。
ー処理のフローチャート。
1 CPU 2 ROM 4 入力装置 A6 コード進行生成処理 B2 コード進行評価 B4 コード進行変形(遺伝的操作) 10 コード進行の一部交換 50 コード進行突然変異
Claims (6)
- 【請求項1】(A)メロディを与えるメロディ付与手段
と、(B)複数のコード進行を初期世代のコード進行集
団として与える初期コード進行集団付与手段と、(C)
処理対象である、ある世代のコード進行集団(最初は初
期世代のコード進行集団)から次の世代のコード進行集
団を生成する処理をくり返すコード進行進化手段と、 を備え、上記コード進行進化手段は、(i)処理対象の
コード進行集団の各コード進行について、上記メロディ
に対する適合度を所定の評価関数に従って評価してメロ
ディ適合値を算出するコード進行評価手段と、(ii)世
代が進むにつれ、コード進行集団のメロディ適合値が全
体として高くなるように、処理対象のコード進行集団に
対して遺伝的操作を行う遺伝操作手段と、 から成り、 更に、(D)所定の終了条件が成り立つときに上記コー
ド進行進化手段の動作を停止する停止手段、 を備えることを特徴とする自動コード付装置。 - 【請求項2】請求項1記載の自動コード付装置におい
て、 上記遺伝操作手段は、処理対象のコード進行集団におけ
るコード進行相互間でコード進行の一部交換を行うコー
ド進行交配手段を含む、 ことを特徴とする自動コード付装置。 - 【請求項3】請求項2記載の自動コード付装置におい
て、 上記遺伝操作手段は、上記コード進行交配手段の交配結
果である複数のコード進行のなかでメロディ適合値が低
いコード進行をメロディ適合値の高いコード進行に置き
換える手段を更に含む、 ことを特徴とする自動コード付装置。 - 【請求項4】請求項2記載の自動コード付装置におい
て、 上記遺伝子操作手段は、処理対象のコード進行集団のコ
ード進行のなかでメロディ適合値の高いものほど、上記
コード進行交配手段によるコード進行の一部交換のため
に使用される頻度が高くなるように交配頻度を制御する
手段を更に含む、 ことを特徴とする自動コード付装置。 - 【請求項5】請求項1記載の自動コード付装置におい
て、 上記遺伝操作手段は、各コード進行を構成するコード進
行要素を突然変異させる手段を含む、 ことを特徴とする自動コード付装置。 - 【請求項6】請求項1記載の自動コード付装置におい
て、 上記停止手段は、処理対象のコード進行集団のメロディ
適合値が所定値を超えたときに上記コード進行進化手段
の動作を停止することを特徴とする自動コード付装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10145138A JPH11327558A (ja) | 1998-05-12 | 1998-05-12 | 自動コード付装置 |
US09/307,437 US6060655A (en) | 1998-05-12 | 1999-05-10 | Apparatus for composing chord progression by genetic operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10145138A JPH11327558A (ja) | 1998-05-12 | 1998-05-12 | 自動コード付装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11327558A true JPH11327558A (ja) | 1999-11-26 |
Family
ID=15378301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10145138A Abandoned JPH11327558A (ja) | 1998-05-12 | 1998-05-12 | 自動コード付装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6060655A (ja) |
JP (1) | JPH11327558A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0650033A (ja) * | 1992-07-28 | 1994-02-22 | Matsushita Electric Works Ltd | セキュリティー鍵保管装置 |
JP2010122630A (ja) * | 2008-11-21 | 2010-06-03 | Sony Corp | 情報処理装置、音声解析方法、及びプログラム |
JP2016099444A (ja) * | 2014-11-20 | 2016-05-30 | カシオ計算機株式会社 | 自動作曲装置、方法、およびプログラム |
JP2016224462A (ja) * | 2016-09-02 | 2016-12-28 | ヤマハ株式会社 | 楽譜表示装置、楽譜表示方法、および当該楽譜表示方法を実現するためのプログラム |
CN113767430A (zh) * | 2019-03-26 | 2021-12-07 | 雅马哈株式会社 | 和弦处理方法及和弦处理装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPR150700A0 (en) * | 2000-11-17 | 2000-12-07 | Mack, Allan John | Automated music arranger |
GB0118448D0 (en) * | 2001-07-27 | 2001-09-19 | Hewlett Packard Co | Apparatus for composing a song and method |
FR2830363A1 (fr) * | 2001-09-28 | 2003-04-04 | Koninkl Philips Electronics Nv | Dispositif comportant un generateur de signal sonore et procede pour former un signal d'appel |
US6984781B2 (en) * | 2002-03-13 | 2006-01-10 | Mazzoni Stephen M | Music formulation |
WO2008018056A2 (en) | 2006-08-07 | 2008-02-14 | Silpor Music Ltd. | Automatic analasis and performance of music |
US20080109290A1 (en) * | 2006-11-08 | 2008-05-08 | Marmentini Peter A | Business model for interactive development of a product |
JP5625235B2 (ja) * | 2008-11-21 | 2014-11-19 | ソニー株式会社 | 情報処理装置、音声解析方法、及びプログラム |
EP2441071A2 (en) * | 2009-06-12 | 2012-04-18 | Jam Origin APS | Generative audio matching game system |
JP6160599B2 (ja) * | 2014-11-20 | 2017-07-12 | カシオ計算機株式会社 | 自動作曲装置、方法、およびプログラム |
US10614786B2 (en) * | 2017-06-09 | 2020-04-07 | Jabriffs Limited | Musical chord identification, selection and playing method and means for physical and virtual musical instruments |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5887593A (ja) * | 1981-11-20 | 1983-05-25 | リコーエレメックス株式会社 | 和音付け装置 |
US4539882A (en) * | 1981-12-28 | 1985-09-10 | Casio Computer Co., Ltd. | Automatic accompaniment generating apparatus |
US4951544A (en) * | 1988-04-06 | 1990-08-28 | Cadio Computer Co., Ltd. | Apparatus for producing a chord progression available for a melody |
JPH02197885A (ja) * | 1989-01-26 | 1990-08-06 | Nec Corp | 旋律和音付け装置 |
-
1998
- 1998-05-12 JP JP10145138A patent/JPH11327558A/ja not_active Abandoned
-
1999
- 1999-05-10 US US09/307,437 patent/US6060655A/en not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0650033A (ja) * | 1992-07-28 | 1994-02-22 | Matsushita Electric Works Ltd | セキュリティー鍵保管装置 |
JP2010122630A (ja) * | 2008-11-21 | 2010-06-03 | Sony Corp | 情報処理装置、音声解析方法、及びプログラム |
JP2016099444A (ja) * | 2014-11-20 | 2016-05-30 | カシオ計算機株式会社 | 自動作曲装置、方法、およびプログラム |
JP2016224462A (ja) * | 2016-09-02 | 2016-12-28 | ヤマハ株式会社 | 楽譜表示装置、楽譜表示方法、および当該楽譜表示方法を実現するためのプログラム |
CN113767430A (zh) * | 2019-03-26 | 2021-12-07 | 雅马哈株式会社 | 和弦处理方法及和弦处理装置 |
CN113767430B (zh) * | 2019-03-26 | 2024-02-23 | 雅马哈株式会社 | 和弦处理方法及和弦处理装置 |
Also Published As
Publication number | Publication date |
---|---|
US6060655A (en) | 2000-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH11327558A (ja) | 自動コード付装置 | |
US9076423B2 (en) | System and method for analysis and creation of music | |
JP2881711B2 (ja) | 神経回路網の遺伝子的合成 | |
KR101854706B1 (ko) | 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체 | |
US11887566B2 (en) | Method of generating music data | |
CN111681631B (zh) | 搭配和声的方法、装置、电子设备及计算机可读介质 | |
Marques et al. | Music composition using genetic evolutionary algorithms | |
Suzuki et al. | Four-part harmonization using Bayesian networks: Pros and cons of introducing chord nodes | |
Yin et al. | Deep learning’s shallow gains: A comparative evaluation of algorithms for automatic music generation | |
KR20170088451A (ko) | 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체 | |
JPH11231871A (ja) | リズム合成装置 | |
Kritsis et al. | On the adaptability of recurrent neural networks for real-time jazz improvisation accompaniment | |
Wassermann et al. | Automated harmonization of bass lines from Bach chorales: a hybrid approach | |
Kunimatsu et al. | A music composition model with genetic programming-a case study of chord progression and bassline | |
CN116229922A (zh) | 基于Bi-LSTM深度强化学习网络的鼓乐生成方法 | |
Mycka et al. | Toward human-level tonal and modal melody harmonizations | |
Whorley et al. | Development of techniques for the computational modelling of harmony | |
Lafleur et al. | Combining reinforcement learning and constraint programming for sequence-generation tasks with hard constraints | |
JP7251684B2 (ja) | アレンジ生成方法、アレンジ生成装置、及び生成プログラム | |
Hori et al. | Jazz piano trio synthesizing system based on hmm and dnn | |
JP2006201278A (ja) | 楽曲の拍節構造の自動分析方法および装置、ならびにプログラムおよびこのプログラムを記録した記録媒体 | |
Wallace et al. | Comparing models for harmony prediction in an interactive audio looper | |
EP4167227B1 (en) | System and method for recognising chords in music | |
JP7371962B2 (ja) | 編曲システム、編曲方法、およびコンピュータプログラム | |
Tamás et al. | Development of a music generator application based on artificial intelligence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051122 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20060118 |