米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 楽器;音響 -> カシオ計算機株式会社

発明の名称 運指情報生成装置、及びプログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−178696(P2007−178696A)
公開日 平成19年7月12日(2007.7.12)
出願番号 特願2005−376695(P2005−376695)
出願日 平成17年12月27日(2005.12.27)
代理人 【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
発明者 副島 淳一郎
要約 課題
ユーザーにとってより適切な運指情報を自動生成するための技術を提供する。

解決手段
ユーザーが各指の使用頻度を設定すると、その設定内容に応じて、運指コストを算出するための運指コストテーブルが修正される。その修正により、同じ運指であっても、設定内容に応じて運指コストが変化する。その結果、運指コストに着目して決定される運指に、ユーザーの意向を反映させる。
特許請求の範囲
【請求項1】
楽器に設けられた演奏操作子群のなかで操作して楽曲を演奏していく際の指の運びである運指を示す運指情報を生成する装置であって、
前記楽曲の進行に応じて操作していくべき演奏操作子毎に、該演奏操作子、及び該演奏操作子を操作すべきタイミングを示す演奏データを取得するデータ取得手段と、
前記運指情報の生成に係わるユーザーの個人情報を入力するための情報入力手段と、
前記データ取得手段が取得した演奏データを参照して、前記情報入力手段により入力される個人情報を考慮した運指情報を該演奏データ毎に生成する運指情報生成手段と、
を具備することを特徴とする運指情報生成装置。
【請求項2】
前記情報入力手段は、前記個人情報として、各指の使いやすさ、手の大きさ、及び演奏のための所定の指使いを行う頻度、のうちの少なくとも一つを入力できる、
ことを特徴とする請求項1記載の運指情報生成装置。
【請求項3】
前記運指情報生成手段は、前記個人情報として、前記各指の使いやすさ、及び前記手の大きさのうちの何れかが入力された場合、運指を行ううえでの難易度を求めるために用意したテーブルの内容を更新することにより、該個人情報を考慮した運指情報の生成を行う、
ことを特徴とする請求項2記載の運指情報生成装置。
【請求項4】
楽器に設けられた演奏操作子群のなかで操作して楽曲を演奏していく際の指の運びである運指を示す運指情報を生成する運指情報生成装置を実現可能なデータ処理装置に実行させるプログラムであって、
前記楽曲の進行に応じて操作していくべき演奏操作子毎に、該演奏操作子、及び該演奏操作子を操作すべきタイミングを示す演奏データを取得する機能と、
前記運指情報の生成に係わるユーザーの個人情報を入力するための機能と、
前記取得する機能により取得した演奏データを参照して、前記入力するための機能により入力される個人情報を考慮した運指情報を該演奏データ毎に生成する機能と、
を実現させるためのプログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、楽器に設けられた演奏操作子群のなかで操作して楽曲を演奏していく際の指の運びである運指を示す運指情報を生成するための技術に関する。
【背景技術】
【0002】
例えば鍵盤楽器では、押鍵(操作)すべき鍵を順次、押鍵していくことで楽曲の演奏が行われる。しかし、演奏技術の未熟な演奏者の多くは、押鍵すべき鍵をどの指で押鍵すべきかが分からないのが実情である。このことから、押鍵すべき鍵の押鍵に用いるべき指を示す指情報を表示する運指表示装置が製品化されている。運指情報は、その指情報の表示に用いられている。運指情報生成装置は、その運指情報を自動生成するものである。演奏の進行に応じて押鍵していくべき鍵毎の運指情報は、例えばその鍵、その鍵を押鍵しているべきタイミング、及びその押鍵に用いるべき指を示すものである。鍵、及びその鍵を押鍵しているべきタイミングは演奏データとして与えられるため、運指情報の生成はその鍵の押鍵に用いるべき指を決定することに相当する。
【0003】
従来の運指情報生成装置としては、例えば特許文献1に記載されたものがある。何れの運指情報生成装置であっても、運指情報の生成は運指がより容易となる指を特定することを基本にして行われる。
【0004】
従来の運指情報生成装置は、多数の演奏者を想定して、平均的な演奏者にとって最適と思われる運指情報を生成していた。しかし、周知のように、身体的特徴や好みなどは演奏者によって異なる。このため、違和感を覚える演奏者も少なくないのが実情である。このことから、運指情報は対象となる演奏者(ユーザー)に合わせて生成することも重要であると考えられる。
【特許文献1】特開2001−331173号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明の課題は、ユーザーにとってより適切な運指情報を自動生成するための技術を提供することにある。
【課題を解決するための手段】
【0006】
本発明の運指情報生成装置は、楽器に設けられた演奏操作子群のなかで操作して楽曲を演奏していく際の指の運びである運指を示す運指情報を生成することを前提とし、楽曲の進行に応じて操作していくべき演奏操作子毎に、該演奏操作子、及び該演奏操作子を操作すべきタイミングを示す演奏データを取得するデータ取得手段と、運指情報の生成に係わるユーザーの個人情報を入力するための情報入力手段と、データ取得手段が取得した演奏データを参照して、情報入力手段により入力される個人情報を考慮した運指情報を該演奏データ毎に生成する運指情報生成手段と、を具備する。
【0007】
なお、上記情報入力手段は、個人情報として、各指の使いやすさ、手の大きさ、及び演奏のための所定の指使いを行う頻度、のうちの少なくとも一つを入力できる、ことが望ましい。また、運指情報生成手段は、個人情報として、各指の使いやすさ、及び手の大きさのうちの何れかが入力された場合、運指を行ううえでの難易度を求めるために用意したテーブルの内容を更新することにより、該個人情報を考慮した運指情報の生成を行う、ことが望ましい。
【0008】
本発明のプログラムは、楽器に設けられた演奏操作子群のなかで操作して楽曲を演奏していく際の指の運びである運指を示す運指情報を生成する運指情報生成装置を実現可能なデータ処理装置に実行させることを前提とし、上記運情報生成装置が具備する手段を実現させるための機能を搭載している。
【発明の効果】
【0009】
本発明は、楽曲の進行に応じて操作していくべき演奏操作子毎に、演奏操作子、及びその演奏操作子を操作すべきタイミングを示す演奏データを取得し、運指情報の生成に係わるユーザーの個人情報を入力可能とし、取得した演奏データを参照して、入力された個人情報を考慮した運指情報を演奏データ毎に生成する。ユーザーが入力した個人情報を考慮することにより、運指情報の生成にその個人情報を反映させることができる。このため、ユーザーにとってより適切な運指情報をより確実に生成できることとなる。
【発明を実施するための最良の形態】
【0010】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態による運指情報生成装置の構成を説明する図である。
その運指情報生成装置10は、図1に示すように、装置10全体の制御を行うCPU11と、そのCPU11がワークに用いるRAM12と、CPU11が実行するプログラムや各種制御用データ等を格納したROM103と、例えばキーボードやポインティングデバイス(マウス等)等の入力装置用のインターフェース、CD−ROMやDVD等の記録媒体にアクセスする媒体駆動装置、及びそのインターフェース等からなる入力部14と、及び表示装置に画像を表示させる表示部15と、を備えた構成となっている。
【0011】
その運指情報生成装置10は、例えばパーソナルコンピューター(PC)に、運指情報生成装置10として動作させるためのアプリケーション・プログラム(以下「運指生成アプリケーション」)を搭載させることにより実現させている。そのアプリケーションは、例えば入力部14を構成する媒体駆動装置がアクセス可能な記録媒体に記録して提供されるものである。そのアプリケーションは、インターネット等のネットワークを介して配信するようにしても良い。アプリケーションを搭載(インストール)できるように、ROM13としては書き込み可能なメモリ(例えばフラッシュメモリ)が採用されている。運指情報生成装置10を実現させるPCは、ROM13の他に、或いはその代わりにハードディスク装置等の補助記憶装置を搭載したものであっても良い。表示部15が画像を表示させる表示装置は、外付けのもの、搭載されたものの何れであっても良い。ここでは便宜的に、表示装置は搭載されたもの、つまり表示部15を構成しているものと想定する。
【0012】
本実施の形態では、楽曲の演奏で発音させるべき楽音毎に、その楽音を発音させるべきタイミング、及びその楽音の音高を示す演奏データを取得し、その演奏データを参照して運指データを生成する。それにより、最終的に図2に示すような演奏データを取得している。図2に示す演奏データはRAM12に書き込まれた場合のものであり、その格納場所は、[]で示す括弧内の数値(インデクス値)で指定される。
【0013】
その演奏データは、図2に示すように、データlTime、lGate、lTmsec、Pitch、iPosX、cfig、iHand、icost、cIsHarm、iArpS、iArpE、pHTop、pHTail、cTendency、cTendSteps、cIsSO、pPFTop、pPHTail、pNHTop、pNHTail、iNP、prev、及びnextを有している。各データは以下のようなものである。
【0014】
データlTimeは、発音開始時刻を示すものである。その発音開始時刻は例えば演奏開始からのものをMIDIで扱う単位時間(ステップ)数で表されている。データlGateは発音時間を示すものである。データlTmsecはデータlTimeが示す発音開始時刻を絶対時間(単位はmsec)で示すものである。データPitchは楽音のピッチを示すもの(ピッチ番号、或いはノート番号と呼ぶ)である。データiPosXはそのピッチが割り当てられた鍵の鍵盤上の座標(X座標)を示すものである。データcfigは、その鍵の押鍵に割り当てられた指を示す指番号である。値の0は親指を示し、同様にして、1は人差し指、2は中指、3は薬指、4は小指をそれぞれ示している。データiHandは鍵を押鍵して発音される楽音が属するパートを示すものである。そのパートは押鍵に使う指がある手で区別されるものであり、その手が右手のパートでは1、左手では2がデータiHandとして格納される。データicostは、割り当てられた指で鍵を押鍵する難易度の評価値(難易度データ)である。データcIsHarmは楽音が和音の構成音か否かを示すものである。その値は構成音でなければ0、構成音であれば−1となる。
【0015】
データiArpSは、アルペジオを構成する先頭の楽音か否かを示す先頭フラグである。データiArpEは、その末端(最後)の楽音か否かを示す末端フラグである。それらの値は、該当するか否かによって、予め定めた2種類の値のうちの何れかとなる。データpHTopは、和音の先頭音(一番下の音(最低音))の演奏データの格納場所を示すポインタ(インデクス値)である。データpHTailは、和音の終端音(一番上の音(最高音))の演奏データの格納場所を示すポインタ(インデクス値)である。それらのインデクス値は、楽音が和音の構成音であった場合に格納される。そうでなければ予め定めた固定値が格納される。
【0016】
データcTendencyは、楽音近傍の楽音の並び(音列)の高低傾向を示す値(0は極値、正の値は上昇傾向、負の値は下降傾向、1は変化しない踊り場、2はそれ以外(の変化あり))である。データcTendStepsは極値となるまでの段階数である。データcIsSOは、ポリフォニーとなっているか否かを示すフラグである。その値の絶対値は音数を示している。正の値は前に同時発音中の楽音の存在を示し、負の値は後に同時発音中の楽音の存在を示している。データpPHTopは前の音列を構成する和音の先頭音の演奏データのポインタである。データpPHTailはその和音の終端音の演奏データのポインタである。データpNHTop、pNHTailはそれぞれ、次の音列を構成する和音の先頭音、終端音の演奏データのポインタである。データiNPは割り当てた指を押鍵に使うべきでない禁止条件に該当するか否かを示す値である(0は該当しないことを示す)。データprevは前の演奏データのポインタである。データnextは次の演奏データのポインタである。
【0017】
上記データlTime、lGate、lTmsec、及びPitchは発音させるべき楽音、及びそれを発音させるべき期間(タイミング)を示すデータであり、本来の演奏データ(以下、混乱を避けるために「実演奏データ」と呼ぶ)を構成する。それら、並びにデータcfig、及びiHandは運指データを構成するものである。それらのなかで、データcfig、及びiHandは最小限の運指データ(以下、混乱を避けるために「最小運指データ」と呼ぶ)を構成する。それら、並びにデータprev、及びnextを除く他のデータは、その最小運指データ生成用のものである。
【0018】
図2に示すような構成の実演奏データは例えば、入力部14を構成する媒体駆動装置がアクセス可能な記録媒体により、或いは不図示の通信ネットワークを介して運指情報生成装置10に入力される。ここでは記録媒体により入力されるものと想定する。
【0019】
上記運指(最小運指)データは、運指がより容易となるように生成される。しかし、その運指が容易か否かは演奏者によって異なる。演奏を行ううえで好む指使いも演奏者によって異なる。このようなことから、本実施の形態では、運指データ生成上の条件をユーザーが任意に指定できるようにして、ユーザーにとってより適切な運指(最小運指)データを生成可能とさせている。
【0020】
その条件としては、各指の使用頻度(使いやすさ)、手の大きさ、及び特殊な指使い(演奏のための所定の指使い)、を指定可能とさせている。指定可能な条件として各指の使用頻度を採用したのは、ユーザーが各指に対して使いやすいと感じる程度を運指データの生成に反映させるためである。手の大きさを採用したのは、その大きさによって、押鍵が容易と感じられる音高差(連続して押鍵すべき鍵間、或いは同時に押鍵しているべき鍵間)は変化するからである。特殊な指使いを採用したのは、その指使いを困難とする程度を運指データの生成に反映させるためである。そのような条件のうちの1つ以上を必要に応じて指定することにより、ユーザーにとってより適切と感じられる運指データを生成できるようになる。
【0021】
各条件の指定は、特には詳細な説明は省略するが、所望の条件の種類を選択させてその指定を行わせるようにしている。その条件として各指の使用頻度が選択された場合、図13に示すような設定画面を表示部15に表示させ、手毎に各指の使用頻度を相対的に設定させるようにしている。条件として手の大きさ(手の幅指定)が選択された場合には、図14に示すような設定画面を表示部15に表示させ、手毎にその最大幅(指の並びに沿った方向のもの)を長さで設定させるようにしている。条件として特殊な指使いが選択された場合には、図15に示すような設定画面を表示させ、その実行頻度を設定させるようにしている。その設定は、「多い」「普通」「少ない」のうちから一つを選択させることで行わせるようにしている。
【0022】
連続する2つの音を発音させるための難易度(運指コスト)は、図3に示す運指コストテーブルを参照して求めている。図3中、「bw」は鍵盤種類(0は白鍵、1は黒鍵)、「pm」はピッチ変化方向(0は増加方向、1は減少方向)、「f1」は変数ev1の値で指定される音符の指番号(その値で指定される演奏データ中のデータcfigの値)、「f2」は変数ev2の値で指定される音符の指番号、「intv」はそれら2つの音符間のピッチ差、をそれぞれ表している。それにより、テーブルは、それらのデータの各値の組み合わせで示される状況別に、その状況下での運指のコスト(の値)を格納したものとなっている。そのテーブルは、運指生成アプリケーションが格納された記録媒体に併せて格納されており、そのアプリケーションと共にロードするようになっている。
【0023】
図3に示すような運指コストテーブルを用いていることから、本実施の形態では、条件として各指の使用頻度、或いは手の大きさが選択されてその設定が行われた場合、その設定内容に応じて運指コストテーブルの内容を更新するようにしている。その更新により、ユーザーが指定した条件を反映させた最小運指データの生成を行っている。運指データの生成中に求められた運指コストは上記データicostとして格納される。運指データの生成は、そのデータicostの値を順次、更新しながら行われる。
【0024】
以降は図4〜図12に示す各種フローチャートを参照して、上述したような運指データの生成を行う運指情報生成装置10の動作について詳細に説明する。その動作は、CPU13が、上記運指生成アプリケーションをROM13からRAM12に読み出して実行することで実現される。
【0025】
図4は、全体処理のフローチャートである。これは、上記運指生成アプリケーションを起動させてから終了させるまでの間に実行される処理を抜粋してその流れを示したものである。始めに図4を参照して、その全体処理について詳細に説明する。
【0026】
先ず、ステップ101では、各種変数に初期値を代入するといった初期化を行う。次のステップ102では、入力部14を構成する媒体駆動装置に、それに装着された記録媒体にアクセスさせ、その記録媒体に格納された演奏データ(図2)の読み込みを行う。特には詳細な説明は省略するが、その読み込みは、入力部14を構成する入力装置、或いはそれと接続された入力装置への操作によってユーザーが指定した演奏データを対象に行う。その読み込みによって演奏データをRAM12に格納した後はステップ103に移行する。
【0027】
ステップ103では、図3に示す運指コストテーブルをROM13から読み出してRAM12に展開し、準備する。続くステップ104では、条件別の設定をユーザーに行わせて、その設定内容を取り込むためのユーザー指定条件読込処理を実行する。その実行により、図13〜図15に示す各種設定画面を表示部15に表示させての設定を可能とさせている。
【0028】
ステップ104に続くステップ105では、その読込処理の実行により取り込んだ設定内容に従って運指コストテーブルを修正するためのコストテーブル修正処理を実行する。その後に移行するステップ106では、修正後の運指コストテーブルを参照して運指データを生成するための運指生成処理を実行する。その実行後、一連の処理を終了する。
【0029】
生成した運指データは、ユーザーの指定した格納場所への格納や表示も行えるようになっている。しかしここでは、そのことについての詳細な説明は省略する。
上述したように運指コストテーブルは、各指の使用頻度、或いは手の幅指定の何れかの条件を選択しての設定によって修正するようにしている。それらの条件別にテーブルを修正するために、コストテーブル修正処理では、図5、及び図6に示すコストテーブルの修正処理を実行するようにしている。ここで図5、及び図6を参照してそれらコストテーブル修正処理で実行されるサブルーチン処理について詳細に説明する。
【0030】
図5は、各指の使用頻度によるコストテーブルの修正処理のフローチャートである。始めに図5を参照して、その修正処理について詳細に説明する。
図3に示す運指コストテーブルは、右手用、左手用の2つ存在する。このことから、図5中では運指コストテーブルは6次元の配列変数cCostTwoFingerとして「cCostTwoFinger[iRL][ibw][ipm][iFf][iFt][iI]」と表記している(以降、この表記も用いる)。添字として表記したiRL、ibw、ipm、iFf、iFt、及びiIはそれぞれ、鍵盤種類、ピッチ変化方向、現在、対象とする音符(指定音)の指番号、その次に位置する音符の指番号、それら2つの音符間のピッチ差、を指定するための変数名である。図5中に表記の「RL」「BLACKANDWHITE」「PLUSMINUS」「MAXFINGER」「MAXPITINTERVAL」はそれぞれ、それらの変数の値の上限値として用意した定数である。設定された指毎の指定頻度は、上記ステップ104のユーザー指定条件読込処理の実行により、2次元の配列変数iFigPriorityの対応する要素に代入される。
【0031】
上記変数iRL、ibw、ipm、iFf、iFt、及びiIはステップ301の実行により、それぞれ初期値として0が代入される。続くステップ302〜315では、変数iT以外の5つの変数の値の組み合わせによって指定される複数の要素を処理単位として、その処理単位を順次、変更していくための処理が行われる。その処理単位となる複数の要素は、ステップ314の判定がYESなって移行するステップ316〜323の処理を実行することで内容が更新される。
【0032】
先ず、ステップ316では、変数iIに0を代入する。続くステップ317では、変数iTの値が定数MAXINTERVAL未満か否か判定する。その関係が満たされている場合、判定はYESとなってステップ319に移行する。そうでない場合には、判定はNOとなり、ステップ318で変数iFtの値をインクリメントした後、ステップ314に戻る。それにより、変数iIを除く5つの変数のうち、変数iFtの値のみを代えて指定される複数の要素が次の処理対象に変更される。
【0033】
ステップ319では、変数cTmpに、要素cCostTwoFinger[iRL][ibw][ipm][iFf][iFt][iI]の値を代入する。次のステップ320では、変数cTmpに、それまでの値に要素iFigPriority[iRL][iFf]の値(変数iRLの値が示す手の変数iFtの値が示す指に設定された使用頻度を示す値)を乗算し、その乗算結果を100で割った除算結果(=cTmp・iFigPriority[iRL][iFf]/100)を代入する。その次のステップ321では、変数cTmpに、それまでの値に要素iFigPriority[iRL][iFt]の値を乗算し、その乗算結果を100で割った除算結果(=cTmp・iFigPriority[iRL][iFt]/100)を代入する。その代入後は、ステップ322で変数cTmpの値をcCostTwoFinger[iRL][ibw][ipm][iFf][iFt][iI]に代入し、更にステップ323で変数iIの値をインクリメントした後、上記ステップ317に戻る。
【0034】
次に図6に示す手の幅指定によるコストテーブルの修正処理について詳細に説明する。その図6では、図5に示す修正処理と内容が同じステップの処理には同一の符号を付している。それにより、図5から異なっている部分にのみ着目する形で説明する。設定された手の幅は、上記ステップ104のユーザー指定条件読込処理の実行により、1次元の配列変数iHandWidthの対応する要素に代入される。
【0035】
図6では、ステップ319の処理の実行後、ステップ401に移行する。そのステップ401では、変数iIの値が示す幅が要素iHandWidth[iRL]の値(設定された手の幅)より大きいか否か判定する。その大小関係が満たされている場合、判定はYESとなり、ステップ402で変数cTmpに、それまでの値に変数iIの値が示す幅を乗算し、その乗算結果を要素iHandWidth[iRl]の値で割って得られる値(=cTmp・iI/iHandWidth[iRl])を代入した後、上記ステップ322に移行する。そうでない場合には、判定はNOとなって次にそのステップ322に移行する。それにより、設定された手の幅から修正が必要とする内容だけを修正する。
【0036】
図7は、図4に示す全体処理内でステップ106として実行される運指生成処理のフローチャートである。次に図7を参照して、その生成処理について詳細に説明する。
押鍵すべき鍵の押鍵に用いることが可能な指は5本である。楽曲全体では、押鍵すべき鍵の数をNとすると、全組み合わせ(運指系列)数は5Nとなる。本実施の形態では、全組み合わせで運指コストを調べ、そのなかで最も低い組み合わせを抽出することにより、各鍵の押鍵に用いるべき指を決定している。それまでで最適な組み合わせを保存するためにバッファcfigsave[]をRAM12に確保している。
【0037】
先ず、ステップ501では、変数mefに先頭の演奏データのインデクス値を代入し、変数meTermには運指データ生成範囲の終端に位置する演奏データのインデクス値を代入する。次のステップ502では、変数CostBestに、生成範囲内で生成した運指データの全運指コスト(データicostの累算値)として考えられる最大値を代入する。その代入後は、ステップ503で変数meに変数mefの値、変数iNCntに0、変数iLoopMaxに1をそれぞれ代入してからステップ504に移行する。
【0038】
ステップ504では、変数meの値が変数meTermの値と異なるか否か判定する。それらの値が一致する場合、判定はNOとなってステップ507に移行する。そうでない場合には、判定はYESとなり、ステップ505で変数iNCntの値をインクリメントすると共に、変数iLoopmaxの値をそれまでの値に5を掛けた値に更新し、次のステップ506で変数meにme.nextの値を代入する。その後、上記ステップ504に戻る。それにより、ステップ504の判定がNOとなってステップ507に移行した際には、変数iLoopmaxには全組み合わせ数が値として代入される。
【0039】
ステップ507では、変数iLoopに0を代入する。次のステップ208では、変数iLoopの値が変数iLoopmaxの値より小さいか否か判定する。全組み合わせの確認が終了していない場合、その関係が満たされることから、判定はYESとなり、ステップ509で変数iDigitに1、変数meに変数mefの値、変数iCntに0をそれぞれ代入した後、ステップ510に移行する。そうでない場合には、判定はNOとなり、ステップ518に移行して、バッファcfigsave[]に保存した組み合わせ(運指系列)にとなるように、各演奏データのデータcfigを更新する。それにより、全体としての運指コストが最低となる指を各演奏データに適用させた後、一連の処理を終了する。
【0040】
ステップ510〜513で形成される処理ループでは、変数iLoopの値によって決定する運指の組み合わせを設定するための処理が行われる。
先ず、ステップ510では、変数meの値が変数meTermの値と等しくないか否か判定する。それらの値が等しい場合、判定はNOとなり、対象とする組み合わせの設定が終了したとしてステップ514に移行する。そうでない場合には、判定はYESとなってステップ511に移行する。
【0041】
ステップ511では、me.cfigとして、変数ILoopの値を変数iDigitの値で割った除算結果を5で割ったときの余り(図中「(iLoop/iDigit)%5」と表記)を格納する。続くステップ512では、変数iDigitに、それまでの値に5を掛けた値を代入する。その後はステップ513に移行し、変数iCntの値をインクリメントし、変数meにme.nextの値を代入してから上記ステップ510に戻る。それにより、ステップ510の判定がNOとなるまで、各演奏データのデータcfigを更新していくことにより、対象とする組み合わせの設定を行う。
【0042】
そのステップ510の判定がNOとなって移行するステップ514では、設定した組み合わせを評価するための運指評価処理を実行する。次のステップ515では、その運指評価処理の実行により変数CostTmpに代入された運指コスト累算値が変数CostBestの値より小さいか否か判定する。今回の組み合わせがこれまでのなかで最も全体の運指コストが小さかった場合、その関係が満たされることから、判定はYESとなり、ステップ516で各演奏データからデータcfigを読み出してバッファcfigsave[]に保存し、次のステップ519で変数iLoopの値をインクリメントした後、上記ステップ508に戻る。そうでない場合には、判定はNOとなってそのステップ517に移行する。
【0043】
図8は、上記ステップ514として実行される運指評価処理のフローチャートである。次に図8を参照して、その評価処理について詳細に説明する。
先ず、ステップ601では、運指評価に用いる各種変数の初期化等を行う。その初期化により、変数CostTmpには0を代入する。続くステップ602では、変数meに、楽曲データ中で先頭に位置する演奏データを指定するインデクス値(ポインタ)を代入する。次のステップ603では、運指評価が終了したか否か判定する。その評価は、変数meの値で指定される演奏データを先頭のものから最後のものまで順次、変更しながら行われる。このため、変数meの値で指定される演奏データが存在しない場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップ604に移行する。
【0044】
ステップ604では、変数meの値で指定される演奏データが示す楽音(指定音)とその次に発音すべき楽音間のコストを算出する2音間コスト算出処理を実行する。次に移行するステップ605では、現在、注目している運指(指定音を発音させるための運指)が禁止条件とする事項の何れかに該当しているか否か確認するための禁止事項検索処理を実行する。その後はステップ606に移行する。
【0045】
ステップ606では、変数meの値で指定される演奏データ中のデータiNP(図中「me.iNP」と表記)の値が0でないか否か判定する。上記禁止事項検索処理では、該当する事項(禁止条件)に該当していることが判明した場合、その値として0以外の値を格納する。このことから、その場合、判定はYESとなり、ステップ610でme.icostとして、想定範囲内におけるコストの最大値を格納した後、ステップ608に移行する。そうでない場合には、判定はNOとなってステップ607に移行し、運指に従って指定音を発音させるためのコストをより適切なものに更新するためのコスト補正処理を実行する。ステップ608にはその後に移行する。
【0046】
ステップ608では、変数CostTmpに、それまでの値にme.icostの値を加算して得られる値を代入する。続くステップ609では、変数meにme.nextの値を代入する。その後に上記ステップ603に戻る。
【0047】
このようにして、演奏データのデータicostが求められ、その最終的な値が変数CostTmpを用いて累算される。それにより、運指系列毎に運指コストの累算値を比較できるようにさせている。
【0048】
以降は、この運指評価処理内で実行される各種サブルーチン処理について詳細に説明する。
図9は、上記ステップ604として実行される2音間コスト算出処理のフローチャートである。始めに図9を参照して、そのコスト算出処理について詳細に説明する。
【0049】
このコスト算出処理では、上述したように、図3に示す運指コストテーブルを参照して、連続する2音にのみ着目する形でその2音を発音させるための運指コストを算出するようになっている。
【0050】
先ず、ステップ701では、変数ev1、及びev2にそれぞれ、変数meの値、及びme.nextの値を代入する。続くステップ702では、変数f1にev1.cfigの値、変数p1にev1.iPosXの値、変数bwに変数p1の値を2で割った余り(図中「p1%2」と表記)、変数f2にev2.cfigの値、変数p2にev2.iPosXの値、をそれぞれ代入する。その代入後に移行するステップ703では、変数p1の値が変数p2の値以下か否か判定する。後者が前者より大きい場合、判定はYESとなり、ステップ704で0を変数pmに、変数p2の値から変数p1の値を引いた値を変数intvにそれぞれ代入してからステップ706に移行する。そうでない場合には、判定はNOとなり、ステップ705で1を変数pmに、変数p1の値から変数p2の値を引いた値を変数intvにそれぞれ代入してからステップ706に移行する。
【0051】
ステップ706では、変数intvの値が定数MAXINTV以下か否か判定する。その定数MAXINTVは、運指により押鍵を行う難易度が極めて高いと考えられる鍵間(ピッチ差)を判定するために用意したものである。このことから、着目する2つの音符の間にそのようなピッチ差が存在していない場合、判定はYESとなり、ステップ707でev1.icostとして、変数bw、pm、f1、f2、及びintvの各値によって運指コストテーブル(図3)から抽出される値(図中「CT[bw][pm][f1][f2][intv]」と表記)を代入した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ステップ708でev1.icostとして定数MAXCOSTを代入した後、一連の処理を終了する。
【0052】
上記定数MAXCOSTは、例えばコストとして想定する範囲内で最大値として定めたものである。図8中のステップ610では最大値としてこの定数MAXCOSTにme.icostを更新するようになっている。
【0053】
上記運指コストテーブルは、ユーザーが設定した条件により、格納された運指コストが修正されている。その修正により、条件を設定したか否か、その設定内容によって変数CostTmpに最終的に代入される運指コストの累算値が変化する。このため、設定した条件、その内容によって、最終的に選択される運指系列を変化させることが可能となっている。
【0054】
図10は、図8示す運指評価処理内でステップ605として実行される禁止事項検索処理のフローチャートである。次に図10を参照して、その検索処理について詳細に説明する。
【0055】
例えば親指や小指はその長さ、手における位置などの理由により、鍵盤上の黒鍵の押鍵はそれ以外の指よりも困難である。同じ指を使った連続する押鍵は、離鍵から押鍵までの時間間隔、押鍵する鍵間の距離(音高(ピッチ)差)などに応じて難易度(コスト)が変化する。時間間隔が短く、且つ鍵間の距離が大きいような場合、その押鍵は不可能か、或いは極めて困難となる。他にも不可能、或いは極めて困難な運指は存在する。このようなことから、検索処理では、指定音に割り当てられた運指が不可能、或いは極めて困難と考えられる条件(禁止事項)毎に、それを満たしているか否か検索により確認するようになっている。
【0056】
先ず、ステップ801では、親指や小指といった比較的に短い指で演奏者から見て離れた場所にある黒鍵を押鍵するような運指を禁止条件に該当しているとして検出するための黒鍵の指使い検出処理を実行する。次のステップ802では、和音を発音させる場合に、或る指で押鍵する鍵より高音の鍵をその指より低音側に位置する指で押鍵する、或いはその逆に押鍵するといったことを禁止事項として検出するための和音での指の逆転検出処理を実行する。その後はステップ803に移行する。
【0057】
ステップ803では、複数の鍵を押鍵する状況下で、同時に押鍵していることが不可能と考えられる指の割り当てを禁止条件として検出するための指の開き幅の限界検出処理を実行する。続くステップ804では、同時に押鍵していることが不可能な数の押鍵を禁止条件として検出するための多声条件検出処理を実行する。その実行後、一連の処理を終了する。
【0058】
上記ステップ801〜4の各検出処理では、禁止条件を満たしていることが確認された場合、me.iNPとして0以外の値を格納(更新)する。それにより、図8に示す運指評価処理では、ステップ606の判定がYESとなって、その指定音のコストは最大値に更新されることとなる。
【0059】
図11は、図8に示す運指評価処理内でステップ607として実行されるコスト補正処理のフローチャートである。その運指評価処理内で実行される(呼び出される)サブルーチン処理では、最後に図11を参照してその補正処理について詳細に説明する。
【0060】
先ず、ステップ901では、運指に従って指定音を発音させる際の状況を示す各種値を対応する変数に代入するための処理を実行する。その処理の実行により、指越えを行うべき状況であれば1、指くぐりを行うべき状況であれば2、が変数iPassFに代入される。次のステップ902では、変数meの値で指定される演奏データが示す楽音(指定音)の発音開始時刻に発音中の他の楽音、或いはその発音終了時刻前に発音を開始する他の楽音に着目してコストを補正するための多声音の補正処理を実行する。続くステップ903では、指定音の押鍵に必要な、指越え、或いは指くぐりという比較的に高度な演奏方法に着目してコストを補正するための指越え/指くぐりでの補正処理を実行する。その次のステップ904では、分散和音とそれに続く分散和音間の相互関係に着目してコストを補正するための分散和音での補正処理を実行する。その後はステップ905に移行する。
【0061】
ステップ905では、単音が続く音符群とそれに続く和音間の相互関係に着目してコストを補正するための短音→和音遷移での補正処理を実行する。続くステップ906では、和音とそれに続く単音の音符群間の相互関係に着目してコストを補正するための和音→短音遷移での補正処理を実行する。その次のステップ907では、和音とそれに続く和音間の相互関係に着目してコストを補正するための和音→和音遷移での補正処理を実行する。その次に移行するステップ908では、和音とその直前に位置する和音間の相互関係に着目してコストを補正するための前方和音補正処理を実行する。一連の処理はその後に終了する。
【0062】
このようにして、コスト補正処理では、互いに異なる内容毎に、その内容に着目してコストを必要に応じて補正するための処理を実行するようになっている。それにより、コスト補正処理を実行する前の指定音のコスト(me.icost)の値は、該当する内容の有無、その数に応じて補正される(以上のようなコストの算出についての参考技術文献としては、本出願人が出願した特願2004−261020号が挙げられる)。
【0063】
図12は、上記ステップ903として実行される指越え/指くぐりでの補正処理のフローチャートである。最後に図12を参照して、その補正処理について詳細に説明する。
上述したように本実施の形態では、条件として特殊な指使いの実行頻度についての設定を行えるようにしている(図15)。設定されたその実行頻度を示す値は、図4に示す全体処理内でステップ104としてユーザー指定条件読込処理を実行することにより、変数iBiasに代入される。
【0064】
先ず、ステップ1001では、変数iCTmpにme.icostの値を代入する。次のステップ1002では、変数iPassFの値が0でないか否か判定する。指定音を発音させるために指越え、或いは指くぐりを行うべき状況(運指)であった場合、その値として1、或いは2が代入されていることから、判定はYESとなってステップ1003に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
【0065】
ステップ1003では、変数STAve、iSameにそれぞれ0を代入する。また、変数lSTに、me.next.lTimeの値からme.lTimeの値を引いた値(指定音とその次に位置する音の間の発音開始間隔を示す値)を代入する。変数STAveは、指定音の前後に位置する極点(音高の高低傾向が変化する音符)間で連続する2音間の発音開始間隔の平均を求めるために用意した変数である。変数iSameは、その発音開始間隔のなかで、指定音とその次の音の発音開始間隔(変数lSTに代入された値で示される時間間隔。以降、他と区別するために「基準発音開始間隔」とも呼ぶ)と一致するものの数をカウントするために用意した変数である。
【0066】
ステップ1003に続くステップ1004〜1008では、前に位置する極点までの範囲を対象に、発音開始間隔の平均時間、及び一致する発音開始間隔の数を求めるための処理が行われる。
【0067】
先ず、ステップ1004では、変数mePCに変数meの値を代入する。次のステップ1005では、変数tmpSTに、mePC.lTimeの値からmePC.prev.lTimeの値を引いた値(変数mePCの値で指定される演奏データが示す発音開始時刻とその前に位置する演奏データが示す発音開始時刻の間の時間間隔)を代入する。その代入後はステップ1006に移行する。
【0068】
ステップ1006では、ステップ1005で変数STAveの値をこれまでの平均時間を示すものに更新(この更新は、例えばそれまでの値にこれまでの発音開始間隔数を掛け、その乗算結果に変数tmpSTの値を加算し、その加算結果を今回の発音開始間隔数で割った値を新たに代入することで行うことができる)し、変数iSameは、変数tmpSTの値が基準発音開始間隔、つまり変数lSTの値と一致するものであればその値をインクリメントして更新する。そのような更新を行った後は、ステップ1007で変数mePCにmePC.prevの値を代入してからステップ1008に移行し、mePC.cTendencyの値が0か否か判定する。変数mePCの値で指定される演奏データが極点に相当する楽音を示すものであった場合、そのデータcTendencyの値は0となっていることから、判定はYESとなってステップ1009に移行する。そうでない場合には、判定はNOとなって上記ステップ1005に戻る。
【0069】
ステップ1009〜ステップ1013では、ステップ1004〜1008とは逆に、後ろに位置する極点までの範囲を対象に発音開始間隔の平均時間、及び一致する発音開始間隔の数を求めるための処理が行われる。基本的な考え方は同じであるため、それらの詳細な説明は省略する。ステップ1013の判定がYESとなってステップ1014に移行した時点では、変数STAveには極点間における発音開始間隔の平均時間(を示す値)が代入され、変数iSameには、基準発音開始間隔と一致する発音開始間隔数が代入される。
【0070】
ステップ1014では、変数iPassFの値が1か否か判定する。上述したように変数iPassFには、図9に示すコスト補正処理内でステップ901の処理を実行することにより、指越えを行うべき状況であれば1、指くぐりを行うべき状況であれば2、が代入される。このことから、指越えを行うべき状況であった場合、判定はYESとなり、ステップ1015で変数fにme.next.cfigの値、つまり指越えを行って押鍵すべき指の指番号を代入した後、ステップ1017に移行する。そうでない場合には、判定はNOとなり、ステップ1016で変数fにme.cfigの値、つまり親指を指くぐりさせる直前の押鍵に用いるべき指の指番号を代入した後、そのステップ1017に移行する。そのNOの判定は、ステップ1002で変数iPassFの値が0か否かの判定を行っていることから、その変数iPassFの値は2であることを意味する。
【0071】
指越えでは上を越させる指、指くぐりでは下をくぐらせる指の種類によって難易度が異なる。このことから、ステップ1017では、変数coefに、変数fの値に応じた係数を代入し、続くステップ1018では、変数ccに、変数coefの値に定数IPASSPRIORITYに掛け、その乗算結果に変数iBiasの値を掛けて得られる値を代入する。その代入後はステップ1019に移行する。
【0072】
上記定数IPASSPRIORITYは例えば、指越え、指くぐりを行う運指のコストに加算すべき補正値の最大値として定めたものである。その最大値と併せて、それに掛ける係数を指の種類毎に用意し、その乗算結果を加算すべきコストの補正値、つまり補正分としている。それにより、上を越させる指、或いは下をくぐらせる指の種類によって異なる難易度を運指コストに反映できるようにさせている。このことから本実施の形態では、その補正分をユーザーが設定した実行頻度に応じて変更することにより、その設定内容を運指コストに反映させている。そのように反映させることにより、上記変数CostTmpに最終的に代入される運指コストの累算値が運指系列によって変化する。このため、設定した条件、その内容によって、最終的に選択される運指系列を変化させることが可能となっている。
【0073】
ステップ1019では、変数iSameの値が4より大きく、且つ変数lSTの値が変数STAveの値未満という関係、或いは変数lSTの値が変数STAveの値以上という関係を満たすか否か判定する。極点間に基準発音開始間隔と一致する発音開始間隔が5つ以上、存在するが、基準発音開始間隔が平均時間より短い状況、及び基準発音開始間隔が平均時間以上の状況の何れかであった場合、前者、或いは後者が満たされることから、判定はYESとなり、ステップ1020で変数iCTmpの値と変数ccの値の加算結果をme.icostとして格納した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1021に移行し、定数IBSを変数ccに掛け、その乗算結果に変数iCTmpの値を加算した値をme.icostとして格納した後、一連の処理を終了する。
【0074】
上記定数IBSは、1以上の値である。そのような値の定数IBSを用意することにより、極点間で基準発音開始間隔が平均時間より短いと演奏者が感じる、或いは感じやすい箇所での指越え、或いは指くぐりは比較的に難易度が高いと見なし、補正分をより大きくしている。それにより、極点間の演奏の流れを運指コストに反映させている。
【0075】
なお、本実施の形態では、各指の使用頻度の設定、及び手の幅の設定により運指コストテーブルを修正(更新)するようにしているが、それらの設定を反映させるべき状況(運指)を特定して、その状況で算出した運指コストを補正する形でそれらの設定を反映させるようにしても良い。それらとは別の方法で設定内容を反映させるようにしても良い。設定内容を反映させる条件の種類としては、2音間の音高差、特殊な指使い(演奏のための所定の指使い)を行うべき回数、などを採用しても良い。
【図面の簡単な説明】
【0076】
【図1】本実施の形態による運指情報生成装置の構成を説明する図である。
【図2】演奏データの構成を説明する図である。
【図3】運指コストテーブルの構成を説明する図である。
【図4】全体処理のフローチャートである。
【図5】各指の使用頻度によるコストテーブルの補正処理のフローチャートである。
【図6】手の幅指定によるコストテーブルの補正処理のフローチャートである。
【図7】運指生成処理のフローチャートである。
【図8】運指評価処理のフローチャートである。
【図9】2音間コスト算出処理のフローチャートである。
【図10】禁止事項検索処理のフローチャートである。
【図11】コスト補正処理のフローチャートである。
【図12】指越え/指くぐりでの補正処理のフローチャートである。
【図13】各指の使用頻度用の設定画面を説明する図である。
【図14】手の幅用の設定画面を説明する図である。
【図15】特殊な指使い用の設定画面を説明する図である。
【符号の説明】
【0077】
10 運指情報生成装置
11 CPU
12 RAM
13 ROM
14 入力部
15 表示部




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013