JP2500544B2 - 楽音制御装置 - Google Patents

楽音制御装置

Info

Publication number
JP2500544B2
JP2500544B2 JP3127294A JP12729491A JP2500544B2 JP 2500544 B2 JP2500544 B2 JP 2500544B2 JP 3127294 A JP3127294 A JP 3127294A JP 12729491 A JP12729491 A JP 12729491A JP 2500544 B2 JP2500544 B2 JP 2500544B2
Authority
JP
Japan
Prior art keywords
finger
bending
key
value
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3127294A
Other languages
English (en)
Other versions
JPH04352195A (ja
Inventor
孝道 増渕
克俊 河内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP3127294A priority Critical patent/JP2500544B2/ja
Priority to US07/890,575 priority patent/US5338891A/en
Publication of JPH04352195A publication Critical patent/JPH04352195A/ja
Application granted granted Critical
Publication of JP2500544B2 publication Critical patent/JP2500544B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/32Constructional details
    • G10H1/34Switch arrangements, e.g. keyboards or mechanical switches specially adapted for electrophonic musical instruments
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/02Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos
    • G10H1/04Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos by additional modulation
    • G10H1/053Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos by additional modulation during execution only
    • G10H1/055Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos by additional modulation during execution only by switches with variable impedance elements
    • G10H1/0558Means for controlling the tone frequencies, e.g. attack or decay; Means for producing special musical effects, e.g. vibratos or glissandos by additional modulation during execution only by switches with variable impedance elements using variable resistors
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2220/00Input/output interfacing specifically adapted for electrophonic musical tools or instruments
    • G10H2220/155User input interfaces for electrophonic musical instruments
    • G10H2220/321Garment sensors, i.e. musical control means with trigger surfaces or joint angle sensors, worn as a garment by the player, e.g. bracelet, intelligent clothing
    • G10H2220/326Control glove or other hand or palm-attached control device

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、指の動作を検出し、こ
の検出結果に応じて楽音の発生を制御する楽音制御装置
に関する。
【0002】
【従来の技術】従来、鍵盤などの入力装置を用いること
なく、指の動きを検出して楽音の発生を制御するように
した楽音制御装置として、特開昭63−210895号
公報に示すものが知られている。この楽音制御装置は、
指の曲げ伸ばしによってオン・オフするフィンガスイッ
チを複数の指に装着し、このフィンガスイッチから出力
されるオン・オフ情報によって、発生する楽音信号の楽
音要素を制御している。このとき、指の曲げ量が予め設
定した所定量(閾値)になると、フィンガスイッチをオ
ン・オフするようにしている。
【0003】
【発明が解決しようとする課題】ところで、ピアノを演
奏するときに、演奏者は押鍵した鍵盤の停止や押鍵時の
圧力を指先で感じとることによりリズムを合わせること
ができるように、一般に指で演奏する多くの楽器では、
指先の感覚が発音タイミングをとるために重要な要素と
なる。
【0004】しかしながら、前記のようにフィンガスイ
ッチにより指の曲げ延ばしを検出して楽音を発生するよ
うな楽音制御装置においては、演奏者は指の曲げ量とフ
ィンガスイッチがオン・オフする閾値との関係を把握す
ることが困難なばかりか、演奏者の癖や演奏方法に応じ
て指の曲げ具合や早さなどが変わっても一定の曲げ量に
よってフィンガスイッチがオン・オフするため、発音や
消音のタイミングが演奏者の実際の動作からずれたもの
になったり誤発音などが生じ、使い勝手が悪いという問
題がある。
【0005】本発明は、指の曲げ伸ばしに応じて楽音の
発音と消音を制御するようにした楽音制御装置におい
て、演奏動作に適したタイミングで楽音の制御を行っ
て、電子楽器などを扱いやすくすることを課題とする。
【0006】
【課題を解決するための手段】上記の課題を解決するた
めになした本発明の楽音制御装置は、手の指の曲げ量を
検出して、該指の曲げ量に基づいてキーオンとキーオフ
を判定し、このキーオンによる楽音の発生とキーオフに
よる楽音の消音を制御するようにした楽音制御装置にお
いて、前記指の曲げ量に基づいて該指の曲げの速度を検
出する速度検出手段と、該速度検出手段で検出した速度
情報に基づいて上記指の停止を検出する停止検出手段と
を備え、上記停止検出手段で上記指の停止を検出するこ
とによりキーオンを判定するようにしたことを特徴とす
る。
【0007】また本発明の楽音制御装置は、手の指の曲
げ量を検出して、該指の曲げ量に基づいてキーオンとキ
ーオフを判定し、このキーオンによる楽音の発生とキー
オフによる楽音の消音を制御するようにした楽音制御装
置において、キーオンになった指の曲げ量の最大深さを
検出する最大深さ検出手段と、該最大深さより浅い曲げ
量でこの最大深さに追随する閾値を発生する閾値発生手
段とを備え、上記キーオンになった指の曲げ量と上記閾
値発生手段で発生した閾値とによって該指のキーオフを
判定するようにしたことを特徴とする。
【0008】
【作用】楽曲の演奏に使用するような楽音制御装置にお
いては、楽器本来の機能として演奏者の動作に合わせて
発音や消音を行うようにするほうが自然であり、装置自
体に一定値として設定した量だけではなく、指の動作に
応じて発音や消音のタイミングをとるようにすることが
必要である。本発明の楽音制御装置は、指の曲げの速度
に基づいて指の停止を検出し、この指の停止検出により
キーオンを判定して楽音を発生する。したがって、発音
のタイミングが演奏者の指の動作に応じたものとなる。
【0009】また、本発明の他の楽音制御装置は、キー
オンになった指の曲げ量の最大深さを検出するとともに
この最大深さより浅い曲げ量でこの最大深さに追随する
閾値を発生し、上記キーオンになった指の曲げ量と上記
閾値とによってキーオフを判定して楽音を消音する。し
たがって、深く曲げた状態からキーオフする場合など、
深さに応じた適切な位置でキーオフとすることができ、
消音のタイミングが演奏者の指の動作に応じたものとな
る。
【0010】
【実施例】図1は実施例の楽音制御装置を適用した電子
楽器のブロック図であり、この電子楽器は、演奏者の手
の各指の曲げ角度を検出する曲げセンサを取付た演奏用
手袋1,2を備えており、この演奏用手袋1,2を着け
た演奏者が例えばピアノを弾くように指を動かすと左右
の指の曲げ伸ばしに応じたキーオン/キーオフが検出さ
れ、各指のキーオン/キーオフ状態に応じて音高の楽音
が発生される。
【0011】図2は演奏用手袋1,2を示す図、図3は
同演奏用手袋1,2の指の部分の断面図であり、この演
奏用手袋1,2は指の背の部分が薄い袋状になってお
り、その中に曲げセンサ10が各指毎にそれぞれ配設さ
れている。
【0012】図4は曲げセンサ10を示す図である。な
お、この曲げセンサ10は特願平2−83704で提案
されている曲げ角度検出器と同様のものであり、フレキ
シブルな樹脂部材でできた基板10aの表裏両面に
「U」字型の抵抗体10b,10cを付けたもので、指
の曲げ延ばしに応じて抵抗体10b,10cが伸び縮み
してこの抵抗体10b,10cの抵抗値が変化するよう
に構成したものである。そして、この抵抗体10b,1
0cの抵抗値をリード線10dから電圧信号とし検出
し、指の曲げ量に応じた電圧信号の処理を行って各指の
キーオン/キーオフを検出する。
【0013】また、図2に示したように、この実施例で
は右手の演奏用手袋2の手首の部分にも上記同様の曲げ
センサ10が配設されており、上記同様に右手首の曲げ
量を検出して、右手指が曲げられたときのキーオンの判
定条件をこの右手首の状態に応じて切り換えるようにし
ている。
【0014】この実施例では、左手の演奏用手袋1の親
指、ひとさし指、中指、薬指および小指に対して順に
“1”,“3”,“5”,“7”,“9”の奇数の指番
号を対応つけ、右手の演奏用手袋2の親指、ひとさし
指、中指、薬指および小指に対して順に“0”,
“2”,“4”,“6”,“8”の偶数の指番号を対応
つけ、後述説明する制御動作において各指に対応するレ
ジスタやデータをこの指番号で区別するようにしてい
る。なお、以下の説明で、必要に応じて左右の各指を符
号“F”と指番号“0”〜“9”で表し、例えば右手中
指は「F4指」などのように表す。
【0015】図1において、演奏用手袋1,2の各曲げ
センサ10にはA/Dコンバータ3から所定の電流が供
給され、演奏用手袋1,2は各曲げセンサ10の抵抗値
に応じた電圧値を各指および右手首の曲げ量に応じた信
号として出力し、この曲げ量に応じた信号がA/Dコン
バータ3でディジタルデータに変換されて制御部4に入
力される。
【0016】制御部4は、このA/Dコンバータ3から
の曲げ量に応じたデータ(以後、曲げデータという。)
に基づいて、発音すべき楽音の音高を示すキーコード、
発音を指示するノートオン信号、消音を指示するノート
オフ信号およびイニシャルタッチのベロシティ信号を音
源回路5に出力し、音源回路5は、制御部4から与えら
れる各信号に基づいて楽音信号を形成してサウンドシス
テム6によって楽音を発生する。
【0017】なお、制御部4には音色設定や機能設定な
どを行うためのスイッチ群7および各種の設定状態など
を表示する表示器8が接続されており、A/Dコンバー
タ3、制御部4、スイッチ群7および表示器8は、演奏
者が腰に装着できるようにした図示しないベルト等に組
み込まれている。
【0018】図5は制御部4のブロック図である。制御
部4はマイクロコンピュータ等で構成されており、CP
U41には双方向バス42を介してタイマー回路43、
プログラムメモリ(ROM)44、ワーキングメモリ
(RAM)45、各種のインターフェイス回路46がそ
れぞれ接続されており、前記A/Dコンバータ3からの
曲げデータはインターフェイス回路46を介してCPU
41に取り込まれる。
【0019】プログラムメモリ44には図8〜図23に
フローチャートを示した制御プログラムが格納されてお
り、CPU41はこの制御プログラムに基づいてワーキ
ングメモリ45内に設定された各種のレジスタやフラ
グ、プログラムメモリ44に格納された定数やテーブル
を使用しながら制御を行う。
【0020】また、この実施例のタイマー回路43は8
msec毎に割り込み信号を発生し、CPU41は、こ
の割り込み信号によって8msec毎に各指と右手首に
ついての曲げデータの読み取り動作を行う。
【0021】(左指の機能選択)ここで、演奏用手袋
1,2の各指の状態に応じて設定される機能を説明す
る。右手の各指すなわちF0指〜F8指は、音名C〜G
またはF〜Cの5度音階からなる2種類の音階グループ
に設定され、この音階グループは左手の親指(F1指)
の曲げ伸ばし(オン/オフ)によって切換られる。ま
た、音階音のオクターブは、F3指とF5指のオン/オ
フの組合せによって決定される。
【0022】さらに、右手で指定された音高は、F7指
をオンすることにより半音上げられ、F9指をオンする
ことにより半音下げられる。F7指とF9指の両方がオ
ンされた場合には、スイッチ群7により優先モードまた
はトリルモードの何れのモードに設定されているかによ
って異なる動作をする。
【0023】優先モードとは、F7指とF9指の両方が
オンされた場合に何れか一方の指定を有効にするモード
であり、小指と薬指とを完全に独立して曲げ伸ばしする
ことが困難な演奏者のために設けられたモードである。
なお、優先モードにおける有効な指の指定はスイッチ群
7の操作により指定され、F7指による♯またはF9指
による♭の設定状態が後述説明するレジスタSSに設定
される。
【0024】また、トリルモードとは、F7指とF9指
の両方がオンされた場合に、そのとき指定されている音
高を中心とする連続した半音階の音高グループを右手指
に設定するようにしたモードである。
【0025】ここで、実施例の制御で使用するレジス
タ、フラグおよびテーブルの主なものについて説明す
る。 (配列レジスタ) new(i):指の曲げデータ spd(i):曲げデータの差分(速度情報)の最大値 ssp(i):指の動作開始を検出するときの曲げデー
タの閾値 s64(i):64msec差分データ s16(i):16msec差分データ
【0026】(レジスタ) wrt:手首の曲げデータ owrt:8サンプル前の手首の曲げデータ off:右手の指のキーオンのときの曲げの深さの最大
値 TC:サンプリングした各指と手首の曲げデータのバッ
ファ内のセット数 onn:現在発音中の指の指番号 max:ノートオン候補の指の指番号 buf:処理中にデータを退避するレジスタ OS:オクターブシートデータ ND:ノートコード KCD:キーコード
【0027】(配列フラグ) ST(i):指のキーオン/キーオフの状態を示す状態
フラグ EV(I):指のイベントの有無を示すイベントフラグ MST(I):指のストップ/ムーブを示すムーブフラ
グ MEV(I):指のムーブイベントの有無を示すムーブ
イベントフラグ
【0028】(テーブル) FD(p,q):左手の隣接する指の各曲げの深さを引
数とする関数値 FP(r):左手の隣接する指の組合せと曲げの大小関
係に応じて設定されたパラメータ VCT1(x):指の曲げの深さを引数とするベロシテ
ィカーブテーブルの値 VCT2(y):指の曲げの速度を引数とするベロシテ
ィカーブテーブルの値 FN0(k),FN1(k):フィンガノートテーブル
の値
【0029】なお、以下の説明およびフローチャートに
おいて、各レジスタ、フラグおよびテーブルを上記のラ
ベルで表記し、各レジスタ名、フラグ名テーブル名とそ
れらの内容については特に断らない限り同一のラベルで
表す。
【0030】(メインルーチン)図8は制御プログラム
のメインルーチン、図9〜図23は割込処理ルーチンお
よび各種のサブルーチンであり、制御部4に電源が投入
されると、CPU41は図8のメインルーチンの処理を
開始し、ステップS1で各レジスタのセットアップなど
の初期設定を行い、ステップS2の演奏用手袋処理、ス
テップS3の機能設定処理およびステップS4のその他
の処理を繰り返す。なお、ステップS3の機能設定処理
ではスイッチ群7の操作に応じた音色の切換えなどの処
理を行い、ステップS4のその他の処理では表示器8に
おける表示などに関する処理を行う。
【0031】(割込み処理ルーチン)図9に示した割込
み処理S10は前記のようにタイマー回路43からの割
り込み信号により8msec毎に起動され、ステップS
11でA/Dコンバータ3からの曲げデータを各指と右
手首について取り込んで、それぞれワーキングメモリ4
5内のリングバッファRBに書き込み、ステップS12
でタイムカウンタTCをインクリメントして復帰する。
【0032】なお、リングバッファRBは、図24に概
念的に示したように、各曲指の指番号と右手首の番号
(リスト番号)によって区別される複数(11個)のリ
ングバッファで構成されており、制御部4は、各指番号
とリスト番号をセットにして、図の矢印のように書き込
みアドレスをセット単位で更新しながら各指と右手首の
曲げデータを8msec毎に順次格納する。
【0033】(演奏用手袋処理ルーチン)図10に示し
たように、演奏用手袋処理S2では、ステップS21で
タイムカウンタTCが“1”以上であるか否かを判定し
て“1”以上でなければリングバッファRBに新たな曲
げデータが格納されていないと判定してメインルーチン
に復帰する。
【0034】タイムカウンタTCが“1”以上であれば
ステップS22でタイムカウンタTCをデクリメント
し、ステップS23でリングバッファRBから各指番号
(i=0〜9)についての曲げデータを取り込んでそれ
ぞれレジスタnow(i)に格納し、ステップS24で
曲げデータの正規化の処理を行う。
【0035】この正規化の処理では、各指番号(i=0
〜9)について、プログラムメモリ44に格納された定
数BTM(i),SLP(i)に基づいて次の1式の演
算を行い、各演算値をレジスタnew(i)および退避
用のレジスタhkn(i)に格納する。 {now(i)−BTM(i)}×SLP(i)+BTM(i)……(1) なお、この定数BTM(i)は各指をそれぞれ真っ直ぐ
伸ばした状態での曲げデータに相当するデータ、また、
定数SLP(i)はスケーリング値のデータであり、こ
の正規化の処理によって曲げデータが示す曲げ検出量の
ダイナミッックレンジの拡大や縮小が行われる。
【0036】ステップS24で正規化の処理が終了する
と、ステップS25で、この正規化された曲げデータn
ew(i),hkn(i)に基づいて後述説明するよう
に左手フィンガ処理を行う。
【0037】左手フィンガ処理S25が終了すると、ス
テップS26で、リングバッファRBから右手首につい
ての曲げデータを取り込んでレジスタwrtに格納する
とともに、さらにこの現在取り込んだ曲げデータの8サ
ンプル前(64msec前)の曲げデータをリングバッ
ファRBから取り込んでレジスタowrtに格納し、ス
テップS27で、この右手首についての曲げデータwr
t,owrtに基づいて後述説明するように右手リスト
処理を行う。
【0038】次に、ステップS28の右手フィンガ処理
で、後述説明するように、曲げデータnew(i)に基
づいて、楽音発生を指示するノートオン処理と消音を指
示するノートオフ処理を行う。そして、ステップS29
で、指がキーオン状態であるか否かを示す状態フラグS
T(i)の内容をフラグOST(i)に記憶し、さらに
指が曲げる方に動作中であるか否かを示すムーブフラグ
MST(i)の内容ををフラグOMST(i)に記憶
し、この演奏用手袋処理からメインルーチンに復帰す
る。
【0039】タイムカウンタTCは、前記のように割込
み処理S10によって曲げデータをリングバッファRB
に書き込む毎にインクリメントされるので、リングバッ
ファRB内に書き込まれる曲げデータについて上記の演
奏用手袋処理が逐次行われる。
【0040】(左手フィンガ処理の概略)図6は左手フ
ィンガ処理S25の概略を示す図であり、ステップL1
〜L3の順で左手の指について次のような処理を行う。 (ステップL1)先ず、親指以外の隣接する2つの指
(F3指とF5指、F5指とF7指、F7指とF9指)
のそれぞれの組について一方の指を曲げることによって
他方の指がつられて曲がる現象を考慮し、つられて曲が
る指の曲げデータを、2つの指の曲げの深さに応じて設
定されたパラメータと各指の組合せに応じて設定された
パラメータとによって補正する(つられ補正)。
【0041】(ステップL2)曲げ量の変化が急激にな
る場合を考慮して、曲げデータにフィルタリング処理を
施す。 (ステップL3)曲げデータに基づく指のキーオン/キ
ーオフの判定、キーオン/キーオフの各イベントの検
出、イベント検出時のオフイベント処理およびオンイベ
ント処理を行う。なお、このオフイベント処理およびオ
ンイベント処理によって右手の音高などの前記の各モー
ドが設定され、そのとき右手指でキーオンされた指に対
応する楽音の発生と、発音中の指についての消音とが行
われる。
【0042】(右手フィンガ処理の概略)図7は右手フ
ィンガ処理S28の概略を示す図であり、ステップR1
〜R6の順で右手の指について次のような処理を行う。 (ステップR1)先ずイニシャルタッチのベロシティ値
を得るための指の正の速度(深く曲げる側の速度)を検
出してこの速度情報(曲げデータの差分)をレジスタs
pd(i)に格納する。また、発音中の指について、曲
げデータの正の変化があるときにこの曲げデータをレジ
スタoffに格納してキーオフ判定の基準を更新する。
これによって、発音中の指の曲げの深さに応じたキーオ
フの判定基準が設定され、深く曲げた状態から指を戻す
ときのキーオフのタイミングの遅れを無くす。
【0043】(ステップR2)停止指に対する動作開始
を検出するための閾値を指の曲げ量に応じて演算してレ
ジスタssp(i)に設定するとともに、指の停止検出
(ストップ検出)と動作開始検出(ムーブ検出)を行う
ための速度情報として、64msec差分データと16
msec差分データをそれぞれレジスタs64,s16
に格納する。 (ステップR3)停止指に対するムーブ検出、動作指に
対するストップ検出およびムーブ/ストップ動作のイベ
ント(ムーブイベント)を検出し、動作状態を示すムー
ブフラグMST(i)とイベントフラグMEV(i)に
それぞれ“0”または“1”をセットする。
【0044】(ステップR4)右手首のストップまたは
ムーブの状態に応じて発音する指を決定して、その指番
号をレジスタmaxに格納し、レジスタoffに基づい
てキーオフの判定とノートオフ処理を行う。 (ステップR5)レジスタmaxの指についてのストッ
プイベント検出、ベロシティ値を求めるイニシャルタッ
チ処理およびノートオン処理を行う。 (ステップR6)発音した指に対する再発音可能化と、
手首のふれや指のわずかな動きによる誤発音を防止する
ための処理を行う。ここで、ステップR1の処理でキー
オフのタイミングの遅れを防止し、さらに、ステップR
2,R3の処理でストップ検出によって発音を制御する
ようにしているので、演奏動作に適したタイミングで楽
音が発生される。
【0045】(左手フィンガ処理の詳細)図11と図1
2は左手フィンガ処理S25を示すフローチャートであ
る。左手フィンガ処理S25において、ステップL11
でF3指とF5指について、ステップL14でF5指と
F7指について、さらにステップL17でF7指とF9
指について、それぞれ指の曲げデータhkn(i),h
kn(i+2)の大小関係を比較し、ステップL12ま
たはステップL13、ステップL15またはステップL
16、ステップL18またはステップL19で、それぞ
れ大小関係に応じて、次式の演算を行って、つられ補正
を行う。
【0046】 hkn(3)>hkn(5)の場合 hbuf=( hkn(3)−hkn(5)) ×FD(hkn(5),hkn(3)) ……(1) new(5)= hkn(5) − hbuf ×FP(0) ……(2) hkn(5)≧hkn(3)の場合 hbuf=( hkn(5)−hkn(3)) ×FD(hkn(3),hkn(5)) ……(3) new(3)= hkn(3) − hbuf ×FP(1) ……(4) hkn(5)>hkn(7)の場合 hbuf=( hkn(5)−hkn(7)) ×FD(hkn(7),hkn(5)) ……(5) new(7)= hkn(7) − hbuf ×FP(2) ……(6) hkn(7)≧hkn(5)の場合 hbuf=( hkn(7)−hkn(5)) ×FD(hkn(5),hkn(7)) ……(7) new(5)= hkn(5) − hbuf ×FP(3) ……(8) hkn(7)>hkn(9)の場合 hbuf=( hkn(7)−hkn(9)) ×FD(hkn(9),hkn(7)) ……(9) new(9)= hkn(9) − hbuf ×FP(4) ……(10) hkn(9)≧hkn(7)の場合 hbuf=( hkn(9)−hkn(7)) ×FD(hkn(7),hkn(9)) ……(11) new(7)= hkn(7) − hbuf ×FP(5) ……(12)
【0047】なお、FD(hkn(i+2),hkn(i)) およびFD
(hkn(i),hkn(i+2)) はF3指、F5指、F7指およびF
9指の隣接する各組毎に曲げの浅い指と深い指の各曲げ
データ(曲げの深さ)を引数とする関数値、FP(j) は
各組の曲げデータの大小関係にそれぞれ対応して設定さ
れたパラメータであり、この関数値FDとパラメータF
Pはテーブルデータとしてプログラムメモリ44に格納
されている。
【0048】上記の演算は前記のようなつられ補正を行
う処理で、特開平2−304489号公報に開示されて
いる技術と同様に、隣接する指のうち曲げの浅い方の指
の曲げデータを隣の指との曲げ量の差と指の組合せに応
じて補正するものである。これは、例えば指を曲げてい
くときに、曲げ量が浅いときには隣の指をあまり引きず
らないが曲げ量が深くなるほど強く引きずるという現象
があるので、曲げの深さに応じて補正量を適性な値にす
るものである。
【0049】さらに、この実施例では、関数値FDを乗
算することにより、指の曲げ量に応じて補正量を変更す
るようにしている。ここで、例えば深く曲げている指の
曲げ量が同じでも曲げの浅い指の曲げ量が深くなるほ
ど、この関数値FDの値は小さな値をとるようになって
いる。すなわち、補正される指の曲げ量が深いときには
補正量を小さくして、実際のつられ効果に応じた補正を
行う。
【0050】上記のつられ補正を行うと、ステップL2
1で指番号iを“0”にリセットし、ステップL22の
判定とステップL26の指番号iのインクリメントによ
り、ステップL23〜ステップL25の処理で左手と右
手の各指の曲げデータnew(i)についてフィルタリ
ングの処理を行う。また、この処理では、フィルタリン
グにより補正した曲げデータを補正データリングバッフ
ァNRBに順次書き込む。なお、この補正データリング
バッファNRBは、割込み処理S10で曲げデータを書
き込むリングバッファRBと同様にワーキングメモリ4
5内に設定されている。
【0051】まず、ステップL23で補正データリング
バッファNRBから1サンプル前の曲げデータ(補正後
の曲げデータ)を読み出してレジスタbufに書き込
み、ステップL24で1サンプル前の曲げデータから現
在の曲げデータnew(i)までの変化量を半分にし、
ステップL25で、このフィルタリング処理した曲げデ
ータnew(i)を補正データリングバッファNRBに
書き込む。この処理を左手と右手の各指の曲げデータn
ew(i)について行い、次の処理に進む。
【0052】図12に示したように、ステップL31で
指番号iを“1”にセットし、ステップL32の判定
と、ステップL302による指番号iの“2”のインク
リメントにより、ステップL33以降の処理を左手の各
指について繰り返す。
【0053】ステップL33で、状態フラグST(i)
を読み取って指の現在までの状態を判定し、ST(i)
が“0”のとき(現在までオフの状態)は、ステップL
34で現在の曲げデータ(補正データリングバッファの
データ)new(i)の値が各指に対応して設定された
所定の閾値を越えているか否かを判定し、越えていれば
ステップL35で状態フラグST(i)を“1”にセッ
トし、越えていなければステップL38の処理に進む。
【0054】また、ステップL33の判定でST(i)
が“1”であったとき(現在までオンの状態)は、ステ
ップL36で、現在の曲げデータnew(i)にヒステ
リシス値αを加算した値が、前記の閾値より小さくなる
か否かを判定し、小さくなればステップL37で状態フ
ラグST(i)を“0”にリセットし、小さくなければ
ステップL38の処理に進む。
【0055】ここで、ステップL34とステップL36
の判定に用いる閾値は、前記の定数データBTM(i)
(指を真っ直ぐ伸ばした状態の値)にオフセット値OF
S(i)を加算した値で、この閾値まで曲げられた時に
キーオンになり、この閾値からヒステリシス分(α)だ
け伸ばされたときにキーオフになる。
【0056】上記のようにキーオン/キーオフの判定を
行うと、ステップL38でイベントの検出を行う。すな
わち、メインルーチンで記憶したフラグOST(i)と
現在の状態フラグST(i)との排他的論理和をとっ
て、その結果をイベントフラグEV(i)に格納する。
次に、ステップL39でイベントフラグEV(i)が
“1”であるか否かを判定し、“1”でなければステッ
プL302に進み、“1”であればステップL301で
状態フラグST(i)が“1”または“0”のいずれで
あるかを判定する。
【0057】ステップL301で状態フラグST(i)
が“1”であればオンイベント検出と判定してステップ
S20のオンイベント処理を行い、状態フラグST
(i)が“0”であればオフイベント検出と判定してス
テップS30のオフイベント処理を行う。このように、
左手の各指についてのキーオン/キーオフの判定、オン
イベント処理またはオフイベント処理が終了すると手袋
処理ルーチンに復帰する。なお、ステップS20,S3
0のオンイベント処理とオフイベント処理については後
述説明する。
【0058】(右手リスト処理の詳細)図13は右手リ
スト処理S27のサブルーチンを示すフローチャートで
あり、この右手リスト処理S27では、ステップC1〜
ステップC3によるカウンタWCNTのカウントダウン
とステップC4〜ステップC6によるカウンタ値WWT
の設定を行いながら、手首が内側(プラス側)と外側
(マイナス側)のある一定量だけ曲げられたか否かを検
出し、プラス側に一定量以上曲げられた後の状態かマイ
ナス側に一定量以上曲げられた後の状態かを示すフラグ
WPFをセットする。すなわち、手首のふれを検出す
る。
【0059】そして、ふれを検出するとこの時からカウ
ンタWCNTのカウントダウンによって一定時間だけフ
ラグWSTを“1”にし、一定時間が経過するとフラグ
WSTを“0”にする。また、この右手リスト処理S2
7を開始するときには、レジスタwrtには現在の曲げ
データが格納されており、レジスタowrtには8サン
プル前の曲げデータが格納されている。
【0060】そこで、ステップW1で、レジスタwdの
内容にレジスタwrtの曲げデータを加算してレジスタ
owrtの曲げデータを減算し、それをレジスタwdに
格納する。なお、このステップW1の処理により、右手
リスト処理S27が繰り返される毎に、レジスタwd内
には現在から過去8個の曲げデータの総和が格納される
ことになり、この曲げデータの総和wdの値に基づいて
手首のふれが検出される。
【0061】ステップC1でカウンタ値WCNTが
“0”か否かを判定し、“0”であればステップW3に
進み、“0”でなければ、ステップC2でカウンタ値W
CNTをデクリメントし、ステップC3でフラグWST
が“1”でかつカウンタ値WCNTが“0”になってい
るか否かを判定する。ステップC3で条件が満足されな
ければそのままステップW3に進み、条件が満足されれ
ばステップW2でフラグWSTを“0”にリセットして
ステップW3に進む。
【0062】次に、ステップW3でフラグWPFが
“1”であるか“0”であるかを判定し、“0”のとき
はステップW4で8サンプルの総和wdが所定の正の閾
値(WSEN)以上であるか否かを判定し、閾値(WS
EN)未満であればステップW8に進み、閾値(WSE
N)以上であればステップW5でフラグWPFを“1”
にセットしてステップW8に進む。
【0063】また、ステップW3でフラグWPFが
“1”のときはステップW6で8サンプルの総和wdが
所定の負の閾値(−WSEN)以下であるか否かを判定
し、閾値(−WSEN)より大きければステップW8に
進み、閾値(−WSEN)以下であればステップW7で
フラグWPFを“0”にリセットしてステップW8に進
む。
【0064】次に、ステップW8でイベントの検出を行
う。すなわち、前回の処理によって記憶したフラグOW
PFと現在のフラグWPFとの排他的論理和をとって、
その結果をイベントフラグWEVにセットする。イベン
トフラグWEVをセットすると、ステップC4でイベン
トフラグWEVが“1”であるか否かを判定し、“1”
でなければステップW9に進み、“1”であればステッ
プC5でフラグWSTが“0”であるか否かをする。
【0065】ステップC5でフラグWSTが“1”であ
ればステップW9に進み、フラグWSTが“0”であれ
ば、ステップC6でフラグWSTを“1”にセットする
とともにカウンタWCNTに一定値WWTをセットし、
ステップW9に進む。そして、ステップW9で現在のフ
ラグWPTを旧のフラグOWPTとして記憶し、手袋処
理ルーチンに復帰する。このように、右手リスト処理で
は、手首のふれを検出してこのふれの検出から一定時間
だけフラグWSTを“1”にする処理を行っており、こ
のフラグWSTが“1”であるか“0”であるかに応じ
て右手の指の処理を変えるようにしている。
【0066】(右手フィンガ処理の詳細)図14〜図1
9は右手フィンガ処理S28のサブルーチンを示すフロ
ーチャートである。図14の右手フィンガ処理S28に
おいて、ステップR11で指番号iを“0”にリセット
し、ステップR12の判定と、ステップR19による指
番号iの“2”のインクリメントにより、ステップR1
3以降の処理を右手の各指について繰り返す。
【0067】ステップR13で、補正データリングバッ
ファNRBからi番目の指の8サンプル前の曲げデータ
を読み取ってレジスタbufに書き込み、ステップR1
4で現在の曲げデータnew(i)からレジスタbuf
の曲げデータを減算して、この減算値(8サンプル前と
の差分)をレジスタbufに書き込む。
【0068】次に、ステップR15でこの差分bufが
正であるか否かを判定し、差分bufが正でなければス
テップR16でレジスタspd(i)に“0”を格納
し、差分bufが正であれば、ステップR17で差分b
ufがレジスタspd(i)の内容より大きいか否かを
判定して、大きければステップR18で差分bufをレ
ジスタspd(i)に格納する。すなわち、毎回検出さ
れる差分bufが正となっている間で最大値となる値が
各指毎にレジスタspd(i)に格納される。
【0069】上記の処理により、現在曲げ動作を行って
いる指については、8サンプル(64msec)間の最
大の差分、すなわち、最大速度の情報がレジスタspd
(i)に格納される。そして、このレジスタspd
(i)の値はイニシャルタッチのベロシティ値を求める
際に速度情報として利用される。
【0070】次に、ステップR101で右手の親指以外
の指(F2指、F4指、F6指、F8指)の曲げデータ
の平均をとってレジスタaveに格納し、ステップR1
02で、現在発音中の指の状態フラグST(onn)が
“1”であるか否かを判定し、状態フラグST(on
n)が“1”でなければ図15のステップR21以降の
処理に進む。なお、レジスタaveの値はイニシャルタ
ッチのベロシティ値を求める際の曲げの深さの情報とし
て利用される。
【0071】ステップR102で状態フラグST(on
n)が“1”であれば、ステップR103で発音中の指
の曲げデータnew(onn)がレジスタoffの内容
より大きいか否かを判定し、大きければステップR10
4で曲げデータnew(onn)をレジスタoffに格
納し、大きくなければ図15のステップR21以降の処
理に進む。すなわち、上記の処理により、発音中で現在
もオン状態である指がさらに深く曲げるような動作を行
っているときに、指の曲げ量が深くなるにしたがって曲
げデータが最大値としてレジスタoffに格納され、後
述説明するようにこの曲げの深さのデータがキーオフ判
定の基準として用いられる。
【0072】図15において、ステップR21で指番号
iを“0”にリセットし、ステップR22の判定と、ス
テップR207による指番号iの“2”のインクリメン
トにより、ステップR23以降の処理を右手の各指につ
いて繰り返す。
【0073】先ず、ステップR23で補正データリング
バッファの現在の曲げデータから定数βを減算してレジ
スタbufに格納し、ステップR24でこのレジスタb
ufの値が負であれば値を“0”にして下限“0”のリ
ミッタをかける。次に、ステップR25で次式6の演算
を行って、その演算値をムーブ検出用の速度の閾値とし
てレジスタssp(i)に格納し、ステップR26でこ
のレジスタssp(i)の値に上限値SPMAXと下限
値“0”のリミッタをかける。 SPO(i)×(1−buf×γ) ……(6) ここで、SPO(i)とγは定数であり、曲げデータn
ew(i)とこの演算値との関係は図25に示したよう
になる。
【0074】次に、ステップR27でカウンタCNT
(i)が“8”以上であるか否かを判定し、“8”以上
であればステップR28でカウンタCNT(i)を
“8”にセットしてステップR201に進み、“8”以
上でなければステップR29でカウンタCNT(i)を
インクリメントしてステップR201に進む。ステップ
R201では、カウンタCNT(i)が“2”以上であ
るか否かを判定し、“2”以上であればステップR20
2でレジスタbufに“2”をセットしてステップR2
04に進み、“2”以上でなければステップR203で
カウンタCNT(i)の値をレジスタbufにセットし
てステップR204に進む。
【0075】ここで、カウンタCNT(i)は、番号i
の指のストップ検出によってリセットされるもので、こ
のステップR27からステップR203の処理を繰り返
す毎に増加して最大“8”の値が保持され、レジスタb
ufの値は“0”,“1”,“2”と増加して最大
“2”の値が保持される。
【0076】このカウンタCNT(i)の値とレジスタ
bufの値は、現在の曲げの速度情報を得るために補正
データリングバッファNRBから読み出す過去のデータ
を指定するために用いられ、カウンタCNT(i)の
“8”によって64msec前の曲げデータが読み出さ
れ、レジスタbufの“2”によって16msec前の
曲げデータが読み出される。すなわち、ステップR20
4で、補正データリングバッファNRBから“CNT
(i)”サンプル前の曲げデータと“buf”サンプル
前の曲げデータを読み出して、それぞれレジスタs64
(i)とレジスタs16(i)に格納する。
【0077】次に、ステップR205で、現在の曲げデ
ータnew(i)からレジスタs64(i)の値を減算
した差分データと現在の曲げデータnew(i)からレ
ジスタs16(i)の値を減算した差分データとをそれ
ぞれレジスタs64(i)とレジスタs16(i)に格
納し、ステップR206で各レジスタs64(i),s
16(i)の値に下限“0”のリミッタをかけてステッ
プR207に進む。上記の処理により、現在の曲げの速
度に対応する64msecの差分データと16msec
の差分データが得られ、ムーブ検出に用いられる。以上
の処理が右手の各指番号について終了するとステップR
22から図16のステップR31に進む。
【0078】図16の処理では、ステップR31の指番
号iのリセット、ステップR32の判定およびステップ
R302による指番号iの“2”のインクリメントによ
り、ステップR33以降の処理を右手の各指について繰
り返す。
【0079】ステップR33で、ムーブフラグMST
(i)を読み取って、指が現在まで動作中であったか停
止中であったかを判定し、ムーブフラグMST(i)が
“0”のとき(前回まで停止中)は、ステップR34で
64msec差分データs64(i)がレジスタssp
(i)の値を越えているか否かを判定し、越えていなけ
ればそのままステップR301に進み、越えていればス
テップR35でレジスタm64(i)に64msec差
分データs64(i)を格納するとともに、指が停止中
から現在動作に入ったと判定して(ムーブ検出)ムーブ
フラグMST(i)を“1”にセットし、ステップR3
01に進む。
【0080】ここで、上記ステップR34の判定におけ
るレジスタssp(i)の値は、前記ステップR26で
得られたムーブ検出用の速度の閾値であり、図25に示
したように、この閾値ssp(i)は指の曲げ量が深い
ほど小さく、曲げ量が浅いほど大きな値になっている。
このため、曲げ量が深いときには浅いときに比べて遅い
動作で動作開始と判定されるようになり、曲げ量が深い
ときのムーブ検出の遅れが防止される。
【0081】ステップR33の判定でムーブフラグMS
T(i)が“1”のとき(前回まで動作中)は、ステッ
プR36で64msec差分データs64(i)がレジ
スタm64(i)の値を越えているか否かを判定し、越
えていなければそのままステップR38に進み、越えて
いればステップR37でレジスタm64(i)に64m
sec差分データs64(i)を格納してステップR3
8に進む。これによって、動作中に曲げる速度が早くな
ると、このときの64msec差分データs64(i)
が順次速度の最大値としてレジスタm64(i)に格納
される。
【0082】ステップR38では、16msec差分デ
ータs16(i)が速度の最大値m64(i)の8分の
1以下になったか否かを判定し、最大値m64(i)の
8分の1以下でなければステップR301に進み、最大
値m64(i)の8分の1以下であれば指が停止したと
判定して(ストップ検出)ステップR39でカウンタC
NT(i)とムーブフラグMST(i)を“0”にリセ
ットしてステップR301に進む。
【0083】なお、最大値m64(i)の8分の1と
は、最大速度を8msecの差分データ(平均値)表現
したものであり、16msec差分データs16(i)
がこの8msec差分データより小さくなったとき、す
なわち、現在の速度が最大速度の略2分の1になったと
きにストップ検出と判定される。これによって、指の動
作に応じたタイミングでキーオンとなり、キーオンの遅
れが防止される。
【0084】次に、ステップR301では、前記手袋処
理ルーチンのステップS26で記憶した旧のフラグOM
ST(i)とムーブフラグMST(i)の排他的論理和
をとって、ムーブイベントまたはストップイベントの検
出を行い、その結果をムーブイベントフラグMEV
(i)に格納してステップR302に進む。上記のよう
に右手の各指について、ムーブ検出、ストップ検出およ
びイベント検出の処理を行うと、ステップR32から図
17のステップR41に進む。
【0085】ステップR41では、前記右手リスト処理
でセットされたフラグWSTを読み取って、右手首が現
在まで動作中であったか停止中であったかを判定する。
そして、フラグWSTが“0”のときは(前回まで停止
中)、ステップR42で、右手の指でムーブフラグMS
T(i)または旧のOMST(i)が“1”であるのも
ののなかからnew(i)の値が最大のものを検出し、
その指番号をノートオンの候補としてレジスタmaxに
格納し、ステップR46に進む。
【0086】また、フラグWSTが“1”のときは(前
回まで動作中)、ステップR43で、右手の指のなかで
動作に係わりなくnew(i)の値が最大のものを検出
して、その指番号をノートオンの候補としてレジスタm
axに格納し、ステップR44に進む。
【0087】なお、手首が動作中の場合には、動作中の
指であっても浅くしか曲げられていないものはノートオ
ンの候補としては不適当なものであり、また、曲げセン
サ10に対して停止している指であっても、最も深く曲
げた指については手首を曲げることによって発音動作を
行おうとしている可能性があるため、上記ステップR4
3のような処理を行っている。
【0088】ステップR44では、状態フラグST(m
ax)が“1”であるか否か、すなわち、ノートオンの
候補の指(一番深い指)がすでに発音中であるか否かを
を判定し、発音されていなければそのままステップR4
6に進み、発音されていればステップR45でレジスタ
maxに発音無効のデータ“&HFF”を書き込んでス
テップR46に進む。
【0089】次に、ステップR46で、動作を確実にす
るために状態フラグST(onn)が“1”であるか否
かを判定し、“1”であればステップR47以降でノー
トオフの処理を行い、“1”でなければ図18のステッ
プR51に進む。状態フラグST(onn)が“1”の
ときは、ステップR47でレジスタoffの値(指がど
こまで曲げられたかを示す最大値)から定数FBTMを
減算してレジスタbufに書き込み、ステップR48で
レジスタbufの値に下限“0”のリミッタをかける。
すなわち、レジスタoffの値が定数FBTMより大き
ければ両者の差分をレジスタbufに格納し、offの
値が定数FBTMより小さければ“0”を格納する。
【0090】次に、ステップR49で、発音中の指の曲
げデータnew(onn)が次式7の値以下であるか否
かを判定する。 FBTM+buf×OFS(onn) ……(7) なお、OFS(i)は定数、この演算値はノートオフ判
定用の閾値であり、レジスタoffの値とこの閾値との
関係は図26に示したようになる。上記のステップS4
9で、曲げデータnew(i)がこの閾値より大きいと
きには図18のステップR51に進み、閾値以下の場合
にはステップR401でノートオフ処理を行い、ステッ
プR402で状態フラグST(onn)を“0”にリセ
ットして図18のステップR51に進む。
【0091】ここで、図26に示したように上記式7の
閾値は指の曲げ量offが深いほど大きく、浅いほど小
さな値になっている。このため、指の曲げ量が定数FB
TMより浅い場合は必ずノートオフとなるが、これより
も深く曲げられているときには、この深く曲げた量に応
じて閾値が大きくなり、曲げ量が深いときには深い位置
でノートオフと判定される。これによって、曲げ量が深
いときのノートオフの遅れが防止される。なお、この実
施例は単音発音の場合であり、ステップR401のノー
トオフ処理ではノートオフを音源回路5に転送して発音
を停止させる。
【0092】次に、図18のステップR51で、レジス
タmaxの値が無効データ“&HFF”でなくかつ発音
禁止のフラグTF(max)が“1”でないという条件
を満足するか否かを判定する。なお、フラグTF(i)
は、指番号iについてTF(i)が“1”のとき発音禁
止、TF(i)が“0”のとき発音可能を示す。ステッ
プR51で条件が満足されれば、すなわち、ノートオン
の候補の指について現在発音中でなくかつ発音可能であ
る場合に、ステップR52の処理を行い、条件が満足さ
れない場合は、図19のステップR61に進む。
【0093】次に、ステップR52で、ムーブイベント
フラグMEV(max)が“1”でかつムーブフラグM
ST(max)が“0”であるという条件を満足するか
否かを判定し、条件が満足されればステップR53で状
態フラグST(onn)とフラグTF(onn)を
“0”にリセットしてステップR54に進む。また、条
件が満足されなければ図19のステップR61に進む。
ステップR52の判定は、ノートオンの候補の指につい
て、イベントがあり現在停止状態であるか否かを判定す
ることにより、ノートオンの候補の指のストップイベン
トを検出(確認)するものである。また、ステップR5
3の処理は、すでにノートオンになっていた指につい
て、ノートオフの状態を設定するものである。
【0094】次に、ステップR54で、ノートオン候補
の指の曲げデータnew(max)について右手の指の
曲げデータの平均値aveからの偏差をレジスタbuf
に格納して、ステップR55でレジスタbufの値に下
限“0”のリミッタをかけ、ステップR56で、レジス
タbufの値とレジスタspd(i)の値からベロシテ
ィ値を求めて、レジスタvelに格納する。
【0095】なお、ステップR56のベロシティ値は、
偏差buf(深さ)を引数としてベロシティカーブテー
ブルVCT1から読み出した値VCT1(buf)と、
指の速度情報spd(i)を引数としてベロシティカー
ブテーブルVCT2から読み出した値VCT1(bu
f)との和によって求める。
【0096】上記のようにベロシティ値velを求める
と、ステップS40で、後述説明するようにノートオン
処理を行う。このノートオン処理が終了すると、ステッ
プR57で状態フラグST(max)とフラグTF(m
ax)を“1”にして、現在発音した指のキーオン状態
を記憶するとともにその後の発音を禁止し、レジスタm
axの指番号をレジスタonnに格納する。また、現在
の指の曲げデータnew(max)をノートオフ検出基
準(深さ)の初期値としてレジスタoffに設定すると
ともに、発音禁止解除の処理を行うために現在の指の曲
げデータnew(max)をレジスタtrgに初期値と
して設定し、図19のステップR61に進む。
【0097】図19のステップR61において、フラグ
TF(onn)が“1”であるか否かを判定し、“1”
でなければ(発音禁止でなければ)ステップR66に進
み、“1”であれば(発音禁止であれば)ステップR6
2で現在発音中の指の曲げデータnew(onn)がレ
ジスタtrgの値以下であるか否かを判定する。
【0098】ステップR62の判定で曲げデータnew
(onn)がレジスタtrgの値より大きければ、ステ
ップR63で曲げデータnew(onn)によってレジ
スタtrgの値を書き換えてステップR66に進む。ま
た、曲げデータnew(onn)がレジスタtrgの値
以下であれば、ステップR64で、曲げデータnew
(onn)と一定値δとの加算値がレジスタtrgの値
より小さいか否かを判定し、小さくなければステップR
66に進み、小さければステップR65でフラグFT
(onn)を“0”にリセットして発音禁止を解除し、
ステップR66に進む。
【0099】ここで、ステップR62とステップR63
により、現在発音中の指がさらに曲げられて行く状態で
は、レジスタtrgの値が大きくなり、ステップR64
の判定により、現在発音中の指がこのレジスタtrgの
値よりも一定値δだけ小さくなった時点で発音禁止が解
除されることになる。すなわち、キーオンになった指
は、最も深く曲げた位置から一定値δだけもどせば再発
音が可能になり、一定値δだけ戻さなければ再発音され
ることがない。これにより、再発音可能化と誤発音防止
が行われる。
【0100】次に、ステップR66で、レジスタmax
の値が無効データ“&HFF”でなくかつ“0”でない
という条件を満足するか否かを判定し、条件を満足しな
ければ手袋処理ルーチンに復帰し、条件を満足すれば、
ステップR67でムーブイベントフラグMEV(ma
x)が“1”でかつムーブフラグMST(max)が
“0”であるという条件を満足するか否かを判定する。
このステップR67で条件を満足しなければ手袋処理ル
ーチンに復帰し、条件を満足すればステップR68で右
手の親指以外の全指についてムーブフラグMST(i)
とカウンタCNT(i)に“0”を書き込んで手袋処理
ルーチンに復帰する。
【0101】すなわち、maxが示す指が親指以外の指
でストップイベントが検出されたときは、右手の親指以
外の全指について、全て停止状態であると判定させ、あ
る指がキーオンで発音したときには、他の指では急激に
発音されないようにして誤発音の防止を行う。以上の処
理で、左手指と右手指のキーオン/キーオフが検出さ
れ、それぞれ、左手指のオンイベント処理S20、左手
指のオフイベント処理S30、右手指のノートオン処理
S40が行われる。
【0102】図20は左手フィンガ処理におけるオンイ
ベント処理S20およびオフイベント処理S30で呼び
出されるサブルーチンのフローチャートであり、オンイ
ベント処理S20ではステップL41でレジスタL
(i)に“1”をセットしてステップL43に進み、オ
フイベント処理S30ではステップL42でレジスタ
(i)に“0”をセットしてステップL43に進む。
【0103】ステップL43では指番号iの値に応じて
分岐し、i=“1”の場合は前記図12の左手フィンガ
処理ルーチンに復帰し、i=“3”または“5”の場合
はステップL44で図21のオクターブシフト処理を行
って左手フィンガ処理ルーチンに復帰し、さらにi=
“7”または“9”の場合はステップL45で図22の
半音シフト・トリル処理を行って左手フィンガ処理ルー
チンに復帰する。
【0104】図21のオクターブ処理L44では、ステ
ップL51で、L(3),L(5)のオン/オフ状態
(“1”/“0”)に基づいて図27のオクターブシー
トテーブルOSHTを参照し、オクターブシートデータ
OSをレジスタOSにセットして復帰する。
【0105】図22の半音シフト・トリル処理L45で
は、先ずステップL61で、L(7),L(9)のオン
/オフ状態を判断し、L(7),L(9)が共にオフの
場合にはステップL62で半音シフトレジスタHSに
“0”をセットし、L(7)のみがオンの場合にはステ
ップL63でレジスタHSに“1”をセットし、さら
に、L(9)のみがオンの場合にはステップL64でレ
ジスタHSに“−1”をセットする。そして、ステップ
L65でトリルオンフラグTONをリセットして復帰す
る。
【0106】一方、ステップL61で、L(7),L
(9)が共にオンの場合には、ステップL66でトリル
モードフラグTMを判定し、TMが“0”の場合にはス
テップL67以降の優先モードの処理を行い、TMが
“1”の場合にはステップL68以降のトリルモードの
処理を行う。
【0107】ステップL67では、レジスタSSの値に
応じて♯,♭の何れが優先であるかを判断し、♯が優先
であればステップL671でレジスタHSに“+1”を
セットしてステップL673でトリルオンフラグTON
をリセットして復帰し、♭が優先であればステップL6
72でレジスタHSに“−1”をセットしてステップL
673でトリルオンフラグTONをリセットして復帰す
る。
【0108】ステップL68ではトリルオンフラグTO
Nを判定し、TONが“0”の場合にはそのまま復帰
し、TONが“1”の場合には、ステップL681で、
半音階の音高グループを決定する際の基準となる音高
(トリルベースTB)を設定し、ステップL682でト
リルオンフラグTONを“1”にセットして復帰する。
なお、レジスタjは、右手のノートオン処理において、
キーオンとされている右手指の指番号の2分の1に
“1”を加算した値(kの値)になっており、トリルベ
ースTBは現在指定されているキーコードKCDからj
を減算した値に設定される。
【0109】図23は右手フィンガ処理におけるノート
オン処理S40を示すフローチャートであり、このノー
トオン処理S40が起動されるときにはキーオンが検出
された右手指の指番号maxとイニシャルタッチのベロ
シティ値velが設定されている。
【0110】先ず、ステップR71で、レジスタkに指
番号maxの2分の1に“1”を加算した値をセットす
る。なお、このレジスタkの値は右手の各指の親指から
数えた順番に対応する値である。次に、ステップR72
で、トリルオンフラグTONが“1”であるか否かを判
定し、“1”である場合にはステップR73でTB+k
をキーコードレジスタKCDにセットしてステップR7
9に進む。
【0111】一方、トリルオンフラグTONが“0”の
ときには、ステップR74でL(1)のオン/オフ状態
を判定して、オフであればステップR75でkに基づい
て図28に示したフィンガノートテーブルFNTからF
N0(k)を読み出してレジスタNDにセットし、L
(1)がオンであればステップR76でフィンガテーブ
ルFNTからFN1(k)を読み出してレジスタNDに
セットする。
【0112】次に、ステップR77でOS×12+ND
+HSをキーコードレジスタKCDにセットし、ステッ
プR78でレジスタjにレジスタkの値をセットしてス
テップR79に進む。そして、ステップR79で、音源
回路5に対してキーコードKCDとベロシティ値vel
およびノートオン信号を送って楽音を発生し、右手フィ
ンガ処理ルーチンに復帰する。
【0113】以上の実施例において、動いている指の速
度が最大速度の略2分の1になるとストップ検出と判定
されてキーオンが検出されるので、一定の曲げ量でキー
オンを検出する場合よりも指の動作に応じたタイミング
で楽音が発生される。また、指の曲げ動作を開始したも
のについてストップ検出を行い、この指の曲げ量が深い
ほど遅い速度でも動作開始(ムーブ検出)と判定するよ
うにしたので、発音のタイミングが指の曲げ位置に応じ
た適性なものとなる。さらに、ノートオンのあった指に
ついて、最大どこまで曲げられたかを検出して、それに
おうじてノートオフの閾値を設置するようにしているの
で、一定の伸ばし量でキーオフを検出する場合よりもノ
ートオフのタイミングの遅れが防止できる。
【0114】また、手首にふれを検出して、手首がふれ
ている間は、指自体の動作に係わりなく一番曲げられて
いる指をノートオンの候補にしているので、手首がふれ
ているときの指の揺れによる誤発音を防止しながら、手
首による演奏を行うこともできる。また、隣接する指
(この例では左手指)のうち曲げ量の浅い指が深い指に
つられて動く効果を補正することができるとともに、こ
の補正される指の曲げの深さが深くなるほど補正量を少
なくしているので、実際のつられの効果をより正確に補
正することができる。また、指の速度情報だけでなく指
の曲げの深さもイニシャルタッチのベロシティ値に効か
せているので、指を深く曲げることにより音を大きくす
るような場合に、曲げ量が深くて早く動かしにくくなっ
ても、イニシャルタッチの効果を得ることができる。
【0115】
【発明の効果】本発明によれば、手の指の曲げ量に基づ
いてキーオンとキーオフを判定してこのキーオンによる
楽音の発生とキーオフによる楽音の消音を制御するよう
にした楽音制御装置において、指の曲げの速度に基づい
て指の停止を検出し、この指の停止検出によりキーオン
を判定して楽音を発生するようにしたので、発音のタイ
ミングが演奏者の指の動作に応じたものとなる。また、
本発明によれば、キーオンになった指の曲げ量の最大深
さを検出するとともにこの最大深さより浅い曲げ量でこ
の最大深さに追随する閾値を発生し、キーオンになった
指の曲げ量と上記閾値とによってキーオフを判定して楽
音を消音するようにしたので、深く曲げた状態からキー
オフする場合など、深さに応じた適切な位置でキーオフ
とすることができ、消音のタイミングが演奏者の指の動
作に応じたものとなる。したがって、本発明の楽音制御
装置によれば、演奏動作に適したタイミングで楽音が制
御され、扱いやすい電子楽器を得ることができる。
【図面の簡単な説明】
【図1】本発明の実施例の楽音制御装置を適用した電子
楽器のブロック図である。
【図2】実施例における演奏用手袋を示す図である。
【図3】実施例における演奏用手袋の指の部分の断面図
である。
【図4】実施例における曲げセンサを示す図である。
【図5】実施例における制御部のブロック図である。
【図6】実施例における左手フィンガ処理の概略を示す
図である。
【図7】実施例における右手フィンガ処理の概略を示す
図である。
【図8】実施例におけるメインルーチンのフローチャー
トである。
【図9】実施例における割込み処理のフローチャートで
ある。
【図10】実施例における演奏用手袋処理のフローチャ
ートである。
【図11】実施例における左手フィンガ処理のステップ
L1とステップL2のフローチャートである。
【図12】実施例における左手フィンガ処理のステップ
L3のフローチャートである。
【図13】実施例における右手リスト処理のフローチャ
ートである。
【図14】実施例における右手フィンガ処理のステップ
R1のフローチャートである。
【図15】実施例における右手フィンガ処理のステップ
R2のフローチャートである。
【図16】実施例における右手フィンガ処理のステップ
R3のフローチャートである。
【図17】実施例における右手フィンガ処理のステップ
R4のフローチャートである。
【図18】実施例における右手フィンガ処理のステップ
R5のフローチャートである。
【図19】実施例における右手フィンガ処理のステップ
R6のフローチャートである。
【図20】実施例における左手のオンイベント処理とオ
フイベント処理のフローチャートである。
【図21】実施例におけるオクターブシフト処理のフロ
ーチャートである。
【図22】実施例における半音シフト・トリル処理のフ
ローチャートである。
【図23】実施例における右手のノートオン処理のフロ
ーチャートである。
【図24】実施例におけるリングバッファを概念的に示
す図である。
【図25】実施例におけるムーブ検出用の速度の閾値と
曲げデータとの関係を示す図である。
【図26】実施例におけるノートオフ判定用の閾値と曲
げデータの最大値との関係を示す図である。
【図27】実施例におけるオクターブシフトテーブルを
示す図である。
【図28】実施例におけるフィンガノートテーブルを示
す図である。
【符号の説明】
1…左手の演奏用手袋、2…右手の演奏用手袋、3…A
/Dコンバータ、4…制御部、10…曲げセンサ。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 手の指の曲げ量を検出して、該指の曲げ
    量に基づいてキーオンとキーオフを判定し、このキーオ
    ンによる楽音の発生とキーオフによる楽音の消音を制御
    するようにした楽音制御装置において、前記指の曲げ量
    に基づいて該指の曲げの速度を検出する速度検出手段
    と、該速度検出手段で検出した速度情報に基づいて上記
    指の停止を検出する停止検出手段とを備え、上記停止検
    出手段で上記指の停止を検出することによりキーオンを
    判定するようにしたことを特徴とする楽音制御装置。
  2. 【請求項2】 手の指の曲げ量を検出して、該指の曲げ
    量に基づいてキーオンとキーオフを判定し、このキーオ
    ンによる楽音の発生とキーオフによる楽音の消音を制御
    するようにした楽音制御装置において、キーオンになっ
    た指の曲げ量の最大深さを検出する最大深さ検出手段
    と、該最大深さより浅い曲げ量でこの最大深さに追随す
    る閾値を発生する閾値発生手段とを備え、上記キーオン
    になった指の曲げ量と上記閾値発生手段で発生した閾値
    とによって該指のキーオフを判定するようにしたことを
    特徴とする楽音制御装置。
JP3127294A 1991-05-30 1991-05-30 楽音制御装置 Expired - Fee Related JP2500544B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3127294A JP2500544B2 (ja) 1991-05-30 1991-05-30 楽音制御装置
US07/890,575 US5338891A (en) 1991-05-30 1992-05-28 Musical tone control device with performing glove

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3127294A JP2500544B2 (ja) 1991-05-30 1991-05-30 楽音制御装置

Publications (2)

Publication Number Publication Date
JPH04352195A JPH04352195A (ja) 1992-12-07
JP2500544B2 true JP2500544B2 (ja) 1996-05-29

Family

ID=14956406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3127294A Expired - Fee Related JP2500544B2 (ja) 1991-05-30 1991-05-30 楽音制御装置

Country Status (2)

Country Link
US (1) US5338891A (ja)
JP (1) JP2500544B2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2757661B2 (ja) * 1992-03-24 1998-05-25 ヤマハ株式会社 楽音制御装置
US5461188A (en) * 1994-03-07 1995-10-24 Drago; Marcello S. Synthesized music, sound and light system
JP3307152B2 (ja) * 1995-05-09 2002-07-24 ヤマハ株式会社 自動演奏制御装置
US6677513B1 (en) 1998-05-29 2004-01-13 International Business Machines Corporation System and method for generating and attenuating digital tones
JP3584825B2 (ja) * 1999-12-24 2004-11-04 ヤマハ株式会社 楽音信号発生装置
JP4694705B2 (ja) * 2001-02-23 2011-06-08 ヤマハ株式会社 楽音制御システム
US6846246B2 (en) * 2001-05-21 2005-01-25 Brakeout Technology, L.L.C. Slotted golf club head
JP3812387B2 (ja) * 2001-09-04 2006-08-23 ヤマハ株式会社 楽音制御装置
US20030196542A1 (en) * 2002-04-16 2003-10-23 Harrison Shelton E. Guitar effects control system, method and devices
JP3922224B2 (ja) * 2003-07-23 2007-05-30 ヤマハ株式会社 自動演奏装置及びプログラム
KR100668298B1 (ko) * 2004-03-26 2007-01-12 삼성전자주식회사 움직임에 기반한 소리 발생 방법 및 장치
US7427711B2 (en) * 2004-08-19 2008-09-23 O'modhrain Maura Sile Particle based touch interaction for the creation of media streams
JP4525619B2 (ja) * 2005-12-14 2010-08-18 ヤマハ株式会社 電子楽器の鍵盤装置
GB0625184D0 (en) * 2006-12-18 2007-01-24 Macgregor Elizabeth Y Dance shoe
CN101168098B (zh) * 2007-11-19 2011-02-02 煜日升电子(深圳)有限公司 指琴
US8381205B2 (en) * 2008-06-03 2013-02-19 International Business Machines Corporation Co-resident software performance tracking
US8370800B2 (en) * 2008-06-03 2013-02-05 International Business Machines Corporation Determining application distribution based on application state tracking information
US7939742B2 (en) * 2009-02-19 2011-05-10 Will Glaser Musical instrument with digitally controlled virtual frets
US8362350B2 (en) * 2009-12-07 2013-01-29 Neven Kockovic Wearable trigger electronic percussion music system
US8620661B2 (en) * 2010-03-02 2013-12-31 Momilani Ramstrum System for controlling digital effects in live performances with vocal improvisation
AU2011318246A1 (en) 2010-10-22 2013-05-09 Joshua Michael Young Methods devices and systems for creating control signals
US9262940B2 (en) * 2013-11-28 2016-02-16 Shlomo Michael Farber Musical notation interface for the visually impaired
WO2016088246A1 (ja) * 2014-12-05 2016-06-09 富士通株式会社 触感提供システム、及び、触感提供装置
EP3245648B1 (en) * 2015-01-14 2019-05-22 Taction Enterprises Inc. Arrangement for producing musical data
US10186166B2 (en) * 2016-04-24 2019-01-22 Angelos Gialamas Enhancing stringed instrument learning with a wearable device
US10255894B1 (en) * 2016-12-16 2019-04-09 Mark J. BONNER Wearable electronic musical instrument
US10573285B1 (en) * 2017-01-30 2020-02-25 Mark J. BONNER Portable electronic musical system
CN111433831B (zh) * 2017-12-27 2022-05-17 索尼公司 信息处理装置、信息处理方法和计算机可读存储介质
WO2020185543A1 (en) 2019-03-08 2020-09-17 Mevion Medical Systems, Inc. Collimator and energy degrader for a particle therapy system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5177311A (en) * 1987-01-14 1993-01-05 Yamaha Corporation Musical tone control apparatus
JP2560464B2 (ja) * 1987-12-24 1996-12-04 ヤマハ株式会社 楽音制御装置
JP2508186B2 (ja) * 1988-05-18 1996-06-19 ヤマハ株式会社 楽音制御装置
JPH02135395A (ja) * 1988-11-16 1990-05-24 Yamaha Corp 楽音制御装置
JP2551140B2 (ja) * 1989-03-17 1996-11-06 ヤマハ株式会社 楽音制御装置
US5166462A (en) * 1989-03-17 1992-11-24 Yamaha Corporation Musical tone control apparatus employing finger flexing angle detection
US5119709A (en) * 1989-04-14 1992-06-09 Yamaha Corporation Initial touch responsive musical tone control device
JPH087581B2 (ja) * 1989-04-14 1996-01-29 ヤマハ株式会社 楽音制御装置

Also Published As

Publication number Publication date
US5338891A (en) 1994-08-16
JPH04352195A (ja) 1992-12-07

Similar Documents

Publication Publication Date Title
JP2500544B2 (ja) 楽音制御装置
US5373096A (en) Musical sound control device responsive to the motion of body portions of a performer
JP3097224B2 (ja) 楽音制御装置
JPH05265455A (ja) 楽音制御装置
JPH06175653A (ja) 楽音制御信号発生装置
JP2626342B2 (ja) 楽音制御装置
JPH0594183A (ja) 楽音制御装置
JP2626346B2 (ja) 楽音制御装置
JP2855968B2 (ja) 楽音制御装置
JP2626341B2 (ja) 楽音制御装置
JP2855967B2 (ja) 楽音制御装置
JPH096357A (ja) 楽音制御装置
JP3387332B2 (ja) 演奏制御装置
JP2523779B2 (ja) 自動演奏装置
JP2570811B2 (ja) 楽音制御装置
JP3030934B2 (ja) 楽音制御装置
JP2757659B2 (ja) 楽音制御装置
JPH03177897A (ja) 電子楽器
JP3398982B2 (ja) 電子楽器
JPH0573047A (ja) 楽音発生制御装置
JPH05188953A (ja) 電子楽器
JPH05341778A (ja) 電子楽器
JP2939061B2 (ja) 楽音制御装置
JP2556370Y2 (ja) 電子鍵盤楽器
JP2998602B2 (ja) 楽音制御装置

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19960123

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20090313

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees