図面 (/)

技術 演奏装置、方法及びプログラム

出願人 カシオ計算機株式会社
発明者 櫻井敬一林龍太郎田畑裕二春日一貴
出願日 2016年10月25日 (2年8ヶ月経過) 出願番号 2016-208409
公開日 2017年1月19日 (2年5ヶ月経過) 公開番号 2017-016162
状態 特許登録済
技術分野 電気楽器
主要キーワード 強制スイッチ スティック先端 Y座標 ステッィク 今回時刻 駆動ノイズ 合成行列 重力補正
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年1月19日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (19)

課題

仮想的な音源仮想空間内に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能な演奏装置を提供すること。

解決手段

CPU11は、角速度センサ123が取得した角速度に基づいて、演奏操作中のステッィク部10の角速度の最大値を算出し、加速度センサ122が取得した加速度に基づいて、演奏操作中のステッィク部10の加速度の最大値を算出し、算出された角速度の最大値と、加速度の最大値とに基づいて、発音する楽音音量を制御する。

概要

背景

従来、演奏者演奏動作を検知すると、演奏動作に応じた音を発音する演奏装置が提案されている。例えば、スティック状の部材のみからなる構成で打楽器音を発音する演奏装置が知られており、この演奏装置では、スティック状の部材にセンサが設けられ、演奏者が、部材を手で保持して振ることで、センサがその演奏動作を検知して、打楽器音を発音する。
このような仮想的な演奏装置によれば、現実楽器を必要とせずに当該楽器の楽音を発音することができるため、演奏者は、演奏場所や演奏スペース制約を受けずに演奏を楽しむことができる。

上述のような仮想的演奏装置として、例えば、特許文献1には、スティック状の部材に加速度センサを設け、この部材を振ることにより加速度センサから得られる出力(加速度値)が所定の閾値に達した後、楽音を発音するように構成された演奏装置が開示されている。

概要

仮想的な音源仮想空間内に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能な演奏装置を提供すること。CPU11は、角速度センサ123が取得した角速度に基づいて、演奏操作中のステッィク部10の角速度の最大値を算出し、加速度センサ122が取得した加速度に基づいて、演奏操作中のステッィク部10の加速度の最大値を算出し、算出された角速度の最大値と、加速度の最大値とに基づいて、発音する楽音の音量を制御する。

目的

本発明は、このような状況に鑑みてなされたものであり、仮想的な音源が仮想空間内に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能な演奏装置を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ユーザが保持可能な保持部材と、前記保持部材の互いに直交する3軸それぞれの方向に生じる加速度を検出する加速度センサと、前記直交する3軸それぞれを中心として回転した場合に生じる角速度を検出する角速度センサと、前記角速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる角速度に基づいて、演奏操作中の前記保持部材の角速度の最大値を取得する第1取得手段と、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の加速度の最大値を取得する第2取得手段と、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の速度の最大値を取得する第3取得手段と、前記第1取得手段により取得された前記角速度の最大値と、前記第2取得手段により取得された前記加速度の最大値と、前記第3取得手段により取得された前記速度の最大値とに基づいて、発音する楽音音量を制御する音量制御手段と、を備える、ことを特徴とする演奏装置

請求項2

ユーザが保持可能な保持部材と、前記保持部材の互いに直交する3軸のそれぞれの方向に生じる加速度を検出する加速度センサと、前記直交する3軸それぞれを中心として回転した場合に生じる角速度を検出する角速度センサと、を有する演奏装置が実行する方法であって、前記角速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる角速度に基づいて、演奏操作中の前記保持部材の角速度の最大値を取得する第1取得ステップと、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の加速度の最大値を取得する第2取得ステップと、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の速度の最大値を取得する第3取得ステップと、前記第1取得ステップにて取得された前記角速度の最大値と、前記第2取得ステップにて取得された前記加速度の最大値と、前記第3取得ステップにより取得された前記速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御ステップと、を含む方法。

請求項3

ユーザが保持可能な保持部材と、前記保持部材の互いに直交する3軸のそれぞれの方向に生じる加速度を検出する加速度センサと、前記直交する3軸それぞれを中心として回転した場合に生じる角速度を検出する角速度センサと、を有する演奏装置として用いられるコンピュータに、前記角速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる角速度に基づいて、演奏操作中の前記保持部材の角速度の最大値を取得する第1取得ステップと、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の加速度の最大値を取得する第2取得ステップと、前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の速度の最大値を取得する第3取得ステップと、前記第1取得ステップにて取得された前記角速度の最大値と、前記第2取得ステップにて取得された前記加速度の最大値と、前記第3取得ステップにより取得された前記速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御ステップと、を実行させるプログラム

技術分野

0001

本発明は、演奏装置、方法及びプログラムに関する。

背景技術

0002

従来、演奏者演奏動作を検知すると、演奏動作に応じた音を発音する演奏装置が提案されている。例えば、スティック状の部材のみからなる構成で打楽器音を発音する演奏装置が知られており、この演奏装置では、スティック状の部材にセンサが設けられ、演奏者が、部材を手で保持して振ることで、センサがその演奏動作を検知して、打楽器音を発音する。
このような仮想的な演奏装置によれば、現実楽器を必要とせずに当該楽器の楽音を発音することができるため、演奏者は、演奏場所や演奏スペース制約を受けずに演奏を楽しむことができる。

0003

上述のような仮想的演奏装置として、例えば、特許文献1には、スティック状の部材に加速度センサを設け、この部材を振ることにより加速度センサから得られる出力(加速度値)が所定の閾値に達した後、楽音を発音するように構成された演奏装置が開示されている。

先行技術

0004

特開2007−256736号公報

発明が解決しようとする課題

0005

しかしながら、特許文献1では、発音する際の音量の決定についての記載はなく、特許文献1の発明をそのまま適用するならば、加速度の大きさに応じて音量を決定しなければならない。ところが、ショットの強さは減速方向の加速度に応じて決定されるが、速度は、加速度を積分して求めるため、加速度に誤差が生じると誤差を積分することになり、スティック動きっぱなしになると、速度の精度が著しく悪化してしまい、減速加速の区別がつかなくなる。

0006

そのため、仮想的な音源を仮想的な水平面上にのみ配置する制約を設け、重力方向と逆方向が減速方向であるので、その方向の加速度成分からスティックの発音量を決定する方法が提案されている。しかし、この方法では、仮想的な音源が仮想空間内に垂直に配置されている場合は応用できない問題があった。

0007

本発明は、このような状況に鑑みてなされたものであり、仮想的な音源が仮想空間内に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能な演奏装置を提供することを目的とする。

課題を解決するための手段

0008

上記目的を達成するため、本発明の一態様の演奏装置は、
ユーザが保持可能な保持部材と、
前記保持部材の互いに直交する3軸それぞれの方向に生じる加速度を検出する加速度センサと、
前記直交する3軸それぞれを中心として回転した場合に生じる角速度を検出する角速度センサと、
前記角速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる角速度に基づいて、演奏操作中の前記保持部材の角速度の最大値を取得する第1取得手段と、
前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の加速度の最大値を取得する第2取得手段と、
前記加速度センサが検出した前記保持部材の振り下ろし動作に対応して生じる加速度に基づいて、前記保持部材の速度の最大値を取得する第3取得手段と、
前記第1取得手段により取得された前記角速度の最大値と、前記第2取得手段により取得された前記加速度の最大値と、前記第3取得手段により取得された前記速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御手段と、を備える、
ことを特徴とする。

発明の効果

0009

本発明によれば、仮想的な音源が仮想空間内に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能となる。

図面の簡単な説明

0010

本発明の演奏装置の一実施形態の概要を示す図である。
上記演奏装置のスティック部の構成を示すブロック図である。
上記演奏装置の発音部の構成を示すブロック図である。
上記演奏装置のスティック部についての詳細を説明する図である。
本発明の演奏装置の一実施形態に係るワールド座標系について説明する図である。
上記スティック部のCPUが実行する処理の流れを示すフローチャートである。
姿勢センサ姿勢初期化処理の流れを示すフローチャートである。
姿勢推定処理の流れを示すフローチャートである。
位置推定処理の流れを示すフローチャートである。
先端動き予測処理の流れを示すフローチャートである。
上記スティック部のスティック先端回転軸スイング方向との関係を示す図である。
第1の実施例における発音タイミング検出処理の流れを示すフローチャートである。
第2の実施例における発音タイミング検出処理の流れを示すフローチャートである。
上記スティック部の動作状態遷移を示す図である。
発音量検出処理の流れを示すフローチャートである。
ノートイベント生成処理の流れを示すフローチャートである。
変形例におけるサウンド探索処理の流れを示すフローチャートである。
発音処理の流れを示すフローチャートである。

実施例

0011

以下、本発明の実施形態について、図面を用いて説明する。

0012

以下、添付図面を参照して、本発明の実施形態について説明する。
図1は、本発明の一実施形態の演奏装置1の概要を示す図である。図1に示すように本発明の演奏装置1は、スティック部10と、発音部30とから構成される。
スティック部10は、長手方向に延びるスティック状の部材である。演奏者は、スティック部10の一端(根元側)を手に持ち手首などを中心とした振り上げ及び振り下ろし動作を行うことで、演奏動作を行う。このような演奏者の演奏動作を検知するため、スティック部10の他端(先端側)には、姿勢センサ12が設けられている(図2参照)。

0013

発音部30は、楽音を発音する。
このような演奏装置1では、スティック部10を用いた演奏動作、すなわち、スティック部10の振り下ろし動作に応じて、発音部30は、所定の楽音を発音する。これにより、演奏者による演奏が行われる。

0014

[演奏装置1の構成]
初めに、図2及び図3を参照して、本実施形態の演奏装置1の各構成要素、具体的には、スティック部10、及び発音部30の構成について説明する。

0015

[スティック部10の構成]
図2は、スティック部10の構成を示すブロック図である。図2に示すように、スティック部10は、CPU(Central Processing Unit)11、姿勢センサ12、I/F(インタフェース)装置13、ROM(Read Only Memory)14、RAM(Random Access Memory)15、入力部16、無線通信装置17及びLED18から構成される。
姿勢センサ12は、地磁気方向を計測する3軸の磁気センサ121、スティックに加わる加速度を測定するための3軸の加速度センサ122、及びスティックの回転動作を計測する3軸の角速度センサ123から構成される。各センサは3つの軸x、y、zの軸方向の計測が可能になっている。

0016

図4を参照して、本実施形態では、スティック部10の長手方向の軸と一致する軸をy軸とし、姿勢センサ12が配置された基板(図示せず)と平行で、かつ、y軸と直交する軸をx軸とし、x軸及びy軸と直交する軸をz軸としている。磁気センサ121は、地磁気ベクトルのx軸、y軸、z軸のそれぞれの成分の地磁気値を取得できる。また、加速度センサ122は、x軸、y軸、z軸のそれぞれの成分の加速度値を取得できる。また角速度センサ123は軸それぞれを中心とする角速度の成分の値(ωx、ωy、ωz)を取得できる。
ここで、演奏者は、スティック部10の一端(根元側)を保持し、手首などを中心とした振り上げ及び振り下ろし動作を行うことで、スティック部10に対して回転運動平行運動などを生じさせる。これらの動きを姿勢センサ12で検出をおこない、CPU11に送り出す。

0017

図2戻り、CPU11は、姿勢センサ12が検出した加速度値、角速度値、地磁気方向と強度を読み出し、これらの値に応じて、スティックの姿勢、及び、発音のタイミング検出を行う。これにより、CPU11は、その発音に対応するノートオンイベントの生成を行い、I/F装置13及び無線通信装置17を介してノートオンイベントを発音部30に送信する。ここで、ノートオンイベントとは、楽音の発音を音源部371(図3参照)に対して指示するコマンド情報であり、本実施形態においては、発音する楽音の音色や音高の情報に加えて、さらに楽音の音量などの情報を含むものである。

0018

このように、CPU11は、スティック部10が有する姿勢センサ12の各センサ値に基づいて発音部30にノートオンイベントを送信することで、発音部30は、スティック部10を用いた演奏動作に基づいて所定の楽音を発音することができる。

0019

ROM14は、CPU11が実行する各種処理の処理プログラム、すなわち、前述したように、姿勢センサ12によるデータの取得、ノートオンイベントの生成処理、ノートオンイベントの送信処理などの処理プログラムを格納する。RAM15は、姿勢センサ12の各センサ値、処理において取得され或いは生成された値を格納する。I/F13は、CPU11からの指示にしたがって無線通信装置17にデータを出力する。

0020

また、入力部16は、各種スイッチ(図示せず)を有し、演奏者からの各種指示入力受け付ける。

0021

無線通信装置17は、発音部30との間で所定の無線通信を行う。所定の無線通信は、任意の方法で行うこととしてよく、本実施形態では、無線通信装置17は、赤外線通信により発音部30との間で無線通信を行う。LED18は、CPU11からの制御に応じて発光及び消灯する。なお、LED18は、スティックの姿勢の初期化などのスティックの処理状態を示すためなどに用いられる。

0022

[発音部30の構成]

0023

次に、図3を参照して、発音部30の構成について説明する。図3は、発音部30の構成を示すブロック図である。図3に示すように、発音部30は、CPU31、I/F(インタフェース)32、ROM33、RAM34、表示部35、入力部36及びサウンドシステム37から構成される。発音部30のI/F32は、スティック部10からのデータ(例えば、楽音を発音する制御データであるノートオンイベント)を受け入れて、RAM34に格納するとともに、CPU31にデータの受け入れを通知する。本実施形態においては、スティック部10に無線通信装置17が、発音部30に赤外線通信装置38が設けられている。I/F32は、スティック部10の無線通信装置17が発した無線信号を、赤外線通信装置38で受信することで、スティック部10からデータを受信する。

0024

CPU31は、演奏装置1全体の制御、特に、発音部30の制御、入力部36を構成するキースイッチ(図示せず)の操作の検出、I/F32を介して受信したスティック部10からのノートオンイベントに基づく楽音の発音など、種々の処理を実行する。

0025

ROM33は、演奏装置1全体の制御、特に、発音部30の制御、入力部36を構成するキースイッチ(図示せず)の操作の検出、I/F32を介して受信したノートオンイベントに基づく楽音の発音など、種々の処理プログラムを格納する。また、ROM33は、種々の音色の波形データ、例えば、フルートサックストランペットなどの管楽器ピアノなどの鍵盤楽器ギターなどの弦楽器バスドラムハイハットスネアシンバル、タムなど打楽器の波形データを格納する波形データエリアを含む。

0026

RAM34は、ROM33から読み出されたプログラムや、処理の過程で生じたデータやパラメータを記憶する。処理の過程で生じたデータには、入力部36のスイッチの操作状態、I/F32を介して受信したノートオンイベントや演奏者の身体動作の状態(前進フラグや変位量)などが含まれる。

0027

表示部35は、例えば、液晶表示装置で構成され、選択された音色や音量、演奏者の身体動作の状態(基準位置からの変位量)などを画像として表示する。また、入力部36は、各種スイッチ(図示せず)を有し、演奏者からの各種情報の入力を受け付ける。

0028

サウンドシステム37は、音源部371、オーディオ回路372及びスピーカ373を含む。音源部371は、CPU31からの指示にしたがって、ROM33の波形データエリアから波形データを読み出して、楽音データを生成して出力する。オーディオ回路372は、音源部371から出力された楽音データをアナログ信号に変換するとともに、変換したアナログ信号を増幅してスピーカ373に出力する。これによりスピーカ373から楽音が出力される。

0029

座標系の説明]
次に本実施形態におけるスティックの姿勢、及びワールド座標系について図5を参照して説明する。ここでワールド座標とは、演奏者を中心とした座標系のことをいう。図5にあるように演奏者から見て右水平方向をX軸、前方水平方向をY軸、天頂方向をZ軸と定義する。図4で記載したスティック部10の3軸であるx軸、y軸、z軸とは異なる。本実施形態では、スティック部10の3軸を、ローカル座標系と呼び小文字で表すのに対して、ワールド座標系では3軸を大文字で表す。演奏者がスティック部10をスイングさせると時間とともにローカル座標とワールド座標との関係が変わっていく。ワールド座標系から見て、スティック部10のローカル座標系の向きがどのようになっているかをスティックの姿勢と呼ぶ。

0030

また、スティック部10が移動すると、ワールド座標系の原点からみたローカル座標系の原点も移動する。ワールド座標系から見たローカル座標系の原点をスティック部10の位置と呼ぶ。

0031

[演奏装置1の処理]

0032

続いて、本実施形態の演奏装置1の処理について説明する。初めに、図6を参照しながらスティック部10において実行される処理について概要説明をする。

0033

図6は、スティック部10のCPU11が実行する処理の流れを示すフローチャートである。CPU11は、ROM14からプログラムコードを読みだして実行する。

0034

まず、CPU11は、姿勢センサ12が有する各種センサの初期化とRAM15のデータのクリアなどを含むイニシャライズ処理を実行する(ステップS11)。イニシャライズ処理が終了すると、CPU11は、姿勢センサ12が有する各種センサのもつデバイスのばらつきや温度によって変化するオフセットゲイン調整などを実行する(ステップS12)。次に、CPU11は、入力部36のスイッチの状態を読み出してRAM15に保存する(ステップS14)。RAM15に保存された当該スイッチの状態は、後述する位置検出補助などに用いられる。

0035

次に、CPU11は、ユーザがスティック部10をスイングしたとき、そのスイングに応じて発音させる処理を実行する(ステップS16〜S24))。まず、CPU11は、姿勢センサ12の加速度値、角速度値、及び地磁気の方向と強度をRAM15に保存する(ステップS16)。

0036

CPU11は、この読みだした値に応じてスティック部10の姿勢の推定を実行し(ステップS17)、次に、スティック部10の平行移動位置推定を実行する(ステップS18)。さらに、CPU11は、スティック部10の先端の動き予測を実行し(ステップS19)、この予測された動きを用いて、発音タイミングの検出を実行する(ステップS20)。さらに、CPU11は、発音量の検出を実行する(ステップS21)。ステップS20において発音タイミングである(動作状態が後述する「SHOT」である)場合(ステップS22でYESと判定された場合)、CPU11は、スティック部10の姿勢及び位置に応じて楽音の音色や音高を決定してノートオンイベントを生成し(ステップS23)、生成されたノートオンイベントを発音部30に送信する(ステップS24)。

0037

[姿勢センサと姿勢の初期化]
図7を参照して、図6のステップS12の姿勢センサと姿勢の初期化処理の詳細説明を行う。

0038

図7は、姿勢センサと姿勢の初期化処理の流れを示すフローチャートである。
まず、CPU11は、ユーザにスティック部10の先端を前方方向に向けて静止してもらうように表示を行う(ステップS71)。表示の例としては、CPU11は、LED18を緑色に点灯させる。

0039

次に、CPU11は、角速度センサ123の各軸のデータを読み出す。角速度センサ123は通常、デバイスのばらつきや温度変動により、角速度0であるときのオフセット値が変動する。CPU11は、角速度センサ123の値をオフセット値としてRAM15に記憶する(ステップS72)。以降のステップでは、CPU11は、角速度センサ123の値を読み出したとき、読み出した値からこのオフセット値を引くことで、スティック部10が静止しているときの角速度が0となるように調整する。

0040

次に、CPU11は、加速度センサ122の各軸のデータを読み出して、前回の加速度と比較し重力方向の変化を検出したか否かを判断する(ステップS74)。具体的には、スティック部10の静止状態では、加速度センサ122の値は重力方向の各軸成分のみを示すことになるので、CPU11は、各軸成分の値に変化がない場合に、スティックが静止状態であることを検出できる。本実施形態では、CPU11は、1秒程度変化がない場合に、スティックが静止状態であることを検出する。CPU11は、スティックが静止状態であることを検出した場合には、角速度のオフセット値の登録を完了して、ステップS75に処理を移す。一方、CPU11は、スティックが動作したことを検出した場合、ステップS72に処理を移し、再度オフセット値の登録をやり直す。

0041

続いて、CPU11は、姿勢の初期化を行う(ステップS75)。具体的には、CPU11は、ユーザが前方方向にスティック部10の先端部を向けた状態で、スティック部10の先端部が向いている方向が、ワールド座標系の前方(Y軸方向)になるようにワールド座標系とローカル座標系の関係を初期化する。また、CPU11は、当該初期化時点における角速度、加速度及び地磁気の各軸成分をRAM15に記憶する。

0042

続いて、CPU11は、ユーザにスティック部10を様々な方向に向ける動作をさせるための表示を行う(ステップS76)。例えば、CPU11は、LED18を赤色で点滅させる。

0043

さらに、CPU11は、磁気センサ121のオフセットとゲインの補正データを求める(ステップS77)。具体的には、CPU11は、ステップS76の処理に応じて、ユーザが様々な方向にスティック部10を向けたときの地磁気の値を磁気センサ121により計測し、計測した地磁気の値を用いて補正データを求める。オフセットとゲインの値の求め方の例としては、CPU11は、磁気センサ121の各軸の最大値及び最小値からその中央値を算出し、算出した中央値を各軸のオフセット値とする。

0044

また、CPU11は、各軸の中央から最大値までの値が同じになるようにゲイン補正値を算出し、算出したオフセット値とゲイン補正値をRAM15に記憶する。以降のステップにおいて、CPU11は、磁気センサ121の値を読み出したとき、読み出した値からオフセット値を引いて、さらに補正ゲイン掛けることで、地磁気の値を補正して検出値とする。

0045

続いて、CPU11は、検出された地磁気の値が一般の地上で検出される値であるか否かを判定する(ステップS78)。検出された地磁気の値が一般の地上で検出される値ではない場合には、CPU11は、処理をステップS76に戻し、再度、磁気センサ121のオフセット値とゲインの補正データを求める。検出された地磁気の値が一般の地上で検出される値である場合には、CPU11は、処理をステップS79に移行させ、ヨー補正モードを地磁気モードにセットする。

0046

また、CPU11は、ステップS78の処理を所定回数(例えば、5回など)実行しても検出された地磁気の値が一般の地上で検出される値ではない場合には、処理をステップS80に移行させ、ヨー補正モードをショットモードにセットする。ステップS79又はステップS80の処理が終了すると、CPU11は、ステップS81に処理を移行させ、ヨー補正モードが地磁気モードであるかショットモードであるかを表示する。例えば、CPU11は、ショットモードの場合にはLED18を赤色で点灯させ、地磁気モードである場合にはLED18を緑色で点灯させる。なお、角速度センサ123及び磁気センサ121のセンサ値の補正処理順番は、入れ替わってもよい。

0047

姿勢推定
図8を参照して、図6のステップS17の姿勢推定処理の詳細説明を行う。

0048

図8は、姿勢推定処理の流れを示すフローチャートである。
ワールド座標系から見たローカル座標系のx軸、y軸、z軸の基底ベクトルをex,ey,ezとして、各基底ベクトルを列に並べた行列TL→W=(exeyez)を定義すると、ローカル座標系の点p=(xyz)Tと、この点pに対応するワールド座標系の点P=(XYZ)Tとの間には、次の関係式(1)、(2)が成り立つ(演算記号Tは転置行列を意味する)。
P=TL→Wp (1) p=TL→WTP(2)

0049

このように、TL→Wは2つの座標系の関係を示すものであるので、このように、2つの座標系同士の関係などを用いて現在のスティック姿勢状態を表すことができる。なお、姿勢の表現方法としては、ピッチ、ヨー、ロールなどの角度を用いてもよい。

0050

ところで、今回時刻tで読み取った角速度センサ123の値からローカル座標系の各軸成分を持つ3次の角速度ベクトルを取得できる。この3次の角速度ベクトルの各軸成分の値に角速度センサ123のサンプリング時間であるδTを掛け算することで、回転角ベクトルθt=(θxtθytθzt)Tを求められる。

0051

この回転角ベクトルによってスティックの姿勢を求めることができる。具体的には、時刻tにおける姿勢TL→Wtは、x軸を中心としたθxtの回転、y軸を中心としたθytの回転、及びz軸を中心としたθztの回転の合成行列Rall(θt)と、前回の姿勢TL→Wt−1とを用いて、TL→Wt=Rall(θt)・TL→Wt−1と推定できる。このように、CPU11は、今回の角速度センサ123の値に基づいて、前回の姿勢を更新させて、今回の姿勢を推定する(ステップS101)。

0052

ところが、このようにして求めた姿勢は誤差が累積していく。また、姿勢が一度間違ってしまうと、その後の姿勢推定の精度が著しく悪化する。例えば、スティック部10を前方水平からまっすぐに右水平に向かって回転したことを考える。最初に水平でなく垂直方向の回転に誤差が入るとスティックの先端の軌跡は斜めに上がりながら回転することになる、その後、この姿勢に関してまた、新しい回転が加わっていくので加速的に本来の姿勢からずれる。したがって、重力推定をおこなうことで、姿勢推定の補正を行い、姿勢の精度を高める。

0053

加速度センサ122で検出される加速度ベクトルはローカル座標系での各軸の成分から構成される。この加速度ベクトルをステップS101で求めた姿勢情報を用いて、ワールド座標系ベクトルで表す。

0054

外力が加わらなければ、加速度センサ122は重力のみを検出することになるので、加速度センサ122が検出したローカル座標系での加速度ベクトルをワールド座標系に変換すると、常に同じ方向を示すことになる。しかし、スティック部10の動作中は遠心力などの外力が加わるので常に同じ方向を向くとは限らない。ところが、ユーザは止まった状態でスティック部10をスイングしているので、スティック部10の位置は動かない。また、スティック部10を振り上げたときや、振り下げたときなど、いたるときに速度は0になる。すなわち、加速度ベクトルから重力成分を除いた外力の積分はいたるときに0になる。よってワールド座標系の加速度ベクトルを積分したベクトルは概ね重力方向を示すことになる。この性質を用いてワールド座標系の重力方向を推定する。

0055

具体的には、CPU11は、今回時刻tで読み取った加速度センサ122が取得した各軸成分の加速度値をLAT=(AxtAytAzt)Tとし、これはローカル座標系であるので、式(3)に基づいて、ワールド座標系に変換算出する(ステップS102)。
WAT=TL→Wt・LAT (3)

0056

次に、CPU11は、ワールド座標系に変換された加速度ベクトルの値について各成分について、現時刻から所定時間前までの平均値を算出して、平均加速度ベクトルを求める。所定時間はスイング状態などで実験的に決定される。CPU11は、この平均加速度ベクトルを重力方向ベクトルWegtと推定する(ステップS103)。
具体的には、下記の式(式(4))を定義し、再帰加算によって累算を行う。Kgはダンピング係数で、スイング状態などで実験的に決定される。
Gwt=kg・Gwt−1+WAt (4)
このGwtからワールド座標系の重力方向ベクトルWegtをWegt=Gwt/|Gwt|と推定する。

0057

次に、CPU11は、この重力方向ベクトルWegtがZ軸の負の方向ベクトル(0 0 −1)Tになるように、姿勢パラメータTL→Wtを修正する(ステップS104)。具体的には、CPU11は、重力方向ベクトルWegtと負の方向ベクトル(0 0 −1)Tとの2つのベクトルに直行する軸を中心に、これら2つのベクトルのなす角度分を回転する操作を行うことで、姿勢パラメータTL→Wtを修正する。これにより、重力方向の補正がおこなわれるので、姿勢推定の精度が向上する。

0058

前述した姿勢補正は重力方向のみであるので、Z軸を中心としたヨー角の誤差累積が残る。本実施形態では、ヨー角の補正は、ユーザによるスイッチ操作と、地磁気を用いた補正との2つの方法を提案する。

0059

まず、ユーザによるスイッチ操作による補正について説明する。この補正は、ユーザが、スティック部10が前方を向いているタイミングで、スティック部10が備える入力部16(例えば、スイッチ)を、定期的に押すことにより、CPU11が、ヨー角の補正を行うというものである。CPU11は、ヨー方向強制スイッチがONされたか否かを判断する(ステップS109)。この処理では、CPU11は、入力部16から、ヨー方向強制スイッチがONされたことを示す信号を受信したか否かを判断する。

0060

ステップS109での判断がYESの場合、CPU11は、スティック部10の先端のワールド座標系の方向ベクトルをワールド座標系のY軸の方向ベクトルと一致させるような回転行列を求め、この回転行列を用いて姿勢パラメータの補正を行う(ステップS110)。これにより、スティック部10の先端のヨー角が0度にセットされる。
この回転行列は、例えば、2つのベクトルをなす角度の長さであって、2つのベクトルに直交するベクトル方向を向いた回転角ベクトルを考える。この回転角ベクトルを角速度センサ123の姿勢補正の合成回転行列を求めた方法と同じ方法で合成行列変換を求めることができる。

0061

次に、地磁気を用いた補正について説明する。

0062

ステップS109での判断がNOの場合、CPU11は、ヨー方向補正モードが地磁気モードによる補正モードであるか否かを判定する(ステップS105)。地磁気モードによる補正モードでない場合は、CPU11は、姿勢推定処理を終了する。
地磁気モードによる補正モードである場合には、CPU11は、今回時刻tで読み取った磁気センサ121から求めた地磁気ベクトルの値をLMT=(MxtMytMzt)Tとし、これはローカル座標系であるので、式(5)に基づいて、ワールド座標系に変換する(ステップS106)。
WMT=TL→Wt・LMT (5)

0063

次に、CPU11は、例えばIIR(Infinite Impulse Response)フィルタを実行し平滑化をおこなう。この平滑して得られた方向を現在の地磁気方向Wemtと推定する(ステップS107)。
具体的には、下記のIIRフィルタ演算(式(6))を実行し平滑化を行う。kmはフィルタ係数でスイング状態などで実験的に決定される。
Mwt=(1−km)・Mwt−1+km・WAt (6)
このMwtからワールド座標系の現在の地磁気方向ベクトルWemtを
Wemt=Mwt/|Mwt|と推定する。

0064

続いて、CPU11は、初期状態でのワールド座標系における地磁気の方向Wem0
をRAM15に記録し、現在の地磁気方向Wemtと、初期状態でのワールド座標系における地磁気の方向Wem0
の方向とが、ワールド座標系のXY平面で同じ方向を向くような回転行列を求め、この回転行列を用いて姿勢パラメータTL→Wtの補正を行う(ステップS108)。これにより、地磁気方向の補正が行われるので、姿勢推定の精度が向上する。
この回転行列は、具体的には、各ベクトルのZ成分を0にしたベクトルを考え、その2つのベクトル方向から、重力補正と同様、中心に2つのベクトルをなす角度の長さの2つのベクトルに直交するベクトル方向を向いたベクトルを考え、この各成分の値の回転の合成行列変換で表現できる。

0065

[位置推定]
図9を参照して、図6のステップS18の位置推定処理の詳細説明を行う。

0066

図9は、位置推定処理の流れを示すフローチャートである。
姿勢推定する際に、図8のステップS103において、ワールド座標の重力方向Wegtを推定した。CPU11は、ワールド座標系の加速度ベクトルからその重力方向Wegtの成分を除いたベクトルを求め、このベクトルを外力による加速度WFTと定義する(ステップS201)。さらに、CPU11は、外力による加速度WFTを積分して移動速度Wvtを求め、さらにこの移動速度Wvtを積分して水平面の移動量WDtを求める(ステップS202)。

0067

なお、積分は完全積分では誤差累積の影響が出るので不完全積分を用いるのが望ましい。ダンピング係数(時定数)は実験にて調整をおこなう。このようにして求めた値は後のノートイベント生成処理(図16参照)で利用される、

0068

[先端動き予測]
図10及び図11を参照して、図6のステップS19の先端動き予測処理の詳細説明を行う。

0069

発音の強弱はスティック先端の速度で制御をおこなうことが望ましい。速度を予測するのに加速度センサから求める方法があるが精度上問題がある。また、角速度だけではスティックのスイングはひじや肩を中心とした回転運動またはひじなどを伸ばしながらスイングするので、角速度と速度が比例関係になるともいえない。そのため、本実施形態では、先端の角速度と角加速度で速度予測する。

0070

図10は、先端動き予測処理の流れを示すフローチャートである。
求め方の一例として、まず、CPU11は、角速度ベクトルからy軸周りの成分を除いた角速度をスティック先端の角速度の観測値ωVt=(ωxt0 ωzt)Tとし、その値をカルマンフィルタなどを用いて角速度ωs及び角加速度δωsと推定する(ステップS210)。

0071

例えば、それぞれの角速度成分は、前回の角速度成分に角加速度成分を加えたもの、角加速度成分は、前回と同じ角加速度成分に駆動ノイズが加わるような状態モデルを利用して求めることができる。CPU11は、このようにして得られたスティック先端の角速度を用いて、その角速度の直近の平均したベクトル方向をスティック先端速度回転軸erとして推定する(ステップS211)。

0072

本実施例ではカルマンフィルタで実現したが、IIRフィルタを用いてセンサの値及びその差分をスムージングしてそれぞれ角速度、角加速度を求めても良い。

0073

スティック先端回転軸とスティックの方向y軸と直行する方向(外積方向、図11参照)をスイング方向esと定義する。先端の回転運動の接線方向はこの方向を向く。CPU11は、加速度ベクトルLAtのスイング方向の成分LAstを、LAtとesとの内積を計算することで求める(ステップS212)。

0074

[発音タイミング検出処理]
図12又は図13を参照して、図6のステップS20の発音タイミング検出処理の詳細説明を行う。

0075

[発音タイミング検出処理(第1の実施例)]
図12は、第1の実施例における発音タイミング検出処理の流れを示すフローチャートである。
まず、CPU11は、動作状態に応じて分岐を行う(ステップS302)。動作状態にはIDLE、ACTION、SHOT及びDONEの4状態がある。CPU11は、IDLEの場合には、処理をステップS303に移行させ、ACTIONの場合には、処理をステップS320に移行させ、SHOTの場合には、処理をステップS330に移行させ、DONEの場合には、処理をステップS340に移行させる。

0076

ここで、標準的な動作状態の遷移を図14に示す。図14は、横軸は、時間軸を示しており、縦軸は、図Aでは角速度の大きさ(ベクトルの長さ)を示している。符号はあまり意味がないが、便宜上、スティック部10を振り始めた方向を正とする。また、縦軸は、図Bでは角加速度の大きさ(ベクトルの長さ)を示している。符号は角速度の正方向と同じ向きを正とする。図Cは動作状態の遷移を示している。

0077

スティックが停止している状態はIDLEであり、初期状態で動作状態はIDLEに初期化されている。初期状態の時刻t0では動作状態はIDLEである。このときCPU11は、スティック部10の角加速度が正でない場合には、発音タイミング検出処理を終了する(ステップS303)。スティック部10の角加速度が正の場合であってもスティック部10の角速度が「閾値1」以下の場合には、CPU11は、発音タイミング検出処理を終了する(ステップS304)。スティック部10の角速度が「閾値1」の値を超えた場合、CPU11は、ステップS305に処理を移行させる(ステップS304)。図14では、t2の時刻で、「閾値1」を超えたことが示されている。ステップS305では、CPU11は、動作状態をACTIONに変更させ(ステップS305)、最大角速度を0に初期化して(ステップS306)、発音タイミング検出処理を終了する。
動作状態がACTIONになると、しばらくスティックは加速し続け、この間は、角加速度が正であるので、CPU11は、ステップS320でYESと判断し、現在の角速度が保持されている最大角速度と比較し(ステップS321)、角速度が最大角速度より大きい場合には、最大角速度を更新して(ステップS322)、「閾値2」を更新する(ステップS323)。角速度が最大角速度より小さい場合には、CPU11は、発音タイミング検出処理を終了する。

0078

「閾値2」は最大角速度の値によって決定されるようになっている。例えば、「閾値2」=(最大角速度)×Cで求める、ここで、Cは、0〜1の値で実験的に決定される。通常は0.1程度が望ましい。この「閾値2」はショットを検出してから音が発音するまでの遅延時間に相当する事前の角速度を想定している。無線伝達遅延や、後に述べる発音処理に遅延が生じるので、その遅延分保証するために本来の音の鳴らすタイミングより、事前に音を鳴らすためである。一般にショットの角速度のカーブは音の強弱に比例した形であることを想定し、角速度の最大値から、閾値を決定している。

0079

スティック部10が減速状態に変わると(t3)、スティック部10の角加速度は0以下となるので、CPU11は、ステップS320でNOと判断する。ステップS324では、CPU11は、現在の角速度の絶対値が「閾値2」より小さいか否か比較する。スティックがまだ十分に減速されていない間は、CPU11は、ステップS324でNOと判断し、発音タイミング検出処理を終了して、ショットタイミングを待つことになる。

0080

スティックが十分に減速し、「閾値2」より小さくなると、CPU11は、ショットタイミングに近づいたと判定し、ステップS324でYESと判断し(t4のタイミング)、動作状態をSHOTに設定し(ステップS325)、ショット通過時間を0に初期化する(ステップS326)。その後、CPU11は、発音タイミング検出処理を終了する。このSHOT状態は発音タイミングを知らせるものであり、図6のステップS22の発音タイミングの判断に用いられる。

0081

動作状態がSHOTの場合には、CPU11は、動作状態をステップS330においてDONEに更新して、発音タイミング検出処理を終了する。

0082

動作状態がDONEの場合には、CPU11は、角速度が「閾値3」以下であるか否かを判断し(ステップS340)、角速度が「閾値3」以下であると判断した場合には、動作状態をIDLEに変更し(ステップS341)、発音タイミング検出処理を終了する。ステップS340において、CPU11は、角速度が「閾値3」より大きいと判断した場合には、ショット通過時間が「閾値4」以下であるか否かを判断し(ステップS342)、ショット通過時間が「閾値4」以下であると判断した場合には、発音タイミング検出処理を終了する。一方、CPU11は、ショット通過時間が「閾値4」を超えたと判断した場合には、動作状態をIDLEに変更し(ステップS341)、発音タイミング検出処理を終了する。

0083

すなわち、DONE状態は角速度が「閾値3」以下になるまで保持される。これは停止時に複数音が鳴ったりする誤動作を防止するためである。しかし、角速度がゆっくりと減速されて、角速度が「閾値3」以下になるまでのショット通過時間が「閾値4」を超えた場合には、動作状態はDONEからIDLEに変更される。

0084

[発音タイミング検出処理(第2の実施例)]

0085

図13は、第2の実施例における発音タイミング検出処理の流れを示すフローチャートである。
まず、CPU11は、動作状態に応じて分岐を行う(ステップS352)。動作状態にはIDLE、ACTION、SHOT及びDONEの4状態がある。CPU11は、IDLEの場合には、処理をステップS353に移行させ、ACTIONの場合には、処理をステップS370に移行させ、SHOTの場合には、処理をステップS380に移行させ、DONEの場合には、処理をステップS390に移行させる。ここで、標準的な動作状態の遷移は図14に示したとおり第1の実施例と同様である。

0086

CPU11は、スティック部10の角加速度が正でない場合には、発音タイミング検出処理を終了する(ステップS353)。スティック部10の角加速度が正の場合であってもスティック部10の角速度が「閾値1」以下の場合には、CPU11は、発音タイミング検出処理を終了する(ステップS354)。スティック部10の角速度が「閾値1」の値を超えた場合、CPU11は、ステップS355に処理を移行させる(ステップS354)。図14では、t2の時刻で、「閾値1」を超えたことが示されている。ステップS355では、CPU11は、動作状態をACTIONに変更させ(ステップS355)、発音タイミング検出処理を終了する。

0087

動作状態がACTIONになると、しばらくスティックは加速し続け、この間は、角加速度が正であるので、CPU11は、ステップS370でYESと判断し、発音タイミング検出処理を終了する。

0088

スティック部10が減速状態に変わると(t3)、スティック部10の角加速度は0以下となるので、CPU11は、ステップS370でNOと判断する。CPU11は、ステップS371で、現在のスティック先端角速度ωst、角加速度δωstから角速度が0になるまでの時間を推測する。その推測された時間をTremとすると、
Trem=|ωst|/|δωst|でおよその時間を推定できる。

0089

続いて、CPU11は、推定した時間が「閾値5」以下であるかを判定する(ステップS372)。例えばこの「閾値5」は10m秒程度とする。

0090

この「閾値5」はショットを検出してから音が発音するまでの遅延時間として設定されている。無線の伝達遅延や、後に述べる発音処理に遅延が生じるので、その遅延分を保証するために本来の音の鳴らすタイミングより、事前に音を鳴らすためである。CPU11は、スティック部10が十分に減速するまでは、ステップS372ではNOと判断して発音タイミング検出処理を終了する。やがてスティック部10の角速度が0に近くなると、停止(角速度0)までの推定時間が「閾値5」以下となり、CPU11は、ステップS372ではYESと判断し(t4のタイミング)、動作状態をSHOTに設定し(ステップS373)、SHOT通過時間を0に初期化する(ステップS374)。このSHOT状態は発音タイミングを知らせるものであり、図6のステップS22の発音タイミングの判断に用いられる。

0091

動作状態がSHOTの場合には、CPU11は、動作状態をステップS380においてDONEに更新して、発音タイミング検出処理を終了する。

0092

動作状態がDONEの場合には、CPU11は、角速度が「閾値3」以下であるか否かを判断し(ステップS390)、角速度が「閾値3」以下であると判断した場合には、動作状態をIDLEに変更し(ステップS391)、発音タイミング検出処理を終了する。ステップS390において、CPU11は、角速度が「閾値3」より大きいと判断した場合には、ショット通過時間が「閾値4」以下であるか否かを判断し(ステップS392)、ショット通過時間が「閾値4」以下であると判断した場合には、発音タイミング検出処理を終了する。一方、CPU11は、ショット通過時間が「閾値4」を超えたと判断した場合には、動作状態をIDLEに変更し(ステップS391)、発音タイミング検出処理を終了する。

0093

すなわち、DONE状態は角速度が「閾値3」以下になるまで保持される。これは停止時に複数音が鳴ったりする誤動作を防止するためである。しかし、角速度がゆっくりと減速されて、角速度が「閾値3」以下になるまでのショット通過時間が「閾値4」を超えた場合には、動作状態はDONEからIDLEに変更される。

0094

[発音量検出]
図15を参照して、図6のステップS21の発音量検出処理の詳細説明を行う。

0095

図15は、発音量検出処理の流れを示すフローチャートである。
CPU11は、動作状態を判定し、動作状態がDONE又はIDLEである場合には、ステップS402に処理を移行させ、動作状態がACTION又はSHOTである場合には、ステップS406に処理を移行させる。

0096

動作状態がDONE又はIDLEである場合には、CPU11は、ピーク角速度値スカラー量)ωs peak、シフト速度vst、ピークシフト速度vspeak、及びピークシフト加速度aspeakを0に初期化する(ステップS402〜S405)。

0097

ピーク角速度値ωs peakは、スティックが発音スイング中に検出した角速度の最大値、シフト速度vstはスティックの先端の平行移動分の速度成分、現在のピークシフト速度vspeakはシフト速度LVstの最大値を保持している値である。発音タイミング検出(図12のステップS305、又は図13のステップS355)においてスティックのスイングが検出され、動作状態がACTION又はSHOTになると、CPU11は、現在のスティック先端角速度ベクトルのスカラー量|ωst|とピーク角速度値ωs peakとを比較し、|ωst|の方が大きい場合、ωs peakを|ωst|の値に更新する(ステップS406)。

0098

次に、CPU11は、図10のステップS212で求めたスイング方向の加速度成分LAstのシフト加速度のピーク値aspeakの保持と更新を行う(ステップS407)。

0099

続いて、CPU11は、図10のステップS212で求めたスイング方向の加速度成分LAstを不完全積分し、スイング方向の速度LVstを得る(ステップS408)。

0100

CPU11は、前記のスイング方向速度LVstとピーク角速度値vspeakとを比較し、LVstの方が大きい場合、vspeakをLVstの値に更新する(ステップS409)。

0101

次に、CPU11は、3つのピーク値からスティックの速度(音量)を求める。例えば、次の式(5)ような重み付き加算等で求める。
Pshot=a1・ωs peak+a2・vspeak+a3・aspeak (5)
ここで、a1,a2,a3はミキシングパラメータであり、実験にて決定される。
このPshotは、ショットの音の大きさとして利用される。

0102

[ノートイベント生成]
図16を参照して、図6のステップS23のノートイベント生成処理の詳細説明を行う。

0103

図16は、ノートイベント生成処理の流れを示すフローチャートである。
ショット時に、空間上に仮想的に配列された音源のどれを鳴らすかが決定されるが、ショットタイミングはシステムの遅延を考慮して先行して検出されているので、CPU11は、音が鳴るときのスティック部10の位置の推定を行う(ステップS501)。スティック部10の先端の角速度と角加速度がわかっているので、CPU11は、Trem後のスティックの姿勢を求めることにより位置を推定できる。具体的には、CPU11は、Tremをさらに時間を細分化し、その時間間隔をTとし、各時間の角速度ベクトルを前回の角速度ベクトル及び角加速度ベクトルから求める。さらに、CPU11は、この角速度ベクトルで、各時間間隔の回転角ベクトルを求め、この回転角ベクトルを用いて、合成回転行列を求め、次の姿勢を予測する。これをTremまで繰り返すことでTrem秒後の姿勢をTL→Wt+Tremと予測することができる。この姿勢パラメータからスティック部10の先端方向y軸のワールド座標系の位置Py=(PyXPyYPyZ)Tを得ることができる。

0104

音源がワールド座標系に6つマップ(配置)されている場合、それぞれの音源の位置(ワールド座標系)を、例えば、
音源1:(0,1,0)前方
音源2:(sin60,cos60,0)前方右60度方向
音源3:(−sin60,cos60,0)前方左60度方向
音源4:(0,cos45,sin45)前方上部45度方向
音源5:(cos45sin60,cos45cos60,sin45)前方右60度、上部45度方向
音源6:(−cos45sin60,cos45cos60,sin45)前方左60度、上部45度方向
とする。

0105

この各音源の位置情報と各音源番号に対応する音色は、ROM14のメモリ上に予め記憶されている。
CPU11は、ステップS501で推定した発音時のスティック部10の位置Pyとそれぞれの音源位置Psi=(PsiXPsiYPsiZ)Tとの距離を求め、一番近いものを今回のショット対象の音源とする(ステップS502)。

0106

距離測定は、ユークリッド距離を算出する。または、スイング方向軸の距離には鈍感になるような成分毎に重みつきユークリッド距離を用いることも有効である。スイング方向は移動方向なので精度が悪いので、回転軸方向より重みを大きくした距離を用いた方が望ましい。

0107

または、方位はピッチ、ヨー、ロール角度表現に変換できる。この角度表記で音源位置、スティックの位置を角度表記に変換し、距離を求めても良い。この際、ピッチ方向とヨー方向で重みを変えた距離を用いても良い。ロール成分の重みは0が望ましい。

0108

ステップS502でショット対象とした音源番号、又は、図17を参照して後述するサウンド探索処理において決定された音源番号をiとすると、CPU11は、i番目の音源に対応するノートをテーブルから読み出し(ステップS503)、発音するノートを得ることができる。

0109

次に、CPU11は、図7のステップS79又はS80で判定されたヨー方向補正モードをチェックする(ステップS504)。ヨー方向補正モードが地磁気モードである場合、CPU11は、ノートイベント生成処理を終了する。他方、ヨー補正モードがショットモードである場合、CPU11は、音源とスティック部10とがなすヨー角エラーを求める(ステップS505)。具体的には、CPU11は、スティックの方向ベクトルは姿勢パラメータから求め、音源の方向ベクトルは前述したワールド座標系の音源の位置情報を用い、これら2つのベクトルのXY成分からなるベクトルの角度の差がヨー角エラーとして求める。このヨー角エラーはZ軸まわり回転エラーであるので、CPU11は、Z軸を回転軸とした回転行列を求め、この回転行列を用いて姿勢の補正をおこなう(ステップS506)。
[サウンド探索]
図17を参照して、図16のステップS502の変形例であるサウンド探索処理の詳細説明を行う。

0110

図17は、図16のステップS502の変形例であるサウンド探索処理の流れを示すフローチャートである。本処理は、図16のステップS502の処理に替えて実行される。すなわち、本処理は、図15のステップS501の処理の後に実行され、本処理のステップS613が終了すると、CPU11は、図16のステップS503に処理を移行させる。

0111

まず、CPU11は、図16のステップS502と同様のサウンド探索方法にて、各サウンドマップから一番近い音源を探し出す(ステップS601)。
次に、CPU11は、探し出した音源番号iを今回の音源選択番号としてRAM15に記憶しておく(ステップS602)。続いて、CPU11は、前回の音源番号を読み出し、その音源番号の位置座標と今回の音源の位置座標とを比較する。このとき、垂直方向Z軸を除いた、X,Y座標を比較する(ステップS603)。垂直方向は本実施例では補正しない。

0112

さらに、CPU11は、同じ方位であるか否か判断し(ステップS604)、同じ方位であると判断した時は、図9のS202で求めた移動量の水平成分の値が予め決められた正の閾値より大きいかを判定する(ステップS605)。この判定がYESの場合、CPU11は、予め決められた水平方向の回転角度分スティック部10の先端方向の位置Pyを正方向に回転する(ステップS606)。ステップS605での判定がNOの場合、CPU11は、閾値を−1倍した負の閾値と当該移動量の水平成分とを比較して負の閾値より小さいかを判定する(ステップS607)。この判定がYESの場合、CPU11は、予め決められた水平方向の回転角度分スティック部10の先端方向の位置Pyを負方向に回転する(ステップS608)。

0113

CPU11は、このようにスティックの先端方向の方位を補正し、再度、図16のS502と同様のサウンド探索方法にて、各サウンドマップから一番近い音源を探し出す(ステップS609)。CPU11は、音源が探せたか否か判断し(ステップS610)、探せた場合(ステップS610でYESと判断された)には、新たに見つかった音源を今回の音源番号に更新しRAM15に記憶する(ステップS611)。探せなかった場合(ステップS610でNOと判断された)には、以前の音源番号が保持されることになる。

0114

次に、CPU11は、次回のショットと今回のショットとの間の移動量をもとめるため、移動量の値を0にリセットする(ステップS612)。さらに、CPU11は、今回採用した音源番号を前回の音源番号としてRAM15に記憶する(ステップS613)。

0115

[発音処理]
図18を参照して、発音部30において実行される発音処理について説明する。

0116

図18は、発音部30において実行される発音処理の流れを示すフローチャートである。

0117

図18に示すように、発音部30のCPU31は、電源投入時において、RAM34のデータのクリア、表示部35の画面に表示された画像のクリア、音源部371のクリアなどを含むイニシャライズ処理を実行する(ステップS701)。次いで、CPU31は、スイッチ処理を実行する(ステップS702)。スイッチ処理では、例えば、入力部36のスイッチ操作にしたがって、演奏者が所望する音量ボリュウム値及び音色を特定し、RAM34に格納する。

0118

続いて、CPU31は、I/F32が、ノートオンイベントを新たに受信しているかを判断する(ステップS703)。ステップS703でYesと判断された場合には、CPU31は、この受信されたノートオンイベントに基づき、設定された音量ボリュウム値及び設定された音色の楽音の発音を音源部371に指示する処理を実行する(ステップS704)。ステップS704の処理が終了すると、CPU31は、処理をステップS702に戻す。

0119

以上、本実施形態の演奏装置1の構成及び処理について説明した。
本実施形態においては、CPU11は、加速度センサ122が検出した加速度及び角速度センサ123が検出した角速度を一定タイミング毎に取得するとともに、スティック部10の初期の静止状態において、加速度センサ122により検出された重力による加速度を含み、当該初期静止状態における姿勢パラメータをRAM15に記憶する。そして一定タイミング毎に角速度センサ123が検出した角速度に応じて、この姿勢パラメータを更新を行い、この更新された姿勢パラメータに基づいて、検出された加速度から重力方向の加速度を算出する。さらに、この算出された加速度を所定区間毎に累算し、累算された加速度を、RAM15に記憶された加速度と一致するように補正する。
よって、スティック部10を高速に動作させた場合において、重力方向を補正することで、スティック部10の姿勢推定の精度を向上させることができる。

0120

また、本実施形態においては、CPU11は、スティック部10の初期の静止状態において、磁気センサ121によって、スティック部10の長手方向の軸を含めた互いに直交する3軸それぞれの方向の地磁気成分を検出し、前述の姿勢パラメータに基づいて別の3軸方向の地磁気成分に変換してRAM15に記憶する。そして、磁気センサ121が検出する各軸の地磁気成分を一定タイミング毎に取得し、取得した一定タイミング毎の各軸の地磁気成分を姿勢パラメータに基づいて、前述の異なる3軸方向の地磁気成分に変換する。さらこの変換された各地磁気成分を所定区間毎に累算し、この累算された各地磁気成分を、RAM15に記憶された各地磁気成分に一致させるように補正する。
よって、スティック部10を高速に動作させた場合において、地磁気方向を補正することで、スティック部10の姿勢推定の精度を向上させることができる。

0121

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度の値が「閾値1」を超えた後、「閾値2」を下回った場合に、ノートオンイベントを発音部30に送信する。また、「閾値2」は、角速度センサ123が取得した角速度の値が「閾値1」を超えた後の最大値に応じた値(具体的には、当該最大値に一定比率値を乗算した値)である。
よって、発音遅延時間を考慮して本来のショットタイミングよりも一定時間前に発音タイミングを生成することで、発音の精度を向上できる。

0122

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度の値が「閾値1」を超えた後、0になるまでの時間を推定し、推定された時間が「閾値5」を下回った場合に、ノートオンイベントを発音部30に送信する。
よって、発音遅延時間を考慮して本来のショットタイミングよりも一定時間前に発音タイミングを生成することで、発音の精度を向上できる。

0123

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度に基づいてスティック部10の先端部の角速度及び角加速度を算出し、算出されたスティック部10の先端部の角速度及び角加速度に基づいて、角速度センサ123が取得した角速度の値が「閾値1」を超えた後、0になるまでの時間を推定する。
よって、角速度の値が0になるまでの時間の推定精度を向上できる。

0124

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度に基づいて、演奏操作中のスティック部10の回転軸方向を推定し、角速度センサ123が取得した角速度からスティック部10の長手方向の軸成分を除いた角速度に基づいて、スティック部10の先端部の角速度を算出し、推定された直近の回転軸方向、及び算出されたスティック部10の先端部の直近の角速度に基づいて、所定時間後のスティック部10のワールド座標系の位置を算出し、音源マップの複数の領域のうち、算出された当該位置に最も近い領域に対応する楽音のノートオンイベントを発音部30に送信する。
よって、スティック部10が斜めにスイングされた場合であっても、本来のショットタイミングでのスティック部10の位置の音色で発音できる。

0125

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度に基づいて、演奏操作中のスティック部10の回転軸方向を推定し、角速度センサ123が取得した角速度からスティック部10の長手方向の軸成分を除いた角速度に基づいて、スティック部10の先端部の角速度を算出し、推定された直近の回転軸方向、及び算出されたスティック部10の先端部の直近の角速度に基づいて、所定時間後のスティック部10のワールド座標系の位置を算出し、加速度センサ122が取得した加速度に基づいて、移動距離を算出し、算出された当該位置、及び算出された当該移動距離に基づいて、所定時間後のスティック部10のワールド座標系の位置を補正し、音源マップの複数の領域のうち、補正された当該位置に最も近い領域に対応する楽音のノートオンイベントを発音部30に送信する。
よって、スティック部10が斜めにスイングされ、かつ平行移動した場合であっても、本来のショットタイミングでのスティック部10の位置の音色で発音できる。

0126

また、本実施形態では、CPU11は、角速度センサ123が取得した角速度に基づいて、演奏操作中のスティック部10の角速度の最大値を算出し、加速度センサ122が取得した加速度に基づいて、演奏操作中のスティック部10の加速度の最大値を算出し、算出された角速度の最大値と、加速度の最大値とに基づいて、発音する楽音の音量を制御する。
よって、仮想的な音源がワールド座標系に垂直に配置されている場合であっても、スイング動作の強さを反映して適切な音量制御が可能となる。

0127

以上、本発明の実施形態について説明したが、実施形態は例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換など種々の変更を行うことができる。これら実施形態やその変形は、本明細書などに記載された発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。

0128

以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
ユーザが保持可能な保持部材と、
前記保持部材の互いに直交する3軸それぞれの方向に生じる加速度を検出する加速度センサと、
前記直交する3軸それぞれを中心とする角速度を検出する角速度センサと、
前記角速度センサが検出した角速度に基づいて、演奏操作中の前記演奏部材の角速度の最大値を算出する第1算出手段と、
前記加速度センサが検出した加速度に基づいて、前記保持部材の加速度の最大値を算出する第2算出手段と、
前記第1算出手段により算出された前記角速度の最大値と、前記第2算出手段により算出された前記加速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御手段と、を備える、
ことを特徴とする演奏装置。
[付記2]
ユーザが保持可能な保持部材と、前記保持部材の互いに直交する3軸のそれぞれの方向に生じる加速度を検出する加速度センサと、前記直交する3軸それぞれを中心とする角速度を検出する角速度センサと、を有する演奏装置が実行する方法であって、
前記角速度センサが検出した角速度に基づいて、演奏操作中の前記演奏部材の角速度の最大値を算出する第1算出ステップと、
前記加速度センサが検出した加速度に基づいて、前記保持部材の加速度の最大値を算出する第2算出ステップと、
前記第1算出ステップにて算出された前記角速度の最大値と、前記第2算出ステップにて算出された前記加速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御ステップと、
を含む方法。
[付記3]
ユーザが保持可能な保持部材と、前記保持部材の互いに直交する3軸のそれぞれの方向に生じる加速度を検出する加速度センサと、前記直交する3軸それぞれを中心とする角速度を検出する角速度センサと、を有する演奏装置として用いられるコンピュータに、
前記角速度センサが検出した角速度に基づいて、演奏操作中の前記演奏部材の角速度の最大値を算出する第1算出ステップと、
前記加速度センサが検出した加速度に基づいて、前記保持部材の加速度の最大値を算出する第2算出ステップと、
前記第1算出ステップにて算出された前記角速度の最大値と、前記第2算出ステップにて算出された前記加速度の最大値とに基づいて、発音する楽音の音量を制御する音量制御ステップと、
を実行させるプログラム。

0129

1・・・演奏装置、10・・・スティック部、11・・・CPU、12・・・姿勢センサ、13・・・I/F装置、14・・・ROM、15・・・RAM、16・・・入力部、17・・・無線通信装置、18・・・LED、121・・・磁気センサ、122・・・か速度センサ、123・・・角速度センサ、30・・・発音部、31・・・CPU、32・・・I/F、33・・ROM、34・・・RAM、35・・・表示部、36・・・入力部、37・・・サウンドシステム、38・・・赤外線通信装置、371・・・音源部、372・・・オーディオ回路、373・・・スピーカ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 株式会社コルグの「 エフェクタ」が 公開されました。( 2019/04/25)

    【課題】高音の楽音と低音の楽音の一方のみを選択することも含む範囲で、高音と低音のバランスを簡単に調整できるエフェクタを提供する。【解決手段】本発明のエフェクタは、並列に配置された2次以上のハイパスフィ... 詳細

  • カシオ計算機株式会社の「 電子鍵盤楽器、鍵盤発光方法及び鍵盤発光プログラム」が 公開されました。( 2019/04/18)

    【課題】楽音操作による楽音変化の内容を報知する。【解決手段】電子鍵盤楽器1は、複数の鍵21及び発光部211を有する鍵盤部22と、複数の鍵21のうちの押鍵操作された鍵21に対応する音高の楽音を発生させる... 詳細

  • カシオ計算機株式会社の「 電子楽器、電子楽器の制御方法及びそのプログラム」が 公開されました。( 2019/04/18)

    【課題】 正しい音高の鍵のある程度の範囲を習得することができ、演奏者が楽曲を演奏している気分を味わうことができる電子楽器を提供する。【解決手段】 本発明は、制御部が、曲データに含まれる第1タイミン... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ