(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】プログラム、情報処理装置、演奏評価システム及び演奏評価方法
(51)【国際特許分類】
G10G 1/00 20060101AFI20240109BHJP
【FI】
G10G1/00
(21)【出願番号】P 2021141323
(22)【出願日】2021-08-31
【審査請求日】2022-08-09
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110001254
【氏名又は名称】弁理士法人光陽国際特許事務所
(72)【発明者】
【氏名】南高 純一
(72)【発明者】
【氏名】宮坂 淳一
(72)【発明者】
【氏名】阪下 彰
(72)【発明者】
【氏名】佐藤 博毅
(72)【発明者】
【氏名】米澤 満博
(72)【発明者】
【氏名】野崎 絢也
(72)【発明者】
【氏名】鈴木 聖仁
【審査官】大野 弘
(56)【参考文献】
【文献】特開2015-191194(JP,A)
【文献】特開2007-236765(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10G 1/00
(57)【特許請求の範囲】
【請求項1】
コンピューターに、
複数の演奏操作
に応じた複数のノートデータに基づいて、楽曲の調を判定し、
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、調性の評価値を決定し、
前記調性の評価値が閾値に達したタイミングに応じて
、評価に対応する反応音の出力を出力手段に指示する、
処理を実行させるプログラム。
【請求項2】
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、前記楽曲の調の構成音に対応する演奏操作子が操作された回数に対する前記楽曲の調の構成音以外の音に対応する演奏操作子が操作された回数の比率を算出し、
算出した前記比率に基づいて、前記調性の評価値を決定する、
請求項
1に記載のプログラム。
【請求項3】
コンピューターに、
複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした
演奏操作間隔及び演奏操作回数の少なくとも1つを取得し、
取得された前記演奏操作間隔及び演奏操作回数の少なくとも1つに基づいて、演奏操作のスピード
を評価する速弾きの評価値を決定し、
前記速弾きの評価値が閾値に達したタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
処理を実行させるプログラム。
【請求項4】
前記複数の演奏操作に応じた複数のノートデータに基づいて、同時発音数を取得し、
前記同時発音数に基づいて、和音の速弾きの評価値を決定し、
前記指示において、前記和音の速弾きの評価値が閾値に達したタイミングに応じて、前記和音の速弾きの評価に対応する反応音の出力を指示する、
請求項
3に記載のプログラム。
【請求項5】
複数の演奏操作に応じて電子楽器から出力される複数のノートデータを取得する取得部と、
プロセッサと、を備え、
前記プロセッサは、
複数の演奏操作
に応じた複数のノートデータに基づいて、楽曲の調を判定し、
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、調性の評価値を決定し、
前記調性の評価値が閾値に達したタイミングに応じて
、評価に対応する反応音の出力を出力手段に指示する、
情報処理装置。
【請求項6】
複数の演奏操作に応じて電子楽器から出力される複数のノートデータを取得する取得部と、
プロセッサと、を備え、
複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした
演奏操作間隔及び演奏操作回数の少なくとも1つを取得し、
取得された前記演奏操作間隔及び演奏操作回数の少なくとも1つに基づいて、演奏操作のスピード
を評価する速弾きの評価値を決定し、
前記速弾きの評価値が閾値に達したタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
情報処理装置。
【請求項7】
請求項
5又は6に記載の情報処理装置と、
前記情報処理装置にノートデータを出力する電子楽器と、
を備える演奏評価システム。
【請求項8】
コンピューターが、
複数の演奏操作
に応じた複数のノートデータに基づいて、楽曲の調を判定し、
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、調性の評価値を決定し、
前記調性の評価値が閾値に達したタイミングに応じて
、評価に対応する反応音の出力を出力手段に指示する、
演奏評価方法。
【請求項9】
コンピューターが、
複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした
演奏操作間隔及び演奏操作回数の少なくとも1つを取得し、
取得された前記演奏操作間隔及び演奏操作回数の少なくとも1つに基づいて、演奏操作のスピード
を評価する速弾きの評価値を決定し、
前記速弾きの評価値が閾値に達したタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
演奏評価方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報処理装置、演奏評価システム及び演奏評価方法に関する。
【背景技術】
【0002】
従来、ユーザが楽曲を演奏したときの演奏を評価する技術として、例えば、検出された操作状態と、演奏を案内するオブジェデータに記述されている操作内容とを対比し、両者の一致度に基づく評価結果をモニタに表示する技術が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、ユーザの演奏操作と正解データとの一致不一致に基づいて演奏を評価しているため、即興演奏の場合は評価できないという問題があった。
【0005】
本発明の課題は、仮に即興演奏であっても良好に演奏を評価できるようにすることである。
【課題を解決するための手段】
【0006】
上記課題を解決するため、本発明の一態様のプログラムは、
コンピューターに、
複数の演奏操作に応じた複数のノートデータに基づいて、楽曲の調を判定し、
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、調性の評価値を決定し、
前記調性の評価値が閾値に達したタイミングに応じて、評価に対応する反応音の出力を出力手段に指示する、
処理を実行させる。
【発明の効果】
【0007】
本発明によれば、仮に即興演奏であっても良好に演奏を評価することが可能となる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係る演奏評価システムの全体構成例を示す図である。
【
図2】
図1のCPUにより実行される演奏評価処理の流れを示すフローチャートである。
【
図3】
図2のステップS6において実行される演奏情報処理の流れを示すフローチャートである。
【
図4】
図2のステップS2において起動されるタイマー処理の流れを示すフローチャートである。
【
図5】
図4のステップS26において実行される速弾き評価処理の流れを示すフローチャートである。
【
図6】
図4のステップS27において実行される正確さ評価処理の流れを示すフローチャートである。
【
図7】演奏評価処理の開始から終了までの反応音の出力タイミングを時系列で示す図である。
【
図8】ノートon時間差(演奏操作間隔)のヒストグラムである。
【発明を実施するための形態】
【0009】
以下に、本発明を実施するための形態について、図面を用いて説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい種々の限定が付されている。そのため、本発明の技術的範囲を以下の実施形態及び図示例に限定するものではない。
【0010】
[演奏評価システム100の構成]
図1は、本発明に係る演奏評価システム100の全体構成を示す図である。演奏評価システム100は、情報処理装置1と、電子楽器2と、が通信インターフェース(本実施形態では、MIDI(Musical Instrument Digital Interface)インターフェース)を介して接続されて構成されている。
【0011】
[情報処理装置1の構成]
情報処理装置1は、電子楽器2における演奏操作に基づいて入力されたノートデータに基づいて、電子楽器2における演奏を評価する装置である。情報処理装置1としては、例えば、タブレットPC(Personal Computer)、ノートPC、スマートフォン等が適用可能である。
【0012】
図1に示すように、情報処理装置1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、入力部14、表示部15、MIDIインターフェース16、出力部17等を備えて構成され、各部はバス18により接続されている。
【0013】
CPU11は、ROM13に記憶されているプログラムを読み出し、RAM12のワークエリアに展開し、該プログラムに従って各部を制御して、各種処理を実行する。例えば、CPU11は、ROM13に記憶されているプログラムとの協働により、後述する演奏評価処理を実行する。
【0014】
RAM12は、CPU11により実行制御される各種処理において、プログラム、入力若しくは出力データ、及びパラメータ等の一時的な格納領域を形成する。
【0015】
ROM13は、プログラム及びこれらのプログラムで使用されるデータ等を記憶する。ROM13に記憶されているプログラムには、後述する演奏評価処理を実行するためのプログラムが含まれる。
【0016】
また、ROM13には、少なくとも1つの調の構成音データが記憶されている。例えば、ハ長調の構成音データ(C、D、E、F、G、A、B)が記憶されている。
また、ROM13には、後述する演奏評価処理で使用される反応音の音声データや効果音データが記憶されている。例えば、演奏開始前に出力する演奏催促の拍手等の反応音、演奏開始時に出力する拍手等の反応音、演奏終了時に出力する拍手等の反応音、演奏評価が高い場合に出力する歓喜を表す反応音(反応音タイプ1~3)の音声データや効果音データが記憶されている。
【0017】
入力部14は、キーボード等のキー入力部と、マウス等のポインティングデバイスとを有し、ユーザー(オペレーター)からのキー操作入力及び位置操作入力を受け付け、その操作情報を、CPU11に出力する。なお、入力部14は、タッチパネルにより構成されていてもよい。
【0018】
表示部15は、LCD(Liquid Crystal Display)、EL(Electro Luminescence)ディスプレイ等で構成され、CPU11から指示された表示情報に従い各種表示を行う。
【0019】
MIDIインターフェース16は、電子楽器2のMIDIインターフェース23と接続され、演奏に応じて電子楽器2から出力されるノートデータ等の取得を行う取得部として機能する。
【0020】
出力部17は、D/Aコンバータ、増幅器、スピーカ等を備え、CPU11からの出力指示に従って、音声データや効果音データに基づき音声や効果音等を出力する出力手段である。
【0021】
[電子楽器2の構成]
電子楽器2は、例えば、鍵盤楽器であり、キーボード21、音源・サウンドシステム22、MIDIインターフェース23等を備えて構成されている。
キーボード21は、ユーザが演奏操作を行うための複数の鍵(演奏操作子)を有する鍵盤である。
音源・サウンドシステム22は、ユーザによるキーボード21の演奏操作に従って楽音波形を生成し出力する。
MIDIインターフェース23は、情報処理装置1のMIDIインターフェース16に接続され、演奏に応じたノートデータを情報処理装置1に出力する。
【0022】
電子楽器2は、キーボード(鍵盤)21のいずれかの鍵が演奏操作(押鍵/離鍵)されるごとに、MIDIインターフェース23を介して情報処理装置1に演奏操作情報であるノートデータを出力する。具体的に、電子楽器2は、キーボード21のいずれかの鍵が押鍵されると、押鍵されたことを示すノートonメッセージ、ノート番号(押鍵された鍵の番号(ピッチ))、ベロシティの情報を含むノートデータを出力する。キーボード21のいずれかの鍵が離鍵されると、離鍵されたことを示すノートoffメッセージ、ノート番号(離鍵された鍵の番号(ピッチ))、ベロシティ等を含むノートデータを出力する。
【0023】
[情報処理装置1の動作]
(演奏評価処理)
次に、本実施形態の情報処理装置1の動作について説明する。
図2は、情報処理装置1において入力部14により演奏評価処理の実行が指示された場合に、CPU11により実行される演奏評価処理の流れを示すフローチャートである。
図2に示す演奏評価処理は、CPU11とROM13に記憶されているプログラムとの協働により実行される。
【0024】
まず、CPU11は、演奏評価処理で使用される変数を初期化し(ステップS1)、タイマー処理(
図4参照)を起動する(ステップS2)。
ここで、タイマー処理は、演奏評価処理の実行中に、所定周期で、例えば、10~20msec周期で実行される処理である。タイマー処理については詳細を後述する。
【0025】
次いで、CPU11は、演奏評価処理の終了条件に該当するか否かを判断する(ステップS3)。
例えば、CPU11は、後述するタイマー処理で演奏終了と判断された場合、または、演奏評価処理のキャンセルが入力部14により入力された場合に、演奏評価処理の終了条件に該当すると判断する。
【0026】
演奏評価処理の終了条件に該当しないと判断した場合(ステップS3;NO)、CPU11は、MIDIインターフェース16により電子楽器2からのノートデータが受信されたか否かを判断する(ステップS4)。
MIDIインターフェース16により電子楽器2からのノートデータが受信されたと判断した場合(ステップS4;YES)、CPU11は、受信したノートデータ及びその受信時刻を、受信順を表す番号に対応付けてRAM12に記憶し(ステップS5)、演奏情報処理(
図3参照)を実行する(ステップS6)。
【0027】
(演奏情報処理)
図3は、
図2のステップS6において実行される演奏情報処理の流れを示すフローチャートである。演奏情報処理は、CPU11とROM13に記憶されているプログラムとの協働により実行される。
【0028】
演奏情報処理において、CPU11は、受信したノートデータがノートonメッセージを含んでいるか否かを判断する(ステップS61)。
受信したノートデータがノートonメッセージを含んでいると判断した場合(ステップS61;YES)、CPU11は、そのノートonメッセージが演奏開始時のノートonメッセージであるか否かを判断する(ステップS62)。
ここで、演奏開始時のノートonメッセージであるか否かは、例えば、受信したノートonメッセージが、演奏評価処理を開始してから受信した最初ノートonメッセージであるか否かで判断する。演奏評価処理を開始してから受信した最初ノートonメッセージである場合に、演奏開始時のノートonメッセージであると判断する。
【0029】
演奏開始時のノートonメッセージであると判断した場合(ステップS62;YES)、CPU11は、演奏開始時の拍手等の反応音の出力を出力部17に指示して出力させ(ステップS63)、ステップS64に移行する。
演奏開始時のノートonメッセージではないと判断した場合(ステップS62;NO)、CPU11は、ステップS64に移行する。
【0030】
ステップS64において、CPU11は、受信したノートonメッセージが最初のノートonメッセージであるか否かを判断する(ステップS64)。
受信したノートonメッセージが最初のノートonメッセージではない(2回目以降のノートonメッセージである)と判断した場合(ステップS64;NO)、CPU11は、前回のノートonメッセージと今回のノートonメッセージの受信時刻の時刻差を算出し、この時刻差を変数elapsedに格納する(ステップS65)。また、その時刻差における出現頻度をヒストグラムとして格納する変数iDistNoteOn[elapsed]をインクリメントする(ステップS66)。
ここで、算出された時刻差はある範囲で量子化される。テンポが120bpmで、4分音符間隔で弾かれた場合は、時刻差が、0.5秒になる。同様に、テンポが、121bpmの場合は、時刻差が、0.4958秒程度になる。そこで、例えば、時刻差を0.003秒程度の範囲で量子化すると、テンポbpmの1桁目を測定できることになるので、その量子化された時刻差elapsedの値の頻度をiDistNoteOn[elapsed]に保持するようにする。
なお、押鍵/離鍵はセットであり、押鍵により演奏操作が開始されるものであるから、押鍵操作が実施されるごとに受信されるノートonメッセージの受信時刻の時間差を求めることで、演奏操作間隔を求めることができる。
【0031】
次いで、CPU11は、elapsed<30ms(ミリ秒)であるか否かを判断する(ステップS67)。
elapsed<30msではない(すなわち、elapsedが30ms以上である)と判断した場合(ステップS67;NO)、CPU11は、和音(ほぼ同時の複数の押鍵操作)を1つの演奏操作とみなしたノートonメッセージのカウント用変数であるiRepeatNoteCntをインクリメントするとともに、ノートon時刻差の累計(演奏操作間隔の累計)をカウントするための変数であるiSumIntervalにelapsedの値を加算し(ステップS68)、ステップS69に移行する。
上述のように、押鍵/離鍵はセットであり、押鍵により演奏操作が開始されるものであるから、押鍵操作が実施されるごとに受信されるノートonメッセージをカウントすることにより演奏操作回数をカウントすることができる。
一方、elapsed<30msである(すなわち、elapsedが30msより小さい)と判断した場合(ステップS67;YES)、CPU11は、ステップS69に移行する。
【0032】
ここで、和音演奏の場合、和音の1つ1つの音の演奏操作(押鍵操作)に対してノートonメッセージが受信される。そこで、和音を指定する操作を1つの演奏操作とみなして1つの固まりとして捉えたときの演奏操作回数や演奏操作間隔の累計を算出するために、elapsedが30msより小さいという極めて短い値の場合(ステップS67がYESの場合)は、iRepeatNoteCntのインクリメント及びiSumIntervalへのelapsedの加算は行わないようにしている。すなわち、設定時間内(ここでは、30ms内)の複数の演奏操作を和音の1つの演奏操作としてみなして演奏操作回数や演奏操作間隔の累計を算出するようにしている。なお、ステップS67においてelapsedと比較する閾値(設定時間)は、30msとしているが、一例であり、30msに限定されるものではない。
【0033】
ステップS69において、CPU11は、ノートonメッセージのカウント用変数であるiNoteCntをインクリメントする(ステップS69)。
次いで、CPU11は、ベロシティの累計値を算出するためのiSumVelocityに、受信したノートデータに含まれるベロシティ値iVelを加算する(ステップS70)。
そして、CPU11は、受信したノートデータのノート番号をpitとして、そのノート番号(pit)の鍵のon/off(押鍵/離鍵)状態を格納するためのiNoteOn[pit]にon状態であることを示す1を格納するとともに、そのノート番号の鍵が演奏操作された数をカウントするためのiUserPlayPitch[pit]をインクリメントし(ステップS71)、
図2のステップS3に戻る。
【0034】
一方、ステップS61において、受信したノートデータがノートonメッセージを含んでいない(すなわち、ノートoffメッセージを含んでいる)と判断した場合(ステップS61;NO)、CPU11は、受信したノートデータのノート番号に対応するiNoteOn[pit]に、そのノート番号の鍵がoff状態であることを示す0を格納し(ステップS72)、
図2のステップS3に戻る。
【0035】
CPU11は、
図2のステップS3において演奏評価処理の終了条件に該当したと判断するまで、ステップS3~ステップS5の処理を繰り返し実行するとともに、所定時間周期で、ステップS2で起動したタイマー処理を実行する。
【0036】
(タイマー処理)
図4は、演奏評価処理の実行中に所定時間周期で実行されるタイマー処理の流れを示すフローチャートである。タイマー処理は、CPU11とROM13に記憶されているプログラムとの協働により実行される。
【0037】
タイマー処理において、まず、CPU11は、タイマー処理回数を格納する変数であるiTimeUnitCntをインクリメントする(ステップS21)。
【0038】
次いで、CPU11は、ポリ数(同時発音数)iPolyを算出する(ステップS22)。
ステップS22においては、1が格納されているiNoteOn[pit]の個数(すなわち、現在on状態となっている音の個数)をポリ数iPolyとして算出(取得)する。
【0039】
次いで、CPU11は、iPolyの累計を格納するための変数であるiSumPolyにステップS202で算出したiPolyを加算する(ステップS23)。
【0040】
次いで、CPU11は、iPoly=0であるか否かを判断する(ステップS24)。
iPoly=0であると判断した場合(ステップS24;YES)、CPU11は、演奏開始前であるか否かを判断する(ステップS28)。
例えば、CPU11は、演奏評価処理が開始されてから一度もノートonメッセージが受信されていない状態で所定時間が経過した場合に、演奏開始前であると判断する。
演奏開始前であると判断した場合(ステップS28;YES)、CPU11は、演奏開始前の、演奏を促すような歓声や拍手の反応音の出力を出力部17に指示して出力させ(ステップS29)、タイマー処理を終了する。
【0041】
演奏開始前ではないと判断した場合(ステップS28;NO)、CPU11は、演奏終了であるか否かを判断する(ステップS30)。
例えば、CPU11は、演奏開始後、iPoly=0の状態が所定時間以上経過した場合に、演奏終了と判断する。
演奏終了ではないと判断した場合(ステップS30;NO)、CPU11は、タイマー処理を終了する。
演奏終了であると判断した場合(ステップS30;YES)、CPU11は、演奏終了時の、歓声や拍手等の反応音の出力を出力部17に指示して出力させ(ステップS31)、タイマー処理を終了する。
【0042】
一方、ステップS24において、iPoly=0ではないと判断した場合(ステップS24;NO)、CPU11は、iNoteCnt>32であるか否かを判断する(ステップS25)。
ここで、ステップS25において、iNoteCnt(ノートonメッセージのカウント用変数)と比較する値である32は、後述する速弾き評価処理で評価を行うために必要なカウント数として予め定められた値であるが、一例であり、これに限定されるものではない。
【0043】
ステップS25において、iNoteCnt>32ではないと判断した場合(ステップS25;NO)、CPU11は、タイマー処理を終了する。
【0044】
ステップS25において、iNoteCnt>32であると判断した場合(ステップS25;YES)、CPU11は、速弾き評価処理を実行する(ステップS26)。
【0045】
(速弾き評価処理)
図5は、速弾き評価処理の流れを示すフローチャートである。速弾き評価処理は、CPU11とROM13に記憶されているプログラムとの協働により実行される。
【0046】
速弾き評価処理において、まず、CPU11は、doIntvl = iSumInterval / iRepeatNoteCnt(演奏操作間隔の平均)を算出する(ステップS601)。これにより和音(ほぼ同時に複数鍵を押鍵)を考慮したノートon時刻差の平均が算出される。
次いで、CPU11は、doPoly = iSumPoly / iTimeUnitCnt(タイマー処理ごとのポリ数の平均)を算出する(ステップS602)。
次いで、CPU11は、doVel = iSumVelocity / iNoteCnt(ベロシティの平均)を算出する(ステップS603)。
【0047】
次いで、CPU11は、doIntvl(演奏操作間隔の平均)とiRepeatNoteCnt(演奏操作回数)に基づいて、以下の(式1)により、doHighSpeedValue(速弾きの評価値)を算出する(ステップS604)。
doHighSpeedValue = ( ( doIntvl × A0 + B0 ) + ( A1 × iRepeatNoteCnt + B1 ) ) / 2
…(式1)
【0048】
ここで、聴衆の前での演奏中に拍手や歓声が上がる時があるが、それは演奏者の演奏が、「すごい」、「かっこいい」、「素晴らしい」、と聴衆に思わせるような演奏であるからである。一般的には、テンポが160bpm程度で、16分音符を連続して1小節以上弾かれた場合に「すごい」、「かっこいい」、「素晴らしい」とみなされることが多い。すなわち、速弾きのスピードと速弾きした回数が、演奏が素晴らしいと評価するための重要な要素である。doHighSpeedValueの算出式は、この点に着目して定義された式であり、演奏操作間隔と演奏操作回数に基づいて算出される。
doHighSpeedValueの算出式におけるA0、B0、A1、B1は、経験的に求められた係数である。例えば、doIntvlが100msecの時に、doIntvl × A0 + B0=100(点)、doIntvlが180msecの時に、doIntvl × A0 + B0=0(点)になるように、係数A0=100/(100-180), B0=-A0×180が設定される。また、iRepeatNoteCntが32の時に、A1 × iRepeatNoteCnt + B1=100(点)となり、iRepeatNoteCntが8の時に、A1 × iRepeatNoteCnt + B1=0(点)となるように、係数A1=100/(32-8), B1=-A1×8が設定される。 doHighSpeedValueの最大値は、100(点)である。
【0049】
次いで、CPU11は、doIntvl(演奏操作間隔の平均)、iRepeatNoteCnt(演奏操作回数)、doPoly(ポリ数の平均)に基づいて、以下の(式2)により、doChordRepeatValue(和音の速弾きの評価値)を算出する(ステップS605)。
doChordRepeatValue = ( ( doIntvl × A0 + B0 ) + ( A1 × iRepeatNoteCnt + B1 ) + ( A2 × doPoly + B2 ) ) / 3 …(式2)
【0050】
doChordRepeatValueは、速弾きの評価に用いた演奏操作間隔と演奏操作回数に加え、さらに、同時発音数であるポリ数を評価要素として加えたものである。一般的には、ポリ数が多いほど「すごい」、「かっこいい」、「素晴らしい」とみなされることが多い。
doChordRepeatValueの算出式におけるA0、B0、A1、B1 A2、B2は、経験的に求められた係数である。例えば、上述のように、A0=100/(100-180), B0=-A0×180,A1=100/(32-8), B1=-A1×8とする。また、doPolyが4.0の時に、A2 × doPoly + B2=100(点)となり、doPolyが1.5の時に、A2 × doPoly + B2=0(点)となるように、係数A2=100.0/(4.0-1.5)、B2=-A2×1.5が設定される。 doChordRepeatValueの最大値は、100(点)である。
【0051】
次いで、CPU11は、ステップS606~S612を実施して、doUserPitchClassValue(調性の評価値)を算出する。
まず、CPU11は、変数iに0をセットする(ステップS606)。
次いで、CPU11は、i>=12であるか否かを判断する(ステップS607)。
ここで、12は、調の種類であり、構成音が異なる調(キー)の数である。なお、本実施形態において、調(キー)には0~11の番号が付与されている。
【0052】
i>=12ではないと判断した場合(ステップS607;NO)、CPU11は、ROM13に記憶されているハ長調の構成音データに基づいて、計算によりキーiの構成音を算出して(ハ長調の場合は算出不要)キーiの構成音データを取得し、キーiの構成音に対応するiUserPlayPitch[pit]の値を累計することにより、キーiの構成音が操作された数diaValueを算出する。また、キーiの構成音以外の音に対応するiUserPlayPitch[pit]の値を累計することにより、キーiの構成音以外の音が操作された数mismatchを算出する(ステップS608)。
なお、調(キー)ごとの構成音データをROM13に記憶しておき、ステップS608では、評価値の算出対象のキーiに対応する構成音データをROM13から読み出して取得することとしてもよい。
【0053】
次いで、CPU11は、変数maxを参照し、max < diaValueであるか否かを判断する(ステップS609)。
max < diaValueであると判断した場合(ステップS609;YES)、CPU11は、変数maxにdiaValueを格納し、変数maxmismatchにmismatchを格納し(ステップS610)、ステップS611に移行する。
max < diaValueではないと判断した場合(ステップS609;NO)、CPU11は、ステップS611に移行する。
【0054】
ステップS611において、CPU11はiをインクリメントし(ステップS611)、ステップS607に戻る。CPU11は、iが12以上になるまで、ステップS607~ステップS611の処理を繰り返し実行する。
i>=12と判断された場合(ステップS606;YES)、CPU11は、以下の(式3)によりdoUserPitchClassValue(調性の評価値)を算出する(ステップS612)。
doUserPitchClassValue = 100 × maxmismatch / max …(式3)
【0055】
ここで、一般的に、演奏されている楽曲の調の構成音だけでなく、それ以外の音も含まれている場合に、聴衆には「すごい」、「かっこいい」、「素晴らしい」と評価される。例えば、ハ長調の場合は、C、D、E、F、G、A、B(ドレミファソラシ)が構成音であり、白鍵のみの音で構成されるところ、黒鍵の音が含まれると「すごい」、「かっこいい」、「素晴らしい」と評価される。そこで、ステップS607~S612では、各調(キー)ごとに、その構成音が操作された数diaValueを取得し、diaValueが最も多かった調(キー)が、演奏されている楽曲の調と判定して、その調の構成音が操作された数maxに対する、その調の構成音以外の音が操作された数maxmismatch の比率であるdoUserPitchClassValueを調性の評価値として算出している。doUserPitchClassValueは、値が大きいほど評価が高い。
【0056】
次いで、CPU11は、doHighSpeedValue>=10であるか否かを判断する(ステップS613)。doHighSpeedValueは、0から100までの値のなかから適当な値を閾値として設定できる。
doHighSpeedValue>=10であると判断した場合(ステップS613;YES)、CPU11は、歓声等からなる反応音タイプ1を選択し、反応音タイプ1の音声データをROM13から読み出し(ステップS614)、ステップS619に移行する。
doHighSpeedValueが10より小さいと判断した場合(ステップS613;NO)、CPU11は、doChordRepeatValue>=1であるか否かを判断する(ステップS615)。doChordRepeatValue>=1であると判断した場合(ステップS615;YES)、CPU11は、掛け声等からなる反応音タイプ2を選択し、反応音タイプ2の音声データをROM13から読み出し(ステップS616)、ステップS619に移行する。
doChordRepeatValueが1より小さいと判断した場合(ステップS615;NO)、CPU11は、doUserPitchClassValue>=40であるか否かを判断する(ステップS617)。doUserPitchClassValue>=40であると判断した場合(ステップS617;YES)、CPU11は、指笛等からなる反応音タイプ3を選択し、反応音タイプ3の音声データをROM13から読み出し(ステップS618)、ステップS619に移行する。
なお、ステップS613、ステップS615、ステップS617において用いられている予め定められた閾値は、一例であり、上述したものに限定されない。なお、閾値の設定により反応の出やすさをコントロールできる。
【0057】
ステップS619において、CPU11は、iNoteCntに基づいて、反応音の長さを算出する(ステップS619)。本実施形態では、押鍵されたノートon数が多いほど反応音の長さを長くする。例えば、以下の(式4)により、反応音の長さを算出する。
反応音の長さ=iNoteCnt × A + B(A, Bは定数) …(式4)
【0058】
次いで、CPU11は、doVel(ベロシティの平均)に基づいて、反応音の強さを算出する(ステップS620)。本実施形態では、押鍵に応じた発音が大きいほど反応音の音を大きくする。例えば、以下の(式5)により、反応音の強さを算出する。
反応音の強さ=C × iSumVelocity/iNoteCnt(Cは定数) …(式5)
【0059】
そして、CPU11は、読み出した音声データに基づいて、選択された反応音を算出された長さ及び強さで出力部17に出力するよう指示し(ステップS621)、ステップS622に移行する。
ここで、反応音1~3は、歓喜を表す音声(例えば、上述の歓声、掛け声、指笛等)としているが、拍手等の歓喜を表す効果音であってもよく、上記のものに限定されない。
【0060】
一方、doHighSpeedValueが10より小さく(ステップS613;NO)、doChordRepeatValueが1より小さく(ステップS615;NO)、doUserPitchClassValueが40より小さいと判断した場合(ステップS617;NO)、CPU11は、ステップS622に移行する。
【0061】
ステップS622において、CPU11は、以下の変数をリセットし(ステップS622)、速弾き評価処理を終了し、
図4のステップS27に移行する。
ステップS622においては、iRepeatNoteCnt、iSumInterval、iNoteCnt、iSumVelocity、iUserPlayPitch[ ]、iTimeUnitCnt、iSumPoly、maxをリセットする。
【0062】
このように、速弾き評価処理では、演奏に基づいて入力された複数のノートデータと正解の音高データとの一致不一致を判断することなしに演奏を評価するため、仮に即興演奏であっても良好に演奏を評価することができる。
正解の音高データとは、演奏前から予めメモリに記憶されている楽曲の音高データである。通常、ユーザが正しく演奏できているか否かを評価する場合には、ユーザが演奏することで入力される音高データと正解の音高データとの一致、不一致を判断する。本実施形態では、このような判断を実行していない。従って、ユーザがどのように電子楽器を演奏したとしても、すなわちユーザがその場で作曲し、演奏する即興演奏であったとしても、演奏は評価される。
【0063】
(正確さ評価処理)
図4のステップS27において、CPU11は、正確さ評価処理を実行する(ステップS27)。
【0064】
図6は、正確さ評価処理の流れを示すフローチャートである。正確さ評価処理は、CPU11とROM13に記憶されているプログラムとの協働により実行される。
正確さ評価処理は、演奏の正確さを、ノートon時刻差(すなわち、演奏操作間隔)のヒストグラム(iDistNoteOn[elapsed])から求めるものである。例えば、一定テンポ120bpmで、4分音符だけを演奏した場合は、ヒストグラムは、0.5秒の箇所のみにピークが現れる。4分音符を演奏していてもテンポが揺らぐ場合は、0.5秒の周辺にある程度の頻度の箇所が現れる。そこで、正確さ評価処理は、ヒストグラムのピークを探し、そのピークの急峻さを正確さとして評価する。
【0065】
正確さ評価処理において、CPU11は、まず、変数iに0をセットする(ステップS701)。
次いで、CPU11は、i>=iDistNoteOn[elapsed]の個数、すなわち、変数iがelapsed(ノートon時間差、すなわち演奏時間間隔)のヒストグラムのビンの個数以上であるか否かを判断する(ステップS702)。
変数i>=iDistNoteOn[elapsed]の個数、すなわち、elapsedのヒストグラムのビンの個数以上ではないと判断した場合(ステップS702;NO)、CPU11は、iDistNoteOn[i](ヒストグラムのi番目のビンの頻度)がピークであるか否かを判断する(ステップS703)。
例えば、iDistNoteOn[i]の値がiDistNoteOn[i-1]及びiDistNoteOn[i+1]より大きい場合、iDistNoteOn[i]がピークであると判断する。
【0066】
iDistNoteOn[i]がピークではないと判断した場合(ステップS703;ピークではない)、CPU11は、変数iをインクリメントし(ステップS710)、ステップS702に戻る。
【0067】
iDistNoteOn[i]がピークであると判断した場合(ステップS703;ピーク)、CPU11は、変数jに、i-iPeakAreaを格納する(ステップS704)。IPeakAreaは、正確さの評価値を算出するために使用するピーク前後のビンの位置を特定するために、予め設定された値である。例えば、正確さの評価値を算出するために使用されるピーク前後のビンの範囲が5であるとすると、IPeakAreaは、5である。このピーク前後のビンの範囲をピークエリアと呼ぶ。
【0068】
次いで、CPU11は、変数iPeakCntをインクリメントする(ステップS705)。
【0069】
次いで、CPU11は、j<0又はj>i+IPeakAreaであるか否かを判断する(ステップS706)。
j<0又はj>i+IPeakAreaではないと判断した場合(ステップS706;NO)、CPU11は、i番めのビン(ピーク)の頻度に対するj番めのビンの頻度の比であるdoDivを、以下の(式6)により算出する(ステップS707)。
doDiv = ( iDistNoteOn[i] - iDistNoteOn[j] ) / iDistNoteOn[i] …(式6)
【0070】
次いで、CPU11は、変数doValにdoDivを加算し(ステップ708)、変数jをインクリメントし(ステップS709)、ステップS706に戻る。
ステップS706において、j<0又はj>i+IPeakAreaであると判断した場合(ステップS706;YES)、CPU11は、変数iをインクリメントし(ステップS710)、ステップS702に戻る。
【0071】
ステップS702において、変数i>=iDistNoteOn[elapsed]の個数であると判断した場合(ステップS702;YES)、CPU11は、以下の(式7)によりdoValをピーク数で正規化して、正確さの評価指標であるdoValueAccuracyを算出する(ステップS711)。
doValueAccuracy =doVal / iPeakCnt …(式7)
【0072】
次いで、CPU11は、doValueAccuracy が所定の閾値、例えば12以上であるか否かを判断する(ステップS712)。
doValueAccuracy が所定の閾値、例えば12以上であると判断した場合(ステップS712;YES)、CPU11は、正確性が高いと判断して予め定められた反応音(歓声や拍手等)の出力を出力部17に指示して出力させ(ステップS713)、ステップS714に移行する。
doValueAccuracy が所定の閾値、例えば12より小さいと判断した場合(ステップS712;NO)、CPU11は、ステップS714に移行する。
【0073】
ステップS714において、CPU11は、変数iDistNoteOn[]、iPeakCnt、doValをリセットし(ステップS714)、正確さ評価処理を終了する。
【0074】
図7は、演奏評価処理の開始から終了までの反応音の出力タイミングを時系列で示す図である。黒矢印で示すタイミングが、反応音が出力されるタイミングである。
図7に示すように、演奏開始前、演奏終了後だけでなく演奏中においても、演奏が高く評価された場合には、歓声、掛け声、指笛、拍手等の歓喜を表す音声や効果音が出力されるので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0075】
演奏評価処理で取得されたノートon時間差(演奏操作間隔)の頻度を表すiDistNoteOn[elapsed]は、ヒストグラムとして可視化(例えば、表示部15に表示する)ことが好ましい。
図8は、ノートon時間差(演奏操作間隔)の頻度を表すiDistNoteOn[elapsed]を可視化したヒストグラムの一例を示す図である。
上述のように、例えば、一定テンポ120bpmで、4分音符だけを演奏した場合は、ヒストグラムは、0.5秒の箇所のみにピークが現れる。4分音符を演奏していてもテンポが揺らぐ場合は、0.5秒の周辺にある程度の頻度の箇所が現れる。よって、ノートon時間差(演奏操作間隔)のヒストグラムを確認することによって、ユーザは、自分の演奏がどのぐらいのテンポでどの程度の揺らぎがあるのかを目視で確認できる。例えば、テンポ120で演奏する練習をした場合に、それができたか否かをこのヒストグラムにより確認することができる。
また、ヒストグラムを表示する際には、
図8に示すように、ピークの位置が、テンポいくつに相当するのかが瞬時にわかるように表示すると良い。これによりユーザは、自身の演奏テンポを確認することが可能となる。また、ヒストグラムをリセットする手段を追加することとしてもよいし、過去の一定時間の演奏に対してヒストグラムを生成して可視化することとしてもよいし、過去の一定の演奏音符数に対してヒストグラムを生成して可視化するようにしてもよい。
【0076】
以上説明したように、情報処理装置1のCPU11は、複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作のスピード、及び、調性、のいずれかを評価し、演奏中の前記評価のタイミングに応じて、前記評価に対応する反応音の出力を出力部1に指示する。
したがって、ユーザが演奏することで入力される音高データと正解の音高データとの一致、不一致を判断することなく演奏を評価することができるので、仮に即興演奏であっても良好に演奏を評価することができる。また、評価に対応する反応音(歓喜を表す音声や効果音等)を出力するので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0077】
例えば、CPU11は、複数の演奏操作に応じた複数のノートデータと少なくとも1つの調の構成音データとに基づいて、楽曲の調を判定し、判定された楽曲の調の構成音データと複数のノートデータに基づいて、調性の評価値を決定し、決定した調性の評価値が閾値に達したタイミングに応じて、調性の評価に対応する反応音の出力を指示する。
例えば、CPU11は、判定された楽曲の調の構成音データと複数のノートデータに基づいて、楽曲の調の構成音に対応する演奏操作子が操作された回数に対する、楽曲の調の構成音以外の音に対応する演奏操作子が操作された回数の比率を算出し、算出した比率に基づいて、調性の評価値を決定する。
したがって、仮に即興演奏であっても、調性に基づき演奏を良好に評価することができる。また、評価に対応する反応音を出力するので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0078】
また、CPU11は、複数の演奏操作に応じた複数のノートデータに基づいて、設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作間隔及び演奏操作回数の少なくとも1つを取得し、取得された演奏操作間隔及び演奏操作回数の少なくとも1つに基づいて、速弾きの評価値を決定し、決定した速弾きの評価値が閾値に達したタイミングに応じて、速弾きの評価に対応する反応音の出力を指示する。
したがって、仮に即興演奏であっても、演奏における速弾きを良好に評価することができる。また、評価に対応する反応音を出力するので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0079】
また、CPU11は、複数のノートデータに基づいて、同時発音数を取得し、さらに同時発音数に基づいて、和音の速弾きの評価値を決定し、決定した和音の速弾きの評価値が閾値に達したタイミングに応じて、和音の速弾きの評価に対応する反応音の出力を指示する。
したがって、仮に即興演奏であっても、演奏における和音の速弾きを良好に評価することができる。また、評価に対応する反応音を出力するので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0080】
また、CPU11は、予め定められたタイミングごとに演奏の評価を行う。したがって、演奏中の予め定められたタイミングが到来するごとに、演奏を評価して、評価が基準に達した場合には、評価に対応する反応音の出力を指示するので、演奏者は、聴衆の前で演奏しているような満足感を得ることができる。
【0081】
なお、上記実施形態及び変形例における記述内容は、本発明に係るプログラム、情報処理装置、演奏評価システム、演奏評価方法の好適な一例であり、これに限定されるものではない。
例えば、上記実施形態においては、速弾きの評価値、和音の速弾きの評価値、調性の評価値が所定の閾値以上である場合に、歓喜を表す音声や効果音等の反応音を出力することとしたが、例えば、各評価値に閾値を複数設け、どの閾値以上であるかによって反応音を変化させてもよい。例えば、第1の閾値<第2の閾値として、評価値が第1の閾値以上第2の閾値未満の場合よりも第2の閾値以上の場合のほうが、より激しい反応音を出力することとしてもよい。
【0082】
また、上記実施形態において、CPU11は、速弾きの評価値、和音の速弾きの評価値、調性の評価値の複数が閾値以上の場合であっても、反応音タイプ1~3のいずれかの反応音を出力部17から出力するように指示することとして説明したが、このような場合、閾値以上となった評価値の種類に応じて反応音タイプ1~3の複数を重ねて出力部17から出力するように指示することとしてもよい。
【0083】
また、上記実施形態においては、演奏操作のスピードの評価である速弾きの評価値を、演奏操作間隔及び演奏操作回数の双方のパラメータを用いて算出することとして説明したが、演奏操作間隔、演奏操作回数のいずれか一方を用いて算出することとしてもよい。同様に、和音の速弾きの評価値についても、演奏操作間隔、演奏操作回数、同時発音数の3つのパラメータを用いて算出することとして説明したが、演奏操作間隔、演奏操作回数のいずれか一方と、同時発音数とを用いて算出することとしてもよい。
【0084】
また、上記実施形態においては、電子楽器2が鍵盤楽器である場合を例にとり説明したが、エレキギター、MIDIバイオリン等他の電子楽器としてもよい。
【0085】
また、上記実施形態では、本発明に係るプログラムのコンピューター読み取り可能な媒体としてROMを使用した例を開示したが、この例に限定されない。その他のコンピューター読み取り可能な媒体として、ハードディスク、SSDや、CD-ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も適用される。
【0086】
その他、演奏評価システムを構成する各装置の細部構成及び細部動作に関しても、発明の趣旨を逸脱することのない範囲で適宜変更可能である。
【0087】
以上に本発明の実施形態を説明したが、本発明の技術的範囲は上述の実施の形態に限定するものではなく、特許請求の範囲に記載に基づいて定められる。更に、特許請求の範囲の記載から本発明の本質とは関係のない変更を加えた均等な範囲も本発明の技術的範囲に含む。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
<請求項1>
コンピューターに、
複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作のスピード、及び、調性、のいずれかを評価し、
演奏中の前記評価のタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
処理を実行させるプログラム。
<請求項2>
前記複数の演奏操作に応じた複数のノートデータと少なくとも1つの調の構成音データとに基づいて、楽曲の調を判定し、
前記評価において、判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、調性の評価値を決定し、
前記指示において、前記調性の評価値が閾値に達したタイミングに応じて、前記調性の評価に対応する反応音の出力を指示する、
請求項1に記載のプログラム。
<請求項3>
判定された前記楽曲の調の構成音データと前記複数のノートデータに基づいて、前記楽曲の調の構成音に対応する演奏操作子が操作された回数に対する前記楽曲の調の構成音以外の音に対応する演奏操作子が操作された回数の比率を算出し、
算出した前記比率に基づいて、前記調性の評価値を決定する、
請求項2に記載のプログラム。
<請求項4>
前記複数の演奏操作に応じた複数のノートデータに基づいて、前記設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作間隔及び演奏操作回数の少なくとも1つを取得し、
前記評価において、取得された前記演奏操作間隔及び演奏操作回数の少なくとも1つに基づいて、前記スピードの評価である速弾きの評価値を決定し、
前記指示において、前記速弾きの評価値が閾値に達したタイミングに応じて、前記速弾きの評価に対応する反応音の出力を指示する、
請求項1~3のいずれか一項に記載のプログラム。
<請求項5>
前記複数の演奏操作に応じた複数のノートデータに基づいて、同時発音数を取得し、
前記評価において、さらに前記同時発音数に基づいて、和音の速弾きの評価値を決定し、
前記指示において、前記和音の速弾きの評価値が閾値に達したタイミングに応じて、前記和音の速弾きの評価に対応する反応音の出力を指示する、
請求項4に記載のプログラム。
<請求項6>
予め定められたタイミングごとに前記評価を行う、
請求項1~5のいずれか一項に記載のプログラム。
<請求項7>
複数の演奏操作に応じて電子楽器から出力される複数のノートデータを取得する取得部と、
プロセッサと、を備え、
前記プロセッサは、
前記複数の演奏操作に応じた複数のノートデータに基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作のスピード、及び、調性、のいずれかを評価し、
演奏中の前記評価のタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
情報処理装置。
<請求項8>
請求項7に記載の情報処理装置と、
前記情報処理装置にノートデータを出力する電子楽器と、
を備える演奏評価システム。
<請求項9>
コンピューターが、
複数の演奏操作に基づいて、少なくとも、設定時間内の複数の演奏操作を1つの演奏操作とした演奏操作のスピード、及び、調性、のいずれかを評価し、
演奏中の前記評価のタイミングに応じて、前記評価に対応する反応音の出力を出力手段に指示する、
演奏評価方法。
【符号の説明】
【0088】
100 演奏評価システム
1 情報処理装置
11 CPU
12 RAM
13 ROM
14 入力部
15 表示部
16 MIDIインターフェース
17 出力部
2 電子楽器
21 キーボード
22 音源・サウンドシステム
23 MIDIインターフェース