JP3609045B2 - Automatic performance device - Google Patents

Automatic performance device Download PDF

Info

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
Application number
JP2001309788A
Other languages
Japanese (ja)
Other versions
JP2002162964A (en
Inventor
勉 齋藤
雅彦 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP2001309788A priority Critical patent/JP3609045B2/en
Publication of JP2002162964A publication Critical patent/JP2002162964A/en
Application granted granted Critical
Publication of JP3609045B2 publication Critical patent/JP3609045B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 musical sound generator 14, a timer 16, a MIDI controller 17, and an FD controller 18 are connected to each other via a system bus 30. The system bus 30 includes, for example, an address line, a data line, a control signal line, and the like, and is used to transmit and receive various data between the above-described components.
[0019]
The CPU 10 corresponds to the pattern data reading means, a part of the sound generation means, and the updating means, and controls the entire automatic performance apparatus according to the control program stored in the ROM 11. The CPU 10 is provided with two interrupt signal input terminals INT1 and INT2. Interrupt signals are supplied from the MIDI controller 17 to the interrupt signal input terminal INT1 and from the timer 16 to the interrupt signal input terminal INT2, respectively. Details of the operation of the CPU 10 will be described later.
[0020]
The ROM 11 stores a control program for operating the CPU 10 described above and various fixed data used by the CPU 10 for various processes. The contents of the ROM 11 are read by the CPU 10. That is, the CPU 10 reads a control program (command) from the ROM 11 and interprets and executes it, and reads predetermined fixed data and uses it for various processes.
[0021]
The RAM 12 corresponds to pattern data storage means. The RAM 12 temporarily stores various data used by the CPU 10. In the RAM 12, various areas such as a buffer, a register, a counter, and a flag are defined. Specific buffers, registers, counters, flags and the like used in this embodiment will be described each time they appear below. Here, “receive buffer”, “register group n”, “bar register and beat register” Will be explained.
[0022]
(1) Receive buffer
The reception buffer is used for temporarily storing MIDI data received from a MIDI controller 17 described later. For example, as shown in FIG. 13, the reception buffer includes a counter CTR, a pointer PTR, and a storage area defined in the RAM 12, and functions as a FIFO (first-in first-out) memory under the control of the CPU 10. It has become. The storage area has, for example, 256 entries, and MIDI data is sequentially stored in each entry.
[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 RAM 12 and the MIDI data writing / reading control is performed by the CPU 10. However, a known FIFO memory element may be used instead of these. it can.
[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 parts 1 to 4.
[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 RAM 12, the above-described buffers, registers and the like are defined, and pattern data and fluctuation data are stored. The fluctuation data is composed of step time correction data and velocity correction data. Hereinafter, each of these data will be described.
[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 parts 1 to 4. In this embodiment, one beat (quarter note) is controlled with a resolution of 48 steps. Accordingly, the step time correction data is defined so that the step time of each beat can be varied within a range of ± 24 steps, as shown in an enlarged manner in FIG. As a result, the sound generation timing can be delayed or advanced up to the length of the eighth note. However, when correcting to the negative side, the step time correction data is “−1 step with respect to the previous data because of the processing in the part 1 to 4 reading processing routine (FIGS. 9 and 10) described later. "It is created to change by minutes.
[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 operation panel 13 is provided with various switches, a display and the like for communication between the automatic performance device and the operator. Details of the operation panel 13 will be described later.
[0037]
The tone generator 14 corresponds to a part of the sound generation means, and generates a tone signal based on data sent from the CPU 10 via the system bus 30. The musical tone signal generated by the musical tone generator 14 is sent to the speaker system 16. The speaker system 16 corresponds to a part of the sound generation means, and is composed of, for example, an amplifier and a speaker. The speaker system 16 is a known device that converts a musical sound signal sent from the musical sound generator 14 into an acoustic signal and emits the sound. Is.
[0038]
The timer 16 generates an interrupt signal at intervals corresponding to the tempo. The generation interval of this interrupt signal is determined by data set in the timer 16 from the CPU 10. The interrupt signal generated by the timer 16 is supplied to the interrupt signal input terminal INT2 of the CPU 10. In the present embodiment, the quarter note is controlled with a resolution (accuracy) of 1/48. Therefore, 48 interrupt signals are generated per quarter note.
[0039]
The MIDI controller 17 controls the transfer of MIDI data between the external device and the automatic performance device. Examples of the external device connected to the outside of the MIDI controller 17 include an electronic musical instrument, a sound module, a computer, and a sequencer that can process MIDI data. The MIDI controller 17 receives the MIDI data sent serially from the external device, and generates an interrupt signal when the data becomes one byte, for example. This interrupt signal is supplied to the interrupt signal input terminal INT1 of the CPU 10.
[0040]
The FD controller 18 controls the floppy disk drive device 19. For example, pattern data, fluctuation data, and the like are stored in the floppy disk mounted in the floppy disk drive device 19. Then, by operating a predetermined switch (not shown) provided on the operation panel, the pattern data and fluctuation data recorded on the floppy disk are loaded into a predetermined area of the RAM 12 via the FD controller 18.
[0041]
FIG. 2 is a diagram showing a configuration example of the operation panel 13 of the automatic performance device. The bar / beat indicator 130 is composed of, for example, a 5-digit 7-segment LED indicator. The upper 4 digits of the bar / beat indicator 130 display the “bar” currently being automatically played, that is, the contents of the bar register BRR, and the lower 1 digit shows the “beat” currently being played, ie, The beat corresponding to the contents of the beat register BTR (specifically, in the case of 4 beats, a value obtained by adding 1 to the quotient obtained by dividing the contents of the beat register BTR by 48) is displayed. The display contents of the measure / beat indicator are sequentially updated as the automatic performance progresses.
[0042]
The code display 131 is composed of, for example, an LCD display. The code display 131 displays a code (code route and code type) detected by a code detection process described later. In the present embodiment, it is assumed that the MIDI data sent through the MIDI channel 1 (MIDI-CH1) is regarded as data from the lower key, and code detection is performed on this data. Accordingly, the code display 131 displays a code detected based on the MIDI data sent from the MIDI channel 1. Note that the chord detection is not limited to performance data sent from the MIDI channel 1, but may be configured to target performance data sent from any other MIDI channel or a plurality of MIDI channels. good.
[0043]
The tempo speed indicator 132 is composed of, for example, a three-digit 7-segment LED indicator. The tempo speed display 132 displays the currently set tempo speed.
[0044]
The bar / beat display unit 130 and the tempo speed display unit 132 are configured by a 7-segment LED display, but can be configured by an LCD display, a CRT display, and other various displays. Similarly, the code display 131 is not limited to the LCD display but can be composed of a CRT display or other various displays.
[0045]
The incrementer 133 is used to set the tempo. The incrementer 133 is controlled so that, for example, the tempo is increased by rotating it to the right and the tempo is decreased by rotating it to the left. The tempo set by the incrementer 133 is displayed on the tempo speed display 132.
[0046]
The stop switch 134 is used to stop the automatic performance. That is, if the stop switch 134 is pressed during automatic performance, the automatic performance is stopped. The play / pause switch 135 is used to start or pause the automatic performance. When the automatic performance is stopped or paused (pause), when the play / pause switch 135 is pressed, the LED indicator 143 is turned on to start or restart the automatic performance, and when pressed during the automatic performance. The LED indicator 143 is turned off and enters a pause state.
[0047]
The FF switch 136 is used to increase the tempo speed for playback. That is, when the FF switch 136 is pressed in the automatic performance state, the LED display 144 is turned on to perform high-speed playback, and when it is next pressed, the LED display 144 is turned off and the original tempo speed is restored. The REW switch 137 is used to return the playback position. That is, when the REW switch 137 is pressed, the LED display 145 is turned on and the measure / beat number is reduced (rewinded). This rewind state can be confirmed on the bar / beat indicator 130. When the REW switch 137 is pressed again in the rewind state, the LED indicator 145 is turned off and the automatic performance is resumed.
[0048]
The repeat switch 138 is used to automatically play a song repeatedly. That is, when the repeat switch 138 is pressed before the automatic performance is started, the LED indicator 146 is turned on. When the automatic performance is performed to the end of the music, the performance returns to the beginning and the automatic performance of the same music is repeated. When the repeat switch 138 is pressed again in this state, the LED indicator 146 is turned off and the automatic performance repeated reproduction state is released. The repeat switch 138 is also used to repeatedly reproduce a specific section of a song by performing a predetermined operation in an automatic performance state, but the description thereof is omitted here.
[0049]
The part switches 139 to 142 correspond to instruction means. The part 1 switch 139 is used to instruct the pronunciation of the rhythm part. When the part 1 switch 139 is pressed, the LED indicator 147 is turned on to sound the rhythm part, and when it is next pressed, the LED indicator 147 is turned off and the rhythm part is stopped. Similarly, the part 2 switch 140 is used for instructing the pronunciation of the base part. When the part 2 switch 140 is pressed, the LED indicator 148 is turned on and the base part is sounded. When the part 2 switch 140 is pressed next, the LED indicator 148 is turned off and the sound generation of the base part is stopped.
[0050]
Similarly, the part 3 switch 141 is used to instruct the pronunciation of an accompaniment part (for example, a chord part). When the part 3 switch 141 is pressed, the LED display 149 is turned on to sound the accompaniment part, and when it is next pressed, the LED display 149 is turned off and the sound generation of the accompaniment part is stopped. Similarly, the part 4 switch 142 is used to indicate a melody part. When the part 4 switch 142 is pressed, the LED display 150 is turned on to generate a melody part, and when it is next pressed, the LED display 150 is turned off and the melody part is stopped.
[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 operation panel 13 includes a tone selection operator for selecting a desired tone from among a plurality of tones, a volume operator for adjusting the volume, an operator for loading data from the floppy disk into the RAM 12, and the like. Although provided, it is not directly related to the present invention, so illustration and description thereof are omitted.
[0053]
The setting state of each switch etc. of the operation panel 13 configured as described above is read into the CPU 10 as follows. That is, the CPU 10 sends a scan command to the operation panel 13. In response to the scan command, the operation panel 13 sends a signal indicating ON / OFF of each operation switch and a signal indicating the current value of the incrementer 133 to the CPU 10. The CPU 10 generates panel data (consisting of switch data in which each switch is turned on / off corresponding to 1 bit and incrementer data indicating the set value of the incrementer 133) from the received signal. This panel data is stored in the RAM 12 under the control of the CPU 10 and is used to determine the presence or absence of a panel event (details will be described later).
[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 CPU 10 is set to an initial state, and initial values are set to registers, counters, flags, etc. defined in the RAM 12.
[0056]
When this initialization process is completed, a panel switch scan process is then performed (step S11). That is, the CPU 10 sends a scan command to the operation panel 13. As a result, the operation panel 13 generates panel data as described above and sends it to the CPU 10. The CPU 10 stores this panel data (hereinafter referred to as “new panel data”) in a predetermined area of the RAM 12. Next, the panel data read in the previous panel switch scan processing and stored in the RAM 12 (hereinafter referred to as “old panel data”) is compared with the new panel data, and a panel with a different bit turned on is turned on. Create an event map.
[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 parts 1 to 4 reading process is executed (step S16). This process is a process for reading out the pattern data of each part and reproducing the musical sound. Details of the part 1 to 4 reading process will be described later.
[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 MIDI controller 17 is stored in the reception buffer. The MIDI controller 17 generates an interrupt signal when the MIDI data serially sent from the external device reaches one byte. This interrupt signal is supplied to the interrupt signal input terminal INT1 of the CPU 10. As a result, the CPU 10 enters an interrupt mode, and this MIDI-IN interrupt processing routine is called.
[0062]
In the MIDI-IN interrupt process, first, MIDI data is read from the MIDI controller 17 and written in the position indicated by the counter CTR of the reception buffer (step S20). Next, the counter CTR is incremented (step S21), and it is checked whether or not the result exceeds the maximum value TOP of the storage area (step S22). When it is determined that the maximum value TOP has not been exceeded, the MIDI-IN processing routine returns to the interrupted position of the main routine. On the other hand, if it is determined in step S22 that the maximum value TOP has been exceeded, the contents of the counter CTR are rewritten to the minimum value BTM (step S23), and then the main routine is interrupted from this MIDI-IN processing routine. Return to position. Thereby, the function of the circular buffer that rounds from the maximum value TOP to the minimum value BTM is realized.
[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 incrementer 133 has occurred. If it is determined in step S30 that the incrementer 133 event has occurred, tempo speed processing is performed (step S31). Otherwise, tempo speed processing is skipped. In the tempo speed process, the incrementer data in the new panel data is set in the timer 16 and sent to the tempo speed display 132. Thereby, the interval of the interrupt signal generated from the timer 16 is changed, and the tempo speed of the automatic performance is changed. The changed tempo speed is displayed on the tempo speed display 132.
[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 stop switch 134 in the panel event map is “1”. If it is determined that there is an event of the stop switch 134, stop processing is performed (step S33). Otherwise, the stop processing is skipped. In the stop process, the automatic performance flag defined in the RAM 12 is cleared to “0”. As a result, in the timer interrupt process (FIG. 12), which will be described later, the update of the bar register BRR and the beat register BTR is suppressed, the progress of the automatic performance is stopped, and the sound generation of each part is stopped.
[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 / pause switch 135 in the panel event map is “1”. Here, if it is determined that there is an event of the play / pause switch 135, a play process is performed (step S35), otherwise the play process is skipped. In the play process, when it is determined that the automatic performance flag is “0”, that is, when the play / pause switch 135 is pressed while the automatic performance is stopped, the automatic performance flag is set to “1” and the LED indicator 143 is lit. As a result, the bar register BRR and the beat register BTR are updated in a timer interrupt process (FIG. 12), which will be described later, and automatic performance proceeds. Conversely, when it is determined that the automatic performance flag is “1”, that is, the play / pause switch 135 is pressed during automatic performance, the automatic performance flag is cleared to “0” and the LED display 143 is turned off. Is done. As a result, the same processing as when the stop switch 134 is pressed is performed, and the sound generation of each part is stopped.
[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 FF switch 136 in the panel event map is “1”. If it is determined that there is an event of the FF switch 136, FF processing is performed (step S37), and if not, the FF processing is skipped. In the FF processing, if it is determined that the FF flag defined in the RAM 12 is “0”, that is, the FF switch 136 is pressed during normal playback, the FF flag is set to “1”, and the timer 16 has predetermined data. Is set and the LED indicator 144 is turned on. Thereby, the tempo speed is increased and high speed reproduction is performed. Conversely, if it is determined that the FF flag is “1”, that is, the FF switch 136 is pressed during high-speed playback, the FF flag is cleared to “0”, the original data is restored to the timer 16, The LED indicator 144 is turned off. As a result, the tempo speed before the FF switch 136 is pressed is restored.
[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 REW switch 137 in the panel event map is “1”. If it is determined that there is an event of the REW switch 137, the REW process is performed (step S39). Otherwise, the REW process is skipped. In the REW process, when it is determined that the REW flag defined in the RAM 12 is “0”, that is, the REW switch 137 is pressed during normal playback, the REW flag is set to “1”, and the bar defined in the RAM 12 is set. The register BRR and the beat register BTR are decremented at a predetermined speed, the result is sent to the bar / beat indicator 130, and the LED indicator 145 is turned on. As a result, the automatic performance sequence moves backward while the display on the measure / beat indicator 130 is decremented. Note that the sound generation is stopped during the REW process. Conversely, if it is determined that the FF flag is “1”, that is, the REW switch 137 is pressed during high-speed playback, the REW flag is cleared to “0” and the LED display 145 is turned off. As a result, automatic performance is resumed from the positions of the reduced bar register BRR and beat register BTR.
[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 repeat switch 138 in the panel event map is “1”. If it is determined here that there is an event of the repeat switch 138, a repeat process is performed (step S41), and if not, the repeat process is skipped. In the repeat process, if the repeat flag defined in the RAM 12 is “0”, the repeat flag is set to “1” and the LED indicator 146 is turned on. Conversely, if the repeat flag is “1”, the repeat flag is cleared to “0”, and the LED indicator 145 is turned off. Thus, although details are not shown, when reading of pattern data for one song is completed, if the repeat flag is “1”, the automatic performance sequence returns to the beginning of the music, and the same automatic performance is repeated. Executed. On the other hand, if the repeat flag is “0”, the automatic performance is stopped.
[0071]
Next, it is checked whether the event is part switch 139 to 142 (step S42). This is done by checking whether the bit corresponding to the part switches 139 to 142 in the panel event map is “1”. If it is determined that there is an event of the part switches 139 to 142, the part 1 to 4 switching process is performed (step S43). Otherwise, the part 1 to 4 switching process is skipped. Thereafter, the process returns from the panel control processing routine and returns to the main routine. Details of the parts 1 to 4 switching process will be described later.
[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 RAM 12 as a new code. The code type and code route detected here are sent to the code display 131 and displayed.
[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 RAM 12 with the new code. If it is determined that the code has not changed, the process returns from the MIDI-IN processing routine and returns to the main routine. That is, even if a MIDI message that does not change the chord type and chord root is input, the automatic performance state does not change. On the other hand, if it is determined that there has been a code change, processing corresponding to the code change in step S54 and subsequent steps is performed.
[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 RAM 12, and Whether to use pattern data is determined by the detected code type.
[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 (keys 1, 2, 3) are pronounced in the major performance pattern, and the sounds constituting the C minor (keys 1, 4, 5) are played in the minor performance pattern. Only the pattern data is read out. Then, when C minor, which is a new chord, is detected at time TA, after that, sounds (keys 1, 4, 5) constituting the C minor are sounded in the performance pattern of the minor. In FIG. 17, at time TA, key 2 and key 3 that have been pressed are released, key 4 and key 5 are newly pressed, and key 1 that has been pressed is continuously pressed. Indicates the state.
[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 CPU 10 to perform channel assignment processing is saved and the burden on the CPU 10 is reduced.
[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 part 1 is a rhythm part and is not related to chord changes.
[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 key 1, key 4 and key 5 are generated. Next, the remaining gate time of the new pattern of part n is generated (step S56). The remaining gate time is calculated from the end time of pronunciation calculated from the step time and gate time included in the pattern data of the new pattern and the contents of the current beat register BTR.
[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 RAM 12 using the contents of the bar register BRR and the beat register BTR as addresses. Next, the read correction rate VAn is multiplied by the current velocity VELO (velocity data in the pattern data) to generate a corrected velocity VLAn (step S71).
[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 key 1, key 4 and key 5). Creation of code, remaining gate time and corrected velocity is completed.
[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 musical sound generator 14 and replacing the release envelope with a much faster release envelope than the current envelope to end the sound generation. It is. This is processing corresponding to the case of the key 2 and the key 3 in FIG.
[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 musical sound generator 14 and starting sound generation, and the same applies to the following. At this time, since the corrected velocity is output as the velocity, the sound corresponding to the key code is generated with the corrected velocity. This is processing corresponding to the case of the key 5 in FIG. Thereafter, the process proceeds to step S65.
[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 parts 1 to 4 read processing is periodically called from the main routine. In this part 1-4 reading process, first, the part number is initialized to “n = 1” (step S80). That is, in this part 1-4 reading process, the pattern data reading process corresponding to each part 1-4 is performed. Next, the step correction value SAn is read (step S81). That is, the corresponding correction data SAn is read from the step time correction data in the RAM 12 with the contents of the bar register BRR and the beat register BTR as addresses. Since the step time correction data is stored in units of quarter notes, the same value as the value displayed on the bar / beat indicator 130 is used as the above address, and a predetermined lower order of the contents of the beat register BTR is used. Bits are ignored.
[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 parts 1 to 4 are always read out, and whether or not sound generation is performed based on the read pattern data is determined by the part switch. Determined by whether 139-142 is turned on.
[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 keys 1 and 2 are not sounded because they are in the off state. Although the keys 3 and 4 are in the on state, the sound of the key 3 is finished within a certain time TR after the on change of the part switch n is detected. In other words, the remaining gate time is the predetermined time TR. Since it is less than, pronunciation is not performed. Since the remaining gate time of the key 4 is equal to or longer than the predetermined time TR, sound generation is started.
[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 CPU 10 to perform channel assignment processing is saved and the burden on the CPU 10 is reduced.
[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 event 102 that the event is an off event, a key-off output for part n is performed (step S107). That is, the key-off output is performed for all the key codes stored in the register group n in the key-on state. Thereby, the sound of part n is stopped. Thereafter, the process branches to step S108.
[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 lever part 1 to 4 switching process routine, the process returns to the main routine.
[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 timer 16 to the interrupt signal input terminal INT2 of the CPU 10. Therefore, this timer interrupt processing routine is started at a time interval corresponding to one step time at the tempo set at that time.
[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 RAM 12 by about several bars (for example, two bars). On the other hand, separately from this pattern data, fluctuation data for all measures, that is, step time correction data and velocity correction data are stored in the RAM 12. The step time correction data and velocity correction data can be created, for example, from the difference between the performance pattern based on the normalized pattern data and the performance pattern actually played by the performer.
[0110]
Then, the normalized pattern data is read from the RAM 12 according to the contents of the bar register BRR and the beat register BTR, the step time correction data and the velocity correction data are read, and the normalized pattern data is read as the step time correction data and the velocity. Correction is performed using the correction data, and sound is generated based on the corrected pattern data.
[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 RAM 12. To remember. Of the performance data stored in the register group n, only the performance data corresponding to the part instructed by the part switch is generated. The contents of the register group n are updated by a timer interrupt process according to the progress of automatic performance, independently of the presence or absence of sound generation.
[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 (parts 1 to 4 read processing routine (part 1)) illustrating the operation of the embodiment of the present invention.
FIG. 10 is a flowchart (parts 1 to 4 read processing routine (part 2)) showing the operation of the exemplary embodiment of the present invention.
FIG. 11 is a flowchart (parts 1 to 4 switching processing routine) showing the operation of the embodiment of the present invention.
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 Part 1 switch
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 .
前記発音手段は、新たなパートの発音示された場合に、前記演奏データ記憶手段に記憶されている演奏データのうち、前記残存ゲートタイムが所定値以上の演奏データのみ新たに発音することを特徴とする請求項1に記載の自動演奏装置。Said sound generating means, when the sound of the new part has been shown fingers, said among the performance data stored in the performance data storage means, newly Could the remaining gate time performance data at more than a predetermined value The automatic performance device according to claim 1, wherein:
JP2001309788A 2001-10-05 2001-10-05 Automatic performance device Expired - Fee Related JP3609045B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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