JP2001188533A - 自動演奏装置、演奏データ変更装置、及び記録媒体 - Google Patents

自動演奏装置、演奏データ変更装置、及び記録媒体

Info

Publication number
JP2001188533A
JP2001188533A JP37233199A JP37233199A JP2001188533A JP 2001188533 A JP2001188533 A JP 2001188533A JP 37233199 A JP37233199 A JP 37233199A JP 37233199 A JP37233199 A JP 37233199A JP 2001188533 A JP2001188533 A JP 2001188533A
Authority
JP
Japan
Prior art keywords
data
event data
performance
event
time
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
JP37233199A
Other languages
English (en)
Inventor
Koyo Nagoshi
公洋 名越
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 JP37233199A priority Critical patent/JP2001188533A/ja
Publication of JP2001188533A publication Critical patent/JP2001188533A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】 演奏を記録して得られる演奏データを他の演
奏データと組み合わせて再生させる場合に、それらを適
切な関係で再生できるようにする技術を提供する。 【解決手段】 CPU101は、RECスイッチが操作
されると、その後に鍵盤109をユーザが初めて押鍵し
たタイミングを基準に時間データを生成し、鍵盤109
への操作内容を示すイベントデータにその時間データを
付加してRAM104に格納する。それによって得た演
奏データの再生開始から所定時間が経過するまでの間に
処理されるイベントデータの処理タイミングは、クォン
タイズスイッチが操作されると、全て同じに変更する。
そのようにして、その間にコード指定するイベントデー
タが格納されていれば、それの再生開始時に、コードを
判定できるようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、組み合わせられた
複数の演奏データ(シーケンスデータ)を再生するうえ
での同期をとる(演奏上のズレを回避する)ための技術
に関する。
【0002】
【従来の技術および発明が解決しようとする課題】現
在、自動演奏(ここでは自動伴奏を含む)用の演奏デー
タを再生することで自動演奏を行う自動演奏装置は専用
の装置としてだけでなく、電子楽器等の楽音生成装置に
も広く搭載されている。その自動演奏装置により、ユー
ザは一人でもアンサンブル演奏のような楽しみ方を味わ
うことができる。なお、それが再生の対象とする演奏デ
ータは、通常、演奏上のイベントの内容を表すイベント
データ、及びそれの処理タイミングを示す時間データか
らなるデータ対を処理順序に従って並べた形で構成され
ている。
【0003】自動演奏装置のなかには、組み合わされた
複数の演奏データを並行に再生できるようになっている
ものがある。通常、それらの再生は、主となる演奏デー
タの再生の進行に応じて、それの従となる他の演奏デー
タを再生することで行うようになっている。その一方で
は、ユーザが押鍵すると、押鍵された鍵の組み合わせか
らコードを判定し、それによって何らかのコードを判定
するとリズムを開始するといったように、ユーザの演奏
操作に応じて演奏データの再生を開始するものもある。
【0004】従来の自動演奏装置は、並行に再生する演
奏データの組み合わせは予め固定的に定められており、
その組み合わせをユーザが任意に変更することができな
かった。このため、例えば自身が行った演奏を演奏デー
タの形で残した(記録した)としても、ユーザはそれを
他の演奏データと組み合わせて再生させることができな
かった。これでは、記録した演奏データを広く活用する
ことができない。このようなことから、演奏データを任
意に組み合わせられるようにすることが望まれていた。
そのようにすることで、ユーザにとっての利便性を向上
させることができる。
【0005】ところで、多くのユーザは必ずしも演奏を
適切に行うことができない。押鍵すべき鍵を押鍵すべき
タイミングで操作していくことができない。このため、
たとえ演奏を記録することで得た演奏データを他の演奏
データ、例えばリズム再生(伴奏)用の演奏データと組
み合わせられるようにしても、記録時にコードを指定す
るための押鍵に時間がかかっていると、コードの判定が
遅れ、その結果としてリズム演奏の開始も遅れてしまう
ことになる。これは、それらの間に演奏上のズレが生じ
ることになって、他の演奏データを必ずしも適切な状態
で再生させることができないということを意味する。こ
のようなことから、記録によって得た演奏データを他の
演奏データと組み合わせて再生できるようにした場合に
は、他の演奏データが適切に再生されるようにする必要
があると考えられる。
【0006】本発明の課題は、演奏を記録して得られる
演奏データを他の演奏データと組み合わせて再生させる
場合に、それらを適切な状態で再生できるようにする技
術を提供することにある。
【0007】
【課題を解決するための手段】本発明の第1の態様の自
動演奏装置は、演奏上のイベントの内容を表すイベント
データに、該イベントデータの処理タイミングを指定す
る時間データが付加されてなる演奏データを再生するこ
とにより自動演奏を行うことを前提とし、イベントデー
タを取得するイベントデータ取得手段と、イベントデー
タ取得手段が取得したイベントデータの処理タイミング
を指定する時間データを生成する時間データ生成手段
と、イベントデータ取得手段が取得したイベントデータ
に、時間データ生成手段が生成した時間データを付加し
て演奏データを生成する演奏データ生成手段と、演奏デ
ータ生成手段が生成した演奏データを構成するイベント
データ、及び該イベントデータに付加された時間データ
によって指定される処理タイミングから、予め定めた条
件を満たして処理されるイベントデータを抽出するイベ
ントデータ抽出手段と、イベントデータ抽出手段が抽出
したイベントデータの処理タイミングを、予め定めた規
則に従って変更するタイミング変更手段と、タイミング
変更手段によってイベントデータの処理タイミングが変
更された演奏データを再生して自動演奏を行う自動演奏
手段と、を具備する。
【0008】本発明の第2の態様の自動演奏装置は、上
記第1の態様の自動演奏装置の構成に加えて、自動演奏
手段が再生する演奏データと組み合わされた他の演奏デ
ータを再生して自動演奏を行う他の自動演奏手段と、自
動演奏手段が処理したイベントデータから、条件を満た
すイベントデータが処理されたか否か判定する処理判定
手段と、処理判定手段の判定結果に応じて、他の自動演
奏手段による他の演奏データの再生を制御する再生制御
手段と、を更に具備する。
【0009】なお、上記の構成において、イベントデー
タ抽出手段は、条件を満たして処理されるイベントデー
タとして、所定時間内に、構成音となる楽音の発音開始
を指示するイベントデータが該構成音毎に揃っているコ
ードの各構成音に対応するイベントデータをそれぞれ抽
出し、タイミング変更手段は、規則に従って、少なくと
も、イベントデータ抽出手段が抽出した全てのイベント
データが所定時間と比較して短い時間内に処理される状
態に該イベントデータの処理タイミングを変更する、こ
とが望ましい。
【0010】また、イベントデータ抽出手段は、演奏デ
ータの先頭部分に存在するイベントデータを対象にし
て、条件を満たして処理されるイベントデータを抽出す
る、ことが望ましい。
【0011】更には、他の自動演奏手段が他の演奏デー
タとして、伴奏用の演奏データを再生する場合に、処理
判定手段は、条件を満たすイベントデータとして、自動
演奏手段が所定時間内に、コードの構成音となる楽音の
発音開始を指示するイベントデータを各構成音毎に全て
処理したか否か判定し、再生制御手段は、自動演奏手段
が演奏データの再生を開始した後、処理判定手段が条件
を満たすイベントデータを処理したと初めて判定した際
に、他の自動演奏手段に他の演奏データの再生を開始さ
せる、ことが望ましい。
【0012】本発明の演奏データ変更装置は、演奏上の
イベントの内容を表すイベントデータに、該イベントデ
ータの処理タイミングを指定する時間データが付加され
てなる演奏データを対象にして、該イベントデータの処
理タイミングを変更することを前提とし、演奏データを
取得する演奏データ取得手段と、演奏データ取得手段が
取得した演奏データを構成するイベントデータ、及び該
イベントデータに付加された時間データによって指定さ
れる処理タイミングから、予め定めた条件を満たして処
理されるイベントデータを抽出するイベントデータ抽出
手段と、イベントデータ抽出手段が抽出したイベントデ
ータの処理タイミングを、予め定めた規則に従って変更
するタイミング変更手段と、を具備する。
【0013】本発明の第1の態様の記録媒体は、演奏上
のイベントの内容を表すイベントデータイベントデータ
を取得するイベントデータ取得手段と、イベントデータ
取得手段により取得されたイベントデータの処理タイミ
ングを指定する時間データを生成する時間データ生成手
段と、イベントデータ取得手段により取得されたイベン
トデータに、時間データ生成手段により生成された時間
データを付加して演奏データを生成する演奏データ生成
手段と、演奏データ生成手段により生成された演奏デー
タを構成するイベントデータ、及び該イベントデータに
付加された時間データによって指定される処理タイミン
グから、予め定めた条件を満たして処理されるイベント
データを抽出するイベントデータ抽出手段と、イベント
データ抽出手段により抽出されたイベントデータの処理
タイミングを、予め定めた規則に従って変更するタイミ
ング変更手段と、タイミング変更手段によってイベント
データの処理タイミングが変更された演奏データを再生
して自動演奏を行う自動演奏手段と、を実現させるプロ
グラムを記録している。
【0014】本発明の第2の態様の記録媒体は、上記第
1の態様の記録媒体に記録されたプログラムによって実
現される手段に加えて、自動演奏手段により再生される
演奏データと組み合わされた他の演奏データを再生して
自動演奏を行う他の自動演奏手段と、自動演奏手段によ
り処理されたイベントデータから、条件を満たすイベン
トデータが処理されたか否か判定する処理判定手段と、
処理判定手段による判定結果に応じて、他の自動演奏手
段による他の演奏データの再生を制御する再生制御手段
と、を更に実現させるプログラムを記録している。
【0015】本発明の第3の態様の記録媒体は、演奏上
のイベントの内容を表すイベントデータに、該イベント
データの処理タイミングを指定する時間データが付加さ
れてなる演奏データを取得する演奏データ取得手段と、
演奏データ取得手段により取得された演奏データを構成
するイベントデータ、及び該イベントデータに付加され
た時間データによって指定される処理タイミングから、
予め定めた条件を満たして処理されるイベントデータを
抽出するイベントデータ抽出手段と、イベントデータ抽
出手段により抽出されたイベントデータの処理タイミン
グを、予め定めた規則に従って変更するタイミング変更
手段と、を実現させるプログラムを記録している。
【0016】本発明では、演奏データ中に存在する、予
め定めた条件を満たして処理されるイベントデータを抽
出し、その処理タイミングを規則に従って変更する。そ
れにより、少なくとも、その条件を満たして処理される
イベントデータがより適切なタイミングで処理されるよ
うにする。その結果、例えば条件を満たして処理される
イベントデータが、組み合わされた他の演奏データの再
生制御に関わるものであれば、イベントデータの処理タ
イミングを変更した演奏データを他の演奏データと組み
合わせて再生させる場合に、それらを適切な状態で再生
させられるようになる。
【0017】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。図1は、本実
施の形態による自動演奏装置を搭載した電子楽器の回路
構成図である。
【0018】その電子楽器は、図1に示すように、楽器
全体の制御を行うCPU101と、そのCPU101の
指示に従って時間を計時するタイマ(TIMER)10
2と、プログラムや各種制御用データ、及び各種演奏デ
ータ(シーケンスデータ)等を格納したROM103
と、CPU101がワーク用に使用するRAM104
と、各種情報を表示するLCD(液晶表示器)105
と、複数のLEDからなるLED群106と、複数のス
イッチからなるスイッチ群107と、CPU101の指
示に従って楽音を放音する音源108と、鍵盤109
と、フロッピーディスク(FD)120にアクセスする
フロッピーディスクドライブ(FDD)110と、を備
えて構成されている。
【0019】上記スイッチ群107を構成するスイッチ
としては、特に図示していないが、自動演奏(自動伴奏
を含む)の開始を指示するためのSTARTスイッチ、
鍵盤109に対してユーザが行った操作の内容の記録開
始を指示するためのRECスイッチ、自動演奏、或いは
記録の終了などを指示するためのSTOPスイッチ、記
録することで得た演奏データを対象にイベントデータの
処理タイミングの調整(後述する)を指示するためのク
ォンタイズスイッチ、自動演奏の対象とする演奏データ
を指定するためのソングスイッチ、及び各種入力用に用
いられるテンキー、などが設けられている。
【0020】以上の構成において、その動作を説明す
る。CPU101は、電源がオンされると、ROM10
3に格納されているプログラムを読み出して実行するこ
とにより、楽器全体の制御を開始する。その制御は、演
奏者(ユーザ)の鍵盤109や、スイッチ群107を構
成する各種スイッチへの操作に応じて行う。
【0021】上記スイッチ群107、及び鍵盤109
は、それぞれ、ユーザの操作の対象となる操作子群の他
に、それらへの操作を検出する検出回路を備えた入力装
置である。
【0022】スイッチ群107や鍵盤109の検出回路
は、検出対象とする操作子(ここでは鍵、或いはスイッ
チ)群を随時スキャン(走査)し、そのスキャン結果を
解析し、その解析結果を操作情報としてCPU101に
送る。その解析は、例えば今回のスキャン結果と前回の
それとを対比して行う。それにより、例えば鍵盤109
の検出回路は、状態が変化した鍵、その変化の内容を検
出(特定)して、その鍵、及びそれの変化の内容を示す
情報を操作情報としてCPU101に送る。他方のスイ
ッチ群107の検出回路は、例えば操作されたスイッチ
を検出(特定)して、そのスイッチを示す情報を操作情
報としてCPU101に送る。
【0023】CPU101は、上記スイッチ群107、
及び鍵盤109の各検出回路から送られた操作情報に応
じて、以下のような制御を行う。鍵盤109の検出回路
から操作情報を受け取った場合、CPU101は、それ
から制御コマンドを生成して、それを音源108に送出
する。その音源108は、例えば楽音の波形データを生
成する音源LSI、その波形データをD/A変換してア
ナログのオーディオ信号を出力するD/Aコンバータ、
そのオーディオ信号を増幅するアンプ、及び増幅後のオ
ーディオ信号を音声に変換するスピーカなどから構成さ
れたものである。その音源108に制御コマンドを送出
することにより、CPU101は、ユーザの鍵盤109
への操作に応じて発音させるべき楽音をリアルタイムで
発音させる。
【0024】スイッチ群107の検出回路から操作情報
を受け取った場合には、CPU101は、その操作情報
が示すスイッチに割り当てた機能に応じて、各種設定や
変数(パラメータ)の値の変更、或いはFDD110に
対するFD120へのアクセス指示などを行う。また、
必要に応じて、LCD105の表示内容の変更やLED
の点灯制御なども行う。それにより、自動演奏の対象と
する曲やリズムの変更、その実行(開始や終了)、音
色、或いはエフェクトなどに関わる各種設定、FD12
0へのアクセスなどを行う。
【0025】LCD105の画像表示は、例えばCPU
101が、RAM104を作業に使用して、ROM10
3から読み出した表示させるべき画像のデータを用いて
1画面分の画像データを生成し、それをLCD105に
送出することで行われる。CPU101は、そのように
してLCD105に画像データを送出することにより、
表示させるべき画面を表示させ、その画面内にユーザに
通知すべき情報を必要に応じて表示させる。
【0026】自動演奏は、ROM103、RAM10
4、或いはFD120に格納された演奏データ(ファイ
ル)を再生することで行われる。その演奏データの形式
には様々なものがあり、それを構成するデータも、演奏
上のイベントの内容を表すイベントデータ、及びそれの
処理タイミングを示す時間データだけとは限らない。ヘ
ッダー部を構成するデータや、データ量を示すデータな
どが存在する場合もある。しかし、ここでは、便宜的
に、特に断らない限り、演奏データは、イベントデー
タ、及びそれの時間データからなるデータ対のみが処理
順序に従って並べた形で構成されているものとして説明
することにする。
【0027】ROM103に格納された演奏データに
は、それぞれ、互いに異なる番号が予め割り当てられて
いる。FD120から読み出して、或いはユーザが鍵盤
109に対して行った操作の内容を記録することでRA
M104に格納した演奏データには、ROM103の演
奏データとは異なる番号を割り当てている。それによ
り、自動演奏の対象とする演奏データは、ソングスイッ
チへの操作に続けて、テンキーを操作してそれの番号
(ソング番号)を入力することにより、演奏データの格
納先に関わらず、指定することができるようになってい
る。
【0028】STARTスイッチが操作されると、CP
U101は、その時点で指定されている演奏データの再
生を開始する。その再生は、時間データに従ってそれが
付加されたイベントデータを順次、処理していくことで
行う。そのようにして最後のイベントデータまで処理す
るか、或いは、その前にSTOPスイッチが操作される
と、演奏データの再生を終了させる。なお、その処理
は、イベントデータをそのまま音源108に送出する
か、或いはそれから音源108に送出すべき制御コマン
ドを生成して音源108に送出することで行われる。こ
こでは、便宜的に、イベントデータはそのまま音源10
8に送出する、即ち演奏データ中のイベントデータは音
源108に対する制御コマンドと同じ意味で用いること
にする。
【0029】鍵盤109への操作内容の記録は、REC
スイッチが操作された場合に行われる。CPU101
は、そのスイッチが操作されると、タイマ102をスタ
ートさせ、鍵盤109から操作情報を受け取ると、その
操作情報からイベントデータを生成し、そのイベントデ
ータに、タイマ102が計時した時刻から生成した時間
データを付加してRAM104に格納する。そのように
して、ユーザの演奏操作内容を記録する。なお、以降、
ユーザの鍵盤109への操作内容を記録して演奏データ
を生成することを録音と呼ぶことにする。
【0030】ROM103、或いはRAM104に格納
された演奏データは、任意に組み合わせて再生させるこ
とができる。その組み合わせの設定(指定)は、例えば
上記ソングスイッチを操作した後、テンキーを用いて、
演奏データを組み合わせての再生を指定する数値、組み
合わせを所望する各演奏データの番号、をその順序で入
力することで行うようになっている。それにより、ユー
ザは演奏データの組み合わせを変えることによって自動
演奏の内容を様々に変更させることができるため、ユー
ザは高い利便性を得ることができる。
【0031】上記演奏データの組み合わせ方は様々であ
る。しかし、ここでは、混乱を避けて理解を容易とする
ために、メロディ用の演奏データを主とし、それに伴奏
用の演奏データを従として組み合わせることを前提とす
る。
【0032】伴奏用の演奏データは、鍵盤109への操
作、例えばコードの構成音となる音高の鍵を全て押鍵す
ることで(コードを指定することで)再生を開始させる
ことができる。それにより、ユーザに、鍵盤109を操
作しての演奏に伴奏を同期させることができるようにな
っている。このようなことから、組み合わされた伴奏用
の演奏データは、鍵盤109への操作に応じた再生開始
と同様に、メロディ用の演奏データの再生時において、
コードの構成音となる音高の楽音の発音を指示するイベ
ントデータが所定時間(コード判定を行ううえで設けた
制限時間)内に全て揃い、それらの楽音が全て発音され
る状態となったときに、言い換えればそれらのなかで最
後に残っていたイベントデータを処理したときに再生を
開始するようになっている。
【0033】ところで、ユーザがコード指定のための押
鍵を迅速に行うとは限らない。それを迅速に行えなかっ
た場合、録音によって得られた演奏データの再生時に、
コード指定のための初めての押鍵に対応するイベントデ
ータを処理してから時間がかかってコードを判定するこ
とになる。それは、普通、録音によって得られた演奏デ
ータの再生による演奏と、組み合わされた演奏データ
(伴奏用の演奏データ)の再生による演奏との間に、演
奏上のズレを生じさせる。そのズレは非常に望ましくな
い。
【0034】このようなことから、本実施の形態では、
コード指定に対応するイベントデータを抽出し、それの
処理タイミングを、それらが所定時間よりも短い時間
(少なくとも、演奏上のズレが認識できないような時
間)範囲内で全て処理されるように変更している。その
変更を行うことにより、録音時、ユーザはコード指定の
ための押鍵を迅速(適切)に行った形になる。再生時に
は、初めてのコード指定のために最初に行われた押鍵に
対応するイベントデータを処理した後、直ちにコードを
判定することができるようになる。この結果、ユーザが
コード指定を迅速に行えたか否かに関わらず、組み合わ
された演奏データ間における演奏上のズレを回避させる
ことができる。その変更後の演奏データのみを再生した
場合には、コードがより適切な形で発音されることにな
る。
【0035】CPU101は、上記処理タイミングの変
更を、クォンタイズスイッチが操作された場合に行う。
その対象は、RAM104に格納した演奏データ(録音
によって得られた演奏データ、或いは/及び、FD12
0から読み出した演奏データ)のなかでユーザがソング
スイッチを操作して指定した演奏データである。なお、
本実施の形態では、演奏データを配列変数(後述するM
EM)として扱い、その各要素にイベントデータと時間
データを共に代入させている。メロディ用の演奏データ
の時間管理には曲の先頭から経過した時間で処理タイミ
ングを表す絶対時間系を採用し、伴奏用の演奏データの
時間管理には直前のイベントからの時間間隔(デルタタ
イム)で処理タイミングを表す相対時間系を採用してい
る。
【0036】次に、図2〜図14に示す各種動作フロー
チャートを参照して、上記CPU101の制御動作につ
いて詳細に説明する。ここでは、イベントデータの処理
タイミングの変更や自動演奏に重点を置いて説明する。
【0037】図2は、全体処理の動作フローチャートで
ある。始めに図2を参照して、全体処理について詳細に
説明する。なお、この全体処理は、CPU101が、R
OM103に格納されているプログラムを読み出して実
行することで実現される。
【0038】先ず、ステップ201では、電子楽器を予
め定めた初期状態に設定するイニシャライズを行う。そ
のイニシャライズを行うことにより、音源108は予め
定めた状態に設定され、LCD105には初期画面が表
示される。
【0039】ステップ201に続くステップ202で
は、スイッチ群107から操作情報を受け取り、その操
作情報に対処するためのスイッチ(SW)処理を実行す
る。その実行後は、ステップ203に移行し、鍵盤10
9から操作情報を受け取り、その操作情報に対処するた
めの鍵盤処理を実行する。ステップ204にはその実行
後に移行する。
【0040】ステップ204では、ユーザの鍵盤109
に対して行った操作の内容を演奏データの形で保存する
ための録音処理を実行する。その後に移行するステップ
205では、演奏データ中のイベントデータの処理タイ
ミングを変更するためのクォンタイズ処理を実行する。
それを実行した後はステップ206に移行する。
【0041】ステップ206では、メロディ用の演奏デ
ータを対象に再生を行うための再生処理を実行する。そ
れ以降は、ステップ207で伴奏用の演奏データを対象
に再生を行うための伴奏処理、ステップ208で音源1
08に対する指示を行うための発音処理、ステップ20
9でその他の処理を、その順序で実行する。ステップ2
09のその他の処理を実行した後は、上記ステップ20
2に戻る。なお、FDD110に対する制御などは、ス
テップ209のその他の処理を実行することで実現され
る。
【0042】上記ステップ202〜209は処理ループ
を形成しており、ユーザが電源をオフにするまでの間、
CPU101はその処理ループを繰り返し実行する。そ
れにより、電子楽器は、スイッチ群107や鍵盤109
へのユーザの操作に応じて動作する。
【0043】以降は、上記全体処理内で実行される各種
サブルーチン処理についてより詳細に説明する。図3
は、上記ステップ202として実行されるスイッチ(S
W)処理の動作フローチャートである。サブルーチン処
理については、図3を参照して、始めにスイッチ(S
W)処理について詳細に説明する。なお、図3には、ス
イッチ群107から操作情報を取得した後の処理の流れ
を抜粋して示している。
【0044】先ず、ステップ301では、RECスイッ
チが操作(ON)されたか否か判定する。ユーザがその
スイッチを操作した場合、判定はYESとなってステッ
プ302に移行し、録音の実行を管理するための変数R
TFに、その実行をユーザが指示したことを示す値の1
を代入した後、ステップ303に移行する。そうでない
場合には、判定はNOとなってそのステップ303に移
行する。
【0045】ステップ303では、STARTスイッチ
が操作(ON)されたか否か判定する。ユーザがそのス
イッチを操作した場合、判定はYESとなり、ステップ
304で演奏データの再生を開始するための再生開始処
理を実行した後、ステップ305に移行する。そうでな
い場合には、判定はNOとなってそのステップ305に
移行する。
【0046】ステップ305では、STOPスイッチが
操作(ON)されたか否か判定する。ユーザがそのスイ
ッチを操作した場合、判定はYESとなってステップ3
06に移行する。そうでない場合には、判定はNOとな
ってステップ308に移行する。
【0047】ステップ306では、STOPスイッチへ
の操作に対応するために、変数RTF、RST、ST
F、BTF、及びBSTFにそれぞれ0を代入する。続
くステップ307では、発音中の全楽音の消音を音源1
08に指示するための制御コマンド(イベントデータ)
を生成して出力バッファに格納する。その後、ステップ
308に移行する。なお、上記各変数において、変数R
TF、及びRSTは録音の実行に関わるものであり、変
数STFはメロディ用の演奏データの再生に関わるも
の、変数BTF、及びBSTFは伴奏用の演奏データの
再生に関わるものである。出力バッファは、音源108
に出力すべきコマンド(イベントデータ)の一時的な保
持用にRAM104に設けたエリアである。
【0048】ステップ308では、クォンタイズスイッ
チが操作(ON)されたか否か判定する。ユーザがその
スイッチを操作した場合、判定はYESとなってステッ
プ309に移行し、イベントデータの処理タイミングの
変更の実行を管理するための変数QFに、その実行をユ
ーザが指示したことを示す値の1を代入した後、図4の
ステップ310に移行する。そうでない場合には、判定
はNOとなってそのステップ310に移行する。
【0049】ステップ310では、上述した以外のスイ
ッチが操作(ON)されたか否か判定する。そのような
スイッチをユーザが操作した場合、判定はYESとなっ
てステップ311に移行する。そうでない場合には、判
定はNOとなり、ここで一連の処理を終了する。
【0050】ステップ311では、音源108にコマン
ド(イベントデータ)を送出する必要が生じるスイッチ
が操作されたか否か判定する。ユーザがテンキーなどを
操作して新たに音色を指定したり、或いはエフェクトに
関わる設定を変更したような場合、判定はYESとな
り、ステップ312に移行して、その操作に応じてコマ
ンド(イベントデータ)を作成し、次にステップ313
でその作成したコマンド(イベントデータ)を出力バッ
ファに格納した後、一連の処理を終了する。そうでない
場合には、判定はNOとなり、ステップ314に移行し
て、その他の処理を実行した後に一連の処理を終了す
る。再生対象とする演奏データの切り換えやFD120
へのアクセスなどは、ステップ314のその他の処理を
実行することで行われる。
【0051】上述したスイッチ(SW)処理を実行する
ことにより、ユーザのスイッチ群107への操作に応じ
て各種変数の値の変更やコマンド(イベントデータ)の
作成が行われる。それにより、電子楽器は、ユーザのス
イッチ群107への操作に応じて動作することになる。
【0052】次に、上記ステップ304として実行され
る再生開始処理について、図5に示すその動作フローチ
ャートを参照して詳細に説明する。ここでは、便宜的
に、組み合わされた伴奏用の演奏データの再生を行うこ
とを前提として、その処理の流れを抜粋して表してい
る。
【0053】伴奏用の演奏データの再生開始を鍵盤10
9操作で指示できるようにすると、ユーザはその再生開
始の指示(ここではコード指定)を演奏開始時に行うの
が普通である。これは、コード指定に対応するイベント
データは演奏データの先頭部分に存在することを意味す
る。録音時にイベントデータに付加する時間データは、
RECスイッチを操作した後、鍵盤109の鍵を初めて
押鍵したときを基準(時間データの値を0)にして生成
するようになっている。このようなことから、本実施の
形態では、クォンタイズスイッチが操作されると、図2
のステップ205のクォンタイズ処理(詳細は後述す
る)を実行して、演奏データの先頭部分に存在する、コ
ード指定に対応するイベントデータの時間データの値を
全て0にしている。ユーザが録音によって得た演奏デー
タ(以降、録音演奏データと呼ぶ)を指定してクォンタ
イズスイッチを操作した後、STARTスイッチを操作
すると、再生開始処理では、そのようにして時間データ
の値が変更された録音演奏データを対象に、その再生開
始に関わる処理を行うことになる。
【0054】先ず、ステップ501では、メロディ用の
演奏データの再生を管理するための変数STFに1を代
入する。続くステップ502では、引数として用いられ
る変数m、及び演奏データの再生進行を管理するための
変数Tに、それぞれ0を代入する。その代入を行った後
は、ステップ503に移行して、配列変数MEMを構成
する要素の指定(引数)用に用いられる変数ADに、再
生の対象とする演奏データに応じて初期値を代入する。
その後、ステップ504に移行する。
【0055】ステップ504では、配列変数MEMの変
数ADの値で指定される要素MEM(AD)に代入され
ている時間データの値を変数MTに代入する。続くステ
ップ505では、変数MTの値が変数Tの値と等しいか
否か判定する。それらの値が等しい場合(これは、再生
の対象が録音演奏データであれば、RECスイッチを操
作してから初めて行われた押鍵と同じタイミングである
ことを意味する)、判定はYESとなってステップ50
6に移行し、そうでない場合には、判定はNOとなって
ステップ512に移行する。
【0056】ステップ506では、要素MEM(AD)
に代入されているイベントデータを取り出す。続くステ
ップ507では、そのイベントデータが表すイベントが
楽音の発音開始を指示するノートオンイベントか否か判
定する。それがノートオンイベントであった場合、判定
はYESとなり、ステップ508に移行して、配列変数
NOTEの変数mの値で指定される要素NOTE(m)
に、その楽音の音高番号(ノートナンバー)を代入し、
次にステップ509で変数mの値をインクリメントした
後、ステップ510に移行する。そうでない場合には、
判定はNOとなってそのステップ510に移行する。
【0057】ステップ510では、ステップ506で取
り出したイベントデータを出力バッファに格納する。続
くステップ511では、変数ADの値をインクリメント
する。そのインクリメントを行った後、上記ステップ5
04に戻る。
【0058】上記ステップ504〜511で形成される
処理ループは、ステップ505の判定がNOとなるま
で、即ち演奏データ中で先頭に位置するイベントデータ
と同じタイミングで処理すべきイベントデータが無くな
ったと判定するまで繰り返し実行される。それにより、
配列変数NOTEの要素に、そのタイミングで発音させ
るべき楽音のノートナンバーを順次、代入させていくよ
うになっている。
【0059】そのステップ505の判定がNOとなって
移行するステップ512では、それぞれ、ノートナンバ
ーが代入されている要素NOTE(0)〜(m)(但
し、mの値は0のときも有り得る)のノートナンバーを
参照して、コードが成立しているか否か判定する。それ
らのなかのノートナンバーを組み合わせて構成されるコ
ードが存在していた場合、判定はYESとなってステッ
プ513に移行する。そうでない場合には、判定はNO
となり、ここで一連の処理を終了する。
【0060】ステップ513では、成立しているコード
の種類を示す番号(コード種番号)を変数CODEに代
入する。続くステップ514では、そのコードの根音の
ノートナンバーを変数ROOTに代入する。その代入後
は、ステップ515でコード成立(指定)の有無を管理
するための変数BTFに、それが成立した旨を示す値の
1を代入する。その後、一連の処理を終了する。
【0061】録音演奏データでタイミング変更(時間デ
ータの値の変更)を行ったものは、上述したように、そ
の先頭部分に存在する、コード成立と判定させるイベン
トデータの時間データの値は0となっている。このた
め、それを再生対象としているのであれば、上記再生開
始処理の実行時にステップ512の判定はYESとなっ
て、ステップ513〜515の各処理が行われることに
なる。その結果、後述するように、伴奏用の演奏データ
はメロディ用の演奏データ(録音演奏データを含む)と
同時に再生が開始することになって、それらの間に演奏
上のズレが生じるのを確実に回避させることができる。
【0062】図6は、図2の全体処理でステップ203
として実行される鍵盤処理の動作フローチャートであ
る。ここでは、便宜的に、鍵盤109から操作情報(演
奏データ中のイベントデータに対応する)を取得した後
における処理の流れを抜粋して表している。次に、図6
を参照して、鍵盤処理について詳細に説明する。
【0063】先ず、ステップ601では、鍵盤109か
ら受け取った操作情報から、そのなかで状態が変化した
鍵の有無、状態が変化した鍵が有ればその変化の内容を
判定する。鍵盤109のなかで状態が変化した鍵が存在
していない場合、その旨が判定されて、ここで一連の処
理が終了する。状態が変化した鍵が存在し、その変化が
押鍵による変化であった場合には、その旨が判定されて
ステップ602に移行する。状態が変化した鍵が存在
し、その変化が離鍵による変化であった場合には、その
旨が判定されてステップ607に移行する。
【0064】ステップ602では、変数NTに、押鍵さ
れた鍵に割り当てた鍵番号(ノートナンバー)を代入す
る。続くステップ603では、その変数NTに代入した
ノートナンバーに基づき、ノートオンイベントデータを
作成する。その後、ステップ604に移行する。
【0065】ステップ604では、変数RTFの値が1
か否か判定する。ユーザがRECスイッチを操作した場
合、その変数RTFには1が代入されることから、判定
はYESとなり、ステップ605で録音開始に対処する
ための録音開始処理を実行し、次にステップ606にお
いて、ステップ603で作成したイベントデータを出力
バッファに格納した後、一連の処理を終了する。そうで
ない場合には、判定はNOとなり、上記ステップ606
に移行する。
【0066】一方、ステップ607では、変数NTに、
離鍵された鍵に割り当てた鍵番号(ノートナンバー)を
代入する。続くステップ608では、その変数NTに代
入したノートナンバーに基づき、ノートオフイベントデ
ータを作成する。その後は、ステップ606に移行し
て、ステップ608で作成したイベントデータを出力バ
ッファに格納した後、一連の処理を終了する。
【0067】次に、上記ステップ605として実行され
る録音開始処理について、図7に示すその動作フローチ
ャートを参照して詳細に説明する。この録音開始処理で
は、先ず、ステップ701で変数RTFに0を代入す
る。続くステップ702では、変数RSFに1を代入す
る。その後は、ステップ703で変数Tに0を代入し、
次にステップ704で変数ADに初期値を代入する。そ
の代入を行った後、一連の処理を終了する。
【0068】0を代入した変数Tの値は、これ以降、変
数RSFの値が1となっている間、時間データで表され
る最小の時間(最小分解能時間)が経過する度に、順
次、インクリメントされる。録音時には、そのようにし
て更新される変数Tの値が時間データとしてイベントデ
ータに付加される。その変数Tに0を代入することによ
り、RECスイッチを操作した後、ユーザが初めて押鍵
したタイミングを基準として時間データは生成されるこ
とになる。
【0069】図8は、図2の全体処理でステップ204
として実行される録音処理の動作フローチャートであ
る。次に、図8を参照して、録音処理について詳細に説
明する。その全体処理からは、上記変数RSF、T、及
びADの値などが引数として渡される。
【0070】先ず、ステップ801では、変数RSFの
値が1か否か判定する。その値が1であった場合、判定
はYESとなってステップ802に移行し、そうでない
場合には、判定はNOとなり、ここで一連の処理を終了
する。
【0071】ステップ802では、変数Tの値を更新し
てから最小分解能時間が経過したか否か判定する。その
時間が経過していた場合、判定はYESとなり、ステッ
プ803で変数Tの値をインクリメントした後、ステッ
プ804に移行する。そうでない場合には、判定はNO
となってステップ804に移行する。
【0072】ステップ804では、出力バッファにイベ
ントデータが格納されているか否か判定する。ユーザが
鍵盤109の鍵に対して何らかの操作を行った場合、判
定はYESとなってステップ805に移行する。そうで
ない場合には、判定はNOとなり、ここで一連の処理を
終了する。
【0073】ステップ805では、配列変数MEMの変
数ADの値で指定される要素MEM(AD)に、出力バ
ッファに格納されているイベントデータ、及び変数Tの
値(時間データ)をまとめて代入する。続くステップ8
06では、変数ADの値をインクリメントする。その
後、ステップ807に移行して、出力バッファに他に格
納されているイベントデータが無いか否か判定する。出
力バッファに格納されていたイベントデータを全て配列
変数MEMの要素に代入した場合、判定はYESとなっ
て一連の処理を終了し、そうでない場合には、判定はN
Oとなって上記ステップ805に戻り、対象とするイベ
ントデータを変えて、それ以降の処理を同様に実行す
る。
【0074】上述した録音処理を実行することにより、
ユーザが鍵盤109を操作する度に、その操作内容を示
すイベントデータ、及びその操作タイミングを示す時間
データがRAM104に格納される。
【0075】図9、及び図10は、図2の全体処理でス
テップ205として実行されるクォンタイズ処理の動作
フローチャートである。次に、図9、及び図10を参照
して、その処理について詳細に説明する。この処理は、
ユーザがソングスイッチ、及びテンキーを操作して指定
した、RAM104に格納されている演奏データ(主に
録音演奏データである)を対象に行われる。全体処理か
らは、変数QFの値などが引数として渡される。
【0076】先ず、ステップ901では、変数QFの値
が1か否か判定する。その変数QFに1が代入されてい
た場合、判定はYESとなり、ステップ902で変数A
Dに、処理対象の演奏データに応じて初期値を代入した
後、ステップ903に移行する。そうでない場合には、
判定はNOとなり、ここで一連の処理を終了する。
【0077】ステップ903では、配列変数MEMの変
数ADの値で指定される要素MEM(AD)に代入され
ている時間データを変数Tに代入する。続くステップ9
04では、変数STに代入されている、コード判定を行
ううえで設けた所定時間を示す値が変数Tの値以上か否
か判定する。ステップ903で変数Tに代入した時間デ
ータの値が、演奏データの再生開始からその所定時間が
経過するまでの間の時間を示していた場合、判定はYE
Sとなり、ステップ905で要素MEM(AD)の時間
データの値を0に書き換え、次のステップ906で変数
ADの値をインクリメントした後、上記ステップ903
に戻る。そうでない場合には、判定はNOとなってステ
ップ907に移行する。
【0078】上記ステップ903〜906で形成される
処理ループをステップ904の判定がNOとなるまで繰
り返し実行することにより、演奏データの再生開始から
上記所定時間が経過するまでの間に位置しているイベン
トデータの時間データの値は全て0となる。それによ
り、その間に位置しているイベントデータは全て演奏デ
ータの再生開始時に処理されるようになる。その間にコ
ードを判定するうえで必要なイベントデータが全て存在
しているのであれば、時間データを変更した後の演奏デ
ータを伴奏用の演奏データと組み合わせると、それらは
同時に再生が開始することになって、それらの間に演奏
上のズレは生じなくなる。
【0079】ステップ907では、変数nに0を代入
し、変数ADに再び初期値を代入する。続くステップ9
08では、要素MEM(AD)の時間データを変数Tに
代入する。その代入後は、ステップ909に移行して、
変数STの値が変数Tの値以上か否か判定する。変数S
Tの値が変数Tの値以上であった場合、判定はYESと
なって図10のステップ910に移行する。そうでない
場合には、判定はNOとなって図10のステップ914
に移行する。
【0080】ステップ910では、要素MEM(AD)
のイベントデータがノートオンイベントデータか否か判
定する。そのイベントデータがノートオンイベントデー
タであった場合、判定はYESとなり、ステップ911
でそのイベントデータ中のノートナンバーを要素NOT
E(n)に代入し、ステップ912で変数nの値をイン
クリメントし、更にステップ913で変数ADの値をイ
ンクリメントした後、図9のステップ908に戻る。そ
うでない場合には、判定はNOとなってステップ913
に移行し、変数ADの値をインクリメントした後、図9
のステップ908に戻る。
【0081】上記図9のステップ908〜図10のステ
ップ913で形成される処理ループをステップ909の
判定がNOとなるまで繰り返し実行することにより、演
奏データの再生開始から上記所定時間が経過するまでの
間に位置しているノートイベントデータ中のノートナン
バーが要素NOTE(n)に代入される。
【0082】そのステップ909の判定がNOとなって
移行する図10のステップ914では、要素NOTE
(0)〜(n)(但し、nの値は0のときも有り得る)
に代入されているノートナンバーによってコードが構成
されているか否か判定する。それらのなかのノートナン
バーを組み合わせて構成されるコードが存在していた場
合、判定はYESとなり、ステップ915でそのノート
ナンバーを有するノートイベントデータを先頭に移動さ
せ、ステップ916で変数QFに0を代入した後、一連
の処理を終了する。そうでない場合には、判定はNOと
なってステップ916に移行する。そのステップ915
を行うことにより、コードを指定するノートナンバーを
有するイベントデータは、演奏データの先頭にまとめら
れた形となる。なお、イベントデータの移動は、要素M
EM中のイベントデータを書き替えることで行われる。
【0083】演奏データは、その先頭のイベントデータ
から順次、処理される。演奏データの形式や規格によっ
ては、各イベントデータ毎に処理タイミングを異ならせ
なければならないこともある。しかし、そのような演奏
データであっても、コードを指定するノートナンバーを
有するイベントデータを演奏データの先頭にまとめるこ
とで、コード判定をより迅速に行えるようにすることが
できる。
【0084】なお、本実施の形態では、演奏データの再
生開始から所定時間が経過するまでの間に位置している
ノートイベントデータの時間データの値を0、即ちそれ
らの処理タイミングを全て同じとしているが、必ずしも
そうする必要はない。例えば、その間でコードを構成す
るイベントデータを抽出し、それらの処理タイミングの
みを全て同じとしても良い。それらの処理タイミング
は、全て同じとしなくとも良い。結果として演奏上のズ
レが認識されなければ良いことから、そのズレが認識さ
れない時間(当然のことながら、上記所定時間よりも短
い時間である)範囲内で全てのイベントデータが処理さ
れるようにそれらの処理タイミングを変更させれば良
い。
【0085】次に、図11、及び図12に示す動作フロ
ーチャートを参照して、図2のステップ206として実
行される再生処理について詳細に説明する。ここでも、
便宜的に、組み合わされた伴奏用の演奏データの再生を
行うことを前提に、その処理の流れを抜粋して表してい
る。全体処理からは、変数AD、T、CODE、及びR
OOTの値などが引数として渡される。
【0086】先ず、ステップ1101では、変数STF
の値が1か否か判定する。それに1が代入されていた場
合、判定はYESとなってステップ1102に移行し、
そうでない場合には、判定はNOとなって、ここで一連
の処理を終了する。
【0087】ステップ1102では、変数Tの値を更新
してから最小分解能時間が経過したか否か判定する。そ
の時間が経過していた場合、判定はYESとなり、ステ
ップ1103で変数Tの値をインクリメントした後、ス
テップ1104に移行する。そうでない場合には、判定
はNOとなり、ここで一連の処理を終了する。
【0088】ステップ1104では、要素MEM(A
D)の時間データが変数Tの値と等しいか否か判定す
る。その要素MEM(AD)のイベントデータを処理す
べきタイミングとなった場合、判定はYESとなり、ス
テップ1105でそのイベントデータを取り出した後、
ステップ1106に移行する。そうでない場合には、判
定はNOとなり、ここで一連の処理を終了する。
【0089】ステップ1106では、ステップ1105
で取り出したイベントデータが表すイベントの種類を判
定する。そのイベントがノートオフイベントであった場
合、その旨が判定されて図12の後述するステップ11
20に移行する。そのイベントがノートオンイベントで
あった場合には、その旨が判定されてステップ1107
に移行する。そのイベントがそれら以外であった場合に
は、その旨が判定されて図12の後述するステップ11
14に移行する。
【0090】ステップ1107では、変数mに0を代入
する。続くステップ1108では、配列変数NOTEの
変数mの値で指定される要素NOTE(m)が空か否か
判定する。その要素NOTE(m)に値(ノートナンバ
ー)が代入されていない場合、判定はYESとなってス
テップ1109に移行する。そうでない場合には、判定
はNOとなって1116に移行する。
【0091】ステップ1109では、要素NOTE
(m)に、ステップ1105で取り出したイベントデー
タ中のノートナンバーを代入する。続くステップ111
0では、各要素NOTE(0)〜(M)に代入されてい
るノートナンバーによってコードが成立しているか否か
判定する。それらのなかのノートナンバーを組み合わせ
て構成されるコードが存在していた場合、判定はYES
となり、ステップ1111に移行する。そうでない場合
には、判定はNOとなって図12のステップ1114に
移行する。なお、上記Mは、再生される演奏データに割
り当てた最大同時発音数が代入された変数である。
【0092】ステップ1111では、変数BTFに1を
代入する。その代入後は、ステップ1112で変数CO
DEに成立しているコードのコード種番号を代入し、ス
テップ1113で変数ROOTにその根音のノートナン
バーを代入し、図12のステップ1114でステップ1
105の実行時に取り出したイベントデータを出力バッ
ファに格納し、更にステップ1115で変数ADの値を
インクリメントした後、ステップ1125に移行する。
【0093】上記ステップ1108の判定がNOとなっ
て移行するステップ1116では、変数mの値をインク
リメントする。続くステップ1117では、変数mの値
が変数Mの値よりも大きいか否か判定する。演奏データ
の再生によって最大同時発音数の楽音を発音させてい
る、或いは発音させることになった場合、判定はYES
となり、ステップ1118に移行する。そうでない場合
には、判定はNOとなり、上記ステップ1108に戻
る。
【0094】上記ステップ1108→1116→111
7→1108で形成される処理ループをステップ110
8の判定がYESとなるまで繰り返すことにより、要素
NOTE(0)〜(M)のなかで空となっている要素が
サーチされる。そのサーチの結果、空となっている要素
が見つかれば、上述したステップ1109に移行して、
それ以降の処理を実行することになる。空となっている
要素が見つからなければ、ステップ1117の判定がY
ESとなってステップ1118に移行することになる。
【0095】ステップ1118では、要素NOTE
(0)〜(M)のなかで所定の条件を満足している要素
の番号を変数Sに代入する。続くステップ1119で
は、その変数Sの値で指定される要素NOTE(S)
に、ステップ1105で取り出したイベントデータ中の
ノートナンバーを代入する。その後、上記ステップ11
10に移行する。
【0096】上記所定の条件を満足している要素とは、
例えばそれらのなかで最も早く発音された楽音のノート
ナンバーが代入されている要素である。その要素にノー
トナンバーを代入することにより、最大同時発音数を越
えて楽音を発音させる必要が生じると、最も早く発音さ
せた楽音から消音させるようにしている。そのために、
ステップ1119からステップ1110に移行すると、
その後のステップ1114の実行時に、ステップ111
9の実行時に上書き(削除)したノートナンバーの楽音
の消音を指示するノートオフイベントデータを出力バッ
ファに格納するようになっている。
【0097】一方、ステップ1106でノートオフイベ
ントと判定した場合に移行する図12のステップ112
0では、変数mに0を代入する。続くステップ1121
では、要素NOTE(m)のノートナンバーがステップ
1105で取り出したイベントデータのノートナンバー
と一致するか否か判定する。それらが一致していた場
合、判定はYESとなり、ステップ1122で要素NO
TE(m)をクリア、即ち0を代入した後、上記ステッ
プ1114に移行する。そうでない場合には、判定はN
Oとなり、ステップ1123に移行する。
【0098】ステップ1123では、変数mの値をイン
クリメントする。続くステップ1124では、変数mの
値が変数Mの値よりも大きいか否か判定する。変数mの
値が変数Mの値よりも大きい場合、判定はYESとなっ
てステップ1114に移行し、そうでない場合には、判
定はNOとなってステップ1121に戻る。
【0099】上記ステップ1121→1123→112
4→1121で形成される処理ループをステップ112
1の判定がYESとなるまで繰り返すことにより、要素
NOTE(0)〜(M)のなかで、ステップ1105で
取り出したイベントデータのノートナンバーが代入され
ている要素がサーチされる。そのサーチの結果、そのノ
ートナンバーが代入されている要素が見つかれば、上述
したステップ1122に移行して、その要素のノートナ
ンバーがクリアされることになる。その要素が見つから
なければ、即ち既にそのノートナンバーに対応する楽音
の消去を音源108に対して指示していれば、ステップ
1124の判定がYESとなってステップ1114に移
行することになる。
【0100】上記ステップ1115の実行後に移行する
ステップ1125では、変数ADが最終アドレスより大
きいか否か判定する。ユーザが指定した演奏データの再
生が終了した場合、判定はYESとなってステップ11
26に移行する。そうでない場合には、判定はNOとな
り、図11のステップ1104に戻る。
【0101】ステップ1126では、変数STFに0を
代入する。続くステップ1127では、発音中の全楽音
の消音を指示するイベントデータを生成して出力バッフ
ァに格納する。その後、一連の処理を終了する。
【0102】ステップ1104〜ステップ1125で形
成される処理ループは、ステップ1104の判定がNO
となるか、或いはステップ1125の判定がYESとな
るまで、言い換えれば処理すべきイベントデータが無く
なるまで、イベントデータ毎に、その種類に応じて実行
される。それにより、コード判定は、ノートオンイベン
トデータを処理する毎に、即ちそれを出力バッファに格
納する毎に行うようになっている。その判定結果に応じ
て変数BTFに1を代入し、変数CODE、及びROO
Tの値を更新することで、判定したコードが伴奏用の演
奏データの再生に反映されることになる。
【0103】図13は、図2の全体処理でステップ20
7として実行される伴奏処理の動作フローチャートであ
る。次に、図13を参照して、伴奏処理について詳細に
説明する。全体処理からは、変数BTF、BSTF、R
OOT、及びCODEなどの値が引数として渡される。
なお、上述したように、その伴奏処理で再生の対象とす
る伴奏用の演奏データは、メロディ用の演奏データとは
異なり、相対時間系を採用しているものである。
【0104】先ず、ステップ1301では、変数BTF
の値が1か否か判定する。その変数BTFには、上述し
たように、新たにコードを判定された際に1が代入され
る。このことから、新たにコードが判定された場合、判
定はYESとなってステップ1302に移行し、そうで
ない場合には、判定はNOとなってステップ1317に
移行する。
【0105】ステップ1302では、変数BSTFの値
が0か否か判定する。その変数BSTFには、伴奏用の
演奏データの再生を開始してから終了するまでの間、1
が代入される。このことから、その再生を開始していな
い場合、判定はYESとなってステップ1303に移行
し、そうでない場合には、判定はNOとなってステップ
1307に移行し、変数BTFに0を代入した後、ステ
ップ1308に移行する。
【0106】ステップ1303では、変数BSTFに1
を代入する。その代入後は、ステップ1304で変数B
TFに0を代入し、ステップ1305で伴奏用の演奏デ
ータの再生進行を管理するための変数BADに、その演
奏データに応じて初期値を代入し、更にステップ130
6で配列変数MEMの変数BADの値によって指定され
る要素MEM(BAD)の時間データを変数BTに代入
した後、ステップ1308に移行する。
【0107】ステップ1308では、変数BTの値を更
新してから最小分解能時間が経過したか否か判定する。
その時間が経過した場合、判定はYESとなり、ステッ
プ1309で変数BTの値をデクリメントした後、ステ
ップ1310に移行する。そうでない場合には、判定は
NOとなり、ここで一連の処理を終了する。
【0108】ステップ1310では、変数BTの値が0
か否か判定する。要素MEM(BAD)のイベントデー
タを処理すべきタイミングとなった場合、判定はYES
となり、ステップ1311に移行する。そうでない場合
には、判定はNOとなり、ここで一連の処理を終了す
る。
【0109】ステップ1311では、要素MEM(BA
D)のイベントデータを取り出す。続くステップ131
2では、そのイベントデータが楽音の発音を指示するノ
ートオンイベントデータか否か判定する。それがノート
イベントデータであった場合、判定はYESとなり、ス
テップ1313でそのノートナンバーを変数ROOT、
及びCODEの値に応じて変換、即ちメロディ用の演奏
データ中で指定されたコード種、その根音を基にノート
ナンバーを変換した後、ステップ1314に移行する。
そうでない場合には、判定はNOとなり、そのステップ
1314に移行する。
【0110】ステップ1314では、ステップ1311
で取り出したイベントデータ、或いはステップ1313
でノートナンバーを変換したイベントデータを出力バッ
ファに格納する。続くステップ1315では、変数BA
Dの値をインクリメントする。その後、ステップ131
6に移行して、変数BADの値が最終アドレスの値より
も大きいか否か判定する。再生の対象としている演奏デ
ータの再生が終了した場合、判定はYESとなって上記
ステップ1305に戻り、その再生を最初から開始す
る。そうでない場合には、判定はNOとなって上記ステ
ップ1306に戻り、処理の対象を次のイベントデータ
に切り換える。
【0111】一方、上記ステップ1301の判定がNO
となって移行するステップ1317では、変数BSTF
の値が0か否か判定する。上述したように、伴奏用の演
奏データの再生が開始していない場合、判定はYESと
なり、ここで一連の処理を終了する。そうでない場合に
は、判定はNOとなり、上記ステップ1308に移行す
る。
【0112】このように、伴奏処理では、演奏データの
再生が終了すると、その先頭から再度、その再生を開始
するようになっている。それにより、メロディ用の演奏
データが再生されている間、それの再生を繰り返し行う
ようになっている。
【0113】図14は、図2の全体処理でステップ20
8として実行される発音処理の動作フローチャートであ
る。最後に、図14を参照して、発音処理について詳細
に説明する。
【0114】先ず、ステップ1401では、出力バッフ
ァにイベントデータが格納されているか否か判定する。
そこにイベントデータが格納されていた場合、判定はY
ESとなり、ステップ1402に移行する。そうでない
場合には、判定はNOとなり、ここで一連の処理を終了
する。
【0115】ステップ1402では、出力バッファに格
納されたイベントデータを音源108に出力する。続く
ステップ1403では、音源108に出力したイベント
データを出力バッファから消去する。その後、上記ステ
ップ1401に戻る。
【0116】このようにして、発音処理は、ステップ1
401の判定がNOとなるまでの間、言い換えれば出力
バッファにイベントデータが残っている間、ステップ1
401〜1403で形成される処理ループを繰り返し実
行するようになっている。それにより、発音処理の実行
時に出力バッファに格納されていたイベントデータは全
て音源108に出力している。
【0117】なお、本実施の形態では、メロディ用の演
奏データを主とし、伴奏用の演奏データを従として組み
合わせるようになっているが、組み合わせはそれに限定
されるものではない。
【0118】本実施の形態では、コードを構成するイベ
ントデータを処理して楽音を発音させるようになってい
るが、楽音を発音させないようにしても良い。或いは、
楽音を発音させるか否かをユーザが選択できるようにし
ても良い。これは、演奏データの再生制御に反映させる
イベントデータがコードを構成するイベントデータでな
くとも同様である。
【0119】処理タイミングの変更の対象は、演奏デー
タの先頭部分に存在するイベントデータのみとしている
が、その対象は先頭部分に存在するイベントデータに限
定されるものではない。例えば演奏データ中に存在す
る、それと組み合わされた演奏データの再生制御に反映
させるイベントデータを全て対象としても良い。それを
本実施の形態に適用した場合には、伴奏に反映させるコ
ードの切り換えをより適切に行えるようになる。或い
は、例えば演奏データの範囲を時間などにより指定させ
ることで、その対象をユーザが任意に変更できるように
しても良い。
【0120】録音については、ユーザの鍵盤109への
操作を対象に行っているが、MIDI端子等を介して他
の装置から受け取ったイベントデータを対象にして行え
るようにしても良い。
【0121】本実施の形態は自動演奏装置に本発明を適
用させたものである。このため、演奏データ中のイベン
トデータの処理タイミングを変更し、その変更を行った
演奏データを再生できるようになっているが、必ずしも
そうしなくとも良い。上述したように、演奏データ中の
イベントデータの処理タイミングを変更することによ
り、それを再生することによる演奏と、それと組み合わ
された演奏データを再生することによる演奏との間に生
じる演奏上のズレを回避させることができるようにな
る。それだけの再生に注目すれば、コードの各構成音は
より適切なタイミングでまとまって鳴るようになってい
る。このことから、本発明は、自動演奏装置として実現
させるだけでなく、イベントデータの処理タイミングを
変更する装置(演奏データ変更装置)として実現させて
も良い。その演奏データ変更装置は、ユーザにとっての
利便性をより向上させるために、ユーザが指定した条件
に該当するイベントデータの処理タイミングのみを変更
する用途に用いることができるようにしても良い。
【0122】上記自動演奏装置の動作、或いは演奏デー
タ変更装置の動作を実現させるようなプログラムは、C
D−ROM、フロッピーディスク、或いは光磁気ディス
ク等の記録媒体に記録させて配布しても良い。或いは、
公衆網等の通信回線を用いて、そのプログラムの一部、
若しくは全部を配信するようにしても良い。そのように
した場合には、ユーザはプログラムを取得して任意の自
動演奏装置、演奏データ変更装置、或いはデータ処理装
置にロードすることにより、その装置に本発明を適用さ
せることができる。このことから、記録媒体は、プログ
ラムを配信する装置がアクセスできるものであっても良
い。
【0123】
【発明の効果】以上、説明したように本発明は、演奏デ
ータ中に存在する、予め定めた条件を満たして処理され
るイベントデータを抽出し、その処理タイミングを規則
に従って変更する。それにより、少なくとも、その条件
を満たして処理されるイベントデータがより適切なタイ
ミングで処理されるようにする。このため、その条件を
満たして処理されるイベントデータが、組み合わされた
他の演奏データの再生制御に関わるものであれば、イベ
ントデータの処理タイミングを変更した演奏データを他
の演奏データと組み合わせて再生させる場合に、それら
を適切な状態で再生させることができる。
【図面の簡単な説明】
【図1】本実施の形態による自動演奏装置を搭載した電
子楽器の回路構成図である。
【図2】全体処理の動作フローチャートである。
【図3】スイッチ処理の動作フローチャートである。
【図4】スイッチ処理の動作フローチャートである(続
き)。
【図5】再生開始処理の動作フローチャートである。
【図6】鍵盤処理の動作フローチャートである。
【図7】録音開始処理の動作フローチャートである。
【図8】録音処理の動作フローチャートである。
【図9】クォンタイズ処理の動作フローチャートであ
る。
【図10】クォンタイズ処理の動作フローチャートであ
る(続き)。
【図11】再生処理の動作フローチャートである。
【図12】再生処理の動作フローチャートである(続
き)。
【図13】伴奏処理の動作フローチャートである。
【図14】発音処理の動作フローチャートである。
【符号の説明】
101 CPU 102 タイマ(TIMER) 103 ROM 104 RAM 107 スイッチ群 108 音源 109 鍵盤 110 フロッピーディスクドライブ(FDD) 120 フロッピーディスク(FD)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 演奏上のイベントの内容を表すイベント
    データに、該イベントデータの処理タイミングを指定す
    る時間データが付加されてなる演奏データを再生するこ
    とにより自動演奏を行う自動演奏装置において、 前記イベントデータを取得するイベントデータ取得手段
    と、 前記イベントデータ取得手段が取得したイベントデータ
    の処理タイミングを指定する時間データを生成する時間
    データ生成手段と、 前記イベントデータ取得手段が取得したイベントデータ
    に、前記時間データ生成手段が生成した時間データを付
    加して演奏データを生成する演奏データ生成手段と、 前記演奏データ生成手段が生成した演奏データを構成す
    るイベントデータ、及び該イベントデータに付加された
    時間データによって指定される処理タイミングから、予
    め定めた条件を満たして処理されるイベントデータを抽
    出するイベントデータ抽出手段と、 前記イベントデータ抽出手段が抽出したイベントデータ
    の処理タイミングを、予め定めた規則に従って変更する
    タイミング変更手段と、 前記タイミング変更手段によってイベントデータの処理
    タイミングが変更された演奏データを再生して自動演奏
    を行う自動演奏手段と、を具備したことを特徴とする自
    動演奏装置。
  2. 【請求項2】 前記自動演奏手段が再生する演奏データ
    と組み合わされた他の演奏データを再生して自動演奏を
    行う他の自動演奏手段と、 前記自動演奏手段が処理したイベントデータから、前記
    条件を満たすイベントデータが処理されたか否か判定す
    る処理判定手段と、 前記処理判定手段の判定結果に応じて、前記他の自動演
    奏手段による他の演奏データの再生を制御する再生制御
    手段と、 を更に具備したことを特徴とする請求項1記載の自動演
    奏装置。
  3. 【請求項3】 前記イベントデータ抽出手段は、前記条
    件を満たして処理されるイベントデータとして、所定時
    間内に、構成音となる楽音の発音開始を指示するイベン
    トデータが該構成音毎に揃っているコードの各構成音に
    対応するイベントデータをそれぞれ抽出し、 前記タイミング変更手段は、前記規則に従って、少なく
    とも、前記イベントデータ抽出手段が抽出した全てのイ
    ベントデータが前記所定時間と比較して短い時間内に処
    理される状態に該イベントデータの処理タイミングを変
    更する、 ことを特徴とする請求項1、または2記載の自動演奏装
    置。
  4. 【請求項4】 前記イベントデータ抽出手段は、前記演
    奏データの先頭部分に存在するイベントデータを対象に
    して、前記条件を満たして処理されるイベントデータを
    抽出する、 ことを特徴とする請求項1、2、または3記載の自動演
    奏装置。
  5. 【請求項5】 前記他の自動演奏手段が他の演奏データ
    として、伴奏用の演奏データを再生する場合に、 前記処理判定手段は、前記条件を満たすイベントデータ
    として、前記自動演奏手段が前記所定時間内に、コード
    の構成音となる楽音の発音開始を指示するイベントデー
    タを各構成音毎に全て処理したか否か判定し、 前記再生制御手段は、前記自動演奏手段が演奏データの
    再生を開始した後、前記処理判定手段が前記条件を満た
    すイベントデータを処理したと初めて判定した際に、前
    記他の自動演奏手段に他の演奏データの再生を開始させ
    る、 ことを特徴とする請求項2、3、または4記載の自動演
    奏装置。
  6. 【請求項6】 演奏上のイベントの内容を表すイベント
    データに、該イベントデータの処理タイミングを指定す
    る時間データが付加されてなる演奏データを対象にし
    て、該イベントデータの処理タイミングを変更する装置
    であって、 前記演奏データを取得する演奏データ取得手段と、 前記演奏データ取得手段が取得した演奏データを構成す
    るイベントデータ、及び該イベントデータに付加された
    時間データによって指定される処理タイミングから、予
    め定めた条件を満たして処理されるイベントデータを抽
    出するイベントデータ抽出手段と、 前記イベントデータ抽出手段が抽出したイベントデータ
    の処理タイミングを、予め定めた規則に従って変更する
    タイミング変更手段と、 を具備したことを特徴とする演奏データ変更装置。
  7. 【請求項7】 演奏上のイベントの内容を表すイベント
    データイベントデータを取得するイベントデータ取得手
    段と、 前記イベントデータ取得手段により取得されたイベント
    データの処理タイミングを指定する時間データを生成す
    る時間データ生成手段と、 前記イベントデータ取得手段により取得されたイベント
    データに、前記時間データ生成手段により生成された時
    間データを付加して演奏データを生成する演奏データ生
    成手段と、 前記演奏データ生成手段により生成された演奏データを
    構成するイベントデータ、及び該イベントデータに付加
    された時間データによって指定される処理タイミングか
    ら、予め定めた条件を満たして処理されるイベントデー
    タを抽出するイベントデータ抽出手段と、 前記イベントデータ抽出手段により抽出されたイベント
    データの処理タイミングを、予め定めた規則に従って変
    更するタイミング変更手段と、 前記タイミング変更手段によってイベントデータの処理
    タイミングが変更された演奏データを再生して自動演奏
    を行う自動演奏手段と、を実現させるプログラムを記録
    した記録媒体。
  8. 【請求項8】 請求項7記載のプログラムが実現させる
    手段に加えて、 前記自動演奏手段により処理されたイベントデータか
    ら、前記条件を満たすイベントデータが処理されたか否
    か判定する処理判定手段と、 前記処理判定手段による判定結果に応じて、前記他の自
    動演奏手段による他の演奏データの再生を制御する再生
    制御手段と、 を更に実現させるプログラムを記録した記録媒体。
  9. 【請求項9】 演奏上のイベントの内容を表すイベント
    データに、該イベントデータの処理タイミングを指定す
    る時間データが付加されてなる演奏データを取得する演
    奏データ取得手段と、 前記演奏データ取得手段により取得された演奏データを
    構成するイベントデータ、及び該イベントデータに付加
    された時間データによって指定される処理タイミングか
    ら、予め定めた条件を満たして処理されるイベントデー
    タを抽出するイベントデータ抽出手段と、 前記イベントデータ抽出手段により抽出されたイベント
    データの処理タイミングを、予め定めた規則に従って変
    更するタイミング変更手段と、 を実現させるプログラムを記録した記録媒体。
JP37233199A 1999-12-28 1999-12-28 自動演奏装置、演奏データ変更装置、及び記録媒体 Withdrawn JP2001188533A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP37233199A JP2001188533A (ja) 1999-12-28 1999-12-28 自動演奏装置、演奏データ変更装置、及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP37233199A JP2001188533A (ja) 1999-12-28 1999-12-28 自動演奏装置、演奏データ変更装置、及び記録媒体

Publications (1)

Publication Number Publication Date
JP2001188533A true JP2001188533A (ja) 2001-07-10

Family

ID=18500266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37233199A Withdrawn JP2001188533A (ja) 1999-12-28 1999-12-28 自動演奏装置、演奏データ変更装置、及び記録媒体

Country Status (1)

Country Link
JP (1) JP2001188533A (ja)

Similar Documents

Publication Publication Date Title
US10043503B2 (en) Association of virtual controls with physical controls
JP2001242863A (ja) 演奏評価装置およびサーバ装置
JP6260191B2 (ja) 電子楽器、プログラム及び発音音高選択方法
JPH09319368A (ja) 電子楽器の移調制御装置
JP3407610B2 (ja) 楽音生成方法および記憶媒体
US11955104B2 (en) Accompaniment sound generating device, electronic musical instrument, accompaniment sound generating method and non-transitory computer readable medium storing accompaniment sound generating program
JP3844286B2 (ja) 電子楽器の自動伴奏装置
JP2001188533A (ja) 自動演奏装置、演奏データ変更装置、及び記録媒体
JP4978177B2 (ja) 演奏装置、演奏実現方法およびプログラム
JPH0968980A (ja) 電子鍵盤楽器の音色制御装置
JP3800778B2 (ja) 演奏装置及び記録媒体
JP2570411B2 (ja) 演奏装置
JP6399155B2 (ja) 電子楽器、プログラム及び発音音高選択方法
JP2002182647A (ja) 電子楽器
JP3837994B2 (ja) 楽譜データ変換装置、及び記録媒体
JP3738634B2 (ja) 自動伴奏装置、及び記録媒体
JP2001188534A (ja) 自動演奏装置、演奏データ変換装置、及び記録媒体
JP4651128B2 (ja) 演奏装置、演奏方法及び演奏のためのコンピュータプログラム
JP4205563B2 (ja) 演奏装置、演奏方法及び演奏のためのコンピュータプログラム
JP2001042869A (ja) イベント検出装置、データ処理方法、及び記録媒体
JP2005010458A (ja) 自動アルペジオ装置および同装置に適用されるコンピュータプログラム
JPH1020859A (ja) 楽音発生装置
JP2004347879A (ja) 演奏処理装置、及びプログラム
JPH06250657A (ja) 電子楽器
JPH096358A (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: 20070306