JP2636477B2 - 電子楽器 - Google Patents

電子楽器

Info

Publication number
JP2636477B2
JP2636477B2 JP2193882A JP19388290A JP2636477B2 JP 2636477 B2 JP2636477 B2 JP 2636477B2 JP 2193882 A JP2193882 A JP 2193882A JP 19388290 A JP19388290 A JP 19388290A JP 2636477 B2 JP2636477 B2 JP 2636477B2
Authority
JP
Japan
Prior art keywords
pitch
key
list
keyboard
register
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
JP2193882A
Other languages
English (en)
Other versions
JPH04118698A (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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2193882A priority Critical patent/JP2636477B2/ja
Publication of JPH04118698A publication Critical patent/JPH04118698A/ja
Application granted granted Critical
Publication of JP2636477B2 publication Critical patent/JP2636477B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] この発明は、単音しか発音されていない鍵盤や鍵域な
どによる楽音に対してはピッチ調整を行わないことによ
り演奏者の任意の旋律の流れを音楽的に自然とし、一方
それ以外の複音(複数音)が発音されている鍵盤や鍵域
などによる楽音に対してはピッチ調整を行ってその響き
を良好にできる電子楽器に関する。
[従来技術] 従来、和音を協和音程で発生するようにした電子楽器
として特公昭63−39919号公報に開示されたものがあ
る。これは、和音を検出し、その和音の根音以外のコー
ド構成音の周波数情報(ピッチ情報)を自動調整(ピッ
チ調整)し、発音すべき和音の周波数比を整数とするも
のである。
一般に電子楽器は平均律音階で調律されているが、平
均律では完全協和音程で発生されず、和音のハーモニー
が濁る場合があった。上記公報に記載の電子楽器によれ
ば、和音の各構成音の周波数比を整数比とし、和音を純
正律音階で発音しうるようにしている。純正律で和音を
発生しているので、発生音が協和し澄んだ和音を発生さ
せることができる。
[発明が解決しようとする課題] ところで、上述の従来技術によれば、発音すべき音の
ピッチの調整は検出した和音の根音を基準として行って
いる。すなわち、根音はピッチ調整せず、他の音をピッ
チ調整して、出力している。そのため、メロディなどの
旋律中に和音(検出した和音)の根音以外の音が含まれ
ている場合、その根音でない音に対してもピッチ調整が
なされる。ところが、メロディなどの旋律は時間的な一
連の流れを有する音の列である。したがって、旋律中の
根音でない音に対してもピッチ調整がなされると、旋律
に対する音律が一定でなくなる。そして、メロディの流
れが音楽的に不自然となってしまうという不都合があっ
た。
この発明は、上述の従来例における問題点に鑑み、注
目している旋律の流れを音楽的に自然とし、しかも和音
が協和し澄んだ音が発生できる電子楽器を提供すること
を目的とする。
[課題を解決するための手段] 上記の目的を達成するため、本発明に係る電子楽器
は、演奏情報を入力する複数の演奏情報入力手段と、こ
れら複数の演奏情報入力手段のうち、単音発音されるよ
う操作されている演奏情報入力手段と、複音発音される
よう操作されている演奏情報入力手段とを、検出する検
出手段と、この検出手段により単音発音と検出された演
奏情報入力手段によって入力された単音発音の演奏情報
に対してはピッチ調整せず、一方この検出手段により複
音発音と検出された演奏情報入力手段によって入力され
た複音発音の演奏情報に対してはピッチ調整を行って、
それぞれ入力演奏情報に応じたピッチ情報を出力するピ
ッチ調整手段と、このピッチ調整手段から出力されるピ
ッチ情報に基づいて楽音信号を形成する楽音信号形成手
段とを具備することを特徴とする。
なお、好ましくは、このピッチ調整手段は、入力され
た演奏情報に対応するピッチ情報を平均律によるピッチ
情報から純正律によるピッチ情報へと調整する手段を有
する。
前記ピッチ調整手段は、前記複数の演奏情報入力手段
により入力した演奏情報に基づいて和音を検出する手段
を有し、この和音検出手段により検出した和音がより協
和するようにピッチ調整するようにしてもよい。
前記演奏情報入力手段は、例えば複数の鍵盤または複
数の鍵域とすればよい。
[作 用] 上記の構成によれば、演奏情報入力手段により演奏情
報が入力される。検出手段は、これら複数の演奏情報入
力手段のうち、単音発音されるよう操作されている演奏
情報入力手段と複音発音されるよう操作されている演奏
情報入力手段とを検出する。ピッチ調整手段は、この検
出手段により単音発音と検出された演奏情報入力手段に
よって入力された単音発音の演奏情報に対してはピッチ
調整せずにピッチ情報を出力する。また、ピッチ調整手
段は、検出手段により複音発音と検出された演奏情報入
力手段によって入力された複音発音の演奏情報に対して
はピッチ調整を行ってピッチ情報を出力する。ピッチ調
整手段から出力されるピッチ情報に基づき、楽音信号形
成手段は楽音信号を形成する。
結果として、単音発音の演奏情報入力手段(例えば鍵
盤や鍵域)により発生される単音発音の楽音はピッチ調
整が行われず、自然な旋律の流れで楽音の発生が行われ
る。一方、複音発音の演奏情報入力手段による複音発音
の楽音は和音の発生音が協和し澄んだ音が発生される。
[実施例] 以下、図面を用いてこの発明の実施例を説明する。
第1図は、この発明の一実施例に係る電子楽器のブロ
ック構成図である。この図において、1は複数の鍵盤キ
ー(鍵)を有する鍵盤、2はこの電子楽器全体の動作を
制御する中央処理装置(CPU)、3はCPU2が実行するプ
ログラムが格納されたプログラムメモリ、4は各種のパ
ラメータデータが格納されたパラメータメモリ、5はCP
U2がプログラムを実行する際のワークレジスタなどに用
いるワーキングメモリ、6はこの電子楽器のパネル上に
設けられた操作スイッチおよびLED、7はトーンジェネ
レータ(TG)、8はサウンドシステムである。これらの
各ブロックは双方向のバスライン9に接続されている。
鍵盤1は具体的には、上鍵盤である第1の鍵盤(U
K)、下鍵盤である第2の鍵盤LK、およびペダル鍵盤で
ある第3の鍵盤(PK)からなる。
次に、この実施例の電子楽器において用いているレジ
スタあるいはテーブルなどについて説明する。
(a)nc[i][j]:それぞれの鍵盤に対して押鍵さ
れている鍵盤キーの音名(ノートコード)をつらねた発
音名リストである。添字iは鍵盤(UK,LK,PKの別)を特
定し、添字jはそのナンバiの鍵盤のj番目の押鍵キー
に対する音名であることを示す。上鍵盤UKはi=0、下
鍵盤LKはi=1、ペダル鍵盤PKはi=2とする。例え
ば、上鍵盤UKにおいてG4,B4、下鍵盤LKにおいてD3,G3,B
3、ペダル鍵盤PKでG2が押鍵されているとする。このよ
うな鍵盤の押鍵状態に対し、発音名リストncの各要素は
次の第1表に示すようなものとなる。なお、押鍵キーの
表記法に関し、音名は、C,C#,D,D#,E,F,F#,G,G#,A,
A#,Bで示し、この音名の次に何番目のオクターブの範
囲内の押鍵であるかを数字で示す。例えば、上記の上鍵
盤UKの押鍵G4は、第4番目のオクターブ内の音名Gの鍵
盤キーが押下されていることを示す。また、第1表のnc
の各要素の数値は、C〜Bの各音名に対し対応する数値
であり、その対応関係は以下の第2表に示す。
(b)oct[i][j]:それぞれの鍵盤に対して押鍵
されている鍵盤キーのオクターブコードを連ねたオクタ
ーブリストである。添字iは鍵盤を特定し、添字jはナ
ンバiの鍵盤のj番目の押鍵キーのオクターブコードで
あることを示す。例えば、上記の(a)であげた押鍵の
例におけるオクターブリストは以下の第3表のようにな
る。
(c)en[i]:ナンバiの鍵盤における押鍵キーの数
を格納する配列の形式のレジスタである。上記の(a)
の例であげた例では、上鍵盤UKで2つ、下鍵盤LKで3
つ、ペダル鍵盤PKで1つの鍵盤キーがそれぞれ押鍵され
ているので、en[0]=2、en[1]=3、en[2]=
1、となる。
(d)list[k]:すべての鍵盤で押鍵されている鍵盤
キーを考慮し、その音名(ノートコード)の種類を連ね
たノートコード種類リストである。例えば、上記の
(a)であげた押鍵の例では、押鍵キー全体を考慮する
とそのノートコードの種類は[G,B,D]である。したが
って、このノートコード種類リストlistには3つの音名
を示す数値[8,12,3]が格納される。
(e)ln:ノートコード種類リストlist[k]に格納さ
れた要素の数を記憶するレジスタである。上記の例では
ln=3となる。
(f)sort[m]:ノートコード種類リストlist[k]
を各要素の値の昇順にソートした結果を格納する配列形
式のレジスタである。和音を検出する際などに用いる。
(g)cent[i][j]:押鍵キーに対応する平均律音
階を用いたピッチの値、およびピッチ調整した最終的な
ピッチの値を格納するピッチリストである。添字iで鍵
盤を特定し、添字jでナンバiの鍵盤のj番目の押鍵キ
ーのピッチの値であることを示す。ピッチはセント単位
の値で表す。
(h)pitch[i][j]:押鍵キーに対応するピッチ
値をどれだけ補正するかを示すピッチ補正値を格納する
ピッチ補正値リストである。添字iで鍵盤を特定し、添
字jでナンバiの鍵盤のj番目の押鍵キーに対するピッ
チ補正値であることを示す。ピッチ補正値はセント単位
の値で表す。
(i)ch[i][j]:押鍵キーに対し割当てられるチ
ャンネルナンバを格納する配列の形式のレジスタであ
る。添宇iで鍵盤を特定し、添字jでナンバiの鍵盤の
j番目の押鍵キーが割当てられるチャンネルナンバを示
す。
(j)type:和音を特定するコードパターンナンバを格
納するコードパターンナンバレジスタである。
(k)CDPTN[type][k]:各和音の構成音を連ねた
コードパターンテーブルである。添字typeで和音を特定
し、添字kでその和音の何番目の構成音であるかを示
す。ある和音を構成する構成音がどれかを特定する定数
データからなるテーブルである。基準音を「0」で表
し、その他の音を基準音からの距離(半音を「1」で数
える)で表してある。押鍵キーから和音を検出する際に
用いる。具体的には、押鍵キーの構成音から適当な音を
「0」として他の音をその音からの距離で示すデータを
作成し、そのデータをこのコードパターンテーブルCDPT
Nと比較していく。一致したときの第1パラメータtype
の値が検出された和音のコードパターンとなる。
(1)PD[type][k]:和音の各構成音のピッチ補正
情報を格納したピッチ補正情報テーブルである。ピッチ
補正情報はセントの単位で格納してある。添字typeは和
音を特定し、その和音のk番目の構成音のピッチ補正情
報をPD[type][k]で表している。発音すべき和音の
コードパターンナンバがtypeのとき、その和音の各構成
音のピッチ補正情報がPD[type][k]で読み出せる。
上記のコードパターンナンバ、コードパターンテーブ
ルおよびピッチ補正情報テーブルの具体的な例を以下の
第4表に示す。
(m)pd[k]:押鍵キーから検出した和音の各構成音
に対するピッチ補正情報を格納するワークレジスタであ
る。添字kはk番目の構成音に対するピッチ補正情報を
示す。
なお、説明の便宜のため、各レジスタなどの内容とそ
のレジスタなどとは、同じ記号で示すものとする。例え
ば、typeはコードパターンナンバを格納するレジスタを
示すとともに、このレジスタに格納されているデータと
してのコードパターンナンバをも示すものである。ま
た、上記の各レジスタ類で添字は「0」から数えるもの
とする。例えば、nc[i][j]はナンバiの鍵盤のj
番目の押鍵キーの音名を示すが、このiおよびjは第0
番目、第1番目、第2番目……のように「0」から数え
る。
次に、この実施例の電子楽器の処理手順を説明する。
まず、第2図の概略フローチャートを参照して、この
電子楽器の処理手順の概略の流れを図中の各ブロックを
説明する形で説明する。
ブロック21,22,23 上鍵盤UK、下鍵盤LKおよびペダル鍵盤PKを示す。各鍵
盤における演奏に対して発生する音高情報および鍵盤情
報などの演奏情報は、次のブロック31に入力される。鍵
盤情報はどの鍵盤で押鍵がなされているかを示し、音高
情報は押鍵された鍵盤キーに対応する音名およびオクタ
ーブの情報である。
ブロック31 各鍵盤から演奏情報を入力し、音高の決定などの処理
を行う。これは、どの鍵盤のどの音が押鍵されているか
を発音名リストnc、オクターブリストoctおよびノート
コード種類リストlistのリストの型式で取出す処理であ
る。さらに、鍵盤ごとの押鍵キーの数enを設定する。押
鍵キーの数enにより、各鍵盤が単音発音か複音発音かの
判別を行うことができる。
ブロック32 ノートコード種類リストlistを入力して、和音を検出
する。和音の検出の結果は、コード名および根音基準の
コードパターンを示す情報として出力される。具体的に
は、検出した和音を特定するコードパターンナンバtype
と、ノートコード種類リストlistの要素を根音がlist
[0]にくるように並べ代えたリストlistとが出力され
る。
ブロック33 和音の検出結果であるコード名およびコードパターン
に基づいてピッチ補正情報を読出す。具体的には、求め
たtypeにてピッチ補正情報テーブルPD[type][k]を
読出し、ピッチ補正情報ワードレジスタpdに格納する。
ブロック34 発音名リストncおよびノートコード種類リストlistを
入力し、さらにピッチ補正情報pdを入力する。これらの
情報に基づいて、押鍵キーに対応して発音する各音のピ
ッチ補正情報を決定する。ここで決定するのは根音基準
のピッチ補正情報である。具体的には、根音を基準とし
たピッチ補正値を連ねたピッチ補正値リストpitchを作
成する。根音基準であるから、検出した和音の根音につ
いてはピッチ補正値が「0」となる。
ブロック37 根音基準のピッチ補正値リストpitchおよび根音root
に基づいて、ピッチ補正情報を決定する。具体的には、
根音rootを基準としたピッチ補正値リストpitchを作成
する。
ブロック36 発音名リストncを入力し、各押鍵キーに対応して発音
する音の基本ピッチを読み出す。結果は基本ピッチリス
トcentとして出力される。
ブロック38 オクターブリストoct、基本ピッチリストcent、ピッ
チ補正値リストpitch、および各鍵盤が単音発音か複音
発音かを示す情報enを入力し、発音すべき音の絶対ピッ
チを決定する。最終的なピッチは最終的ピッチリストce
ntとして出力される。
ブロック39 最終ピッチリストcentに基づいて発音処理を行う。
次に、第3図〜第14図のフローチャートを参照して、
この実施例の電子楽器の詳細な処理の流れを説明する。
第3図を参照して、この実施例の電子楽器のメインル
ーチンでは、まずステップS1でレジスタ類などの初期設
定を行う。次に、ステップS2でキーイベントルーチンを
コールし、ステップS3でその他の処理を行った後、再び
ステップS2へと戻る。以上のステップS2〜S3の処理を繰
返す。
次に、第4図を参照して第3図のステップS2のキーイ
ベントルーチンを説明する。
キーイベントルーチンにおいては、まずステップS21
で鍵盤キーのイベントがあるか否かを判別する。キーイ
ベントがない場合は、そのままリターンする。
キーイベントがある場合は、ステップS22でキーオン
イベントであるか否かを判別する。キーオンイベントで
ある場合は、ステップS23で発音チャンネルを割当て、
ステップS24で発音チャンネルが割当てられたか否かを
判別する。発音チャンネルの割当てが不可であった場合
は、そのままリターンする。
ステップS24で発音チャンネルの割当てがなされた場
合は、ステップS25でレジスタtchにその割当てられたチ
ヤンネルナンバを格納し、ステップS26でキーオン処理
を行って押鍵(キーオン)された鍵盤キーに対応する楽
音を発音させる。次に、ステップS27で発音コードリス
ト挿入ルーチンをコールし、ステップS28でピッチ処理
ルーチンをコールした後、リターンする。
ステップS22でキーオンイベントでない場合は、キー
オフイベントであるから、ステップS29でキーオフ処理
ルーチンをコールした後、リターンする。ステップS21
でキーイベントがない場合は、そのままリターンする。
この第4図のキーイベントルーチンにおいては、ステ
ップS26でキーオン処理を行った後、ステップS27で所定
のリストを作成する処理を行い、その後ステップS28で
既にステップS26で発音がなされた音に対してピッチの
調整を行っている。したがって、ピッチの調整は実際の
発音開始のタイミングから若干遅れることとなるが、極
めて短い時間にあるので音楽的な不自然さはない。
次に、第5図を参照して第4図のステップS27の発音
コードリスト挿入ルーチンを説明する。
発音コードリスト挿入ルーチンにおいては、まずステ
ップS31でキーイベントがあった鍵盤キーが上鍵盤UK、
下鍵盤LK、またはペダル鍵盤PKのいずれの鍵盤のキーで
あるかを判別する。上鍵盤UKの鍵盤キーのキーオンイベ
ントである場合は、ステップS32でレジスタiに「0」
を格納してステップS35へ進む。下鍵盤LKのキーオンイ
ベントである場合は、ステップS33でレジスタiに
「1」を格納してステップS35へ進む。ペダル鍵盤PKの
キーオンイベントである場合は、ステップS34でレジス
タiに「2」を格納してステップS35へ進む。
ステップS35でワークレジスタjにナンバiの鍵盤
(押鍵を検出した鍵盤)において現在押鍵中の(この時
点で押鍵を検出したものは除く)鍵盤キーの数en[i]
を格納する。次に、ステップS36でオンイベントがあっ
た押鍵キーのオクターブコードをレジスタoct[i]
[j]に、その音名(ノートコード)をレジスタnc
[i][j]に、それぞれ格納する。これにより、オク
ターブリストoctおよび発音名リストncにキーオンイベ
ントがあった押鍵キーのオクターブコードおよび音名が
付加された。
ステップS37でこの音名に対応する基本ピッチを基本
ピッチリストに書込む。すなわち、発音リストに付加し
た(キーオンイベントがあった)キーの音名nc[i]
[j]から「1」を引いた値に「100」をかけて、その
結果をピッチリストcent[i][j]に格納する。これ
によりキーオンイベントがあった音名に対応するセント
単位でのピッチの値が、レジスタcent[i][j]に格
納されたこととなる。また、第4図ステップS25で割当
てられたチャンネルナンバtchをチャンネルナンバレジ
スタch[i][j]に格納する。
次に、ステップS38でナンバiの鍵盤における押鍵中
の鍵盤キーの数(すなわち発音名リストやオクターブリ
ストに格納されている要素の数)en[i]をインクリメ
ントする。
ステップS30でワークレジスタkに「0」を格納す
る。ステップS40でレジスタkとノートコード種類リス
トの要素数lnとを比較する。レジスタkの値よりノート
コード種類リストの要素数lnのほうが大きい場合は、ス
テップS41でノートコード種類リストlist[k]がキー
オンイベントがあったキーの音名nc[i][j]と等し
いか否かを判別する。等しい場合は、ノートコード種類
リストlistに新たな音名を付加する必要はないので、そ
のままリターンする。ステップS41でノートコード種類
リストの要素list[k]と音名nc[i][j]とが等し
くないときは、ステップS24でレジスタkをインクリメ
ントし、再びステップS40へと戻る。
ステップS40でレジスタkの値がノートコード種類リ
ストの要素数lnより小さくない場合は、キーオンイベン
トがあった鍵盤キーの音名nc[i][j]がノートコー
ド種類リストlistの中にはなかったということであるか
ら、ステップS43に進みこの音名を新たにノートコード
種類リストに登録する。すなわち、ステップS43でノー
トコード種類リストlist[ln]にこの音名nc[i]
[j]を格納する。そして、ステップS44でノートコー
ド種類リストの要素数lnをインクリメントして、リター
ンする。
以上のようにして、オクターブリストoct、発音名リ
ストnc、基本ピッチリストcent、およびノートコード種
類リストlistなどに、新たにキーオンイベントがあった
鍵盤キーの情報が設定される。
次に、第6図を参照して第4図ステップS28のピッチ
処理ルーチンを説明する。
ピッチ処理ルーチンにおいては、まずステップS51で
和音検出ルーチンをコールし、ステップS52で第一ピッ
チ補正ルーチンをコールし、ステップS53で第二ピッチ
補正ルーチンをコールし、ステップS54で絶対ピッチ決
定ルーチンをコールし、ステップS55でトーンジェネレ
ータのチャンネルch[i][j](i=0〜2,j=0〜e
n[i]−1)にピッチ情報cent[i][j]を出力し
てリターンする。
ステップS51〜S54により、ピッチリストcent[i]
[j]には鍵盤キーの押鍵に対応する最終的なピッチの
値(ピッチ調整済みのもの)が格納されている。したが
って、ステップS55でこのピッチリストcent[i]
[j]をトーンジェネレータに出力することにより、発
音されている各押鍵に対応する音について所定のピッチ
調整がなされる。
次に、第7図を参照して第6図ステップS51の和音検
出ルーチンを説明する。
和音検出ルーチンにおいては、まずステップS61でワ
ークレジスタsort[0]〜sort[ln−1]にノートコー
ド種類リストlist[0]〜list[ln−1]を値の昇順に
ソートしたリストを格納する。次に、ステップ62でソー
トしたリストsort[m](m=0〜ln−1)をノートコ
ード種類リストlist[m](m=0〜ln−1)に格納す
る。これによりノートコード種類リストlistの各要素が
その値の昇順にソートされたことになる。
次に、ステップS63でワークレジスタl otに「0」を
設定し、ステップS64でワークレジスタsortの各要素をs
ort[0]の値を基準としてシフトする。すなわち、す
べてのm=0〜ln−1についてレジスタsort[m]から
sort[0]を減算し、再びレジスタsort[m]に格納す
る。
次に、ステップ65でこのワークレジスタsort[0]〜
sort[ln−1]のパターンがコードパターンテーブルCD
PTNの中にあるいずれかのパターンと一致しているか否
かを判別する。一致していない場合は、ステップS66で
レジスタl otをインクリメントし、ステップS67でレジ
スタl otの値とノートコード種類リストの要素数lnとを
比較する。
ステップS67でレジスタl otより要素数lnのほうが大
きい場合は、ステップS68でワークレジスタの先頭の要
素sort[0]に「12」を加算し、テンポラリーレジスタ
temp[0]に格納する。これは、ワークレジスタsortの
先頭の要素sort[0]を1オクターブ上げた値とする処
理である。
次に、ステップS69でワークレジスタsort[1]〜sor
t[ln−1]をsort[0]〜sort[ln−2]に代入し、
ステップS70でテンポラリーレジスタtemp[0]をワー
クレジスタの要素sort[ln−1]に代入する。以上のス
テップS68〜S70により、ワークレジスタsortの先頭の値
sort[0]が1オクターブ上げた値とされてsort1の一
番後方のデータとして設定され、全体が前詰めされるこ
ととなる。ステップS70の後、再びステップS64に戻り、
引続き和音の検出を継続する。
ステップS67でレジスタl otの値がノートコード種類
リストの要素数lnより小さくない場合は、上記のステッ
プS68〜S70のワークレジスタsortの要素を1つづつずら
して(いわゆるローテート)和音を検出する処理を要素
が1回りするまで繰返したが、和音が検出されなかった
ということであるから、検出した和音のコードパターン
ナンバを格納するレジスタtypeに16進でFFHを格納し、
リターンする。typeは1バイトのレジスタであるから前
ビット[1]のデータが設定されることとなる。
ステップS65でワークレジスタsort[0]〜sort[ln
−1]のパターンがコードパターンCDPTNの中に検出さ
れた場合は、ステップS71でコードパターンレジスタtyp
eに検出されたコードパターンナンバを格納する。そし
て、ステップS72ですべてのm=0〜l ot−1に対し
て、テンポラリーレジスタtemp[m]にノートコード種
類リストlist[m]の値を格納し、ステップS73でノー
トコード種類リストlist[l ot]〜list[ln−1]をli
st[0]〜list[ln−l ot−1]に前詰めする。そし
て、ステップS74でテンポラリーレジスタtemp[0]〜t
emp[l ot−1]をノートコード種類list[ln−l ot]
〜list[ln−1]へ代入する。以上のステップS72〜S74
の処理は、一致したコードパターンCDPTNの要素に対応
する順に、すなわち和音の根音が先頭の要素となるよう
に、ノートコード種類リストlistを並べかえる処理であ
る。
次に、ステップS75でk=0〜ln−1についてピッチ
補正情報PD[type][k]をピッチ補正情報ワークレジ
スタpd[k]に代入する。ステップS76でノートコード
種類リストlistの先頭の要素list[0]を根音レジスタ
rootに代入し、リターンする。
第8図は、第6図ステップS52の第一ピッチ補正ルー
チンを説明するためのフローチャートである。
第一ピッチ補正ルーチンにおいては、ステップS81で
コードパターンナンバtypeが16進のFFHであるか否かを
判別する。コードパターンナンバtypeがFFHのときは、
和音の検出が不可であったということであるから、その
ままリターンする。コードパターンナンバtypeがFFHで
ない場合は、ステップS82でワークレジスタiに[0]
を設定する。
次にステップS83でワークレジスタjに「0」を設定
する。ステップS84でレジスタjの値がナンバiの鍵に
おける押鍵キーの数en[i]よりも小さいか否かを判別
する。レジスタjの値が押鍵キー数en[i]の値よりも
小さい場合は、ステップS85でワークレジスタlに
「0」を設定し、ステップS86でノートコード種類リス
トの要素list[l]が発音名リストの要素nc[i]
[j](すなわち、ナンバiの鍵盤におけるj番目の押
鍵キーの音名)に等しいか否かを判別する。等しくない
場合は、ステップS87でワークレジスタlをインクリメ
ントし、再びステップ86へと戻る。
ステップS86でノートコード種類リストの要素list
[l]が発音名リストの要素nc[i][j]と等しい場
合は、ステップS88でピッチ補正情報pdのl番目の(す
なわちステップS86)で一致した音名に対応するピッチ
補正情報)PD[l]をピッチ補正値リストpitch[i]
[j]に代入する。そして、ステップS89でワークレジ
スタjをインクリメントして、再度ステップS84へと戻
る。
ステップS84でワークレジスタjの値がi番目の鍵盤
の押鍵キーの数en[i]よりも小さくない場合は、その
i番目の鍵番における押鍵キーのすべてについて処理が
終了したということであるから、ステップS90に分岐す
る。ステップS90でワークレジスタiが「2」より小さ
いか否かを判別する。ワークレジスタiが「2」より小
さい場合は、未だ処理していない鍵盤があるということ
であるから、ステップS91でレジスタiをインクリメン
トし、ステップS83へと戻る。ステップS90でレジスタi
が「2」より小さくない場合は、リターンする。
以上の第一ピッチ補正の処理は、3つある鍵盤で押鍵
されている音名nc[i][j]を1つ1つノートコード
種類リストlist[l]と比較し、音名が一致した要素を
検出して、それに対応するピッチ補正情報pd[l]をピ
ッチリストpitch[i][j]に設定する処理である。
第9図は、第6図ステップS53の第二ピッチ補正ルー
チンを説明するためのフローチャートである。
第二ピッチ補正ルーチンにおいては、まずステップS1
21でコードパターンナンバtypeが16進のFFHであるか否
かを判別する。FFHである場合は和音の検出ができなか
ったということであるから、そのままリターンする。ス
テップS12でコードパターンナンバtypeがFFHでない場合
は、ステップS122でワークレジスタbiに「0」を設定す
る。
次に、ステップS123でワークレジスタbjに「0」を設
定し、ステップS124でレジスタbjがbi番目の鍵盤の押鍵
の数en[bi]よりも小さいか否かを判別する。レジスタ
bjが押鍵数en[bi]より小さい場合は、ステップS126で
ナンバbiの鍵盤のbj番目の音名nc[bi][bj]と根音
(検出された和音の根音)rootとが等しいか否かを判別
する。等しくない場合は、ステップS127でレジスタbjを
インクリメントし、再びステップS124へと戻る。
ステップS124でレジスタbjが押鍵数en[bi]より小さ
くない場合は、ステップS125へ分岐する。ステップS125
でレジスタbiをインクリメントし、ステップS123へ戻
る。
ステップS126で音名nc[bi][bj]が根音rootに等し
い場合は、ステップS128でピッチリストpitch[i]
[j]から根音のピッチpitch[bi][bj]を減算し、
再びピッチリストpitch[i][j]に代入する。この
処理は、レジスタi=0〜2およびj=0〜en[i]−
1のすべての値について行う。この後リターンする。
以上の処理は、ピッチ調整の基準となる根音rootと発
音名リストncの各要素とを比較して一致するものを探索
し、この根音に対応するピッチ補正値を得てその値でピ
ッチリストpitchのすべての要素をシフトするものであ
る。
第10図は、第6図のステップS54の絶対ピッチ決定ル
ーチンを説明するためのフローチャートである。
絶対ピッチ決定ルーチンにおいては、まずステップS1
31でコードパターンナンバtypeが16進のFFHであるか否
かを判別する。FFHである場合は、ステップS137へと分
岐する。ステップS131でレジスタtypeがFFHでない場合
は、ステップ132でワークレジスタiに「0」を設定
し、ステップS133でナンバiの鍵盤における押鍵キーの
数en[i]が2より小さいか否かを判別する。押鍵キー
の数en[i]が2より小さくない場合、この鍵盤につい
ては複音発音である。押鍵キーの数en[i]が2より小
さい場合、この鍵盤については単音発音である。複音発
音の場合は、ピッチ補正の計算をすべくステップS134へ
進む。単音発音の場合は、ピッチ補正はせずステップS1
35へ分岐する。
ステップS134で押鍵キーの音名に対応するピッチの値
を格納したcent[i][j]とピッチ補正値pitch
[i][j]とを加算しcent[i][j]に代入する。
この処理はj=0〜en[i]−1のすべてにつき行う。
ステップS135でレジスタiが「2」より小さいか否か
を判別し、「2」より小さい場合は、ステップS136でレ
ジスタiをインクリメントし、ステップS133へと戻る。
ステップS135でレジスタiが「2」より小さくない場合
は、ステップ137で cent[ii][j]+1200×oct[ii][j] を計算し、cent[ii][j]に代入する。ただし、ii=
0〜2、j=0〜en[ii]−1とする。ステップS137の
後、リターンする。
上記の処理は、押鍵されている鍵盤キーに対しそのピ
ッチの値(補正後の値)を算出する処理である。単音発
音の鍵盤における押鍵キーに対してはピッチ調整を行わ
ず、複音発音の鍵盤における押鍵キーに対してはピッチ
調整を行うようにしている。
第11図は、第4図ステップS29のキーオフ処理ルーチ
ンの説明をするためのフローチャートである。
キーオフ処理ルーチンにおいては、まずステップS141
で発音コードリスト削除ルーチンをコールし、ステップ
S142でピッチ処理ルーチン(第6図)をコールした後、
リターンする。
以上の処理は、キーオフのあった鍵盤キーのコードな
どをリスト中から削除し、その後ピッチ調整を再度行う
処理である。ステップS142のピッチ処理ルーチンは第6
図を参照して説明した。
第12図は、第11図ステップS141の発音コードリスト削
除ルーチンを説明するためのフローチャートである。
発音コードリスト削除ルーチンにおいては、まずステ
ップS151でキーオフしたキーが上鍵盤UK、下鍵盤LKある
いはペダル鍵盤PKのいずれであるかを判別する。上鍵盤
UKであるときはステップS152でレジスタiに「0」を設
定し、ステップS155へと進む。下鍵盤LKであるときはス
テップS153でレジスタiに「1」を設定し、ステップS1
55へと進む。ペダル鍵盤PKであるときはステップS154で
レジスタiに「2」を設定し、ステップS155へと進む。
ステップS155で、レジスタofoctにキーオフされた鍵
盤キーのオクターブコードを、レジスタofncにキーオフ
された鍵盤キーの音名(ノートコード)を、それぞれ格
納する。次に、ステップS156でワークレジスタjに
「0」を代入し、ステップS157でレジスタjの値とナン
バiの鍵盤の押鍵キーの数en[i]とを比較する。
ステップS157でレジスタjの値が押鍵キーの数en
[i]より小さくない場合は、そのままリターンする。
レジスタjの値が押鍵キーの数en[i]より小さい場合
は、ステップS158でナンバiの鍵盤のj番目の押鍵キー
のオクターブコードoct[i][j]とキーオフされた
キーのオクターブコードofoctとが等しいか否か判別す
る。オクターブコードoct[i][j]とofoctとが等し
くない場合は、ステップS160でレジスタjをインクリメ
ントして、ステップS157へと戻る。
ステップS158でオクターブコードoct[i][j]とo
foctとが等しい場合は、ステップS159でナンバiの鍵盤
のj番目の押鍵キーの音名nc[i][j]とキーオフさ
れたキーの音名ofncとが等しいか否か判別する。音名nc
[i][j]とofncとが等しくない場合は、ステップS1
60へ分岐する。ステップS159で音名nc[i][j]とof
ncとが等しい場合は、ステップS161でキーオフ信号をト
ーンジェネレータのチャンネルch[i][j]の出力
し、キーオフされた鍵盤キーに対応した発音を終了させ
る。そして、ステップS162に進む。
ステップS162でその鍵盤の押鍵数en[i]をデクレメ
ントし、ステップS163でその押鍵数en[i]が「0」で
あるか否かを判別する。
押鍵数en[i]が「0」であるときは、ステップS166
へ分岐する。押鍵数en[i]が「0」でないときは、ス
テップS164でレジスタjmaxに押鍵数en[i]を代入し、
ステップS165へと進む。ステップ165では、オクターブ
リストoct、発音名リストnc、ピッチ補正情報ワークレ
ジスタpd、およびチャンネルナンバレジスタchの各々に
ついて、i番目の鍵盤のjmax番目の要素を、今キーオフ
した鍵盤キーに対応するj番目の要素の位置に代入す
る。これによりキーオフした鍵盤キーの情報が削除され
た。
次に、ステップS166で、発音名リストncの各要素nc
[di][dj](di=0〜2,dj=0〜en[di]−1)が、
今キーオフした音の音名ofncに等しいか否かを判別す
る。これは、キーオフしたキー以外に他の押鍵キーで同
じ音名の音が発音されているか否かを判別するものであ
る。
発音名リストnc中にキーオフした音の音名ofncがない
場合は、ステップS167でワークレジスタlに「0]を設
定し、ステップS168でノートコード種類リストlistのl
番目の要素list[l]がこのキーオフした音の音名ofnc
に等しいか否かを判別する。等しくない場合は、ステッ
プS169でレジスタlをインクリメントし再びステップS1
68の判別を行う。ステップS168でノートコード種類リス
トlist中にキーオフした音名ofncが発見された場合は、
ステップS170でノートコード種類リストの要素数lnをデ
クレメントし、ステップS171でノートコード種類リスト
list[l]に要素list[ln]を代入して、リターンす
る。
ステップS166で発音名リストnc中にキーオフしたノー
トコードofncがある場合は、そのままリターンする。
この発音コードリスト削除ルーチンは、キーオフした
鍵盤キーに対応する音をリスト中から探索して発音終了
させ、そのキーオフした音に関する情報を各リスト中か
ら削除する処理である。リストから削除された後に、第
11図ステップS143でピッチ処理が行われ、ピッチ調整が
なされる。
上記の実施例によれば、単音発音の鍵盤での押鍵につ
いてはピッチ調整をせずその他の鍵盤で演奏した和音な
どについてはピッチ調整を行うようにしている。単音発
音の鍵盤では、メロディ音などの時間的な一連の流れを
有する音の列が演奏されているのがほとんどである。し
たがって、単音発音の鍵盤の旋律音に対しては音律が一
定となり、旋律の流れが音楽的に自然となる。また複音
発音の鍵盤で演奏される和音に関してはピッチ調整を行
っているので、和音が協和し響きがよくなる。
なお、上記の実施例では上鍵盤UK、下鍵盤LKおよびペ
ダル鍵盤PKを有する電子楽器において、各鍵盤ごとに単
音発音か複音発音かを検出するようにしているが、鍵盤
の数や種類はこれに限らない。また鍵盤ごとに検出する
のでなく、一つの鍵盤をいくつかの鍵域に分け、鍵域ご
とに単音発音か複音発音かを検出するようにしてもよ
い。さらに、これらを組合わせてもよい。
上記の実施例では平均律によるピッチから純正律によ
るピッチへとピッチ調整をしているが、他の音律を用い
てもよい。
和音検出手段は実施例のものに限らず、公知のどのよ
うな手段を用いてもよい。また上記の実施例では、指定
された鍵盤を含めて押鍵されたすべての鍵盤キーに基づ
いて和音を検出しているが、例えば単音発音の鍵盤以外
の鍵盤で押鍵されたキーに基づいて和音を検出してもよ
い。
上記の実施例では、ピッチ補正の基準となる音として
検出した和音の根音を用いているが、その他の音を基準
としてもよい。この場合は、例えば第6図のステップS5
2とS53の間にピッチ補正の基準となる音を検出するルー
チンを設け、第9図のステップS126で根音rootの代りに
この基準となる音を用いるようにすればよい。
[発明の効果] 以上説明したように、この発明によれば、複数鍵盤あ
るいは鍵域などの演奏情報入力手段を有する電子楽器に
おいて、メロディなどが演奏されている単音発音の演奏
情報入力手段での入力についてはピッチ調整をせず、そ
の他の複音発音の演奏情報入力手段での入力(例えば和
音)についてはピッチ調整を行うようにしているので、
注目しているメロディなどの音に対しては音律が一定と
なり、旋律の流れが音楽的に自然となる。また、和音に
関してはピッチ調整を行っているので、和音の響きがよ
くなる。
【図面の簡単な説明】
第1図は、この発明の一実施例に係る電子楽器のブロッ
ク構成図、 第2図は、この実施例の電子楽器の処理手順の概略フロ
ーチャート、 第3図は、この実施例の電子楽器のメインルーチンのフ
ローチャート、 第4図は、この実施例の電子楽器のキーイベントルーチ
ンのフローチャート、 第5図は、この実施例の電子楽器の発音コードリスト挿
入ルーチンのフローチャート、 第6図は、この実施例の電子楽器のピッチ処理ルーチン
のフローチャート、 第7図は、この実施例の電子楽器の和音検出ルーチンの
フローチャート、 第8図は、この実施例の電子楽器の第一ピッチ補正ルー
チンのフローチャート、 第9図は、この実施例の電子楽器の第二ピッチ補正ルー
チンのフローチャート、 第10図は、この実施例の電子楽器の絶対ピッチ決定ルー
チンのフローチャート、 第11図は、この実施例の電子楽器のキーオフ処理ルーチ
ンのフローチャート、 第12図は、この実施例の電子楽器の発音コードリスト削
除ルーチンのフローチャートである。 1:鍵盤、2:中央処理装置(CPU)、3:プログラムメモ
リ、4:パラメータメモリ、5:ワーキングメモリ、6:操作
スイッチ・LED、7:トーンジェネレータ、8:サウンドシ
ステム。
フロントページの続き (56)参考文献 特開 昭56−36697(JP,A) 特開 昭55−65996(JP,A) 特開 昭59−10998(JP,A)

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】演奏情報を入力する複数の演奏情報入力手
    段と、 これら複数の演奏情報入力手段のうち、単音発音される
    よう操作されている演奏情報入力手段と、複音発音され
    るよう操作されている演奏情報入力手段とを、検出する
    検出手段と、 この検出手段により単音発音と検出された演奏情報入力
    手段によって入力された単音発音の演奏情報に対しては
    ピッチ調整せず、一方この検出手段により複音発音と検
    出された演奏情報入力手段によって入力された複音発音
    の演奏情報に対してはピッチ調整を行って、それぞれ入
    力演奏情報に応じたピッチ情報を出力するピッチ調整手
    段と、 このピッチ調整手段から出力されるピッチ情報に基づい
    て楽音信号を形成する楽音信号形成手段と を具備することを特徴とする電子楽器。
JP2193882A 1990-07-24 1990-07-24 電子楽器 Expired - Fee Related JP2636477B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2193882A JP2636477B2 (ja) 1990-07-24 1990-07-24 電子楽器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2193882A JP2636477B2 (ja) 1990-07-24 1990-07-24 電子楽器

Publications (2)

Publication Number Publication Date
JPH04118698A JPH04118698A (ja) 1992-04-20
JP2636477B2 true JP2636477B2 (ja) 1997-07-30

Family

ID=16315307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2193882A Expired - Fee Related JP2636477B2 (ja) 1990-07-24 1990-07-24 電子楽器

Country Status (1)

Country Link
JP (1) JP2636477B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6119422B2 (ja) * 2013-05-23 2017-04-26 ヤマハ株式会社 情報処理装置及び楽器

Also Published As

Publication number Publication date
JPH04118698A (ja) 1992-04-20

Similar Documents

Publication Publication Date Title
US5612501A (en) Automatic accompaniment information producing apparatus
JP2900753B2 (ja) 自動伴奏装置
JP2636477B2 (ja) 電子楽器
US5319152A (en) Chord information output apparatus and automatic accompaniment apparatus
JPH04274497A (ja) 自動伴奏装置
US6380475B1 (en) Chord detection technique for electronic musical instrument
JPH04277797A (ja) 電子楽器
US5459281A (en) Electronic musical instrument having a chord detecting function
JP3147363B2 (ja) 楽音信号形成装置
KR930007833B1 (ko) 전자악기
JP3319390B2 (ja) 自動伴奏装置
JP2623955B2 (ja) 電子楽器
JP2640992B2 (ja) 電子楽器の発音指示装置及び発音指示方法
JP2856025B2 (ja) 自動伴奏装置
US5177312A (en) Electronic musical instrument having automatic ornamental effect
JP3054242B2 (ja) 自動伴奏装置
JP2513003B2 (ja) 電子楽器
JP3099388B2 (ja) 自動伴奏装置
JPH02173698A (ja) 電子楽器
JP3158918B2 (ja) 自動伴奏装置
JP3097382B2 (ja) 和音検出装置
JPH02310594A (ja) ポルタメント機能を有する電子楽器
JPS6342272B2 (ja)
JPH04360199A (ja) 自動演奏装置
JP3057721B2 (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: 19970311

LAPS Cancellation because of no payment of annual fees