JPH09237088A - 演奏分析装置、演奏分析方法、及び、記憶媒体 - Google Patents

演奏分析装置、演奏分析方法、及び、記憶媒体

Info

Publication number
JPH09237088A
JPH09237088A JP8214890A JP21489096A JPH09237088A JP H09237088 A JPH09237088 A JP H09237088A JP 8214890 A JP8214890 A JP 8214890A JP 21489096 A JP21489096 A JP 21489096A JP H09237088 A JPH09237088 A JP H09237088A
Authority
JP
Japan
Prior art keywords
data
performance
note
event
analysis
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
JP8214890A
Other languages
English (en)
Other versions
JP3577561B2 (ja
Inventor
Ryutaro Hayashi
龍太郎 林
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 JP21489096A priority Critical patent/JP3577561B2/ja
Publication of JPH09237088A publication Critical patent/JPH09237088A/ja
Application granted granted Critical
Publication of JP3577561B2 publication Critical patent/JP3577561B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】 練習効率を向上させるための情報を演奏者に
提供する。 【解決手段】 被験データRAM113には、演奏者が
自分で行った演奏内容の被験データが格納され、基準デ
ータRAM112には、演奏者が手本とすべき演奏内容
の基準データが格納される。メインCPU101は、そ
れら基準データ、及び被験データから、1音符毎に、分
析用データを抽出し、それらをワークRAM104のワ
ークエリアに別個に格納する。また、これらの分析用デ
ータを用いて、基準データと被験データ間における音符
のマッチングを行い、そのマッチングさせた結果に従っ
て、音符間の差分をパラメータ毎に取得する。その後、
これらパラメータ毎に取得した差分を用いて、演奏者の
演奏内容を分析し、その結果を表示装置117に表示さ
せる。また、その取得した差分に応じて基準データを変
更させ、演奏者の演奏傾向を強調させた形で自動演奏を
行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、鍵盤等の演奏操作
子群に対して演奏者が行った操作(演奏)内容を分析す
る技術に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】電子楽
器等においては、近年、多機能化がすすみ、様々な機能
が搭載されてきている。電子楽器に搭載されるようにな
った機能の一つとして、例えばナビゲート機能がある。
【0003】ナビゲート機能は、所望の楽曲の演奏にお
いて、鍵盤(演奏操作子群)等に対して行うべき操作内
容を演奏者に通知する機能である。ナビゲート機能を搭
載した電子楽器には、その機能の搭載に合わせて、例え
ば各鍵に対する操作を個別に指示するためのLED群が
設けられる。ナビゲート機能による演奏内容の通知は、
例えば楽曲の演奏の進行に合わせて、操作すべき鍵のL
EDを順次点灯させることで行われる。
【0004】なお、演奏内容の通知としては、演奏者が
操作すべき鍵とは異なる他の鍵を操作したとき、或いは
操作すべき鍵に対する操作が所定時間以上遅れたとき
に、操作すべき鍵のLEDを点灯させる方法もある。
【0005】演奏者は、ナビゲート機能を用いて楽器演
奏の独習を行うことができる。しかし、このナビゲート
機能は、操作すべき演奏操作子の指示を行うだけか、或
いは演奏者の演奏内容についての評価を行う機能を有す
る場合であっても、音高(鍵)の一致、不一致のみとい
ったように少ない評価項目からそれを評価するだけであ
る。このため、楽器演奏の独習を行う場合、演奏者は、
実際に行った演奏についての評価を実質的に自分自身で
行うようなものとなっていた。
【0006】周知のように、自身が行った演奏を客観的
に把握することは非常に困難である。このため、楽器演
奏の独習を行う場合には、演奏者は演奏における不具合
な点を見つけ、その原因を究明して練習にフィードバッ
クしたりすることが必ずしもできないことから、高い練
習効率を得ることができないという問題点が発生してい
た。
【0007】音楽教室に通える人や、個人レッスン等を
受けられる人は、教師から指導を受けられるので、上記
問題点は回避される。しかし、地理的、金銭的、時間的
といった各種の理由により、楽器の演奏を独習する以外
に方法がない人も少なくないのが実状である。
【0008】このような人々にとって、自身で行った演
奏を客観的に示す情報は、演奏における不具合の発見や
その原因の究明を容易にしたり、更には演奏技術を向上
させるための手助けになる。
【0009】本発明の課題は、練習効率を向上させるた
めの情報を演奏者に提供することにある。
【0010】
【課題を解決するための手段】本発明の第1の態様の演
奏分析装置は、演奏者が演奏操作子群に対して行った演
奏操作の情報である被験データと、演奏操作子群への目
標とすべき演奏操作の情報である基準データとから、演
奏者の演奏内容を分析することを前提とし、被験データ
の演奏イベントデータと基準データの演奏イベントデー
タの対応関係を検出するイベントマッチ手段と、イベン
トマッチ手段が検出した対応関係に従って、被験データ
の演奏イベントデータと基準データの演奏イベントデー
タとを対比し、演奏イベントデータ毎に、該演奏イベン
トデータのパラメータの差分、及びイベント発生タイミ
ングの時間差の少なくとも1つの差分を取得する差分取
得手段と、差分取得手段が取得したパラメータの差分、
及びイベント発生タイミングの時間差の少なくとも1つ
の差分を用いて、演奏者の演奏内容を分析する分析手段
と、分析手段の分析結果を演奏者に通知する通知手段
と、を具備する。
【0011】なお、上記の構成において、分析手段は、
差分取得手段が取得したパラメータの差分、及びイベン
ト発生タイミングの時間差から、それらの差分の平均
値、度数分布、標準偏差の少なくとも一つを分析結果と
して求め、通知手段は、分析手段が求めた分析結果を表
示させることにより、分析手段の分析結果を演奏者に通
知する、ことが望ましい。
【0012】また、分析手段は、差分取得手段が取得し
たパラメータの差分、及びイベント発生タイミングの時
間差のなかの少なくとも1つの差分に基づいて基準デー
タを変更し、通知手段は、変更された基準データを再生
させる、ことが望ましい。その分析手段は、基準データ
の変更に用いた差分を強調させて、基準データを変更す
る、ことが望ましく、更には、演奏者により指定された
パラメータの差分に基づいて基準データを変更する、こ
とが望ましい。
【0013】また、分析手段は、分析結果として、差分
取得手段が取得したパラメータの差分、及びイベント発
生タイミングの時間差の少なくとも一つを、イベントマ
ッチ手段が検出した対応関係に従ってまとめ、通知手段
は、分析結果を表示することにより演奏者に通知する、
ことが望ましい。
【0014】本発明の第2の態様の演奏分析装置は、演
奏者が演奏操作子群に対して行った演奏操作の情報であ
る被験データと、演奏操作子群への目標とすべき演奏操
作の情報である基準データとから、演奏者の演奏内容を
分析することを前提とし、被験データの演奏イベントデ
ータと基準データの演奏イベントデータの対応関係を検
出するイベントマッチ手段と、イベントマッチ手段が検
出した対応関係に従って、被験データの演奏イベントデ
ータと基準データの演奏イベントデータとを対比し、演
奏イベントデータ毎に、該演奏イベントデータのパラメ
ータの差分、及びイベント発生タイミングの時間差のそ
れぞれの差分を取得する差分取得手段と、差分取得手段
が取得したパラメータの差分、及びイベント発生タイミ
ングの時間差のなかの少なくとも1種類の差分に基づい
て基準データを変更する演奏データ変更手段と、演奏デ
ータ変更手段により変更された基準データを再生させる
再生手段と、を具備する。
【0015】なお、上記の構成において、演奏データ変
更手段は、基準データの変更に用いた差分を強調させ
て、基準データを変更する、ことが望ましい。更には、
演奏者により指定されたパラメータの差分に基づいて基
準データを変更する、ことが望ましい。
【0016】本発明の第3の態様の演奏分析装置は、演
奏者が演奏操作子群に対して行った演奏操作の情報であ
る被験データと、演奏操作子群への目標とすべき演奏操
作の情報である基準データとから、演奏者の演奏内容を
分析することを前提とし、被験データの演奏イベントデ
ータと基準データの演奏イベントデータの対応関係を検
出するイベントマッチ手段と、イベントマッチ手段が検
出した対応関係に従って、被験データ、及び基準データ
から、演奏イベントデータの所定のパラメータを分析結
果として取得する分析手段と、分析手段の分析結果を表
示する表示手段と、を具備する。
【0017】なお、上記の構成において、分析手段は、
所定のパラメータとして、演奏イベントデータ間のイベ
ント発生間隔を被験データ、及び基準データからそれぞ
れ取得し、表示手段は、イベント発生間隔を、演奏イベ
ントデータ毎に対応させて表示する、ことが望ましい。
【0018】また、上記第1〜第3の態様の演奏分析装
置において、イベントマッチ手段は、被験データの演奏
イベントデータ、及び基準データの演奏イベントデータ
のイベント発生タイミングに基づいてそれらを対応付け
した後、該対応付けを、演奏イベントデータのパラメー
タであるノートナンバーに着目した補正を行うことによ
り、対応関係を検出する、ことが望ましい。更には、演
奏操作子群への演奏操作の情報であり、且つ基準デー
タ、或いは被験データとは異なる他の少なくとも一つの
演奏データを、基準データ、或いは被験データと対比す
ることにより、演奏データで再生される演奏内容を更に
分析する、ことが望ましい。
【0019】本発明の第1の態様の演奏分析方法は、演
奏者が演奏操作子群に対して行った演奏操作の情報であ
る被験データと、演奏操作子群への目標とすべき演奏操
作の情報である基準データとから、演奏者の演奏内容を
分析することを前提とし、被験データの演奏イベントデ
ータと基準データの演奏イベントデータの対応関係を検
出し、その検出した対応関係に従って、被験データの演
奏イベントデータと基準データの演奏イベントデータと
を対比することにより、演奏イベントデータ毎に、該演
奏イベントデータのパラメータの差分、及びイベント発
生タイミングの時間差の少なくとも1つの差分を取得
し、その取得したパラメータの差分、及びイベント発生
タイミングの時間差の少なくとも1つの差分を用いて、
演奏者の演奏内容を分析する。
【0020】本発明の第2の態様の演奏分析方法は、演
奏者が演奏操作子群に対して行った演奏操作の情報であ
る被験データと、演奏操作子群への目標とすべき演奏操
作の情報である基準データとから、演奏者の演奏内容を
分析することを前提とし、被験データの演奏イベントデ
ータと基準データの演奏イベントデータの対応関係を検
出し、その検出した対応関係に従って、被験データ、及
び基準データから、演奏イベントデータの所定のパラメ
ータを取得し、その取得した所定のパラメータを分析結
果として表示する。
【0021】なお、上記第1、第2の態様の演奏分析方
法においては、演奏操作子群への演奏操作の情報であ
り、且つ基準データ、或いは被験データとは異なる他の
少なくとも一つの演奏データを、基準データ、或いは被
験データと対比して、演奏データで再生される演奏内容
を更に分析する、ことが望ましい。
【0022】本発明の第1の態様の記憶媒体は、演奏操
作子群に対する演奏操作の情報である演奏データを複数
取得する演奏データ取得機能と、演奏データ取得機能に
より取得した複数の演奏データ間で演奏イベントデータ
の対応関係を検出するイベントマッチ機能と、イベント
マッチ機能により検出した対応関係に従って、複数の演
奏データ間で演奏イベントデータ毎に、その演奏イベン
トデータのパラメータの差分、及びイベント発生タイミ
ングの時間差の少なくとも1つの差分を取得する差分取
得機能と、差分取得機能が取得したパラメータの差分、
及びイベント発生タイミングの時間差の少なくとも1つ
の差分を用いて、複数の演奏データのなかの少なくとも
1つによって再生される演奏の内容を分析する分析機能
と、分析機能による分析結果を演奏者に通知する通知機
能と、を備えたプログラムを記憶している。
【0023】本発明の第2の態様の記憶媒体は、演奏操
作子群に対する演奏操作の情報である演奏データを複数
取得する演奏データ取得機能と、演奏データ取得機能に
より取得した複数の演奏データ間で演奏イベントデータ
の対応関係を検出するイベントマッチ機能と、そのイベ
ントマッチ機能により検出した対応関係に従って、複数
の演奏データから、演奏イベントデータの所定のパラメ
ータを分析結果としてそれぞれ取得する分析機能と、そ
の分析機能による分析結果を表示させる表示機能と、を
備えたプログラムを記憶している。
【0024】演奏者が自身でその演奏技術を正確に把握
するためには、演奏者が行った演奏がどのようなもので
あるかを情報として演奏者に提供することが望まれる。
本発明は、演奏者の演奏内容を手本、或いは基準となる
演奏内容と対比して分析し、それらの演奏内容から異な
る部分の情報、或いはそれらの間の相違を対比するため
の情報を具体的な形で演奏者に提供する。これによっ
て、演奏者は自身の演奏内容を客観的、且つ具体的に把
握することが可能となり、更には、課題を克服するため
の効果的な練習を行えるようになる。
【0025】本発明は、演奏者の演奏内容を手本、或い
は基準となる演奏内容に反映させ、その反映させた演奏
内容で再生させる。これにより、演奏者は自身の演奏で
悪い点を聴感から認識(把握)することが可能となる。
また、演奏者が、演奏の部分的な箇所ではなく、全体的
な演奏傾向を認識することも容易となる。
【0026】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。 <第1の実施の形態>図1は、本実施の形態が適用され
た電子楽器100の構成を示すブロック図である。図1
を参照して、その構成、及び概略動作について説明す
る。
【0027】メインCPU(Central Processing Unit
)101は、プログラムROM(Read Only Memory)1
02に予め記憶されているプログラムを読み出し、それ
を実行することで楽器100全体の制御を実行する。
【0028】コントロールスイッチ群103は、特には
図示しない各種スイッチをまとめて表現したものであ
る。メインCPU101は、コントロールスイッチ群1
03の各種スイッチに対して行われた操作を検出し、検
出した操作内容に応じたモードや音色、テンポといった
各種パラメータ等の設定を行い、それらの設定内容を示
す情報をワークRAM(Random Access Memory)104
の所定の記憶領域上に格納する。
【0029】鍵盤装置105は、例えば鍵が押鍵された
ときの速さ、それが押されている圧力を検出するタッチ
レスポンス機能を備え、ユーザの操作内容に応じて発生
する検出信号を鍵盤情報生成装置106に出力する。鍵
盤情報生成装置106は、鍵盤装置105から入力した
検出信号を基に、操作された鍵を特定して、その鍵に割
り当てられた音高を示すノートナンバー、押鍵時の速さ
(ベロシティ)、押鍵されている圧力等の各種情報を、
鍵盤情報として出力する。
【0030】第1の実施の形態による電子楽器100
は、鍵盤装置105の他に、他の演奏操作子として、各
種ペダルや、ピッチベンダ等を備えている。これらは図
1において他の演奏操作子群107として表現してい
る。
【0031】メインCPU101は、鍵盤情報生成装置
106から入力した鍵盤情報、及び他の演奏操作子群1
07の各演奏操作子が操作された内容に応じて、発音命
令を生成し、これを楽音発生装置108に出力する。
【0032】楽音発生装置108は、例えばPCM音源
であり、メインCPU101から入力した制御コマンド
に従って音色や音響効果等の各種設定を行う。また、メ
インCPU101が出力した発音命令を入力すると、該
発音命令に従って特には図示しない波形メモリから波形
データを読み出し、該読み出した波形データに対して設
定に応じた処理を施した後、D/Aコンバータ109に
波形データ(波高値)を出力する。
【0033】D/Aコンバータ109は、楽音発生装置
108から入力した波形データをD/A変換して、アナ
ログの波形信号を出力する。D/Aコンバータ109が
出力した波形信号は、アンプ110により増幅された
後、スピーカ111に入力される。これにより、演奏者
が鍵盤装置105、他の演奏操作子群107に対して行
った操作に応じて、スピーカ111から楽音が発音され
る。
【0034】第1の実施の形態において、基準データR
AM112、及び被験データRAM113は、それぞれ
演奏データの格納に用いられる。第1の実施の形態で
は、演奏データはスタンダードMIDI(Musical Inst
rument Digital Interface)ファイル(以降、SMFと
記す)の形式で各RAM112、113に格納される。
これらのRAM112、113に格納される演奏データ
(MIDIデータ)は、シリアルインターフェイス11
4、ネットワークインターフェイス115、及び外部記
憶装置116から供給される。
【0035】周知のように、上記SMFは、ヘッダーブ
ロックとトラックブロックの2種類から構成される。ヘ
ッダーブロックは、SMFの先頭に置かれ、それに1つ
以上のトラックブロックが続く構成である。
【0036】ヘッダーブロックには、SMFに関する基
本的な情報がストアされ、トラックブロックには実際の
演奏データがストアされる。その演奏データは、基本的
にはMIDIデータに時間情報を付けたデータストリー
ムから構成される。時間情報は、前のイベントとのデル
タタイムで表現される。
【0037】上記シリアルインターフェイス114は、
特には図示しないMIDI端子を介して外部の装置との
MIDIデータの授受を行い、ネットワークインターフ
ェイス115は、ネットワークを介して外部の装置との
MIDIデータの授受を行う。外部記憶装置116は、
フロッピーディスク、CD−ROM、或いはメモリカー
ド等を記憶媒体として、それに対するアクセスを行うも
のである。メインCPU101は、コントロールスイッ
チ群103の所定のスイッチに対する操作に応じて、こ
れらネットワークインターフェイス115、外部記憶装
置116から出力される演奏データを基準データRAM
112、或いは被験データRAM113に格納させる。
なお、図中の手本データRAM120は、第3の実施の
形態における構成要素であり、それについての説明は第
3の実施の形態を説明するときに行う。
【0038】また、メインCPU101は、シリアルイ
ンターフェイス114、ネットワークインターフェイス
115、或いは外部記憶装置から供給された演奏デー
タ、基準データRAM112、或いは被験データRAM
113に格納されている演奏データから、発音命令を生
成し、それを楽音発生装置108に出力することによ
り、自動演奏を行う。
【0039】上記基準データRAM112には、演奏者
が手本とすべき演奏(基準演奏)の演奏データが格納さ
れ、他方の被験データRAM113には、演奏者が行っ
た演奏の演奏データが格納される。以降、基準データR
AM112に格納された演奏データを基準データ、被験
データRAM113に格納された演奏データを被験デー
タと記載する。
【0040】メインCPU101は、自動演奏を行う一
方、基準データと被験データを対比して、被験データで
表現(再生)される演奏内容を分析し、その分析結果を
表示装置117に表示させる。また、その分析結果に基
づき、演奏者の演奏内容の傾向を強調した形に被験デー
タを変更し、該変更した被験データを再生させる自動演
奏を行う。
【0041】基準データと被験データの対比は、詳細は
後述するが、基準データ、及び被験データのそれぞれか
ら分析に必要なデータをイベント毎にまとめて、ワーク
RAM104の異なるワークエリア上にそれぞれ別に格
納させた後、そのワークエリア上に格納させたそれぞれ
の分析用データを用いて、1イベント毎に、基準データ
と被験データの間の対応関係を検出することで行う。そ
の後、その対応関係に従ってイベント毎に、基準データ
と被験データの間の差分をパラメータ別に求め、そのパ
ラメータ別に求めた差分を用いて分析を行う。
【0042】図2は、1音符(ノートデータ)あたりの
分析用データの構造を示す図である。MIDIでは、音
符の発音開始とその終了をそれぞれ指定するようになっ
ている。このため、ノートオンイベントとノートオフイ
ベントのMIDIデータが1つのノートデータを構成す
る。そのノートデータは、最も出現頻度の高いイベント
データである。
【0043】図2において、ノートナンバー、ベロシテ
ィ、押鍵タイミング、離鍵タイミング、押鍵時間(音符
長)は、基準データから直接的に得られるデータ(1次
データ)である。シリアル番号は、そのイベントデータ
が発生した順序を示す番号であり、その先頭のノートデ
ータから逐次重複のない番号が与えられる。他方のタイ
ミング番号は、イベントデータが発生したタイミングに
対して付けた番号(順序)である。従って、例えばコー
ド(和音)を鳴らすために、演奏者が複数の演奏操作子
(鍵)を同時、或いはほぼ同時に操作した場合、それら
のノートデータには同じタイミング番号が与えられる。
これらシリアル番号、及びタイミング番号は、基準デー
タと被験データの各演奏データ中に含まれているノート
データの対応関係を特定するために用いられる。
【0044】ベロシティ差分、押鍵タイミング差分、離
鍵タイミング差分、音符長差分は、対応付けした基準デ
ータのノートデータと被験データのノートデータとを対
比することで得られるデータである。これらはワークR
AM104に格納させずに、必要に応じて求めるように
しても良い。制御用フラグは、基準データと被験データ
間でノートデータの対応関係を検出した結果として、こ
のノートデータを演奏内容の分析に用いるか否かを示す
データである。
【0045】メインCPU101は、図2に示すような
分析用データを1音符(ノートデータ)毎にまとめてワ
ークRAM104に所定の形式で格納する。分析用デー
タは、基準データ、及び被験データから、それぞれ作成
し、ワークエリアを変えてワークRAM104に格納す
る。その後、メインCPU101は、ワークRAM10
4に格納した1音符(ノートデータ)毎の分析用データ
を用いて各種の演算処理を行い、その演算結果を分析結
果として表示装置117に出力させる。第1の実施の形
態では、平均値、標準偏差、度数分布等をベロシティ、
押鍵タイミング等の各パラメータ毎に求め、それを分析
結果として表示させている。
【0046】なお、第1の実施の形態では、基準デー
タ、及び被験データはともに外部装置、或いは記憶媒体
から供給するようにしているが、鍵盤装置105に対し
て行われた操作内容を表現する演奏データを生成し、こ
の生成した演奏データを各RAM112、或いは113
に格納するようにしても良い。
【0047】以上が、図1に示す電子楽器100の構
成、及び概略動作である。次に、図3〜図18に示す動
作フローチャートを参照して、メインCPU101の動
作を詳細に説明する。最初に、メインCPU101が実
行する演奏分析処理について、図3に示すその動作フロ
ーチャートを参照して詳細に説明する。
【0048】この演奏分析処理は、ユーザ(演奏者)が
コントロールスイッチ群103の所定のスイッチを操作
し、演奏傾向の分析を指示した場合に、メインCPU1
01が、プログラムROM102に格納されている制御
プログラムを読み出してそれを実行することで実現され
る処理である。
【0049】先ず、ステップ301では、演奏データ取
得処理を実行する。上述したように、第1の実施の形態
では、ネットワークインターフェイス115、或いは外
部記憶装置116から基準データ、被験データの各演奏
データを取得するようにしている。上記演奏データ取得
処理は、例えばユーザがコントロールスイッチ群103
の所定のスイッチに対する操作に応じて、演奏データを
基準データRAM112、或いは被験データRAM11
3の一方に格納する処理である。取得した演奏データ
は、スタンダードMIDIファイルのデータ形式で各R
AM112、113に格納される。
【0050】ステップ301に続くステップ302で
は、所得した基準データ、被験データの各演奏データに
含まれているノートデータ数を取得するノート数取得処
理を実行する。ノートデータ数を取得すると、続くステ
ップ303において、各演奏データから1次データ(図
2参照)を取得する1次データ取得処理を実行する。こ
の1次データ取得処理が終了すると、ステップ304の
処理に移行する。
【0051】ステップ304では、基準データと被験デ
ータ間におけるノートデータの対応関係を求めるノート
マッチ処理を実行する。このノートマッチ処理の実行に
よって、基準データと被験データ間におけるノートデー
タの対応関係が確定される。図2に示す1音符(ノート
データ)あたりの分析用データとして、シリアル番号、
及びタイミング番号が各音符(ノートデータ)毎にワー
クRAM104に書き込まれる。
【0052】ステップ304に続くステップ305〜3
07では、確定したノートデータの対応関係から、演奏
者の演奏傾向を表現する数値を算出する処理を行う。先
ず、ステップ305では、基準データと被験データのノ
ートデータを対応させて、パラメータ毎にその差分を求
める差分取得処理を実行する。この差分取得処理を実行
することによって、図2に示す1音符(ノートデータ)
あたりの分析用データとして、ベロシティ差分、押鍵タ
イミング差分、離鍵タイミング差分、及び音符長差分が
各音符(ノートデータ)毎にワークRAM104に書き
込まれる。
【0053】ステップ305に続くステップ306で
は、そのステップ305の差分取得処理の実行によりノ
ートデータ(音符)毎に得た各パラメータの差分の平均
値を求める平均値取得処理を行う。これに続くステップ
306では、予め定められた設定に従って被験データ
(演奏曲)を区間分けし(例えば複数の小節を1区間と
する)、平均値所得処理を実行することによって得た各
パラメータの差分の平均値をそれぞれ基準として、各区
間毎の度数分布、標準偏差を各パラメータ毎に求める標
準偏差取得処理を実行する。この標準偏差取得処理の終
了により、演奏者の演奏傾向を表現する数値の算出が終
了する。
【0054】ステップ307に続くステップ308で
は、演奏者の演奏傾向の分析結果、即ちステップ307
で各パラメータ毎に求めた標準偏差、度数分布を出力す
る分析結果出力処理を実行する。この分析結果出力処理
を実行することにより、表示装置117の画面上に、演
奏曲を分割した各区間毎に各パラメータの標準偏差、及
び度数分布が出力される。度数分布の表示は、例えば各
パラメータの差分の最大値、及び最小値に応じて、差分
の大きさを複数の段階に分け、各段階毎にその段階に属
するノートデータ(音符)数を表示することで行う。
【0055】度数分布や標準偏差等は、標本値の分布の
特徴を表すのによく用いられる特性量である。基準デー
タと被験データを対応させ、ノートデータ毎に求めた各
パラメータの差分の分布を上記特性量で表現することに
より、演奏者は自身の演奏傾向を具体的に把握すること
ができるようになる。これにより、例えば、押鍵タイミ
ングが遅れがちであればそれを直すように、演奏上の悪
い傾向や欠点を矯正するように意識した練習を行えるこ
とから、高い練習効率を得ることができる。
【0056】第1の実施の形態では、演奏曲を区間分け
し、各区間毎に特性量を求めてそれを表示させている。
これには、演奏曲を構成する各メロディを演奏した際
に、どのような不具合が生じているかを演奏者が容易に
把握できるようにする意味も含まれている。これによ
り、演奏者は自身の演奏の分析をより細かく具体的に行
うことができる。
【0057】ステップ307に続くステップ309で
は、基準データに対し、ステップ305で得た各パラメ
ータの差分を強調させた変更を行い、その変更後の基準
データを再生させる差分強調再生処理を実行する。この
基準データの再生が終了した後、一連の処理を終了す
る。
【0058】各パラメータの差分を強調させて基準デー
タを再生することにより、演奏者に対して、自己の演奏
傾向を具体的に聴感として認識させることができる。こ
のため、演奏者は自己の演奏傾向を容易に把握すること
ができるようになり、楽器演奏の独習に大きく貢献する
ことができる。第1の実施の形態では、この差分を強調
させた基準データの再生の他に、ステップ308で分析
結果を表示させているため、演奏者の楽器の独習により
大きく貢献することができる。
【0059】次に、上記ステップ301〜306の各サ
ブルーチン処理について、図4〜図18を参照して詳細
に説明する。図4は、図3のステップ301として実行
される演奏データ取得処理の動作フローチャートであ
る。この図4を参照して、最初に演奏データ取得処理に
ついて詳細について説明する。
【0060】上述したように、この演奏データ取得処理
は、ネットワークインターフェイス115が受信した、
或いは外部記憶装置116が読み出した記憶媒体に記憶
されたSMF形式の演奏データを、コントロールスイッ
チ群103の所定のスイッチに対して行われた操作内容
に応じて基準データRAM112、或いは被験データR
AM113の一方に格納する処理である。
【0061】なお、SMFは、周知のように、データ
長、トラックブロック数、分解能等のファイルに関する
基本的な情報がストアされているヘッダーブロックと、
実際の演奏情報がストアされているトラックブロックの
2種類のブロックから構成されているファイルである。
SMFでは、MIDIイベントの時間情報は前のイベン
トからのデルタタイムで表される。トラックブロックに
ストアされている1イベントのMIDIデータは、基本
的に、上記時間情報と、その時間情報に従って管理され
るイベントデータとから構成されている。
【0062】先ず、ステップ401では、ネットワーク
インターフェイス115、或いは外部記憶装置116が
出力したヘッダーブロックを受け取り、対象となるSM
Fのファイルサイズを取得する。ファイルサイズを取得
すると、ステップ402の処理に移行する。
【0063】ステップ402では、取得したファイルサ
イズ分の格納領域をRAM112、或いは113に確保
する。格納領域の確保が終了すると、続くステップ40
3において、その確保した格納領域の先頭のポインタを
取得する。
【0064】ステップ403に続くステップ404で
は、確保した格納領域の先頭ポインタから、ネットワー
クインターフェイス115、或いは外部記憶装置116
が出力するSMF(演奏データ)を順次格納させる。こ
のSMFのロードが終了した後、ステップ405の処理
に移行する。
【0065】ステップ405では、データアクセス用の
オフセットポインタsmfcountをクリアする。ポ
インタsmfcountはメインCPU101内部のレ
ジスタ、或いはワークRAM104に保持される変数で
ある。このポインタsmfcountのクリアが終了す
ると、続くステップ406において、ステップ404で
ロードしたSMFのヘッダーブロックの情報(ヘッダー
ブロックにはその長さ(ヘッダー長)がストアされてい
る)を読み取り、演奏シーケンスデータ、即ちトラック
ブロックが始まる先頭のオフセットポインタ値、及び演
奏データ数を取得する。このオフセットポインタ値、及
び演奏データ数を取得した後、一連の処理を終了する。
【0066】このようにして、演奏者(ユーザ)の指定
に応じて演奏データが基準データRAM112、或いは
被験データRAM113に格納される。なお、第1の実
施の形態では、ネットワークインターフェイス115、
及び外部記憶装置116が出力した演奏データ(SM
F)をRAM112、113に格納させるようにしてい
るが、演奏データが供給される形態はこれらに限定する
ものではない。例えば鍵盤装置105に対して行われた
操作内容(イベント)をMIDIデータで表現し、それ
に時間情報を付加してRAM112、或いは113に格
納するようにしても良い。また、シリアルインターフェ
イス114が受信したMIDIデータに対しても、時間
情報を付けてSMFの形式でRAM112、113に格
納しても良い。
【0067】図5は、図3のステップ302として実行
されるノート数取得処理の動作フローチャートである。
次に、この図5を参照して、ノート数取得処理について
詳細に説明する。ノート数取得処理は、基準データ、及
び被験データの各演奏データに対して行われるが、ここ
では基準データに対して行うことを想定してその説明を
行う。これは、この図5のノート数取得処理内で実行さ
れる各種サブルーチン処理においても同様である。
【0068】このノート数取得処理では、時間情報を無
視して基準データRAM112に格納された基準データ
を先頭から再生し、各チャンネル毎にノートデータ(音
符)の数を計数することが行われる。
【0069】ステップ501〜504では、この一連の
処理を行ううえでの初期設定に関わる処理が行われる。
先ず、ステップ501では、ノートデータをカウントす
るモードであるカウントモードをセットする。続くステ
ップ502では、ノートデータの計数の対象とするトラ
ックのデータ数を変数tobereadにセットする。
これは、SMFのトラックブロックの先頭部分にストア
されているトラックデータ長を読み出し、それを変数t
obereadにセットすることにより実現される。
【0070】変数tobereadにトラックのデータ
数をセットした後は、次にステップ503において、オ
フセットポインタsmfcountに、図4のステップ
406で取得した処理対象(基準データ)のSMFのオ
フセットポインタ値をセットする。続くステップ504
では、各イベントデータの時間管理を行うための変数で
あるタイムクロックcurrtimeをクリアする。上
記変数toberead、タイムクロックcurrti
meは、メインCPU101内部のレジスタ、或いはワ
ークRAM104に保持される変数である。
【0071】ステップ504に続くステップ505で
は、処理対象のSMFからMIDIデータを読み出すS
MF処理を実行する。このSMF処理を実行することに
より、各チャンネル毎にノートデータ(音符)数が計数
される。このSMF処理が終了した後は、ステップ50
6の処理に移行する。
【0072】ステップ506では、ステップ505で取
得した各チャンネル毎のノートデータ(音符)数に対応
させて、ワークRAM104にワークエリアを確保す
る。ステップ506に続くステップ507では、各チャ
ンネル毎に確保したワークエリアの先頭ポインタを取得
する。その後、一連の処理を終了する。なお、ステップ
507の先頭ポインタの取得は、その先頭ポインタの値
を用意した変数にセットすることで実現される処理であ
る。
【0073】このノート数取得処理を実行することで、
図2に示す分析用データが格納される領域が、各チャン
ネル毎に得たノートデータ数に応じてワークRAM10
4に用意される。
【0074】次に、上記ステップ505のSMF処理に
ついて、図6に示すその動作フローチャートを参照して
説明する。SMFのトラックブロックには、イベントデ
ータは時間情報と対になってストアされている。時間情
報は、例えば2バイトである。他方のイベントデータ
は、ステータスバイトとデータバイトからなり、データ
バイト数はステータスバイトの種類によって変化する。
例えば、ステータスバイトがノートオンではデータバイ
ト数は2、プログラムチェンジではデータバイト数は1
である。このSMF処理では、ステータスバイトが定義
するチャンネルメッセージの種類を判別しながら、トラ
ックブロックを構成する各MIDIデータの読み出しを
行う。
【0075】先ず、ステップ601では、イニシャライ
ズを行う。このイニシャライズを行うことにより、変数
running、及びstatusにはそれぞれ0がセ
ットされる。これらの変数は、メインCPU101内部
のレジスタ、或いはワークRAM104に格納される変
数である。
【0076】ステップ601に続くステップ602〜6
18では、基準データRAM112に格納された処理対
象のトラックのデータ(バイト)数がセットされている
変数tobereadを、そのトラックから読み出した
データ(バイト)数に応じて減算しながら、それらの処
理が繰り返し行われる。
【0077】ステップ602では、変数toberea
dの値が0よりも大きいか否か判定する。処理するトラ
ックから全てのデータを読み出した場合、その判定はN
Oとなって、ここで一連の処理が終了する。そうでない
場合には、その判定はYESとなってステップ603の
処理に移行する。そのステップ603では、トラックか
ら時間情報を読み出して取得する。時間情報は、2バイ
トである。このため、このステップ603では、時間情
報を取得するとともに、時間情報のバイト数を変数to
bereadから減算する。ステップ603の処理が終
了すると、ステップ604の処理に移行する。
【0078】ステップ604では、現在カウントモード
或いはパラメータ取得モードが設定されているか否か判
定する。カウントモードは、演奏データ中のノートデー
タ数をカウントするモードであり、一方のパラメータ取
得処理は、図2の1次データを取得するモードである。
これらのうちの一方のモードが設定されていた場合、そ
の判定はYESとなってステップ605の処理に移行す
る。そうでない場合には、即ち自動演奏を行うプレイモ
ードが設定されていた場合には、その判定はNOとなっ
てステップ606の処理に移行する。
【0079】ステップ605では、現在までの累積時間
がセットされる変数currtimeに取得時間を加算
し、その後、ステップ607の処理に移行する。他方の
ステップ606では、取得時間の待機を行う。その後、
ステップ607の処理に移行する。
【0080】ステップ607では、時間情報に続く次の
1バイトをSMFから読み出し、それを変数cに代入す
る。SMFでは、時間情報の次はステータスバイトであ
る。従って、ステップ607の処理を実行することによ
り、変数cにはステータスバイトが代入される。周知の
ように、このステータスバイトは1バイトである。この
ため、ステップ607では、変数tobereadのデ
クリメントを合わせて行う。
【0081】ステップ607に続くステップ608で
は、変数cに代入されたデータがチャンネルメッセージ
のステータスバイトか否か判定する。チャンネルメッセ
ージは、ステータスバイトの下位4ビットにMIDIチ
ャンネルを持ったメッセージである。その最上位ビット
は、ステータスバイトを示す1であり、それに続く3ビ
ットは、ノートオン、ノートオフ、プログラムチェンジ
等のチャンネルメッセージの種類を示す情報である。そ
の変数cに代入されたデータがチャンネルメッセージで
あった場合、ステップ608の判定はYESとなってス
テップ609の処理に移行する。そうでない場合には、
その判定はNOとなってステップ610の処理に移行す
る。ステップ609では、変数statusに変数cの
値を代入し、変数runningには0をセットし、そ
の後、ステップ612の処理に移行する。
【0082】MIDIは、片方向送信であることから、
スレーブ側が正しくメッセージを受信しているか否かを
マスター側がチェックする方法が存在しない。そのた
め、MIDIには、接触不良や断線等の何らかの理由に
よりMIDIメッセージを受信できず、音が鳴りっぱな
しになるといったトラブルを避けるために、アクティブ
センシングという機能が用意されている。このアクティ
ブセンシング機能は、300ms以内にメッセージがな
にも受信できなかった場合、発音中の音を自動的に止め
る機能である。このアクティブセンシング機能に対応し
て、マスター側は、300ms以上データ間隔が空かな
いように、送るべきメッセージがない場合、ダミーとし
てアクティブセンシング“FEH”(Hは16進数を表
す)を送出しなければならない。このアクティブセンシ
ングが変数cに代入されていた場合、ステップ608の
判定はNOとなり、ステップ610の処理に移行するこ
とになる。
【0083】ステップ610では、変数statusの
値が0か否か判定する。この変数statusには、変
数cのデータがチャンネルメッセージであればステップ
609で変数cのデータが代入されることから、変数c
にアクティブセンシングが代入されていた場合、変数s
tatusには何らかの値(チャンネルメッセージ)が
セットされているはずである。このため、変数stat
usの値が0であった場合、即ちアクティブセンシング
の前に有効となっているチャンネルメッセージがない場
合、その判定はYESとなり、データ異常として一連の
処理を終了する。そうでない場合には、その判定はNO
となってステップ611の処理に移行する。そのステッ
プ611では、変数runningに1をセットし、そ
の後、ステップ612の処理に移行する。変数runn
ingにセットした1は、現在の状態をそのまま維持す
る(発音中の音はそのまま鳴らしているように)ことを
示す値である。
【0084】ステップ612では、変数cに代入されて
いるデータを解析して、それに続くバイト数neede
dを得る。このバイト数neededは、上述したよう
に、例えば変数cに代入されているデータがノートオン
のチャンネルメッセージであれば2、そのデータはプロ
グラムチェンジのチャンネルメッセージであれば1であ
る。ステップ612に続くステップ613では、バイト
数neededの値が0ではないか否か判定する。バイ
ト数neededの値が0であった場合、その判定はN
Oとなってステップ614の処理に移行する。そうでな
い場合には、その判定はYESとなってステップ615
の処理に移行する。ステップ614の処理に移行するの
は、例えば変数cにアクティブセンシング(リアルタイ
ム・メッセージ)が代入されていた場合であり、このス
テップ614では、その変数cに代入されているメッセ
ージに応じたその他の処理を実行する。その処理が終了
した後、ステップ602の処理に戻る。
【0085】一方、ステップ615では、変数runn
ingの値が0ではないか否か判定する。変数runn
ingの値が0であった場合、即ち例えば変数cにアク
ティブセンシングが代入されていた場合、その判定はY
ESとなってステップ616の処理に移行する。そうで
ない場合には、例えば変数cにチャンネルメッセージが
代入されていた場合には、その判定はNOとなってステ
ップ617の処理に移行する。
【0086】ステップ616では、変数c1に変数cの
値を代入し、その後、ステップ618の処理に移行す
る。他方のステップ617では、ステップ612で得た
バイト数neededに従って、その数のバイトをSM
Fから読み出し、読み出したそれらのバイトを変数に代
入する。このとき、バイト数neededが1であれ
ば、SMFから読み出した1バイトのデータを変数c1
に代入する。バイト数neededが2であれば、SM
Fからさらに読み出した1バイトのデータ(2バイト目
のデータ)を変数c2に代入する。このステップ617
では、バイト数neededのデータをSMFから読み
出すので、変数tobereadからバイト数need
edを減算する。これらが終了した後、ステップ618
の処理に移行する。
【0087】ステップ618では、チャンネルメッセー
ジ処理を実行する。このチャンネルメッセージ処理に
は、このSMF処理から変数c、変数c1、及び変数c
2の値が引数として渡され、これら渡された各引数の
値、及び現在設定されているモードに応じた内容でチャ
ンネルメッセージ処理は実行される。このチャンネルメ
ッセージ処理が終了した後、ステップ602の処理に戻
る。
【0088】次に、上述したステップ618のチャンネ
ルメッセージ処理について、図7に示すその動作フロー
チャートを参照して詳細に説明する。上述したように、
このチャンネルメッセージ処理には、SMF処理から変
数c、c1、及びc2の各値が引数と渡される。このチ
ャンネルメッセージ処理内において、これらSMF処理
から引数として渡された各変数は、チャンネルメッセー
ジ処理内において、変数cは変数status、変数c
1は変数c1、変数c2は変数c2として用いらる。
【0089】先ず、ステップ701では、変数chan
に変数statusの下位4ビットを代入する。これに
より、変数chanには、チャンネルメッセージのMI
DIチャンネルが代入されることになる。この代入が終
了すると、ステップ702の処理に移行する。
【0090】ステップ702では、現在カウントモード
が設定されているか否か判定する。カウントモードは、
チャンネルメッセージに応じた発音を行わなくてもよい
モードである。そのカウントモードが設定されていた場
合、その判定はYESとなってステップ703の処理に
移行する。
【0091】ステップ703では、変数cに代入されて
いるチャンネルメッセージの種類がノートオンであるか
否か判定する。ノートオンのチャンネルメッセージが変
数cに代入されていた場合、その判定はYESとなって
ステップ704の処理に移行する。そうでない場合に
は、その判定はNOとなり、一連の処理を終了する。
【0092】ステップ704では、変数c2に代入され
ている値が0ではないか否か判定する。変数cにノート
オンのチャンネルメッセージが代入されていた場合、変
数c1にはノートナンバー、変数c2にはベロシティが
代入されている。このベロシティは、鍵を弾いたときの
速さを示すパラメータである。それは、1〜127段階
の精度を持つが、その値が0のときにはノートオフを意
味する。このため、ベロシティの値が0であった場合、
その判定はNOとなって一連の処理を終了する。そうで
ない場合には、その判定はYESとなってステップ70
5の処理に移行する。
【0093】ステップ705では、変数c1に代入され
ているノートナンバーで発音を行うノートオンコード処
理を実行する。このノートオンコード処理では、現在設
定されているモードに応じてその内部の処理が行われ
る。そのノートオンコード処理を終了した後、一連の処
理を終了する。なお、このステップ705は、カウント
モードが設定されていた場合に実行される。このため、
ステップ705でノートオンコード処理を実行しても、
実際の発音は行われない。
【0094】現在カウントモードが設定されていない場
合、ステップ702の判定がNOとなり、ステップ70
6の処理に移行する。ステップ706〜720では、変
数cに代入されたチャンネルメッセージの種類に応じた
処理が行われる。
【0095】先ず、ステップ706では、そのチャンネ
ルメッセージの種類がノートオフか否か判定する。変数
cにノートオフのチャンネルメッセージが代入されてい
た場合、その判定はYESとなってステップ707の処
理に移行する。そうでない場合には、その判定はNOと
なってステップ708の処理に移行する。
【0096】ノートオフのチャンネルメッセージが変数
cに代入されている場合、変数c1にはノートナンバー
が代入されている。ステップ707では、変数c1に代
入されているノートナンバーの音を消音させるノートオ
フコード処理を実行する。その後、一連の処理を終了す
る。
【0097】ステップ708では、そのチャンネルメッ
セージの種類がノートオンか否か判定する。変数cにノ
ートオンのチャンネルメッセージが代入されていた場
合、その判定はYESとなってステップ709の処理に
移行する。そうでない場合には、その判定はNOとなっ
てステップ711の処理に移行する。
【0098】ステップ709では、変数c2に代入され
ている値、即ちベロシティの値が0ではないか否か判定
する。ベロシティの値が0の場合、その判定はNOとな
り、上述したステップ707のノートオフコード処理を
実行する。ベロシティの値が0ではない場合、その判定
はYESとなり、ステップ710のノートオンコード処
理を実行する。ノートオンコード処理の終了後、一連の
処理を終了する。
【0099】ステップ711では、そのチャンネルメッ
セージの種類がキープレッシャか否か判定する。変数c
にキープレッシャのチャンネルメッセージが代入されて
いた場合、その判定はYESとなってステップ712の
処理に移行する。そうでない場合には、その判定はNO
となってステップ713の処理に移行する。
【0100】変数cにキープレッシャのチャンネルメッ
セージが代入されていた場合、変数c1にはノートナン
バー、変数c2にはプレッシャ値が代入されている。ス
テップ712では、変数c1に代入されているノートナ
ンバーのキープレッシャに、変数c2に代入されている
プレッシャ値を設定する。これにより、そのノートナン
バーは、キープレッシャに応じた音量で発音される。キ
ープレッシャを設定した後に、一連の処理が終了する。
【0101】ステップ713では、そのチャンネルメッ
セージの種類がコントロールチェンジか否か判定する。
変数cにコントロールチェンジのチャンネルメッセージ
が代入されていた場合、その判定はYESとなってステ
ップ714の処理に移行する。そうでない場合には、そ
の判定はNOとなってステップ715の処理に移行す
る。
【0102】コントロールチェンジは、使用頻度の高い
演奏情報であり、主に演奏におけるエフェクト機能の制
御に用いられる。変数cにコントロールチェンジのチャ
ンネルメッセージが代入されていた場合、変数c1には
コントロールナンバー、変数c2にはその値が代入され
ている。コントロールナンバーとして、例えばモジュレ
ーションデプスには1、エクスプレッションには11、
トレモロデプスには92が設定されている。ステップ7
14では、変数c1に代入されているコントロールナン
バーが示す種類のパラメータに、変数c2に代入されて
いる値を設定する処理を行う。その後、一連の処理を終
了する。
【0103】ステップ715では、チャンネルメッセー
ジの種類がプログラムチェンジか否か判定する。変数c
にプログラムチェンジのチャンネルメッセージが代入さ
れていた場合、その判定はYESとなってステップ71
6の処理に移行する。そうでない場合には、その判定は
NOとなってステップ717の処理に移行する。
【0104】プログラムチェンジは、音色の切り替えを
指示するコマンドである。そのプログラムチェンジのチ
ャンネルメッセージが変数cに代入されていた場合、変
数c1にはプログラムナンバーが代入されている。プロ
グラムナンバーとして、例えばアコスティックピアノに
は1、フルートには5が設定されている。ステップ71
6では、変数c1に代入されているプログラムナンバー
に従って音色の設定を行う。その後、一連の処理を終了
する。
【0105】ステップ717では、チャンネルメッセー
ジの種類がチャンネルプレッシャか否か判定する。変数
cにチャンネルプレッシャのチャンネルメッセージが代
入されていた場合、その判定はYESとなってステップ
718に移行する。そうでない場合には、その判定はN
Oとなってステップ719に移行する。
【0106】チャンネルプレッシャは、1つのチャンネ
ルで1つのアフタータッチ情報を共有して使用するため
のコマンドである。そのチャンネルプレッシャのチャン
ネルメッセージが変数cに代入されていた場合、変数c
1にはプレッシャ値が代入されている。ステップ718
では、変数c1に代入されているプレッシャ値に従っ
て、変数chanに代入されているチャンネルのプレッ
シャを設定する。それが終了した後、一連の処理を終了
する。
【0107】ステップ719では、チャンネルメッセー
ジの種類がピッチホイールチェンジか否か判定する。変
数cにピッチホイールチェンジのチャンネルメッセージ
が代入されていた場合、その判定はYESとなってステ
ップ720に移行する。そうでない場合には、その判定
はNOとなって一連の処理を終了する。
【0108】ピッチホイールチェンジは、音の音程をシ
フトさせるためのコマンドである。そのピッチホイール
チェンジのチャンネルメッセージが変数cに代入されて
いた場合、変数c1及びc2にシフト量が代入されてい
る。ステップ720では、変数c1及びc2に代入され
ているシフト量に従って、変数chanに代入されてい
るチャンネルのピッチベンドを設定する。それが終了し
た後、一連の処理を終了する。
【0109】次に、上述したチャンネルメッセージ処理
内で実行されるステップ705(及び710)のノート
オンコード処理、ステップ707のノートオフコード処
理について、図8、図9の動作フローチャートを参照し
て詳細に説明する。
【0110】最初に、図8を参照して、ステップ705
(及び710)として実行されるノートオンコード処理
について説明する。このノートオンコード処理には、チ
ャンネルメッセージ処理から、変数chan、変数c
1、及び変数c2が引数として渡される。
【0111】先ず、ステップ801では、ワークRAM
104にアクセスするためのワーク用ポインタをセット
する。ワーク用ポインタは、ワークRAM104に、図
2に示す分析用データを1音符毎にまとめてワークRA
M104のワークエリア上に格納するために用いられる
ものであり、随時更新される。その初期値は、図5のス
テップ507で取得される。このステップ801では、
変数chanが示すチャンネルにおいて、音符の分析用
データを次に書き込むべきポインタをワーク用ポインタ
にセットする。ワーク用ポインタのセットが終了する
と、ステップ802の処理に移行する。
【0112】ステップ802では、現在カウントモード
が設定されているか否か判定する。現在カウントモード
が設定されている場合、その判定はYESとなってステ
ップ803の処理に移行する。そうでない場合には、そ
の判定はNOとなってステップ804の処理に移行す
る。
【0113】ステップ803では、変数chanのチャ
ンネルに存在する音符数を計数する音符数計数処理を行
う。チャンネルメッセージ処理は、図6に示すSMF処
理において、SMFから1MIDIデータを読み出す毎
に実行される。このため、音符数計数処理では、それま
でのカウント値のインクリメントを行う。それが終了し
た後、一連の処理を終了する。
【0114】ステップ804では、現在パラメータ取得
モードが設定されているか否か判定する。上述したよう
に、パラメータ取得モードは、図2に示す分析用データ
の中の1次データを取得する(ワークRAM104に格
納する)ためのモードである。そのパラメータ取得モー
ドが設定されている場合、その判定はYESとなってス
テップ805の処理に移行する。そうでない場合には
(この場合はプレイモードが設定されている)、その判
定はNOとなってステップ814の処理に移行する。
【0115】ステップ805〜812では、上記1次デ
ータを取得するための処理が行われる。先ず、ステップ
805では、ワーク用ポインタを別のポインタにセット
する。この別のポインタは、現在処理しているノートデ
ータ(音符)とその前のノートデータ(音符)の押鍵タ
イミングの差分を取得するために用いられる。以降、ノ
ートオンコード処理の説明において、この別のポインタ
はついては単にポインタと呼ぶことにする。
【0116】ステップ805に続くステップ806〜8
08では、ワーク用ポインタが示すワークRAM104
のワークエリア上に、ノートナンバー(キーコード)、
ベロシティ、押鍵タイミングを格納する処理を行う。ノ
ートナンバーは変数c1、ベロシティは変数c2、押鍵
タイミングは図6のSMF処理内のステップ605で更
新された変数currtimeから取得する。
【0117】ステップ808に続くステップ809〜8
13では、上記押鍵タイミングの差分を取得するための
処理が行われる。先ず、ステップ809では、現在の処
理対象が最初のノートオンイベントのものであるか否か
判定する。図6のSMF処理内のステップ607で読み
出したステータスバイトが最初のノートオンのチャンネ
ルメッセージであった場合、即ち最初の音符であった場
合、その判定はYESとなってステップ813の処理に
移行する。そうでない場合には、その判定はNOとなっ
てステップ810の処理に移行する。
【0118】ステップ810では、ステップ805でセ
ットしたポインタをデクリメントして、前音符のワーク
エリア上のポインタを取得する。続くステップ811で
は、現在の押鍵タイミング(時間)からそのポインタが
示す分析用データ中の押鍵タイミング(時間)を減算
し、押鍵タイミングが前後する2音符間の押鍵タイミン
グ(時間)の差分(図中ではノートオンイベント間タイ
ムクロック)を取得する。その後、ステップ812にお
いて、ワーク用ポインタを更新(インクリメント)し、
その更新が終了した後、一連の処理を終了する。
【0119】なお、SMFでは、時間情報は分解能(1
秒間当たりの演奏用のクロック数)を基準とした時間で
表現される。このため、押鍵タイミング、押鍵タイミン
グの差分においても、それらはクロック数で表現され
る。
【0120】一方、ステップ813では、現在の処理対
象が最初の音符であることから、押鍵タイミングの差分
(ノートオンイベント間タイムクロック)として、図6
のSMF処理内のステップ605で取得した累積時間
(変数currtimeに代入される)を取得する。そ
の後、ステップ812の処理に移行する。
【0121】現在プレイモードが設定されている場合、
ステップ804の判定がNOとなり、次にステップ81
4の処理が実行される。このプレイモードは、図2に示
す分析用データが基準データ、及び被験データのそれぞ
れにおいて全て確定した後に設定される。ステップ81
4、及び815の処理は、その確定した後の分析用デー
タを用いて行われる。
【0122】ステップ814では、ワーク用ポインタが
示すワークエリア上のベロシティ、及びその差分を読み
出し、この読み出した差分に強調係数を掛けた値と、ベ
ロシティからその差分を減算した値とを加算し、その加
算結果を新たなベロシティとして設定する。
【0123】続くステップ815では、上記ステップ8
15で得られた新しいベロシティ値を用いて発音処理を
行う。この発音処理は、メインCPU101が、変数c
han(チャンネル)、変数c1(ノートナンバー)、
及びステップ815で得た新しいベロシティから発音命
令を生成し、その生成した発音命令を楽音発生装置(音
源)に出力することで実現される。
【0124】これにより、演奏者が行った演奏操作の傾
向が強調された自動演奏が行われる。この自動演奏によ
り、演奏者は、自身の演奏内容の傾向を聴感から認識す
ることができる。
【0125】なお、第1の実施の形態では、楽音発生装
置108に発音命令を出力して、演奏者の演奏操作の傾
向を強調させた自動演奏を行っているが、ステップ81
4で変更した演奏データ(MIDIデータ)を、シリア
ルインターフェイス114等を用いて外部装置に送出す
るようにしても良い。また、その演奏データを外部記憶
装置116に出力して、記憶媒体に記憶させても良い。
また、基準データの変更を、差分を強調させずに行って
もよい。このようにしても、演奏者に、効果は多少低減
するが、自身の演奏内容の傾向を聴感から認識させるこ
とができる。
【0126】また、第1の実施の形態では、基準データ
において変更するパラメータをベロシティとしている
が、例えば押鍵タイミングのような他のパラメータとし
ても良い。また、複数のパラメータであっても良い。更
には、基準データのパラメータを、演奏者が指定できる
ようにしても良い。
【0127】図9は、図7に示すチャンネルメッセージ
処理内でステップ707として実行されるノートオフコ
ード処理の動作フローチャートである。次に、この図9
を参照して、ノートオフコード処理について詳細に説明
する。このノートオフコード処理には、チャンネルメッ
セージ処理から、変数chan、変数c1、及び変数c
2が引数として渡される。
【0128】先ず、ステップ901では、ワークRAM
104のワークエリアにアクセスするためのポインタを
取得する。このポインタには、図8のノートオンコード
処理内のステップ812で更新されたワーク用ポインタ
の値がセットされる。
【0129】ステップ901に続くステップ902で
は、現在カウントモードが設定されているか否か判定す
る。現在カウントモードが設定されている場合、その判
定はYESとなって一連の処理を終了する。そうでない
場合には、その判定はNOとなってステップ903の処
理に移行する。
【0130】ステップ903では、現在パラメータ取得
モードが設定されているか否か判定する。パラメータ取
得モードが設定されている場合、その判定はYESとな
ってステップ904の処理に移行する。そうでない場合
には、その判定はNOとなってステップ909の処理に
移行する。
【0131】ステップ904〜908は、図2に示す分
析用データ中の押鍵時間(音符長)を取得するための処
理が行われる。先ず、ステップ904では、前音符のワ
ークエリア上のポインタを取得する。これは、ステップ
901で取得したポインタの値をデクリメントすること
で行われる。これが終了した後、ステップ905の処理
に移行する。
【0132】ステップ905では、ポインタが示す前音
符のノートナンバー(キーコード)が、ノートオフが命
令されたノートナンバー(キーコード)と等しいか否か
判定する。それらのノートナンバー(キーコード)が等
しい場合、その判定はYESとなってステップ907の
処理に移行する。そうでない場合には、ステップ906
の処理に移行する。
【0133】ステップ906では、さらに一つ前の音符
のワークエリア上のポインタを取得する。これは、ポイ
ンタをデクリメントすることにより実現される。ポイン
タをデクリメントした後、ステップ905の処理に戻
る。
【0134】ステップ905でそれらのノートデータ
(キーデータ)が等しい、即ちYESと判定するまで、
ステップ905、906の処理を繰り返し行うことによ
り、ワークRAM104のワークエリア上のノートオフ
させる音符の分析用データが格納されているポインタが
探し出される。
【0135】ステップ905の判定がYESとなること
で実行されるステップ907では、タイムクロック数で
表現される現在の時刻を取得する。現在の時刻は、変数
currtimeに格納されており、その変数の値が、
現在のポインタが示すワークエリア上に離鍵タイミング
として格納される。続くステップ908では、ステップ
907で取得した現在時刻から、現在のポインタが示す
ワークエリア上に格納されている押鍵タイミングを減算
し、押鍵時間、即ち音符長を取得する。この取得した音
符長は、現在のポインタが示すワークエリア上に格納さ
れる。それが終了した後、一連の処理を終了する。
【0136】このように、パラメータ取得処理を設定し
て、ノートオンコード処理、ノートオフコード処理を実
行することにより、図2に示す1音符当たりの分析用デ
ータ中の1次データが、ワークRAM104のワークエ
リア上にチャンネル毎に分けて格納される。
【0137】次に、図3の全体処理内でステップ303
として実行される1次データ取得処理について、図10
に示すその動作フローチャートを参照して詳細に説明す
る。この1次データ取得処理は、図2に示す分析用デー
タ中の1次データを取得する処理であり、その1次デー
タの取得は、パラメータ取得モードを設定し、SMF処
理を実行することで実現される。この1次データ取得処
理も、基準データ、及び被験データのそれぞれに対して
行われる。
【0138】ステップ1001〜1004では、各種の
初期設定が行われる。先ず、ステップ1001では、パ
ラメータ取得モードをセットする。続くステップ100
2では、処理するトラックのデータ数を変数tober
eadにセットする。処理するトラックのデータ数は、
図4の演奏データ取得処理内のステップ406を実行す
ることで得られたものである。
【0139】ステップ1002に続くステップ1003
では、変数であるオフセットポインタsmfcount
のセットを行う。このセットは、図4の演奏データ取得
処理内のステップ406を実行することで得られたオフ
セットポインタ値を、オフセットポインタsmfcou
ntにセットすることで行われる。ステップ1003の
処理が終了した後に実行されるステップ1004では、
演奏が開始してから経過した時間である累積時間がセッ
トされるタイムクロック(変数)currtimeをク
リアする。
【0140】ステップ1004に続くステップ1005
では、上述したSMF処理を実行する。その後、一連の
処理を終了する。上記SMF処理は、チャンネルメッセ
ージ処理を呼び出し、そのチャンネルメッセージ処理
は、上述したノートオンコード処理、ノートオフコード
処理を呼び出す。ステップ1001ではパラメータ取得
モードがセットされているので、ノートオンコード処
理、ノートオフコード処理は、そのパラメータ取得モー
ドに応じた内容で行われる。このため、図2の分析用デ
ータ中の1次データがワークRAM104のワークエリ
ア上に格納されることになる。
【0141】なお、図3のステップ309として実行さ
れる差分強調再生処理は、上述した1次データ取得処理
とほぼ同じであり、ステップ1001でパラメータ取得
モードの換わりにプレイモードを設定するところだけが
異なっている。第1の実施の形態では、図8のノートオ
ンコード処理から判るように、基準データにおいて変更
するパラメータ(これが、被験データの演奏内容を反映
させるパラメータである)を固定にしている。例えば、
演奏者が所望するパラメータを指定できるようにした場
合には、差分強調再生処理からその指定されたパラメー
タをノートオンコード処理に渡すようにし、また、ノー
トオンコード処理に、各種パラメータの変更を行える機
能を追加すれば良い。
【0142】次に、図3の全体処理内でステップ304
として実行されるノートマッチ処理について、図11に
示すその動作フローチャートを参照して詳細に説明す
る。このノートマッチ処理は、基準データRAM112
にSMFの形式で格納されている基準データ中のノート
データ(音符)と、被験データRAM113にSMFの
形式で格納されている被験データ中のノートデータ(音
符)の対応関係を検出する処理である。ワークRAM1
04には、基準データと被験データの各分析用データが
異なるワークエリアに格納されている。ノートマッチ処
理は、これら各分析用データを対象にして実行される。
【0143】先ずステップ1101では、基準演奏の同
タイミング押鍵検出処理を実行する。これは、ワークR
AM104のワークエリアに格納されている基準データ
の分析用データを用いて行われる。この同タイミング押
鍵検出処理を実行することで、図2の分析用データとし
て、シリアル番号、及びタイミング番号が新たにワーク
RAM104のワークエリア上に格納される。
【0144】ステップ1101に続くステップ1102
では、押鍵タイミングによるノートマッチ処理を行う。
このノートマッチ処理は、基準データと被験データの各
ノートデータを、そのイベントが発生したタイミング、
即ち押鍵タイミングに着目して対応関係を検出する処理
である。
【0145】ステップ1102に続くステップ1103
では、上記ステップ1102の押鍵タイミングによるノ
ートマッチ処理を実行することで得た基準データと被験
データ間におけるノートデータの対応関係を補正するノ
ートマッチ補正処理を実行する。その補正は、ノートデ
ータのノートナンバーに着目して行う。このノートマッ
チ補正処理を終了した後、一連の処理を終了する。
【0146】上記ステップ1101〜1103は、全て
サブルーチン処理として実行される。次に、ステップ1
101〜1103の各サブルーチン処理について詳細に
説明する。
【0147】最初に、ステップ1101として実行され
る基準演奏の同タイミング押鍵検出処理について、図1
2に示すその動作フローチャートを参照して詳細に説明
する。この同タイミング押鍵検出処理は、上述したよう
に、ワークRAM104のワークエリア上に、音符(ノ
ートデータ)毎にまとめて格納された基準データの分析
用データを対象にし、ノートデータの押鍵タイミングに
着目して行われる。
【0148】ステップ1201〜1203では、各種変
数に対する初期設定が行われる。先ず、ステップ120
1では、同一タイミングとすべきノートデータを特定す
るために用いられるカレントタイミングptr_tim
ingに0をセットする。続くステップ1202では、
図5に示すノート数取得処理内のステップ507の処理
を実行することにより得たワークエリアの先頭ポインタ
をワークポインタptr_m0にセットする。その後、
ステップ1203において、カウンタmに0をセットす
る。このカウンタmは、ノートデータにシリアル番号を
付けるために、ポインタptr_m0と対応させて用い
られる。
【0149】ステップ1203に続くステップ1204
〜1210は、カウンタmとポインタptr_m0をイ
ンクリメントしながら、ワークRAM104のワークエ
リア上に分析用データが格納されているノートデータ
に、シリアル番号、タイミング番号を付けるための処理
が行われる。
【0150】先ず、ステップ1204では、カウントm
の値が総ノート数よりも小さいか否か判定する。上記総
ノート数は、図5に示すノート数取得処理内でステップ
505のSMF処理を実行することにより得た値であ
る。ワークエリア上の全てのノートデータに対してシリ
アル番号、及びタイミング番号を付けた場合、その判定
はNOとなって一連の処理を終了する。そうでない場合
には、その判定はYESとなってステップ1205の処
理に移行する。
【0151】ステップ1205では、ポインタptr_
m0により示される音符(ノートデータ)のシリアル番
号に、カウンタmの値をセットする。このシリアル番号
のセットは、メインCPU101が、ワークRAM10
4のワークエリア上のポインタptr_m0が示す記憶
領域に、カウンタmの値をシリアル番号として格納する
ことで実現される。
【0152】ステップ1205に続くステップ1206
では、前音符と現在の音符の間の発音開始時間の差、即
ちノートオンイベント間の時間が所定時間以下か否か判
定する。例えば演奏者が和音を弾いたときのように、そ
のノートオンイベント間の時間が所定時間以下であった
場合、その判定はYESとなってステップ1207の処
理に移行する。そうでない場合には、その判定はNOと
なってステップ1209の処理に移行する。
【0153】ステップ1207では、ポインタptr_
m0により示される音符(ノートデータ)のタイミング
番号に、カレントタイミングptr_timingの値
をセットする。後述するように、カレントタイミングp
tr_timingの値は、ノートオンイベント間の時
間が所定時間よりも大きかった場合にのみ更新される。
このため、ノートオンイベント間の時間が所定時間以下
に近接している音符(ノートデータ)には、全て同じ値
のタイミング番号が付けられることになる。そのタイミ
ング番号のセットは、メインCPU101が、ワークR
AM104のワークエリア上のポインタptr_m0が
示す記憶領域に、カレントタイミングptr_timi
ngの値をタイミング番号として格納することで実現さ
れる。
【0154】ステップ1207に続くステップ1208
では、カウンタmとポインタptr_m0をインクリメ
ントする。それらのインクリメントが終了した後、ステ
ップ1204の処理に戻る。
【0155】一方、ステップ1209では、カレントタ
イミングptr_timingにカウンタmの値をセッ
トして、その更新を行う。それに続くステップ1210
では、ポインタptr_m0により示される音符(ノー
トデータ)のタイミング番号に、カウンタmの値をセッ
トする。その後、上述のステップ1208の処理に移行
する。
【0156】この基準演奏の同タイミングの押鍵検出処
理を実行することにより、各ノートデータには、そのイ
ベントが発生した順番を示す値がシリアル番号として付
けられる。また、タイミング番号には、そのイベントの
発生が同一のタイミングであるとしたノートデータのな
かで、最初にイベントが発生したノートデータのシリア
ル番号が付けられる。同一のタイミングとするノートデ
ータが一つであれば、タイミング番号にはシリアル番号
と同じ値が付けられる。
【0157】図13は、図11のステップ1102とし
て実行される押鍵タイミングによるノートマッチ処理の
動作フローチャートであり、図14は、その図13のス
テップ1301として実行される処理の詳細を示す図
(動作フローチャート)である。次に、図13、及び図
14を参照して、押鍵タイミングによるノートマッチ処
理について詳細に説明する。この押鍵タイミングによる
ノートマッチ処理は、ワークRAM104の異なるワー
クエリア上に格納された基準データと被験データの分析
用データを対象として実行される。
【0158】先ず、ステップ1301では、ワークRA
M104のワークエリア上に、1音符(ノートデータ)
毎にまとめて格納された基準データの分析用データにア
クセスするためのイニシャライズ処理を行う。図14を
参照して、その詳細を説明する。
【0159】ステップ1401〜1404では、各種変
数に対する初期設定が行われる。先ず、ステップ140
1では、図5に示すノート数取得処理内のステップ50
7の処理を実行することにより得たワークエリアの先頭
ポインタをポインタptr_m1にセットする。続くス
テップ1402では、その先頭ポインタの次のノートデ
ータのポインタ値をポインタptr_m2にセットす
る。
【0160】ステップ1402に続くステップ1403
では、ポインタptr_m2に対応させて用いる各種カ
ウンタをセットする。具体的には、カウンタm、及びm
1には0をセットし、カウンタm2には1をセットす
る。その後、ステップ1404において、各種判定用に
用いられるフラグfrをセットする。
【0161】ステップ1404に続くステップ1405
では、カウンタm2の値が総ノート数よりも小さいか否
か判定する。この総ノート数は、図5に示すノート数取
得処理を実行することで得た値である。カウンタm2の
値が総ノート数よりも小さい場合、その判定はYESと
なってステップ1406の処理に移行する。そうでない
場合には、その判定はNOとなって図13のステップ1
302の処理に移行する。
【0162】ステップ1406では、ポインタptr_
m1とポインタptr_m2により示されるノートデー
タのタイミング番号が同一か否か判定する。それらのタ
イミング番号が同一であった場合、その判定はYESと
なってステップ1407の処理に移行する。そうでない
場合には、その判定はNOとなってステップ1408の
処理に移行する。
【0163】ステップ1407では、カウンタm2とポ
インタptr_m2をインクリメントして、それらを更
新する。その後、ステップ1405の処理に戻る。一
方、ステップ1408では、フラグfrをクリアし、そ
の後、図13のステップ1302の処理に移行する。
【0164】ステップ1405〜1407の処理を、ス
テップ1406の判定がNOとなるまで繰り返すことに
より、ポインタptr_m1とポインタptr_m2に
は、タイミング番号が異なるノートデータのポインタ値
がセットされる。
【0165】図13の説明に戻る。ステップ1302で
は、ワークRAM104の被験データの分析用データに
アクセスするためのポインタptr_t0に、図5に示
すノート数取得処理内のステップ507の処理を実行す
ることにより得たワークエリアの先頭ポインタをコピー
する。続くステップ1303では、ポインタptr_t
0に対応させて用いるカウンタtに0をセットする。カ
ウンタtに0をセットした後、ステップ1304の処理
に移行する。
【0166】ステップ1304〜1327の処理の繰り
返しでは、カウンタtとポインタptr_t0を更新し
ながら、ポインタptr_t0のノートデータに対応す
る基準データのノートデータの検索が行われる。
【0167】先ず、ステップ1304では、カウンタt
の値が被験データの総ノート数よりも小さいか否か判定
する。この総ノート数は、図5に示すノート数取得処理
を実行することで得た値である。カウンタtの値が総ノ
ート数よりも小さい場合、その判定はYESとなってス
テップ1305の処理に移行する。そうでない場合に
は、その判定はNOとなって一連の処理を終了する。
【0168】ステップ1305では、ポインタptr_
t0が示す音符(ノートデータ)の分析用データから、
押鍵タイミングデータを取得し、それを変数t_tim
eにセットする。続くステップ1306では、ポインタ
ptr_m1が示す音符(ノートデータ)の分析用デー
タから、押鍵タイミングデータを取得し、それら音符
(ノートデータ)間のイベント発生時刻の時間差(変
数)dtime1を取得する。この時間差dtime1
は、例えばポインタptr_m1から取得した押鍵タイ
ミングデータをmt1とすれば、時間差dtime1
に、mt1から変数t_timeを減算した値(=mt
1−t_time)をセットすることで取得する。時間
差dtime1を取得した後、ステップ1307の処理
に移行する。
【0169】ステップ1307では、上記フラグfrが
クリアされているか否か判定する。フラグfrがクリア
されていた場合、その判定はYESとなってステップ1
310の処理に移行する。そうでない場合には、その判
定はNOとなってステップ1308の処理に移行する。
【0170】ステップ1308では、ポインタptr_
t0が示す被験データの音符(ノートデータ)に、ポイ
ンタptr_m1が示す基準データの音符(ノートデー
タ)のシリアル番号をタイミング番号として設定する。
これは、メインCPU101が、ワークRAM104の
被験データの分析用データが格納されているワークエリ
アのポインタptr_t0が示す領域に、そのシリアル
番号を格納することで実現される。このシリアル番号の
設定が終了すると、ステップ1309の処理に移行し、
そこでカウンタtとポインタptr_t0をインクリメ
ントして、それらの更新を行う。その後、ステップ13
04の処理に戻る。このフラグfrは、それがクリアさ
れていれば新たにセットされ、被験データの音符(ノー
トデータ)にマッチする基準データの音符(ノートデー
タ)が見つかった場合にはクリアされる。従って、フラ
グfrがクリアされないことは、即ちステップ1307
の判定がNOとなることは、被験データの音符(ノート
データ)にマッチする基準データの音符(ノートデー
タ)が見つからず、それらのマッチが行えなかったこと
を意味する。このため、第1の実施の形態では、ステッ
プ1307の判定がNOとなった場合、単にステップ1
308の処理を実行し、被験データの音符(ノートデー
タ)にシリアル番号をタイミング番号として設定してい
る。
【0171】一方、フラグfrがクリアされていた場合
に次に実行されるステップ1310では、フラグfrを
セットする。ステップ1310に続くステップ1311
〜1321の繰り返しでは、被験データのポインタpt
r_t0が示す音符(ノートデータ)にマッチする音符
(ノートデータ)を、基準データ用に用いられる各種カ
ウンタ、及び各種ポインタを更新しながら検索する。
【0172】先ず、続くステップ1311では、カウン
タm2の値が基準データの総ノート数よりも小さいか否
か判定する。カウンタm2の値が基準データの総ノート
数よりも小さい場合、その判定はYESとなってステッ
プ1312の処理に移行する。そうでない場合には、そ
の判定はnoとなってステップ1322の処理に移行す
る。
【0173】ステップ1312では、ポインタptr_
m2が示す音符(ノートデータ)の分析用データから、
押鍵タイミングデータを取得し、被験データのポインタ
ptr_t0が示す音符(ノートデータ)とのイベント
発生時刻の時間差(変数)dtime2を取得する。被
験データのポインタptr_t0が示す音符(ノートデ
ータ)の押鍵タイミングデータは変数t_timeにセ
ットされている。時間差dtime2は、例えばポイン
タptr_m2から取得した押鍵タイミングデータをm
t2とすれば、時間差dtime2に、mt2から変数
t_timeを減算(mt2−t_time)した値を
セットすることで取得する。時間差dtime2を取得
した後、ステップ1313の処理に移行する。
【0174】ステップ1313では、時間差dtime
2が0よりも大きいか否か判定する。基準データのポイ
ンタptr_m2が示す音符(ノートデータ)のイベン
ト発生時刻が、被験データのポインタptr_t0が示
す音符(ノートデータ)のそれよりも遅い場合、その判
定はYESとなり、ステップ1314の処理に移行す
る。そうでない場合には、その判定はNOとなってステ
ップ1315の処理に移行する。ステップ1314で
は、ポインタptr_t0が示す音符(ノートデータ)
が基準データから見つかったとして、フラグfrをクリ
アする。その後、ステップ1322の処理に移行する。
【0175】ステップ1315では、カウンタm2に1
を加算した値(=m2+1)が基準データの総ノート数
よりも小さいか否か判定する。その値が総ノート数より
も小さい場合、その判定はYESとなってステップ13
16の処理に移行する。そうでない場合には、ステップ
1322の処理に移行する。ステップ1316では、カ
ウンタm、m1、及びm2と、ポインタptr_m1、
及びptr_m2をそれぞれインクリメントし、それら
の更新を行う。その後、ステップ1317の処理に移行
する。
【0176】ステップ1317では、カウンタm2の値
が基準データの総ノート数よりも小さいか否か判定す
る。カウンタm2の値がその総ノート数よりも小さい場
合、その判定はYESとなってステップ1318の処理
に移行する。そうでない場合には、その判定はNOとな
ってステップ1322の処理に移行する。
【0177】ステップ1318では、ステップ131
6、或いは1320で更新されたポインタptr_m2
が示す音符(ノートデータ)の分析用データから、押鍵
タイミングデータを取得し、被験データのポインタpt
r_t0が示す音符(ノートデータ)とのイベント発生
時刻の時間差(変数)dtime2を新たに取得する。
続くステップ1319では、時間差dtime1とdt
ime2が等しくないか否か判定する。ポインタptr
_m1とptr_m2が示すそれぞれの音符(ノートデ
ータ)のイベント発生時刻が同じであった場合、その判
定はNOとなってステップ1320の処理に移行する。
そうでない場合には、ステップ1321の処理に移行す
る。
【0178】ステップ1320では、カウンタm2とポ
インタptr_m2をそれぞれインクリメントし、それ
らを更新する。その後、ステップ1317の処理に戻
る。一方、ステップ1321では、フラグfrをクリア
し、その後にステップ1311の処理に戻る。
【0179】上記ステップ1311〜1321の処理の
実行後、ポインタptr_m2には、被験データのポイ
ンタptr_t0が示す音符(ノートデータ)のイベン
ト発生時刻よりも遅いイベント発生時刻の音符(ノート
データ)のポインタ値がセットされる。
【0180】ステップ1322〜1327では、ポイン
タptr_m1、或いはptr_m2が示す音符(ノー
トデータ)が、ポインタptr_t0が示す音符(ノー
トデータ)にマッチする音符(ノートデータ)であると
して、それら基準データの音符のなかから最も被験デー
タの音符(ノートデータ)にマッチする音符(ノートデ
ータ)を特定するための処理が行われる。
【0181】先ず、ステップ1322では、フラグfr
はクリアされているか否か判定する。被験データのポイ
ンタptr_t0が示す音符(ノートデータ)にマッチ
させる基準データの音符(ノートデータ)が見つかった
場合、その判定はYESとなってステップ1323の処
理に移行する。そうでない場合には、その判定はNOと
なってステップ1327の処理に移行する。
【0182】ステップ1323では、時間差dtime
1は0以上か否か判定する。ポインタptr_t0が示
す音符(ノートデータ)のイベント発生時刻が、ポイン
タptr_m1が示す音符(ノートデータ)のイベント
発生時刻と同じか、或いはそれよりも早い場合、その判
定はYESとなってステップ1324の処理に移行す
る。そうでない場合には、その判定はNOとなってステ
ップ1325の処理に移行する。
【0183】ステップ1324では、ポインタptr_
t0が示す被験データの音符(ノートデータ)に、ポイ
ンタptr_m1が示す基準データの音符(ノートデー
タ)のシリアル番号をタイミング番号として設定する。
これは、通常、ポインタptr_m1が示す音符(ノー
トデータ)よりも、ポインタptr_m2が示す音符
(ノートデータ)のほうが、イベント発生時刻が遅いた
めである。そのシリアル番号の設定が終了すると、ステ
ップ1309の処理に移行する。
【0184】ステップ1325では、時間差dtime
1とdtime2を加算した値が0以上か否か判定す
る。ポインタptr_m1とptr_m2が示すそれら
の音符(ノートデータ)のイベント発生時刻が、ポイン
タptr_t0が示す音符(ノートデータ)のそれと同
じか、或いはそれよりも遅い場合、更には、時間差dt
ime2がdtime1と同じか、或いは時間差dti
me2のほうがdtime1よりも大きい場合には、そ
の判定はYESとなってステップ1326の処理に移行
する。そうでない場合には、その判定はNOとなってス
テップ1327の処理に移行する。
【0185】時間差dtime2のほうがdtime1
よりも大きい場合は、ポインタptr_t0が示す音符
(ノートデータ)のイベント発生時刻と比較して、ポイ
ンタptr_m1が示す音符(ノートデータ)のそれは
早く、他方のポインタptr_m2が示す音符(ノート
データ)のそれは遅く、且つポインタptr_m1が示
す音符(ノートデータ)のほうがポインタptr_t0
が示す音符(ノートデータ)に近接しているということ
になる。
【0186】このため、ステップ1326では、ポイン
タptr_t0が示す被験データの音符(ノートデー
タ)に、ポインタptr_m1が示す基準データの音符
(ノートデータ)のシリアル番号をタイミング番号とし
て設定する。そのシリアル番号の設定が終了すると、ス
テップ1309の処理に移行する。一方、ステップ13
27では、ステップ1326とは逆に、ポインタptr
_t0が示す被験データの音符(ノートデータ)に、ポ
インタptr_m2が示す基準データの音符(ノートデ
ータ)のシリアル番号をタイミング番号として設定す
る。そのシリアル番号の設定が終了すると、ステップ1
309の処理に移行する。
【0187】図15は、図11のステップ1103とし
て実行されるノートマッチ補正処理の動作フローチャー
トである。次に、図15を参照して、ノートマッチ補正
処理について詳細に説明する。このノートマッチ補正処
理は、上述したように、ステップ1102の押鍵タイミ
ングのノートマッチ処理を実行することで得られた基準
データと被験データ間における音符(ノートデータ)の
対応関係を、ノートナンバーに着目して補正するもので
ある。
【0188】先ず、ステップ1501では、ワークRA
M104のワークエリアに格納された被験データの分析
用データにアクセスするためのポインタptr_t1、
及びptr_t2に、図5に示すノート数取得処理内の
ステップ507の処理を実行することにより得たワーク
エリアの先頭ポインタをコピーする。続くステップ15
02では、それらのポインタに対応させて用いるカウン
タt1、及びt2に0をセットする。これらのカウンタ
をセットした後は、ステップ1503の処理に移行す
る。
【0189】ステップ1503〜1518の処理の繰り
返しでは、カウンタt1とポインタptr_t1を更新
しながら、ポインタptr_t0の音符(ノートデー
タ)にマッチする基準データの音符(ノートデータ)の
検索が、ノートナンバーに着目して行われる。
【0190】先ず、ステップ1503では、カウンタt
1の値が被験データの総ノート数よりも小さいか否か判
定する。この総ノート数は、図5に示すノート数取得処
理を実行することで得た値である。カウンタt1の値が
総ノート数よりも小さい場合、その判定はYESとなっ
てステップ1504の処理に移行する。そうでない場合
には、その判定はNOとなって一連の処理を終了する。
【0191】ステップ1504では、ポインタptr_
t1が示す音符(ノートデータ)の分析用データから、
タイミング番号を取得し、それを変数time_t1に
セットする。続くステップ1505では、ポインタpt
r_t1が示す音符(ノートデータ)の分析用データか
ら、ノートナンバーを取得し、それを変数note_t
1にセットする。その後、ステップ1506のノートナ
ンバーチェック処理を実行する。
【0192】ノートナンバーチェック処理は、基準デー
タのなかから、ポインタptr_t1が示す音符(ノー
トデータ)のノートナンバーと等しい音符(ノートデー
タ)を検索する処理である。このノートナンバーチェッ
ク処理へは、ステップ1504、及び1505で値をセ
ットした変数time_t1、及び変数note_t1
が引数として渡され、ノートナンバーチェック処理から
は、ポインタptr_t1が示す音符(ノートデータ)
のノートナンバーと等しい基準データの音符(ノートデ
ータ)のシリアル番号が引数seri_m1として返さ
れる。ノートナンバーが等しい音符(ノートデータ)を
検索できなかった場合には、その引数seri_m1に
はその旨(エラーERR)を示す値(例えば負の値)が
セットされる。
【0193】ステップ1506に続くステップ1507
では、引数seri_m1にエラーを示す値がセットさ
れていないか否か判定する。基準データから該当する音
符(ノートデータ)が見つけられなかった場合、その判
定はNOとなってステップ1508の処理に移行する。
そうでない場合には、その判定はYESとなってステッ
プ1509の処理に移行する。ステップ1508では、
その検索結果に従い、ポインタptr_t1が示す被験
データ側の分析用データに、エラーフラグをセットし、
また、それのシリアル番号に、例えば負の値をセットし
て対応ナンバーをクリアする。その後、ステップ151
8の処理に移行する。ステップ1509では、引数se
ri_m1にセットされたシリアル番号の音符(ノート
データ)のポインタptr_m1を取得する。続くステ
ップ1510では、このポインタptr_m1の音符
(ノートデータ)に、被験データの音符(ノートデー
タ)のなかでマッチしているものが有るか否かを示すマ
ッチフラグがセットされているか否か判定する。ポイン
タptr_tの音符(ノートデータ)にマッチする被験
データの音符(ノートデータ)が存在していた場合、そ
の判定はYESとなってステップ1512の処理に移行
する。そうでない場合、その判定はNOとなってステッ
プ1511の処理に移行する。
【0194】ステップ1511では、ポインタptr_
m1の音符(ノートデータ)にマッチフラグをセットす
る一方、ポインタptr_t1が示す被験データ側の音
符(ノートデータ)のエラーフラグをクリアし、また、
シリアル番号に、それに対応する基準データ側の音符
(ノートデータ)のシリアル番号をセットする。その
後、ステップ1518の処理に移行する。
【0195】ステップ1512は、ポインタptr_t
1が示す音符(ノートデータ)にマッチさせる基準デー
タの音符(ノートデータ)が、既に他の被験データの音
符(ノートデータ)にマッチさせられていた場合に実行
される。このため、ステップ1512〜1517では、
その基準データの音符(ノートデータ)にマッチさせる
音符(ノートデータ)を、被験データ側のそれらの音符
(ノートデータ)のなかから選択する。
【0196】先ず、ステップ1512では、カウンタt
2の値がカウンタt1の値よりも小さいか否か判定す
る。カウンタt2の値がカウンタt1の値よりも小さい
場合、その判定はYESとなってステップ1513の処
理に移行する。そうでない場合には、その判定はNOと
なってステップ1518の処理に移行する。
【0197】ステップ1513では、引数seri_m
1のシリアル番号が、ポインタptr_t2の音符(ノ
ートデータ)にセットされているシリアル番号に等しい
か否か判定する。それらシリアル番号が等しい場合、そ
の判定はYESとなってステップ1515の処理に移行
する。そうでない場合には、その判定はNOとなってス
テップ1514の処理に移行する。ステップ1514で
は、カウンタt2、及びポインタptr_t2をインク
リメントして、それらを更新し、その後、ステップ15
12の処理に戻る。
【0198】上記ステップ1512〜1514の繰り返
しにより、ポインタptr_t2の値がポインタptr
_t1を超えない範囲内で、基準データの音符(ノート
データ)にマッチさせる被験データの音符(ノートデー
タ)が検索される。ステップ1515は、基準データの
音符(ノートデータ)にマッチさせる被験データの他の
音符(ノートデータ)が検索された場合に実行される。
【0199】ステップ1515では、これら被験データ
の音符(ノートデータ)と基準データの音符(ノートデ
ータ)のイベント発生時刻間の差である時間差dtを算
出する。これは、例えば、ポインタptr_t1で示さ
れる現在の処理対象の音符(ノートデータ)のイベント
発生時刻をt1、ポインタptr_t2で示される既に
マッチさせられた被験データの音符(ノートデータ)の
イベント発生時刻をt2、既にマッチさせられた基準デ
ータの音符(ノートデータ)のイベントデータをm1と
した場合、時間差dtは、例えばdt=(m1−t1)
−(m1−t2)として算出する。時間差dtを算出し
た後、ステップ1516の処理に移行する。
【0200】ステップ1516では、時間差dtが0以
下か否か判定する。時間差dtの値が負であった場合、
その判定はYESとなってステップ1517の処理に移
行する。そうでない場合には、その判定はNOとなって
ステップ1511の処理に移行する。
【0201】上記のようにして時間差dtを算出した場
合、その時間差dtの値が負であることは、その基準デ
ータの音符(ノートデータ)に、ポインタptr_t1
の音符(ノートデータ)のほうが近接していることを意
味する。このため、ステップ1517では、ポインタp
tr_t2が示す既にマッチさせられている音符(ノー
トデータ)の分析用データに、エラーフラグをセット
し、また、それのシリアル番号に、例えば負の値をセッ
トして対応ナンバーをクリアする。その後、ステップ1
518の処理に移行する。
【0202】ステップ1518では、カウンタt1及び
ポインタptr_t1をインクリメントして、それらの
更新を行う。それらの更新を行った後、ステップ150
3の処理に戻る。
【0203】次に、上記ステップ1506として実行さ
れるノートナンバーチェック処理について、図16に示
すその動作フローチャートを参照して詳細に説明する。
このノートナンバーチェック処理は、上述したように、
基準データのなかから、ポインタptr_t1が示す音
符(ノートデータ)のノートナンバーと等しい音符(ノ
ートデータ)を検索する処理である。
【0204】先ず、ステップ1601では、ワークRA
M104のワークエリアに格納された基準データの分析
用データにアクセスするためのポインタptr_mに初
期値を設定する。このとき初期設定される値は、例えば
図5に示すノート数取得処理内のステップ507の処理
を実行することにより得たワークエリアの先頭ポインタ
の値である。続くステップ1602では、ノートマッチ
補正処理に渡す引数serial(ノートナンバーチェ
ック処理内ではこの名称である)にエラーを示す値をセ
ットする。その後、ステップ1603の処理に移行す
る。
【0205】ステップ1603では、ポインタptr_
mが示す音符(ノートデータ)のタイミング番号が、引
数として受け取ったタイミング番号と等しいか否か判定
する。それらのタイミング番号が等しい場合、その判定
はYESとなってステップ1605の処理に移行する。
そうでない場合には、その判定はNOとなってステップ
1604の処理に移行する。ステップ1604では、ポ
インタptr_mをインクリメントし、それの更新を行
う。その後、ステップ1603の処理に移行する。
【0206】ステップ1603〜1604の処理を繰り
返すことにより、押鍵タイミングでマッチさせた基準デ
ータの音符(ノートデータ)が検索される。ステップ1
605では、ポインタptr_mが示す音符(ノートデ
ータ)のノートナンバーが、引数として受け取ったノー
トナンバーと等しいか否か判定する。それらのノートナ
ンバーが等しい場合、その判定はYESとなってステッ
プ1606の処理に移行する。そうでない場合には、こ
こで一連の処理を終了する。この場合、ステップ160
2で引数serialにセットしたエラーであることを
示す値はそのままとなる。
【0207】ステップ1606では、引数serial
に、ポインタptr_mの音符(ノートデータ)のシリ
アル番号をセットする。これにより、ノートマッチ補正
処理に、基準データにおいてマッチする音符(ノートデ
ータ)のシリアル番号が渡されることになる。その後、
一連の処理を終了する。
【0208】図17は、図3のステップ305として実
行される差分取得処理の動作フローチャートである。次
に、図17を参照して、差分取得処理について詳細に説
明する。
【0209】この差分取得処理は、ワークRAM104
の異なるワークエリアにそれぞれ格納されている基準デ
ータと被験データの分析用データを対象とし、被験デー
タの各音符(ノートデータ)毎に、それに対応(マッ
チ)する基準データの音符(ノートデータ)の分析用デ
ータを読み出して、それらの間における各パラメータの
差分を取得していくものである。
【0210】先ず、ステップ1701では、ワークRA
M104の被験データの分析用データにアクセスするた
めのポインタptr_t1に、図5に示すノート数取得
処理内のステップ507の処理を実行することにより得
たワークエリアの先頭ポインタをセットする。続くステ
ップ1702では、ポインタptr_t1に対応させて
用いるカウンタt1に0をセットする。カウンタt1に
0をセットした後、ステップ1713の処理に移行す
る。
【0211】ステップ1703〜1711では、被験デ
ータの音符(ノートデータ)を変更していきながら、音
符(ノートデータ)と基準データの音符(ノートデー
タ)を対応させて、それらの間における各パラメータの
差分の取得が行われる。なお、カウンタt1の値は、現
在処理対象としている被験データの音符(ノートデー
タ)が、その先頭から何番目に発生したイベントである
か、言い換えれば、現在処理している音符(ノートデー
タ)の順番を意味する。
【0212】先ずステップ1703では、カウンタt1
の値が被験データの総ノート数よりも小さいか否か判定
する。この総ノート数は、図5に示すノート数取得処理
を実行することで得た値である。カウンタt1の値が総
ノート数よりも小さい場合、その判定はYESとなって
ステップ1704の処理に移行する。そうでない場合に
は、その判定はNOとなって一連の処理を終了する。
【0213】ステップ1704では、カウンタt1が示
す現在処理対象となっている音符(ノートデータ)のノ
ートマッチさせた結果を取得する。この取得は、カウン
タt1と同じ値をシリアル番号として持つ基準データの
音符(ノートデータ)の分析用データを検索することで
行う。
【0214】ステップ1704に続くステップ1705
では、そのノートマッチの結果が有効であるか否か判定
する。ステップ1704で検索した音符(ノートデー
タ)の分析用データのフラグがエラーフラグであった場
合、その判定はNOとなってステップ1711の処理に
移行する。そうでない場合には、その判定はYESとな
ってステップ1706の処理に移行する。
【0215】ステップ1706では、マッチされている
基準データの音符(ノートデータ)のポインタptr_
m1を取得する。それに続くステップ1707〜171
0では、ポインタptr_t1が示す被験データの音符
(ノートデータ)の分析用データと、ポインタptr_
m1が示す基準データの音符(ノートデータ)の分析用
データを、パラメータの種類別に対比して、それらの間
の差分を取得する。具体的には、図2に示すように、ベ
ロシティ、押鍵タイミング、離鍵タイミング、押鍵時間
(音符長)の差分をそれぞれ取得する。これらは、例え
ばポインタptr_t1が示す被験データの音符(ノー
トデータ)の分析用データ、及びポインタptr_m1
が示す基準データの音符(ノートデータ)の分析用デー
タとしてそれぞれに格納される。
【0216】ステップ1710に続くステップ1711
では、カウンタt1とポインタptr_t1をそれぞれ
インクリメントし、それらの更新を行う。それらのイン
クリメントが終了すると、ステップ1703の処理に戻
る。
【0217】図18は、図3のステップ306として実
行される平均値取得処理の動作フローチャートである。
次に、図18を参照して、平均値取得処理について詳細
に説明する。
【0218】この平均値取得処理は、ワークRAM10
4のワークエリアに格納されている被験データの分析用
データを対象として、演奏者(ユーザ)がコントロール
スイッチ群103の所定のスイッチを操作することで指
定したパラメータ(項目)の差分の平均値を算出する処
理である。ここで算出された平均値は、これに続くステ
ップ307の標準偏差取得処理で使用される。
【0219】ステップ1801〜1803では、各種変
数の初期設定が行われる。先ず、ステップ1801で
は、ワークRAM104の被験データの分析用データに
アクセスするためのポインタptr_t1に、図5に示
すノート数取得処理内のステップ507の処理を実行す
ることにより得たワークエリアの先頭ポインタをセット
する。続くステップ1802では、ポインタptr_t
1に対応させて用いるカウンタt1に0をセットする。
その後、ステップ1803において、変数である有効サ
ンプルカウンタ、及び差分累算値をそれぞれクリアす
る。
【0220】ステップ1803に続くステップ1804
〜1811では、被験データの音符(ノートデータ)
を、カウンタt1とともに変更していきながら、その音
符(ノートデータ)にマッチする基準データの音符(ノ
ートデータ)の有無に応じて、上記有効サンプルカウン
タのインクリメント、差分累算値への有効な差分の加算
が行われる。
【0221】先ず、ステップ1804では、カウンタt
1の値が被験データの総ノート数よりも小さいか否か判
定する。この総ノート数は、図5に示すノート数取得処
理を実行することで得た値である。カウンタt1の値が
総ノート数よりも小さい場合、その判定はYESとなっ
てステップ1805の処理に移行する。そうでない場合
には、その判定はNOとなってステップ1812の処理
に移行する。
【0222】ステップ1805では、カウンタt1が示
す現在処理対象となっている音符(ノートデータ)のノ
ートマッチさせた結果を取得する。この取得は、ポイン
タptr_t1に従ってアクセスされる分析用データの
なかから、制御用フラグ(図2参照)を読み出すか、或
いはシリアル番号(ノートマッチが有効でなければ負の
値がセットされている)を読み出すことで行う。
【0223】ステップ1805に続くステップ1806
では、そのノートマッチの結果が有効であるか否か判定
する。例えばステップ1805で読み出した制御用フラ
グがエラーフラグであった場合、その判定はNOとなっ
てステップ1811の処理に移行する。そうでない場合
には、その判定はYESとなってステップ1807の処
理に移行する。
【0224】ステップ1807では、有効サンプルカウ
ンタをインクリメントする。続くステップ1808で
は、その音符(ノートデータ)の分析用データのなかか
ら、指定されたパラメータ(項目)の差分を取得する。
これに続いて実行されるステップ1809では、ステッ
プ1808で取得した差分に応じて、指定されたパラメ
ータ(項目)における最大値、及び最小値の更新を行
う。その後、ステップ1808で得た差分を差分累算値
に加算する。
【0225】ステップ1810に続くステップ1811
では、カウンタt1とポインタptr_t1をそれぞれ
インクリメントし、それらの更新を行う。それらのイン
クリメントが終了すると、ステップ1804の処理に戻
る。
【0226】ステップ1812は、カウンタt1の値が
総ノート数以上になった場合に実行される。このとき、
有効サンプルカウンタには、ノートマッチが有効な音符
(ノートデータ)数が保持され、他方の差分累算値に
は、ノートマッチが有効な全ての音符(ノートデータ)
の分析用データから取得される指定されたパラメータ
(項目)の差分の累算値が保持される。ステップ181
2では、差分累算値に保持されている値を、を有効サン
プルカウンタの値で割ることにより、指定されたパラメ
ータ(項目)の差分の平均値を取得する。この平均値を
取得すると、一連の処理を終了する。
【0227】なお、第1の実施の形態では、分析結果を
表示させる対象とするパラメータ(項目)を演奏者が指
定するようにしているが、例えば、予め定めたパラメー
タを全て対象として、各パラメータ毎に分析を行い、そ
の分析結果を、演奏者のスイッチ等に対する操作に応じ
て選択的に表示させるようにしても良い。このように分
析結果を分割して表示させることにより、表示装置11
7の画面が小さくとも、様々な分析結果を表示させるこ
とができる。
【0228】また、第1の実施の形態では、分析用デー
タとするデータ(パラメータ)を予め定めた設定に固定
させているが、分析用データとするデータ(パラメー
タ)の種類を、演奏者(ユーザ)が指定するようにして
も良い。
【0229】分析用データは、図2に示すように、1音
符(ノートデータ)あたり複数のデータで構成されてい
る。このことから、分析結果として表示させる情報とし
ては、度数分布や標準偏差等の他に、或いはそれの換わ
りに、分析用データのなかの少なくとも一つのデータを
表示させても良い。そのデータの表示は、基準データと
被験データ間での対比が容易なように、音符(ノートデ
ータ)毎に対応させて表示することが望ましい。その表
示させるデータは演奏者(ユーザ)が選択できるように
しても良い。
【0230】そのデータを表示させる形態としては、数
値で表示しても良く、直感的にそれらを対比できるよう
に、グラフ等の図形で表示しても良い。当然のことなが
ら、分析用データのなかから表示するデータに対して
は、そのデータの意味を演奏者(ユーザ)が容易に把握
できるように、何らかの加工を行っても良い。 <第2の実施の形態>上述した第1の実施の形態では、
基準データと被験データが共に同じ精度で時間管理され
ていることを前提としている。しかし、時間管理の精度
は、周知のように、装置の基本性能、例えば分解能に応
じて変動する。その分解能は、1拍当たりのクロック数
であることから、そのクロック数で表されるデルタタイ
ム(イベント間の時間情報)の値が意味する実際の時間
も、分解能により変化する。
【0231】一方、基準データと被験データは、異なる
装置で別々に作成することができる。これは、基準デー
タと被験データの分解能は、必ずしも一致しないことを
意味する。基準データと被験データの分解能が異なって
いる場合、上記第1の実施の形態は、基準データと被験
データの分解能が一致している、即ちクロックの周期が
一致していることを前提としているため、それらの間の
イベントの対応付け(マッチング)を実質的に行うこと
ができない。第2の実施の形態は、このようなことを回
避し、時間管理の精度が異なる演奏データ間でイベント
のマッチングを行えるようにしたものである。
【0232】この第2の実施の形態の構成は、図1を参
照して説明した第1の実施の形態のそれと基本的に同じ
である。また、動作においても、一致している部分が多
い。このため、第1の実施の形態から異なる部分だけ説
明する。
【0233】始めに、第2の実施の形態で採用した演奏
分析について説明する。第1の実施の形態では、演奏分
析結果として、押鍵タイミング、ベロシティ等のパラメ
ータ毎に、基準データと被験データとを対比して得られ
る平均値、標準偏差、度数分布等を表示させている。そ
れらの特性量を表示することで、演奏者は自身が行った
演奏の全体的な傾向を知ることができるが、その細部に
ついては表示されている特性量から知ることはできず、
自分で判断しなければならない。このことから、第2の
実施の形態では、演奏者が、自身の演奏の細部まで詳細
に把握できるようにしている。具体的には、第2の実施
の形態では、パラメータ毎に、基準データと被験データ
のイベント間の相違を表示することで、演奏の全体、更
にはその細部まで演奏者が演奏内容を容易に把握できる
ようにしている。
【0234】図21は、第2の実施の形態による分析結
果の表示例を示す図である。この分析結果は、図1に示
す表示装置117に表示されるものである。この図21
を参照して、第2の実施の形態が行う演奏分析について
具体的に説明する。
【0235】演奏者は、技術が伴わない場合、楽譜に忠
実に従った演奏を行うことができない。具体的には、鍵
盤上のある鍵を弾いてから次の鍵を弾くまでの間隔、即
ちイベント間の間隔を、例えば楽譜に記譜されているそ
の間隔に常に合わせることができない。イベント間の間
隔は、当然のことながら、テンポによっても異なる。こ
のことから、第2の実施の形態では、そのイベント間の
間隔をテンポとして仮想的にとらえ、演奏者が行った演
奏(被験データ)のテンポと手本(基準)の演奏(基準
データ)のそれとの違いをイベント毎に抽出し、それを
分析結果として表示させている。上記図21は、そのテ
ンポの推移例である。
【0236】なお、以降においては、イベント間の間隔
の表現に使用するテンポを自動演奏等で一般に指定する
テンポと区別するために、前者については仮想テンポ、
後者については単にテンポと呼ぶことにする。
【0237】仮想テンポは、演奏者自身の演奏における
イベント間の間隔が、手本の演奏(基準データ)におけ
るイベント間の間隔とはどのようにズレているかを相対
的に表現する。このため、図21に示すように、その仮
想テンポをイベント毎に表示することで、演奏者は、自
身の演奏で各鍵を弾いていったタイミングが、基準の演
奏のそれとはどのように異なっているかを詳細、且つ、
容易に把握することができる。これにより、第1の実施
の形態と比較して、演奏者の独習をより強力に支援する
ことができ、練習効率を更に向上させることができる。
【0238】次に、上記演奏分析を行い、その結果を表
示するための動作について、図19、図20に示す動作
フローチャートを参照して詳細に説明する。上記図19
は、第2の実施の形態による演奏分析処理の動作フロー
チャートである。この図19を参照して、始めに演奏分
析処理について詳細に説明する。
【0239】この演奏分析処理は、演奏者(ユーザ)が
コントロールスイッチ群103の所定のスイッチを操作
し、演奏傾向の分析を指示した場合に、メインCPU1
01が、プログラムROM102に格納されている制御
プログラムを読み出してそれを実行することで実現され
る処理である。
【0240】先ず、ステップ1901では、演奏データ
取得処理を実行する。この演奏データ取得処理は、例え
ばユーザがコントロールスイッチ群103の所定のスイ
ッチに対する操作に応じて、ネットワークインターフェ
イス115、或いは外部記憶装置116から入力した演
奏データを、基準データRAM112、或いは被験デー
タRAM113の一方にSMFのデータ形式で格納する
処理である。
【0241】ステップ1901に続くステップ1902
では、所得した基準データ、被験データの各演奏データ
に含まれているノートデータ数を取得するノート数取得
処理を実行する。ノートデータ数を取得すると、続くス
テップ1903では、各演奏データから1次データ(図
2参照)を取得する1次データ取得処理を実行する。こ
の1次データ取得処理が終了すると、ステップ1904
の処理に移行する。
【0242】ステップ1904では、基準データと被験
データ間におけるノートデータの対応関係を求めるノー
トマッチ処理を実行する。このノートマッチ処理では、
基準データと被験データの各々の分解能を考慮して、演
奏データ間におけるノートデータの対応付け(マッチン
グ)を行う。そのノートマッチ処理を実行することで、
図2に示す1音符(ノートデータ)あたりの分析用デー
タとして、シリアル番号、及びタイミング番号が各音符
(ノートデータ)毎にワークRAM104に書き込まれ
る。即ち基準データと被験データ間におけるノートデー
タの対応関係が確定される。
【0243】ステップ1904に続くステップ1905
では、基準データと被験データ間の仮想テンポを演算す
る仮想テンポ演算処理を実行する。続いて、ステップ1
906では、その仮想テンポを図21に示すように出力
する分析結果出力処理を実行する。その後、一連の処理
を終了する。
【0244】上述したステップ1901〜1903の各
サブルーチン処理の内容は、第1の実施の形態における
それらの処理の内容と基本的に同じである。ステップ1
904のノートマッチ処理では、第1の実施の形態と同
様に、図12〜図16に示す各種サブルーチン処理が実
行される。しかし、基準データと被験データの分解能の
違いに対応させるために、それら各種サブルーチン処理
のなかにはその内容に若干相違しているものがある。以
下、その相違について説明する。
【0245】図12〜図16に示す各種サブルーチン処
理のなかで、図13に示す押鍵タイミングによるノート
マッチ処理、及び図15に示すノートマッチ補正処理が
第1の実施の形態から相違する部分を有する。
【0246】先ず、押鍵タイミングによるノートマッチ
処理では、ステップ1305の処理が第1の実施の形態
とは異なる。上述したように、第1の実施の形態におけ
るステップ1305では、ポインタptr_t0が示す
音符(ノートデータ)の分析用データから、押鍵タイミ
ングデータを取得し、それを変数t_timeにセット
することが行われる。ステップ1305以降は、変数t
_timeにセットされた押鍵タイミングデータを基
に、基準データと被験データ間の音符(ノートデータ)
が対応付けられる。
【0247】上記押鍵タイミングデータは、クロック数
で表現された値である。そのクロックの周期は、分解能
によって異なる。このため、第2の実施の形態における
ステップ1305では、対象としている押鍵タイミング
データを取得すると、それを基準データの分解能とした
場合の値に変更し、その変更後の値を変数t_time
にセットする。具体的には、被験データの分解能をV
t、基準データの分解能をVmとした場合には、取得し
た押鍵タイミングデータの値Dに、それら間の比率(=
Vm/Vt)を乗算し、その乗算結果(=D・Vm/V
t)を変数t_timeにセットする。これにより、ス
テップ1305以降の処理の内容を変更させることな
く、被験データと基準データ間の音符(ノートデータ)
の対応付けを行うことができる。
【0248】図15に示すノートマッチ補正処理では、
ステップ1515の処理が第1の実施の形態とは異な
る。そのステップ1515は、被験データのある音符
(ノートデータ)に基準データの音符(ノートデータ)
を対応付けした後、更にそれに対応付けるべき音符(ノ
ートデータ)を検出した場合に実行される処理である。
ステップ1515では、被験データの音符(ノートデー
タ)と基準データの音符(ノートデータ)のイベント発
生時刻間の差(時間差)dtを算出する。
【0249】第1の実施の形態では、上述したように、
時間差dtを、例えば、ポインタptr_t1で示され
る現在の処理対象の音符(ノートデータ)のイベント発
生時刻をt1、ポインタptr_t2で示される既にマ
ッチさせられた被験データの音符(ノートデータ)のイ
ベント発生時刻をt2、既にマッチさせられた基準デー
タの音符(ノートデータ)のイベントデータをm1とし
た場合、dt=(m1−t1)−(m1−t2)の式か
ら算出する。これに対し、第2の実施の形態では、分解
能の違いを考慮し、何れかの分解能に合わせて上記時間
差dtを算出している。具体的には、例えば基準データ
の分解能に合わせて、被験データの分解能をVt、基準
データの分解能をVmとすると、上記t1、t2には、
その基の値に、基準データと被験データの分解能の比率
(=Vm/Vt)を乗算して得られる値をセットしてい
る。
【0250】以上が、ノートマッチ処理における第1の
実施の形態からの変更部分である。次に、図19に示す
演奏分析処理内でステップ1905として実行される仮
想テンポ演算処理について、図20に示すその動作フロ
ーチャートを参照して詳細に説明する。
【0251】先ず、ステップ2001では、基準データ
RAM112にSMF形式で格納されている基準データ
のヘッダー部から、基準演奏のテンポを取得する。続く
ステップ2002では、そのヘッダー部から分解能を更
に取得する。その後、ステップ2003の処理に移行す
る。
【0252】ステップ2003では、被験データRAM
113にSMF形式で格納されている被験データのヘッ
ダー部から、その演奏の分解能を取得する。続くステッ
プ2004では、取得した2つの分解能から、それらの
比rateを算出する。その分解能比rateは、基準
データの分解能を被験データの分解能で割った値であ
る。
【0253】上記ステップ2001〜2004の処理
は、仮想テンポ演算処理における初期設定を行う処理に
相当する。ステップ2004に続くステップ2005〜
2009は、処理ループを形成している。この処理ルー
プでは、対象とする音符(ノートデータ)を順次変更し
ながら(移動させながら)、各音符(ノートデータ)毎
に、その音符(ノートデータ)の仮想テンポを算出し、
それを分析用データとしてストアすることが行われる。
【0254】ステップ2005〜2009の処理ループ
は、ワークRAM104に格納した基準データ、及び被
験データの分析用データを対象にして実行される。その
分析用データは、1音符(ノートデータ)毎に、そのイ
ベントの発生順に格納されている。上記処理ループで
は、基準データの分析用データを基準にして、基準デー
タと被験データ間の音符(ノートデータ)を対応させな
がら、各音符(ノートデータ)毎に仮想テンポの算出が
行われる。
【0255】先ず、ステップ2005では、基準データ
の全ての音符(ノートデータ)を処理したか否か、言い
換えれば、各音符(ノートデータ)の仮想テンポの算出
が全て終了したか否か判定する。各音符(ノートデー
タ)の仮想テンポを全て算出した場合、その判定はYE
Sとなって一連の処理を終了する。そうでない場合に
は、その判定はNOとなってステップ2006の処理に
移行する。
【0256】ステップ2006では、基準データ中の対
象とする音符(ノートデータ)を一つ移動させ、その音
符(ノートデータ)とその一つ前の音符(ノートデー
タ)との間のイベント間時間(クロック数)time_
orgを取得する。ここで、対象とする音符(ノートデ
ータ)の指定は、カウンタを用いて行い、イベント間時
間time_orgは、対象とする音符(ノートデー
タ)の押鍵タイミングから、その一つ前の音符(ノート
データ)の押鍵タイミングを減算することで取得する。
押鍵タイミングは、図2に示すように、分析用データ中
の1次データの一つとして格納されているデータであ
る。
【0257】基準データの音符(ノートデータ)に対応
付けられた被験データ中の音符(ノートデータ)は、分
析用データ中の対応番号、タイミング対応番号、及び制
御用フラグを基に特定する。ステップ2006に続くス
テップ2007では、それらのデータから、基準データ
中で対象としている音符(ノートデータ)に対応付けら
れた被験データの音符(ノートデータ)を特定し、上記
と同様にして、その音符(ノートデータ)のイベント間
時間time_targを取得する。その後、ステップ
2008の処理に移行する。
【0258】ステップ2008では、ステップ2007
で特定した被験データの音符(ノートデータ)の仮想テ
ンポ値v_tempoを取得する。その仮想テンポ値v
_tempoは、ステップ2001で取得したテンポの
値をtempo_orgとすると、以下に示す数式によ
って算出される。
【0259】v_tempo=(time_org/
(rate・time_targ))・tempo_o
rg ステップ2008に続くステップ2009では、ステッ
プ2008で算出した仮想テンポ値v_tempoを順
にストアする。具体的には、例えば仮想テンポ値v_t
empoを、ステップ2007で特定した音符(ノート
データ)に、その分析用データの一つとしてストアす
る。これは、仮想テンポ値v_tempoを図2に示す
分析用データの1項目として追加しても良く、押鍵タイ
ミング差分、或いは離鍵タイミング差分等の換わりに仮
想テンポ値v_tempoをストアさせても良い。
【0260】この仮想テンポ値v_tempoのストア
が終了すると、ステップ2005の処理に戻る。このと
きには、対象とする音符(ノートデータ)を一つ移動し
て、上記と同様に処理ループが実行される。
【0261】なお、第2の実施の形態では、押鍵イベン
ト発生時刻の間隔に着目して、基準データと被験データ
を押鍵イベント毎に対比し、その結果を演奏者に演奏傾
向を示す情報として提供しているが、押鍵イベントの他
に、ベロシティに着目して、各演奏データを押鍵イベン
ト毎に対比した結果を演奏者に提供するようにしても良
い。また、押鍵イベント発生時刻、ベロシティ、音符長
(発音期間)等の各種パラメータを用意し、そのなかか
ら演奏者がパラメータの種類を選択できるようにしても
良い。何れの場合においても、演奏者は、自身の行った
演奏の傾向を具体的に把握することができるので、修得
すべき演奏技術を特定した効果的な練習を行えるように
なる。
【0262】また、第2の実施の形態では、各イベント
毎に、その演奏内容の相違を表示しているが、それに加
えて、第1の実施の形態のように、演奏の全体的な傾向
を示すデータ(標準偏差、度数分布等)を表示するよう
にしても良い。また、押鍵イベント毎の相違を表示する
場合、楽曲の全体、特定の部分の詳細等、演奏者が所望
する状態でそれを表示できるようにすることが望まし
い。 <第3の実施の形態>周知のように、高度な演奏技術を
持つ演奏者は、楽譜等に記譜されている内容に忠実に従
って演奏を行うことは実際は少なく、通常、何らかの音
楽表現(ゆらぎ)を加えた演奏を行う。演奏技術があま
り高くない演奏者にとって、前者と後者の演奏をそれぞ
れ修得することが目標といえる(普通、修得する順序
は、前者、後者の順である)。これは、そのような演奏
者(練習者)にとって、参考とすべき演奏は必ずしも1
つだけではないことを意味する。このことから、第3の
実施の形態は、自身が行った演奏(被験データ)を、複
数の他の演奏と対比できるようにしたものである。
【0263】第3の実施の形態では、自身の演奏を、2
つの他の演奏と対比できるようにしている。具体的に
は、2つの他の演奏のうちの一方を基準演奏として、そ
の基準演奏に、演奏者自身の演奏(被験演奏)、及び2
つの他の演奏のうちの他方の演奏をそれぞれ対比し、そ
れらと基準演奏の相違を分析結果としてそれぞれ表示し
ている。
【0264】例えば、上記基準演奏としては、楽譜に記
譜されている内容に忠実に従った演奏、他方の演奏とし
ては、上級者(例えば音楽の教師)による演奏を想定し
ている。このため、以降、前者についてはこれまでと同
様に基準演奏、後者については手本演奏と呼ぶことにす
る。
【0265】第3の実施の形態の構成は、第2の実施の
形態のそれに加えて、図1に示すように、手本演奏の演
奏データ(以降、手本データと呼ぶ)を格納するための
手本データRAM120を備えている。動作において
は、基準演奏を2つの演奏と個別に対比させることか
ら、第3の実施の形態では基準演奏を対比させる演奏数
が増えるだけで、基本的な動作は第2の実施の形態のそ
れと同じである。このため、第2の実施の形態から異な
る部分だけ説明する。
【0266】先ず、第3の実施の形態で採用した分析結
果の表示法について、図23を参照して説明する。この
図23は、第3の実施の形態による分析結果の表示例を
示す図である。
【0267】第3の実施の形態は、上記第2の実施の形
態と同様に、分析結果を仮想テンポで表示する。その仮
想テンポは、上述したように、基準演奏に被験演奏と手
本演奏を共に対比させることから、2種類ある。このた
め、図23に示すように、被験演奏と手本演奏の仮想テ
ンポの推移を重ねて表示させている。この仮想テンポに
よる分析結果の表示は、図1に示す表示装置117の画
面上に行われる。
【0268】図23に示すように分析結果を表示させた
場合、基準演奏と被験演奏の相違はもとより、基準演奏
と手本演奏の相違、手本演奏と被験演奏の相違を演奏者
は容易に認識することができるようになる。例えば、手
本演奏と基準演奏(楽譜に従った演奏)の相違からは、
豊かな音楽表現を実現するための効果的な押鍵タイミン
グのズレといったことが判り、その視点からも演奏者は
自身の演奏を検討することができる。このように、演奏
者はより多くの視点から自身の演奏を検討することがで
きるため、基本的な演奏操作(基準演奏を再現するよう
な演奏操作)の修得だけでなく、上級者が行うような演
奏操作(表現力が豊かな演奏操作)といった内容が異な
る他の演奏操作も修得することができる。即ち、第2の
実施の形態と比較して、演奏者の独習をより強力に支援
することができる。
【0269】次に、上記演奏分析を行い、その分析結果
を表示するためメインCPU101の動作について詳細
に説明する。そのメインCPU101の動作は、プログ
ラムROM102から読み出した制御プログラムを実行
することで実現されるものである。
【0270】第3の実施の形態では、基準演奏と被験演
奏を対比させての分析の他に、基準演奏と被験演奏を対
比させての分析を行うが、それらの実質的な内容は同じ
である。このため、第3の実施の形態による自動演奏処
理は、図19に示す第2の実施の形態のそれと基本的に
同じとなる。より具体的に言えば、ステップ1901の
演奏データ取得処理においては、基準データと被験デー
タの取得に加えて、手本データの取得も合わせて行うこ
とになり、他のステップ1902〜1906の処理にも
同様な変更は存在するが、それらはフローチャート自体
を変えるものではない。ステップ1901〜1904の
各サブルーチン処理の詳細については既に説明済みであ
るため、ステップ1905として実行される仮想テンポ
演算処理だけを、図22に示すその動作フローチャート
を参照して詳細に説明する。
【0271】先ず、ステップ2201では、基準データ
RAM112にSMF形式で格納されている基準データ
のヘッダー部から、基準演奏のテンポを取得する。続く
ステップ2202では、そのヘッダー部から分解能を更
に取得する。その後、ステップ2203の処理に移行す
る。ステップ2203では、手本データRAM120に
SMF形式で格納されている手本データのヘッダー部か
ら、その演奏の分解能を取得する。続くステップ220
4では、被験データRAM113にSMF形式で格納さ
れている被験データのヘッダー部から、その演奏の分解
能を取得する。その後、ステップ2205の処理に移行
する。
【0272】ステップ2205では、所得した基準デー
タと被験データの分解能から、それらの比rate_t
(=基準データの分解能/被験データの分解能)を算出
する。続くステップ2206では、所得した基準データ
と手本データの分解能から、それらの比rate_m
(=基準データの分解能/手本データの分解能)を算出
する。その後、ステップ2207の処理に移行する。
【0273】上記ステップ2201〜2206の処理
は、仮想テンポ演算処理における初期設定を行う処理に
相当する。ステップ2206に続くステップ2207〜
2213は、処理ループを形成している。この処理ルー
プでは、基準データ中で対象とする音符(ノートデー
タ)を順次変更しながら(移動させながら)、各音符
(ノートデータ)毎に、その音符(ノートデータ)に対
応する被験データ、及び手本データ中の音符(ノートデ
ータ)の仮想テンポをそれぞれ算出し、それらを分析用
データとしてストアしていくことが行われる。そのステ
ップ2207〜2213の処理ループにおいて対象とす
るデータは、ワークRAM104に格納されている基準
データ、被験データ、及び手本データの分析用データで
ある。
【0274】先ず、ステップ2207では、基準データ
の全ての音符(ノートデータ)を処理したか否か、言い
換えれば、各音符(ノートデータ)の仮想テンポの算出
が全て終了したか否か判定する。各音符(ノートデー
タ)の仮想テンポを全て算出した場合、その判定はYE
Sとなって一連の処理を終了する。そうでない場合に
は、その判定はNOとなってステップ2208の処理に
移行する。
【0275】ステップ2208では、基準データ中の対
象とする音符(ノートデータ)を一つ移動させ、その音
符(ノートデータ)とその一つ前の音符(ノートデー
タ)との間のイベント間時間(クロック数)time_
orgを取得する。ここで、対象とする音符(ノートデ
ータ)の指定は、カウンタを用いて行い、イベント間時
間time_orgは、対象とする音符(ノートデー
タ)の押鍵タイミングから、その一つ前の音符(ノート
データ)の押鍵タイミングを減算することで取得する。
押鍵タイミングは、図2に示すように、分析用データ中
の1次データの一つとして格納されているデータであ
る。
【0276】基準データの音符(ノートデータ)に対応
付けられた被験データ中の音符(ノートデータ)は、分
析用データ中の対応番号、タイミング対応番号、及び制
御用フラグを基に特定する。これは、手本データにおい
ても同じである。ステップ2208に続くステップ22
09では、それらのデータから、基準データ中で対象と
している音符(ノートデータ)に対応付けられた被験デ
ータの音符(ノートデータ)を特定し、上記と同様にし
て、その音符(ノートデータ)のイベント間時間tim
e_targを取得する。続くステップ2210では、
基準データ中で対象としている音符(ノートデータ)に
対応付けられた手本データの音符(ノートデータ)を特
定して、その音符(ノートデータ)のイベント間時間t
ime_mastを取得する。その後、ステップ221
1の処理に移行する。
【0277】ステップ2211では、ステップ2209
で特定した被験データの音符(ノートデータ)の仮想テ
ンポ値tempo_tを取得する。その仮想テンポ値t
empo_tは、ステップ2201で取得したテンポの
値をtempo_orgとすると、以下に示す数式によ
って算出される。
【0278】tempo_t=(time_org/
(rate_t・time_targ))・tempo
_org ステップ2211に続くステップ2212では、ステッ
プ2210で特定した被験データの音符(ノートデー
タ)の仮想テンポ値tempo_mを取得する。その仮
想テンポ値tempo_mは、ステップ2201で取得
したテンポの値をtempo_orgとすると、以下に
示す数式によって算出される。
【0279】tempo_t=(time_org/
(rate_m・time_mast))・tempo
_org ステップ2212に続くステップ2213では、ステッ
プ2211、2212で算出した仮想テンポ値temp
o_t、tempo_mを順にストアする。具体的に
は、例えば仮想テンポ値tempo_tを、ステップ2
209で特定した音符(ノートデータ)の分析用データ
の一つとしてストアし、他方の仮想テンポ値tempo
_mを、ステップ2210で特定した音符(ノートデー
タ)の分析用データの一つとしてストアする。なお、こ
れらの仮想テンポ値tempo_t、tempo_m
は、図2に示す分析用データの1項目として追加しても
良く、押鍵タイミング差分、或いは離鍵タイミング差分
等の換わりにストアさせても良い。
【0280】これら仮想テンポ値tempo_t、te
mpo_mのストアが終了すると、ステップ2207の
処理に戻る。このときには、対象とする音符(ノートデ
ータ)を一つ移動して、上記と同様に処理ループが実行
される。その処理ループにおいて、ステップ2207で
YESと判定された場合には、仮想テンポ演算処理が終
了して図19に示すステップ1906の分析結果出力処
理に移行する。その分析結果出力処理を実行すること
で、ワークRAM104に格納されている基準データ、
被験データ、及び手本データの各分析用データから、図
23に示すような分析結果が表示装置117に表示され
ることになる。
【0281】なお、第3の実施の形態では、図23に示
すように、被験演奏と手本演奏の仮想テンポを共に表示
させるようにしているが、それらを選択的に表示できる
ようにしても良い。また、更に多くの演奏を基準演奏と
対比させて、より多くの仮想テンポを表示できるように
しても良い。
【0282】度数分布や標準偏差等を分析結果として表
示する第1の実施の形態においては、第3の実施の形態
のように、複数の演奏間(例えば基準演奏と被験演奏、
基準演奏と手本演奏)の分析をそれぞれ行うようにして
も良い。そのように変形した場合であっても、上述した
理由により、その動作の流れ(図3に示す演奏分析処
理)は基本的には変形前と同じである。
【0283】また、第1および第3の実施の形態を組み
合わせて、例えば基準演奏と被験演奏間の相違は仮想テ
ンポ、基準演奏と手本演奏間の相違は度数分布と標準偏
差といったように、演奏間の相違を示す情報を演奏者が
所望の形態で表示できるようにしても良い。演奏間の相
違を基準演奏に反映させた自動再生については、各演奏
間毎に行っても良く、演奏者(ユーザ)が選択した演奏
間のものに対してのみ行うようにしても良い。
【0284】また、第2および第3の実施の形態では、
演奏データの分解能を考慮して演奏データ間の音符(ノ
ートデータ)の対応付けを行っているが、それらの演奏
データのテンポが異なることも考えられる。このことか
ら、分解能の他に、テンポを考慮して、演奏データ間の
音符(ノートデータ)の対応付けを行うようにしても良
い。テンポ、分解能の何れかが変更された場合、それに
合わせて1クロックの周期が変化する。このため、例え
ば1クロックの周期の相違に着目することで、テンポ、
及び分解能の少なくとも一方が異なっていても、演奏デ
ータ間の音符(ノートデータ)の対応付けを正確に行う
ことができるようになる。
【0285】第1〜第3の実施の形態は、電子楽器10
0に本発明を適用したものであるが、演奏情報をデジタ
ルで扱うMIDI規格が定められていることから、本発
明は、他の装置、例えばパーソナルコンピュータ(パソ
コン)に対しても容易に適用することができる。パソコ
ンは、普通、本発明を実現するために必要なハード上の
構成(メモリやCPU、データの入出力装置等)を備え
ている。このため、パソコンに対しては、本発明の機能
(動作)を実現するためのプログラムを格納するだけ
で、本発明を適用させることができる。そのプログラム
は、CD−ROMやフロッピーディスク、MO等の記憶
媒体に記憶させて配付してもよく、何らかのネットワー
クを介して配信しても良い。
【0286】
【発明の効果】以上、説明したように本発明は、演奏者
の演奏内容を手本、或いは基準となる演奏内容と対比し
て分析し、その演奏内容から異なる部分の情報、或いは
それらの間の相違を対比するための情報を具体的に数
値、或いは図形(グラフ等)で演奏者に提供する。この
ため、演奏者は自身の演奏内容を客観的、且つ具体的に
把握することができる。また、それによって演奏者は、
課題を克服するための効果的な練習を行うことができる
ので、高い練習効率を得ることができる。
【0287】また、本発明は、演奏者の演奏内容を手
本、或いは基準となる演奏内容に反映させ、その反映さ
せた演奏内容を再生させるため、演奏者は自身の演奏で
悪い点を聴感から認識(把握)することができる。ま
た、演奏者は、演奏の部分的な箇所を含め、全体的な演
奏傾向を容易に認識することができる。これにより、高
い練習効率を得ることができる。
【0288】これらを組み合わせた場合には、より高い
上記の効果を得ることができる。
【図面の簡単な説明】
【図1】本実施の形態が適用された電子楽器の構成を示
すブロック図である。
【図2】1音符当たりの分析用データの構造を示す図で
ある。
【図3】演奏分析処理の動作フローチャートである。
【図4】演奏データ取得処理の動作フローチャートであ
る。
【図5】ノート数取得処理の動作フローチャートであ
る。
【図6】SMF処理の動作フローチャートである。
【図7】チャンネルメッセージ処理の動作フローチャー
トである。
【図8】ノートオンコード処理の動作フローチャートで
ある。
【図9】ノートオフコード処理の動作フローチャートで
ある。
【図10】1次データ取得処理の動作フローチャートで
ある。
【図11】ノートマッチ処理の動作フローチャートであ
る。
【図12】基準演奏の同タイミング押鍵検出処理の動作
フローチャートである。
【図13】押鍵タイミングによるノートマッチ処理の動
作フローチャートである。
【図14】基準データポインタのイニシャル処理の詳細
を示す図である。
【図15】ノートマッチ補正処理の動作フローチャート
である。
【図16】ノートナンバーチェック処理の動作フローチ
ャートである。
【図17】差分取得処理の動作フローチャートである。
【図18】平均値取得処理の動作フローチャートであ
る。
【図19】演奏分析処理の動作フローチャートである
(第2の実施の形態)。
【図20】仮想テンポ演算処理の動作フローチャートで
ある。
【図21】分析結果の表示例を示す図である。
【図22】仮想テンポ演算処理の動作フローチャートで
ある(第3の実施の形態)。
【図23】分析結果の表示例を示す図である(第3の実
施の形態)。
【符号の説明】
101 メインCPU 102 プログラムROM 104 ワークRAM 108 楽音発生装置 112 基準データRAM 113 被験データRAM 114 シリアルインターフェイス 115 ネットワークインターフェイス 116 外部記憶装置 117 表示装置 120 手本データRAM

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 演奏者が演奏操作子群に対して行った演
    奏操作の情報である被験データと、前記演奏操作子群へ
    の目標とすべき演奏操作の情報である基準データとか
    ら、演奏者の演奏内容を分析する装置であって、 前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータの対応関係を検出するイベントマ
    ッチ手段と、 前記イベントマッチ手段が検出した対応関係に従って、
    前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータとを対比し、前記演奏イベントデ
    ータ毎に、該演奏イベントデータのパラメータの差分、
    及びイベント発生タイミングの時間差の少なくとも1つ
    の差分を取得する差分取得手段と、 前記差分取得手段が取得したパラメータの差分、及びイ
    ベント発生タイミングの時間差の少なくとも1つの差分
    を用いて、演奏者の演奏内容を分析する分析手段と、 前記分析手段の分析結果を演奏者に通知する通知手段
    と、 を具備したことを特徴とする演奏分析装置。
  2. 【請求項2】 前記分析手段は、前記差分取得手段が取
    得したパラメータの差分、及びイベント発生タイミング
    の時間差から、それらの差分の平均値、度数分布、標準
    偏差の少なくとも一つを分析結果として求め、 前記通知手段は、前記分析手段が求めた分析結果を表示
    させることにより、前記分析手段の分析結果を演奏者に
    通知する、 ことを特徴とする請求項1記載の演奏分析装置。
  3. 【請求項3】 前記分析手段は、前記差分取得手段が取
    得したパラメータの差分、及びイベント発生タイミング
    の時間差のなかの少なくとも1つの差分に基づいて前記
    基準データを変更し、 前記通知手段は、前記変更された基準データを再生させ
    る、 ことを特徴とする請求項1、または2記載の演奏分析装
    置。
  4. 【請求項4】 前記分析手段は、前記基準データの変更
    に用いた差分を強調させて、前記基準データを変更す
    る、 ことを特徴とする請求項3記載の演奏分析装置。
  5. 【請求項5】 前記分析手段は、演奏者により指定され
    たパラメータの差分に基づいて前記基準データを変更す
    る、 ことを特徴とする請求項3、または4記載の演奏分析装
    置。
  6. 【請求項6】 前記分析手段は、前記分析結果として、
    前記差分取得手段が取得したパラメータの差分、及びイ
    ベント発生タイミングの時間差の少なくとも一つを、前
    記イベントマッチ手段が検出した対応関係に従ってまと
    め、 前記通知手段は、前記分析結果を表示することにより演
    奏者に通知する、 ことを特徴とする請求項1記載の演奏分析装置。
  7. 【請求項7】 演奏者が演奏操作子群に対して行った演
    奏操作の情報である被験データと、前記演奏操作子群へ
    の目標とすべき演奏操作の情報である基準データとか
    ら、演奏者の演奏内容を分析する装置であって、 前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータの対応関係を検出するイベントマ
    ッチ手段と、 前記イベントマッチ手段が検出した対応関係に従って、
    前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータとを対比し、前記演奏イベントデ
    ータ毎に、該演奏イベントデータのパラメータの差分、
    及びイベント発生タイミングの時間差のそれぞれの差分
    を取得する差分取得手段と、 前記差分取得手段が取得したパラメータの差分、及びイ
    ベント発生タイミングの時間差のなかの少なくとも1種
    類の差分に基づいて前記基準データを変更する演奏デー
    タ変更手段と、 前記演奏データ変更手段により変更された前記基準デー
    タを再生させる再生手段と、 を具備したことを特徴とする演奏分析装置。
  8. 【請求項8】 前記演奏データ変更手段は、前記基準デ
    ータの変更に用いた差分を強調させて、前記基準データ
    を変更する、 ことを特徴とする請求項7記載の演奏分析装置。
  9. 【請求項9】 前記演奏データ変更手段は、演奏者によ
    り指定されたパラメータの差分に基づいて前記基準デー
    タを変更する、 ことを特徴とする請求項7、または8記載の演奏分析装
    置。
  10. 【請求項10】 演奏者が演奏操作子群に対して行った
    演奏操作の情報である被験データと、前記演奏操作子群
    への目標とすべき演奏操作の情報である基準データとか
    ら、演奏者の演奏内容を分析する装置であって、 前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータの対応関係を検出するイベントマ
    ッチ手段と、 前記イベントマッチ手段が検出した対応関係に従って、
    前記被験データ、及び基準データから、前記演奏イベン
    トデータの所定のパラメータを分析結果として取得する
    分析手段と、 前記分析手段の分析結果を表示する表示手段と、 を具備したことを特徴とする演奏分析装置。
  11. 【請求項11】 前記分析手段は、前記所定のパラメー
    タとして、前記演奏イベントデータ間のイベント発生間
    隔を前記被験データ、及び基準データからそれぞれ取得
    し、 前記表示手段は、前記イベント発生間隔を、前記演奏イ
    ベントデータ毎に対応させて表示する、 ことを特徴とする請求項10記載の演奏分析装置。
  12. 【請求項12】 前記イベントマッチ手段は、前記被験
    データの演奏イベントデータ、及び前記基準データの演
    奏イベントデータのイベント発生タイミングに基づいて
    それらを対応付けした後、該対応付けを、前記演奏イベ
    ントデータのパラメータであるノートナンバーに着目し
    た補正を行うことにより、前記対応関係を検出する、 ことを特徴とする請求項1〜11のいずれか1項に記載
    の演奏分析装置。
  13. 【請求項13】 前記演奏操作子群への演奏操作の情報
    であり、且つ前記基準データ、或いは被験データとは異
    なる他の少なくとも一つの演奏データを、前記基準デー
    タ、或いは被験データと対比することにより、前記演奏
    データで再生される演奏内容を更に分析する、 ことを特徴とする請求項1〜12のいずれか1項に記載
    の演奏分析装置。
  14. 【請求項14】 演奏者が演奏操作子群に対して行った
    演奏操作の情報である被験データと、前記演奏操作子群
    への目標とすべき演奏操作の情報である基準データとか
    ら、演奏者の演奏内容を分析する方法であって、 前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータの対応関係を検出し、 該検出した対応関係に従って、前記被験データの演奏イ
    ベントデータと前記基準データの演奏イベントデータと
    を対比することにより、前記演奏イベントデータ毎に、
    該演奏イベントデータのパラメータの差分、及びイベン
    ト発生タイミングの時間差の少なくとも1つの差分を取
    得し、 該取得したパラメータの差分、及びイベント発生タイミ
    ングの時間差の少なくとも1つの差分を用いて、演奏者
    の演奏内容を分析する、 ことを特徴とする演奏分析方法。
  15. 【請求項15】 演奏者が演奏操作子群に対して行った
    演奏操作の情報である被験データと、前記演奏操作子群
    への目標とすべき演奏操作の情報である基準データとか
    ら、演奏者の演奏内容を分析する方法であって、 前記被験データの演奏イベントデータと前記基準データ
    の演奏イベントデータの対応関係を検出し、 該検出した対応関係に従って、前記被験データ、及び基
    準データから、前記演奏イベントデータの所定のパラメ
    ータを取得し、 該取得した所定のパラメータを分析結果として表示す
    る、 ことを特徴とする演奏分析方法。
  16. 【請求項16】 前記演奏操作子群への演奏操作の情報
    であり、且つ前記基準データ、或いは被験データとは異
    なる他の少なくとも一つの演奏データを、前記基準デー
    タ、或いは被験データと対比して、前記演奏データで再
    生される演奏内容を更に分析する、 ことを特徴とする請求項14、または15記載の演奏分
    析方法。
  17. 【請求項17】 演奏操作子群に対する演奏操作の情報
    である演奏データを複数取得する演奏データ取得機能
    と、 前記演奏データ取得機能により取得した複数の演奏デー
    タ間で演奏イベントデータの対応関係を検出するイベン
    トマッチ機能と、 前記イベントマッチ機能により検出した対応関係に従っ
    て、前記複数の演奏データ間で前記演奏イベントデータ
    毎に、該演奏イベントデータのパラメータの差分、及び
    イベント発生タイミングの時間差の少なくとも1つの差
    分を取得する差分取得機能と、 前記差分取得機能が取得したパラメータの差分、及びイ
    ベント発生タイミングの時間差の少なくとも1つの差分
    を用いて、前記複数の演奏データのなかの少なくとも1
    つによって再生される演奏の内容を分析する分析機能
    と、 前記分析機能による分析結果を演奏者に通知する通知機
    能と、 を備えたプログラムを記憶したことを特徴とする記憶媒
    体。
  18. 【請求項18】 演奏操作子群に対する演奏操作の情報
    である演奏データを複数取得する演奏データ取得機能
    と、 前記演奏データ取得機能により取得した複数の演奏デー
    タ間で演奏イベントデータの対応関係を検出するイベン
    トマッチ機能と、 該イベントマッチ機能により検出した対応関係に従っ
    て、前記複数の演奏データから、前記演奏イベントデー
    タの所定のパラメータを分析結果としてそれぞれ取得す
    る分析機能と、 該分析機能による分析結果を表示させる表示機能と、 を備えたプログラムを記憶したことを特徴とする記憶媒
    体。
JP21489096A 1995-12-28 1996-08-14 演奏分析装置及び演奏分析方法 Expired - Fee Related JP3577561B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21489096A JP3577561B2 (ja) 1995-12-28 1996-08-14 演奏分析装置及び演奏分析方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-343501 1995-12-28
JP34350195 1995-12-28
JP21489096A JP3577561B2 (ja) 1995-12-28 1996-08-14 演奏分析装置及び演奏分析方法

Publications (2)

Publication Number Publication Date
JPH09237088A true JPH09237088A (ja) 1997-09-09
JP3577561B2 JP3577561B2 (ja) 2004-10-13

Family

ID=26520569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21489096A Expired - Fee Related JP3577561B2 (ja) 1995-12-28 1996-08-14 演奏分析装置及び演奏分析方法

Country Status (1)

Country Link
JP (1) JP3577561B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065186A (ja) * 2004-08-30 2006-03-09 Kawai Musical Instr Mfg Co Ltd テンポ情報出力装置、テンポ情報出力方法及びテンポ情報出力のためのコンピュータプログラム、タッチ情報出力装置、タッチ情報出力方法及びタッチ情報出力のためのコンピュータプログラム
JP2006171678A (ja) * 2004-11-16 2006-06-29 Yamaha Corp セッション端末
US7297857B2 (en) 2002-08-29 2007-11-20 Yamaha Corporation System of processing music performance for personalized management and evaluation of sampled data
US7525035B2 (en) 2002-09-04 2009-04-28 Kabushiki Kaisha Kawai Gakki Seisakusho Musical performance self-training apparatus
JP2009186591A (ja) * 2008-02-04 2009-08-20 Seiko Instruments Inc テンポ表示装置及びテンポ表示方法
JP2009204822A (ja) * 2008-02-27 2009-09-10 Kawai Musical Instr Mfg Co Ltd 電子鍵盤楽器
JP2010102408A (ja) * 2008-10-21 2010-05-06 Kawai Musical Instr Mfg Co Ltd 楽譜認識装置、及びコンピュータプログラム
US8809664B2 (en) 2011-09-26 2014-08-19 Casio Computer Co., Ltd. Support function recommending apparatus, a support function recommending method, a support function recommending system, and a recording medium
WO2019022117A1 (ja) * 2017-07-25 2019-01-31 ヤマハ株式会社 演奏解析方法およびプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5137176B2 (ja) * 2006-11-28 2013-02-06 株式会社タイトー リズムゲーム装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7297857B2 (en) 2002-08-29 2007-11-20 Yamaha Corporation System of processing music performance for personalized management and evaluation of sampled data
US7663044B2 (en) 2002-09-04 2010-02-16 Kabushiki Kaisha Kawai Gakki Seisakusho Musical performance self-training apparatus
US7525035B2 (en) 2002-09-04 2009-04-28 Kabushiki Kaisha Kawai Gakki Seisakusho Musical performance self-training apparatus
JP2006065186A (ja) * 2004-08-30 2006-03-09 Kawai Musical Instr Mfg Co Ltd テンポ情報出力装置、テンポ情報出力方法及びテンポ情報出力のためのコンピュータプログラム、タッチ情報出力装置、タッチ情報出力方法及びタッチ情報出力のためのコンピュータプログラム
JP4628725B2 (ja) * 2004-08-30 2011-02-09 株式会社河合楽器製作所 テンポ情報出力装置、テンポ情報出力方法及びテンポ情報出力のためのコンピュータプログラム、タッチ情報出力装置、タッチ情報出力方法及びタッチ情報出力のためのコンピュータプログラム
JP2006171678A (ja) * 2004-11-16 2006-06-29 Yamaha Corp セッション端末
JP2009186591A (ja) * 2008-02-04 2009-08-20 Seiko Instruments Inc テンポ表示装置及びテンポ表示方法
JP2009204822A (ja) * 2008-02-27 2009-09-10 Kawai Musical Instr Mfg Co Ltd 電子鍵盤楽器
JP2010102408A (ja) * 2008-10-21 2010-05-06 Kawai Musical Instr Mfg Co Ltd 楽譜認識装置、及びコンピュータプログラム
US8809664B2 (en) 2011-09-26 2014-08-19 Casio Computer Co., Ltd. Support function recommending apparatus, a support function recommending method, a support function recommending system, and a recording medium
WO2019022117A1 (ja) * 2017-07-25 2019-01-31 ヤマハ株式会社 演奏解析方法およびプログラム
JP2019028107A (ja) * 2017-07-25 2019-02-21 ヤマハ株式会社 演奏解析方法およびプログラム
US11600252B2 (en) 2017-07-25 2023-03-07 Yamaha Corporation Performance analysis method

Also Published As

Publication number Publication date
JP3577561B2 (ja) 2004-10-13

Similar Documents

Publication Publication Date Title
JP2983292B2 (ja) 仮想楽器、仮想楽器に使用するための制御ユニット、および仮想楽器を操作する方法
JP3293745B2 (ja) カラオケ装置
US5939654A (en) Harmony generating apparatus and method of use for karaoke
JP2658463B2 (ja) 自動演奏装置
EP3057090A1 (en) Technique for reproducing waveform by switching between plurality of sets of waveform data
JP3577561B2 (ja) 演奏分析装置及び演奏分析方法
JP3509545B2 (ja) 演奏情報評価装置、演奏情報評価方法及び記録媒体
JP3760833B2 (ja) カラオケ装置
JP2000148136A (ja) 音信号分析装置、音信号分析方法及び記憶媒体
JP3267777B2 (ja) 電子楽器
JP3417662B2 (ja) 演奏分析装置
JP3879524B2 (ja) 波形生成方法、演奏データ処理方法および波形選択装置
JP3261990B2 (ja) カラオケ装置
JP2007178697A (ja) 演奏評価装置、及びプログラム
JP2002323891A (ja) 楽曲分析装置、及びプログラム
JPH1078750A (ja) カラオケ装置
JP2007286087A (ja) 練習機能付き電子楽器
JP3752956B2 (ja) 演奏ガイド装置および演奏ガイド方法並びに演奏ガイドプログラムを記録したコンピュータ読み取り可能な記録媒体
JP7425558B2 (ja) コード検出装置及びコード検出プログラム
JP2614532B2 (ja) 楽音データ補正装置
JP3807333B2 (ja) メロディ検索装置およびメロディ検索プログラム
JP3767418B2 (ja) 自動演奏装置及び自動演奏制御プログラム
JP3052875B2 (ja) シーケンスデータ編集方法およびシーケンサ
JP4108850B2 (ja) 歌唱による標準的なカロリー消費量を試算する方法およびカラオケ装置
JP4743615B2 (ja) 練習機能付き電子楽器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040519

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: 20040615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040628

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20070723

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080723

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080723

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090723

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090723

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100723

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110723

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110723

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120723

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120723

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees