JP3476863B2 - 電子楽器の自動伴奏装置 - Google Patents

電子楽器の自動伴奏装置

Info

Publication number
JP3476863B2
JP3476863B2 JP12468393A JP12468393A JP3476863B2 JP 3476863 B2 JP3476863 B2 JP 3476863B2 JP 12468393 A JP12468393 A JP 12468393A JP 12468393 A JP12468393 A JP 12468393A JP 3476863 B2 JP3476863 B2 JP 3476863B2
Authority
JP
Japan
Prior art keywords
code
sound
chord
candidate
basic
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
JP12468393A
Other languages
English (en)
Other versions
JPH06314095A (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.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing 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 Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP12468393A priority Critical patent/JP3476863B2/ja
Publication of JPH06314095A publication Critical patent/JPH06314095A/ja
Application granted granted Critical
Publication of JP3476863B2 publication Critical patent/JP3476863B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、所定のコードが与えら
れた場合に、前のコードフォームからの移行が人にとっ
て自然にできるコードフォームとなるコードの構成音で
自動伴奏音を発生させる電子楽器の自動伴奏装置に関す
る。
【0002】
【従来の技術】近年、自動伴奏装置を備えた電子楽器が
開発され実用に供されている。かかる電子楽器における
自動伴奏装置として、演奏者が意図するコード進行に従
って鍵盤を押下することにより、その押鍵に応じたコー
ドを検出し、検出されたコードに基づいて伴奏音を自動
的に発生するものが知られている。
【0003】かかる自動伴奏装置を有する電子楽器にお
いては、一般に、鍵盤の一部がコード検出用鍵域、残り
が通常演奏用の鍵域として定められている。この場合、
コード検出用鍵域の鍵は、通常演奏用鍵域の鍵の機能と
は異なり、押下されても当該鍵に対応する発音は行われ
ず、発生すべきコードを指示する手段として用いられる
のみである。
【0004】かかる自動伴奏装置における自動伴奏は、
以下のようにして実現される。即ち、演奏者がコード検
出用鍵域の鍵を押下すると、押下された鍵の組合せに従
ってコードが検出される。かかるコード検出において
は、一般に、押下された鍵の音名の種類によってコード
が検出され、鍵の押下パターン(以下、「コードフォー
ム」という)には依存しない。
【0005】例えば、低音側から「C,E,G」の順
序、「E,G,C」の順序、又は「G,C,E」の順序
で押鍵した場合のいずれであっても、Cメジャーという
1つのコードが検出されることになる。なお、このコー
ド検出の手法に関しては種々の提案がなされているが、
以下に説明する本発明は、コード検出後の処理方法に関
し、コード検出方法自体は何れの方法であっても構わな
い。
【0006】今、例えば図17に示すように、「C,
E,G」の3つの鍵が図示のコードフォームで押下され
たとすると、Cメジャーのコードが検出される。このコ
ード検出が終了すると、次いで、コード展開が行われ
る。
【0007】このコード展開は、例えばメジャー、マイ
ナー、セブンス等といったコード種毎に、C、C♯、
D、…、Bといった各音名に対する変換情報を記憶した
音程変換テーブルを予め備えておき、検出されたコード
名(根音とコード種とで構成される)が与えられた時
に、予め自動伴奏データとして記憶されているパターン
データを読み出し、これを根音及びコード種とに応じて
上記音程変換テーブルを参照して所定の変換を行うこと
により、検出されたコードの構成音を得る処理である。
【0008】このコード展開処理では、例えば上記Cメ
ジャーのコードが検出された場合は、図17(A)に示
すように、根音「C」から高音側へ「C,E,G」の順
番でなる3音に展開される。次いで、演奏者が所定のコ
ードフォームで押鍵することによりGメジャーのコード
が検出されると、図17(B)に示すように、根音
「G」から高音側へ「G,B,D」の順番でなる3音に
展開される。
【0009】
【発明が解決しようとする課題】ところで、現実に人が
演奏する場合は、鍵盤を押さえる場合の指の動きは極力
少なくなるようにするのが普通である。従って、例えば
CメジャーからGメジャーへ移行する場合は、前のコー
ドフォームが例えば図2(A)に示すようなCメジャー
のコードフォームであった場合は、図2(C)に示され
たような極力指の動きが少なくなるようなGメジャーの
コードフォームがとられるのが普通である。
【0010】しかしながら、従来の自動伴奏装置では、
上記のように、根音から例えば高音側にコード展開が行
われるので、根音が「C→G」のように大きく動くと、
コード展開された音程が大きく動いてしまう。従って、
自動伴奏による演奏が人間の伴奏とは異なって聞こえて
しまうという問題があった。
【0011】本発明は、かかる事情に鑑みなされたもの
で、コードを変更する際に、人が伴奏する場合のような
コードフォームをとることにより自然な自動伴奏ができ
る電子楽器の自動伴奏装置を提供することを目的とす
る。
【0012】
【課題を解決するための手段】上記目的を達成するため
に、請求項1に記載の電子楽器の自動伴奏装置は、前回
使用されたコードのコードフォームを検出する前コード
検出手段と、今回使用するコードのコードフォームを構
成すべき音を決定するための候補音を作成する候補音作
成手段と、該候補音作成手段で作成された候補音のう
ち、前記前コード検出手段で検出されたコードフォーム
を構成する各音に対し、それぞれが所定の音程の範囲内
にある候補音を今回使用するコードのコードフォームを
構成する音として決定する決定手段と、該決定手段で決
定された音を実際に発音するための楽音情報を作成する
楽音情報作成手段、とを具備したことを特徴とする。
【0013】また、同様の目的で、請求項2に記載の電
子楽器の自動伴奏装置は、前記候補音作成手段で作成さ
れる候補音として、今回使用するコードの基本コードフ
ォーム(例えば図4及び図5に示される各コード種毎に
全根音に対して設けられた当該コードの基本的なコード
フォーム)を構成する複数音と、該複数音中の最低音よ
り1オクターブ上の音と、前記複数音中の最高音より1
オクターブ下の音とを使用することを特徴とする。
【0014】また、同様の目的で、請求項3に記載の電
子楽器の自動伴奏装置は、前記所定の音程の範囲とし
て、2半音の範囲を用いることを特徴とする。
【0015】また、同様の目的で、請求項4に記載の電
子楽器の自動伴奏装置は、前記決定手段において、所定
回数のコード変化毎に、今回使用するコードのコードフ
ォームを構成する音として、基本コードフォームを構成
する音を用いることを特徴とする。
【0016】更に同様の目的で、請求項5に記載の電子
楽器の自動伴奏装置は、前記決定手段において、前記候
補音作成手段で作成された候補音が、前記前コード検出
手段で検出されたコードフォームを構成する各音に対し
所定の音程の範囲内にない場合は、今回使用するコード
のコードフォームを構成する音として、基本コードフォ
ームを構成する音を用いることを特徴とする。
【0017】
【作用】請求項1に記載の発明においては、コードを変
更すべきことが指示された時に、今回使用するコードの
コードフォームを決定するに際し、今回使用するコード
を構成すべき音の候補音を一定の音程範囲内で複数作成
し、前回使用されたコードフォームを構成する各音から
所定の音程の範囲内にある候補音を選んで、今回使用す
るコードのコードフォームの構成音とするようにしてい
る。
【0018】これにより、今回使用するコードの構成音
が一定範囲の候補音から選択されるので、今回使用する
コードのコードフォームを構成する各音は、前回使用し
たコードのコードフォームを構成する各音から一定の音
程範囲内のものとなる。このことは、人が鍵盤を弾く場
合に当てはめると、前回使用したコードフォームから一
定の音程範囲内、つまり少ない指の動きで今回のコード
フォームに移行できることを意味し、人がコードを弾く
場合のように、自然な音程の自動伴奏音が得られる。
【0019】また、請求項2に記載の発明においては、
候補音として、基本コードフォームを構成する複数音
と、この基本コードフォームを構成する複数音の最低音
の1オクターブ上の音と、最高音の1オクターブ下の音
とを用いている。従って、これら候補音は、今回使用す
るコードの基本コードフォームを中心とした一定範囲内
で構成されるので、コード変化に伴うコードフォームの
変化も少ない範囲で済むようになっている。
【0020】また、請求項3に記載の発明においては、
今回使用するコードを構成する各音からそれぞれ2半音
の範囲内にある候補音を選んで、今回使用するコードの
コードフォームを構成する音としている。
【0021】これにより、上記候補音を一定の音程範囲
内で作成したのと相まって、少ない音程の範囲内で、今
回使用するコードのコードフォームを構成する音が選ば
れるので、コード変化に伴うコードフォームの変化が少
ない範囲で済むようになっている。
【0022】また、請求項4に記載の発明においては、
コード変化が4回発生する毎に、今回使用するコードの
コードフォームとして基本コードフォームを使用するよ
うにしている。これにより、特定のコード進行によって
は、使用するコードフォームが限りなく移動してしまう
ことを防止できるものとなっている。
【0023】更に、請求項5に記載の発明においては、
候補音がコードフォームを構成する各音に対し所定の音
程の範囲内にない場合に基本フォームに戻すようにして
いる。これによっても、使用するコードフォームが限り
なく移動してしまうことを防止できるものとなってい
る。
【0024】
【実施例】以下、本発明の電子楽器の自動伴奏装置の実
施例につき図面を参照しながら詳細に説明する。なお、
以下では、本発明の特徴部分、即ち、展開フォーム作成
及び展開音作成に係る構成及び動作を中心に説明する。
【0025】先ず最初に、本発明の理解を容易にするた
めに、本実施例の概要につき説明する。本自動伴奏装置
においては、「展開フォーム作成」と「展開音作成」と
に分けて考えることができる。
【0026】「展開フォーム作成」では、それまでコー
ド構成音を押さえていた指の形(特許請求の範囲の「前
回使用されたコードのコードフォーム」に対応し、以
下、「前フォーム」という)と、新たに押さえられたコ
ード(特許請求の範囲の「今回使用するコード」に対応
し、以下、「新コード」という)の構成音とから、新コ
ードの構成音を押さえる指の形(特許請求の範囲の「今
回使用するコードのコードフォーム」に対応し、以下、
「展開フォーム」という)を作成する。
【0027】この時のルールの主な点(詳細は後述す
る)は、各指の移動可能範囲を2半音に設定し、2半音
で移動できる形を展開フォームとする。なお、2半音で
移動できない場合は、基本フォーム(特許請求の範囲の
「基本コードフォーム」に対応する)を展開フォームと
する。なお、本実施例では、移動可能範囲を「2半音」
に限定して説明しているが、これに限定されるものでは
なく、例えば「3半音」以上とすることもできる。
【0028】図2は、コードがCメジャーからGメジャ
ーへ移行する際の展開フォームの例を示している。即
ち、Cメジャーは、「C,E,G」の各音で構成される
が、これを2半音以内の移動によりGメジャーを構成す
る音「G,B,D」を得るためには、構成音「B,D」
を、図17(B)に示した構成音「B,D」よりそれぞ
れ1オクターブ下にした展開フォームを作成すれば良
い。
【0029】「展開音作成」は、展開フォーム作成で得
られた展開フォームと、自動伴奏データとして記憶され
ているパターンデータの鍵盤番号とから伴奏音として発
音する展開音を作成する。例えば、自動伴奏データとし
て、図3(A)に示すようなパターンデータが記憶され
ている場合、同図(B)に示すような展開フォームが作
成されると、同図(C)に示すような展開音が得られ
る。
【0030】即ち、パターンデータ中のCの音が読み出
されると、1オクターブ下のBが展開音となり、同じく
Eの音が読み出されると、同一オクターブのDが展開音
となり、同じくGの音が読み出される、そのGがそのま
ま展開音とされる。
【0031】従って、図3(A)に示すように、パター
ンデータが8音で構成されている場合は、展開音として
8音が得られ、また、パターンデータが1オクターブを
越えるアルペジオパターンとして構成されていれば、展
開音も同様の1オクターブを越えるアルペジオパターン
の音が得られる。
【0032】なお、図3ではアルペジオパターンデータ
が自動伴奏データとして記憶されている場合の展開音の
例を示しているが、通常の和音のパターンデータが自動
伴奏データとして記憶されている場合は、その和音に対
応する展開音が得られることは勿論である。また、図3
には、パターンデータが8音で構成される場合の例が示
されているが、音の数は任意である。
【0033】次に、上記「展開フォーム作成」と「展開
音作成」とを実現するための実施例について説明する。
【0034】図1は、本発明の自動伴奏装置が適用され
る電子楽器の実施例の概略構成を示すブロック図であ
る。本電子楽器の主要構成要素である、中央処理装置
(以下、「CPU」という)10、ROM11、RAM
12、鍵盤装置13、操作パネル14、及び楽音発生回
路(トーンジェネレータ)15は、システムバス20を
介して相互に接続されている。
【0035】CPU10は、ROM11に格納されてい
る制御プログラムに従って、当該電子楽器の全体を制御
する。例えば、CPU10は、鍵盤装置13の操作に応
じた発音/消音処理、操作パネル14の操作に応じた音
色変更、音量変更処理等の各種処理を行う。本発明の特
徴に係るコード展開処理も、このCPU10によって行
われる。
【0036】このCPU10には、専用線を介してMI
DIインタフェース回路19が接続されている。MID
Iインタフェース回路19は、本電子楽器と外部装置と
の間のMIDIデータの受け渡しを制御するものであ
る。外部装置としては、例えばMIDIデータを処理す
る他の電子楽器、シーケンサー、或いはパーソナルコン
ピュータ等を挙げることができる。
【0037】また、このCPU10には、図示しないタ
イマが内蔵されており、例えば1ミリ秒間隔で割込を発
生させる。このタイマによる割込は、前コード検出のた
めの時間経過計測に使用される(詳細は後述する)。
【0038】ROM11には、上述したCPU10を動
作させるための制御プログラムが記憶されている他、C
PU10が各種処理に用いる種々の固定データが記憶さ
れている。また、このROM11には、音色を規定する
ための音色パラメータや楽音波形を生成するためのパル
スコード変調(PCM)された波形データが記憶されて
いる。波形データは、複数の音色を実現するべく、各音
色毎に複数種類が用意されている。
【0039】更に、ROM11には、自動伴奏を行うた
めの自動伴奏データ(パターンデータ)、展開フォーム
を作成する基となる各コードの基本フォームテーブル
(詳細は後述する)も記憶されている。
【0040】このROM11の記憶内容は、システムバ
ス20を介してCPU10及び楽音発生回路16により
時分割で読み出される。即ち、CPU10は、システム
バス20を介してROM11から制御プログラム(命
令)を読み出して解釈・実行すると共に、所定の固定デ
ータを読み出して各種処理に使用する。
【0041】また、CPU10は、システムバス20を
介してROM11から読み出した音色パラメータに所定
の加工を施して楽音発生回路15に送ることにより、当
該電子楽器で発音される楽音の音色を決定する。更に、
CPU10は、システムバス20を介してROM11か
ら自動伴奏データを読み出し、これに基づいて展開音を
作成し、システムバス20を介して楽音発生回路15に
送ることにより自動伴奏を行う。
【0042】また、楽音発生回路15は、システムバス
20を介してROM11から波形データを読み出し、エ
ンベロープを付加してデジタル楽音信号を生成する。
【0043】RAM12は、制御プログラムの実行に用
いる種々のデータを一時記憶するものであり、例えばデ
ータバッファ、レジスタ、フラグ等の各領域が定義され
ている。このRAM12は、システムバス20を介して
CPU10によりアクセスされる。このRAM12に定
義されるレジスタ、フラグ等については、以下において
必要の都度説明する。
【0044】操作パネル14は、本電子楽器の各種動作
を指示するために用いられるものであり、自動伴奏の開
始や終了を指示する操作子の他、各種操作子が設けられ
ている。なお、上記各種操作子は本発明とは直接関係し
ないので説明は省略する。
【0045】この操作パネル14は、図示しないパネル
スキャン回路を介してCPU10に接続されている。パ
ネルスキャン回路は、上記各種操作子をスキャンし、各
操作子のオン/オフを示すビット列でなるパネルデータ
を生成してCPU10に送る。このパネルデータは、C
PU10の制御の下にRAM12に格納され、パネルイ
ベントの有無の判断に使用される(詳細は後述する)。
【0046】鍵盤装置13は、演奏者が楽音の音程又は
コードを指示する鍵に連動して開閉するキースイッチ及
びキースキャン回路により構成される。キースキャン回
路は、各鍵をスキャンし、各鍵のオン/オフを示すビッ
ト列でなるキーデータを生成してCPU10に送る。こ
のキーデータは、CPU10の制御の下にRAM12に
記憶され、鍵盤イベントの有無の判断に使用される(詳
細は後述する)。
【0047】楽音発生回路15は、CPU10から送ら
れてきた音程や音量等を指示する楽音データに従って楽
音信号を生成するものである。この楽音発生回路15
は、同時発音可能な複数のオシレータを有しており、発
音指示に応じて所定のオシレータが割り当てられて発音
に使用される。即ち、発音が割り当てられたオシレータ
は、上記ROM11から波形データを読み出し、これに
エンベロープを付加してデジタル楽音信号を生成する。
この楽音発生回路15で発生されたデジタル楽音信号
は、D/A変換器16に供給される。
【0048】D/A変換器16は、入力されたデジタル
信号をアナログ信号に変換して出力する周知のものであ
る。このD/A変換器16でアナログ信号に変換された
楽音信号は増幅器17に送られる。
【0049】増幅器17は、入力されたアナログ楽音信
号を所定の増幅率で増幅して出力する周知のものであ
る。この増幅器17で所定の増幅が行われた楽音信号
は、スピーカ18に供給される。
【0050】スピーカ18は、電気信号としてのアナロ
グ楽音信号を音響信号に変換する周知のものである。こ
のスピーカ18により、鍵盤装置13の押鍵/離鍵に対
応した楽音や自動伴奏に伴う楽音が放音されることにな
る。
【0051】次に、上記ROM11に記憶される基本フ
ォームテーブルにつき説明する。この基本フォームテー
ブルの一例を図4及び図5に示す。
【0052】この基本フォームテーブルは、根音とコー
ド種とが与えられた場合に、鍵盤を押さえる指の形の基
本形を記憶するものである。例えばCメジャーが与えら
れた場合には、「C,E,G」の順で各音が押さえられ
た形が基本フォームとされる。また、Gメジャーの場合
は、1オクターブ下の「B」、当該オクターブの「D,
G」の順で各音が押さえられた形が基本フォームとされ
る。
【0053】上記基本フォームテーブルに記憶される基
本フォームは3音を押さえる指の形で構成されるものと
する。なお、上記テーブルで「B♯」は「C」を意味
し、「C♭」とは「B」を意味し、「E♯」は「F」を
意味する。また、上記基本フォームテーブルは、実際は
数値化されて記憶されており、各記号と数値の対応は以
下の通りである。
【0054】 C (B♯)…12 C♯(D♭)…13 D …14 D♯(E♭)…15 E …16 F (E♯)…17 F♯(G♭)…18 G …19 G♯(A♭)…20 A …21 A♯(B♭)…22 B (C♭)…23
【0055】よって、基本フォームテーブルには、例え
ば、 C ,E ,G →12,16,19 (C ) B ,E♭,G →11,15,19 (CmM7 ) 等
のように記憶されている。なお、「C」を数字の「1
2」に対応させたのは、当該オクターブより下のオクタ
ーブの音をも表現できるようにするためである。
【0056】次に、本発明では、以下のルールに従って
処理される。 (A)コードの変化が4回発生する毎に基本フォームに
戻る。即ち、コード名が4回変わる毎に基本フォームを
展開フォームとする。これは、特定のコード進行によっ
ては、展開フォームが限りなく移動してしまうのを防止
するためである。
【0057】(B)4つの音で構成されるコードの処理 このシステムでは、全てのコードを3つの音で構成す
る。従って、例えばC7等の4声和音では、構成音のど
れか1つを省略する必要がある。ベース音は別に展開、
発音させるので通常は根音を省略する。具体的には、以
下に示すルールを適用して省略する音を決定する。図4
及び図5に示した基本フォームテーブルは、下記のルー
ルに従って作成されている。なお、○7(セブンス)と
○7sus4(セブンスサスフォー)は、例外的に前コード
によって省略する音が決定されるので、CPU10の処
理により省略が実現される。
【0058】(1)○、○m、○sus4、○augは、3声和
音なのでそのまま用いる。 (2)○M7、○m7、○m7-5、○mM7、○dimは、根音を抜
く。 (3)○6は、5度音を抜く。 (4)○7、○7sus4は、前コードによって以下のルール
が順番に適用される。 R4−1:前コードと根音が同じ場合、根音を抜く。 R4−2:前コードが、○、○m、○sus4、○aug、○M
7、○7、○7sus4だった場合は、根音を抜く。 R4−3:前コードが、○6、○dimだった場合、5度音
を抜く。 R4−4:前コードが、○m7、○m7-5、○mM7で、且
つ、根音が半音進行している場合、根音を抜く。 R4−5:前コードが、○m7、○m7-5、○mM7で、且
つ、根音が半音進行していない場合、5度音を抜く。
【0059】次に、上記の構成において、本発明に係る
電子楽器の動作につき、図6〜図16に示したフローチ
ャートを参照しながら詳細に説明する。
【0060】図6は本電子楽器の動作を示すメインフロ
ーチャートであり、電源投入により起動されるものであ
る。
【0061】即ち、電源が投入されると、先ず初期化処
理が行われる(ステップS10)。この初期化処理で
は、CPU10内部のレジスタやフラグ等のクリア処
理、RAM12内に定義された各種バッファ、レジスタ
及びフラグ等に初期値を設定する処理、楽音発生回路1
5に所定のデータを設定して不要な音が発生されるのを
抑止する処理等が行われる。
【0062】次いで、パネル処理が行われる(ステップ
S11)。このパネル処理の詳細は、図7のフローチャ
ートに示されている。
【0063】パネル処理では、先ず、パネルイベントの
有無が調べられる(ステップS20)。これは、次のよ
うにして行われる。即ち、先ず、操作パネル14のパネ
ルスキャン回路で操作子がスキャンされ、各操作子のオ
ン/オフを示すパネルデータ(以下、これを「新パネル
データ」という)が読み込まれる。
【0064】次いで、前回読み込んで既にRAM12に
記憶されているパネルデータ(以下、「旧パネルデー
タ」という)と上記新パネルデータとが比較され、相違
するビットをオンにしたパネルイベントマップが作成さ
れる。このパネルイベントマップ中にオンになっている
ビットが存在する場合に、パネルイベントがあった旨が
判断されることになる。
【0065】上記ステップS20で、パネルイベントが
ないことが判断されると、何等の処理を行うことなく、
このパネル処理ルーチンからリターンする。
【0066】一方、上記ステップS20で、パネルイベ
ントがあったことが判断されると、該パネルイベント
は、自動伴奏スイッチのイベントであるか否かが調べら
れる(ステップS21)。これは、パネルイベントマッ
プ中の自動伴奏スイッチに対応するビットがオンになっ
ているか否かを調べることにより行われる。
【0067】ここで、自動伴奏スイッチのイベントでな
いことが判断されると、その他の処理が実行される(ス
テップS26)。このその他の処理は、例えば、音色選
択スイッチ、リズム選択スイッチ等のイベントに対する
処理である。その後、このパネル処理ルーチンからリタ
ーンする。
【0068】一方、上記ステップS21で自動伴奏スイ
ッチのイベントであることが判断されると、そのイベン
トはオンイベントであるか否かが調べられる(ステップ
S22)。これは、新パネルデータ中の自動伴奏スイッ
チに対応するビットがオンになっているか否かを調べる
ことにより行われる。
【0069】ここで、自動伴奏スイッチのオンイベント
でないことが判断されると、自動伴奏フラグが「0」に
クリアされる(ステップS25)。その後、このパネル
処理ルーチンからリターンする。ここに自動伴奏フラグ
は、RAM12に定義されるフラグであり、本電子楽器
が自動伴奏モードにあるか通常演奏モードにあるかを記
憶するものである。この自動伴奏フラグは、本電子楽器
が自動伴奏モードにある時は「1」、通常演奏モードに
ある時は「0」にそれぞれセットされる。
【0070】上記ステップS22で、自動伴奏スイッチ
のオンイベントであることが判断されると、自動伴奏フ
ラグが「1」にセットされる(ステップS23)。次い
で、コード展開初期設定処理が行われる(ステップS2
4)。このコード展開初期設定処理は、操作パネル14
の自動伴奏スイッチが押下されることによって本電子楽
器が自動伴奏モードにされることにより、コード展開処
理を行うための初期値設定を行う処理である。
【0071】このコード展開初期値設定処理の詳細は、
図8のフローチャートに示される。即ち、コード展開初
期設定処理では、先ず、コードチェンジ回数カウンタC
CHGが初期化される(ステップS30)。即ち、CC
HGに初期値として「0」がセットされる。ここで、C
CHGは、RAM12内部に設けられるカウンタであ
り、コードチェンジ(コード変化)が発生した回数を記
憶するものである。このCCHGは、上述したように、
コード名が4回変わる毎に展開フォームを基本フォーム
に戻す処理に用いられる。
【0072】次いで、展開フォームの初期化が行われる
(ステップS31)。この処理は、展開フォームの初期
値として、Cメジャーの構成音を示す3つのデータ{1
2(C)、16(E)、19(G)}を、展開フォーム
記憶用の3つのバッファTNKF1〜TNKF3にセッ
トする。なお、バッファTNKF1〜TNKF3は、R
AM12に設けられる。
【0073】以上のコード展開初期設定が終了すると、
このコード展開初期設定処理ルーチンからリターンして
パネル処理ルーチンに戻り、更にパネル処理ルーチンを
もリターンしてメインルーチンに戻る。
【0074】メインルーチンでは、次いで、鍵盤処理が
行われる(ステップS12)。この鍵盤処理の詳細イベ
ントについては、図10のフローチャートに示されてい
る。
【0075】鍵盤処理では、先ず、鍵盤イベントの有無
が調べられる(ステップS50)。これは、次のように
して行われる。即ち、先ず、鍵盤装置13のキースキャ
ン回路でキースイッチがスキャンされ、各鍵の押下状態
を示すキーデータ(各鍵に対応したビット列でなり、こ
れを「新キーデータ」という))が読み込まれる。
【0076】次いで、前回読み込んで既にRAM12に
記憶されているキーデータ(以下、旧キーデータ」とい
う)と、上記新キーデータとが比較され、相違するビッ
トをオンにしたキーイベントマップが作成される。この
キーイベントマップ中にオンになっているビットが存在
する場合に鍵盤イベントがあった旨が判断されることに
なる。
【0077】上記ステップS50で鍵盤イベントがなか
ったことが判断されると、何等の処理をも行うことな
く、この鍵盤処理ルーチンからリターンする。
【0078】一方、上記ステップS50で、鍵盤イベン
トがあったことが判断されると、次いで、その鍵盤イベ
ントは、コード検出領域の鍵のイベントであるか否かが
調べられる(ステップS51)。即ち、鍵盤装置13の
所定の鍵番号以下の鍵のイベントであるか否かが調べら
れる。
【0079】ここで、コード検出域の鍵のイベントでな
いことが判断されると、通常演奏における鍵盤イベント
である旨を認識し、その鍵盤イベントが押鍵イベントで
あるか否かが調べられる(ステップS54)。これは、
キーイベントマップ中のオンにされたビットに対応する
新キーデータ中のビットが「1」であるか否かを調べる
ことにより行われる。
【0080】ここで、押鍵イベントであることが判断さ
れると、発音処理が行われる(ステップS55)。この
処理は、楽音発生回路15中の所定のオシレータに発音
を割り当て、上記オンイベントのあった鍵のキーナン
バ、押鍵の強さ(速度)を示すタッチデータ、及び音色
を示すデータ等でなる楽音データを楽音発生回路15に
送る処理である。これにより、楽音発生回路15の割り
当てられたオシレータにおいて、上記楽音データに基づ
いたデジタル楽音信号が生成され、これがD/A変換器
16、増幅器17及びスピーカ18に順次送られて発音
が行われる。
【0081】一方、上記ステップS54で押鍵イベント
でないことが判断されると離鍵のイベントである旨を認
識し、消音処理が行われる(ステップS56)。即ち、
その離鍵があった鍵に割り当てられている楽音発生回路
15中のオシレータが検索され、リリースのエンベロー
プデータが送られることにより消音が行われる。
【0082】上記ステップS52で、鍵盤イベントがコ
ード検出域の鍵であることが判断されると、コード検出
処理が行われる(ステップS52)。このコード検出処
理は、押鍵パターンからコード名(根音及びコード種)
を検出する処理である。このコード検出方法は、周知の
種々の方法を用いることができる。
【0083】次いで、展開フォーム作成処理が行われる
(ステップS53)。この展開フォーム作成処理の詳細
については後述する。この展開フォーム作成処理が終了
すると、この鍵盤処理ルーチンからリターンし、メイン
ルーチンに戻る。
【0084】メインルーチンでは、次いで、自動伴奏処
理が行われる(ステップS13)。この自動伴奏処理で
は、当該電子楽器が自動伴奏モードにされており、且つ
発音又は消音タイミングが到来した場合に、ROM11
から読み出した自動伴奏データ(パターンデータ)に応
じて展開音を作成し、発音又は消音を行う処理である。
この発音又は消音処理自体は、上記鍵盤装置13の押鍵
又は離鍵に伴う発音又は消音処理と同じである。なお、
ROM11から読み出した自動伴奏データが自動伴奏の
終了を示す特別のコードである場合、又は自動伴奏モー
ドが解除された場合は、自動伴奏は停止される。この自
動伴奏処理の詳細についても後述する。
【0085】次いで、その他の処理が行われる(ステッ
プS14)。この「その他の処理」は、例えばMIDI
データの送受信処理等が含まれる。その後ステップS1
1に戻り、以下同様の処理を繰り返す。上記ステップS
11〜S14の繰り返し実行の過程で、パネル操作又は
鍵盤操作に基づくイベントや自動伴奏イベントが発生す
ると、そのイベントに対応する処理が行われることによ
り電子楽器としての各種機能が発揮される。
【0086】以上に説明したメインルーチンの処理と並
行して、タイマによる割込処理が行われる。このタイマ
による割込処理の詳細は、図9のフローチャートに示さ
れている。
【0087】割込処理では、先ず、タイムアップフラグ
TIMEUPが「1」であるか否かが調べられる(ステ
ップS40)。このフラグTIMEUPは、RAM12
に定義されるフラグであり、前コード検出に必要な所定
時間が経過したか否かを記憶するために用いられる。
【0088】ここでフラグTIMEUPが「1」である
ことが判断されると、既に上記所定時間が経過している
ことを示しているので、以下の処理は行わずに、この割
込処理ルーチンからリターンする。
【0089】一方、フラグTIMEUPが「1」でない
ことが判断されると、未だ上記所定時間が経過していな
いことを示しているので、時間経過計数要求フラグCN
TREQが「1」であるか否かが調べられる(ステップ
S41)。このフラグCNTREQは、RAM12に設
けられるフラグであり、時間経過を計数すべきか否かを
記憶するフラグである。
【0090】ここでフラグCNTREQが「0」である
ことが判断されると、時間経過を計数する必要がないこ
とを認識し、以下の処理は行わずに、この割込処理ルー
チンからリターンする。
【0091】一方、フラグCNTREQが「1」である
ことが判断されると、時間カウンタCNTTIMの内容
がデクリメントされる(ステップS42)。ここで、時
間カウンタCNTTIMは、RAM12に設けられるカ
ウンタであり、時間経過を計数するために使用されるも
のである。
【0092】次いで、上記デクリメントの結果、時間カ
ウンタCNTTIMの内容がゼロになったか否かが調べ
られる(ステップS43)。そして、ゼロになっていな
いことが判断されると、この割込処理ルーチンからリタ
ーンする。
【0093】一方、上記時間カウンタCNTTIMの内
容がゼロになったことが判断されると、フラグCNTR
EQを「0」にクリアする一方、フラグTIMEUPを
「1」にセットする。これにより、後述する展開フォー
ム処理において、上記所定時間が経過したことを知るこ
とができるようになっている。以上の処理が終了する
と、この割込処理ルーチンからリターンする。
【0094】次に、鍵盤処理ルーチンのステップS53
で行う展開フォーム作成処理について説明する。この展
開フォーム作成処理の詳細については、図11のフロー
チャートに示されている。
【0095】展開フォーム作成処理では、先ず、コード
検出処理(図10のステップS52)で検出したコード
は、その時点で使用されているコードと同じであるか否
かが調べられる(ステップS60)。そし、同じである
ことが判断されると、コードの変化はなかったものと判
断して、何等の処理をも行うことなく、この展開フォー
ム処理ルーチンからリターンする。
【0096】一方、ステップS60で今までのコードと
同じでない、つまりコードの変化があったことが判断さ
れると、フラグTIMEUPをバッファWTF1にセー
ブする(ステップS61)。バッファWTF1は、RA
M12に設けられるテンポラリのバッファである。
【0097】次いで、初期化処理が行われる(ステップ
S62)。即ち、時間カウンタCNTTIMに初期値
「100」がセットされ、フラグTIMEUPが「0」
にクリアされ、また、フラグCNTREQが「1」にセ
ットされる。
【0098】カウンタに「100」がセットされること
により、上述した割込処理ルーチンで1ミリ秒が100
回計数されて、100ミリ秒が計測されることになる。
このステップでフラグTIMEUPが「0」にクリアさ
れ、且つフラグCNTREQが「1」にセットされるこ
とにより、次の時間の計測が開始される。
【0099】次いで、先にセーブされたバッファWTF
1、つまりフラグTIMEUPが「1」であるか否かが
調べられる(ステップS63)。ここで、バッファWT
F1が「1」であることが判断されると、前コード作成
処理が行われる(ステップS64)。前コード作成処理
は、コード変化があった場合に、その前に検出されてい
たコードを確定する処理である。これは、或るコードか
ら他のコードへ移行する際に、移行途中において検出さ
れたコードを排除して、真に移行前に押されていたコー
ドを検出する処理である。
【0100】なお、バッファWTF1が「1」でないこ
とが判断されると、前コード作成処理はスキップされ
る。このことは、換言すれば、前コード作成処理は、コ
ード変化が発生してから100ミリ秒後に行われること
になる。
【0101】前コード作成処理の詳細については、図1
2のフローチャートに示されている。
【0102】前コード作成処理においては、先ず、コー
ドチェンジ回数カウンタCCHGがインクリメントされ
る(ステップS70)。そして、インクリメントの結
果、「4」以上になったか否かが調べられる(ステップ
S71)。
【0103】ここで、「4」以上になったことが判断さ
れると、CCHGの内容はゼロにクリアされ(ステップ
S72)、前コード格納バッファMAECには、定数
「0FFH」(’H’は16進数であることを示す。以
下、同じ)がセットされる(ステップS73)。この定
数「0FFH」は前コードが不定であることを示す。こ
れは、4回コード変化があったら展開フォームを基本フ
ォームに戻すので、前コードは不要であることを記憶す
るために行われる。
【0104】なお、前コード格納バッファMAECはR
AM12に設けられるバッファである。以上の処理が終
了すると、この前コード作成処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻る。
【0105】上記ステップS71で、CCHGの内容が
「4」より小さいことが判断されると、今までのコード
を前コードとしてMAECに格納する(ステップS7
4)。そして、今までの展開フォームを前フォームとし
て記憶する(ステップS75)。
【0106】具体的には、展開フォームの第1音目を記
憶するためのバッファTNKF1の内容を、前フォーム
の第1音目を記憶するためのバッファMAEF1に格納
する。同様に、展開フォームの第2音目を記憶するため
のバッファTNKF2の内容を、前フォームの第2音目
を記憶するためのバッファMAEF2に格納し、展開フ
ォームの第3音目を記憶するためのバッファTNKF3
の内容を、前フォームの第3音目を記憶するためのバッ
ファMAEF3に格納する。
【0107】上記バッファTNKF1〜TNKF3及び
MAEF1〜MAEF3は、何れもRAM12に設けら
れるバッファである。以上の処理が終了すると、この前
コード作成処理ルーチンからリターンして展開フォーム
作成処理ルーチンに戻る。
【0108】以上の前コード作成処理により、コード変
化が発生してから100ミリ秒経過後に今までのコード
を前コードとするので、コードの移行途中に検出された
コードは捨てられ、確実に移行前に押されていたコード
を前コードとすることができるようになっている。
【0109】展開フォーム作成処理ルーチンでは、次い
で、候補フォーム作成処理が行われる(ステップS6
5)。この候補フォーム作成処理の詳細は、図13のフ
ローチャートに示されている。
【0110】この候補フォーム作成処理は、前のコード
から新しいコードに移行する際に、新しいコードの構成
音として取り得る可能性のある音を決定する処理であ
る。例えば、図2に示す例では、CメジャーからGメジ
ャーに移行する際に、Gメジャーを構成する音B、D、
G及び1オクターブ下のG、及び1オクターブ上のBが
候補フォームとして選択されることになる。
【0111】候補フォーム作成処理ルーチンでは、先
ず、新しく検出されたコードを今までのコードとして記
憶する(ステップS80)。
【0112】次いで、上記前コード作成処理ルーチンで
作成された前コード(バッファMAECに格納されてい
る)が「0FFH」であるか否かが調べられる(ステッ
プS81)。そして、MAECの内容が「0FFH」で
ある、つまり基本フォームに戻るべきことが判断される
と、新コードの基本フォームが格納されている基本フォ
ームテーブルのアドレスがアドレスレジスタFADRS
に格納される(ステップS89)。アドレスレジスタF
ADRSは、RAM12に設けられるレジスタである。
【0113】次いで、候補フォームの作成が行われる
(ステップS90)。即ち、先ずアドレスレジスタFA
DRSの内容に「2」を加えたアドレスから音名が読み
出され、その音名から「12」を引いたものが第1番目
の候補フォームとして、バッファKHOF1に格納され
る。図2に示した例では、アドレスレジスタにはGメジ
ャー(図5参照)のアドレスがセットされるので、音名
Gが読み出され、これから「12」が引かれることによ
り、1オクターブ下の音名Gが第1番目の候補フォーム
としてバッファKHOF1にセットされる。
【0114】次いで、アドレスレジスタFADRSの内
容が示すアドレスから音名が読み出され、それが第2番
目の候補フォームとして、バッファKHOF2に格納さ
れる。図2に示した例では、音名Bが読み出され、これ
が第2番目の候補フォームとしてバッファKHOF2に
セットされる。
【0115】次いで、アドレスレジスタFADRSの内
容に「1」を加えたアドレスから音名が読み出され、そ
れが第3番目の候補フォームとして、バッファKHOF
3に格納される。図2に示した例では、音名Dが読み出
され、これが第3番目の候補フォームとしてバッファK
HOF3にセットされる。
【0116】次いで、アドレスレジスタFADRSの内
容に「2」を加えたアドレスから音名が読み出され、そ
れが第4番目の候補フォームとして、バッファKHOF
4に格納される。図2に示した例では、音名Gが読み出
され、これが第4番目の候補フォームとしてバッファK
HOF4にセットされる。
【0117】次いで、アドレスレジスタFADRSの内
容が示すアドレスから音名が読み出され、その音名に
「12」を加えたものが第5番目の候補フォームとし
て、バッファKHOF5に格納される。図2に示した例
では、音名Bが読み出され、これに「12」が加算され
ることにより、1オクターブ上の音名Bが第5番目の候
補フォームとしてバッファKHOF5にセットされる。
なお、上述したバッファKHOF1〜KHOF5は、R
AM12に設けられるバッファである。
【0118】以上では、コードGに対する候補フォーム
を作成する場合を例にとって説明したが他のコードの場
合も全く同様である。以上の候補フォームの作成が終了
すると、この候補フォーム作成処理ルーチンからリター
ンして展開フォーム作成処理ルーチンに戻る。
【0119】上記ステップS81で、MAECの内容が
「0FFH」でないことが判断されると、次いで、新コ
ードは○7又は○7sus4であるか否かが調べられる(ステ
ップS82)。ここで、新コードが○7又は○7sus4でな
いことが判断されるとステップS89に分岐し、上述し
たと同様の処理により候補フォームが作成される。
【0120】一方、新コードが○7又は○7sus4であるこ
とが判断されると、前コードと根音が同じであるか否か
が調べられる(ステップS83)。そして、同じである
ことが判断されると、新コードの根音抜き基本フォーム
が格納されている基本フォームテーブルのアドレスがア
ドレスレジスタFADRSに格納される(ステップS8
7)。即ち、図5に示した基本フォームテーブルの○7
又は○7sus4のアドレスがアドレスレジスタFADRS
にセットされる。これは、上述したルールR4−1を実
施するものである。その後、ステップS90に分岐し、
上述したと同様の処理により候補フォームが作成され
る。
【0121】上記ステップS83で、前コードと根音が
同じでないことが判断されると、次いで、前コードは○
6又は○dimであるか否かが調べられる(ステップS8
4)。ここで、前コードは○6又は○dimであることが判
断されると、新コードの5度音抜き基本フォームが格納
されている基本フォームテーブルのアドレスがアドレス
レジスタFADRSに格納される(ステップS88)。
即ち、図5に示した基本フォームテーブルの*○7又は
*○7sus4のアドレスがアドレスレジスタFADRSに
セットされる。これは、上述したルールR4−3を実施
するものである。その後、ステップS90に分岐し、上
述したと同様の処理により候補フォームが作成される。
【0122】上記ステップS84で、前コードが○6又
は○dimでないことが判断されると、次いで、前コード
は○m7又は○m7-5又は○mM7であるか否かが調べられる
(ステップS85)。ここで、前コードが○m7又は○m7
-5又は○mM7でない、つまり○、○m、○sus4、○aug、
○M7、○7、○7sus4であることが判断されると、ステッ
プS87に分岐し、上述した同様の処理が行われる。即
ち、図5に示した基本フォームテーブルの○7又は○7su
s4のアドレスがアドレスレジスタFADRSにセットさ
れる。これは、上述したルールR4−2を実施するもの
である。その後、ステップS90に分岐し、上述したと
同様の処理により候補フォームが作成される。
【0123】上記ステップS85で、前コードが○m7又
は○m7-5又は○mM7であることが判断されると、次い
で、前コードと根音が半音違いであるか否かが調べられ
る(ステップS86)。ここで、前コードと根音が半音
違いであることが判断されると、ステップS87に進
み、上述した同様の処理が行われる。即ち、図5に示し
た基本フォームテーブルの○7又は○7sus4のアドレスが
アドレスレジスタFADRSにセットされる。これは、
上述したルールR4−4を実施するものである。その
後、ステップS90に分岐し、上述したと同様の処理が
行われて候補フォームが作成される。
【0124】上記ステップS86で、前コードと根音が
半音違いでないことが判断されると、ステップS88に
分岐し、上述した同様の処理が行われる。即ち、図5に
示した基本フォームテーブルの*○7又は*○7sus4のア
ドレスがアドレスレジスタFADRSにセットされる。
これは、上述したルールR4−5を実施するものであ
る。その後、ステップS90に分岐し、上述したと同様
の処理により候補フォームが作成される。
【0125】以上のようにして作成される候補フォーム
は、基本フォームがバッファKHOF2〜KHOF4に
セットされ、基本フォームの最高音の1オクターブ下の
音がバッファKHOF1にセットされ、最低音の1オク
ターブ上の音がバッファKHOF5にセットされて得ら
れる。この候補フォームの作成が完了すると、この候補
フォーム作成処理ルーチンからリターンし、展開フォー
ム作成処理ルーチンに戻る。
【0126】展開フォーム作成処理ルーチンでは、次い
で、展開フォーム決定処理が行われる(ステップS6
6)。この展開フォーム決定処理の詳細は、図14のフ
ローチャートに示されている。
【0127】この展開フォーム作成処理は、先に作成さ
れた候補フォームと前フォームの差が2半音以内にある
か否かを順次調べ、2半音以内にある音を使用して新し
い展開フォームを決定する処理である。
【0128】この展開フォーム決定処理では、先ず、前
コードは「0FFH」であるか否か、つまりコード変化
が4回目であるか否かが調べられる(ステップS10
0)。ここで、前コードが「0FFH」であることが判
断されると、基本フォームが展開フォームとされる(ス
テップS113)。即ち、候補フォームを記憶するバッ
ファKHOF2〜KHOF4の内容(基本フォーム)が
展開フォームとしてバッファTNKF1〜TNKF3に
セットされる。その後、この展開フォーム決定処理ルー
チンからリターンして展開フォーム作成処理ルーチンに
戻る。
【0129】一方、前コードが「0FFH」でないこと
が判断されると、前フォームの第1番目の音MAEF1
と候補フォームの第1番目の音KHOF1との差の絶対
値が「2」以下であるか否かが調べられる(ステップS
101)。ここで、「2」以下であることが判断される
と、次いで、前フォームの第2番目の音MAEF2と候
補フォームの第2番目の音KHOF2との差の絶対値が
「2」以下であるか否かが調べられる(ステップS10
2)。ここで、「2」以下であることが判断されると、
次いで、前フォームの第3番目の音MAEF3と候補フ
ォームの第3番目の音KHOF3との差の絶対値が
「2」以下であるか否かが調べられる(ステップS10
3)。ここで、「2」以下であることが判断されると、
候補フォームのバッファKHOF1〜KHOF3の各内
容が展開フォームとしてバッファTNKF1〜TNKF
3にセットされる(ステップS104)。
【0130】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第1〜第3番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS101〜S
103で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS105に進む。
【0131】ステップS105では、前フォームの第1
番目の音MAEF1と候補フォームの第2番目の音KH
OF2との差の絶対値が「2」以下であるか否かが調べ
られる。ここで、「2」以下であることが判断される
と、次いで、前フォームの第2番目の音MAEF2と候
補フォームの第3番目の音KHOF3との差の絶対値が
「2」以下であるか否かが調べられる(ステップS10
6)。ここで、「2」以下であることが判断されると、
次いで、前フォームの第3番目の音MAEF3と候補フ
ォームの第4番目の音KHOF4との差の絶対値が
「2」以下であるか否かが調べられる(ステップS10
7)。ここで、「2」以下であることが判断されると、
候補フォームのバッファKHOF2〜KHOF4の各内
容が展開フォームとしてバッファTNKF1〜TNKF
3にセットされる(ステップS108)。
【0132】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第2〜第4番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS105〜S
107で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS109に進む。
【0133】ステップS109では、前フォームの第1
番目の音MAEF1と候補フォームの第3番目の音KH
OF3との差の絶対値が「2」以下であるか否かが調べ
られる。ここで、「2」以下であることが判断される
と、次いで、前フォームの第2番目の音MAEF2と候
補フォームの第4番目の音KHOF4との差の絶対値が
「2」以下であるか否かが調べられる(ステップS11
0)。ここで、「2」以下であることが判断されると、
次いで、前フォームの第3番目の音MAEF3と候補フ
ォームの第5番目の音KHOF5との差の絶対値が
「2」以下であるか否かが調べられる(ステップS11
1)。ここで、「2」以下であることが判断されると、
候補フォームのバッファKHOF3〜KHOF5の各内
容が展開フォームとしてバッファTNKF1〜TNKF
3にセットされる(ステップS112)。
【0134】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第3〜第5番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS105〜S
107で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS113に進み、基本フォームが
展開フォームとしてバッファTNKF1〜TNKF3に
セットされる。
【0135】以上のようにして展開フォームが決定され
ると、この展開フォーム決定処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻り、さらに展開
フォーム作成処理ルーチンもリターンしてメインルーチ
ンに戻る。
【0136】次に、自動伴奏処理の詳細について、図1
5に示したフローチャートを参照しながら説明する。
【0137】自動伴奏処理では、先ず、自動伴奏フラグ
が「1」であるか否か、つまり本電子楽器が自動伴奏モ
ードにあるか否かが調べられる(ステップS120)。
そして、自動伴奏モードにないことが判断されると、何
等の処理も行うことなく、この自動伴奏処理ルーチンか
らリターンする。
【0138】一方、自動伴奏モードであることが判断さ
れると、ROM11から自動伴奏データ(パターンデー
タ)を読み込む(ステップS121)。そして、自動伴
奏イベントの有無が調べられる(ステップS122)。
これは自動伴奏データに含まれるステップタイムが発音
タイミングになったか否かを調べることにより行われ
る。
【0139】ここで、自動伴奏イベントがないことが判
断されると、以下の処理は行わずにこの自動伴奏処理ル
ーチンからリターンする。一方、自動伴奏イベントがあ
ることが判断されると、展開音作成処理が行われる(ス
テップS123)。この展開音作成処理の詳細について
は、図16のフローチャートに示されている。
【0140】即ち、展開音作成処理では、先ず、パター
ンデータ中のオクターブ情報を、バッファPOCTにセ
ットする(ステップS130)。オクターブ情報は、パ
ターンデータの鍵盤番号を「12」で割った商として求
められる。
【0141】次いで、パターンデータ中の音名情報を、
バッファPNOTEにセットする(ステップS13
1)。この音名情報は、パターンデータの鍵盤番号を
「12」で割った余りとして求められる。
【0142】次いで、バッファPOCTに記憶されてい
るオクターブ情報をデクリメントする(ステップS13
2)。これは、展開フォームの値は1オクターブ上の値
になっているので、正規の高さの音に戻すために行うも
のである。
【0143】次いで、上記ステップS131で算出して
バッファPNOTEに格納されている音名情報が「3〜
6」の範囲にあるか否かが調べられる(ステップS13
3)。そして、バッファPNOTEの内容が「3〜6」
の範囲にあれば、展開フォームの第2番目の音としてバ
ッファTNKF2に記憶されている値と、オクターブ情
報POCTに「12」を乗じた値とを加算してこれを発
音すべき鍵盤番号としてバッファKYNOに格納する
(ステップS134)。例えば、パターンデータとして
「C,E,G」の各音が記憶されているとすると、E
(=4)が上記の場合に該当するので、上記の処理によ
り展開音の第2番目の音がオクターブ情報を付された鍵
盤番号として生成されることになる。
【0144】一方、上記ステップS133で、バッファ
PNOTEに格納されている音名情報が「3〜6」の範
囲にないことが判断されると、次いで、バッファPNO
TEに格納されている音名情報が「7〜10」の範囲に
あるか否かが調べられる(ステップS135)。そし
て、バッファPNOTEの内容が「7〜10」の範囲に
あれば、展開フォームの第3番目の音としてバッファT
NKF3に記憶されている値と、オクターブ情報POC
Tに「12」を乗じた値とを加算してこれを発音すべき
鍵盤番号としてバッファKYNOに格納する(ステップ
S136)。例えば、パターンデータとして「C,E,
G」の各音が記憶されているとすると、G(=7)が上
記の場合に該当するので、上記の処理により展開音の第
3番目の音がオクターブ情報を付された鍵盤番号として
生成されることになる。
【0145】上記ステップS135で、バッファPNO
TEに格納されている音名情報が「7〜10」の範囲に
ない、つまり「0〜2、11」であることが判断される
と、展開フォームの第1番目の音としてバッファTNK
F1に記憶されている値と、オクターブ情報POCTに
「12」を乗じた値とを加算してこれを発音すべき鍵盤
番号としてバッファKYNOに格納する(テップS13
7)。例えば、パターンデータとして「C,E,G」の
各音が記憶されているとすると、C(=0)が上記の場
合に該当するので、上記の処理により展開音の第1番目
の音がオクターブ情報を付された鍵盤番号として生成さ
れることになる。
【0146】このようにして、発音すべきコードの構成
音が鍵盤番号として得られると、この展開音作成処理ル
ーチンからリターンし、自動伴奏処理ルーチンに戻る。
【0147】自動伴奏処理ルーチンでは、次いで、発音
/消音処理が行われる(ステップS124)。即ち、展
開音作成処理ルーチンで作成されてバッファKYNOに
格納されている鍵盤番号が楽音発生回路15に送られる
ことにより、その鍵盤番号に対応する発音又は消音が行
われる。この発音又は消音の動作は先に鍵盤処理ルーチ
ンで説明したものと同じであるので、説明は省略する。
【0148】このようにして、伴奏音の発音又は消音が
終了すると、この自動伴奏処理ルーチンからリターンし
てメインルーチンに戻り、先に説明したように、メイン
ルーチンの実行を繰り返すことになる。
【0149】
【発明の効果】以上詳述したように、この発明によれば
コードを変更する際に、人が伴奏する場合のようなコー
ドフォームをとることにより自然な自動伴奏ができる電
子楽器の自動伴奏装置を提供することができる。
【図面の簡単な説明】
【図1】本発明の自動伴奏装置を適用した電子楽器の実
施例の概略構成を示すブロック図である。
【図2】本発明における展開フォームの例を説明するた
めの図である。
【図3】本発音における展開音作成を説明するための図
である。
【図4】本発明に用いる基本フォームテーブルの一例を
示す図である(図5に続く)。
【図5】本発明に用いる基本フォームテーブルの一例を
示す図である(図4の続き)。
【図6】本発明の実施例の動作を示すフローチャート
(メインルーチン)である。
【図7】本発明の実施例の動作を示すフローチャート
(パネル処理ルーチン)である。
【図8】本発明の実施例の動作を示すフローチャート
(コード展開初期値設定処理ルーチン)である。
【図9】本発明の実施例の動作を示すフローチャート
(割込処理ルーチン)である。
【図10】本発明の実施例の動作を示すフローチャート
(鍵盤処理ルーチン)である。
【図11】本発明の実施例の動作を示すフローチャート
(展開フォーム作成処理ルーチン)である。
【図12】本発明の実施例の動作を示すフローチャート
(前コード作成処理ルーチン)である。
【図13】本発明の実施例の動作を示すフローチャート
(候補フォーム作成処理ルーチン)である。
【図14】本発明の実施例の動作を示すフローチャート
(展開フォーム決定処理ルーチン)である。
【図15】本発明の実施例の動作を示すフローチャート
(自動伴奏処理ルーチン)である。
【図16】本発明の実施例の動作を示すフローチャート
(展開音作成処理ルーチン)である。
【図17】従来のコード展開処理を説明するための図で
ある。
【符号の説明】
10 CPU 11 ROM 12 RAM 13 鍵盤装置 14 操作パネル 15 楽音発生装置 16 D/A変換器 17 増幅器 18 スピーカ 19 MIDIインタフェース回路 20 システムバス
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G10H 1/00 101 - 102 G10H 1/36 - 1/42

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 前回使用されたコードを検出する前コー
    ド検出手段と、 鍵盤装置の押鍵された複数のが示す複数の階名に基づ
    て複数の候補音を作成する候補音作成手段と、 該候補音作成手段で作成された前記候補音のうちから、
    前記前コード検出手段で検出されたコードに基づいて今
    回使用するコードを決定する決定手段と、 該決定手段で決定されたコードを構成する音を実際に発
    音するための楽音情報を作成する楽音情報作成手段と コード名を基本コードに対応付ける基本フォームテーブ
    ルと を具備し、前記候補音作成手段は、前記基本フォームテーブルから
    前記複数の階名が示すコード名 に対応する基本コードを
    読み出し、 前記候補音作成手段で作成される候補音は、前記基本フ
    ォームテーブルから読み出された基本コードを構成する
    複数音と、該複数音中の最低音より1オクターブ上の音
    と、前記複数音中の最高音より1オクターブ下の音とに
    よりなり、前記今回使用するコードを構成する各音は、前記前回使
    用されたコードを構成する音と の音程差が2半音内にあ
    ることを特徴とする電子楽器の自動伴奏装置。
  2. 【請求項2】 前回使用されたコードを検出する前コー
    ド検出手段と、 鍵盤装置の押鍵された複数のが示す複数の階名に基づ
    て複数の候補音を作成する候補音作成手段と、 該候補音作成手段で作成された前記候補音のうちから、
    前記前コード検出手段で検出されたコードに基づいて今
    回使用するコードを決定する決定手段と、 該決定手段で決定されたコードを構成する音を実際に発
    音するための楽音情報を作成する楽音情報作成手段と コード名を基本コードに対応付ける基本フォームテーブ
    ルと を具備し、前記候補音作成手段は、前記基本フォームテーブルから
    前記複数の階名が示すコード名 に対応する基本コードを
    読み出し、前記候補音作成手段で作成される候補音は、前記基本フ
    ォームテーブルから読み出され た基本コードを構成する
    複数音と、該複数音中の最低音より1オクターブ上の音
    と、前記複数音中の最高音より1オクターブ下の音とに
    よりなり、 前記今回使用するコードを構成する各音は、前記前回使
    用されたコードを構成する音との音程差が所定範囲内に
    あり、 前記決定手段は、所定回数のコード変化毎に、前記今回
    使用するコードを構成する音として、前記基本フォーム
    テーブルから読み出された基本コードを構成する音を用
    いることを特徴とする電子楽器の自動伴奏装置。
  3. 【請求項3】 前回使用されたコードを検出する前コー
    ド検出手段と、 鍵盤装置の押鍵された複数のが示す複数の階名に基づ
    て複数の候補音を作成する候補音作成手段と、 該候補音作成手段で作成された前記候補音のうちから、
    前記前コード検出手段で検出されたコードに基づいて今
    回使用するコードを決定する決定手段と、 該決定手段で決定されたコードを構成する音を実際に発
    音するための楽音情報を作成する楽音情報作成手段と コード名を基本コードに対応付ける基本フォームテーブ
    ルと を具備し、前記候補音作成手段は、前記基本フォームテーブルから
    前記複数の階名が示すコード名 に対応する基本コードを
    読み出し、前記候補音作成手段で作成される候補音は、前記基本フ
    ォームテーブルから読み出され た基本コードを構成する
    複数音と、該複数音中の最低音より1オクターブ上の音
    と、前記複数音中の最高音より1オクターブ下の音とに
    よりなり、 前記決定手段は、前記今回使用するコードを構成する音として、前記候補
    音のうちの前記前回使用された コードを構成する音との
    音程差が所定範囲内にある音を用い、 前記候補音作成手段で作成された候補音が、前記前コー
    ド検出手段で検出されたコーを構成する各音に対する
    音程差が前記所定範囲内にない場合、前記今回使用す
    るコーを構成する音として、前記基本フォームテーブ
    ルから読み出された基本コードを構成する音を用いるこ
    とを特徴とする電子楽器の自動伴奏装置。
JP12468393A 1993-04-30 1993-04-30 電子楽器の自動伴奏装置 Expired - Fee Related JP3476863B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12468393A JP3476863B2 (ja) 1993-04-30 1993-04-30 電子楽器の自動伴奏装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12468393A JP3476863B2 (ja) 1993-04-30 1993-04-30 電子楽器の自動伴奏装置

Publications (2)

Publication Number Publication Date
JPH06314095A JPH06314095A (ja) 1994-11-08
JP3476863B2 true JP3476863B2 (ja) 2003-12-10

Family

ID=14891495

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12468393A Expired - Fee Related JP3476863B2 (ja) 1993-04-30 1993-04-30 電子楽器の自動伴奏装置

Country Status (1)

Country Link
JP (1) JP3476863B2 (ja)

Also Published As

Publication number Publication date
JPH06314095A (ja) 1994-11-08

Similar Documents

Publication Publication Date Title
JP2583809B2 (ja) 電子楽器
US5319152A (en) Chord information output apparatus and automatic accompaniment apparatus
JPH06332449A (ja) 電子楽器の歌声再生装置
JP3844286B2 (ja) 電子楽器の自動伴奏装置
JPH06348271A (ja) 自動伴奏装置
JP3476863B2 (ja) 電子楽器の自動伴奏装置
JP2640992B2 (ja) 電子楽器の発音指示装置及び発音指示方法
JPH06314096A (ja) 電子楽器の前コード検出装置
JP2819616B2 (ja) ポルタメント機能を有する電子楽器
JP3543124B2 (ja) 自動伴奏装置
JPH0566773A (ja) 電子楽器
JP2714893B2 (ja) 和音情報出力装置
JP3738634B2 (ja) 自動伴奏装置、及び記録媒体
JPS6267593A (ja) 自動伴奏機能付電子楽器
JP2513014B2 (ja) 電子楽器の自動演奏装置
JPH05108068A (ja) フレーズ情報入出力装置
JP3630266B2 (ja) 自動伴奏装置
KR970008441B1 (ko) 전자악기의 키 스프리트 위치 설정방법
JP2570550B2 (ja) 電子弦楽器
JP3015226B2 (ja) 電子楽器
JPH10319949A (ja) 電子楽器
JPH07199940A (ja) 電子楽器のデモ演奏制御装置
JP2004279953A (ja) アルペジオ生成装置及びプログラム
JPH0736456A (ja) 電子楽器
JPH07181973A (ja) 電子楽器の自動伴奏装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030916

LAPS Cancellation because of no payment of annual fees