JP3551458B2 - 自動演奏装置 - Google Patents
自動演奏装置 Download PDFInfo
- Publication number
- JP3551458B2 JP3551458B2 JP35079293A JP35079293A JP3551458B2 JP 3551458 B2 JP3551458 B2 JP 3551458B2 JP 35079293 A JP35079293 A JP 35079293A JP 35079293 A JP35079293 A JP 35079293A JP 3551458 B2 JP3551458 B2 JP 3551458B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- data
- track
- determined
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【産業上の利用分野】
本発明は、電子楽器の演奏データを記録再生する自動演奏装置に関する。
【0002】
【従来の技術】
従来、自動演奏装置には演奏データのタイミングを所定の分解能(例えば16分音符、8分音符)に収束させる所謂クオンタイズと呼ばれる機能が設けられている。このクオンタイズ機能は、ある時間範囲を指定してその範囲内のデータの時刻を指定された分解能に収束させるものである。言い換えれば、ある時間範囲内のデータの時刻を一定間隔の時刻にする、もしくは近づけるというものである。
【0003】
【発明が解決しようとする課題】
ところで、上述した従来の自動演奏装置にあっては、そのクオンタイズ機能があくまでも一定間隔の時刻を基準にしているので、単純な時間的操作しかできない。また、トラックのデータをコピーする機能を使用してあるトラックのデータをそのまま別のトラックにコピーし、音色のみ異なるものにしてユニゾン演奏を行なうことはできるが、タイミングが完全に一致してしまうので、人間的な微妙なズレやノリといったものを表現することができないという問題点があった。
【0004】
そこで本発明は、ユニゾン演奏等に適したイベントデータの時間修正等が可能な自動演奏装置を提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的達成のため、本発明による自動演奏装置は、演奏情報としてのイベントデータとその発生時刻を特定する時間データを記録するためのトラックを複数有する自動演奏装置であって、前記複数のトラックの中から少なくとも2つのトラックを指定するトラック指定手段と、前記トラック指定手段により指定された一方のトラックに記録されている各イベントデータの発生時刻に近い他方のトラックのイベントデータを検索する検索手段と、前記一方のトラックの1つのイベントデータの発生時刻に近い前記他方のトラックの1つのイベントデータを選択して組指定する選択手段と、2つのイベントデータに共通する発生時刻の修正目標値を規定する第1の目標パラメータを設定する第1の設定手段と、前記選択手段にて組指定された2つのイベントデータについて、前記第1の目標パラメータにて規定された発生時刻の修正目標値に接近するように、それぞれの発生時刻を修正する修正手段とを備えたことを特徴とする。
【0006】
また、好ましい態様として、2つのイベントデータに共通するベロシティの修正目標値を規定する第2の目標パラメータを設定する第2の設定手段をさらに備えるとともに、前記修正手段は、前記選択手段にて組指定された2つのイベントデータについて、前記第2の目標パラメータにて規定されたベロシティの修正目標値に接近するように、それぞれのベロシティを修正することを特徴とする。
【0007】
【作用】
本発明では、複数のトラックの中から少なくとも2つのトラックが選択され、これらのトラックに記憶されているイベントデータの時間情報や付随する情報(例えばベロシティデータ)が、共通の目標値に接近するように修正される。
したがって、人間的なズレやノリといったものを失うことなく、ユニゾン演奏の再現ができる。
また、本発明では、少なくとも2つのトラックのイベントデータ同士が所定の時間差以内のものや、最も近いもの同士についてのみ修正が行なわれる。
したがって、意図しない変更を避けることができる。
【0008】
【実施例】
以下、図面を参照して本発明の一実施例について説明する。
図1は本発明に係る自動演奏装置の一実施例の外観を示す斜視図である。この図において、1は本体パネル、2は鍵盤、3R、3Lの各々はスピーカ、4はスイッチ部である。図2はスイッチ部4の一部分の拡大図であり、この図において、5はRec(録音)スイッチであり、これを押すことによって録音が開始される。6はスタート/ストップスイッチであり、録音中の時にこれを押すと録音が停止する。また、録音中でない時(停止時)にこれを押すと自動演奏再生(以下再生という)になる。また、再生中にこれを押すと再生が停止する。7はトラック選択スイッチであり、トラック1とトラック2を択一的に選択する。なお、この実施例の自動演奏装置は2つ以上のトラックへの記録再生可能であり、トラック選択スイッチ7は図示せぬ選択スイッチにより選択された2つのトラックを択一的に選択する。8〜10の各々はLED(発光ダイオード)であり、このうちLED8は録音中に点灯し、LED9は再生中に点灯する。また、LED10はトラック2が選択されている間点灯する。
【0009】
11は時間パラメータAを設定するための時間パラメータ設定スイッチであり、これを押しながらテンキー13より数値を入力することで、この数値に対応するキーデータが後述するAレジスタにストアされる。12はタッチパラメータを設定するためのタッチパラメータ設定スイッチであり、これを押しながらテンキー13より数値を入力することで、この数値に対応するキーデータが後述するCレジスタにストアされる。14はトラック時間を設定するためのトラック時間設定スイッチであり、これを押しながらテンキー13より数値を入力することで、この数値に対応するキーデータが後述するTR1レジスタまたはTR2レジスタにストアされる。この場合、トラック選択スイッチ7によってトラック1が選択された場合にはTR1レジスタにキーデータがストアされ、トラック2が選択された場合にはTR2レジスタにキーデータがストアされる。
【0010】
15はトラックタッチを設定するためのトラックタッチ設定スイッチであり、これを押しながらテンキー13より数値を入力することで、この数値に対応するキーデータが後述するVR1レジスタまたはVR2レジスタにストアされる。この場合、トラック選択スイッチ7によってトラック1が選択された場合にはVR1レジスタにキーデータがストアされ、トラック2が選択された場合にはVR2レジスタにキーデータがストアされる。16は量子化スイッチであり、これを押すとクオンタイズ処理が開始される。
【0011】
ここで、この実施例のクオンタイズ機能の概要について説明する。
この実施例のクオンタイズ機能は、ノート情報に対してそのタイミングとベロシティを変更するものである。処理の大まかな流れとしては、(イ)時間の接近しているイベントの組の検出、(ロ)イベントの時間データの修正、(ハ)イベントのベロシティデータの修正の、3段階からなり、(イ)〜(ハ)を指定された時間範囲内の全てについて行なう。以下、(イ)〜(ハ)の概要を説明する。
(イ)イベントの組の検出
図3に示すように、トラック1の各イベントデータに対して発生時刻が最も近いトラック2のイベントデータを検索する。そして、これら2つのイベントデータの発生時刻の差が所定時間以内でなければトラック1のイベントデータの修正を行なわない。
また、トラック2の1つのイベントデータに対してトラック1の複数のイベントデータが対応する場合は、発生時刻が最も近いイベントデータのみ修正の対象となる。
【0012】
(ロ)イベントの時間データの修正
イベントの時間データの修正に際し、各々のイベントデータのタイミングが何処に近づくかという位置を設定する。この位置は時間パラメータAによって決定する。ここで、時間パラメータAが”0”のときはトラック1のイベントのタイミングとなり、”0.5”のときは中間のタイミングとなる。また、”1”のときはトラック2のイベントのタイミングとなる。この時間パラメータAによって設定された位置の時刻TQは、トラック1のイベントの発生時刻をT1、トラック2のイベントの発生時刻をT2とすれば、
TQ=T1+(T2−T1)×A …(1)
で表わされる。
【0013】
トラック1、2のイベントデータがこの位置に接近する度合いを決定するのがTR1、TR2というトラック時間である。修正後のトラック1のイベントの発生時刻TQ1は、
TQ1=T1+(TQ−T1)×TR1 …(2)
で表わされる。
また、トラック2のイベントの発生時刻TQ2は、
TQ2=T2+(TQ−T2)×TR2 …(3)
で表わされる。
図4にこの様子を示す。
【0014】
(ハ)イベントのベロシティデータの修正
イベントのベロシティの修正に際し、各々のイベントデータのベロシティが何処に近づくかという位置を設定する。この位置はタッチパラメータCによって決定する。タッチパラメータが“0”のときはトラック1のイベントのベロシティとなり、“0.5”のときは中間のベロシティとなる。また、“1”のときはトラック2のイベントのベロシティとなる。このタッチパラメータによって設定されたベロシティVQは、トラック1のイベントのベロシティをV1、トラック2のイベントのベロシティをV2とすれば、
VQ=V1+(V2−V1)×C …(4)
で表わされる。
【0015】
トラック1、2のイベントデータがこの位置に接近する度合いを決定するのがVR1、VR2というトラックタッチである。修正後のトラック1のイベントのベロシティVQ1は、
VQ1=V1+(VQ−V1)×VR1 …(5)
で表わされる。
また、トラック2のイベントのベロシティVQ2は、
VQ2=V2+(VQ−V2)×VR2 …(6)
で表わされる。
図5にこの様子を示す。
【0016】
次に、図6はこの実施例の自動演奏装置の構成を示すブロック図である。この図において、18はCPUであり、装置各部の制御を行なう。19はROMであり、CPU18を制御するためのプログラムが書き込まれている。20はRAMであり、CPU18のワークエリアとして使用される。このRAM20には次に示すフラグおよびレジスタが設定される。レジスタには各種データがストアされる。
PSF(プレイスタートフラグ):再生時に”1”が立つ。
TRF(トラックフラグ):トラック2の選択時に”1”が立つ。
RecF(レコーデイングフラグ):録音時に”1”が立つ。
QF(クオンタイズフラグ):クオンタイズ時に”1”が立つ。
ONF(オンフラグ):キーオン時に”1”が立つ。
OFFF(オフフラグ):キーオフ時に”1”が立つ。
【0017】
ADレジスタ1、ADレジスタ2、Aレジスタ、Cレジスタ、TR1レジスタ、TR2レジスタ、VR1レジスタ、VR2レジスタ、NNレジスタ、TDレジスタ、TD1レジスタ、TD2レジスタ、TDAレジスタ、TDBレジスタ、TDCレジスタ、TDDレジスタ、TDEレジスタ、TDFレジスタ、TDQレジスタ、TOCレジスタ、TODレジスタ、TOQレジスタ
【0018】
21はタッチ検出回路であり、鍵盤2の各鍵のタッチを検出する。22は楽曲データRAMであり、トラック1とトラック2の演奏データが書き込まれる。23は音源、24は増幅器とスピーカとから構成される発音回路である。
図7は楽曲データRAM22の内容の一例を示す図である。この図において、“T”は楽曲先頭からキーオンまたはキーオフまでの時間、“ON”はキーオン、“OFF”はキーオフ、“NN”はキーコード、“TD”はタッチデータである。TDはキーオンが入った状態で一緒に入る。TDが入った後にキーオフが入る。キーオンの場合は“T”、“ON”、“TD”からなり、オフの場合は“T”、“OFF”からなる。これらの最後には“END”が入る。
上記トラック選択スイッチ7、図示せぬ選択スイッチおよびCPU18はトラック指定手段100を構成する。また、上記CPU18は検索手段、選択手段および修正手段に対応する。
【0019】
次に、上記構成による自動演奏装置の動作について図8〜図17に示すフローチャートを参照しながら説明する。
図8は全体の処理を示すフローチャートであり、まず、ステップS10でイニシャライズが行なわれ、次いでステップS12でスイッチ処理が行なわれる。そして、ステップS14で鍵盤処理が行なわれ、この後、ステップS16で量子化処理を行ない、次いでステップS18で再生処理を行なう。そして、最後にステップS20でその他の処理を行なう。以下、スイッチ処理、鍵盤処理、量子化処理および再生処理の各々の詳細について説明する。
【0020】
スイッチ処理
図9はスイッチ処理を示すフローチャートである。
まず、ステップS100でスイッチ走査を行なう。そして、ステップS102で状態変化したか否かの判定を行なう。すなわち、スイッチ操作が行なわれたか否かの判定を行なう。この判定において、スイッチ操作が行なわれたと判断するとステップS104に進み、スイッチ操作が行なわれていないと判断すると処理を抜ける。スイッチ操作が行なわれたと判断してステップS104に進むと、どのスイッチが操作されたかを判定する。この判定において、▲1▼トラック選択スイッチ7が操作されたと判断するとステップS106に進み、TRF(トラックフラグ)を反転させる。すなわち、TRFが”1”であれば”0”にし、TRFが”0”であれば”1”にする。
【0021】
次いで、ステップS108でTRFが”1”であるか否かの判定を行ない、”1”であると判断するとトラック2を選択するので、ステップS110でLED10を点灯させる。LED10を点灯させた後に処理を抜ける。これに対してTRFが”1”でないと判断するとトラック1を選択するので、ステップS112でLED10を消灯する。このようにトラック選択スイッチ7を押す毎にLED10の点灯、消灯を繰り返す。
上記ステップS104の判定において、▲2▼スタート/ストップスイッチ6が操作されたと判断すると、ステップS114でRecFが”1”であるか否かの判定を行ない、”1”でないと判断すると、録音中ではないのでステップS116に進みPSFを反転させる。PSFを反転させた後、ステップS118でPSFが”1”であるか否かの判定を行なう。この判定においてPSFが”1”であると判断すると、スタートを示すためにステップS120でLED9を点灯させる。これに対してPSFが”1”でないと判断すると、ストップを示すためにステップS122でLED9を消灯する。LED9の点灯または消灯を行なった後、ステップS124でトラックを読み出すアドレスであるADレジスタ1、ADレジスタ2をそれぞれ初期化し、処理を抜ける。このようにストップ状態でスタート/ストップスイッチ6が押されると、PSFを”1”にしてLED9を点灯し、スタート状態でスタート/ストップスイッチ6が押されるとPSFを”0”に初期化してLED9を点灯する。そして、トラックを読み出すアドレスであるADレジスタ1、ADレジスタ2を初期化する。
【0022】
上記ステップS114でRecFが”1”であると判断すると、録音中であることからステップS126でRecFを”0”に初期化する。すなわち、録音中にあるときにスタート/ストップスイッチ6が押されると、録音を解除するためにRecFを初期化する。そして、ステップS128でTRFが”1”であるか否かの判定を行なう。この判定においてTRFが”1”であると判断すると、トラック2の録音が行なわれていることから、ステップS130でADレジスタ2に”END”をストアする。これに対してTRFが”1”でないと判断すると、トラック1の録音が行なわれていることから、ステップS132でADレジスタ1に”END”をストアする。ステップS130またはステップS132の処理後、録音終了を示すためにステップS134でLED8を消灯する。LED8の消灯後、ステップS124に進む。このように録音中であれば、RecFを初期化した後、TRFが”1”であればADレジスタ2に”END”をストアし、TRFが”0”であればADレジスタ1に”END”をストアする。そして、LED8を消灯する。
【0023】
上記ステップS104の判定において、▲3▼Recスイッチ5が操作されたと判断すると、ステップS136でPSFが”1”であるか否かの判定を行なう。この判定において、”1”と判断すると処理を抜ける。これに対して”1”でないと判断すると、ステップS138でRecFが”1”であるか否かの判定を行なう。この判定において、”1”と判断すると処理を抜ける。これに対して”1”でないと判断すると、ステップS140でRecFを”1”にする。次いでステップS142でLED8を点灯させる。そして、ステップS144でTを初期化し、ステップS124に進む。このようにPSFが”1”でなく、またRecFが”1”でない場合、RecFを”1”にし、その後、LED8を点灯する。そしてTを初期化する。
【0024】
上記ステップS104の判定において、▲4▼量子化スイッチ16が操作されたと判断すると、ステップS146でQFに”1”にし、処理を抜ける。
また、上記ステップS104の判定において、▲5▼パラメータスイッチ11〜15のうちのいずれかが操作されたと判断すると、ステップS148でQFが”1”であるか否かの判定を行なう。この判定においてQFが”1”でない、すなわち量子化スイッチ16が操作されていないと判断すると、ステップS150でパラメータ入力を行なう。これに対してQFが”1”と判断すると、量子化スイッチ16が操作されたと判断し、処理を抜ける。
【0025】
パラメータ入力処理
図10はパラメータ入力処理を示すフローチャートである。パラメータ入力は上述したようにクオンタイズ処理が行なわれていない時に行なわれる。
まず、ステップS200でどのパラメータが入力されたかを判定し、時間パラメータAが入力されたと判断すると、ステップS202でテンキー13より入力された数値に対応するキーデータをAレジスタにストアし、処理を抜ける。
また、ステップS200でタッチパラメータが入力されたと判断すると、ステップS204でテンキー13より入力された数値に対応するキーデータをCレジスタにストアし、処理を抜ける。
【0026】
また、ステップS200でトラック時間が入力されたと判断すると、ステップS206でTRFが“1”であるか否かの判定を行ない、TRFが“1”であると判断すると、トラック2が選択されているので、ステップS208でキーデータをTR2レジスタにストアする。これに対してステップS206の判定においてTRFが“1”でないと判断すると、トラック1が選択されているので、ステップS210でキーデータをTR1レジスタにストアし、処理を抜ける。
また、ステップS200でトラックタッチが入力されたと判断すると、ステップS212でTRFが“1”であるか否かの判定を行ない、TRFが“1”であると判断すると、トラック2が選択されているので、ステップS214でキーデータをVR2レジスタにストアする。これに対してステップS212の判定においてTRFが“1”でないと判断すると、トラック1が選択されているので、ステップS216でキーデータをVR1レジスタにストアし、処理を抜ける。
【0027】
鍵盤処理
図11は鍵盤処理を示すフローチャートである。
まず、ステップS300で鍵盤走査を行ない、次いでステップS302で状態変化したか、または、そのままかを判定する。この判定において、鍵がオフからオンに状態が変化したと判断すると、ステップS304でノートナンバーをNNレジスタにストアする。次いで、ステップS306でTDレジスタにタッチデータをストアする。そして、ステップS308でNNレジスタの内容とTDレジスタの内容を音源23に送出して発音を指示する。次に、ステップS310でRecFが”1”であるか否かの判定を行ない、”1”でないと判断すると(すなわち録音中でないと判断すると)、処理を抜け、”1”であると判断すると、トラック1またはトラック2のいずれかに録音を行なうためにステップS312でTRFが”1”か否かの判定を行なう。この判定において、TRFが”1”であると判断すると、ステップS314でトラック2のAD2のエリアにTをストアし、次いでステップS316でAD2を1インクリメントする。
【0028】
そして、ステップS318でトラック2のADレジスタ2で示すエリアにNNレジスタの内容とONF(オンフラグ)をストアする。次いで、ステップS320でADレジスタ2を1インクリメントし、その後、ステップS322でトラック2のADレジスタ2で示すエリアにTDレジスタの内容をストアする。次いで、ステップS324でADレジスタ2を1インクリメントし、処理を抜ける。
上記ステップS312でTRFが“1”でないと判断すると、ステップS326でトラック1のADレジスタ1で示すエリアにTをストアし、次いでステップS328でADレジスタ1を1インクリメントする。次にステップS330でトラック1のADレジスタ1で示すエリアにNNレジスタの内容とONF(オンフラグ)をストアする。そして、ステップS332でADレジスタ1を1インクリメントし、ステップS334でトラック1のADレジスタ1で示すエリアにTDレジスタの内容をストアする。そして、ステップS336でADレジスタ1を1インクリメントし、処理を抜ける。
【0029】
上記ステップS302で鍵がオンからオフに状態が変化したと判断すると、ステップS338でノートナンバーをNNレジスタにストアする。次いでステップS340でNNレジスタの内容に対応する楽音と消音を指示する。次にステップS342でRecFが”1”であるか否かの判定を行なう。すなわち録音中であるか否かを判定する。この判定においてRecFが”1”でないと判断すると、メイン処理に戻り、RecFが”1”であると判断すると、トラック1またはトラック2のいずれか一方に録音を行なうためにステップS344でTRFが”1”か否かの判定を行なう。この判定において、TRFが”1”であると判断すると、ステップS346でトラック2のADレジスタ2で示すエリアにTをストアする。次いで、ステップS348でADレジスタ2を1インクリメントする。次いで、ステップS350でトラック2のADレジスタ2で示すエリアにNNレジスタの内容とOFFF(オフフラグ)をストアする。そして、ステップS352でADレジスタ2を1インクリメントし、処理を抜ける。
【0030】
上記ステップS344でTRFが”1”でないと判断すると、ステップS354でトラック1のADレジスタ1で示すエリアにTをストアする。次いでステップS356でADレジスタ1を1インクリメントする。次にステップS358でトラック1のADレジスタ1で示すエリアにNNレジスタの内容と0FFFをストアする。そして、ステップS360でADレジスタ1を1インクリメントし、処理を抜ける。
上記ステップS300で状態に変化がないと判断すると、そのまま何もせず処理を抜ける。
上記T(時間)は録音がスタートしたと同時に”0”になり、時間に経過とともに1づつインクリメントされる。
【0031】
タイマインタラプト処理
図12はタイマインタラプト処理を示すフローチャートである。
まず、ステップS400でRecFが“1”であるか否かの判定を行ない、“1”であると判断すると、ステップS402でTを1インクリメントする。そして、RecFが“1”でないと判断すると、そのままステップS404に進む。
ステップS404に進むと、PSFが“1”であるか否かの判定を行ない、“1”であると判断すると、ステップS406でTD1を1デクリメントする。次いで、ステップS408でTD2を1デクリメントし、処理を抜ける。上記ステップS404でPSFが“1”でないと判断すると、そのまま処理を抜ける。
【0032】
量子化処理
図13は量子化処理を示すフローチャートである。
まず、ステップS500でQFが”1”であるか否かの判定を行ない、”1”でなければ量子化スイッチ16が押されていないものと判断して処理を抜ける。QFが”1”であると判断すると、ステップS502でトラック1およびトラック2にデータが有るか否かの判定を行なう。この判定においてトラック1およびトラック2にデータが無いと判断すると処理ができないので、処理を抜ける。データが有ると判断すると、ステップS504でADレジスタ1およびADレジスタ2を初期化する。
【0033】
ADレジスタ1およびADレジスタ2を初期化した後、ステップS506でADレジスタ1のデータを読み出す。この場合、初期化直後では”0”のデータが読み出される。そして、ステップS508でノートオンデータか否かを判定する。ここではトラック1のノートオンデータを探す。ADレジスタ1の内容がノートオンデータでなければ、ステップS510で”END”であるか否かの判定を行ない、”END”であると判断すると、ステップS511(図14)でQFを初期化する。これに対して”END”でないと判断すると、ステップS512でADレジスタ1を1インクリメントしてステップS506に戻る。ステップS506〜ステップS512を繰り返してノートオンデータを捜し、ノートオンデータが見つかると、ステップS514でノートオンデータの前の時間データであるTをTDAレジスタにストアする。
【0034】
次いで、ステップS516でADレジスタ2の内容を読み出す。この場合、初期化直後では“0”のデータが読み出される。そして、ステップS518でノートオンデータか否かを判定する。ここではトラック2のノートオンデータを探す。ADレジスタ2の内容がノートオンデータでなければ、ステップS520で“END”であるか否かの判定を行ない、“END”であればステップS522でADレジスタ2を初期化した後、ステップS524でADレジスタ1を1インクリメントしてステップS506に戻る。ステップS520で“END”でなければステップS526でADレジスタ2を1インクリメントしてステップS516に戻る。ノートオンデータが見つかると、ステップS528でノートオンデータの前の時間データであるTをTDBレジスタにストアする。
【0035】
次いで、ステップS530でTDBレジスタの内容がTDAレジスタの内容を中心値とする前後の範囲内(TDA−α<TDB<TDA+α)に入っているか否かの判定を行なう。すなわち、図3に示すようにトラック1のノートオンデータに対してトラック2のノートオンデータが所定の範囲内にあるか否かを判定する。この判定においてTDBレジスタの内容がTDAレジスタの内容を中心値とする所定範囲内に入っていないと判断すると、ステップS526でADレジスタ2を1インクリメントして次のデータを読み出す。例えば図3において符号50で示すノートオンデータはこの所定範囲内に入っていないので、このノートオンデータを無視し、次のノートンデータを読み出す。なお、このノートオンデータは所謂”オブリガード”と呼ばれ、故意に付けたフレーズであるとみなす。
【0036】
読み出したデータがノートオンデータであれば、このノートオンデータの前の時間データをTDBレジスタにストアする。そして、上記同様にTDBレジスタの内容がTDAレジスタの内容を中心値とする前後の範囲内(TDA−α<TDB<TDA+α)に入っているか否かの判定を行なう。この判定において、TDBレジスタの内容がTDAレジスタの内容を中心値とする所定範囲内に入っていると判断すると、ステップS532で時間パラメータAによって設定される位置の時刻を求める演算、すなわち上記した(1)式によるTDA+(TDB−TDA)×Aを行ない、その結果をTDQレジスタにストアする。
【0037】
次いで、ステップS534でトラック1の時間データの修正を行なう。すなわち上記した(2)式によるTDA+(TDQ−TDA)×TR1を行ない、その結果をTDCレジスタにストアする。また同様にステップS536でトラック2の時間データの修正を行なう。すなわち上記した(3)式によるTDB+(TDQ−TDB)×TR2を行ない、その結果をTDDレジスタにストアする。次いで、ステップS538でTDCレジスタの内容をADレジスタ1の時間としてストアする。同様にステップS540でTDDレジスタの内容をADレジスタ2の時間データとしてストアする。
【0038】
ここで、トラック1の内容が図7に示すようになっていた場合、ADレジスタ1+1のノートオンデータの前の時間データがADレジスタ1の時間データに当り、この時間データがTDAレジスタにストアされる。また、トラック2の内容が図7に示すようになっていた場合、ADレジスタ2+1のノートオンデータの前の時間データがADレジスタ2の時間データに当り、この時間データがTDBレジスタにストアされる。そして、TDAレジスタの内容を修正したTDCレジスタの内容がADレジスタ1にストアされる。また、TDBレジスタの内容を修正したTDDレジスタの内容がADレジスタ2にストアされる。なお、トラック1、2でENDまでノートオンデータが無い場合は、”オブリガード”として処理を行なわない。
【0039】
次に、ノートオンデータの修正にしたがってノートオフデータの修正を行なう必要から、ステップS542でトラック1のノートオンデータに対応するノートオフデータの前の時間データをTDEレジスタにストアする。同様にステップS544でトラック2のノートオンデータに対応するノートオフデータの前の時間データをTDFレジスタにストアする。ここで、図7に示す場合はADレジスタ1+3の時間データがTDEレジスタにストアされ、ADレジスタ2+3の時間データがTDFレジスタにストアされる。そして、ステップS546でトラック1の時間データに{TDE−(TDC−TDA)}をストアし、同様にステップS548でトラック2の時間データに{TDF−(TDD−TDB)}をストアする。以上により時間データのタイミングの修正が終了する。
【0040】
次に、図15のステップS550でトラック1のノートオンデータの後にあるタッチデータをTOCレジスタにストアする。同様にステップS552でトラック2のノートオンデータの後にあるタッチデータをTODレジスタにストアする。次いで、ステップS554でタッチパラメータCによって設定されるベロシティを求める演算、すなわち上記した(4)式によるTOC+(TOD−TOC)×Cを行ない、その結果をTOQレジスタにストアする。
【0041】
次いで、ステップS556でトラック1のベロシティの修正を行なう。すなわち上記した(5)式によるTOC+(TOQ−TOC)×VR1を行ない、その結果をTOCレジスタにストアする。同様にステップS558でトラック2のベロシティの修正を行なう。すなわち上記した(6)式によるTOD+(TOQ−TOD)×VR2を行ない、その結果をTODレジスタにストアする。次いで、ステップS560でTOCレジスタの内容をトラック1のタッチデータとしてストアする。同様にステップS562でTODレジスタの内容をトラック2のタッチデータとしてストアする。そして、ステップS564でADレジスタ1を1インクリメントした後、ステップS506に戻る。以後、トラック1、2のENDまで同様の処理を繰り返す。
【0042】
再生処理
図16および図17は再生処理を示すフローチャートである。
量子化処理が行なわれた後、この再生処理に移る。まず、ステップS600でPSFが”1”であるか否かの判定を行なう。この判定においてPSFが”1”でない、すなわちストップ状態であると判断すると何もせず処理を抜ける。これに対してPSFが”1”であると判断すると、再生処理であるので初期化をしなければならない。この初期化は最初だけで良いのでPSFが”1”であることを検出したときに最初のデータを読み込む必要がある。その処理を行なうためにステップS602でPSFが”0”から”1”に変化した否かを判定する。すなわち、PSFが立ち上がったか否かを判定する。この判定においてPSFが立ち上がった時であると判断すると、ステップS604でADレジスタ1に対応する時間データを読み出す。そして、この時間データをステップS606でTD1にストアする。次いで、S608でADレジスタ2に対応する時間データを読み出した後、この時間データをステップS610でTD2にストアする。ステップS604〜ステップS610は最初だけで行なわれ、その次からはこれらのステップが省略される。
【0043】
上記ステップS602でPSFが”0”から”1”に変化せず、”1”の状態であると判断すると、ステップS612に進む。また、上記ステップS610の処理が終了した後、このステップS612に進む。ステップS612ではTD1(トラック1の時間データ)が”0”であるか否か、すなわち次のイベント時間まで来ているか否かの判定を行なう。この判定においてTD1が”0”でないと判断すると、すなわち次のイベント時間まで来ていないと判断すると、TD2(トラック2の時間データ)が”0”であるか否かを判定し、TD2が”0”でないと判断すると、処理を抜ける。すなわち、TD1、TD2が共に”0”でなければ処理を抜ける。ここで、TD1、TD2は図12に示すようにタイマインタラプトがかかっているので、PSFが”1”である場合にその値が減算されるようになっている。
【0044】
TD1が減算されて“0”になって次のイベント時間まで来ていると判断すると、ステップS614でADレジスタ1を1インクリメントする。そして、ステップS616でADレジスタ1で示すエリアのデータを読み出し、ステップS618でそのデータの種類を判定する。最初にノートオンデータが読み出されるので、ステップS620でNNレジスタの内容と音色A(トラック1に対して割り付けられた音色であって、図示せぬスイッチにより変えることができる)を音源23に送り、音を発生させる。そして、ステップS614に戻り、ADレジスタ1を1インクリメントする。
【0045】
そして、ステップS616でADレジスタ1で示すエリアのデータを読み出す。この場合、タッチデータが読み出されるのでステップS622に進み、TDの内容を音源23に送ってオン指示する。これによりベロシティと音高と音色が出る。次にステップS614に戻り、ADレジスタ1を1インクリメントし、次のデータを読み出す。この場合、時間データが読み出されるので、この時間データと一つ前の時間データとの差をステップS624でTD1にストアする。この後、ステップS626に進み、TD2の内容が“0”であるか否かの判定を行ない、“0”でないと判断すると処理を抜ける。これに対して、TD2の内容が“0”であると判断すると、ステップS628でADレジスタ2を1インクリメントする。
【0046】
ADレジスタ2を1インクリメントした後、ステップS630でADレジスタ2で示すエリアのデータの読み出しを行ない、ステップS632でそのデータの種類を判定する。最初にノートオンデータが読み出されるので、ステップS634でNNレジスタの内容と音色B(トラック2に対して割り付けられた音色であって、図示せぬスイッチにより変えることができる)を音源23に送り、音を発生させる。そして、ステップS628に戻り、ADレジスタ2を1インクリメントし、ステップS630でADレジスタ2で示すエリアのデータを読み出し、ステップS632でその種類を判定する。この場合、タッチデータが読み出されるのでステップS636でTDの内容を音源23に送ってオン指示する。これにより、ベロシティと音高と音色が出る。そして、ステップS628に戻り、ADレジスタ2を1インクリメントし、次のデータを読み出す。この場合、時間データが読み出される。この時間データと一つ前の時間データとの差をステップS638でTD2にストアし、処理を抜ける。
【0047】
次いで、再度再生処理が始まる。このときはPSFが“1”になっているので、ステップS612に進む。そして、TD1が“0”であるか否かの判定を行なう。この場合、“0”であるのでステップS614でAD1を1インクリメントし、ステップS616でAD1で示すエリアのデータを読み出す。この場合、オフデータが読み出されるので、ステップS640でNNレジスタの内容に対応する音を消音指示する。この処理後、ステップS614に戻り、AD1を1インクリメントし、ステップS616でAD1で示すエリアのデータを読み出す。この場合、時間データが読み出される。この時間データと一つ前の時間データとの差をステップS624でTD1にストアし、ステップS626に進む。
【0048】
ステップS626でTD2が“0”であるか否かの判定を行なう。この場合、“0”であるのでステップS628でAD2を1インクリメントし、ステップS630でAD2で示すエリアのデータを読み出す。この場合、オフデータが読み出されるので、ステップS642でNNレジスタの内容に対応する音を消音指示する。この処理後、ステップS628に戻り、AD2を1インクリメントし、次いでステップS630でAD2で示すエリアのデータを読み出す。この場合、時間データが読み出される。この時間データと一つ前の時間データとの差をステップS638でTD2にストアし、処理を抜ける。
【0049】
上記処理を”END”が来るまで行なう。ステップS618の判定において、AD1で示すエリアのデータが”END”であると判断すると、ステップS644で消音指示を行なう。そして、ステップS646でST1Fを”1”にした後、ステップS648でST2Fが”1”であるか否かの判定を行なう。この判定においてST2Fが”1”であると判断すると、ステップS650でST2Fを”0”にし、次いでステップS652でPSFを”0”にする。
ステップS648の判定において、ST2Fが”1”でないと判断すると、ステップS626に進む。ステップS632の判定において、AD2で示すエリアのデータが”END”であると判断すると、ステップS654で消音指示を行な、次いでステップS656でST2Fを”1”にした後、ステップS658でST1Fが”1”であるか否かの判定を行なう。この判定においてST1Fが”1”でないと判断すると、処理を抜け、”1”であると判断すると、ステップS660でST1Fを”0”にし、次いでステップS662でPSFを”0”にする。
【0050】
なお、上記実施例では、トラック1のイベントデータの発生時刻と所定の時間差以内のトラック2のイベントデータを選択するようにしたが、トラック1の1つのイベントデータの発生時刻にトラック2の複数のイベントデータの発生時刻が近い場合は、その中で発生時刻の最も近いものを選択するようにして良い。
【0051】
【発明の効果】
本発明によれば、複数のトラックの中から2つのトラックを選択し、これらのトラックに記憶されているイベントデータの時間情報や付随する情報(例えばベロシティデータ)を共通の目標値に接近するように修正するようにしたので、人間的なズレやノリといったものを失うことなく、ユニゾン演奏の再現が可能になる。
また、本発明によれば、2つのトラックのイベントデータ同士が所定の時間差以内のものや、最も近いもの同士についてのみ修正を行なうようにしたので、意図しない変更を避けることが可能になる。
【図面の簡単な説明】
【図1】本発明に係る自動演奏装置の一実施例の外観図である。
【図2】同実施例の自動演奏装置の操作パネルの平面図である。
【図3】同実施例の自動演奏装置の特徴を示す図である。
【図4】同実施例の自動演奏装置の特徴を示す図である。
【図5】同実施例の自動演奏装置の特徴を示す図である。
【図6】同実施例の自動演奏装置のブロック図である。
【図7】同実施例の自動演奏装置のトラック上のデータを示す図である。
【図8】同実施例の自動演奏装置のメイン処理を示すフローチャートである。
【図9】同実施例の自動演奏装置のスイッチ処理を示すフローチャートである。
【図10】同実施例の自動演奏装置のパラメータ入力処理を示すフローチャートである。
【図11】同実施例の自動演奏装置の鍵盤処理を示すフローチャートである。
【図12】同実施例の自動演奏装置のタイマインタラプト処理を示すフローチャートである。
【図13】同実施例の自動演奏装置の量子化処理の一部を示すフローチャートである。
【図14】同実施例の自動演奏装置の量子化処理の一部を示すフローチャートである。
【図15】同実施例の自動演奏装置の量子化処理の一部を示すフローチャートである。
【図16】同実施例の自動演奏装置の再生処理の一部を示すフローチャートである。
【図17】同実施例の自動演奏装置の再生処理の一部を示すフローチャートである。
【符号の説明】
2 鍵盤
7 トラック選択スイッチ
18 CPU(検索手段、選択手段および修正手段)
19 ROM
20 RAM
21 タッチ検出回路
22 楽曲データRAM
23 音源
24 発音回路
100 トラック指定手段
Claims (2)
- 演奏情報としてのイベントデータとその発生時刻を特定する時間データを記録するためのトラックを複数有する自動演奏装置であって、
前記複数のトラックの中から少なくとも2つのトラックを指定するトラック指定手段と、
前記トラック指定手段により指定された一方のトラックに記録されている各イベントデータの発生時刻に近い他方のトラックのイベントデータを検索する検索手段と、
前記一方のトラックの1つのイベントデータの発生時刻に近い前記他方のトラックの1つのイベントデータを選択して組指定する選択手段と、
2つのイベントデータに共通する発生時刻の修正目標値を規定する第1の目標パラメータを設定する第1の設定手段と、
前記選択手段にて組指定された2つのイベントデータについて、前記第1の目標パラメータにて規定された発生時刻の修正目標値に接近するように、それぞれの発生時刻を修正する修正手段と、
を備えたことを特徴とする自動演奏装置。 - 2つのイベントデータに共通するベロシティの修正目標値を規定する第2の目標パラメータを設定する第2の設定手段をさらに備えるとともに、
前記修正手段は、前記選択手段にて組指定された2つのイベントデータについて、前記第2の目標パラメータにて規定されたベロシティの修正目標値に接近するように、それぞれのベロシティを修正することを特徴とする請求項1記載の自動演奏装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35079293A JP3551458B2 (ja) | 1993-12-28 | 1993-12-28 | 自動演奏装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35079293A JP3551458B2 (ja) | 1993-12-28 | 1993-12-28 | 自動演奏装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07199911A JPH07199911A (ja) | 1995-08-04 |
JP3551458B2 true JP3551458B2 (ja) | 2004-08-04 |
Family
ID=18412906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35079293A Expired - Fee Related JP3551458B2 (ja) | 1993-12-28 | 1993-12-28 | 自動演奏装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3551458B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3627675B2 (ja) * | 2001-06-07 | 2005-03-09 | ヤマハ株式会社 | 演奏データ編集装置及び方法並びにプログラム |
JP4821532B2 (ja) * | 2006-09-21 | 2011-11-24 | ヤマハ株式会社 | アルペジオ演奏装置及びプログラム |
JP5548975B2 (ja) * | 2009-06-02 | 2014-07-16 | カシオ計算機株式会社 | 演奏データ生成装置およびプログラム |
-
1993
- 1993-12-28 JP JP35079293A patent/JP3551458B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07199911A (ja) | 1995-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4881440A (en) | Electronic musical instrument with editor | |
JPH02259696A (ja) | 自動演奏ピアノの打鍵制御装置 | |
US7307208B2 (en) | High-fidelity automatic player musical instrument, automatic player used therein and method employed therein | |
JP2623809B2 (ja) | 自動押鍵指示装置 | |
JP3551458B2 (ja) | 自動演奏装置 | |
US20040261606A1 (en) | Musical instrument system capable of locating missing remote controller, musical instrument, remote controller and method used therein | |
JP3743024B2 (ja) | 演奏練習装置 | |
JPH0876758A (ja) | 自動伴奏装置 | |
US5629491A (en) | Tempo control apparatus | |
JP4471697B2 (ja) | 電子楽器 | |
JP3513830B2 (ja) | 演奏運指装置 | |
JP3743364B2 (ja) | 演奏練習装置 | |
JP3336690B2 (ja) | 演奏データ処理装置 | |
JP3367183B2 (ja) | 電子楽器 | |
JPH08717Y2 (ja) | 電子鍵盤楽器 | |
JP2763529B2 (ja) | 電子楽器 | |
JP3471480B2 (ja) | テンポ制御装置 | |
JPH0631964B2 (ja) | 電子楽器 | |
JP4067399B2 (ja) | グリッサンド制御装置 | |
JP2526101B2 (ja) | 電子管楽器 | |
JP3538873B2 (ja) | 自動演奏装置 | |
JP2722880B2 (ja) | 電子楽器 | |
JP3120487B2 (ja) | 自動伴奏機能付電子楽器 | |
JP3155374B2 (ja) | 音階制御装置 | |
JP2542316B2 (ja) | 自動伴奏装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040202 |
|
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: 20040406 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040419 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080514 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100514 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120514 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |