JPH06314096A - 電子楽器の前コード検出装置 - Google Patents
電子楽器の前コード検出装置Info
- Publication number
- JPH06314096A JPH06314096A JP5124684A JP12468493A JPH06314096A JP H06314096 A JPH06314096 A JP H06314096A JP 5124684 A JP5124684 A JP 5124684A JP 12468493 A JP12468493 A JP 12468493A JP H06314096 A JPH06314096 A JP H06314096A
- Authority
- JP
- Japan
- Prior art keywords
- code
- chord
- time
- detected
- key
- 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.)
- Withdrawn
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
(57)【要約】
【目的】 本発明は電子楽器の自動伴奏装置に適用さ
れ、前回使用されたコードを検出する電子楽器の前コー
ド検出装置に関し、前コードを確実に検出するととも
に、コード入力に対する応答性を向上させることのでき
る電子楽器の前コード検出装置を提供することを目的と
する。 【構成】 本発明の電子楽器は、今回検出されたコード
と前回検出されたコードとの異同を判断する判断手段
と、該判断手段で今回検出されたコードと前回検出され
たコードとが相違することが判断された時に計時を開始
して所定時間が計時された場合にその旨を記憶する計時
手段と、前記判断手段で今回検出されたコードと前回検
出されたコードとが相違することが検出された場合に、
前記計時手段が所定時間を計時した旨を記憶していれ
ば、前回検出されたコードを前コードとして記憶する制
御手段、とにより構成される。
れ、前回使用されたコードを検出する電子楽器の前コー
ド検出装置に関し、前コードを確実に検出するととも
に、コード入力に対する応答性を向上させることのでき
る電子楽器の前コード検出装置を提供することを目的と
する。 【構成】 本発明の電子楽器は、今回検出されたコード
と前回検出されたコードとの異同を判断する判断手段
と、該判断手段で今回検出されたコードと前回検出され
たコードとが相違することが判断された時に計時を開始
して所定時間が計時された場合にその旨を記憶する計時
手段と、前記判断手段で今回検出されたコードと前回検
出されたコードとが相違することが検出された場合に、
前記計時手段が所定時間を計時した旨を記憶していれ
ば、前回検出されたコードを前コードとして記憶する制
御手段、とにより構成される。
Description
【0001】
【産業上の利用分野】本発明は、電子楽器の自動伴奏装
置に適用され、前回使用されたコード(以下、「前コー
ド」という)を確実に検出する電子楽器の前コード検出
装置に関する。
置に適用され、前回使用されたコード(以下、「前コー
ド」という)を確実に検出する電子楽器の前コード検出
装置に関する。
【0002】
【従来の技術】近年、自動伴奏装置を備えた電子楽器が
開発され実用に供されている。かかる電子楽器において
は、一般に、鍵盤の一部がコード検出用、残りが通常演
奏用の領域として定められている。そして、通用演奏領
域の鍵盤が押鍵されると、その押鍵位置等を示す押鍵情
報が生成され、この押鍵情報に基づいて押鍵位置に対応
した音高の楽音が発音される。
開発され実用に供されている。かかる電子楽器において
は、一般に、鍵盤の一部がコード検出用、残りが通常演
奏用の領域として定められている。そして、通用演奏領
域の鍵盤が押鍵されると、その押鍵位置等を示す押鍵情
報が生成され、この押鍵情報に基づいて押鍵位置に対応
した音高の楽音が発音される。
【0003】一方、コード検出領域の鍵盤が押鍵された
場合も、その押鍵位置等を示す押鍵情報が生成される
が、この押鍵情報は押鍵位置に対応した音高の楽音を発
音するための情報としては使用されず、コード検出用の
情報として用いられる。即ち、演奏者がコード検出領域
の鍵盤を押鍵すると、その押鍵パターンに応じたコード
が検出され、この検出されたコードに基づいて所定のリ
ズムパターンに従った伴奏音が発生される。
場合も、その押鍵位置等を示す押鍵情報が生成される
が、この押鍵情報は押鍵位置に対応した音高の楽音を発
音するための情報としては使用されず、コード検出用の
情報として用いられる。即ち、演奏者がコード検出領域
の鍵盤を押鍵すると、その押鍵パターンに応じたコード
が検出され、この検出されたコードに基づいて所定のリ
ズムパターンに従った伴奏音が発生される。
【0004】上記コード検出の方法は従来から種々のも
のが知られている。例えば代表的なコード検出の方法と
して以下のものがある。
のが知られている。例えば代表的なコード検出の方法と
して以下のものがある。
【0005】先ず、コード検出領域の鍵盤が押鍵される
と、その押鍵状態(各鍵のオン/オフ状態)を検出す
る。次いで、検出された押鍵状態からオンにされている
鍵の音名を1オクターブ内に集めた押鍵情報を作成す
る。次いで、この1オクターブの押鍵情報と、メジャ
ー、マイナー、セブンス等といったコード種毎の押鍵情
報(Cを根音として作成され、記憶手段に記憶されてい
る)とを順次比較し、一致した場合にそのコード種を検
出されたコードとする。
と、その押鍵状態(各鍵のオン/オフ状態)を検出す
る。次いで、検出された押鍵状態からオンにされている
鍵の音名を1オクターブ内に集めた押鍵情報を作成す
る。次いで、この1オクターブの押鍵情報と、メジャ
ー、マイナー、セブンス等といったコード種毎の押鍵情
報(Cを根音として作成され、記憶手段に記憶されてい
る)とを順次比較し、一致した場合にそのコード種を検
出されたコードとする。
【0006】なお、C以外の根音を有するコード種を検
出する場合は、1オクターブの押鍵情報又はコード種毎
の押鍵情報を順次ローテートシフトさせながら比較し、
一致した時のシフト数により根音を決定する。
出する場合は、1オクターブの押鍵情報又はコード種毎
の押鍵情報を順次ローテートシフトさせながら比較し、
一致した時のシフト数により根音を決定する。
【0007】このようにして検出されるコード名(根音
とコード種で構成される)と押鍵状態の一例を、図18
(A)に示す。図18(A)では、Cの鍵のみが押鍵さ
れた状態、C及びEの2鍵が押鍵された状態、C,E及
びGの3鍵が押鍵された状態では、いずれの場合もCメ
ジャーとして検出されることを示している。同様に、C
及びE♭の2鍵が押鍵された状態、C,E♭及びGの3
鍵が押鍵された状態では、いずれの場合もCマイナーと
して検出されることを示している。
とコード種で構成される)と押鍵状態の一例を、図18
(A)に示す。図18(A)では、Cの鍵のみが押鍵さ
れた状態、C及びEの2鍵が押鍵された状態、C,E及
びGの3鍵が押鍵された状態では、いずれの場合もCメ
ジャーとして検出されることを示している。同様に、C
及びE♭の2鍵が押鍵された状態、C,E♭及びGの3
鍵が押鍵された状態では、いずれの場合もCマイナーと
して検出されることを示している。
【0008】かかるコード検出は、例えば、コード検出
領域の鍵の押鍵イベントを検出したタイミングで行われ
る。押鍵イベントの検出機能は、例えばシフトレジスタ
を用いた論理回路やマイクロプロセッサ等で実現される
が、いずれにしても押鍵イベントは各鍵毎に逐次1鍵ず
つ検出されるようになっている。これは、演奏者が同時
に複数鍵を押鍵したとしても同様である。
領域の鍵の押鍵イベントを検出したタイミングで行われ
る。押鍵イベントの検出機能は、例えばシフトレジスタ
を用いた論理回路やマイクロプロセッサ等で実現される
が、いずれにしても押鍵イベントは各鍵毎に逐次1鍵ず
つ検出されるようになっている。これは、演奏者が同時
に複数鍵を押鍵したとしても同様である。
【0009】従って、コード検出処理も、押下された鍵
の数だけ行われることになる。例えば「C,E♭,G」
の各構成音でなるGマイナーのコードが押鍵された場合
は、コード検出処理も3回行われることになる。このコ
ード検出方式(以下、「第1の従来例」という)は、最
終的にGマイナーという1つのコード名さえ検出すれば
良いのであるから、残りの2回のコード検出処理は無駄
な処理となっているという問題があるが、押鍵イベント
が発生する度にコード検出を行うので、コード入力に対
する応答性は優れている。
の数だけ行われることになる。例えば「C,E♭,G」
の各構成音でなるGマイナーのコードが押鍵された場合
は、コード検出処理も3回行われることになる。このコ
ード検出方式(以下、「第1の従来例」という)は、最
終的にGマイナーという1つのコード名さえ検出すれば
良いのであるから、残りの2回のコード検出処理は無駄
な処理となっているという問題があるが、押鍵イベント
が発生する度にコード検出を行うので、コード入力に対
する応答性は優れている。
【0010】この第1の従来例の問題を解決するものと
して、例えば、コード検出領域の鍵が一定数(例えば3
個)押されて初めてコード検出を開始するもの(以下、
「第2の従来例」という)、コード検出領域の鍵が押さ
れてから一定時間の経過後にコード検出を開始するもの
(以下、「第3の従来例」という)等があった。
して、例えば、コード検出領域の鍵が一定数(例えば3
個)押されて初めてコード検出を開始するもの(以下、
「第2の従来例」という)、コード検出領域の鍵が押さ
れてから一定時間の経過後にコード検出を開始するもの
(以下、「第3の従来例」という)等があった。
【0011】これら第2、第3の従来例によれば、無駄
な処理を行うことなく相当の確実性をもって演奏者が意
図するコードを検出できるという利点がある。しかし、
コードを押鍵する操作を開始してから伴奏音が発生され
るまでに時間がかかり、コード入力に対する応答性に劣
るという欠点があった。
な処理を行うことなく相当の確実性をもって演奏者が意
図するコードを検出できるという利点がある。しかし、
コードを押鍵する操作を開始してから伴奏音が発生され
るまでに時間がかかり、コード入力に対する応答性に劣
るという欠点があった。
【0012】一方、上記のようにして検出されたコード
は、コード展開という処理によって実際に発音される音
に変換(展開)される。
は、コード展開という処理によって実際に発音される音
に変換(展開)される。
【0013】このコード展開は、例えばメジャー、マイ
ナー、セブンス等といったコード種毎に、C、C♯、
D、…、Bといった各音名に対する変換情報を記憶した
音程変換テーブルを予め備えておき、検出されたコード
名が与えられた時に、予め自動伴奏データとして記憶さ
れているパターンデータを読み出し、これを根音及びコ
ード種とに応じて上記音程変換テーブルを参照して所定
の変換を行うことにより、検出されたコードを構成する
音を得る処理である。
ナー、セブンス等といったコード種毎に、C、C♯、
D、…、Bといった各音名に対する変換情報を記憶した
音程変換テーブルを予め備えておき、検出されたコード
名が与えられた時に、予め自動伴奏データとして記憶さ
れているパターンデータを読み出し、これを根音及びコ
ード種とに応じて上記音程変換テーブルを参照して所定
の変換を行うことにより、検出されたコードを構成する
音を得る処理である。
【0014】今、例えば図17に示すように、「C,
E,G」の3つの鍵が図示のコードフォームで押下され
たとすると、Cメジャーのコードが検出され、次いで、
コード展開が行われる。コード展開処理では、例えば上
記Cメジャーのコードが検出された場合は、図17
(A)に示すように、根音「C」から高音側へ「C,
E,G」の順番でなる3音に展開される。
E,G」の3つの鍵が図示のコードフォームで押下され
たとすると、Cメジャーのコードが検出され、次いで、
コード展開が行われる。コード展開処理では、例えば上
記Cメジャーのコードが検出された場合は、図17
(A)に示すように、根音「C」から高音側へ「C,
E,G」の順番でなる3音に展開される。
【0015】次いで、演奏者が所定のコードフォームで
押鍵することによりGメジャーのコードが検出される
と、図17(B)に示すように、根音「G」から高音側
へ「G,B,D」の順番でなる3音に展開される。
押鍵することによりGメジャーのコードが検出される
と、図17(B)に示すように、根音「G」から高音側
へ「G,B,D」の順番でなる3音に展開される。
【0016】
【発明が解決しようとする課題】ところで、自動伴奏装
置におけるコード展開においては、検出されたコードの
情報によってコード展開するのみならず、前回使用した
コードの情報をも用いると、人間が伴奏したような自然
な自動伴奏を行うことができることが知られている。
置におけるコード展開においては、検出されたコードの
情報によってコード展開するのみならず、前回使用した
コードの情報をも用いると、人間が伴奏したような自然
な自動伴奏を行うことができることが知られている。
【0017】そこで、かかる自動伴奏を実現するため
に、前コードを確実に残しておく必要が生じた。しかし
ながら、上述の第1の従来例では、演奏者が意図するコ
ードを検出するまでに複数回のコード検出処理が行われ
るので、直前に検出したコードを前コードとすることは
できない。具体的な例につき、図18(B)を参照しな
がら説明する。
に、前コードを確実に残しておく必要が生じた。しかし
ながら、上述の第1の従来例では、演奏者が意図するコ
ードを検出するまでに複数回のコード検出処理が行われ
るので、直前に検出したコードを前コードとすることは
できない。具体的な例につき、図18(B)を参照しな
がら説明する。
【0018】例えば、Gマイナーのコードを構成する
「C,E♭,G」の各鍵をほぼ同時に押したとする。な
お、鍵盤イベントは、C→E♭→Gの順番で検出される
ものとし、Gマイナーのコードを押さえる前に検出され
ていたコード、つまり前コードはXであるものとする。
「C,E♭,G」の各鍵をほぼ同時に押したとする。な
お、鍵盤イベントは、C→E♭→Gの順番で検出される
ものとし、Gマイナーのコードを押さえる前に検出され
ていたコード、つまり前コードはXであるものとする。
【0019】先ず、いずれの鍵も押鍵されていない状態
では、コード名Xが検出されている。この状態における
前回検知コード及び欲しい前コードは不定(「−」で示
されている)であるものとする。この状態で鍵Cの押鍵
イベントが検出されると、鍵Cのみの押鍵状態が認識さ
れて、コード名としてCメジャーが検出され、同時に、
前回検知コードとしてXが記憶される。
では、コード名Xが検出されている。この状態における
前回検知コード及び欲しい前コードは不定(「−」で示
されている)であるものとする。この状態で鍵Cの押鍵
イベントが検出されると、鍵Cのみの押鍵状態が認識さ
れて、コード名としてCメジャーが検出され、同時に、
前回検知コードとしてXが記憶される。
【0020】次いで、鍵E♭の押鍵イベントが検出され
ると、鍵Cと鍵E♭の押鍵状態が認識されてコード名と
してCマイナーが検出され、同時に前回検知コードとし
てCメジャーが記憶される。更に、鍵Gの押鍵イベント
が検出されると、鍵C、鍵E♭及び鍵Gの押鍵状態が認
識されて、コード名として同じくCマイナーが検出さ
れ、同時に前回検知コードとしてCマイナーが記憶され
る。
ると、鍵Cと鍵E♭の押鍵状態が認識されてコード名と
してCマイナーが検出され、同時に前回検知コードとし
てCメジャーが記憶される。更に、鍵Gの押鍵イベント
が検出されると、鍵C、鍵E♭及び鍵Gの押鍵状態が認
識されて、コード名として同じくCマイナーが検出さ
れ、同時に前回検知コードとしてCマイナーが記憶され
る。
【0021】以上の処理によるコード検出では、コード
名としてGマイナーが得られることになるが、直前に検
知した前回検知コードを前コードとすれば、Gマイナー
が前コードとなってしまい、実際に欲しい前コードであ
るXは得られない。
名としてGマイナーが得られることになるが、直前に検
知した前回検知コードを前コードとすれば、Gマイナー
が前コードとなってしまい、実際に欲しい前コードであ
るXは得られない。
【0022】従来は前コードの概念が無かったので、上
述した第1の従来例で示した技術でコード検出及びコー
ド展開を行っても何等問題はなかった。しかし、演奏者
が意図する前コードを確実に得ようとすると、上記第1
の従来例で示した技術では対応できない。また、上述し
た第2、第3の実施例を用いれば、相当の確実性をもっ
て演奏者が意図する前コードを得ることができるが、上
述したように、コードを押さえる操作を開始してから伴
奏音が発生するまでに時間がかかり、コード入力に対す
る応答性に劣るという欠点がある。
述した第1の従来例で示した技術でコード検出及びコー
ド展開を行っても何等問題はなかった。しかし、演奏者
が意図する前コードを確実に得ようとすると、上記第1
の従来例で示した技術では対応できない。また、上述し
た第2、第3の実施例を用いれば、相当の確実性をもっ
て演奏者が意図する前コードを得ることができるが、上
述したように、コードを押さえる操作を開始してから伴
奏音が発生するまでに時間がかかり、コード入力に対す
る応答性に劣るという欠点がある。
【0023】本発明は、かかる事情に鑑みなされたもの
で、前コードを確実に検出するとともに、コード入力に
対する応答性を向上させることのできる電子楽器の前コ
ード検出装置を提供することを目的とする。
で、前コードを確実に検出するとともに、コード入力に
対する応答性を向上させることのできる電子楽器の前コ
ード検出装置を提供することを目的とする。
【0024】
【課題を解決するための手段】上記目的を達成するため
に、本発明の電子楽器の前コード検出装置は、今回検出
されたコードと前回検出されたコードとの異同を判断す
る判断手段と、該判断手段で今回検出されたコードと前
回検出されたコードとが相違することが判断された時に
計時を開始して所定時間が計時された場合にその旨を記
憶する計時手段と、前記判断手段で今回検出されたコー
ドと前回検出されたコードとが相違することが検出され
た場合に、前記計時手段が所定時間を計時した旨を記憶
していれば、前回検出されたコードを前コードとして記
憶する制御手段、とを具備したことを特徴とする。
に、本発明の電子楽器の前コード検出装置は、今回検出
されたコードと前回検出されたコードとの異同を判断す
る判断手段と、該判断手段で今回検出されたコードと前
回検出されたコードとが相違することが判断された時に
計時を開始して所定時間が計時された場合にその旨を記
憶する計時手段と、前記判断手段で今回検出されたコー
ドと前回検出されたコードとが相違することが検出され
た場合に、前記計時手段が所定時間を計時した旨を記憶
していれば、前回検出されたコードを前コードとして記
憶する制御手段、とを具備したことを特徴とする。
【0025】
【作用】本発明は、演奏者が複数鍵を押下することによ
り所定のコードを指定する場合は、各鍵の押鍵タイミン
グに微妙なずれはあっても短時間内で全鍵の押下は完了
するが、コードチェンジを行う場合は、前回の押鍵から
今回の押鍵までにはある程度の時間がかかるという演奏
上の特性を利用したものである。
り所定のコードを指定する場合は、各鍵の押鍵タイミン
グに微妙なずれはあっても短時間内で全鍵の押下は完了
するが、コードチェンジを行う場合は、前回の押鍵から
今回の押鍵までにはある程度の時間がかかるという演奏
上の特性を利用したものである。
【0026】即ち、本発明においては、今回検出された
コードと前回検出されたコードとが相違することが判断
された場合、換言すればコードチェンジが検出された場
合に、前回のコードチェンジ時から所定時間が経過して
いるか否かを調べ、所定時間が経過していれば前回検出
されたコードを前コードとして記憶することにより前コ
ードを更新し、所定時間が経過していなければ、前コー
ドの更新は行わないようにしている。
コードと前回検出されたコードとが相違することが判断
された場合、換言すればコードチェンジが検出された場
合に、前回のコードチェンジ時から所定時間が経過して
いるか否かを調べ、所定時間が経過していれば前回検出
されたコードを前コードとして記憶することにより前コ
ードを更新し、所定時間が経過していなければ、前コー
ドの更新は行わないようにしている。
【0027】上述の図18(B)に示した例を参照して
具体的に説明すると、鍵Cに対する処理時点では、前回
のコード検出から或る程度の時間が経過しているはずで
あるので、前回検出したコードXを前コードとして記憶
する。次いで、鍵E♭に対する処理時点では、「C,E
♭,G」の各鍵をほぼ同時に押したのだから、前回のコ
ード検出(コードCの検出)時点からの時間経過は小さ
いはずであるので、前回検出したコードCは、前コード
として記憶しない。
具体的に説明すると、鍵Cに対する処理時点では、前回
のコード検出から或る程度の時間が経過しているはずで
あるので、前回検出したコードXを前コードとして記憶
する。次いで、鍵E♭に対する処理時点では、「C,E
♭,G」の各鍵をほぼ同時に押したのだから、前回のコ
ード検出(コードCの検出)時点からの時間経過は小さ
いはずであるので、前回検出したコードCは、前コード
として記憶しない。
【0028】同様に、鍵Gに対する処理時点でも、前回
のコード検出(コードCマイナーの検出)時点からの時
間経過は小さいはずであるので、前回検出したコードC
マイナーは、前コードとして記憶しない。従って、演奏
者が意図した最終的なコードであるGマイナーを検出し
た時点での前コードはXとなっており、正しい前コード
が検出できたことになる。
のコード検出(コードCマイナーの検出)時点からの時
間経過は小さいはずであるので、前回検出したコードC
マイナーは、前コードとして記憶しない。従って、演奏
者が意図した最終的なコードであるGマイナーを検出し
た時点での前コードはXとなっており、正しい前コード
が検出できたことになる。
【0029】これにより、前コード検出の確実性を向上
させることができるとともに、コード入力に対する応答
性を向上させることができる。
させることができるとともに、コード入力に対する応答
性を向上させることができる。
【0030】
【実施例】以下、本発明の電子楽器の前コード検出装置
の実施例につき図面を参照しながら詳細に説明する。な
お、以下では、本発明の特徴部分、即ち、前コード検出
に係る構成及び動作を中心に説明する。
の実施例につき図面を参照しながら詳細に説明する。な
お、以下では、本発明の特徴部分、即ち、前コード検出
に係る構成及び動作を中心に説明する。
【0031】先ず最初に、本発明の理解を容易にするた
めに、本実施例の概要につき説明する。本発明の前コー
ド検出装置が適用される自動伴奏装置においては、「展
開フォーム作成」と「展開音作成」とに分けて考えるこ
とができる。
めに、本実施例の概要につき説明する。本発明の前コー
ド検出装置が適用される自動伴奏装置においては、「展
開フォーム作成」と「展開音作成」とに分けて考えるこ
とができる。
【0032】「展開フォーム作成」では、それまでコー
ド構成音を押さえていた指の形(以下、「前フォーム」
という)と、新たに押さえられたコード(以下、「新コ
ード」という)の構成音とから、新コードの構成音を押
さえる指の形(以下、「展開フォーム」という)を作成
する。この際、新コードが○7 (セブンス:なお、○は
根音を示す。以下同じ)と○7sus4 (セブンスサスフォ
ー)である場合に、展開フォームを作成するために、前
コードが使用されることになる(詳細は後述する)。
ド構成音を押さえていた指の形(以下、「前フォーム」
という)と、新たに押さえられたコード(以下、「新コ
ード」という)の構成音とから、新コードの構成音を押
さえる指の形(以下、「展開フォーム」という)を作成
する。この際、新コードが○7 (セブンス:なお、○は
根音を示す。以下同じ)と○7sus4 (セブンスサスフォ
ー)である場合に、展開フォームを作成するために、前
コードが使用されることになる(詳細は後述する)。
【0033】展開フォーム作成時のルールの主な点(詳
細は後述する)は、各指の移動可能範囲を2半音に設定
し、2半音で移動できる形を展開フォームとする。な
お、2半音で移動できない場合は、基本フォームを展開
フォームとする。なお、本実施例では、移動可能範囲を
「2半音」に限定して説明しているが、これに限定され
るものではなく、例えば「3半音」以上とすることもで
きる。
細は後述する)は、各指の移動可能範囲を2半音に設定
し、2半音で移動できる形を展開フォームとする。な
お、2半音で移動できない場合は、基本フォームを展開
フォームとする。なお、本実施例では、移動可能範囲を
「2半音」に限定して説明しているが、これに限定され
るものではなく、例えば「3半音」以上とすることもで
きる。
【0034】図2に、説明を簡単にするために、前コー
ドを使用しない場合の展開フォームの例、即ち、コード
がCメジャーからGメジャーへ移行する際の展開フォー
ムの例を示している。Cメジャーは、「C,E,G」の
各音で構成されるが、これを2半音以内の移動によりG
メジャーを構成する音「G,B,D」を得るためには、
構成音「B,D」を、図17(B)に示した構成音
「B,D」よりそれぞれ1オクターブ下に移動した展開
フォームを作成すれば良い。
ドを使用しない場合の展開フォームの例、即ち、コード
がCメジャーからGメジャーへ移行する際の展開フォー
ムの例を示している。Cメジャーは、「C,E,G」の
各音で構成されるが、これを2半音以内の移動によりG
メジャーを構成する音「G,B,D」を得るためには、
構成音「B,D」を、図17(B)に示した構成音
「B,D」よりそれぞれ1オクターブ下に移動した展開
フォームを作成すれば良い。
【0035】「展開音作成」は、展開フォーム作成で得
られた展開フォームと、自動伴奏データとして記憶され
ているパターンデータの鍵盤番号とから伴奏音として発
音する音、つまり展開音を作成する。例えば、自動伴奏
データとして、図3(A)に示すようなパターンデータ
が記憶されている場合、同図(B)に示すような展開フ
ォームが作成されると、同図(C)に示すような展開音
が得られる。
られた展開フォームと、自動伴奏データとして記憶され
ているパターンデータの鍵盤番号とから伴奏音として発
音する音、つまり展開音を作成する。例えば、自動伴奏
データとして、図3(A)に示すようなパターンデータ
が記憶されている場合、同図(B)に示すような展開フ
ォームが作成されると、同図(C)に示すような展開音
が得られる。
【0036】即ち、パターンデータ中のCの音が読み出
されると、1オクターブ下のBが展開音となり、同じく
Eの音が読み出されると、同一オクターブのDが展開音
となり、同じくGの音が読み出される、そのGがそのま
ま展開音とされる。
されると、1オクターブ下のBが展開音となり、同じく
Eの音が読み出されると、同一オクターブのDが展開音
となり、同じくGの音が読み出される、そのGがそのま
ま展開音とされる。
【0037】従って、例えば図3(A)に示すように、
パターンデータが8音で構成されている場合は、上記と
同様の処理を行うことにより、展開音として図示する8
音が得られ、また、パターンデータが1オクターブを越
えるアルペジオパターンとして構成されていれば、展開
音としても同様の1オクターブを越えるアルペジオパタ
ーンの音が得られる。
パターンデータが8音で構成されている場合は、上記と
同様の処理を行うことにより、展開音として図示する8
音が得られ、また、パターンデータが1オクターブを越
えるアルペジオパターンとして構成されていれば、展開
音としても同様の1オクターブを越えるアルペジオパタ
ーンの音が得られる。
【0038】なお、図3ではアルペジオパターンデータ
が自動伴奏データとして記憶されている場合の展開音の
例を示しているが、通常の和音のパターンデータが自動
伴奏データとして記憶されている場合は、その和音に対
応する展開音が得られることは勿論である。また、図3
には、パターンデータが8音で構成される場合の例が示
されているが、音の数は任意である。
が自動伴奏データとして記憶されている場合の展開音の
例を示しているが、通常の和音のパターンデータが自動
伴奏データとして記憶されている場合は、その和音に対
応する展開音が得られることは勿論である。また、図3
には、パターンデータが8音で構成される場合の例が示
されているが、音の数は任意である。
【0039】次に、この発明の特徴に係る「前コード検
出処理」と、上記「展開フォーム作成」及び「展開音作
成」を実現するための構成について説明する。
出処理」と、上記「展開フォーム作成」及び「展開音作
成」を実現するための構成について説明する。
【0040】図1は、本発明の自動伴奏装置が適用され
る電子楽器の実施例の概略構成を示すブロック図であ
る。本電子楽器の主要構成要素である、中央処理装置
(以下、「CPU」という)10、ROM11、RAM
12、鍵盤装置13、操作パネル14、及び楽音発生回
路(トーンジェネレータ)15は、システムバス20を
介して相互に接続されている。
る電子楽器の実施例の概略構成を示すブロック図であ
る。本電子楽器の主要構成要素である、中央処理装置
(以下、「CPU」という)10、ROM11、RAM
12、鍵盤装置13、操作パネル14、及び楽音発生回
路(トーンジェネレータ)15は、システムバス20を
介して相互に接続されている。
【0041】CPU10は、ROM11に格納されてい
る制御プログラムに従って、当該電子楽器の全体を制御
する。例えば、CPU10は、鍵盤装置13の操作に応
じた発音/消音処理、操作パネル14の操作に応じた音
色変更、音量変更処理等の各種処理を行う。本発明の特
徴に係る前コード検出処理も、このCPU10によって
行われる。
る制御プログラムに従って、当該電子楽器の全体を制御
する。例えば、CPU10は、鍵盤装置13の操作に応
じた発音/消音処理、操作パネル14の操作に応じた音
色変更、音量変更処理等の各種処理を行う。本発明の特
徴に係る前コード検出処理も、このCPU10によって
行われる。
【0042】このCPU10には、専用線を介してMI
DIインタフェース回路19が接続されている。MID
Iインタフェース回路19は、本電子楽器と外部装置と
の間のMIDIデータの受け渡しを制御するものであ
る。外部装置としては、例えばMIDIデータを処理す
る他の電子楽器、シーケンサー、或いはパーソナルコン
ピュータ等を挙げることができる。
DIインタフェース回路19が接続されている。MID
Iインタフェース回路19は、本電子楽器と外部装置と
の間のMIDIデータの受け渡しを制御するものであ
る。外部装置としては、例えばMIDIデータを処理す
る他の電子楽器、シーケンサー、或いはパーソナルコン
ピュータ等を挙げることができる。
【0043】また、このCPU10には、図示しないタ
イマが内蔵されており、例えば1ミリ秒間隔で割込を発
生させる。このタイマによる割込は、前コード検出のた
めの時間経過計測に使用される(詳細は後述する)。
イマが内蔵されており、例えば1ミリ秒間隔で割込を発
生させる。このタイマによる割込は、前コード検出のた
めの時間経過計測に使用される(詳細は後述する)。
【0044】ROM11には、上述したCPU10を動
作させるための制御プログラムが記憶されている他、C
PU10が各種処理に用いる種々の固定データが記憶さ
れている。また、このROM11には、音色を規定する
ための音色パラメータや楽音波形を生成するためのパル
スコード変調(PCM)された波形データが記憶されて
いる。波形データは、複数の音色を実現するべく、各音
色毎に複数種類が用意されている。
作させるための制御プログラムが記憶されている他、C
PU10が各種処理に用いる種々の固定データが記憶さ
れている。また、このROM11には、音色を規定する
ための音色パラメータや楽音波形を生成するためのパル
スコード変調(PCM)された波形データが記憶されて
いる。波形データは、複数の音色を実現するべく、各音
色毎に複数種類が用意されている。
【0045】更に、ROM11には、自動伴奏を行うた
めの自動伴奏データ(パターンデータ)、展開フォーム
を作成する基となる各コード種毎の基本フォームテーブ
ル(詳細は後述する)も記憶されている。
めの自動伴奏データ(パターンデータ)、展開フォーム
を作成する基となる各コード種毎の基本フォームテーブ
ル(詳細は後述する)も記憶されている。
【0046】このROM11の記憶内容は、システムバ
ス20を介してCPU10及び楽音発生回路16により
時分割で読み出される。即ち、CPU10は、システム
バス20を介してROM11から制御プログラム(命
令)を読み出して解釈・実行すると共に、所定の固定デ
ータを読み出して各種処理に使用する。
ス20を介してCPU10及び楽音発生回路16により
時分割で読み出される。即ち、CPU10は、システム
バス20を介してROM11から制御プログラム(命
令)を読み出して解釈・実行すると共に、所定の固定デ
ータを読み出して各種処理に使用する。
【0047】また、CPU10は、システムバス20を
介してROM11から読み出した音色パラメータに所定
の加工を施して楽音発生回路15に送ることにより、当
該電子楽器で発音される楽音の音色を決定する。更に、
CPU10は、システムバス20を介してROM11か
ら自動伴奏データを読み出し、これに基づいて展開音を
作成し、システムバス20を介して楽音発生回路15に
送ることにより自動伴奏を行う。
介してROM11から読み出した音色パラメータに所定
の加工を施して楽音発生回路15に送ることにより、当
該電子楽器で発音される楽音の音色を決定する。更に、
CPU10は、システムバス20を介してROM11か
ら自動伴奏データを読み出し、これに基づいて展開音を
作成し、システムバス20を介して楽音発生回路15に
送ることにより自動伴奏を行う。
【0048】一方、楽音発生回路15は、システムバス
20を介してROM11から波形データを読み出し、エ
ンベロープを付加してデジタル楽音信号を生成する。
20を介してROM11から波形データを読み出し、エ
ンベロープを付加してデジタル楽音信号を生成する。
【0049】上記RAM12は、制御プログラムの実行
に用いる種々のデータを一時記憶するものであり、例え
ばデータバッファ、レジスタ、フラグ等の各領域が定義
されている。このRAM12は、システムバス20を介
してCPU10によりアクセスされる。このRAM12
に定義されるレジスタ、フラグ等については、以下にお
いて必要の都度説明する。
に用いる種々のデータを一時記憶するものであり、例え
ばデータバッファ、レジスタ、フラグ等の各領域が定義
されている。このRAM12は、システムバス20を介
してCPU10によりアクセスされる。このRAM12
に定義されるレジスタ、フラグ等については、以下にお
いて必要の都度説明する。
【0050】操作パネル14は、本電子楽器の各種動作
を指示するために用いられるものであり、自動伴奏の開
始や終了を指示する操作子の他、各種操作子が設けられ
ている。なお、上記各種操作子は本発明とは直接関係し
ないので説明は省略する。
を指示するために用いられるものであり、自動伴奏の開
始や終了を指示する操作子の他、各種操作子が設けられ
ている。なお、上記各種操作子は本発明とは直接関係し
ないので説明は省略する。
【0051】この操作パネル14は、図示しないパネル
スキャン回路を介してCPU10に接続されている。パ
ネルスキャン回路は、上記各種操作子をスキャンし、各
操作子のオン/オフを示すビット列でなるパネルデータ
を生成してCPU10に送る。このパネルデータは、C
PU10の制御の下にRAM12に格納され、パネルイ
ベントの有無の判断に使用される(詳細は後述する)。
スキャン回路を介してCPU10に接続されている。パ
ネルスキャン回路は、上記各種操作子をスキャンし、各
操作子のオン/オフを示すビット列でなるパネルデータ
を生成してCPU10に送る。このパネルデータは、C
PU10の制御の下にRAM12に格納され、パネルイ
ベントの有無の判断に使用される(詳細は後述する)。
【0052】鍵盤装置13は、演奏者が楽音の音程又は
コードを指示する鍵と、この鍵に連動して開閉するキー
スイッチ及びキースキャン回路により構成される。キー
スキャン回路は、各鍵をスキャンし、各鍵のオン/オフ
を示すビット列でなるキーデータを生成してCPU10
に送る。このキーデータは、CPU10の制御の下にR
AM12に記憶され、鍵盤イベントの有無の判断に使用
される(詳細は後述する)。
コードを指示する鍵と、この鍵に連動して開閉するキー
スイッチ及びキースキャン回路により構成される。キー
スキャン回路は、各鍵をスキャンし、各鍵のオン/オフ
を示すビット列でなるキーデータを生成してCPU10
に送る。このキーデータは、CPU10の制御の下にR
AM12に記憶され、鍵盤イベントの有無の判断に使用
される(詳細は後述する)。
【0053】楽音発生回路15は、CPU10から送ら
れてきた音程や音量等を指示する楽音データに従って楽
音信号を生成するものである。この楽音発生回路15
は、同時発音可能な複数のオシレータを有しており、発
音指示に応じて所定のオシレータが割り当てられて発音
に使用される。即ち、発音が割り当てられたオシレータ
は、上記ROM11から波形データを読み出し、これに
エンベロープを付加してデジタル楽音信号を生成する。
この楽音発生回路15で発生されたデジタル楽音信号
は、D/A変換器16に供給される。
れてきた音程や音量等を指示する楽音データに従って楽
音信号を生成するものである。この楽音発生回路15
は、同時発音可能な複数のオシレータを有しており、発
音指示に応じて所定のオシレータが割り当てられて発音
に使用される。即ち、発音が割り当てられたオシレータ
は、上記ROM11から波形データを読み出し、これに
エンベロープを付加してデジタル楽音信号を生成する。
この楽音発生回路15で発生されたデジタル楽音信号
は、D/A変換器16に供給される。
【0054】D/A変換器16は、入力されたデジタル
信号をアナログ信号に変換して出力する周知のものであ
る。このD/A変換器16でアナログ信号に変換された
楽音信号は増幅器17に送られる。
信号をアナログ信号に変換して出力する周知のものであ
る。このD/A変換器16でアナログ信号に変換された
楽音信号は増幅器17に送られる。
【0055】増幅器17は、入力されたアナログ楽音信
号を所定の増幅率で増幅して出力する周知のものであ
る。この増幅器17で所定の増幅が行われた楽音信号
は、スピーカ18に供給される。
号を所定の増幅率で増幅して出力する周知のものであ
る。この増幅器17で所定の増幅が行われた楽音信号
は、スピーカ18に供給される。
【0056】スピーカ18は、電気信号としてのアナロ
グ楽音信号を音響信号に変換する周知のものである。こ
のスピーカ18により、鍵盤装置13の押鍵/離鍵に対
応した楽音や自動伴奏に伴う楽音が放音されることにな
る。
グ楽音信号を音響信号に変換する周知のものである。こ
のスピーカ18により、鍵盤装置13の押鍵/離鍵に対
応した楽音や自動伴奏に伴う楽音が放音されることにな
る。
【0057】次に、上記ROM11に記憶される基本フ
ォームテーブルにつき説明する。この基本フォームテー
ブルの一例を図4及び図5に示す。
ォームテーブルにつき説明する。この基本フォームテー
ブルの一例を図4及び図5に示す。
【0058】この基本フォームテーブルは、コード名
(根音とコード種)が与えられた場合に、鍵盤を押さえ
る指の形の基本形を記憶するものである。例えばCメジ
ャーが与えられた場合には、「C,E,G」の順で各音
が押さえられた形が基本フォームとされる。また、Gメ
ジャーの場合は、1オクターブ下の「B」、当該オクタ
ーブの「D,G」の順で各音が押さえられた形が基本フ
ォームとされる。
(根音とコード種)が与えられた場合に、鍵盤を押さえ
る指の形の基本形を記憶するものである。例えばCメジ
ャーが与えられた場合には、「C,E,G」の順で各音
が押さえられた形が基本フォームとされる。また、Gメ
ジャーの場合は、1オクターブ下の「B」、当該オクタ
ーブの「D,G」の順で各音が押さえられた形が基本フ
ォームとされる。
【0059】上記基本フォームテーブルに記憶される基
本フォームは3音を押さえる指の形で構成されるものと
する。なお、上記テーブルで「B♯」は「C」を意味
し、「C♭」とは「B」を意味し、「E♯」は「F」を
意味する。また、上記基本フォームテーブルは、実際は
数値化されて記憶されており、各記号と数値の対応は以
下の通りである。
本フォームは3音を押さえる指の形で構成されるものと
する。なお、上記テーブルで「B♯」は「C」を意味
し、「C♭」とは「B」を意味し、「E♯」は「F」を
意味する。また、上記基本フォームテーブルは、実際は
数値化されて記憶されており、各記号と数値の対応は以
下の通りである。
【0060】 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
【0061】よって、基本フォームテーブルには、例え
ば、 C ,E ,G →12,16,19 (C ) B ,E♭,G →11,15,19 (CmM7 ) 等
のように記憶されている。なお、「C」を数字の「1
2」に対応させたのは、当該オクターブより下のオクタ
ーブの音をも表現できるようにするためである。
ば、 C ,E ,G →12,16,19 (C ) B ,E♭,G →11,15,19 (CmM7 ) 等
のように記憶されている。なお、「C」を数字の「1
2」に対応させたのは、当該オクターブより下のオクタ
ーブの音をも表現できるようにするためである。
【0062】次に、本実施例における展開フォーム作成
では、以下のルールに従って処理される。 (A)コードの変化が4回発生する毎に基本フォームに
戻る。即ち、コード名が4回変わる毎に基本フォームを
展開フォームとする。これは、特定のコード進行によっ
ては、展開フォームが限りなく移動してしまうのを防止
するためである。
では、以下のルールに従って処理される。 (A)コードの変化が4回発生する毎に基本フォームに
戻る。即ち、コード名が4回変わる毎に基本フォームを
展開フォームとする。これは、特定のコード進行によっ
ては、展開フォームが限りなく移動してしまうのを防止
するためである。
【0063】(B)4つの音で構成されるコードの処理 このシステムでは、全てのコードを3つの音で構成す
る。従って、例えばC7 等の4声和音では、構成音のど
れか1つを省略する必要がある。ベース音は別に展開、
発音させるので通常は根音を省略する。具体的には、以
下に示すルールを適用して省略する音を決定する。図4
及び図5に示した基本フォームテーブルは、下記のルー
ルに従って作成されている。なお、○7と○7sus4は、例
外的に前コードによって省略する音が決定されるので、
CPU10の処理により省略が実現される。
る。従って、例えばC7 等の4声和音では、構成音のど
れか1つを省略する必要がある。ベース音は別に展開、
発音させるので通常は根音を省略する。具体的には、以
下に示すルールを適用して省略する音を決定する。図4
及び図5に示した基本フォームテーブルは、下記のルー
ルに従って作成されている。なお、○7と○7sus4は、例
外的に前コードによって省略する音が決定されるので、
CPU10の処理により省略が実現される。
【0064】(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 、○
M7、○7 、○7sus4 だった場合は、根音を抜く。 R4−3:前コードが、○6 、○dim だった場合、5度
音を抜く。 R4−4:前コードが、○m7、○m7-5、○mM7 で、且
つ、根音が半音進行している場合、根音を抜く。 R4−5:前コードが、○m7、○m7-5、○mM7 で、且
つ、根音が半音進行していない場合、5度音を抜く。
和音なのでそのまま用いる。 (2)○M7、○m7、○m7-5、○mM7 、○dim は、根音を
抜く。 (3)○6 は、5度音を抜く。 (4)○7、○7sus4は、前コードによって以下のルール
が順番に適用される。 R4−1:前コードと根音が同じ場合、根音を抜く。 R4−2:前コードが、○、○m 、○sus4、○aug 、○
M7、○7 、○7sus4 だった場合は、根音を抜く。 R4−3:前コードが、○6 、○dim だった場合、5度
音を抜く。 R4−4:前コードが、○m7、○m7-5、○mM7 で、且
つ、根音が半音進行している場合、根音を抜く。 R4−5:前コードが、○m7、○m7-5、○mM7 で、且
つ、根音が半音進行していない場合、5度音を抜く。
【0065】次に、上記の構成において、本発明に係る
電子楽器の動作につき、図6〜図16に示したフローチ
ャートを参照しながら詳細に説明する。
電子楽器の動作につき、図6〜図16に示したフローチ
ャートを参照しながら詳細に説明する。
【0066】図6は本電子楽器の動作を示すメインフロ
ーチャートであり、電源投入により起動されるものであ
る。
ーチャートであり、電源投入により起動されるものであ
る。
【0067】即ち、電源が投入されると、先ず初期化処
理が行われる(ステップS10)。この初期化処理で
は、CPU10内部のレジスタやフラグ等のクリア処
理、RAM12内に定義された各種バッファ、レジスタ
及びフラグ等に初期値を設定する処理、楽音発生回路1
5に所定のデータを設定して不要な音が発生されるのを
抑止する処理等が行われる。
理が行われる(ステップS10)。この初期化処理で
は、CPU10内部のレジスタやフラグ等のクリア処
理、RAM12内に定義された各種バッファ、レジスタ
及びフラグ等に初期値を設定する処理、楽音発生回路1
5に所定のデータを設定して不要な音が発生されるのを
抑止する処理等が行われる。
【0068】次いで、パネル処理が行われる(ステップ
S11)。このパネル処理の詳細は、図7のフローチャ
ートに示されている。
S11)。このパネル処理の詳細は、図7のフローチャ
ートに示されている。
【0069】パネル処理では、先ず、パネルイベントの
有無が調べられる(ステップS20)。これは、次のよ
うにして行われる。即ち、先ず、操作パネル14のパネ
ルスキャン回路で操作子がスキャンされ、各操作子のオ
ン/オフを示すパネルデータ(以下、これを「新パネル
データ」という)が読み込まれる。
有無が調べられる(ステップS20)。これは、次のよ
うにして行われる。即ち、先ず、操作パネル14のパネ
ルスキャン回路で操作子がスキャンされ、各操作子のオ
ン/オフを示すパネルデータ(以下、これを「新パネル
データ」という)が読み込まれる。
【0070】次いで、前回読み込んで既にRAM12に
記憶されているパネルデータ(以下、「旧パネルデー
タ」という)と上記新パネルデータとが比較され、相違
するビットをオンにしたパネルイベントマップが作成さ
れる。このパネルイベントマップ中にオンになっている
ビットが存在する場合に、パネルイベントがあった旨が
判断されることになる。
記憶されているパネルデータ(以下、「旧パネルデー
タ」という)と上記新パネルデータとが比較され、相違
するビットをオンにしたパネルイベントマップが作成さ
れる。このパネルイベントマップ中にオンになっている
ビットが存在する場合に、パネルイベントがあった旨が
判断されることになる。
【0071】上記ステップS20で、パネルイベントが
ないことが判断されると、何等の処理を行うことなく、
このパネル処理ルーチンからリターンする。
ないことが判断されると、何等の処理を行うことなく、
このパネル処理ルーチンからリターンする。
【0072】一方、上記ステップS20で、パネルイベ
ントがあったことが判断されると、該パネルイベント
は、自動伴奏スイッチのイベントであるか否かが調べら
れる(ステップS21)。これは、パネルイベントマッ
プ中の自動伴奏スイッチに対応するビットがオンになっ
ているか否かを調べることにより行われる。
ントがあったことが判断されると、該パネルイベント
は、自動伴奏スイッチのイベントであるか否かが調べら
れる(ステップS21)。これは、パネルイベントマッ
プ中の自動伴奏スイッチに対応するビットがオンになっ
ているか否かを調べることにより行われる。
【0073】ここで、自動伴奏スイッチのイベントでな
いことが判断されると、その他の処理が実行される(ス
テップS26)。このその他の処理は、例えば、音色選
択スイッチ、リズム選択スイッチ等のイベントに対する
処理である。その後、このパネル処理ルーチンからリタ
ーンする。
いことが判断されると、その他の処理が実行される(ス
テップS26)。このその他の処理は、例えば、音色選
択スイッチ、リズム選択スイッチ等のイベントに対する
処理である。その後、このパネル処理ルーチンからリタ
ーンする。
【0074】一方、上記ステップS21で自動伴奏スイ
ッチのイベントであることが判断されると、そのイベン
トはオンイベントであるか否かが調べられる(ステップ
S22)。これは、新パネルデータ中の自動伴奏スイッ
チに対応するビットがオンになっているか否かを調べる
ことにより行われる。
ッチのイベントであることが判断されると、そのイベン
トはオンイベントであるか否かが調べられる(ステップ
S22)。これは、新パネルデータ中の自動伴奏スイッ
チに対応するビットがオンになっているか否かを調べる
ことにより行われる。
【0075】ここで、自動伴奏スイッチのオンイベント
でないことが判断されると、自動伴奏フラグが「0」に
クリアされる(ステップS25)。その後、このパネル
処理ルーチンからリターンする。ここに自動伴奏フラグ
は、RAM12に定義されるフラグであり、本電子楽器
が自動伴奏モードにあるか通常演奏モードにあるかを記
憶するものである。この自動伴奏フラグは、本電子楽器
が自動伴奏モードにある時は「1」、通常演奏モードに
ある時は「0」にそれぞれセットされる。
でないことが判断されると、自動伴奏フラグが「0」に
クリアされる(ステップS25)。その後、このパネル
処理ルーチンからリターンする。ここに自動伴奏フラグ
は、RAM12に定義されるフラグであり、本電子楽器
が自動伴奏モードにあるか通常演奏モードにあるかを記
憶するものである。この自動伴奏フラグは、本電子楽器
が自動伴奏モードにある時は「1」、通常演奏モードに
ある時は「0」にそれぞれセットされる。
【0076】上記ステップS22で、自動伴奏スイッチ
のオンイベントであることが判断されると、自動伴奏フ
ラグが「1」にセットされる(ステップS23)。次い
で、コード展開初期設定処理が行われる(ステップS2
4)。このコード展開初期設定処理は、操作パネル14
の自動伴奏スイッチが押下されることによって本電子楽
器が自動伴奏モードにされることにより、コード展開処
理を行うための初期値設定を行う処理である。
のオンイベントであることが判断されると、自動伴奏フ
ラグが「1」にセットされる(ステップS23)。次い
で、コード展開初期設定処理が行われる(ステップS2
4)。このコード展開初期設定処理は、操作パネル14
の自動伴奏スイッチが押下されることによって本電子楽
器が自動伴奏モードにされることにより、コード展開処
理を行うための初期値設定を行う処理である。
【0077】このコード展開初期値設定処理の詳細は、
図8のフローチャートに示される。即ち、コード展開初
期設定処理では、先ず、コードチェンジ回数カウンタC
CHGが初期化される(ステップS30)。即ち、CC
HGに初期値として「0」がセットされる。ここで、C
CHGは、RAM12内部に設けられるカウンタであ
り、コードチェンジ(コード変化)が発生した回数を記
憶するものである。このCCHGは、上述したように、
コード名が4回変わる毎に展開フォームを基本フォーム
に戻す処理に用いられる。
図8のフローチャートに示される。即ち、コード展開初
期設定処理では、先ず、コードチェンジ回数カウンタC
CHGが初期化される(ステップS30)。即ち、CC
HGに初期値として「0」がセットされる。ここで、C
CHGは、RAM12内部に設けられるカウンタであ
り、コードチェンジ(コード変化)が発生した回数を記
憶するものである。このCCHGは、上述したように、
コード名が4回変わる毎に展開フォームを基本フォーム
に戻す処理に用いられる。
【0078】次いで、展開フォームの初期化が行われる
(ステップS31)。この処理は、展開フォームの初期
値として、Cメジャーの構成音を示す3つのデータ{1
2(C)、16(E)、19(G)}を、展開フォーム
記憶用の3つのバッファTNKF1〜TNKF3にセッ
トする。なお、バッファTNKF1〜TNKF3は、R
AM12に設けられる。
(ステップS31)。この処理は、展開フォームの初期
値として、Cメジャーの構成音を示す3つのデータ{1
2(C)、16(E)、19(G)}を、展開フォーム
記憶用の3つのバッファTNKF1〜TNKF3にセッ
トする。なお、バッファTNKF1〜TNKF3は、R
AM12に設けられる。
【0079】以上のコード展開初期設定が終了すると、
このコード展開初期設定処理ルーチンからリターンして
パネル処理ルーチンに戻り、更にパネル処理ルーチンを
もリターンしてメインルーチンに戻る。
このコード展開初期設定処理ルーチンからリターンして
パネル処理ルーチンに戻り、更にパネル処理ルーチンを
もリターンしてメインルーチンに戻る。
【0080】メインルーチンでは、次いで鍵盤処理が行
われる(ステップS12)。この鍵盤処理の詳細イベン
トについては、図10のフローチャートに示されてい
る。
われる(ステップS12)。この鍵盤処理の詳細イベン
トについては、図10のフローチャートに示されてい
る。
【0081】鍵盤処理では、先ず、鍵盤イベントの有無
が調べられる(ステップS50)。これは、次のように
して行われる。即ち、先ず、鍵盤装置13のキースキャ
ン回路でキースイッチがスキャンされ、各鍵の押下状態
を示すキーデータ(各鍵に対応したビット列でなり、こ
れを「新キーデータ」という))が読み込まれる。
が調べられる(ステップS50)。これは、次のように
して行われる。即ち、先ず、鍵盤装置13のキースキャ
ン回路でキースイッチがスキャンされ、各鍵の押下状態
を示すキーデータ(各鍵に対応したビット列でなり、こ
れを「新キーデータ」という))が読み込まれる。
【0082】次いで、前回読み込んで既にRAM12に
記憶されているキーデータ(以下、旧キーデータ」とい
う)と、上記新キーデータとが比較され、相違するビッ
トをオンにしたキーイベントマップが作成される。この
キーイベントマップ中にオンになっているビットが存在
する場合に鍵盤イベントがあった旨が判断されることに
なる。
記憶されているキーデータ(以下、旧キーデータ」とい
う)と、上記新キーデータとが比較され、相違するビッ
トをオンにしたキーイベントマップが作成される。この
キーイベントマップ中にオンになっているビットが存在
する場合に鍵盤イベントがあった旨が判断されることに
なる。
【0083】上記ステップS50で鍵盤イベントがなか
ったことが判断されると、何等の処理をも行うことな
く、この鍵盤処理ルーチンからリターンする。
ったことが判断されると、何等の処理をも行うことな
く、この鍵盤処理ルーチンからリターンする。
【0084】一方、上記ステップS50で、鍵盤イベン
トがあったことが判断されると、次いで、その鍵盤イベ
ントは、コード検出域の鍵のイベントであるか否かが調
べられる(ステップS51)。即ち、鍵盤装置13の所
定の鍵番号以下の鍵のイベントであるか否かが調べられ
る。
トがあったことが判断されると、次いで、その鍵盤イベ
ントは、コード検出域の鍵のイベントであるか否かが調
べられる(ステップS51)。即ち、鍵盤装置13の所
定の鍵番号以下の鍵のイベントであるか否かが調べられ
る。
【0085】ここで、コード検出域の鍵のイベントでな
いことが判断されると、通常演奏における鍵盤イベント
である旨を認識し、その鍵盤イベントが押鍵イベントで
あるか否かが調べられる(ステップS54)。これは、
キーイベントマップ中のオンにされたビットに対応する
新キーデータ中のビットが「1」であるか否かを調べる
ことにより行われる。
いことが判断されると、通常演奏における鍵盤イベント
である旨を認識し、その鍵盤イベントが押鍵イベントで
あるか否かが調べられる(ステップS54)。これは、
キーイベントマップ中のオンにされたビットに対応する
新キーデータ中のビットが「1」であるか否かを調べる
ことにより行われる。
【0086】ここで、押鍵イベントであることが判断さ
れると、発音処理が行われる(ステップS55)。この
処理は、楽音発生回路15中の所定のオシレータに発音
を割り当て、上記オンイベントのあった鍵のキーナン
バ、押鍵の強さ(速度)を示すタッチデータ、及び音色
を示すデータ等でなる楽音データを楽音発生回路15に
送る処理である。これにより、楽音発生回路15の割り
当てられたオシレータにおいて、上記楽音データに基づ
いたデジタル楽音信号が生成され、これがD/A変換器
16、増幅器17及びスピーカ18に順次送られて発音
が行われる。
れると、発音処理が行われる(ステップS55)。この
処理は、楽音発生回路15中の所定のオシレータに発音
を割り当て、上記オンイベントのあった鍵のキーナン
バ、押鍵の強さ(速度)を示すタッチデータ、及び音色
を示すデータ等でなる楽音データを楽音発生回路15に
送る処理である。これにより、楽音発生回路15の割り
当てられたオシレータにおいて、上記楽音データに基づ
いたデジタル楽音信号が生成され、これがD/A変換器
16、増幅器17及びスピーカ18に順次送られて発音
が行われる。
【0087】一方、上記ステップS54で押鍵イベント
でないことが判断されると離鍵のイベントである旨を認
識し、消音処理が行われる(ステップS56)。即ち、
その離鍵があった鍵に割り当てられている楽音発生回路
15中のオシレータが検索され、リリースのエンベロー
プデータが送られることにより消音が行われる。
でないことが判断されると離鍵のイベントである旨を認
識し、消音処理が行われる(ステップS56)。即ち、
その離鍵があった鍵に割り当てられている楽音発生回路
15中のオシレータが検索され、リリースのエンベロー
プデータが送られることにより消音が行われる。
【0088】上記ステップS52で、鍵盤イベントがコ
ード検出域の鍵であることが判断されると、コード検出
処理が行われる(ステップS52)。このコード検出処
理は、押鍵パターンからコード名(根音及びコード種)
を検出する処理である。このコード検出方法は、周知の
種々の方法を用いることができる。
ード検出域の鍵であることが判断されると、コード検出
処理が行われる(ステップS52)。このコード検出処
理は、押鍵パターンからコード名(根音及びコード種)
を検出する処理である。このコード検出方法は、周知の
種々の方法を用いることができる。
【0089】次いで、展開フォーム作成処理が行われる
(ステップS53)。この展開フォーム作成処理の詳細
については後述する。この展開フォーム作成処理が終了
すると、この鍵盤処理ルーチンからリターンし、メイン
ルーチンに戻る。
(ステップS53)。この展開フォーム作成処理の詳細
については後述する。この展開フォーム作成処理が終了
すると、この鍵盤処理ルーチンからリターンし、メイン
ルーチンに戻る。
【0090】メインルーチンでは、次いで、自動伴奏処
理が行われる(ステップS13)。この自動伴奏処理で
は、当該電子楽器が自動伴奏モードにされており、且つ
発音又は消音タイミングが到来した場合に、ROM11
から読み出した自動伴奏データ(パターンデータ)に応
じて展開音を作成し、発音又は消音を行う処理である。
この発音又は消音処理自体は、上記鍵盤装置13の押鍵
又は離鍵に伴う発音又は消音処理と同じである。なお、
ROM11から読み出した自動伴奏データが自動伴奏の
終了を示す特別のコードである場合、又は自動伴奏モー
ドが解除された場合は、自動伴奏は停止される。この自
動伴奏処理の詳細についても後述する。
理が行われる(ステップS13)。この自動伴奏処理で
は、当該電子楽器が自動伴奏モードにされており、且つ
発音又は消音タイミングが到来した場合に、ROM11
から読み出した自動伴奏データ(パターンデータ)に応
じて展開音を作成し、発音又は消音を行う処理である。
この発音又は消音処理自体は、上記鍵盤装置13の押鍵
又は離鍵に伴う発音又は消音処理と同じである。なお、
ROM11から読み出した自動伴奏データが自動伴奏の
終了を示す特別のコードである場合、又は自動伴奏モー
ドが解除された場合は、自動伴奏は停止される。この自
動伴奏処理の詳細についても後述する。
【0091】次いで、その他の処理が行われる(ステッ
プS14)。この「その他の処理」は、例えばMIDI
データの送受信処理等が含まれる。その後ステップS1
1に戻り、以下同様の処理を繰り返す。上記ステップS
11〜S14の繰り返し実行の過程で、パネル操作又は
鍵盤操作に基づくイベントや自動伴奏イベントが発生す
ると、そのイベントに対応する処理が行われることによ
り電子楽器としての各種機能が発揮される。
プS14)。この「その他の処理」は、例えばMIDI
データの送受信処理等が含まれる。その後ステップS1
1に戻り、以下同様の処理を繰り返す。上記ステップS
11〜S14の繰り返し実行の過程で、パネル操作又は
鍵盤操作に基づくイベントや自動伴奏イベントが発生す
ると、そのイベントに対応する処理が行われることによ
り電子楽器としての各種機能が発揮される。
【0092】以上に説明したメインルーチンの処理と並
行して、タイマによる割込処理が行われる。このタイマ
による割込処理の詳細は、図9のフローチャートに示さ
れている。
行して、タイマによる割込処理が行われる。このタイマ
による割込処理の詳細は、図9のフローチャートに示さ
れている。
【0093】このタイマによる割込処理は、コード検出
処理によりコードが検出された際に、前回検出されたコ
ードを前コードとして記憶するか否かを判断するための
所定時間を計時する処理である。
処理によりコードが検出された際に、前回検出されたコ
ードを前コードとして記憶するか否かを判断するための
所定時間を計時する処理である。
【0094】上記の所定時間は、短かすぎると前コード
を正しく検出できないし、一方、長すぎると素早いコー
ドチェンジに追従できなくなる。従って、上記事情を勘
案して最適の所定時間を得る必要があるが、本実施例で
は、テンポ120の時の16分音符の長さに相当する1
25ミリ秒より少し短い時間ということで100ミリ秒
という固定的な時間を用いた。
を正しく検出できないし、一方、長すぎると素早いコー
ドチェンジに追従できなくなる。従って、上記事情を勘
案して最適の所定時間を得る必要があるが、本実施例で
は、テンポ120の時の16分音符の長さに相当する1
25ミリ秒より少し短い時間ということで100ミリ秒
という固定的な時間を用いた。
【0095】なお、上記所定時間を決定するに当たり、
16分音符の長さを基準としたのは、16分音符の長さ
より短い間隔でコードチェンジが行われることは少ない
であろうこと、及びコードを指示するための複数鍵の押
鍵は16分音符の長さより長い時間を要することは少な
いであろうということに基づく。
16分音符の長さを基準としたのは、16分音符の長さ
より短い間隔でコードチェンジが行われることは少ない
であろうこと、及びコードを指示するための複数鍵の押
鍵は16分音符の長さより長い時間を要することは少な
いであろうということに基づく。
【0096】なお、上記所定時間は一例であり、100
ミリ秒に限定されるものではない。例えば、リズムや自
動伴奏を走らせているときは、そのテンポでの16分音
符に相当する時間より僅かに短い時間とすることができ
る。かかる構成によれば、楽曲のテンポに応じて最適な
時間を設定できる。
ミリ秒に限定されるものではない。例えば、リズムや自
動伴奏を走らせているときは、そのテンポでの16分音
符に相当する時間より僅かに短い時間とすることができ
る。かかる構成によれば、楽曲のテンポに応じて最適な
時間を設定できる。
【0097】また、上記所定時間を複数用意しておき、
所望の値を選択するように構成することもできる。この
構成によれば、例えば上級者は短い時間、初心者は長い
時間を設定するというような使い方ができる。即ち、上
級者はほぼ同時にミスタッチもなく押鍵できるので、短
く設定することによりコードチェンジの応答性を高くし
て演奏することができる。一方、初心者は同時に押鍵で
きなかったりミスタッチの確率も高いので、応答性に少
々劣っても上記所定時間を長くしたほうが使い易いであ
ろう。
所望の値を選択するように構成することもできる。この
構成によれば、例えば上級者は短い時間、初心者は長い
時間を設定するというような使い方ができる。即ち、上
級者はほぼ同時にミスタッチもなく押鍵できるので、短
く設定することによりコードチェンジの応答性を高くし
て演奏することができる。一方、初心者は同時に押鍵で
きなかったりミスタッチの確率も高いので、応答性に少
々劣っても上記所定時間を長くしたほうが使い易いであ
ろう。
【0098】上記所定時間を得るための割込処理では、
先ず、タイムアップフラグTIMEUPが「1」である
か否かが調べられる(ステップS40)。このフラグT
IMEUPは、RAM12に定義されるフラグであり、
前コード検出処理で用いる所定時間(100ミリ秒)が
経過したか否かを記憶するために用いられる。
先ず、タイムアップフラグTIMEUPが「1」である
か否かが調べられる(ステップS40)。このフラグT
IMEUPは、RAM12に定義されるフラグであり、
前コード検出処理で用いる所定時間(100ミリ秒)が
経過したか否かを記憶するために用いられる。
【0099】ここでフラグTIMEUPが「1」である
ことが判断されると、既に100ミリ秒が経過している
ことを示しているので、以下の処理は行わずに、この割
込処理ルーチンからリターンする。
ことが判断されると、既に100ミリ秒が経過している
ことを示しているので、以下の処理は行わずに、この割
込処理ルーチンからリターンする。
【0100】一方、フラグTIMEUPが「1」でない
ことが判断されると、未だ100ミリ秒が経過していな
いことを示しているので、時間経過計数要求フラグCN
TREQが「1」であるか否かが調べられる(ステップ
S41)。このフラグCNTREQは、RAM12に設
けられるフラグであり、時間経過を計数すべきか否かを
記憶するために使用される。
ことが判断されると、未だ100ミリ秒が経過していな
いことを示しているので、時間経過計数要求フラグCN
TREQが「1」であるか否かが調べられる(ステップ
S41)。このフラグCNTREQは、RAM12に設
けられるフラグであり、時間経過を計数すべきか否かを
記憶するために使用される。
【0101】ここでフラグCNTREQが「0」である
ことが判断されると、時間経過を計数する必要がないこ
とを認識し、以下の処理は行わずに、この割込処理ルー
チンからリターンする。
ことが判断されると、時間経過を計数する必要がないこ
とを認識し、以下の処理は行わずに、この割込処理ルー
チンからリターンする。
【0102】一方、フラグCNTREQが「1」である
ことが判断されると、時間経過を計数する必要があるこ
とを認識し、時間カウンタCNTTIMの内容がデクリ
メントされる(ステップS42)。即ち、時間カウンタ
CNTTIMの内容は1ミリ秒毎にデクリメントされる
ことになる。ここで、時間カウンタCNTTIMは、R
AM12に設けられるカウンタであり、時間経過を計数
するために使用されるものである。
ことが判断されると、時間経過を計数する必要があるこ
とを認識し、時間カウンタCNTTIMの内容がデクリ
メントされる(ステップS42)。即ち、時間カウンタ
CNTTIMの内容は1ミリ秒毎にデクリメントされる
ことになる。ここで、時間カウンタCNTTIMは、R
AM12に設けられるカウンタであり、時間経過を計数
するために使用されるものである。
【0103】次いで、上記デクリメントの結果、時間カ
ウンタCNTTIMの内容がゼロになったか否かが調べ
られる(ステップS43)。そして、ゼロになっていな
いことが判断されると、この割込処理ルーチンからリタ
ーンする。
ウンタCNTTIMの内容がゼロになったか否かが調べ
られる(ステップS43)。そして、ゼロになっていな
いことが判断されると、この割込処理ルーチンからリタ
ーンする。
【0104】一方、上記時間カウンタCNTTIMの内
容がゼロになったことが判断されると、100ミリ秒を
計時したことを認識し、フラグCNTREQを「0」に
クリアする一方、フラグTIMEUPを「1」にセット
する。これにより、後述する展開フォーム処理におい
て、上記所定時間が経過したことを知ることができるよ
うになっている。以上の処理が終了すると、この割込処
理ルーチンからリターンする。
容がゼロになったことが判断されると、100ミリ秒を
計時したことを認識し、フラグCNTREQを「0」に
クリアする一方、フラグTIMEUPを「1」にセット
する。これにより、後述する展開フォーム処理におい
て、上記所定時間が経過したことを知ることができるよ
うになっている。以上の処理が終了すると、この割込処
理ルーチンからリターンする。
【0105】次に、鍵盤処理ルーチンのステップS53
で行う展開フォーム作成処理について説明する。この展
開フォーム作成処理の詳細については、図11のフロー
チャートに示されている。
で行う展開フォーム作成処理について説明する。この展
開フォーム作成処理の詳細については、図11のフロー
チャートに示されている。
【0106】展開フォーム作成処理では、先ず、コード
検出処理(図10のステップS52)で検出したコード
は、その時点で使用されているコードと同じであるか否
かが調べられる(ステップS60)。そし、同じである
ことが判断されると、コードチェンジはなかったものと
判断して、何等の処理をも行うことなく、この展開フォ
ーム処理ルーチンからリターンする。
検出処理(図10のステップS52)で検出したコード
は、その時点で使用されているコードと同じであるか否
かが調べられる(ステップS60)。そし、同じである
ことが判断されると、コードチェンジはなかったものと
判断して、何等の処理をも行うことなく、この展開フォ
ーム処理ルーチンからリターンする。
【0107】一方、ステップS60で今までのコードと
同じでない、つまりコードチェンジがあったことが判断
されると、フラグTIMEUPをバッファWTF1にセ
ーブする(ステップS61)。バッファWTF1は、R
AM12に設けられるテンポラリのバッファである。
同じでない、つまりコードチェンジがあったことが判断
されると、フラグTIMEUPをバッファWTF1にセ
ーブする(ステップS61)。バッファWTF1は、R
AM12に設けられるテンポラリのバッファである。
【0108】次いで、初期化処理が行われる(ステップ
S62)。即ち、時間カウンタCNTTIMに初期値
「100」がセットされ、フラグTIMEUPが「0」
にクリアされ、また、フラグCNTREQが「1」にセ
ットされる。
S62)。即ち、時間カウンタCNTTIMに初期値
「100」がセットされ、フラグTIMEUPが「0」
にクリアされ、また、フラグCNTREQが「1」にセ
ットされる。
【0109】カウンタに「100」がセットされること
により、上述した割込処理ルーチンで1ミリ秒が100
回計数されて、100ミリ秒が計測されることになる。
このステップでフラグTIMEUPが「0」にクリアさ
れ、且つフラグCNTREQが「1」にセットされるこ
とにより、次の100ミリ秒の計測が開始される。
により、上述した割込処理ルーチンで1ミリ秒が100
回計数されて、100ミリ秒が計測されることになる。
このステップでフラグTIMEUPが「0」にクリアさ
れ、且つフラグCNTREQが「1」にセットされるこ
とにより、次の100ミリ秒の計測が開始される。
【0110】次いで、先にセーブされたバッファWTF
1、つまりフラグTIMEUPが「1」であるか否かが
調べられる(ステップS63)。ここで、バッファWT
F1が「1」であることが判断されると、前回のコード
チェンジから100ミリ秒経過した後のコードチェンジ
であることが認識され、前コード作成処理が行われる
(ステップS64)。この前コード作成処理は、或るコ
ードから他のコードへコードチェンジがあった際に、移
行途中において検出された不要コードを排除して、真に
移行前に押されていたコードを検出して前コードとする
処理である。
1、つまりフラグTIMEUPが「1」であるか否かが
調べられる(ステップS63)。ここで、バッファWT
F1が「1」であることが判断されると、前回のコード
チェンジから100ミリ秒経過した後のコードチェンジ
であることが認識され、前コード作成処理が行われる
(ステップS64)。この前コード作成処理は、或るコ
ードから他のコードへコードチェンジがあった際に、移
行途中において検出された不要コードを排除して、真に
移行前に押されていたコードを検出して前コードとする
処理である。
【0111】なお、バッファWTF1が「1」でないこ
とが判断されると、前コード作成処理はスキップされ
る。このことは、換言すれば、前コード作成処理は、前
回のコードチェンジが発生してから今回のコードチェン
ジが発生するまでに100ミリ秒経過している場合にの
み行われることになる。
とが判断されると、前コード作成処理はスキップされ
る。このことは、換言すれば、前コード作成処理は、前
回のコードチェンジが発生してから今回のコードチェン
ジが発生するまでに100ミリ秒経過している場合にの
み行われることになる。
【0112】上記前コード作成処理の詳細については、
図12のフローチャートに示されている。前コード作成
処理においては、先ず、コードチェンジ回数カウンタC
CHGがインクリメントされる(ステップS70)。そ
して、インクリメントの結果、「4」以上になったか否
かが調べられる(ステップS71)。
図12のフローチャートに示されている。前コード作成
処理においては、先ず、コードチェンジ回数カウンタC
CHGがインクリメントされる(ステップS70)。そ
して、インクリメントの結果、「4」以上になったか否
かが調べられる(ステップS71)。
【0113】ここで、「4」以上になったことが判断さ
れると、CCHGの内容はゼロにクリアされ(ステップ
S72)、前コード格納バッファMAECには、定数
「0FFH」(’H’は16進数であることを示す。以
下、同じ)がセットされる(ステップS73)。この定
数「0FFH」は前コードが不定であることを示す。こ
れは、4回コード変化があったら展開フォームを基本フ
ォームに戻すので、前コードは不要であることを記憶す
るために行われる。
れると、CCHGの内容はゼロにクリアされ(ステップ
S72)、前コード格納バッファMAECには、定数
「0FFH」(’H’は16進数であることを示す。以
下、同じ)がセットされる(ステップS73)。この定
数「0FFH」は前コードが不定であることを示す。こ
れは、4回コード変化があったら展開フォームを基本フ
ォームに戻すので、前コードは不要であることを記憶す
るために行われる。
【0114】なお、前コード格納バッファMAECはR
AM12に設けられるバッファである。以上の処理が終
了すると、この前コード作成処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻る。
AM12に設けられるバッファである。以上の処理が終
了すると、この前コード作成処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻る。
【0115】上記ステップS71で、CCHGの内容が
「4」より小さいことが判断されると、今までのコード
を前コードとしてMAECに格納する(ステップS7
4)。そして、今までの展開フォームを前フォームとし
て記憶する(ステップS75)。
「4」より小さいことが判断されると、今までのコード
を前コードとしてMAECに格納する(ステップS7
4)。そして、今までの展開フォームを前フォームとし
て記憶する(ステップS75)。
【0116】具体的には、展開フォームの第1音目を記
憶するためのバッファTNKF1の内容を、前フォーム
の第1音目を記憶するためのバッファMAEF1に格納
する。同様に、展開フォームの第2音目を記憶するため
のバッファTNKF2の内容を、前フォームの第2音目
を記憶するためのバッファMAEF2に格納し、展開フ
ォームの第3音目を記憶するためのバッファTNKF3
の内容を、前フォームの第3音目を記憶するためのバッ
ファMAEF3に格納する。
憶するためのバッファTNKF1の内容を、前フォーム
の第1音目を記憶するためのバッファMAEF1に格納
する。同様に、展開フォームの第2音目を記憶するため
のバッファTNKF2の内容を、前フォームの第2音目
を記憶するためのバッファMAEF2に格納し、展開フ
ォームの第3音目を記憶するためのバッファTNKF3
の内容を、前フォームの第3音目を記憶するためのバッ
ファMAEF3に格納する。
【0117】上記バッファTNKF1〜TNKF3及び
MAEF1〜MAEF3は、何れもRAM12に設けら
れるバッファである。以上の処理が終了すると、この前
コード作成処理ルーチンからリターンして展開フォーム
作成処理ルーチンに戻る。
MAEF1〜MAEF3は、何れもRAM12に設けら
れるバッファである。以上の処理が終了すると、この前
コード作成処理ルーチンからリターンして展開フォーム
作成処理ルーチンに戻る。
【0118】以上の前コード作成処理により、前回のコ
ード変化が発生してから100ミリ秒経過している場合
にのみ今までのコードを前コードとするので、コードの
移行途中に検出されたコード(前回のコード変化が発生
してから100ミリ秒経過していない場合のコード)は
捨てられ、確実に移行前に押されていたコードを前コー
ドとすることができるようになっている。
ード変化が発生してから100ミリ秒経過している場合
にのみ今までのコードを前コードとするので、コードの
移行途中に検出されたコード(前回のコード変化が発生
してから100ミリ秒経過していない場合のコード)は
捨てられ、確実に移行前に押されていたコードを前コー
ドとすることができるようになっている。
【0119】展開フォーム作成処理ルーチンでは、次い
で、候補フォーム作成処理が行われる(ステップS6
5)。この候補フォーム作成処理の詳細は、図13のフ
ローチャートに示されている。
で、候補フォーム作成処理が行われる(ステップS6
5)。この候補フォーム作成処理の詳細は、図13のフ
ローチャートに示されている。
【0120】この候補フォーム作成処理は、前のコード
から新しいコードに移行する際に、新しいコードの構成
音として取り得る可能性のある音を決定する処理であ
る。例えば、図2に示す例では、CメジャーからGメジ
ャーに移行する際に、Gメジャーを構成する音B、D、
G及び1オクターブ下のG、及び1オクターブ上のBが
候補フォームとして選択されることになる。
から新しいコードに移行する際に、新しいコードの構成
音として取り得る可能性のある音を決定する処理であ
る。例えば、図2に示す例では、CメジャーからGメジ
ャーに移行する際に、Gメジャーを構成する音B、D、
G及び1オクターブ下のG、及び1オクターブ上のBが
候補フォームとして選択されることになる。
【0121】候補フォーム作成処理ルーチンでは、先
ず、新しく検出されたコードを今までのコードとして記
憶する(ステップS80)。
ず、新しく検出されたコードを今までのコードとして記
憶する(ステップS80)。
【0122】次いで、上記前コード作成処理ルーチンで
作成された前コード(バッファMAECに格納されてい
る)が「0FFH」であるか否かが調べられる(ステッ
プS81)。そして、MAECの内容が「0FFH」で
ある、つまり基本フォームに戻るべきことが判断される
と、新コードの基本フォームが格納されている基本フォ
ームテーブルのアドレスがアドレスレジスタFADRS
に格納される(ステップS89)。アドレスレジスタF
ADRSは、RAM12に設けられるレジスタである。
作成された前コード(バッファMAECに格納されてい
る)が「0FFH」であるか否かが調べられる(ステッ
プS81)。そして、MAECの内容が「0FFH」で
ある、つまり基本フォームに戻るべきことが判断される
と、新コードの基本フォームが格納されている基本フォ
ームテーブルのアドレスがアドレスレジスタFADRS
に格納される(ステップS89)。アドレスレジスタF
ADRSは、RAM12に設けられるレジスタである。
【0123】次いで、候補フォームの作成が行われる
(ステップS90)。即ち、先ずアドレスレジスタFA
DRSの内容に「2」を加えたアドレスから音名が読み
出され、その音名から「12」を引いたものが第1番目
の候補フォームとして、バッファKHOF1に格納され
る。図2に示した例では、アドレスレジスタにはGメジ
ャー(図5参照)のアドレスがセットされるので、音名
Gが読み出され、これから「12」が引かれることによ
り、1オクターブ下の音名Gが第1番目の候補フォーム
としてバッファKHOF1にセットされる。
(ステップS90)。即ち、先ずアドレスレジスタFA
DRSの内容に「2」を加えたアドレスから音名が読み
出され、その音名から「12」を引いたものが第1番目
の候補フォームとして、バッファKHOF1に格納され
る。図2に示した例では、アドレスレジスタにはGメジ
ャー(図5参照)のアドレスがセットされるので、音名
Gが読み出され、これから「12」が引かれることによ
り、1オクターブ下の音名Gが第1番目の候補フォーム
としてバッファKHOF1にセットされる。
【0124】次いで、アドレスレジスタFADRSの内
容が示すアドレスから音名が読み出され、それが第2番
目の候補フォームとして、バッファKHOF2に格納さ
れる。図2に示した例では、音名Bが読み出され、これ
が第2番目の候補フォームとしてバッファKHOF2に
セットされる。
容が示すアドレスから音名が読み出され、それが第2番
目の候補フォームとして、バッファKHOF2に格納さ
れる。図2に示した例では、音名Bが読み出され、これ
が第2番目の候補フォームとしてバッファKHOF2に
セットされる。
【0125】次いで、アドレスレジスタFADRSの内
容に「1」を加えたアドレスから音名が読み出され、そ
れが第3番目の候補フォームとして、バッファKHOF
3に格納される。図2に示した例では、音名Dが読み出
され、これが第3番目の候補フォームとしてバッファK
HOF3にセットされる。
容に「1」を加えたアドレスから音名が読み出され、そ
れが第3番目の候補フォームとして、バッファKHOF
3に格納される。図2に示した例では、音名Dが読み出
され、これが第3番目の候補フォームとしてバッファK
HOF3にセットされる。
【0126】次いで、アドレスレジスタFADRSの内
容に「2」を加えたアドレスから音名が読み出され、そ
れが第4番目の候補フォームとして、バッファKHOF
4に格納される。図2に示した例では、音名Gが読み出
され、これが第4番目の候補フォームとしてバッファK
HOF4にセットされる。
容に「2」を加えたアドレスから音名が読み出され、そ
れが第4番目の候補フォームとして、バッファKHOF
4に格納される。図2に示した例では、音名Gが読み出
され、これが第4番目の候補フォームとしてバッファK
HOF4にセットされる。
【0127】次いで、アドレスレジスタFADRSの内
容が示すアドレスから音名が読み出され、その音名に
「12」を加えたものが第5番目の候補フォームとし
て、バッファKHOF5に格納される。図2に示した例
では、音名Bが読み出され、これに「12」が加算され
ることにより、1オクターブ上の音名Bが第5番目の候
補フォームとしてバッファKHOF5にセットされる。
なお、上述したバッファKHOF1〜KHOF5は、R
AM12に設けられるバッファである。
容が示すアドレスから音名が読み出され、その音名に
「12」を加えたものが第5番目の候補フォームとし
て、バッファKHOF5に格納される。図2に示した例
では、音名Bが読み出され、これに「12」が加算され
ることにより、1オクターブ上の音名Bが第5番目の候
補フォームとしてバッファKHOF5にセットされる。
なお、上述したバッファKHOF1〜KHOF5は、R
AM12に設けられるバッファである。
【0128】以上では、コードGに対する候補フォーム
を作成する場合を例にとって説明したが他のコードの場
合も全く同様である。以上の候補フォームの作成が終了
すると、この候補フォーム作成処理ルーチンからリター
ンして展開フォーム作成処理ルーチンに戻る。
を作成する場合を例にとって説明したが他のコードの場
合も全く同様である。以上の候補フォームの作成が終了
すると、この候補フォーム作成処理ルーチンからリター
ンして展開フォーム作成処理ルーチンに戻る。
【0129】上記ステップS81で、MAECの内容が
「0FFH」でないことが判断されると、次いで、新コ
ードは○7 又は○7sus4 であるか否かが調べられる(ス
テップS82)。ここで、新コードが○7 又は○7sus4
でないことが判断されるとステップS89に分岐し、上
述したと同様の処理により候補フォームが作成される。
「0FFH」でないことが判断されると、次いで、新コ
ードは○7 又は○7sus4 であるか否かが調べられる(ス
テップS82)。ここで、新コードが○7 又は○7sus4
でないことが判断されるとステップS89に分岐し、上
述したと同様の処理により候補フォームが作成される。
【0130】一方、新コードが○7 又は○7sus4 である
ことが判断されると、前コードと根音が同じであるか否
かが調べられる(ステップS83)。そして、同じであ
ることが判断されると、新コードの根音抜き基本フォー
ムが格納されている基本フォームテーブルのアドレスが
アドレスレジスタFADRSに格納される(ステップS
87)。即ち、図5に示した基本フォームテーブルの○
7 又は○7sus4 のアドレスがアドレスレジスタFADR
Sにセットされる。これは、上述したルールR4−1を
実施するものである。その後、ステップS90に分岐
し、上述したと同様の処理により候補フォームが作成さ
れる。
ことが判断されると、前コードと根音が同じであるか否
かが調べられる(ステップS83)。そして、同じであ
ることが判断されると、新コードの根音抜き基本フォー
ムが格納されている基本フォームテーブルのアドレスが
アドレスレジスタFADRSに格納される(ステップS
87)。即ち、図5に示した基本フォームテーブルの○
7 又は○7sus4 のアドレスがアドレスレジスタFADR
Sにセットされる。これは、上述したルールR4−1を
実施するものである。その後、ステップS90に分岐
し、上述したと同様の処理により候補フォームが作成さ
れる。
【0131】上記ステップS83で、前コードと根音が
同じでないことが判断されると、次いで、前コードは○
6 又は○dim であるか否かが調べられる(ステップS8
4)。ここで、前コードは○6 又は○dim であることが
判断されると、新コードの5度音抜き基本フォームが格
納されている基本フォームテーブルのアドレスがアドレ
スレジスタFADRSに格納される(ステップS8
8)。即ち、図5に示した基本フォームテーブルの*○
7 又は*○7sus4 のアドレスがアドレスレジスタFAD
RSにセットされる。これは、上述したルールR4−3
を実施するものである。その後、ステップS90に分岐
し、上述したと同様の処理により候補フォームが作成さ
れる。
同じでないことが判断されると、次いで、前コードは○
6 又は○dim であるか否かが調べられる(ステップS8
4)。ここで、前コードは○6 又は○dim であることが
判断されると、新コードの5度音抜き基本フォームが格
納されている基本フォームテーブルのアドレスがアドレ
スレジスタFADRSに格納される(ステップS8
8)。即ち、図5に示した基本フォームテーブルの*○
7 又は*○7sus4 のアドレスがアドレスレジスタFAD
RSにセットされる。これは、上述したルールR4−3
を実施するものである。その後、ステップS90に分岐
し、上述したと同様の処理により候補フォームが作成さ
れる。
【0132】上記ステップS84で、前コードが○6 又
は○dim でないことが判断されると、次いで、前コード
は○m7又は○m7-5又は○mM7 であるか否かが調べられる
(ステップS85)。ここで、前コードが○m7又は○m7
-5又は○mM7 でない、つまり○、○m 、○sus4、○aug
、○M7、○7 、○7sus4 であることが判断されると、
ステップS87に分岐し、上述した同様の処理が行われ
る。即ち、図5に示した基本フォームテーブルの○7 又
は○7sus4 のアドレスがアドレスレジスタFADRSに
セットされる。これは、上述したルールR4−2を実施
するものである。その後、ステップS90に分岐し、上
述したと同様の処理により候補フォームが作成される。
は○dim でないことが判断されると、次いで、前コード
は○m7又は○m7-5又は○mM7 であるか否かが調べられる
(ステップS85)。ここで、前コードが○m7又は○m7
-5又は○mM7 でない、つまり○、○m 、○sus4、○aug
、○M7、○7 、○7sus4 であることが判断されると、
ステップS87に分岐し、上述した同様の処理が行われ
る。即ち、図5に示した基本フォームテーブルの○7 又
は○7sus4 のアドレスがアドレスレジスタFADRSに
セットされる。これは、上述したルールR4−2を実施
するものである。その後、ステップS90に分岐し、上
述したと同様の処理により候補フォームが作成される。
【0133】上記ステップS85で、前コードが○m7又
は○m7-5又は○mM7 であることが判断されると、次い
で、前コードと根音が半音違いであるか否かが調べられ
る(ステップS86)。ここで、前コードと根音が半音
違いであることが判断されると、ステップS87に進
み、上述した同様の処理が行われる。即ち、図5に示し
た基本フォームテーブルの○7 又は○7sus4 のアドレス
がアドレスレジスタFADRSにセットされる。これ
は、上述したルールR4−4を実施するものである。そ
の後、ステップS90に分岐し、上述したと同様の処理
が行われて候補フォームが作成される。
は○m7-5又は○mM7 であることが判断されると、次い
で、前コードと根音が半音違いであるか否かが調べられ
る(ステップS86)。ここで、前コードと根音が半音
違いであることが判断されると、ステップS87に進
み、上述した同様の処理が行われる。即ち、図5に示し
た基本フォームテーブルの○7 又は○7sus4 のアドレス
がアドレスレジスタFADRSにセットされる。これ
は、上述したルールR4−4を実施するものである。そ
の後、ステップS90に分岐し、上述したと同様の処理
が行われて候補フォームが作成される。
【0134】上記ステップS86で、前コードと根音が
半音違いでないことが判断されると、ステップS88に
分岐し、上述した同様の処理が行われる。即ち、図5に
示した基本フォームテーブルの*○7 又は*○7sus4 の
アドレスがアドレスレジスタFADRSにセットされ
る。これは、上述したルールR4−5を実施するもので
ある。その後、ステップS90に分岐し、上述したと同
様の処理により候補フォームが作成される。
半音違いでないことが判断されると、ステップS88に
分岐し、上述した同様の処理が行われる。即ち、図5に
示した基本フォームテーブルの*○7 又は*○7sus4 の
アドレスがアドレスレジスタFADRSにセットされ
る。これは、上述したルールR4−5を実施するもので
ある。その後、ステップS90に分岐し、上述したと同
様の処理により候補フォームが作成される。
【0135】以上のようにして作成される候補フォーム
は、基本フォームがバッファKHOF2〜KHOF4に
セットされ、基本フォームの最高音の1オクターブ下の
音がバッファKHOF1にセットされ、最低音の1オク
ターブ上の音がバッファKHOF5にセットされて得ら
れる。この候補フォームの作成が完了すると、この候補
フォーム作成処理ルーチンからリターンし、展開フォー
ム作成処理ルーチンに戻る。
は、基本フォームがバッファKHOF2〜KHOF4に
セットされ、基本フォームの最高音の1オクターブ下の
音がバッファKHOF1にセットされ、最低音の1オク
ターブ上の音がバッファKHOF5にセットされて得ら
れる。この候補フォームの作成が完了すると、この候補
フォーム作成処理ルーチンからリターンし、展開フォー
ム作成処理ルーチンに戻る。
【0136】展開フォーム作成処理ルーチンでは、次い
で、展開フォーム決定処理が行われる(ステップS6
6)。この展開フォーム決定処理の詳細は、図14のフ
ローチャートに示されている。
で、展開フォーム決定処理が行われる(ステップS6
6)。この展開フォーム決定処理の詳細は、図14のフ
ローチャートに示されている。
【0137】この展開フォーム作成処理は、先に作成さ
れた候補フォームと前フォームの差が2半音以内にある
か否かを順次調べ、2半音以内にある音を使用して新し
い展開フォームを決定する処理である。
れた候補フォームと前フォームの差が2半音以内にある
か否かを順次調べ、2半音以内にある音を使用して新し
い展開フォームを決定する処理である。
【0138】この展開フォーム決定処理では、先ず、前
コードは「0FFH」であるか否か、つまりコード変化
が4回目であるか否かが調べられる(ステップS10
0)。ここで、前コードが「0FFH」であることが判
断されると、基本フォームが展開フォームとされる(ス
テップS113)。即ち、候補フォームを記憶するバッ
ファKHOF2〜KHOF4の内容(基本フォーム)が
展開フォームとしてバッファTNKF1〜TNKF3に
セットされる。その後、この展開フォーム決定処理ルー
チンからリターンして展開フォーム作成処理ルーチンに
戻る。
コードは「0FFH」であるか否か、つまりコード変化
が4回目であるか否かが調べられる(ステップS10
0)。ここで、前コードが「0FFH」であることが判
断されると、基本フォームが展開フォームとされる(ス
テップS113)。即ち、候補フォームを記憶するバッ
ファKHOF2〜KHOF4の内容(基本フォーム)が
展開フォームとしてバッファTNKF1〜TNKF3に
セットされる。その後、この展開フォーム決定処理ルー
チンからリターンして展開フォーム作成処理ルーチンに
戻る。
【0139】一方、前コードが「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)。
が判断されると、前フォームの第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)。
【0140】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第1〜第3番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS101〜S
103で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS105に進む。
何れも2半音以内にある候補フォームの第1〜第3番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS101〜S
103で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS105に進む。
【0141】ステップ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)。
番目の音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)。
【0142】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第2〜第4番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS105〜S
107で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS109に進む。
何れも2半音以内にある候補フォームの第2〜第4番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。なお、上記ステップS105〜S
107で、差の絶対値が「2」以下でないことが判断さ
れた場合は、ステップS109に進む。
【0143】ステップ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)。
番目の音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)。
【0144】以上の処理により、展開フォームとして、
何れも2半音以内にある候補フォームの第3〜第5番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。
何れも2半音以内にある候補フォームの第3〜第5番目
の音が決定されることになる。その後、この展開フォー
ム決定処理ルーチンからリターンして展開フォーム作成
処理ルーチンに戻る。
【0145】なお、上記ステップS105〜S107
で、差の絶対値が「2」以下でないことが判断された場
合は、ステップS113に進み、基本フォームが展開フ
ォームとしてバッファTNKF1〜TNKF3にセット
される。
で、差の絶対値が「2」以下でないことが判断された場
合は、ステップS113に進み、基本フォームが展開フ
ォームとしてバッファTNKF1〜TNKF3にセット
される。
【0146】以上のようにして展開フォームが決定され
ると、この展開フォーム決定処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻り、さらに展開
フォーム作成処理ルーチンもリターンしてメインルーチ
ンに戻る。
ると、この展開フォーム決定処理ルーチンからリターン
して展開フォーム作成処理ルーチンに戻り、さらに展開
フォーム作成処理ルーチンもリターンしてメインルーチ
ンに戻る。
【0147】次に、自動伴奏処理の詳細について、図1
5に示したフローチャートを参照しながら説明する。
5に示したフローチャートを参照しながら説明する。
【0148】自動伴奏処理では、先ず、自動伴奏フラグ
が「1」であるか否か、つまり本電子楽器が自動伴奏モ
ードにあるか否かが調べられる(ステップS120)。
そして、自動伴奏モードにないことが判断されると、何
等の処理も行うことなく、この自動伴奏処理ルーチンか
らリターンする。
が「1」であるか否か、つまり本電子楽器が自動伴奏モ
ードにあるか否かが調べられる(ステップS120)。
そして、自動伴奏モードにないことが判断されると、何
等の処理も行うことなく、この自動伴奏処理ルーチンか
らリターンする。
【0149】一方、自動伴奏モードであることが判断さ
れると、ROM11から自動伴奏データ(パターンデー
タ)を読み込む(ステップS121)。そして、自動伴
奏イベントの有無が調べられる(ステップS122)。
これは自動伴奏データに含まれるステップタイムが発音
タイミングになったか否かを調べることにより行われ
る。
れると、ROM11から自動伴奏データ(パターンデー
タ)を読み込む(ステップS121)。そして、自動伴
奏イベントの有無が調べられる(ステップS122)。
これは自動伴奏データに含まれるステップタイムが発音
タイミングになったか否かを調べることにより行われ
る。
【0150】ここで、自動伴奏イベントがないことが判
断されると、以下の処理は行わずにこの自動伴奏処理ル
ーチンからリターンする。一方、自動伴奏イベントがあ
ることが判断されると、展開音作成処理が行われる(ス
テップS123)。この展開音作成処理の詳細について
は、図16のフローチャートに示されている。
断されると、以下の処理は行わずにこの自動伴奏処理ル
ーチンからリターンする。一方、自動伴奏イベントがあ
ることが判断されると、展開音作成処理が行われる(ス
テップS123)。この展開音作成処理の詳細について
は、図16のフローチャートに示されている。
【0151】即ち、展開音作成処理では、先ず、パター
ンデータ中のオクターブ情報を、バッファPOCTにセ
ットする(ステップS130)。オクターブ情報は、パ
ターンデータの鍵盤番号を「12」で割った商として求
められる。
ンデータ中のオクターブ情報を、バッファPOCTにセ
ットする(ステップS130)。オクターブ情報は、パ
ターンデータの鍵盤番号を「12」で割った商として求
められる。
【0152】次いで、パターンデータ中の音名情報を、
バッファPNOTEにセットする(ステップS13
1)。この音名情報は、パターンデータの鍵盤番号を
「12」で割った余りとして求められる。
バッファPNOTEにセットする(ステップS13
1)。この音名情報は、パターンデータの鍵盤番号を
「12」で割った余りとして求められる。
【0153】次いで、バッファPOCTに記憶されてい
るオクターブ情報をデクリメントする(ステップS13
2)。これは、展開フォームの値は1オクターブ上の値
になっているので、正規の高さの音に戻すために行うも
のである。
るオクターブ情報をデクリメントする(ステップS13
2)。これは、展開フォームの値は1オクターブ上の値
になっているので、正規の高さの音に戻すために行うも
のである。
【0154】次いで、上記ステップS131で算出して
バッファPNOTEに格納されている音名情報が「3〜
6」の範囲にあるか否かが調べられる(ステップS13
3)。そして、バッファPNOTEの内容が「3〜6」
の範囲にあれば、展開フォームの第2番目の音としてバ
ッファTNKF2に記憶されている値と、オクターブ情
報POCTに「12」を乗じた値とを加算してこれを発
音すべき鍵盤番号としてバッファKYNOに格納する
(ステップS134)。例えば、パターンデータとして
「C,E,G」の各音が記憶されているとすると、E
(=4)が上記の場合に該当するので、上記の処理によ
り展開音の第2番目の音がオクターブ情報を付された鍵
盤番号として生成されることになる。
バッファPNOTEに格納されている音名情報が「3〜
6」の範囲にあるか否かが調べられる(ステップS13
3)。そして、バッファPNOTEの内容が「3〜6」
の範囲にあれば、展開フォームの第2番目の音としてバ
ッファTNKF2に記憶されている値と、オクターブ情
報POCTに「12」を乗じた値とを加算してこれを発
音すべき鍵盤番号としてバッファKYNOに格納する
(ステップS134)。例えば、パターンデータとして
「C,E,G」の各音が記憶されているとすると、E
(=4)が上記の場合に該当するので、上記の処理によ
り展開音の第2番目の音がオクターブ情報を付された鍵
盤番号として生成されることになる。
【0155】一方、上記ステップ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番目の音がオクターブ情報を付された鍵盤番号として
生成されることになる。
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番目の音がオクターブ情報を付された鍵盤番号として
生成されることになる。
【0156】上記ステップS135で、バッファPNO
TEに格納されている音名情報が「7〜10」の範囲に
ない、つまり「0〜2、11」であることが判断される
と、展開フォームの第1番目の音としてバッファTNK
F1に記憶されている値と、オクターブ情報POCTに
「12」を乗じた値とを加算してこれを発音すべき鍵盤
番号としてバッファKYNOに格納する(テップS13
7)。例えば、パターンデータとして「C,E,G」の
各音が記憶されているとすると、C(=0)が上記の場
合に該当するので、上記の処理により展開音の第1番目
の音がオクターブ情報を付された鍵盤番号として生成さ
れることになる。
TEに格納されている音名情報が「7〜10」の範囲に
ない、つまり「0〜2、11」であることが判断される
と、展開フォームの第1番目の音としてバッファTNK
F1に記憶されている値と、オクターブ情報POCTに
「12」を乗じた値とを加算してこれを発音すべき鍵盤
番号としてバッファKYNOに格納する(テップS13
7)。例えば、パターンデータとして「C,E,G」の
各音が記憶されているとすると、C(=0)が上記の場
合に該当するので、上記の処理により展開音の第1番目
の音がオクターブ情報を付された鍵盤番号として生成さ
れることになる。
【0157】このようにして、発音すべきコードの構成
音が鍵盤番号として得られると、この展開音作成処理ル
ーチンからリターンし、自動伴奏処理ルーチンに戻る。
音が鍵盤番号として得られると、この展開音作成処理ル
ーチンからリターンし、自動伴奏処理ルーチンに戻る。
【0158】自動伴奏処理ルーチンでは、次いで、発音
/消音処理が行われる(ステップS124)。即ち、展
開音作成処理ルーチンで作成されてバッファKYNOに
格納されている鍵盤番号が楽音発生回路15に送られる
ことにより、その鍵盤番号に対応する発音又は消音が行
われる。この発音又は消音の動作は先に鍵盤処理ルーチ
ンで説明したものと同じであるので、説明は省略する。
/消音処理が行われる(ステップS124)。即ち、展
開音作成処理ルーチンで作成されてバッファKYNOに
格納されている鍵盤番号が楽音発生回路15に送られる
ことにより、その鍵盤番号に対応する発音又は消音が行
われる。この発音又は消音の動作は先に鍵盤処理ルーチ
ンで説明したものと同じであるので、説明は省略する。
【0159】このようにして、伴奏音の発音又は消音が
終了すると、この自動伴奏処理ルーチンからリターンし
てメインルーチンに戻り、先に説明したように、メイン
ルーチンの実行を繰り返すことになる。
終了すると、この自動伴奏処理ルーチンからリターンし
てメインルーチンに戻り、先に説明したように、メイン
ルーチンの実行を繰り返すことになる。
【0160】
【発明の効果】以上詳述したように、この発明によれば
前コードを確実に検出するとともに、コード入力に対す
る応答性を向上させることのできる電子楽器の前コード
検出装置を提供することができる。
前コードを確実に検出するとともに、コード入力に対す
る応答性を向上させることのできる電子楽器の前コード
検出装置を提供することができる。
【図1】本発明の自動伴奏装置を適用した電子楽器の実
施例の概略構成を示すブロック図である。
施例の概略構成を示すブロック図である。
【図2】本発明における展開フォームの例を説明するた
めの図である。
めの図である。
【図3】本発音における展開音作成を説明するための図
である。
である。
【図4】本発明に用いる基本フォームテーブルの一例を
示す図である(図5に続く)。
示す図である(図5に続く)。
【図5】本発明に用いる基本フォームテーブルの一例を
示す図である(図4の続き)。
示す図である(図4の続き)。
【図6】本発明の実施例の動作を示すフローチャート
(メインルーチン)である。
(メインルーチン)である。
【図7】本発明の実施例の動作を示すフローチャート
(パネル処理ルーチン)である。
(パネル処理ルーチン)である。
【図8】本発明の実施例の動作を示すフローチャート
(コード展開初期値設定処理ルーチン)である。
(コード展開初期値設定処理ルーチン)である。
【図9】本発明の実施例の動作を示すフローチャート
(割込処理ルーチン)である。
(割込処理ルーチン)である。
【図10】本発明の実施例の動作を示すフローチャート
(鍵盤処理ルーチン)である。
(鍵盤処理ルーチン)である。
【図11】本発明の実施例の動作を示すフローチャート
(展開フォーム作成処理ルーチン)である。
(展開フォーム作成処理ルーチン)である。
【図12】本発明の実施例の動作を示すフローチャート
(前コード作成処理ルーチン)である。
(前コード作成処理ルーチン)である。
【図13】本発明の実施例の動作を示すフローチャート
(候補フォーム作成処理ルーチン)である。
(候補フォーム作成処理ルーチン)である。
【図14】本発明の実施例の動作を示すフローチャート
(展開フォーム決定処理ルーチン)である。
(展開フォーム決定処理ルーチン)である。
【図15】本発明の実施例の動作を示すフローチャート
(自動伴奏処理ルーチン)である。
(自動伴奏処理ルーチン)である。
【図16】本発明の実施例の動作を示すフローチャート
(展開音作成処理ルーチン)である。
(展開音作成処理ルーチン)である。
【図17】従来のコード展開処理を説明するための図で
ある。
ある。
【図18】従来のコード検出及びその時の前コードを説
明するための図である。
明するための図である。
10 CPU 11 ROM 12 RAM 13 鍵盤装置 14 操作パネル 15 楽音発生装置 16 D/A変換器 17 増幅器 18 スピーカ 19 MIDIインタフェース回路 20 システムバス
Claims (1)
- 【請求項1】 今回検出されたコードと前回検出された
コードとの異同を判断する判断手段と、 該判断手段で今回検出されたコードと前回検出されたコ
ードとが相違することが判断された時に計時を開始して
所定時間が計時された場合にその旨を記憶する計時手段
と、 前記判断手段で今回検出されたコードと前回検出された
コードとが相違することが検出された場合に、前記計時
手段が所定時間を計時した旨を記憶していれば、前回検
出されたコードを前コードとして記憶する制御手段、 とを具備したことを特徴とする電子楽器の前コード検出
装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5124684A JPH06314096A (ja) | 1993-04-30 | 1993-04-30 | 電子楽器の前コード検出装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5124684A JPH06314096A (ja) | 1993-04-30 | 1993-04-30 | 電子楽器の前コード検出装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06314096A true JPH06314096A (ja) | 1994-11-08 |
Family
ID=14891520
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5124684A Withdrawn JPH06314096A (ja) | 1993-04-30 | 1993-04-30 | 電子楽器の前コード検出装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06314096A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004151688A (ja) * | 2002-10-31 | 2004-05-27 | Roland Europ Spa | 電子楽器 |
| JP2012063502A (ja) * | 2010-09-15 | 2012-03-29 | Yamaha Corp | 電子楽器 |
-
1993
- 1993-04-30 JP JP5124684A patent/JPH06314096A/ja not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004151688A (ja) * | 2002-10-31 | 2004-05-27 | Roland Europ Spa | 電子楽器 |
| JP2012063502A (ja) * | 2010-09-15 | 2012-03-29 | Yamaha Corp | 電子楽器 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH10187157A (ja) | 自動演奏装置 | |
| JP3844286B2 (ja) | 電子楽器の自動伴奏装置 | |
| JPH06348271A (ja) | 自動伴奏装置 | |
| JPH06314096A (ja) | 電子楽器の前コード検出装置 | |
| JP3192597B2 (ja) | 電子楽器の自動演奏装置 | |
| JP3476863B2 (ja) | 電子楽器の自動伴奏装置 | |
| JP2640992B2 (ja) | 電子楽器の発音指示装置及び発音指示方法 | |
| JP3192579B2 (ja) | 自動演奏装置及び自動演奏方法 | |
| JP3226268B2 (ja) | コンサートマジック自動演奏装置 | |
| JP2513014B2 (ja) | 電子楽器の自動演奏装置 | |
| JP2002215147A (ja) | 電子楽器の自動伴奏装置及び自動伴奏方法 | |
| JPH06348258A (ja) | 電子楽器の自動演奏装置 | |
| JP3630266B2 (ja) | 自動伴奏装置 | |
| JP3307742B2 (ja) | 電子楽器の伴奏内容表示装置 | |
| JPH10319949A (ja) | 電子楽器 | |
| JPH07104753A (ja) | 電子楽器の自動調律装置 | |
| JP3150580B2 (ja) | 自動演奏装置及び自動演奏方法 | |
| JP2953937B2 (ja) | 電子楽器の音量調整装置 | |
| JPH07121172A (ja) | 伴奏内容検出装置及び自動伴奏装置 | |
| JP2714893B2 (ja) | 和音情報出力装置 | |
| JP3356326B2 (ja) | 電子楽器 | |
| JP2570550B2 (ja) | 電子弦楽器 | |
| JP3097888B2 (ja) | 電子楽器の音量設定装置 | |
| JPH09319372A (ja) | 電子楽器の自動伴奏装置及び自動伴奏方法 | |
| JPH08221072A (ja) | 自動伴奏装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20000704 |