JP3687317B2 - 楽音発生装置 - Google Patents

楽音発生装置 Download PDF

Info

Publication number
JP3687317B2
JP3687317B2 JP35721897A JP35721897A JP3687317B2 JP 3687317 B2 JP3687317 B2 JP 3687317B2 JP 35721897 A JP35721897 A JP 35721897A JP 35721897 A JP35721897 A JP 35721897A JP 3687317 B2 JP3687317 B2 JP 3687317B2
Authority
JP
Japan
Prior art keywords
performance information
midi
output
data
midi data
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
JP35721897A
Other languages
English (en)
Other versions
JPH11184462A (ja
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 JP35721897A priority Critical patent/JP3687317B2/ja
Publication of JPH11184462A publication Critical patent/JPH11184462A/ja
Application granted granted Critical
Publication of JP3687317B2 publication Critical patent/JP3687317B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、外部機器と演奏情報の送受信を行える楽音発生装置に関する。
【0002】
【従来の技術】
現在では、MIDIは広く普及し、電子楽器等の楽音発生装置の殆どはMIDI対応、即ちMIDIデータを送受信する機能が搭載されるようになっている。そのため、他の楽音発生装置と有機的な結びつきを持たせることが容易に行えるようになっている。
【0003】
鍵盤やペダル、或いはピッチベンダー等といった演奏操作子、及び内部音源装置を備えた楽音発生装置では、一般的に、演奏操作子への操作に応じた楽音の発音に内部音源装置を用いる(ローカルオン)か、その内部音源装置を用いない(ローカルオフ)かを設定するローカル機能が搭載されている。
【0004】
ローカルオンが設定された場合、演奏操作子への操作に応じた楽音が内部音源装置から発音され、また、その楽音に対応するMIDIデータが、送信用のMIDI端子(以降、MIDI OUT端子と呼ぶ)から外部に送信される。これは、ペダルやホイール等の操作子が操作された場合、更には音響効果等が選択されたような場合も同様である。
【0005】
一方、ローカルオフに設定された場合では、演奏操作子が操作されても内部音源装置には楽音の発音が指示されず、MIDI OUT端子からMIDIデータだけが外部に送信される。これは、演奏操作子の種類に関わらず同じである。
【0006】
上記ローカルオン、及びローカルオフの何れが設定されている場合であっても、受信用のMIDI端子(以降、MIDI IN端子と呼ぶ)がMIDIデータを受信すると、そのMIDIデータを処理して内部音源装置に楽音を発音させるようになっている。
【0007】
【発明が解決しようとする課題】
上記のような従来の楽音発生装置では、搭載されたローカル機能によって、他の楽音発生装置に発生(発音)させる楽音のコントロール用としてのみ使用するか否か選択することができる。しかし、基本的にそれ以外のことはできず、他の楽音発生装置を接続した際の利用形態の幅が狭いという問題点があった。
【0008】
その問題点によって、従来の楽音発生装置では、以下のようなことを行うことができなかった。
例えば、自動伴奏との合奏を従来の楽音発生装置で行った場合には、内部音源装置での楽音の発音は自動伴奏によるものだけとして自身の演奏によっては楽音を発音させないようすることはできなかった。また、音響効果を付加させる場合には、内部音源装置で発音される楽音には付加させずに、他の楽音発生装置で発音される楽音だけに付加させるようなことはできなかった。
【0009】
本発明の課題は、他の楽音発生装置と接続した際に可能な利用形態の幅を広げられるようにすることにある。
【0010】
【課題を解決するための手段】
本発明の第1の態様の楽音発生装置は、演奏上のイベントの内容を表す演奏情報を発生する演奏情報発生手段と、演奏情報発生手段が発生させた演奏情報を外部に出力する演奏情報出力手段と、外部機器から出力された演奏情報を入力する演奏情報入力手段と、演奏情報に従って楽音を発生させる楽音発生手段と、演奏情報出力手段が出力した検出のための演奏情報と同一の演奏情報が、該演奏情報が出力されてから所定時間が経過するまでの監視期間内に演奏情報入力手段に入力された場合を第1の状態として検出する一方、それ以外の場合を第2の状態として検出する演奏情報検出手段と、演奏情報検出手段が第1の状態を検出した場合は、演奏情報発生手段が発生させた演奏情報を楽音発生手段に出力させないようにする一方、演奏情報検出手段が第2の状態を検出した場合は、演奏情報発生手段が発生させた演奏情報を楽音発生手段に出力させる制御手段と、を具備する。
【0011】
なお、上記の構成において、制御手段は、演奏情報検出手段が第1の状態を検出した場合は、演奏情報発生手段が発生させた演奏情報の楽音発生手段への出力、及び演奏情報出力手段による演奏情報の出力の何れか一方を行わないようにする、ことが望ましい。
【0014】
本発明の第1の態様のコンピュータ読み取り可能な記録媒体は、コンピュータを、演奏上のイベントの内容を表す演奏情報を発生する手段と、発生する手段が発生させた演奏情報を外部に出力する手段と、外部機器から出力された演奏情報を入力する手段と、演奏情報に従って楽音を発生させる手段と、出力する手段が出力した検出のための演奏情報と同一の演奏情報が、該演奏情報が出力されてから所定時間が経過するまでの監視期間内に入力する手段によって入力された場合を第1の状態として検出する一方、それ以外の場合を第2の状態として検出する手段と、検出する手段が第1の状態を検出した場合は、発生する手段が発生させた演奏情報を発生させる手段に処理させないようにする一方、検出する手段が第2の状態を検出した場合は、発生する手段が発生させた演奏情報を発生させる手段に処理させて楽音を発生させる制御を行う手段、として機能させるためのプログラムを記録している。
【0017】
本発明では、出力した検出のための演奏情報と同一の演奏情報が、その演奏情報が出力されてから所定時間が経過するまでの監視期間内に入力されるか否か検出し、その検出結果に基づいて、内部で発生させた演奏情報を内部音源である楽音発生手段に出力させるか否か制御する。それにより、外部に出力した演奏情報と同一の演奏情報を重ねて処理するようなことを確実に回避するのが可能となる。
【0020】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態につき詳細に説明する。
図1は、本実施の形態による電子楽器の構成図である。
【0021】
その電子楽器100は、図1に示すように、楽器100全体の制御を行うCPU101と、そのCPU101が実行するプログラム等を格納したプログラムROM102と、CPU101がワーク用に使用するワーク用RAM103と、CPU101の指示に従って楽音の波形データを生成する音源LSI104と、その音源LSI104から波形データを入力して楽音を発音する発音回路105と、ユーザが足で操作するペダル106と、多数の鍵を有する鍵盤107と、各種スイッチを有するスイッチ群108と、外部機器とMIDIデータの送受信を行うMIDIインターフェイス回路109と、を備えて構成される。
【0022】
以上の構成において、その動作を説明する。
不図示の電源がオンされると、CPU101はプログラムROM102に格納されたプログラムを読み出して実行することにより、楽器100全体の制御を開始する。その後は、ワーク用RAM103を作業用に使用しながら、ペダル106、鍵盤107、及びスイッチ群108の操作状態、更にはMIDIインターフェイス回路109によるMIDIデータの受信の有無に応じた制御を行う。
【0023】
上記スイッチ群108を構成するスイッチのなかには、ローカルオンオフ設定スイッチ群108a、MIDI OUTチャネル設定スイッチ群108b、ローカル機能有効/無効設定スイッチ108c〜108eがある。それらのスイッチ、或いはスイッチ群は、以下の内容の設定用である。
【0024】
なお、スイッチ群108を構成する他のスイッチとしては、楽音に付加する音響効果を指定するためのスイッチや、その深さを指定(調整)するためのスイッチ、自動演奏させる曲を指定するためのスイッチ、音色を指定するためのスイッチ等がある。
【0025】
ローカルオンオフ設定スイッチ群108aは、MIDIチャネル数に合わせて設けられた計16個のスイッチから構成されている。それらのスイッチは、MIDIチャネル毎にローカルオンか否か、即ちそのMIDIチャネルのデータは外部に送信させるだけか否かを設定するためのスイッチである。
【0026】
MIDI OUTチャネル設定スイッチ群108bは、上記ローカルオンオフ設定スイッチ群108aと同様に、計16個のスイッチから構成されている。それらのスイッチは、送信するMIDIデータのチャネルを設定するためのスイッチである。本実施の形態では、それらのなかで最後に操作されたスイッチに割り当てているチャネルをそのチャネルとして設定している。
【0027】
演奏内容は様々に分類することができる。ローカル機能有効/無効設定スイッチ108c〜108eは、演奏内容別に、ローカルオンオフ設定スイッチ群108aを介して行われた設定が有効か否かを設定するためのスイッチである。具体的には、ローカル機能有効/無効設定スイッチ108cは楽音の発音に直接的に関わるノートオン、ノートオフのノートメッセージ、スイッチ108dはコントロールチェンジに関するメッセージであるコントロールメッセージ、スイッチ108eはその他のメッセージが有効か否かの設定用である。それらのスイッチ108c〜108eを操作することで、ペダル106、鍵盤107、或いはスイッチ群108が操作されることに伴って音源LSI104に制御コマンド(例えばMIDIデータ)を送るか否かを、演奏内容別に指定することができるようにしている。
【0028】
CPU101は、スイッチ群108を走査することにより、各スイッチの操作状態を検出し、その検出結果に従って設定を行う。その設定は、後述するように、予め用意した変数(レジスタ)に、操作状態に応じて保持させる値を変更することで行う。そのようにして変数(レジスタ)に保持させた値を参照して各部の制御を行うことにより、各スイッチを介して指定された動作を実現させる。
【0029】
その一方では、MIDIインターフェイス回路109がMIDIデータを受信する度に、それの処理を行う。その処理は、例えば受信したMIDIデータをそのまま内部音源である音源LSI104に送ることで行う。
【0030】
音源LSI104は、例えばPCM録音された楽音の波形データを基にして、発音させる楽音の波形データを生成する。音響効果は、その生成した波形データを加工することで付加する。そのようにして生成した波形データが発音回路105に出力される。
【0031】
その発音回路105は、例えばD/Aコンバータ、アンプ、及びスピーカから構成される。音源LSI104が出力した波形データをアナログのオーディオ信号に変換し、それを増幅した後、スピーカに入力させる。そのようにして楽音を発音させる。
【0032】
上記MIDIインターフェイス回路109は、特には図示していないが、MIDI端子として、MIDI IN端子、MIDI OUT端子、及びMIDI THRU端子の3つを備えている。MIDI IN端子はMIDIデータの受信用、MIDI OUT端子はMIDIデータの送信用、MIDI THRU端子はMIDI IN端子で受信したMIDIデータをそのまま送信するための端子である。
【0033】
MIDIインターフェイス回路109は、例えば受信したMIDIデータ、及び送信すべきMIDIデータを一時格納しておくためのバッファを備えている。そのバッファには、受信したMIDIデータの格納用、送信させるMIDIデータの格納用といったように、処理別に領域が設けられている。CPU101は、MIDIデータの受信を、そのバッファ内の受信したMIDIデータ格納用の領域にアクセスすることで認識する。MIDIデータの送信は、そのバッファ内の送信させるMIDIデータの格納用の領域に、MIDIデータを書き込むことで、MIDIインターフェイス回路109に行わせる。なお、以降、そのバッファについてはMIDIデータバッファ、その内のMIDIデータ受信用の領域は受信用領域、MIDIデータ送信用の領域は送信用領域と呼ぶことにする。
【0034】
次に、上記CPU101の動作について、図2〜図12に示す各種の動作フローチャートを参照して詳細に説明する。それらの動作フローチャートは、CPU101が、プログラムROM102に格納されたプログラムを読み出して実行することで実現される。
【0035】
図2は、全体処理の動作フローチャートである。始めに、この図2を参照して、全体処理について詳細に説明する。
電子楽器100の特には図示しない電源がオンされ、プログラムROM102に格納されているプログラムの実行を開始したCPU101は、先ず、ステップ201でイニシャライズ処理を行う。そのイニシャライズ処理を実行することによって、音源システムLSI104等は予め定められた状態に設定される。また、外部機器との接続状態が検出され、その検出結果に応じた設定が行われる。その後、ステップ202に移行する。
【0036】
ステップ202では、スイッチ処理を行う。このスイッチ処理は、スイッチ群108を走査し、その走査結果に応じて各種の設定を行う処理である。これを実行することにより、電子楽器100への操作に応じて生成されたMIDIデータを送信するMIDIチャネル、音源LSI104に処理させるべき演奏情報(メッセージ)の種類等が特定される。
【0037】
ステップ202に続くステップ203では、鍵盤処理を行う。この鍵盤処理は、鍵盤107を走査し、その走査結果に従った楽音の発音/消音の指示を、その時点での設定内容に応じて行う処理である。それが終了すると、ステップ204に移行する。
【0038】
ステップ204では、ペダル処理を行う。そのペダル処理は、上記鍵盤処理と同様に、ペダル106を走査し、その走査結果に従ったダンパー(ホールド)のオン/オフの指示を、その時点での設定内容に応じて行う処理である。
【0039】
ステップ204に続くステップ205では、MIDIインターフェイス回路109が外部機器から受信したMIDIデータを処理するMIDIIN処理を実行する。その後、ステップ202に戻る。
【0040】
上記ステップ202〜205は処理ループを形成している。その処理ループを繰り返し実行することにより、電子楽器100に搭載された機能が実現され、スイッチ群108を介してユーザが行った設定に従って、MIDIデータの送信や音源LSI104への発音指示等が行われることになる。
【0041】
以降は、上記全体処理内で実行されるサブルーチン処理の内容について、詳細に説明する。
図3は、上記ステップ201として実行されるイニシャライズ処理の動作フローチャートである。次に、図3を参照して、そのイニシャライズ処理の内容について詳細に説明する。
【0042】
先ず、ステップ301では、ワーク用RAM103のクリアや、音源LSI104を所定の状態に設定するといった各種の初期化を行う。それが終了すると、ステップ302に移行して、外部機器との接続状態を検出するMIDI IN/OUTループ検出処理を実行する。その後、ステップ303に移行する。
【0043】
ステップ303では、ワーク用RAM103に保持させる変数のなかの幾つかに、予め定められた値を代入する。具体的には、電子楽器100がMIDIデータを送信するチャネル番号を管理するための変数MIDIOUTCHに1、音源LSI104に鍵盤107への操作に応じて生成した制御コマンド(MIDIデータ)を送るか否かを管理するための変数LOCALFUNCNOTEに1、ペダル106への操作に応じて生成した制御コマンド(MIDIデータ)を音源LSI104に送るか否かを管理するための変数LOCALFUNCCTRLに1、及び、スイッチ群108が備えた音色選択用スイッチ等への操作に応じて生成した制御コマンド(MIDIデータ)を音源LSI104に送るか否かを管理するための変数LOCALFUNCOTHERSに1を各々代入する。
【0044】
変数MIDIOUTCHに代入された1は、16あるMIDIチャネル中の1チャネルを表す値である(1チャネルはMIDIデータ上では0である)。その変数には、選択したMIDIチャネルの番号(MIDIデータでの値に1を加算した値)が代入される。変数LOCALFUNCNOTE、LOCALFUNCCTRL、及びLOCALFUNCOTHERSに各々代入された1は、音源LSI104に制御コマンド(MIDIデータ)を送出させる、即ち設定がローカルオン(有効)であることを表す値である。設定がローカルオフ(無効)のときの値は0である。なお、以降、変数についてはレジスタと呼ぶことにする。
【0045】
上記のようにして、電子楽器100の初期設定が行われる。そのときにステップ303で値が代入された各レジスタの値は、その後のユーザのスイッチ群108への操作、より具体的には、ローカルオンオフ設定スイッチ群108a、MIDI OUTチャネル設定スイッチ群108b、ローカル機能有効/無効設定スイッチ108c〜108eへの操作に応じて変更されることになる。
【0046】
次に、上記ステップ302として実行されるMIDI IN/OUTループ検出処理について、図4に示すその動作フローチャートを参照して詳細に説明する。
【0047】
他の楽音発生装置を接続させてシステムを構築させる場合、その接続によっては電子楽器100が出力したMIDIデータが帰還されてしまうことがある。送信したMIDIデータが帰還すると、同じ楽音が二重に発音されたり(このとき、その楽音の音量はそうでないときよりも大きくなる)、音響効果では所望の変調がかけられなくなったりすることから、演奏に悪影響を及ぼす恐れがある。MIDI IN/OUTループ検出処理は、そのような悪影響が発生するのを回避するために行われる処理である。
【0048】
なお、MIDIデータが帰還する接続例としては、自身の演奏内容を記録させるために、シーケンサに電子楽器100を接続した場合が挙げられる。その場合、記録された内容を確認するために、シーケンサが出力したMIDIデータを電子楽器100が入力するように接続されることが多い。そのシーケンサは、入力したMIDIデータをそのまま出力するようになっているものが殆どである。このため、そのように接続した場合、電子楽器100が出力したMIDIデータが帰還することになる。
【0049】
先ず、ステップ401では、レジスタMIDIOUTCHに1を代入する。そのレジスタMIDIOUTCHは、ここでは各MIDIチャネル毎にMIDIデータが帰還するか否かを検出していくために用いられる。
【0050】
ステップ401に続くステップ402では、MIDIデータが帰還するループ接続となっているか否かを検出するためのMIDIデータを生成し、それを外部に送出させる。そのMIDIデータとしては、外部機器が実際に動作しないように、本実施の形態では、コントロールチェンジメッセージであることを表す値b0(Hex)に、レジスタMIDIOUTCHの値から1を減算した値を加算してステータスバイト(1バイト目のデータ)を生成し、そのステータスバイトに、コントロールナンバーとしてダンパー(ホールド)を表す値40(Hex)、ダンパーオフを表す値00(Hex)を、各々2バイト目、3バイト目のデータバイトとして付加することで生成している。
【0051】
なお、そのようにして生成したMIDIデータの外部への出力は、CPU101が、そのMIDIデータをMIDIインターフェイス回路109のMIDIデータバッファ内の送信用領域に書き込むことで実現される。生成するMIDIデータとしては、当然のことながら、他のMIDIデータでも良い。
【0052】
MIDIデータを送信させた後は、ステップ403に移行し、タイマをクリアする。そのタイマは、例えばCPU101が備えたハードタイマが所定時間計時する度に値をインクリメントさせる変数(レジスタ)である。そのレジスタをクリア、即ち0を代入させると、ステップ404に移行する。なお、そのレジスタについては、以降、タイマ用レジスタと呼ぶことにする。
【0053】
ステップ404では、ステップ402で送信させたMIDIデータが受信されたか否か判定する。そのMIDIデータが、MIDIインターフェイス回路109のMIDIデータバッファ内の受信用領域に格納されていた場合、その判定はYESとなってステップ405に移行する。そうでない場合には、その判定はNOとなってステップ408に移行する。
【0054】
ステップ405では、MIDIデータが帰還するMIDIチャネルを管理するためのレジスタ(配列変数)LOCALMODEの変数MIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]に、MIDIデータの帰還が確認されたことから、ローカルオフを表す値であるを代入する。続くステップ406では、レジスタMIDIOUTCHの値をインクリメントする。その後、ステップ407に移行する。
【0055】
ステップ407では、インクリメント後のレジスタMIDIOUTCHの値が17か否か判定する。周知のように、MIDIにおけるチャネル数は16である。変数MIDIOUTCHの初期値は1である。そのため、全てのMIDIチャネルでチェックが終了した場合、その判定はYESとなって一連の処理を終了する。そうでない場合には、その判定はNOとなってステップ402に戻り、それ以降の処理を同様に繰り返す。
【0056】
一方、ステップ404の判定がNO、即ちMIDIデータを受信したと判定しなかった場合には、ステップ408に移行し、タイマ用レジスタの値をインクリメントする。そのインクリメントは、上記したように、ステップ403でその値をクリアしてから、或いは前回のインクリメントから所定時間経過するのを待って行う。それを行った後、ステップ409に移行する。
【0057】
ステップ409では、そのタイマ用レジスタの値が予め定めた値に達したか否か判定する。ステップ402でMIDIデータを送信してからそれの帰還を監視すると定めた期間(時間:以降、監視期間と呼ぶ)が経過した場合、その判定はYESとなってステップ410に移行する。そうでない場合には、ステップ404に戻る。
【0058】
電子楽器100のMIDI OUT端子とMIDI IN端子との間に接続された外部機器の数が多くなる程、MIDIデータが帰還するのに要する時間は長くなる。そのため、上記監視期間は、楽器100に複数の外部機器が接続されている場合も想定して定めている。その監視期間、MIDIデータの受信を監視することで、MIDIデータの帰還の有無を確実に検出することができる。
【0059】
ステップ410では、MIDIデータの帰還が確認されなかったことから、レジスタ(配列変数)LOCALMODEの変数MIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]に、ローカルオンを表す値であるを代入する。その後、ステップ406に移行する。
【0060】
このように、MIDI IN/OUTループ検出処理では、各MIDIチャネル毎にMIDIデータの帰還の有無を確認し、その結果をレジスタLOCALMODEに各々代入させている。それにより、意図してないMIDIデータの帰還により個別、更にはシステム全体の演奏に悪影響がでるのを回避させている。
【0061】
図5は、図2に示す全体処理内でステップ202として実行されるスイッチ処理の動作フローチャートである。次に、図5を参照して、その処理内容について詳細に説明する。
【0062】
先ず、ステップ501では、スイッチ群108の走査を行い、各スイッチの操作状態を検出する。続くステップ502以降は、その検出結果に応じて処理が行われる。
【0063】
そのステップ502では、走査を行った結果、スイッチ群108全体で操作状態に変化があったか否か判定する。ユーザがスイッチ群108を構成する何れのスイッチも操作していなかった場合、その判定はNOとなり、操作されたスイッチに応じた処理が不要であるとして一連の処理を終了する。そうでない場合には、即ちスイッチ群108を構成する何れかのスイッチをユーザが操作した場合には、その判定はYESとなってステップ503に移行する。
【0064】
ステップ503では、レジスタLOOPに1を代入する。そのレジスタLOOPは、各MIDIチャネルを対象とした設定を行うためのレジスタ(変数)である。代入された1は、1チャネルを表す値である。その後は、ステップ504に移行し、以後、操作されたスイッチの特定、その特定したスイッチに応じた設定を行う。
【0065】
ステップ504〜ステップ511は、各MIDIチャネルを対象とした設定を行うための処理ループを形成している。ここでは、レジスタLOOPの値をインクリメントしながら、その値に対応するローカルオンオフ設定スイッチ群108a中のスイッチ、及びMIDI OUTチャネル設定スイッチ群108b中のスイッチへの操作の有無を判定し、その判定結果に応じた設定が行われる。なお、ローカルオンオフ設定スイッチ群108a、及びMIDI OUTチャネル設定スイッチ群108b中のレジスタLOOPの値から特定されるスイッチについては、便宜的に、以降、例えばMIDI OUTチャネル設定スイッチLOOPといったように、LOOPを用いて表すことにする。
【0066】
先ず、ステップ504では、ローカルオンオフ設定スイッチ群108a中のレジスタLOOPの値から特定されるスイッチであるローカルオンオフ設定スイッチLOOPの入力があったか否か判定する。そのスイッチLOOPをユーザが操作した場合、その判定はYESとなってステップ505に移行する。そうでない場合には、その判定はNOとなってステップ508に移行する。
【0067】
ステップ505では、レジスタLOOPの値から特定されるレジスタLOCALMODEの要素LOCALMODE[LOOP]の値が1か否か判定する。その要素に図3に示すイニシャライズ処理の実行時、レジスタLOOPの値に対応するMIDIチャネルでMIDIデータの帰還が検出されなかった、或いはローカルオンオフ設定スイッチLOOPを操作(当然のことながら、イニシャライズ処理の実行後である)してローカルオン、即ち音源LSI104への楽音の発音に関わる制御コマンドを送出させるとユーザが指定(設定)した場合、その判定はYESとなってステップ506に移行する。そうでない場合には、その判定はNOとなってステップ507に移行する。
【0068】
ステップ506では、要素LOCALMODE[LOOP]に0を代入する。他方のステップ507では、その要素に1を代入する。そのステップ506、或いは507が終了した後は、ステップ508に移行する。
【0069】
ステップ508では、MIDI OUTチャネル設定スイッチ群108b中のレジスタLOOPの値から特定されるスイッチであるMIDI OUTチャネル設定スイッチLOOPの入力があったか否か判定する。そのスイッチLOOPをユーザが操作した場合、その判定はYESとなってステップ509に移行する。そうでない場合には、その判定はNOとなってステップ510に移行する。
【0070】
ステップ509では、レジスタMIDIOUTCHに、レジスタLOOPの値を代入する。それにより、レジスタLOOPの現在値に対応するMIDIチャネルが、MIDIデータを送信するチャネルとして設定される。その後は、ステップ510に移行して、レジスタLOOPの値をインクリメントする。
【0071】
ステップ510に続くステップ511では、インクリメント後のレジスタLOOPの値が17か否か判定する。ローカルオンオフ設定スイッチ群108a、及びMIDI OUTチャネル設定スイッチ群108bの全てのスイッチを対象に、各スイッチへの操作に応じた設定を終了した場合、その判定はYESとなってステップ512に移行する。そうでない場合には、その判定はNOとなってステップ504に戻る。
【0072】
上記のようにして、MIDIデータを出力させるチャネル、及びMIDIチャネル毎のローカルオン・オフが設定される。MIDIデータの出力チャネルを設定できるようにしたことで、自身の演奏をチャネル別に記録(シーケンサ等を用いて)させたり、他の楽音発生装置に行わせるといったことができるようになる。ローカルオン・オフをチャネル毎に設定できるようにしたことで、自動演奏(伴奏)と自身の演奏の何れかのみを、電子楽器100に実際に楽音を発音させる演奏として設定(選択)するといったことができるようになる。
【0073】
ステップ512〜515は、ユーザのローカル機能有効/無効設定スイッチ108cへの操作に応じた設定を行うための処理群である。
先ず、ステップ512では、ローカル機能有効/無効設定スイッチ108cの入力があったか否か判定する。そのスイッチ108cを操作して鍵盤107への操作に応じて生成されるメッセージ(ノートメッセージ)の送出先の変更をユーザが指示した場合、その判定はYESとなってステップ513に移行する。そうでない場合には、即ちユーザがスイッチ108cを操作していなかった場合には、その判定はNOとなってステップ516に移行する。
【0074】
ステップ513では、レジスタLOCALFUNCNOTEの値が1か否か判定する。それまでノートメッセージの送出先に音源LSI104が設定されていた場合、その判定はYESとなってステップ514に移行する。そうでない場合には、即ちそのメッセージの送出先に音源LSI104が設定されていない場合には、その判定はNOとなってステップ515に移行する。
【0075】
ステップ514では、レジスタLOCALFUNCNOTEに0を代入する。他方のステップ515では、レジスタLOCALFUNCNOTEに1を代入する。それらステップ514、或いは515が終了した後、ステップ516に移行する。
【0076】
ステップ516〜519は、ユーザのローカル機能有効/無効設定スイッチ108dへの操作に応じた設定を行うための処理群である。
先ず、ステップ516では、ローカル機能有効/無効設定スイッチ108dの入力があったか否か判定する。そのスイッチ108dを操作してペダル106への操作に応じて生成されるメッセージ(コントロールメッセージ)の送出先の変更をユーザが指示した場合、その判定はYESとなってステップ517に移行する。そうでない場合には、即ちユーザがスイッチ108dを操作していなかった場合には、その判定はNOとなってステップ520に移行する。
【0077】
ステップ517では、レジスタLOCALFUNCCTRLの値が1か否か判定する。それまでコントロールメッセージの送出先に音源LSI104が設定されていた場合、その判定はYESとなってステップ518に移行する。そうでない場合には、即ちそのメッセージの送出先に音源LSI104が設定されていない場合には、その判定はNOとなってステップ519に移行する。
【0078】
ステップ518では、レジスタLOCALFUNCCTRLに0を代入する。他方のステップ519では、レジスタLOCALFUNCCTRLに1を代入する。それらステップ518、或いは519が終了すると、ステップ520に移行する。
【0079】
ステップ520〜523は、ユーザのローカル機能有効/無効設定スイッチ108eへの操作に応じた設定を行うための処理群である。
先ず、ステップ520では、ローカル機能有効/無効設定スイッチ108eの入力があったか否か判定する。そのスイッチ108eをユーザが操作して、スイッチ群108中で楽音の発音に直接的に関わるスイッチ(音色等の選択(設定)用のスイッチ)等への操作に応じて生成されるその他のメッセージの送出先の変更を指示した場合、その判定はYESとなってステップ521に移行する。そうでない場合には、即ちユーザがスイッチ108eを操作していなかった場合には、その判定はNOとなってステップ524に移行する。
【0080】
ステップ521では、レジスタLOCALFUNCOTHERSの値が1か否か判定する。それまでその他のメッセージの送出先に音源LSI104が設定されていた場合、その判定はYESとなってステップ522に移行する。そうでない場合には、その判定はNOとなってステップ523に移行する。
【0081】
ステップ522では、レジスタLOCALFUNCOTHERSに0を代入する。他方のステップ523では、レジスタLOCALFUNCOTHERSに1を代入する。それらステップ522、或いは523が終了すると、ステップ524に移行する。
【0082】
そのステップ524では、上記した以外のスイッチへのユーザの操作に対応するための処理を行う。このとき、例えばユーザが音色選択用のスイッチを操作して楽音の音色の変更を指示していると、このステップ524では、そのスイッチへの操作に応じてMIDIデータ(その他のメッセージ)を生成し、それをレジスタLACALFUNCOTHERSの値から音源LSI104に送出するか否か判定し、その判定結果に従って生成したMIDIデータ(制御コマンド)を音源LSI104に送ることが行われる。一連の処理はその後に終了する。
【0083】
このようにして、スイッチ処理では、ローカルオンオフ設定スイッチ群108a、MIDI OUTチャネル設定スイッチ群108b、及びローカル機能有効/無効設定スイッチ108c〜108eへのユーザの操作に応じてMIDIデータを送るチャネル、音源LSI104に送出するメッセージ等を設定する。その設定に従って、図2に示す全体処理中のステップ203の鍵盤処理、及びステップ204のペダル処理は実行される。
【0084】
図6は、その鍵盤処理の動作フローチャートである。次に、この図6を参照してその処理内容を詳細に説明する。
先ず、ステップ601では、鍵盤107の走査を行い、各鍵の操作状態を検出する。続くステップ602以降は、その検出結果に応じて処理が行われる。
【0085】
そのステップ602では、走査を行った結果、鍵盤107のなかで操作状態が変化した鍵があるか否か、即ち新たに離鍵、或いは押鍵された鍵があるか否か判定する。そのような鍵が無かった場合、その判定はNOとなり、鍵の状態の変化に応じた処理が不要であるとして一連の処理を終了する。そうでない場合には、即ち鍵盤107のなかで新たに操作状態が変化した鍵があった場合には、その判定はYESとなってステップ603に移行する。なお、その操作状態の変化の検出は、例えば前回の走査結果と今回の走査結果とを比較することで行うことができる。
【0086】
鍵盤107の各鍵には、MIDIデータで用いられるノート番号(ノートナンバー)を割り当てている。そのため、ステップ603では、操作状態が変化、即ち新たに押鍵、或いは離鍵された鍵に割り当てたノート番号を、そのままレジスタNOTEに代入する。その後は、ステップ604に移行する。
【0087】
ステップ604では、押鍵によって鍵の操作状態が変化したか否か判定する。レジスタNOTEの値がノート番号に割り当てられた鍵をユーザが押鍵した場合、その判定はYESとなってステップ605に移行する。そうでない場合には、即ちその鍵をユーザが離鍵した場合には、その判定はNOとなってステップ609に移行する。
【0088】
ステップ605では、その鍵に割り当てられたノート番号の楽音の発音を指示するMIDIデータを外部に送信するノートオンMIDI OUT処理を実行する。その後は、ステップ606に移行する。
【0089】
ステップ606では、レジスタLOCALFUNCNOTEの値が1か否か判定する。ユーザが音源LSI104による楽音の発音を設定していた場合、その判定はYESとなってステップ607に移行する。そうでない場合には、その判定はNOとなって一連の処理を終了する。
【0090】
ステップ607では、レジスタLOCALMODEのレジスタMIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]の値が1か否か判定する。図3に示すイニシャライズ処理の実行時に、レジスタMIDIOUTCHの値で特定されるMIDIチャネルでMIDIデータの帰還が検出された、或いはそのレジスタの値に対応するローカルオンオフ設定スイッチ群108a中のスイッチをユーザが操作してその要素に0(ローカルオフを表す値である)を代入させていた場合、その判定はNOとなって一連の処理を終了する。そうでない場合には、その判定はYESとなってステップ608に移行する。
【0091】
ステップ608では、ユーザが押鍵した鍵に対応する楽音の発音を音源LSI104に指示するアサイン処理を実行する。それが終了した後、一連の処理を終了する。なお、上記アサイン処理は、例えばステップ605で生成されたMIDIデータを音源LSI104に送出することで行われる。
【0092】
上記イニシャライズ処理の実行時にMIDIデータの帰還を検出したことでその要素に0が代入されていた場合、ステップ607の判定はNOとなり、ステップ608のアサイン処理は実行されないことになる。しかし、ステップ605で送信したMIDIデータはMIDI IN端子で受信されるため、図12に示すMIDIIN処理の実行時に処理される。それにより、MIDIデータが帰還する場合には、同じ楽音を2重に発音させることは回避されることになる。
【0093】
一方、MIDIデータが帰還しない場合(これは、MIDI OUT端子が外部機器に接続されていない場合も含んでいる)では、たとえ楽音の発音に音源LSI104を設定していても(レジスタLOCALFUNCNOTEの値は1)、要素LOCALMODE[MIDIOUTCH]の値を0とすれば、ステップ608のアサイン処理は行われないため、音源LSI104による楽音の発音が回避されることになる。
【0094】
そのように設定すると、電子楽器100は、受信したMIDIデータに従って発音される楽音に音響効果を付加したり、その変調の深さを変更させたりといった用途に限定されることになる。言い換えれば、複数の楽音発生装置を接続して構築されたシステム内での電子楽器100の役割を特定させるようなことができる。そのため、システム内での電子楽器(楽音発生装置)100の用途(利用形態)の幅が広がり、新たな演奏の形態の実現に寄与することも可能である。
【0095】
一方、ユーザが鍵を離鍵してステップ604の判定がNOとなることで実行されるステップ609では、その鍵に割り当てられたノート番号の楽音の消音を指示するMIDIデータを外部に送信するノートオフMIDI OUT処理を実行する。その後は、ステップ610に移行する。
【0096】
ステップ610では、レジスタLOCALFUNCNOTEの値が1か否か判定する。ユーザが音源LSI104による楽音の発音を設定していた場合、その判定はYESとなってステップ611に移行する。そうでない場合には、その判定はNOとなって一連の処理を終了する。
【0097】
ステップ611では、レジスタLOCALMODEのレジスタMIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]の値が1か否か判定する。図3に示すイニシャライズ処理の実行時に、レジスタMIDIOUTCHの値で特定されるMIDIチャネルでMIDIデータの帰還が検出された、或いはそのレジスタの値に対応するローカルオンオフ設定スイッチ群108a中のスイッチをユーザが操作してその要素に0(ローカルオフを表す値である)を代入させていた場合、その判定はNOとなって一連の処理を終了する。そうでない場合には、その判定はYESとなってステップ612に移行する。
【0098】
ステップ612では、ユーザが押鍵した鍵に対応する楽音の消音を音源LSI104に指示する消音処理を実行する。それが終了した後、一連の処理を終了する。なお、上記消音処理は、例えばステップ609で生成されたMIDIデータを音源LSI104に送出することで行われる。
【0099】
次に、上記鍵盤処理内で実行されるサブルーチン処理について、図7及び図8を参照して詳細に説明する。
図7は、鍵盤処理内でステップ605として実行されるノートオンMIDI OUT処理の動作フローチャートである。始めに、図7を参照して、その処理内容について詳細に説明する。
【0100】
このノートオンMIDI OUT処理は、ノートオンメッセージのMIDIデータを送信する。そのMIDIデータは、周知のように、メッセージがノートオンであることを表すステータスバイトと、発音させる楽音の音高を表すノート番号を格納したデータバイトと、その楽音を発音させる音量を表すベロシティデータを格納したデータバイトとから構成される。ここでは、それらを順次生成・送信していくことが行われる。
【0101】
先ず、ステップ701では、ノートオンメッセージであることを表す90(Hex)に、MIDIデータを送信するチャネル番号を格納したレジスタMIDIOUTCHの値から1を減算した値を加算し、それを1バイト目のデータとして送信する。
【0102】
続くステップ702では、レジスタNOTEに格納されている値(押鍵された鍵のノート番号)を2バイト目のデータとして送信する。その後に移行するステップ703では、3バイト目のベロシティデータとして7f(Hex)を送信する。そのベロシティデータを送信した後、一連の処理を終了する。
【0103】
なお、上記のデータの送信は、CPU101が、MIDIインターフェイス回路109のMIDIデータバッファ内の送信用領域に送信させるデータを書き込むことで行われる。
【0104】
図8は、鍵盤処理内でステップ609として実行されるノートオフMIDI OUT処理の動作フローチャートである。次に、図8を参照して、その処理内容について詳細に説明する。
【0105】
このノートオフMIDI OUT処理は、ノートオフメッセージのMIDIデータを送信する。そのMIDIデータは、通常、メッセージがノートオフであることを表すステータスバイトと、消音させる楽音の音高を表すノート番号を格納したデータバイトと、ベロシティデータを格納したデータバイトとから構成される。ここでは、それらを順次生成・送信していくことが行われる。なお、周知のように、ステータスバイトがノートオンメッセージでベロシティデータが00(Hex)としても、そのMIDIデータはノートオフメッセージのMIDIデータと解釈される。
【0106】
先ず、ステップ801では、ノートオフメッセージであることを表す80(Hex)に、MIDIデータを送信するチャネル番号を格納したレジスタMIDIOUTCHの値から1を減算した値を加算し、それを1バイト目のデータとして送信する。
【0107】
続くステップ802では、レジスタNOTEに格納されている値(離鍵された鍵のノート番号)を2バイト目のデータとして送信する。その後に移行するステップ803では、3バイト目のベロシティデータとして00(Hex)を送信する。そのベロシティデータを送信した後、一連の処理を終了する。
【0108】
なお、上記のデータの送信は、CPU101が、MIDIインターフェイス回路109のMIDIデータバッファ内の送信用領域に送信させるデータを書き込むことで行われる。
【0109】
以上の内容のサブルーチン処理が、図6の鍵盤処理内で実行される。次に、図2に示す全体処理内でステップ204として実行されるペダル処理について、図9に示すその動作フローチャートを参照して詳細に説明する。
【0110】
本実施の形態では、ペダル106にダンパーペダルの機能を割り当てている。そのため、ここでは、ユーザのペダル106への操作に応じてダンパーのオン/オフ、即ち発音させている楽音をホールドさせるか否かを判定し、その判定結果に従って処理が行われる。
【0111】
先ず、ステップ901では、ペダル106の走査を行い、ペダル106の操作状態を検出する。続くステップ902以降は、その検出結果に応じて処理が行われる。
【0112】
そのステップ902では、走査を行った結果、ペダル106の操作状態が変化したか否か判定する。ユーザがペダル106を踏み込む、或いは離すといったことを行わなかった場合、その判定はNOとなり、ペダル106の状態の変化に応じた処理が不要であるとして一連の処理を終了する。そうでない場合には、即ちユーザがペダル106への操作を行った場合には、その判定はYESとなってステップ903に移行する。なお、その操作状態の変化の検出は、例えば前回の走査結果と今回の走査結果とを比較することで行うことができる。
【0113】
ステップ903では、ペダル106の操作状態の変化がユーザの踏み込みによる変化であるのか否か判定する。ユーザがペダル106を踏み込んだ場合、その判定はYESとなってステップ904に移行する。そうでない場合には、即ちユーザがペダル106を離した場合には、その判定はNOとなってステップ908に移行する。
【0114】
ステップ904では、ダンパーオンを指示するMIDIデータを外部に送信するダンパーオンMIDI OUT処理を実行する。その後は、ステップ905に移行する。
【0115】
ステップ905では、レジスタLOCALFUNCCTRLの値が1か否か判定する。ユーザがペダル106への操作を音源LSI104による楽音の発音に反映させることを設定していた場合、その判定はYESとなってステップ906に移行する。そうでない場合には、その判定はNOとなって一連の処理を終了する。
【0116】
ステップ906では、レジスタLOCALMODEのレジスタMIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]の値が1か否か判定する。図3に示すイニシャライズ処理の実行時に、レジスタMIDIOUTCHの値で特定されるMIDIチャネルでMIDIデータの帰還が検出された、或いはそのレジスタの値に対応するローカルオンオフ設定スイッチ群108a中のスイッチをユーザが操作してその要素に0を代入させていた場合、その判定はNOとなって一連の処理を終了する。そうでない場合には、その判定はYESとなってステップ907に移行する。
【0117】
ステップ907では、ユーザがペダル106を踏み込んだことから、発音中の楽音のホールドを音源LSI104に指示する。それが終了した後、一連の処理を終了する。なお、上記ホールドの指示は、例えばステップ904で生成されたMIDIデータを音源LSI104に送出することで行われる。
【0118】
上記イニシャライズ処理の実行時にMIDIデータの帰還を検出したことでその要素に0が代入されていた場合、ステップ906の判定はNOとなり、ステップ907のホールド指示は行われないことになる。しかし、ステップ904で送信したMIDIデータはMIDI IN端子で受信されるため、図12に示すMIDIIN処理の実行時に処理される。それにより、音源LSI104による楽音の発音にペダル106への操作が反映されることになる。
【0119】
コントロールの対象がダンパーであった場合、そのMIDIデータを音源LSI104が2度処理したとしても、実質的な影響は小さい。しかし、例えばメインボリュームのように、その影響が大きくでるものもある。そのメインボリュームでは、通常、つまみ等で設定されている元の音量にデータバイトの値を掛けるようになっていることから、所望の音量より大幅に大きくなるか、或いは大幅に小さくなるかの何れかになる。しかし、このようなことは、MIDIデータの帰還の有無を検出し、その検出結果を基に音源LSI104に指示を行うことで確実に回避されることになる。
【0120】
一方、MIDIデータが帰還しない場合(これは、MIDI OUT端子が外部機器に接続されていない場合も含んでいる)では、たとえ楽音の発音に音源LSI104を設定していても(レジスタLOCALFUNCCTRLの値は1)、要素LOCALMODE[MIDIOUTCH]の値を0とすれば、ステップ907のホールド指示は行われないため、音源LSI104による楽音の発音にペダル106の操作が反映されないことになる。
【0121】
そのように設定すると、電子楽器100は、発音させている楽音を受信したMIDIデータに従って変化させるだけとなる。言い換えれば、複数の楽音発生装置を接続して構築されたシステム内での電子楽器100の役割を特定させるようなことができる。そのため、システム内での電子楽器(楽音発生装置)100の用途(利用形態)の幅が広がり、新たな演奏の形態を実現に寄与することも可能である。
【0122】
一方、ユーザペダル106を離してステップ903の判定がNOとなることで実行されるステップ908では、ダンパーオフを指示するMIDIデータを外部に送信するダンパーオフMIDI OUT処理を実行する。その後は、ステップ909に移行する。
【0123】
ステップ909では、レジスタLOCALFUNCCTRLの値が1か否か判定する。ユーザがペダル106への操作を音源LSI104による楽音の発音に反映させることを設定、即ちローカルオンを設定していた場合、その判定はYESとなってステップ910に移行する。そうでない場合には、その判定はNOとなって一連の処理を終了する。
【0124】
ステップ910では、レジスタLOCALMODEのレジスタMIDIOUTCHの値で特定される要素LOCALMODE[MIDIOUTCH]の値が1か否か判定する。図3に示すイニシャライズ処理の実行時に、レジスタMIDIOUTCHの値で特定されるMIDIチャネルでMIDIデータの帰還が検出された、或いはそのレジスタの値に対応するローカルオンオフ設定スイッチ群108a中のスイッチをユーザが操作してその要素に0を代入させていた場合、その判定はNOとなって一連の処理を終了する。そうでない場合には、その判定はYESとなってステップ911に移行する。
【0125】
ステップ911では、ユーザがペダル106を離したことから、楽音のホールドの解除を音源LSI104に指示する。それが終了した後、一連の処理を終了する。なお、上記ホールドの解除の指示は、例えばステップ908で生成されたMIDIデータを音源LSI104に送出することで行われる。
【0126】
このように、ペダル106への操作の検出によって作成したMIDIデータ(制御コマンド)の音源LSI104への出力は、レジスタLOCALFUNCCTRLの値、及び要素LOCALMODE[MIDIOUTCH]の値に応じて行われる。音響効果の選択やその変調の深さ等の他のコントロールメッセージについては、特に図示しないが、図5に示すスイッチ処理中のステップ524で処理される。その処理内容は、図9と同様である。
【0127】
次に、上記ペダル処理内で実行されるサブルーチン処理について、図10及び図11を参照して詳細に説明する。
図10は、ペダル処理内でステップ904として実行されるダンパーオンMIDI OUT処理の動作フローチャートである。最初に、図10を参照して、その処理内容について詳細に説明する。
【0128】
このダンパーオンMIDI OUT処理では、コントロールメッセージ(コントロールチェンジメッセージ)のMIDIデータを送信する。そのMIDIデータは、周知のように、メッセージがコントロールメッセージであることを表すステータスバイトと、コントロールする対象を指定するコントロールナンバーを格納したデータバイトと、そのコントロールの内容を指定するデータバイトとから構成される。ここでは、それらを順次生成・送信していくことが行われる。
【0129】
先ず、ステップ1001では、コントロールメッセージであることを表すb0(Hex)に、MIDIデータを送信するチャネル番号を格納したレジスタMIDIOUTCHの値から1を減算した値を加算し、それを1バイト目のデータ(ステータスバイト)として送信する。
【0130】
続くステップ1002では、コントロールナンバーとして、コントロールの対象がダンパー(ホールド1)であることを表す40(Hex)を2バイト目のデータとして送信する。その後に移行するステップ1003では、コントロールの内容を表すデータとして7F(Hex:オンを指示する値である)を送信する。その3バイト目のデータを送信した後、一連の処理を終了する。
【0131】
なお、上記のデータの送信は、CPU101が、MIDIインターフェイス回路109のMIDIデータバッファ内の送信用領域に送信させるデータを書き込むことで行われる。
【0132】
図11は、ペダル処理内でステップ908として実行されるダンパーオフMIDI OUT処理の動作フローチャートである。次に、図11を参照して、その処理内容について詳細に説明する。このダンパーオフMIDI OUT処理においても、ダンパーのオフを指示するMIDIデータを1バイトずつ生成・送信していくことが行われる。
【0133】
先ず、ステップ1101では、コントロールメッセージであることを表すb0(Hex)に、MIDIデータを送信するチャネル番号を格納したレジスタMIDIOUTCHの値から1を減算した値を加算し、それを1バイト目のデータ(ステータスバイト)として送信する。
【0134】
続くステップ1102では、コントロールの対象がダンパー(ホールド1)であることを表す40(Hex)を2バイト目のデータとして送信する。その後に移行するステップ1103では、コントロールの内容を表すデータとして00(Hex;オフを指示する値である)を送信する。その3バイト目のデータを送信した後、一連の処理を終了する。
【0135】
なお、上記のデータの送信は、CPU101が、MIDIインターフェイス回路109のMIDIデータバッファ内の送信用領域に送信させるデータを書き込むことで行われる。
【0136】
以上の内容のサブルーチン処理が、図9のペダル処理内で実行される。次に、図2に示す全体処理内でステップ205として実行されるMIDIIN処理について、図12に示すその動作フローチャートを参照して詳細に説明する。
【0137】
MIDIインターフェイス回路109が受信したMIDIデータは、MIDIデータバッファ内の受信用領域に格納される。ここでは、その受信用領域に格納されているMIDIデータを読み出し、それに従った音源LSI104への指示が行われる。
【0138】
先ず、ステップ1201では、MIDIインターフェイス回路109のMIDIデータバッファ内の受信用領域から1メッセージ分のMIDIデータを読み出す。それに続くステップ1202以降は、その読み出したMIDIデータのメッセージの種類を判別し、その判別結果に従って処理することが行われる。
【0139】
なお、MIDIIN処理では、ステップ1201を実行することで得た1メッセージ分のMIDIデータだけを処理するようにしている。これは、通常、複数のMIDIデータを非常に短い間隔で受信することがないためである。
【0140】
ステップ1202では、ステップ1201で得たMIDIデータのチャンネルメッセージがノートオンメッセージか否か判定する。それの1バイト目のデータの上位4ビットで表される値が9(Hex)であった場合、その判定はYESとなってステップ1203に移行する。そうでない場合には、その判定はNOとなってステップ1204に移行する。
【0141】
ステップ1203では、そのMIDIデータが指示する楽音の発音を音源LSI104に指示する。その後、一連の処理を終了する。
他方のステップ1204では、ステップ1201で得たMIDIデータのチャンネルメッセージがノートオフメッセージか否か判定する。それの1バイト目のデータの上位4ビットで表される値が8(Hex)、或いはその4ビットで表される値が9で、且つ3バイト目のデータの値が00(Hex)であった場合、その判定はYESとなってステップ1205に移行する。そうでない場合には、その判定はNOとなってステップ1206に移行する。
【0142】
ステップ1205では、そのMIDIデータが指示する楽音の消音を音源LSI104に指示する。その後、一連の処理を終了する。なお、上記発音指示、及び消音指示は、例えば、ステップ1201で得たMIDIデータをそのまま音源LSI104に送ることで行われる。
【0143】
ステップ1206〜1209の処理群では、コントロールナンバーが40(Hex)、即ちコントロールの対象をダンパーとするMIDIデータの処理が行われる。
【0144】
先ず、ステップ1206では、ステップ1201で得たMIDIデータがダンパーオンを指示しているか否か判定する。それの1バイト目のデータの上位4ビットで表される値がb(Hex)、2バイト目の値が40(Hex)、及び3バイト目の値が7f(Hex)であった場合、その判定はYESとなってステップ1207に移行する。そうでない場合には、その判定はNOとなってステップ1208に移行する。
【0145】
ステップ1207では、そのMIDIデータに従って発音中の楽音のホールドを音源LSI104に指示する。その後、一連の処理を終了する。
ステップ1208では、ステップ1201で得たMIDIデータがダンパーオフを指示しているか否か判定する。それの1バイト目のデータの上位4ビットで表される値がb(Hex)、2バイト目の値が40(Hex)、及び3バイト目の値が00(Hex)であった場合、その判定はYESとなってステップ1209に移行する。そうでない場合には、その判定はNOとなってステップ1210に移行する。
【0146】
ステップ1209では、そのMIDIデータに従って楽音のホールドの解除を音源LSI104に指示する。その後、一連の処理を終了する。なお、上記ホールド指示、及びホールドの解除指示は、例えば、ステップ1201で得たMIDIデータをそのまま音源LSI104に送ることで行われる。
【0147】
ステップ1210では、その他のメッセージ、具体的には、ノートオン、ノートオフ、ダンパーオン、及びダンパーオフ以外のチャンネルメッセージの受信に対処する処理を行う。このステップ1210を実行することで、楽音に付加する音響効果や変調の深さ等の変更や設定、更には音色の変更等が音源LSI104に対して指示される。当然のことながら、ステップ1201でMIDIデータが得られなかった場合には、ここでは何も行わない。このような処理を実行した後、一連の処理を終了する。
【0148】
なお、本実施の形態では、MIDIデータの帰還の有無を電源がオンとなった直後に行うイニシャライズ処理(図2中のステップ201)を実行することで検出しているが、その検出は必ずしもイニシャライズ処理で行わなくて良い。例えば、ステップ205のMIDIIN処理でMIDIデータの帰還の有無を随時検出し、帰還検出したMIDIデータを処理しないようにしても良い。
【0149】
また、MIDIデータの帰還を検出した場合、本実施の形態では、内部音源(音源LSI104)に制御コマンド(MIDIデータ)の出力は行わないようにしているが、内部音源には制御コマンドを出力して、その換わりに外部にはMIDIデータを出力しないようにしても良い。
【0150】
演奏内容の分類(ローカルオン・オフ用である)としては、本実施の形態ではノートメッセージ、コントロールメッセージ、及びその他のメッセージの3つに演奏内容を分類しているが、演奏内容の分類はこれに限定されるものではない。その分類は、より細かくても大まかであっても良い。例えばコントロールナンバーで更に分類するといったように、具体的にはダンパー、モジュレーション・デプス、ポルタメント・タイムといった項目毎にローカルオン・オフを設定できるようにしても良い。これらのように、様々な変形が可能である。
【0151】
本発明の適用方法としては、本発明を適用した楽音発生装置を新商品として製品化するだけに限定されない。既存の製品であっても、上記のような処理を実現するためのプログラムを新たにロードすることでも本発明を適用させることができる。そのロードは、図1に示す構成ではプログラムROM102の交換等によって行うことができる。
【0152】
また、本実施の形態は、電子楽器に本発明を適用したものであるが、本発明が適用できるのは電子楽器等の楽音発生装置に限定されるものではない。例えばパーソナルコンピュータ(以降、パソコンと略す)にも本発明を適用させることができる。本発明の適用を実現させるためのプログラムは、フロッピーディスクやCD−ROM、或いはROMカードといった記録媒体に記録して配布しても良く、或いは何らかの通信手段を介して配信するようにしても良い。
【0153】
【発明の効果】
以上説明したように本発明は、出力した検出のための演奏情報と同一の演奏情報が、その演奏情報が出力されてから所定時間が経過するまでの監視期間内に入力されるか否か検出し、その検出結果に基づいて、内部で発生させた演奏情報を内部音源である楽音発生手段に出力させるか否か制御する。そのため、外部に出力した演奏情報と同一の演奏情報を重ねて(極めて短い間で)処理するようなことを確実に回避することができる。
【0156】
上記発明では、他の楽音発生装置と接続させてシステムが構築されている場合、接続の対象や接続方法等によって発生する演奏上の不具合の回避行えるようになる。それにより、結果として、他の楽音発生装置と接続した際に可能な利用形態の幅を広げられるようになる。
【図面の簡単な説明】
【図1】本実施の形態による演奏電子楽器の構成図である。
【図2】全体処理の動作フローチャートである。
【図3】イニシャライズ処理の動作フローチャートである。
【図4】MIDI IN/OUTループ検出処理の動作フローチャートである。
【図5】スイッチ処理の動作フローチャートである。
【図6】鍵盤処理の動作フローチャートである。
【図7】ノートオンMIDI OUT処理の動作フローチャートである。
【図8】ノートオフMIDI OUT処理の動作フローチャートである。
【図9】ペダル処理の動作フローチャートである。
【図10】ダンパーオンMIDI OUT処理の動作フローチャートである。
【図11】ダンパーオフMIDI OUT処理の動作フローチャートである。
【図12】MIDIIN処理の動作フローチャートである。
【符号の説明】
101 CPU
102 プログラムROM
103 ワーク用RAM
104 音源LSI
105 発音回路
106 ペダル
107 鍵盤
108 スイッチ群
108a ローカルオンオフ設定スイッチ群
108b MIDI OUTチャネル設定スイッチ群
108c〜108e ローカル機能有効/無効設定スイッチ

Claims (3)

  1. 演奏上のイベントの内容を表す演奏情報を発生する演奏情報発生手段と、
    前記演奏情報発生手段が発生させた演奏情報を外部に出力する演奏情報出力手段と、
    外部機器から出力された演奏情報を入力する演奏情報入力手段と、
    前記演奏情報に従って楽音を発生させる楽音発生手段と、
    前記演奏情報出力手段が出力した検出のための演奏情報と同一の演奏情報が、該演奏情報が出力されてから所定時間が経過するまでの監視期間内に前記演奏情報入力手段に入力された場合を第1の状態として検出する一方、それ以外の場合を第2の状態として検出する演奏情報検出手段と、
    前記演奏情報検出手段が前記第1の状態を検出した場合は、前記演奏情報発生手段が発生させた演奏情報を前記楽音発生手段に出力させないようにする一方、前記演奏情報検出手段が前記第2の状態を検出した場合は、前記演奏情報発生手段が発生させた演奏情報を前記楽音発生手段に出力させる制御手段と、
    を具備したことを特徴とする楽音発生装置。
  2. 前記制御手段は、前記演奏情報検出手段が前記第1の状態を検出した場合は、前記演奏情報発生手段が発生させた演奏情報の前記楽音発生手段への出力、及び前記演奏情報出力手段による前記演奏情報の出力の何れか一方を行わないようにする
    ことを特徴とする請求項1記載の楽音発生装置。
  3. コンピュータ読み取り可能な記録媒体であって、
    コンピュータを、
    演奏上のイベントの内容を表す演奏情報を発生する手段と、
    前記発生する手段が発生させた演奏情報を外部に出力する手段と、
    外部機器から出力された演奏情報を入力する手段と、
    前記演奏情報に従って楽音を発生させる手段と、
    前記出力する手段が出力した検出のための演奏情報と同一の演奏情報が、該演奏情報が出力されてから所定時間が経過するまでの監視期間内に前記入力する手段によって入力された場合を第1の状態として検出する一方、それ以外の場合を第2の状態として検出する手段と、
    前記検出する手段が前記第1の状態を検出した場合は、前記発生する手段が発生させた演奏情報を前記発生させる手段に処理させないようにする一方、前記検出する手段が前記第2の状態を検出した場合は、前記発生する手段が発生させた演奏情報を前記発生させる手段に処理させて楽音を発生させる制御を行う手段、
    として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP35721897A 1997-12-25 1997-12-25 楽音発生装置 Expired - Fee Related JP3687317B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35721897A JP3687317B2 (ja) 1997-12-25 1997-12-25 楽音発生装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35721897A JP3687317B2 (ja) 1997-12-25 1997-12-25 楽音発生装置

Publications (2)

Publication Number Publication Date
JPH11184462A JPH11184462A (ja) 1999-07-09
JP3687317B2 true JP3687317B2 (ja) 2005-08-24

Family

ID=18452990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35721897A Expired - Fee Related JP3687317B2 (ja) 1997-12-25 1997-12-25 楽音発生装置

Country Status (1)

Country Link
JP (1) JP3687317B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4973215B2 (ja) * 2007-02-01 2012-07-11 ヤマハ株式会社 演奏装置及びプログラム

Also Published As

Publication number Publication date
JPH11184462A (ja) 1999-07-09

Similar Documents

Publication Publication Date Title
JP2018159869A (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP6443772B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
US8373055B2 (en) Apparatus, method and computer program for switching musical tone output
JP3707300B2 (ja) 楽音発生装置用拡張ボード
JPH06259065A (ja) 電子楽器
JP2629891B2 (ja) 楽音信号発生装置
JP3687317B2 (ja) 楽音発生装置
JP3223756B2 (ja) ミュージックシステムおよび電子楽器
JP2007093679A (ja) 音源設定装置及び音源設定プログラム
JP4259533B2 (ja) 演奏システム、このシステムに用いるコントローラ、およびプログラム
US5319152A (en) Chord information output apparatus and automatic accompaniment apparatus
JP3780695B2 (ja) 効果付加装置、及び音響効果設定方法
JPH075878A (ja) 自動伴奏装置
JP3141789B2 (ja) コンピュータソフトウェアを用いた音源システム
JP3501254B2 (ja) 電子楽器
JP4121080B2 (ja) 電子鍵盤楽器
JPH11184465A (ja) 演奏装置
JP3442232B2 (ja) 電子楽器
JPH0566773A (ja) 電子楽器
JP3476863B2 (ja) 電子楽器の自動伴奏装置
JP2699652B2 (ja) 楽音信号発生装置
JPH0934455A (ja) 電子楽器
JPH0627946A (ja) 電子鍵盤楽器
JPH07146681A (ja) 電子楽器
JP2616533B2 (ja) 電子楽器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050311

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050530

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees