JP3695208B2 - Performance learning apparatus and recording medium on which performance learning processing program is recorded - Google Patents

Performance learning apparatus and recording medium on which performance learning processing program is recorded Download PDF

Info

Publication number
JP3695208B2
JP3695208B2 JP07473599A JP7473599A JP3695208B2 JP 3695208 B2 JP3695208 B2 JP 3695208B2 JP 07473599 A JP07473599 A JP 07473599A JP 7473599 A JP7473599 A JP 7473599A JP 3695208 B2 JP3695208 B2 JP 3695208B2
Authority
JP
Japan
Prior art keywords
data
event data
performance
midi
key
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
Application number
JP07473599A
Other languages
Japanese (ja)
Other versions
JP2000267662A (en
Inventor
士郎 石黒
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 JP07473599A priority Critical patent/JP3695208B2/en
Priority to EP00105470A priority patent/EP1039430A3/en
Priority to US09/526,335 priority patent/US6245983B1/en
Publication of JP2000267662A publication Critical patent/JP2000267662A/en
Application granted granted Critical
Publication of JP3695208B2 publication Critical patent/JP3695208B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、演奏教習装置及び演奏教習処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
従来より演奏をガイドする光ナビゲーション機能をもった演奏教習装置がある。例えば、光ナビゲーション機能をもつ鍵盤電子楽器においては、鍵盤の各鍵内にLED(発光ダイオード)等の発光手段を設けて、演奏する曲データの進行に伴って、押鍵すべき鍵を発光させて、演奏をガイドする構成になっている。
【0003】
【発明が解決しようとする課題】
しかしながら、従来のナビゲーション機能をもつ鍵盤装置においては、押鍵すべき鍵を発光手段の発光によって認識することはできるものの、実際の押鍵が発音開始タイミングより遅れているか否かを認識することができず、押鍵タイミングの教習が不十分であった。この対策として、異なる発光色の発光素子をもつ発光手段を使って、曲データの中に発光色を変化させるデータを組み込む編集を行うことが考えられるが、その編集作業が煩雑になるという新たな問題が発生する。また、曲データを外部装置から受信する場合には、曲データの編集を行うことはできない。
【0004】
本発明の課題は、演奏操作をガイドするナビゲーション機能において、発音開始タイミングに対する押鍵タイミングの教習を、曲データの編集を行うことなく容易に実現することである。
【0005】
【課題を解決するための手段】
請求項1に記載の演奏教習装置は、演奏装置と演奏制御装置との間で通信を行って演奏の教習を行う演奏教習装置において、
前記演奏装置は、曲の演奏を行うための複数の操作子と、各操作子に対応して設けられ点灯信号に応じて発光し消灯信号に応じて発光を停止して演奏をガイドする発光手段と、前記演奏制御装置から、操作すべき操作子を示す音高データ、発音開始タイミングを示す時間データからなるイベントデータを含む曲データを受信する第1の受信手段と、この第1の受信手段が発音のイベントデータを受信したときは前記点灯信号を発生させ、消音のイベントデータを受信したときは前記消灯信号を発生させて、当該イベントデータの操作に係る操作子に対応する発光手段に与えて点滅させる信号発生手段と、前記操作子の操作結果を示す操作結果情報を前記演奏制御装置に送信する第1の送信手段と、を備え、
前記演奏制御装置は、前記演奏装置に送信する前記曲データを記憶する記憶手段と、この記憶手段に記憶されているイベントデータを読み出すデータ読出手段と、前記データ読出手段によって読み出された発音のイベントデータ又は消音のイベントデータを前記演奏装置に送信する第2の送信手段と、前記演奏装置から送信された前記操作結果情報を受信する第2の受信手段と、前記発音のイベントデータを消音のイベントデータに変更するデータ変更手段と、前記第2の送信手段によって前記演奏装置に送信した発音のイベントデータの発音開始タイミングを経過した後も当該発音のイベントデータに対応する操作子を操作した旨の操作結果情報を前記第2の受信手段が受信しないときは、当該発音のイベントデータと前記データ変更手段によって当該発音のイベントデータを変更させた消音のイベントデータとを交互に前記第2の送信手段により前記演奏装置に送信させる発光制御手段と、を備えた構成になっている。
【0006】
請求項3に記載の記録媒体は、曲の演奏を行うための複数の操作子と、
各操作子に対応して設けられ点灯信号に応じて発光し消灯信号に応じて発光を停止して演奏をガイドする発光手段と、操作すべき操作子を示す音高データ、発音開始タイミングを示す時間データからなるイベントデータを含む曲データを受信する受信手段と、この受信手段が発音のイベントデータを受信したときは前記点灯信号を発生させ、消音のイベントデータを受信したときは前記消灯信号を発生させて、当該イベントデータの操作に係る操作子に対応する発光手段に与えて点滅させる信号発生手段と、前記操作子の操作結果を示す操作結果情報を送信する送信手段と、を備えた演奏装置との間で通信を行う演奏制御装置によって実行されるプログラムを記録した記録媒体であって、
所定の記憶手段に記憶されているイベントデータを読み出すデータ読出手順と、前記データ読出手順によって読み出された発音のイベントデータ又は消音のイベントデータを前記演奏装置に送信する送信手順と、前記演奏装置から送信された前記操作結果情報を受信する受信手順と、前記発音のイベントデータを消音のイベントデータに変更するデータ変更手順と、前記送信手順によって前記演奏装置に送信した発音のイベントデータの発音開始タイミングを経過した後も当該発音のイベントデータに対応する操作子を操作した旨の操作結果情報を前記受信手順によって受信しないときは、当該発音のイベントデータと前記データ変更手順によって当該発音のイベントデータを変更させた消音のイベントデータとを交互に前記送信手順により前記演奏装置に送信させる発光制御手順と、を有する演奏教習処理プログラムを記録している。
【0009】
本発明によれば、発音のイベントデータの発音開始タイミングを経過した後も演奏すべき操作子が操作されない場合には、その都度、発音のイベントデータを変更して消音のイベントデータを生成し、発音のイベントデータ及び変更した消音のイベントデータによって、操作すべき操作子に対応する発光手段を点滅させる。
【0010】
【発明の実施の形態】
以下、本発明における演奏教習装置の第1及び第2実施形態について図を参照して説明する。図1は、第1実施形態における鍵盤装置を適用したシステム構成を示している。鍵盤装置1は、曲データを記憶する記憶手段であるフロッピーディスク(FD)2を駆動して、MIDIデータをMIDI音源3に出力する。この曲データは、インターネット等のネットワーク(通信回線)4を介して接続する曲データサーバー5から受信する。曲データサーバー5には、操作すべき操作子すなわち鍵を示す音高データ、発音開始タイミングを示す時間データ、及び発音の強弱又は消音を示すベロシティデータからなるイベントデータを含む曲データが複数記憶されている。
【0011】
図2に、鍵盤装置1の内部ブロック図を示す。CPU11は、システムバスを介して、ROM12、RAM13、キースキャンインターフェース14、LEDC(LEDコントローラ)15、FDDC(フロッピーディスク・ドライブ・コントローラ)16、MODEM(モデム)17、MIDIインターフェース18に接続されている。ROM12は、CPU11によって実行される演奏教習処理プログラムを記憶している。
【0012】
RAM13は、CPU11によって処理される各種データを一時的に記憶する。キースキャンインターフェース14は、複数の操作子からなる光鍵盤及びスイッチ群を備えたキーボード19に接続され、その操作状態をスキャンしてCPU11に入力する。LEDC15は、各鍵内に設けられた発光手段であるLED20の発光及び消灯を制御する。LED20は、赤色の発光素子及び緑色の発光素子で構成された、2色発光の発光ダイオードである。FDDC16は、FDD(フロッピーディスク駆動装置)21を制御する。
【0013】
通信制御手段であるMODEM17は、通信回線すなわちネットワーク4に接続するための回線接続装置(NCU)等を備え、CPU11の受信指令に応じて、曲データサーバー5から曲データを受信して復調する。受信された曲データは、FDDC16及びFDD21によってフロッピーディスク2に記録される。すなわち、フロッピーディスクは、曲サーバー5から受信した曲データを記憶する記憶手段を構成する。MIDIインターフェース18は、CPU11によって作成されたMIDIデータをMIDI音源3に出力する。
【0014】
図3に、MIDIデータのデータフォーマットを示す。MIDIデータは、図3(1)に示すように、1バイト構成のステータスバイト(先頭ビット=1)、及び1バイト又は2バイト構成のデータバイト(先頭ビット=0)で構成されている。このMIDIデータは、使用目的に応じてチャンネルメッセージ及びシステムメッセージに区別される。チャンネルメッセージは、3ビットからなるメッセージの種類、4ビットからなるチャンネル番号nで構成されている。例えば、「000」はノートオフ、「001」はノートオン、「100」は音色等を変更するプログラムチェンジを表わしている。
【0015】
また、各チャンネルごとに曲データの複数のパートが指定されている。例えば、図3(2)に示すように、メロディパート、ドラムパート、ベースパート、及び3系統のコードパートに指定されている。ナビゲーション機能においては、通常はメロディパートが演奏ガイドのパートとして、ユーザーによってそのチャンネルが指定される。
【0016】
メロディパートは、図4に示すように、時間データ及びイベントデータで構成されている。イベントデータの中のノートイベントは、ノートオン又はノートオフ、チャンネル番号、及びノートデータからなる1バイトのステータスバイトと、2バイトのベロシティデータとで構成されている。イベントデータの中のボリュームイベントは、ボリュームデータであることを示すボリュームステータス及びチャンネル番号からなる1バイトのステータスバイトと、2バイトのボリュームデータで構成されている。そして、各バイト単位のMIDIデータは、アドレスADによって指定される。なお、終了アドレスには、ENDデータが格納されている。
【0017】
次に、第1実施形態における演奏教習装置の動作について、CPU11が実行するプログラムのフローチャートに基づいて説明する。
【0018】
図5は、メインフローである。所定のイニシャライズ処理(ステップA1)の後は、スイッチ処理(ステップA2)、鍵ガイド処理(ステップA3)、押鍵処理(ステップA4)、時刻計時処理(ステップA5)、出力処理(ステップA6)、受信処理(ステップA7)、その他の処理(ステップA8)のループ処理を繰り返し実行する。
【0019】
図6は、メインフローにおけるステップA2のスイッチ処理のフローである。この処理では、図2に示したスイッチ群をスキャンして、モード選択スイッチ処理(ステップB1)、スタートスイッチ処理(ステップB2)、受信スイッチ処理(ステップB3)、チャンネル設定スイッチ処理(ステップB4)、ベロシティ設定スイッチ処理(ステップB5)、その他のスイッチ処理(ステップB6)を実行してメインフローに戻る。
【0020】
図7は、図6のステップB1におけるモード選択スイッチ処理のフローである。この処理では、モード選択スイッチがオンされたか否かを判別し(ステップC1)、オンされない場合にはこのフローを終了するが、オンされたときは、そのモードスイッチに応じた処理を行う。モードスイッチには、ノーマルスイッチ、レッスン1スイッチ、レッスン2スイッチ、レッスン3スイッチがある。
【0021】
ノーマルスイッチがオンされたか否かを判別し(ステップC2)、このスイッチがオンされた場合には、モードレジスタMODEを「0」にセットする(ステップC3)。レッスン1スイッチがオンされたか否かを判別し(ステップC4)、このスイッチがオンされた場合には、MODEに「1」をセットする(ステップC5)。レッスン2スイッチがオンされたか否かを判別し(ステップC6)、このスイッチがオンされた場合には、MODEに「2」をセットする(ステップC7)。レッスン3スイッチがオンされたか否かを判別し(ステップC8)、このスイッチがオンされた場合には、MODEに「3」をセットする(ステップC9)。
【0022】
MODEが「0」の場合には、鍵盤の演奏によってのみ発音する通常のノーマル演奏モードとなる。MODEが「1」〜「3」の場合は、フロッピーディスクの曲データをガイドするナビゲーション機能の演奏モードである。MODEが「1」の場合には、曲データのノートデータ(音高)にかかわらず、どの鍵を押鍵しても発音を行う演奏モードとなる。MODEが「2」の場合には、曲データのノートデータに対応する鍵(発光している鍵)が正しく押鍵されたときに発音を行う演奏モードとなる。MODEが「3」の場合には、演奏にかかわらず曲データを自動的に読み出すモードとなるが、ガイドする鍵が押鍵されたときに発音する。モードスイッチに応じた値をMODEに設定した後は、このフローを終了して図6のスイッチ処理に戻る。
【0023】
図8は、図6のスイッチ処理におけるステップB2のスタートスイッチ処理のフローである。この処理では、スタートスイッチがオンされたか否かを判別し(ステップD1)、オンされない場合にはこのフローを終了するが、オンされたときは、スタートフラグSTFを反転する(ステップD2)。そして、STFが「1」であるか否かを判別する(ステップD3)。
【0024】
STFが「1」である場合には、アドレスレジスタADを「0」すなわち曲データの先頭アドレスにセットし、レジスタSTATUSに「1」をセットする(ステップD4)。STATUSは、後述する押鍵処理において設定される値である。STATUSが「1」の場合は、曲データの発音開始タイミングに押鍵のタイミングが合っている状態である。STATUSが「2」の場合は、曲データの発音開始タイミングを経過した後も鍵が操作されない状態、すなわち押鍵のタイミングが遅れている状態である。STATUSが「3」の場合は、曲データの発音開始タイミングに到る前に鍵が操作された状態、すなわち押鍵のタイミングが早すぎる状態である。
【0025】
ステップD4の処理の後、レジスタSTに現在時刻をストアし(ステップD5)、タイムレジスタTを「0」にセットする(ステップD6)。次に、曲データの記憶エリアのアドレスAD(=0)のデータMEM[AD]がイベントデータであるか否かを判別する(ステップD7)。すなわち、曲データの最初がイベントデータであるか又は時間データであるか否かを判別する。イベントデータである場合には、レジスタΔTに最小時間をセットし(ステップD8)、ADを「1」だけデクリメントして(ステップD9)、アドレスを1つ戻す。このデクリメント処理は、後述する鍵ガイド処理のために必要な処理である。
【0026】
ステップD7において、曲データの最初がイベントデータでなく時間データである場合には、その時間データをΔTにセットする(ステップD10)。ステップD9においてADをデクリメントした後、又はステップD10においてΔTに時間データをセットした後は、Tの値にΔTの値を加算して更新する(ステップD11)。ステップD3において、STFが「0」である場合には、消音指示を行う(ステップD12)。ステップD11においてTの値にΔTの値を加算して更新した後、ステップD12において消音指示を行った後は、このフローを終了して図6のスイッチ処理に戻る。
【0027】
図9は、スイッチ処理におけるステップB3の受信スイッチ処理のフローである。この処理では、受信スイッチがオンされたか否かを判別し(ステップE1)、オンされない場合にはこのフローを終了するが、オンされたときは受信フラグZFを「1」にセットする(ステップE2)。そして、このフローを終了して図6のスイッチ処理に戻る。
【0028】
図10は、スイッチ処理におけるステップB4のチャンネル設定スイッチ処理のフローである。この処理では、押鍵ガイド用として指定するチャンネル(例えば、メロディチャンネル)を設定する。すなわち、チャンネル設定スイッチ及びチャンネル番号のスイッチがオンされたか否かを判別し(ステップF1)、オンされたときはチャンネルセットレジスタCHSETに設定チャンネルのチャンネル番号をストアする(ステップF2)。CHSETにストアした後、又は、ステップF1においてスイッチがオンされない場合には、このフローを終了して図6のスイッチ処理のフローに戻る。
【0029】
図11は、スイッチ処理におけるステップB5のフローである。この処理では、後述するガイドA処理において、押鍵すべき鍵に対応するLEDの発光色の条件を設定する。ベロシティ設定スイッチ及び設定ベロシティ値のスイッチがオンされたか否かを判別し(ステップG1)、オンされたときは設定ベロシティ値を設定ベロシティレジスタVSETにストアする(ステップG2)。VSETにストアした後、又は、ステップG1においてスイッチがオンされない場合には、このフローを終了して図6のスイッチ処理のフローに戻る。
【0030】
図12は、図5のメインフローにおけるステップA3の鍵ガイド処理のフローである。この処理では、モードレジスタMODEの値に応じた鍵ガイド処理を行う。すなわち、MODEの値が「1」又は「2」であるか否かを判別し(ステップH1)、「1」又は「2」である場合にはガイドA処理を実行する(ステップH2)。MODEの値が「1」及び「2」のいずれでもない場合には、MODEの値が「3」であるか否かを判別し(ステップH3)、「3」である場合にはガイドB処理を実行する(ステップH4)。ガイドA処理又はガイドB処理を行った後は、このフローを終了して図5のメインフローに戻る。
【0031】
図13〜図16は、図12におけるステップH2のガイドA処理のフローである。この処理では、スタートフラグSTFが「1」であるか否かを判別し(ステップJ1)、STFが「0」である場合には、演奏停止状態であるので、このフローを終了する。STFが「1(演奏開始)」である場合にはSTATUSの値が「2」でないか否かを判別する(ステップJ2)。
【0032】
STATUSの値が「2」でない場合には、レジスタSTの時間の値とレジスタTの時間の値を加算した値と現在時刻とを比較する(ステップJ3)。すなわち発音開始タイミングの時間と現在時刻とを比較する。現在時刻が発音開始タイミングの時間に達していない場合には、このフローを終了して図5のメインフローに戻る。
【0033】
現在時刻が発音開始タイミングの時間に達している場合には、レジスタADをインクリメントする(ステップJ4)。そして、アドレスADがENDでないか否かを判別する(ステップJ5)。ENDでない場合には、MEM[AD]のMIDIデータが時間データであるか否かを判別する(ステップJ6)。時間データである場合には、STATUSの値が「3」すなわち押鍵タイミングが発音開始タイミングより早すぎる場合であるか否かを判別する(ステップJ7)。
【0034】
STATUSの値が「3」である場合には、MIDIデータを早送りするために、ΔTに最小時間をセットする(ステップJ8)。STATUSの値が「3」でなく「1」である場合すなわち押鍵タイミングが発音開始タイミングに合っている場合には、ΔTにMEM[AD]の正規の時間データの値をセットする(ステップJ9)。ステップJ8又はステップJ9において、ΔTに値をセットした後は、Tの値にΔTの値を加算して、このフローを終了して図12の鍵ガイド処理に戻る。
【0035】
ステップJ5において、MEM[AD]がENDである場合には、曲データが終了したので、STFを「0」にリセットする(ステップJ11)。そして、このフローを終了して図12の鍵ガイド処理に戻る。
【0036】
ステップJ6において、MEM[AD]が時間データでない場合には、図14のフローにおいて、MEM[AD]がイベントデータであるか否かを判別する(ステップJ12)。イベントデータである場合には、そのイベントデータがノートイベントであるか否かを判別する(ステップJ13)。ノートイベントである場合には、そのイベントデータのチャンネルがCHSETの押鍵ガイド用のチャンネルと同一であるか否かを判別する(ステップJ14)。チャンネルが同一である場合には、イベントデータのノートデータをレジスタNOTEにセットする(ステップJ15)。
【0037】
次に、ADをインクリメントして、ベロシティデータをレジスタVELにストアする(ステップJ16)。そして、VELが「0」でないか否かを判別する(ステップJ17)。VELが「0」でない場合、すなわちNOTEにストアしたノートデータがノートオンである場合には、VELのベロシティデータにVSETのデータを乗算して「1」を加算する演算を行う(ステップJ18)。VSETのデータは、図11のVEL設定スイッチ処理においてユーザーによって所望の値に設定されている。あるいは、デフォルトの値に設定されている。ユーザーが設定する場合には、VSETのデータを「0」にすることも考えられる。この場合には、上記演算の結果、VELのデータが「0」になり、ノートオフになってしまう。このような状態を回避するために、「1」を加算してVELのベロシティデータの最小値を「1」に設定する。
【0038】
そして、VELのベロシティデータが所定値より大きいか否かを判別する(ステップJ19)。VELのベロシティデータが所定値より大きい場合には、NOTEに対する鍵内の赤色発光のLEDを点灯する処理を行う(ステップJ20)。一方、VELのベロシティデータが所定値以下である場合には、NOTEに対する鍵内の緑色発光のLEDを点灯する処理を行う(ステップJ21)。LEDの点灯処理を行った後は、STATUSの値が「3」であるか否かを判別する(ステップJ22)。STATUSの値が「3」である場合には、STATUSの値を「1」に変更する(ステップJ23)。次に、CHSET、VOLUMEの値に基づいてMIDIデータを作成する(ステップJ24)。
【0039】
ステップJ17においてVELのベロシティデータが「0」である場合、すなわちNOTEにストアしたノートデータがノートオフである場合には、NOTEに対する鍵内のLEDを消灯する処理を行う(ステップJ25)。LEDの消灯処理を行った後、又はステップJ12においてMEM[AD]がイベントデータでない場合には、図13のステップJ4に移行してアドレスADをインクリメントする。
【0040】
図14のステップJ13において、イベントデータがノートイベントでない場合には、図15のフローにおいて、イベントデータがボリュームイベントであるか否かを判別する(ステップJ26)。ボリュームイベントである場合には、アドレスADをインクリメントして、ボリュームデータをレジスタVOLUMEにストアする(ステップJ27)。
【0041】
次に、STATUSが「3」であるか否かを判別し(ステップJ28)、「3」である場合には、押鍵タイミングが発音開始タイミングより早すぎる場合である。この場合には、MIDIデータのボリューム値を最小の値に変更する(ステップJ29)。ボリューム値を変更した後、若しくはステップJ28においてSTATUSが「3」でない場合、又は、図14のステップJ14においてイベントデータのチャンネルとCHSETのチャンネルとが同一でない場合には、MIDIOUTバッファのポインタnを「0」にセットして(ステップJ30)、nをインクリメントしながら、以下のループ処理を行う。
【0042】
MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップJ31)、空きでない場合にはnをインクリメントする(ステップJ32)。そして、nが所定数を超えたか否かを判別する(ステップJ33)。所定数を超えていない場合には、ステップJ31においてMIDIOUTバッファ(n)の空きを捜す。空きがあったときは、そのMIDIOUTバッファ(n)にMIDIデータをストアする(ステップJ34)。次に、現在時刻をレジスタWTIMEにストアする(ステップJ35)。そして、WTIMEの現在時刻をMIDIOUTバッファ(n)にストアする(ステップJ36)。現在時刻をストアした後、又はステップJ33においてnが所定数を超えたときは、図13のステップJ4に移行してアドレスADをインクリメントする。
【0043】
図14のステップJ22において、STATUSが「3」でなく「1」である場合には、図16のフローにおいて、STATUSを「2」に変更する(ステップJ38)。すなわち、図14のステップJ20又はステップJ21において、NOTEに対する鍵内のLEDを点灯して押鍵をガイドした後は、STATUSを「1」から「2」に変更して押鍵されるまで曲データの読み出しを停止する状態に移行する。
【0044】
次に、MIDIデータをレジスタNVONにストアする(ステップJ38)。さらに、NVONのMIDIデータのCHSET及びNOTEと、値を「0」に変更したベロシティデータとに基づいてMIDIデータを作成する(ステップJ39)。そして、作成したMIDIデータをレジスタNVOFFにストアする(ステップJ40)。次に、NVONからMIDIデータを取り出す(ステップJ41)。そして、MIDIOUTバッファのポインタnを「0」にセットして(ステップJ42)、nをインクリメントしながら、以下のループ処理を行う。
【0045】
MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップJ43)、空きでない場合にはnをインクリメントする(ステップJ44)。そして、nが所定数を超えたか否かを判別する(ステップJ45)。所定数を超えていない場合には、ステップJ43においてMIDIOUTバッファ(n)の空きを捜す。空きがあったときは、そのMIDIOUTバッファ(n)にMIDIデータをストアする(ステップJ46)。次に、現在時刻をレジスタWTIMEにストアする(ステップJ47)。そして、WTIMEの現在時刻をMIDIOUTバッファ(n)にストアする(ステップJ48)。
【0046】
図13のステップJ2においてSTATUSが「2」である場合、すなわち読み出したMIDIデータの発音開始タイミングになっても押鍵がされない場合には、図16のフローにおいて、現在時刻がSTPの時間データ及びPの時間データを加算した値以上になったか否かを判別する(ステップJ49)。すなわち、ステップJ46においてMIDIOUTバッファ(n)にMIDIデータをストアした時から、所定時間(Pの所定値)が経過したか否かを判別する。MIDIデータをストアした後すぐにLEDの点灯処理又は消灯処理を行うので、ステップJ49においては、点灯処理又は消灯処理を行った時から所定時間が経過したか否かを判別する。
【0047】
現在時刻がSTP及びPの加算した値に達しない場合には図12の鍵ガイド処理のフローに戻るが、現在時刻がSTP及びPの加算した値以上になったときは、CFを反転する(ステップJ50)。そして、CFが「0」であるか否かを判別する(ステップJ51)。CFが「0」である場合には、NVOFFからベロシティデータが「0」のMIDIデータを取り出す(ステップJ52)。一方、CFが「1」である場合には、NVONから実際のベロシティデータのMIDIデータを取り出す(ステップJ41)。したがって、CFの値に応じて、実際のベロシティデータの発音イベントデータ又はベロシティデータが「0」の消音のイベントデータのいずれか一方を、ステップJ46においてMIDIOUTバッファ(n)にストアする。
【0048】
すなわち、読み出した発音のイベントデータの発音開始タイミングになっても押鍵がされない場合には、その発音のイベントデータのベロシティデータを「0」に変更して消音のイベントデータを生成し、発音のイベントデータと変更した消音のイベントデータとを、Pにストアした所定時間が経過するごとに、交互にMIDIOUTバッファにストアする。
【0049】
次に、図17のフローにおいて、MIDIデータのベロシティデータをレジスタVELにストアする(ステップJ53)。そして、VELが「0」でないか否かを判別する(ステップJ54)。VELが「0」でない場合、すなわちNOTEにストアしたノートがノートオンである場合には、VELのベロシティデータにVSETのデータを乗算して最小値「1」を加算する演算を行う(ステップJ55)。
【0050】
そして、VELのベロシティデータが所定値より大きいか否かを判別する(ステップJ56)。VELのベロシティデータが所定値より大きい場合には、NOTEに対する鍵内の赤色発光のLEDを点灯する処理を行う(ステップJ57)。一方、VELのベロシティデータが所定値以下である場合には、NOTEに対する鍵内の緑色発光のLEDを点灯する処理を行う(ステップJ58)。ステップJ54においてVELのベロシティデータが「0」である場合、すなわちNOTEにストアしたノートが消音のイベントデータである場合には、NOTEに対する鍵内のLEDを消灯する処理を行う(ステップJ59)。
【0051】
LEDの点灯処理又は消灯処理を行った後は、フラグCFを「0」にリセットし(ステップJ60)、レジスタSTPに現在時刻をストアし(ステップJ61)、レジスタPに所定値をストアする(ステップJ62)。そして、このフローを終了して図12の鍵ガイド処理のフローに戻る。したがって、発音開始タイミングを経過した後は、Pにストアされている時間が経過するごとに、発音イベントデータに応じた点灯信号、及び、消音イベントデータに応じた消灯信号をLEDに交互に送出するので、LEDが点滅する。
【0052】
図18〜図20は、図12の鍵ガイド処理におけるステップH4のガイドB処理のフローである。この処理では、スタートフラグSTFが「1」であるか否かを判別し(ステップK1)、STFが「0」である場合には、演奏停止状態であるので、このフローを終了する。STFが「1」である場合には、レジスタSTの時間データとレジスタTの時間データを加算した値、すなわち発音開始タイミングの時間と現在時刻とが一致しているか否かを判別する(ステップK2)。現在時刻が発音開始タイミングに一致していない場合には、このフローを終了する。
【0053】
現在時刻が発音開始タイミングの時間に一致したときは、レジスタADのアドレスをインクリメントする(ステップK3)。そして、アドレスADがENDでないか否かを判別する(ステップK4)。ENDでない場合には、MEM[AD]のデータが時間データであるか否かを判別する(ステップK5)。時間データである場合には、ΔTにMEM[AD]の時間データの値をセットする(ステップK6)。次に、Tの値にΔTの値を加算し(ステップK7)、このフローを終了して図12の鍵ガイド処理に戻る。ステップK4において、ADがENDである場合には、フラグSTFを「0」にリセットする(ステップK8)。そして、このフローを終了して図12の鍵ガイド処理に戻る。
【0054】
ステップK5において、MEM[AD]が時間データでない場合には、図19のフローにおいて、MEM[AD]のデータがイベントデータであるか否かを判別する(ステップK9)。イベントデータでない場合には、図18のステップK3に移行してADをインクリメントするが、イベントデータである場合には、そのイベントデータがノートイベントであるか否かを判別する(ステップK10)。ノートイベントである場合には、MIDIデータのチャンネルとCHSETの押鍵ガイド用のチャンネルとが同一であるか否かを判別する(ステップK11)。
【0055】
チャンネルが同一である場合には、ADをインクリメントして、ベロシティデータをレジスタVELにストアする(ステップK12)。そして、VELのベロシティデータが「0」でないか否かを判別する(ステップK13)。VELのベロシティデータが「0」でない場合には、VELのベロシティデータを「1」に変更する(ステップK14)。そして、MIDIデータのベロシティデータをVELのベロシティデータの値に変更する(ステップK15)。次に、MIDIデータのノートデータに対する鍵内の赤色発光のLEDを点灯する処理を行う(ステップK16)。ステップK13においてVELのベロシティデータの値が「0」である場合には、MIDIデータのノートデータに対する鍵内の赤色発光のLEDを消灯する処理を行う(ステップK17)。
【0056】
LEDの点灯処理若しくは消灯処理を行った後、又はステップK10においてイベントデータがノートイベントでない場合、若しくはステップK11においてMIDIデータとCHSETのチャンネルが同一でない場合には、図20のフローにおいて、MIDIOUTバッファのエリアを指定するポインタnを「0」にセットして(ステップK18)、nをインクリメントしながら、以下のループ処理を行う。
【0057】
MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップK19)、空きでない場合にはnをインクリメントする(ステップK20)。そして、nが所定数を超えたか否かを判別する(ステップK21)。所定数を超えていない場合には、ステップK19においてMIDIOUTバッファ(n)の空きを捜す。空きがあったときは、そのMIDIOUTバッファ(n)にMIDIデータをストアする(ステップK22)。次に、現在時刻をレジスタWTIMEにストアする(ステップK23)。そして、図18のステップK3に移行してADをインクリメントする。
【0058】
図21及び図22は、図5のメインフローにおけるステップA4の押鍵処理のフローである。まず、鍵変化があるか否かを判別し(ステップL1)、鍵変化がない場合にはメインフローに戻る。オフからオンに鍵変化があったとき、すなわち押鍵操作がされたときは、レジスタKEYにノートデータ(音高データ)をストアし(ステップL2)、レジスタVELOCITYに押鍵のベロシティデータをストアする(ステップL3)。
【0059】
次に、MODEの値が「1」又は「2」のいずれかであるかを判別する(ステップL4)。すなわち、押鍵を待つモードであるか否かを判別する。MODEの値が「1」又は「2」である場合には、MODEの値が「2」であるか否かを判別する(ステップL5)。MODEの値が「2」である場合には、KEYの値である押鍵のキー番号とNOTEの値であるMIDIデータのノートデータとが一致するか否かを判別する(ステップL6)。
【0060】
KEYの値とNOTEの値が一致した場合、又はステップL5においてMODEの値が「1」で、どの鍵を押鍵しても発音する演奏モードである場合には、現在時刻がSTの時間データとTの時間データを加算した値に達しているか否かを判別する(ステップL7)。すなわち、現在時刻が発音開始タイミングの時間に達しているか否かを判別する。
【0061】
現在時刻がSTの時間データとTの時間データを加算した値に達している場合には、STATUSの値に「1」をセットして(ステップL8)、現在時刻からSTの時間データとTの時間データを加算した値を減算して、その減算値を差分レジスタSにストアする(ステップL9)。そして、STの時間データにSの値を加算する(ステップL10)。すなわち、時間の経過に応じてSTの値を更新する。次に、CHSET、KEY、VELOCITYのデータに基づいてMIDIデータを作成する(ステップL11)。
【0062】
ステップL7において、現在時刻がSTの時間データとTの時間データを加算した値に達していない場合には、MODEが「1」であるか否かを判別する(ステップL12)。すなわち、どの鍵を押鍵しても発音する演奏モードであるか否かを判別する。MODEが「1」である場合には、STATUSの値を「3」にセットする(ステップL13)。すなわち、発音開始タイミングに到る前に鍵が操作された場合には、発音開始タイミングまで曲データを早送りする状態に設定する。そして、押鍵用チャンネル、KEY、VELOCITYのデータに基づいてMIDIデータを作成する(ステップL11)。
【0063】
ステップL1において、鍵変化がオンからオフである場合、すなわち離鍵操作がされたときは、KEYに離鍵のノートデータをストアし(ステップL14)、VELOCITYの値を「0」にセットする(ステップL15)。そして、CHSET、KEY、VELOCITYのデータに基づいてMIDIデータを作成する(ステップL11)。
【0064】
ステップL4において、MODEの値が「1」及び「2」でなく「3」である場合、ステップL6においてKEYの値とNOTEの値が一致しない場合、すなわちガイドした鍵とは異なる鍵が押鍵操作された場合、又はステップL12においてMODEの値が「1」でない場合には、いずれも押鍵用チャンネル、KEY、VELOCITYのデータに基づいてMIDIデータを作成する(ステップL11)。
【0065】
MIDIデータを作成した後は、図22において、押鍵用のMIDIOUTバッファを指定するポインタnを「0」にセットして(ステップL16)、nをインクリメントしながらMIDIOUTバッファ(n)にMIDIデータをセットする。すなわち、MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップL17)、空きでない場合にはnをインクリメントする(ステップL18)。そして、nが所定数を超えたか否かを判別する(ステップL19)。nが所定数以下である場合には、ステップL17に移行してMIDIOUTバッファ(n)の空きを捜す。
【0066】
MIDIOUTバッファ(n)が空きである場合には、MIDIOUTバッファ(n)にMIDIデータをストアする(ステップL20)。また、レジスタWTIMEに現在時刻をストアし(ステップL21)、MIDIOUTバッファ(n)にWTIMEの時間データ(現在時刻)をストアする(ステップL22)。時間データをストアした後、又は、ステップL19においてnが所定数を超えた場合には、このフローを終了して図5のメインフローに戻る。
【0067】
図23は、メインフローにおけるステップA6の出力処理のフローである。この処理では、MIDIOUTバッファを指定するポインタnを「0」にセットして(ステップM1)、nをインクリメントしながら、以下の出力処理を実行する。すなわち、nで指定したMIDIOUTバッファ(n)が空きでないか否かを判別し(ステップM2)、空きでない場合にはMIDIOUTバッファ(n)からMIDIデータとWTIMEを読み出す(ステップM3)。そして、読み出したMIDIデータが押鍵用のMIDIOUTバッファからでないか否かを判別する(ステップM4)。すなわち、演奏によって作成されたMIDIデータでなく、MEM(フロッピーディスク)から読み出したMIDIデータであるか否かを判別する。MEMのMIDIデータである場合には、現在時刻からWTIMEの時間データを差し引いた値をレジスタDにストアする(ステップM5)。
【0068】
次に、Dの値が所定時間以上であるか否かを判別する(ステップM6)。Dの値が所定時間以上である場合には、MIDIデータを音源(図1のMIDI音源3)に出力する(ステップM7)。一方、演奏によって作成されたMIDIデータである場合には、直ちにMIDIデータを音源に出力する(ステップM7)。そして、MIDIOUTバッファ(n)を空きにする(ステップM8)。バッファをクリアにした後、ステップM5においてDが所定値より小さい場合、又は、ステップM2においてMIDIバッファ(n)が空きでMIDIデータがない場合には、nをインクリメントする(ステップM9)。そして、nが所定数を超えたか否かを判別し(ステップM10)、所定数を超えていない場合には、ステップM2に移行して、ステップM10までのループ処理を繰り返す。nが所定数を超えたときは、このフローを終了して図5のメインフローに戻る。
【0069】
このように、鍵盤装置1からMIDI音源3に出力するMIDIデータを所定時間だけ遅らせて出力する。すなわち、CHSETに設定したチャンネルのMIDIデータが押鍵ガイドのために、MIDI音源3に出力するのが他のチャンネルより遅れてしまうので、他のチャンネルも同じ時間だけ遅らせてMIDI音源3に出力するのである。したがって、押鍵ガイドに指定されたチャンネルのMIDIデータだけが、他のチャンネルより遅れてMIDI音源3に出力されるという不具合がなくなる。
【0070】
図24は、メインフローにおけるステップA7の受信処理のフローである。この処理では、受信フラグZFが「1」であるか否かを判別し(ステップN1)、ZFが「0」である場合にはこのフローを終了するが、ZFが「1」で曲データサーバーへのアクセス要求である場合には、MEMのアドレスADを「0」にセットして(ステップN2)、ADをインクリメントしながら以下のループ処理を実行する。
【0071】
すなわち、MODEMを介してMIDIデータの受信があるか否かを判別し(ステップN3)、受信があったときはそのMIDIデータをADで指定するフロッピーディスクの記憶エリアMEM[AD]にストアする(ステップN4)。そして、ADをインクリメントして次のエリアを指定する(ステップN5)。この後、受信が終了したか否かを判別し(ステップN6)、終了していない場合には、ステップN3に移行してMIDIデータの受信があるか否かを判別する。受信したMIDIデータをADで示すフロッピーディスクの記憶エリアにストアし、受信が終了した場合には、レジスタENDにADのアドレスをセットする(ステップN7)。そして、ZFを「0」にリセットして(ステップN8)、図5のメインフローに戻る。
【0072】
このように上記第1実施形態においては、鍵盤装置のCPU11は、フロッピーディスク2からイベントデータを読み出すデータ読出手段を構成し、読み出した発音のイベントデータ又は消音のイベントデータに応じて、点灯信号又は消灯信号を発生する信号発生手段を構成する。また、発音のイベントデータを消音のイベントデータに変更するデータ変更手段を構成する。さらに、発音のイベントデータの発音開始タイミングが経過しても操作すべき鍵が押鍵されない場合には、その発音のイベントデータに応じた点灯信号と、その発音のイベントデータを変更した消音のイベントデータに応じた消音信号とを、LED20に交互に送出して点滅させる発光制御手段を構成する。
【0073】
したがって、演奏操作をガイドするナビゲーション機能において、発音開始タイミングに対する押鍵タイミングの教習を、曲データの編集を行うことなく容易に実現できる。
【0074】
またこの場合において、CPU11は、MODEM17とともに、通信回線(ネットワーク4)を介して外部装置である曲データサーバー5と接続し、曲データを曲データサーバー5から受信する通信制御手段を構成する。したがって、通信回線を介して外部装置から受信する曲データで編集を行うことができない場合でも、発音開始タイミングに対する押鍵タイミングの教習を実現できる。
【0075】
さらに、各鍵内に設けられたLED20は、赤色及び緑色の異なる発光色で発光するので、読み出されたイベントデータのベロシティデータが所定値以上であるか否かを判別し、その判別結果に応じた発光色でを発光させる。したがって、押鍵タイミングだけでなく、押鍵の強弱をガイドすることができる。
【0076】
次に、本発明における演奏教習装置の第2実施形態について説明する。図25及び図26は、第2実施形態におけるシステム構成を示している。図25において、鍵盤装置(演奏装置)101は、RS−232C等のシリアルインターフェース102を介してFDプレーヤ(演奏制御装置)103に接続されている。FDプレーヤ103は、通信制御手段であるMODEMを備えており、インターネット等のネットワーク(通信回線)4を介して曲データサーバー5に接続して、曲データサーバー5から曲データを受信して、記憶手段であるフロッピーディスク(FD)2に記憶する。
【0077】
すなわち、上記構成における演奏教習装置は、鍵盤装置101とFDプレーヤ103との間で通信を行って演奏の教習を行う。このため、鍵盤装置101には、曲データをMIDIデータ形式でFDプレーヤ103から受信する手段(第1の受信手段)と、操作結果を示す操作結果情報をMIDIデータ形式でFDプレーヤ103に送信する手段(第1の送信手段)を備えている。また、FDプレーヤ103は、曲データを記憶する記憶手段であるフロッピーディスク2を駆動して、読み出したMIDIデータ形式の曲データを鍵盤装置101に送信する手段(第2の送信手段)と、MIDIデータ形式の操作結果情報を鍵盤装置101から受信する手段(第2の受信手段)を備えている。
【0078】
また、図26において、鍵盤装置(演奏装置)101は、RS−232C等のシリアルインターフェース102を介して汎用のパソコン(演奏制御装置)104に接続されている。パソコン104は、通信制御手段であるMODEMを備えており、インターネット等のネットワーク(通信回線)4を介して曲データサーバー5に接続して、曲データサーバー5から曲データを受信して、記憶手段であるフロッピーディスク2に記憶する。
【0079】
すなわち、上記構成における演奏教習装置は、鍵盤装置101とパソコン104との間で通信を行って演奏の教習を行う。このため、鍵盤装置101には、図25の構成と同様に、曲データをMIDIデータ形式でパソコン104から受信する手段(第1の受信手段)と、操作結果を示す操作結果情報をMIDIデータ形式でパソコン104に送信する手段(第1の送信手段)を備えている。また、パソコン104は、曲データを記憶する記憶手段であるフロッピーディスク2を駆動して、読み出したMIDIデータ形式の曲データを鍵盤装置101に送信する手段(第2の送信手段)と、MIDIデータ形式の操作結果情報を鍵盤装置101から受信する手段(第2の受信手段)を備えている。
【0080】
このように、図25に示すFDプレーヤ103は、図26に示す汎用のパソコン104を演奏制御装置の専用装置として特化した構成であり、演奏教習処理プログラムを格納したプログラムROM、及び、後述するモード選択スイッチ、スタートスイッチ等の必要なスイッチ、その他演奏教習に必要な構成要素を備えている。すなわち、演奏教習装置としては、図25の構成と図26の構成は全く同じ構成である。
【0081】
したがって、図25及び図26に示すフロッピーディスク2に記憶される曲データも同じMIDIデータ形式であり、操作すべき操作子すなわち鍵を示す音高データ、発音開始タイミングを示す時間データ、及び発音の強弱又は消音を示すベロシティデータからなるイベントデータで構成されている。なお、このMIDIデータの構成は、図3及び図4に示した第1実施形態の構成と同じである。
【0082】
図27に、鍵盤装置101の内部ブロック図を示す。CPU11は、システムバスを介して、ROM12、RAM13、キースキャンインターフェース14、LEDC(LEDコントローラ)15、MIDIインターフェース18に接続されている。
【0083】
ROM12は、CPU11によって実行される演奏教習処理プログラムを記憶している。RAM13は、CPU11によって処理される各種データを一時的に記憶する。キースキャンインターフェース14は、複数の操作子である光鍵盤及びスイッチ群からなるキーボード19に接続され、その操作状態をスキャンしてCPU11に入力する。LEDC15は、各鍵内に設けられた発光手段であるLED20の発光及び消灯を制御する。LED20は、赤色の発光素子及び緑色の発光素子で構成された、2色発光の発光ダイオードである。MIDIインターフェース18は、シリアルインターフェース102を介して、パソコン104との間でMIDIデータを送受信する。
【0084】
次に、第2実施形態における演奏教習装置の動作について、図26のシステム構成を例に採って、パソコン104が実行するプログラムのフローチャート、及び、鍵盤装置101のCPU11の動作フローチャートに基づいて説明する。パソコン104は、サーバー5の曲データをMIDIデータの形式で受信してフロッピーディスク2に記憶し、鍵盤装置101に送信する。そして、鍵盤装置101の鍵盤の操作結果を示す操作結果情報のMIDIデータを入力し、その内容に応じて次のMIDIデータを順次出力する。
【0085】
図28は、演奏制御装置としてのパソコン(PC)104側のメインフローである。このメインフローでは、時刻計時処理(ステップA1)、スイッチ処理(ステップA2)、受信処理(ステップA3)、MIDI処理(ステップA4)、ガイド信号生成処理(ステップA5)、その他の処理(ステップA6)のループ処理を繰り返し実行する。
【0086】
図29は、図28のメインフローにおけるステップA2のスイッチ処理のフローである。この処理では、パソコンのキーボードをスキャンして、モード選択スイッチ処理(ステップB1)、スタートスイッチ処理(ステップB2)、受信スイッチ処理(ステップB3)、設定スイッチ処理(ステップB4)、その他のスイッチ処理(ステップB5)を実行してメインフローに戻る。
【0087】
図30は、図29のスイッチ処理におけるステップB1のモード選択スイッチ処理のフローである。この処理では、モード選択スイッチがオンされたか否かを判別し(ステップC1)、オンされない場合にはこのフローを終了するが、オンされたときは、そのモードスイッチに応じた処理を行う。モードスイッチには、レッスン1スイッチ、レッスン2スイッチ、レッスン3スイッチがある。
【0088】
レッスン1スイッチがオンされたか否かを判別し(ステップC2)、このスイッチがオンされた場合には、MODEに「1」をセットする(ステップC3)。レッスン2スイッチがオンされたか否かを判別し(ステップC4)、このスイッチがオンされた場合には、MODEに「2」をセットする(ステップC5)。レッスン3スイッチがオンされたか否かを判別し(ステップC6)、このスイッチがオンされた場合には、MODEに「3」をセットする(ステップC7)。
【0089】
MODEが「1」の場合には、曲データのノートデータ(音高)にかかわらず、どの鍵を押鍵しても発音を行う演奏モードとなる。MODEが「2」の場合には、曲データのノートデータに対応する鍵(発光している鍵)が正しく押鍵されたときに発音を行う演奏モードとなる。MODEが「3」の場合には、演奏にかかわらず曲データを自動的に読み出すモードとなるが、ガイドする鍵が押鍵されたときに発音する。モードスイッチに応じた値をMODEに設定した後は、このフローを終了して図29のスイッチ処理に戻る。
【0090】
図31は、図29のスイッチ処理におけるステップB2のスタートスイッチ処理のフローである。この処理では、スタートスイッチがオンされたか否かを判別し(ステップD1)、オンされない場合にはこのフローを終了するが、オンされたときは、スタートフラグSTFを反転する(ステップD2)。そして、STFが「1」であるか否かを判別する(ステップD3)。
【0091】
STFが「1」である場合には、アドレスレジスタADを「0」すなわち曲データの先頭アドレスにセットし、レジスタSTATUSに「1」をセットする(ステップD4)。STATUSは、鍵盤装置側において後述するMIDIIN処理及びガイドA処理で設定される値である。STATUSが「1」の場合は、曲データの発音開始タイミングに押鍵のタイミングが合っている状態である。STATUSが「2」の場合は、曲データの発音開始タイミングを経過した後も鍵が操作されない状態、すなわち押鍵のタイミングが遅れている状態である。STATUSが「3」の場合は、曲データの発音開始タイミングに到る前に鍵が操作された状態、すなわち押鍵のタイミングが早すぎる状態である。
【0092】
ステップD4の処理の後、レジスタSTに現在時刻をストアし(ステップD5)、タイムレジスタTを「0」にセットする(ステップD6)。次に、曲データの記憶エリアのアドレスAD(=0)のデータMEM[AD]が時間データであるか否かを判別する(ステップD7)。すなわち、曲データの最初がイベントデータであるか又は時間データであるか否かを判別する。最初がイベントデータである場合には、レジスタΔTに最小時間をセットし(ステップD8)、ADをデクリメントして(ステップD9)、アドレスを1つ戻す。したがって、ADの値は「−1」となる。このデクリメント処理は、後述する鍵ガイド処理のために必要な処理である。
【0093】
ステップD7において、曲データの最初がイベントデータでなく時間データである場合には、その時間データをΔTにセットする(ステップD10)。ステップD9においてADをデクリメントした後、又はステップD10においてΔTに時間データをセットした後は、Tの値にΔTの値を加算して更新する(ステップD11)。そして、このフローを終了して図29のスイッチ処理に戻る。ステップD3において、STFが「0」である場合には演奏停止状態であるので、このフローを終了して図29のスイッチ処理に戻る。
【0094】
図32は、スイッチ処理におけるステップB3の受信スイッチ処理のフローである。この処理では、受信スイッチがオンされたか否かを判別し(ステップE1)、オンされない場合にはこのフローを終了するが、オンされたときは受信フラグZFを「1」にセットする(ステップE2)。そして、このフローを終了して図29のスイッチ処理に戻る。
【0095】
図33は、図29のスイッチ処理におけるステップB4の設定スイッチ処理のフローである。この処理では、鍵ガイドとして指定するチャンネル(例えば、メロディチャンネル)を設定する。すなわち、チャンネル設定スイッチ及びチャンネル番号のスイッチがオンされたか否かを判別し(ステップF1)、オンされたときはSTFが「0」であるか否かを判別する(ステップF2)。STFが「0」である場合には、チャンネルセットレジスタCHSETに押鍵ガイド用として指定するチャンネルのチャンネル番号をストアする(ステップF3)。CHSETにチャンネル番号をストアした後、又は、ステップF1においてスイッチがオンされない場合、若しくはステップF2においてSTFが「1」である場合には、このフローを終了して図29のスイッチ処理のフローに戻る。
【0096】
図34は、図28のメインフローにおけるステップA3の受信処理のフローである。この処理では、受信フラグZFが「1」であるか否かを判別する(ステップG1)。ZFが「0」である場合にはこのフローを終了するが、ZFが「1」である場合には、サーバーにアクセスしてMIDIデータを要求する。そして、曲データを記憶するフロッピーディスクの記憶エリアMEMのアドレスADを「0(先頭アドレス)」にセットする(ステップG2)。次に、MIDIデータを受信したか否かを判別し(ステップG3)、受信したときはその受信データをMEM[AD]にストアする(ステップG4)。そして、ADをインクリメントする(ステップG5)。
【0097】
ADをインクリメントした後、又はステップG3においてMIDIデータを受信しない場合には、受信終了か否かを判別する(ステップG6)。受信終了でない場合には、ステップG3に移行してMIDIデータの受信を待つ。そして、MIDIデータを受信するたびに、その受信データをMEM[AD]に逐次ストアするとともに、ADをインクリメントしていく。ステップG6において受信終了になったときは、そのときのADのアドレスをエンドレジスタENDにストアし(ステップG7)、ZFを「0」にリセットする(ステップG8)。そして、このフローを終了して図28のメインフローに戻る。
【0098】
図35は、メインフローにおけるステップA4のMIDI処理のフローである。この処理では、MIDIデータを入力するMIDIIN処理(ステップH1)、MIDIデータを出力するMIDIOUT処理(ステップH2)を実行して、メインフローに戻る。
【0099】
図36は、MIDIIN処理のフローである。このフローでは、後述するMIDIOUT処理で鍵盤装置に出力したMIDIデータに対する鍵盤装置の操作結果をMIDIデータとして入力し、その入力したMIDIデータ及び設定されたモードに応じた処理を行う。まず、MODEが「3」でないか否かを判別する(ステップJ1)。MODEが「3」である場合には、操作結果にかかわらずフロッピーディスクから曲データを自動的に読み出すので、MIDIIN処理を行うことなく、このフローを終了する。
【0100】
MODEが「3」でない場合には、MIDIINであるか否かを判別する(ステップJ2)。すなわち鍵盤装置からMIDIデータの入力があったか否かを判別する。MIDIデータの入力があったときは、そのMIDIデータがノートイベントであるか否かを判別する(ステップJ3)。ノートイベントである場合には、そのMIDIデータのチャンネルが押鍵ガイド用としてCHSETに設定されたチャンネルと同一であるか否かを判別する(ステップJ4)。
【0101】
チャンネルが同一である場合には、MIDIデータのベロシティデータが「0」でないか否かを判別する(ステップJ5)。「0」でない場合には、MODEが「2」であるか否かを判別する(ステップJ6)。MODEが「2」である場合、すなわち正しい押鍵のときに発音する演奏モードである場合には、MIDIデータのノートデータをキーレジスタKEYにストアする(ステップJ7)。そして、KEYのノートデータが押鍵ガイドのノートデータをストアしたレジスタNOTEのノートデータと一致するか否かを判別する(ステップJ8)。すなわち、押鍵をガイドした鍵が正しく操作されたか否かを判別する。
【0102】
KEY及びNOTEのノートデータが同じである場合、又はステップJ6においてMODEが「1」である場合、すなわち、どの鍵を押鍵しても次のMIDIデータを出力する演奏モードである場合には、現在時刻がSTの時間データ及びTの時間データを加算した時間に達したか否かを判別する(ステップJ9)。すなわち、現在時刻が発音開始タイミングに達しているか否かを判別する。
【0103】
現在時刻がST及びTの時間データを加算した値より小さくて、まだ発音開始タイミングに達していない場合には、MODEが「1」であるか否かを判別する(ステップJ10)。MODEが「1」である場合には、STATUSを「3」にセットする(ステップJ11)。すなわち、発音開始タイミングに到る前に鍵が操作された場合には、STATUSを「3」に設定する。この状態では、発音開始タイミングに到るまでのMIDIデータを早送りすることになる。STATUSを「3」にセットした後は、このフローを終了して図35のフローに戻る。
【0104】
ステップJ9において、現在時刻がST及びTの時間データを加算した値になって、発音開始タイミングに達したときは、STATUSに「1」をセットする(ステップJ12)。次に、現在時刻からST及びTの時間データを加算した値を減算し、その差分の時間データをレジスタSにストアする(ステップJ13)。そして、STの時間データにSの時間データを加算する(ステップJ14)。すなわち、時間の経過にしたがってSTの値を更新する。そして、このフローを終了して図35のフローに戻る。
【0105】
ステップJ2においてMIDIINでない場合、ステップJ3においてMIDIデータがノートイベントでない場合、ステップJ4においてMIDIデータのチャンネルとCHSETに設定した押鍵ガイド用のチャンネルとが異なる場合、ステップJ5においてMIDIデータのベロシティデータが「0」である場合、ステップJ8においてKEYのノートデータとNOTEのノートデータとが異なる場合、又は、ステップJ10においてMODEが「2」である場合には、いずれもこのフローを終了して図35のフローに戻る。
【0106】
図37は、図35のフローにおけるステップH2のMIDIOUT処理のフローである。この処理では、MIDIOUTバッファを指定するポインタnを「0」にセットして(ステップK1)、nをインクリメントしながら、以下のループ処理を実行する。MIDIOUTバッファ(n)が空きでないか否かを判別し(ステップK2)、空きでない場合には、MIDIOUTバッファ(n)からMIDIデータ及びWTIMEの時間データを読み出す(ステップK3)。
【0107】
次に、読み出したMIDIデータのチャンネルとCHSETに設定した押鍵ガイド用のチャンネルとが同一でないか否かを判別する(ステップK4)。チャンネルが同一でない場合、すなわち読み出したMIDIデータが押鍵ガイド用のチャンネルでない場合には、現在時刻からWTIMEの時間データを減算し、その差分の時間データをレジスタDにストアする(ステップK5)。そして、Dの時間データが所定時間に達したか否かを判別する(ステップK6)。
【0108】
所定時間に達したときは、MIDIデータを鍵盤装置に出力する(ステップK7)。ステップK4において、読み出したMIDIデータのチャンネルとCHSETに設定した押鍵ガイド用のチャンネルとが同一である場合には、直ちにそのMIDIデータを鍵盤装置に出力する。ステップK6における所定時間は、押鍵ガイド用のチャンネルのMIDIデータによって、鍵盤装置の対応する鍵内のLEDを発音開始タイミングに先立って発光させて押鍵をガイドするための所要時間である。したがって、押鍵ガイド用のチャンネルのMIDIデータは、この所要時間だけ他のチャンネルのMIDIデータより早く出力する必要がある。
【0109】
ところが、特定のチャンネルを実際の時間よりも早くすることはできないので、その代わりに他のチャンネルのMIDIデータをこの所要時間だけ遅らせて、相対的に押鍵ガイド用のチャンネルのMIDIデータの出力を早める処理をステップK4〜ステップK7の処理で行っている。したがって、押鍵ガイド用のチャンネルの発音が、押鍵ガイドに要する時間のために他のチャンネルの発音よりも遅れるという不具合がなくなる。
【0110】
ステップK7においてMIDIデータを出力した後は、MIDIOUTバッファ(n)のエリアをクリアする(ステップK8)。そして、nをインクリメントして次のMIDIOUTバッファのエリアを指定する(ステップK9)。ステップK2において指定したMIDIOUTバッファ(n)のエリアが空きで、そのエリアにMIDIデータがない場合、又は、ステップK6においてDの時間データが所定時間に達していない場合にも、ステップK9においてnをインクリメントして次のMIDIOUTバッファのエリアを指定する。
【0111】
そして、nがMIDIOUTバッファの全エリアである所定数を超えたか否かを判別する(ステップK10)。nが所定数以下である場合には、ステップK2に移行して、MIDIOUTバッファ(n)が空きであるか否かを判別する。そして、MIDIOUTバッファ(n)にMIDIデータがある限り、そのMIDIデータを読み出して、そのMIDIデータのチャンネルに応じた処理を行いながら鍵盤装置に出力する。そして、nが所定数を超えたときは、このフローを終了して図35のフローに戻る。
【0112】
図38は、図28のメインフローにおけるステップA5のガイド信号生成処理のフローである。この処理では、モードレジスタMODEの値に応じた鍵ガイド処理を行う。すなわち、MODEの値が「1」又は「2」であるか否かを判別し(ステップL1)、「1」又は「2」である場合にはガイドA処理を実行する(ステップL2)。MODEの値が「1」及び「2」のいずれでもない場合には、MODEの値が「3」であるか否かを判別し(ステップL3)、「3」である場合にはガイドB処理を実行する(ステップL4)。ガイドA処理又はガイドB処理の後、図28のメインフローに戻る。
【0113】
図39〜図43は、図38におけるステップL2のガイドA処理のフローである。この処理では、スタートフラグSTFが「1」であるか否かを判別し(ステップM1)、STFが「0」である場合には、演奏停止状態であるので、このフローを終了する。STFが「1(演奏開始)」である場合にはSTATUSの値が「2」でないか否かを判別する(ステップM2)。
【0114】
STATUSの値が「2」でない場合には、レジスタSTの時間データとレジスタTの時間データを加算した値と現在時刻とを比較する(ステップM3)。すなわち、発音開始タイミングの時間と現在時間とを比較する。現在時刻が発音開始タイミングの時間に達していない場合には、このフローを終了して図28のメインフローに戻る。
【0115】
現在時間が発音開始タイミングの時間に達している場合には、レジスタADをインクリメントする(ステップM4)。そして、アドレスADがENDでないか否かを判別する(ステップM5)。ENDでない場合には、MEM[AD]のMIDIデータが時間データであるか否かを判別する(ステップM6)。時間データである場合には、STATUSの値が「3」すなわち押鍵タイミングが発音開始タイミングより早すぎる場合であるか否かを判別する(ステップM7)。
【0116】
STATUSの値が「3」である場合には、MIDIデータを早送りするために、ΔTに最小時間をセットする(ステップM8)。STATUSの値が「3」でなく「1」である場合すなわち押鍵タイミングが発音開始タイミングに合っている場合には、ΔTにMEM[AD]の正規の時間データの値をセットする(ステップM9)。ステップM8又はステップM9において、ΔTに値をセットした後は、Tの値にΔTの値を加算して、このフローを終了して図28のメインフローに戻る。
【0117】
ステップM5において、MEM[AD]がENDである場合には、曲データが終了したので、STFを「0」にリセットする(ステップM11)。そして、このフローを終了して図28のメインフローに戻る。
【0118】
ステップM6において、MEM[AD]が時間データでない場合には、図40のフローにおいて、MEM[AD]がイベントデータであるか否かを判別する(ステップM12)。イベントデータである場合には、そのイベントデータのチャンネルがCHSETの押鍵ガイド用のチャンネルと同一であるか否かを判別する(ステップM13)。同一のチャンネルである場合には、そのイベントデータがノートイベントであるか否かを判別する(ステップM14)。
【0119】
ノートイベントである場合には、ADをインクリメントして、ベロシティデータをレジスタVELにストアする(ステップM15)。そして、VELのベロシティデータが「0」でないか否かを判別する(ステップM16)。VELが「0」でない場合、すなわちノートデータがノートオンである場合には、MIDIデータのノートデータをレジスタNOTEにストアする(ステップM17)。次に、MIDIOUTバッファを指定するnを「0」にセットして(ステップM18)、nをインクリメントしながらMIDIOUTバッファ(n)にMIDIデータをストアする。すなわち、MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップM19)、空きでない場合にはnをインクリメントする(ステップM20)。そして、nが所定数を超えたか否かを判別する(ステップM21)。nが所定数以下である場合には、ステップM19に移行してMIDIOUTバッファ(n)の空きを捜す。
【0120】
MIDIOUTバッファ(n)が空きである場合には、MIDIOUTバッファ(n)にMIDIデータをストアする(ステップM22)。また、レジスタWTIMEに現在時刻をストアし(ステップM23)、MIDIOUTバッファ(n)にWTIMEの時間データ(現在時刻)をストアする(ステップM24)。時間データをストアした後、又は、ステップM21においてnが所定数を超えた場合には、図41のフローにおいて、STATUSが「3」であるか否かを判別する(ステップM25)。STATUSが「3」である場合には、STATUSを「1」に変更する(ステップM26)。そして、CHSET、VOLUMEの値に基づきボリュームイベントのMIDIデータを作成する(ステップM27)。
【0121】
図40のステップM14において、MIDIデータがノートイベントでない場合には、図41のフローにおいて、そのMIDIデータがボリュームイベントであるか否かを判別する(ステップM28)。ボリュームイベントである場合には、ADをインクリメントして、そのボリュームデータをレジスタVOLUMEに取り込んでストアする(ステップM29)。次に、STATUSが「3」であるか否かを判別する(ステップM30)。STATUSが「3」で、MIDIデータを早送りする場合には、MIDIデータのボリューム値を最小値に変更する(ステップM31)。すなわち、早送りする間においては発音をミュートする。
【0122】
ボリューム値を最小値に変更した後、ステップM27においてボリュームイベントのMIDIデータを作成した後、ステップM28においてMIDIデータがボリュームイベントでない場合、ステップM30においてSTATUSが「3」でない場合、図40のステップM13においてMIDIデータのチャンネルが押鍵ガイド用のチャンネルでない場合、又は、ステップM16においてMIDIデータのVELが「0」すなわちノートオフイベントである場合には、いずれも、図41のステップM32においてMIDIOUTバッファを指定するnを「0」にセットして、nをインクリメントしながらMIDIOUTバッファ(n)にMIDIデータをストアする。
【0123】
すなわち、MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップM33)、空きでない場合にはnをインクリメントする(ステップM34)。そして、nが所定数を超えたか否かを判別する(ステップM35)。nが所定数以下である場合には、ステップM33に移行してMIDIOUTバッファ(n)の空きを捜す。MIDIOUTバッファ(n)が空きである場合には、MIDIOUTバッファ(n)にMIDIデータをストアする(ステップM36)。また、レジスタWTIMEに現在時刻をストアし(ステップM37)、MIDIOUTバッファ(n)にWTIMEの時間データ(現在時刻)をストアする(ステップM38)。そして、図39のステップM4に移行してADをインクリメントする。
【0124】
図41のステップM25において、STATUSが「3」でなく「1」である場合には、図42のフローにおいて、STATUSを「2」に変更する(ステップM39)。すなわち、図40のステップM22において、押鍵ガイド用のMIDIデータをMIDIOUTバッファにストアした後は、STATUSを「1」から「2」に変更して押鍵されるまで曲データの読み出しを停止する状態に移行する。
【0125】
次に、MIDIデータをレジスタNVONにストアする(ステップM40)。さらに、NVONのMIDIデータのCHSET及びNOTE、及び、値を「0」に変更したベロシティデータに基づいて、MIDIデータを作成する(ステップM41)。そして、作成したMIDIデータをレジスタNVOFFにストアする(ステップM42)。次に、NVONからMIDIデータを取り出す(ステップM43)。そして、MIDIOUTバッファのポインタnを「0」にセットして(ステップM44)、nをインクリメントしながら、以下のループ処理を行う。
【0126】
MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップM45)、空きでない場合にはnをインクリメントする(ステップM46)。そして、nが所定数を超えたか否かを判別する(ステップM47)。所定数を超えていない場合には、ステップM45においてMIDIOUTバッファ(n)の空きを捜す。空きがあったときは、そのMIDIOUTバッファ(n)にMIDIデータをストアする(ステップM48)。次に、現在時刻をレジスタWTIMEにストアする(ステップM49)。そして、WTIMEの現在時刻をMIDIOUTバッファ(n)にストアする(ステップM50)。
【0127】
WTIMEの現在時刻をストアした後、又は、ステップM47においてnが所定数を超えた場合には、フラグCFを「0」にリセットする(ステップM51)。次に、レジスタSTPに現在時刻をストアし(ステップM52)、レジスタPに所定値をストアする(ステップM53)。そして、このフローを終了して図28のメインフローに戻る。
【0128】
図39のステップM2において、STATUSが「2」である場合には、発音開始タイミングが経過しても鍵盤装置において押鍵がされていない状態であるので、鍵盤装置の操作すべき鍵内のLEDを点滅させる処理を行う。すなわち、図43のフローにおいて、現在時刻がSTPの時間データとPの時間データを加算した値に達したか否かを判別する(ステップM54)。現在時刻がこの加算した値に達していない場合にはこのフローを終了するが、現在時刻がこの加算した値に達したときは、CFの値を反転する(ステップM55)。そして、CFが「0」であるか又は「1」であるかを判別する(ステップM56)。
【0129】
CFが「0」である場合には、NVOFFからベロシティデータが「0」のMIDIデータを取り出す(ステップM57)。CFが「1」である場合には、NVONからベロシティデータが「0」でないMIDIデータを取り出す(ステップM58)。ステップM57又はステップM58においてMIDIデータを取り出した後は、図42のステップM44に移行する。そして、MIDIOUTバッファの空きエリアに取り出したMIDIデータをストアする。
【0130】
すなわち、STATUSが「2」で、イベントデータの発音開始タイミングを経過した後も鍵盤装置において操作すべき鍵が操作されてない場合には、発音のイベントデータを変更して、ベロシティデータが「0」の消音のイベントデータを作成してNVOFFにストアし、NVONにストアした発音のイベントデータと、NVOFFにストアした消音のイベントデータとを、Pの所定時間が経過するたびに交互にMIDIOUTバッファにストアする。
【0131】
図44及び図45は、図38のガイド信号作成処理におけるステップL4のガイドB処理のフローである。この処理では、スタートフラグSTFが「1」であるか否かを判別し(ステップN1)、STFが「0」である場合には、演奏停止状態であるので、このフローを終了する。STFが「1」である場合には、現在時刻がレジスタSTの時間データとレジスタTの時間データを加算した値になっているか否かを判別する(ステップN2)。すなわち現在時刻が発音開始タイミングの時間であるか否かを判別する。現在時刻が発音開始タイミングに達していない場合には、このフローを終了する。
【0132】
現在時刻が発音開始タイミングの時間に一致したときは、レジスタADのアドレスをインクリメントする(ステップN3)。そして、アドレスADがENDでないか否かを判別する(ステップN4)。ENDでない場合には、MEM[AD]のデータが時間データであるか否かを判別する(ステップN5)。時間データである場合には、ΔTにMEM[AD]の時間データの値をセットする(ステップN6)。次に、Tの値にΔTの値を加算し(ステップN7)、このフローを終了して図28のメインフローに戻る。ステップN4において、ADがENDである場合には、曲データが終了したのでフラグSTFを「0」にリセットする(ステップN8)。そして、このフローを終了してメインフローに戻る。
【0133】
ステップN5において、MEM[AD]が時間データでない場合には、図45のフローにおいて、MEM[AD]のデータがイベントデータであるか否かを判別する(ステップN9)。イベントデータでない場合には、図44のステップN3に移行してADをインクリメントするが、イベントデータである場合には、そのイベントデータのチャンネルとCHSETの押鍵ガイド用のチャンネルとが同一であるか否かを判別する(ステップN10)。チャンネルが同一である場合には、そのイベントデータがノートイベントであるか否かを判別する(ステップN11)。
【0134】
ノートイベントである場合には、ADをインクリメントして、ベロシティデータをレジスタVELにストアする(ステップN12)。そして、VELのベロシティデータが「0」でないか否かを判別する(ステップN13)。VELのベロシティデータが「0」でない場合には、VELのベロシティデータを最小値「1」に変更する(ステップN14)。そして、MIDIデータのベロシティデータをVELのベロシティデータの値に変更する(ステップN15)。次に、MIDIOUTバッファのポインタnを「0」にセットして(ステップN16)、nをインクリメントしながら、以下のループ処理を行う。
【0135】
MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップN17)、空きでない場合にはnをインクリメントする(ステップN18)。そして、nが所定数を超えたか否かを判別する(ステップN19)。所定数を超えていない場合には、ステップN17においてMIDIOUTバッファ(n)の空きを捜す。空きがあったときは、そのMIDIOUTバッファ(n)にMIDIデータをストアする(ステップN20)。次に、現在時刻をレジスタWTIMEにストアする(ステップN21)。そして、図44のステップN3に移行してADをインクリメントする。
【0136】
図46は、鍵盤装置101(演奏装置)側のメインフローである。所定のイニシャライズ処理(ステップP1)の後、スイッチ処理(ステップP2)、MIDI処理(ステップP3)、鍵ガイド処理(ステップP4)、押鍵処理(ステップP5)、発音指示処理(ステップP6)、その他の処理(ステップP7)のループ処理を繰り返し実行する。
【0137】
図47は、図46のメインフローにおけるステップP2のスイッチ処理のフローである。この処理では、ガイド用チャンネル設定スイッチ処理(ステップQ1)、ベロシティ設定スイッチ処理(ステップQ2)、その他のスイッチ処理(ステップQ3)を実行して、このフローを終了して図46のメインフローに戻る。
【0138】
図48は、図47のスイッチ処理におけるステップQ1のガイド用チャンネル設定スイッチ処理のフローである。ガイド用チャンネル設定スイッチ及びチャンネル番号スイッチがオンされたか否かを判別し(ステップR1)、オンされたときはチャンネルレジスタCHSETにそのチャンネル番号をストアする(ステップR2)。チャンネル番号をストアした後、又はステップR1においてスイッチがオンされない場合には、このフローを終了して図47のフローに戻る。
【0139】
図49は、図47のスイッチ処理におけるステップQ2のベロシティ設定スイッチ処理のフローである。ベロシティ設定スイッチ及びベロシティ値のスイッチがオンされたか否かを判別し(ステップS1)、オンされたときはレジスタVSETにそのベロシティ値のデータをストアする(ステップS2)。ベロシティ値のデータをストアした後、又はステップS1においてスイッチがオンされない場合には、このフローを終了して図47のフローに戻る。
【0140】
図50は、図46のメインフローにおけるステップP3のMIDI処理のフローである。この処理では、パソコンとの間で、シリアルインターフェースを介して通信を行い、パソコンからMIDIデータを受信するMIDIIN処理(ステップT1)、パソコンに対して演奏操作の結果であるMIDIデータを送信するMIDIOUT処理(ステップT2)を実行して、メインフローに戻る。
【0141】
図51は、図50のステップT1のMIDIIN処理のフローである。この処理では、MIDIIN(MIDIデータ受信)であるか否かを判別し(ステップU1)、MIDIINである場合には、MIDIINバッファを指定するポインタnを「0」にセットして(ステップU2)、nをインクリメントしながら以下の処理を行う。
【0142】
すなわち、MIDIINバッファ(n)が空きであるか否かを判別し(ステップU3)、空きでない場合にはnをインクリメントする(ステップU4)。そして、nがMIDIINバッファのエリア数である所定数を超えたか否かを判別する(ステップU5)。nが所定数以下である場合には、ステップU3に移行してMIDIINバッファ(n)の空きを捜す。MIDIINバッファ(n)が空きである場合には、MIDIデータをストアする(ステップU6)。そして、ステップU1に移行して、MIDIINであるか否かを判別する。MIDIINである場合には上記処理を繰り返す。MIDIINでない場合、又はステップU5においてnが所定数を超えた場合には、このフローを終了して図50のフローに戻る。
【0143】
図52は、図50のMIDI処理におけるステップT2のMIDIOUT処理のフローである。この処理では、MIDIOUTバッファを指定するポインタnを「0」にセットして(ステップV1)、nをインクリメントしながら以下の処理を行う。すなわち、MIDIOUTバッファ(n)が空きでないか否かを判別し(ステップV2)、空きでない場合にはMIDIOUTバッファ(n)のエリアのMIDIデータをパソコンに出力する(ステップV3)。そして、MIDIOUTバッファ(n)のエリアをクリアする(ステップV4)。
【0144】
エリアをクリアした後、又はステップV2においてMIDIOUTバッファ(n)が空きである場合には、nをインクリメントする(ステップV5)。そして、nがMIDIOUTバッファのエリア数である所定数を超えたか否かを判別する(ステップV6)。nが所定数以下である場合には、ステップV2に移行してMIDIOUTバッファ(n)が空きでないか否かを判別する。ステップV6においてnが所定数を超えた場合には、このフローを終了して図46のメインフローに戻る。
【0145】
図53は、図46のメインフローにおけるステップP4の鍵ガイド処理のフローである。この処理では、MIDIINバッファを指定するポインタnを「0」にセットして(ステップX1)、nをインクリメントしながら以下の処理を行う。すなわち、MIDIINバッファ(n)が空きでないか否かを判別し(ステップX2)、空きでなくMIDIデータがある場合には、そのMIDIデータがノートイベントであるか否かを判別する(ステップX3)。ノートイベントである場合には、そのイベントデータのチャンネルがCHSETで指定されている押鍵ガイド用のチャンネルと同一であるか否かを判別する(ステップX4)。
【0146】
チャンネルが同一である場合には、MIDIデータのベロシティデータが「0」でないか否かを判別する(ステップX5)。「0」でない場合には、そのベロシティデータをレジスタVELにストアする(ステップX6)。そして、VELのベロシティデータにVSETのデータを乗算して「1」を加算する演算を行う(ステップX7)。VSETのデータは、図49のVEL設定スイッチ処理においてユーザーによって所望の値に設定されている。あるいは、デフォルトの値に設定されている。ユーザーが設定する場合には、VSETのデータを「0」に設定して、誤ってノートオフイベントになるのを回避するために、最小値「1」を加算する。
【0147】
次に、MIDIデータのベロシティデータをVELの値に変更する(ステップX8)。そして、VELの値が所定値より大きいか否かを判別する(ステップX9)。VELの値が所定値より大きい場合には、MIDIデータのノートデータに対する鍵内の赤色発光のLEDを点灯する処理を行う(ステップX10)。一方、VELの値が所定値以下である場合には、MIDIデータのノートデータに対する鍵内の緑色発光のLEDを点灯する処理を行う(ステップX11)。ステップX5においてVELの値が「0」である場合には、MIDIデータのノートデータに対する鍵内のLEDを消灯する処理を行う(ステップX12)。
【0148】
ステップX10若しくはステップX11においてLEDの点灯処理を行った後、又は、ステップX12においてLEDの消灯処理を行った後は、nをインクリメントしてMIDIINバッファの次のエリアを指定する。また、ステップX2においてMIDIINバッファ(n)が空きである場合、ステップX3においてMIDIデータがノートイベントでない場合、又は、ステップX4においてMIDIデータのチャンネルが押鍵ガイド用のチャンネルでない場合には、いずれもnをインクリメントしてMIDIINバッファの次のエリアを指定する。
【0149】
そして、nがMIDIINバッファのエリア数である所定値を超えたか否かを判別する(ステップX14)。nが所定値以下である場合には、ステップX2に移行して上記各処理を繰り返す。nが所定値を超えたときは、このフローを終了して図46のメインフローに戻る。
【0150】
図54は、図46のメインフローにおけるステップP5の押鍵処理のフローである。この処理では、鍵盤を走査して(ステップY1)、鍵変化があるか否かを判別し(ステップY2)、鍵変化がない場合にはメインフローに戻る。オフからオンに鍵変化があったとき、すなわち押鍵操作がされたときは、CHSET、押鍵のノートデータ、ベロシティデータでMIDIデータを作成する(ステップY3)。オンからオフに鍵変化があったとき、すなわち離鍵操作がされたときは、CHSET、離鍵のノートデータ、値が「0」のベロシティデータでMIDIデータを作成する(ステップY4)。
【0151】
ステップY3又はステップY4においてMIDIデータを作成した後は、MIDIOUTバッファを指定するnを「0」にセットして(ステップY5)、nをインクリメントしながらMIDIOUTバッファ(n)にMIDIデータをストアする。すなわち、MIDIOUTバッファ(n)が空きであるか否かを判別し(ステップY6)、空きでない場合にはnをインクリメントする(ステップY7)。そして、nが所定数を超えたか否かを判別する(ステップY8)。nが所定数以下である場合には、ステップY6に移行してMIDIOUTバッファ(n)の空きを捜す。
【0152】
MIDIOUTバッファ(n)が空きである場合には、MIDIOUTバッファ(n)にMIDIデータをストアする(ステップY9)。そして、走査が終了したか否かを判別し(ステップY10)、終了していない場合にはステップY1に移行して鍵盤の走査を続行する。走査が終了したときは、このフローを終了して図46のメインフローに戻る。
【0153】
図55は、図46のメインフローにおけるステップP6の発音指示処理のフローである。この処理では、MIDIINバッファ及びMIDIOUTバッファのエリアを指定するポインタnを「0」にセットし(ステップZ1)、nをインクリメントしながら、MIDIINバッファの押鍵ガイド用のチャンネル以外のチャンネルのMIDIデータ、及び、MIDIOUTバッファの押鍵ガイド用のチャンネルの操作結果であるMIDIデータを音源に送付する処理を行う。
【0154】
MIDIINバッファ(n)のエリアが空きでないか否かを判別し(ステップZ2)、空きでない場合には、そのMIDIデータを音源へ送付する(ステップZ3)。そして、MIDIINバッファのそのエリアをクリアする(ステップZ4)。エリアをクリアした後、又は、ステップZ2においてMIDIINバッファ(n)のエリアが空きである場合には、MIDIOUTバッファ(n)が空きでないか否かを判別し(ステップZ5)、空きでない場合にはMIDIOUTバッファ(n)のMIDIデータを音源へ送付する(ステップZ6)。そして、MIDIOUTバッファのそのエリアをクリアする(ステップZ7)。
【0155】
エリアをクリアした後、又は、ステップZ5においてMIDIOUTバッファ(n)のエリアが空きである場合には、nをインクリメントする(ステップZ8)。そして、nが所定数を超えたか否かを判別し(ステップZ9)、nが所定数以下である場合には、ステップZ2に移行して上記処理を繰り返し、MIDIデータを音源へ送付する。そして、nが所定値を超えたときは、このフローを終了して図46のメインフローに戻る。
【0156】
このように上記第2実施形態における演奏教習装置は、パソコン104(及びFDプレーヤ103)は、フロッピーディスク2からイベントデータを読み出すデータ読出手段を構成し、読み出した発音のイベントデータ又は消音のイベントデータを鍵盤装置101に送信する。鍵盤装置101は、この発音のイベントデータ又は消音のイベントデータに応じて、LED20を点灯させる点灯信号又は消灯させる消灯信号を発生する信号発生手段を構成する。
【0157】
パソコン104はまた、発音のイベントデータを消音のイベントデータに変更するデータ変更手段を構成し、鍵盤装置101に送信した発音のイベントデータの発音開始タイミングが経過しても、操作すべき鍵が押鍵されない旨を示す操作結果情報を受信しない場合には、その発音のイベントデータ及びその発音のイベントデータを変更した消音のイベントデータを、鍵盤装置101に交互に送信して、鍵盤装置101のLED20を点滅させる発光制御手段を構成する。
【0158】
したがって、演奏操作をガイドするナビゲーション機能をもつ鍵盤装置を制御する場合に、発音開始タイミングに対する押鍵タイミングの教習を、曲データの編集を行うことなく容易に実現できる。
【0159】
またこの場合において、パソコン104は、通信回線(ネットワーク4)を介して外部装置である曲データサーバー5と接続し、曲データを曲データサーバー5から受信する通信制御手段を構成する。したがって、通信回線を介して外部装置から受信する曲データで編集を行うことができない場合でも、発音開始タイミングに対する押鍵タイミングの教習を実現できる。
【0160】
さらに、鍵盤装置101の各鍵内に設けられたLED20は、赤色及び緑色の異なる発光色で発光するので、パソコン104は、フロッピーディスク2から読み出したイベントデータのベロシティデータが所定値以上であるか否かを判別し、その判別結果に応じた発光色で、鍵盤装置101のLED20を発光させる。したがって、押鍵タイミングだけでなく、押鍵の強弱をガイドすることができる。
【0161】
なお、上記第1実施形態及び第2実施形態においては、ROM等のメモリに格納された演奏教習処理プログラムを実行する装置について説明したが、フロッピーディスクやCD等の記録媒体に、各実施形態においてフローチャートによって示した演奏教習処理プログラムを記録し、この記録媒体から演奏教習処理プログラムを読み出して実行させる構成にしてもよい。
【0162】
例えば、第1実施形態における鍵盤装置1で駆動する曲データを記憶するフロッピーディスク2に、演奏教習処理プログラムをあらかじめ記録しておき、鍵盤装置1によってこのプログラムを読み出して実行させる。また、第2実施形態においては、曲データを記憶するフロッピーディスク2に、演奏教習処理プログラムをあらかじめ記録しておき、FDプレーヤ103やパソコン104によってこのプログラムを読み出して実行させる。
【0163】
【発明の効果】
本発明によれば、発音のイベントデータの発音開始タイミングを経過した後も演奏すべき操作子が操作されない場合には、その都度、発音のイベントデータを変更してベロシティデータを「0」にした消音のイベントデータを生成し、発音のイベントデータに応じた点灯信号、及び、変更した消音のイベントデータに応じた消灯信号を、操作すべき操作子に対応する発光手段に交互に送出して点滅させる。したがって、演奏操作をガイドするナビゲーション機能において、発音開始タイミングに対する押鍵タイミングの教習を、曲データの編集を行うことなく容易に実現できる。
【図面の簡単な説明】
【図1】本発明の第1実施形態におけるシステム構成を示す図。
【図2】図1における鍵盤装置の構成を示すブロック図。
【図3】MIDIデータのフォーマットを示す図。
【図4】MIDIデータにおけるメロディデータのフォーマットを示す図。
【図5】図2のCPUが実行するプログラムのメインフローチャート。
【図6】図5におけるスイッチ処理のフローチャート。
【図7】図6におけるモード選択スイッチ処理のフローチャート。
【図8】図6におけるスタートスイッチ処理のフローチャート。
【図9】図6における受信スイッチ処理のフローチャート。
【図10】図6におけるチャンネル設定スイッチ処理のフローチャート。
【図11】図6におけるベロシティ設定処理のフローチャート。
【図12】図5における鍵ガイド処理のフローチャート。
【図13】図12におけるガイドA処理のフローチャート。
【図14】図13に続くガイドA処理のフローチャート。
【図15】図14に続くガイドA処理のフローチャート。
【図16】図13及び図14に続くガイドA処理のフローチャート。
【図17】図16に続くガイドA処理のフローチャート。
【図18】図12におけるガイドB処理のフローチャート。
【図19】図18に続くガイドB処理のフローチャート。
【図20】図19に続くガイドB処理のフローチャート。
【図21】図5における押鍵処理のフローチャート。
【図22】図21に続く押鍵処理のフローチャート。
【図23】図5における出力処理のフローチャート。
【図24】図5における受信処理のフローチャート。
【図25】本発明の第2実施形態におけるFDプレーヤを用いたシステム構成を示す図。
【図26】第2実施形態におけるパソコンを用いたシステム構成を示す図。
【図27】図25及び図26の鍵盤装置の内部の構成を示すブロック図。
【図28】図26におけるパソコンの動作を示すメインフローチャート。
【図29】図28におけるスイッチ処理のフローチャート。
【図30】図29におけるモード選択スイッチ処理のフローチャート。
【図31】図29におけるスタートスイッチ処理のフローチャート。
【図32】図29における受信スイッチ処理のフローチャート。
【図33】図29における設定スイッチ処理のフローチャート。
【図34】図28における受信処理のフローチャート。
【図35】図28におけるMIDI処理のフローチャート。
【図36】図35におけるMIDIIN処理のフローチャート。
【図37】図35におけるMIDIOUT処理のフローチャート。
【図38】図28におけるガイド信号生成処理のフローチャート。
【図39】図38におけるガイドA処理のフローチャート。
【図40】図39に続くガイドA処理のフローチャート。
【図41】図40に続くガイドA処理のフローチャート。
【図42】図41に続くガイドA処理のフローチャート。
【図43】図39に続くガイドA処理のフローチャート。
【図44】図38におけるガイドB処理のフローチャート。
【図45】図44に続くガイドB処理のフローチャート。
【図46】第2実施形態における鍵盤装置のメインフローチャート。
【図47】図46におけるスイッチ処理のフローチャート。
【図48】図47におけるガイド用チャンネル設定スイッチ処理のフローチャート。
【図49】図47におけるベロシティ設定スイッチ処理のフローチャート。
【図50】図46におけるMIDI処理のフローチャート。
【図51】図50におけるMIDIIN処理のフローチャート。
【図52】図50におけるMIDIOUT処理のフローチャート。
【図53】図46における鍵ガイド処理のフローチャート。
【図54】図46における押鍵処理のフローチャート。
【図55】図46における発音指示処理のフローチャート。
【符号の説明】
11 CPU
19 キーボード
20 LED
21 FDD
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a performance learning apparatus and a recording medium that records a performance learning processing program.
[0002]
[Prior art]
Conventionally, there is a performance learning apparatus having an optical navigation function for guiding performance. For example, in a keyboard electronic musical instrument having an optical navigation function, a light emitting means such as an LED (light emitting diode) is provided in each key of the keyboard so that the key to be pressed is emitted as the music data to be played progresses. It is configured to guide the performance.
[0003]
[Problems to be solved by the invention]
However, in a keyboard device having a conventional navigation function, although the key to be pressed can be recognized by the light emission of the light emitting means, it is possible to recognize whether or not the actual key press is delayed from the sounding start timing. I couldn't do it, and I didn't have enough keystroke timing. As a countermeasure, it is conceivable to use a light emitting means having light emitting elements of different light emitting colors to perform editing in which data for changing the light emitting color is incorporated into music data, but this editing work becomes complicated. A problem occurs. Further, when music data is received from an external device, the music data cannot be edited.
[0004]
SUMMARY OF THE INVENTION An object of the present invention is to easily realize a key press timing lesson with respect to a sound generation start timing in a navigation function for guiding a performance operation without editing music data.
[0005]
[Means for Solving the Problems]
  The performance learning apparatus according to claim 1 is:In a performance training device for performing performance training by communicating between a performance device and a performance control device,
  The performance device includes a plurality of operating elements for performing a musical piece, and a light emitting means that is provided corresponding to each operating element and emits light according to a lighting signal and stops light emission according to a light-off signal to guide the performance And a first receiving means for receiving music data including event data including pitch data indicating an operator to be operated and time data indicating a sound generation start timing from the performance control device, and the first receiving means. When the sound event data is received, the lighting signal is generated, and when the mute event data is received, the turn-off signal is generated and applied to the light emitting means corresponding to the operation unit related to the operation of the event data. Signal generating means for flashing, and first transmission means for transmitting operation result information indicating an operation result of the operation element to the performance control device,
  The performance control device includes a storage means for storing the song data to be transmitted to the performance device, a data reading means for reading event data stored in the storage means, and a pronunciation of sound read by the data reading means. Second transmission means for transmitting event data or mute event data to the performance apparatus; second reception means for receiving the operation result information transmitted from the performance apparatus; and The data change means for changing to event data and the fact that the operator corresponding to the sound event data has been operated even after the sound start timing of the sound event data transmitted to the performance device by the second transmission means has elapsed When the second receiving means does not receive the operation result information, the event data of the pronunciation and the data changing means Thus a light emission control means for transmitting to the playing device by the and event data silencing obtained by changing the event data of the pronunciation alternating second transmission means,It has a configuration with.
[0006]
  The recording medium according to claim 3 is:A number of controls for playing a song,
  Light emission means provided for each operation element that emits light in response to a lighting signal and stops light emission in response to a turn-off signal to guide the performance, pitch data indicating an operation element to be operated, and sounding start timing Receiving means for receiving song data including event data composed of time data; and when the receiving means receives sounding event data, the lighting signal is generated, and when the muting event data is received, the lighting signal is turned off. A performance generator comprising: a signal generating unit that is generated and applied to a light emitting unit corresponding to an operation unit related to the operation of the event data; and a transmission unit that transmits operation result information indicating an operation result of the operation unit. A recording medium that records a program executed by a performance control device that communicates with the device,
  A data reading procedure for reading event data stored in a predetermined storage means, a transmission procedure for transmitting sounding event data or mute event data read by the data reading procedure to the performance device, and the performance device A reception procedure for receiving the operation result information transmitted from the data, a data changing procedure for changing the event data of the sound generation to mute event data, and a sounding start of the event data of the sound transmitted to the performance device by the transmission procedure When operation result information indicating that the operator corresponding to the sound event data has not been operated is received by the reception procedure even after the timing has elapsed, the sound event data and the sound change event data are The mute event data that has been changed by the transmission procedure alternately It has recorded musical performance training program having a light emitting control procedure to be transmitted to the serial playing device.
[0009]
According to the present invention, when the operator to be played is not operated even after the sounding start timing of the sounding event data has passed, the sounding event data is changed and the mute event data is generated each time, The light emitting means corresponding to the operator to be operated is blinked by the sound event data and the changed mute event data.
[0010]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, first and second embodiments of a performance learning apparatus according to the present invention will be described with reference to the drawings. FIG. 1 shows a system configuration to which the keyboard device according to the first embodiment is applied. The keyboard device 1 drives a floppy disk (FD) 2 which is a storage means for storing music data, and outputs MIDI data to the MIDI sound source 3. This music data is received from a music data server 5 connected via a network (communication line) 4 such as the Internet. The song data server 5 stores a plurality of song data including event data including operator data to be operated, that is, pitch data indicating a key, time data indicating a sound generation start timing, and velocity data indicating sound intensity or mute. ing.
[0011]
FIG. 2 shows an internal block diagram of the keyboard device 1. The CPU 11 is connected to the ROM 12, RAM 13, key scan interface 14, LEDC (LED controller) 15, FDDC (floppy disk drive controller) 16, MODEM (modem) 17 and MIDI interface 18 via the system bus. . The ROM 12 stores a performance learning process program executed by the CPU 11.
[0012]
The RAM 13 temporarily stores various data processed by the CPU 11. The key scan interface 14 is connected to a keyboard 19 having an optical keyboard composed of a plurality of operators and a switch group, and scans the operation state and inputs it to the CPU 11. The LEDC 15 controls the light emission and extinction of the LED 20 which is a light emission means provided in each key. The LED 20 is a two-color light emitting diode composed of a red light emitting element and a green light emitting element. The FDDC 16 controls an FDD (floppy disk drive) 21.
[0013]
The MODEM 17 serving as communication control means includes a communication line, that is, a line connection unit (NCU) for connecting to the network 4, and receives and demodulates music data from the music data server 5 in accordance with a reception command from the CPU 11. The received music data is recorded on the floppy disk 2 by the FDDC 16 and the FDD 21. That is, the floppy disk constitutes storage means for storing music data received from the music server 5. The MIDI interface 18 outputs the MIDI data created by the CPU 11 to the MIDI sound source 3.
[0014]
FIG. 3 shows the data format of MIDI data. As shown in FIG. 3A, the MIDI data is composed of a status byte having a 1-byte structure (first bit = 1) and a data byte having a 1-byte or 2-byte structure (first bit = 0). This MIDI data is classified into a channel message and a system message according to the purpose of use. The channel message is composed of a 3-bit message type and a 4-bit channel number n. For example, “000” represents note-off, “001” represents note-on, and “100” represents a program change for changing a tone color or the like.
[0015]
A plurality of parts of music data are designated for each channel. For example, as shown in FIG. 3 (2), it is designated as a melody part, a drum part, a bass part, and three chord parts. In the navigation function, usually, the melody part is designated as the part of the performance guide, and the channel is designated by the user.
[0016]
As shown in FIG. 4, the melody part is composed of time data and event data. The note event in the event data is composed of a 1-byte status byte including note-on or note-off, channel number, and note data, and 2-byte velocity data. The volume event in the event data is composed of a 1-byte status byte consisting of a volume status indicating channel data and a channel number, and 2-byte volume data. The MIDI data in units of bytes is specified by the address AD. Note that END data is stored in the end address.
[0017]
Next, operation | movement of the performance learning apparatus in 1st Embodiment is demonstrated based on the flowchart of the program which CPU11 performs.
[0018]
FIG. 5 is a main flow. After predetermined initialization processing (step A1), switch processing (step A2), key guide processing (step A3), key pressing processing (step A4), time counting processing (step A5), output processing (step A6), The loop process of the reception process (step A7) and other processes (step A8) is repeatedly executed.
[0019]
FIG. 6 is a flow of the switch process in step A2 in the main flow. In this process, the switch group shown in FIG. 2 is scanned, mode selection switch process (step B1), start switch process (step B2), reception switch process (step B3), channel setting switch process (step B4), The velocity setting switch process (step B5) and other switch processes (step B6) are executed, and the process returns to the main flow.
[0020]
FIG. 7 is a flow of mode selection switch processing in step B1 of FIG. In this process, it is determined whether or not the mode selection switch is turned on (step C1). If it is not turned on, this flow is terminated. If it is turned on, a process corresponding to the mode switch is performed. Mode switches include normal switch, lesson 1 switch, lesson 2 switch, and lesson 3 switch.
[0021]
It is determined whether or not the normal switch is turned on (step C2). If this switch is turned on, the mode register MODE is set to "0" (step C3). It is determined whether or not the lesson 1 switch is turned on (step C4). If this switch is turned on, "1" is set to MODE (step C5). It is determined whether or not the lesson 2 switch is turned on (step C6). If this switch is turned on, "2" is set in MODE (step C7). It is determined whether or not the lesson 3 switch is turned on (step C8). If this switch is turned on, "3" is set in MODE (step C9).
[0022]
When MODE is “0”, the normal normal performance mode is generated only when the keyboard is played. When MODE is “1” to “3”, it is a performance mode of the navigation function for guiding the song data on the floppy disk. When MODE is “1”, the performance mode is set to generate a sound regardless of which key is pressed, regardless of the note data (pitch) of the music data. When the MODE is “2”, the performance mode is such that a sound is generated when the key corresponding to the note data of the music data (light emitting key) is correctly pressed. When MODE is “3”, the music data is automatically read regardless of the performance. However, the sound is generated when the guiding key is pressed. After the value corresponding to the mode switch is set to MODE, this flow is terminated and the process returns to the switch process of FIG.
[0023]
FIG. 8 is a flowchart of the start switch process in step B2 in the switch process of FIG. In this process, it is determined whether or not the start switch has been turned on (step D1). If it is not turned on, this flow is terminated. If it is turned on, the start flag STF is inverted (step D2). Then, it is determined whether or not STF is “1” (step D3).
[0024]
When the STF is “1”, the address register AD is set to “0”, that is, the head address of the music piece data, and “1” is set to the register STATUS (step D4). STATUS is a value set in a key pressing process to be described later. When STATUS is “1”, the key pressing timing is in time with the tone generation start timing of the song data. When STATUS is “2”, the key is not operated even after the music data generation start timing elapses, that is, the key pressing timing is delayed. When “STATUS” is “3”, the key is operated before the sound generation start timing of the music data is reached, that is, the key pressing timing is too early.
[0025]
After the process of step D4, the current time is stored in the register ST (step D5), and the time register T is set to “0” (step D6). Next, it is determined whether or not the data MEM [AD] at the address AD (= 0) in the music data storage area is event data (step D7). That is, it is determined whether or not the first piece of music data is event data or time data. If it is event data, the minimum time is set in the register ΔT (step D8), AD is decremented by “1” (step D9), and the address is returned by one. This decrement process is a process necessary for a key guide process to be described later.
[0026]
In step D7, if the beginning of the music data is not event data but time data, the time data is set to ΔT (step D10). After the AD is decremented in step D9 or the time data is set to ΔT in step D10, the value of ΔT is added to the value of T and updated (step D11). If the STF is “0” in step D3, a mute instruction is given (step D12). After updating by adding the value of ΔT to the value of T in step D11 and instructing to mute in step D12, this flow is terminated and the process returns to the switch process of FIG.
[0027]
FIG. 9 is a flowchart of the reception switch process in step B3 in the switch process. In this process, it is determined whether or not the reception switch is turned on (step E1). If the reception switch is not turned on, this flow is terminated, but if it is turned on, the reception flag ZF is set to “1” (step E2). ). Then, this flow is terminated and the process returns to the switch process of FIG.
[0028]
FIG. 10 is a flowchart of the channel setting switch process in step B4 in the switch process. In this process, a channel (for example, a melody channel) designated for key pressing guide is set. That is, it is determined whether or not the channel setting switch and the channel number switch are turned on (step F1). When turned on, the channel number of the setting channel is stored in the channel set register CHSET (step F2). After storing in CHSET or when the switch is not turned on in step F1, this flow is terminated and the flow returns to the switch processing flow of FIG.
[0029]
FIG. 11 is a flowchart of step B5 in the switch process. In this process, the condition of the emission color of the LED corresponding to the key to be pressed is set in the guide A process described later. It is determined whether or not the velocity setting switch and the setting velocity value switch are turned on (step G1). If turned on, the setting velocity value is stored in the setting velocity register VSET (step G2). After storing in VSET or when the switch is not turned on in step G1, this flow is terminated and the flow returns to the switch processing flow of FIG.
[0030]
FIG. 12 is a flow of key guide processing in step A3 in the main flow of FIG. In this process, a key guide process corresponding to the value of the mode register MODE is performed. That is, it is determined whether or not the MODE value is “1” or “2” (step H1). If it is “1” or “2”, the guide A process is executed (step H2). If the MODE value is neither “1” nor “2”, it is determined whether or not the MODE value is “3” (step H3). If the MODE value is “3”, the guide B process is performed. Is executed (step H4). After performing the guide A process or the guide B process, this flow is terminated and the process returns to the main flow of FIG.
[0031]
13 to 16 are flowcharts of the guide A process at step H2 in FIG. In this process, it is determined whether or not the start flag STF is “1” (step J1). If the STF is “0”, the performance is stopped, and thus this flow is ended. If the STF is “1 (performance start)”, it is determined whether or not the value of STATUS is not “2” (step J2).
[0032]
If the value of STATUS is not “2”, a value obtained by adding the time value of register ST and the time value of register T is compared with the current time (step J3). That is, the time of the sound generation start timing is compared with the current time. If the current time has not reached the time of sound generation start timing, this flow is terminated and the process returns to the main flow of FIG.
[0033]
If the current time has reached the sound generation start timing, the register AD is incremented (step J4). Then, it is determined whether or not the address AD is not END (step J5). If it is not END, it is determined whether or not the MIDI data of MEM [AD] is time data (step J6). If it is time data, it is determined whether or not the value of STATUS is “3”, that is, the key pressing timing is too early than the sounding start timing (step J7).
[0034]
If the value of STATUS is “3”, the minimum time is set to ΔT in order to fast-forward the MIDI data (step J8). When the value of STATUS is “1” instead of “3”, that is, when the key pressing timing matches the sounding start timing, the value of the normal time data of MEM [AD] is set to ΔT (step J9). ). In step J8 or step J9, after setting a value for ΔT, the value of ΔT is added to the value of T, and this flow is terminated to return to the key guide processing of FIG.
[0035]
In step J5, if MEM [AD] is END, the song data is completed, so the STF is reset to “0” (step J11). Then, this flow is finished and the process returns to the key guide process of FIG.
[0036]
If MEM [AD] is not time data in step J6, it is determined in the flow of FIG. 14 whether MEM [AD] is event data (step J12). If it is event data, it is determined whether or not the event data is a note event (step J13). If it is a note event, it is determined whether or not the channel of the event data is the same as the channel for CHSET key depression guide (step J14). If the channels are the same, the note data of the event data is set in the register NOTE (step J15).
[0037]
Next, AD is incremented and the velocity data is stored in the register VEL (step J16). Then, it is determined whether or not VEL is not “0” (step J17). If VEL is not “0”, that is, if the note data stored in the NOTE is note-on, the VEL velocity data is multiplied by the VSET data to add “1” (step J18). The VSET data is set to a desired value by the user in the VEL setting switch process of FIG. Alternatively, the default value is set. If the user sets, VSET data may be set to “0”. In this case, as a result of the above calculation, the VEL data becomes “0”, and note-off occurs. In order to avoid such a state, “1” is added to set the minimum value of the VEL velocity data to “1”.
[0038]
Then, it is determined whether or not the VEL velocity data is greater than a predetermined value (step J19). When the VEL velocity data is larger than the predetermined value, a process of turning on the red LED in the key corresponding to the NOTE is performed (step J20). On the other hand, if the VEL velocity data is equal to or less than the predetermined value, a process of turning on the green LED in the key corresponding to the NOTE is performed (step J21). After performing the LED lighting process, it is determined whether or not the value of STATUS is “3” (step J22). If the value of STATUS is “3”, the value of STATUS is changed to “1” (step J23). Next, MIDI data is created based on the values of CHSET and VOLUME (step J24).
[0039]
If the VEL velocity data is “0” in step J17, that is, if the note data stored in the NOTE is note-off, the LED in the key corresponding to the NOTE is turned off (step J25). After the LED is turned off or when MEM [AD] is not event data in step J12, the process proceeds to step J4 in FIG. 13 to increment the address AD.
[0040]
In step J13 of FIG. 14, if the event data is not a note event, it is determined in the flow of FIG. 15 whether or not the event data is a volume event (step J26). If it is a volume event, the address AD is incremented and the volume data is stored in the register VOLUME (step J27).
[0041]
Next, it is determined whether or not STATUS is “3” (step J28). If “3”, the key pressing timing is too early than the sounding start timing. In this case, the volume value of the MIDI data is changed to the minimum value (step J29). After the volume value is changed, or when STATUS is not “3” at step J28, or when the event data channel and the CHSET channel are not the same at step J14 in FIG. It is set to “0” (step J30), and the following loop processing is performed while incrementing n.
[0042]
It is determined whether or not the MIDIOUT buffer (n) is empty (step J31). If it is not empty, n is incremented (step J32). And it is discriminate | determined whether n exceeded the predetermined number (step J33). If the predetermined number has not been exceeded, a free space in the MIDIOUT buffer (n) is searched for in step J31. If there is a vacancy, the MIDI data is stored in the MIDI OUT buffer (n) (step J34). Next, the current time is stored in the register WTIME (step J35). Then, the current time of WTIME is stored in the MIDIOUT buffer (n) (step J36). After the current time is stored, or when n exceeds a predetermined number in step J33, the process proceeds to step J4 in FIG. 13 to increment the address AD.
[0043]
In step J22 of FIG. 14, when STATUS is “1” instead of “3”, STATUS is changed to “2” in the flow of FIG. 16 (step J38). That is, in step J20 or step J21 of FIG. 14, after guiding the key depression by turning on the LED in the key corresponding to the NOTE, the song data is changed from “1” to “2” until the key is depressed. It shifts to the state where reading of is stopped.
[0044]
Next, the MIDI data is stored in the register NVON (step J38). Further, MIDI data is created based on the CHSET and NOTE of the NVON MIDI data and the velocity data whose value is changed to “0” (step J39). Then, the created MIDI data is stored in the register NVOFF (step J40). Next, MIDI data is taken out from NVON (step J41). Then, the pointer n of the MIDIOUT buffer is set to “0” (step J42), and the following loop processing is performed while incrementing n.
[0045]
It is determined whether or not the MIDIOUT buffer (n) is empty (step J43). If it is not empty, n is incremented (step J44). And it is discriminate | determined whether n exceeded the predetermined number (step J45). If the predetermined number has not been exceeded, the MIDIOUT buffer (n) is searched for in step J43. If there is a free space, the MIDI data is stored in the MIDI OUT buffer (n) (step J46). Next, the current time is stored in the register WTIME (step J47). Then, the current time of WTIME is stored in the MIDIOUT buffer (n) (step J48).
[0046]
If STATUS is “2” in step J2 of FIG. 13, that is, if no key is pressed even when the read-out timing of the MIDI data is reached, in the flow of FIG. It is determined whether or not the value is equal to or greater than the value obtained by adding the time data of P (step J49). That is, it is determined whether or not a predetermined time (predetermined value of P) has elapsed since the MIDI data was stored in the MIDIOUT buffer (n) in step J46. Since the LED lighting process or extinguishing process is performed immediately after the MIDI data is stored, it is determined in step J49 whether or not a predetermined time has elapsed since the lighting process or extinguishing process was performed.
[0047]
If the current time does not reach the value obtained by adding STP and P, the flow returns to the key guide processing flow of FIG. 12, but if the current time exceeds the value obtained by adding STP and P, the CF is inverted ( Step J50). Then, it is determined whether or not CF is “0” (step J51). If CF is “0”, MIDI data whose velocity data is “0” is extracted from NVOFF (step J52). On the other hand, if CF is “1”, the MIDI data of the actual velocity data is taken out from NVON (step J41). Therefore, according to the value of CF, either sound event data of actual velocity data or mute event data whose velocity data is “0” is stored in the MIDIOUT buffer (n) in step J46.
[0048]
In other words, if the key is not pressed even when the sounding event data at the read sounding time comes, the velocity data of the sounding event data is changed to “0” to generate mute event data, The event data and the changed mute event data are alternately stored in the MIDIOUT buffer every time a predetermined time stored in P elapses.
[0049]
Next, in the flow of FIG. 17, the velocity data of the MIDI data is stored in the register VEL (step J53). Then, it is determined whether or not VEL is not “0” (step J54). If VEL is not “0”, that is, if the note stored in NOTE is note-on, the VEL velocity data is multiplied by the VSET data and the minimum value “1” is added (step J55). .
[0050]
Then, it is determined whether or not the VEL velocity data is larger than a predetermined value (step J56). When the VEL velocity data is larger than the predetermined value, a process of turning on the red light emitting LED in the key corresponding to the NOTE is performed (step J57). On the other hand, if the VEL velocity data is equal to or less than the predetermined value, a process of turning on the green LED in the key corresponding to the NOTE is performed (step J58). If the VEL velocity data is “0” in step J54, that is, if the note stored in the NOTE is muted event data, the LED in the key corresponding to the NOTE is turned off (step J59).
[0051]
After the LED lighting process or the extinction process, the flag CF is reset to “0” (step J60), the current time is stored in the register STP (step J61), and a predetermined value is stored in the register P (step J61). J62). Then, this flow is ended, and the flow returns to the key guide processing flow of FIG. Therefore, after the sound generation start timing has passed, every time the time stored in P elapses, a lighting signal corresponding to the sound generation event data and a turn-off signal corresponding to the mute event data are alternately sent to the LEDs. So the LED blinks.
[0052]
18 to 20 are flowcharts of the guide B process at step H4 in the key guide process of FIG. In this process, it is determined whether or not the start flag STF is “1” (step K1). If the STF is “0”, the performance is stopped, and this flow is ended. When STF is “1”, it is determined whether or not the value obtained by adding the time data of the register ST and the time data of the register T, that is, the time of the sound generation start timing and the current time coincide (step K2). ). If the current time does not coincide with the sound generation start timing, this flow ends.
[0053]
When the current time coincides with the sound generation start timing, the address of the register AD is incremented (step K3). Then, it is determined whether or not the address AD is not END (step K4). If it is not END, it is determined whether or not the data of MEM [AD] is time data (step K5). If it is time data, the value of time data of MEM [AD] is set to ΔT (step K6). Next, the value of ΔT is added to the value of T (step K7), this flow is terminated, and the process returns to the key guide process of FIG. If AD is END in step K4, the flag STF is reset to “0” (step K8). Then, this flow is finished and the process returns to the key guide process of FIG.
[0054]
If MEM [AD] is not time data in step K5, it is determined in the flow of FIG. 19 whether or not MEM [AD] data is event data (step K9). If it is not event data, the process proceeds to step K3 in FIG. 18 and AD is incremented. If it is event data, it is determined whether or not the event data is a note event (step K10). If it is a note event, it is determined whether the MIDI data channel is the same as the CHSET key depression guide channel (step K11).
[0055]
If the channels are the same, AD is incremented and the velocity data is stored in the register VEL (step K12). Then, it is determined whether or not the VEL velocity data is not "0" (step K13). If the VEL velocity data is not "0", the VEL velocity data is changed to "1" (step K14). Then, the velocity data of the MIDI data is changed to the value of the VEL velocity data (step K15). Next, a process for turning on the red LED in the key for the note data of the MIDI data is performed (step K16). If the value of the VEL velocity data is “0” in step K13, a process of turning off the red light emitting LED in the key for the MIDI note data is performed (step K17).
[0056]
After the LED lighting process or the extinguishing process, or when the event data is not a note event at step K10, or when the MIDI data and the CHSET channel are not the same at step K11, the MIDI OUT buffer is updated in the flow of FIG. The pointer n for designating the area is set to “0” (step K18), and the following loop processing is performed while incrementing n.
[0057]
It is determined whether or not the MIDIOUT buffer (n) is empty (step K19). If it is not empty, n is incremented (step K20). And it is discriminate | determined whether n exceeded the predetermined number (step K21). If the predetermined number has not been exceeded, the MIDIOUT buffer (n) is searched for in step K19. If there is a vacancy, the MIDI data is stored in the MIDIOUT buffer (n) (step K22). Next, the current time is stored in the register WTIME (step K23). Then, the process proceeds to step K3 in FIG. 18 to increment AD.
[0058]
FIGS. 21 and 22 are flowcharts of the key pressing process in step A4 in the main flow of FIG. First, it is determined whether or not there is a key change (step L1). If there is no key change, the process returns to the main flow. When there is a key change from OFF to ON, that is, when a key pressing operation is performed, note data (pitch data) is stored in the register KEY (step L2), and key pressing velocity data is stored in the register VELOCITY. (Step L3).
[0059]
Next, it is determined whether the MODE value is “1” or “2” (step L4). That is, it is determined whether or not the mode is waiting for a key press. When the MODE value is “1” or “2”, it is determined whether or not the MODE value is “2” (step L5). If the MODE value is “2”, it is determined whether or not the key number of the key depression as the KEY value matches the note data of the MIDI data as the NOTE value (step L6).
[0060]
If the KEY value matches the NOTE value, or if the MODE value is “1” in step L5 and the performance mode is set to sound when any key is pressed, the time data of the current time is ST. It is determined whether or not a value obtained by adding the time data of T and T has been reached (step L7). That is, it is determined whether or not the current time has reached the sounding start timing.
[0061]
If the current time has reached the value obtained by adding the ST time data and the T time data, “1” is set to the value of STATUS (step L8), and the ST time data and the T time from the current time are set. The value obtained by adding the time data is subtracted, and the subtraction value is stored in the difference register S (step L9). Then, the value of S is added to the time data of ST (step L10). That is, the value of ST is updated as time passes. Next, MIDI data is created based on the data of CHSET, KEY, and VELOCITY (step L11).
[0062]
In step L7, if the current time does not reach the value obtained by adding the time data of ST and the time data of T, it is determined whether or not MODE is “1” (step L12). That is, it is determined whether or not it is a performance mode that generates a sound regardless of which key is pressed. If MODE is “1”, the value of STATUS is set to “3” (step L13). That is, when the key is operated before the sounding start timing is reached, the music data is set to be fast-forwarded until the sounding start timing. Then, MIDI data is created based on the data of the key pressing channel, KEY, and VELOCITY (step L11).
[0063]
In step L1, when the key change is from on to off, that is, when the key release operation is performed, the key release note data is stored in KEY (step L14), and the value of VELOCITY is set to “0” (step L14). Step L15). Then, MIDI data is created based on the data of CHSET, KEY, and VELOCITY (step L11).
[0064]
If the MODE value is “3” instead of “1” and “2” in step L4, the key value and the NOTE value do not match in step L6, that is, a key different from the guided key is pressed. If it is operated, or if the MODE value is not “1” in step L12, MIDI data is created based on the data for the key depression channel, KEY, and VELOCITY (step L11).
[0065]
After creating the MIDI data, in FIG. 22, the pointer n designating the MIDI OUT buffer for key depression is set to “0” (step L16), and the MIDI data is stored in the MIDI OUT buffer (n) while incrementing n. set. That is, it is determined whether or not the MIDIOUT buffer (n) is empty (step L17). If it is not empty, n is incremented (step L18). And it is discriminate | determined whether n exceeded the predetermined number (step L19). If n is less than or equal to the predetermined number, the process proceeds to step L17 to search for an empty MIDIOUT buffer (n).
[0066]
If the MIDIOUT buffer (n) is empty, the MIDI data is stored in the MIDIOUT buffer (n) (step L20). Further, the current time is stored in the register WTIME (step L21), and WTIME time data (current time) is stored in the MIDIOUT buffer (n) (step L22). After the time data is stored or when n exceeds a predetermined number in step L19, this flow is terminated and the process returns to the main flow of FIG.
[0067]
FIG. 23 is a flowchart of the output process at step A6 in the main flow. In this process, the pointer n designating the MIDIOUT buffer is set to “0” (step M1), and the following output process is executed while incrementing n. That is, it is determined whether or not the MIDIOUT buffer (n) designated by n is not empty (step M2). If it is not empty, MIDI data and WTIME are read from the MIDIOUT buffer (n) (step M3). Then, it is determined whether or not the read-out MIDI data is not from the key-pressing MIDI OUT buffer (step M4). That is, it is determined whether or not it is MIDI data read from MEM (floppy disk), not MIDI data created by performance. In the case of MEM MIDI data, a value obtained by subtracting WTIME time data from the current time is stored in the register D (step M5).
[0068]
Next, it is determined whether or not the value of D is equal to or longer than a predetermined time (step M6). If the value D is equal to or longer than the predetermined time, the MIDI data is output to the sound source (MIDI sound source 3 in FIG. 1) (step M7). On the other hand, if the MIDI data is created by performance, the MIDI data is immediately output to the sound source (step M7). Then, the MIDIOUT buffer (n) is made empty (step M8). After clearing the buffer, if D is smaller than the predetermined value in step M5, or if the MIDI buffer (n) is empty and there is no MIDI data in step M2, n is incremented (step M9). Then, it is determined whether or not n exceeds a predetermined number (step M10). If the predetermined number is not exceeded, the process proceeds to step M2 and the loop processing up to step M10 is repeated. When n exceeds a predetermined number, this flow is terminated and the process returns to the main flow of FIG.
[0069]
In this manner, the MIDI data output from the keyboard device 1 to the MIDI sound source 3 is output after being delayed by a predetermined time. That is, since the MIDI data of the channel set to CHSET is delayed from the other channels to be output to the MIDI sound source 3 for the key depression guide, the other channels are also output to the MIDI sound source 3 after being delayed by the same time. It is. Therefore, there is no problem that only the MIDI data of the channel designated in the key pressing guide is output to the MIDI sound source 3 later than the other channels.
[0070]
FIG. 24 is a flowchart of the reception process in step A7 in the main flow. In this process, it is determined whether or not the reception flag ZF is “1” (step N1). If ZF is “0”, this flow is terminated. However, if ZF is “1”, the music data server In the case of an access request to MEM, the MEM address AD is set to “0” (step N2), and the following loop processing is executed while incrementing AD.
[0071]
That is, it is determined whether or not MIDI data is received via MODEM (step N3), and when received, the MIDI data is stored in a storage area MEM [AD] of a floppy disk designated by AD ( Step N4). Then, the next area is designated by incrementing AD (step N5). Thereafter, it is determined whether or not the reception is completed (step N6). If not completed, the process proceeds to step N3 to determine whether or not MIDI data is received. The received MIDI data is stored in the storage area of the floppy disk indicated by AD, and when the reception is completed, the address of AD is set in the register END (step N7). Then, ZF is reset to “0” (step N8), and the process returns to the main flow of FIG.
[0072]
As described above, in the first embodiment, the CPU 11 of the keyboard device constitutes data reading means for reading event data from the floppy disk 2, and a lighting signal or mute event data is read in accordance with the read sound event data or mute event data. A signal generating means for generating a turn-off signal is configured. Further, a data changing means for changing the sounding event data to the mute event data is configured. Furthermore, if the key to be operated is not pressed even after the sounding start timing of the sounding event data elapses, a lighting signal corresponding to the sounding event data and a mute event that changes the sounding event data A light emission control unit is configured to alternately send a mute signal according to data to the LED 20 to blink.
[0073]
Therefore, in the navigation function for guiding the performance operation, it is possible to easily realize the key press timing lesson with respect to the sound generation start timing without editing the music data.
[0074]
In this case, the CPU 11 and the MODEM 17 are connected to the music data server 5 which is an external device via a communication line (network 4), and constitute communication control means for receiving music data from the music data server 5. Therefore, even when editing cannot be performed with music data received from an external device via a communication line, it is possible to realize the key press timing lesson with respect to the sound generation start timing.
[0075]
Further, the LED 20 provided in each key emits light with different emission colors of red and green. Therefore, it is determined whether or not the velocity data of the read event data is greater than or equal to a predetermined value, and the determination result is as follows. Emits light in the corresponding emission color. Therefore, it is possible to guide not only the key pressing timing but also the key pressing strength.
[0076]
Next, a second embodiment of the performance learning apparatus according to the present invention will be described. 25 and 26 show a system configuration in the second embodiment. In FIG. 25, a keyboard device (performance device) 101 is connected to an FD player (performance control device) 103 via a serial interface 102 such as RS-232C. The FD player 103 includes MODEM as communication control means, and is connected to the music data server 5 via a network (communication line) 4 such as the Internet, receives music data from the music data server 5, and stores it. It is stored in a floppy disk (FD) 2 as means.
[0077]
That is, the performance learning apparatus having the above-described configuration performs performance learning by communicating between the keyboard device 101 and the FD player 103. For this reason, the keyboard device 101 transmits music data from the FD player 103 in the MIDI data format (first receiving means) and operation result information indicating the operation result to the FD player 103 in the MIDI data format. Means (first transmission means). Further, the FD player 103 drives a floppy disk 2 which is a storage means for storing music data, and transmits means (second transmission means) for transmitting the read music data in the MIDI data format to the keyboard device 101. Means (second receiving means) for receiving operation result information in data format from the keyboard device 101 are provided.
[0078]
In FIG. 26, a keyboard device (performance device) 101 is connected to a general-purpose personal computer (performance control device) 104 via a serial interface 102 such as RS-232C. The personal computer 104 includes MODEM as communication control means, and is connected to the music data server 5 via a network (communication line) 4 such as the Internet, receives music data from the music data server 5, and stores the data. Is stored in the floppy disk 2.
[0079]
That is, the performance learning apparatus having the above-described configuration performs performance learning by communicating between the keyboard device 101 and the personal computer 104. For this reason, the keyboard apparatus 101 has a means for receiving music data from the personal computer 104 in the MIDI data format (first receiving means) and operation result information indicating the operation result in the MIDI data format, as in the configuration of FIG. Means for transmitting to the personal computer 104 (first transmitting means). In addition, the personal computer 104 drives the floppy disk 2 which is a storage means for storing music data, and transmits the read MIDI data format music data to the keyboard device 101 (second transmission means), and MIDI data. Means (second receiving means) for receiving the operation result information in the form from the keyboard device 101 are provided.
[0080]
As described above, the FD player 103 shown in FIG. 25 has a configuration in which the general-purpose personal computer 104 shown in FIG. 26 is specialized as a dedicated device for the performance control device, and a program ROM storing a performance learning processing program, and will be described later. Necessary switches such as a mode selection switch and a start switch, and other components necessary for performance learning are provided. That is, as a performance learning apparatus, the configuration of FIG. 25 is exactly the same as the configuration of FIG.
[0081]
Accordingly, the music data stored in the floppy disk 2 shown in FIGS. 25 and 26 is also in the same MIDI data format, and pitch data indicating the operator to be operated, that is, the key, time data indicating the sound generation start timing, and sound generation It consists of event data consisting of velocity data indicating strength or silence. The configuration of the MIDI data is the same as that of the first embodiment shown in FIGS.
[0082]
FIG. 27 shows an internal block diagram of the keyboard device 101. The CPU 11 is connected to the ROM 12, RAM 13, key scan interface 14, LEDC (LED controller) 15, and MIDI interface 18 via the system bus.
[0083]
The ROM 12 stores a performance learning process program executed by the CPU 11. The RAM 13 temporarily stores various data processed by the CPU 11. The key scan interface 14 is connected to a keyboard 19 including an optical keyboard and a group of switches as a plurality of operators, scans the operation state, and inputs it to the CPU 11. The LEDC 15 controls the light emission and extinction of the LED 20 which is a light emission means provided in each key. The LED 20 is a two-color light emitting diode composed of a red light emitting element and a green light emitting element. The MIDI interface 18 transmits and receives MIDI data to and from the personal computer 104 via the serial interface 102.
[0084]
Next, the operation of the performance learning apparatus in the second embodiment will be described based on the flowchart of the program executed by the personal computer 104 and the operation flowchart of the CPU 11 of the keyboard apparatus 101, taking the system configuration of FIG. 26 as an example. . The personal computer 104 receives the music data of the server 5 in the form of MIDI data, stores it in the floppy disk 2, and transmits it to the keyboard device 101. Then, MIDI data of operation result information indicating the operation result of the keyboard of the keyboard device 101 is input, and the next MIDI data is sequentially output according to the contents.
[0085]
FIG. 28 is a main flow on the personal computer (PC) 104 side as a performance control apparatus. In this main flow, timekeeping processing (step A1), switch processing (step A2), reception processing (step A3), MIDI processing (step A4), guide signal generation processing (step A5), and other processing (step A6) Repeat the loop process.
[0086]
FIG. 29 is a flow of the switch process in step A2 in the main flow of FIG. In this process, the keyboard of the personal computer is scanned, the mode selection switch process (step B1), the start switch process (step B2), the reception switch process (step B3), the setting switch process (step B4), and other switch processes ( Step B5) is executed to return to the main flow.
[0087]
FIG. 30 is a flowchart of the mode selection switch process of step B1 in the switch process of FIG. In this process, it is determined whether or not the mode selection switch is turned on (step C1). If it is not turned on, this flow is terminated. If it is turned on, a process corresponding to the mode switch is performed. Mode switches include the Lesson 1 switch, Lesson 2 switch, and Lesson 3 switch.
[0088]
It is determined whether or not the lesson 1 switch is turned on (step C2). If this switch is turned on, "1" is set to MODE (step C3). It is determined whether or not the lesson 2 switch is turned on (step C4). If this switch is turned on, "2" is set in MODE (step C5). It is determined whether or not the lesson 3 switch is turned on (step C6). If this switch is turned on, "3" is set in MODE (step C7).
[0089]
When MODE is “1”, the performance mode is set to generate a sound regardless of which key is pressed, regardless of the note data (pitch) of the music data. When the MODE is “2”, the performance mode is such that a sound is generated when the key corresponding to the note data of the music data (light emitting key) is correctly pressed. When MODE is “3”, the music data is automatically read regardless of the performance. However, the sound is generated when the guiding key is pressed. After the value corresponding to the mode switch is set in MODE, this flow is terminated and the process returns to the switch process of FIG.
[0090]
FIG. 31 is a flowchart of the start switch process in step B2 in the switch process of FIG. In this process, it is determined whether or not the start switch has been turned on (step D1). If it is not turned on, this flow is terminated. If it is turned on, the start flag STF is inverted (step D2). Then, it is determined whether or not STF is “1” (step D3).
[0091]
When the STF is “1”, the address register AD is set to “0”, that is, the head address of the music piece data, and “1” is set to the register STATUS (step D4). STATUS is a value set in the MIDIIN process and the guide A process described later on the keyboard device side. When STATUS is “1”, the key pressing timing is in time with the tone generation start timing of the song data. When STATUS is “2”, the key is not operated even after the music data generation start timing elapses, that is, the key pressing timing is delayed. When “STATUS” is “3”, the key is operated before the sound generation start timing of the music data is reached, that is, the key pressing timing is too early.
[0092]
After the process of step D4, the current time is stored in the register ST (step D5), and the time register T is set to “0” (step D6). Next, it is determined whether or not the data MEM [AD] at the address AD (= 0) in the music data storage area is time data (step D7). That is, it is determined whether or not the first piece of music data is event data or time data. If the first is event data, the minimum time is set in the register ΔT (step D8), AD is decremented (step D9), and one address is returned. Therefore, the value of AD is “−1”. This decrement process is a process necessary for a key guide process to be described later.
[0093]
In step D7, if the beginning of the music data is not event data but time data, the time data is set to ΔT (step D10). After the AD is decremented in step D9 or the time data is set to ΔT in step D10, the value of ΔT is added to the value of T and updated (step D11). Then, this flow is finished and the process returns to the switch process of FIG. In step D3, if the STF is “0”, the performance is in a stopped state, so this flow is terminated and the process returns to the switch process of FIG.
[0094]
FIG. 32 is a flowchart of the reception switch process in step B3 in the switch process. In this process, it is determined whether or not the reception switch is turned on (step E1). If the reception switch is not turned on, this flow is terminated, but if it is turned on, the reception flag ZF is set to “1” (step E2). ). Then, this flow is finished and the process returns to the switch process of FIG.
[0095]
FIG. 33 is a flowchart of the setting switch process in step B4 in the switch process of FIG. In this process, a channel (for example, a melody channel) designated as a key guide is set. That is, it is determined whether or not the channel setting switch and the channel number switch are turned on (step F1). If turned on, it is determined whether or not STF is “0” (step F2). If STF is “0”, the channel number of the channel designated for key pressing guide is stored in the channel set register CHSET (step F3). After storing the channel number in CHSET, or when the switch is not turned on at step F1, or when STF is "1" at step F2, this flow is terminated and the flow returns to the switch processing flow of FIG. .
[0096]
FIG. 34 is a flowchart of the reception process of step A3 in the main flow of FIG. In this process, it is determined whether or not the reception flag ZF is “1” (step G1). If ZF is “0”, this flow is terminated. If ZF is “1”, the server is accessed to request MIDI data. Then, the address AD of the storage area MEM of the floppy disk that stores the song data is set to “0 (start address)” (step G2). Next, it is determined whether or not MIDI data has been received (step G3). If received, the received data is stored in MEM [AD] (step G4). Then, AD is incremented (step G5).
[0097]
After the AD is incremented or when MIDI data is not received in step G3, it is determined whether or not the reception is completed (step G6). If the reception is not finished, the process proceeds to step G3 to wait for the reception of MIDI data. Each time MIDI data is received, the received data is sequentially stored in MEM [AD] and AD is incremented. When reception ends in step G6, the address of the AD at that time is stored in the end register END (step G7), and ZF is reset to “0” (step G8). Then, this flow is finished and the process returns to the main flow of FIG.
[0098]
FIG. 35 is a flowchart of the MIDI processing in step A4 in the main flow. In this process, a MIDI IN process (step H1) for inputting MIDI data and a MIDI OUT process (step H2) for outputting MIDI data are executed, and the process returns to the main flow.
[0099]
FIG. 36 is a flow of the MIDIIN process. In this flow, the operation result of the keyboard device with respect to the MIDI data output to the keyboard device in the MIDI OUT process described later is input as MIDI data, and processing according to the input MIDI data and the set mode is performed. First, it is determined whether or not MODE is not “3” (step J1). When MODE is “3”, the music data is automatically read from the floppy disk regardless of the operation result, so this flow is terminated without performing the MIDIIN process.
[0100]
If MODE is not “3”, it is determined whether or not it is MIDIIN (step J2). That is, it is determined whether or not MIDI data is input from the keyboard device. When the MIDI data is input, it is determined whether or not the MIDI data is a note event (step J3). If it is a note event, it is determined whether or not the channel of the MIDI data is the same as the channel set in CHSET for the key depression guide (step J4).
[0101]
If the channels are the same, it is determined whether or not the velocity data of the MIDI data is “0” (step J5). If it is not “0”, it is determined whether or not MODE is “2” (step J6). When MODE is “2”, that is, in the performance mode that generates sound when the key is pressed correctly, note data of MIDI data is stored in the key register KEY (step J7). Then, it is determined whether or not the KEY note data matches the note data of the register NOTE storing the key press guide note data (step J8). That is, it is determined whether or not the key guiding the key depression has been correctly operated.
[0102]
When the key data of KEY and NOTE are the same, or when MODE is “1” in step J6, that is, in the performance mode in which the next MIDI data is output regardless of which key is pressed, It is determined whether or not the current time has reached the time obtained by adding the ST time data and the T time data (step J9). That is, it is determined whether or not the current time has reached the sounding start timing.
[0103]
If the current time is smaller than the value obtained by adding the time data of ST and T and the sounding start timing has not yet been reached, it is determined whether MODE is “1” (step J10). If MODE is “1”, STATUS is set to “3” (step J11). That is, if the key is operated before the sounding start timing is reached, STATUS is set to “3”. In this state, the MIDI data until the sounding start timing is fast forwarded. After STATUS is set to “3”, this flow is terminated and the flow returns to the flow of FIG.
[0104]
In step J9, when the current time becomes a value obtained by adding the time data of ST and T and the sound generation start timing is reached, “1” is set in STATUS (step J12). Next, a value obtained by adding the time data of ST and T is subtracted from the current time, and the time data of the difference is stored in the register S (step J13). Then, the S time data is added to the ST time data (step J14). That is, the value of ST is updated as time passes. Then, this flow is finished and the flow returns to the flow of FIG.
[0105]
If the MIDI data is not a note event in step J2, the MIDI data is not a note event in step J3, the MIDI data channel is different from the channel for key depression guide set in CHSET in step J4, and the velocity data of the MIDI data is determined in step J5. If it is "0", if the KEY note data and the NOTE note data are different in step J8, or if the MODE is "2" in step J10, this flow is ended and FIG. Return to the flow.
[0106]
FIG. 37 is a flow of the MIDIOUT process in step H2 in the flow of FIG. In this process, the pointer n designating the MIDIOUT buffer is set to “0” (step K1), and the following loop process is executed while incrementing n. It is determined whether or not the MIDIOUT buffer (n) is not empty (step K2). If not, the MIDI data and WTIME time data are read from the MIDIOUT buffer (n) (step K3).
[0107]
Next, it is determined whether or not the channel of the read MIDI data is not the same as the channel for the key depression guide set in CHSET (step K4). If the channels are not identical, that is, if the read-out MIDI data is not a key pressing guide channel, the time data of WTIME is subtracted from the current time, and the time data of the difference is stored in register D (step K5). Then, it is determined whether or not the time data D has reached a predetermined time (step K6).
[0108]
When the predetermined time is reached, MIDI data is output to the keyboard device (step K7). In step K4, if the read MIDI data channel is the same as the key depression guide channel set in CHSET, the MIDI data is immediately output to the keyboard device. The predetermined time in step K6 is a time required for guiding the key depression by causing the LED in the corresponding key of the keyboard device to emit light prior to the sound generation start timing by the MIDI data of the key depression guide channel. Therefore, it is necessary to output the MIDI data of the channel for the key pressing guide earlier than the MIDI data of the other channels by this required time.
[0109]
However, a specific channel cannot be made earlier than the actual time. Instead, the MIDI data of the other channel is delayed by this required time, and the output of the MIDI data of the key guide channel is relatively delayed. The process of speeding up is performed by the processes of Step K4 to Step K7. Therefore, the problem that the sound generation of the key pressing guide channel is delayed from the sound generation of other channels due to the time required for the key pressing guide is eliminated.
[0110]
After outputting the MIDI data in step K7, the area of the MIDIOUT buffer (n) is cleared (step K8). Then, n is incremented to designate the next MIDIOUT buffer area (step K9). When the area of the MIDIOUT buffer (n) designated at step K2 is empty and there is no MIDI data in the area, or when the time data D does not reach the predetermined time at step K6, n is set at step K9. Increment to specify the next MIDIOUT buffer area.
[0111]
Then, it is determined whether or not n exceeds a predetermined number that is the entire area of the MIDIOUT buffer (step K10). If n is less than or equal to the predetermined number, the process proceeds to step K2 to determine whether or not the MIDIOUT buffer (n) is empty. As long as there is MIDI data in the MIDIOUT buffer (n), the MIDI data is read and output to the keyboard device while performing processing according to the MIDI data channel. When n exceeds the predetermined number, this flow is terminated and the flow returns to the flow of FIG.
[0112]
FIG. 38 is a flow of guide signal generation processing in step A5 in the main flow of FIG. In this process, a key guide process corresponding to the value of the mode register MODE is performed. That is, it is determined whether or not the MODE value is “1” or “2” (step L1). If it is “1” or “2”, the guide A process is executed (step L2). If the MODE value is neither “1” nor “2”, it is determined whether or not the MODE value is “3” (step L3). If the MODE value is “3”, the guide B process is performed. Is executed (step L4). After the guide A process or the guide B process, the process returns to the main flow of FIG.
[0113]
39 to 43 show the flow of the guide A process at step L2 in FIG. In this process, it is determined whether or not the start flag STF is “1” (step M1). If the STF is “0”, the performance is stopped, and this flow is ended. If the STF is “1 (performance start)”, it is determined whether or not the value of STATUS is not “2” (step M2).
[0114]
If the value of STATUS is not “2”, the value obtained by adding the time data of the register ST and the time data of the register T is compared with the current time (step M3). That is, the sound generation start timing time is compared with the current time. If the current time has not reached the time of sound generation start timing, this flow ends and the process returns to the main flow of FIG.
[0115]
If the current time has reached the time of the sound generation start timing, the register AD is incremented (step M4). Then, it is determined whether or not the address AD is not END (step M5). If it is not END, it is determined whether or not the MIDI data of MEM [AD] is time data (step M6). If it is time data, it is determined whether or not the value of STATUS is “3”, that is, the key pressing timing is too early than the sounding start timing (step M7).
[0116]
If the value of STATUS is “3”, the minimum time is set to ΔT in order to fast-forward the MIDI data (step M8). When the value of STATUS is “1” instead of “3”, that is, when the key pressing timing matches the sounding start timing, the value of the regular time data of MEM [AD] is set to ΔT (step M9). ). In step M8 or step M9, after setting a value for ΔT, the value of ΔT is added to the value of T, and this flow is terminated to return to the main flow of FIG.
[0117]
In step M5, if MEM [AD] is END, the song data is completed, so the STF is reset to “0” (step M11). Then, this flow is finished and the process returns to the main flow of FIG.
[0118]
If MEM [AD] is not time data in step M6, it is determined in the flow of FIG. 40 whether MEM [AD] is event data (step M12). If it is event data, it is determined whether or not the channel of the event data is the same as the channel for CHSET key depression guide (step M13). If they are the same channel, it is determined whether or not the event data is a note event (step M14).
[0119]
If it is a note event, AD is incremented and velocity data is stored in the register VEL (step M15). Then, it is determined whether or not the VEL velocity data is not "0" (step M16). If VEL is not “0”, that is, if the note data is note-on, the note data of the MIDI data is stored in the register NOTE (step M17). Next, n specifying the MIDIOUT buffer is set to “0” (step M18), and the MIDI data is stored in the MIDIOUT buffer (n) while incrementing n. That is, it is determined whether or not the MIDIOUT buffer (n) is empty (step M19). If it is not empty, n is incremented (step M20). And it is discriminate | determined whether n exceeded the predetermined number (step M21). If n is equal to or smaller than the predetermined number, the process proceeds to step M19 to search for an empty MIDIOUT buffer (n).
[0120]
If the MIDIOUT buffer (n) is empty, the MIDI data is stored in the MIDIOUT buffer (n) (step M22). Further, the current time is stored in the register WTIME (step M23), and WTIME time data (current time) is stored in the MIDIOUT buffer (n) (step M24). After the time data is stored or when n exceeds a predetermined number in Step M21, it is determined whether or not STATUS is “3” in the flow of FIG. 41 (Step M25). If STATUS is “3”, STATUS is changed to “1” (step M26). Then, volume event MIDI data is created based on the values of CHSET and VOLUME (step M27).
[0121]
If the MIDI data is not a note event in step M14 in FIG. 40, it is determined in the flow in FIG. 41 whether the MIDI data is a volume event (step M28). If it is a volume event, AD is incremented, and the volume data is fetched into the register VOLUME and stored (step M29). Next, it is determined whether or not STATUS is “3” (step M30). When STATUS is “3” and MIDI data is fast-forwarded, the volume value of the MIDI data is changed to the minimum value (step M31). That is, the pronunciation is muted during fast forward.
[0122]
After the volume value is changed to the minimum value, after the volume event MIDI data is created in step M27, if the MIDI data is not a volume event in step M28, or if STATUS is not "3" in step M30, step M13 in FIG. If the MIDI data channel is not the key-pressing guide channel in FIG. 41, or if the MIDI data VEL is “0”, that is, a note-off event in step M16, the MIDI OUT buffer is set in step M32 in FIG. The designated n is set to “0”, and the MIDI data is stored in the MIDIOUT buffer (n) while incrementing n.
[0123]
That is, it is determined whether or not the MIDIOUT buffer (n) is empty (step M33). If it is not empty, n is incremented (step M34). And it is discriminate | determined whether n exceeded the predetermined number (step M35). If n is less than or equal to the predetermined number, the process proceeds to step M33 to search for an empty MIDIOUT buffer (n). If the MIDIOUT buffer (n) is empty, the MIDI data is stored in the MIDIOUT buffer (n) (step M36). Further, the current time is stored in the register WTIME (step M37), and WTIME time data (current time) is stored in the MIDIOUT buffer (n) (step M38). Then, the process proceeds to step M4 in FIG. 39 to increment AD.
[0124]
In step M25 of FIG. 41, when STATUS is “1” instead of “3”, STATUS is changed to “2” in the flow of FIG. 42 (step M39). That is, in step M22 of FIG. 40, after storing the key pressing guide MIDI data in the MIDI OUT buffer, the reading of the music data is stopped until the key is pressed by changing STATUS from "1" to "2". Transition to the state.
[0125]
Next, the MIDI data is stored in the register NVON (step M40). Further, based on the CHSET and NOTE of the NVON MIDI data and the velocity data whose value is changed to “0”, the MIDI data is created (step M41). Then, the created MIDI data is stored in the register NVOFF (step M42). Next, MIDI data is taken out from NVON (step M43). Then, the pointer n of the MIDIOUT buffer is set to “0” (step M44), and the following loop processing is performed while incrementing n.
[0126]
It is determined whether or not the MIDIOUT buffer (n) is empty (step M45). If it is not empty, n is incremented (step M46). And it is discriminate | determined whether n exceeded the predetermined number (step M47). If the predetermined number has not been exceeded, in step M45, the empty MIDIOUT buffer (n) is searched. If there is a vacancy, the MIDI data is stored in the MIDI OUT buffer (n) (step M48). Next, the current time is stored in the register WTIME (step M49). Then, the current time of WTIME is stored in the MIDIOUT buffer (n) (step M50).
[0127]
After storing the current time of WTIME, or when n exceeds a predetermined number in step M47, the flag CF is reset to “0” (step M51). Next, the current time is stored in the register STP (step M52), and a predetermined value is stored in the register P (step M53). Then, this flow is finished and the process returns to the main flow of FIG.
[0128]
In step M2 in FIG. 39, if STATUS is “2”, the keyboard device has not been pressed even when the sounding start timing has elapsed, so the LED in the key to be operated by the keyboard device. Process to blink. That is, in the flow of FIG. 43, it is determined whether or not the current time has reached a value obtained by adding the time data of STP and the time data of P (step M54). If the current time has not reached this added value, this flow is terminated. If the current time has reached this added value, the value of CF is inverted (step M55). Then, it is determined whether CF is “0” or “1” (step M56).
[0129]
If CF is “0”, MIDI data with velocity data “0” is extracted from NVOFF (step M57). If CF is “1”, MIDI data whose velocity data is not “0” is extracted from NVON (step M58). After the MIDI data is extracted in step M57 or step M58, the process proceeds to step M44 in FIG. Then, the extracted MIDI data is stored in an empty area of the MIDIOUT buffer.
[0130]
That is, if STATUS is “2” and the key to be operated on the keyboard device is not operated even after the event data sounding start timing has elapsed, the sounding event data is changed so that the velocity data is “0”. Is generated and stored in NVOFF, and the sounding event data stored in NVON and the sounding event data stored in NVOFF are alternately stored in the MIDIOUT buffer every time a predetermined time of P elapses. Store.
[0131]
44 and 45 show a flow of the guide B process at step L4 in the guide signal creation process of FIG. In this process, it is determined whether or not the start flag STF is “1” (step N1). If the STF is “0”, the performance is stopped, and this flow is ended. When the STF is “1”, it is determined whether or not the current time is a value obtained by adding the time data of the register ST and the time data of the register T (step N2). That is, it is determined whether or not the current time is the sound generation start timing. If the current time has not reached the sounding start timing, this flow is terminated.
[0132]
When the current time coincides with the sound generation start timing, the address of the register AD is incremented (step N3). Then, it is determined whether or not the address AD is not END (step N4). If it is not END, it is determined whether or not the data of MEM [AD] is time data (step N5). If it is time data, the value of time data of MEM [AD] is set to ΔT (step N6). Next, the value of ΔT is added to the value of T (step N7), this flow is terminated, and the flow returns to the main flow of FIG. In step N4, if AD is END, the song data is completed, and the flag STF is reset to “0” (step N8). Then, this flow is ended and the process returns to the main flow.
[0133]
If MEM [AD] is not time data in step N5, it is determined in the flow of FIG. 45 whether or not MEM [AD] data is event data (step N9). If it is not event data, the process proceeds to step N3 in FIG. 44 and AD is incremented. If it is event data, does the event data channel and the CHSET key depression guide channel match? It is determined whether or not (step N10). If the channels are the same, it is determined whether or not the event data is a note event (step N11).
[0134]
If it is a note event, AD is incremented and the velocity data is stored in the register VEL (step N12). Then, it is determined whether or not the VEL velocity data is not "0" (step N13). If the VEL velocity data is not "0", the VEL velocity data is changed to the minimum value "1" (step N14). Then, the velocity data of the MIDI data is changed to the value of the VEL velocity data (step N15). Next, the pointer n of the MIDIOUT buffer is set to “0” (step N16), and the following loop processing is performed while incrementing n.
[0135]
It is determined whether or not the MIDIOUT buffer (n) is empty (step N17). If it is not empty, n is incremented (step N18). And it is discriminate | determined whether n exceeded the predetermined number (step N19). If the predetermined number has not been exceeded, the MIDIOUT buffer (n) is searched for in step N17. If there is a vacancy, the MIDI data is stored in the MIDI OUT buffer (n) (step N20). Next, the current time is stored in the register WTIME (step N21). Then, the process proceeds to step N3 in FIG. 44 to increment AD.
[0136]
FIG. 46 is a main flow on the keyboard device 101 (performance device) side. After predetermined initialization processing (step P1), switch processing (step P2), MIDI processing (step P3), key guide processing (step P4), key pressing processing (step P5), sound generation instruction processing (step P6), etc. The loop process of step (Step P7) is repeatedly executed.
[0137]
FIG. 47 is a flowchart of the switch process in step P2 in the main flow of FIG. In this process, a guide channel setting switch process (step Q1), a velocity setting switch process (step Q2), and other switch processes (step Q3) are executed, and this flow is terminated to return to the main flow in FIG. .
[0138]
FIG. 48 is a flowchart of the guide channel setting switch process in step Q1 in the switch process of FIG. It is determined whether or not the guide channel setting switch and the channel number switch are turned on (step R1). If turned on, the channel number is stored in the channel register CHSET (step R2). After storing the channel number or when the switch is not turned on in step R1, this flow is terminated and the flow returns to the flow of FIG.
[0139]
FIG. 49 is a flow of the velocity setting switch process of step Q2 in the switch process of FIG. It is determined whether or not the velocity setting switch and the velocity value switch are turned on (step S1). When the velocity setting switch and the velocity value switch are turned on, the velocity value data is stored in the register VSET (step S2). After the velocity value data is stored or when the switch is not turned on in step S1, this flow is terminated and the flow returns to the flow of FIG.
[0140]
FIG. 50 is a flow of the MIDI processing in step P3 in the main flow of FIG. In this processing, communication is performed with a personal computer via a serial interface, MIDI IN processing for receiving MIDI data from the personal computer (step T1), and MIDI OUT processing for transmitting MIDI data as a result of the performance operation to the personal computer. (Step T2) is executed, and the process returns to the main flow.
[0141]
FIG. 51 is a flowchart of the MIDIIN process in step T1 of FIG. In this process, it is determined whether it is MIDIIN (MIDI data reception) (step U1). If it is MIDIIN, a pointer n designating the MIDIIN buffer is set to “0” (step U2). The following processing is performed while incrementing n.
[0142]
That is, it is determined whether or not the MIDIIN buffer (n) is empty (step U3). If it is not empty, n is incremented (step U4). Then, it is determined whether or not n exceeds a predetermined number which is the number of MIDIIN buffer areas (step U5). If n is less than or equal to the predetermined number, the process goes to step U3 to search for an empty MIDIIN buffer (n). If the MIDIIN buffer (n) is empty, the MIDI data is stored (step U6). And it transfers to step U1 and it is discriminate | determined whether it is MIDIIN. If it is MIDIIN, the above process is repeated. If it is not MIDIIN or if n exceeds a predetermined number in step U5, this flow is terminated and the flow returns to the flow of FIG.
[0143]
FIG. 52 is a flowchart of the MIDIOUT process at step T2 in the MIDI process of FIG. In this process, the pointer n designating the MIDIOUT buffer is set to “0” (step V1), and the following process is performed while incrementing n. That is, it is determined whether or not the MIDIOUT buffer (n) is not empty (step V2). If it is not empty, the MIDI data in the area of the MIDIOUT buffer (n) is output to the personal computer (step V3). Then, the area of the MIDIOUT buffer (n) is cleared (step V4).
[0144]
After clearing the area or if the MIDIOUT buffer (n) is empty in step V2, n is incremented (step V5). Then, it is determined whether or not n exceeds a predetermined number that is the number of MIDIOUT buffer areas (step V6). If n is less than or equal to the predetermined number, the process proceeds to step V2 to determine whether or not the MIDIOUT buffer (n) is not empty. If n exceeds a predetermined number in step V6, this flow is terminated and the process returns to the main flow of FIG.
[0145]
FIG. 53 is a flow of key guide processing in step P4 in the main flow of FIG. In this process, the pointer n designating the MIDIIN buffer is set to “0” (step X1), and the following process is performed while incrementing n. That is, it is determined whether or not the MIDIIN buffer (n) is not empty (step X2). If MIDI data is not empty and there is MIDI data, it is determined whether or not the MIDI data is a note event (step X3). . If the event is a note event, it is determined whether or not the channel of the event data is the same as the channel for the key pressing guide specified by CHSET (step X4).
[0146]
If the channels are the same, it is determined whether or not the velocity data of the MIDI data is “0” (step X5). If not "0", the velocity data is stored in the register VEL (step X6). Then, the VEL velocity data is multiplied by the VSET data to add “1” (step X7). The VSET data is set to a desired value by the user in the VEL setting switch process of FIG. Alternatively, the default value is set. When set by the user, the VSET data is set to “0”, and the minimum value “1” is added to avoid erroneous note-off events.
[0147]
Next, the velocity data of the MIDI data is changed to the value of VEL (step X8). Then, it is determined whether or not the value of VEL is larger than a predetermined value (step X9). When the value of VEL is larger than the predetermined value, a process of turning on the red light emitting LED in the key for the note data of the MIDI data is performed (step X10). On the other hand, when the value of VEL is equal to or smaller than the predetermined value, a process of turning on the green light emitting LED in the key for the note data of the MIDI data is performed (step X11). If the value of VEL is “0” in step X5, a process of turning off the LED in the key for the note data of the MIDI data is performed (step X12).
[0148]
After performing the LED lighting process in Step X10 or Step X11 or after performing the LED lighting process in Step X12, n is incremented to designate the next area of the MIDI IN buffer. Further, when the MIDI IN buffer (n) is empty at step X2, when the MIDI data is not a note event at step X3, or when the MIDI data channel is not the channel for the key depression guide at step X4, either Increment n to designate the next area of the MIDIIN buffer.
[0149]
Then, it is determined whether or not n exceeds a predetermined value, which is the number of MIDIIN buffer areas (step X14). If n is less than or equal to the predetermined value, the process proceeds to step X2 and the above processes are repeated. When n exceeds a predetermined value, this flow is terminated and the process returns to the main flow of FIG.
[0150]
FIG. 54 is a flowchart of the key pressing process in step P5 in the main flow of FIG. In this process, the keyboard is scanned (step Y1) to determine whether there is a key change (step Y2). If there is no key change, the process returns to the main flow. When there is a key change from OFF to ON, that is, when a key pressing operation is performed, MIDI data is created with CHSET, key pressing note data, and velocity data (step Y3). When there is a key change from on to off, that is, when a key release operation is performed, MIDI data is generated with CHSET, key release note data, and velocity data having a value of “0” (step Y4).
[0151]
After the MIDI data is created in step Y3 or step Y4, n specifying the MIDIOUT buffer is set to “0” (step Y5), and the MIDI data is stored in the MIDIOUT buffer (n) while incrementing n. That is, it is determined whether or not the MIDIOUT buffer (n) is empty (step Y6). If it is not empty, n is incremented (step Y7). And it is discriminate | determined whether n exceeded the predetermined number (step Y8). If n is less than or equal to the predetermined number, the process proceeds to step Y6 to search for a vacant MIDIOUT buffer (n).
[0152]
If the MIDIOUT buffer (n) is empty, the MIDI data is stored in the MIDIOUT buffer (n) (step Y9). Then, it is determined whether or not the scanning is finished (step Y10). If not finished, the process proceeds to step Y1 to continue the keyboard scanning. When the scanning is finished, this flow is finished and the process returns to the main flow of FIG.
[0153]
FIG. 55 is a flowchart of the sound generation instruction process of step P6 in the main flow of FIG. In this process, a pointer n designating the area of the MIDIIN buffer and the MIDIOUT buffer is set to “0” (step Z1), and while incrementing n, MIDI data of channels other than the key depression guide channel of the MIDIIN buffer, In addition, processing for sending MIDI data, which is the operation result of the channel for the key depression guide of the MIDI OUT buffer, to the sound source is performed.
[0154]
It is determined whether or not the MIDIIN buffer (n) area is not empty (step Z2), and if it is not empty, the MIDI data is sent to the sound source (step Z3). Then, the area of the MIDIIN buffer is cleared (step Z4). After clearing the area, or if the MIDIIN buffer (n) area is empty in step Z2, it is determined whether the MIDIOUT buffer (n) is not empty (step Z5). The MIDI data in the MIDIOUT buffer (n) is sent to the sound source (step Z6). Then, the area of the MIDIOUT buffer is cleared (step Z7).
[0155]
After clearing the area, or if the MIDIOUT buffer (n) area is empty in step Z5, n is incremented (step Z8). Then, it is determined whether or not n exceeds a predetermined number (step Z9). If n is equal to or smaller than the predetermined number, the process proceeds to step Z2 to repeat the above process and send MIDI data to the sound source. When n exceeds a predetermined value, this flow is terminated and the process returns to the main flow of FIG.
[0156]
As described above, in the performance learning apparatus in the second embodiment, the personal computer 104 (and the FD player 103) constitutes data reading means for reading the event data from the floppy disk 2, and the read sound event data or mute event data. Is transmitted to the keyboard device 101. The keyboard device 101 constitutes signal generation means for generating a lighting signal for turning on or turning off the LED 20 in accordance with the sounding event data or the mute event data.
[0157]
The personal computer 104 also constitutes data changing means for changing the sounding event data to the mute event data, and the key to be operated is pressed even when the sounding start timing of the sounding event data transmitted to the keyboard device 101 elapses. When the operation result information indicating that the key is not locked is not received, the sound event data and the mute event data obtained by changing the sound event data are alternately transmitted to the keyboard device 101, and the LED 20 of the keyboard device 101 is transmitted. The light emission control means for blinking is configured.
[0158]
Therefore, in the case of controlling a keyboard device having a navigation function for guiding a performance operation, it is possible to easily realize the key pressing timing with respect to the sound generation start timing without editing music data.
[0159]
In this case, the personal computer 104 is connected to the music data server 5 as an external device via a communication line (network 4), and constitutes a communication control means for receiving music data from the music data server 5. Therefore, even when editing cannot be performed with music data received from an external device via a communication line, it is possible to realize the key press timing lesson with respect to the sound generation start timing.
[0160]
Further, since the LEDs 20 provided in the keys of the keyboard device 101 emit light in different emission colors of red and green, the personal computer 104 determines whether the velocity data of the event data read from the floppy disk 2 is equal to or greater than a predetermined value. The LED 20 of the keyboard device 101 is caused to emit light with a light emission color corresponding to the determination result. Therefore, it is possible to guide not only the key pressing timing but also the key pressing strength.
[0161]
In the first and second embodiments, the apparatus for executing the performance learning processing program stored in the memory such as the ROM has been described. However, in each embodiment, the recording medium such as a floppy disk or a CD is used. The performance learning process program shown by the flowchart may be recorded, and the performance learning process program may be read from the recording medium and executed.
[0162]
For example, a performance learning processing program is recorded in advance on a floppy disk 2 that stores music data driven by the keyboard device 1 in the first embodiment, and the keyboard device 1 reads and executes this program. In the second embodiment, a performance training processing program is recorded in advance on the floppy disk 2 that stores music data, and this program is read out and executed by the FD player 103 or the personal computer 104.
[0163]
【The invention's effect】
According to the present invention, when the operator to be played is not operated even after the sounding start timing of the sounding event data has passed, the sounding event data is changed to set the velocity data to “0” each time. Generates mute event data, and alternately sends a lighting signal corresponding to the sounding event data and a turn-off signal corresponding to the changed muffing event data to the light emitting means corresponding to the operator to be operated and blinks. Let Therefore, in the navigation function for guiding the performance operation, it is possible to easily realize the key press timing lesson with respect to the sound generation start timing without editing the music data.
[Brief description of the drawings]
FIG. 1 is a diagram showing a system configuration in a first embodiment of the present invention.
FIG. 2 is a block diagram showing the configuration of the keyboard device in FIG.
FIG. 3 is a diagram showing a format of MIDI data.
FIG. 4 is a diagram showing a format of melody data in MIDI data.
FIG. 5 is a main flowchart of a program executed by the CPU of FIG. 2;
6 is a flowchart of switch processing in FIG. 5;
7 is a flowchart of mode selection switch processing in FIG. 6;
FIG. 8 is a flowchart of start switch processing in FIG. 6;
FIG. 9 is a flowchart of reception switch processing in FIG. 6;
10 is a flowchart of channel setting switch processing in FIG. 6;
11 is a flowchart of velocity setting processing in FIG. 6;
12 is a flowchart of key guide processing in FIG. 5;
13 is a flowchart of guide A processing in FIG.
FIG. 14 is a flowchart of the guide A process following FIG.
FIG. 15 is a flowchart of the guide A process following FIG.
FIG. 16 is a flowchart of guide A processing following FIGS. 13 and 14;
FIG. 17 is a flowchart of the guide A process following FIG.
18 is a flowchart of guide B processing in FIG.
FIG. 19 is a flowchart of guide B processing following FIG. 18;
FIG. 20 is a flowchart of the guide B process following FIG.
FIG. 21 is a flowchart of key pressing processing in FIG. 5;
FIG. 22 is a flowchart of key pressing processing following FIG. 21;
FIG. 23 is a flowchart of output processing in FIG. 5;
24 is a flowchart of the reception process in FIG.
FIG. 25 is a diagram showing a system configuration using an FD player according to the second embodiment of the present invention.
FIG. 26 is a diagram showing a system configuration using a personal computer in the second embodiment.
FIG. 27 is a block diagram showing an internal configuration of the keyboard device of FIGS. 25 and 26;
FIG. 28 is a main flowchart showing the operation of the personal computer in FIG. 26;
FIG. 29 is a flowchart of switch processing in FIG. 28;
30 is a flowchart of mode selection switch processing in FIG. 29;
FIG. 31 is a flowchart of start switch processing in FIG. 29;
32 is a flowchart of reception switch processing in FIG. 29. FIG.
FIG. 33 is a flowchart of setting switch processing in FIG. 29;
34 is a flowchart of the reception process in FIG. 28. FIG.
FIG. 35 is a flowchart of the MIDI processing in FIG.
FIG. 36 is a flowchart of MIDIIN processing in FIG. 35;
FIG. 37 is a flowchart of the MIDIOUT process in FIG. 35;
38 is a flowchart of guide signal generation processing in FIG. 28;
FIG. 39 is a flowchart of guide A processing in FIG. 38;
40 is a flowchart of guide A processing following FIG. 39. FIG.
FIG. 41 is a flowchart of the guide A process following FIG.
FIG. 42 is a flowchart of the guide A process following FIG.
FIG. 43 is a flowchart of guide A processing following FIG. 39;
44 is a flowchart of guide B processing in FIG. 38. FIG.
45 is a flowchart of guide B processing following FIG. 44. FIG.
FIG. 46 is a main flowchart of the keyboard device according to the second embodiment.
47 is a flowchart of switch processing in FIG. 46. FIG.
48 is a flowchart of guide channel setting switch processing in FIG. 47;
49 is a flowchart of velocity setting switch processing in FIG. 47;
50 is a flowchart of the MIDI process in FIG. 46. FIG.
51 is a flowchart of the MIDIIN process in FIG. 50. FIG.
52 is a flowchart of the MIDIOUT process in FIG. 50. FIG.
FIG. 53 is a flowchart of key guide processing in FIG. 46;
54 is a flowchart of key pressing processing in FIG. 46. FIG.
FIG. 55 is a flowchart of the sound generation instruction process in FIG. 46;
[Explanation of symbols]
11 CPU
19 Keyboard
20 LED
21 FDD

Claims (4)

演奏装置と演奏制御装置との間で通信を行って演奏の教習を行う演奏教習装置において、
前記演奏装置は、
曲の演奏を行うための複数の操作子と、
各操作子に対応して設けられ点灯信号に応じて発光し消灯信号に応じて発光を停止して演奏をガイドする発光手段と、
前記演奏制御装置から、操作すべき操作子を示す音高データ、発音開始タイミングを示す時間データからなるイベントデータを含む曲データを受信する第1の受信手段と、
この第1の受信手段が発音のイベントデータを受信したときは前記点灯信号を発生させ、消音のイベントデータを受信したときは前記消灯信号を発生させて、当該イベントデータの操作に係る操作子に対応する発光手段に与える信号発生手段と、
前記操作子の操作結果を示す操作結果情報を前記演奏制御装置に送信する第1の送信手段と、を備え、
前記演奏制御装置は、
前記演奏装置に送信する前記曲データを記憶する記憶手段と、
この記憶手段に記憶されているイベントデータを読み出すデータ読出手段と、
前記データ読出手段によって読み出された発音のイベントデータ又は消音のイベントデータを前記演奏装置に送信する第2の送信手段と、
前記演奏装置から送信された前記操作結果情報を受信する第2の受信手段と、
前記発音のイベントデータを消音のイベントデータに変更するデータ変更手段と、
前記第2の送信手段によって前記演奏装置に送信した発音のイベントデータの発音開始タイミングを経過した後も当該発音のイベントデータに対応する操作子を操作した旨の操作結果情報を前記第2の受信手段が受信しないときは、前記発光手段を点滅させるために当該発音のイベントデータと前記データ変更手段によって当該発音のイベントデータを変更させた消音のイベントデータとを交互に前記第2の送信手段により前記演奏装置に送信させる発光制御手段と、
を備えたことを特徴とする演奏教習装置。
In a performance training device for performing performance training by communicating between a performance device and a performance control device,
The performance device is:
A number of controls for playing a song,
A light-emitting means that is provided corresponding to each operation element and that emits light in response to a lighting signal and stops light emission in response to a turn-off signal;
First receiving means for receiving, from the performance control device, music data including event data including pitch data indicating an operator to be operated and time data indicating a sounding start timing;
When the first receiving means receives the sound event data, the lighting signal is generated. When the mute event data is received, the light-off signal is generated. A signal generating means for supplying to a corresponding light emitting means;
First transmission means for transmitting operation result information indicating an operation result of the operation element to the performance control device;
The performance controller is
Storage means for storing the song data to be transmitted to the performance device;
Data reading means for reading event data stored in the storage means;
Second transmission means for transmitting the event data for sound generation or the event data for mute read by the data reading means to the performance device;
Second receiving means for receiving the operation result information transmitted from the performance device;
Data changing means for changing the event data of the sound to mute event data;
Operation result information indicating that the operator corresponding to the sound event data is operated after the sound generation start timing of the sound event data transmitted to the performance device by the second transmission means has elapsed. When the means does not receive, the second transmission means alternately produces the sounding event data and the mute event data whose sounding event data is changed by the data changing means to blink the light emitting means. Light emission control means for transmitting to the performance device;
A performance learning apparatus characterized by comprising:
前記演奏制御装置は、通信回線を介して外部装置と接続し、前記曲データを前記外部装置から受信して前記記憶手段に記憶する通信制御手段をさらに備えたことを特徴とする請求項1に記載の演奏教習装置。 2. The performance control device according to claim 1, further comprising communication control means for connecting to an external device via a communication line, receiving the music data from the external device, and storing it in the storage means. The performance learning device described. 曲の演奏を行うための複数の操作子と、A number of controls for playing a song,
各操作子に対応して設けられ点灯信号に応じて発光し消灯信号に応じて発光を停止して演奏をガイドする発光手段と、Light emission means provided corresponding to each operation element for emitting light in response to a lighting signal and stopping light emission in response to a turn-off signal, and guiding performance
操作すべき操作子を示す音高データ、発音開始タイミングを示す時間データからなるイベントデータを含む曲データを受信する受信手段と、Receiving means for receiving song data including event data including pitch data indicating an operator to be operated and time data indicating the start timing of sound generation;
この受信手段が発音のイベントデータを受信したときは前記点灯信号を発生させ、消音のイベントデータを受信したときは前記消灯信号を発生させて、当該イベントデータの操作に係る操作子に対応する発光手段に与えて点滅させる信号発生手段と、When the receiving means receives the sound event data, the lighting signal is generated, and when the mute event data is received, the light extinction signal is generated, and the light emission corresponding to the operation element related to the operation of the event data is generated. A signal generating means for flashing when applied to the means;
前記操作子の操作結果を示す操作結果情報を送信する送信手段と、Transmitting means for transmitting operation result information indicating an operation result of the operation element;
を備えた演奏装置との間で通信を行う演奏制御装置によって実行されるプログラムを記録した記録媒体であって、A recording medium recording a program executed by a performance control device that communicates with a performance device comprising:
所定の記憶手段に記憶されているイベントデータを読み出すデータ読出手順と、A data reading procedure for reading event data stored in a predetermined storage means;
前記データ読出手順によって読み出された発音のイベントデータ又は消音のイベントデータを前記演奏装置に送信する送信手順と、A transmission procedure for transmitting the sounding event data or the mute event data read by the data reading procedure to the performance device;
前記演奏装置から送信された前記操作結果情報を受信する受信手順と、A reception procedure for receiving the operation result information transmitted from the performance device;
前記発音のイベントデータを消音のイベントデータに変更するデータ変更手順と、A data change procedure for changing the event data of the pronunciation to event data of mute,
前記送信手順によって前記演奏装置に送信した発音のイベントデータの発音開始タイミングを経過した後も当該発音のイベントデータに対応する操作子を操作した旨の操作結果情報を前記受信手順によって受信しないときは、前記発光手段を点滅させるために当該発When the reception procedure does not receive the operation result information indicating that the operator corresponding to the sound event data has been operated even after the sound generation start timing of the sound event data transmitted to the performance device by the transmission procedure has elapsed. The light emitting means to blink 音のイベントデータと前記データ変更手順によって当該発音のイベントデータを変更させた消音のイベントデータとを交互に前記送信手順により前記演奏装置に送信させる発光制御手順と、A light emission control procedure for alternately transmitting sound event data and mute event data whose sound event data has been changed by the data change procedure to the performance device by the transmission procedure;
を有する演奏教習処理プログラムを記録した記録媒体。The recording medium which recorded the performance learning processing program which has.
前記演奏教習処理プログラムにおいて、通信回線を介して外部装置と接続し、前記曲データを前記外部装置から受信して前記所定の記憶手段に記憶する通信制御手順をさらに有することを特徴とする請求項3に記載の記録媒体。The performance learning processing program further comprises a communication control procedure for connecting to an external device via a communication line, receiving the music data from the external device, and storing it in the predetermined storage means. 3. The recording medium according to 3.
JP07473599A 1999-03-19 1999-03-19 Performance learning apparatus and recording medium on which performance learning processing program is recorded Expired - Fee Related JP3695208B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP07473599A JP3695208B2 (en) 1999-03-19 1999-03-19 Performance learning apparatus and recording medium on which performance learning processing program is recorded
EP00105470A EP1039430A3 (en) 1999-03-19 2000-03-15 Performance training apparatus, and recording mediums which prestore a performance training program
US09/526,335 US6245983B1 (en) 1999-03-19 2000-03-15 Performance training apparatus, and recording mediums which prestore a performance training program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP07473599A JP3695208B2 (en) 1999-03-19 1999-03-19 Performance learning apparatus and recording medium on which performance learning processing program is recorded

Publications (2)

Publication Number Publication Date
JP2000267662A JP2000267662A (en) 2000-09-29
JP3695208B2 true JP3695208B2 (en) 2005-09-14

Family

ID=13555801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07473599A Expired - Fee Related JP3695208B2 (en) 1999-03-19 1999-03-19 Performance learning apparatus and recording medium on which performance learning processing program is recorded

Country Status (1)

Country Link
JP (1) JP3695208B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4816756B2 (en) * 2009-04-10 2011-11-16 ヤマハ株式会社 Drum type electronic musical instrument

Also Published As

Publication number Publication date
JP2000267662A (en) 2000-09-29

Similar Documents

Publication Publication Date Title
JP3788085B2 (en) Performance learning apparatus and recording medium on which performance learning processing program is recorded
EP1039430A2 (en) Performance training apparatus, and recording mediums which prestore a performance training program
JP3695208B2 (en) Performance learning apparatus and recording medium on which performance learning processing program is recorded
JPS6259314B2 (en)
JPH10240241A (en) Automatic piano
JP2000276147A (en) Performance learning device and recording medium recording performance learning processing program
JP4232882B2 (en) Electronic musical instrument demo song playing apparatus and demo song playing method
JPS6318752B2 (en)
JP2669169B2 (en) Automatic performance device
JP2001100746A (en) Automatic performing device and recording medium recording program of automatic performance processing
JP2570045B2 (en) Electronic musical instrument
JP3640235B2 (en) Automatic accompaniment device and automatic accompaniment method
JP2689614B2 (en) Electronic musical instrument
JP2004069951A (en) Playing content display device
JP2639381B2 (en) Electronic musical instrument
JP2008058796A (en) Playing style deciding device and program
JP4214845B2 (en) Automatic arpeggio device and computer program applied to the device
JP2760301B2 (en) Electronic musical instrument
JP4412618B2 (en) Electronic musical instrument demo song playing apparatus and demo song playing method
JP5200368B2 (en) Arpeggio generating apparatus and program for realizing arpeggio generating method
JP4189606B2 (en) Musical sound control device and recording medium recording musical sound control processing program
JP2641612B2 (en) Phrase playing device and phrase playing method
JP3123521B2 (en) Electronic musical instrument
JP2991072B2 (en) Electronic musical instrument
JPH11231869A (en) Sound reproduction device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050322

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050512

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050620

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090708

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090708

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100708

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110708

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110708

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120708

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120708

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130708

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees