JP3528372B2 - 自動作曲方法 - Google Patents

自動作曲方法

Info

Publication number
JP3528372B2
JP3528372B2 JP29929395A JP29929395A JP3528372B2 JP 3528372 B2 JP3528372 B2 JP 3528372B2 JP 29929395 A JP29929395 A JP 29929395A JP 29929395 A JP29929395 A JP 29929395A JP 3528372 B2 JP3528372 B2 JP 3528372B2
Authority
JP
Japan
Prior art keywords
sound
pitch
chord
note
length
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
JP29929395A
Other languages
English (en)
Other versions
JPH09120283A (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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP29929395A priority Critical patent/JP3528372B2/ja
Publication of JPH09120283A publication Critical patent/JPH09120283A/ja
Application granted granted Critical
Publication of JP3528372B2 publication Critical patent/JP3528372B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はメロディを自動
生成する自動作曲方法に属する。
【0002】最近、本件出願人は、メロディ素材として
各音を発音タイミング、音長、音高、音種で表現した音
列のデータを記憶しておき、音楽背景情報としてコード
進行(コードの列)とスケール(スケールタイプとキ
ー)を入力し、素材の各音高を入力音楽背景情報に基づ
いて変更することにより、メロディを生成する自動作曲
機を提案している。この種の自動作曲機は比較的少ない
データ処理量で効率よくリアルなメロディを生成でき
る。しかしながら、この種の自動作曲機は、メロディ生
成の基になるデータであるメロディ素材とコード進行と
が独立に与えられる問題がある。このため、メロディ素
材から生成した音の発音中にコードが変化する場合があ
る(ユーザーがメロディ素材をモニターした後、そのよ
うなコード変化がないように、注意深くコード進行を入
力した場合は別であるが)。結果として変化後のコード
に対して生成メロディ音が適合せず、不自然になる問題
がある。したがって、この発明の目的は、メロディ音の
発音中にコード変化(音楽背景の変化)があった場合で
も自然さを保つようにメロディ素材を変形可能な自動作
方法を提供することである。
【0003】
【課題を解決するための手段】この発明によれば、コー
ド進行を入力する入力ステップと、各音発音タイミン
グ、音長および音高で表現されたメロディ素材の各音の
発音タイミングと音長とによって定められる発音期間中
に、コード変化があるか否かを検査する検査ステップ
と、前記検査の結果、コード変化がある場合に、前記
ロディ素材の音を、変化前のコードに対する第1音およ
変化後のコードに対する第2音としてそれぞれ割り当
てたときに、前記第1音および第2音の音長がいずれも
所定の長さより長ければ、前記第1音および第2音とし
て前記メロディ素材の音を分割し、一方、前記第2音の
音長が所定の長さより短ければ、前記メロディ素材の音
を分割しない分割ステップと、前記メロディ素材の音が
分割された場合の第2音の音高を、前記変化後のコード
に基いて決定する音高決定ステップと、前記分割された
第1音および第2音を作曲結果として記憶手段に記憶さ
せる記憶ステップと、からなることを特徴とする自動作
曲方法が提供される。
【0004】また、この発明の他の態様によれば、コー
ド進行を入力する入力ステップと、各音が発音タイミン
グ、音長および音高で表現されたメロディ素材の各音の
発音タイミングと音長とによって定められる発音期間中
に、コード変化があるか否かを検査する検査ステップ
と、前記検査の結果、コード変化がある場合に、前記メ
ロディ素材の音を、変化前のコードに対する第1音およ
び変化後のコードに対する第2音としてそれぞれ割り当
てたときに、前記第1音および第2音の音長がいずれも
所定の長さより長ければ、前記メロディ素材の音を分割
して前記第1音および第2音を生成し、一方、前記第1
音の音長が所定の長さより短ければ、前記第2音のみを
生成する分割ステップと、前記第2音の音高を、前記変
化後のコードに基いて決定する音高決定ステップと、前
記生成された第1音および第2音を作曲結果として記憶
手段に記憶させる記憶ステップと、からなることを特徴
とする自動作曲方法が提供される。
【0005】この発明の更に他の態様によれば、コード
進行を入力する入力ステップと、各音が発音タイミン
グ、音長および音高で表現されたメロディ素材の各音の
発音タイミングと音長とによって定められる発音期間中
に、コード変化があるか否かを検査する検査ステップ
と、前記検査の結果、コード変化がある場合に、前記メ
ロディ素材の音を、変化前のコードに対する第1音およ
び変化後のコードに対する第2音としてそれぞれ割り当
てたときに、前記第1音および第2音の音長がいずれも
所定の長さより長ければ、前記メロディ素材の音を分割
して前記第1音および第2音を生成し、また、前記第2
音の音長が所定の長さより短ければ、前記メロディ素材
の音を分割せずそのままとし、また、前記第1音の音長
が所定の長さより短ければ、前記第2音のみを生成する
分割ステップと、前記第2音の音高を、前記変化後のコ
ードに基いて決定する音高決定ステップと、前記生成さ
れた第1音および第2音を作曲結果として記憶手段に記
憶させる記憶ステップと、からなることを特徴とする自
動作曲方法が提供される。
【0006】これらの方法によれば、メロディ素材の音
の発音期間中にコードが変化した場合でも、その変化に
合わせたメロディ素材の変形処理が行われることにな
り、所期の目的が達せられ、しかも、不自然な長さの音
(極端に短い音)を生成メロディから除外できる。
【0007】
【発明の実施の形態】以下、図面を参照してこの発明の
実施の形態を説明する。図1はこの発明による自動作曲
機の機能ブロック図である。メロディ素材メモリ10は
メロディ素材(原メロディ)を構成する音列の各音を少
なくとも発音タイミング、音長、音高、音種で表現した
音列データを記憶する。スケール入力部20はスケール
(スケールのタイプとキー)を入力する。コード進行入
力部30は各コードをコードタイミング(コード変化タ
イミング)、ルート及びタイプで表現したコード列のデ
ータをコード進行として入力する。スケール入力部20
から入力されたスケールとコード進行入力部30から入
力されたコード進行は自動作曲機が生成するメロディの
音楽背景を定めるものである。ここに、本自動作曲機の
基本的機能はメロディ素材メモリ10にあるメロディ素
材を入力音楽背景情報(スケールとコード進行)に従っ
て変形することによってメロディを生成することであ
る。
【0008】このために音高変更部40はメロディ素材
の各音についてその音高を入力音楽背景情報に従って変
更する。詳細には、音高変更部40はメロディ素材メモ
リ10から素材音の発音タイミングデータ、音高データ
及び音種データを読む。そしてこの発音タイミングに適
用されるコードを入力されたコード進行のなかから選び
出す。更に音高変更部40はスケール入力部20からの
スケールを受け取る。このコードとスケールによって音
高変更部40が生成すべき音の音楽背景が定まる。ここ
で音高変更部40は、素材音の音高(記憶音高)、音種
(記憶音種)及び生成すべき音の音楽背景であるコー
ド、スケールに基づき素材音の音高を変更する。結果と
して音高変更部40はメロディ素材メモリ10に記憶さ
れた音高列を入力された音楽背景情報に合うように修正
した音高列を生成する。
【0009】図1の自動作曲機において、メロディ素材
メモリ10にあるメロディ素材の音の時系列とユーザー
からコード進行入力部30を介して入力されるコード進
行のコードの時系列との間には格別の関連性が保証され
ない。したがって、メロディ素材の音の発音中にコード
が変化することが起り得る。一方、音高変更部40は生
成音の音楽背景として各素材音の発音タイミングにおけ
る音楽背景のみを考慮しているのに留まり、発音中での
音楽背景の変化(ここではコードの変化)はモニターし
ていない。
【0010】音分割部50はこの問題、即ち、発音中に
コードが変化したときの問題を解決するために設けられ
ている。このために音分割部50はメロディ素材メモリ
10から素材音の発音タイミングデータと音長データを
読み取る。この発音タイミングデータと音長データとに
より素材音の発音期間が定まる。音分割部50はこの素
材音(その音高は音高変更部40によって変更されてい
る)の発音期間を入力コード進行に含まれるコードタイ
ミングデータと比較することにより、発音中にコードが
変化したかどうかを検査する。素材音の発音中にコード
が変化した場合、音分割部50は素材音を変化前のコー
ドに対する第1音と変化後のコードに対する第2音とに
分割する。ここに第1音の音高は音高変更部40によっ
て既に定められている。第2音の音高は音分割部50の
音高変更機能によって決定される。即ち、音分割部50
は、第2音の音高を第1音の音高(音高変更部40から
の変更音高データ)、記憶音種、及び第2音の音楽背景
である変化後のコードとスケールに基づいて決定する。
結果としてメロディ音の発音中にコードが変化した場
合、そのコード変化に追従してメロディ音も変化し、自
然さを保つことができる。
【0011】図2は本自動作曲機を組み込んだ電子鍵盤
楽器のハードウェア構成例を示すブロック図である。図
2において、第1のCPU1は発音制御以外のすべての
処理を行うものであり、第2のCPU2は発音制御を行
うものである。デュアルCPUコントローラ3はCPU
1とCPU2のコントローラである。ROM4はプログ
ラムとデータを記憶する。RAM5はCPU1の使用す
る一時記憶用メモリである。パネルスイッチ6は楽器パ
ネル上に配置した複数のスイッチを含み、鍵盤7は演奏
操作される複数のキーを含む。RAM8はCPU2の使
用する一時記憶用メモリである。音源9はCPU2によ
って制御されて楽音信号を発生する。
【0012】図3は本自動作曲機で使用した、各音楽要
素に対する数値割当を例示するものである。コードタイ
プ“MAJ”、“MIN”、“7TH”、“M7”はそ
れぞれ数値データ“0”、“1”、“2”、“3”で表
現する。またコードが定義されていない状態(NC)を
“4”で表現する。スケールタイプ“ダイアトニッ
ク”、“ドリアン”は数値データ“0”、“1”で表現
する。またスケールが未定義の状態(NS)を“2”で
表現する。ルート(コード根音)とキーについてはC=
“0”、C#=“1”、以下同様にしてB=“11”で
表現する。音種“コードトーン(CT)”、“アベイラ
ブルノート(N)”、“スケールノート(SN)”、
“テンションノート(TN)”、“アボイドノート(A
V)”はそれぞれ数値“0”、“1”、“2”、
“3”、“4”で表現する。また、音(素材音または生
成音)のデータ項目“DUR”(長さ)、“VEL”
(ベロシティ、強さ)、“PIT”(高さ)、“NT
T”(音種;生成音には音種のデータ項目なし)をそれ
ぞれ1、2、3、4で表現し、素材音のデータ項目数
“PN”を5とし、生成音のデータ項目数“MN”を4
とする。またコードのデータ項目“ROOT”(コード
根音)、“TYPE”(コードタイプ)をそれぞれ、
1、2で表現し、コードのデータ項目数“CN”を3と
する。
【0013】図4は標準ピッチクラスセットメモリを示
すものである。標準ピッチクラスセットメモリは図2の
ROM4内に置かれるもので、後述する音種の分類のた
めに使用される。標準ピッチクラスメモリはコードトー
ンメモリctDB[ ]、テンションノートメモリtn
DB[ ]及びスケールノートメモリsnDB[ ]か
ら成る。コードトーンメモリctDB[ ]は各コード
タイプに対するコード構成音データを記憶する。テンシ
ョンノートメモリtnDB[ ]は各コードタイプに対
するテンションノートデータを記憶する。スケールノー
トメモリsnDB[ ]は各スケールに対するスケール
ノートデータを記憶する。各ピッチクラスセットデータ
は12ビット構成でビット0が“C”ビット1が“C
#”以下同様にしてビット11が“B”を表わし、各ビ
ットの“1”がそのピッチクラスを要素としてもつこと
を、“0”がそのピッチクラスを要素としてもたないこ
とを表わす。例えばctDB[MAJ]は 000010010001 であり、これはピッチクラス“C”、“E”、“G”が
コードタイプ“MAJ”のピッチクラスセットであるこ
とを表わしている。
【0014】コードトーンメモリctDB[ ]とテン
ションノートメモリtnDB[ ]は入力音楽背景情報
に含まれるコードタイプによってルックアップされて、
そのコードタイプに対するコードトーンとテンションノ
ートのピッチクラスセットを返すメモリである。スケー
ルノートメモリsnDB[ ]は入力音楽背景情報に含
まれるスケールによってルックアップされてそのスケー
ルのピッチクラスセットを返すメモリである。なお図4
の場合、コードトーンメモリctDB[ ]とテンショ
ンノートメモリtnDB[ ]は、コードタイプが音楽
背景情報として入力されなかった場合、即ちコードタイ
プが定義されない場合(コードタイプ=NC)に対する
ピッチクラスセットデータctDB[NC]、tnDB
[NC]をも定義、記憶している。同様にスケールノー
トメモリsnDB[ ]はスケールが定義されない場合
(スケール=NS)に対するピッチクラスセットデータ
snDB[NS]をも定義、記憶している。
【0015】図5にメロディ素材データメモリpDB
[ ]を示す。メロディ素材データメモリは原メロディ
のデータを記憶する。このメモリに記憶される1ノート
あたりのデータは101に示すようにタイミング、長
さ、強さ、音高及び音種(ノートタイプ)から成る。メ
ロディ素材のデータ例を参照番号102で示している。
図6にコード進行メモリcho[ ]を示す。コード進
行メモリcho[ ]は入力されたコード進行のデータ
を記憶する。1コードあたりのデータは参照番号201
に示すように、タイミングデータ、ルート、及びタイプ
から成る。コード進行のデータ例を参照番号202で示
している。図7に音高差メモリpc[ ]を示す。音高
差メモリpc[ ]は複数の音高候補を順次生成するた
めの音高差データの列を記憶する。1、−2、3、−
4、5、−6の音高差データ列を記憶する音高差メモリ
301を使用した場合、音高候補の初期値をINTとす
ると、INT、INTより半音上、INTより半音下、
INTより2半音上、INTより2半音下、INTより
3半音上、INTより3半音下の音高候補が順次生成さ
れる。一方、音高差データ列1、1、1、−4、−1、
−1をもつ音高差メモリ302を使用した場合は、IN
T、INTより半音上、INTより2半音上、INTよ
り3半音上、INTより半音下、INTより2半音下、
INTより3半音下の順で音高候補が生成される。
【0016】図8に変数のリストを示す。変数keyは
入力されたキー(スケールの主音)のピッチクラスを表
わす。変数scaleは入力されたスケールのタイプを
表わす。スケールの主音keyとタイプscaleとに
よりスケールが特定される。cp、mp、ppはそれぞ
れ、コード進行メモリデータに対するコードポインタ、
生成メロディデータに対する生成ノートポインタ、素材
メロディデータに対する素材ノートポインタである。フ
ラグcflagはコードが入力された(確定している)
かどうかを示し、フラグsflagはスケールが入力さ
れた(確定している)かどうかを示す。変数pitは生
成音の音高候補を表わす。変数ntは音高候補の音種
(ノートタイプ)を表わす。変数pccn1は音高変更
回数のカウンタである。ポジション変数pos0はメロ
ディ素材をコード進行のどの位置(タイミング)から始
めるかを示す(メロディ素材のコード進行に対する相対
タイミングpos0)。ポジション変数posは各素材
音のコード進行に対する相対発音タイミング、即ち、コ
ード進行におけるタイミングを表わす。mel[ ]は
生成メロディを表わす。各生成メロディ音は発音タイミ
ング、長さ、強さ(ベロシティ)及び音高のデータ項目
から成る。
【0017】図9は図2のCPU1によって実行される
メインルーチンのフローチャートであり、本自動作曲機
の全体的動作を示すものである。9−1でCPU1は各
変数の初期化を実行する(cflag=0、sflag
=0)。9−2でCPU1はパネルスイッチ6と鍵盤7
にある入力操作子の状態をよむ。つづいて、各入力指示
に対応して処理を行う。即ち、スケール変更指示(sc
ale)の場合(9−3)は変数scaleを更新する
(9−4)。キー変更指示(key)の場合(9−5)
は変数keyを更新する(9−6)。コード進行変更指
示(chord)の場合(9−7)は図6に示すコード
進行メモリの変数cho[ ]を更新する。メロディ素
材選択指示(Melody)の場合(9−9)はROM
4、RAM5にあるメロディ素材のなかから該当するメ
ロディ素材を選択する(9−10)。ポジション指定の
場合(9−11)はメロディ素材をコード進行のどこか
ら始めるかを示すポジション変数pos0を設定する
(9−12)。音高差メモリ選択指示(pc[ ])の
場合(9−13)はROM4にある複数の音高差メモリ
のなかから該当する音高差メモリを選択する(9−1
4)。メロディ変形指示の場合(9−15)はメロディ
変形処理を行う(9−16)。9−17でシステム終了
の場合はメインルーチンを抜ける。
【0018】図10はメロディ変形処理ルーチン9−1
6のフローチャートである。まず10−1でメロディ素
材メモリと生成メロディメモリに対するノートポインタ
pp、mpをpp=0、mp=0に初期化する。次にピ
ッチ変更処理10−2を実行し、メロディ素材の各音の
音高を音楽背景(コードとスケール)に従って変更す
る。ピッチ変更処理10−2の詳細は後述する。次に発
音中のコード変化に対する処理(音分割処理)10−3
を実行する。この音分割処理10−3の詳細は後述す
10−4では次の音へ処理を移るためノートポイン
タpp、mpをpp=pp+PN(ここにPNは素材音
のデータ項目数)、mp=mp+MN(ここにMNは生
成音のデータ項目数)によって更新する。10−5では
最後の音まで処理が完了したかどうか(pDB[pp+
NTT]=ffffH)を検査し、完了してなければ1
0−2以下の処理を続ける。
【0019】図11にピッチ変更処理10−2のフロー
を示す。まずコードサーチ11−1を実行し、着目して
いる音(素材音)に適用されるコードをコード進行から
サーチし、サーチしたコードのルートとタイプをそれぞ
れ変数chord[ROOT]、chord[TYP
E]にセットする。次に音高変更カウンタpccntを
pccnt=0に初期化し(11−2)、生成音の最初
の音高候補を素材音の音高で初期設定する(11−3:
pit=pDB[pp+PIT])。次に(11−
4)、音高候補pitの音種ntを生成音の音楽背景
(コードとスケール)に従って分類する。
【0020】音種テスト11−5では、分類した音高候
補pitの音種ntを素材音の音種pDB[pp+NT
T]と比較する。音高候補pitの音種が素材音の音種
と所定の関係nt≦pDB[pp+NTT]を満たすと
きこの音高候補は変更音高として決定され、処理は11
−7を経て11−9へ進む。そうでなければ次の音高候
補を生成する(11−6)。即ち、pitに音高差メモ
リからの音高差データpc[pccnt]を加算して次
の音高候補を得る(pit=pit+pc[pccn
t])とともにカウンタpccntをインクリメントす
る。次の音高候補についての音種分類11−4と音種テ
スト11−5を繰り返す。所定回数の音種テストがすべ
て不合格の場合(11−7でpccnt>所定値が成
立)は、素材音の音高データpDB[pp+PIT]を
再度pitにセットし(11−8)、次の処理11−9
に移る。
【0021】11−9と11−10ではメロディ素材メ
モリからの素材音のタイミングpDB[pp](正確に
は、この発音タイミングデータpDB[pp]にメロデ
ィ素材対コード進行の相対タイミング変数pos0を加
えたもの)、長さpDB[pp+DUR]、強さpDB
[pp+VEL]を生成メロディノートのタイミングm
el[mp]、長さmel[mp+DUR]、強さme
l[mp+VEL]としてコピーするとともに、決定し
た変更音高データpit(音種テスト11−5で合格し
た音高候補または11−8でセットした素材音の音高デ
ータ)を生成メロディノートの音高mel[mp+PI
T]としてセットする。
【0022】なお、音種テスト11−5において、合格
条件をnt≦pDB[pp+NTT]としているのは次
の理由による。図3で上述したように、音種について、
コードトーンには数値“0”、アベイラブルノートには
数値“1”、スケールノートには数値“2”、テンショ
ンノートには数値“3”、アボイドノートには数値
“4”を割り当てている。各音種に割り当てた数値はそ
の音種が使用される優先度(数値が低いほど優先度が高
い)を表わしているとみることができる。11−5にお
ける音種条件pDB[pp+NTT]≧ntは、分類し
た音種(音高候補pitの音種)がオリジナルの音種よ
り低くない優先度をもつことを意味している。このよう
に、ピッチ変更処理では、メロディ素材の各音の音高を
変更するために、各素材音の発音タイミングにおける音
楽背景情報(コード進行において適用されるコードとス
ケール)を取り出す。次に素材音高を最初の音高候補と
して生成し、以下、音高差テーブルを用いて複数の音高
候補を順次生成し、各音高候補の音種を取り出した音楽
背景情報に従って分類する。そして音高候補の分類音種
が素材音種に対し所定の条件を満たすとき、その音高候
補を変更音高して決定している。結果としてピッチ変更
処理はメロディ素材の音高列を入力された音楽背景情報
(コード進行とスケール)に合うように修正した音高列
を生成する。
【0023】図12にコードサーチ11−1の詳細なフ
ローを示す。まずコードが未入力(cflag=0)の
ときは(12−1)、chord[ROOT]=0、c
hord[TYPE]=NCにセットする(12−
2)。コードが入力されていれば、コードポインタcp
をcp=0を初期化し(12−3)、着目している素材
音のコード進行上での発音位置posをpos=pos
0+pDB[mp](ここにpos0はコード進行に対
するメロディ素材の相対タイミングを示し、pDB[m
p]メロディ素材メモリに記憶した素材音の発音タイ
ミングデータを示す)によって算出する(12−4)。
次に素材音の発音位置posとコードのタイミングch
[cp]とを比較し、pos≧ch[cp]ならば
cp=cp+CNによってコードポインタを次コードに
進める処理を繰り返す(12−5、12−6)。pos
<cho[cp]になったら、即ち素材音の次にくるコ
ードが見つかったら、その直前のコードch[cp−
CN]が素材音に適用されるコード、即ち、素材音の発
音時点で音楽背景になっているコードである。そこでそ
のコード根音データcho[cp−CN+ROOT]、
とタイプデータcho[cp−CN+TYPE]をそれ
ぞれ変数chord[ROOT]、chord[TYP
E]にセットする(12−7)。
【0024】図13は音種分類ルーチン11−4のフロ
ーチャートである。このフローで音高候補pitの音種
ntを入力音楽背景情報に従って分類している。詳しく
述べると、まずステップ13−1で、図4のコードトー
ンメモリctDB[ ]とテンションノートメモリtn
DB[ ]から現在の音楽背景のコードタイプchor
d[TYPE]に対するコードトーンピッチクラスセッ
トctDB[chord[TYPE]]とテンションノ
ートピッチクラスセットtnDB[chord[TYP
E]]を取り出し、pcs1とpcs2にそれぞれ格納
する。次にステップ13−2で図4のスケールノートメ
モリsnDB[ ]から音楽背景のスケールscale
のピッチクラスセットsnDB[scale]を取り出
しpcs3にセットする。13−3では音高候補pit
のコード根音に対する音程(いいかえるとコード根音を
Cとみたときの音高候補のピッチクラス)をpc1=
(pit−chord[ROOT]+12)mod12
により求める。13−4では音高候補pitのキーke
yに対する音程(いいかえるとキーをCに移調したとき
の音高候補のピッチクラス)をpc2=(pit−ke
t+12)mod12により求める。以下pc1を候補
ピッチクラスpc1と呼びpc2を候補ピッチクラスp
c2と呼ぶ。
【0025】コードトーンテスト13−5で、候補ピッ
チクラスpc1がコードピッチクラスセットpcs1に
含まれるなら音高候補の音種をコードトーンと決定し
て、ntにコードトーン(CT)を示す“0”をセット
する(13−6)。ここにpc1がpcs1に含まれる
かどうかは、2のpc1乗とpcs1のビット毎の論理
積をとり、それが2のpc1乗と等しいかどうか(2
pc1∩pcs1と2pc1が等しいかどうか)で判定され
る。アベイラブルノートテスト13−7で、候補ピッチ
クラスpc1がテンションピッチクラスセットpcs2
に含まれかつ候補ピッチクラスpc2がスケールピッチ
クラスセットpcs3に含まれるなら音高候補の音種を
アベイラブルノートと決定してnt1にアベイラブルノ
ート(AN)を示す“1”をセットする(13−8)。
スケールノートテスト13−9で、候補ピッチクラスp
c2がスケールピッチクラスセットpcs3に含まれる
なら(13−7は不成立だから候補ピッチクラスpc1
はテンションピッチクラスpcs2には含まれない)、
音高候補の音種をスケールノートと決定してntにスケ
ールノート(SN)を示す“2”をセットする(13−
10)。テンションノートテスト13−11で候補ピッ
チクラスpc1がテンションピッチクラスセットpcs
2に含まれるなら(13−7は不成立だから候補ピッチ
クラスpc2はスケールピッチクラスpcs3には含ま
れない)、音高候補pitの音種をテンションノートと
決定してntにテンションノート(TN)を示す“3”
をセットする。
【0026】音高候補pitがコードトーンでなく(1
3−5)、アベイラブルノートでなく(13−7)、ス
ケールノートでなく(13−9)、テンションノートで
ない(13−11)ときは、その音種をアボイドノート
と決定してntにアボイドノート(AV)を示す“4”
をセットする。以上の音種分類処理11−4の結果、音
高候補pitは“コードトーン”、“アベイラブルノー
ト”、“スケールノート”、“テンションノート”、
“アボイドノート”のいずれかに分類される(音楽背景
情報としてスケールとコード進行が与えられる場合)。
【0027】図14に発音中のコード変化に対する音分
割処理10−3のフローを示す。まずコード変化のチェ
ック14−1で、 cho[cp]≧mel[mp]+mel[mp+DU
R] かどうかをチェックする。ここにmel[mp]は着目
している音の発音タイミング、mel[mp+DUR]
はその音長を示し、cho[cp]は着目している音の
発音タイミングより後に来るコード(次コード)のタイ
ミング(コードの切り替り位置)を示している。したが
ってmel[mp]+mel[mp+DUR]は音の発
音終了位置を表わす。したがって、上式が成立すれば、
次コードは音の発音終了後に来るからなにもせずにリタ
ーンする。上式が不成立のときは音の発音中にコード変
化があることを意味する。そこで14−2〜14−7に
示す処理を実行して音をコード変化前に対するノート1
とコード変化後に対するノート2に分割し、ノート2の
音高を決定する。
【0028】詳しく述べると、まず14−2でノート2
の長さmel[mp+MN+DUR]を、 mel[mp+MN+DUR]=mel[mp+DU
R]+mel[mp]−cho[cp] によって算出する。次に14−3でノート1の長さme
l[mp+DUR]を mel[mp+DUR]=cho[cp]−mel[m
p] によって算出する。次に14−4でノート2の音高の最
初の候補pitを pit=mel[mp+PIT] で示すようにノート1の音高にセットする。次に14−
5でノート2の発音タイミングmel[mp+MN]を mel[mp+DUR]=cho[cp] にセットする。したがって、ノート2はコードの切り替
え位置から発音される。次に14−6で生成メロディの
ノートポインタmpとコード進行のコードポインタcp
を、mp=mp+MN、cp=cp+CNによって次に
進める。次に14−7でノート2に適用されるコードの
コード根音データcho[cp−CN+ROOT]とタ
イプデータcho[cp−CN+TYPE]をそれぞれ
chord[ROOT]とchord[TYPE]にセ
ットする。
【0029】最後にノート2のピッチをピッチ変更処理
14−8で決定する。このピッチ変更処理14−8は図
11に示す素材音のピッチ変更ルーチンのうち、コード
サーチ11−1とピッチ第1候補セット11−3のステ
ップをスキップして実行される(ノート2のコード情報
は14−7で得ており、ノート2のピッチ第1候補は1
4−4で既に設定しているからである)。結果として、
ノート2の音高はノート1の音高をノート2の音楽背景
である変化後のコードとスケールに従って修正したもの
になる。14−8でノート2のピッチ決定後、再びコー
ド変化チェック14−1に戻る。これは、先のノート2
がその発音中にさらにコード変化する可能性を考慮した
ものである。結果として、素材音はその発音中にN回コ
ードが変化すれば、(N+1)個のノートに分割される
ことになる。図15は図14に示す音分割処理の説明図
(素材音を2つのノートに分割したケース)である。図
の説明は自明であるので省略する。
【0030】図16を参照して動作例を述べる。入力条
メロディ素材400:全音符のC4、音種=コードトー
ン(音長=mel[mp+DUR]=1920) コード進行401:Cmaj(2拍)−E7(2拍) (Cmajのタイミング=0、E7のタイミングcho
[cp]=960) キー:c スケールタイプ:ダイアトニック
【0031】動作 まず、最初の音として素材音高C4はその音楽背景(コ
ードCmaj、キーcのダイアトニックスケール)にお
いて、コードトーンであるので素材音種=コードトーン
に対する音種条件を満たす。したがって素材音のピッチ
変更処理(図11)は、音高C4をそのまま生成音高と
して決定する。音分割処理(図13)において、次コー
ドE7のタイミングcho[cp]=960、最初の音
の発音タイミングmel[mp]=0、音長mel[m
p+DUR]=1920であるので、発音中にコード変
化ありと判定される。音分割処理の結果、 ノート1の音長=mel[mp]+mel[mp+DUR]−cho[cp] =0+1920−960 =960、(=2分音符) ノート2の音長=cho[cp]−mel[mp] =960−0 =960、(=2分音符) ノート2の発音タイミング=E7のタイミング=cho[cp] =960 となる。また、ノート2の音高は、第1候補C4からテ
ストされ、音高候補=B3のとき、その音種=コードE
7のコードトーンとなって音種テストに合格し、B3に
決定される。図16に生成メロディデータを参照番号4
02で示している。
【0032】図17に音分割処理の変形例のフローチャ
ートを示す。上述した図14の音分割処理との違いは、 (A)変化前のコードに対するノート1の長さが所定長
より短ければノート1を生成メロディから削除する。 (B)変化後のコードに対するノート2の長さが所定長
より短ければノート2を生成メロディから削除する。 点である。即ち、17−3でノート2の長さデータが所
定値に満たないときは音分割をせずにそのままリターン
する。また17−6でノート1の長さデータを所定値と
比較し、所定値に満たないときは、17−7で mel[mp]=cho[cp](変化後のコードに対
するノートの発音タイミングを変化後のコードのタイミ
ングとする) mel[mp+DUR]=mel[mp+MN+DU
R](17−2で求めたノート2の音長を変化後のコー
ドに対するノートの音長とする) cp=cp+CN(コードポインタを更新する) を実行して、生成メロディデータの配列mel[ ]上
からmp番目のノートのデータ(タイミング、音長)を
変化後のコードに対するノートのために、変更する(こ
れによって生成メロディ配列のmp番目のノートであっ
たノート1のデータが削除される)。その後、変化後の
コードの情報を読み(17−10)、変化後のコードに
対するノートの音高を17−11で決定する。その他の
点は図14の音分割処理と同様であり、図17の17−
1、17−2、17−4、17−5、17−8、17−
9、17−11はそれぞれ、図14の14−1〜14−
8に対応している。
【0033】図18は図17の音分割処理の説明図であ
る。ケース1はコード変化位置でメロディ音とノート1
とノート2に分割した場合において、ノート1もノート
2も所定長より長い場合を示している(これは図14の
音分割処理結果と同じになる)。ケース2はノート2が
短かった場合であり、ケース3はノート1が短かった場
合である。ケース2ではノート2が削除されるため処理
結果に変化はなく、ケース3ではノート1が削除され、
コード変化位置を発音タイミングとする、次コードに対
するノート2のみが生成される。
【0034】図19に音分割処理の別の変形例を示す。
図14の音分割処理との違いは変化後のコードに対する
ノート2の発音タイミングをコード変化位置ではなくコ
ード変化位置の直前の拍子のタイミングに調整している
点である。即ち、19−5でノート2の位置mel[m
p+MN]を、 mel[mp+MN]=(cho[cp]÷480)×
480 によって拍子の位置に合わせている。ここに数値480
は一拍の長さを表わし、cho[cp]÷480=コー
ドの変化タイミングを480で割ったものの整数部の意
味である。結果としてノート2の位置はコード変化タイ
ミングcho[cp]の直前の拍子の位置にセットされ
る。なお、これに代え、ノート2の発音タイミングを直
後の拍子の位置あるいはコード変化タイミングに最も近
い拍子の位置にセットするようにしてもよい。その他の
点は図14の音分割処理と同様であり、図19の19−
1〜19−4、19−6〜19−8は図14の14−1
〜14−4、14−6〜14−8に対応している。
【0035】図20は図19の音分割処理の説明図であ
る。図示のように変化後のコードに対するノート2の発
音タイミングはコード変化タイミングの直前の拍子位置
に調整される。図21は音分割処理の更に別の変形例を
示すフローチャートである。図14の音分割処理との違
いは、発音中にコードが変化したときに、変化前のコー
ドに対する音(メロディ音高)が変化後のコードに対し
ても適合するかどうかをチェックし、適合しない場合に
のみ、音をノート1とノート2に分割するようにした点
である。適合チェックは21−2で行っており、その詳
細を図22に示す。まず22−1で変化後のコードのル
ートcho[cp+ROOT]とタイプcho[cp+
TYPE]をコード変数chord[ROOT]とch
ord[TYPE]にそれぞれセットする。次に(22
−2)、変化前のコードに対する音高mel[mp+P
IT]をピッチ変数pitにセットし、この音高の音種
をその音楽背景である変化後のコード(chord[R
OOT]、chord[TYPE])とスケール(sc
ale、key)によって分類する(22−3)。音種
テスト22−4で nt>pDB[pp+NTT] (ここにntは分類音種、pDB[pp+NTT]は素
材音の記憶音種)なら、不適合(22−5)でリターン
し、そうでないなら(nt≦pDB[pp+NTT]な
ら)、適合(22−6)でリターンする。図21に戻
り、適合の場合にはcp=cp+CNによってコードポ
インタcpを次のコードへ進めて(21−3)、発音中
のコード変化チェック21−1に戻る。不適合の場合は
図14の処理14−2〜14−8に相当する処理21−
4〜21−10を実行して音をコード変化前のコードに
対するノート1と変化後のコードに対するノート2とに
分割し、ノート2の音高を決定する。
【0036】図23の図21の音分割処理の説明図であ
る。ケース1はメロディ音の発音中にコードが変化した
が変化後のコードに対してもメロディ音が適合するた
め、音分割はされない場合である。ケース2は変化後の
コードに対してメロディ音が不適合のため音分割を行っ
た場合である。ケース1ではメロディ音(音種CT(コ
ードトーン)、音高C4)はその発音中にコードがCM
ajからAminに変化するが、変化後のコードAmi
nに対してもメロディ音C4はコードトーンであるため
音種条件を満たし、音分割はなされない。ケース2では
メロディ音(音種CT、音高C4)はその発音中にコー
ドがCMajからE7に変化する。メロディ音C4は変
化後のコードE7に対してはコードトーンでないため音
種条件を満たさない。音分割が実行され、コード変化後
のメロディ音であるノート2の音高はコードE7のコー
ドトーンであるB3に決定される。
【0037】以上、詳細に述べたように、この発明の自
動作曲方法ではメロディ素材に基づくメロディ音の発
期間中にコード変化があるかどうかを検査し、そのよ
うなコード変化があるときには変化後のコード(音楽背
景)に適合する音高の音を生成しているので音楽背景の
コードに合わないメロディ音の発生を防止できる。
【図面の簡単な説明】
【図1】この発明に従う自動作曲機のブロック図。
【図2】この発明による自動作曲機を組み込んだ電子楽
器のハードウェア構成のブロック図。
【図3】実施の形態で使用した各音楽要素の数値表現を
示す図。
【図4】標準ピッチクラスセットメモリを示す図。
【図5】メロディ素材メモリを示す図。
【図6】コード進行メモリを示す図。
【図7】音高差メモリを示す図。
【図8】実施の形態で使用した変数のリストを示す図。
【図9】実施の形態の全体動作を表わすメインルーチン
のフローチャート。
【図10】メロディ変形のフローチャート。
【図11】ピッチ変更処理のフローチャート。
【図12】コードサーチのフローチャート。
【図13】音種分類のフローチャート。
【図14】音分割処理のフローチャート。
【図15】図14の音分割処理の説明図。
【図16】動作例を示す図。
【図17】変形例の音分割処理のフローチャート。
【図18】図17の音分割処理の説明図。
【図19】別の変形例の音分割処理のフローチャート。
【図20】図19の音分割処理の説明図。
【図21】更に別の変形例の音分割処理のフローチャー
ト。
【図22】変化後コード適合検査のフローチャート。
【図23】図21の音分割処理の説明図。
【符号の説明】
10 メロディ素材メモリ 20 スケール入力部 30 コード進行入力部 40 音高変更部 50 音分割部
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G10H 1/00 101 - 102 G10G 3/04 G10H 1/36

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】コード進行を入力する入力ステップと、 各音発音タイミング、音長および音高で表現された
    ロディ素材の各音の発音タイミングと音長とによって定
    められる発音期間中に、コード変化があるか否かを検査
    する検査ステップと、 前記検査の結果、コード変化がある場合に、前記メロデ
    ィ素材の音を、変化前のコードに対する第1音および
    化後のコードに対する第2音としてそれぞれ割り当てた
    ときに、前記第1音および第2音の音長がいずれも所定
    の長さより長ければ、前記第1音および第2音として前
    記メロディ素材の音を分割し、一方、前記第2音の音長
    が所定の長さより短ければ、前記メロディ素材の音を分
    割しない分割ステップと、 前記メロディ素材の音が分割された場合の第2音の音高
    を、前記変化後のコードに基いて決定する音高決定ステ
    ップと、前記分割された第1音および第2音を作曲結果として記
    憶手段に記憶させる記憶ステップと、 からなることを特徴とする自動作曲方法。
  2. 【請求項2】コード進行を入力する入力ステップと、 各音が発音タイミング、音長および音高で表現されたメ
    ロディ素材の各音の発音タイミングと音長とによって定
    められる発音期間中に、コード変化があるか否かを検査
    する検査ステップと、 前記検査の結果、コード変化がある場合に、前記メロデ
    ィ素材の音を、変化前のコードに対する第1音および変
    化後のコードに対する第2音としてそれぞれ割り当てた
    ときに、前記第1音および第2音の音長がいずれも所定
    の長さより長ければ、前記メロディ素材の音を分割して
    前記第1音および第2音を生成し、一方、前記第1音の
    音長が所定の長さより短ければ、前記第2音のみを生成
    する分割ステップと、 前記第2音の音高を、前記変化後のコードに基いて決定
    する音高決定ステップと、 前記生成された第1音および第2音を作曲結果として記
    憶手段に記憶させる記憶ステップと、 からなる ことを特徴とする自動作曲方法。
  3. 【請求項3】コード進行を入力する入力ステップと、 各音が発音タイミング、音長および音高で表現されたメ
    ロディ素材の各音の発音タイミングと音長とによって定
    められる発音期間中に、コード変化があるか否かを検査
    する検査ステップと、 前記検査の結果、コード変化がある場合に、前記メロデ
    ィ素材の音を、変化前のコードに対する第1音および変
    化後のコードに対する第2音としてそれぞれ割り当てた
    ときに、前記第1音および第2音の音長がいずれも所定
    の長さより長ければ、前記メロディ素材の音を分割して
    前記第1音および第2音を生成し、また、前記第2音の
    音長が所定の長さより短ければ、前記メロディ素材の音
    を分割せずそのままとし、また、前記第1音の音長が所
    定の長さより短ければ、前記第2音のみを生成する分割
    ステップと、 前記第2音の音高を、前記変化後のコードに基いて決定
    する音高決定ステップと、 前記生成された第1音および第2音を作曲結果として記
    憶手段に記憶させる記憶ステップと、 からなる ことを特徴とする自動作曲方法。
JP29929395A 1995-10-25 1995-10-25 自動作曲方法 Expired - Fee Related JP3528372B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29929395A JP3528372B2 (ja) 1995-10-25 1995-10-25 自動作曲方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29929395A JP3528372B2 (ja) 1995-10-25 1995-10-25 自動作曲方法

Publications (2)

Publication Number Publication Date
JPH09120283A JPH09120283A (ja) 1997-05-06
JP3528372B2 true JP3528372B2 (ja) 2004-05-17

Family

ID=17870659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29929395A Expired - Fee Related JP3528372B2 (ja) 1995-10-25 1995-10-25 自動作曲方法

Country Status (1)

Country Link
JP (1) JP3528372B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2903804B1 (fr) * 2006-07-13 2009-03-20 Mxp4 Procede et dispositif pour la composition automatique ou semi-automatique d'une sequence multimedia.
JP7274082B2 (ja) * 2021-08-19 2023-05-16 パナソニックホールディングス株式会社 音楽生成装置、音楽生成方法、及び音楽生成プログラム

Also Published As

Publication number Publication date
JPH09120283A (ja) 1997-05-06

Similar Documents

Publication Publication Date Title
US6051770A (en) Method and apparatus for composing original musical works
EP2772904B1 (en) Apparatus and method for detecting music chords and generation of accompaniment.
JP2995303B2 (ja) メロディ対コード進行適合性評価装置及び自動コード付け装置
US6576828B2 (en) Automatic composition apparatus and method using rhythm pattern characteristics database and setting composition conditions section by section
JP3484986B2 (ja) 自動作曲装置、自動作曲方法および記憶媒体
JP2010538335A (ja) 音声メロディ向けの自動伴奏
US6175072B1 (en) Automatic music composing apparatus and method
EP0451776B1 (en) Tonality determining apparatus
JPH02306283A (ja) メロディ分析機
US4682526A (en) Accompaniment note selection method
JPH11344979A (ja) メロディ生成装置と記録媒体
JP2002023747A (ja) 自動作曲方法と装置及び記録媒体
Illescas et al. Harmonic, melodic, and functional automatic analysis
JPH07219536A (ja) 自動編曲装置
CN113838444A (zh) 生成编曲的方法、装置、设备、介质及计算机程序
US4719834A (en) Enhanced characteristics musical instrument
JP3528372B2 (ja) 自動作曲方法
JPH0981142A (ja) 自動作曲機
JP3364941B2 (ja) 自動作曲機
JP2002323891A (ja) 楽曲分析装置、及びプログラム
JPH09120282A (ja) 自動作曲機
Cabral et al. Playing along with d’Accord guitar
JP3528361B2 (ja) 自動作曲機
JPH01262595A (ja) コード進行生成装置
JP3216529B2 (ja) 演奏データ分析装置および演奏データ分析方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20031216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040216

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090305

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100305

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110305

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110305

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120305

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130305

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140305

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees