JPH0635466A - 電子楽器 - Google Patents

電子楽器

Info

Publication number
JPH0635466A
JPH0635466A JP4215562A JP21556292A JPH0635466A JP H0635466 A JPH0635466 A JP H0635466A JP 4215562 A JP4215562 A JP 4215562A JP 21556292 A JP21556292 A JP 21556292A JP H0635466 A JPH0635466 A JP H0635466A
Authority
JP
Japan
Prior art keywords
data
membership function
rule
address
value
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.)
Pending
Application number
JP4215562A
Other languages
English (en)
Inventor
Yoshiyuki Murata
嘉行 村田
Yoshito Yamaguchi
善登 山口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP4215562A priority Critical patent/JPH0635466A/ja
Publication of JPH0635466A publication Critical patent/JPH0635466A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 ファジー推論を応用し、あいまいな入力パラ
メータに対して簡単な構成で、より自然擦弦楽器に近い
楽音を発生させる。 【構成】 擦弦の速度データを検出するとともに(ステ
ップS5)、擦弦の操作圧力データを検出し(ステップ
S9)、速度データのMSBの符号から押弓時、あるい
は引弓時を判断する(ステップS10)。次いで、押弓
時および引弓時のそれぞれについて操作速度、操作圧力
を入力パラメータとしてファジー推論演算を行い(ステ
ップS11、12)、音色混合比αおよび音量レベル係
数βを算出する(ステップS17)。これにより、引弓
時および押弓時における操作速度と操作圧力との微妙な
組み合せに従って、発生楽音の特性が微妙に変化して自
然擦弦楽器に近い楽音特性が得られる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ファジー推論を応用す
ることにより、バイオリン等のように弓により弦を擦る
ことにより発音する自然擦弦楽器と同様の微妙な楽音特
性を得ることが可能な電子楽器に関する。
【0002】
【従来の技術】近年、電子技術の急速な発展に伴い、電
子技術を用いて擦弦楽器を電子化することが種々行われ
ている。この種の電子化した従来の擦弦楽器としては、
例えば特開平2ー148097号公報に記載されたもの
が知られている。
【0003】この電子擦弦楽器では、弓で弦を擦る速度
(いわゆる操作速度で、以下、擦弦速度という)を検出
し、この擦弦速度に応じて発生されるべき楽音の音量レ
ベルを可変制御し、また弓を弦に押し付ける強さ(いわ
ゆる操作圧力で、以下、擦弦操作力という)を検出し、
この擦弦操作力に応じて楽音の音色を可変制御してい
る。
【0004】
【発明が解決しようとする課題】ところで、電子化した
従来の擦弦楽器にあっては、擦弦速度および擦弦操作力
の検出情報に基づき、楽音の特性を変化させる構成であ
るが、実際の楽音はこのような単純なものでなく、伝統
的な自然擦弦楽器の一種であるバイオリンの場合、擦弦
速度、擦弦圧力が微妙に絡み合っており、その音色、音
量の変化も極めて微妙に変化するため、このような要素
の組み合せに応じてきめ細かく自然擦弦楽器に近い楽音
特性を得ることができないという問題点があった。
【0005】また、自然擦弦楽器であるバイオリンの場
合、押弓時と引弓時とでは発生する楽音が微妙に変化
し、このような擦弦方向も考慮してきめ細かく、楽音の
特性を可変制御することは困難であった。
【0006】このような音色、音量などの微妙な変化は
人間の演奏感覚にもよるが、何れにしてもきめ細かく自
然擦弦楽器に近い楽音特性を得るという要求に対して、
例えばマイクロコンピュータを用いて通常の演算処理に
よって対処することも考えられるが、通常の演算でこれ
を行おうとすると、膨大な処理時間がかかるという欠点
がある。
【0007】例えば、音色が「少しソフトになる」、
「少しハードになる」などというあいまいな特性変化に
対応するような演算処理を行おうとすると、各要素の組
合せに関連すると思われる数多くの入力パラメータを用
いて複雑で、しかも大量の演算を行う必要があり、処理
数が飛躍的に多くなって現実的な電子楽器を実現するこ
とが困難(例えば、コスト高を招く)である。
【0008】そこで本発明は、ファジー推論を応用し、
あいまいな入力パラメータに対して簡単な構成で、より
自然擦弦楽器に近い楽音を発生させることのできる電子
楽器を提供することを目的としている。
【0009】
【課題を解決するための手段】上記目的達成のため、請
求項1記載の発明による電子楽器は、張設された複数の
弦からなり、擦弦操作が入力される擦弦入力部と、該擦
弦入力部に対する擦弦操作速度を検出する擦弦速度検出
手段と、前記擦弦入力部に対する擦弦操作力の大きさを
検出する擦弦操作力検出手段と、前記擦弦速度、擦弦操
作力を入力パラメータとして所定のファジールールに従
ってファジー推論演算を行うファジー推論手段と、該フ
ァジー推論手段の演算結果に基づいて発生すべき楽音パ
ラメータを可変制御して楽音の発音を指示する発音指示
手段と、を備えたことを特徴とする。
【0010】好ましい態様として、前記電子楽器は、さ
らに前記擦弦入力部に対する擦弦操作力の方向を検出す
る擦弦操作方向検出手段を設け、前記ファジー推論手段
は、さらに擦弦操作方向を入力パラメータに加えて前記
ファジー推論演算を行うことを特徴とする。
【0011】前記発音指示手段は、楽音の音色、音量の
うち少なくとも1つを、前記ファジー推論手段からの演
算結果に応じて可変制御し、楽音の発生を指示すること
を特徴とする。
【0012】前記電子楽器は、さらに前記発音指示手段
によって発音が指示された楽音を発生する楽音発生手段
を設けたことを特徴とする。
【0013】
【作用】本発明では、張設された弦が擦弦操作される
と、その擦弦操作速度および擦弦操作力の大きさが検出
され、これらを入力パラメータとするファジー推論によ
り、発生すべき楽音の特性(例えば、音色、音量)が可
変制御される。
【0014】したがって、擦弦時における操作速度と操
作力との微妙な組み合せに従って、発生楽音の特性が微
妙に変化して極めて自然擦弦楽器に近い楽音特性が得ら
れる。また、ファジー推論を応用することにより、演算
処理に必要な処理数が少なくなって、演算負担が軽減す
る。さらに、擦弦操作方向も入力パラメータに加えるこ
とにより、押弓時と引弓時とで発生楽音の特性がきめ細
かく微妙に制御され、より一層自然擦弦楽器に近い楽音
特性が得られる。
【0015】
【実施例】以下、図面を参照して本発明の実施例につい
て説明する。図1は本発明を適用した電子擦弦楽器の外
観を示す図である。図1において、この電子擦弦楽器
は、全体がバイオリン形状をした楽器本体1を備えてい
る。楽器本体1は、大きく分けてボディ部2、ネック部
3、ヘッド部4からなっている。
【0016】ボディ部2には、後述する擦弦操作検出部
5、サウンドシステムのスピーカ6が配置されている。
ネック部3のフィンガーボード内には、マトリクス状の
多数の音高指定スイッチからなる音高指定スイッチ群7
が設けられている。また、ネック部3のフィンガーボー
ド上には、4本の弦8が張設されており、これらの弦8
の各一端はヘッド部4に固定され、各他端は支持板9に
固定されている。4本の弦8は演奏者によって擦弦操作
が入力されるもので、擦弦入力部に相当する。
【0017】図2および図3は、この電子擦弦楽器の擦
弦操作検出部5の詳細を示す図である。これらの図に示
すように、擦弦操作検出部5はベース11を備えてお
り、ベース11はボディ部2上に設けられた支持板12
に対してねじ13によって取り付けられている。
【0018】ベース11の所定の4つの平面11aに
は、各弦8に対応する擦弦操作検出機構14がそれぞれ
設けられているが、同一機構であるので、図2において
1つだけ図示し、かつ図示した1つについて詳細に説明
する。
【0019】擦弦操作検出機構14は、発電機21、圧
力センサ22、ローラ23等からなっている。発電機2
1は、発電機ホルダー21Aの内部に収納固定されてお
り、この発電機ホルダー21Aは支持アーム24を介し
てベース11の上面に設けられた支持部材25の支持軸
26に上下方向に回動自在に支持されている。
【0020】発電機ホルダー21Aはスプリング21B
によって上方に付勢されているが、通常は、発電機ホル
ダー21Aに固着されたストッパ21Cの作用により所
定の上限位置に位置決めされている。また、発電機ホル
ダー21Aの下端には、発電機ホルダー21Aの所定以
上の下動を規制するための下限規制ピン21Dが固着さ
れている。
【0021】圧力センサ22は、発電機ホルダー21A
の下方におけるベース11の上面に設けられており、ス
プリング21Bの弾性力により上方に付勢されている発
電機ホルダー21Aがストッパ21Cにより所定の上限
位置に位置する状態では、発電機ホルダー21Aは圧力
センサ22の上面とただ単に接触し、圧力センサ22の
出力値はゼロ若しくはゼロとみなされるようになってい
る。
【0022】ローラ23は、ゴム材料等によって形成さ
れ、外周面にローレット23aを有する有頭円筒部31
と、この円筒部31の頭部内面中心部から円筒部31の
中心線に沿って延びるように片持ち状に突設された軸心
部32とからなっている。ローラ23の軸心部32には
発電機21の細長い回転軸33の先端側が埋設されてい
る。これにより、ローラ23は発電機21に片持ち状に
支持されている。
【0023】また、ベース11の所定の4つの平面11
aには、必要に応じて適宜の厚さの調整板34がねじ3
5によって取り付けられ、この調整板34の上面に発電
機21の支持部材25や圧力センサ22等を設けること
により、擦弦操作検出機構14のうち、特にローラ23
の高さ位置を調整することができるようになっている。
なお、発電機21の細長い回転軸33とローラ23の軸
心部32とを直接連結せずに、例えばコイルスプリング
を介して間接的に連結するようにしてもよい。
【0024】この電子擦弦楽器では、ローラ23が図示
しない弓によって擦弦操作されると、その擦弦速度、す
なわち弓の運弓速度に比例してローラ23が回転し、そ
の回転速度に応じて発電機21が回転駆動され、その出
力電圧値が変化する。発電機21の出力電圧は擦弦操作
速度に対応し、この擦弦操作速度をファジー推論の入力
パラメータの1つとして詳細を後述するように所定の楽
音の発生が開始されるとともに、発生中の楽音の音量レ
ベルが可変制御される。また、擦弦操作速度に対応する
発電機21の出力電圧の符号(正負)を判別して擦弦操
作の向き、すなわち押弓あるいは引弓の方向が判断さ
れ、同様にファジー推論の入力パラメータの1つに加え
られる。例えば、図中左回転のとき出力電圧の符号が負
となり、押弓時を判断するようになっている。
【0025】一方、ローラ23が弓によって押し付けら
れると、その押し付けの強さ、すなわち擦弦操作力に比
例してローラ23と共に発電機21がスプリング21B
の力に抗して下方向に変位し、その変位量に応じて圧力
センサ22が上方向から押圧され、それに伴って弾性変
形し、その圧力センサ22から出力される出力電圧値が
変化する。圧力センサ22の出力電圧は擦弦操作力に対
応し、この擦弦操作力も同様にファジー推論の入力パラ
メータの1つとなり、発生中の楽音の音色が可変制御さ
れる。
【0026】図4は、この電子擦弦楽器の回路の一例を
示すブロック図である。図4において、音高指定スイッ
チ群7からの信号は音高検出回路41に入力されてお
り、音高検出回路41は音高指定スイッチ群7に対する
演奏者の音高指定状態を検出し、音高指定信号としてC
PU42に出力する。なお、CPU42からは音高指定
スイッチ群7に対してコモン信号線42cが接続されて
おり、これにより複数の音高指定スイッチが順次スキャ
ンされるようになっている。
【0027】また、4つの圧力センサ22からなる各擦
弦操作力検出センサ(擦弦操作力検出手段)220の検
出信号は各A/D変換器43によってデジタル擦弦操作
力データに変換された後、CPU42に与えられる。さ
らに、4つの発電機21からなる各擦弦速度検出センサ
(擦弦速度検出手段および擦弦操作方向検出手段)21
0の検出信号は各A/D変換器44によってデジタル擦
弦速度データに変換された後、同様にCPU42に与え
られる。
【0028】CPU42は、この電子擦弦楽器全体の回
路動作を制御するもので、メンバーシップ関数テーブル
ROM61およびワーキングRAM62が外付けされて
いる。まず、楽音発生のための構成として、CPU42
は音高検出回路41から与えられた音高指定信号に基づ
いて第1の音源(楽音発生手段)45と、第2の音源
(楽音発生手段)46に対して音高は同じであるが、音
色の互いに異なる各所定の楽音波形の生成制御を行う。
【0029】また、本実施例の特徴としてCPU42は
音高検出回路41、A/D変換器43、44からの演奏
入力データを受け入れ、内部のROMに格納されている
所定のプログラムに基づき、擦弦速度、擦弦操作力、擦
弦操作方向を入力パラメータとして所定のファジールー
ルに従ってファジー推論を行い、その推論出力に対応し
て楽音の特性を制御するために必要な処理を行い、2系
統の音源45、46の出力側にそれぞれ配置された各乗
算器48、49に対して音色混合比α、(1−α)をそ
れぞれ出力するとともに、乗算器51に音量レベル係数
βを出力して、発生楽音の音色および音量をそれぞれ可
変制御する。なお、CPU42の処理は後述のフローチ
ャートによって示される。
【0030】乗算器48は、第1の音源45の出力(第
1の楽音信号)に対してCPU42から出力される音色
混合比(1−α)を乗算し、その乗算結果を加算器50
に出力する。また、乗算器49は、第2の音源46の出
力(第2の楽音信号)に対してCPU42から出力され
る音色混合比αを乗算し、その乗算結果を加算器50に
出力する。
【0031】乗算器48からの重み付けされた第1の楽
音信号と、乗算器49からの重み付けされた第2の楽音
信号とは、加算器50において加算され、この加算され
た楽音信号は乗算器51に出力される。乗算器51は加
算器50において加算された楽音信号に対して音量レベ
ル係数βを乗算し、サウンドシステム53に出力する。
サウンドシステム53は乗算器51の出力に応じて音
量、すなわち音量レベル係数βに応じた音量の楽音を出
力する。
【0032】メンバーシップ関数テーブルROM61は
ファジー推論において使用するメンバーシップ関数を表
すテーブルデータを記憶している。また、ワーキングR
AM62はCPU42が制御を実行する際にワーキング
エリアとして用いられるもので、例えばファジー推論で
用いる各種データや音高を示す音高データなどの情報を
一時的に記憶する。
【0033】上記CPU42は単独で発音指示手段を構
成する。また、CPU42、メンバーシップ関数テーブ
ルROM61およびワーキングRAM62は、全体とし
てファジー推論手段70を構成する。
【0034】次に、楽音特性制御のファジールールにつ
いて説明する。図5(a)、(b)は前件部のメンバー
シップ関数で、そのうち図5(a)は擦弦操作速度(以
下、単に操作速度という)に関するメンバーシップ関
数、図5(b)は擦弦操作圧力(以下、単に操作圧力と
いう)に関するメンバーシップ関数である。
【0035】また、図5(c)、(d)は後件部におけ
るファジー出力で、そのうち図5(c)は発生楽音の音
量に関するメンバーシップ関数、図5(d)は発生楽音
の音色に関するメンバーシップ関数である。
【0036】ここで、本実施例では引弓時および押弓時
とも同じメンバーシップ関数を用いている。ただし、同
じでなく、引弓時と押弓時とでメンバーシップ関数が異
なるようにしてもよい。そのようにすると、弓を擦る方
向によってよりきめ細かく微妙な楽音特性を可変制御す
ることが可能になる。
【0037】なお、各メンバーシップ関数におけるラベ
ルの意味は、次の通りである。前件部 SL:「擦弦の操作速度が小さい」 SM:「擦弦の操作速度が中程度である」 SH:「擦弦の操作速度が大きい」 PL:「擦弦の操作圧力が小さい」 PM:「擦弦の操作圧力が中程度である」 PH:「擦弦の操作圧力が大きい」
【0038】後件部 A1:「音量を小さくする」 A2:「音量をやや小さくする」 A3:「音量をやや大きくする」 A4:「音量を大きくする」 A5:「音量をかなり大きくする」 B1:「音色をソフトにする」 B2:「音色をややソフトにする」 B3:「音色をハードにする」 B4:「音色をかなりハードにする」
【0039】ファジィルールは、いわゆるIF、THE
N(もし、ならば)の形式で表現される。本実施例で
は、引弓時に対してルールA〜ルールIまでの9つのル
ールを採用し、押弓時に対してルールJ〜ルールPまで
の7つのルールを採用している。引弓時におけるルール
は、次の表1のように示される。
【0040】
【表1】
【0041】また、押弓時におけるルールは、次の表2
のように示される。
【0042】
【表2】
【0043】まず、表1を参照して引弓時のルールにつ
いて説明する。引弓時のルール ルールA:IF 操作圧力=PH AND 操作速度=
SH THEN ファジー出力=B4(音色かなりハード)
【0044】ファジィルールAは、「もし、操作圧力が
大きく、かつ操作速度が大きい場合には、音色をかなり
ハードにする。」という意味である。
【0045】 ルールB:IF 操作圧力=PH AND 操作速度=SM OR 操作圧力=PH AND 操作速度=SL OR 操作圧力=PM AND 操作速度=SH THEN ファジー出力=B3(音色ハード)
【0046】ファジィルールBは、「もし、操作圧力が
大きく、かつ操作速度が中程度である場合、 あるいは操作圧力が大きく、かつ操作速度が小さいある
場合、あるいは操作圧力が中程度で、かつ操作速度が大
きい場合には、音色をハードにする。」という意味であ
る。
【0047】 ルールC:IF 操作圧力=PM AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SH THEN ファジー出力=B2(音色ややソフト)
【0048】ファジィルールCは、「もし、操作圧力が
中程度で、かつ操作速度も中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が大きい場合には、音
色をややソフトにする。」という意味である。
【0049】 ルールD:IF 操作圧力=PM AND 操作速度=SL OR 操作圧力=PL AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SL THEN ファジー出力=B1(音色ソフト)
【0050】ファジィルールDは、「もし、操作圧力が
中程度で、かつ操作速度が小さい場合、あるいは操作圧
力が小さく、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が小さい場合には、
音色をソフトにする。」という意味である。
【0051】以上は、引弓時における音色に関するルー
ルであり、前件部のメンバーシップ関数に対する後件部
のファジー出力(音色)との関係をまとめると、次の表
3のように表される。
【0052】
【表3】
【0053】ルールE:IF 操作圧力=PH AND
操作速度=SH THEN ファジー出力=A5(音量かなり大きい)
【0054】ファジィルールEは、「もし、操作圧力が
大きく、かつ操作速度が大きい場合には、音量をかなり
大きくする。」という意味である。
【0055】 ルールF:IF 操作圧力=PM AND 操作速度=SH OR 操作圧力=PH AND 操作速度=SL OR 操作圧力=PH AND 操作速度=SH THEN ファジー出力=B4(音量大きい)
【0056】ファジィルールFは、「もし、操作圧力が
中程度で、かつ操作速度が大きい場合、あるいは操作圧
力が大きく、かつ操作速度が中程度である場合には、音
量を大きくする。」という意味である。
【0057】 ルールG:IF 操作圧力=PH AND 操作速度=SL OR 操作圧力=PM AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SH THEN ファジー出力=A3(音量やや大きい)
【0058】ファジィルールGは、「もし、操作圧力が
大きく、かつ操作速度が小さい場合、あるいは操作圧力
が中程度で、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が大きい場合には、
音量をやや大きくする。」という意味である。
【0059】 ルールH:IF 操作圧力=PM AND 操作速度=SL OR 操作圧力=PL AND 操作速度=SM THEN ファジー出力=A2(音量やや小さい)
【0060】ファジィルールHは、「もし、操作圧力が
中程度で、かつ操作速度が小さい場合、あるいは操作圧
力が小さく、かつ操作速度が中程度である場合には、音
量をやや小さくする。」という意味である。
【0061】ルールI:IF 操作圧力=PL AND
操作速度=SL THEN ファジー出力=A1(音量小さい)
【0062】ファジィルールIは、「もし、操作圧力が
小さく、かつ操作速度が小さい場合には、音量を小さく
する。」という意味である。
【0063】以上は、引弓時における音量に関するルー
ルであり、前件部のメンバーシップ関数に対する後件部
のファジー出力(音量)との関係をまとめると、次の表
4のように表される。
【0064】
【表4】
【0065】次に、表2を参照して押弓時のルールにつ
いて説明する。押弓時のルール ルールJ:IF 操作圧力=PH AND 操作速度=SH OR 操作圧力=PH AND 操作速度=SM OR 操作圧力=PM AND 操作速度=SH THEN ファジー出力=B3(音色ハード)
【0066】ファジィルールJは、「もし、操作圧力が
大きく、かつ操作速度が大きい場合、あるいは操作圧力
が大きく、かつ操作速度が中程度である場合、あるいは
操作圧力が中程度で、かつ操作速度が大きい場合には、
音色をハードにする。」という意味である。
【0067】 ルールK:IF 操作圧力=PH AND 操作速度=SL OR 操作圧力=PM AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SH THEN ファジー出力=B2(音色ややソフト)
【0068】ファジィルールKは、「もし、操作圧力が
大きく、かつ操作速度が小さい場合、あるいは操作圧力
が中程度で、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が大きい場合には、
音色をややソフトにする。」という意味である。
【0069】 ルールL:IF 操作圧力=PM AND 操作速度=SL OR 操作圧力=PL AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SL THEN ファジー出力=B1(音色ソフト)
【0070】ファジィルールLは、「もし、操作圧力が
中程度で、かつ操作速度が小さい場合、あるいは操作圧
力が小さく、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が小さい場合には、
音色をソフトにする。」という意味である。
【0071】以上は、押弓時における音色に関するルー
ルであり、前件部のメンバーシップ関数に対する後件部
のファジー出力(音色)との関係をまとめると、次の表
5のように表される。
【0072】
【表5】
【0073】ルールM:IF 操作圧力=PH AND
操作速度=SH THEN ファジー出力=A4(音量大きい)
【0074】ファジィルールMは、「もし、操作圧力が
大きく、かつ操作速度が大きい場合には、音量を大きく
する。」という意味である。
【0075】 ルールN:IF 操作圧力=PH AND 操作速度=SM OR 操作圧力=PH AND 操作速度=SL OR 操作圧力=PM AND 操作速度=SH THEN ファジー出力=A3(音量やや大きい)
【0076】ファジィルールNは、「もし、操作圧力が
大きく、かつ操作速度が中程度である場合、あるいは操
作圧力が中程度で、かつ操作速度が大きい場合には、音
量をやや大きくする。」という意味である。
【0077】 ルールO:IF 操作圧力=PH AND 操作速度=SL OR 操作圧力=PM AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SH THEN ファジー出力=A2(音量やや小さい)
【0078】ファジィルールOは、「もし、操作圧力が
大きく、かつ操作速度が小さい場合、あるいは操作圧力
が中程度で、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が大きい場合には、
音量をやや小さくする。」という意味である。
【0079】 ルールP:IF 操作圧力=PM AND 操作速度=SL OR 操作圧力=PL AND 操作速度=SM OR 操作圧力=PL AND 操作速度=SL THEN ファジー出力=A1(音量小さい)
【0080】ファジィルールPは、「もし、操作圧力が
中程度で、かつ操作速度が小さい場合、あるいは操作圧
力が小さく、かつ操作速度が中程度である場合、あるい
は操作圧力が小さく、かつ操作速度が小さい場合には、
音量を小さくする。」という意味である。
【0081】以上は、押弓時における音量に関するルー
ルであり、前件部のメンバーシップ関数に対する後件部
のファジー出力(音量)との関係をまとめると、次の表
6のように表される。
【0082】
【表6】
【0083】次に、本実施例の擦弦電子楽器の動作につ
いて説明する。メインプログラム 図6は楽音発生制御の処理を示すメインプログラムであ
る。この擦弦電子楽器の電源がオンすると、まずステッ
プS1でイニシャライズ処理を行う。これにより、例え
ば、CPU42のレジスタのリセット、ワーキングRA
M62のクリア、さらには後述のサブルーチンのイニシ
ャライズなどが行われる。
【0084】次いで、ステップS2で弦NO.に対応す
るポインタ(以下、弦ポインタという)Iを[1]にす
る。I=[1]という状態は弦NO.が[1]というこ
とで、第1弦に相当する。これは、第1弦から、順次、
時分割で第4弦までの擦弦状況をみていくためである。
弦ポインタIの値は、例えばCPU42のIレジスタに
記憶される。
【0085】次いで、ステップS3でI弦目の音高スイ
ッチ群7のデータを取り込む。今回のルーチンではI=
[1]であるから、第1弦に相当する音高スイッチから
のデータが取り込まれる。次いで、ステップS4で第1
弦に相当する音高スイッチからのデータに基づき、演奏
者の音高指定情報を検出する。音高指定情報は、例えば
キーナンバ(音階)に相当するものである。
【0086】次いで、ステップS5でI弦目に対応する
A/D変換器44から擦弦の速度データを検出する。今
回は第1弦に相当するA/D変換器44から速度データ
を検出することになる。次いで、ステップS6でI番目
のオンフラグがオン(オンフラグ=1)しているか否か
を判別する。オンフラグは擦弦が行われているか否か判
断するためのものであり、オンのとき擦弦され、オフの
とき擦弦されていないことを表す。
【0087】今回は第1弦に相当するオンフラグを判断
する。オンフラグは、例えば4ビットのレジスタに記憶
され、4つの各ビットがそれぞれ第1弦〜第4弦に対応
している。したがって、同レジスタの1ビット目の値
(例えば、[1]でオンフラグ=1)をみることによ
り、第1弦に相当するオンフラグが[1]であるか否か
が判断される。
【0088】オンフラグ=1でないときには前回のルー
チンで第1弦が擦弦操作されていないと判断し(最初の
ルーチンではもちろんオンフラグが立っていない)、今
回の擦弦操作状況をみるために、続くステップS7で第
1弦の擦弦速度データの絶対値を発音しきい値TH1と
比較する。発音しきい値TH1は発音を開始するか否を
判断するためのものである。
【0089】第1弦の擦弦速度データの絶対値が発音し
きい値TH1より小さい場合には、後述のステップS1
8に進んで弦ポインタIをインクリメントし、次の第2
弦目の処理に移行する。したがって、この場合に第1弦
に対応する発音は行われない。一方、第1弦の擦弦速度
データの絶対値が発音しきい値TH1以上である場合に
は、ステップS8に進んでI番目のオンフラグを[1]
にセットする。したがって、今回は第1弦のオンフラグ
=1となる。
【0090】次いで、ステップS9でI弦目に対応する
A/D変換器43から擦弦の操作圧力データを検出す
る。今回は第1弦に相当するA/D変換器43から操作
圧力データを検出することになる。次いで、ステップS
10で今回検出したI番目の速度データのMSB(最上
位ビット)が“1”であるか否を判別する。速度データ
は複数のビットでCPU42のレジスタに記憶されてお
り、そのうち最上位ビットの符号によって弓を押す、あ
るいは引くの何れかの状態が判別可能になっている。例
えば、MSBが“1”のとき速度が負で押弓時、MSB
が“0”のとき速度が正で引弓時に対応している。
【0091】MSBが“0”のときは引弓時と判断し、
ステップS11で引弓時のファジー推論演算を行う。一
方、MSBが“1”のときは押弓時と判断し、ステップ
S12で押弓時のファジー推論演算を行い、音色混合比
αおよび音量レベル係数βを算出する。ステップS11
あるいはステップS12のいずれかを経ると、次いでス
テップS16に進み、第1音源45および第2の46に
対して音高情報に基づく発音指示を出す。これにより、
発音が開始される。
【0092】また、ステップS17でファジー推論演算
結果に基づく音色混合比αおよび音量レベル係数βのデ
ータを乗算器48、49および乗算器51にそれぞれ送
出する。これにより、音量制御および音色制御が行われ
る。この場合、引弓時あるいは押弓時における操作速度
と操作圧力との微妙な組み合せに従って、発生楽音の特
性が微妙に変化して極めて自然擦弦楽器に近い楽音特性
が得られる。また、擦弦操作方向(押弓あるいは引弓の
方向)もファジー推論の入力パラメータに加えることに
より、押弓時と引弓時とで発生楽音の特性がきめ細かく
微妙に制御され、より一層自然擦弦楽器に近い楽音特性
が得られる。
【0093】次いで、ステップS18で前述したように
弦ポインタIをインクリメントし、続くステップS19
で弦ポインタIが[4]未満であるか否を判別する。I
≦4のときはステップS3に戻る。これにより、次の第
2弦目に対して上記同様の処理が実行され、以後、同様
に第3弦目、第4弦目に対しても上記同様の処理が実行
される。そして、弦ポインタIが[4]を超えると、ス
テップS2に戻り、再び第1弦目に対応する処理を始め
る。このようにして、第1弦目から、順次、時分割で処
理が実行される。
【0094】一方、ステップS6でオンフラグ=1のと
きは、前回のルーチンで既に第1弦が擦弦操作されてい
ると判断し、ステップS13に進み、第1弦の擦弦速度
データの絶対値を消音しきい値TH2と比較する。消音
しきい値TH2は消音を行うか否を判断するためのもの
である。
【0095】第1弦の擦弦速度データの絶対値が消音し
きい値TH2以上のときには、消音する必要がないと判
断してステップS9に進む。したがって、同様に発音が
継続する。一方、第1弦の擦弦速度データの絶対値が消
音しきい値TH2未満になると、ステップS14に進ん
でI番目のオンフラグを[0]にクリアし、ステップS
15で第1音源45および第2の46に対して消音を指
示する。これにより、第1弦の楽音の発生が停止する。
次いで、ステップS18に進み、弦ポインタIをインク
リメントする。したがって、次回のルーチンでは第2弦
に対応する処理が実行される。
【0096】引弓時ファジー推論処理 図7はメインプログラムのステップS11における引弓
時のファジー推論演算処理のサブルーチンを示すフロー
チャートである。まず、ステップS21で弦8に対する
操作圧力および操作速度に基づいて前述したファジール
ールAの演算を行う。
【0097】同様に、ステップS22、ステップS2
3、ステップS24では操作圧力および操作速度に基づ
いてそれぞれ前述したファジールールB、ファジールー
ルC、ファジールールDの演算を行う。これらファジー
ルールA、B、C、Dの詳しい処理内容は後述のサブル
ーチンで説明する。これにより、ファジー推論における
音色に関する前件部の処理が行われ、各メンバーシップ
関数に対する適合度が求められる。
【0098】次いで、ステップS25で上記ルール演算
によって得られたデータの最大値をとる最大値演算処理
(すなわち、MAX演算=OR処理)を行うとともに、
ステップS26でこのデータの重心計算を行って脱ファ
ジー化する。これにより、ファジー推論における引弓時
の後件部処理が行われて、音色を可変制御するパラメー
タ、すなわち音色混合比αが求められ、その内容は表3
で表されるものとなる。なお、最大値演算および重心計
算の詳しい処理内容は後述のサブルーチンで説明する。
【0099】次いで、ステップS27に進み、弦8に対
する操作圧力および操作速度に基づいて前述したファジ
ールールEの演算を行う。同様に、ステップS28、ス
テップS29、ステップS30、ステップS31では操
作圧力および操作速度に基づいてそれぞれ前述したファ
ジールールF、G、H、Iの演算を行う。これらファジ
ールールF、G、H、Iの詳しい処理内容は後述のサブ
ルーチンで説明する。これにより、ファジー推論におけ
る音量に関する前件部の処理が行われ、各メンバーシッ
プ関数に対する適合度が求められる。
【0100】次いで、ステップS32で上記ルール演算
によって得られたデータの最大値をとる最大値演算処理
(すなわち、MAX演算=OR処理)を行うとともに、
ステップS33でこのデータの重心計算を行って脱ファ
ジー化する。これにより、ファジー推論における引弓時
の後件部処理が行われて、音量を可変制御、ファジー推
論における引弓時の後件部処理が行われて、音色を可変
制御するパラメータ、すなわち音色混合比αが求めら
れ、その内容は表3で表されるものとなる。なお、最大
値演算および重心計算の詳しい処理内容は後述のサブル
ーチンで説明する。
【0101】次いで、ステップS27に進み、弦8に対
する操作圧力および操作速度に基づいて前述したファジ
ールールEの演算を行う。同様に、ステップS28、ス
テップS29、ステップS30、ステップS31では操
作圧力および操作速度に基づいてそれぞれ前述したファ
ジールールF、G、H、Iの演算を行う。これらファジ
ールールF、G、H、Iの詳しい処理内容は後述のサブ
ルーチンで説明する。これにより、ファジー推論におけ
る音量に関する前件部の処理が行われ、各メンバーシッ
プ関数に対する適合度が求められる。
【0102】次いで、ステップS32で上記ルール演算
によって得られたデータの最大値をとる最大値演算処理
(すなわち、MAX演算=OR処理)を行うとともに、
ステップS33でこのデータの重心計算を行って脱ファ
ジー化する。これにより、ファジー推論における引弓時
の後件部処理が行われて、音量を可変制御するパラメー
タ、すなわち音量レベル係数βが求められ、その内容は
表4で表されるものとなる。なお、最大値演算および重
心計算の詳しい処理内容は後述のサブルーチンで説明す
る。
【0103】押弓時ファジー推論処理 図8はメインプログラムのステップS12における押弓
時のファジー推論演算処理のサブルーチンを示すフロー
チャートである。まず、ステップS41で弦8に対する
操作圧力および操作速度に基づいて前述したファジール
ールJの演算を行う。
【0104】同様に、ステップS42、ステップS43
では操作圧力および操作速度に基づいてそれぞれ前述し
たファジールールK、ファジールールLの演算を行う。
これらファジールールJ、K、Lの詳しい処理内容は後
述のサブルーチンで説明する。これにより、ファジー推
論における音色に関する前件部の処理が行われ、各メン
バーシップ関数に対する適合度が求められる。
【0105】次いで、ステップS44で上記ルール演算
によって得られたデータの最大値をとる最大値演算処理
(すなわち、MAX演算=OR処理)を行うとともに、
ステップS45でこのデータの重心計算を行って脱ファ
ジー化する。これにより、ファジー推論における押弓時
の後件部処理が行われて、音色を可変制御するパラメー
タ、すなわち音色混合比αが求められ、その内容は表5
で表されるものとなる。なお、最大値演算および重心計
算の詳しい処理内容は後述のサブルーチンで説明する。
【0106】次いで、ステップS46に進み、弦8に対
する操作圧力および操作速度に基づいて前述したファジ
ールールMの演算を行う。同様に、ステップS47、ス
テップS48、ステップS49では操作圧力および操作
速度に基づいてそれぞれ前述したファジールールN、
O、Pの演算を行う。これらファジールールM、N、
O、Pの詳しい処理内容は後述のサブルーチンで説明す
る。これにより、ファジー推論における音量に関する前
件部の処理が行われ、各メンバーシップ関数に対する適
合度が求められる。
【0107】次いで、ステップS50で上記ルール演算
によって得られたデータの最大値をとる最大値演算処理
(すなわち、MAX演算=OR処理)を行うとともに、
ステップS51でこのデータの重心計算を行って脱ファ
ジー化する。これにより、ファジー推論における押弓時
の後件部処理が行われて、音量を可変制御するパラメー
タ、すなわち音量レベル係数βが求められ、その内容は
表6で表されるものとなる。なお、最大値演算および重
心計算の詳しい処理内容は後述のサブルーチンで説明す
る。
【0108】次に、引弓時のファジー推論演算処理の各
ステップにおける詳細なサブルーチンの内容を順次説明
していく。ファジールールA演算処理 図9はファジールールA演算処理(ステップS21)の
サブルーチンを示すフローチャートである。まず、ステ
ップS61で操作圧力の値をアドレスとして、メンバー
シップ関数テーブルROM61における「操作圧力が大
きい」というメンバーシップ関数が格納されているPH
テーブルからデータ(前件部データ)Daを読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PHの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0109】すなわち、データDaは操作圧力という入
力値に対してルールAが示した適合度である。データD
aは、CPU42内の同名のレジスタDaに格納され、
これは後述のデータDbについても同様である。
【0110】同様に、ステップS62で操作速度の値を
アドレスとして、メンバーシップ関数テーブルROM6
1における「操作速度が大きい」というメンバーシップ
関数が格納されているSHテーブルからデータ(前件部
データ)Dbを読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールAが示
した適合度である。
【0111】次いで、ステップS63でデータDaがデ
ータDb以上であるか否かを判別し、Da≧Dbのとき
はステップS64に進んで、値の小さい方をデータDと
して採用する。このケースではD=Dbとなる。
【0112】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールAが示す判断
として採用される。一方、Da<Dbのときはステップ
S65に進んで、D=Daを採用する。
【0113】このように、ルールAに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールAの前件部に対する適合度が求められる。
【0114】次いで、ステップS66でアドレスポイン
タiを[0]にリセットし、ステップS67でアドレス
ポインタiが終了アドレスに等しいか否か判別する。終
了アドレスでなければ、続くステップS68でiをアド
レスとしてメンバーシップ関数テーブルROM61の
「音色がかなりハード」というメンバーシップ関数が格
納されているB4テーブルからデータ(後件部データ)
Eを読み出す。この場合のデータは、図5(d)に示す
メンバーシップ関数B4の適合度に相当する。データE
は同名のレジスタEに格納される。
【0115】次いで、ステップS69でデータDとデー
タEを比較し、D≧EのときはステップS70に進んで
iをアドレスとしてワーキングRAM62内のPaレジ
スタにデータEの内容を書き込む。一方、D<Eのとき
はステップS71に進んで同じくiをアドレスとしてワ
ーキングRAM61内のPaレジスタにデータDを書き
込む。このように、小さい方の値が採用されてメンバー
シップ関数B4をカットする処理が行われる。
【0116】この処理は、後件部たるメンバーシップ関
数B4を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0117】次いで、ステップS72でアドレスポイン
タiを[1]だけインクリメントし、その後、ステップ
S67に戻る。そして、ステップS67でアドレスポイ
ンタiが終了アドレスに等しくなるまで、同様の処理を
繰り返し、アドレスポインタiが終了アドレスに等しく
なると、引弓時のファジー推論演算処理にリターンす
る。
【0118】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B4
をすべてサーチすることになる。これにより、メンバー
シップ関数B4の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0119】このようにして、操作圧力および操作速度
に基づいてファジールールAの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が大きい場合には、音
色をかなりハードにする。」という処理に対してどの程
度適合しているかが算出される。すなわち、音色をかな
りハードにするというファジー操作量が、頭切りしたメ
ンバーシップ関数B4の大きさとして求められる。
【0120】ファジールールB演算処理 図10、図11はファジールールB演算処理(ステップ
S22)のサブルーチンを示すフローチャートである。
まず、ステップS81で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が大きい」というメンバーシップ関数が格納
されているPHテーブルからデータ(前件部データ)D
aを同名のレジスタに読み出す。この場合のデータは、
図5(b)に示すメンバーシップ関数PHの適合度(グ
レード)に相当し、0〜1の範囲の値である。
【0121】すなわち、データDaは操作圧力という入
力値に対してルールBが示した適合度である。データD
aは、CPU42内の同名のレジスタDaに格納され、
これは後述のデータDbについても同様である。
【0122】同様に、ステップS82で操作速度の値を
アドレスとして、メンバーシップ関数テーブルROM6
1における「操作速度が中程度である」というメンバー
シップ関数が格納されているSMテーブルからデータ
(前件部データ)Dbを同名のレジスタに読み出す。こ
の場合のデータは、図5(a)に示すメンバーシップ関
数SMの適合度(グレード)に相当し、0〜1の範囲の
値である。すなわち、データDbは操作速度という入力
値に対してルールBが示した適合度である。
【0123】次いで、ステップS83でデータDaがデ
ータDb以上であるか否かを判別し、Da≧Dbのとき
はステップS84に進んで、値の小さい方をデータD1
として採用する。このケースではD1=Dbとなる。
【0124】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールBが示す判断
として採用される。一方、Da<Dbのときはステップ
S85に進んで、D1=Daを採用する。
【0125】このように、ルールBに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールBの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が中程度である場合には、音色をハードにする。」
という第1の前件部に対する適合度が求められる。
【0126】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS86で操作圧力の値
をアドレスとして、メンバーシップ関数テーブルROM
61における「操作圧力が大きい」というメンバーシッ
プ関数が格納されているPHテーブルからデータ(前件
部データ)Daを同名のレジスタに読み出す。この場合
のデータは、図5(b)に示すメンバーシップ関数PH
の適合度(グレード)に相当し、0〜1の範囲の値であ
る。
【0127】すなわち、データDaは操作圧力という入
力値に対してルールBが示した適合度である。同様に、
ステップS87で操作速度の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作速度
が小さい」というメンバーシップ関数が格納されている
SLテーブルからデータ(前件部データ)Dbを同名の
レジスタに読み出す。この場合のデータは、図5(a)
に示すメンバーシップ関数SLの適合度(グレード)に
相当し、0〜1の範囲の値である。すなわち、データD
bは操作速度という入力値に対してルールBが示した適
合度である。
【0128】次いで、ステップS88でデータDaがデ
ータDb以上であるか否かを判別し、Da≧Dbのとき
はステップS89に進んで、値の小さい方をデータD2
として採用する。このケースではD2=Dbとなる。
【0129】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールBが示す判断
として採用される。一方、Da<Dbのときはステップ
S90に進んで、D2=Daを採用する。
【0130】このように、ルールBに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールBの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が小さい場合には、音色をハードにする。」という
第2の前件部に対する適合度が求められる。
【0131】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS91で操作圧力の値
をアドレスとして、メンバーシップ関数テーブルROM
61における「操作圧力が中程度である」というメンバ
ーシップ関数が格納されているPMテーブルからデータ
(前件部データ)Daを同名のレジスタに読み出す。こ
の場合のデータは、図5(b)に示すメンバーシップ関
数PMの適合度(グレード)に相当し、0〜1の範囲の
値である。
【0132】すなわち、データDaは操作圧力という入
力値に対してルールBが示した適合度である。同様に、
ステップS92で操作速度の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作速度
が大きい」というメンバーシップ関数が格納されている
SHテーブルからデータ(前件部データ)Dbを同名の
レジスタに読み出す。この場合のデータは、図5(a)
に示すメンバーシップ関数SHの適合度(グレード)に
相当し、0〜1の範囲の値である。すなわち、データD
bは操作速度という入力値に対してルールBが示した適
合度である。
【0133】次いで、図10に移り、ステップS93で
データDaがデータDb以上であるか否かを判別し、D
a≧DbのときはステップS94に進んで、値の小さい
方をデータD3として採用する。このケースではD3=
Dbとなる。
【0134】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールBが示す判断
として採用される。一方、Da<Dbのときはステップ
S95に進んで、D3=Daを採用する。
【0135】このように、ルールBに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールBの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が大きい場合には、音色をハードにする。」とい
う第3の前件部に対する適合度が求められる。
【0136】次いで、ステップS96に進んで上述した
前件部への適合度データD1〜D3のうちの最大値を判
別する。そして、データD1〜D3の最大値判別結果に
応じてそれぞれステップS97〜ステップS99の何れ
かへ進む。
【0137】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0138】データD1が最大であるときはステップS
97に進んで前述した3つの前件部の推論結果を統合し
た前件部データDとしてD1を採用し、データD2が最
大であるときはステップS98に進んで統合前件部デー
タDとしてD2を採用し、さらにデータD3が最大であ
るときはステップS99に進んで統合前件部データDと
してD3を採用する。
【0139】このように、統合前件部データDを得るこ
とで、ルールBに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールBの前
件部に対する適合度が求められる。
【0140】ステップS97〜ステップS99の何れか
のステップを経ると、次いでステップS100でアドレ
スポインタiを[0]にリセットし、ステップS101
でアドレスポインタiが終了アドレスに等しいか否か判
別する。終了アドレスでなければ、続くステップS10
2でiをアドレスとしてメンバーシップ関数テーブルR
OM61の「音色がハード」というメンバーシップ関数
が格納されているB3テーブルからデータ(後件部デー
タ)Eを同名のレジスタに読み出す。この場合のデータ
は、図5(d)に示すメンバーシップ関数B3の適合度
に相当する。
【0141】次いで、ステップS103でデータDとデ
ータEを比較し、D≧EのときはステップS104に進
んでiをアドレスとしてワーキングRAM62内のPb
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS105に進んで同じくiをアドレスと
してワーキングRAM61内のPbレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数B3をカットする処理が行われ
る。
【0142】この処理は、後件部たるメンバーシップ関
数B3を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0143】次いで、ステップS106でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS101に戻る。そして、ステップS101でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0144】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B3
をすべてサーチすることになる。これにより、メンバー
シップ関数B3の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0145】このようにして、操作圧力および操作速度
に基づいてファジールールBの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が中程度である場合、
あるいは操作圧力が大きく、かつ操作速度が小さいある
場合、あるいは操作圧力が中程度で、かつ操作速度が大
きい場合には、音色をハードにする。」という処理に対
してどの程度適合しているかが算出される。すなわち、
音色をハードにするというファジー操作量が、頭切りし
たメンバーシップ関数B3の大きさとして求められる。
【0146】ファジールールC演算処理 図12はファジールールC演算処理(ステップS23)
のサブルーチンを示すフローチャートである。まず、ス
テップS111で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が中程度である」というメンバーシップ関数が格納され
ているPMテーブルからデータ(前件部データ)Daを
同名のレジスタに読み出す。この場合のデータは、図5
(b)に示すメンバーシップ関数PMの適合度(グレー
ド)に相当し、0〜1の範囲の値である。
【0147】すなわち、データDaは操作圧力という入
力値に対してルールCが示した適合度である。同様に、
ステップS112で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールCが示
した適合度である。
【0148】次いで、ステップS113でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS114に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0149】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールCが示す判断
として採用される。一方、Da<Dbのときはステップ
S115に進んで、D1=Daを採用する。
【0150】このように、ルールCに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールCの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度も中程度である場合には、音色をややソフトにす
る。」という第1の前件部に対する適合度が求められ
る。
【0151】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS116で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0152】すなわち、データDaは操作圧力という入
力値に対してルールCが示した適合度である。同様に、
ステップS117で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールCが示
した適合度である。
【0153】次いで、ステップS118でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS119に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0154】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールCが示す判断
として採用される。一方、Da<Dbのときはステップ
S120に進んで、D2=Daを採用する。
【0155】このように、ルールCに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールCの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が大きい場合には、音色をややソフトにする。」と
いう第2の前件部に対する適合度が求められる。
【0156】次いで、ステップS121に進み、上記各
データD1、D2のうちの最大値を判別する。このよう
な最大値判別を行うのは、前述した2つの前件部の推論
結果を統合するために論理和(OR論理)をとる必要が
あるからで、いわゆる「MAXをとる」という処理に相
当するものである。
【0157】データD1が大きいときはステップS12
2に進んで、前述した2つの前件部の推論結果を統合し
た前件部データDとしてD1を採用し、データD2が大
きいときはステップS123に進んで、統合前件部デー
タDとしてD2を採用する。このように統合前件部デー
タDを得ることで、ルールCに対してその時点での2つ
の入力値(操作圧力および操作速度)が判断され、ルー
ルCの前件部に対する適合度が求められる。
【0158】次いで、ステップS124でアドレスポイ
ンタiを[0]にリセットし、ステップS125でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。
【0159】終了アドレスでなければ、続くステップS
126でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色をややソフトにする」というメン
バーシップ関数が格納されているB2テーブルからデー
タ(後件部データ)Eを読み出す。この場合のデータ
は、図5(d)に示すメンバーシップ関数B2の適合度
に相当する。データEは、例えばCPU42内の同名の
レジスタEに格納される。
【0160】次いで、ステップS127でデータDとデ
ータEを比較し、D≧EのときはステップS128に進
んでiをアドレスとしてワーキングRAM62内のPc
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS129に進んで同じくiをアドレスと
してワーキングRAM62内のPcレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数B2をカットする処理が行われ
る。
【0161】この処理は、後件部たるメンバーシップ関
数B2を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0162】次いで、ステップS130でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS125に戻る。そして、ステップS125でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0163】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B2
をすべてサーチすることになる。これにより、メンバー
シップ関数B2の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0164】このようにして、操作圧力および操作速度
に基づいてファジールールCの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度も中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が大きい
場合には、音色をややソフトにする。」という処理に対
してどの程度適合しているかが算出される。すなわち、
音色をややソフトにするというファジー操作量が、頭切
りしたメンバーシップ関数B2の大きさとして求められ
る。
【0165】ファジールールD演算処理 図13、図14はファジールールD演算処理(ステップ
S24)のサブルーチンを示すフローチャートである。
まず、ステップS141で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が中程度である」というメンバーシップ関数
が格納されているPMテーブルからデータ(前件部デー
タ)Daを同名のレジスタに読み出す。この場合のデー
タは、図5(b)に示すメンバーシップ関数PMの適合
度(グレード)に相当し、0〜1の範囲の値である。
【0166】すなわち、データDaは操作圧力という入
力値に対してルールDが示した適合度である。データD
aは、CPU42内の同名のレジスタDaに格納され、
これは後述のデータDbについても同様である。
【0167】同様に、ステップS142で操作速度の値
をアドレスとして、メンバーシップ関数テーブルROM
61における「操作速度が小さい」というメンバーシッ
プ関数が格納されているSLテーブルからデータ(前件
部データ)Dbを同名のレジスタに読み出す。この場合
のデータは、図5(a)に示すメンバーシップ関数SL
の適合度(グレード)に相当し、0〜1の範囲の値であ
る。すなわち、データDbは操作速度という入力値に対
してルールDが示した適合度である。
【0168】次いで、ステップS143でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS144に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0169】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールDが示す判断
として採用される。一方、Da<Dbのときはステップ
S145に進んで、D1=Daを採用する。
【0170】このように、ルールDに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールDの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が小さい場合、には、音色をソフトにする。」と
いう第1の前件部に対する適合度が求められる。
【0171】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS146で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0172】すなわち、データDaは操作圧力という入
力値に対してルールDが示した適合度である。同様に、
ステップS147で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールDが
示した適合度である。
【0173】次いで、ステップS148でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS149に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0174】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールDが示す判断
として採用される。一方、Da<Dbのときはステップ
S150に進んで、D2=Daを採用する。
【0175】このように、ルールDに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールDの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が中程度である場合には、音色をソフトにする。」
という第2の前件部に対する適合度が求められる。
【0176】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS151で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0177】すなわち、データDaは操作圧力という入
力値に対してルールDが示した適合度である。同様に、
ステップS152で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールDが示
した適合度である。
【0178】次いで、図14に移り、ステップS153
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS154に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0179】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールDが示す判断
として採用される。一方、Da<Dbのときはステップ
S155に進んで、D3=Daを採用する。
【0180】このように、ルールDに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールDの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が小さい場合には、音色をソフトにする。」という
第3の前件部に対する適合度が求められる。
【0181】次いで、ステップS156に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS157〜ステップS159
の何れかへ進む。
【0182】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0183】データD1が最大であるときはステップS
157に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS158に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS159に進んで統合前件部デー
タDとしてD3を採用する。
【0184】このように、統合前件部データDを得るこ
とで、ルールDに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールDの前
件部に対する適合度が求められる。
【0185】ステップS157〜ステップS159の何
れかのステップを経ると、次いでステップS160でア
ドレスポインタiを[0]にリセットし、ステップS1
61でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
162でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色がソフト」というメンバーシップ
関数が格納されているB1テーブルからデータ(後件部
データ)Eを同名のレジスタに読み出す。この場合のデ
ータは、図5(d)に示すメンバーシップ関数B1の適
合度に相当する。
【0186】次いで、ステップS163でデータDとデ
ータEを比較し、D≧EのときはステップS164に進
んでiをアドレスとしてワーキングRAM62内のPd
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS165に進んで同じくiをアドレスと
してワーキングRAM61内のPdレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数B1をカットする処理が行われ
る。
【0187】この処理は、後件部たるメンバーシップ関
数B1を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0188】次いで、ステップS166でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS161に戻る。そして、ステップS161でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0189】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B1
をすべてサーチすることになる。これにより、メンバー
シップ関数B1の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0190】このようにして、操作圧力および操作速度
に基づいてファジールールDの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度が小さい場合、ある
いは操作圧力が小さく、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が小さい
場合には、音色をソフトにする。」という処理に対して
どの程度適合しているかが算出される。すなわち、音色
をソフトにするというファジー操作量が、頭切りしたメ
ンバーシップ関数B1の大きさとして求められる。
【0191】最大値演算処理 図15は最大値演算処理(ステップS25)のサブルー
チンを示すフローチャートである。まず、ステップS1
71でアドレスポインタiを[0]にリセットし、ステ
ップS172でアドレスポインタiをアドレスとしてワ
ーキングRAM62内のPaメモリからデータQ1を同
名のレジスタに読み出す。
【0192】データQ1は、ファジールールAについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が大きい場合には、音色をかなりハ
ードにする。」という処理に対してどの程度適合してい
るかを算出して頭切りしたメンバーシップ関数B4に対
応する。
【0193】また、ステップS173でアドレスポイン
タiをアドレスとしてワーキングRAM62内のPbメ
モリからデータQ2を同名のレジスタに読み出す。
【0194】データQ2は、ファジールールBについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が中程度である場合、あるいは操作
圧力が大きく、かつ操作速度が小さい場合、あるいは操
作圧力が中程度で、かつ操作速度が大きい場合には、音
色をハードにする。」という処理に対してどの程度適合
しているかを算出して頭切りしたメンバーシップ関数B
3に対応する。
【0195】さらに、ステップS174で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPcメモリからデータQ3を同名のレジスタに読み出
す。
【0196】データQ3は、ファジールールCについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度も中程度である場合、あるいは操
作圧力が小さく、かつ操作速度が大きい場合には、音色
をややソフトにする。」という処理に対してどの程度適
合しているかを算出して頭切りしたメンバーシップ関数
B2に対応する。
【0197】次いで、ステップS175で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPdメモリからデータQ4を同名のレジスタに読み出
す。
【0198】データQ4は、ファジールールDについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度が小さい場合、あるいは操作圧力
が小さく、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が小さい場合には、音
色をソフトにする。」という処理に対してどの程度適合
しているかを算出して頭切りしたメンバーシップ関数B
1に対応する。
【0199】次いで、ステップS176で上記各データ
Q1〜Q4のうちいずれが最大であるか最大値を判別す
る。そして、データQ1〜Q4の最大値判別結果に応じ
てそれぞれステップS177、ステップS178、ステ
ップS179、ステップS180に進む。例えば、デー
タQ1が最大であるときは、ステップS177に進む。
以下、同様にして他のデータが最大であるときには、対
応するステップに進む。
【0200】このような最大値判別を行っているのは、
各ファジールールA〜D毎の推論結果を統合するために
論理和(OR論理)をとる必要があるからで、いわゆる
「MAXをとる」という処理に相当するものである。
【0201】具体的には、例えばある瞬間の擦弦演奏状
態がファジールールAからファジールールDまでの、ど
のルールに影響されるのか、少しでも影響されるなら、
それは音色変化の判断に反映しておきたいという要求に
答えるもので、これが「OR論理」の関係の基本の考え
方である。そして、この考え方を集合論では「和をと
る」としており、本実施例では、どれかひとつでも影響
がある限り、考察の対象にするとして上記処理が実行さ
れる。
【0202】さて、ステップS177ではアドレスポイ
ンタiをアドレスとしてワーキングRAM62内のP1
メモリにデータQ1を書き込む。これにより、今回のア
ドレスポインタi(最初のルーチンではi=0)の値に
よって指定されるファジールールAの演算結果である頭
切りしたメンバーシップ関数B4の一部がP1メモリに
書き込まれる。
【0203】なお、後述のように、アドレスポインタi
を終了アドレスまでインクリメントすることにより、頭
切りされたメンバーシップ関数B4がすべてサーチされ
てP1メモリに書き込まれることになる。
【0204】ステップS178ではアドレスポインタi
をアドレスとしてワーキングRAM62内のP1メモリ
にデータQ2を書き込む。これにより、今回のアドレス
ポインタiの値によって指定されるファジールールBの
演算結果である頭切りしたメンバーシップ関数B3の一
部がP1メモリに書き込まれる。
【0205】同様に、ステップS179ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
1メモリにデータQ3を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールCの演算結果である頭切りしたメンバーシップ関数
B2の一部がP1メモリに書き込まれる。
【0206】また、同様にステップS180ではアドレ
スポインタiをアドレスとしてワーキングRAM62内
のP1メモリにデータQ4を書き込む。これにより、今
回のアドレスポインタiの値によって指定されるファジ
ールールDの演算結果である頭切りしたメンバーシップ
関数B1の一部がP1メモリに書き込まれる。
【0207】次いで、ステップS181でアドレスポイ
ンタiが終了アドレスに等しいか否か判別する。終了ア
ドレスでなければ、続くステップS182でアドレスポ
インタiを[1]だけインクリメントし、その後、ステ
ップS172に戻る。そして、ステップS181でアド
レスポインタiが終了アドレスに等しくなるまで、上記
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0208】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、頭切りされた各メンバー
シップ関数B4、B3、B2、B1がすべてサーチされ
てP1メモリにデータQ1〜Q4として書き込まれる。
【0209】このようにして、各ファジールールA〜D
毎の推論結果を統合するために論理和をとる(「MAX
をとる」)処理が実行され、頭切りされた各メンバーシ
ップ関数B4、B3、B2、B1がOR合成される。す
なわち、MAX合成処理によって各ファジールールA〜
D毎の推論結果が重ね合わせられて合成出力が生成され
る。
【0210】重心計算処理 図16は重心計算処理(ステップS26)のサブルーチ
ンを示すフローチャートである。まず、ステップS19
1でアドレスポインタiを[0]にリセットするととも
に、面積レジスタareaおよび重心レジスタhafを
同様に[0]にリセットする。面積レジスタareaは
重心計算に必要な面積areaのデータを格納するもの
で、重心レジスタhafは重心計算に必要な重心値ha
fを格納するものである。
【0211】次いで、ステップS192でアドレスポイ
ンタiをアドレスとしてワーキングRAM62内のP1
メモリからデータD4を読み出す。データD4は、前述
の最大値演算処理によって頭切りされた後件部の各メン
バーシップ関数B4、B3、B2、B1をOR合成した
ものの一部(iをアドレスとして指定された部分)で、
言い換えると、MAX合成処理によって各ファジールー
ルA〜D毎の推論結果が重ね合わせられた合成出力デー
タ(後に、OR合成関数として表す)の一部である。
【0212】今回は、i(最初のルーチンではi=0)
をアドレスとしてP1メモリから合成出力データの一部
を読み出したことになる。なお、後述のように、アドレ
スポインタiを終了アドレスまでインクリメントするこ
とにより、合成出力データがすべてサーチされて読み出
されることになる。
【0213】すなわち、続くステップS193では面積
レジスタareaの値を、今回読み出した合成出力デー
タD4だけ加算して面積areaの積算値を算出する。
【0214】次いで、ステップS194でアドレスポイ
ンタiが終了アドレスに等しいか否か判別する。終了ア
ドレスでなければ、続くステップS195でアドレスポ
インタiを[1]だけインクリメントし、その後、ステ
ップS192に戻る。そして、ステップS194でアド
レスポインタiが終了アドレスに等しくなるまで、上記
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、ステップS196に抜ける。
【0215】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、頭切りされた後件部の各
メンバーシップ関数B4、B3、B2、B1のOR合成
出力データがすべてサーチされて読み出されることにな
る。言い換えれば、最大値演算処理で得られたデータの
集合を2次元図形に対応させ、このデータ集合部分の面
積を積分演算によってすべてサーチして読み出して計算
したことになる。その後、データ集合部分の面積に対応
する積分値が1/2になる値を重心値として算出する。
【0216】このような重心値の算出を行うため、まず
ステップS196に進み、ステップS193で求めた積
算面積areaの1/2の値を重心値hafとして重心
レジスタhafに記憶する。次いで、ステップS197
で各メンバーシップ関数B4、B3、B2、B1のOR
合成関数の横軸に対応するjおよび面積積算エリアba
lを共に[0]にリセットする。
【0217】OR合成関数は、最大値演算処理で得られ
たデータ集合を2次元図形に対応させた場合の関数であ
り、その横軸がjに相当し、その面積の積算エリアがb
alに相当する。なお、jおよびbalの値は、例えば
同名のレジスタに格納される。
【0218】次いで、ステップS198で横軸jをアド
レスとしてワーキングRAM62内のP1メモリからO
R合成関数に対応するデータD4を読み出す。続くステ
ップS199では面積積算エリアbalの値を、今回読
み出したデータD4だけ加算して面積積算エリアbal
を積算する。
【0219】次いで、ステップS200で積算した面積
積算エリアbalを重心値hafと比較し、面積積算エ
リアbalが重心値hafより小さいときはステップS
201に進んで横軸jをインクリメントした後、ステッ
プS198に戻る。そして、ステップS200で面積積
算エリアbalが重心値haf以上になるまで上記処理
を繰り返し、bal≧hafとなると、そのときの横軸
jの値が重心点であると判断してステップS202に抜
ける。
【0220】ステップS202では、OR合成関数の横
軸jのビットを、今回のルーチンにおける引弓時の音色
混合比αとして求める。なお、この重心計算処理のサブ
ルーチンは引弓時の音量レベル係数βを算出する場合も
同様であり、そのため、ステップS202ではかっこ書
きでβを図示している。
【0221】このようにして、2次元図形に対応してい
るOR合成関数の重心をとり、その値を論理和の代表と
する脱ファジー化処理(ディファジファイア処理)が行
われ、推論処理での結論の全体が1つの確定値、すなわ
ち、この場合は引弓時の音色混合比αとして算出され
る。
【0222】引き続き、引弓時の音量レベル係数βを算
出するファジー推論のサブルーチンについて説明する。ファジールールE演算処理 図17はファジールールE演算処理(ステップS27)
のサブルーチンを示すフローチャートである。まず、ス
テップS211で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が大きい」というメンバーシップ関数が格納されている
PHテーブルからデータ(前件部データ)Daを読み出
す。この場合のデータは、図5(b)に示すメンバーシ
ップ関数PHの適合度(グレード)に相当し、0〜1の
範囲の値である。
【0223】すなわち、データDaは操作圧力という入
力値に対してルールEが示した適合度である。データD
aは、CPU42内の同名のレジスタDaに格納され、
これは後述のデータDbについても同様である。
【0224】同様に、ステップS212で操作速度の値
をアドレスとして、メンバーシップ関数テーブルROM
61における「操作速度が大きい」というメンバーシッ
プ関数が格納されているSHテーブルからデータ(前件
部データ)Dbを読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールEが示
した適合度である。
【0225】次いで、ステップS213でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS214に進んで、値の小さい方をデータ
Dとして採用する。このケースではD=Dbとなる。
【0226】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールEが示す判断
として採用される。一方、Da<Dbのときはステップ
S215に進んで、D=Daを採用する。
【0227】このように、ルールEに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールEの前件部に対する適合度が求められる。
【0228】次いで、ステップS216でアドレスポイ
ンタiを[0]にリセットし、ステップS217でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。終了アドレスでなければ、続くステップS218で
iをアドレスとしてメンバーシップ関数テーブルROM
61の「音量がかなり大きい」というメンバーシップ関
数が格納されているA5テーブルからデータ(後件部デ
ータ)Eを読み出す。この場合のデータは、図5(d)
に示すメンバーシップ関数A5の適合度に相当する。デ
ータEは同名のレジスタEに格納される。
【0229】次いで、ステップS219でデータDとデ
ータEを比較し、D≧EのときはステップS220に進
んでiをアドレスとしてワーキングRAM62内のPe
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS211に進んで同じくiをアドレスと
してワーキングRAM61内のPeレジスタにデータD
を書き込む。このように、小さい方の値が採用されてメ
ンバーシップ関数A5をカットする処理が行われる。
【0230】この処理は、後件部たるメンバーシップ関
数A5を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0231】次いで、ステップS222でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS217に戻る。そして、ステップS217でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0232】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A5
をすべてサーチすることになる。これにより、メンバー
シップ関数A5の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0233】このようにして、操作圧力および操作速度
に基づいてファジールールEの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が大きい場合には、音
量をかなり大きくする。」という処理に対してどの程度
適合しているかが算出される。すなわち、音量をかなり
大きくするというファジー操作量が、頭切りしたメンバ
ーシップ関数A5の大きさとして求められる。
【0234】ファジールールF演算処理 図18はファジールールF演算処理(ステップS28)
のサブルーチンを示すフローチャートである。まず、ス
テップS231で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が中程度である」というメンバーシップ関数が格納され
ているPMテーブルからデータ(前件部データ)Daを
同名のレジスタに読み出す。この場合のデータは、図5
(b)に示すメンバーシップ関数PMの適合度(グレー
ド)に相当し、0〜1の範囲の値である。
【0235】すなわち、データDaは操作圧力という入
力値に対してルールFが示した適合度である。同様に、
ステップS232で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールFが示
した適合度である。
【0236】次いで、ステップS233でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS234に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0237】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールFが示す判断
として採用される。一方、Da<Dbのときはステップ
S235に進んで、D1=Daを採用する。
【0238】このように、ルールFに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールFの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が大きい場合には、音量を大きくする。」という
第1の前件部に対する適合度が求められる。
【0239】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS236で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が大きい」というメンバーシ
ップ関数が格納されているPHテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Hの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0240】すなわち、データDaは操作圧力という入
力値に対してルールFが示した適合度である。同様に、
ステップS237で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールFが
示した適合度である。
【0241】次いで、ステップS238でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS239に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0242】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールFが示す判断
として採用される。一方、Da<Dbのときはステップ
S240に進んで、D2=Daを採用する。
【0243】このように、ルールFに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールFの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が中程度である場合には、音量を大きくする。」と
いう第2の前件部に対する適合度が求められる。
【0244】次いで、ステップS241に進み、上記各
データD1、D2のうちの最大値を判別する。このよう
な最大値判別を行うのは、前述した2つの前件部の推論
結果を統合するために論理和(OR論理)をとる必要が
あるからで、いわゆる「MAXをとる」という処理に相
当するものである。
【0245】データD1が大きいときはステップS24
2に進んで、前述した2つの前件部の推論結果を統合し
た前件部データDとしてD1を採用し、データD2が大
きいときはステップS243に進んで、統合前件部デー
タDとしてD2を採用する。このように統合前件部デー
タDを得ることで、ルールFに対してその時点での2つ
の入力値(操作圧力および操作速度)が判断され、ルー
ルFの前件部に対する適合度が求められる。
【0246】次いで、ステップS244でアドレスポイ
ンタiを[0]にリセットし、ステップS245でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。
【0247】終了アドレスでなければ、続くステップS
246でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音量が大きい」というメンバーシップ
関数が格納されているA4テーブルからデータ(後件部
データ)Eを読み出す。この場合のデータは、図5
(c)に示すメンバーシップ関数A4の適合度に相当す
る。データEは、例えばCPU42内の同名のレジスタ
Eに格納される。
【0248】次いで、ステップS247でデータDとデ
ータEを比較し、D≧EのときはステップS248に進
んでiをアドレスとしてワーキングRAM62内のPf
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS249に進んで同じくiをアドレスと
してワーキングRAM62内のPfレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A4をカットする処理が行われ
る。
【0249】この処理は、後件部たるメンバーシップ関
数A4を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0250】次いで、ステップS250でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS245に戻る。そして、ステップS245でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0251】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A4
をすべてサーチすることになる。これにより、メンバー
シップ関数A4の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0252】このようにして、操作圧力および操作速度
に基づいてファジールールFの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度が大きい場合、ある
いは操作圧力が大きく、かつ操作速度が中程度である場
合には、音量を大きくする。」という処理に対してどの
程度適合しているかが算出される。すなわち、音量を大
きくするというファジー操作量が、頭切りしたメンバー
シップ関数A4の大きさとして求められる。
【0253】ファジールールG演算処理 図19、図20はファジールールG演算処理(ステップ
S29)のサブルーチンを示すフローチャートである。
まず、ステップS261で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が大きい」というメンバーシップ関数が格納
されているPHテーブルからデータ(前件部データ)D
aを同名のレジスタに読み出す。この場合のデータは、
図5(b)に示すメンバーシップ関数PHの適合度(グ
レード)に相当し、0〜1の範囲の値である。
【0254】すなわち、データDaは操作圧力という入
力値に対してルールGが示した適合度である。同様に、
ステップS262で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールGが示
した適合度である。
【0255】次いで、ステップS263でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS264に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0256】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールGが示す判断
として採用される。一方、Da<Dbのときはステップ
S265に進んで、D1=Daを採用する。
【0257】このように、ルールGに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールGの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が小さい場合には、音量をやや大きくする。」とい
う第1の前件部に対する適合度が求められる。
【0258】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS266で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が中程度である」というメン
バーシップ関数が格納されているPMテーブルからデー
タ(前件部データ)Daを同名のレジスタに読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PMの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0259】すなわち、データDaは操作圧力という入
力値に対してルールGが示した適合度である。同様に、
ステップS267で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールGが
示した適合度である。
【0260】次いで、ステップS268でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS269に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0261】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールGが示す判断
として採用される。一方、Da<Dbのときはステップ
S270に進んで、D2=Daを採用する。
【0262】このように、ルールGに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールGの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が中程度である場合には、音量をやや大きくす
る。」という第2の前件部に対する適合度が求められ
る。
【0263】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS271で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0264】すなわち、データDaは操作圧力という入
力値に対してルールGが示した適合度である。同様に、
ステップS272で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールGが示
した適合度である。
【0265】次いで、図20に移り、ステップS273
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS274に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0266】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールGが示す判断
として採用される。一方、Da<Dbのときはステップ
S275に進んで、D3=Daを採用する。
【0267】このように、ルールGに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールGの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が大きい場合には、音量をやや大きくする。」とい
う第3の前件部に対する適合度が求められる。
【0268】次いで、ステップS276に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS277〜ステップS279
の何れかへ進む。
【0269】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0270】データD1が最大であるときはステップS
277に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS278に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS279に進んで統合前件部デー
タDとしてD3を採用する。
【0271】このように、統合前件部データDを得るこ
とで、ルールGに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールGの前
件部に対する適合度が求められる。
【0272】ステップS277〜ステップS279の何
れかのステップを経ると、次いでステップS280でア
ドレスポインタiを[0]にリセットし、ステップS2
81でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
282でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音量がやや大きい」というメンバーシ
ップ関数が格納されているA3テーブルからデータ(後
件部データ)Eを同名のレジスタに読み出す。この場合
のデータは、図5(c)に示すメンバーシップ関数A3
の適合度に相当する。
【0273】次いで、ステップS283でデータDとデ
ータEを比較し、D≧EのときはステップS284に進
んでiをアドレスとしてワーキングRAM62内のPg
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS285に進んで同じくiをアドレスと
してワーキングRAM61内のPgレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A3をカットする処理が行われ
る。
【0274】この処理は、後件部たるメンバーシップ関
数A3を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0275】次いで、ステップS286でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS281に戻る。そして、ステップS281でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0276】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A3
をすべてサーチすることになる。これにより、メンバー
シップ関数A3の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0277】このようにして、操作圧力および操作速度
に基づいてファジールールGの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が小さい場合、あるい
は操作圧力が中程度で、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が大きい
場合には、音量をやや大きくする。」という処理に対し
てどの程度適合しているかが算出される。すなわち、音
量をやや大きくするというファジー操作量が、頭切りし
たメンバーシップ関数A3の大きさとして求められる。
【0278】ファジールールH演算処理 図21はファジールールH演算処理(ステップS30)
のサブルーチンを示すフローチャートである。まず、ス
テップS301で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が中程度である」というメンバーシップ関数が格納され
ているPMテーブルからデータ(前件部データ)Daを
同名のレジスタに読み出す。この場合のデータは、図5
(b)に示すメンバーシップ関数PMの適合度(グレー
ド)に相当し、0〜1の範囲の値である。
【0279】すなわち、データDaは操作圧力という入
力値に対してルールHが示した適合度である。同様に、
ステップS302で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールHが示
した適合度である。
【0280】次いで、ステップS303でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS304に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0281】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールHが示す判断
として採用される。一方、Da<Dbのときはステップ
S305に進んで、D1=Daを採用する。
【0282】このように、ルールHに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールHの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が小さい場合には、音量をやや小さくする。」と
いう第1の前件部に対する適合度が求められる。
【0283】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS306で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0284】すなわち、データDaは操作圧力という入
力値に対してルールHが示した適合度である。同様に、
ステップS307で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールHが
示した適合度である。
【0285】次いで、ステップS308でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS309に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0286】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールHが示す判断
として採用される。一方、Da<Dbのときはステップ
S310に進んで、D2=Daを採用する。
【0287】このように、ルールHに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールHの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が中程度である場合には、音量をやや小さくす
る。」という第2の前件部に対する適合度が求められ
る。
【0288】次いで、ステップS311に進み、上記各
データD1、D2のうちの最大値を判別する。このよう
な最大値判別を行うのは、前述した2つの前件部の推論
結果を統合するために論理和(OR論理)をとる必要が
あるからで、いわゆる「MAXをとる」という処理に相
当するものである。
【0289】データD1が大きいときはステップS31
2に進んで、前述した2つの前件部の推論結果を統合し
た前件部データDとしてD1を採用し、データD2が大
きいときはステップS313に進んで、統合前件部デー
タDとしてD2を採用する。このように統合前件部デー
タDを得ることで、ルールHに対してその時点での2つ
の入力値(操作圧力および操作速度)が判断され、ルー
ルHの前件部に対する適合度が求められる。
【0290】次いで、ステップS314でアドレスポイ
ンタiを[0]にリセットし、ステップS315でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。
【0291】終了アドレスでなければ、続くステップS
316でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音量がやや大きい」というメンバーシ
ップ関数が格納されているA2テーブルからデータ(後
件部データ)Eを読み出す。この場合のデータは、図5
(c)に示すメンバーシップ関数A2の適合度に相当す
る。データEは、例えばCPU42内の同名のレジスタ
Eに格納される。
【0292】次いで、ステップS317でデータDとデ
ータEを比較し、D≧EのときはステップS318に進
んでiをアドレスとしてワーキングRAM62内のPh
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS319に進んで同じくiをアドレスと
してワーキングRAM62内のPhレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A2をカットする処理が行われ
る。
【0293】この処理は、後件部たるメンバーシップ関
数A2を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0294】次いで、ステップS320でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS315に戻る。そして、ステップS315でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0295】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A2
をすべてサーチすることになる。これにより、メンバー
シップ関数A2の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0296】このようにして、操作圧力および操作速度
に基づいてファジールールHの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度が小さい場合、ある
いは操作圧力が小さく、かつ操作速度が中程度である場
合には、音量をやや小さくする。」という処理に対して
どの程度適合しているかが算出される。すなわち、音量
をやや小さくするというファジー操作量が、頭切りした
メンバーシップ関数A2の大きさとして求められる。
【0297】ファジールールI演算処理 図22はファジールールI演算処理(ステップS31)
のサブルーチンを示すフローチャートである。まず、ス
テップS331で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が小さい」というメンバーシップ関数が格納されている
PLテーブルからデータ(前件部データ)Daを同名の
レジスタに読み出す。この場合のデータは、図5(b)
に示すメンバーシップ関数PLの適合度(グレード)に
相当し、0〜1の範囲の値である。
【0298】すなわち、データDaは操作圧力という入
力値に対してルールIが示した適合度である。同様に、
ステップS332で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを読み
出す。この場合のデータは、図5(a)に示すメンバー
シップ関数SLの適合度(グレード)に相当し、0〜1
の範囲の値である。すなわち、データDbは操作速度と
いう入力値に対してルールIが示した適合度である。
【0299】次いで、ステップS333でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS334に進んで、値の小さい方をデータ
Dとして採用する。このケースではD=Dbとなる。
【0300】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールIが示す判断
として採用される。一方、Da<Dbのときはステップ
S335に進んで、D=Daを採用する。
【0301】このように、ルールIに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールIの前件部に対する適合度が求められる。
【0302】次いで、ステップS336でアドレスポイ
ンタiを[0]にリセットし、ステップS337でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。終了アドレスでなければ、続くステップS338で
iをアドレスとしてメンバーシップ関数テーブルROM
61の「音量が小さい」というメンバーシップ関数が格
納されているA1テーブルからデータ(後件部データ)
Eを読み出す。この場合のデータは、図5(c)に示す
メンバーシップ関数A1の適合度に相当する。データE
は同名のレジスタEに格納される。
【0303】次いで、ステップS339でデータDとデ
ータEを比較し、D≧EのときはステップS340に進
んでiをアドレスとしてワーキングRAM62内のPi
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS341に進んで同じくiをアドレスと
してワーキングRAM61内のPiレジスタにデータD
を書き込む。このように、小さい方の値が採用されてメ
ンバーシップ関数A1をカットする処理が行われる。
【0304】この処理は、後件部たるメンバーシップ関
数A1を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0305】次いで、ステップS342でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS337に戻る。そして、ステップS337でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0306】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A1
をすべてサーチすることになる。これにより、メンバー
シップ関数A1の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0307】このようにして、操作圧力および操作速度
に基づいてファジールールEの演算が行われ、「もし、
操作圧力が小さく、かつ操作速度が小さい場合には、音
量を小さくする。」という処理に対してどの程度適合し
ているかが算出される。すなわち、音量を小さくすると
いうファジー操作量が、頭切りしたメンバーシップ関数
A1の大きさとして求められる。
【0308】最大値演算処理 図23は最大値演算処理(ステップS32)のサブルー
チンを示すフローチャートである。まず、ステップS3
51でアドレスポインタiを[0]にリセットし、ステ
ップS352でアドレスポインタiをアドレスとしてワ
ーキングRAM62内のPeメモリからデータQ1を同
名のレジスタに読み出す。
【0309】データQ1は、ファジールールEについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が大きい場合には、音量をかなり大
きくする。」という処理に対してどの程度適合している
かを算出して頭切りしたメンバーシップ関数A5に対応
する。
【0310】また、ステップS353でアドレスポイン
タiをアドレスとしてワーキングRAM62内のPfメ
モリからデータQ2を同名のレジスタに読み出す。
【0311】データQ2は、ファジールールFについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度が大きい場合、あるいは操作圧力
が大きく、かつ操作速度が中程度である場合には、音量
を大きくする。」という処理に対してどの程度適合して
いるかを算出して頭切りしたメンバーシップ関数A4に
対応する。
【0312】さらに、ステップS354で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPgメモリからデータQ3を同名のレジスタに読み出
す。
【0313】データQ3は、ファジールールGについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度も小さい場合、あるいは操作圧力が
中程度で、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が大きい場合には、音
量をやや大きくする。」という処理に対してどの程度適
合しているかを算出して頭切りしたメンバーシップ関数
A3に対応する。
【0314】次いで、ステップS355で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPhメモリからデータQ4を同名のレジスタに読み出
す。
【0315】データQ4は、ファジールールHについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度が小さい場合、あるいは操作圧力
が小さく、かつ操作速度が中程度である場合には、音量
をやや小さくする。」という処理に対してどの程度適合
しているかを算出して頭切りしたメンバーシップ関数A
2に対応する。
【0316】次いで、ステップS356で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPiメモリからデータQ5を同名のレジスタに読み出
す。
【0317】データQ5は、ファジールールIについて
の演算結果であり、具体的には、「もし、操作圧力が小
さく、かつ操作速度が小さい場合には、音量を小さくす
る。」という処理に対してどの程度適合しているかを算
出して頭切りしたメンバーシップ関数A1に対応する。
【0318】次いで、ステップS357で上記各データ
Q1〜Q5のうちいずれが最大であるか最大値を判別す
る。そして、データQ1〜Q5の最大値判別結果に応じ
てそれぞれステップS358、ステップS359、ステ
ップS360、ステップS361、ステップS362に
進む。例えば、データQ1が最大であるときは、ステッ
プS358に進む。以下、同様にしてデータQ2が最大
であるときはステップS359に進み、データQ3が最
大であるときはステップS360に進み、データQ4が
最大であるときはステップS361に進み、さらにデー
タQ5が最大であるときはステップS362に進む。
【0319】このような最大値判別を行っているのは、
各ファジールールE〜I毎の推論結果を統合するために
論理和(OR論理)をとる必要があるからで、いわゆる
「MAXをとる」という処理に相当するものである。
【0320】具体的には、例えばある瞬間の擦弦演奏状
態がファジールールEからファジールールIまでの、ど
のルールに影響されるのか、少しでも影響されるなら、
それは音量変化の判断に反映しておきたいという要求に
答えるもので、これが「OR論理」の関係の基本の考え
方である。そして、この考え方を集合論では「和をと
る」としており、本実施例では、どれかひとつでも影響
がある限り、考察の対象にするとして上記処理が実行さ
れる。
【0321】さて、ステップS358に進んだ場合は、
アドレスポインタiをアドレスとしてワーキングRAM
62内のP2メモリにデータQ1を書き込む。これによ
り、今回のアドレスポインタi(最初のルーチンではi
=0)の値によって指定されるファジールールEの演算
結果である頭切りしたメンバーシップ関数A5の一部が
P2メモリに書き込まれる。
【0322】なお、後述のように、アドレスポインタi
を終了アドレスまでインクリメントすることにより、頭
切りされたメンバーシップ関数A5がすべてサーチされ
てP2メモリに書き込まれることになる。
【0323】同様に、ステップS359ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
2メモリにデータQ2を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールFの演算結果である頭切りしたメンバーシップ関数
A4の一部がP2メモリに書き込まれる。
【0324】同じく、ステップS360ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
2メモリにデータQ3を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールGの演算結果である頭切りしたメンバーシップ関数
A3の一部がP2メモリに書き込まれる。
【0325】また、ステップS361ではアドレスポイ
ンタiをアドレスとしてワーキングRAM62内のP2
メモリにデータQ4を書き込む。これにより、今回のア
ドレスポインタiの値によって指定されるファジールー
ルHの演算結果である頭切りしたメンバーシップ関数A
2の一部がP2メモリに書き込まれる。
【0326】さらに、ステップS362ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
2メモリにデータQ5を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールIの演算結果である頭切りしたメンバーシップ関数
A1の一部がP2メモリに書き込まれる。
【0327】次いで、ステップS363でアドレスポイ
ンタiが終了アドレスに等しいか否か判別する。終了ア
ドレスでなければ、続くステップS364でアドレスポ
インタiを[1]だけインクリメントし、その後、ステ
ップS352に戻る。そして、ステップS363でアド
レスポインタiが終了アドレスに等しくなるまで、上記
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、引弓時のファジー推論演算処理にリター
ンする。
【0328】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、頭切りされた各メンバー
シップ関数A5、A4、A3、A2、A1がすべてサー
チされてP2メモリにデータQ1〜Q5として書き込ま
れる。
【0329】このようにして、各ファジールールE〜I
毎の推論結果を統合するために論理和をとる(「MAX
をとる」)処理が実行され、頭切りされた各メンバーシ
ップ関数A5、A4、A3、A2、A1がOR合成され
る。すなわち、MAX合成処理によって各ファジールー
ルE〜I毎の推論結果が重ね合わせられて合成出力が生
成される。
【0330】さて、上記最大値演算処理を経ると、重心
計算処理(ステップS33)に移行する。この重心計算
処理のサブルーチンの内容は前述した図16(つまり、
ステップS26のサブルーチン)に示すものと同じであ
り、ここでは省略するが、同様の重心計算が行われる。
【0331】すなわち、重心計算処理(ステップS3
3)のサブルーチンでは、同様に2次元図形に対応して
いるOR合成関数の重心をとり、その値を論理和の代表
とする脱ファジー化処理(ディファジファイア処理)が
行われ、推論処理での結論の全体が1つの確定値、つま
り、この場合は引弓時の音量レベル係数βとして算出さ
れる。
【0332】次に、押弓時のファジー推論演算処理の各
ステップにおける詳細なサブルーチンの内容を順次説明
する。ファジールールJ演算処理 図24、図25はファジールールJ演算処理(ステップ
S41)のサブルーチンを示すフローチャートである。
まず、ステップS401で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が大きい」というメンバーシップ関数が格納
されているPHテーブルからデータ(前件部データ)D
aを同名のレジスタに読み出す。この場合のデータは、
図5(b)に示すメンバーシップ関数PHの適合度(グ
レード)に相当し、0〜1の範囲の値である。
【0333】すなわち、データDaは操作圧力という入
力値に対してルールJが示した適合度である。同様に、
ステップS402で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールJが示
した適合度である。
【0334】次いで、ステップS403でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS404に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0335】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールJが示す判断
として採用される。一方、Da<Dbのときはステップ
S405に進んで、D1=Daを採用する。
【0336】このように、ルールJに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールJの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が大きい場合には、音色をハードにする。」という
第1の前件部に対する適合度が求められる。
【0337】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS406で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が大きい」というメンバーシ
ップ関数が格納されているPHテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Hの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0338】すなわち、データDaは操作圧力という入
力値に対してルールJが示した適合度である。同様に、
ステップS407で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールJが
示した適合度である。
【0339】次いで、ステップS408でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS409に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0340】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールJが示す判断
として採用される。一方、Da<Dbのときはステップ
S410に進んで、D2=Daを採用する。
【0341】このように、ルールJに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールJの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が中程度である場合には、音色をハードにする。」
という第2の前件部に対する適合度が求められる。
【0342】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS411で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が中程度である」というメン
バーシップ関数が格納されているPMテーブルからデー
タ(前件部データ)Daを同名のレジスタに読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PMの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0343】すなわち、データDaは操作圧力という入
力値に対してルールJが示した適合度である。同様に、
ステップS412で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールJが示
した適合度である。
【0344】次いで、図25に移り、ステップS413
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS414に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0345】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールJが示す判断
として採用される。一方、Da<Dbのときはステップ
S415に進んで、D3=Daを採用する。
【0346】このように、ルールJに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールJの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が大きい場合には、音色をハードにする。」とい
う第3の前件部に対する適合度が求められる。
【0347】次いで、ステップS416に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS417〜ステップS419
の何れかへ進む。
【0348】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0349】データD1が最大であるときはステップS
417に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS418に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS419に進んで統合前件部デー
タDとしてD3を採用する。
【0350】このように、統合前件部データDを得るこ
とで、ルールJに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールJの前
件部に対する適合度が求められる。
【0351】ステップS417〜ステップS419の何
れかのステップを経ると、次いでステップS420でア
ドレスポインタiを[0]にリセットし、ステップS4
21でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
422でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色がハード」というメンバーシップ
関数が格納されているB3テーブルからデータ(後件部
データ)Eを同名のレジスタに読み出す。この場合のデ
ータは、図5(d)に示すメンバーシップ関数B3の適
合度に相当する。
【0352】次いで、ステップS423でデータDとデ
ータEを比較し、D≧EのときはステップS424に進
んでiをアドレスとしてワーキングRAM62内のPj
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS425に進んで同じくiをアドレスと
してワーキングRAM61内のPjレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数B3をカットする処理が行われ
る。
【0353】この処理は、後件部たるメンバーシップ関
数B3を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0354】次いで、ステップS426でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS421に戻る。そして、ステップS421でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0355】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B3
をすべてサーチすることになる。これにより、メンバー
シップ関数B3の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0356】このようにして、操作圧力および操作速度
に基づいてファジールールJの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が大きい場合、あるい
は操作圧力が大きく、かつ操作速度が中程度である場
合、あるいは操作圧力が中程度で、かつ操作速度が大き
い場合には、音色をハードにする。」という処理に対し
てどの程度適合しているかが算出される。すなわち、音
色をハードにするというファジー操作量が、頭切りした
メンバーシップ関数B3の大きさとして求められる。
【0357】ファジールールK演算処理 図26、図27はファジールールK演算処理(ステップ
S42)のサブルーチンを示すフローチャートである。
まず、ステップS431で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が大きい」というメンバーシップ関数が格納
されているPHテーブルからデータ(前件部データ)D
aを同名のレジスタに読み出す。この場合のデータは、
図5(b)に示すメンバーシップ関数PHの適合度(グ
レード)に相当し、0〜1の範囲の値である。
【0358】すなわち、データDaは操作圧力という入
力値に対してルールKが示した適合度である。同様に、
ステップS432で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールKが示
した適合度である。
【0359】次いで、ステップS433でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS434に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0360】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールKが示す判断
として採用される。一方、Da<Dbのときはステップ
S435に進んで、D1=Daを採用する。
【0361】このように、ルールKに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールKの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が小さい場合には、音色をややソフトにする。」と
いう第1の前件部に対する適合度が求められる。
【0362】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS436で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が中程度である」というメン
バーシップ関数が格納されているPMテーブルからデー
タ(前件部データ)Daを同名のレジスタに読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PMの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0363】すなわち、データDaは操作圧力という入
力値に対してルールKが示した適合度である。同様に、
ステップS437で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールKが
示した適合度である。
【0364】次いで、ステップS438でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS439に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0365】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールKが示す判断
として採用される。一方、Da<Dbのときはステップ
S440に進んで、D2=Daを採用する。
【0366】このように、ルールKに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールKの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が中程度である場合には、音色をややソフトにす
る。」という第2の前件部に対する適合度が求められ
る。
【0367】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS441で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0368】すなわち、データDaは操作圧力という入
力値に対してルールKが示した適合度である。同様に、
ステップS442で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールKが示
した適合度である。
【0369】次いで、図27に移り、ステップS443
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS444に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0370】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールKが示す判断
として採用される。一方、Da<Dbのときはステップ
S445に進んで、D3=Daを採用する。
【0371】このように、ルールKに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールKの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が大きい場合には、音色をややソフトにする。」と
いう第3の前件部に対する適合度が求められる。
【0372】次いで、ステップS446に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS447〜ステップS449
の何れかへ進む。
【0373】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0374】データD1が最大であるときはステップS
447に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS448に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS449に進んで統合前件部デー
タDとしてD3を採用する。
【0375】このように、統合前件部データDを得るこ
とで、ルールKに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールKの前
件部に対する適合度が求められる。
【0376】ステップS447〜ステップS449の何
れかのステップを経ると、次いでステップS450でア
ドレスポインタiを[0]にリセットし、ステップS4
51でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
452でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色がややソフト」というメンバーシ
ップ関数が格納されているB2テーブルからデータ(後
件部データ)Eを同名のレジスタに読み出す。この場合
のデータは、図5(d)に示すメンバーシップ関数B2
の適合度に相当する。
【0377】次いで、ステップS453でデータDとデ
ータEを比較し、D≧EのときはステップS454に進
んでiをアドレスとしてワーキングRAM62内のPh
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS455に進んで同じくiをアドレスと
してワーキングRAM61内のPhレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数B2をカットする処理が行われ
る。
【0378】この処理は、後件部たるメンバーシップ関
数B2を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0379】次いで、ステップS456でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS451に戻る。そして、ステップS451でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0380】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B2
をすべてサーチすることになる。これにより、メンバー
シップ関数B2の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0381】このようにして、操作圧力および操作速度
に基づいてファジールールKの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が小さい場合、あるい
は操作圧力が中程度で、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が大きい
場合には、音色をややソフトにする。」という処理に対
してどの程度適合しているかが算出される。すなわち、
音色をややソフトにするというファジー操作量が、頭切
りしたメンバーシップ関数B2の大きさとして求められ
る。
【0382】ファジールールL演算処理 図28、図29はファジールールL演算処理(ステップ
S43)のサブルーチンを示すフローチャートである。
まず、ステップS461で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が中程度である」というメンバーシップ関数
が格納されているPMテーブルからデータ(前件部デー
タ)Daを同名のレジスタに読み出す。この場合のデー
タは、図5(b)に示すメンバーシップ関数PMの適合
度(グレード)に相当し、0〜1の範囲の値である。
【0383】すなわち、データDaは操作圧力という入
力値に対してルールLが示した適合度である。同様に、
ステップS462で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールLが示
した適合度である。
【0384】次いで、ステップS463でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS464に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0385】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールLが示す判断
として採用される。一方、Da<Dbのときはステップ
S465に進んで、D1=Daを採用する。
【0386】このように、ルールLに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールLの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が小さい場合には、音色をソフトにする。」とい
う第1の前件部に対する適合度が求められる。
【0387】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS466で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0388】すなわち、データDaは操作圧力という入
力値に対してルールLが示した適合度である。同様に、
ステップS467で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールLが
示した適合度である。
【0389】次いで、ステップS468でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS469に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0390】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールLが示す判断
として採用される。一方、Da<Dbのときはステップ
S470に進んで、D2=Daを採用する。
【0391】このように、ルールLに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールLの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が中程度である場合には、音色をソフトにする。」
という第2の前件部に対する適合度が求められる。
【0392】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS471で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0393】すなわち、データDaは操作圧力という入
力値に対してルールLが示した適合度である。同様に、
ステップS472で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールLが示
した適合度である。
【0394】次いで、図29に移り、ステップS473
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS474に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0395】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールLが示す判断
として採用される。一方、Da<Dbのときはステップ
S475に進んで、D3=Daを採用する。
【0396】このように、ルールLに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールLの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が小さい場合には、音色をソフトにする。」という
第3の前件部に対する適合度が求められる。
【0397】次いで、ステップS476に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS477〜ステップS479
の何れかへ進む。
【0398】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0399】データD1が最大であるときはステップS
477に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS478に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS479に進んで統合前件部デー
タDとしてD3を採用する。
【0400】このように、統合前件部データDを得るこ
とで、ルールLに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールLの前
件部に対する適合度が求められる。
【0401】ステップS477〜ステップS479の何
れかのステップを経ると、次いでステップS480でア
ドレスポインタiを[0]にリセットし、ステップS4
81でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
482でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色がソフト」というメンバーシップ
関数が格納されているB1テーブルからデータ(後件部
データ)Eを同名のレジスタに読み出す。この場合のデ
ータは、図5(d)に示すメンバーシップ関数B1の適
合度に相当する。
【0402】次いで、ステップS483でデータDとデ
ータEを比較し、D≧EのときはステップS484に進
んでiをアドレスとしてワーキングRAM62内のPl
(l:小文字のエル)レジスタにデータEの内容を書き
込む。一方、D<EのときはステップS485に進んで
同じくiをアドレスとしてワーキングRAM61内のP
lレジスタにデータDの内容を書き込む。このように、
小さい方の値が採用されてメンバーシップ関数B1をカ
ットする処理が行われる。
【0403】この処理は、後件部たるメンバーシップ関
数B1を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0404】次いで、ステップS486でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS481に戻る。そして、ステップS481でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0405】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数B1
をすべてサーチすることになる。これにより、メンバー
シップ関数B1の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0406】このようにして、操作圧力および操作速度
に基づいてファジールールLの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度が小さい場合、ある
いは操作圧力が小さく、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が小さい
場合には、音色をソフトにする。」という処理に対して
どの程度適合しているかが算出される。すなわち、音色
をソフトにするというファジー操作量が、頭切りしたメ
ンバーシップ関数B1の大きさとして求められる。
【0407】最大値演算処理 図30は最大値演算処理(ステップS44)のサブルー
チンを示すフローチャートである。まず、ステップS5
01でアドレスポインタiを[0]にリセットし、ステ
ップS502でアドレスポインタiをアドレスとしてワ
ーキングRAM62内のPjメモリからデータQ1を同
名のレジスタに読み出す。
【0408】データQ1は、ファジールールJについて
の演算結果であり、具体的には、「もし、もし、操作圧
力が大きく、かつ操作速度が大きい場合、あるいは操作
圧力が大きく、かつ操作速度が中程度である場合、ある
いは操作圧力が中程度で、かつ操作速度が大きい場合に
は、音色をハードにする。」という処理に対してどの程
度適合しているかを算出して頭切りしたメンバーシップ
関数B3に対応する。
【0409】また、ステップS503でアドレスポイン
タiをアドレスとしてワーキングRAM62内のPkメ
モリからデータQ2を同名のレジスタに読み出す。
【0410】データQ2は、ファジールールKについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が小さい場合、あるいは操作圧力が
中程度で、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が大きい場合には、音
色をややソフトにする。」という処理に対してどの程度
適合しているかを算出して頭切りしたメンバーシップ関
数B2に対応する。
【0411】さらに、ステップS504で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPl(l:エル)メモリからデータQ3を同名のレジ
スタに読み出す。
【0412】データQ3は、ファジールールLについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度が小さい場合、あるいは操作圧力
が小さく、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が小さい場合には、音
色をソフトにする。」という処理に対してどの程度適合
しているかを算出して頭切りしたメンバーシップ関数B
1に対応する。
【0413】次いで、ステップS505で上記各データ
Q1〜Q3のうちいずれが最大であるか最大値を判別す
る。そして、データQ1〜Q3の最大値判別結果に応じ
てそれぞれステップS506、ステップS507、ステ
ップS508に進む。例えば、データQ1が最大である
ときは、ステップS506に進む。以下、同様にしてデ
ータQ2が最大であるときはステップS507に進み、
データQ3が最大であるときはステップS508に進
む。
【0414】このような最大値判別を行っているのは、
各ファジールールJ〜L毎の推論結果を統合するために
論理和(OR論理)をとる必要があるからで、いわゆる
「MAXをとる」という処理に相当するものである。
【0415】具体的には、例えばある瞬間の擦弦演奏状
態がファジールールJからファジールールLまでの、ど
のルールに影響されるのか、少しでも影響されるなら、
それは音色変化の判断に反映しておきたいという要求に
答えるもので、これが「OR論理」の関係の基本の考え
方である。そして、この考え方を集合論では「和をと
る」としており、本実施例では、どれかひとつでも影響
がある限り、考察の対象にするとして上記処理が実行さ
れる。
【0416】さて、ステップS506に進んだ場合は、
アドレスポインタiをアドレスとしてワーキングRAM
62内のP3メモリにデータQ1を書き込む。これによ
り、今回のアドレスポインタi(最初のルーチンではi
=0)の値によって指定されるファジールールJの演算
結果である頭切りしたメンバーシップ関数B3の一部が
P3メモリに書き込まれる。
【0417】なお、後述のように、アドレスポインタi
を終了アドレスまでインクリメントすることにより、頭
切りされたメンバーシップ関数B3がすべてサーチされ
てP3メモリに書き込まれることになる。
【0418】同様に、ステップS507ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
3メモリにデータQ2を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールKの演算結果である頭切りしたメンバーシップ関数
B2の一部がP3メモリに書き込まれる。
【0419】同じく、ステップS508ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
3メモリにデータQ3を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールLの演算結果である頭切りしたメンバーシップ関数
B1の一部がP3メモリに書き込まれる。
【0420】次いで、ステップS509でアドレスポイ
ンタiが終了アドレスに等しいか否か判別する。終了ア
ドレスでなければ、続くステップS510でアドレスポ
インタiを[1]だけインクリメントし、その後、ステ
ップS502に戻る。そして、ステップS502でアド
レスポインタiが終了アドレスに等しくなるまで、上記
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0421】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、頭切りされた各メンバー
シップ関数B3、B2、B1がすべてサーチされてP3
メモリにデータQ1〜Q3として書き込まれる。
【0422】このようにして、各ファジールールJ〜L
毎の推論結果を統合するために論理和をとる(「MAX
をとる」)処理が実行され、頭切りされた各メンバーシ
ップ関数B3、B2、B1がOR合成される。すなわ
ち、MAX合成処理によって各ファジールールJ〜L毎
の推論結果が重ね合わせられて合成出力が生成される。
【0423】さて、上記最大値演算処理を経ると、重心
計算処理(ステップS45)に移行する。この重心計算
処理のサブルーチンの内容は前述した図16(つまり、
ステップS26のサブルーチン)に示すものと同じであ
り、ここでは省略するが、同様の重心計算が行われる。
【0424】すなわち、重心計算処理(ステップS4
5)のサブルーチンでは、同様に2次元図形に対応して
いるOR合成関数の重心をとり、その値を論理和の代表
とする脱ファジー化処理(ディファジファイア処理)が
行われ、推論処理での結論の全体が1つの確定値、つま
り、この場合は押弓時の音色混合比αとして算出され
る。
【0425】引き続き、押弓時の音量レベル係数βを算
出するファジー推論のサブルーチンについて説明する。ファジールールM演算処理 図31はファジールールM演算処理(ステップS46)
のサブルーチンを示すフローチャートである。まず、ス
テップS521で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が大きい」というメンバーシップ関数が格納されている
PHテーブルからデータ(前件部データ)Daを読み出
す。この場合のデータは、図5(b)に示すメンバーシ
ップ関数PHの適合度(グレード)に相当し、0〜1の
範囲の値である。
【0426】すなわち、データDaは操作圧力という入
力値に対してルールMが示した適合度である。データD
aは、CPU42内の同名のレジスタDaに格納され、
これは後述のデータDbについても同様である。
【0427】同様に、ステップS522で操作速度の値
をアドレスとして、メンバーシップ関数テーブルROM
61における「操作速度が大きい」というメンバーシッ
プ関数が格納されているSHテーブルからデータ(前件
部データ)Dbを読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールMが示
した適合度である。
【0428】次いで、ステップS523でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS524に進んで、値の小さい方をデータ
Dとして採用する。このケースではD=Dbとなる。
【0429】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールMが示す判断
として採用される。一方、Da<Dbのときはステップ
S525に進んで、D=Daを採用する。
【0430】このように、ルールMに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールMの前件部に対する適合度が求められる。
【0431】次いで、ステップS526でアドレスポイ
ンタiを[0]にリセットし、ステップS527でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。終了アドレスでなければ、続くステップS528で
iをアドレスとしてメンバーシップ関数テーブルROM
61の「音量が大きい」というメンバーシップ関数が格
納されているA4テーブルからデータ(後件部データ)
Eを読み出す。この場合のデータは、図5(c)に示す
メンバーシップ関数A4の適合度に相当する。データE
は同名のレジスタEに格納される。
【0432】次いで、ステップS529でデータDとデ
ータEを比較し、D≧EのときはステップS530に進
んでiをアドレスとしてワーキングRAM62内のPm
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS531に進んで同じくiをアドレスと
してワーキングRAM61内のPmレジスタにデータD
を書き込む。このように、小さい方の値が採用されてメ
ンバーシップ関数A4をカットする処理が行われる。
【0433】この処理は、後件部たるメンバーシップ関
数A4を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0434】次いで、ステップS532でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS527に戻る。そして、ステップS527でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0435】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A4
をすべてサーチすることになる。これにより、メンバー
シップ関数A4の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0436】このようにして、操作圧力および操作速度
に基づいてファジールールMの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が大きい場合には、音
量を大きくする。」という処理に対してどの程度適合し
ているかが算出される。すなわち、音量を大きくすると
いうファジー操作量が、頭切りしたメンバーシップ関数
A4の大きさとして求められる。
【0437】ファジールールN演算処理 図32はファジールールN演算処理(ステップS47)
のサブルーチンを示すフローチャートである。まず、ス
テップS541で操作圧力の値をアドレスとして、メン
バーシップ関数テーブルROM61における「操作圧力
が大きい」というメンバーシップ関数が格納されている
PHテーブルからデータ(前件部データ)Daを同名の
レジスタに読み出す。この場合のデータは、図5(b)
に示すメンバーシップ関数PHの適合度(グレード)に
相当し、0〜1の範囲の値である。
【0438】すなわち、データDaは操作圧力という入
力値に対してルールNが示した適合度である。同様に、
ステップS542で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールNが
示した適合度である。
【0439】次いで、ステップS543でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS544に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0440】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールNが示す判断
として採用される。一方、Da<Dbのときはステップ
S545に進んで、D1=Daを採用する。
【0441】このように、ルールNに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールNの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が中程度である場合には、音量をやや大きくす
る。」という第1の前件部に対する適合度が求められ
る。
【0442】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS546で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が中程度である」というメン
バーシップ関数が格納されているPMテーブルからデー
タ(前件部データ)Daを同名のレジスタに読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PMの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0443】すなわち、データDaは操作圧力という入
力値に対してルールNが示した適合度である。同様に、
ステップS547で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールNが示
した適合度である。
【0444】次いで、ステップS548でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS549に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0445】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールNが示す判断
として採用される。一方、Da<Dbのときはステップ
S550に進んで、D2=Daを採用する。
【0446】このように、ルールNに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールNの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が大きい場合には、音量をやや大きくする。」と
いう第2の前件部に対する適合度が求められる。
【0447】次いで、ステップS551に進み、上記各
データD1、D2のうちの最大値を判別する。このよう
な最大値判別を行うのは、前述した2つの前件部の推論
結果を統合するために論理和(OR論理)をとる必要が
あるからで、いわゆる「MAXをとる」という処理に相
当するものである。
【0448】データD1が大きいときはステップS55
2に進んで、前述した2つの前件部の推論結果を統合し
た前件部データDとしてD1を採用し、データD2が大
きいときはステップS553に進んで、統合前件部デー
タDとしてD2を採用する。このように統合前件部デー
タDを得ることで、ルールNに対してその時点での2つ
の入力値(操作圧力および操作速度)が判断され、ルー
ルNの前件部に対する適合度が求められる。
【0449】次いで、ステップS554でアドレスポイ
ンタiを[0]にリセットし、ステップS555でアド
レスポインタiが終了アドレスに等しいか否か判別す
る。
【0450】終了アドレスでなければ、続くステップS
556でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音量がやや大きい」というメンバーシ
ップ関数が格納されているA3テーブルからデータ(後
件部データ)Eを読み出す。この場合のデータは、図5
(c)に示すメンバーシップ関数A3の適合度に相当す
る。データEは、例えばCPU42内の同名のレジスタ
Eに格納される。
【0451】次いで、ステップS557でデータDとデ
ータEを比較し、D≧EのときはステップS558に進
んでiをアドレスとしてワーキングRAM62内のPn
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS559に進んで同じくiをアドレスと
してワーキングRAM62内のPnレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A3をカットする処理が行われ
る。
【0452】この処理は、後件部たるメンバーシップ関
数A3を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0453】次いで、ステップS560でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS555に戻る。そして、ステップS555でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0454】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A3
をすべてサーチすることになる。これにより、メンバー
シップ関数A3の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0455】このようにして、操作圧力および操作速度
に基づいてファジールールNの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が中程度である場合、
あるいは操作圧力が中程度で、かつ操作速度が大きい場
合には、音量をやや大きくする。」という処理に対して
どの程度適合しているかが算出される。すなわち、音量
をやや大きくするというファジー操作量が、頭切りした
メンバーシップ関数A3の大きさとして求められる。
【0456】ファジールールO演算処理 図33、図34はファジールールO演算処理(ステップ
S48)のサブルーチンを示すフローチャートである。
まず、ステップS581で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が大きい」というメンバーシップ関数が格納
されているPHテーブルからデータ(前件部データ)D
aを同名のレジスタに読み出す。この場合のデータは、
図5(b)に示すメンバーシップ関数PHの適合度(グ
レード)に相当し、0〜1の範囲の値である。
【0457】すなわち、データDaは操作圧力という入
力値に対してルールOが示した適合度である。同様に、
ステップS582で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールOが示
した適合度である。
【0458】次いで、ステップS583でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS584に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0459】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールOが示す判断
として採用される。一方、Da<Dbのときはステップ
S585に進んで、D1=Daを採用する。
【0460】このように、ルールOに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールOの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が大きく、かつ操作
速度が小さい場合には、音量をやや小さくする。」とい
う第1の前件部に対する適合度が求められる。
【0461】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS586で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が中程度である」というメン
バーシップ関数が格納されているPMテーブルからデー
タ(前件部データ)Daを同名のレジスタに読み出す。
この場合のデータは、図5(b)に示すメンバーシップ
関数PMの適合度(グレード)に相当し、0〜1の範囲
の値である。
【0462】すなわち、データDaは操作圧力という入
力値に対してルールOが示した適合度である。同様に、
ステップS587で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールOが
示した適合度である。
【0463】次いで、ステップS588でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS589に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0464】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールOが示す判断
として採用される。一方、Da<Dbのときはステップ
S590に進んで、D2=Daを採用する。
【0465】このように、ルールOに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールOの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が中程度である場合には、音量をやや小さくす
る。」という第2の前件部に対する適合度が求められ
る。
【0466】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS591で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0467】すなわち、データDaは操作圧力という入
力値に対してルールOが示した適合度である。同様に、
ステップS592で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が大きい」というメンバーシップ関数が格納されてい
るSHテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SHの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールOが示
した適合度である。
【0468】次いで、図33に移り、ステップS593
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS594に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0469】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールOが示す判断
として採用される。一方、Da<Dbのときはステップ
S595に進んで、D3=Daを採用する。
【0470】このように、ルールOに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールOの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が大きい場合には、音量をやや小さくする。」とい
う第3の前件部に対する適合度が求められる。
【0471】次いで、ステップS596に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS597〜ステップS599
の何れかへ進む。
【0472】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0473】データD1が最大であるときはステップS
597に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS598に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS599に進んで統合前件部デー
タDとしてD3を採用する。
【0474】このように、統合前件部データDを得るこ
とで、ルールOに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールOの前
件部に対する適合度が求められる。
【0475】ステップS597〜ステップS599の何
れかのステップを経ると、次いでステップS600でア
ドレスポインタiを[0]にリセットし、ステップS6
01でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
602でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音量がやや小さい」というメンバーシ
ップ関数が格納されているA2テーブルからデータ(後
件部データ)Eを同名のレジスタに読み出す。この場合
のデータは、図5(c)に示すメンバーシップ関数A2
の適合度に相当する。
【0476】次いで、ステップS603でデータDとデ
ータEを比較し、D≧EのときはステップS604に進
んでiをアドレスとしてワーキングRAM62内のPo
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS605に進んで同じくiをアドレスと
してワーキングRAM61内のPoレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A2をカットする処理が行われ
る。
【0477】この処理は、後件部たるメンバーシップ関
数A2を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0478】次いで、ステップS606でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS601に戻る。そして、ステップS601でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0479】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A2
をすべてサーチすることになる。これにより、メンバー
シップ関数A2の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0480】このようにして、操作圧力および操作速度
に基づいてファジールールOの演算が行われ、「もし、
操作圧力が大きく、かつ操作速度が小さい場合、あるい
は操作圧力が中程度で、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が大きい
場合には、音量をやや小さくする。」という処理に対し
てどの程度適合しているかが算出される。すなわち、音
量をやや小さくするというファジー操作量が、頭切りし
たメンバーシップ関数A2の大きさとして求められる。
【0481】ファジールールP演算処理 図35、図36はファジールールP演算処理(ステップ
S49)のサブルーチンを示すフローチャートである。
まず、ステップS611で操作圧力の値をアドレスとし
て、メンバーシップ関数テーブルROM61における
「操作圧力が中程度である」というメンバーシップ関数
が格納されているPMテーブルからデータ(前件部デー
タ)Daを同名のレジスタに読み出す。この場合のデー
タは、図5(b)に示すメンバーシップ関数PMの適合
度(グレード)に相当し、0〜1の範囲の値である。
【0482】すなわち、データDaは操作圧力という入
力値に対してルールPが示した適合度である。同様に、
ステップS612で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールPが示
した適合度である。
【0483】次いで、ステップS613でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS614に進んで、値の小さい方をデータ
D1として採用する。このケースではD1=Dbとな
る。
【0484】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールPが示す判断
として採用される。一方、Da<Dbのときはステップ
S615に進んで、D1=Daを採用する。
【0485】このように、ルールPに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールPの第1の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が中程度で、かつ操
作速度が小さい場合には、音量を小さくする。」という
第1の前件部に対する適合度が求められる。
【0486】次いで、第2の前件部に対する適合度を求
める処理に移る。まず、ステップS616で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0487】すなわち、データDaは操作圧力という入
力値に対してルールPが示した適合度である。同様に、
ステップS617で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が中程度である」というメンバーシップ関数が格納さ
れているSMテーブルからデータ(前件部データ)Db
を同名のレジスタに読み出す。この場合のデータは、図
5(a)に示すメンバーシップ関数SMの適合度(グレ
ード)に相当し、0〜1の範囲の値である。すなわち、
データDbは操作速度という入力値に対してルールPが
示した適合度である。
【0488】次いで、ステップS618でデータDaが
データDb以上であるか否かを判別し、Da≧Dbのと
きはステップS619に進んで、値の小さい方をデータ
D2として採用する。このケースではD2=Dbとな
る。
【0489】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールPが示す判断
として採用される。一方、Da<Dbのときはステップ
S620に進んで、D2=Daを採用する。
【0490】このように、ルールPに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールPの第2の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が中程度である場合には、音量を小さくする。」と
いう第2の前件部に対する適合度が求められる。
【0491】次いで、第3の前件部に対する適合度を求
める処理に移る。まず、ステップS621で操作圧力の
値をアドレスとして、メンバーシップ関数テーブルRO
M61における「操作圧力が小さい」というメンバーシ
ップ関数が格納されているPLテーブルからデータ(前
件部データ)Daを同名のレジスタに読み出す。この場
合のデータは、図5(b)に示すメンバーシップ関数P
Lの適合度(グレード)に相当し、0〜1の範囲の値で
ある。
【0492】すなわち、データDaは操作圧力という入
力値に対してルールPが示した適合度である。同様に、
ステップS622で操作速度の値をアドレスとして、メ
ンバーシップ関数テーブルROM61における「操作速
度が小さい」というメンバーシップ関数が格納されてい
るSLテーブルからデータ(前件部データ)Dbを同名
のレジスタに読み出す。この場合のデータは、図5
(a)に示すメンバーシップ関数SLの適合度(グレー
ド)に相当し、0〜1の範囲の値である。すなわち、デ
ータDbは操作速度という入力値に対してルールPが示
した適合度である。
【0493】次いで、図36に移り、ステップS623
でデータDaがデータDb以上であるか否かを判別し、
Da≧DbのときはステップS624に進んで、値の小
さい方をデータD3として採用する。このケースではD
3=Dbとなる。
【0494】この処理は、各データの論理積をとるもの
で、いわゆる「MINをとる」ことに相当するものであ
る。これは、「MINをとる」ことにより、2つの入力
値に対して少なくとも両方を満足する状態を得るためで
ある。これにより、データDaとデータDbのうち、最
小のものが今回のルーチンにおいてルールPが示す判断
として採用される。一方、Da<Dbのときはステップ
S625に進んで、D3=Daを採用する。
【0495】このように、ルールPに対して、その時点
での2つの入力値(操作圧力および操作速度)が判断さ
れ、ルールPの第3の前件部に対する適合度が求められ
る。具体的には、「もし、操作圧力が小さく、かつ操作
速度が小さい場合には、音量を小さくする。」という第
3の前件部に対する適合度が求められる。
【0496】次いで、ステップS626に進んで上述し
た前件部への適合度データD1〜D3のうちの最大値を
判別する。そして、データD1〜D3の最大値判別結果
に応じてそれぞれステップS627〜ステップS629
の何れかへ進む。
【0497】このような最大値判別を行っているのは、
前述した3つの前件部の推論結果を統合するために論理
和(OR論理)をとる必要があるからで、いわゆる「M
AXをとる」という処理に相当するものである。
【0498】データD1が最大であるときはステップS
627に進んで前述した3つの前件部の推論結果を統合
した前件部データDとしてD1を採用し、データD2が
最大であるときはステップS628に進んで統合前件部
データDとしてD2を採用し、さらにデータD3が最大
であるときはステップS629に進んで統合前件部デー
タDとしてD3を採用する。
【0499】このように、統合前件部データDを得るこ
とで、ルールPに対して、その時点での2つの入力値
(操作圧力および操作速度)が判断され、ルールPの前
件部に対する適合度が求められる。
【0500】ステップS627〜ステップS629の何
れかのステップを経ると、次いでステップS630でア
ドレスポインタiを[0]にリセットし、ステップS6
31でアドレスポインタiが終了アドレスに等しいか否
か判別する。終了アドレスでなければ、続くステップS
632でiをアドレスとしてメンバーシップ関数テーブ
ルROM61の「音色がソフト」というメンバーシップ
関数が格納されているA1テーブルからデータ(後件部
データ)Eを同名のレジスタに読み出す。この場合のデ
ータは、図5(c)に示すメンバーシップ関数A1の適
合度に相当する。
【0501】次いで、ステップS633でデータDとデ
ータEを比較し、D≧EのときはステップS634に進
んでiをアドレスとしてワーキングRAM62内のPp
レジスタにデータEの内容を書き込む。一方、D<Eの
ときはステップS635に進んで同じくiをアドレスと
してワーキングRAM61内のPpレジスタにデータD
の内容を書き込む。このように、小さい方の値が採用さ
れてメンバーシップ関数A1をカットする処理が行われ
る。
【0502】この処理は、後件部たるメンバーシップ関
数A1を前件部の適合度に応じてカットする「いわゆる
頭切り法」を行うものである。
【0503】次いで、ステップS636でアドレスポイ
ンタiを[1]だけインクリメントし、その後、ステッ
プS631に戻る。そして、ステップS631でアドレ
スポインタiが終了アドレスに等しくなるまで、同様の
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0504】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、メンバーシップ関数A1
をすべてサーチすることになる。これにより、メンバー
シップ関数A1の全てに対して前件部の適合度に応じた
「頭切り法」が実行される。
【0505】このようにして、操作圧力および操作速度
に基づいてファジールールPの演算が行われ、「もし、
操作圧力が中程度で、かつ操作速度が小さい場合、ある
いは操作圧力が小さく、かつ操作速度が中程度である場
合、あるいは操作圧力が小さく、かつ操作速度が小さい
場合には、音量を小さくする。」という処理に対してど
の程度適合しているかが算出される。すなわち、音量を
小さくするというファジー操作量が、頭切りしたメンバ
ーシップ関数A1の大きさとして求められる。
【0506】最大値演算処理 図37は最大値演算処理(ステップS50)のサブルー
チンを示すフローチャートである。まず、ステップS6
41でアドレスポインタiを[0]にリセットし、ステ
ップS642でアドレスポインタiをアドレスとしてワ
ーキングRAM62内のPmメモリからデータQ1を同
名のレジスタに読み出す。
【0507】データQ1は、ファジールールMについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が大きい場合には、音量を大きくす
る。」という処理に対してどの程度適合しているかを算
出して頭切りしたメンバーシップ関数A4に対応する。
【0508】次いで、ステップS643でアドレスポイ
ンタiをアドレスとしてワーキングRAM62内のPn
メモリからデータQ2を同名のレジスタに読み出す。
【0509】データQ2は、ファジールールNについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が中程度である場合、あるいは操作
圧力が中程度で、かつ操作速度が大きい場合には、音量
をやや大きくする。」という処理に対してどの程度適合
しているかを算出して頭切りしたメンバーシップ関数A
3に対応する。
【0510】次いで、ステップS644で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPoメモリからデータQ3を同名のレジスタに読み出
す。
【0511】データQ3は、ファジールールOについて
の演算結果であり、具体的には、「もし、操作圧力が大
きく、かつ操作速度が小さい場合、あるいは操作圧力が
中程度で、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が大きい場合には、音
量をやや小さくする。」という処理に対してどの程度適
合しているかを算出して頭切りしたメンバーシップ関数
A2に対応する。
【0512】さらに、ステップS645で同様にアドレ
スポインタiをアドレスとしてワーキングRAM62内
のPpメモリからデータQ4を同名のレジスタに読み出
す。
【0513】データQ4は、ファジールールPについて
の演算結果であり、具体的には、「もし、操作圧力が中
程度で、かつ操作速度が小さい場合、あるいは操作圧力
が小さく、かつ操作速度が中程度である場合、あるいは
操作圧力が小さく、かつ操作速度が小さい場合には、音
量を小さくする。」という処理に対してどの程度適合し
ているかを算出して頭切りしたメンバーシップ関数A1
に対応する。
【0514】次いで、ステップS646で上記各データ
Q1〜Q4のうちいずれが最大であるか最大値を判別す
る。そして、データQ1〜Q4の最大値判別結果に応じ
てそれぞれステップS647、ステップS648、ステ
ップS649、ステップS650に進む。例えば、デー
タQ1が最大であるときは、ステップS647に進む。
以下、同様にしてデータQ2が最大であるときはステッ
プS648に進み、データQ3が最大であるときはステ
ップS649に進み、データQ4が最大であるときはス
テップS650に進む。
【0515】このような最大値判別を行っているのは、
各ファジールールM〜P毎の推論結果を統合するために
論理和(OR論理)をとる必要があるからで、いわゆる
「MAXをとる」という処理に相当するものである。
【0516】具体的には、例えばある瞬間の擦弦演奏状
態がファジールールMからファジールールPまでの、ど
のルールに影響されるのか、少しでも影響されるなら、
それは音量変化の判断に反映しておきたいという要求に
答えるもので、これが「OR論理」の関係の基本の考え
方である。そして、この考え方を集合論では「和をと
る」としており、本実施例では、どれかひとつでも影響
がある限り、考察の対象にするとして上記処理が実行さ
れる。
【0517】さて、ステップS647に進んだ場合は、
アドレスポインタiをアドレスとしてワーキングRAM
62内のP4メモリにデータQ1を書き込む。これによ
り、今回のアドレスポインタi(最初のルーチンではi
=0)の値によって指定されるファジールールMの演算
結果である頭切りしたメンバーシップ関数A4の一部が
P4メモリに書き込まれる。
【0518】なお、後述のように、アドレスポインタi
を終了アドレスまでインクリメントすることにより、頭
切りされたメンバーシップ関数A4がすべてサーチされ
てP4メモリに書き込まれることになる。
【0519】同様に、ステップS648ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
4メモリにデータQ2を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールNの演算結果である頭切りしたメンバーシップ関数
A3の一部がP4メモリに書き込まれる。
【0520】同じく、ステップS649ではアドレスポ
インタiをアドレスとしてワーキングRAM62内のP
4メモリにデータQ3を書き込む。これにより、今回の
アドレスポインタiの値によって指定されるファジール
ールOの演算結果である頭切りしたメンバーシップ関数
A2の一部がP4メモリに書き込まれる。
【0521】さらに同じく、ステップS650ではアド
レスポインタiをアドレスとしてワーキングRAM62
内のP4メモリにデータQ4を書き込む。これにより、
今回のアドレスポインタiの値によって指定されるファ
ジールールPの演算結果である頭切りしたメンバーシッ
プ関数A1の一部がP4メモリに書き込まれる。
【0522】次いで、ステップS651でアドレスポイ
ンタiが終了アドレスに等しいか否か判別する。終了ア
ドレスでなければ、続くステップS652でアドレスポ
インタiを[1]だけインクリメントし、その後、ステ
ップS642に戻る。そして、ステップS651でアド
レスポインタiが終了アドレスに等しくなるまで、上記
処理を繰り返し、アドレスポインタiが終了アドレスに
等しくなると、押弓時のファジー推論演算処理にリター
ンする。
【0523】アドレスポインタiを終了アドレスまでイ
ンクリメントすることにより、頭切りされた各メンバー
シップ関数A4、A3、A2、A1がすべてサーチされ
てP4メモリにデータQ1〜Q4としてそれぞれ書き込
まれる。
【0524】このようにして、各ファジールールM〜P
毎の推論結果を統合するために論理和をとる(「MAX
をとる」)処理が実行され、頭切りされた各メンバーシ
ップ関数A4、A3、A2、A1がOR合成される。す
なわち、MAX合成処理によって各ファジールールM〜
P毎の推論結果が重ね合わせられて合成出力が生成され
る。
【0525】さて、上記最大値演算処理を経ると、重心
計算処理(ステップS51)に移行する。この重心計算
処理のサブルーチンの内容は前述した図16(つまり、
ステップS26のサブルーチン)に示すものと同じであ
り、ここでは省略するが、同様の重心計算が行われる。
【0526】すなわち、重心計算処理(ステップS5
1)のサブルーチンでは、同様に2次元図形に対応して
いるOR合成関数の重心をとり、その値を論理和の代表
とする脱ファジー化処理(ディファジファイア処理)が
行われ、推論処理での結論の全体が1つの確定値、つま
り、この場合は押弓時の音量レベル係数βとして算出さ
れる。
【0527】このように、本実施例では張設された弦8
が擦弦操作されたとき、その擦弦操作速度および擦弦操
作力の大きさが検出され、これらを入力パラメータとす
るファジー推論により、発生すべき楽音の特性、すなわ
ち音色および音量が可変制御される。したがって、擦弦
時における操作速度と操作力作位置との微妙な組み合せ
に従って、発生楽音の特性が微妙に変化して極めて自然
擦弦楽器に近い楽音特性を得ることができる。
【0528】また、ファジー推論が用いられているの
で、楽音特性制御の演算処理に対して膨大な処理が必要
でなく、演算負担を軽減することができる。その結果、
既在のCPUにより容易に演算を行うことができ、高機
能の電子擦弦楽器を低コストで実現することができる。
【0529】さらに、擦弦操作方向も入力パラメータに
加えられているので、自然擦弦楽器のように押弓時と引
弓時とで発生楽音の特性をきめ細かく微妙に制御するこ
とができ、より一層自然擦弦楽器に近い楽音特性を得る
ことができる。例えば、同一擦弦速度、同一操作圧力で
あっても、自然擦弦楽器に近いより自然な楽音特性を得
ることが可能になる。
【0530】なお、上記実施例では発電機ホルダー21
Aの下面に圧力センサ22を設け、ローラ23と共に発
電機ホルダー21Aが変位したとき、この変位量を圧力
センサ22で検出するようにしているが、これに限定さ
れるものではない。例えば、図38に示すように、発電
機21をベース11に固定し、その回転軸33を軸受1
00およびこの軸受100の周囲に設けた環状の圧力セ
ンサ(擦弦操作力検出手段)101を介してベース11
上の支持部102に回転自在に支持させ、擦弦操作力に
より、ローラ23と共に回転軸33およびその軸受10
0が変位したとき、この変位量を環状の圧力センサ10
1で検出するようにしてもよい。
【0531】また、上記実施例ではファジー推論の入力
パラメータとして擦弦操作速度、擦弦操作力の他に、擦
弦操作方向を入力パラメータとして用いることにより、
押弓時あるいは引弓時とでファジー推論演算の形態を変
化させているが、実際の楽器(バイオリン)では弦に対
する弓の擦弦角度でも発生する楽音は変化する。したが
って、この擦弦角度を検出してファジー推論演算を行っ
てもよい。そのようにすると、より一層微妙に自然擦弦
楽器の特性を表現することができる。
【0532】あるいは、上記4つのパラメータのいくつ
かを適当に組み合せてファジー推論を行ってもよい。要
は、対象となる擦弦楽器の種類、特性等に応じて推論入
力を決定するとよい。そのようにすると、より一層自然
擦弦楽器の特性を表現できる電子楽器を得ることが可能
になる。
【0533】さらに、上記実施例では楽音の特性として
音色および音量を変化させているが、ファジー推論によ
って変化させる楽音特性としては、音色や音量に限ら
ず、他の要素、例えば音高、エンベロープあるいは効果
(エフェクト)を変化させるようにしてもよい。又は、
これらの要素を組み合せて変化させるようにしてもよ
い。そのようにすると、より一層きめ細かく自然擦弦楽
器に近い自然な楽音特性を電子的に得ることができる。
【0534】また、上記実施例ではファジー推論をCP
U42やメンバーシップ関数テーブルROM61を用い
てソフトによって実現しているが、例えばファジーチッ
プを用いてハード的に実現してもい。
【0535】なお、ファジー推論で用いるメンバーシッ
プ関数の値は、対象となる楽器の種類などに応じて適切
に設定するとよい。このようにすれば、音色および音量
のみならず他の楽音特性に対する制御のいろいろな味付
けが可能になる。さらに、メンバーシップ関数の形状は
台形、三角形に限らず、他の形状(例えば、釣鐘形)で
もよい。
【0536】さらに、上記実施例では、本発明をバイオ
リンという自然擦弦楽器の楽音を発生する電子楽器に適
用した例であるが、このようなバイオリンへの適用に限
らず、弦を擦るタイプの楽音を発生する電子楽器(例え
ば、擦弦入力部を有するもの)であれば、幅広く適用す
ることができる。
【0537】
【発明の効果】本発明によれば、擦弦操作速度および擦
弦操作力の大きさを検出し、これらを入力パラメータと
するファジー推論により、発生すべき楽音の特性を可変
制御しているので、擦弦時における操作速度と操作力と
の微妙な組み合せに従って、発生楽音の特性を微妙に変
化させることができ、極めて自然擦弦楽器に近い楽音特
性が得ることができる。
【0538】また、ファジー推論を用いているので、楽
音特性制御の演算処理に対して膨大な処理が必要でな
く、演算負担を軽減することができる。その結果、既在
のCPUにより容易に演算を行うことができ、高機能の
電子楽器を低コストで実現することができる。
【0539】さらに、請求項2記載の発明によれば、擦
弦操作方向も入力パラメータに加えられるので、押弓時
と引弓時とで発生楽音の特性がきめ細かく微妙に変化さ
せることができ、より一層自然擦弦楽器に近い楽音特性
を得ることができる。
【図面の簡単な説明】
【図1】本発明を適用した電子擦弦楽器の一実施例の外
観を示す図である。
【図2】同実施例の擦弦操作検出部の詳細を示す分解斜
視図である。
【図3】同実施例の擦弦操作検出部の詳細を示す断面図
である。
【図4】同実施例の電子擦弦楽器の電子回路の構成を示
すブロック図である。
【図5】同実施例の楽音特性制御のメンバーシップ関数
を示す図である。
【図6】同実施例の楽音発生制御処理を示すメインプロ
グラムである。
【図7】同実施例の引弓時ファジー推論処理のフローチ
ャートである。
【図8】同実施例の押弓時ファジー推論処理のフローチ
ャートである。
【図9】同実施例のファジールールA演算処理のサブル
ーチンを示すフローチャートである。
【図10】同実施例のファジールールB演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図11】同実施例のファジールールB演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図12】同実施例のファジールールC演算処理のサブ
ルーチンを示すフローチャートである。
【図13】同実施例のファジールールD演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図14】同実施例のファジールールD演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図15】同実施例の最大値演算処理のサブルーチンを
示すフローチャートである。
【図16】同実施例の重心計算処理のサブルーチンを示
すフローチャートである。
【図17】同実施例のファジールールE演算処理のサブ
ルーチンを示すフローチャートである。
【図18】同実施例のファジールールF演算処理のサブ
ルーチンを示すフローチャートである。
【図19】同実施例のファジールールG演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図20】同実施例のファジールールG演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図21】同実施例のファジールールH演算処理のサブ
ルーチンを示すフローチャートである。
【図22】同実施例のファジールールI演算処理のサブ
ルーチンを示すフローチャートである。
【図23】同実施例の最大値演算処理のサブルーチンを
示すフローチャートである。
【図24】同実施例のファジールールJ演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図25】同実施例のファジールールJ演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図26】同実施例のファジールールK演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図27】同実施例のファジールールK演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図28】同実施例のファジールールL演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図29】同実施例のファジールールL演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図30】同実施例の最大値演算処理のサブルーチンを
示すフローチャートである。
【図31】同実施例のファジールールM演算処理のサブ
ルーチンを示すフローチャートである。
【図32】同実施例のファジールールN演算処理のサブ
ルーチンを示すフローチャートである。
【図33】同実施例のファジールールO演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図34】同実施例のファジールールO演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図35】同実施例のファジールールP演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図36】同実施例のファジールールP演算処理のサブ
ルーチンの一部を示すフローチャートである。
【図37】同実施例の最大値演算処理のサブルーチンを
示すフローチャートである。
【図38】本発明を適用した電子擦弦楽器の擦弦操作検
出部の他の実施例を示す断面図である。
【符号の説明】
1 楽器本体 2 ボディ部 3 ネック部 4 ヘッド部 5 擦弦操作検出部 7 音高指定スイッチ群 8 弦(擦弦入力部) 14 擦弦操作検出機構 21 発電機 22 圧力センサ 41 音高検出回路 42 CPU(発音指示手段) 45 第1の音源(楽音発生手段) 46 第2の音源(楽音発生手段) 61 メンバーシップ関数テーブルROM 62 ワーキングRAM 70 ファジー推論手段 210 各擦弦速度検出センサ(擦弦速度検出手段、擦
弦操作方向検出手段) 220 各擦弦操作力検出センサ(擦弦操作力検出手
段)

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 張設された複数の弦からなり、擦弦操作
    が入力される擦弦入力部と、 該擦弦入力部に対する擦弦操作速度を検出する擦弦速度
    検出手段と、 前記擦弦入力部に対する擦弦操作力の大きさを検出する
    擦弦操作力検出手段と、 前記擦弦速度、擦弦操作力を入力パラメータとして所定
    のファジールールに従ってファジー推論演算を行うファ
    ジー推論手段と、 該ファジー推論手段の演算結果に基づいて発生すべき楽
    音パラメータを可変制御して楽音の発音を指示する発音
    指示手段と、を備えたことを特徴とする電子楽器。
  2. 【請求項2】 前記電子楽器は、さらに前記擦弦入力部
    に対する擦弦操作力の方向を検出する擦弦操作方向検出
    手段を設け、 前記ファジー推論手段は、さらに擦弦操作方向を入力パ
    ラメータに加えて前記ファジー推論演算を行うことを特
    徴とする請求項1記載の電子楽器。
  3. 【請求項3】 前記発音指示手段は、楽音の音色、音量
    のうち少なくとも1つを、前記ファジー推論手段からの
    演算結果に応じて可変制御し、楽音の発生を指示するこ
    とを特徴とする請求項1又は2記載の電子楽器。
  4. 【請求項4】 前記電子楽器は、さらに前記発音指示手
    段によって発音が指示された楽音を発生する楽音発生手
    段を設けたことを特徴とする請求項1又は2記載の電子
    楽器。
JP4215562A 1992-07-20 1992-07-20 電子楽器 Pending JPH0635466A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4215562A JPH0635466A (ja) 1992-07-20 1992-07-20 電子楽器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4215562A JPH0635466A (ja) 1992-07-20 1992-07-20 電子楽器

Publications (1)

Publication Number Publication Date
JPH0635466A true JPH0635466A (ja) 1994-02-10

Family

ID=16674488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4215562A Pending JPH0635466A (ja) 1992-07-20 1992-07-20 電子楽器

Country Status (1)

Country Link
JP (1) JPH0635466A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0990941A (ja) * 1995-09-27 1997-04-04 Yamaha Corp 演奏制御装置
JP2006522951A (ja) * 2003-04-14 2006-10-05 新世代株式会社 自動演奏装置、自動演奏方法、及び、自動演奏プログラム
US7297862B2 (en) 2001-09-04 2007-11-20 Yamaha Corporation Musical tone control apparatus and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0990941A (ja) * 1995-09-27 1997-04-04 Yamaha Corp 演奏制御装置
US7297862B2 (en) 2001-09-04 2007-11-20 Yamaha Corporation Musical tone control apparatus and method
US7528318B2 (en) 2001-09-04 2009-05-05 Yamaha Corporation Musical tone control apparatus and method
JP2006522951A (ja) * 2003-04-14 2006-10-05 新世代株式会社 自動演奏装置、自動演奏方法、及び、自動演奏プログラム

Similar Documents

Publication Publication Date Title
CN102568455B (zh) 演奏装置及电子乐器
Fels et al. Mapping transparency through metaphor: towards more expressive musical instruments
O'Modhrain Playing by feel: incorporating haptic feedback into computer-based musical instruments
CN102270446B (zh) 演奏装置以及电子乐器
US6018118A (en) System and method for controlling a music synthesizer
Vertegaal et al. Towards a musician's cockpit: Transducers, feedback and musical function
CN102290044B (zh) 演奏装置以及电子乐器
JPH0635466A (ja) 電子楽器
Scavone The Pipe: explorations with breath control
JP3316517B2 (ja) 鍵盤装置
JP2858764B2 (ja) 電子楽器
JP5391521B2 (ja) 楽音制御装置および楽音制御処理のプログラム
JP2839008B2 (ja) 電子楽器
JP3700437B2 (ja) 演奏教習用送信装置及び演奏教習用送信処理のプログラムを記憶した記憶媒体
JP4009783B2 (ja) 楽音データ変換装置、操作指示装置及び記憶媒体
JPH0789277B2 (ja) 電子楽器の楽音制御方法
JPH0753117Y2 (ja) 電子鍵盤楽器
JPH0738108B2 (ja) 電子楽器の楽音制御方法
JPH05341777A (ja) 電子楽器のパラメータ制御装置
JPH0715034Y2 (ja) 電子鍵盤楽器
JPH03177897A (ja) 電子楽器
Prater Memory III/IV: Chimaeram
JPH0786754B2 (ja) 電子鍵盤楽器
JPH08314460A (ja) 電子楽器の演奏パラメータ制御装置
Zhang RETRACTED: Research on the Best Techniques of Piano Touching Keys Based on the Perspective of Musical Aesthetics under Computer Aided Technology