JP3845761B2 - Performance learning apparatus and storage medium storing performance learning processing program - Google Patents
Performance learning apparatus and storage medium storing performance learning processing program Download PDFInfo
- Publication number
- JP3845761B2 JP3845761B2 JP37199099A JP37199099A JP3845761B2 JP 3845761 B2 JP3845761 B2 JP 3845761B2 JP 37199099 A JP37199099 A JP 37199099A JP 37199099 A JP37199099 A JP 37199099A JP 3845761 B2 JP3845761 B2 JP 3845761B2
- Authority
- JP
- Japan
- Prior art keywords
- event data
- data
- idx
- note
- value
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 50
- 238000012937 correction Methods 0.000 claims description 11
- 239000011295 pitch Substances 0.000 description 74
- 238000012545 processing Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 7
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000000994 depressogenic effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Images
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、演奏をガイドする演奏教習装置及び演奏教習処理のプログラムを記憶した記憶媒体関する。
【0002】
【従来の技術】
演奏をガイドするいわゆるナビゲーション機能をもった電子楽器等の演奏教習装置が普及している。例えば、ナビゲーション機能をもつ電子鍵盤楽器においては、鍵盤の各鍵に対応してLED等の発光手段を設け、自動演奏の曲の進行にともなって音高に対応する鍵のLEDを押鍵のタイミングに合わせて点灯させ、演奏操作のガイドを行う構成になっている。ナビゲーションのモードの中には、演奏操作がなされるまで曲の進行を一時停止するいわゆる「待ちモード」があるので、初心者にとっても容易に演奏ガイドを受けることができる。ガイドする曲データは、ROM等のメモリにあらかじめ記憶されているナビゲーション専用の曲データである。
【0003】
一方、電子鍵盤楽器の多くはMIDI規格に対応しており、スタンダードMIDIファイル(SMF)の曲データを処理することができる。すなわち、フロッピーディスクその他の外部記憶媒体に記憶されているSMFや、ケーブルや通信回線を介して他のMIDI対応の外部機器との間で、多種多様の曲データのSMFを送受信する機能をもっている。したがって、外部記憶媒体や外部機器から入力した豊富な種類の曲データについても、ナビゲーション機能を用いて演奏操作のガイドを享受したいという要求が出されている。
【0004】
【発明が解決しようとする課題】
しかしながら外部からのSMFの曲データはナビゲーション専用にはなっていないので、特に初心者にとっては演奏ガイドには適さない音が含まれている場合が多い。例えば、非常に小さい音量の音や非常に短い音を挿入して曲のいわゆるノリを出したり、同じ音高の音を2つ以上重ねて特殊な効果を狙ったりする場合がある。このような音についてはガイドされたとしても演奏操作を行うことは困難である。ところが「待ちモード」においてはそのような音についても演奏操作をしなければ曲が進行しない。このため一般的なSMFの曲データについては、熟練者しかナビゲーション機能を用いた演奏練習を行うことができず、本来初心者のためのナビゲーション機能が生かされていなかった。
【0005】
本発明の課題は、外部記憶媒体や外部機器から入力した任意の曲について、ナビゲーション機能を用いて初心者でも容易に演奏ガイドを享受できるようにすることである。
【0006】
【課題を解決するための手段】
請求項1に記載の演奏教習装置の発明は、複数の楽音のイベントデータで構成された曲を入力する入力手段(実施形態においては、図1のCPU1並びに、FDDC6及びFDD11、又はMIDI・I/F7に対応する)と、この入力手段によって入力された曲のイベントデータの中から楽音の音量があらかじめ楽音の音色毎に設定した音量しきい値より小さい場合および楽音の発音時間があらかじめ楽音の音色毎に設定した時間しきい値より短い場合の少なくとも一つの場合にイベントデータを削除するデータ修正手段(実施形態においては、CPU1及びRAM3に対応する)と、このデータ修正手段によって削除されなかったイベントデータに応じて演奏操作をガイドする演奏ガイド手段(実施形態においては、CPU1並びに、LEDC5及びLED10に対応する)と、を備えた構成になっている。
【0007】
請求項2に記載の記憶媒体の発明は、複数の楽音のイベントデータで構成された曲を入力する入力手順と、この入力手順によって入力された曲のイベントデータの中から楽音の音量があらかじめ楽音の音色毎に設定した音量しきい値より小さい場合および楽音の発音時間があらかじめ楽音の音色毎に設定した時間しきい値より短い場合の少なくとも一つの場合にイベントデータを削除するデータ修正手順と、このデータ修正手段によって削除されなかったイベントデータに応じて演奏操作をガイドする演奏ガイド手順と、を実行する演奏教習処理のプログラムを記憶している。
【0008】
請求項1又は請求項2に記載の発明によれば、曲のイベントデータの中から演奏教習に適さない条件のイベントデータを削除して、残りのイベントデータについて演奏ガイドを行う。
【0009】
【発明の実施の形態】
以下、本発明による演奏教習装置の第1〜第5実施形態について図を参照して説明する。この装置は、電子鍵盤楽器と同様の構成であり、鍵盤、スイッチ、スピーカ等を具備している。
【0010】
図1は、各実施形態における楽音発生装置のシステム構成を示している。図1において、CPU1は、そのシステムバスに接続された各部との間において、データ及びコマンドを授受してこの装置全体を制御する。システムバスには、ROM2、RAM3、キースキャンI/F(インターフェース)4、LEDC5、FDDC6、MIDI・I/F(インターフェース)7、音源8が接続されている。ROM2には、CPU1が実行する制御プログラムやイニシャライズにおける初期データがあらかじめ記憶されている。RAM3は、CPU1のワークエリアであり、CPU1によって処理される曲データやその他のデータが一時的に記憶される。また、RAM3には、制御プログラムの実行に必要な各種のレジスタやフラグのエリアが設けられている。
【0011】
キースキャンI/F4は、鍵盤及びスイッチ群からなる操作部9に接続されており、CPU1のスキャンコマンドに応じて各鍵の押鍵・離鍵の状態、各スイッチのオン・オフの状態を検出する。LEDC5は、各鍵に対応して設けられた複数のLEDに接続されており、CPU1の点灯(オン)コマンド及び消灯(オフ)コマンドに応じて各LEDを駆動する。このLEDの点灯によって演奏ガイドがなされる。
【0012】
FDDC6は、FDD(フロッピーディスク・ドライバ)11を制御するコントローラであり、CPU1のロードコマンドに応じてフロッピーディスクに記憶されているSMFの曲のイベントデータを読み出してRAM3に一旦ストアする。MIDI・I/F7は、外部機器から送信されるSMFの曲のイベントデータを受信してRAM3に一旦ストアする。音源8は、CPU1の発音コマンド又は消音コマンド、並びにRAM3から読み出された曲のイベントデータ及び音色等のパラメータに応じて楽音信号を生成し、サウンドシステム12によって発音・消音を制御する。
【0013】
図2は、本実施形態における曲データのフォーマットを示している。SMFのデータフォーマットでは、イベントデータとタイムデータとが交互に配列された構成になっているが、本実施形態においては説明を簡便にするために、各アドレスごとのイベントデータがタイムデータを含む構成としている。図2(1)は、フロッピーディスク等の外部記憶媒体に記憶されている曲データの構成を示している。この図において、IDXは各イベントデータのアドレスを示している。イベントデータは、デルタタイムΔT、コマンドCMD、音高データNOTE、及びベロシティデータVELで構成されている。
【0014】
ΔTはそのイベントデータの開始時間を表している。CMDはイベントデータのコマンドの内容を示し、「90」はチャンネル0の発音コマンド、「80」はチャンネル0の消音コマンドを表している。その他、コントロールチェンジやプログラムチェンジ等を表すコマンドがある。図2(1)において、IDX「0」及び「1」のイベントデータは、「C4」の音高が「50」の音量値で発音され、発音時間「14」経過後に消音する楽音を表している。また、IDX「2」及び「3」のイベントデータは、「C4」の音高が「08」の音量値で発音され、発音時間「08」経過後に消音する楽音を表している。
【0015】
図2(2)は、後述するデータ修正によって一部のイベントデータが削除された後、RAM3にストアされた曲データのフォーマットを示している。この図において、ADはRAM3のエリアのアドレスを示している。ΔT、CMD、NOTE、VELのデータについては図2(1)と同じである。
【0016】
次に、第1実施形態における演奏教習処理について、図3〜図7を参照して説明する。
図3はCPU1によって実行される演奏教習処理のメインフローである。所定のイニシャライズ(ステップA1)の後、スイッチ処理(ステップA2)、曲ロード処理(ステップA3)、ナビゲーション処理(ステップA4)、鍵盤処理(ステップA5)、音源処理(ステップA6)、その他の処理(ステップA7)を実行する。そして、パワーオフになったか否かを判別する(ステップA8)。パワーオフでない場合には、ステップA2からステップA7までの処理ループを繰り返す。パワーオフになったときは、パワーオフ処理(ステップA9)を行ってこのフローを終了する。
【0017】
このメインフローの実行中において、2種類のタイマインタラプトが入るとそれぞれ対応するタイマインタラプト処理を実行する。タイマインタラプト1は、5〜10msec程度ごとの割り込みであり、このタイマインタラプト1があるとタイマレジスタT1の値をインクリメントして(ステップA10)、メインフローに戻る。タイマインタラプト2は、曲のテンポに対応した分解能での割り込み(クロック割り込み)であり、このタイマインタラプト2があるとタイマレジスタT2の値をデクリメントして(ステップA11)、メインフローに戻る。なお、T1及びT2の値は、イニシャライズでは0にリセットされている。
【0018】
図4及び図5は、図3のメインフローにおけるステップA2のスイッチ処理のフローである。図4のフローにおいて、曲ロードスイッチがオンされたか否かを判別し(ステップB1)、オンされたときはロードフラグLFの値を反転する(ステップB2)。そして、反転されたLFの値が1(曲ロード)であるか否かを判別する(ステップB3)。この値が1である場合には、IDXの値を0にセットし(ステップB4)、ADの値を0にセットする(ステップB5)。すなわちフロッピーディスクの曲データの先頭アドレスを指定するとともに、RAM3における曲データの記憶エリアの先頭アドレスを指定する。そしてメインフローに戻る。ステップB3において、LFの値が0である場合は直ちにメインフローに戻る。
【0019】
ステップB1において、曲ロードスイッチがオンでない場合には、レッスン(0)スイッチがオンされたか否かを判別する(ステップB6)。このスイッチがオンされたときは、レッスンモードのレジスタMODEの値を0にセットする(ステップB7)。このスイッチがオンでない場合には、レッスン(1)スイッチがオンされたか否かを判別する(ステップB8)。このスイッチがオンされたときは、MODEの値を1にセットする(ステップB9)。このスイッチがオンでない場合には、レッスン(2)スイッチがオンされたか否かを判別する(ステップB10)。このスイッチがオンされたときは、MODEの値を2にセットする(ステップB11)。MODEの値をセットした後はメインフローに戻る。
【0020】
MODEの値が0の場合には、発音のイベントデータに応じて対応する鍵のLED10を点灯させて演奏ガイドを行うが、押鍵を待つことなく曲データを進行させる。MODEの値が1である場合には、発音のイベントデータに応じて対応する鍵のLED10を点灯させて演奏ガイドを行うとともに、いずれかの鍵の押鍵があるまで曲データの進行を中断する。MODEの値が2である場合には、発音のイベントデータに応じて対応する鍵のLED10を点灯させて演奏ガイドを行うとともに、そのイベントデータに対応する鍵の押鍵があるまで曲データの進行を中断する。
【0021】
レッスンスイッチ(0)、(1)、(2)のいずれのスイッチもオンでない場合には、図5のフローにおいて、再生スイッチがオンされたか否かを判別する(ステップB12)。このスイッチがオンされたときは、スタートフラグSTFの値を反転させる(ステップB13)。そして、反転されたSTFの値が1(再生)であるか否かを判別する(ステップB14)。この値が1である場合には、ADのアドレス値を0(先頭アドレス)にセットし(ステップB15)、そのアドレスのイベントデータのΔTの値をT2にセットする(ステップB16)。そして、タイマインタラプトを許可し(ステップB17)、メインフローに戻る。
【0022】
ステップB14においてSTFが0(再生停止)である場合には、タイマインタラプトを禁止する(ステップB18)。そしてメインフローに戻る。。ステップB12において、再生スイッチがオンでない場合には、その他のスイッチがオンされたか否かを判別する(ステップB19)。他のいずれかのスイッチがオンされたときは、そのスイッチに対応する処理を行い(ステップB20)、メインフローに戻る。なお、いずれのスイッチもオンされない場合には、直ちにメインフローに戻る。
【0023】
図6は、図3のメインフローにおけるステップA3の曲ロード処理のフローである。まず、LFの値が1(曲ロード)であるか否かを判別し(ステップC1)、この値が0である場合には曲ロードでないので、直ちにメインフローに戻る。LFの値が1である場合には、IDXのアドレスのイベントデータであるEVENT(IDX)をフロッピーディスクからロードする(ステップC2)。そして、そのイベントデータのコマンドCMD(IDX)がノートオンであるか否かを判別する(ステップC3)。
【0024】
CMD(IDX)がノートオンである場合には、そのイベントデータのベロシティデータであるVEL(IDX)の値があらかじめ設定した最小値より小さいか否かを判別する(ステップC4)。VEL(IDX)の値が最小値以上である場合には、ロードしたイベントデータEVENT(IDX)をADのアドレスで指定するRAM3のエリアMEM(AD)にストアする(ステップC5)。次に、ADのアドレスをインクリメントし(ステップC6)、IDXのアドレスをインクリメントする(ステップC7)。そして、ロードすべき曲データが終了したか否かを判別する(ステップC8)。曲データが終了していない場合には、ステップC2に移行して次のイベントデータをロードする。
【0025】
ステップC4において、VEL(IDX)の値が最小値未満である場合には、そのイベントデータの音高を示すNOTE(IDX)のデータをレジスタPASSにストアする(ステップC9)。PASSは配列構造になっており、複数の音高データをストアすることができるが、この配列構造は本発明に直接関係しないので、詳細な説明は省略する。この実施形態及び後述する他の実施形態では、PASSは1つの音高データをストアするレジスタとして機能する。
【0026】
ステップC4において、VEL(IDX)の値が最小値未満である場合には、そのイベントデータをRAM3にストアせずに、そのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する(ステップC10)。次に、IDXのアドレスをインクリメントする(ステップC7)。そして、ロードすべき曲データが終了したか否かを判別する(ステップC8)。曲データが終了していない場合には、ステップC2に移行して次のイベントデータをロードする。
【0027】
ステップC3においてCMD(IDX)がノートオンでない場合には、CMD(IDX)がノートオフであるか否かを判別する(ステップC11)。ノートオフでなくコントロールチェンジやプログラムチェンジ等のコマンドである場合には、ステップC5においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。ステップC11においてCMD(IDX)がノートオフである場合には、その音高データNOTE(IDX)がステップC9においてPASSにストアした音高データと同一でないか否かを判別する(ステップC12)。同一でない場合には、ステップC5においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0028】
音高データが同一である場合には、そのノートオフのイベントデータをRAM3にストアせずに、NOTE(IDX)の音高データをPASSから削除し(ステップC13)、ステップC10においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。音高データをPASSから削除することにより、その後のイベントデータが誤って削除されないようにする。また、デルタタイムの値を次のイベントデータに加算することにより、データ削除による時間ずれの発生を防止する。次に、ステップC7においてADのアドレスをインクリメントして、次のイベントデータを指定する。そして、指定したイベントデータがあるか否か、すなわちロードすべき曲データが終了したか否かを判別する(ステップC8)。
【0029】
そして、曲データが終了でない限り、ステップC2からステップC7に至る処理ループを繰り返し実行して、音量が設定した最小値より小さいイベントデータについてはRAM3にはストアしない。ステップC8においてロードすべき曲データが終了したときは、LFを0にセットして(ステップC14)、メインフローに戻る。
【0030】
例えば、図2(1)に示す曲データにおいて、アドレスIDX=2に対応すエリアのノートオンのイベントデータにおけるVELの値は08である。いま音量の最小値が10に設定されているとすると、このイベントデータ及び対応するノートオフのイベントデータ(IDX=3)はRAM3にストアせずに削除する。したがって、RAM3における曲データは図2(2)に示すように修正される。
【0031】
図7は、図3のメインフローにおけるステップA4のナビゲーション処理のフローである。まず、STFが1(ナビゲーション動作状態)であるか否かを判別し(ステップD1)、STFが1である場合にはT2の値が0に達しているか否かを判別する(ステップD2)。ステップD1においてSTFが0(ナビゲーション停止状態)である場合、又はステップD2においてT2の値が0に達しておらずイベントデータの開始タイミングに達していない場合には、直ちにこのフローを終了してメインフローに戻る。
【0032】
ステップD2においてT2の値が0に達しているときは、RAM3のMEM(AD)のエリアからEVENT(AD)を読み込み(ステップD3)、そのCMD(AD)がノートオンであるか否かを判別する(ステップD4)。ノートオンである場合には、その音高に対応するLED駆動用のレジスタであるLED[NOTE(AD)]をオンすなわち点灯にセットする(ステップD5)。
【0033】
次に、MODEの値が1又は2であるか否かを判別する(ステップD6)。すなわち押鍵を待つモードであるか否かを判別する。MODEの値が1又は2である場合には、タイマインタラプトを禁止して(ステップD7)、押鍵があるか否かを判別する(ステップD8)。押鍵があったときはMODEの値が2であるか否かを判別する(ステップD9)。MODEの値が2である場合には、レジスタKEYのデータである押鍵された鍵番号と、イベントデータの音高データであるNOTE(AD)とが一致しているか否かを判別する(ステップD10)。すなわち、LEDの点灯に対応した鍵が押鍵されたか否かを判別する。押鍵がされない場合、又はMODEが2のとき押鍵された鍵が間違っている場合には、ステップD8において押鍵の有無の判別を続行する。
【0034】
MODEの値が2の場合でかつLEDの点灯に対応した鍵が押鍵されたとき、又は、MODEの値が1でいずれかの鍵が押鍵されたときは、タイマインタラプトを許可する(ステップD11)。この後、又はステップD6においてMODEの値が0で押鍵を待たないモードの場合には、ADのアドレスをインクリメントして(ステップD12)、次のイベントデータを指定する。そして、指定したイベントデータがあるか否か、すなわち曲データが終了したか否かを判別する(ステップD13)。曲データの終了でなく指定したイベントデータがある場合には、そのイベントデータのΔT(AD)のデルタタイムの値をT2にセットする(ステップD14)。そしてメインフローに戻る。
【0035】
ステップD4においてCMD(AD)がノートオンでない場合には、CMD(AD)がノートオフであるか否かを判別する(ステップD15)。ノートオフである場合には、その音高に対応するレジスタLED[NOTE(AD)]をオフすなわち消灯にセットする(ステップD16)。そして、ステップD12に移行してADをインクリメントして次のイベントデータを指定する。また、ステップD11においてCMD(AD)がノートオフでない場合、すなわちコントロールチェンジやプログラムチェンジ等、押鍵・離鍵に関係ないコマンドである場合には、ステップD12に移行してADをインクリメントして次のイベントデータを指定する。
【0036】
ステップD13において曲データが終了したときは、タイマインタラプトを禁止して(ステップD17)、STFを0(ナビゲーション停止状態)にセットする(ステップD18)。そしてメインフローに戻る。
【0037】
このように上記第1実施形態においては、曲のイベントデータの中から演奏教習に適さないようなあまりに小さい音量のイベントデータは削除して、音量がある程度大きいイベントデータについて演奏ガイドを行う。
【0038】
次に、本発明の第2実施形態について説明する。この第2実施形態及び後述する第3〜第5実施形態におけるCPU1のメインフロー、並びにメインフローにおけるスイッチ処理及びナビゲーション処理は、図3並びに図4、図5及び図7に示したフローと同じであるので、図面及びその説明は省略する。
【0039】
図8は、第2実施形態における曲ロード処理のフローである。まず、LFの値が1(曲ロード)であるか否かを判別し(ステップE1)、この値が0である場合には曲ロードでないので、直ちにメインフローに戻る。LFの値が1である場合には、IDXのアドレスのイベントデータであるEVENT(IDX)をフロッピーディスクからロードする(ステップE2)。そして、そのイベントデータのコマンドCMD(IDX)がノートオンであるか否かを判別する(ステップE3)。
【0040】
CMD(IDX)がノートオンである場合には、このイベントデータの発音時間(音長)を計測する。まず、現在ロードしているイベントデータより後のイベントデータを先読みするためのポインタmに、IDX+1の値すなわち次のイベントデータのアドレスをセットする(ステップE4)。次に、CMD(m)のデータがノートオフであるか否かを判別する(ステップE5)。ノートオフでなくコントロールチェンジやプログラムチェンジ等である場合には、ノートオンのイベントデータとノートオフのイベントデータとの間に、ノートデータ以外のデータが挿入されている場合である。この場合には、ΔT(m+1)にΔ(m)の値を加算する(ステップE6)。すなわちノートデータ以外のデータのデルタタイムを次のイベントデータに加算する。
【0041】
次に、mをインクリメントして(ステップE7)、次のイベントデータを指定する。そしてステップE5においてそのイベントデータのCMD(m)を判別する。CMD(m)がノートオフである場合には、そのΔT(m)のデルタタイムはステップE2においてロードしたEVENT(IDX)の発音時間を示している。したがって、このΔT(m)の値があらかじめ設定した最小値より小さいか否かを判別する(ステップE8)。
【0042】
ΔT(m)の値が最小値以上である場合には、ロードしたイベントデータをADのアドレスで指定するRAM3のエリアMEM(AD)にストアする(ステップE9)。次に、ADのアドレスをインクリメントし(ステップE10)、IDXのアドレスをインクリメントする(ステップE11)。そして、ロードすべき曲データが終了したか否かを判別する(ステップE12)。曲データが終了していない場合には、ステップE2に移行して次のイベントデータをロードする。
【0043】
ステップE8において、ΔT(m)の値が最小値未満である場合には、そのイベントデータをRAM3にストアせずに、そのイベントデータの音高データNOTE(m)の値をレジスタPASSにストアする(ステップE13)。また、そのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する(ステップE14)。次に、IDXのアドレスをインクリメントする(ステップE11)。そして、ロードすべき曲データが終了したか否かを判別する(ステップE12)。曲データが終了していない場合には、ステップE2に移行して次のイベントデータをロードする。
【0044】
ステップE3においてCMD(IDX)がノートオンでない場合には、CMD(IDX)がノートオフであるか否かを判別する(ステップE15)。ノートオフでなくコントロールチェンジやプログラムチェンジ等のコマンドである場合には、ステップE9においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。ステップE15においてCMD(IDX)がノートオフである場合には、その音高データNOTE(IDX)がステップE13においてPASSにストアした音高データと同一でないか否かを判別する(ステップE16)。同一でない場合には、ステップE9においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0045】
音高データが同一である場合には、そのイベントデータをRAM3にストアせずに、NOTE(IDX)をPASSから削除する(ステップE17)。そして、ステップE14においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。次に、ステップE11においてADのアドレスをインクリメントして、次のイベントデータを指定する。そして、指定したイベントデータがあるか否か、すなわちロードすべき曲データが終了したか否かを判別する(ステップE12)。
【0046】
そして、曲データが終了でない限り、ステップE2からステップE11に至る処理ループを繰り返し実行して、発音時間が設定した最小値より小さいイベントデータについては、RAM3にはストアせずに削除する。ステップE12において、ロードすべき曲データが終了したときは、LFを0にセットして(ステップE18)、メインフローに戻る。
【0047】
例えば、図2(1)に示す曲データにおいて、アドレスIDX=3に対応すエリアのノートオフのイベントデータにおけるΔTの値は08である。いま発音時間の最小値が10に設定されているとすると、このイベントデータ及び対応するノートオンのイベントデータ(IDX=2)はRAM3にストアせずに削除する。したがって、RAM3における曲データは図2(2)に示すように修正される。
【0048】
このように上記第2実施形態においては、曲のイベントデータの中から演奏教習に適さないようなあまりに短い発音時間のイベントデータは削除して、発音時間がある程度長いイベントデータについて演奏ガイドを行う。
【0049】
次に、本発明の第3実施形態について、図9に示すCPU1のフローを参照して説明する。図9のフローは、ある音高のイベントデータの発音時間が終了する前に、同じ音高のイベントデータの発音が開始する場合の曲ロード処理である。このようなイベントデータの目的は特殊な効果を狙うためであるが、鍵盤楽器では1つの音高に対して1つの鍵のみが対応するので、同じ音高の2つのイベントデータについてナビゲーションをすることはできない。この第3実施形態では、先に発音開始になるイベントデータについてのみ演奏ガイドを行う。
【0050】
図9のフローにおいて、まず、LFの値が1(曲ロード)であるか否かを判別し(ステップF1)、この値が0である場合には曲ロードでないので、直ちにメインフローに戻る。LFの値が1である場合には、IDXのアドレスのイベントデータであるEVENT(IDX)をフロッピーディスクからロードする(ステップF2)。そして、そのイベントデータのコマンドCMD(IDX)がノートオンであるか否かを判別する(ステップF3)。
【0051】
CMD(IDX)がノートオンである場合には、その音高データNOTE(IDX)がレジスタPASSにストアされている音高データでないか否かを判別する(ステップF4)。PASSは削除するイベントデータの音高データをストアするレジスタである。NOTE(IDX)がPASSにストアされている音高データでない場合には、ポインタmにIDX+1の値すなわち次のイベントデータのアドレスをセットする(ステップF5)。そして、CMD(m)のデータがノートオンであるか否かを判別する(ステップF6)。すなわち、ノートオンのイベントデータの発音時間が終了する前に、別のノートオンのイベントデータがあるか否かを判別する。
【0052】
CMD(m)のデータがノートオンでない場合には、CMD(m)のデータがノートオフであるか否かを判別する(ステップF7)。ノートオフでなくコントロールチェンジやプログラムチェンジ等である場合には、mをインクリメントして(ステップF8)、ステップF6においてさらに次のイベントデータがノートオンであるか否かを判別する。CMD(m)のデータがノートオンである場合には、そのイベントデータの音高データNOTE(m)がロードしたイベントデータの音高データNOTE(IDX)と同じであるか否かを判別する(ステップF9)。
【0053】
両者の音高データが異なる場合には、ロードしたイベントデータをADのアドレスで指定するRAM3のエリアMEM(AD)にストアする(ステップF10)。次に、ADのアドレスをインクリメントし(ステップF11)、IDXのアドレスをインクリメントする(ステップF12)。そして、ロードすべき曲データが終了したか否かを判別する(ステップF13)。曲データが終了していない場合には、ステップF2に移行して次のイベントデータをロードする。
【0054】
ステップF9において、両者の音高データが同じである場合には、NOTE(m)をPASSにストアし(ステップF14)、フラグOFFを1にセットする(ステップF15)。そして、ステップF10においてイベントデータEVENT(IDX)をMEM(AD)にストアする。すなわち、先に発音を開始するイベントデータをRAM3にストアする。この後、ステップF11、ステップF12を経て、ステップF13において曲データの終了でないので、ステップF2に移行して次のイベントデータをロードする。
【0055】
ロードしたイベントデータがノートオンであり、しかもその音高データNOTE(IDX)がステップF14においてPASSにストアした音高データと同じ場合には、そのイベントデータをRAM3にストアせずに、ステップF4からステップF16に移行して、そのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。次に、IDXのアドレスをインクリメントする(ステップF12)。そして、ロードすべき曲データが終了したか否かを判別する(ステップF13)。曲データが終了していない場合には、ステップF2に移行して次のイベントデータをロードする。
【0056】
ステップF3においてCMD(IDX)がノートオンでない場合には、CMD(IDX)がノートオフであるか否かを判別する(ステップF17)。ノートオフでなくコントロールチェンジやプログラムチェンジ等のコマンドである場合には、ステップF10においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。ステップF17においてCMD(IDX)がノートオフである場合には、その音高データNOTE(IDX)がステップF14においてPASSにストアした音高データと同一でないか否かを判別する(ステップF18)。同一でない場合には、ステップF10においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0057】
音高データがPASSにストアされているものと同一である場合には、OFFが1であるか否かを判別する(ステップF19)。OFFが1である場合にはこれを0にセットして(ステップF20)、ステップF10においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。この場合のノートオフのイベントデータは、先に発音指示されたイベントデータ(RAM3にストアされたイベントデータ)に対する消音指示のノートオフであるのでRAM3にストアする。
【0058】
この後、ステップF11〜ステップF13を経てステップF2に移行し、次のイベントデータをロードしたとき、そのCMD(IDX)がノートオフで、しかもPASSにストアした音高データと同じである場合には、ステップF17、ステップF18、ステップF19に移行する。そして、ステップF19においてOFFが0になっているので、このイベントデータはRAM3にストアしない。すなわちこのイベントデータは、後に発音指示されたイベントデータ(削除されたイベントデータ)に対する消音指示のノートオフであるので、RAM3にはストアしない。
【0059】
そして、NOTE(IDX)の音高データをPASSから削除して(ステップF21)、ステップF16においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。次にステップF12においてIDXをインクリメントし、ステップF13において曲データが終了か否かを判別する。曲データが終了でない限り、ステップF2〜ステップF12の処理ループを繰り返し実行する。ステップF13において、ロードすべき曲データが終了したときは、LFを0にセットして(ステップF22)、メインフローに戻る。
【0060】
このように上記第3実施形態においては、曲のイベントデータの中から同じ音高で発音時間が重複している2つの楽音のイベントデータについては演奏教習に適さないため、後に発音開始した楽音のイベントデータは削除して、先に発音を開始した楽音のイベントデータのみについて演奏ガイドを行う。
【0061】
なお、上記第3実施形態においては、発音時間が重複している2つの楽音のイベントデータを例にとって説明したが、発音時間が重複している3つ以上のイベントデータについてもデータ削除の処理は基本的に同じである。この場合には、PASSの配列に何番目のイベントデータであるかを識別する情報をストアすればよい。
【0062】
次に、本発明の第4実施形態について、図10に示すCPU1のフローを参照して説明する。図10のフローは、第3実施形態と同様に、ある楽音のイベントデータの発音時間が終了する前に、同じ音高で別の楽音のイベントデータが発音開始する場合の曲ロード処理である。ただしこの第4実施形態では、2つの楽音のうち音量の小さい楽音のイベントデータは削除して、音量の大きい楽音のイベントデータについてのみ演奏ガイドを行う。
【0063】
図10のフローにおいて、まず、LFの値が1(曲ロード)であるか否かを判別し(ステップG1)、この値が0である場合には曲ロードでないので、直ちにメインフローに戻る。LFの値が1である場合には、IDXのアドレスのイベントデータであるEVENT(IDX)をフロッピーディスクからロードする(ステップG2)。そして、そのイベントデータのコマンドCMD(IDX)がノートオンであるか否かを判別する(ステップG3)。
【0064】
CMD(IDX)がノートオンである場合には、その音高データNOTE(IDX)がレジスタPASSにストアされている音高データでないか否かを判別する(ステップG4)。NOTE(IDX)がPASSにストアされている音高データでない場合には、フラグOFF1が1であるか否かを判別する(ステップG5)。OFF1が1の場合は、同じ音高データのノートオフのイベントデータのうち、最初にロードしたイベントデータは削除し、後にロードしたイベントデータはRAM3にストアする。OFF1の値によってロードしたノートオフのイベントデータが最初のものか後のものかを識別する。OFF1が1である場合には、NOTE(IDX)をPASSにストアする(ステップG6)。
【0065】
次に、ポインタmにIDX+1の値すなわち次のイベントデータのアドレスをセットする(ステップG7)。OFF1が0である場合には、ステップG6におけるNOTE(IDX)のPASSへのストアを行わず、ステップG7においてmにIDX+1の値をセットする。ステップG7の後、CMD(m)のデータがノートオンであるか否かを判別する(ステップG8)。すなわち、ノートオンのイベントデータの発音時間が終了する前に、次のノートオンのイベントデータがあるか否かを判別する。
【0066】
CMD(m)のデータがノートオンでない場合には、CMD(m)のデータがノートオフであるか否かを判別する(ステップG9)。ノートオフでなくコントロールチェンジやプログラムチェンジ等である場合には、mをインクリメントして(ステップG10)、ステップG8においてさらに次のイベントデータがノートオンであるか否かを判別する。CMD(m)がノートオンである場合には、そのイベントデータの音高データNOTE(m)がロードしたイベントデータの音高データNOTE(IDX)と同じであるか否かを判別する(ステップG11)。
【0067】
両者の音高データが異なる場合には、ロードしたイベントデータをADのアドレスで指定するRAM3のエリアMEM(AD)にストアする(ステップG12)。次に、ADのアドレスをインクリメントし(ステップG13)、IDXのアドレスをインクリメントする(ステップG14)。そして、ロードすべき曲データが終了したか否かを判別する(ステップG15)。曲データが終了していない場合には、ステップG2に移行して次のイベントデータをロードする。
【0068】
ステップG11において、両者の音高データが同じ場合には、VEL(m)とVEL(IDX)との音量の大小を比較する(ステップG16)。VEL(IDX)の値がVEL(m)の値より大きい場合、すなわちロードしたノートオンのイベントデータの音量が次のノートオンのイベントデータの音量よりも大きい場合には、音量の小さい方の楽音を削除するために、その楽音の音高データNOTE(m)をPASSにストアする(ステップG17)。次に、フラグOFF2に1をセットする(ステップG18)。
【0069】
OFF1が2の場合は、同じ音高データのノートオフのイベントデータのうち、最初にロードしたイベントデータはRAM3にストアし、後にロードしたイベントデータは削除する。OFF2の値によってロードしたノートオフのイベントデータが最初のものか後のものかを識別する。OFF2を1にセットした後、ロードしたイベントデータをMEM(AD)にストアする(ステップG12)。そして、ADのアドレスをインクリメントし(ステップG13)、IDXのアドレスをインクリメントする(ステップG14)。
【0070】
ステップG16において、VEL(IDX)の値がVEL(m)の値より小さい場合、すなわちロードしたノートオンのイベントデータの音量が次のノートオンのイベントデータの音量よりも小さい場合には、OFF1を1にセットする(ステップG19)。すなわち、ロードしたノートオンのイベントデータに対応するノートオフのイベントデータを削除するためのフラグ処理を行う。そして、ロードしたノートオンのイベントデータはRAM3にストアせず、そのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する(ステップG20)。そして、IDXをインクリメントして次にロードすべきイベントデータを指定する(ステップG14)。
【0071】
ステップG14においてIDXをインクリメントした後は、ロードすべき曲データが終了したか否かを判別する(ステップG15)。曲データが終了していない場合には、ステップG2に移行して次のイベントデータをロードする。ステップG3においてCMD(IDX)がノートオンでない場合には、CMD(IDX)がノートオフであるか否かを判別する(ステップG21)。ノートオフでなくコントロールチェンジやプログラムチェンジ等のコマンドである場合には、ステップG12においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0072】
また、ステップG9においてCMD(m)がノートオフである場合には、そのイベントデータは、ロードしたノートオンのイベントデータに対するノートオフのイベントデータであるか、あるいは以前にRAM3にストアした他の音高のノートオフのイベントデータである。この場合には、ロードしたノートオンのイベントデータの楽音の発音時間内に同じ音高の他の楽音は重複していない。したがって、ロードしたノートオンのイベントデータEVENT(IDX)をMEM(AD)にストアする(ステップG12)。
【0073】
ステップG2でロードしたイベントデータのCMD(IDX)がノートオンでなくノートオフである場合(ステップG21)には、その音高データNOTE(IDX)がステップG6においてPASSにストアした音高データと同一でないか否かを判別する(ステップG22)。同一の音高データでない場合には、そのイベントデータは、以前にRAM3にストアした他の音高のノートオフのイベントデータである。この場合には、ロードしたノートオフのイベントデータEVENT(IDX)をMEM(AD)にストアする(ステップG12)。
【0074】
ステップG22において、ノートオフの音高データがPASSにストアされているものと同一である場合には、OFF2が1であるか否かを判別する(ステップG23)。OFF2が1である場合には、最初のノートオフのイベントデータはRAM3にストアするので、OFF2を0にセットして(ステップG24)、ステップG12においてそのノートオフのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0075】
ステップG23においてOFF2が0である場合には、OFF1が1であるか否かを判別する(ステップG25)。OFF1が1である場合には、ロードしたノートオフのイベントデータを削除する必要がある。この場合には、OFF1を0にセットする(ステップG26)。また、後にロードするノートオフのイベントデータを削除しないように、NOTE(IDX)をPASSから削除する(ステップG27)。そして、ステップG20においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。
【0076】
ステップG23においてOFF2が0の場合で、ステップG25においてOFF1も0の場合には、後にロードしたノートオフのイベントデータを削除する場合である。この場合には、NOTE(IDX)をPASSから削除する(ステップG27)。そして、ステップG20においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。
【0077】
次にステップG14においてIDXをインクリメントし、ステップG15において曲データが終了か否かを判別する。曲データが終了でない限り、ステップG2〜ステップG14の処理ループを繰り返し実行する。ステップG15において、ロードすべき曲データが終了したときは、LFを0にセットして(ステップG28)、メインフローに戻る。
【0078】
このように上記第4実施形態においては、曲のイベントデータの中から同じ音高で発音時間が重複している2つの楽音のイベントデータについては演奏教習に適さないため、音量が小さい方の楽音のイベントデータを削除し、音量が大きい方の楽音のイベントデータのみをRAM3にストアして演奏ガイドを行う。
【0079】
この場合において、削除した楽音による音量の低下を補うために、RAM3にストアする楽音のイベントデータのVELの値を大きくする修正を施してストアする処理を行ってもよい。
【0080】
次に、本発明の第5実施形態について、図11に示すCPU1のフローを参照して説明する。図11のフローもまた、ある楽音のイベントデータの発音時間が終了する前に、同じ音高で別の楽音のイベントデータが発音開始する場合の曲ロード処理である。ただしこの第5実施形態では、このような同じ音高2つの楽音を連続した1つの楽音に修正して演奏ガイドを行う。
【0081】
図11のフローにおいて、まず、LFの値が1(曲ロード)であるか否かを判別し(ステップH1)、この値が0である場合には曲ロードでないので、直ちにメインフローに戻る。LFの値が1である場合には、IDXのアドレスのイベントデータであるEVENT(IDX)をフロッピーディスクからロードする(ステップH2)。そして、そのイベントデータのコマンドCMD(IDX)がノートオンであるか否かを判別する(ステップH3)。
【0082】
CMD(IDX)がノートオンである場合には、その音高データNOTE(IDX)がレジスタPASSにストアされている音高データでないか否かを判別する(ステップH4)。PASSは削除するイベントデータの音高データをストアするレジスタである。NOTE(IDX)がPASSにストアされている音高データでない場合には、ポインタmにIDX+1の値すなわち次のイベントデータのアドレスをセットする(ステップH5)。そして、CMD(m)のデータがノートオンであるか否かを判別する(ステップH6)。すなわち、ノートオンのイベントデータの発音時間が終了する前に、別のノートオンのイベントデータがあるか否かを判別する。
【0083】
CMD(m)のデータがノートオンでない場合には、CMD(m)のデータがノートオフであるか否かを判別する(ステップH7)。ノートオフでなくコントロールチェンジやプログラムチェンジ等である場合には、mをインクリメントして(ステップH8)、ステップH6においてさらに次のイベントデータがノートオンであるか否かを判別する。CMD(m)のデータがノートオンである場合には、そのイベントデータの音高データNOTE(m)がロードしたイベントデータの音高データNOTE(IDX)と同じであるか否かを判別する(ステップH9)。
【0084】
両者の音高データが異なる場合には、ロードしたイベントデータをADのアドレスで指定するRAM3のエリアMEM(AD)にストアする(ステップH10)。次に、ADのアドレスをインクリメントし(ステップH11)、IDXのアドレスをインクリメントする(ステップH12)。そして、ロードすべき曲データが終了したか否かを判別する(ステップH13)。曲データが終了していない場合には、ステップF2に移行して次のイベントデータをロードする。
【0085】
ステップH9において、両者の音高データが同じである場合には、NOTE(m)をPASSにストアし(ステップH14)、ロードしたノートオンのイベントデータEVENT(IDX)をMEM(AD)にストアする(ステップH10)。すなわち、先に発音を開始するイベントデータをRAM3にストアする。この後、ステップH11、ステップH12を経て、ステップH13において曲データの終了でないので、ステップH2に移行して次のイベントデータをロードする。
【0086】
ステップH3においてCMD(IDX)がノートオフで、ロードしたイベントデータがノートオンであり、しかもその音高データNOTE(IDX)がステップH14においてPASSにストアした音高データである場合には、そのイベントデータをRAM3にストアせずに、そのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する(ステップH15)。次に、IDXのアドレスをインクリメントする(ステップH12)。そして、ロードすべき曲データが終了したか否かを判別する(ステップH13)。曲データが終了していない場合には、ステップH2に移行して次のイベントデータをロードする。
【0087】
ステップH3においてCMD(IDX)がノートオンでない場合には、CMD(IDX)がノートオフであるか否かを判別する(ステップH16)。ノートオフでなくコントロールチェンジやプログラムチェンジ等のコマンドである場合には、ステップH10においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。ステップH16においてCMD(IDX)がノートオフである場合には、その音高データNOTE(IDX)がステップH14においてPASSにストアした音高データと同一でないか否かを判別する(ステップH17)。同一でない場合には、ステップH10においてそのイベントデータEVENT(IDX)をMEM(AD)にストアする。
【0088】
音高データがPASSにストアされているものと同一である場合には、NOTE(IDX)の音高データをPASSから削除して(ステップH18)、ステップH15においてそのイベントデータのデルタタイムΔT(IDX)の値を次のアドレス(IDX+1)のイベントデータのデルタタイムΔT(IDX+1)の値に加算する。次にステップH12においてIDXをインクリメントし、ステップH13において曲データが終了か否かを判別する。曲データが終了でない限り、ステップH2〜ステップH12の処理ループを繰り返し実行する。ステップH13において、ロードすべき曲データが終了したときは、LFを0にセットして(ステップH19)、メインフローに戻る。
【0089】
このように上記第5実施形態においては、曲のイベントデータの中から同じ音高で発音時間が重複している2つの楽音のイベントデータについては演奏教習に適さないため、同じ音高2つの楽音を連続した1つの楽音に修正して演奏ガイドを行う。
【0090】
なお、上記各実施形態においては、フロッピーディスクに記憶されている曲のイベントデータについて、演奏教習に適さない条件のイベントデータを削除しながらRAM3にストアし、全てのイベントデータをストアした後に、データ修正されたイベントデータをRAM3から読み出して再生する構成にしたが、フロッピーディスクからロードしたイベントデータや、MIDI・I/F7によって受信したイベントデータをリアルタイムで再生し、その再生のときにデータ修正を行うようにしてもよい。
【0091】
また、上記各実施形態においては、フロッピーディスクに記憶されている曲のイベントデータについて、演奏教習に適さない条件のイベントデータを自動的に修正してRAM3にストアする構成にしたが、データを修正するか否かを演奏者が任意に設定する構成にしてもよい。
【0092】
また、上記各実施形態においては、演奏教習に適さない条件のイベントデータであるか否かを個々の楽音によって判別する構成にしたが、曲データ全体を統計的な手法を用いて演奏教習に適しているか否かを判別する構成にしてもよい。例えば、イベントデータの音量や音長を標本値として、複数のイベントデータのそれぞれの偏差値を算出する。そして、各イベントデータの偏差値によってデータ削除をするか否かを判別する構成にしてもよい。
【0093】
また、上記各実施形態においてさらに、楽音の音色(楽器の種類)によってデータの修正を行うか否かを設定する構成にしてもよい。また、第1又は第2実施形態においては、音色ごとに削除するための音量や音長の最小値を設定してもよい。例えば、ヴァイオリンの最小音量の設定値は小さく、トロンボーンの最小音量の設定値は大きく設定する。また、ドラム系の最小音長の設定値は短く、管楽器系の最小音長の設定値は長くする。
【0094】
また、上記各実施形態においては、CPU1はROM2にあらかじめ記憶した制御プログラムにより演奏教習処理を行う構成にしたが、フロッピーディスクや光磁気ディスクその他の記憶媒体にこの演奏教習処理の制御プログラムを記憶して、その制御プログラムをCPU1が読み出して実行する構成にしてもよい。この場合には、記憶媒体の発明を構成する。あるいは、通信回線を介して演奏教習処理の制御プログラムをダウンロードして実行させる構成にしてもよい。
【0095】
【発明の効果】
本発明によれば、曲のイベントデータの中から演奏教習に適さない条件のイベントデータを削除して、残りのイベントデータについて演奏ガイドを行う。
したがって、外部記憶媒体や外部機器から入力した任意の曲について、ナビゲーション機能を用いて初心者でも容易に演奏ガイドを享受できる。
【図面の簡単な説明】
【図1】本発明の各実施形態における演奏教習装置のシステム構成を示すブロック図。
【図2】曲のイベントデータのフォーマットを示し、(1)はデータ修正前(2)はデータ修正後を示す図。
【図3】各実施形態におけるCPUのメインフローチャート及びタイマインタラプト処理のフローチャート。
【図4】図3のメインフローチャートにおけるスイッチ処理のフローチャート。
【図5】図4に続くスイッチ処理のフローチャート。
【図6】第1実施形態における曲ロード処理のフローチャート。
【図7】図3のメインフローチャートにおけるナビゲーション処理のフローチャート。
【図8】第2実施形態における曲ロード処理のフローチャート。
【図9】第3実施形態における曲ロード処理のフローチャート。
【図10】第4実施形態における曲ロード処理のフローチャート。
【図11】第5実施形態における曲ロード処理のフローチャート。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 キースキャンインターフェース
5 LEDC
6 FDDC
7 MIDIインターフェース
8 音源
9 操作部
10 LED
11 FDD
12 サウンドシステム[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a performance learning apparatus that guides performance and a storage medium that stores a program for performance learning processing.
[0002]
[Prior art]
Performance learning devices such as electronic musical instruments having a so-called navigation function for guiding performance are in widespread use. For example, in an electronic keyboard instrument having a navigation function, a light emitting means such as an LED is provided for each key of the keyboard, and the key LED corresponding to the pitch is pressed as the music of the automatic performance progresses. It is configured to light up at the same time and guide performance operations. Among the navigation modes, there is a so-called “waiting mode” in which the progress of a song is paused until a performance operation is performed, so that a beginner can easily receive a performance guide. The music data to be guided is music data dedicated for navigation stored in a memory such as a ROM in advance.
[0003]
On the other hand, many electronic keyboard instruments are compatible with the MIDI standard and can process music data of a standard MIDI file (SMF). That is, it has a function of transmitting and receiving SMFs stored in floppy disks and other external storage media, and SMFs of a wide variety of music data to and from other MIDI compatible external devices via cables and communication lines. Therefore, there is a demand to enjoy a performance operation guide using a navigation function for a wide variety of music data input from an external storage medium or an external device.
[0004]
[Problems to be solved by the invention]
However, since SMF music data from the outside is not dedicated to navigation, there are many cases in which sounds that are not suitable for a performance guide are included especially for beginners. For example, there is a case where a very low volume sound or a very short sound is inserted to produce a so-called sound of a song, or two or more sounds having the same pitch are overlapped for a special effect. Even if such a sound is guided, it is difficult to perform a performance operation. However, in the “waiting mode”, the music does not advance unless such a sound is operated. For this reason, only a skilled person can perform performance practice using the navigation function for general SMF music data, and the navigation function for beginners was not utilized.
[0005]
An object of the present invention is to enable a beginner to easily enjoy a performance guide using a navigation function for an arbitrary piece of music input from an external storage medium or an external device.
[0006]
[Means for Solving the Problems]
The performance learning apparatus according to the first aspect of the present invention is an input means for inputting music composed of a plurality of musical sound event data (in the embodiment, the
[0007]
[0008]
[0009]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, first to fifth embodiments of a performance learning apparatus according to the present invention will be described with reference to the drawings. This apparatus has the same configuration as an electronic keyboard instrument, and includes a keyboard, a switch, a speaker, and the like.
[0010]
FIG. 1 shows a system configuration of a musical sound generating device in each embodiment. In FIG. 1, a
[0011]
The key scan I /
[0012]
The FDDC 6 is a controller that controls an FDD (floppy disk driver) 11, reads event data of SMF music stored in the floppy disk in response to a load command of the
[0013]
FIG. 2 shows a format of music data in the present embodiment. In the SMF data format, event data and time data are arranged alternately. However, in this embodiment, the event data for each address includes time data in order to simplify the explanation. It is said. FIG. 2 (1) shows the composition of song data stored in an external storage medium such as a floppy disk. In this figure, IDX indicates the address of each event data. The event data includes a delta time ΔT, a command CMD, pitch data NOTE, and velocity data VEL.
[0014]
ΔT represents the start time of the event data. CMD indicates the contents of the command of the event data, “90” represents the
[0015]
FIG. 2 (2) shows a format of music data stored in the
[0016]
Next, the performance learning process in 1st Embodiment is demonstrated with reference to FIGS.
FIG. 3 is a main flow of the performance learning process executed by the
[0017]
When two types of timer interrupts are entered during execution of the main flow, corresponding timer interrupt processing is executed. The timer interrupt 1 is an interrupt every about 5 to 10 msec. When the timer interrupt 1 is present, the value of the timer register T1 is incremented (step A10), and the process returns to the main flow. The timer interrupt 2 is an interrupt (clock interrupt) at a resolution corresponding to the tempo of the music piece. When the timer interrupt 2 is present, the value of the timer register T2 is decremented (step A11) and the process returns to the main flow. Note that the values of T1 and T2 are reset to 0 at initialization.
[0018]
4 and 5 are flow charts of the switch process at step A2 in the main flow of FIG. In the flow of FIG. 4, it is determined whether or not the music load switch is turned on (step B1). When the music load switch is turned on, the value of the load flag LF is inverted (step B2). Then, it is determined whether or not the inverted LF value is 1 (music load) (step B3). When this value is 1, the value of IDX is set to 0 (step B4), and the value of AD is set to 0 (step B5). That is, the head address of the music data on the floppy disk is designated, and the head address of the music data storage area in the
[0019]
If the song load switch is not turned on in step B1, it is determined whether or not the lesson (0) switch is turned on (step B6). When this switch is turned on, the value of the lesson mode register MODE is set to 0 (step B7). If this switch is not on, it is determined whether or not the lesson (1) switch has been turned on (step B8). When this switch is turned on, the value of MODE is set to 1 (step B9). If this switch is not on, it is determined whether or not the lesson (2) switch has been turned on (step B10). When this switch is turned on, the value of MODE is set to 2 (step B11). After setting the MODE value, return to the main flow.
[0020]
When the value of MODE is 0, the performance key is guided by turning on the
[0021]
If none of the lesson switches (0), (1), and (2) are turned on, it is determined whether or not the playback switch is turned on in the flow of FIG. 5 (step B12). When this switch is turned on, the value of the start flag STF is inverted (step B13). Then, it is determined whether or not the inverted STF value is 1 (reproduction) (step B14). If this value is 1, the address value of AD is set to 0 (start address) (step B15), and the value of ΔT of event data at that address is set to T2 (step B16). Then, the timer interrupt is permitted (step B17), and the process returns to the main flow.
[0022]
If the STF is 0 (reproduction stop) in step B14, the timer interrupt is prohibited (step B18). Then, return to the main flow. . In step B12, if the regeneration switch is not on, it is determined whether or not other switches are on (step B19). When any other switch is turned on, processing corresponding to that switch is performed (step B20), and the process returns to the main flow. If none of the switches is turned on, the process immediately returns to the main flow.
[0023]
FIG. 6 is a flowchart of the music load process in step A3 in the main flow of FIG. First, it is determined whether or not the LF value is 1 (music load) (step C1). If this value is 0, the music flow is not loaded, and the process immediately returns to the main flow. When the value of LF is 1, EVENT (IDX) which is event data of the IDX address is loaded from the floppy disk (step C2). Then, it is determined whether or not the command CMD (IDX) of the event data is note-on (step C3).
[0024]
If CMD (IDX) is note-on, it is determined whether or not the value of VEL (IDX), which is velocity data of the event data, is smaller than a preset minimum value (step C4). If the value of VEL (IDX) is equal to or greater than the minimum value, the loaded event data EVENT (IDX) is stored in the area MEM (AD) of the
[0025]
If the value of VEL (IDX) is less than the minimum value in step C4, the data of NOTE (IDX) indicating the pitch of the event data is stored in the register PASS (step C9). PASS has an array structure and can store a plurality of pitch data. However, since this array structure is not directly related to the present invention, a detailed description is omitted. In this embodiment and other embodiments described later, the PASS functions as a register for storing one pitch data.
[0026]
In step C4, if the value of VEL (IDX) is less than the minimum value, the event data is not stored in the
[0027]
If CMD (IDX) is not note-on in step C3, it is determined whether CMD (IDX) is note-off (step C11). If the command is not note-off but a command such as control change or program change, the event data EVENT (IDX) is stored in MEM (AD) in step C5. If CMD (IDX) is note-off in step C11, it is determined whether the pitch data NOTE (IDX) is not the same as the pitch data stored in PASS in step C9 (step C12). If they are not the same, the event data EVENT (IDX) is stored in MEM (AD) in step C5.
[0028]
If the pitch data is the same, the note-off event data is not stored in the
[0029]
Then, unless the music data is finished, the processing loop from step C2 to step C7 is repeatedly executed, and event data whose volume is smaller than the set minimum value is not stored in the
[0030]
For example, in the music data shown in FIG. 2A, the value of VEL in the note-on event data in the area corresponding to the address IDX = 2 is 08. Assuming that the minimum value of the volume is set to 10, the event data and the corresponding note-off event data (IDX = 3) are deleted without being stored in the
[0031]
FIG. 7 is a flow of the navigation process of step A4 in the main flow of FIG. First, it is determined whether or not STF is 1 (navigation operation state) (step D1). If STF is 1, it is determined whether or not the value of T2 has reached 0 (step D2). If STF is 0 (navigation stopped state) in step D1, or if the value of T2 has not reached 0 and the event data start timing has not been reached in step D2, this flow is immediately terminated and the main Return to flow.
[0032]
When the value of T2 reaches 0 in step D2, EVENT (AD) is read from the MEM (AD) area of RAM3 (step D3), and it is determined whether or not the CMD (AD) is note-on. (Step D4). If the note is on, LED [NOTE (AD)], which is an LED driving register corresponding to the pitch, is set to on, that is, turned on (step D5).
[0033]
Next, it is determined whether or not the MODE value is 1 or 2 (step D6). That is, it is determined whether or not it is a mode for waiting for a key press. If the MODE value is 1 or 2, the timer interrupt is prohibited (step D7), and it is determined whether there is a key depression (step D8). When the key is depressed, it is determined whether or not the MODE value is 2 (step D9). If the MODE value is 2, it is determined whether or not the depressed key number that is the data in the register KEY matches the NOTE (AD) that is the pitch data of the event data (step). D10). That is, it is determined whether or not the key corresponding to the lighting of the LED has been pressed. If no key is pressed, or if the key pressed when MODE is 2 is incorrect, determination of whether or not there is a key press is continued in step D8.
[0034]
When the MODE value is 2 and a key corresponding to the lighting of the LED is pressed, or when any key is pressed with a MODE value of 1, the timer interrupt is permitted (step D11). Thereafter, or in the mode in which the MODE value is 0 and the key is not waited for in step D6, the AD address is incremented (step D12), and the next event data is designated. Then, it is determined whether or not there is designated event data, that is, whether or not the music data has been completed (step D13). If there is specified event data instead of the end of the music data, the ΔT (AD) delta time value of the event data is set to T2 (step D14). Then, return to the main flow.
[0035]
If CMD (AD) is not note-on in step D4, it is determined whether CMD (AD) is note-off (step D15). If the note is off, the register LED [NOTE (AD)] corresponding to the pitch is set to off, that is, extinguished (step D16). In step D12, AD is incremented to specify the next event data. If CMD (AD) is not note-off in step D11, that is, if the command is not related to key press / release, such as control change or program change, the process proceeds to step D12 and AD is incremented to the next. Specify event data.
[0036]
When the song data is completed in step D13, the timer interrupt is prohibited (step D17), and STF is set to 0 (navigation stopped state) (step D18). And it returns to the main flow.
[0037]
As described above, in the first embodiment, event data having an extremely low volume that is not suitable for performance learning is deleted from the event data of the music, and performance guide is provided for the event data having a relatively high volume.
[0038]
Next, a second embodiment of the present invention will be described. The main flow of the
[0039]
FIG. 8 is a flowchart of music load processing in the second embodiment. First, it is determined whether or not the LF value is 1 (music load) (step E1). If this value is 0, the music flow is not loaded, and the process immediately returns to the main flow. When the value of LF is 1, EVENT (IDX) which is the event data of the IDX address is loaded from the floppy disk (step E2). Then, it is determined whether or not the command CMD (IDX) of the event data is note-on (step E3).
[0040]
When CMD (IDX) is note-on, the sound generation time (sound length) of this event data is measured. First, the value of IDX + 1, that is, the address of the next event data is set to a pointer m for prefetching event data after the currently loaded event data (step E4). Next, it is determined whether or not the data of CMD (m) is note-off (step E5). In the case of not a note-off but a control change, program change or the like, this is a case where data other than the note data is inserted between the note-on event data and the note-off event data. In this case, the value of Δ (m) is added to ΔT (m + 1) (step E6). That is, the delta time of data other than the note data is added to the next event data.
[0041]
Next, m is incremented (step E7), and the next event data is designated. In step E5, the CMD (m) of the event data is determined. When CMD (m) is note-off, the delta time of ΔT (m) indicates the sound generation time of EVENT (IDX) loaded in step E2. Therefore, it is determined whether or not the value of ΔT (m) is smaller than a preset minimum value (step E8).
[0042]
If the value of ΔT (m) is equal to or greater than the minimum value, the loaded event data is stored in the area MEM (AD) of the
[0043]
In step E8, when the value of ΔT (m) is less than the minimum value, the event data is not stored in the
[0044]
If CMD (IDX) is not note-on in step E3, it is determined whether or not CMD (IDX) is note-off (step E15). If the command is not note-off but a command such as control change or program change, the event data EVENT (IDX) is stored in MEM (AD) in step E9. If CMD (IDX) is note-off in step E15, it is determined whether or not the pitch data NOTE (IDX) is the same as the pitch data stored in PASS in step E13 (step E16). If not, the event data EVENT (IDX) is stored in MEM (AD) in step E9.
[0045]
If the pitch data is the same, the event data is not stored in the
[0046]
Unless the song data is finished, the processing loop from step E2 to step E11 is repeatedly executed, and event data smaller than the minimum value set for the sound generation time is deleted without being stored in the
[0047]
For example, in the music data shown in FIG. 2A, the value of ΔT in the note-off event data in the area corresponding to the address IDX = 3 is 08. If the minimum value of the sound generation time is set to 10, the event data and the corresponding note-on event data (IDX = 2) are deleted without being stored in the
[0048]
As described above, in the second embodiment, event data having an extremely short pronunciation time that is not suitable for performance training is deleted from the event data of the music, and performance guidance is performed for event data having a somewhat long pronunciation time.
[0049]
Next, a third embodiment of the present invention will be described with reference to the flow of the
[0050]
In the flow of FIG. 9, it is first determined whether or not the value of LF is 1 (music load) (step F1). If this value is 0, the music flow is not loaded, and the process immediately returns to the main flow. When the value of LF is 1, EVENT (IDX) that is event data of the IDX address is loaded from the floppy disk (step F2). Then, it is determined whether or not the command CMD (IDX) of the event data is note-on (step F3).
[0051]
If CMD (IDX) is note-on, it is determined whether or not the pitch data NOTE (IDX) is not pitch data stored in the register PASS (step F4). PASS is a register for storing pitch data of event data to be deleted. If NOTE (IDX) is not pitch data stored in PASS, the value of IDX + 1, that is, the address of the next event data is set in the pointer m (step F5). Then, it is determined whether or not the data of CMD (m) is note-on (step F6). That is, it is determined whether or not there is another note-on event data before the sounding time of the note-on event data ends.
[0052]
If the CMD (m) data is not note-on, it is determined whether the CMD (m) data is note-off (step F7). If it is not a note-off but a control change, a program change or the like, m is incremented (step F8), and it is determined in step F6 whether or not the next event data is note-on. When the CMD (m) data is note-on, it is determined whether the pitch data NOTE (m) of the event data is the same as the pitch data NOTE (IDX) of the loaded event data ( Step F9).
[0053]
If the pitch data of the two are different, the loaded event data is stored in the area MEM (AD) of the
[0054]
In step F9, if both pitch data are the same, NOTE (m) is stored in PASS (step F14), and flag OFF is set to 1 (step F15). In step F10, event data EVENT (IDX) is stored in MEM (AD). That is, event data for starting sound generation is stored in the
[0055]
If the loaded event data is note-on and the pitch data NOTE (IDX) is the same as the pitch data stored in the PASS in step F14, the event data is not stored in the
[0056]
If CMD (IDX) is not note-on in step F3, it is determined whether CMD (IDX) is note-off (step F17). If the command is not note-off but a command such as control change or program change, the event data EVENT (IDX) is stored in MEM (AD) in step F10. If CMD (IDX) is note-off in step F17, it is determined whether or not the pitch data NOTE (IDX) is the same as the pitch data stored in PASS in step F14 (step F18). If they are not the same, the event data EVENT (IDX) is stored in MEM (AD) in step F10.
[0057]
If the pitch data is the same as that stored in the PASS, it is determined whether or not OFF is 1 (step F19). If OFF is 1, this is set to 0 (step F20), and the event data EVENT (IDX) is stored in MEM (AD) in step F10. The note-off event data in this case is stored in the
[0058]
After this, the process proceeds to Step F2 through Step F11 to Step F13, and when the next event data is loaded, when the CMD (IDX) is note-off and is the same as the pitch data stored in the PASS , Step F17, Step F18 and Step F19 are entered. Since OFF is 0 in step F19, this event data is not stored in the
[0059]
Then, the pitch data of NOTE (IDX) is deleted from the PASS (step F21), and in step F16, the value of the delta time ΔT (IDX) of the event data is changed to the delta time ΔT of the event data of the next address (IDX + 1). Add to the value of (IDX + 1). Next, in step F12, IDX is incremented, and in step F13, it is determined whether or not the music data is finished. As long as the song data is not finished, the processing loop from Step F2 to Step F12 is repeatedly executed. In step F13, when the music data to be loaded is completed, LF is set to 0 (step F22), and the process returns to the main flow.
[0060]
As described above, in the third embodiment, the event data of two musical sounds having the same pitch and overlapping pronunciation time are not suitable for performance training from among the event data of the music, so that the musical sound that has been started to be pronounced later is not suitable. The event data is deleted, and the performance guide is performed only for the event data of the musical tone that has been sounded first.
[0061]
In the third embodiment, event data of two musical sounds having overlapping pronunciation times has been described as an example. However, data deletion processing is also performed for three or more event data having overlapping pronunciation times. Basically the same. In this case, information for identifying the number of event data may be stored in the PASS array.
[0062]
Next, a fourth embodiment of the present invention will be described with reference to the flow of the
[0063]
In the flow of FIG. 10, first, it is determined whether or not the value of LF is 1 (music load) (step G1). If this value is 0, the music flow is not loaded, and the process immediately returns to the main flow. When the value of LF is 1, EVENT (IDX), which is event data of the IDX address, is loaded from the floppy disk (step G2). Then, it is determined whether or not the command CMD (IDX) of the event data is note-on (step G3).
[0064]
If CMD (IDX) is note-on, it is determined whether or not the pitch data NOTE (IDX) is not pitch data stored in the register PASS (step G4). If NOTE (IDX) is not pitch data stored in PASS, it is determined whether flag OFF1 is 1 (step G5). When
[0065]
Next, the value of IDX + 1, that is, the address of the next event data is set in the pointer m (step G7). If OFF1 is 0, NOT (IDX) is not stored in PASS in step G6, and IDX + 1 is set to m in step G7. After step G7, it is determined whether or not the CMD (m) data is note-on (step G8). That is, it is determined whether or not there is next note-on event data before the sounding time of the note-on event data ends.
[0066]
If the CMD (m) data is not note-on, it is determined whether the CMD (m) data is note-off (step G9). If it is not a note-off but a control change, a program change or the like, m is incremented (step G10), and it is determined in step G8 whether or not the next event data is note-on. When CMD (m) is note-on, it is determined whether or not the pitch data NOTE (m) of the event data is the same as the pitch data NOTE (IDX) of the loaded event data (step G11). ).
[0067]
If the pitch data of the two are different, the loaded event data is stored in the area MEM (AD) of the
[0068]
In step G11, when both pitch data are the same, the volume levels of VEL (m) and VEL (IDX) are compared (step G16). When the value of VEL (IDX) is larger than the value of VEL (m), that is, when the volume of the loaded note-on event data is larger than the volume of the next note-on event data, the musical tone with the smaller volume Is stored in the PASS (step G17). Next, 1 is set to the flag OFF2 (step G18).
[0069]
When OFF1 is 2, among the note-off event data of the same pitch data, the event data loaded first is stored in the
[0070]
In step G16, if the value of VEL (IDX) is smaller than the value of VEL (m), that is, if the volume of the loaded note-on event data is smaller than the volume of the next note-on event data, OFF1 is set. 1 is set (step G19). In other words, the flag processing for deleting the note-off event data corresponding to the loaded note-on event data is performed. The loaded note-on event data is not stored in the
[0071]
After the IDX is incremented in step G14, it is determined whether or not the music data to be loaded has been completed (step G15). If the song data has not ended, the process moves to step G2 to load the next event data. If CMD (IDX) is not note-on in step G3, it is determined whether CMD (IDX) is note-off (step G21). If the command is not note-off but a command such as control change or program change, the event data EVENT (IDX) is stored in MEM (AD) in step G12.
[0072]
If CMD (m) is note-off in step G9, the event data is note-off event data corresponding to the loaded note-on event data, or other sound previously stored in the
[0073]
When the CMD (IDX) of the event data loaded in step G2 is not note-on but note-off (step G21), the pitch data NOTE (IDX) is the same as the pitch data stored in the PASS in step G6. It is determined whether or not (step G22). If not the same pitch data, the event data is note-off event data of other pitches previously stored in the
[0074]
In step G22, when the note-off pitch data is the same as that stored in the PASS, it is determined whether OFF2 is 1 (step G23). When OFF2 is 1, since the first note-off event data is stored in the
[0075]
If OFF2 is 0 in step G23, it is determined whether OFF1 is 1 (step G25). When OFF1 is 1, it is necessary to delete the loaded note-off event data. In this case, OFF1 is set to 0 (step G26). Also, NOTE (IDX) is deleted from PASS so as not to delete note-off event data loaded later (step G27). In step G20, the value of the delta time ΔT (IDX) of the event data is added to the value of the delta time ΔT (IDX + 1) of the event data at the next address (IDX + 1).
[0076]
If OFF2 is 0 in step G23 and OFF1 is also 0 in step G25, then the note-off event data loaded later is deleted. In this case, NOTE (IDX) is deleted from PASS (step G27). In step G20, the value of the delta time ΔT (IDX) of the event data is added to the value of the delta time ΔT (IDX + 1) of the event data at the next address (IDX + 1).
[0077]
Next, in step G14, IDX is incremented, and in step G15, it is determined whether or not the music data is finished. As long as the song data is not finished, the processing loop from step G2 to step G14 is repeatedly executed. In step G15, when the music data to be loaded is completed, LF is set to 0 (step G28), and the process returns to the main flow.
[0078]
As described above, in the fourth embodiment, since the event data of two musical sounds having the same pitch and overlapping pronunciation time are not suitable for performance training from among the musical event data, the musical sound having the smaller volume is not suitable. Event data is deleted, and only the event data of the musical tone with the larger volume is stored in the
[0079]
In this case, in order to compensate for a decrease in volume due to the deleted musical sound, a process of storing the musical sound with the VEL value corrected to be stored in the
[0080]
Next, a fifth embodiment of the present invention will be described with reference to the flow of the
[0081]
In the flow of FIG. 11, first, it is determined whether or not the value of LF is 1 (music load) (step H1). If this value is 0, the music flow is not loaded, and the process immediately returns to the main flow. When the value of LF is 1, EVENT (IDX) which is the event data of the IDX address is loaded from the floppy disk (step H2). Then, it is determined whether or not the command CMD (IDX) of the event data is note-on (step H3).
[0082]
If CMD (IDX) is note-on, it is determined whether or not the pitch data NOTE (IDX) is not pitch data stored in the register PASS (step H4). PASS is a register for storing pitch data of event data to be deleted. If NOTE (IDX) is not pitch data stored in the PASS, the value of IDX + 1, that is, the address of the next event data is set in the pointer m (step H5). Then, it is determined whether or not the data of CMD (m) is note-on (step H6). That is, it is determined whether or not there is another note-on event data before the sounding time of the note-on event data ends.
[0083]
If the CMD (m) data is not note-on, it is determined whether or not the CMD (m) data is note-off (step H7). If it is not a note-off but a control change, a program change or the like, m is incremented (step H8), and it is determined in step H6 whether or not the next event data is note-on. When the CMD (m) data is note-on, it is determined whether the pitch data NOTE (m) of the event data is the same as the pitch data NOTE (IDX) of the loaded event data ( Step H9).
[0084]
If the pitch data of both are different, the loaded event data is stored in the area MEM (AD) of the
[0085]
In step H9, if both pitch data are the same, NOTE (m) is stored in PASS (step H14), and the loaded note-on event data EVENT (IDX) is stored in MEM (AD). (Step H10). That is, event data for starting sound generation is stored in the
[0086]
If CMD (IDX) is note-off in step H3, the loaded event data is note-on, and the pitch data NOTE (IDX) is the pitch data stored in PASS in step H14, the event Without storing the data in the
[0087]
If CMD (IDX) is not note-on in step H3, it is determined whether CMD (IDX) is note-off (step H16). If the command is not note-off but a command such as control change or program change, the event data EVENT (IDX) is stored in MEM (AD) in step H10. If CMD (IDX) is note-off in step H16, it is determined whether or not the pitch data NOTE (IDX) is the same as the pitch data stored in PASS in step H14 (step H17). If they are not the same, the event data EVENT (IDX) is stored in MEM (AD) in step H10.
[0088]
If the pitch data is the same as that stored in the PASS, the pitch data of NOTE (IDX) is deleted from the PASS (step H18), and the delta time ΔT (IDX of the event data in step H15) ) Is added to the value of the delta time ΔT (IDX + 1) of the event data at the next address (IDX + 1). Next, in step H12, IDX is incremented, and in step H13, it is determined whether or not the music data is finished. As long as the song data is not finished, the processing loop from Step H2 to Step H12 is repeatedly executed. In step H13, when the music data to be loaded is completed, LF is set to 0 (step H19), and the process returns to the main flow.
[0089]
As described above, in the fifth embodiment, the event data of two musical sounds having the same pitch and the same pronunciation time among the event data of the music are not suitable for performance training. Is corrected to one continuous tone and a performance guide is given.
[0090]
In each of the above embodiments, the event data of the song stored in the floppy disk is stored in the
[0091]
In each of the above embodiments, the event data of the music stored in the floppy disk is automatically corrected and stored in the
[0092]
Further, in each of the above embodiments, it is configured to determine whether or not the event data is in a condition unsuitable for performance learning by individual musical sounds, but the entire song data is suitable for performance learning using a statistical method. It may be configured to determine whether or not. For example, the deviation value of each of a plurality of event data is calculated using the volume and sound length of the event data as sample values. Then, it may be configured to determine whether or not to delete data based on the deviation value of each event data.
[0093]
Further, in each of the above embodiments, it may be configured to set whether or not to correct data depending on the tone color (musical instrument type) of the musical tone. In the first or second embodiment, the minimum value of the volume or the sound length for deletion for each tone color may be set. For example, the setting value of the minimum volume of the violin is set small, and the setting value of the minimum volume of the trombone is set large. In addition, the set value of the minimum sound length of the drum system is short, and the set value of the minimum sound length of the wind instrument system is increased.
[0094]
In each of the above-described embodiments, the
[0095]
【The invention's effect】
According to the present invention, event data that is not suitable for performance training is deleted from the event data of the music, and the performance guide is provided for the remaining event data.
Therefore, a beginner can easily enjoy a performance guide for any music input from an external storage medium or an external device using the navigation function.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a system configuration of a performance learning apparatus in each embodiment of the present invention.
FIG. 2 shows a format of music event data, (1) before data correction (2) after data correction.
FIG. 3 is a main flowchart of a CPU and a flowchart of timer interrupt processing in each embodiment.
4 is a flowchart of switch processing in the main flowchart of FIG. 3;
FIG. 5 is a flowchart of switch processing following FIG. 4;
FIG. 6 is a flowchart of music load processing in the first embodiment.
7 is a flowchart of navigation processing in the main flowchart of FIG. 3;
FIG. 8 is a flowchart of music load processing in the second embodiment.
FIG. 9 is a flowchart of music load processing in the third embodiment.
FIG. 10 is a flowchart of music load processing in the fourth embodiment.
FIG. 11 is a flowchart of music load processing in the fifth embodiment.
[Explanation of symbols]
1 CPU
2 ROM
3 RAM
4 Key scan interface
5 LEDC
6 FDDC
7 MIDI interface
8 Sound source
9 Operation part
10 LED
11 FDD
12 Sound system
Claims (2)
この入力手段によって入力された曲のイベントデータの中から楽音の音量があらかじめ楽音の音色毎に設定した音量しきい値より小さい場合および楽音の発音時間があらかじめ楽音の音色毎に設定した時間しきい値より短い場合の少なくとも一つの場合にイベントデータを削除するデータ修正手段と、
このデータ修正手段によって削除されなかったイベントデータに応じて演奏操作をガイドする演奏ガイド手段と、
を備えたことを特徴とする演奏教習装置。An input means for inputting music composed of event data of multiple musical sounds;
When the musical tone volume is smaller than the volume threshold value set for each musical tone tone in advance from the event data of the song input by this input means, and the musical tone generation time is set for each musical tone tone in advance. Data correction means for deleting event data in at least one case when it is shorter than the value ;
A performance guide means for guiding a performance operation in accordance with event data not deleted by the data correction means;
A performance learning apparatus characterized by comprising:
この入力手順によって入力された曲のイベントデータの中から楽音の音量があらかじめ楽音の音色毎に設定した音量しきい値より小さい場合および楽音の発音時間があらかじめ楽音の音色毎に設定した時間しきい値より短い場合の少なくとも一つの場合にイベントデータを削除するデータ修正手順と、If the musical sound volume is smaller than the volume threshold value set for each musical tone tone in advance in the event data of the song input by this input procedure, and the musical sound generation time is set for each musical tone tone beforehand. A data correction procedure for deleting event data in at least one case when it is shorter than the value;
このデータ修正手段によって削除されなかったイベントデータに応じて演奏操作をガイドする演奏ガイド手順と、A performance guide procedure for guiding performance operations according to event data not deleted by the data correction means;
を実行する演奏教習処理のプログラムを記憶していることを特徴とする記憶媒体。A storage medium storing a performance learning processing program for executing
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37199099A JP3845761B2 (en) | 1999-12-28 | 1999-12-28 | Performance learning apparatus and storage medium storing performance learning processing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37199099A JP3845761B2 (en) | 1999-12-28 | 1999-12-28 | Performance learning apparatus and storage medium storing performance learning processing program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001188536A JP2001188536A (en) | 2001-07-10 |
JP3845761B2 true JP3845761B2 (en) | 2006-11-15 |
Family
ID=18499656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37199099A Expired - Fee Related JP3845761B2 (en) | 1999-12-28 | 1999-12-28 | Performance learning apparatus and storage medium storing performance learning processing program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3845761B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4670557B2 (en) * | 2005-09-13 | 2011-04-13 | カシオ計算機株式会社 | Performance learning apparatus and performance learning processing program |
JP6183002B2 (en) * | 2013-06-26 | 2017-08-23 | ヤマハ株式会社 | Program for realizing performance information analysis method, performance information analysis method and performance information analysis apparatus |
JP6424907B2 (en) * | 2017-01-31 | 2018-11-21 | ヤマハ株式会社 | Program for realizing performance information search method, performance information search method and performance information search apparatus |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58132283A (en) * | 1982-01-30 | 1983-08-06 | ヤマハ株式会社 | Keying indicator |
JPS61176987A (en) * | 1985-01-31 | 1986-08-08 | ヤマハ株式会社 | Key display unit for electronic musical instrument |
JPH0822281A (en) * | 1994-07-05 | 1996-01-23 | Victor Co Of Japan Ltd | Musical tone information compressing and communicating device and its terminal device |
JP3237455B2 (en) * | 1995-04-26 | 2001-12-10 | ヤマハ株式会社 | Performance instruction device |
JPH1069273A (en) * | 1996-05-16 | 1998-03-10 | Yamaha Corp | Playing instruction device |
-
1999
- 1999-12-28 JP JP37199099A patent/JP3845761B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001188536A (en) | 2001-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8502057B2 (en) | Electronic musical instrument | |
JP3788085B2 (en) | Performance learning apparatus and recording medium on which performance learning processing program is recorded | |
US8053658B2 (en) | Electronic musical instrument using on-on note times to determine an attack rate | |
JP3358292B2 (en) | Electronic musical instrument | |
JP3845761B2 (en) | Performance learning apparatus and storage medium storing performance learning processing program | |
JP2024019618A (en) | Sound generation controller, keyboard instrument, sound generation control method and program | |
JPH0916172A (en) | Musical performance practice device | |
JP4506147B2 (en) | Performance playback device and performance playback control program | |
JP3800778B2 (en) | Performance device and recording medium | |
JP2004101979A (en) | Electronic musical instrument | |
JP3397078B2 (en) | Electronic musical instrument | |
JP4228494B2 (en) | Control apparatus and control method | |
JP4200621B2 (en) | Synchronization control method and synchronization control apparatus | |
JP4106798B2 (en) | Sound generator | |
JP4214845B2 (en) | Automatic arpeggio device and computer program applied to the device | |
JP4207564B2 (en) | Performance apparatus and performance processing program | |
JP4096784B2 (en) | Performance evaluation apparatus and performance evaluation program | |
JP3800867B2 (en) | Performance learning apparatus and recording medium on which performance learning processing program is recorded | |
JP2578327B2 (en) | Automatic performance device | |
JPH03105396A (en) | Automatic playing device | |
JP2770770B2 (en) | Electronic musical instrument | |
JP3034398B2 (en) | Electronic musical instrument controller | |
JP3075750B2 (en) | Automatic performance device | |
JP4205563B2 (en) | Performance device, performance method, and computer program for performance | |
JP2007199109A (en) | Electronic musical instrument |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050617 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060203 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060414 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060620 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060630 |
|
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: 20060725 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060807 |
|
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: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130901 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |