JP3609045B2 - Automatic performance device - Google Patents
Automatic performance device Download PDFInfo
- Publication number
- JP3609045B2 JP3609045B2 JP2001309788A JP2001309788A JP3609045B2 JP 3609045 B2 JP3609045 B2 JP 3609045B2 JP 2001309788 A JP2001309788 A JP 2001309788A JP 2001309788 A JP2001309788 A JP 2001309788A JP 3609045 B2 JP3609045 B2 JP 3609045B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- performance
- automatic performance
- sound
- 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
【0001】
【発明の属する技術分野】
本発明は、数小節程度の演奏パターンを繰り返すことにより自動演奏を行う自動演奏装置に関する。
【0002】
【従来の技術】
従来、予め記憶手段に記憶された数小節(2〜16小節程度)分の自動演奏データ(以下、「パターンデータ」という。)を繰り返して読み出して音源に与えることにより所定の演奏パターンを再生する自動演奏装置が知られている。
【0003】
この種の自動演奏装置は、パターンデータを機械的に読み出して再生するだけであるので、発音のタイミングや音量等に揺らぎがなく画一的であり、人間味に欠けるという欠点があった。そこで、かかる画一的な自動演奏を回避して揺らぎを持たせるために、発音タイミングや音量等をランダムに変化させることにより人間の感情の周期にマッチさせる試みがなされている。発音タイミングや音量等をランダムに変化させれば変化に富んだ自動演奏は可能である。しかしながら、人間の感情の周期にマッチした演奏パターン、例えばノリの良い演奏パターンを実現することは困難であった。
【0004】
従って、従来は、例えばノリの良い自動演奏を行うためには、たとえ2小節の演奏パターンの繰り返しで成る自動演奏曲であっても、曲の最初から最後までのパターンデータを作成して記憶しておき、それを忠実に再生する必要があった。従って、人間の感情の周期にマッチした演奏パターンを得るためには膨大なメモリ容量を必要とするという問題があった。
【0005】
また、上記のような自動演奏装置は、複数パート(例えばリズム、ベース、アカンパニメント及びメロディ等)を有し、各パートがそれぞれ独立して制御できるように構成される場合も多い。例えば、特開昭58−35597号公報には、複数パートを同時に再生でき、また、各パート単位で発音するかどうかを制御可能にした自動演奏装置が開示されている。この自動演奏装置によれば、複数のパートを同時に発音することにより、多重演奏を行わせることができる。
【0006】
しかしながら、複数パートを有する自動演奏装置においては、特定パートの演奏を自動演奏でなく人が行うという応用が望まれている。例えば、リズム、ベース、アカンパニメントの各パートは自動演奏にまかせメロディパートは人が弾くといった具合である。このためには、パート単位で随時再生又は停止の制御が可能である必要がある。上掲の公報に開示された自動演奏装置は、RUNスイッチを投入してスタートパルスが発生したときには既に再生(又は録音)すべきパートは確定している必要があり、演奏途中でパートスイッチを変化させることは予定されていない。即ち、演奏途中でパートスイッチをオンにしてもそのパートの再生はできない。
【0007】
【発明が解決しようとする課題】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、自動演奏の途中からでも特定パートの再生又は停止を行わせることのできる自動演奏装置を提供することにある。
【0008】
【課題を解決するための手段】
上記目的を達成するために、本発明は、複数パートのパターンデータを記憶したパターンデータ記憶手段と、自動演奏の時間進行を管理する時間管理手段と、該時間管理手段の内容に基づいて前記パターンデータ記憶手段に記憶された全パートのパターンデータを順次読み出すパターンデータ読出手段と、該パターンデータ読出手段により読み出されたパターンデータに基づいて作成された全パートの演奏データを記憶する演奏データ記憶手段と、該演奏データ記憶手段に記憶された演奏データを自動演奏の進行に応じて更新する更新手段と、各パートの発音を指示する指示手段と、該指示手段により指示されたパートについてのみ発音する発音手段とを有し、前記発音手段は、前記指示手段により新たなパートの発音指示がなされた場合に、そのパートに対応する前記演奏データ記憶手段中の演奏データに基づき発音することを特徴とする。
【0009】
本発明においては、全パートのパターンデータを時間管理手段、例えば小節レジスタ/拍レジスタ等の内容に従って順次読み出し、これから演奏データを作成して演奏データ記憶手段に記憶する。この演奏データ記憶手段に記憶された演奏データのうち、指示手段で指示されたパートに対応する演奏データのみが発音される。この演奏データ記憶手段の内容は、発音の有無とは独立に自動演奏の進行に応じて更新される。
【0010】
自動演奏の途中で新たなパートの発音指示がなされた場合は、演奏データ記憶手段に記憶されている演奏データが既に発音開始タイミングを過ぎていても、未だ消音タイミングに至らない音については途中からであっても発音を開始する。
【0011】
これにより、演奏者の指示手段による指示タイミングが多少ずれる(遅れる)ことにより、本来発音されるべき音が発音されないという事態を回避できるので、演奏者の意図したタイミングで特定パートの自動演奏を完全な形で開始させることができるという効果がある。
【0012】
なお、指示手段で所定のパートをオフにすべきことが指示された場合は、その指示手段に対応するパートで発音中の音は全て速やかに発音を中止するように構成することができる。例えば、長いサスティンがかかっている音色やピアノ音でダンパーオンされているような場合でも、それらのエンベロープよりも格段に高速なリリースエンベロープに置き換えて発音を終了させることができる。
【0013】
このように、特定パートの自動演奏を演奏者の所望のタイミングで開始させ又は終了させることができるということは、パターンデータに基づく発音又は消音のタイミングよりも細かいタイミングで、特定パートの自動演奏を行わせたり停止したりすることができることを意味し、新たな演奏形態が可能になるという効果がある。
【0014】
また、本発明における前記発音手段は、新たなパートの発音指示がなされた場合に、前記演奏データ記憶手段に記憶されている演奏データのうち、残りの発音時間が所定値以上のときにのみ新たに発音するように構成できる。
【0015】
この構成によれば、新たなパートの発音指示がなされた場合に、未だ消音タイミングに至っていないが、残りの発音時間が所定値より小さければ発音を行わず、所定値以上の場合にのみ発音を行う。
【0016】
これにより、発音されてもすぐに消音されてしまうような、聴感には何等の影響を与えない音に対しては、最初から発音されないので、例えば発音手段の一部としてCPUを用いる場合は、CPUの負荷が軽減される。この場合、CPUは他の処理を実行することが可能となるので、より効率の良い自動演奏装置を実現できる。
【0017】
【発明の実施の形態】
以下、本発明の自動演奏装置の実施の形態につき、図面を参照しながら詳細に説明する。
【0018】
図1は、本発明の自動演奏装置の実施の形態の構成を示すブロック図である。本自動演奏装置は、中央処理装置(以下、「CPU」という。)10、リードオンリメモリ(以下、「ROM」という。)11、ランダムアクセスメモリ(以下、「RAM」という。)12、操作パネル13、楽音発生器14、タイマ16、MIDIコントローラ17及びFDコントローラ18がシステムバス30を介して相互に接続されて構成されている。システムバス30は、例えばアドレス線、データ線及び制御信号線等で成り、上記各構成要素間で各種データを送受するために使用される。
【0019】
CPU10は、パターンデータ読出手段、発音手段の一部及び更新手段に対応するものであり、ROM11に格納されている制御プログラムに従って、本自動演奏装置の全体を制御する。このCPU10には、2つの割込信号入力端子INT1及びINT2が設けられている。割込信号入力端子INT1にはMIDIコントローラ17から、割込信号入力端子INT2にはタイマ16からそれぞれ割込信号が供給される。このCPU10の動作の詳細については後述する。
【0020】
ROM11には、上述したCPU10を動作させるための制御プログラムが記憶されている他、CPU10が各種処理に用いる種々の固定データが記憶されている。このROM11の内容はCPU10により読み出される。即ち、CPU10は、ROM11から制御プログラム(命令)を読み出して解釈・実行すると共に、所定の固定データを読み出して各種処理に使用する。
【0021】
RAM12はパターンデータ記憶手段に対応するものである。RAM12は、CPU10が使用する種々のデータを一時記憶する。このRAM12には、例えばバッファ、レジスタ、カウンタ、フラグ等の各種領域が定義されている。本実施の形態で使用する具体的なバッファ、レジスタ、カウンタ、フラグ等については、以下において出現する都度説明するが、ここでは、「受信バッファ」、「レジスタ群n」及び「小節レジスタと拍レジスタ」について説明しておく。
【0022】
▲1▼受信バッファ
受信バッファは、後述するMIDIコントローラ17から受信したMIDIデータを一時記憶するために使用される。この受信バッファは、例えば図13に示されるように、RAM12に定義されたカウンタCTR、ポインタPTR及び記憶エリアとで構成され、CPU10の制御によりFIFO(ファーストイン−ファーストアウト)メモリとして機能するようになっている。記憶エリアは、例えば256個のエントリを有し、各エントリにはMIDIデータが順次記憶される。
【0023】
カウンタCTRは受信したMIDIデータを書き込むべき記憶エリアの位置を指定する。このカウンタCTRは、常に最後に書き込まれたMIDIデータの次のアドレスを指示するように制御される。このカウンタCTRの初期値は「0」であり、MIDIデータが書き込まれる度にインクリメントされ、その結果が最大値TOPを越えた場合は最小値BTMに循環する。
【0024】
ポインタPTRは記憶エリア中の、読み出すべきMIDIデータの位置を指示する。このポインタPTRは、常に最後に読み出されたMIDIデータの次のアドレス、つまり次に読み出すべきMIDIデータのアドレスを指示するように制御される。このポインタPTRの初期値は「0」であり、MIDIデータが読み込まれる度にインクリメントされ、その結果が最大値TOPを越えた場合は最小値BTMに循環する。
【0025】
この受信バッファは、カウンタCTRの内容とポインタPTRの内容とが一致するときはエンプティであると判断される。なお、カウンタCTRをインクリメントした結果、カウンタCTRの内容がポインタPTRの内容に一致することとなる場合は受信バッファは満杯であるのでMIDIデータの受信を抑止するように制御される。カウンタCTRの内容とポインタPTRの内容とが一致しない場合は、受信バッファにMIDIデータが存在することが判断される。
【0026】
この受信バッファへのMIDIデータの書込みは後述するMIDI−IN割込処理ルーチンにて行われ、受信バッファからのMIDIデータの読み出しは後述するMIDI−IN処理ルーチンで行われる。なお、本実施の形態では受信バッファをRAM12内に形成し、MIDIデータの書込み/読み出しの制御はCPU10で行うように構成したが、これらの代わりに周知のFIFOメモリ素子を用いて構成することもできる。
【0027】
▲2▼レジスタ群n
レジスタ群nは演奏データ記憶手段に対応するものである。レジスタ群n(nはパート番号に対応しており、n=1〜4である。)は、パート毎の発音を管理するために使用される。本実施の形態における各パートのポリフォニック数を「8」とすると、このレジスタ群nは、例えば図14(A)に示されるように、8個のブロックで構成される。各ブロックは1音に対応しており、演奏データに対応する「キーコード及びそのオン/オフ」、「補正ベロシティ」、「残存ゲートタイム」の3バイトで構成されている。
【0028】
キーコード(7ビット)は音高を示すために使用される。オン/オフビット(1ビット)はキーコードで示される音がキーオン状態にあるか又はキーオフ状態にあるかを示すために使用される。補正ベロシティ(7ビット)はパターンデータ中のベロシティをベロシティ補正データに応じて補正したデータである。残存ゲートタイム(7ビット)は発音中の音(オン/オフビットが「1」になっている音)の残りの発音時間を示すために使用される。図14(A)においては、1つのパートに対するレジスタ群のみ示されているが、実際はパート1〜4のそれぞれに対して同じ構成のレジスタ群が設けられている。
【0029】
▲3▼小節レジスタと拍レジスタ
小節レジスタBRR及び拍レジスタBTRは時間管理手段に対応する。小節レジスタBRRは、小節の進行を計数するレジスタである。この小節レジスタBRRは、10進数4桁分に相当する計数が可能である。また、拍レジスタBTRは小節内の拍の進行を計数するレジスタである。この拍レジスタBTRは、1ステップタイム毎にカウントアップされる。本実施の形態では、1拍を48ステップの分解能としている。従って、拍レジスタBTRは、4拍子の場合は4拍、つまり192ステップを計数したらゼロにラウンドする。この際、小節レジスタBRRはインクリメントされるように制御される。この小節レジスタBRRと拍レジスタBTRとは、揺らぎを発生させるためのステップタイム補正データ及びベロシティ補正データを読み出すために使用される(詳細は後述する)。
【0030】
このRAM12には、上述したようなバッファ、レジスタ等が定義されている他、パターンデータ及び揺らぎデータが格納されるようになっている。揺らぎデータは、ステップタイム補正データとベロシティ補正データとで構成されている。以下、これらの各データについて説明する。
【0031】
▲1▼パターンデータ
パターンデータは、例えば2〜16小節程度の演奏パターンを発生させるために使用される。このパターンデータは、例えば図14(B)に示されるような、ステップタイム、ノートナンバ(キーコード)、ゲートタイム及びベロシティといった4バイトのデータの集合で構成されている。個々のパターンデータは、1つの音符に対応している。ここに、ステップタイムは発音を開始する時刻を指定するものであり小節の先頭からのステップ数で規定される。ノートナンバは音高を規定するために使用される。ゲートタイムは発音時間を規定するために使用される。ベロシティは発音の強さ(音量)を規定するために使用される。
【0032】
▲2▼ステップタイム補正データ
ステップタイム補正データは、例えば図15にその一部を示すように、各パート1〜4のそれぞれについて1曲の全小節分が用意されている。本実施の形態では1拍(4分音符)を48ステップの分解能で制御するものとしている。従って、ステップタイム補正データは、図15に拡大して示すように、各拍のステップタイムを±24ステップの範囲内で変動できるように定義されている。これにより、最大8分音符の長さまで発音タイミングを遅らせ又は進ませることができる。ただし、負側に補正する場合は、ステップタイム補正データは、後述するパート1〜4読出処理ルーチン(図9、図10)における処理の関係上、1つ前のデータに対して「−1ステップ」分だけ変化するように作成される。
【0033】
なお、ステップタイム補正データは、1小節を4つのエリア(4分音符単位)に分割し、各エリア毎に用意されている。従って、1つのエリアの中に複数のキーイベントがある場合は、同一のステップタイム補正データが使用されることになる。かかるデータ構成によりステップタイム補正データの量を小さく抑えることができるものとなっている。
【0034】
▲3▼ベロシティ補正データ
ベロシティ補正データは、例えば図16にその一部を示すように、各パート1〜4のそれぞれについて1曲の全小節分が用意されている。本実施の形態では1拍(4分音符)毎の補正レートVAnを補正データとして記憶している。即ち、ベロシティ補正データは、図16に拡大して示すように、各拍毎に「0.0〜2.0」の範囲内で変動できるように定義されている。従って、1倍を中心に0倍から2倍までの範囲でベロシティを補正できる。
【0035】
なお、ベロシティ補正データも上記ステップタイム補正データと同様に、1小節を4つのエリア(4分音符単位)に分割し、各エリア毎に用意されている。従って、1つのエリアの中に複数のキーイベントがある場合は、同一のベロシティ補正データが使用されることになる。かかるデータ構成によりベロシティ補正データの量を小さく抑えることができるものとなっている。
【0036】
図1の説明に戻る。操作パネル13には、本自動演奏装置と操作者とがコミュニケーションするための各種スイッチ、表示器等が設けられている。この操作パネル13の詳細については後述する。
【0037】
楽音発生器14は発音手段の一部に対応するものであり、CPU10からシステムバス30を介して送られてくるデータに基づいて楽音信号を生成するものである。この楽音発生器14で発生された楽音信号は、スピーカシステム16に送られる。スピーカシステム16は発音手段の一部に対応するものであり、例えば増幅器、スピーカ等で構成されており、楽音発生器14から送られてくる楽音信号を音響信号に変換して放音する周知のものである。
【0038】
タイマ16は、テンポに対応した間隔で割込信号を発生する。この割込信号の発生間隔は、CPU10からタイマ16にセットされるデータにより決定される。このタイマ16で発生された割込信号はCPU10の割込信号入力端子INT2に供給される。本実施の形態では、4分音符を1/48の分解能(精度)で制御するものとしている。従って、4分音符当たりに48回の割込信号が発生されることになる。
【0039】
MIDIコントローラ17は、外部装置と本自動演奏装置との間のMIDIデータの転送を制御するものである。このMIDIコントローラ17の外部側に接続される外部装置としては、例えばMIDIデータを処理することのできる電子楽器、音源モジュール、コンピュータ、シーケンサ等が挙げられる。MIDIコントローラ17は、外部装置からシリアルに送られてくるMIDIデータを受信し、これが例えば1バイト分になった時点で割込信号を発生する。この割込信号は、CPU10の割込信号入力端子INT1に供給される。
【0040】
FDコントローラ18は、フロッピーディスクドライブ装置19を制御するものである。フロッピーディスクドライブ装置19に装着されるフロッピーディスクには、例えば、パターンデータ、揺らぎデータ等が記憶される。そして、操作パネルに設けられた所定のスイッチ(図示しない)を操作することにより、フロッピーディスクに記録されている上記パターンデータ、揺らぎデータがFDコントローラ18を介してRAM12の所定領域にロードされる。
【0041】
図2は本自動演奏装置の操作パネル13の構成例を示す図である。小節/拍表示器130は、例えば5桁の7セグメントLED表示器で構成されている。この小節/拍表示器130の上位4桁には、現在自動演奏されている「小節」、つまり小節レジスタBRRの内容が表示され、下位1桁には現在自動演奏されている「拍」、つまり拍レジスタBTRの内容に対応する拍(具体的には、4拍子の場合は、拍レジスタBTRの内容を48で割って得られる商に1を加えた値)が表示される。この小節/拍表示器の表示内容は、自動演奏の進行に伴って順次更新される。
【0042】
コード表示器131は、例えばLCD表示器で構成されている。このコード表示器131には、後述するコード検出処理で検出されたコード(コードルート及びコードタイプ)が表示される。本実施の形態では、MIDIチャンネル1(MIDI−CH1)により送られてきたMIDIデータをロワー鍵からのデータとみなし、これに対してコード検出を行うものとする。従って、このコード表示器131には、MIDIチャンネル1から送られてきたMIDIデータに基づいて検出されたコードが表示される。なお、コード検出は、MIDIチャンネル1から送られてきた演奏データに限定されず、他の任意のMIDIチャンネル、或いは複数のMIDIチャンネルから送られてきた演奏データを対象とするように構成しても良い。
【0043】
テンポスピード表示器132は、例えば3桁の7セグメントLED表示器で構成されている。このテンポスピード表示器132には、現在設定されているテンポスピードが表示される。
【0044】
なお、小節/拍表示器130及びテンポスピード表示器132は、7セグメントのLED表示器で構成したが、LCD表示器、CRT表示器、その他の種々の表示器で構成することができる。同様に、コード表示器131もLCD表示器に限定されず、CRT表示器、その他の種々の表示器で構成することができる。
【0045】
インクリメンタ133は、テンポを設定するために使用される。このインクリメンタ133は、例えば右回転させることによりテンポが増加し、左回転させることによりテンポが減少するように制御される。そして、このインクリメンタ133で設定されたテンポは、テンポスピード表示器132に表示される。
【0046】
ストップスイッチ134は、自動演奏を停止させるために使用される。即ち、自動演奏中にストップスイッチ134が押されると自動演奏は停止される。プレイ/ポーズスイッチ135は、自動演奏を開始させ又は一時停止させるために使用される。自動演奏の停止中又はポーズ(一時停止)状態にあるときに、このプレイ/ポーズスイッチ135が押されるとLED表示器143が点灯されて自動演奏が開始又は再開され、自動演奏中に押されるとLED表示器143が消灯されてポーズ状態になる。
【0047】
FFスイッチ136は、テンポスピードを上げて再生するために使用される。即ち、自動演奏状態にあるときにFFスイッチ136が押されるとLED表示器144が点灯されて高速再生が行われ、次に押されるとLED表示器144が消灯されて元のテンポスピードに戻る。REWスイッチ137は、再生位置を戻すために使用される。即ち、このREWスイッチ137が押下されるとLED表示器145が点灯されて小節/拍数が減少(リワインド)する。このリワインド状態は小節/拍表示器130で確認することができる。リワインド状態で再度REWスイッチ137が押されるとLED表示器145が消灯されて自動演奏の再生が再開される。
【0048】
リピートスイッチ138は、曲を繰り返し自動演奏させるために使用される。即ち、自動演奏を開始させる前にこのリピートスイッチ138が押されるとLED表示器146が点灯され、曲の最後まで自動演奏が行われると最初に戻って同じ曲の自動演奏が繰り返される。この状態で再度リピートスイッチ138が押されるとLED表示器146が消灯されて自動演奏の繰り返し再生状態は解除される。なお、このリピートスイッチ138は、自動演奏状態で所定の操作を行うことにより、曲の特定区間を繰り返し再生するためにも使用されるがここでは説明は省略する。
【0049】
パートスイッチ139〜142は指示手段に対応するものである。パート1スイッチ139は、リズムパートの発音を指示するために使用される。このパート1スイッチ139が押されるとLED表示器147が点灯されてリズムパートが発音され、次に押されるとLED表示器147が消灯されてリズムパートの発音は停止される。同様に、パート2スイッチ140は、ベースパートの発音を指示するために使用される。このパート2スイッチ140が押されるとLED表示器148が点灯されてベースパートが発音され、次に押されるとLED表示器148が消灯されてベースパートの発音は停止される。
【0050】
同様に、パート3スイッチ141は、アカンパニメントパート(例えばコードパート等)の発音を指示するために使用される。このパート3スイッチ141が押されるとLED表示器149が点灯されてアカンパニメントパートが発音され、次に押されるとLED表示器149が消灯されてアカンパニメントパートの発音が停止される。同様に、パート4スイッチ142は、メロディパートを指示するために使用される。このパート4スイッチ142が押されるとLED表示器150が点灯されてメロディパートが発音され、次に押されるとLED表示器150が消灯されてメロディパートの発音が停止される。
【0051】
上記各パートのうち、リズムパート、ベースパート及びアカンパニメントパートは1〜数小節程度のパターンデータの繰り返し実行により発音されるものであり、本発明は、これら各パートに揺らぎを与えて単調さを解消するものである。なお、メロディパートは、1曲分の全パターンデータが記憶される。
【0052】
操作パネル13には、上記以外に複数の音色の中から所望の音色を選択する音色選択操作子、音量を調整する音量操作子、フロッピーディスクからのデータをRAM12にロードするための操作子等が設けられているが、本発明とは直接関係しないので図示及び説明は省略する。
【0053】
上記のように構成される操作パネル13の各スイッチ等の設定状態は次のようにしてCPU10に読み込まれる。即ち、CPU10は操作パネル13に対してスキャン指令を送出する。操作パネル13は、このスキャン指令に応答して操作各スイッチのオン/オフを示す信号及びインクリメンタ133の現在値を示す信号をCPU10に送る。CPU10は、受け取った信号からパネルデータ(各スイッチのオン/オフを1ビットに対応させたスイッチデータとインクリメンタ133の設定値を示すインクリメンタデータとで成る。)を生成する。このパネルデータは、CPU10の制御下でRAM12に格納され、パネルイベントの有無を判断するために使用される(詳細は後述)。
【0054】
次に、本発明の自動演奏装置の動作につき、図3〜図12に示したフローチャートを参照しながら詳細に説明する。
【0055】
(1)メイン処理(図3)
図3は、本発明の自動演奏装置のメインルーチンを示すフローチャートであり、電源投入により起動される。電源が投入されると、先ず、初期化処理が行われる(ステップS10)。この初期化処理では、CPU10の内部状態が初期状態に設定されると共に、RAM12に定義されているレジスタ、カウンタ或いはフラグ等に初期値が設定される。
【0056】
この初期化処理が終了すると、次いでパネルスイッチスキャン処理が行われる(ステップS11)。即ち、CPU10は操作パネル13に対してスキャン指令を送出する。これにより、操作パネル13は、既に説明したようにパネルデータを生成し、CPU10に送る。CPU10は、このパネルデータ(以下、「新パネルデータ」という。)をRAM12の所定領域に格納する。次いで、前回のパネルスイッチスキャン処理で読み込んで既にRAM12に記憶されているパネルデータ(以下、「旧パネルデータ」という。)と、上記新パネルデータとを比較して相違するビットをオンにしたパネルイベントマップを作成する。
【0057】
次いで、イベントの有無が調べられる(ステップS12)。これは、上記パネルイベントマップを参照することにより行われる。即ち、パネルイベントマップ中にオンになっているビットが1つ以上存在するかどうかが調べられ、1つも存在しなければイベントはなかったものと、1つ以上存在すればイベントがあったものとそれぞれ判断される。このステップS12でイベントがあることが判断されるとパネル制御処理が行われ(ステップS13)、そうでなければパネル制御処理はスキップされる。このパネル制御処理の詳細については後述する。
【0058】
次いで、受信バッファに受信データ(MIDIデータ)があるかどうかが調べられる(ステップS14)。これは、上述したように、カウンタCTRの内容とポインタPTRの内容とが一致するかどうかを調べることにより行われる。ここで受信バッファに受信データがあることが判断されるとMIDI−IN処理が行われ(ステップS15)、そうでなければMIDI−IN処理はスキップされる。このMIDI−IN処理の詳細については後述する。
【0059】
次いで、パート1〜4読出処理が実行される(ステップS16)。この処理は、各パートのパターンデータを読み出して楽音を再生する処理である。このパート1〜4読出処理の詳細については後述する。
【0060】
次いで、「その他の処理」が行われる(ステップS17)。この「その他の処理」では、フロッピーディスクの制御、音色選択処理、ボリューム設定処理等が行われるが、本発明とは直接関係しないので説明は省略する。その後、ステップS11に戻り、以下同様の処理が繰り返される。
【0061】
(2)MIDI−IN割込処理(図4)
このMIDI−IN割込処理は、メインルーチンの処理に割り込んで実行される。このMIDI−IN割込処理では、MIDIコントローラ17で受信されたMIDIデータが受信バッファに格納される。MIDIコントローラ17は、外部装置からシリアルに送られてくるMIDIデータが1バイト分になると割込信号を発生する。この割込信号はCPU10の割込信号入力端子INT1に供給される。これにより、CPU10は割込モードに入り、本MIDI−IN割込処理ルーチンがコールされる。
【0062】
MIDI−IN割込処理では、先ず、MIDIコントローラ17からMIDIデータが読み込まれ、これが受信バッファのカウンタCTRで示される位置に書き込まれる(ステップS20)。次いで、カウンタCTRがインクリメントされ(ステップS21)、その結果が記憶エリアの最大値TOPを越えたかどうかが調べられる(ステップS22)。そして、最大値TOPを越えていないことが判断されるとこのMIDI−IN処理ルーチンからメインルーチンの割り込まれた位置に戻る。一方、上記ステップS22で最大値TOPを越えたことが判断されると、カウンタCTRの内容が最小値BTMに書き換えられ(ステップS23)、その後、このMIDI−IN処理ルーチンからメインルーチンの割り込まれた位置に戻る。これにより、最大値TOPから最小値BTMへラウンドする循環バッファの機能が実現されている。
【0063】
なお、図中には示されていないが、カウンタCTRをインクリメントした結果がポインタPTRの値を越えることとなる場合は受信バッファは満杯であるので、MIDIデータの取り込み処理は抑止される。
【0064】
(3)パネル制御処理(図5)
次に、メインルーチンのステップS13で行われるパネル制御処理の詳細について、図5のフローチャートを参照しながら説明する。
【0065】
このパネル制御処理ルーチンは、メインルーチンでパネルスイッチ等のイベントがあったことが判断された場合にコールされる。パネル制御処理では、先ず、インクリメンタ133のイベントがあるかどうかが調べられる(ステップS30)。即ち、新旧両パネルデータ中のインクリメンタデータが比較され、これらが相違する場合にインクリメンタ133のイベントがあったことが判断される。このステップS30でインクリメンタ133のイベントがあったことが判断されるとテンポスピード処理が行われ(ステップS31)、そうでなければテンポスピード処理はスキップされる。テンポスピード処理では、新パネルデータ中のインクリメンタデータがタイマ16にセットされると共に、テンポスピード表示器132に送られる。これによりタイマ16から発生される割込信号の間隔が変更されて自動演奏のテンポスピードが変更される。また、変更後のテンポスピードがテンポスピード表示器132に表示される。
【0066】
次いで、ストップスイッチ134のイベントがあるかどうかが調べられる(ステップS32)。これは、パネルイベントマップ中のストップスイッチ134に対応するビットが「1」であるかどうかを調べることにより行われる。ここでストップスイッチ134のイベントがあることが判断されるとストップ処理が行われ(ステップS33)、そうでなければストップ処理はスキップされる。ストップ処理では、RAM12に定義されている自動演奏フラグが「0」にクリアされる。これにより、後述するタイマ割込処理(図12)において小節レジスタBRR及び拍レジスタBTRの更新が抑止されて自動演奏の進行が停止され、各パートの発音が停止される。
【0067】
次いで、プレイ/ポーズスイッチ135のイベントがあるかどうかが調べられる(ステップS34)。これは、パネルイベントマップ中のプレイ/ポーズスイッチ135に対応するビットが「1」であるかどうかを調べることにより行われる。ここでプレイ/ポーズスイッチ135のイベントがあることが判断されるとプレイ処理が行われ(ステップS35)、そうでなければプレイ処理はスキップされる。プレイ処理では、上記自動演奏フラグが「0」、つまり自動演奏停止中にプレイ/ポーズスイッチ135が押されたことが判断されると自動演奏フラグが「1」にセットされると共に、LED表示器143が点灯される。これにより、後述するタイマ割込処理(図12)において小節レジスタBRR及び拍レジスタBTRの更新が開始され、自動演奏が進行される。逆に、自動演奏フラグが「1」、つまり自動演奏中にプレイ/ポーズスイッチ135が押されたことが判断されると自動演奏フラグが「0」にクリアされると共に、LED表示器143が消灯される。これにより、上記ストップスイッチ134が押された時と同様の処理が行われて各パートの発音が停止される。
【0068】
次いで、FFスイッチ136のイベントがあるかどうかが調べられる(ステップS36)。これは、パネルイベントマップ中のFFスイッチ136に対応するビットが「1」であるかどうかを調べることにより行われる。ここでFFスイッチ136のイベントがあることが判断されるとFF処理が行われ(ステップS37)、そうでなければFF処理はスキップされる。FF処理では、RAM12に定義されたFFフラグが「0」、つまり通常再生中にFFスイッチ136が押されたことが判断されるとFFフラグが「1」にセットされ、タイマ16に所定のデータがセットされると共に、LED表示器144が点灯される。これにより、テンポスピードが早くなって高速再生が行われる。逆に、FFフラグが「1」、つまり高速再生中にFFスイッチ136が押されたことが判断されるとFFフラグが「0」にクリアされ、タイマ16に元のデータがリストアされると共に、LED表示器144が消灯される。これにより、FFスイッチ136が押される前のテンポスピードに戻る。
【0069】
次いで、REWスイッチ137のイベントがあるかどうかが調べられる(ステップS38)。これは、パネルイベントマップ中のREWスイッチ137に対応するビットが「1」であるかどうかを調べることにより行われる。ここでREWスイッチ137のイベントがあることが判断されるとREW処理が行われ(ステップS39)、そうでなければREW処理はスキップされる。REW処理では、RAM12に定義されたREWフラグが「0」、つまり通常再生中にREWスイッチ137が押されたことが判断されるとREWフラグが「1」にセットされ、RAM12に定義された小節レジスタBRR及び拍レジスタBTRが所定の速度でデクリメントされ、その結果が小節/拍表示器130に送られると共に、LED表示器145が点灯される。これにより、小節/拍表示器130の表示がデクリメントされながら自動演奏のシーケンスが後退する。なお、このREW処理中には発音は停止される。逆に、FFフラグが「1」、つまり高速再生中にREWスイッチ137が押されたことが判断されるとREWフラグが「0」にクリアされ、LED表示器145が消灯される。これにより、減少された小節レジスタBRR及び拍レジスタBTRの位置から自動演奏が再開される。
【0070】
次いで、リピートスイッチ138のイベントがあるかどうかが調べられる(ステップS40)。これは、パネルイベントマップ中のリピートスイッチ138に対応するビットが「1」であるかどうかを調べることにより行われる。ここでリピートスイッチ138のイベントがあることが判断されるとリピート処理が行われ(ステップS41)、そうでなければリピート処理はスキップされる。リピート処理では、RAM12に定義されたリピートフラグが「0」であればリピートフラグが「1」にセットされると共に、LED表示器146が点灯される。逆に、リピートフラグが「1」であればリピートフラグが「0」にクリアされ、LED表示器145が消灯される。これにより、詳細は図示されていないが、1曲分のパターンデータの読み出しが終了した場合に、リピートフラグが「1」であれば自動演奏のシーケンスは曲の先頭に戻り、同じ自動演奏が繰り返し実行される。一方、リピートフラグが「0」であれば自動演奏は停止される。
【0071】
次いで、パートスイッチ139〜142のイベントであるかどうかが調べられる(ステップS42)。これは、パネルイベントマップ中のパートスイッチ139〜142に対応するビットが「1」であるかどうかを調べることにより行われる。ここでパートスイッチ139〜142のイベントがあることが判断されるとパート1〜4切換処理が行われ(ステップS43)、そうでなければパート1〜4切換処理はスキップされる。その後、このパネル制御処理ルーチンからリターンしてメインルーチンに戻る。上記パート1〜4切換処理の詳細については後述する。
【0072】
(4)MIDI−IN処理(図6及び図7)
このMIDI−IN処理ルーチンはメインルーチンから一定周期でコールされる。MIDI−IN処理では、先ず、受信バッファから1つのMIDIメッセージが取り出され、それに含まれるMIDIチャンネル番号が「1」、つまりロワー鍵のデータであるかどうかが調べられる(ステップS50)。これは、MIDIメッセージの第1バイト目の下位4ビットにあるチャンネル番号を調べることにより行われる。ここで、チャンネル番号が「1」でないことが判断されるとステップS67へ分岐し、MIDIデータに基づく発音処理が行われる。一方、チャンネル番号が「1」、つまりロワー鍵のデータである旨が判断されるとキービットマップが作成される(ステップS51)。キービットマップは、全鍵のオン又はオフ状態をそれぞれ「1」又は「0」に対応させて成るデータである。
【0073】
次いで、コード検出処理が行われる(ステップS52)。即ち、上記で作成されたキービットマップを使用してコード検出処理が行われ、コードタイプ及びコードルートが検出される。このコード検出は周知の種々の方法を用いて行うことができる。ここで検出されたコードは、新コードとしてRAM12の新コード領域に格納される。また、ここで検出されたコードタイプ及びコードルートはコード表示器131に送られて表示される。
【0074】
次いで、コード変化があったかどうかが調べられる(ステップS53)。これは、前回のコード検出処理で検出されてRAM12の旧コード領域に格納されている旧コードと上記新コードとを比較することにより行われる。そして、コードの変化がなかったことが判断されると、このMIDI−IN処理ルーチンからリターンしてメインルーチンに戻る。即ち、コードタイプ及びコードルートが変化しないようなMIDIメッセージが入力されても自動演奏状態は変化しない。一方、コードの変化があったことが判断されると、ステップS54以下のコード変化に対応する処理が行われる。
【0075】
本実施の形態の自動演奏装置は、コード変化があった場合に、単にコード構成音が変化するだけでなく、演奏パターンも変化するという構成を有するものとする。例えばメジャーのコードとマイナーのコードとでは演奏パターンが異なる。検出されたコードに応じて演奏パターンを変化させる機能を実現するために、コードタイプ毎のパターンデータ、例えばメジャーコードのパターンデータとマイナーコードのパターンデータは常時RAM12から読み出されており、何れのパターンデータを用いるかは、検出されたコードタイプにより決定される。
【0076】
コードが変化した時の発音処理の動作の概要を図17に示す。図17においては、時刻TAでCメジャーからCマイナーにコードが変化した場合を示しており、太線で囲まれた部分はパターンデータの読み出しが行われることを示し、その中の斜線部は読み出されたパターンデータに基づいて発音が行われることを示している。
【0077】
時刻TA以前では、Cメジャーを構成する音(キー1、2、3)がメジャーの演奏パターンで発音されており、Cマイナーを構成する音(キー1、4、5)はマイナーの演奏パターンでパターンデータが読み出されているだけである。そして、時刻TAで新たなコードであるCマイナーが検出されると、それ以後はCマイナーを構成する音(キー1、4、5)がマイナーの演奏パターンで発音される。なお、図17は、時刻TAでは、それまで押されていたキー2及びキー3が離され、新たにキー4及びキー5が押され、それまで押されていたキー1は引き続き押されている状態を示している。
【0078】
時刻TA直後の一定時間TRにおいては次のように処理される。即ち、コード変化が検出されれば、発音中の音は直ちに停止される(図17のキー1及びキー2参照)。コード変化後のコード構成音のうち、コード変化が検出されてから一定時間TR内に発音を終了する音であっても、前のコードで発音されているものは発音が継続される(図17のキー1参照)。コード変化が検出されてから一定時間TR内に発音を終了する音であって、前のコードで発音されていないものは新たな発音が開始されない(図17のキー4参照)。コード変化が検出されてから一定時間TR内に発音を終了しない音であれば、新たに発音が開始される(図17のキー5参照)。
【0079】
かかる処理が行われることにより、例えば図17のキー4のように、コード変化に応じて発音すべき音であるが短時間で発音が停止されるものには発音が割り当てられない。このように、短時間で消滅する音に発音を割り当てなくても聴感上全く問題はなく、一方、CPU10がチャンネル割り当て処理に要する時間が節約されてCPU10の負担が軽減されるという利点がある。
【0080】
図6の説明に戻る。ステップS54以下のコード変化に対する処理において、上述した機能が実現されている。先ず、パート番号が「n=2」に初期設定される(ステップS54)。これは、パート1はリズムパートでありコード変化とは無関係であるので、パート2〜4に対してのみ処理を行うためのパート番号の初期化である。
【0081】
次いで、パートnの新パターンのキーコードが生成される(ステップS55)。即ち、ステップS52で検出されたコードタイプ及びコードルートからコード構成音のキーコード(以下、「新キーコード」という。)が生成される。図17に示した例でいえば、キー1、キー4及びキー5に対応した3つの新キーコードが生成される。次いで、パートnの新パターンの残存ゲートタイムが生成される(ステップS56)。残存ゲートタイムは、新パターンのパターンデータに含まれるステップタイムとゲートタイムとから算出される発音の終了時刻と現在の拍レジスタBTRの内容とから算出される。
【0082】
次いで、パートnの新パターンの補正ベロシティの生成が行われる(ステップS57)。この補正ベロシティ生成の詳細については、図8のフローチャートに示されている。補正ベロシティ生成処理では、先ず、補正レートVAnの読み出しが行われる(ステップS70)。即ち、小節レジスタBRRと拍レジスタBTRとの内容をアドレスとしてRAM12のベロシティ補正データ中の対応する位置から補正レートVAnが読み出される。次いで、この読み出された補正レートVAnとその時点のベロシティVELO(パターンデータ中のベロシティデータ)とが乗算され、補正ベロシティVLAnが生成される(ステップS71)。
【0083】
次いで、上記乗算の結果が127より大きいかどうかが調べられ(ステップS72)、127より大きければ127が新しい補正ベロシティVLAnとされ(ステップS73)、そうでなければステップS73はスキップされて乗算結果がそのまま新しい補正ベロシティVLAnとされる。その後、この補正ベロシティ生成ルーチンからリターンしてMIDI−IN処理ルーチンに戻る。以上説明したMIDI−IN処理ルーチンのステップS55〜57の処理により、新たなパターンのコード構成音(図17に示した例でいえば、キー1、キー4及びキー5のそれぞれ)に対応するキーコード、残存ゲートタイム及び補正ベロシティの作成が完了する。
【0084】
次いで、レジスタ群nの比較処理及び発音継続/消音処理が行われる(ステップS58、S59)。即ち、レジスタ群nにキーオン状態で格納されているキーコードと新キーコードとが比較され、レジスタ群n中に一致するキーコードが発見されれば、そのキーコードに対しては何等の処理も行われない。従って、発音が継続されることになる。これは、図17のキー1のケースに対応する処理である。一方、上記の比較において、コード検出前のコード構成音であったがコード検出後にコード構成音でなくなったキーコードに対しては、レジスタ群n中の対応するキーコードのオン/オフビットが「0」にクリアされ、キーオフ出力が行われる。ここに、「キーオフ出力」とは、楽音発生器14に所定のデータを送出し、現在のエンベロープよりも格段に高速なリリースエンベロープに置き換えて発音を終了させる一連の処理をいい、以下においても同じである。これは、図17のキー2及びキー3のケースに対応する処理である。
【0085】
次いで、新規発生キーコードであるかどうかが調べられる(ステップS60)。即ち、新キーコードは、コード検出前のコード構成音でなくコード検出後に新たにコード構成音となったキーコードであるかどうかが調べられる。ここで、新規発生キーコードであることが判断されると、そのキーコードに対応する残存ゲートタイムは所定値TR以上であるかどうかが調べられる(ステップS61)。そして、所定値TR以上であることが判断されると、レジスタ群nへの格納処理が行われる(ステップS62)。即ち、オン/オフビットが「1」にセットされた新規発生キーコード、残存ゲートタイム及び補正ベロシティがレジスタ群nの中の1つのブロックに格納される。この際、格納に使用されるブロックは、オン/オフビットが「0」になっているブロックである。次いで、キーオン出力が行われる(ステップS63)。ここに、「キーオン出力」とは、楽音発生器14に所定のデータ(キーコード、ベロシティ等)を送出し、発音を開始させる一連の処理をいい、以下においても同じである。この際、ベロシティとして補正ベロシティが出力されるので、補正後のベロシティでそのキーコードに対応する発音が行われる。これは、図17のキー5のケースに対応する処理である。その後、ステップS65に進む。
【0086】
一方、上記ステップS60で新規発生キーコードでないことが判断された場合は、既に発音しているキーコードであるので何等の処理も行わずにステップS65に分岐する。これは、図17のキー1のケースに対応する処理である。また、上記ステップS61で、残存ゲートタイムは所定値TR以上でないことが判断されると、残存ゲートタイムとして「1」が設定される(ステップS64)。これにより、次回にタイマ割込が発生した際に、後述するタイマ割込処理ルーチンで残存ゲートタイムがデクリメントされてゼロになると共に、キーオフ出力が行われて発音中の音は消音される。これは、図17のキー4のケースに対応する処理である。その後、ステップS65に進む。
【0087】
ステップS65ではパート番号nがインクリメントされ、その結果が5以上になったかどうか、つまりパート4までの処理が完了したかどうかが調べられる(ステップS66)。そして、5以上でないことが判断されたならステップS55に戻り、再度上述したと同様の処理が繰り返される。一方、5以上であることが判断されると、つまりパート4までの処理が完了したことが判断されると、このMIDI−IN処理ルーチンからリターンしてメインルーチンに戻る。
【0088】
(5)パート1〜4読出処理(図9及び図10)
パート1〜4読出処理は、メインルーチンから周期的にコールされる。このパート1〜4読出処理では、先ず、パート番号が「n=1」に初期化される(ステップS80)。即ち、このパート1〜4読出処理では、各パート1〜4に対応するパターンデータの読出処理が行われることになる。次いで、ステップ補正値SAnの読み出しが行われる(ステップS81)。即ち、小節レジスタBRRと拍レジスタBTRとの内容をアドレスとしてRAM12のステップタイム補正データ中から対応する補正データSAnが読み出される。なお、ステップタイム補正データは4分音符単位で格納されているので、上記のアドレスとしては小節/拍表示器130に表示される値と同じ値が用いられ、拍レジスタBTRの内容の下位の所定ビットは無視される。
【0089】
次いで、拍レジスタBTRの内容に補正データSAnが加算されてパートn用拍レジスタBTRnに格納される(ステップS82)。次いで、上記加算の結果(パートn用拍レジスタBTRnの内容)が「0」より小さいかどうかが調べられる(ステップS83)。ここで、「0」より小さいことが判断されるとパートn用拍レジスタBTRnの内容に「192」が加えられてパートn用拍レジスタBTRnに格納され(ステップS84)、次いで、小節レジスタBRRの内容がデクリメントされてパートn用小節レジスタBRRnに格納される(ステップS85)。上記ステップS84及びS85の処理により、パートnのステップタイム補正により得られた拍レジスタBTRの内容が正になるように変換されている。その後、ステップS90へ分岐する。
【0090】
上記ステップS83で加算結果が「0」より小さくないことが判断されると、上記加算の結果(パートn用拍レジスタBTRnの内容)が「192」以上かどうかが調べられる(ステップS86)。ここで、「192」以上であることが判断されるとパートn用拍レジスタBTRnの内容から「192」が減算されてパートn用拍レジスタBTRnに格納され(ステップS87)、次いで、小節レジスタBRRの内容がインクリメントされてパートn用小節レジスタBRRnに格納される(ステップS88)。上記ステップS87及びS88の処理により、パートnのステップタイム補正により拍レジスタBTRの内容が1小節分(192ステップ)を越えた場合に、1小節の範囲内となるように変換されている。その後、ステップS90へ分岐する。
【0091】
上記ステップS83で加算結果が「192」以上でない、つまり「0≦パートn用拍レジスタBTRnの内容<192」であることが判断されると、小節レジスタBRRの内容がパートn用小節レジスタBRRnに格納される(ステップS89)。この場合、パートn用拍レジスタBTRnの内容は、ステップS82でセットしたものがそのまま用いられる。その後、ステップS90に進む。
【0092】
以上の処理でステップタイム補正が完了すると、次いで、パートnのパターンデータ中から未発音のデータが検索される(ステップS90)。即ち、パートn用小節レジスタBRRnの内容で示される小節に含まれるパターンデータの中で、ステップタイムがパートn用拍レジスタBTRnの内容よりも小さいか又は同一のものが検索される。次いで、検索されたパターンデータ中のキーコード(KCOD)、ゲートタイム(GTIM)及びベロシティ(VELO)が読み出される(ステップS91)。
【0093】
次いで、パートnの補正ベロシティが生成される(ステップS92)。この処理は、図8を参照して既に説明したものと同じである。次いで、パートnに対応するレジスタ群nの更新が行われる(ステップS93)。即ち、キーコード(KCOD)、ゲートタイム(GTIM)及び補正ベロシティ(VLAn)がレジスタ群nの中の1つに格納される。
【0094】
次いで、当該パートnがオン、つまりパートnに対応するパートスイッチ139〜142の何れかが押されているかどうかが調べられ(ステップS94)、押されていることが判断されると、キーオン出力が行われる(ステップS95)。これにより、ステップタイム及びベロシティが補正された発音が行われることになる。一方、パートスイッチが押されていないことが判断されると、ステップS95はスキップされる。従って、この場合は、パターンデータの読み出しのみが行われることになる。
【0095】
次いで、パート番号nがインクリメントされ(ステップS96)、その結果が5以上でなければステップS81に戻って次のパートに対する読出処理が行われ、5以上であれば全パートに対する処理が終了したことを認識してこのパート1〜4読出処理ルーチンからリターンしてメインルーチンに戻る。
【0096】
(6)パート1〜4切換処理(図11)
次に、パネル制御処理ルーチンのステップS43で行われるパートの切換処理について説明する。このパート切換処理は、パートスイッチ139〜142が押された時に、当該パートの発音を開始し又は停止する処理である。本実施の形態の自動演奏装置では、既に説明したように、パート1〜4のパターンデータは常に読み出されており、読み出されたパターンデータに基づいて発音が行われるかどうかは、パートスイッチ139〜142がオンにされているかどうかによって決定される。
【0097】
パートスイッチがオンに変化した時の動作の概要を図18に示す。図18においては、時刻TBでパートスイッチnがオンに変化した場合の動作状態を示しており、太線で囲まれ部分はパターンデータの読み出しが行われることを、その中の斜線部は読み出されたパターンデータに基づいて発音が行われることをそれぞれ示している。
【0098】
図18の例では、パートスイッチnがオンにされた時に、キー1及びキー2はオフ状態であるため発音されない。キー3及びキー4はオン状態であるが、キー3については、パートスイッチnのオン変化が検出されてから一定時間TR内に発音が終了するので、換言すれば、残存ゲートタイムが所定時間TR未満であるので発音は行われない。キー4については残存ゲートタイムが所定時間TR以上であるので発音が開始される。
【0099】
このような処理を行うことにより、例えば図18のキー3のように、パートスイッチnのオン変化に応じて発音すべき音であるが短時間で発音が終了するものは発音が開始されない。かかる短時間で消滅する音に発音を割り当てなくても聴感上全く問題はなく、一方、CPU10がチャンネル割り当て処理に要する時間が節約されてCPU10の負担が軽減されるという利点がある。
【0100】
以上の機能を実現するために、パート切換処理では、先ず、パート番号が「n=1」に初期化される(ステップS100)。次いで、パートnのパートスイッチのイベントがあったかどうかが調べられる(ステップS101)。これは、パネルイベントマップ中のパートnのパートスイッチ139〜142に対応するビットが「1」であるかどうかを調べることにより行われる。ここでイベントがないことが判断されるとステップS108へ分岐する。一方、パートnのパートスイッチのイベントがあったことが判断されると、次いで、そのイベントはオンイベントであるかどうかが調べられる(ステップS102)。これは、新パネルデータ中のパートnのパートスイッチ139〜142に対応するビットが「1」であるかどうかを調べることにより行われる。
【0101】
ここでオンイベントであることが判断されると、レジスタ群nの残存ゲートタイムの読み出しが行われる(ステップS103)。即ち、レジスタ群nにキーオン状態で格納されているキーコードの残存ゲートタイムが読み出される。この際、補正ベロシティも読み出される。次いで、残存ゲートタイムが所定時間TR以上であるかどうかが調べられ(ステップS104)、所定時間以上であることが判断されると、キーオン出力が行われる(ステップS105)。この際、補正ベロシティも出力される。これにより、パートnのパターンデータに基づく発音が開始される。これは、図18のキー4のケースに対応する処理である。
【0102】
一方、残存ゲートタイムが所定時間TR以上でないことが判断されると、そのキーコードの残存ゲートタイムが「0」に設定される(ステップS106)。これにより、発音は開始されない。このステップS104〜S106の処理により、残存ゲートタイムが所定値TR以上であれば発音が行われ、所定値TRより小さければ発音が抑止されるという機能が実現されている。
【0103】
上記イベント102でオフイベントであることが判断されると、パートnに対するキーオフ出力が行われる(ステップS107)。即ち、レジスタ群nにキーオン状態で格納されている全てのキーコードに対してキーオフ出力が行われる。これにより、パートnの発音が停止される。その後ステップS108へ分岐する。
【0104】
ステップS108では、パート番号nがインクリメントされ、その結果が5以上でなければステップS101に戻って次のパートに対する切換処理が行われ、5以上であれば全パートに対する処理が終了したことを認識してこのパート1〜4切換処理ルーチンからリターンしてメインルーチンに戻る。
【0105】
(7)タイマ割込処理(図12)
次にタイマ割込処理ルーチンについて説明する。このタイマ割込処理ルーチンは、タイマ16から割込信号がCPU10の割込信号入力端子INT2に供給されることにより起動される。従って、その時点で設定されているテンポにおける1ステップタイムに対応する時間間隔でこのタイマ割込処理ルーチンが起動されることになる。
【0106】
タイマ割込処理では、先ず、自動演奏フラグがオンになっているかどうかが調べられる(ステップS110)。即ち、本自動演奏装置が自動演奏状態にあるかどうかが調べられる。ここで自動演奏フラグがオンであることが判断されると、拍レジスタBTRの内容がインクリメントされ(ステップS111)、その結果が「192」以上になったかどうかが調べられる(ステップS112)。そして、「192」以上になったことが判断されると、拍レジスタBTRがゼロにクリアされ(ステップS113)、小節レジスタBRRがインクリメントされる(ステップS114)。上記ステップS112で「192」以上でないことが判断されると、ステップS113及びS114の処理はスキップされる。上記ステップS111〜S114の処理により、1ステップタイム毎に小節レジスタBRRと拍レジスタBTRとが連結された状態でインクリメントされる機能が実現されている。
【0107】
次いで、全パートのゲートタイムの更新が行われる(ステップS115)。即ち、全パートのレジスタ群に含まれる残存ゲートタイムが「0」以外のものはデクリメントされる。そして、このデクリメントの結果、新たにゼロになった残存ゲートタイムがあれば、その残存ゲートタイムに対応するキーコードに対してキーオフ出力が行われ発音が停止される。
【0108】
上記ステップS110で自動演奏フラグがオンでないことが判断されると、自動演奏中でないことが認識され、全パートのゲートタイムの更新のみが行われる。その後、このタイマ割込処理ルーチンからリターンして割り込まれた位置に戻る。
【0109】
以上説明したように、本実施の形態においては、正規化されたパターンデータを数小節程度(例えば2小節)だけRAM12に記憶しておく。一方、このパターンデータとは別に、全小節分の揺らぎデータ、即ちステップタイム補正データ及びベロシティ補正データをRAM12に記憶しておく。このステップタイム補正データ及びベロシティ補正データは、例えば、上記正規化されたパターンデータに基づく演奏パターンと実際に演奏者が演奏した演奏パターンとの差分から作成することができる。
【0110】
そして、小節レジスタBRR及び拍レジスタBTRの内容に応じてRAM12から正規化されたパターンデータを読み出すと共に、ステップタイム補正データ及びベロシティ補正データを読み出し、正規化されたパターンデータをステップタイム補正データ及びベロシティ補正データを用いて補正し、この補正されたパターンデータに基づき発音するようにしている。
【0111】
かかる構成により正規化されたパターンデータのみに基づく発音に見られるような機械的な演奏パターンというイメージが払拭でき、しかもステップタイム補正データ及びベロシティ補正データとして、例えば、上記正規化されたパターンデータに基づく演奏パターンと実際に演奏者が演奏した演奏パターンとの差分データを用いれば、人間の感情の周期にマッチした自動演奏パターンを実現することができる。上記ステップタイム補正データ及びベロシティ補正データを、特定の音楽家が演奏した演奏パターンとの差分データで作成すれば、「誰それ風の演奏」という自動演奏パターンを得ることができる。
【0112】
また、従来のように、人間の感情の周期にマッチした自動演奏パターンを実現するにあたり1曲の全小節分のパターンデータを作成する必要がないので、少ない容量で例えばノリの良い自動演奏パターンを実現できるという効果がある。
【0113】
なお、上記においては、揺らぎのパラメータとして「ステップタイム」と「ベロシティ」を採り上げて説明したが、「ゲートタイム」に関しても上述したと同様の処理を行うことにより、上記同様の効果を得ることができる。
【0114】
更に、図3の「その他の処理」(ステップS17)において、「テンポスピード」の揺らぎを再生処理すれば、より生きた自動演奏を実現することができる。この際、テンポスピード補正データは、図15及び図16の各補正データと同様に、多くの小節数に関して予め記憶されており、選択された曲又はリズムスタイルによって切換られる。
【0115】
また、本実施の形態においては、全パートのパターンデータを小節レジスタBRR及び拍レジスタBTRの内容に従って順次読み出し、これから演奏データ(キーコード、残存ゲートタイム及びベロシティ)を作成してRAM12のレジスタ群nに記憶する。このレジスタ群nに記憶された演奏データのうち、パートスイッチで指示されたパートに対応する演奏データのみが発音される。このレジスタ群nの内容は、発音の有無とは独立に自動演奏の進行に応じてタイマ割込処理により更新される。
【0116】
自動演奏の途中で新たなパートの発音指示がなされた場合は、レジスタ群nにキーオン状態で記憶されている演奏データが既に発音開始タイミングを過ぎていても、未だ消音タイミングに至らない音については途中からであっても発音を開始する。これにより、演奏者のパートスイッチ139〜142による指示タイミングが多少ずれる(遅れる)ことにより、本来発音されるべき音が発音されないという事態を回避できるので、演奏者の意図したタイミングで特定パートの自動演奏を完全な形で開始させることができる。
【0117】
また、パートスイッチ139〜142で所定のパートをオフにすべきことが指示された場合は、そのパートスイッチ139〜142に対応するパートで発音中の音は全て速やかに発音を中止される。これは、例えば、長いサスティンがかかっている音色やピアノ音でダンパーオンされているような場合でも、それらのエンベロープよりも格段に高速なリリースエンベロープに置き換えて発音を終了させることにより実現される。
【0118】
このように、特定パートの自動演奏を演奏者の所望のタイミングで開始させ又は終了させることができるということは、パターンデータに基づく発音又は消音のタイミングよりも細かいタイミングで、特定パートの自動演奏を行わせたり停止したりすることができることを意味し、新たな演奏形態が可能になるという効果がある。
【0119】
また、新たなパートの発音指示がなされた場合に、未だ消音タイミングに至っていないが、残りの発音時間(残存ゲートタイム)が所定値TRより小さければ発音を行わず、所定値以上の場合にのみ発音を行うようにしている。
【0120】
これにより、発音されてもすぐに消音されてしまうような、聴感には何等の影響を与えない音に対しては、最初から発音されないので、CPUの負荷が軽減される。従って、CPUは他の処理を実行することが可能となるので、より効率の良い自動演奏装置を実現できる。
【0121】
【発明の効果】
以上詳述したように、本発明によれば、少ないメモリ容量で簡単に人間の感情の周期にマッチした自動演奏パターンを実現することのできる自動演奏装置を提供することができる。また、自動演奏の途中からでも特定パートの再生又は停止を行わせることのできる自動演奏装置を提供することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態の自動演奏装置の構成を示すブロック図である。
【図2】本発明の実施の形態に使用される操作パネルの一例を示す図である。
【図3】本発明の実施の形態の動作を示すフローチャート(メインルーチン)である。
【図4】本発明の実施の形態の動作を示すフローチャート(MIDI−IN割込処理ルーチン)である。
【図5】本発明の実施の形態の動作を示すフローチャート(パネル制御処理ルーチン)である。
【図6】本発明の実施の形態の動作を示すフローチャート(MIDI−IN処理ルーチン(その1))である。
【図7】本発明の実施の形態の動作を示すフローチャート(MIDI−IN処理ルーチン(その2))である。
【図8】本発明の実施の形態の動作を示すフローチャート(補正ベロシティ生成ルーチン)である。
【図9】本発明の実施の形態の動作を示すフローチャート(パート1〜4読出処理ルーチン(その1))である。
【図10】本発明の実施の形態の動作を示すフローチャート(パート1〜4読出処理ルーチン(その2))である。
【図11】本発明の実施の形態の動作を示すフローチャート(パート1〜4切換処理ルーチン)である。
【図12】本発明の実施の形態の動作を示すフローチャート(タイマ割込処理ルーチン)である。
【図13】本発明の実施の形態で使用する受信バッファの構成を示す図である。
【図14】(A)は本発明の実施の形態で使用するレジスタ群nの構成を示す図、(B)は本発明の実施の形態で使用するパターンデータの構成を示す図である。
【図15】本発明の実施の形態で使用するステップタイム補正データを説明するための図である。
【図16】本発明の実施の形態で使用するベロシティ補正データを説明するための図である。
【図17】本発明の実施の形態においてコードが変化した時の発音処理の動作を説明するための図である。
【図18】本発明の実施の形態においてパートスイッチがオン変化した時の発音処理の動作を説明するための図である。
【符号の説明】
10 CPU
11 ROM
12 RAM
13 操作パネル
14 楽音発生器
15 スピーカシステム
16 タイマ
17 MIDIコントローラ
18 FDコントローラ
19 フロッピーディスクドライブ装置
30 システムバス
130 小節/拍表示器
131 コード表示器
132 テンポスピード表示器
133 インクリメンタ
134 ストップスイッチ
135 プレイ/ポーズスイッチ
136 FFスイッチ
137 REWスイッチ
138 リピートスイッチ
139 パート1スイッチ
140 パート2スイッチ
141 パート3スイッチ
142 パート4スイッチ
143〜150 LED表示器[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an automatic performance apparatus that performs automatic performance by repeating performance patterns of about several bars.
[0002]
[Prior art]
Conventionally, a predetermined performance pattern is reproduced by repeatedly reading out automatic performance data (hereinafter referred to as “pattern data”) for several measures (about 2 to 16 measures) stored in advance in a storage means and applying it to a sound source. Automatic performance devices are known.
[0003]
Since this type of automatic performance device only reads out and reproduces the pattern data mechanically, there is a drawback that the timing of sound generation, the volume, etc. are uniform and uniform and lacks humanity. Therefore, in order to avoid such uniform automatic performance and give fluctuation, attempts have been made to match the period of human emotions by randomly changing the sound generation timing, volume, and the like. A variety of automatic performances can be achieved by changing the pronunciation timing and volume at random. However, it has been difficult to realize a performance pattern that matches the period of human emotions, for example, a performance pattern with a good twist.
[0004]
Therefore, in the past, for example, in order to perform an automatic performance with a good pitch, pattern data from the beginning to the end of the song is created and stored, even if it is an automatic song composed of repeated two-measure performance patterns. It was necessary to reproduce it faithfully. Therefore, there is a problem that a huge memory capacity is required to obtain a performance pattern that matches the period of human emotion.
[0005]
The automatic performance apparatus as described above has a plurality of parts (for example, rhythm, bass, accompaniment, melody, etc.) and is often configured so that each part can be controlled independently. For example, Japanese Patent Application Laid-Open No. 58-35597 discloses an automatic performance device that can simultaneously reproduce a plurality of parts and can control whether or not to pronounce each part. According to this automatic performance device, multiple performances can be performed by simultaneously sounding a plurality of parts.
[0006]
However, in an automatic performance device having a plurality of parts, an application in which a specific part is performed by a person instead of an automatic performance is desired. For example, the rhythm, bass, and accompaniment parts are automatically played, and the melody part is played by a person. For this purpose, it is necessary to be able to control playback or stop at any time for each part. The automatic performance device disclosed in the above publication requires that the part to be reproduced (or recorded) must be confirmed when the RUN switch is turned on and a start pulse is generated, and the part switch is changed during the performance. It is not scheduled to be made. That is, even if the part switch is turned on during the performance, the part cannot be reproduced.
[0007]
[Problems to be solved by the invention]
The present invention has been made in view of such circumstances, and an object of the present invention is to provide an automatic performance apparatus capable of reproducing or stopping a specific part even in the middle of automatic performance.
[0008]
[Means for Solving the Problems]
To achieve the above object, the present invention provides a pattern data storage means for storing pattern data of a plurality of parts, a time management means for managing the time progression of automatic performance, and the pattern based on the contents of the time management means. Pattern data reading means for sequentially reading pattern data of all parts stored in the data storage means, and performance data storage for storing performance data of all parts created based on the pattern data read by the pattern data reading means Means, updating means for updating the performance data stored in the performance data storage means in accordance with the progress of the automatic performance, instruction means for instructing the pronunciation of each part, and sounding only for the parts instructed by the instruction means A sounding means that performs sound generation when a new part sounding instruction is given by the instruction means. Characterized by sound based on the performance data in the performance data storage means corresponding to that part.
[0009]
In the present invention, the pattern data of all the parts is sequentially read according to the contents of the time management means, for example, the bar register / beat register, etc., and performance data is created therefrom and stored in the performance data storage means. Of the performance data stored in the performance data storage means, only the performance data corresponding to the part instructed by the instruction means is generated. The contents of the performance data storage means are updated according to the progress of the automatic performance independently of the presence or absence of pronunciation.
[0010]
When a new part is instructed to be played during automatic performance, even if the performance data stored in the performance data storage means has already passed the sounding start timing, the sound that has not reached the mute timing has been Even begin to pronounce.
[0011]
As a result, it is possible to avoid a situation in which the sound that should be pronounced is not pronounced because the instruction timing by the player's instruction means is slightly shifted (delayed), so that the automatic performance of the specific part is completely performed at the timing intended by the player. There is an effect that it can be started in various forms.
[0012]
Note that when the instruction means instructs to turn off a predetermined part, it is possible to promptly stop the sound generation of all sounds being sounded by the part corresponding to the instruction means. For example, even when the damper is turned on by a tone with a long sustain or a piano sound, the sound can be terminated by replacing it with a release envelope that is much faster than those envelopes.
[0013]
In this way, the automatic performance of a specific part can be started or ended at a player's desired timing, which means that the automatic performance of a specific part can be performed at a timing that is finer than the timing of sound generation or muting based on pattern data. This means that it can be performed or stopped, and there is an effect that a new performance form becomes possible.
[0014]
In addition, the sound generation means in the present invention, when a new part sound generation instruction is given, is new only when the remaining sound generation time is not less than a predetermined value among the performance data stored in the performance data storage means. Can be configured to pronounce.
[0015]
According to this configuration, when a new part is instructed to be sounded, the mute timing has not yet been reached, but if the remaining sound generation time is less than the predetermined value, no sound is generated, and sound is generated only when the sound is greater than the predetermined value. Do.
[0016]
As a result, sound that does not affect the sense of hearing that is immediately muted even if it is pronounced is not pronounced from the beginning. For example, when using a CPU as part of the sounding means, CPU load is reduced. In this case, since the CPU can execute other processes, a more efficient automatic performance device can be realized.
[0017]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of an automatic performance device of the present invention will be described in detail with reference to the drawings.
[0018]
FIG. 1 is a block diagram showing a configuration of an embodiment of an automatic performance device of the present invention. The automatic performance apparatus includes a central processing unit (hereinafter referred to as “CPU”) 10, a read only memory (hereinafter referred to as “ROM”) 11, a random access memory (hereinafter referred to as “RAM”) 12, and an operation panel. 13, a
[0019]
The
[0020]
The
[0021]
The
[0022]
(1) Receive buffer
The reception buffer is used for temporarily storing MIDI data received from a
[0023]
The counter CTR designates the position of the storage area where the received MIDI data is to be written. This counter CTR is controlled so as to always indicate the next address of the last written MIDI data. The initial value of the counter CTR is “0” and is incremented every time MIDI data is written. When the result exceeds the maximum value TOP, the counter CTR circulates to the minimum value BTM.
[0024]
The pointer PTR indicates the position of the MIDI data to be read out in the storage area. The pointer PTR is controlled so as to always indicate the next address of the MIDI data read last, that is, the address of the MIDI data to be read next. The initial value of the pointer PTR is “0”, which is incremented every time MIDI data is read. If the result exceeds the maximum value TOP, it is circulated to the minimum value BTM.
[0025]
This reception buffer is judged to be empty when the contents of the counter CTR and the contents of the pointer PTR match. When the contents of the counter CTR match the contents of the pointer PTR as a result of incrementing the counter CTR, the reception buffer is full and control is performed so as to suppress the reception of MIDI data. If the contents of the counter CTR and the contents of the pointer PTR do not match, it is determined that MIDI data exists in the reception buffer.
[0026]
Writing of MIDI data to the reception buffer is performed by a MIDI-IN interrupt processing routine described later, and reading of MIDI data from the reception buffer is performed by a MIDI-IN processing routine described later. In this embodiment, the reception buffer is formed in the
[0027]
(2) Register group n
The register group n corresponds to the performance data storage means. The register group n (n corresponds to the part number, where n = 1 to 4) is used to manage the sound generation for each part. Assuming that the polyphonic number of each part in the present embodiment is “8”, this register group n is composed of eight blocks as shown in FIG. 14A, for example. Each block corresponds to one sound, and is composed of 3 bytes of “key code and its on / off”, “corrected velocity”, and “remaining gate time” corresponding to performance data.
[0028]
The key code (7 bits) is used to indicate the pitch. The on / off bit (1 bit) is used to indicate whether the sound indicated by the key code is in a key-on state or a key-off state. The corrected velocity (7 bits) is data obtained by correcting the velocity in the pattern data according to the velocity correction data. The remaining gate time (7 bits) is used to indicate the remaining sound generation time of the sound being sounded (the sound whose on / off bit is “1”). In FIG. 14A, only the register group for one part is shown, but in reality, a register group having the same configuration is provided for each of
[0029]
(3) Bar register and beat register
The bar register BRR and the beat register BTR correspond to time management means. The bar register BRR is a register for counting the progress of the bar. This bar register BRR can count up to 4 decimal digits. The beat register BTR is a register for counting the progress of beats within a measure. The beat register BTR is counted up every step time. In this embodiment, one beat has a resolution of 48 steps. Therefore, the beat register BTR rounds to zero when counting four beats, that is, 192 steps in the case of four beats. At this time, the bar register BRR is controlled to be incremented. The bar register BRR and the beat register BTR are used to read step time correction data and velocity correction data for generating fluctuations (details will be described later).
[0030]
In the
[0031]
(1) Pattern data
The pattern data is used to generate a performance pattern of about 2 to 16 bars, for example. This pattern data is composed of a set of 4-byte data such as step time, note number (key code), gate time, and velocity as shown in FIG. 14B, for example. Each pattern data corresponds to one note. Here, the step time designates the time to start sound generation, and is defined by the number of steps from the beginning of the measure. The note number is used to define the pitch. The gate time is used to define the pronunciation time. Velocity is used to define the strength (volume) of pronunciation.
[0032]
(2) Step time correction data
As part of the step time correction data, for example, as shown in part in FIG. 15, all the measures of one song are prepared for each of the
[0033]
The step time correction data is prepared for each area by dividing one measure into four areas (quarter note units). Therefore, when there are a plurality of key events in one area, the same step time correction data is used. With this data structure, the amount of step time correction data can be kept small.
[0034]
(3) Velocity correction data
As the velocity correction data, for example, as shown in a part of FIG. In this embodiment, the correction rate VAn for each beat (quarter note) is stored as correction data. That is, the velocity correction data is defined such that it can be varied within a range of “0.0 to 2.0” for each beat, as shown in an enlarged manner in FIG. Accordingly, the velocity can be corrected in a range from 0 times to 2 times centering on 1 time.
[0035]
As with the step time correction data, velocity correction data is prepared for each area by dividing one measure into four areas (quarter note units). Therefore, when there are a plurality of key events in one area, the same velocity correction data is used. With this data structure, the amount of velocity correction data can be kept small.
[0036]
Returning to the description of FIG. The
[0037]
The
[0038]
The
[0039]
The
[0040]
The
[0041]
FIG. 2 is a diagram showing a configuration example of the
[0042]
The
[0043]
The
[0044]
The bar /
[0045]
The
[0046]
The
[0047]
The
[0048]
The
[0049]
The part switches 139 to 142 correspond to instruction means. The
[0050]
Similarly, the part 3
[0051]
Among the above parts, the rhythm part, bass part and accompaniment part are pronounced by repeated execution of pattern data of about 1 to several bars, and the present invention is monotonous by giving fluctuations to these parts. Is to eliminate. The melody part stores all pattern data for one song.
[0052]
In addition to the above, the
[0053]
The setting state of each switch etc. of the
[0054]
Next, the operation of the automatic performance device of the present invention will be described in detail with reference to the flowcharts shown in FIGS.
[0055]
(1) Main processing (Fig. 3)
FIG. 3 is a flowchart showing the main routine of the automatic performance device of the present invention, which is activated when the power is turned on. When the power is turned on, first, initialization processing is performed (step S10). In this initialization process, the internal state of the
[0056]
When this initialization process is completed, a panel switch scan process is then performed (step S11). That is, the
[0057]
Next, the presence / absence of an event is checked (step S12). This is done by referring to the panel event map. That is, it is checked whether or not there is at least one bit that is turned on in the panel event map. If there is no bit, there is no event. Each is judged. If it is determined in step S12 that there is an event, panel control processing is performed (step S13). Otherwise, the panel control processing is skipped. Details of this panel control processing will be described later.
[0058]
Next, it is checked whether or not reception data (MIDI data) exists in the reception buffer (step S14). As described above, this is performed by checking whether the content of the counter CTR matches the content of the pointer PTR. If it is determined here that there is received data in the reception buffer, MIDI-IN processing is performed (step S15). Otherwise, the MIDI-IN processing is skipped. Details of the MIDI-IN processing will be described later.
[0059]
Next, the
[0060]
Next, “other processing” is performed (step S17). In this “other processing”, floppy disk control, tone color selection processing, volume setting processing, and the like are performed, but the description thereof is omitted because they are not directly related to the present invention. Thereafter, the process returns to step S11, and the same processing is repeated thereafter.
[0061]
(2) MIDI-IN interrupt processing (Fig. 4)
This MIDI-IN interrupt process is executed by interrupting the main routine process. In this MIDI-IN interrupt process, the MIDI data received by the
[0062]
In the MIDI-IN interrupt process, first, MIDI data is read from the
[0063]
Although not shown in the figure, when the result of incrementing the counter CTR exceeds the value of the pointer PTR, the reception buffer is full, and the MIDI data fetching process is suppressed.
[0064]
(3) Panel control processing (Fig. 5)
Next, details of the panel control processing performed in step S13 of the main routine will be described with reference to the flowchart of FIG.
[0065]
This panel control processing routine is called when it is determined that an event such as a panel switch has occurred in the main routine. In the panel control process, first, it is checked whether there is an event of the incrementer 133 (step S30). That is, the incrementer data in the old and new panel data are compared, and if they are different, it is determined that the event of the
[0066]
Next, it is checked whether or not there is an event of the stop switch 134 (step S32). This is done by checking whether the bit corresponding to the
[0067]
Next, it is checked whether there is an event of the play / pause switch 135 (step S34). This is done by checking whether the bit corresponding to the play /
[0068]
Next, it is checked whether there is an event of the FF switch 136 (step S36). This is done by checking whether the bit corresponding to the
[0069]
Next, it is checked whether there is an event of the REW switch 137 (step S38). This is done by checking whether the bit corresponding to the
[0070]
Next, it is checked whether there is an event of the repeat switch 138 (step S40). This is done by checking whether the bit corresponding to the
[0071]
Next, it is checked whether the event is
[0072]
(4) MIDI-IN processing (FIGS. 6 and 7)
This MIDI-IN processing routine is called at regular intervals from the main routine. In the MIDI-IN process, first, one MIDI message is extracted from the reception buffer, and it is checked whether or not the MIDI channel number included in the message is “1”, that is, the data of the lower key (step S50). This is done by examining the channel number in the lower 4 bits of the first byte of the MIDI message. If it is determined that the channel number is not “1”, the process branches to step S67, and sound generation processing based on MIDI data is performed. On the other hand, when it is determined that the channel number is “1”, that is, the data of the lower key, a key bitmap is created (step S51). The key bitmap is data formed by associating the on or off state of all keys with “1” or “0”, respectively.
[0073]
Next, code detection processing is performed (step S52). That is, a code detection process is performed using the key bitmap created above, and a code type and a code route are detected. This code detection can be performed using various known methods. The code detected here is stored in the new code area of the
[0074]
Next, it is checked whether or not there is a code change (step S53). This is performed by comparing the old code detected in the previous code detection process and stored in the old code area of the
[0075]
The automatic performance device according to the present embodiment has a configuration in which when the chord changes, not only the chord constituent sound changes but also the performance pattern changes. For example, a performance pattern differs between a major chord and a minor chord. In order to realize the function of changing the performance pattern according to the detected chord, pattern data for each chord type, for example, pattern data of major chords and pattern data of minor chords are always read from the
[0076]
FIG. 17 shows an outline of the sound generation process when the chord changes. FIG. 17 shows a case where the code changes from C major to C minor at time TA, where the portion surrounded by a thick line indicates that pattern data is read, and the shaded portion in it is read. It shows that pronunciation is performed based on the pattern data that has been generated.
[0077]
Before the time TA, the sounds constituting the C major (
[0078]
The processing is performed as follows in a certain time TR immediately after the time TA. That is, if a chord change is detected, the sound being generated is immediately stopped (see key 1 and key 2 in FIG. 17). Among the chord constituent sounds after the chord change, even if the sound is pronounced within a certain time TR after the chord change is detected, the sound that is pronounced with the previous chord continues to be pronounced (FIG. 17). Key 1). A sound that finishes sounding within a certain time TR after detection of a chord change and is not sounded in the previous chord will not start a new sounding (see key 4 in FIG. 17). If the sound does not end sounding within a certain time TR after the chord change is detected, sounding is newly started (see key 5 in FIG. 17).
[0079]
By performing such processing, for example, as in the key 4 in FIG. 17, no sound is assigned to a sound that should be sounded in response to a chord change but whose sound is stopped in a short time. As described above, there is no problem in audibility even if no sound is assigned to a sound that disappears in a short time. On the other hand, there is an advantage that the time required for the
[0080]
Returning to the description of FIG. In the processing for code changes in step S54 and subsequent steps, the above-described functions are realized. First, the part number is initially set to “n = 2” (step S54). This is initialization of the part number for processing only parts 2 to 4 because
[0081]
Next, a new pattern key code of part n is generated (step S55). That is, a key code (hereinafter referred to as “new key code”) of the chord constituent sound is generated from the chord type and chord root detected in step S52. In the example shown in FIG. 17, three new key codes corresponding to
[0082]
Next, the correction velocity of the new pattern of part n is generated (step S57). Details of the generation of the corrected velocity are shown in the flowchart of FIG. In the correction velocity generation process, first, the correction rate VAn is read (step S70). That is, the correction rate VAn is read from the corresponding position in the velocity correction data of the
[0083]
Next, it is checked whether or not the result of the multiplication is greater than 127 (step S72). If greater than 127, 127 is set as a new corrected velocity VLAn (step S73). If not, step S73 is skipped and the multiplication result is obtained. The new corrected velocity VLAn is used as it is. Thereafter, the process returns from the corrected velocity generation routine and returns to the MIDI-IN processing routine. As a result of the processing in steps S55 to S57 of the MIDI-IN processing routine described above, the key corresponding to the chord constituent sound of the new pattern (in the example shown in FIG. 17, each of
[0084]
Next, the register group n comparison process and the sound generation continuation / mute process are performed (steps S58 and S59). That is, the key code stored in the register group n in a key-on state is compared with the new key code, and if a matching key code is found in the register group n, no processing is performed on the key code. Not done. Therefore, the pronunciation is continued. This is a process corresponding to the case of the key 1 in FIG. On the other hand, in the above comparison, for a key code that was a chord constituent sound before chord detection but no longer has a chord constituent sound after chord detection, the corresponding key code on / off bit in register group n is Cleared to "0" and key-off output is performed. Here, the “key-off output” refers to a series of processes for sending predetermined data to the
[0085]
Next, it is checked whether or not it is a newly generated key code (step S60). That is, it is checked whether or not the new key code is a key code that is not a chord constituent sound before the chord detection but a new chord constituent sound after the chord detection. If it is determined that the key code is a newly generated key code, it is checked whether the remaining gate time corresponding to the key code is equal to or greater than a predetermined value TR (step S61). When it is determined that the value is equal to or greater than the predetermined value TR, a storing process to the register group n is performed (step S62). That is, the newly generated key code whose ON / OFF bit is set to “1”, the remaining gate time, and the corrected velocity are stored in one block in the register group n. At this time, the block used for storage is a block whose on / off bit is “0”. Next, key-on output is performed (step S63). Here, “key-on output” refers to a series of processes for transmitting predetermined data (key code, velocity, etc.) to the
[0086]
On the other hand, if it is determined in step S60 that the key code is not a newly generated key code, it is a key code that has already been sounded, and the process branches to step S65 without performing any processing. This is a process corresponding to the case of the key 1 in FIG. If it is determined in step S61 that the remaining gate time is not equal to or greater than the predetermined value TR, "1" is set as the remaining gate time (step S64). As a result, when a timer interrupt occurs next time, the remaining gate time is decremented to zero by a timer interrupt processing routine described later, and a key-off output is performed to mute the sound being generated. This is a process corresponding to the case of the key 4 in FIG. Thereafter, the process proceeds to step S65.
[0087]
In step S65, the part number n is incremented, and it is checked whether or not the result is 5 or more, that is, whether or not the processing up to part 4 is completed (step S66). If it is determined that the number is not 5 or more, the process returns to step S55, and the same processing as described above is repeated again. On the other hand, when it is determined that the number is 5 or more, that is, when it is determined that the processing up to Part 4 is completed, the process returns from the MIDI-IN processing routine and returns to the main routine.
[0088]
(5) Part 1-4 reading processing (FIGS. 9 and 10)
The
[0089]
Next, the correction data SAn is added to the content of the beat register BTR and stored in the part n beat register BTRn (step S82). Next, it is checked whether or not the result of the addition (the contents of the part n beat register BTRn) is smaller than “0” (step S83). If it is determined that the value is smaller than “0”, “192” is added to the contents of the part n beat register BTRn and stored in the part n beat register BTRn (step S84), and then the bar register BRR is stored. The contents are decremented and stored in the part n bar register BRRn (step S85). By the processing of steps S84 and S85, the content of the beat register BTR obtained by the step time correction of part n is converted to be positive. Thereafter, the process branches to step S90.
[0090]
If it is determined in step S83 that the addition result is not smaller than “0”, it is checked whether or not the addition result (the contents of the part n beat register BTRn) is “192” or more (step S86). If it is determined that the value is “192” or more, “192” is subtracted from the contents of the part n beat register BTRn and stored in the part n beat register BTRn (step S87), and then the bar register BRR. Is incremented and stored in the part n bar register BRRn (step S88). By the processing of steps S87 and S88, when the content of the beat register BTR exceeds one bar (192 steps) by the step time correction of part n, it is converted to be within the range of one bar. Thereafter, the process branches to step S90.
[0091]
If it is determined in step S83 that the addition result is not “192” or more, that is, “0 ≦ content of part n beat register BTRn <192”, the content of measure register BRR is stored in part n measure register BRRn. Stored (step S89). In this case, the content set in the part n beat register BTRn is used as it is in step S82. Thereafter, the process proceeds to step S90.
[0092]
When the step time correction is completed by the above processing, unsound data is searched from the pattern data of part n (step S90). In other words, the pattern data included in the bar indicated by the contents of the part n bar register BRRn is searched for one having a step time smaller than or equal to that of the part n beat register BTRn. Next, the key code (KCOD), gate time (GTIM), and velocity (VELO) in the retrieved pattern data are read (step S91).
[0093]
Next, the corrected velocity of part n is generated (step S92). This process is the same as that already described with reference to FIG. Next, the register group n corresponding to part n is updated (step S93). That is, the key code (KCOD), the gate time (GTIM), and the corrected velocity (VLAn) are stored in one of the register groups n.
[0094]
Next, it is checked whether the part n is ON, that is, whether any of the part switches 139 to 142 corresponding to the part n is pressed (step S94). Performed (step S95). As a result, sound generation with the corrected step time and velocity is performed. On the other hand, if it is determined that the part switch has not been pressed, step S95 is skipped. Therefore, in this case, only pattern data is read out.
[0095]
Next, the part number n is incremented (step S96), and if the result is not 5 or more, the process returns to step S81 and the reading process for the next part is performed. It recognizes and returns from this part 1-4 reading processing routine, and returns to the main routine.
[0096]
(6) Part 1-4 switching processing (FIG. 11)
Next, the part switching process performed in step S43 of the panel control process routine will be described. This part switching process is a process for starting or stopping the sound generation of the part when the part switches 139 to 142 are pressed. In the automatic performance device of the present embodiment, as already described, the pattern data of
[0097]
FIG. 18 shows an outline of the operation when the part switch is turned on. FIG. 18 shows an operation state when the part switch n is turned on at time TB, and the portion surrounded by the thick line indicates that pattern data is read, and the shaded portion in it is read. This indicates that pronunciation is performed based on the pattern data.
[0098]
In the example of FIG. 18, when the part switch n is turned on, the
[0099]
By performing such processing, for example, the key 3 in FIG. 18, a sound that should be sounded in response to the change in the ON state of the part switch n, but the sound that has been sounded in a short time, does not start sounding. Even if no sound is assigned to the sound that disappears in such a short time, there is no problem in audibility. On the other hand, there is an advantage that the time required for the
[0100]
In order to realize the above functions, in the part switching process, first, the part number is initialized to “n = 1” (step S100). Next, it is checked whether or not there is a part switch event of part n (step S101). This is performed by checking whether the bit corresponding to the part switches 139 to 142 of the part n in the panel event map is “1”. If it is determined that there is no event, the process branches to step S108. On the other hand, if it is determined that there is a part switch event of part n, it is then checked whether the event is an on event (step S102). This is performed by checking whether or not the bit corresponding to the part switches 139 to 142 of the part n in the new panel data is “1”.
[0101]
If it is determined that this is an on event, the remaining gate time of the register group n is read (step S103). That is, the remaining gate time of the key code stored in the register group n in the key-on state is read out. At this time, the corrected velocity is also read out. Next, it is checked whether or not the remaining gate time is equal to or longer than the predetermined time TR (step S104). When it is determined that the remaining gate time is equal to or longer than the predetermined time, a key-on output is performed (step S105). At this time, the corrected velocity is also output. Thereby, sound generation based on the pattern data of part n is started. This is processing corresponding to the case of the key 4 in FIG.
[0102]
On the other hand, if it is determined that the remaining gate time is not equal to or longer than the predetermined time TR, the remaining gate time of the key code is set to “0” (step S106). As a result, pronunciation is not started. By the processing in steps S104 to S106, a function is realized in which sound generation is performed if the remaining gate time is equal to or greater than the predetermined value TR, and sound generation is suppressed if the remaining gate time is smaller than the predetermined value TR.
[0103]
If it is determined in the
[0104]
In step S108, the part number n is incremented, and if the result is not 5 or more, the process returns to step S101 to perform the switching process for the next part. Returning from the
[0105]
(7) Timer interrupt processing (Figure 12)
Next, the timer interrupt processing routine will be described. This timer interrupt processing routine is started when an interrupt signal is supplied from the
[0106]
In the timer interruption process, first, it is checked whether or not the automatic performance flag is turned on (step S110). That is, it is checked whether or not the automatic performance device is in an automatic performance state. If it is determined that the automatic performance flag is ON, the content of the beat register BTR is incremented (step S111), and it is checked whether or not the result is “192” or more (step S112). If it is determined that the value is “192” or more, the beat register BTR is cleared to zero (step S113), and the bar register BRR is incremented (step S114). If it is determined in step S112 that the value is not “192” or more, the processes in steps S113 and S114 are skipped. The process of steps S111 to S114 realizes a function that is incremented in a state where the bar register BRR and the beat register BTR are connected every step time.
[0107]
Next, the gate times of all parts are updated (step S115). That is, the remaining gate time included in the register group of all parts is decremented except for “0”. As a result of this decrement, if there is a new remaining gate time, the key-off output is performed for the key code corresponding to the remaining gate time, and the sound generation is stopped.
[0108]
If it is determined in step S110 that the automatic performance flag is not on, it is recognized that automatic performance is not being performed, and only the gate times of all parts are updated. Thereafter, the process returns from the timer interrupt processing routine to return to the interrupted position.
[0109]
As described above, in this embodiment, the normalized pattern data is stored in the
[0110]
Then, the normalized pattern data is read from the
[0111]
With this configuration, an image of a mechanical performance pattern as seen in pronunciation based only on normalized pattern data can be dispelled, and as step time correction data and velocity correction data, for example, the normalized pattern data By using the difference data between the performance pattern based on the performance pattern actually played by the performer, an automatic performance pattern that matches the human emotion cycle can be realized. If the step time correction data and velocity correction data are created from difference data from a performance pattern played by a specific musician, an automatic performance pattern of “whose performance” can be obtained.
[0112]
Moreover, since it is not necessary to create pattern data for all measures of one song in order to realize an automatic performance pattern that matches the period of human emotions as in the past, an automatic performance pattern with a good volume, for example, can be created with a small capacity There is an effect that it can be realized.
[0113]
In the above description, “step time” and “velocity” are taken as fluctuation parameters. However, the same effect as described above can be obtained by performing the same processing as described above for “gate time”. it can.
[0114]
Further, if the fluctuation of “tempo speed” is reproduced in “other processing” (step S17) in FIG. 3, a more live automatic performance can be realized. At this time, the tempo speed correction data is stored in advance with respect to a large number of bars as in the correction data of FIGS. 15 and 16, and is switched according to the selected song or rhythm style.
[0115]
In the present embodiment, the pattern data of all the parts is sequentially read in accordance with the contents of the bar register BRR and the beat register BTR, and performance data (key code, remaining gate time and velocity) is created therefrom to register the register group n of the
[0116]
When a new part is instructed to be played during the automatic performance, even if the performance data stored in the register group n in the key-on state has already passed the sounding start timing, the sound that has not reached the mute timing yet. Starts sounding even from the middle. As a result, it is possible to avoid a situation in which the sound that should be pronounced is not pronounced due to a slight shift (delay) in the timing designated by the performer's part switches 139 to 142. The performance can be started completely.
[0117]
When the part switches 139 to 142 indicate that a predetermined part should be turned off, the sound that is being generated by the parts corresponding to the part switches 139 to 142 is immediately stopped. For example, this is realized by ending sound generation by replacing with a release envelope that is much faster than those envelopes even when the damper is turned on with a long sustaining tone or piano sound.
[0118]
In this way, the automatic performance of a specific part can be started or ended at a player's desired timing, which means that the automatic performance of a specific part can be performed at a timing that is finer than the timing of sound generation or muting based on pattern data. This means that it can be performed or stopped, and there is an effect that a new performance form becomes possible.
[0119]
When a new part is instructed to be sounded, the mute timing has not yet been reached, but if the remaining sounding time (remaining gate time) is smaller than the predetermined value TR, no sound is produced, and only when the sound is greater than the predetermined value. I try to pronounce.
[0120]
As a result, a sound that does not affect the sense of hearing that is immediately muted even if it is pronounced is not pronounced from the beginning, so the load on the CPU is reduced. Therefore, since the CPU can execute other processes, a more efficient automatic performance device can be realized.
[0121]
【The invention's effect】
As described above in detail, according to the present invention, it is possible to provide an automatic performance device capable of realizing an automatic performance pattern that easily matches a human emotion cycle with a small memory capacity. In addition, it is possible to provide an automatic performance apparatus that can play or stop a specific part even in the middle of automatic performance.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of an automatic performance device according to an embodiment of the present invention.
FIG. 2 is a diagram showing an example of an operation panel used in the embodiment of the present invention.
FIG. 3 is a flowchart (main routine) showing the operation of the embodiment of the present invention.
FIG. 4 is a flowchart (MIDI-IN interrupt processing routine) showing the operation of the embodiment of the present invention.
FIG. 5 is a flowchart (panel control processing routine) showing the operation of the embodiment of the present invention.
FIG. 6 is a flowchart (MIDI-IN processing routine (part 1)) showing the operation of the embodiment of the present invention.
FIG. 7 is a flowchart (MIDI-IN processing routine (part 2)) showing the operation of the embodiment of the present invention.
FIG. 8 is a flowchart (corrected velocity generation routine) showing the operation of the embodiment of the present invention.
FIG. 9 is a flowchart (
FIG. 10 is a flowchart (
FIG. 11 is a flowchart (
FIG. 12 is a flowchart (timer interrupt processing routine) showing the operation of the embodiment of the present invention.
FIG. 13 is a diagram showing a configuration of a reception buffer used in the embodiment of the present invention.
14A is a diagram showing a configuration of a register group n used in the embodiment of the present invention, and FIG. 14B is a diagram showing a configuration of pattern data used in the embodiment of the present invention.
FIG. 15 is a diagram for explaining step time correction data used in the embodiment of the present invention.
FIG. 16 is a diagram for explaining velocity correction data used in the embodiment of the present invention.
FIG. 17 is a diagram for explaining an operation of a sound generation process when a chord is changed in the embodiment of the present invention.
FIG. 18 is a diagram for explaining the sound generation process when the part switch is turned on in the embodiment of the present invention;
[Explanation of symbols]
10 CPU
11 ROM
12 RAM
13 Operation panel
14 Music generator
15 Speaker system
16 timer
17 MIDI controller
18 FD controller
19 Floppy disk drive device
30 System bus
130 bars / beat indicator
131 Code display
132 Tempo speed indicator
133 Incrementer
134 Stop switch
135 Play / pause switch
136 FF switch
137 REW switch
138 Repeat switch
139
140 Part 2 switch
141 Part 3 switch
142 Part 4 switch
143-150 LED display
Claims (2)
自動演奏の時間進行を管理する時間管理手段と、
該時間管理手段の内容に基づいて前記パターンデータ記憶手段に記憶された全パートのパターンデータを順次読み出すパターンデータ読出手段と、
該パターンデータ読出手段により読み出されたパターンデータに基づいて作成された全パートの演奏データを記憶する演奏データ記憶手段と、
該演奏データ記憶手段に記憶された演奏データの中の残りの発音時間を示す残存ゲートタイムを所定時間毎に更新する更新手段と、
各パートの発音を指示する指示手段と、
該指示手段により指示されたパートのみ発音する発音手段とを有し、
前記発音手段は、自動演奏中に前記指示手段により新たなパートの発音が指示された場合に、前記演奏データ記憶手段に記録された該パートの演奏データの中の残存ゲートタイムに基づいて発音をするかしないか制御することを特徴とする自動演奏装置。Pattern data storage means storing pattern data of a plurality of parts;
A time management means for managing the time progression of the automatic performance;
Pattern data reading means for sequentially reading the pattern data of all the parts stored in the pattern data storage means based on the contents of the time management means;
Performance data storage means for storing performance data of all parts created based on the pattern data read by the pattern data reading means;
Updating means for updating the remaining gate time indicating the remaining pronunciation time in the performance data stored in the performance data storage means at predetermined intervals ;
Instruction means for instructing the pronunciation of each part;
And a Part of viewed Could sound generating means designated by said instruction means,
It said sound generating means, when the sound of the new part has been shown fingers by said instruction means during the automatic performance, based on the previous SL remaining gate time in the performance data of the recorded the part on the performance data storage means An automatic performance device that controls whether or not to pronounce .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001309788A JP3609045B2 (en) | 2001-10-05 | 2001-10-05 | Automatic performance device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001309788A JP3609045B2 (en) | 2001-10-05 | 2001-10-05 | Automatic performance device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6224314A Division JPH0863159A (en) | 1994-08-25 | 1994-08-25 | Automatic player |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002162964A JP2002162964A (en) | 2002-06-07 |
JP3609045B2 true JP3609045B2 (en) | 2005-01-12 |
Family
ID=19128872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001309788A Expired - Fee Related JP3609045B2 (en) | 2001-10-05 | 2001-10-05 | Automatic performance device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3609045B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITBO20020691A1 (en) * | 2002-10-31 | 2004-05-01 | Roland Europ Spa | METHOD AND DEVICE FOR THE TREATMENT OF A FILE |
JP5259075B2 (en) * | 2006-11-28 | 2013-08-07 | ソニー株式会社 | Mashup device and content creation method |
JP6414164B2 (en) * | 2016-09-05 | 2018-10-31 | カシオ計算機株式会社 | Automatic performance device, automatic performance method, program, and electronic musical instrument |
-
2001
- 2001-10-05 JP JP2001309788A patent/JP3609045B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002162964A (en) | 2002-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5597971A (en) | Chord information generating apparatus and chord information generating method | |
JP3609045B2 (en) | Automatic performance device | |
US5430242A (en) | Electronic musical instrument | |
JP3844286B2 (en) | Automatic accompaniment device for electronic musical instruments | |
JP3625914B2 (en) | Arpeggiator | |
JP2773638B2 (en) | Automatic performance device | |
JP2002023746A (en) | Demonstration music playing device and method for playing demonstration music for electronic musical instrument | |
JP4318194B2 (en) | Automatic accompaniment apparatus and automatic accompaniment method for electronic musical instrument | |
JP3324881B2 (en) | Automatic performance device | |
JPH0863159A (en) | Automatic player | |
JP3640235B2 (en) | Automatic accompaniment device and automatic accompaniment method | |
JP3226268B2 (en) | Concert magic automatic performance device | |
JP3630266B2 (en) | Automatic accompaniment device | |
JP4214845B2 (en) | Automatic arpeggio device and computer program applied to the device | |
JP3362070B2 (en) | Automatic performance device | |
JP3625913B2 (en) | Arpeggiator | |
JP3902207B2 (en) | Arpeggiator | |
JP3508564B2 (en) | Sound source device | |
JP2665854B2 (en) | Automatic performance device | |
JPH10177382A (en) | Automatic player for electronic musical instrument | |
JPH06242781A (en) | Electronic musical instrument | |
JP3282675B2 (en) | Electronic musical instrument | |
JP2513014B2 (en) | Electronic musical instrument automatic performance device | |
JPH08106285A (en) | Automatic playing device | |
JP3529123B2 (en) | Automatic performance device and automatic performance method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040426 |
|
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: 20041012 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041012 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |