JPH04110898A - コード進行選択装置 - Google Patents

コード進行選択装置

Info

Publication number
JPH04110898A
JPH04110898A JP2229428A JP22942890A JPH04110898A JP H04110898 A JPH04110898 A JP H04110898A JP 2229428 A JP2229428 A JP 2229428A JP 22942890 A JP22942890 A JP 22942890A JP H04110898 A JPH04110898 A JP H04110898A
Authority
JP
Japan
Prior art keywords
chord progression
passage
chord
chain
pointer
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.)
Granted
Application number
JP2229428A
Other languages
English (en)
Other versions
JPH06103436B2 (ja
Inventor
Jiyunichi Minamidaka
純一 南高
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 JP2229428A priority Critical patent/JPH06103436B2/ja
Publication of JPH04110898A publication Critical patent/JPH04110898A/ja
Publication of JPH06103436B2 publication Critical patent/JPH06103436B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [発明の技術分野] この発明は音楽装置に関し、特にコード進行選択装置に
関する。
[背 景] 従来のコード進行装置として、メロディにコード進行を
自動的に付加する自動コード付加装置が知られている。
残念ながら、この種の装置は人力情報としてメロディが
与えられなければコード進行を提供することができない
、したがって、コード進行をきっかけとしてメロディを
つくるような使用者には利用できない。
メロディなしにコード進行を自動的に生成するコード進
行装置として、コード間の遷移にマルコフ連鎖モデルを
適用し、マルコフ連鎖モデルで表現されたコード間の遷
移テーブルに乱数を組み合わせてコード進行を生成する
コード進行生成装置が知られている。残念ながら、この
種のコード進行生成装置で生成できるコード進行は多様
性に欠け、使用者の希望するようなコード進行を効率よ
く提供できない。
したがって、音楽知識が十分でないような使用者にとっ
て所望のコード進行を効率よく選択できるような環境を
与えるコード進行装置が望まれている。
[発明の目的] したがって、この発明の一般的な目的は使用者が希望す
るようなコード進行を効率よく提供可能なコード進行選
択装置を提供することである。
更に、この発明の具体的な目的はコート進行データベー
スからコード進行を検索する場合に、容易に所望のコー
ド進行を入手できるようにしたコード進行選択装置を提
供することである。
[発明の構成1作用1 コート進行データベースからコード進行を選択するコー
ト進行選択装置ではコード進行データベースに蓄積され
たコード進行が多くなるにつれ使用者にとって所望のコ
ード進行を選択する作業の能率が低下する。
このような問題を解決するため、この発明によれば、コ
ード進行のデータベースを記憶するコード進行データベ
ース手段と、各ポインタが前記コード進行データベース
手段における異なるコード進行を指す複数のポインタの
連鎖を記憶するチェインテーブル手段と、使用者の指示
に従って前記チェインテーブル手段を変更して前記チェ
インテーブル手段にポインタの所望の連鎖を設定するチ
ェインテーブル変更手段と、前記チェインテーブル手段
に設定されたポインタの所望の連鎖に基づいて前記コー
ド進行データベース手段からコード進行を選択するコー
ド進行選択手段とを有することを特徴とするコード進行
選択装置が提供される。
この構成によれば、使用者は、事前によさそうないくつ
かのコード進行を候補としてコード進行データベース手
段から予備的に選び出しておき、後で限られた数の候補
のなかから最終的に希望するコード進行を選択すること
ができる。したがって、やみくもにコード進行データベ
ース手段を検索して所望のコード進行を探し出すのに比
べ、コード進行の選択作業が著しく能率化される。限ら
れた数の候補はチェインテーブル変更手段によって管理
され、チェインテーブル手段内に局所化して置かれる。
更に、前記コード進行データベース手段の各コード進行
のレンジ(音楽スタイル、重要度$)を記憶するレンジ
記憶手段と、使用者の指示に従って所望のレンジを設定
するレンジ設定手段とを設け、前記コード進行選択手段
が設定されたレンジ内のコード進行をコード進行データ
ベース手段から選択するようにしてもよい。
この構成の場合、使用者からみればコード進行データベ
ースはレンジ別に分割されており、使用者は指定したレ
ンジのコード進行データベースからコード進行を選択す
ればよいので、−層、コード進行選択作業が能率化され
る。
[実施例] 以下図面を参照してこの発明の詳細な説明する。まず、
この発明の一態様であるコード進行選択装置について述
べ(第1図〜第18図)、その後で、このコード進行選
択装置を楽曲のコード進行の生成に利用するコード進行
生成装置について述べる(第19図〜第51図)。
第1図にこの発明によるコード選択装置の一態様を示し
、第2図にそのデータ構造を示す。コード進行データベ
ースIOは複数のコード進行を記憶する。データベース
マネージャ20は使用者がコード進行データベース10
から所望のコード進行を選択する場合にその入手を容易
にするユーザーインターフェースを提供するものである
。データベースマネージャ20のチェインテーブル21
は各ポインタが前記コード進行データベース10の異な
るコード進行をさす複数のポインタの連鎖を記憶する。
チェインテーブル変更部22は使用者の指示に従って前
記チェインテーブル21を変更してチェインテーブル2
1にコード進行ポインタの所望の連鎖を設定する。チェ
インテーブル21にポインタの所望の連鎖を設定した後
、使用者はコード進行選択部23を介してコード進行デ
ータベース10から容易に所望のコード進行を入手する
事かでざる。このためにコード進行選択部23はチェイ
ンテーブル21の設定状態を管理する情報をもらいうけ
、使用者からのコード進行要求に対してチェインテーブ
ル21を参照してユーザの要求したコート進行のポイン
タを見つけ、そのポインタを用いてコード進行データベ
ース10からコード進行を選択する。
コード進行データベース10にはさまざまなコーl’進
行が含まれる。−実使用者にとっては曲風等を想定して
曲風等に合ったコード進行を望む事が多い。この点を考
慮して第1図のコード選択装誼は使用者からのコード進
行のレンジ設定入力を受けることかでざる。このレンジ
設定入力は設定レンジメモリ24に記憶される。これに
関連し、コード進行データベース10は複数のコード進
行とともに各コード進行のレンジ(重要度)を記憶する
ことができる。この場合コード進行選択部23は使用者
からのコード進行要求に対し、設定レンジメモリ24に
設定されたレンジに含まれるコード進行をコード進行デ
ータベース10から選択する。
第1図のコード選択装置の各部のデータ構造は種々の形
態をとり得る。その−例を第2図に示す。
第2図においてチェインテーブル21はX。
X、、X、・・・・・・Xs−+ 、Xsで示すような
複数のコード進行ポインタを含む、各ポインタは次のポ
インタへのリンク21Nと前のポインタへのリンク21
Fの情報を含む0例えばポインタXI の次リンク21
Nはポインタx2を指し、ポインタx1の前ポインタ2
1Fはポインタxoを指す。
これらのリンクによりXa 、X+ 、X2 、・・・
・・・Xi+−1、X)1のポインタ連鎖が形成される
。ここにポインタxoは先頭ポインタであり、ポインタ
XNは最終ポインタである。
チェインテーブル変更部22はチェインテーブル21の
ポインタ連鎖を管理するためにヘッドポインタ22H、
テイルポインタ22T、現ポインタ22Cを使用する。
ヘッドポインタ22Hはチェインテーブル21の先頭ポ
インタXOを指し、現ポインタ22Cはチェインテーブ
ル21の現要素を指す、チェインテーブル変更部22は
これらのポインタ22H122T、22Cを用いてチェ
インテーブル21の要素のつながり方を変更することが
できる1例えばチェインテーブル21の要素X1をチェ
インテーブルの先頭要素に変更する場合には、要素x1
の次リンクが要素Xoを指し、要素XOの前リンクが要
素x1を指し、要素XOの次リンクが要素x2を指し、
要素x2の前リンクが要素Xo を指すようにし、−\
ラドポインタ22Hが要素x1を指すようにすれば要素
x1を先頭とし、次に要素Xoが続き、次に要素x2が
続くポインタ連鎖が得られる。このような連鎖の変更は
、使用者からの指示に従って行なわれる。その結果チェ
インテーブル21には所望のコード進行ポインタの連鎖
が形成される。
なおチェインテーブル21はメモリの連続領域を用いて
実現することもできる。この場合あるアドレスの次のア
ドレスに次のコード進行ポインタが記憶され、あるアド
レスの前のアドレスに前のコード進行ポインタが記憶さ
れることになる。
第2図においてコード進行データベース10はデータベ
ース本体10Aとポインタテーブル10Bと重要度テー
ブルIOCから成る。データベース本体10Aには複数
のコート進行が記憶される。データベース本体10Aの
各コード進行はポインタテーブルIOHの各要素によっ
て指し示される0例えばポインタテーブルIOBの#0
の要素はデータベース本体10Aのコード進行#0を指
す0重要度テーブルIOCはデータベース本体10Aの
各コード進行の重要度(レンジ)を示す情報を記憶する
0例えば重要度テーブルIOCの要素R(#O)はデー
タベース本体10Aのコード進行#0の重要度を表わす
、コード進行選択の際、データベース本体10Aの中か
ら設定レンジメモリ24に設定したレンジ内のコード進
行が選択される。
このようなデータ構造の場合、チェインテーブル21の
各要素のリンクとチェインテーブル変更部22の管理す
るポインタ22H122T、22Cはコード進行データ
ベースlOのポインタテーブルIOHの要素を指す事に
なる。
第2図に例示するコード進行選択部23は、次コード進
行選択部23Nと前コード進行選択部23Pを有する。
各コート進行選択部23N、23Pは使用者からのコー
ト進行要求に対して現ポインタ22Cを更新し、コード
進行データベースlOから設定レンジメモリ24に設定
した設定レンジに合うコード進行を選択する。詳しく述
へると次コート進行選択部23Nは使用者からの次コー
ド進行要求に対して次のように動作する。まず次コード
進行選択部23Nは現ポインタ22Cを用いて、現ポイ
ンタ22Cの指すチェインテーブル21の要素をアクセ
スする。そしてその要素の次リンクを読み、それによっ
て現ポインタ22Cを書き換える0次に次コード進行選
択部は更新した現ポインタ22Cを用いてコード進行デ
ータベース10の重要度テーブルlOCをアクセスし、
アクセスした重要度が設定レンジに合うかどうかを調べ
、合わなければ再びチェインテーブル21を参照して、
現ポインタ22Cを更新し、それによって重要度テーブ
ルIOCを再びアクセスする。
アクセスした重要度が設定レンジ内であれば次コード進
行選択部23Nは現ポインタ22Cを用いてポインタテ
ーブルIOHの要素をアクセスし、更にそのポインタテ
ーブルIOHの要素によってデータベース本体10Aの
コード進行をアクセスすることにより次コード進行を選
択する。同様にコード進行選択部23Fは使用者からの
前コード進行要求に対してチェインテーブル21を参照
して現ポインタ22Cを前のコード進行を指す値に更新
し、更新した現ポインタ22Cを用いて、重要度テーブ
ル10Cをアクセスし、設定レンジ内の重要度をもつコ
ード進行を捜し出す、これによって前コード進行が選択
される。
コード進行データベース10が多数のコード進行を含む
場合に以上のようなコード選択装置がなければその中か
ら所望のコード進行を見つける作業は大変なものになる
0本コード選択装置によればチェインテーブル21にあ
らかじめ良さそうな幾つかのコード進行を指す情報を局
在化させることができる。したがって実際のコード進行
選択作業の際にコード進行データベース10の全体の中
から所望のコード進行を捜し出す必要はなく、よさそう
な幾つかのコード進行の中から最終的に希望するものを
選びだせば良い、したがってコード進行選択作業が著し
く能率化されることになる。
第1図と第2図で述べたようなコード進行選択装置の機
能を含むコンピュータベースの音楽装置を第3図に示す
、このマイクロコンピュータ音楽装置はコンピュータ資
源として、CPU100、プログラム及び定数のメモリ
としてのROM200、ワーキングメモリとしてのRA
M300及び入/出力装M400を含む、更に第3図の
音楽装置の機能を明らかにするためにコード進行選択装
置500と伴奏ライン生成装置600を示す、コード進
行選択装置500はコード進行データベース510、チ
ェインテーブル変更部520、チェーンテーブル530
、コード進行選択部540、及びレンジ設定部550を
含む、伴奏ライン生成装!1600は、コード進行選択
装M500の選択したコード進行にしたがって伴奏ライ
ンを生成するものであり、伴奏パターンメモリ610、
標準ピッチクラスセットメモリ620.伴奏ピッチ生成
部630、及び音源640を含む、コード進行選択装M
500の各要素と伴奏ライン生成装M600の各要素は
実際には上述したコンピュータ資源の1以上によって実
現される0例えばコード進行データベース510はRO
M200の一部によって実現される。
第4図にコード進行選択装M500に使用される入力装
置を示す、コード進行選択装M500の入力装置には、
チェインテーブルを変更するのに用いるチェインテーブ
ル変更スイッチ560とコード進行を選択するのに使用
するコード進行セレクタ562とコード進行の範囲を設
定するためのレンジセレクタ564が含まれる。特に図
示の例ではチェインテーブル変更スイッチ560は、ト
ップキー560Aから成り、コード進行セレクタ562
は次キー562Aと前キー562Bから成り、レンジセ
レクタ564はNキー564AとMキー564BとWキ
ー564Cから構成される。
トップキー560Aはチェインテーブルの先頭に移すの
に使用され、次キー562Aは次のコード進行を選択す
るのに使用ごれ、前キー562Bは前のコート進行を選
択するのに使用ごれ、Nキ564Aは狭い範囲のコード
進行データベースを選択するのに使用され、Mキー56
4Bは中程度の範囲のコード進行データベースを選択す
るのに使用コードされ、Wキー564Cは、広い範囲の
コード進行データベースを選択するのに使用される。
第5図に主な変数のリストを示す、 cpdb[]はチ
チエインテープのヘッダ(同時にコード進行データベー
スのヘッダ)を表わし、その要素であるcpdb[0]
はチェインテーブルの先頭要素を示し、cpdb[1]
はチェインテーブルの現要素を示し、cpdb[2]は
チェインテーブルの最後の要素を示す、 cpdb[o
] 、 cpdb[1] 、 cpdM2]はそれぞれ
第2図のヘッダポインタ22H、ティルボインタ22T
、現ポインタ22Cに相当するものである。
したがってcpdb[0] は先頭コード進行を示し、
cpdb[I] は現コード進行を指し示し、cpdb
[2] は終端コード進行を指し示す、chain[]
はチチエインテープである。 rangeは設定された
レンジデータである。
第6図に主な定数のリストを示す、 cpAdr[]は
コード進行ポインタ/重要度テーブルである。
cboPI ]はコード進行データベース(本体)であ
る。
第7図にデータの例を示す、このデータ例にしたがって
データ構造を述べるとcpdb[]の各要素はチェイン
テーブルchain[]の特定の要素(先頭、現在、最
後)を指すとともにコード進行ポインタ/重要度テーブ
ルcpAdr[]の要素を指す、コード進行ポインタ/
重要度テーブルcpAdr[]は偶数アドレスにコード
進行データベースchoP[]のコード進行のポインタ
を記憶し、その次の奇数アドレスにそのコード進行の重
要度(レンジ)を示すデータを記憶する6例えばcpA
dr [0]はコード進行データベースchoP[]の
最初のコード進行を指し、この最初のコード進行の重要
度はcpAdr [連鎖にあるデータlによって示され
る。4重要度データの値“0”は広い範囲を示し、値“
l”は中程度の範囲を示し、値“2″は狭い範囲を示す
。チェインテーブルchain[]は両方向の一次元リ
ストの構造をとる。チェインテーブルの各要素は隣り合
う偶数と奇数のアドレスを占め、偶数のアドレスに次の
チェインテーブル要素へのリンクを記憶し、奇数アドレ
スに前のチェインテーブル要素へのリンクを記憶する0
例えばアドレス2と3を占めるチェインテーブル要素は
アドレス2のデータ4によって次のチェインテーブル要
素を指し、アドレス3にあるデータ0によって前のチェ
インテーブル要素を指す、ただしチェインテーブルの先
頭の要素には前の要素がリンクしないのでこのことを示
すため先頭の要素のアドレス1には“−1”のデータが
記憶されている。同様にチェインテーブルchain[
]の最後の要素には次の要素がリンクしないのでそのこ
とを示すためアドレス4にあるデータは“−1”となっ
ている。
第8図に第3図の音楽装置のメインフローを示す、まず
、初期化を実行する(8−1)。次に入力待ち(8−2
)に進み、入力があるとその入力に対応する処理を実行
する(8−3〜8−16)、すなわちコード進行セレク
タ562の次キー562Aが押された時には(8−3)
、次コード進行選択処理(8−4)を実行し、コード進
行セレクタ562の前キー562Bが押された時には(
8−5)、前コード進行選択処理(8−6)を実行する
。又、プレイキー(図示せず〕が押された時には(8−
7)、選択されているコード進行にしたがって伴奏を行
なう(8−8)。チェインテーブル変更のためのトップ
キー560Aが押された時には(8−9)、チェインテ
ーブルの現要素をチェインテーブルの先頭に移すトップ
処理(8−10)を実行する。レンジセレクタ564の
Nキー564A、Mキー564B、Wキー5640の各
操作に対しては(8−連鎖,8−138−15)、それ
ぞれレンジを“2”、“1″“0”に設定する(8−1
2.8−14.8−16)。
メインフローの初期化S−tの詳細を第9図に示す。初
期化ルーチンではチェインテーブルchain[1の初
期化、チェインテーブルのへラダcpdb[]の初期化
、及びレンジデータrangeの初期化を行なう6図示
の初期化ルーチン9−1〜913ではチェインテーブル
の先頭の要素がコード進行データベースchoP[]の
最初のコート進行を表わし、次のチェインテーブル要素
がコード進行データベースの次のコード進行を指し、以
下同様にしてチェインテーブルの最後の要素がコード進
行データベースの最後のコード進行を指すようにチェイ
ンテーブルchain[]を初期化している。
これに関連し、チェインテーブルのヘッダでありコード
進行データベースのヘッダであるcpdb[]について
は先頭ポインタcpdb[0] にコード進行データベ
ースchol’l 1の最初のコード進行を示す“0″
をセットし、同様に現ポインタcpdb[1] にも“
O”を設定し、テイルポインタcpdb[2] にはコ
ード進行データベースchoP[] の最納コード進行
を示す値を設定している(9−5.9−12)、又、r
angeには広い範囲を表わす“0”を設定している(
9−13)。
第1O図はメインフローの伴奏処理8−8で使用するコ
ード進行の読出し処理のフローである。
第連鎖図にコード進行データベースchoP[]のデー
タ構造を示す、コード進行データベースchoP[]は
複数のコード進行を記憶し、各コード進行は複数のコー
ドの列で構成される。各コードは根音、タイプ、ベース
、及び長さのデータから成る。コード進行エリアの終わ
りにはコード進行の終わりを示す符号fHが記憶される
。第10図のコード進行読出しルーチン10−1〜10
〜5ではコード選択装置によって選択されているコード
進行を読み出す、現ポインタcpdb[1]が指すコー
ド進行データベースポインタのアドレスcpAdr[c
pdb[1]] に選択されたコード進行の最初のアド
レスが記憶されるのでこのアドレスからデータを読みは
じめ、配列Cba rd []にセセラし、この処理を
コード進行の終わりを示すデータfHが見つかるまで続
ける。
メインフローの次コード進行選択8−4の詳細を第12
図に示す0次コート進行選択ルーチンはコード進行セレ
クタ562の次キー562Aの操作に対して行なわれる
処理である。まず、121でcpdb[1] = cp
db[2]かどうかをみることにより現コード進行がチ
ェインテーブルの末尾かどうかを調べる。末尾でなけれ
ば12−2に進みcpab[1] = chain[c
pdb[1月により現コード進行をチェインテーブルの
次の要素が指すコード進行に移す、末尾の場合は12−
3を実行しテcpdb[1] =cpdb[o]により
現コード進行をチェインテーブルの先頭が指すコード進
行に移す、更に12−4においてcpAdr[cpdb
[1] + 1 ]≧rangeかどうかすなわちその
コード進行が設定したレンジ内のコード進行かどうかを
調べる。成立しなければ121〜12−3の処理を繰り
返す、この結実現ポインタcpdb[1] はチェイン
テーブルchain[]のコード進行ポインタの連鎖に
従いかつ設定レンジ内にある次の選択コード進行を指す
値をもつことになる。
第13図はメインフローの前]−ト進行選択ルーチア1
8−6の詳細である。前コード進行選択処理はコート進
行セレクタ562の前キー562Bの操作に応答して実
行される。まず13−1でcpdb[+]  とcpd
b[0] とを比較して現コード進行がチェインテーブ
ルの先頭要素が指すコード進行かどうかを調べる。先頭
でなければ13−2を実行してcpdb[1] =ch
ain[cpdb[1] + 1 ]により現コード進
行を1つ前のコード進行に移す、先頭であれば13−2
を実行して、cpdb[1] = cpdb[2] に
より現コード進行をチェインテーブルの末尾の要素が指
すコード進行に移す、更に13−3を実行してcpAd
r[cpdb[連鎖+ L ]≧rangeかどうカニ
よりそのコード進行が設定レンジ内のコード進行かどう
かを調べる。設定レンジ内でなければ131〜13−3
の処理を繰り返す0以上により現ポインタcpdb[1
]は設定レンジ内にある前の選択コード進行を指す値を
もつ。
第14図はメインフローのトップルーチン8−10の詳
細である。トップルーチンはトー2プキー560Aの操
作に応答して実行される。トップルーチンの処理の目的
は現ポインタの指すチェインテーブル要素をチェインテ
ーブルの先頭に移すことである。まず14−1で先頭ポ
インタcpdb[0]と現ポインタcpdb[1] と
を比較し、現コード進行がチェインテーブルの先頭の指
すコード進行かどうかを調べる。先頭であれば何もする
必要がないのでそのままルーチンルーチンをぬける0次
に14−2でティルポインタcpdb[2] と現ポイ
ンタcpdb[1] とを比較し、現コード進行がチェ
インテーブルの末尾の要素が指すコード進行かどうかを
調べる。末尾でなければ詳細を第15図に示すン−)A
 (14−3)を実行し、末尾であれば詳細を第17図
に示すソー)B(14−4)を実行する。
第16図にソー)Aのオペレーションヲ示ス。
第16図において楕円で囲んだものはチェインテーブル
の要素を表わす、ソー)Aを実行する前のチェインテー
ブルの状態を(1)に示す、Aがチェインテーブルの先
頭でそれにBが続き、Cが現ポインタcpdb[1]が
指すチェインテーブル要素であり、要素Cの前の要素は
Pであり、次の要素はNである。ソートAの目的は現要
素Cをチェインテーブルの先頭に移すことであり、結果
を第16図の(6)に示す、これを達成するため要素C
の前のリンクPと次のリンクNをセーブしく15−2.
15−1)、要素Cの次のリンクを要素Aとし、前のリ
ンクはコード進行なしく“−1”)とする(15−3.
15−4)、又、セーブしたリンクの値を用いて要素P
の次リンクNを要素Nを指す値とし、要素Nの前リンク
Pを要素Pを指す値とする(15−5.15−6)、又
、要素Aの前リンクを要素Cを指す値としく15−7)
、要素Cをチェインテーブルの先頭要素と呼び直す(1
5−8)、以上により第16図の(6)に示すようなチ
ェインテーブルが得られ、現コード進行を指すチェイン
テーブル要素がチェインテーブルの先頭に移る。
Ml 8図にソー)Hのオペレーションヲ示ス。
ソー)Bを行なう前のチェインテーブルの状態を第18
図の(1)に示す、Aが先頭要素でそれにB要素が続く
、現要素であるC要素はチェインテーブルの末尾であり
、その前に要素Pが位置する。ソー)Hの目的は要素C
をチェインテーブルの先頭に移動することである(結果
を第18図の(4)に示す)、このために要素Pの次リ
ンクをコード進行なしを示す値“−1”にセーyトL(
17−1)、要素Pをチェインテーブルの末尾の要素と
呼び直す(17−2)、又、要素Cの次リンクを要素A
を指す値とし、要素Aの前リンクを要素Cを指す値とす
る(17−4.17−5)。
又、要素Cの前はなしとしく17−3)、要素Cをチェ
インテーブルの先頭と呼び直す(17−6)、この結果
第18図の(4)に示すようなチェインテーブルが得ら
れる。
以上の説明かられかるように次キー562A、前キー5
62B、及びトップキー560Aを操作することにより
所望のコード進行のポインタ連鎖情報をもつチェインテ
ーブルを作成することができる。更にコード進行選択の
際には次キー562A又は前キー562Bを操作するこ
とにより容易に所望のコート進行を選択することができ
る。
次に上述したようなコード進行選択装置を応用したコー
ド進行生成装置について説明する。上の例ではコード進
行データベースに記憶される各コード進行を1曲分のコ
ード進行として利用した。
以下、説明するコード進行生成装置では、コード進行デ
ータベースに記憶されるコード進行を1曲分のコード進
行ではなく楽曲の一部である楽節のコード進行として利
用する。
第19図にコード進行生成装置のブロック図を示す、使
用者は入/出力装置50を介してコード進行生成装置4
0と対話することにより所望のコード進行を得ることが
できる。コード進行生成装置40はコード進行データベ
ース10からデータベースマネージャ20を介して選択
した複数のコード進行に基づいて楽曲のコード進行を編
集するコード進行エディタ30を含む。
コード進行エディタ30のデータ構造3O3は次のよう
になっている。まず、楽曲を楽節の連鎖として定義する
。So 、Sl、S7−8−5rSlがそれぞれ楽節を
表わしている。Soが先頭楽節であり、Slが最終楽節
である。又、SNは楽曲に追加可能な新楽節を表わして
いる。コート進行エディタ30はこのような複数の楽曲
の連鎖から成る楽曲を管理するため幾つかのポインタを
使用する。先頭楽節ポインタHは先頭楽節SOを指すポ
インタである。最終楽節ポインタTは最終楽節ST を
指す、新楽節ポインタNは新楽節SNを指す、目標楽節
ポインタOは編集対象の楽節を指す、現楽節ポインタC
は楽曲の中の現楽節な指す、各楽節は複数の要素を含む
、これらの要素にはキー、長さ、コード進行、メロディ
、リズム、楽節節ポインタ、前楽節ポインタがある。キ
ーは楽節のキーを表わし、長さは長さメモリ42から選
択した長さを指す情報をもつ、コード進行はコンピュ−
タベース10から選択したコード進行を指す情報を持つ
、メロディはメロディメモリ(図示せず)から選択した
楽節のメロディを指す情報をもつ、リズムはリズムメモ
リ44から選択したリズムを指す情報をもつ0法楽節ポ
インタ(3ON)は次の楽節を指し、前楽節ポインタ(
30F)は前の楽節を指す0例えば図示の楽節S1の楽
節節ポインタ3ONは楽節S2を指しており、楽節S1
の前楽節ポインタ30Fは楽節So を指している。コ
ード進行エディタ30は所望の楽曲を構成する所望の楽
節の!鎖を生成する編集能力を有している。各楽節には
コード進行の情報が含まれるのでこれにより楽曲の所望
のコード進行が定められることになる。各楽節のコード
進行はコード進行データベース10から選択したコード
進行である(なお使用者の入力したコード進行を一部の
楽節のコード進行として使用するようにすることも可能
である)。
コード進行エディタ30のエデイツト機能は、種々の形
態をとり得る。第19図に示すコード進行エディタ30
のエデイツト機能30Eは、目標楽節選択32、挿入3
4、付加36、削除38を含む、目標楽節選択32はす
でに連鎖を形成している楽曲の楽節のいずれかあるいは
新楽節SHを編集対象の楽節として選択する。挿入34
は目標楽節選択32の選択した新楽1755 Hを連鎖
している楽節の中に挿入する。付加36は目標楽節選択
32の選択した新楽節SNを楽節連鎖中に付加する。削
除38は目標楽節選択32の選択した楽節連鎖中の楽節
を削除する機能をもっている。このようなエデイツト機
能30Hにより所望の連鎖の楽節が形成される。そして
それによって所望の楽曲のコード進行が定められること
になる0編集したコード進行は編集コード進行メモリ4
6に記憶される。
以上のような構成のコード進行生成装置i40を使用す
ればコード進行データベース10中のコード進行を編集
して容易に所望の楽曲のコード進行を得ることができる
第19図で述べたようなコード進行生成装置の機能を含
むコンピュータベースの音楽装置を第20図にポス。マ
イクロコンピュータベースの音楽装置はコンピュータ資
源としてCPU150、プログラムと定数を記憶するメ
モリとしてのROM250、ワーキングメモリとしての
RAM350及び入/出力装置450を含む。更に音楽
装置の機能を明らかにするためにコード進行生成装置5
50と伴奏ライン生成装置600を図示しである。コー
ト進行生成装置550は第19図で述べたようなコート
進行生成機能をもつものであり、コート進行データベー
ス560、データベースマネージャ570、編集コード
進行メモリ580及びコード進行エディタ590を含む
、伴奏ライン生成装置600は第3図の伴奏ライン生成
rtMと同一のものであり、その説明は省略する。
実際にはコード進行生成装置550の各要素は上述した
コンピュータ資源の1つ以上によって実現されるもので
あり、どの資源によって実現されるかは既に述べたとこ
ろから当業者には明らかであるので、説明は省略する。
第21図はコード進行生成装置550の入力装置の例で
ある。楽節セレクタ591は楽節を選択する入力装置で
あり、前キー591F、次キー591S、NEWキー5
91Nを含む、楽曲構成コマンド592は楽曲の構成を
指示するための入力装置であり、lN5(挿入)キー5
92工、APP(付加)キー592A、DEL (削除
)キー5920を含む、楽節データ設定593は楽節の
データを設定するための入力装置であり、KEYキー5
93に、LEN (長さ)キー593L、RHY(リズ
ム)キー593Rを含む、コード進行セレクタ594は
コード進行データベース560からコード進行を選択す
るための入力装置であり、前キー594P、次キー59
4Nを含む、プレイ595は演奏を指示するための入力
装置であり、SEN (楽節)キー595SとPIE 
(楽曲)キー595Fを含む。
第22図に主な変数のリストを示す、 piece[1
は楽曲管理用ポインタの配列である。piace[HE
ADIは先頭楽節ポインタであり、p 1ece [C
UR]は現楽節ポインタであり、piece[TAIL
]は最終楽節ポインタであり、piece[NEW]は
新楽節ポインタであり、piece[08月は目標楽節
ポインタである。
5ent[]は楽節データの配列である。各楽節は7つ
のデータ21から成る。 5ent [7X i +K
EY]は楽節のキーを表わす、キーはCがO,C#が1
、以下同様にしてBが連鎖で示Sれる。 5ert[7
X i + LENGT)l]は長さメモリから選択し
た長さデータである。楽節の長さは例えばl小節、2小
節、4小節、8小節・・・・・・である、5ent [
7X i+ CHOPTRIはコード進行データベース
の中のコード進行を指すコード進行インデクスである。
 5ent[7X i + MELPTRIはメロディ
メモリ(図示せス)のメロディを指すメロディインデク
スである。 5ent [7X i + R)!YTH
MIはリズムメモリの中のリズムを指すインデクスであ
る。 5ent [7X i+ NEXT]は次の楽節
を指す法楽節ポインタである。 5ent [7X i
 + PREY]は前の楽節を指す前楽節ポインタであ
る。
barは長さメモリのアドレスカウンタである。
第23図に主な定数のリストを示す、 cpAtt[]
はコード進行の属性データの配列である。 cpAtt
[iX2+O]はコード進行データベースのi番目のコ
ード進行の長さを示す、 cpAtt  [i X2+
1]はi番目のコード進行のリズムインデクスである。
barLength[]は長さメモリである。この長さ
メモリbarLength[]の中から楽曲の長さが選
択される。1axRhyth腸はリズムメモリ(伴奏パ
ターンメモリ610)にあるリズムの総数を表わす。
第24図は第20図の音楽装置のメインフローである。
まず24−1で初期化を実行する。24−2で入力を待
ち1人力があればそれぞれの入力に対応して処理を実行
する。すなわち楽節セレクタ591の前キー591Fが
押された時には(24−3)、楽節ポインタ移動“く”
処理24−4を実行する。この処理により現楽節が前の
楽節に動かされる。楽節セレクタの次キー5913が押
された場合には(24−5)、楽節ポインタ移動“〉”
処理24−6を実行する。この処理では楽節ポインタを
次の楽節に動かす、楽節セレクタのNEWキー591N
が押された場合には(24−7)、楽節ポインタ移動“
NEW”処理(24−8)を実行する。この処理により
新卒節が選択される。楽曲構成コマンド592のINS
キー592Iが押された場合には(24−9)、新卒節
・挿入ルーチン24−10を実行する。この処理により
楽曲の楽節連鎖中に新卒節が挿入される。楽曲構成コマ
ンドのAPPキー592Aが押された場合には(24−
連鎖)、新卒節付加ルーチン24−12を実行する。こ
のルーチンにより新卒節が楽曲の楽節連鎖中に付加され
る。楽曲構成コマンドのDELキー592Dが押された
場合には(24−13)、楽節削除ルーチン24−14
を実行する。このルーチンにより楽曲の楽節連鎖中から
1つの楽節が削除される。楽節データ設定のKEYキー
593Kが押された場合には(2415)、キー設定処
理24−16を実行する。楽節データ設定のLENキー
593Lが押された場合には(24−17)、長さ設定
処理24−18を実行する。楽節データ設定のRHYキ
ー593Rが押された場合には(24−19)、リズム
設定処理24−20を実行する。コート進行セレクタの
前キー594Pが押された場合には(2421)、前コ
ート進行処理24−22を実行する。この処理によりコ
ート進行データベースから所定の条件を満たす前コード
進行が楽節のコート進行として選択される。コード進行
セレクタの次キー594Nが押された場合には(24−
23)、次コード進行処理24−24を実行する。
この処理によりコート進行データベースから所定の条件
を満たす次コート進行が楽曲のコード進行として選択さ
れる。プレイのSENキー595Sが押された場合には
(24−25)、楽節演奏処理24−26を実行する。
この処理により楽曲のコード進行が演奏される。プレイ
のPIEキー595Fが押された場合には(24−27
)、楽曲演奏処理24−28を実行する。この処理によ
りコード進行が演奏される。
第25図にメインフロー(第24図)の初期化ルーチン
24−1の詳細を示す、25−1〜254において楽曲
が空であることを示すために楽曲管理用ポインタpie
ca[HEAD] 、 piece[cUR]。
piece[TAIL] 、 piece(NEWIに
空の値“−1”を設定する。 25−5テ5ent[0
] =ffHにより楽節データのターミナルマークを初
期化する。256で新卒節をメモリに割り当てる新卒節
割当処理を実行する。25−7で編集コード進行が空で
あることを示すためにChord[0]= f Hを設
定する。
新卒節割当処理の詳細を第26図に示す、26−1〜2
6−3においてメモリの中から楽節データのターミナル
マークを見つけ出す0次にターミナルマークを見つけた
位置から新卒節データを初期設定する(26−4)、す
なわち5ent [i+KEY ]にはCのキーを示す
“O”を設定し、5ent[i + LENGTH]に
は“0”を設定し、 5ant [i +CHOPTR
]には値“0″を設定し、5ent [i +NELP
TR]にはO″を設定し、5ent [i + RHY
THMIにはリズムメモリの最初のリズムを指す“O”
を設定し、5ent [i +NEXT] ニは次の楽
[1’ナイコ、!−を示す“−1″を設定し、5ent
 [i + PREV]には前の楽節がないことを示す
“−1”を設定する。
26−5で初期設定した新卒節データの次のアドレス5
ent[i+7]にターミナルマークを示すffHを設
定し、26−6で新卒節ポインタが26−4で割り当て
た新卒節データの位置を指すようにp 1ece [N
EWI ニiを設定する。
第27図に楽節ポインタ移動“く”ルーチン24−4の
詳細を示す、このルーチンは楽節セレクタの前キー59
1Pの操作に対して行なわれる処理である。まず27−
1で楽曲が空かどうかを判別し、空でなければ27−2
で現楽節が先頭楽節かどうかを調べる。現楽節が先頭以
外の楽節を指していればpieca[cUR] = 5
ent [piece[CUR] + PREV]によ
り現楽節を前楽節に移動する(27−3)、更に27−
4でpiece[OBJ]= piece[cUR]に
より目標楽節を現楽節にセットする。
第28図は楽節ポインタ移動“く”ルーチンの詳細を示
したものである。このルーチンは楽節セレクタの次キー
5913の操作に応答して実行される。楽曲が空でなく
 (2B−1)、現楽節が最終楽節以外の楽節を指して
いれば(2B −2)、piece[CUR]=sen
t[piece[CUR] +NEXT] により現楽
節を法楽節に移動する(28−3)、28−4テp 1
ece rOBJ ] = p 1ece FCUR]
により目標楽節を現楽節にセットする。
第29図は楽節ポインタ移動“NEW”ルーチンの詳細
である。このルーチンは楽節セレクタNEWキー591
Nの操作に対して行なわれる。
piece[OBJ]= piece[NEil]によ
り目標楽節を新楽節にセットする(29−1)。
第30図に新楽節挿入ルーチンの詳細を示す。
このルーチンは楽曲構成コマンドのINSキー(挿入キ
ー)592Iの操作に対して行なわれる。楽曲が空であ
れば(30−1)新楽節を楽曲の楽節とするために挿入
Aを実行する(30−2)、楽曲が空でなく、現楽節が
先頭楽節である場合には(30−3)、先頭楽節の前に
新楽節を挿入するために挿入B (30−4)を実行す
る。
現楽節が先頭以外の楽節を指していれば(303)、新
楽節を現楽節とそれより1つ前の楽節との間に挿入する
ために挿入Cルーチン(305)を実行する。挿入ルー
チン30−2,304.30−5の実行により新楽節は
楽曲中に組み込まれるので30−6で新楽節を新たに用
意する新楽節割当てルーチンを実行する。最後に目標楽
節を現楽節にセットする(30−7)。
第31図は楽曲が空の時に実行される挿入Aルチン30
−2の詳細である。31−1に示すようにpiece[
HEADI 、 piece[cUR]、 piece
[TAILl をそれぞれpiecerNE連鎖]にセ
ットすることにより、先頭と現在と最終の楽節を新楽節
に設定する。
第32図は現楽節が先頭楽節の時に実行される挿入Bル
ーチン30−4の詳細である。まず321 で5ent
[piece[NEW]  + NEXTI  = p
iece[HEA[l]により新楽節の次が先頭楽節に
なるようにする。
次に32−2で5ent[piece[HEADI +
 PREVI xpiece[NE連鎖] により先頭
楽節の前が新楽節になるようにする。最後に32−3で
piece[HEADI =piece[NEW] 、
 piece[cUR]=piece[NEW]により
新楽節を先頭楽節と呼び直し、現楽節を先頭楽節にセッ
トする。このように挿入Bルーチンでは新楽節を楽曲の
先頭楽節として楽曲に組み込む処理を行なり。
第33図は現楽節が楽曲の先頭以外の楽節を指している
時に実行される挿入Cルーチンの詳細である。
第34図に挿入Cのオペレーションを示す、挿入Cの処
理を行なう前は、B楽節が現楽節であり、その前にA楽
節がある。C楽節は挿入する新楽節を表わしている。挿
入Cルーチンの実行によりC楽節はA楽節とB楽節との
間に挿入される。
これを実行するためにまず33−1で現楽節の前(A楽
節)の法楽節ポインタが新楽節(C楽節)を指すように
する。33−2で新楽節(C楽節)の前楽節ポインタが
現楽節の前(A楽節)を指すようにする。33−3で現
楽節(B楽節)の前楽節ポインタが新楽節(C楽節)を
指すようにする。33−4で新楽節(C楽節)の法楽節
ポインタが現楽節(B楽節)を指すようにする。35−
5で新楽節(C楽節)を現楽節と呼び直す、更にC楽節
は目標楽節でもある(30−7)、これにより第34図
の挿入後に示すような楽節の連鎖が形成される。
第35図は楽曲構成コマンド592のAPPキー(付加
キー’)592Aの操作に応答して実行される新楽節付
加ルーチン22−12の詳細である。楽曲が空であれば
(35−1)、新楽節を楽曲の(唯一の)楽節とするた
めに挿入Aルーチン35−2を実行する。楽曲が空でな
く現業節が最終楽節の場合には(35−3)、最終楽節
の次に新楽節を付加するために付加Bルーチン35−4
を実行する。現楽節が最終楽節以外の楽節である場合に
は(35−3)、現楽節の次に新楽節を付加するために
付加Cルーチン35−5を実行する。付加ルーチン35
−2.35−4.35−5の実行により楽曲に新楽節が
組み込まれるので35−6で新楽節割当ルーチンを実行
する。最後に35−7でpiece[0BJl = p
iece[cUR]により、目標楽節を現楽節にセット
する。
第36図は現楽節が最終楽節の時に実行される付加Bル
ーチン35−4の詳細である。まず36l で5ent
[piece[NEW]  +PREV]  =pie
ce[TAIL]により新楽節の前楽節ポインタが最終
楽節を指すようにする8次に36−2で5ent[pi
ece[TAIL] +NEXTI =piece[N
EW]ニより最終楽節(7)&楽!illンタが新楽節
を指すようにする。最後に36=3でpiece[TA
IL] =piece[NEW]、 piece[cU
R]=piece[NE連鎖]により新楽節を最終楽節
と呼び直し。
現楽節を最終楽節にセットする。このように付加Bルー
チンでは新楽節を楽曲の最後に付加する処理を行なう。
第37図は現楽節が楽曲の最終楽節以外の楽節を指して
いる状態で、APPキー592Aの操作に対して行なわ
れる付加Cルーチン35−5の詳細である。
第38図に付加Cのオペレーションを示す、付加Cオペ
レーションを実行する前ではA楽節が現楽節であり、A
楽節の次がB楽節である。C楽節が新楽節である。付加
Cルーチンの目的は現楽節(A楽節)と法楽節(B楽節
)との間に新楽節(C楽節)を挿入することである。こ
れを達成するだめにまず37−1で現楽節の次(B楽節
)の前楽節ポインタが新楽節(C楽節)を指すようにし
、37−2で新楽節(C楽節)の法楽節ポインタが現楽
節の次(B楽節)を指すように設定する。更に37−3
で現楽節(A楽Wj)の法楽節ポインタが新楽節(C楽
節)を指すようにし、374で新楽節(C楽節)の前楽
節ポインタが現楽節(A楽節)を指すように設定する。
最後に37−5 テp 1ece [GURl = p
 1ece [NEW]により新楽節を現楽節と呼び直
す、このように付加Cルーチンでは新楽節を楽曲の現楽
節の次に付加する。
第39図は楽曲構成コマンド592のDELキー(削除
キー)592Dの操作に応答して実行される楽節削除ル
ーチンの詳細である。楽節削除ルーチンの目的は、現楽
節を楽曲から削除することである。楽曲が空であれば(
39−1)、削除すべき楽節はないのでそのままリター
ンする。楽曲が空でなく、現楽節が最終楽節である場合
には(39−2)、最終楽節を削除する削除Aルーチン
39−3を実行する。現楽節が先頭楽節である場合には
(39−4)、先頭楽節を削除する削除Bルーチン39
−5を実行する。現楽節が最終楽節でも先頭楽節でもな
い場合には(39−2,39−4)、現楽節を楽曲から
削除する削除Cルーチン39−6を実行する。削除ルー
チン39−3.39−5.39−6の実行により楽節が
削除されるので記憶領域を開放するためのフリール−チ
ン39−7を実行する。最後に39−8でpiecs[
cUR1= piece[08月により現楽節を目標楽
節にセットする。
第40図は最終″4に節である現楽節を削除する削除A
ルーチンの詳細である。40−1で5ent[g@nt
[piece[CUR]+PREV) +NEWT] 
=−1により現楽節の前の楽節の法楽節ポインタを次の
楽節がないことを示す値に設定する。40−2でpie
ce[TAILI=gent[piece[GURl 
+PREV]により現楽節の前の楽節を最終楽節と呼び
直す、40−3でpiece [OBJ] = pie
ce [TAIL]により目標楽節を最終楽節にセット
する。
第41図は先頭楽節である現楽節を削除する削除Bルー
チン39−5の詳細である。まず4連鎖 テ5ent[
5ent[piece[C!R]+NEXT] +PR
EVl =−1により現楽節の次の楽節の前楽節ポイン
タを前楽節がないことを示す値に設定する。41−2で
piece[HEAIl] =sent[piece[
GURl 十NEXT] により現楽節の次の楽節を先
頭楽節と呼び直す、41−3 テpiece [OBJ
] = piece [HEADlにより目標楽節を先
頭楽節にセットする。
第42図は先頭でも最終でもない現楽節を削除する削除
Cルーチン39−6の詳細である。まず42−1で5e
nt[5ent[piece[GUR]+PREVl 
+NEXTI = 5ent[piece[GURl 
+ NEXTIにより現楽節の前の楽節の法楽節ポイン
タが現楽節の次の楽節を指すようにする。 42−2 
テ5ent[5ent[piece[CUR]+NEX
T] +PREV] =sent[piece[GUR
l +PREVlにより現楽節の次の楽節の前楽節ポイ
ンタが現楽節の前の楽節を指すようにする。42−3で
piece[OBJ]=gent[piece[GUR
l +PREV]により目標楽節を現楽節の前の楽節に
セットする。
第43図は記憶領域を開放するフリールーチン39−7
の詳細である。43−1〜43−3でメモリの中から楽
曲のターミナルマークを見つける0次に43−3でター
ミナルマークの前にある東部のデータを現楽節の記憶エ
リアに移す0次に43−5でデータを移動し九楽節の記
憶エリアが開放されたことになる。43−6〜43−1
3ではデータの移動に伴うポインタの更新を行なってい
る。すなわちデータを移動して記憶エリアを開放した楽
節が先頭楽節piece[HEAI]] 、最終楽節p
iece[丁AILI 、新楽節piece[NEWl
、目的楽節piece[08月である場合にこれらのポ
インタをデータの移動先である現楽節p 1ece [
GURlを指すように変更している。
第44図は楽節データ設定593のKEYキー593に
の操作に対して実行されるキー設定ルーチンの詳細であ
る。キー設定ルーチンはKEYキー593Kが押される
都度、楽節のキーを半音上に設定する処理を行なう、4
4−1に示すように5ent[piece[OBJ] 
+KEY]= 連鎖である時、すなわち目標楽節のキー
がBである時にはgent[piecerOBJ] +
KEY]= 0により目標楽節のキーをCに変更する(
44−3)、キーがBでない時には(44−1)、44
−2に進んで5ent[piece[0BJl +KE
YIをインクリメントして目標楽節のキーを半音上げる
第45図は楽節データ設定593のRENキー(長さキ
ー)593Lの操作に対して実行される長さ設定ルーチ
ンの詳細である。長さ設定ルーチンはRENキー593
Lが押される都度長さメモリの次の長さデータを目標楽
節に設定する。このためにまず45−1で長さメモリの
アドレスカウンタbarをインクリメントし、barに
よって指される長さメモリのデータが長さメモリの終わ
りを示している場合には(45−2) 、 barを長
さメモリの先頭を指す値0に戻す(45−3)、45−
4で更新したbarの値で示される長さメモリのデータ
Length[barlを目標楽節の長さデータ5en
t[piece[OBJ] + LENGTHI とし
て設定する。
第46図は楽節データ設定593のRHYキー(リズム
キー)593Rの操作に対して実行されるリズム設定ル
ーチン24−20の詳細である。
リズム設定ルーチンはRHYキー593Rが押される都
度リズムメモリの次のリズムを指し示す情報を目標楽節
に設定する。このためにまず461で目標楽節のリズム
インデクスgent[piece[OBJ] +RHY
THM] をインクリメントする0次に46−22でリ
ズムインデクスがリズム総数1axRbyth腸に達し
たかどうかをみ、達していれば46−3でリズムインデ
クスを0に戻す。
第47図は楽器セレクタ591の前キー591Dの操作
に対して行なわれる前コード進行ルーチン24−22の
詳細である。47−1で第13図で述べたような前コー
ド進行選択ルーチンを実行する。これによりチェインテ
ーブルによって指し示される前コード進行がコード進行
データベースから選択される。この前コード進行のイン
デクスを現楽節のコード進行インデクスとしてロードす
る(47−2)、次に47−3でそのコード進行の長さ
とリズムを現楽節に設定しである長さとリズムの情報と
比較して一致するかどうかを検査する。一致しなければ
47−1と47−2の処理を繰り返す、この結実現楽節
には所定の条件を満す前コード進行を指すコード進行イ
ンデクスが設定されることになる。
第48図は楽節セレクタ591の次キー591Sの操作
に対して実行される次コード進行ルーチン24−24の
詳細である。48−1で第12図の次コード進行選択ル
ーチンを実行してチェインテーブルにしたがう次コード
進行をコード進行データベースから選択する0次に48
−2でこの次のコード進行を指す情報を現楽節のコード
進行インデクスとして取り込む0次に48−3でコード
進行の長さとリズムを検査し、−!J節に設定しである
長さとリズムに合わなければ、再び4B−1と48−2
の処理を繰り返す、この結果、現楽節には所定の条件を
満す次コード進行を指し示す次コード進行インデクスが
設定されることになる。
第49図は長さとリズムの検査ルーチンの詳細である。
49−1でcpAtt[cPdb[1]1と5ent[
piece[CoR] +LENGTHとを比較してコ
ード進行の長さが楽節の長さと等しいかどうかを判定す
る0等しければ49−2 テcpAtt[cpdb[1
] + 1 ]と5ent[piece[GURJ +
 RHYTHNI とを比較してコード進行のリズムが
楽節のリズムと等しいかどうかを判定する。成立すれば
OKをかえす(49−3)。
49−1又は49−2の条件が成立しない場合はNGを
かえす(49−4)。
第50図は楽節演奏ルーチン24−26内で行なわれる
一楽節のコード進行読み出し処理の詳細なフローである
。このコード進行読み出しルーチン50−1へ50−6
では現楽節のコード進行データをコード進行データベー
スから読み出し、配列Cbord[]に現*簡のキーに
合うデータに変換して取り込む、配列Ghord[]に
取り込んだコード進行を元にして楽節演奏24−26は
楽節のコード進行を演奏する。これにより使用者は楽節
のコード進行を試聴することができる。
第51図は楽曲演奏ルーチン24−28で実行される楽
曲のコード進行読み出し処理の詳細なフローである。こ
のコード進行読み出しルーチン51−1〜51−10で
は楽曲を定める楽節連鎖の各楽節のコート進行を先頭楽
節から最終楽節まで順次読み出して配列Gho rd 
r 1に各楽節のキーに合うような形式で格納する。し
たがって配列Gho rd[Iはコード進行エディタに
よって編集された楽曲のコード進行の情報をもつことに
なる。楽曲演奏ルーチン24−28はこの楽曲のコード
進行に基づいて演奏を行なう、これにより使用者は楽曲
のコード進行が満足いくものかどうか最終的判断を下す
ことができる。
以上のように第20図以下説明した音楽装置はコード進
行データベース560から複数のコード進行を選択し、
選択した複数のコード進行をコード進行エディタ590
によって編集することにより所望のコード進行の連鎖に
よって形成される楽曲のコード進行を効率良く提供する
ことができる。コード進行データベース560からのコ
ード進行の選択はデータベースマネージャ570のコー
ド進行選択機能により好ましいコード進行を効率良く選
択することができる。
[変形例J 以上で実施例の説明を終えるがこの発明の範囲内で種々
の変形、変更が可能である。
例えば、コード進行のチェインテーブルはコード進行デ
ータベースのなかの一部のコード進行を指す情報を記憶
してもよい、この場合、チェインテーブル変更手段はチ
ェインテーブルの要素を追加、削除する機能をもつもの
で実現できる。また、用途に合わせて複数のチェインテ
ーブルを作成し、それらを磁気ディスクやカード等の外
部記憶媒体に保存しておき、必要なときに外部記憶媒体
から所望のチェインテーブルを呼び出し、そのなかから
所望のコード進行を選択するようにしてもよい。
[発明の効果] 以上、詳細に説明したようにこの発明によればコード進
行データベース手段の中から使用者の好みのコード進行
を選択する際に、コード進行データベース手段中に散在
するよさそうな候補をチェインテーブル手段とチェイン
テーブル変更手段とによって局所化させ、そのなかから
コード進行を選択できるようにしているのでコード進行
選択作業が能率化される。
【図面の簡単な説明】
第1図はこの発明の態様を示すコード選択装置のブロッ
ク図、 第2図はコード選択装置のデータ構造を示す図、 第3図はコード進行選択装置を含む音楽装置のブロック
図、 第4図は入力装置を示す図、 第5図は変数リストを示す図、 第6図は定数リストを示す図、 第7図はデータ例を示す図、 第8図は第3図の音楽装置のメインのフローチャート、 第9図は初期化のフローチャート、 第10図はコード進行読出しのフローチャート 第連鎖図はコート進行データベースを示す図、第12図
は次コード進行選択ルーチンのフローチャート 第13図は前コード進行選択ルーチンのフローチャート $14図はトップルーチンのフローチャート、第15図
はソートAルーチンのフローチャート 第16図はソートAのオペレーションを示す図、 第17図はソートBルーチンのフローチャート、 第18図はソートBのオペレーションを示す図、 第19図はコード進行生成装置のブロック図、第20図
はコード進行生成装置を含む音楽装置のブロック図、 第21図は入力装置を示す図、 第22図は変数リストを示す図、 第23図は定数リストを示す図 第24図は第20図の音楽装置のメインのフローチャー
ト、 第25図は初期化のフローチャート、 第26図は新楽節割当てルーチンのフローチャート、 第27図は楽節ポインタ移動“く”ルーチンのフローチ
ャート 第28図は楽節ポインタ移動“〉”ルーチンのフローチ
ャート、 第29図は楽節ポインタ移動“NEW”ルーチンのフロ
ーチャート、 第30図は新楽節挿入ルーチンのフローチャート、 第31図は挿入Aルーチンのフローチャート、第32図
は挿入Bルーチンのフローチャート第33図は挿入Cル
ーチンのフローチャート、第34図は挿入Cのオペレー
ションを示す図、第35図は新楽節付加ルーチンのフロ
ーチャート、 第36図は付加Bルーチンのフローチャート、第37図
は付加Cルーチンのフローチャート第38図は付加Cの
オペレーションを示す図、第39図は楽節削除ルーチン
のフローチャート、 第40図は削除Aルーチンのフローチャート第41図は
削除Bルーチンのフローチャート第42図は削除Cルー
チンのフローチャート、第43図はフリール−チンのフ
ローチャート、第44PgJはキー設定ルーチンのフロ
ーチャート、 第45図は長さ設定ルーチンのフローチャート、 第46図はリズム設定ルーチンのフローチャート、 第47図は前コード進行ルーチンのフローチャート 第48図は次コード進行ルーチンのフローチャート、 第49図は畏さとリズムの検査ルーチンのフローチャー
ト、 第50図は一楽節のコード進行読出しルーチンのフロー
チャート、 第51図は楽曲のコード進行読出しルーチンのフローチ
ャートである。 10.510・・・・・・コート進行データベース21
 530・・・・・・チェインテーブル22 520・
・・・・・チェインテーブル変更部23.540・・・
・・・コード進行選択部24・・・・・・設定レンジ lOC・・・・・・重要度テーブル(レンジ記憶部)1
00・・・・・・CPU 200・・・・・・ROM 300・・・・・・RAM 400・・・・・・入出力装置 500・・・・・・コード進行選択装置550・・・・
・・レンジ設定部 chain[]・・・・・・チチェインテーブル変更部
[]・・・・・・チチエインテープのヘッダrange ・・・・・・レンジデータ cpAdr[ ■・・・・・・コート進行ポインタ/重要度テ4ヱイΣ
ゲーフ九 l艷デ迫〕 に遺儂゛セしり9562 L−ご・=し1−でL(ツタ564 プル bapE ] ・・・・・・コート進行データベース 入7袋 肯 特 許 出 願 人 カシオ計算機株式会社

Claims (2)

    【特許請求の範囲】
  1. (1)コード進行のデータベースを記憶するコード進行
    データベース手段と、 各ポインタが前記コード進行データベース手段における
    異なるコード進行を指す複数のポインタの連鎖を記憶す
    るチェインテーブル手段と、使用者の指示に従って前記
    チェインテーブル手段を変更して前記チェインテーブル
    手段にポインタの所望の連鎖を設定するチェインテーブ
    ル変更手段と、 前記チェインテーブル手段に設定されたポインタの所望
    の連鎖に基づいて前記コード進行データベース手段から
    コード進行を選択するコード進行選択手段と、 を有することを特徴とするコード進行選択装置。
  2. (2)請求項1記載のコード進行選択装置において、 前記コード進行データベース手段の各コード進行のレン
    ジを記憶するレンジ記憶手段と、 使用者の指示に従って所望のレンジを設定するレンジ設
    定手段と、 を更に有し、 前記コード進行選択手段は設定されたレンジ内にあるコ
    ード進行を前記コード進行データベース手段から選択す
    ることを特徴とするコード進行選択装置。
JP2229428A 1990-08-30 1990-08-30 コード進行選択装置 Expired - Fee Related JPH06103436B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2229428A JPH06103436B2 (ja) 1990-08-30 1990-08-30 コード進行選択装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2229428A JPH06103436B2 (ja) 1990-08-30 1990-08-30 コード進行選択装置

Publications (2)

Publication Number Publication Date
JPH04110898A true JPH04110898A (ja) 1992-04-13
JPH06103436B2 JPH06103436B2 (ja) 1994-12-14

Family

ID=16892076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2229428A Expired - Fee Related JPH06103436B2 (ja) 1990-08-30 1990-08-30 コード進行選択装置

Country Status (1)

Country Link
JP (1) JPH06103436B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5974594A (ja) * 1982-10-20 1984-04-27 松下電器産業株式会社 音楽演奏装置
JPS59189392A (ja) * 1983-04-13 1984-10-26 カシオ計算機株式会社 自動演奏装置
JPS63192097A (ja) * 1987-02-05 1988-08-09 カシオ計算機株式会社 自動演奏装置
JPS6439117A (en) * 1987-08-03 1989-02-09 Nec Corp Emitter-coupled logic circuit
JPH02160296A (ja) * 1988-09-28 1990-06-20 Casio Comput Co Ltd コード進行生成装置、コードパターン決定装置及び作曲機

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5974594A (ja) * 1982-10-20 1984-04-27 松下電器産業株式会社 音楽演奏装置
JPS59189392A (ja) * 1983-04-13 1984-10-26 カシオ計算機株式会社 自動演奏装置
JPS63192097A (ja) * 1987-02-05 1988-08-09 カシオ計算機株式会社 自動演奏装置
JPS6439117A (en) * 1987-08-03 1989-02-09 Nec Corp Emitter-coupled logic circuit
JPH02160296A (ja) * 1988-09-28 1990-06-20 Casio Comput Co Ltd コード進行生成装置、コードパターン決定装置及び作曲機

Also Published As

Publication number Publication date
JPH06103436B2 (ja) 1994-12-14

Similar Documents

Publication Publication Date Title
US6169242B1 (en) Track-based music performance architecture
JP4343330B2 (ja) シーケンス情報生成方法及びシーケンス情報生成システム
US7310784B1 (en) Methods for identifying cells in a path in a flowchart and for synchronizing graphical and textual views of a flowchart
US8732221B2 (en) System and method of multimedia content editing
US5728962A (en) Rearranging artistic compositions
US5952598A (en) Rearranging artistic compositions
US7937384B2 (en) Software and method for performing database operations
Agostini et al. Bach: An environment for computer-aided composition in max
US20070221044A1 (en) Method and apparatus for automatically creating musical compositions
US20030120659A1 (en) Systems for developing websites and methods therefor
JPH05210667A (ja) 構造化文書のレイアウト方法
US7053291B1 (en) Computerized system and method for building musical licks and melodies
CN1154529A (zh) 用可得到的方式替换不存在的方式的自动演奏装置
US20110126694A1 (en) Methods for generating new output sounds from input sounds
JPH04110898A (ja) コード進行選択装置
JP3480958B2 (ja) 文字ファイルアクセス方式
Demopoulos et al. Musido: A framework for musical data organization to support automatic music composition
Sprockeels et al. Melodizer: a constraint programming tool for computer-aided musical composition
KR100762079B1 (ko) 자동음악 작곡 방법 및 자동음악 작곡 시스템
CN109760044A (zh) 一种数据处理方法及装置
AU679982B2 (en) Rearranging artistic compositions
Derfler Single-Voice Transformations: A Model for Parsimonious Voice Leading
Ramalho et al. The Role of Musical Memory in Creativity and Learning: a Study of Jazz Performance
CN116954622B (zh) 抽象语法树和源代码坐标的关联方法、电子设备和介质
Fober et al. Open source tools for music representation and notation

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071214

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20081214

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20081214

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20091214

Year of fee payment: 15

LAPS Cancellation because of no payment of annual fees