JP2002323891A - 楽曲分析装置、及びプログラム - Google Patents

楽曲分析装置、及びプログラム

Info

Publication number
JP2002323891A
JP2002323891A JP2001127087A JP2001127087A JP2002323891A JP 2002323891 A JP2002323891 A JP 2002323891A JP 2001127087 A JP2001127087 A JP 2001127087A JP 2001127087 A JP2001127087 A JP 2001127087A JP 2002323891 A JP2002323891 A JP 2002323891A
Authority
JP
Japan
Prior art keywords
value
variable
music
data
performance
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.)
Granted
Application number
JP2001127087A
Other languages
English (en)
Other versions
JP3915428B2 (ja
Inventor
Junichi Minamitaka
純一 南高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2001127087A priority Critical patent/JP3915428B2/ja
Publication of JP2002323891A publication Critical patent/JP2002323891A/ja
Application granted granted Critical
Publication of JP3915428B2 publication Critical patent/JP3915428B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Auxiliary Devices For Music (AREA)

Abstract

(57)【要約】 【課題】 楽曲の演奏内容を分析して、その演奏内容を
ユーザが判断するうえで有用なデータを生成する楽曲分
析装置を提供する。 【解決手段】 CPU101は、入力装置104を介し
て曲データの入力がユーザにより指示されると、その入
力装置104を介して曲データを入力し、RAM103
に格納する。入力装置104を介して曲データの評価が
ユーザにより指示されると、RAM103に格納した曲
データを読み出し、演奏の際における手指の運びや楽曲
の調性、変化音などに着目して各種評価のための分析を
行い、その評価結果をモニター105に出力させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演奏再生用の演奏
データ、或いは画像データで表される楽曲の演奏内容を
分析するための技術に関する。
【0002】
【従来の技術および発明が解決しようとする課題】楽器
の演奏の対象となる楽曲は数多く存在し、その演奏上の
難易度も様々である。しかし、例えば初心者には、難易
度の高い楽曲をスムーズに演奏することはできない。こ
のようなことから、一定のレベルに達していない学習者
は、自身のレベルに合った難易度の楽曲で楽器の練習を
行うことが望ましいと云える。
【0003】従来、楽曲の演奏上の難易度を含む演奏内
容は、人が判断していた。しかし、人が演奏内容を判断
するには、演奏を聴くか、或いは楽譜を見なければなら
ない。このため、演奏内容の判断を容易に行えないとい
う問題点があった。本発明の課題は、楽曲の演奏内容を
分析して、その演奏内容をユーザが判断するうえで有用
なデータを生成する楽曲分析装置を提供することにあ
る。
【0004】
【課題を解決するための手段】本発明の楽曲分析装置
は、楽曲の演奏内容を分析して、該演奏内容を表すデー
タを生成することを前提とし、楽曲の演奏内容を表す楽
曲データを取得する楽曲データ取得手段と、楽曲データ
取得手段が取得した楽曲データの表す演奏内容の分析を
行い、該演奏内容を表す分析データを生成する分析デー
タ生成手段と、を具備する。
【0005】なお、上記分析データ生成手段は、楽曲を
演奏する際の手指の運びの難易性、単位時間当たりに鳴
らす楽音の数、楽曲が備えた調性、楽譜上で音符に臨時
記号を付して表される変化音、及び該楽曲のリズムが変
化する度合い、のうちの少なくとも一つに着目して演奏
内容を評価するための分析を行い、該演奏内容の評価結
果を分析データとして生成する、ことが望ましい。
【0006】本発明のプログラムは、楽曲の演奏内容を
分析して、該演奏内容を表すデータを生成する装置に実
行させることを前提とし、楽曲の演奏内容を表す楽曲デ
ータを取得する機能と、取得する機能により取得した楽
曲データの表す演奏内容の分析を行い、該演奏内容を表
す分析データを生成する機能と、を実現させる。
【0007】本発明では、楽曲の演奏内容を表す楽曲デ
ータを取得して、それが表す演奏内容の分析を行い、該
演奏内容を表す分析データを生成する。それにより、ユ
ーザは、実際の演奏を聴いたり、楽譜を見ることなく、
その分析データを基に、楽曲の演奏内容を適切に判断す
ることが行えるようになる。
【0008】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。図1は、本実
施の形態による楽曲分析装置の回路構成図である。図1
に示すように、その楽曲分析装置は、装置全体の制御を
実行するCPU101と、そのCPU101が実行する
プログラムや各種制御用データなどを格納したROM1
02と、そのCPU101がワーク用に使用するRAM
103と、各種データを入力するための入力装置104
と、ユーザに通知すべき情報を通知するためのモニター
105と、それらを相互に接続するバス106と、を備
えて構成されている。それにより、その楽曲分析装置
は、入力装置104から演奏内容を表すデータ(以降、
曲データと呼ぶ)を入力してその演奏内容を分析し、そ
の分析結果をモニター105に出力する装置として実現
されている。
【0009】上記入力装置104には、キーボードやフ
ロッピー(登録商標)ディスク装置、CD−ROM装
置、或いは外部装置との通信を行うインターフェースな
どが対応する。モニター105には、表示装置やフロッ
ピーディスク装置、或いは外部装置との通信を行うイン
ターフェースなどが対応する。当然のことながら、入力
装置104、及びモニター105に、それぞれ複数の装
置が対応していても良く、それらが同じものであっても
良い。本実施の形態では、複数の装置が入力装置104
に対応している。
【0010】以上の構成において、動作を説明する。C
PU101は、電源がオンされると、ROM102に格
納されたプログラムを読み出して実行することにより、
装置全体の制御を開始する。その制御は、入力装置10
4を介して受け取るユーザの指示に対応する形で行う。
【0011】ユーザが曲データの入力を指示した場合、
CPU101は、入力装置104を介して曲データを入
力し、その曲データに識別用の曲番号を割り当ててRA
M103に格納する。格納した曲データの総数は、例え
ばモニター105を介してユーザに通知する。
【0012】図2は、上記曲データの構成を説明する図
である。その図2において、「曲0のデータ」「曲1の
データ」は、入力装置104から入力されてRAM10
3に格納された曲データであり、それぞれ曲番号「0」
「1」が割り当てられていることを表している。
【0013】その曲データは、自動演奏用のデータであ
る。先頭にデータポインター群が格納され、それに続く
形で更に、右手トラック、左手トラック、曲名を表すデ
ータ、及び音色を指定するデータが格納されている。上
記右手トラックは、右手で行われる演奏上のイベントの
内容を示すイベントデータがイベントの発生順に並べて
構成されたイベントデータ群であり、左手トラックは、
逆に左手で行われる演奏上のイベントの内容を示すイベ
ントデータがイベントの発生順に並べて構成されたイベ
ントデータ群である。そのイベントデータは図2中、
「ノート0」「ノート1」で表してある。
【0014】イベントデータの先頭には、そのイベント
データの種類を表すステータスデータが格納されてい
る。そのステータスデータが楽音の発音を指示するデー
タであれば、それに続く形で、音高を示すピッチデー
タ、音量を示すベロシティーデータ、発音開始時間を示
す時間データ、及び発音を持続させる持続時間(ゲート
タイム)を示す持続時間データがその順序で格納され
る。それらのデータは、それぞれ、配列変数byDat
aの要素byData[0]〜[2]として扱われる。
時間データは変数ITime、持続時間データは変数I
Gateとして扱われる。なお、発音開始時間は、例え
ば曲の先頭といったように、予め定めた時間的位置を基
準として、その基準から経過した時間で楽音の発音を開
始するタイミングを表したものである。
【0015】上記データーポインター群は、例えば右手
トラックの先頭位置を示すアドレス(相対アドレス)、
左手トラックの先頭位置を示すアドレス(相対アドレ
ス)、曲名を示すデータ、音色を指定するデータの各ア
ドレス(相対アドレス)を示す値をそれぞれ格納した複
数のデータポインターから構成される。それにより、デ
ータポインター群を参照することで所望のデータやトラ
ックにアクセスできるようになっている。
【0016】なお、本実施の形態では、上述したような
構成の曲データを対象に、それが表す演奏内容を分析す
るようになっているが、その曲データの構成はそれに限
定されるものではない。スタンダードMIDIファイル
などのようなものであっても良い。或いは楽譜などを表
示するための画像データであっても良い。このことから
明らかなように、演奏内容を表しているのであればデー
タの種類や構成は特に限定されるものではない。
【0017】ユーザが楽曲の分析(評価)を指示した場
合には、CPU101は、RAM103に格納されてい
る曲データを対象に、曲データ単位でそれが表す演奏内
容の分析を行い、その分析結果を保存する。ここでは、
その分析によって楽曲の演奏上の難易度にかかわる各種
音楽要素を評価し、それらの評価結果を分析結果として
保存する。各種音楽要素の評価結果は、それぞれ変数と
して扱っている。
【0018】図3は、曲データの評価結果、及びその内
容を説明する図である。曲データは、上述したように、
イベントデータが右手トラック、左手トラックに分けて
まとめられている(図2参照)。このことに合わせて、
本実施の形態では、各トラック毎に演奏内容の評価を行
っている。図3において、「右手の評価結果」「左手の
評価結果」は、それぞれ、右手トラック、左手トラック
を対象に行った評価結果を表している。「曲名」「音色
指定」は評価の対象とした曲データ中からコピーしたデ
ータである(図2参照)。
【0019】本実施の形態では、図3に示すように、右
手、左手の各評価結果として、それぞれ、移動コストの
平均、移動コスト最大値、音符密度、リズムの複雑さ、
調の難しさ、及びモードの難しさの計6種類の評価結果
を格納している。移動コストの平均とは、楽音を鳴らし
てから次の楽音を鳴らすために手指を移動させる労力
(移動コスト)の平均であり、移動コスト最大値とは、
その移動コストのなかでの最大値である。音符密度は、
鳴らす楽音の総数を楽曲の演奏時間で割って得られる値
(単位時間当たりに鳴らす楽音数)である。リズムの複
雑さは、隣接する楽音間の時間的間隔が変動する度合い
を数値化したもの、調の難しさは、楽曲が持つ調性によ
る演奏上の難易度を数値化したもの、モードの難しさ
は、楽譜上で音符に臨時記号(嬰記号や変記号など)を
付して表される変化音に着目して楽曲の難しさを数値化
したものである。それらの評価(分析)方法の詳細につ
いては後述する。なお、本実施の形態では、調の難し
さ、及びモードの難しさは、右手、左手という区別をせ
ずに評価を行い、右手の評価結果として格納している。
【0020】本実施の形態では、楽音が変化音か否か判
定するために、図4に示すように各要素に値が格納され
た配列変数iDiatonicを用意している。その配
列変数iDiatonicを構成する要素は全音階を構
成する音にそれぞれ対応させてあり、要素に格納された
値の「1」は変化音でないことを示し、「0」は変化音
であることを示している。
【0021】上記各評価結果は、右手と左手とでは同じ
配列変数で要素を異ならせて扱っている。具体的には、
移動コスト平均は配列変数doDiffic、移動コス
ト最大値は配列変数doDifficax、音符密度は
配列変数doDensity、リズムの複雑さは配列変
数doRDiffic、調の難しさは配列変数doDi
ffickey、モードの難しさは配列変数doDif
ficModeで扱っている。右手の評価結果用の要素
を指定する値は「0」、左手のそれは「1」である。
【0022】ユーザが楽曲の分析(評価)結果の表示を
指示した場合には、CPU101は、各楽曲(曲デー
タ)毎に、その評価結果をモニター105に出力するこ
とで表示させる。それにより、評価結果をユーザに通知
する。上述したような評価結果を通知することで、実際
の演奏を聴いたり、或いは楽譜を見ることなく、ユーザ
はその評価結果から楽曲の演奏内容(ここでは演奏の難
易度)を予想したり判断するといったことが行えるよう
になる。また、その評価結果から、楽曲間の比較を客観
的に行えるようになる。
【0023】次に、図5〜図10に示す各種フローチャ
ートを参照して、上記CPU101の動作について詳細
に説明する。図5は、全体処理のフローチャートであ
る。電源がオンされた後にCPU101が実行する全体
的な処理の流れを表したものである。始めに図5を参照
して、その全体処理について詳細に説明する。なお、そ
の全体処理は、CPU101が、RAM103をワーク
用に使用しながら、ROM102から読み出したプログ
ラムを実行することにより実現される。入力装置104
には、例えばキーボードとフロッピーディスク装置とい
ったように、複数の装置が対応している。
【0024】先ず、ステップ501では、初期化処理を
行う。その処理の実行により装置を予め定められた状態
に設定した後はステップ502に移行して、入力装置
(ここでは例えばキーボード)104のスキャンを行
う。その後はステップ503に移行する。
【0025】ステップ503では、スキャンを行った結
果、ユーザによる楽曲(曲データ)の評価(分析)の指
示を検出したか否か判定する。ユーザが特定のスイッチ
を操作するなどしてその指示を行った場合、判定はYE
Sとなり、ステップ504で楽曲の評価を行ってその評
価結果(図3参照)を保存する評価処理を実行した後、
上記ステップ502に戻る。そうでない場合には、判定
はNOとなってステップ505に移行する。
【0026】ステップ505では、ユーザによる評価結
果の表示の指示を検出したか否か判定する。ユーザが特
定のスイッチを操作するなどしてその指示を行った場
合、判定はYESとなり、ステップ506で楽曲の評価
結果をモニター105に出力することにより表示させる
表示処理を実行した後、上記ステップ502に戻る。そ
うでない場合には、判定はNOとなってステップ507
に移行する。
【0027】ステップ507では、ユーザによる曲入力
の指示を検出したか否か判定する。ユーザが特定のスイ
ッチを操作するなどしてその指示を行った場合、判定は
YESとなり、ステップ508で入力装置104に対応
するフロッピーディスク装置などから曲データを入力し
てRAM103に格納(図2参照)する曲入力処理を実
行した後、上記ステップ502に戻る。そうでない場合
には、判定はNOとなり、他のステップの処理を実行す
ることなく、そのステップ502に戻る。
【0028】図6は、上記ステップ504として実行さ
れる評価処理のフローチャートである。次に図6を参照
して、その評価処理について詳細に説明する。その評価
処理では、評価の対象とする曲データを順次、変更しな
がら、各曲データ毎にその評価を行うようになってい
る。
【0029】先ず、ステップ601では、評価の対象と
する曲データを管理するために用意した変数sに0を代
入する。続くステップ602では、RAM103に格納
した曲データ全ての評価が終了したか否か判定する。評
価の対象とする曲データを指定する変数sの値は順次、
インクリメントすることから、その値に対応する曲デー
タがRAM103に格納されていないような場合、判定
はYESとなり、ここで一連の処理を終了する。そうで
ない場合には、判定はNOとなってステップ603に移
行する。
【0030】ステップ603では、変数sの値で指定さ
れる曲データ中のデータポインター群(図2参照)等を
読み出したり、評価結果を保存するための領域をRAM
103に確保して、その領域内に曲データ中から「曲
名」「音色指定」をコピーする等のことを行い、その曲
データを評価するうえでの準備をする。その次に移行す
るステップ604では、その曲データを対象に評価を行
う1曲評価処理を実行する。それを実行すると、ステッ
プ605で変数sの値をインクリメントした後、上記ス
テップ602に戻る。それにより、1曲データ毎に、そ
の評価を行う。
【0031】次に、上記ステップ604として実行され
る1曲評価処理について、図7〜図10に示すそのフロ
ーチャートを参照して詳細に説明する。なお、上記ステ
ップ603の処理では、読み出したデータポインター群
を、配列変数cChの各要素に代入するようになってい
る。
【0032】先ず、ステップ701では、変数doTe
mpoにテンポ値を代入する。続くステップ702で
は、曲データ中の右手、或いは左手トラックを構成する
イベントデータを参照して、楽曲の長さ(演奏時間)を
求め、それを表す値を変数uLengthに代入する。
その次に移行するステップ703では、変数iに0を代
入する。その後はステップ704に移行する。
【0033】ステップ704では、変数iの値が2以上
か否か判定する。この時点では、変数iは評価の対象と
するトラックを管理するために用いている。このことか
ら、右手、及び左手の両トラックに対する評価が終了し
た場合、判定はYESとなり、図10に示すステップ7
36に移行する。そうでない場合には、判定はNOとな
ってステップ705に移行する。
【0034】ステップ705では、トラック(を構成す
るイベントデータ群によって表される演奏内容)を対象
にした評価を開始するうえでの初期設定を行う。具体的
には、変数iTrには配列要素cChの変数iの値で指
定される要素cCh[i]の値(変数iの値が0であれ
ば右手トラックの先頭位置を示すアドレス)を代入し、
各種評価用に用意した変数doDifficulty、
doRDifficulty、iNCnt、doMea
n、及びdoDMaxにはそれぞれ0を代入し、変数d
oWaonには1を代入する。それ以外には、変数me
にはトラックの先頭に位置するイベントデータを指定す
る値(図中では先頭ノートポインターと表記)、変数n
eにはその次のイベントデータを指定する値をそれぞれ
代入する。そのようにして初期設定を行った後はステッ
プ706に移行する。
【0035】ステップ706〜図9のステップ735で
は、変数iの値で指定されるトラックを対象に、変数m
eの値を順次、更新しながら、配列変数doDiffi
c、doDifficax、doDensity、及び
doRDifficで扱う評価結果を求めるための処理
が行われる。
【0036】先ず、ステップ706では、変数iの値で
指定されるトラックのなかで処理対象とするイベントデ
ータが無くなったか否か判定する。指定されるイベント
データが無くなるまで変数meの値を更新したような場
合、判定はYESとなってステップ710に移行する。
そうでない場合には、判定はNOとなってステップ70
7に移行する。
【0037】ステップ707では、変数neの値で指定
されるイベントデータ中のITime(発音開始時間)
から変数meの値で指定されるイベントデータ中のIT
imeを減算して得られる値a(図中ではa=ne−>
ITime−me−>ITimeと表記)を、和音の判
定用に設定した値の10と比較する。その10は、和音
の構成音の1つが発音を開始してから全ての発音が開始
するまでの時間間隔や、音符の発音持続時間などを考慮
して設定した時間間隔(以降、便宜的に和音判定間隔と
呼ぶ)を表す値である。このことから、値aを10と比
較した結果、値aが10以下と判定した場合には、変数
me、neの各値で指定されるイベントデータが表す楽
音が和音の構成音であるとしてステップ708に移行す
る。そうでないと判定、即ち値aが10より大きいと判
定した場合には、図8のステップ716に移行する。
【0038】ステップ708では、変数doWaon
に、それまでの値に2を掛けた値を代入する。続くステ
ップ709では、変数neに、それまで指定していたイ
ベントデータの次に位置するイベントデータを指定する
値を代入する。その後はステップ707に戻る。
【0039】このようにして、本実施の形態では、ステ
ップ707〜709で形成される処理ループを、変数n
eの値を随時、更新しながら、値aが10より大きいと
ステップ707で判定するまで繰り返し実行する。それ
により、変数Waonの値は、和音の数が多いほど、そ
の和音の構成音の数が多いほど、大きくなるように更新
するようにしている。
【0040】そのステップ707で値aが10より大き
いと判定した場合に移行する図8のステップ716で
は、変数peに、変数neの値で指定されるイベントデ
ータの次に位置するイベントデータを指定する値を代入
する。なお、このとき変数neの値で指定されるイベン
トデータが表す楽音は、変数meの値で指定されるイベ
ントデータが表す楽音とは和音を構成するものではな
い。また、以降、特に断らない限り、イベントデータは
楽音と同じ意味で用いることにする。
【0041】ステップ717では、変数peの値で指定
されるイベントデータ中のITime(発音開始時間)
から変数neの値で指定されるイベントデータ中のIT
imeを減算して得られる値a(図中ではa=pe−>
ITime−ne−>ITimeと表記)を、和音判定
間隔を表す値の10と比較する。その比較の結果、値a
が10以上と判定した場合、発音開始時間の間隔から、
変数peの値で指定される楽音(イベントデータ)と、
変数neの値で指定されるそれとが同じ和音を構成して
いないとして、ステップ721に移行する。そうでない
と判定、即ち値aが10未満と判定した場合には、それ
らで指定される楽音(イベントデータ)は同じ和音を構
成しているとして、ステップ718に移行する。
【0042】そのステップ718では、変数peの値で
指定されるイベントデータ中のピッチデータ(音高を示
す値)と変数meの値で指定されるイベントデータ中の
ピッチデータの差が、変数ne、me間におけるそれよ
り小さいか否か判定する。前者のピッチデータの差が後
者のそれより小さい場合、判定はYESとなり、ステッ
プ719で変数neに変数peの値を代入し、更にステ
ップ720で変数peにそれまで指定していたイベント
データの次に位置するイベントデータを指定する値を代
入した後、上記ステップ717に戻る。そうでない場合
には、判定はNOとなってそのステップ720に移行す
る。
【0043】変数meの値で指定されるイベントデータ
が表す楽音が和音を構成し、その和音に続く形で別の和
音が存在しているような場合、上記ステップ717〜7
20で形成される処理ループが実行される。それによ
り、変数neには、続く和音の構成音のなかで、変数m
eの値で指定される楽音(イベントデータ)との音程が
最も小さい楽音を指定する値が代入されることになる。
【0044】ステップ717で値aが10以上と判定し
た場合に移行するステップ721では、変数peに、変
数neの値で指定されるイベントデータの次に位置する
イベントデータを指定する値を代入する。次に移行する
ステップ722では、変数peの値で指定されるイベン
トデータ中のITime(発音開始時間)の値から変数
neの値で指定されるイベントデータ中のITimeの
値を減算して得られる値a(図中ではa=pe−>IT
ime−ne−>ITimeと表記)を、和音判定間隔
を表す値の10と比較する。その比較の結果、値aが1
0以上と判定した場合、ステップ724に移行する。そ
うでないと判定、即ち値aが10未満と判定した場合に
は、ステップ723で変数peにそれまで指定していた
イベントデータの次に位置するイベントデータを指定す
る値を代入した後、上記ステップ722に戻る。
【0045】このようにして、ステップ724に移行し
た時点では、和音は1つの楽音と見なして、変数me、
ne、及びpeの各値で指定される3つの楽音が特定さ
れる。ステップ724〜図9の735では、これまで更
新した変数を用いて、各種評価用に用意した変数を更新
するための処理が行われる。
【0046】先ず、ステップ724では、変数ne、m
eの値で指定される楽音間の発音開始時間の差が、変数
pe、neの値で指定される楽音間のそれより大きいか
否か判定する。前者の差が後者の差より大きい場合、判
定はYESとなり、ステップ725において、変数do
RVに、変数neの値で指定されるイベントデータ中の
ITime(発音開始時間)の値から変数meの値で指
定されるイベントデータ中のそれを引いた値を、変数p
eの値で指定されるイベントデータ中のITime(発
音開始時間)の値から変数neの値で指定されるイベン
トデータ中のそれを引いた値で割って得られる値を代入
した後、図9のステップ727に移行する。そうでない
場合には、判定はNOとなり、ステップ726におい
て、変数doRVに、ステップ725とは分子と分母を
逆にして求められる値を代入した後、そのステップ72
7に移行する。
【0047】変数me、ne、及びpeの各値で指定さ
れる楽音をそれぞれ第1〜第3楽音とすると、上述した
ように求めて変数doRVに代入する値は、第1楽音と
第2楽音間の発音開始時間の差と、第2楽音と第3楽音
間におけるそれとの比率が大きくなるほど、或いは小さ
くなるほど、大きくなる。隣接する楽音間の発音開始時
間の差が変動するほど、大きくなる。そのように変化す
る値を、リズムの複雑さを表すものとして変数doRV
に代入している。
【0048】図9のステップ727では、変数iNCn
tの値をインクリメントする。続くステップ728で
は、変数iPidDに、変数neの値で指定されるイベ
ントデータ中のピッチデータの値から、変数meの値で
指定されるイベントデータ中のそれを引いた値の絶対値
を代入する(図中では、iPidD=abs(ne−>
byData[1]−me−>byData[1]と表
記)。その次に実行するステップ729では、変数do
Waon、doTempo、及び配列変数doPitV
alueの変数iPidDの値で指定される要素doP
itValue[iPidD]の各値を掛けた値を、変
数ne、meの各値で指定される楽音間の発音開始時間
の差(図中ではdoDeltaTimeと表記)で割っ
た値を求め、その求めた値(=doWaon*doTe
mpo*doPitValue[iPidD]/doD
eltaTime)を、次の楽音を鳴らすための移動コ
ストを表す値として変数doDに代入する。その後はス
テップ730に移行する。
【0049】隣接する楽音間の音程によって手指を運ぶ
労力は変化する。上記配列変数doPitValue
は、音程に着目してその労力を評価するために用意した
ものであり、各要素には、それに対応する音程での労力
を数値化した値が代入されている。その労力は、音程が
大きくなるほど、言い換えれば手指を動かす量が大きく
なるほど、大きなものとさせている。それにより、変数
doDに代入する値、即ち移動コストを表す値は、隣接
する楽音間の音程が大きいほど、それらの間の発音開始
時間の間隔が小さいほど、大きな値となるようにしてい
る。
【0050】ステップ730では、変数doDiffi
cultyに、それまでの値に変数doDの値を加算し
た値を代入する。そのようにして変数doDiffic
ultyに代入させている移動コストの累算値を更新す
ると、次にステップ731に移行して、局所的な変化の
影響を低減するために定めた定数doMeanSigに
変数doMeanの値を掛け、その掛けた値に、1から
定数doMeanSigを引いた値を変数doDの値に
掛けた値を加算し、その加算結果を変数doMeanに
代入する。その後にはステップ732に移行する。
【0051】ステップ732では、変数doDMaxの
値が変数doMeanの値以下か否か判定する。前者の
値が後者の値以下であった場合、判定はYESとなり、
ステップ733で変数doDMaxに変数doMean
の値を代入し、更にステップ734で変数doRDif
ficultyに、それまでの値に変数doRVの値を
加算した値を代入した後、ステップ735に移行する。
そうでない場合には、判定はNOとなり、次にステップ
734の処理を実行した後、そのステップ735に移行
する。そのように変数doRDifficultyの値
を更新することにより、リズムの複雑さを表す値の累算
値が変数doRDifficultyに保持される。
【0052】ステップ735では、変数meに、それま
で指定していたイベントデータの次に位置するイベント
データを指定する値を代入する。その後は図7のステッ
プ706に戻る。そのステップ706の判定がYESと
なるとステップ710に移行する。そのステップ710
〜715では、上述したように更新される各種変数を用
いて、配列変数doDiffic、doDiffica
x、doDensity、及びdoRDifficの変
数iの値で指定される各要素に値を代入して保存するた
めの処理が行われる。
【0053】先ず、ステップ710では、配列変数do
Densityの変数iの値で指定される要素doDe
nsity[i]に、変数iNCntの値を変数uLe
ngthの値で割った値、即ち単位時間当たりに発音す
る楽音(音符)数を代入する。続くステップ711で
は、変数iNCntの値が0より大きいか否か判定す
る。変数iの値で指定されるトラックに1つ以上の楽音
の発音を表すイベントデータが存在していた場合、判定
はYESとなってステップ712に移行する。そうでな
い場合には、判定はNOとなってステップ715に移行
する。
【0054】ステップ712では、配列変数doDif
ficの変数iの値で指定される要素doDiffic
[i]に、変数doDifficultyの値を変数i
NCntの値で割って得られる値を代入する。その次に
移行するステップ713では、配列変数doDiffi
caxの変数iの値で指定される要素doDiffic
ax[i]に変数doDMaxの値を代入する。その後
に移行するステップ714では、配列変数doRDif
ficの変数iの値で指定される要素doRDiffi
c[i]に、変数iNCntの値に100を掛けた値で
変数doRDifficultyの値を割った値を代入
する。その代入を行うと、ステップ715で変数iの値
をインクリメントした後、上記ステップ704に戻る。
【0055】このようにして、各配列変数の変数iの値
で指定される要素に値を代入し、それら各要素の値をR
AM103に確保した領域に保存する。それにより、右
手、或いは左手の評価結果として、移動コスト平均、移
動コスト最大値、音符密度、及びリズムの複雑さ(を表
す値)が保存される(図3参照)。
【0056】上記ステップ704でYESと判定された
場合には、上述したように、図10のステップ736に
移行する。そのステップ736〜758では、配列変数
doDifficKey、及びdoDifficMod
eの各要素doDifficKey[0]、及びdoD
ifficMode[0]に値を代入して保存するため
の処理が行われる。
【0057】先ず、ステップ736では、変数iに0を
代入するとともに、配列変数iPitchClassの
各要素に0を代入する。続くステップ737では、変数
iの値が2以上か否か判定する。変数iに2以上の値が
代入されていた場合、判定はYESとなってステップ7
44に移行する。そうでない場合には、判定はNOとな
ってステップ738に移行する。なお、上記配列変数i
PitchClassは、全音階上での各音高別に、そ
の音高で鳴る楽音数をカウントするために用意したもの
である。
【0058】ステップ738では、変数iTrに、配列
変数cChの変数iの値で指定される要素cCh[i]
の値(変数iの値が0であれば右手トラックの先頭位置
を示すアドレス)を代入する。その次に実行するステッ
プ739では、変数meに、変数iTrの値で先頭位置
が示されるトラックの先頭に位置するイベントデータを
指定する値を代入する。その後はステップ740に移行
する。
【0059】ステップ740では、変数iの値で指定さ
れるトラックのなかで処理対象とするイベントデータが
無くなったか否か判定する。指定されるイベントデータ
が無くなるまで変数meの値を更新したような場合、判
定はYESとなり、ステップ743で変数iの値をイン
クリメントした後、上記ステップ737に戻る。そうで
ない場合には、判定はNOとなってステップ741に移
行する。
【0060】ステップ741では、変数meの値で指定
されるイベントデータ中のピッチデータの値を12で割
った余りの値で指定される配列変数iPitchCla
ssの要素iPitchClass[me−>byDa
ta[1]mod 12]の値をインクリメントする。
その次に実行するステップ742では、変数meに、そ
れまで指定していたイベントデータの次に位置するイベ
ントデータを指定する値を代入する。その後は上記ステ
ップ740に戻る。
【0061】上記ステップ737〜743で形成される
処理ループは、ステップ737の判定がYESとなるま
で繰り返し実行される。それにより、配列変数iPit
chClassの各要素には、全音階上で対応する音高
の楽音の総数が保持されることになる。ここでの総数
は、右手、及び左手の各トラックを対象にしてのもので
ある。
【0062】そのステップ737の判定がYESとなっ
て移行するステップ744では、変数doMaxVに0
を代入する。次にステップ745において、変数iに0
を代入する。その後はステップ746に移行する。ステ
ップ746〜758では、変数iの値を順次、インクリ
メントしながら、配列変数iPitchClassの各
要素に代入された値を用いて要素doDifficKe
y[0]、及びdoDifficMode[0]の値を
求めるための処理が行われる。
【0063】先ず、ステップ746では、変数iの値が
12以上か否か判定する。その変数iに12以上の値が
代入されていた場合、判定はYESとなり、ここで一連
の処理を終了する。そうでない場合には、判定はNOと
なってステップ747に移行する。
【0064】ステップ747では、変数V、及びVVに
それぞれ0を代入する。続くステップ748では、変数
jに0を代入する。その後は、ステップ749に移行し
て、変数jの値が12以上か否か判定する。その変数j
に12以上の値が代入されていた場合、判定はYESと
なってステップ754に移行する。そうでない場合に
は、判定はNOとなってステップ750に移行する。
【0065】ステップ750では、12から変数iの値
を引いた値に変数jの値を加算し、その加算結果を12
で割った余りで指定される配列変数iDiatonic
の要素iDiatonic[(12−i+j)mod
12]の値に変数jの値で指定される要素iPitch
Class[j]の値を乗算し、その乗算結果をそれま
での値に加算した値を変数Vに代入する。その代入後に
はステップ751に移行する。
【0066】ステップ751では、12から変数iの値
を引いた値に変数jの値を加算し、その加算結果を12
で割った余りで指定される配列変数iDiatonic
の要素iDiatonic[(12−i+j)mod
12]の値が0か否か判定する。その余りに対応する音
高が全音階上で変化音に対応していた場合、判定はYE
Sとなり、ステップ752で変数VVに、それまでの値
に要素iPitchClass[j]の値を加算した値
を代入し、更にステップ753で変数jの値をインクリ
メントした後、上記ステップ749に戻る。そうでない
場合には、判定はNOとなり、次にそのステップ753
の処理を実行する。
【0067】上記ステップ749〜753で形成される
処理ループは、ステップ749の判定がYESとなるま
で繰り返し実行される。それにより、変数V、及びVV
には、全音階上で変数iの値に対応する音高に着目し
て、その音高の楽音数(要素iPitchClass
[i]の値)を用いて算出される値が代入される。
【0068】そのステップ749の判定がYESとなっ
て移行するステップ754では、変数doMaxVの値
が変数Vの値より小さいか否か判定する。今回、変数V
に代入された値がそれまでで最大であった場合、判定は
YESとなってステップ755に移行する。そうでない
場合には、判定はNOとなってステップ758に移行す
る。
【0069】ステップ755では、変数doMaxVに
変数Vの値を代入する。続くステップ756では、要素
doDifficKey[0]に、配列変数KeyDi
fficultyの変数iの値で指定される要素Key
Difficulty[i]の値を代入する。その後は
ステップ757に移行する。
【0070】上記配列変数KeyDifficulty
は、楽曲において支配性を持つ全音階上の音高により生
じる演奏上の難しさを表す数値を格納させておくために
用意したものであり、各要素には、その音高に対応する
数値が格納されている。それにより、本実施の形態で
は、必要に応じて、その要素の値を要素doDiffi
cKey[0]に代入するようにしている。
【0071】ステップ757では、変数Vの値に変数V
Vの値を加算し、その加算結果で変数VVの値に10を
掛けた値を割った値を要素doDifficMode
[0]に代入する。次に移行するステップ758では、
変数iの値をインクリメントする。そのインクリメント
を行った後に上記ステップ746に戻る。
【0072】上記ステップ755〜757は、上記ステ
ップ754の判定がYESとなった場合にのみ実行す
る。それにより、本実施の形態では、全音階上の音高で
最も楽音数の多い音高を主音と見なし、その主音と見な
した音高で調の難しさ、及びモードの難しさを評価し
て、その評価結果をRAM103に保存している。
【0073】なお、本実施の形態では、図3に示すよう
に、6種類の各種評価のために分析を行っているが、そ
の分析の対象とする評価の種類や数、更には評価(分
析)方法などはそれに限定されるものではない。適宜、
変更しても良いものである。例えばモードの難しさの評
価については、全音階上の音高で最も楽音数の多い音高
に着目するのではなく、複数の音高に着目して行うよう
にしても良い。
【0074】上述したような楽曲分析装置の動作を実現
させるようなプログラムは、ROM、CD−ROM、フ
ロッピーディスク、或いは光磁気ディスク等の記録媒体
に記録させて配布しても良い。或いは、公衆網等で用い
られる伝送媒体を介して、そのプログラムの一部、若し
くは全部を配信するようにしても良い。そのようにした
場合には、ユーザはプログラムを取得して楽曲分析装
置、或いはコンピュータなどのデータ処理装置にロード
することにより、それをロードした装置に本発明を適用
させることができる。このことから、プログラムは、そ
れを配信する装置がアクセスできるものであっても良
い。
【0075】
【発明の効果】以上、説明したように本発明は、楽曲の
演奏内容を表す楽曲データを取得して、それが表す演奏
内容の分析を行い、該演奏内容を表す分析データを生成
する。このため、ユーザは、実際の演奏を聴いたり、楽
譜を見ることなく、その分析データを基に、楽曲の演奏
内容を適切に判断することができる。
【図面の簡単な説明】
【図1】本実施の形態による楽曲分析装置の回路構成図
である。
【図2】曲データの構成を説明する図である。
【図3】曲データの評価結果、及びその内容を説明する
図である。
【図4】配列変数iDiatonicの各要素に格納さ
れた値を説明する図である。
【図5】全体処理のフローチャートである。
【図6】評価処理のフローチャートである。
【図7】1曲評価処理のフローチャートである。
【図8】1曲評価処理のフローチャートである(続き
1)。
【図9】1曲評価処理のフローチャートである(続き
2)。
【図10】1曲評価処理のフローチャートである(続き
3)。
【符号の説明】
101 CPU 102 ROM 103 RAM 104 入力装置 105 モニター 106 バス

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 楽曲の演奏内容を分析して、該演奏内容
    を表すデータを生成する装置であって、 前記楽曲の演奏内容を表す楽曲データを取得する楽曲デ
    ータ取得手段と、 前記楽曲データ取得手段が取得した楽曲データの表す演
    奏内容の分析を行い、該演奏内容を表す分析データを生
    成する分析データ生成手段と、 を具備することを特徴とする楽曲分析装置。
  2. 【請求項2】 前記分析データ生成手段は、前記楽曲を
    演奏する際の手指の運びの難易性、単位時間当たりに鳴
    らす楽音の数、前記楽曲が備えた調性、楽譜上で音符に
    臨時記号を付して表される変化音、及び該楽曲のリズム
    が変化する度合い、のうちの少なくとも一つに着目して
    前記演奏内容を評価するための分析を行い、該演奏内容
    の評価結果を前記分析データとして生成する、 ことを特徴とする請求項1記載の楽曲分析装置。
  3. 【請求項3】 楽曲の演奏内容を分析して、該演奏内容
    を表すデータを生成する装置に実行させるプログラムで
    あって、 前記楽曲の演奏内容を表す楽曲データを取得する機能
    と、 前記取得する機能により取得した楽曲データの表す演奏
    内容の分析を行い、該演奏内容を表す分析データを生成
    する機能と、 を実現させるためのプログラム。
JP2001127087A 2001-04-25 2001-04-25 楽曲分析装置、及びプログラム Expired - Fee Related JP3915428B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001127087A JP3915428B2 (ja) 2001-04-25 2001-04-25 楽曲分析装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001127087A JP3915428B2 (ja) 2001-04-25 2001-04-25 楽曲分析装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2002323891A true JP2002323891A (ja) 2002-11-08
JP3915428B2 JP3915428B2 (ja) 2007-05-16

Family

ID=18976019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001127087A Expired - Fee Related JP3915428B2 (ja) 2001-04-25 2001-04-25 楽曲分析装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP3915428B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010276891A (ja) * 2009-05-29 2010-12-09 Casio Computer Co Ltd 楽曲難易度評価装置および楽曲難易度評価プログラム
JP2010281881A (ja) * 2009-06-02 2010-12-16 Casio Computer Co Ltd 楽曲難易度算出装置および楽曲難易度算出プログラム
JP2010281882A (ja) * 2009-06-02 2010-12-16 Casio Computer Co Ltd 楽曲難易度算出装置および楽曲難易度算出プログラム
JP2011191431A (ja) * 2010-03-12 2011-09-29 Xing Inc 難易度算出装置、難易度算出方法及びコンピュータプログラム
US8106281B2 (en) 2009-05-29 2012-01-31 Casio Computer Co., Ltd. Music difficulty level calculating apparatus and music difficulty level calculating method
WO2014188999A1 (ja) * 2013-05-23 2014-11-27 ヤマハ株式会社 楽曲評価装置、楽曲評価方法、楽曲評価プログラム及び当該プログラムを記憶した情報記憶媒体
WO2018216423A1 (ja) * 2017-05-26 2018-11-29 ヤマハ株式会社 楽曲評価装置、楽曲評価方法およびプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010276891A (ja) * 2009-05-29 2010-12-09 Casio Computer Co Ltd 楽曲難易度評価装置および楽曲難易度評価プログラム
US8106281B2 (en) 2009-05-29 2012-01-31 Casio Computer Co., Ltd. Music difficulty level calculating apparatus and music difficulty level calculating method
JP2010281881A (ja) * 2009-06-02 2010-12-16 Casio Computer Co Ltd 楽曲難易度算出装置および楽曲難易度算出プログラム
JP2010281882A (ja) * 2009-06-02 2010-12-16 Casio Computer Co Ltd 楽曲難易度算出装置および楽曲難易度算出プログラム
JP2011191431A (ja) * 2010-03-12 2011-09-29 Xing Inc 難易度算出装置、難易度算出方法及びコンピュータプログラム
WO2014188999A1 (ja) * 2013-05-23 2014-11-27 ヤマハ株式会社 楽曲評価装置、楽曲評価方法、楽曲評価プログラム及び当該プログラムを記憶した情報記憶媒体
WO2018216423A1 (ja) * 2017-05-26 2018-11-29 ヤマハ株式会社 楽曲評価装置、楽曲評価方法およびプログラム

Also Published As

Publication number Publication date
JP3915428B2 (ja) 2007-05-16

Similar Documents

Publication Publication Date Title
Cowell New musical resources
US7960638B2 (en) Apparatus and method of creating content
US6930236B2 (en) Apparatus for analyzing music using sounds of instruments
EP1400948B1 (en) Synchronous playback system for reproducing music in good ensemble and recorder and player for the ensemble
US6175072B1 (en) Automatic music composing apparatus and method
Todd et al. The MIDILAB music research system.
JP3489503B2 (ja) 音信号分析装置、音信号分析方法及び記憶媒体
US6323411B1 (en) Apparatus and method for practicing a musical instrument using categorized practice pieces of music
JP2002323891A (ja) 楽曲分析装置、及びプログラム
JP3577561B2 (ja) 演奏分析装置及び演奏分析方法
JP2003288077A (ja) 曲データ出力装置及びプログラム
JP3704842B2 (ja) 演奏データ変換装置
JP3623557B2 (ja) 自動作曲システムおよび自動作曲方法
JP3417662B2 (ja) 演奏分析装置
JP3266007B2 (ja) 演奏データ変換装置
Rigopulos Growing music from seeds: parametric generation and control of seed-based msuic for interactive composition and performance
JP3587133B2 (ja) 発音長決定方法と装置及び記録媒体
JPH096351A (ja) 電子弦楽器
JP7425558B2 (ja) コード検出装置及びコード検出プログラム
JP3800947B2 (ja) 演奏データ処理装置及び方法並びに記憶媒体
JP4221659B2 (ja) 演奏支援装置
JP4595851B2 (ja) 演奏データ編集装置及びプログラム
JP2004045695A (ja) 演奏データ処理装置および演奏データ処理プログラム
JP2756888B2 (ja) 電子楽器
JP2002091446A (ja) 波形再生用自動演奏装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061006

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070129

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140216

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees