JP2001042869A - イベント検出装置、データ処理方法、及び記録媒体 - Google Patents

イベント検出装置、データ処理方法、及び記録媒体

Info

Publication number
JP2001042869A
JP2001042869A JP11220799A JP22079999A JP2001042869A JP 2001042869 A JP2001042869 A JP 2001042869A JP 11220799 A JP11220799 A JP 11220799A JP 22079999 A JP22079999 A JP 22079999A JP 2001042869 A JP2001042869 A JP 2001042869A
Authority
JP
Japan
Prior art keywords
event
data
processing
event information
predetermined
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.)
Withdrawn
Application number
JP11220799A
Other languages
English (en)
Inventor
Yoshinori Yashiro
義徳 矢代
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 JP11220799A priority Critical patent/JP2001042869A/ja
Publication of JP2001042869A publication Critical patent/JP2001042869A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】 イベント情報(データ)の処理にかかる不必
要な負荷の増大を抑えられるようにする。 【解決手段】 CPU101は、鍵盤107、エンコー
ダ109、スイッチ群110、及びスライダー群111
を所定の時間間隔が経過する度にスキャンしてそれらで
発生したイベントを検出し、その内容を表すイベント情
報をRAM104に格納する。RAM104に格納した
未処理のイベント情報のなかに同じ操作子のイベント情
報が複数、有る場合、そのなかの一つだけを残して他は
削除する。それにより、イベント情報の処理時に、同じ
操作子のイベント情報を繰り返し行うのを回避する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、各種操作子や受信
装置等の入力手段で発生したデータ入力上のイベントに
応じた処理を行うための技術に関する。
【0002】
【従来の技術】例えば電子キーボードでは、データ入力
上の手段として、一般的に、キーボードや各種スイッ
チ、及びMIDI端子等が備えられている。それらの手
段で発生したイベントを検出して処理することで、ユー
ザの演奏操作に応じて楽音を発音させるようになってい
る。その電子キーボードなどに搭載されるイベント検出
装置は、データ入力上の手段で発生したイベントを検出
してそれに応じた処理を行わせるための装置である。
【0003】スイッチ等の操作子に対して行われた操作
は、一般に、スキャン(走査)により検出するようにな
っている。イベント検出装置の多くは、そのスキャンを
随時、行うことで、各操作子の状態変化を監視して検出
し、その検出結果を基に発生したイベントを判定して、
イベントの内容を表す情報(イベント情報)を保持させ
るようになっている。その保持されたイベント情報を処
理することで、電子キーボードはユーザの操作に応じて
動作することになる。なお、当然のことながら、そのイ
ベント情報が示す内容はイベントの検出対象によって異
なるのが普通である。
【0004】
【発明が解決しようとする課題】従来のイベント検出装
置は、単に操作子等の状態変化を基にイベントの発生を
検出してイベント情報をメモリに保持させていた。この
ため、イベント情報を保持させるタイミングと、それを
処理するタイミングとの間の関係によって、操作子の種
類が同じであるといった内容の一部が少なくとも一致す
るイベント情報を複数、同時に処理させることがあっ
た。
【0005】例えば操作子の種類が同じのイベント情報
が複数、保持されていれば、それはその操作子に対して
極めて短い時間内に複数回、イベントが発生したと検出
すべき操作が行われたことを意味する。しかし、そのよ
うに操作しなければならない必要性は無いのが普通であ
る。このため、内容の一部が一致するイベント情報が複
数、保持されているのは、例えば誤って一瞬、触れてし
まったといったように、ユーザが意図していない形でそ
うなった可能性が非常に高いと考えられる。そうであれ
ば、従来のように複数のイベント情報を全て処理させる
ことは、その処理にかかる全体的な負荷を不必要に増大
させてしまうことがあるということを意味する。このよ
うなことから、その負荷の不必要な増大を抑えることが
望まれていた。
【0006】電子キーボードは、普通、音源(装置)が
搭載されているか、或いはそれと接続できるようになっ
ている。その音源装置は、普通、時分割処理で楽音の波
形データを所定の時間(例えばサンプリング時間)が経
過する毎に生成するようになっており、発音可能な楽音
数が限られている。その負荷も重い。このため、内容の
一部が一致するイベント情報が音源の制御に関わるもの
であった場合には、実際に発音される楽音数を少なくさ
せたり、サンプリング時間内で生成させるべき波形デー
タを全て生成できない、といったことを生じさせてしま
う可能性がある。全体的な負荷を増大させることで、そ
のような不具合を生じさせる可能性がある。このような
ことからも、イベント情報の処理にかかる全体的な負荷
の不必要な増大を抑えることが望まれていた。
【0007】本発明の課題は、イベント情報(データ)
の処理にかかる不必要な負荷の増大を抑えられるように
することにある。
【0008】
【課題を解決するための手段】本発明の第1の態様のイ
ベント検出装置は、入力手段を備えた装置に搭載され、
該入力手段で発生したイベントを予め定められたタイミ
ングで検出することを前提とし、入力手段で発生したイ
ベントをタイミングで検出して、該イベントの内容を表
すイベント情報を記憶手段に記憶させるイベント検出手
段と、記憶手段に所定の内容が一致する未処理のイベン
ト情報が複数、記憶されているとき、該所定の内容が一
致する複数のイベント情報のなかから一つだけを選択し
て処理させるイベント選択手段と、を具備する。
【0009】本発明の第2の態様のイベント検出装置
は、音源装置を制御する装置に搭載され、該装置の入力
手段で発生したイベントを予め定められたタイミングで
検出することを前提とし、入力手段で発生したイベント
をタイミングで検出して、該イベントの内容を表すイベ
ント情報を記憶手段に記憶させるイベント検出手段と、
記憶手段に所定の内容が一致し、且つ音源装置を制御す
る結果とならない未処理のイベント情報が複数、記憶さ
れているとき、該所定の内容が一致する複数のイベント
情報のなかから一つだけを選択して処理させるイベント
選択手段と、を具備する。
【0010】なお、上記の各態様の構成において、イベ
ント選択手段は、イベント情報を処理するうえでの区分
毎に、所定の内容が一致する複数のイベント情報のなか
から一つだけを選択する、ことが望ましい。
【0011】本発明の第3の態様のイベント検出装置
は、上記第1、或いは第2の態様の構成に加えて、選択
を行う対象とするイベント情報を処理するうえでの区分
を指定するための指定手段を更に具備し、イベント選択
手段は、指定手段により指定された区分で所定の内容が
一致する複数のイベント情報のなかから一つだけを選択
する。
【0012】本発明の第1の態様のデータ処理方法は、
予め定められたタイミングとなる度に、該タイミングで
処理すべきデータを処理させるために用いられることが
前提であり、タイミング別に、処理すべきデータのなか
で所定の内容が一致しているデータを検出し、所定の内
容が一致しているデータを複数、検出した場合に、該複
数のデータのなかから一つだけを選択して処理させる。
【0013】本発明の第2の態様のデータ処理方法は、
処理タイミングが指定されたデータを処理させるために
用いられることを前提とし、処理タイミングが所定の範
囲内で一致するデータのなかで所定の内容が一致してい
るデータを検出し、所定の内容が一致しているデータを
複数、検出した場合に、該複数のデータのなかから一つ
だけを選択して処理させる。
【0014】本発明の記録媒体は、予め定められたタイ
ミング別に、処理すべきデータのなかで所定の内容が一
致しているデータを検出する手段と、検出する手段によ
り所定の内容が一致しているデータが複数、検出された
場合に、該複数のデータのなかから一つだけを選択して
処理させる手段と、を実現させるプログラムを記録して
いる。
【0015】スイッチやエンコーダ等の操作子、或いは
受信器(送受信器や他の装置(外部装置、或いは内部に
搭載された記録装置等)との間に介在するインターフェ
ースなどを含む)で発生したイベントの発生タイミング
は、それによって得られるイベント情報(データ)の処
理すべきタイミングを指定する。本発明では、その処理
タイミングが所定の範囲内で一致するイベント情報(デ
ータ)のなかで所定の内容が一致しているイベント情報
(データ)が複数、存在している場合に、それらのなか
の一つだけを選択して処理させる。
【0016】例えば、操作子では、特殊な用途に使用し
ていないのであれば、極めて短い時間内に複数、操作し
なければならない必要性は普通は無い。このことから、
複数のイベント情報のなかから一つを選択して処理させ
ても、その選択によって不具合が生じる可能性は低い。
その一方で、イベント情報の処理にかかる全体の負荷は
軽減することになる。
【0017】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。 <第1の実施の形態>図1は、第1の実施の形態による
イベント検出装置を搭載した電子楽器の回路構成図であ
る。
【0018】その電子楽器は、図1に示すように、楽器
全体の制御を行うCPU101と、そのCPU101の
指示に従って時間を計時するタイマ(TIMER)10
2と、プログラムや各種制御用データ、及び各種演奏デ
ータ(シーケンスデータ)等を格納したROM103
と、CPU101がワーク用に使用するRAM104
と、各種情報を表示するLCD(液晶表示器)105
と、複数のLEDからなるLED群106と、鍵盤10
7と、CPU101の指示に従って楽音のオーディオ信
号を生成する音源108と、ユーザがテンポを変更する
ためのエンコーダ109と、複数のスイッチからなるス
イッチ群110と、複数(ここでは3つ)のスライダー
からなるスライダー群111と、を備えて構成されてい
る。
【0019】図2は、各種操作子、及びLCDの配置を
説明する図である。図2に示すように、LCD105を
囲むようにして、スイッチ群110を構成するスイッチ
201〜210及びスイッチ対211〜213、スライ
ダー群111を構成するスライダー214〜216、L
ED群106を構成する複数のLED217及び21
8、及び、エンコーダ109が配設されている。それら
の操作子には、以下のような機能が割り当てられてい
る。
【0020】スイッチ201には、自動演奏(自動伴奏
を含む)をストップさせる機能が割り当てられ、スイッ
チ202にはそれをスタートさせる機能が割り当てられ
ている。スイッチ203には、その自動演奏を一時的に
中断させる機能が割り当てられている。
【0021】スイッチ204及び205には、自動演奏
させる曲、或いはリズムの選択を有効にさせる機能が割
り当てられている。例えばそれらの選択が何れも有効に
なっていない状態でスイッチ204を操作すると、それ
が再び操作されるまでの間、曲の選択が有効(行える状
態)となる。これは、ステップ205においても同様で
ある。
【0022】スイッチ211a及び211bからなるス
イッチ対211、及びスライダー214は、曲、及びリ
ズムのうちの一方の選択が有効になっている間、曲、或
いはリズムの選択を行うために用いられる。その選択
は、番号を指定することで行うようになっている。設定
されている番号は、それらのうちの何れかを操作するこ
とで変更される。
【0023】スイッチ206には、モードを切り換える
機能が割り当てられている。現在、設定中のモードは、
そのスイッチ206を操作する度に、予め定められた順
序でサイクリックに変更される。
【0024】スイッチ207には音色の選択を有効にさ
せる機能、スイッチ208には演奏上のチャンネルの選
択を有効にさせる機能、スイッチ209にはフィルター
特性の選択を有効にさせる機能、スイッチ210には音
響効果の選択を有効にさせる機能がそれぞれ割り当てら
れている。それらスイッチ207〜210によって有効
となる選択が何れも有効になっていない状態で、それら
のうちの一つを操作すると、その操作を行ったスイッチ
に対応する選択が有効(行える状態)となり、そのスイ
ッチを再び操作すると、その選択が行えない状態とな
る。
【0025】スイッチ213a及び213bからなるス
イッチ対213、及びスライダー216は、スイッチ2
07〜210によって何らかの選択が有効(行える状
態)となっている間、その選択を行うために用いられ
る。その選択の多くは、番号を指定することで行うよう
になっている。
【0026】スイッチ212a及び212bからなるス
イッチ対212、及びスライダー215は、音量調整を
行うために用いられる。発音される楽音の音量は、それ
らのうちの何れかを操作することで変更される。
【0027】以上の構成において、その動作を説明す
る。CPU101は、電源がオンされると、ROM10
3に格納されているプログラムを読み出して実行するこ
とにより、楽器全体の制御を開始する。その制御は、演
奏者(ユーザ)の鍵盤107やエンコーダ109、スイ
ッチ群110を構成する各種スイッチ、或いはスライダ
ー群111を構成する各スライダー214〜216の各
種操作子(入力用デバイス)への操作に応じて行う。
【0028】CPU101は、鍵盤107やスイッチ群
110に対して演奏者が行った操作は、それらを随時ス
キャン(走査)し、そのスキャン結果を解析することで
認識する。例えば今回のスキャン結果と前回のそれとを
対比して、状態が変化した鍵やスイッチ、その操作内容
を特定する。エンコーダ109の角度(以降、操作角度
と呼ぶ)は、特には図示しないそのコントローラが検出
する。CPU101は、そのコントローラから操作角度
を示す情報を随時、受け取ることで、演奏者がエンコー
ダ109に対する操作の有無、及び操作内容(操作角度
の変更量)を認識する。スライダー群111を構成する
スライダー214〜216は例えば可変抵抗器である。
このため、それらへの操作の有無、及びその操作内容
は、各スライダー毎に、そのつまみの位置に応じて変化
する電圧値を随時、読み取り、それを前回に読み取った
値と対比することで認識する。
【0029】鍵盤107やエンコーダ109、スイッチ
群110を構成する各種スイッチ、及びスライダー群1
11を構成する各スライダー214〜216の各種操作
子(デバイス)は、演奏者が何らかのデータを入力する
ためのデバイスである。それら各種操作子(デバイス)
には、図3に示すように、互いに異なる識別用の番号
(以降、デバイス番号と呼ぶ)を割り当てている。各種
操作子のなかで操作されたと検出(認識)した操作子が
存在していた場合、CPU101は、その操作子に割り
当てたデバイス番号、その操作内容を表す操作情報、及
びその操作を検出したタイミングを表す時間情報を、そ
の操作子で発生したイベントの内容を表す情報(イベン
ト情報)としてRAM104に一時的に格納する。その
後、RAM104に格納したイベント情報を読み出して
処理する。それにより、各種操作子への演奏者の操作に
応じて、LCD105、LED群106、或いは音源1
08を制御する。
【0030】本実施の形態では、デバイス番号、操作情
報、及び時間情報を格納するための領域をそれぞれRA
M104に確保してそれらを対応する領域に格納するよ
うにしている。それらの領域については、以降、入力イ
ベントバッファ、入力値バッファ、及びイベント発生時
刻バッファとそれぞれ呼ぶことにする。
【0031】CPU101は、各種操作子に対する操作
の検出とイベント情報の処理とを異なる時間間隔で行う
ようになっている。操作の検出はイベント情報を処理す
る時間間隔よりも短い時間間隔で行うようになってい
る。それにより、操作の検出を複数回、行った後、イベ
ント情報を処理することがあることから、同じデバイス
番号のイベント情報が複数、RAM104に格納されて
いることも有り得ることになる。このため、本実施の形
態では、同じデバイス番号のイベント情報が複数、存在
していた場合、それらのなかの一つだけを選択して処理
するようにしている。
【0032】同じデバイス番号のイベント情報が複数、
存在しているということは、ハードウェア上における何
らかの不具合の発生を抜きにすれば、その番号が割り当
てられた操作子に対して演奏者がイベントとして検出さ
れるような操作を極めて短い時間内に複数回、行ったこ
とを意味する。その複数回の操作は、例えば鍵盤107
では、或る鍵を押鍵して直ちに離鍵するような操作であ
る。そのような操作は、誤って意図していない鍵を押鍵
したようなときにしか行われないのが普通である。
【0033】鍵盤107でのそのような操作に応じて音
源108を制御しても、1サンプリング時間内で楽音の
発音開始とその消音が行われることから、楽音は殆ど発
音されないことになる。殆ど発音されない楽音に発音チ
ャンネルを割り当てることとなる。
【0034】しかし、本実施の形態では、そのような操
作が行われることで複数のイベント情報が存在していて
も、それらのなかの一つだけを選択して処理するため、
殆ど発音されない楽音に発音チャンネルを割り当てるの
を回避することができる。それにより、その処理にかか
る負荷が低減するだけでなく、発音可能な楽音数が不必
要に少なくなるのを回避させられるという効果も得られ
る。
【0035】次に、上記CPU101の制御動作につい
て、図4〜図12に示す各種動作フローチャートを参照
して詳細に説明する。図4は、全体処理の動作フローチ
ャートである。始めに、その図4を参照して、全体処理
について詳細に説明する。なお、この全体処理は、CP
U101が、ROM103に格納されているプログラム
を読み出して実行することで実現される。
【0036】先ず、ステップ401では、電子楽器を予
め定めた初期状態に設定するイニシャライズを行う。ス
イッチ群110や鍵盤107等の各種操作子で発生した
イベントの検出や自動演奏の進行等は、割り込み処理で
あるタイマ処理を実行することで行うようになってい
る。ステップ401に続くステップ402では、その実
行禁止の解除を行う。その解除を行った後、ステップ4
03に移行する。なお、その解除は、割り込みフラグレ
ジスタでタイマ処理に対応するビットへのマスクを解除
することで行われる。
【0037】タイマ処理を実行することで、イベントの
発生に応じてイベント情報がRAM104に格納される
ことになる。ステップ403では、RAM104に格納
されたイベント情報の内容を参照して、処理すべきイベ
ント情報を選択することにより、発生(検出)したイベ
ントのなかで対処すべきイベントを抽出するイベント発
生処理を実行する。その後はステップ404に移行す
る。
【0038】そのイベント発生処理では、処理すべきイ
ベント情報が存在している場合に、変数であるイベント
発生フラグにその旨を示す1を代入する。入力イベント
バッファに格納されたデバイス番号のなかで対処すべき
イベントの番号は入力イベントレジスタに、入力値バッ
ファに格納されたそのイベントの操作情報は入力値レジ
スタにそれぞれ格納する。それらのレジスタは、RAM
104に確保した領域である。
【0039】ステップ404では、そのフラグの値が1
か否か判定する。その値が1であった場合、判定はYE
Sとなってステップ405に移行する。そうでない場合
には、判定はNOとなってステップ403に戻る。
【0040】ステップ405では、ステップ403のイ
ベント発生処理の実行時に選択したイベント情報の処理
を行う。その処理により、LCD105に表示させる情
報の変更やLED群106を構成するLED217及び
218の駆動制御、音源108の制御、或いは各種設定
(RAM104に保持させた変数の値)の変更等が行わ
れることになる。その処理を終了すると、ステップ40
6でイベント発生フラグに0を代入し、RAM104に
格納されているイベント情報を全て消去した後に上記ス
テップ403に戻る。
【0041】ステップ403及び404、或いはステッ
プ403〜406で形成される処理ループは、例えば予
め定めた時間が経過する毎に行うようになっている。そ
の時間は、例えば後述するタイマ処理の実行間隔時間に
整数を掛けて得られるものである。それにより、イベン
トの検出、それへの対処は、タイマ処理を複数回、実行
してその間に検出したイベントのイベント情報をRAM
104に格納し、その間にRAM104に格納したイベ
ント情報のなかで実際に処理すべきものをイベント発生
処理の実行によって抽出し、それによって抽出したイベ
ント情報のみを処理する、という流れをサイクルとして
行うようになっている。
【0042】次に、上記ステップ402で実行禁止が解
除されるタイマ処理について、図5に示すその動作フロ
ーチャートを参照して詳細に説明する。上記全体処理で
ステップ403として実行されるイベント発生処理は、
そのタイマ処理、及びそのなかで実行される各種サブル
ーチン処理を説明した後に説明する。なお、そのタイマ
処理は、例えばCPU101に搭載されたタイマが出力
する割り込み信号により起動されることで、所定時間が
経過する毎に実行される処理である。
【0043】先ず、ステップ501では、変数である時
刻カウンタの値をインクリメントする。続くステップ5
02では、鍵盤107で発生したイベントを検出してそ
れの内容をイベント情報としてRAM104に格納する
鍵盤処理を実行する。その後のステップ503〜505
では、スイッチ群110、スライダー群111、及びエ
ンコーダ109の各操作子別に、発生したイベントを検
出してそのイベント情報をRAM104に格納する処理
を行う。
【0044】ステップ505に続くステップ506で
は、自動演奏を進行させて曲を再生するための曲再生処
理を実行する。その後は、ステップ507で伴奏曲(リ
ズム)を再生するための伴奏曲再生処理を実行する。一
連の処理は、それを実行した後に終了する。
【0045】以降は、上記タイマ処理内で実行される各
種サブルーチン処理について詳細に説明する。図6は、
上記ステップ502で実行される鍵盤処理の動作フロー
チャートである。始めに、その図6を参照して、鍵盤処
理について詳細に説明する。
【0046】鍵盤処理では、先ず、鍵盤107をスキャ
ンし、そのスキャン結果を解析、例えばスキャンにより
検出した各鍵の操作状態と前回のスキャン時に検出した
各鍵のそれとを対比することにより、演奏者が鍵盤10
7に対して行った操作の内容を認識する。その操作の内
容として、操作された鍵、その操作が押鍵か否かを認識
する。図6に示す動作フローチャートは、その認識を行
った後の処理の流れを示したものである。
【0047】スキャン結果の解析が終了した直後に実行
するステップ601では、その解析結果から演奏者の鍵
盤107への操作内容を判定する。以降は、その判定結
果に応じて、以下のような処理が行われる。
【0048】演奏者が鍵盤107に対して鍵の状態が変
化するような操作を行っていない場合、ステップ601
では操作なし、即ちイベントの発生はなしと判定され、
ここで一連の処理を終了する。
【0049】演奏者が何らかの鍵を押鍵した場合には、
ステップ601ではオン操作と判定されてステップ60
2に移行する。そのステップ602では、入力イベント
バッファに、鍵盤107に割り当てたデバイス番号であ
る20(図3参照)を書き込む。続くステップ603で
は、入力値バッファに、操作が押鍵であることを示す値
(ONフラグ)とその押鍵が行われた鍵の音高を示すノ
ートナンバーを書き込む。それを書き込むと、ステップ
604でイベント発生時刻バッファに、イベントの発生
時刻を示す情報として時刻カウンタの値を書き込む。そ
の後はステップ605に移行して、変数であるイベント
発生準備フラグに、処理対象となりうるイベントが発生
したことを示す値の1を代入する。その代入を行った後
に一連の処理を終了する。
【0050】一方、演奏者が何らかの鍵を離鍵した場合
には、ステップ601ではオフ操作と判定されてステッ
プ606に移行する。そのステップ606では、入力イ
ベントバッファに、鍵盤107に割り当てたデバイス番
号である20(図3参照)を書き込む。続くステップ6
07では、入力値バッファに、操作が離鍵であることを
示す値(OFFフラグ)とその離鍵が行われた鍵の音高
を示すノートナンバーを書き込む。それを書き込むと、
ステップ604に移行して、イベント発生時刻バッファ
に時刻カウンタの値の書き込みを行う。
【0051】図7は、上記タイマ処理内でステップ50
3として実行されるスイッチ処理の動作フローチャート
である。次に、その図7を参照して、スイッチ処理につ
いて詳細に説明する。
【0052】このスイッチ処理でも鍵盤処理と同様に、
先ず、スイッチ群110をスキャンし、そのスキャン結
果を解析、例えばスキャンにより検出した各スイッチの
操作状態と前回のスキャン時に検出した各スイッチのそ
れとを対比することにより、演奏者がスイッチ群110
に対して行った操作の内容を認識する。その操作の内容
として、操作(オン)されたスイッチを認識する。図7
に示す動作フローチャートは、その認識を行った後の処
理の流れを示したものである。
【0053】スキャン結果の解析が終了した直後に実行
するステップ701では、その解析結果から演奏者がス
イッチ群110を構成する何れかのスイッチを操作(オ
ン)したか否か判定する。演奏者が何れかのスイッチを
操作した場合、判定はYESとなってステップ702に
移行する。そうでない場合には、判定はNOとなり、ス
イッチ群110でのイベントの発生は検出されなかった
として一連の処理を終了する。
【0054】そのステップ702では、入力イベントバ
ッファに、操作を検出したスイッチに割り当てたデバイ
ス番号(図3参照)を書き込む。続くステップ703で
は、入力値バッファに、操作が行われたことを示す値の
1を書き込む。それを書き込むと、ステップ704でイ
ベント発生時刻バッファに、時刻カウンタの値を書き込
む。その後はステップ705に移行して、イベント発生
準備フラグに1を代入する。その代入を行った後に一連
の処理を終了する。
【0055】図8は、上記タイマ処理内でステップ50
4として実行されるスライダー処理の動作フローチャー
トである。次に、その図8を参照して、スライダー処理
について詳細に説明する。
【0056】スライダー群111は、3つのスライダー
214〜216で構成されている。それらスライダー2
14〜216では、つまみの位置の移動によってイベン
トが発生する。つまみの位置は電圧値(例えばつまみと
グランド間の電圧をA/D変換して得られた値)から認
識する。スライダー処理では、発生したイベントの検出
対象とするスライダーを順次、変更しながら、電圧値を
取り込んでのイベントの検出が行われる。
【0057】先ず、ステップ801では、イベントの検
出対象とするスライダーを管理するための変数DNに、
スライダー214に割り当てたデバイス番号である16
を代入する。続くステップ802では、スライダー21
4の電圧値を取り込み、それを配列変数VALUEの変
数DNの値で指定される要素VALUE(DN)に代入
する。
【0058】ステップ802に続くステップ803で
は、今回、取り込んだ電圧値と前回に取り込んだ電圧値
との差分を算出し、それを配列変数SABUNの変数D
Nで指定される要素SABUN(DN)に代入する。前
回で取り込んだ電圧値は、配列変数FVALUEの変数
DNの値で指定される要素FVALUE(DN)に代入
されている。このことから、要素SABUN(DN)に
は、要素VALUE(DN)の値から要素FVALUE
(DN)の値を引いた値が代入される。そのようにして
行う代入が終了した後、ステップ804に移行する。
【0059】ステップ804では、要素SABUN(D
N)の絶対値が所定値より大きいか否か判定する。その
所定値は、イベントの発生と検出すべき操作がスライダ
ーに対して行われたか否かを判定するために定めた値で
ある。このため、そのような操作を演奏者がイベントの
検出対象としているスライダーに対して行った場合、判
定はYESとなってステップ805に移行する。そうで
ない場合には、判定はNOとなり、イベントは発生して
いないとしてステップ809に移行する。
【0060】ステップ805〜808では、発生したイ
ベントに対処するための処理が行われる。先ず、ステッ
プ805では、入力イベントバッファに、操作(イベン
ト)を検出したスライダーに割り当てたデバイス番号
(図3参照)を書き込む。続くステップ806では、入
力値バッファに、要素SABUN(DN)の値を書き込
む。その次に実行するステップ807では、イベント発
生準備フラグに1を代入する。それに続くステップ80
8では、イベント発生時刻バッファに、時刻カウンタの
値を書き込む。上記ステップ809には、その書き込み
が終了した後に移行する。
【0061】ステップ809では、要素FVALUE
(DN)に、要素VALUE(DN)の値を代入して、
今回、取り込んだ電圧値を保持させる。その次は、ステ
ップ810で変数DNの値のインクリメントを行う。そ
の後、ステップ811に移行する。
【0062】ステップ811では、変数DNの値が18
より大きいか否か判定する。各スライダー214〜21
6を対象にしたイベントの検出が終了した場合、判定は
YESとなり、一連の処理を終了する。そうでない場合
には、判定はNOとなってステップ802に戻る。それ
により、対象を別のスライダーに移してのイベントの検
出を行う。
【0063】図9は、上記タイマ処理内でステップ50
5として実行されるエンコーダ処理の動作フローチャー
トである。次に、その図9を参照して、エンコーダ処理
について詳細に説明する。
【0064】エンコーダ109にはデバイス番号として
19が割り当てられている。このことから、エンコーダ
処理では、その19で指定される各配列変数VALU
E、FVALUE、及びSABUNの要素を用いてエン
コーダ109で発生したイベントの検出を行うようにな
っている。
【0065】先ず、ステップ901では、エンコーダ1
09のコントローラから操作角度を示す情報を受け取
り、それを要素VALUE(19)に代入する。続くス
テップ902では、要素SABUN(19)に、要素V
ALUE(19)の値から要素FVALUE(19)の
値を引いた値を代入する。今回、取り込んだ操作角度と
前回に取り込んだ操作角度との間の差分を代入する。そ
れが終了した後、ステップ903に移行する。
【0066】ステップ903では、要素SABUN(1
9)の絶対値が所定値より大きいか否か判定する。その
所定値は、イベントの発生と検出すべき操作がエンコー
ダ109に対して行われたか否かを判定するために定め
た値である。このため、そのような操作を演奏者がエン
コーダ109に対して行った場合、判定はYESとなっ
てステップ904に移行する。そうでない場合には、判
定はNOとなり、イベントは発生していないとして一連
の処理を終了する。
【0067】ステップ904〜908では、発生したイ
ベントに対処するための処理が行われる。先ず、ステッ
プ904では、入力イベントバッファに、エンコーダ1
09に割り当てたデバイス番号である19を書き込む。
以降は、ステップ905では入力値バッファに要素SA
BUN(19)の値を書き込み、ステップ906ではイ
ベント発生準備フラグに1を代入し、ステップ907で
はイベント発生時刻バッファに時刻カウンタの値を書き
込む。ステップ907に続くステップ908では、要素
FVALUE(19)に、要素VALUE(19)の値
を代入して、今回、取り込んだ電圧値を保持させる。そ
の後、一連の処理を終了する。
【0068】次に、上記タイマ処理内でステップ506
として実行される曲再生処理について、図10に示すそ
の動作フローチャートを参照して詳細に説明する。曲、
或いはリズムを再生するための演奏データ(シーケンス
データ)は、演奏上のイベントの内容を表すイベントデ
ータ(例えばMIDIデータ)、及び、そのイベントデ
ータを処理すべきタイミングを指定するタイムデータ
(例えばイベント間の時間間隔(デルタタイム)を表す
データ)からなるデータ対を処理順序に従って並べた形
で編成されている。本実施の形態では、演奏データを配
列変数MEMとして扱っている。イベントデータやタイ
ムデータは、それぞれ、1ワードとして扱っている。そ
れにより、それの引数を変えることで、演奏データの変
更やその再生の進行を行えるようにしている。演奏デー
タ間の区切りは、演奏データの最後にその旨を示すユニ
ークなデータ(以降、便宜的にエンドデータと呼ぶ)を
挿入することで認識できるようにしている。曲再生処理
は、そのような演奏データを対象にその再生を行うため
の処理である。
【0069】先ず、ステップ1001では、自動演奏中
か否かを認識するために用意した変数STFの値が自動
演奏中であることを示す1か否か判定する。現在、自動
演奏を行っている場合、判定はYESとなってステップ
1002に移行する。そうでない場合には、判定はNO
となり、ここで一連の処理を終了する。
【0070】なお、上記変数STFには、演奏者が何ら
かの曲を選択している状態でスイッチ202を操作する
と、その操作の後に図4のステップ405を実行するこ
とで1が代入される。それ以外には、配列変数MEMの
引数として用いる変数SADDには再生する演奏データ
の引数上の初期値に2を加算した値(2つ目に処理すべ
きイベントデータのタイムデータを指定する値)、変数
STには時刻カウンタの値に最初に処理すべきイベント
データのタイムデータを加算した値、変数SEVENT
にはそのイベントデータ、がそれぞれ代入される。
【0071】ステップ1002では、変数STの値が時
刻カウンタの値よりも小さいか否か判定する。その変数
STの値(タイムデータ)は、それまでの値に次に処理
すべきイベントデータのタイムデータを加算して順次、
更新させている。このため、次のイベントデータを処理
すべきタイミングとなった場合、判定はYESとなって
ステップ1003に移行する。そうでない場合には、判
定はNOとなり、ここで一連の処理を終了する。
【0072】ステップ1003以降では、次に処理すべ
きイベントデータを処理して曲の再生を進行させるため
の処理が行われる。そのイベントデータは変数SEVE
NTに保持させている。
【0073】先ず、ステップ1003では、変数SEV
ENTに保持させたイベントデータを音源108に送出
する。続くステップ1004では、変数SADDの値を
インクリメントする。その後、ステップ1005に移行
する。
【0074】ステップ1005では、配列変数MEMの
変数SADDの値で指定される要素MEM(SADD)
のデータの種類を判定する。それ以降の処理は、その判
定結果に応じて行われる。
【0075】先ず、そのデータがエンドデータであった
場合、ステップ1005でエンドデータと判定されてス
テップ1006に移行する。そのステップ1006で
は、演奏データを全て処理して曲の再生が完了したこと
から、音源108に全楽音の消音を指示するイベントデ
ータを送出する。続くステップ1007では、変数ST
Fに、自動演奏中でないことを示す0を代入する。その
後、一連の処理を終了する。
【0076】要素MEM(SADD)のデータがイベン
トデータであった場合には、ステップ1005でイベン
トデータ(図10中では音楽)と判定されてステップ1
008に移行する。そのステップ1008で変数SEV
ENTに要素MEM(SADD)のイベントデータを代
入した後、一連の処理を終了する。
【0077】要素MEM(SADD)のデータがタイム
データであった場合には、ステップ1005でタイムデ
ータと判定されてステップ1009に移行する。そのス
テップ1009では、変数ΔSTに、要素MEM(SA
DD)のタイムデータを代入する。続くステップ101
0では、変数STに、それまでの値に変数ΔSTの値を
加算した値を代入する。その後、ステップ1004に戻
る。それにより、変数SEVENTには次に処理すべき
イベントデータが代入されることになる。
【0078】図11は、上記タイマ処理内でステップ5
07として実行される伴奏曲再生処理の動作フローチャ
ートである。次に、図11を参照して、伴奏曲再生処理
について詳細に説明する。
【0079】先ず、ステップ1101では、リズムを対
象に自動演奏中か否かを認識するために用意した変数A
TFの値がその自動演奏中であることを示す1か否か判
定する。現在、リズムの再生を行っている場合、判定は
YESとなってステップ1102に移行する。そうでな
い場合には、判定はNOとなり、ここで一連の処理を終
了する。
【0080】なお、上記変数ATFには、演奏者が何ら
かのリズムを選択している状態でスイッチ202を操作
すると、その操作の後に図4のステップ405を実行す
ることで1が代入される。それ以外には、配列変数ME
Mの引数として用いる変数AADDには再生する演奏デ
ータの引数上の初期値に2を加算した値(2つ目に処理
すべきイベントデータのタイムデータを指定する値)、
変数ATには時刻カウンタの値に最初に処理すべきイベ
ントデータのタイムデータを加算した値、変数AEVE
NTにはそのイベントデータがそれぞれ代入される。
【0081】ステップ1102では、変数ATの値が時
刻カウンタの値よりも小さいか否か判定する。その変数
ATの値(タイムデータ)は、それまでの値に次に処理
すべきイベントデータのタイムデータを加算して順次、
更新させている。このため、次のイベントデータを処理
すべきタイミングとなった場合、判定はYESとなって
ステップ1103に移行する。そうでない場合には、判
定はNOとなり、ここで一連の処理を終了する。
【0082】リズムの再生中は、鍵盤107の伴奏鍵域
への押鍵によってコードを指定できるようになってい
る。その押鍵によって指定されたコードは、特に詳細な
説明は省略するが、図4のステップ405で判定してそ
の結果を変数であるCODEレジスタに保持するように
なっている。ステップ1103以降では、そのレジスタ
の内容を参照しつつ、次に処理すべきイベントデータを
処理してリズムの再生を進行させるための処理が行われ
る。そのイベントデータは変数AEVENTに保持させ
ている。
【0083】先ず、ステップ1103では、変数AEV
ENTに保持させたイベントデータをCODEレジスタ
に保持されているコードに応じて変換する。続くステッ
プ1104では、その変換後のイベントデータを音源1
08に送出する。その次のステップ1105では、変数
AADDの値をインクリメントする。それが終了した
後、ステップ1106に移行する。
【0084】ステップ1106では、配列変数MEMの
変数AADDの値で指定される要素MEM(AADD)
のデータの種類を判定する。それ以降の処理は、その判
定結果に応じて行われる。
【0085】先ず、そのデータがイベントデータであっ
た場合、ステップ1106でイベントデータ(図11中
では音楽)と判定されてステップ1107に移行する。
そのステップ1107で変数AEVENTに要素MEM
(AADD)のイベントデータを代入した後、一連の処
理を終了する。
【0086】要素MEM(AADD)のデータがタイム
データであった場合には、ステップ1106でタイムデ
ータと判定されてステップ1108に移行する。そのス
テップ1108では、変数ΔATに、要素MEM(AA
DD)のタイムデータを代入する。続くステップ110
9では、変数ATに、それまでの値に変数ΔATの値を
加算した値を代入する。その後、ステップ1105に戻
る。それにより、変数AEVENTには次に処理すべき
イベントデータが代入されることになる。
【0087】要素MEM(AADD)のデータがエンド
データであった場合には、ステップ1106でエンドデ
ータと判定されてステップ1110に移行する。そのス
テップ1110では、演奏データの処理が一通り完了し
たことから、変数AADDに、その演奏データの引数上
の初期値を代入する。その後、ステップ1105に戻
る。
【0088】リズムの再生中に演奏者がスイッチ201
を操作することで変数ATFに0が代入される。このた
め、演奏者がリズムの再生の終了を指示するまでの間、
そのリズムが繰り返し再生されることになる。なお、演
奏者がスイッチ203を操作したときにも変数ATFに
0が代入されるが、その代入は一時的なものであり、変
数AADDやAT等に保持させている内容は維持され
る。それにより、演奏者が再度スイッチ203を操作す
ると、中断させたところからリズムの再生が再開され
る。
【0089】次に、図4の全体処理内でステップ403
として実行されるイベント発生処理について、図12に
示すその動作フローチャートを参照して詳細に説明す
る。そのイベント発生処理は、上述のタイマ処理を実行
することでRAM104に格納されたイベント情報の内
容を参照して、そのなかで処理すべきイベント情報を抽
出する処理である。
【0090】先ず、ステップ1201では、イベント発
生準備フラグの値が1か否か判定する。前回の実行から
今回、実行するまでの間に処理の対象となりうるイベン
ト情報がRAM104に格納されていた場合、言い換え
れば、その間に何らかのイベントを新たに検出していた
場合、判定はYESとなってステップ1202に移行す
る。そうでない場合には、即ち新たに検出したイベント
が無かった場合には、判定はNOとなり、ここで一連の
処理を終了する。
【0091】ステップ1202では、入力イベントバッ
ファ内に、同じデバイス番号が複数、格納されているか
否か判定する。同一の操作子(デバイス)で複数回、イ
ベントを検出した場合、判定はYESとなってステップ
1203に移行する。そうでない場合には、判定はNO
となってステップ1205に移行する。なお、鍵盤10
7では複数の鍵への操作を同時に検出することが有り得
ることから、デバイス番号が20の場合には、ノートナ
ンバーまで一致していればYESと判定するようにして
いる。
【0092】ステップ1203では、同じデバイス番号
の各イベントの発生時刻(そのイベントを検出したとき
の時刻カウンタの値)をイベント発生時刻バッファから
読み出し、それらを対比する。続くステップ1204で
は、発生時刻が早いほうのイベント情報を消去すること
により、先に発生したイベントを削除する。その後、ス
テップ1202に戻り、入力イベントバッファ内に、他
に同じデバイス番号が複数、格納されていないか否かの
判定を行う。
【0093】上記ステップ1202〜1204は処理ル
ープを形成しており、その処理ループは、ステップ12
02の判定がNOとなるまでの間、繰り返し実行され
る。それにより、入力イベントバッファ内に格納された
複数の同じデバイス番号は一つだけを除いて全て消去さ
れる。
【0094】ステップ1205以降では、RAM104
に格納したイベント情報のなかから選択したイベント情
報を図4のステップ405で処理するための準備が行わ
れる。
【0095】先ず、ステップ1205では、入力イベン
トバッファに格納されている内容(デバイス番号)を入
力イベントレジスタに書き込む。続くステップ1206
では、入力値バッファに格納されている内容(操作情
報)を入力値レジスタに書き込む。イベント発生時刻バ
ッファに格納されている内容(発生時刻)は処理に関係
しないことから、そのような書き込みは行わない。
【0096】そのようにして、各バッファに格納したイ
ベントの情報のなかで対処すべきイベントのそれを対応
するレジスタにそれぞれ格納すると、ステップ1207
に移行してイベント発生準備フラグに0を代入する。こ
のとき、入力イベントバッファ、入力値バッファ、及び
イベント発生時刻バッファに格納された全ての情報の消
去を合わせて行う。それが終了すると、ステップ120
8でイベント発生フラグに1を代入した後、一連の処理
を終了する。
【0097】イベント発生フラグに1を代入すること
で、図4の全体処理の実行時にはステップ405の処理
を実行するようになる。それにより、検出したイベント
のなかで対処すべきと選択したイベントにのみ対処する
ことになる。
【0098】上記のように、本実施の形態では、最も遅
く発生したイベントの情報を選択して残すようにしてい
る。これは、例えば誤った操作を行えばそれを解除した
り、或いはそれに続けて操作すべき操作を行うといった
ことが多く、後で行われたほうの操作が演奏者の意図に
沿ったものである確率が高いためである。その選択方法
を採用することで、他のイベント情報を処理しないこと
で生じる不具合をより抑えられるようにしている。
【0099】なお、イベント情報の選択方法は、それに
限定されるものではない。例えばエンコーダ109やス
ライダー214〜216のように操作量を検出するタイ
プの操作子(デバイス)では、その操作量が大きいほう
を選択するといったように、イベント情報を構成する操
作情報の内容を基に削除の対象を選択しても良い。 <第2の実施の形態>周知のように、MIDIでの演奏
はチャンネル(処理上の区分)を指定して行われる。こ
れは、入力用の操作子(デバイス)に対する操作は、チ
ャンネル毎に行われることがあるということを意味す
る。このことから、第2の実施の形態は、そのチャンネ
ルに着目し、チャンネル毎にイベント情報の選択を行う
ようにしたものである。
【0100】第2の実施の形態によるイベント検出装置
を搭載した電子楽器の構成は基本的に上記第1の実施の
形態におけるそれと同じである。その動作も大部分は同
じであるが、図4の全体処理内でステップ403として
実行されるイベント発生処理が第1の実施の形態から比
較的に大きく異なっている。このことから、第2の実施
の形態では、そのイベント発生処理についてのみ、第1
の実施の形態の説明で付した符号をそのまま用いて説明
することとする。図13は、第2の実施の形態における
イベント発生処理の動作フローチャートである。
【0101】先ず、ステップ1301では、イベント発
生準備フラグの値が1か否か判定する。前回の実行から
今回、実行するまでの間に処理の対象となりうるイベン
ト情報がRAM104に格納されていた場合、言い換え
れば、その間に何らかのイベントを新たに検出していた
場合、判定はYESとなってステップ1302に移行す
る。そうでない場合には、即ち新たに検出したイベント
が無かった場合には、判定はNOとなり、ここで一連の
処理を終了する。
【0102】ステップ1302では、入力イベントバッ
ファ内に、同じデバイス番号が複数、格納されているか
否か判定する。同一の操作子(デバイス)で複数回、イ
ベントを検出した場合、判定はYESとなってステップ
1303に移行する。そうでない場合には、判定はNO
となってステップ1307に移行する。なお、鍵盤10
7では複数の鍵への操作を同時に検出することが有り得
ることから、デバイス番号が20の場合には、ノートナ
ンバーまで一致していればYESと判定するようにして
いる。
【0103】ステップ1303では、複数、格納されて
いたデバイス番号のイベントが同一のトラック(音色)
での何らかの指定に関わるイベントか否か判定する。上
述したように、スイッチ208には演奏上のチャンネル
の選択を有効にさせる機能が割り当てられている。それ
を操作してその選択を有効にし、スイッチ対213、或
いはスライダー216を操作することで所望のチャンネ
ルを選択することができる。チャンネルを選択した後、
スイッチ207を操作して音色の選択を有効にすれば、
そのチャンネルの音色を選択することができ、スイッチ
対212、或いはスライダー215を操作すれば、その
チャンネルの音量を調整することができる。このため、
そのように選択したチャンネルの設定を変更できる状態
で、その設定に少なくとも何らかの形で関わる操作子
(デバイス)でのイベントを複数回、検出していた場
合、ステップ1303の判定はYESとなってステップ
1304に移行する。そうでない場合には、その判定は
NOとなってステップ1306に移行する。
【0104】ステップ1304では、同じデバイス番号
の各イベントの発生時刻(そのイベントを検出したとき
の時刻カウンタの値)をイベント発生時刻バッファから
読み出し、それらを対比する。続くステップ1305で
は、発生時刻が早いほうのイベント情報を消去すること
により、先に発生したイベントを削除する。それが終了
すると、ステップ1306に移行し、別のデバイス番号
に着目して他に複数の同じデバイス番号が入力イベント
バッファ内に格納されているか否か調べる。その後、ス
テップ1302に戻り、入力イベントバッファ内に、他
に同じデバイス番号が複数、格納されているか否かの判
定を行う。
【0105】上記ステップ1302〜1306、及び、
ステップ1302、1303及び1306はそれぞれ処
理ループを形成しており、それらの処理ループは、ステ
ップ1302の判定がNOとなるまでの間、繰り返し何
れかが実行される。それにより、チャンネルの設定に関
わる操作子(デバイス)で発生したイベントを複数回、
検出することで入力イベントバッファ内に格納された複
数の同じデバイス番号は、各チャンネル毎に一つだけを
除いて全て消去される。
【0106】ステップ1307以降では、RAM104
に格納したイベント情報のなかから選択したイベント情
報を図4のステップ405で処理するための準備が行わ
れる。
【0107】先ず、ステップ1307では、入力イベン
トバッファに格納されている内容(デバイス番号)を入
力イベントレジスタに書き込む。続くステップ1308
では、入力値バッファに格納されている内容(操作情
報)を入力値レジスタに書き込む。
【0108】そのようにして、各バッファに格納したイ
ベントの情報のなかで対処すべきイベントのそれを対応
するレジスタにそれぞれ格納すると、ステップ1309
に移行してイベント発生準備フラグに0を代入する。こ
のとき、入力イベントバッファ、入力値バッファ、及び
イベント発生時刻バッファに格納された全ての情報の消
去を合わせて行う。それが終了すると、ステップ131
0でイベント発生フラグに1を代入した後、一連の処理
を終了する。
【0109】上記のように、演奏上のパートであるチャ
ンネル(音色)単位でイベント情報を選択することによ
り、或る操作子(デバイス)への操作で指定された内容
を反映させるべきチャンネルに全て反映させられるよう
になる。イベント情報を削除することで、その指定され
た内容を反映させるべきチャンネルに反映させないよう
なことが回避される。このため、第1の実施の形態と比
較して、より不具合の発生を低減させることができる。
【0110】なお、第2の実施の形態では、全てのチャ
ンネル(音色)でイベント情報の選択を行うようにして
いるが、その選択を行うべきチャンネルを演奏者に指定
させて、指定されたチャンネルでのみその選択を行うよ
うにしても良い。 <第3の実施の形態>デバイス番号が同じであることか
ら削除したイベント情報が音源108の制御に関わるも
のであった場合、その削除によって楽音の発音に何らか
の不具合が生じる可能性がある。このことから、第3の
実施の形態は、音源108の制御に関わるイベント情報
を削除対象から外すことにより、第1の実施の形態と比
較して、楽音の発音における不具合の発生をより回避で
きるようにしたものである。
【0111】第3の実施の形態によるイベント検出装置
を搭載した電子楽器の構成は基本的に上記第1の実施の
形態におけるそれと同じである。その動作も大部分は同
じであるが、図4の全体処理内でステップ403として
実行されるイベント発生処理が第1の実施の形態から比
較的に大きく異なっている。このことから、第3の実施
の形態でも第2の実施の形態と同様に、そのイベント発
生処理についてのみ、第1の実施の形態の説明で付した
符号をそのまま用いて説明することとする。図14は、
第3の実施の形態におけるイベント発生処理の動作フロ
ーチャートである。
【0112】先ず、ステップ1401では、イベント発
生準備フラグの値が1か否か判定する。前回の実行から
今回、実行するまでの間に処理の対象となりうるイベン
ト情報がRAM104に格納されていた場合、言い換え
れば、その間に何らかのイベントを新たに検出していた
場合、判定はYESとなってステップ1402に移行す
る。そうでない場合には、即ち新たに検出したイベント
が無かった場合には、判定はNOとなり、ここで一連の
処理を終了する。
【0113】ステップ1402では、複数の同じデバイ
ス番号が入力イベントバッファ内に格納されているのを
調べるために一つのデバイス番号を指定する。ここで
は、例えばそれが最も小さい番号である0(図3参照)
を指定する。その後、ステップ1403に移行する。
【0114】ステップ1403〜1408では、指定の
デバイス番号を順次、変更しながら、音源108への影
響を考慮しつつ、そのデバイス番号に着目してのイベン
ト情報の選択が行われる。
【0115】先ずステップ1403では、入力イベント
バッファ内に、指定中のデバイス番号が複数、格納され
ているか否か判定する。その番号が割り当てられている
操作子(デバイス)で複数回、イベントを検出した場
合、判定はYESとなってステップ1404に移行す
る。そうでない場合には、判定はNOとなってステップ
1407に移行する。なお、鍵盤107では複数の鍵へ
の操作を同時に検出することが有り得ることから、指定
のデバイス番号が20の場合には、ノートナンバーまで
一致していればYESと判定するようにしている。
【0116】ステップ1404では、そのデバイス番号
の操作子(デバイス)で発生したイベントが音源108
に影響しないか否か判定する。その操作子に音響効果や
ピッチ、或いはテンポ等の設定変更に関わる機能等が割
り当てられていない場合、判定はYESとなってステッ
プ1405に移行する。そうでない場合には、即ち音源
108に対して何らかの制御を行う必要がある操作子で
イベントが発生していた場合には、判定はNOとなって
ステップ1407に移行する。
【0117】ステップ1405では、そのデバイス番号
の各イベントの発生時刻(そのイベントを検出したとき
の時刻カウンタの値)をイベント発生時刻バッファから
読み出し、それらを対比する。続くステップ1406で
は、発生時刻が早いほうのイベント情報を消去すること
により、先に発生したイベントを削除する。それが終了
すると、ステップ1407に移行する。
【0118】ステップ1407では、全てのデバイス番
号について終了したか否か、言い換えればRAM104
に格納されたイベント情報のなかで処理すべきものの抽
出が終了したか否か判定する。処理すべきイベント情報
の抽出が終了した場合、判定はYESとなってステップ
1409に移行する。そうでない場合には、判定はNO
となり、ステップ1408で別のデバイス番号を指定し
た後、ステップ1403に戻る。
【0119】ステップ1409以降では、RAM104
に格納したイベント情報のなかから選択(抽出)したイ
ベント情報を図4のステップ405で処理するための準
備が行われる。
【0120】先ず、ステップ1409では、入力イベン
トバッファに格納されている内容(デバイス番号)を入
力イベントレジスタに書き込む。続くステップ1410
では、入力値バッファに格納されている内容(操作情
報)を入力値レジスタに書き込む。
【0121】そのようにして、各バッファに格納したイ
ベントの情報のなかで対処すべきイベントのそれを対応
するレジスタにそれぞれ格納すると、ステップ1411
に移行してイベント発生準備フラグに0を代入する。こ
のとき、入力イベントバッファ、入力値バッファ、及び
イベント発生時刻バッファに格納された全ての情報の消
去を合わせて行う。それが終了すると、ステップ141
2でイベント発生フラグに1を代入した後、一連の処理
を終了する。
【0122】上記のように、音源108の制御に関係す
るイベント情報の削除を行わないことで、その削除によ
って生じる楽音の発音上の不具合は確実に回避されるこ
とになる。このため、第1の実施の形態と比較して、よ
り不具合の発生を低減させることができる。
【0123】なお、第3の実施の形態では、音源108
の制御にかかわるか否かに着目してイベント情報の選択
を行うようにしているが、それに着目しての選択を行う
か否かの指定を演奏者(ユーザ)に行わせるようにして
も良い。音源108の制御に着目するだけでなく、更に
チャンネル(音色)に着目してのイベント情報の選択を
行うようにしても良い。即ち第3の実施の形態に、上記
第2の実施の形態で採用した技術を組み込んでも良い。
【0124】音源108の制御にかかわるか否かに着目
するのは、音声の形で表面化する不具合は認識し易いた
めである。しかし、回避したい不具合の優先度は、装置
(システム)の構成やその用途などによって変化する。
このことから、音源108以外の構成要素に着目してイ
ベント情報の選択を行うか否か設定しても良い。その設
定内容は、各構成要素毎にユーザが任意に変更できるよ
うにしても良い。 <第4の実施の形態>上記したように、第3の実施の形
態では、音源108の制御に関わるイベント情報を削除
の対象としないことにより、楽音の発音における不具合
の発生をより回避できるようにしている。第4の実施の
形態は、イベント情報の削除の対象をチャンネル単位で
演奏者が任意に指定できるようにしたものである。
【0125】その指定を演奏者が任意に行えるようにす
ることで、その演奏者が重要と認識している、或いは注
目しているチャンネル(パート)に、イベント情報の削
除が影響するのを確実に回避させられるようになる。こ
のため、第1の実施の形態と比較して、イベント情報の
削除によって生じる不具合をより低減させることができ
る。
【0126】第4の実施の形態によるイベント検出装置
を搭載した電子楽器の構成は基本的に上記第1の実施の
形態におけるそれと同じである。その動作も大部分は同
じであるが、図4の全体処理内でステップ403として
実行されるイベント発生処理が第1の実施の形態から比
較的に大きく異なっている。このことから、上記第2及
び第3の実施の形態と同様に、そのイベント発生処理に
ついてのみ、第1の実施の形態の説明で付した符号をそ
のまま用いて説明することとする。図15は、第4の実
施の形態におけるイベント発生処理の動作フローチャー
トである。
【0127】なお、イベント情報を選択(削除)するチ
ャンネルの指定は、例えば、スイッチ208への操作に
よってチャンネルの選択を有効にさせた状態において、
それまで操作してもそれを無効としていたスイッチに、
その選択の対象とするか否かを指定するための機能を割
り当てることで演奏者に行わせることができる。
【0128】先ず、ステップ1501では、イベント発
生準備フラグの値が1か否か判定する。前回の実行から
今回、実行するまでの間に処理の対象となりうるイベン
ト情報がRAM104に格納されていた場合、言い換え
れば、その間に何らかのイベントを新たに検出していた
場合、判定はYESとなってステップ1502に移行す
る。そうでない場合には、即ち新たに検出したイベント
が無かった場合には、判定はNOとなり、ここで一連の
処理を終了する。
【0129】ステップ1502では、複数の同じデバイ
ス番号が入力イベントバッファ内に格納されているのを
調べるために一つのデバイス番号を指定する。ここで
は、例えばそれが最も小さい番号である0(図3参照)
を指定する。その後、ステップ1503に移行する。
【0130】ステップ1503〜1509では、指定の
デバイス番号を順次、変更しながら、音源108への影
響、及びイベント情報の選択におけるチャンネル毎の設
定を考慮しつつ、そのデバイス番号に着目してのイベン
ト情報の選択が行われる。
【0131】先ずステップ1503では、入力イベント
バッファ内に、指定中のデバイス番号が複数、格納され
ているか否か判定する。その番号が割り当てられている
操作子(デバイス)で複数回、イベントを検出した場
合、判定はYESとなってステップ1504に移行す
る。そうでない場合には、判定はNOとなってステップ
1508に移行する。なお、鍵盤107では複数の鍵へ
の操作を同時に検出することが有り得ることから、指定
のデバイス番号が20の場合には、ノートナンバーまで
一致していればYESと判定するようにしている。
【0132】ステップ1504では、そのデバイス番号
の操作子(デバイス)で発生したイベントが音源108
に影響しないか否か判定する。その操作子に音響効果や
ピッチ、或いはテンポ等の設定変更に関わる機能等が割
り当てられていない場合、判定はYESとなってステッ
プ1505に移行する。そうでない場合には、即ち音源
108に対して何らかの制御を行う必要がある操作子で
イベントが発生していた場合には、判定はNOとなって
ステップ1508に移行する。
【0133】ステップ1505では、指定中のデバイス
番号が割り当てられている操作子で発生したイベントが
イベント情報を選択すると設定されているチャンネル
(図中では特定チャンネル)のイベントか否か判定す
る。その操作子に、イベント情報を選択すると設定され
ているチャンネルで何らかの指定を行うための機能が割
り当てられている場合、判定はYESとなってステップ
1506に移行する。そうでない場合には、判定はNO
となってステップ1508に移行する。
【0134】ステップ1506では、そのデバイス番号
の各イベントの発生時刻(そのイベントを検出したとき
の時刻カウンタの値)をイベント発生時刻バッファから
読み出し、それらを対比する。続くステップ1507で
は、発生時刻が早いほうのイベント情報を消去すること
により、先に発生したイベントを削除する。それが終了
すると、ステップ1508に移行する。
【0135】ステップ1508では、全てのデバイス番
号について終了したか否か、言い換えればRAM104
に格納されたイベント情報のなかで処理すべきものの抽
出が終了したか否か判定する。処理すべきイベント情報
の抽出が終了した場合、判定はYESとなってステップ
1510に移行する。そうでない場合には、判定はNO
となり、ステップ1509で別のデバイス番号を指定し
た後、ステップ1503に戻る。
【0136】ステップ1510以降では、RAM104
に格納したイベント情報のなかから選択(抽出)したイ
ベント情報を図4のステップ405で処理するための準
備が行われる。
【0137】先ず、ステップ1510では、入力イベン
トバッファに格納されている内容(デバイス番号)を入
力イベントレジスタに書き込む。続くステップ1511
では、入力値バッファに格納されている内容(操作情
報)を入力値レジスタに書き込む。
【0138】そのようにして、各バッファに格納したイ
ベントの情報のなかで対処すべきイベントのそれを対応
するレジスタにそれぞれ格納すると、ステップ1512
に移行してイベント発生準備フラグに0を代入する。こ
のとき、入力イベントバッファ、入力値バッファ、及び
イベント発生時刻バッファに格納された全ての情報の消
去を合わせて行う。それが終了すると、ステップ151
3でイベント発生フラグに1を代入した後、一連の処理
を終了する。
【0139】なお、第4の実施の形態では、音源108
を制御する結果となるイベント情報の選択(削除)は行
わないようにしているが、その選択(削除)を行うか否
かを演奏者が任意に指定できるようにしても良い。
【0140】本実施の形態(第1〜第4の実施の形態)
では、イベント情報の選択は複数のイベント情報のなか
で一つを残すことで行っている。しかし、イベント情報
によっては、その全てを削除するようにしても良い。そ
のようにした場合には、誤って少し触れたスイッチで生
じたオン操作とオフ操作を共に無効とすることができ
る。このようなことから、各イベント情報の内容を参照
して、削除すべきイベント情報、その数を決定するよう
にしても良い。
【0141】本実施の形態では、演奏者(ユーザ)が直
接、操作する操作子(デバイス)で発生したイベントを
検出して処理すべきイベントを選択(抽出)している
が、そのデバイスは、演奏者(ユーザ)が直接、操作し
ないものであっても良い。例えば外部装置から送信され
たデータを受信する受信器(ここでは送受信器やインタ
ーフェース等も含む)であっても良い。
【0142】その受信器では、外部装置からデータを受
信することでイベントが発生する。受信したデータはイ
ベント情報に対応する。そのデータは一つだけとは限ら
ないことから、1イベントに1以上のイベント情報が得
られるデバイスということになる。しかし、イベント情
報の選択(削除)ではその内容に注目することから、受
信器でも操作子の場合と同様な手法で処理すべきデータ
を選択すれば良いことになる。このことから明らかなよ
うに、本発明は、電子楽器等の装置の種類に関わらず、
操作子、或いは受信器を備えている装置に幅広く適用さ
せることができるものである。
【0143】ところで、イベントの発生タイミングは、
それによって得られるイベント情報(データ)の処理す
べきタイミングを指定する。このことから、上記イベン
ト情報(データ)の選択は、処理タイミングが或る範囲
(図4のステップ405の実行間隔)内で一致するイベ
ント情報(データ)のなかで処理すべきイベント情報
(データ)を抽出するものということになる。その処理
タイミングが予め指定されているデータ(群)は多く存
在する。例えば演奏データ(シーケンスデータ)がそう
である。
【0144】このことから、そのようなデータ(群)を
対象に、実際に処理させるデータを選択する編集を行う
ようにしても良い。演奏データでは、イベントデータの
処理タイミングはそれに付加されたタイムデータによっ
て指定される。このため、その演奏データでは、例え
ば、そのタイムデータを参照して処理タイミングが所定
の範囲(例えば0.1msのオーダ)内で一致するイベ
ントデータを特定し、その特定したなかで所定の内容が
一致するイベントデータを検出し、その検出したイベン
トデータのなかから一つを選択して残りを削除し、その
削除に合わせて他のイベントデータのタイムデータを修
正する、といったことを繰り返すことでその編集を行う
ことができる。そのような編集を行うことにより、演奏
データの再生時の負荷をより軽減させ、その再生時にデ
ータの内容によって発生する不具合をより低減させるこ
とができる。当然のことながら、その編集はデータの処
理と並行に行っても良い。その編集では、データの内容
を参照して、複数のデータのなかで削除すべきデータ、
その数を特定することが望ましい。
【0145】上記CPU101の制御動作、或いは上述
した機能を実現させるようなプログラムは、CD−RO
M、フロッピーディスク、或いは光磁気ディスク等の記
録媒体に記録させて配布しても良い。或いは、公衆網等
の通信回線を用いて配信するようにしても良い。そのよ
うにした場合には、ユーザはプログラムを取得して任意
の装置(システム)にロードすることにより、その装置
(システム)に本発明を適用させることができるように
なる。
【0146】
【発明の効果】以上、説明したように本発明は、処理タ
イミングが所定の範囲内で一致するイベント情報(デー
タ)のなかで所定の内容が一致しているイベント情報
(データ)が複数、存在している場合に、それらのなか
の一つだけを選択して処理させる。このため、イベント
情報(データ)の処理にかかる不必要な負荷の増大を抑
えることができる。
【図面の簡単な説明】
【図1】第1の実施の形態によるイベント検出装置を搭
載した電子楽器の回路構成図である。
【図2】各種操作子、及びLCDの配置を説明する図で
ある。
【図3】各操作子とそれらに割り当てられた番号との関
係を示す図である。
【図4】全体処理の動作フローチャートである。
【図5】タイマ処理の動作フローチャートである。
【図6】鍵盤処理の動作フローチャートである。
【図7】スイッチ処理の動作フローチャートである。
【図8】スライダー処理の動作フローチャートである。
【図9】エンコーダ処理の動作フローチャートである。
【図10】曲再生処理の動作フローチャートである。
【図11】伴奏曲再生処理の動作フローチャートであ
る。
【図12】イベント発生処理の動作フローチャートであ
る。
【図13】イベント発生処理の動作フローチャートであ
る(第2の実施の形態)。
【図14】イベント発生処理の動作フローチャートであ
る(第3の実施の形態)。
【図15】イベント発生処理の動作フローチャートであ
る(第4の実施の形態)。
【符号の説明】
101 CPU 103 ROM 104 RAM 107 鍵盤 108 音源 109 エンコーダ 110 スイッチ群 111 スライダー群 201〜210、211a、211b、212a、21
2b、213a、213b スイッチ 211〜213 スイッチ対 214〜216 スライダー

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 入力手段を備えた装置に搭載され、該入
    力手段で発生したイベントを予め定められたタイミング
    で検出するイベント検出装置において、 前記入力手段で発生したイベントを前記タイミングで検
    出して、該イベントの内容を表すイベント情報を記憶手
    段に記憶させるイベント検出手段と、 前記記憶手段に所定の内容が一致する未処理のイベント
    情報が複数、記憶されているとき、該所定の内容が一致
    する複数のイベント情報のなかから一つだけを選択して
    処理させるイベント選択手段と、 を具備したことを特徴とするイベント検出装置。
  2. 【請求項2】 音源装置を制御する装置に搭載され、該
    装置の入力手段で発生したイベントを予め定められたタ
    イミングで検出するイベント検出装置において、 前記入力手段で発生したイベントを前記タイミングで検
    出して、該イベントの内容を表すイベント情報を記憶手
    段に記憶させるイベント検出手段と、 前記記憶手段に所定の内容が一致し、且つ前記音源装置
    を制御する結果とならない未処理のイベント情報が複
    数、記憶されているとき、該所定の内容が一致する複数
    のイベント情報のなかから一つだけを選択して処理させ
    るイベント選択手段と、 を具備したことを特徴とするイベント検出装置。
  3. 【請求項3】 前記イベント選択手段は、前記イベント
    情報を処理するうえでの区分毎に、前記所定の内容が一
    致する複数のイベント情報のなかから一つだけを選択す
    る、 ことを特徴とする請求項1、または2記載のイベント検
    出装置。
  4. 【請求項4】 前記選択を行う対象とする前記イベント
    情報を処理するうえでの区分を指定するための指定手段
    を更に具備し、 前記イベント選択手段は、前記指定手段により指定され
    た区分で前記所定の内容が一致する複数のイベント情報
    のなかから一つだけを選択する、 ことを特徴とする請求項1、2、または3記載のイベン
    ト検出装置。
  5. 【請求項5】 予め定められたタイミングとなる度に、
    該タイミングで処理すべきデータを処理させるための方
    法であって、 前記タイミング別に、前記処理すべきデータのなかで所
    定の内容が一致しているデータを検出し、 前記所定の内容が一致しているデータを複数、検出した
    場合に、該複数のデータのなかから一つだけを選択して
    処理させる、ことを特徴とするデータ処理方法。
  6. 【請求項6】 処理タイミングが指定されたデータを処
    理させるための方法であって、 前記処理タイミングが所定の範囲内で一致するデータの
    なかで所定の内容が一致しているデータを検出し、 前記所定の内容が一致しているデータを複数、検出した
    場合に、該複数のデータのなかから一つだけを選択して
    処理させる、 ことを特徴とするデータ処理方法。
  7. 【請求項7】 予め定められたタイミング別に、処理す
    べきデータのなかで所定の内容が一致しているデータを
    検出する手段と、 前記検出する手段により前記所定の内容が一致している
    データが複数、検出された場合に、該複数のデータのな
    かから一つだけを選択して処理させる手段と、 を実現させるプログラムを記録した記録媒体。
JP11220799A 1999-08-04 1999-08-04 イベント検出装置、データ処理方法、及び記録媒体 Withdrawn JP2001042869A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11220799A JP2001042869A (ja) 1999-08-04 1999-08-04 イベント検出装置、データ処理方法、及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11220799A JP2001042869A (ja) 1999-08-04 1999-08-04 イベント検出装置、データ処理方法、及び記録媒体

Publications (1)

Publication Number Publication Date
JP2001042869A true JP2001042869A (ja) 2001-02-16

Family

ID=16756755

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11220799A Withdrawn JP2001042869A (ja) 1999-08-04 1999-08-04 イベント検出装置、データ処理方法、及び記録媒体

Country Status (1)

Country Link
JP (1) JP2001042869A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012181116A (ja) * 2011-03-01 2012-09-20 Kazuhiko Harada 電子メトロノーム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012181116A (ja) * 2011-03-01 2012-09-20 Kazuhiko Harada 電子メトロノーム

Similar Documents

Publication Publication Date Title
US20060000345A1 (en) Musical sound production apparatus and musical
US7502657B2 (en) Information processing apparatus, information processing method, and storage medium
US8008569B2 (en) Musical sound generating device and storage medium storing musical sound generation processing program
JP2024111240A (ja) 楽音情報出力装置、楽音情報生成方法およびプログラム
CN111009230A (zh) 声音信号产生装置、声音信号产生方法以及记录介质
US7129406B2 (en) Automatic performance apparatus
JPH03269584A (ja) 電子楽器
JP2001042869A (ja) イベント検出装置、データ処理方法、及び記録媒体
US20090183624A1 (en) Apparatus, Method and Computer Program for Memorizing Timbres
JP2773638B2 (ja) 自動演奏装置
JP3057711B2 (ja) 楽音制御装置
JP2001067079A (ja) 自動伴奏装置、及び記録媒体
JP2001188534A (ja) 自動演奏装置、演奏データ変換装置、及び記録媒体
JP2586226B2 (ja) 電子楽器
JP2001067172A (ja) 入力装置、及び記録媒体
JP2625800B2 (ja) 自動演奏装置
JP2004347879A (ja) 演奏処理装置、及びプログラム
JP3278857B2 (ja) 楽音形成装置
JP3658661B2 (ja) データ受信装置、及びデータ送信装置
JP3687317B2 (ja) 楽音発生装置
JP2001188533A (ja) 自動演奏装置、演奏データ変更装置、及び記録媒体
JP2000132166A (ja) 自動演奏装置
JP3430894B2 (ja) 和音検出方法、和音検出装置及び和音検出プログラムを記録した記録媒体
JP3837994B2 (ja) 楽譜データ変換装置、及び記録媒体
JP3307598B2 (ja) 演奏記録再生装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20061107