JP3596048B2 - 自動伴奏装置 - Google Patents
自動伴奏装置 Download PDFInfo
- Publication number
- JP3596048B2 JP3596048B2 JP25751694A JP25751694A JP3596048B2 JP 3596048 B2 JP3596048 B2 JP 3596048B2 JP 25751694 A JP25751694 A JP 25751694A JP 25751694 A JP25751694 A JP 25751694A JP 3596048 B2 JP3596048 B2 JP 3596048B2
- Authority
- JP
- Japan
- Prior art keywords
- pattern
- data
- key
- note
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【産業上の利用分野】
この発明は、自動リズム演奏やその他の自動伴奏のために適用可能な自動伴奏装置に関し、特に自動伴奏パターンの変更を容易に行えるようにしたものに関する。
【0002】
【従来の技術】
ユーザーの望みの自動伴奏パターンを得るための、従来の自動伴奏装置における典型例は、複数の伴奏パターンを予めメモリに記憶しておき、その中のいずれかを選択するやり方である。しかし、そのやり方では、選択可能なパターンが限られてしまうという欠点が有る。すなわち、予め記憶された伴奏パターンの中からいずれかを選択するタイプの自動伴奏装置では、記憶可能な伴奏パターンの数に限界があるため、ユーザーが欲しいと思う伴奏パターンに最も近いものを選択することができるだけであり、ユーザーが真に欲する伴奏パターンを得られないことが多い。
【0003】
それに対して、ユーザーの望みに従って全く自由に自動伴奏パターンを作成できるようにするやり方としては、電子楽器等の鍵盤をユーザーが任意に手弾き演奏(押鍵)することにより、望みの伴奏パターンを作成し、これをメモリに記憶するようにしたものがある。こうしてメモリに記憶した伴奏パターンを読出し再生することによって自動伴奏を行うことができる。
また、リズム演奏パターンの作成を比較的容易にするものとして、個々の打楽器音源毎に複数のパターンを予め記憶しておき、各打楽器音源毎に夫々所望の1つのパターンを選択することにより、それらの組合せによって全体として望みのリズム演奏パターンを得るようにしたものもある。
【0004】
【発明が解決しようとする課題】
前者の手弾き演奏を利用するやり方では、ユーザー自身が音楽に関する知識や演奏技術を有していないと、適切な伴奏パターンを作成することができないという問題があり、またユーザーが知識や演奏技術等を有していたとしても、その作成作業自体に多くの手間を要し、望みの伴奏パターンの作成を非常に困難なものにしていた。
後者のパターンを利用するやり方では、打楽器音源の選択操作と望みのパターンを選択するための選択操作を別々に行わねばならないという面倒がある、また、操作性が悪い、また、組合せによって得られる演奏パターンのバリエーションに限度が有る、など解決されるべき問題点が有った。また、メモリに記憶したパターンの中からしか選択することができないので、自由な伴奏パターンの作成を行うことができないものであった。
この発明は上述の点に鑑みてなされたもので、伴奏パターンの作成や変更を容易に行えるようにすると共に、複雑なパターンであっても容易な作成や変更を可能にした自動伴奏装置を提供しようとするものである。
【0005】
【課題を解決するための手段】
この目的を達成するために、この発明に従う自動伴奏装置は、演奏すべき現在の伴奏パターンを記憶する記憶手段と、伴奏パターンに対して与える変形をそれぞれ示す複数の形容詞の何れかを指定するための指定手段と、全ての前記複数の形容詞に対応した変形アルゴリズムをそれぞれ実行して、前記記憶手段に記憶されている前記現在の伴奏パターンを基にして該伴奏パターンに対して変形を施し、各形容詞に対応した変形済みパターンをそれぞれ作成してバッファに保存する変形パターン作成手段と、前記指定手段によって何れかの形容詞の指定があったとき、前記変形パターン作成手段によって作成されて前記バッファに保存済みの前記変形済みパターンの中から該指定された形容詞に一致するパターンを選択し、前記記憶手段に記憶されている前記現在の伴奏パターンを該選択したパターンで差し替えるパターン変更手段と、前記記憶手段に記憶されている前記現在の伴奏パターンに従って自動伴奏を行い、自動伴奏音を発音させる伴奏手段とを備え、前記伴奏手段による自動伴奏に並行して前記変形パターン作成手段による前記各形容詞に対応した変形済みパターンの作成が行われることを特徴とするものである。
【0006】
【作用】
記憶されてる伴奏パターンにもとづいて、変形パターン作成手段によって複数の形容詞に対応する変形済みパターンがそれぞれ作成される。伴奏手段によって、伴奏パターンに従った自動伴奏が実行されているとき、指定手段によって複数の形容詞のうちの何れかの形容詞が指定されると、該指定された形容詞に対応する変形済みパターンが選択され、それまでの伴奏パターンと差し替えられる。
【0007】
【実施例】
以下、この発明の実施例を添付図面に従って詳細に説明する。
図2は鍵盤及び音源回路を内蔵した電子楽器1Fと、伴奏パターンのエディット処理、及び電子楽器1Fへ伴奏パターンに基づくデータを出力する処理を行うパソコン20との詳細構成及び両者間の接続関係を示すハードブロック図である。
まず、電子楽器1Fの構成について説明する。
マイクロプロセッサユニット(CPU)11は、この電子楽器1Fの動作を制御するものである。このCPU11に対して、バス1Eを介してROM12、RAM13、押鍵検出回路14、スイッチ検出回路15、表示回路16、音源回路17、サウンドシステム18、タイマ19及びMIDIインターフェイス(I/F)1Dがそれぞれ接続されている。
【0008】
この実施例ではCPU11によって押鍵検出処理や演奏データ(ノートデータ)の送受信処理及び発音処理等を行う電子楽器について説明するが、押鍵検出回路14からなるモジュールや音源回路17からなるモジュールとがそれぞれ別々に構成され、各モジュール間のデータの授受をMIDIインターフェイスで行うように構成されたものにも同様に適用できる。
ROM12はCPU11の各種プログラムや各種データを格納するものであり、リードオンリーメモリ(ROM)で構成されている。
RAM13は、演奏情報やCPU11がプログラムを実行する際に発生する各種データを一時的に記憶するものであり、ランダムアクセスメモリ(RAM)の所定のアドレス領域がそれぞれ割り当てられ、レジスタ及びフラグとして利用される。
【0009】
鍵盤1Aは、発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応してキースイッチを有しており、また必要に応じて押鍵速度検出装置や押圧力検出装置等のタッチ検出手段を有している。鍵盤1Aは音楽演奏のための基本的な操作子であり、これ以外の演奏操作子、例えばドラムパッド等でもよいことはいうまでもない。
【0010】
押鍵検出回路14は、発生すべき楽音の音高を指定する鍵盤1Aのそれぞれの鍵に対応して設けられた複数のキースイッチからなる回路を含んで構成されており、新たな鍵が押圧されたときはキーオンイベント情報を出力し、鍵が新たに離鍵されたときはキーオフイベント情報を出力する。また、鍵押し下げ時の押鍵操作速度又は押圧力等を判別してタッチデータを生成する処理を行い、生成したタッチデータをベロシティデータとして出力する。このようにキーオン、キーオフイベント情報及びベロシティ情報はMIDI規格で表現されておりキーコードと割当てチャンネルを示すデータをも含んでいる。
【0011】
パネルスイッチ1Bは、音色、音量、効果等を選択・設定・制御するための各種操作子を含むものである。パネルスイッチには色々なものがあるが、その詳細については公知なので説明を省略する。
スイッチ検出回路15は、パネルスイッチ1Bの各操作子の操作状態を検出し、その操作状態に応じたスイッチ情報を、バス1Eを介してCPU11に出力する。
表示回路16はCPU11の制御状態、設定データの内容等の各種の情報を表示部1Cに表示するものである。表示部1Cは液晶表示パネル(LCD)等から構成され、表示回路16によってその表示動作を制御される。
【0012】
音源回路17は、複数のチャンネルで楽音信号の同時発生が可能であり、バス1Eを経由して与えられた演奏情報(MIDI規格に準拠したデータ)を入力し、このデータに基づき楽音信号を発生する。後述するように、本電子楽器1Fの音源回路17は各種ドラム音の楽音信号を発生可能なように構成されているものである。
音源回路17における楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるFM方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるAM方式等の公知の方式を適宜採用してもよい。
【0013】
音源回路17から発生された楽音信号は、図示しないアンプ及びスピーカからなるサウンドシステム18を介して発音される。
タイマ19は時間間隔を計数したりするためのクロックパルスを発生するものであり、このクロックパルスはCPU11に対してインタラプト命令として与えられるので、CPU11はインタラプト処理により各種処理を実行する。
【0014】
MIDIインターフェイス(I/F)1Dは電子楽器1Fのバス1Eとパソコン20のMIDIインターフェイス(I/F)2Cとの間を接続し、MIDIインターフェイス2Cはパソコン20のバス2DとMIDIインターフェイス1Dとの間を接続している。従って、電子楽器19のバス1Eとパソコン20のバス2Dとの間は、MIDIインターフェイス1D及び2Cを介して接続され、両者の間では、MIDI規格に準拠したデータのやり取りが双方向で行えるようになっている。
【0015】
次に、パソコン20の構成について説明する。
マイクロプロセッサユニット(CPU)21は、このパソコン20の動作を制御するものである。このCPU21に対して、バス2Dを介してROM22、RAM23、ハードディスク装置24、ディスプレイインターフェイス(I/F)25、マウスインターフェイス(MOUSE I/F)26、スイッチ検出回路27、タイマ28及びMIDIインターフェイス2Cがそれぞれ接続されている。
【0016】
ROM22はCPU21の各種プログラムや各種データや各種記号文字等のデータを格納するものであり、リードオンリーメモリ(ROM)で構成されている。
RAM23は、CPU21がプログラムを実行する際に発生する各種データを一時的に記憶するものであり、ランダムアクセスメモリ(RAM)で構成されている。なお、この実施例では、RAM23の所定領域が図3に示すようなカレントパターンメモリ領域、アサインメモリ領域、アンドゥバッファ領域、退避メモリ領域及びパターンテーブル領域に割り当てられている。
【0017】
カレントパターンメモリ領域は、自動伴奏時に読み出されるリズムパターンを記憶する領域である。アサインメモリ領域は、エディット処理やトランスフォーマー処理によって新たに作成されたリズムパターンを記憶する領域である。アンドゥバッファ領域は、トランスフォーマー処理によって変形されたリズムパターンを一時的に記憶する領域である。退避メモリ領域は、フィルインを挿入するときにそれまでのカレントパターンを保存したり、データベースからコンポーネントのリズムパターンを読み出す時、前に存在していたコンポーネントのリズムパターンを一時的に保存する領域である。
【0018】
パターンテーブル領域は、データベース(ハードディスク装置24)に記憶されているリズムパターンのアドレスとリズムパターンの複雑度を示すデータを、その複雑度の小さい順序をアドレスとして記憶する領域である。すなわち、パターンテーブル領域はリズムパターンを複雑度の小さい順序に並び替えた場合に、その順序アドレスをデータベース上のアドレスに変換するためのアドレス変換用のパターンテーブルを記憶する領域である。このパターンテーブルの詳細については後述する。
【0019】
ハードディスク装置24は、パソコン20の外部記憶装置であり、数十〜数百メガバイト(MB)の記憶容量を有する。この実施例では、ハードディスク装置24は、リズムパターンのデータベースとして利用され、図3に示すようなそれぞれ異なる音楽スタイル(ジャンル)のパターンを記憶するために3つのバンクA,B,Cに分割にされている。
【0020】
この実施例では、バンクAには各ドラム音のコンポーネントに対応したロック音楽専用の複数のリズムパターンが記憶され、バンクBには各ドラム音のコンポーネントに対応したディスコ音楽専用の複数のリズムパターンが記憶され、バンクCには各ドラム音のコンポーネントに対応したロック及びディスコ音楽に共通の複数のリズムパターンが記憶されている。各バンクに記憶されている複数のリズムパターンを特定するための先頭アドレスが、前述のパターンテーブル領域に単純なものから複雑なものへと、その複雑さの度合いに従った順序をアドレスとして順番に記憶されている。
【0021】
例えば、バスドラム(BD)とスネアドラム(SD)とからなるコンポーネントに対しては、BD+SDパターン1、BD+SDパターン2、・・・のようにパターン番号に従ってより複雑なリズムパターンとなっている。同様に、タムタムのハイ、ミドル及びロー(TomH、TomM、TomL)からなるコンポーネントに対してもTomH+TomM+TomLパターン1、TomH+TomM+TomLパターン2、・・・のようにパターン番号に従ってより複雑なリズムパターンとなっている。
【0022】
図4は、パターンテーブル領域に記憶されているアドレス変換用のパターンテーブルの内容を示す図である。図では、ロック音楽用パターンテーブルとディスコ音楽用パターンテーブルが示してある。ロック音楽用パターンテーブルは、バンクA及びCに記憶されている複数のリズムパターンを特定するための先頭アドレスA−1,A−2,A−3,C−1,A−4,C−2,・・・,A−nを、そのリズムパターンの持つ複雑さの度合い(複雑度の大きさ)に従った順番1,2,3,・・・,nに記憶している。一方、ディスコ音楽用パターンテーブルは、バンクB及びCに記憶されている複数のリズムパターンを特定するための先頭アドレスB−1,B−2,C−1,B−3,C−2,C−3,・・・,B−nを、そのリズムパターンの持つ複雑さの度合い(複雑度の大きさ)に従った順番1,2,3,・・・,nに記憶している。
【0023】
ここで、先頭アドレスのA、B又はCは、そのリズムパターンの記憶されているバンクの種類を示す。すなわち、先頭アドレスA−1,A−2,A−3,A−4,A−nはバンクAのアドレスを示し、先頭アドレスB−1,B−2,B−3,B−nはバンクBのアドレスを示し、先頭アドレスC−1,C−2,C−3はバンクCのアドレスを示す。
【0024】
複雑度はリズムパターンを所定の規則に応じて『0〜100』の値に数値化したものを用いる。所定の規則として、例えば、リズムパターン中に含まれる音の数、リズムパターン中のノートイベントデータが存在するタイミングの数、リズムパターンの前半に含まれる音の数と後半に含まれる音の数との差、又はあるタイミング(例えば、一拍目、三拍目、8分の裏拍等)におけるイベントの出現数等を、そのまま複雑度としたり、これらの規則をユーザーが任意に選択し適宜組み合わせたものや、これらを総合的に判断したものを複雑度とする。また、ユーザーが任意にリズムパターンを並び替えることができるようにしてもよい。
【0025】
ロック音楽用パターンテーブルでは、アドレス『1』には、複雑度の最も小さい『5』のロック音楽専用のリズムパターンがデータベース上の先頭アドレス『A−1』に記憶されていることを示している。以下、同様に、アドレス『2』には複雑度『7』のロック音楽専用のリズムパターンがデータベース上の先頭アドレス『A−2』に、アドレス『3』には複雑度『10』のロック音楽専用のリズムパターンがデータベース上の先頭アドレス『A−3』に、アドレス『4』には複雑度『11』のロック及びディスコ音楽共通のリズムパターンがデータベース上の先頭アドレス『C−1』に、アドレス『5』には複雑度『16』のロック音楽専用のリズムパターンがデータベース上の先頭アドレス『A−4』に、アドレス『6』には複雑度『20』のロック及びディスコ音楽共通のリズムパターンがデータベース上の先頭アドレス『C−2』に、アドレス『n』には複雑度の最も高い『95』のロック音楽専用のリズムパターンがデータベース上の先頭アドレス『A−n』に、それぞれ記憶されていることを示している。
【0026】
ディスコ音楽用のパターンテーブルでは、アドレス『1』には、複雑度が最も小さい『10』のディスコ音楽専用のリズムパターンがデータベース上の先頭アドレス『B−1』に記憶されていることを示している。以下、同様に、アドレス『2』には複雑度『14』のディスコ音楽専用のリズムパターンがデータベース上の先頭アドレス『B−2』に、アドレス『3』には複雑度『22』のロック及びディスコ音楽共通のリズムパターンがデータベース上の先頭アドレス『C−1』に、アドレス『4』には複雑度『25』のディスコ音楽専用のリズムパターンがデータベース上の先頭アドレス『B−3』に、アドレス『5』には複雑度『26』のロック及びディスコ音楽共通のリズムパターンがデータベース上の先頭アドレス『C−2』に、アドレス『6』には複雑度『30』のロック及びディスコ音楽共通のリズムパターンがデータベース上の先頭アドレス『C−3』に、アドレス『n』には複雑度の最も高い『91』のディスコ音楽専用のリズムパターンがデータベース上の先頭アドレス『B−n』に、それぞれ記憶されていることを示している。
【0027】
なお、バンクCのリズムパターンはロック音楽及びディスコ音楽に共通するので、ロック音楽用パターンテーブルとディスコ音楽用パターンテーブルの両方に存在する。例えば、図4のパターンテーブルの中では、先頭アドレス『C−1』及び『C−2』のリズムパターンがロック音楽用パターンテーブルとディスコ音楽用パターンテーブルの両方に存在する。図4では、同じリズムパターンでありながら、その複雑度が異なるのは、前述したように複雑度を求める所定の規則がロック音楽用パターンテーブルとディスコ音楽用パターンテーブルとでそれぞれ異なっているからである。
また、各バンクA,B,Cには、図3に示すようにリアルタイム演奏を意識したフィルインパターンやその他の楽器のパターン等も記憶されているので、カレントパターンに代えて一時的にフィルインパターンを挿入して演奏できるようになっている。
【0028】
各バンクA,B,Cに記憶されているリズムパターンの内容は、図3に示すように、イベントの発生タイミングを示すタイミングデータと、そのイベントの種類を示すノートイベントデータとの組み合わせからなる演奏データを相対時間方式で順次記憶することによって構成されている。なお、ここではノートイベントデータは、MIDIのノートオンメッセージに対応した形式で記憶されており、3バイトのデータからなる。また、タイミングデータは、各ノートイベントの発生間隔をクロック数で表わしたものである。その他、ハードディスク装置24には、バリエーションパターン1及び2として、トランスフォーマーの形容詞を指示するためのシーケンスデータが2種類記憶されている。すなわち、図3に示すようにバリエーション1,2は形容詞1、形容詞2、形容詞3及び形容詞4を順番に記憶したシーケンシャルデータで構成されている。
【0029】
なお、図示していないが、ハードディスク装置24に対するアクセスタイムを大幅に短縮するために、数メガバイト程度のキャッシュメモリ(RAM)を設けたり、RAM23とハードディスク装置24との間におけるデータ転送の負担を軽減するために、DMA装置を設けたりしてもよいことはいうまでもない。
【0030】
ディスプレイ29は、パソコン20内部で演算処理されたデータ等をディスプレイインターフェイス(I/F)を介して入力し、これらのデータを視覚的に認識可能なように表示するものであり、通常のCRTやLCD等で構成される。
【0031】
図5は、ディスプレイ29の表示例を示す図である。ディスプレイ29は、現在どのコンポーネントが選択されているのか示すと共にそれが複雑度でどのレベルに位置するのかを示すために、選択されたコンポーネントのリズムパターンの複雑度を選択パターンの項に表示している。従って、選択パターンの項に複雑度が表示されているコンポーネントは現在選択されており、何も表示されていないコンポーネントは選択されていないことを意味する。また、選択パターンの項に表示された複雑度の大きさに応じてそのリズムパターンが複雑度でどのレベルに位置するのかを示す。
【0032】
例えば、図5(A)では、バスドラム(BD)とスネアドラム(SD)とからなるコンポーネントBD+SDに関しては、複雑度『80』のリズムパターンが選択されていることが示されている。タムタムのコンポーネントTomに関しては、複雑度『20』のリズムパターンが選択されていることが示されている。ハイハットのコンポーネントHHに関しては、複雑度『45』のリズムパターンが選択されていることが示されている。シンバルのコンポーネントCYに関しては、複雑度の表示がないので、何も選択されていないことが示されている。以下、同様にして、そのコンポーネントが選択されているかどうかが、選択パターンの項に複雑度が表示されているかどうかで容易に判別できるようになっている。また、選択パターンの項に表示された複雑度の大きさに応じてそのリズムパターンが複雑度でどのレベルに位置するのかを容易に認識することができる。
【0033】
図5(A)では、複雑度を直接数値表示する場合について示してあるが、これに限らず、図5(B)のように複雑度を棒グラフ等の図形で表示してもよい。このように図形表示することよって、そのコンポーネントが選択されているのかどうかが容易に認識できると共に複雑度における位置づけを感覚的に認識することができる。
【0034】
なお、上述のようにリズムパターンを複雑度で位置づけする場合に限らず、複雑度以外の要素(例えば、激しさ、ノリの良さ等)で位置づけしてもよい。また、これらの要素を複数組み合わせて、2次元、3次元、又は多次元的に表示してもよい。多次元的に表示する場合には、レーダーチャートのような図形表示が有効である。
【0035】
マウス2Aは、ディスプレイ29上の座標点を入力するポインティングデバイスの一種あり、その出力はマウスインターフェイス(MOUSE I/F)26及びバス2Dを介してCPU21に取り込まれる。
パネルスイッチ2Bは、パソコン20にプログラムやデータ等を入力するためのキーボードであり、テンキーやファンクションキー等を備えたものである。
【0036】
スイッチ検出回路27は、パネルスイッチ2Bのキー操作状態を検出し、その操作状態に応じたキー情報をバス2Dを介してCPU21に出力する。
タイマ28は時間間隔を計数したり、パソコン20全体の動作クロックを発生するものである。パソコン20はこの動作クロックを所定数だけ計数することによって所定時間の計時を行い、それに応じたインタラプト処理を行う。例えば、この所定数を自動伴奏のテンポに応じた値とすることで、パソコン20によって自動伴奏の処理を実行するようにしている。
【0037】
この実施例では、鍵盤1Aの押鍵状態に対応したノートナンバをMIDIインターフェイス1D及び2Cを介してパソコン20のCPU21に送信することによって、パソコン20のマウス2Aやパネルスイッチ2B以外にパソコン20の各種機能を選択設定制御する操作子として、電子楽器1Fの鍵盤1Aの各鍵が動作するようになっている。
【0038】
図6は、鍵盤1Aに割り当てられた各種機能の一例を示す図である。
図において、鍵盤1Aは全部で61個の鍵で構成され、パターンアサインエリア、操作子エリア及びドラムパターンエリアに分割されている。ノートナンバE0〜B1のキーがパターンアサインエリアを構成し、ノートナンバC2〜G#3のキーが操作子エリアを構成し、ノートナンバA3〜E5のキーがドラムパターンエリアを構成する。
【0039】
ノートナンバE0〜B1のキーは、エディット処理やトランスフォーマー処理によって作成されたリズムパターンを新たなリズムパターンとして記憶するためのアサインメモリ領域に対応したアドレスを発生する。すなわち、RAM23のアサインメモリ領域は全部で20個のアドレスを有したアサインメモリ管理領域と、20個のパターンを格納可能なパターン記憶領域とから成り、アサイン管理領域の一つ一つのアドレスがノートナンバE0〜B1に対応している。例えば、ノートナンバE0はアサインメモリ管理領域の第1のアドレスに対応し、ノートナンバF0は第2のアドレスに対応し、以下同様にしてノートナンバF#0〜B1がアサインメモリ管理領域の第3から第20のアドレスにそれぞれ対応している。そして、各アドレスには各パターン記憶領域の先頭アドレス値が記憶されている。
【0040】
ノートナンバC2〜G#3のキーは、エディット処理やトランスフォーマー処理を行うための各種操作子として機能する。従って、ノートナンバC2〜G#3がそのまま各鍵に割り当てられた操作子機能を表すキー情報となる。
【0041】
具体的には、ノートナンバC2のキーがアサインキー、ノートナンバD2、E2、F2、G2及びA2のキーがトランスフォーマー1〜5の指定キー、ノートナンバB2のキーがアンドゥ指定キー、ノートナンバC3のキーがスタート/ストップ指定キー、ノートナンバD3、E3及びF3のキーがバンクA〜Cの指定キー、ノートナンバG3のキーがパターン確定用のロックキー、ノートナンバC#2及びD#2のキーがバリエーション1、2の指定キー、ノートナンバF#2のキーがリプレース入力キー、ノートナンバG#2のキーがインサート入力キー、ノートナンバA#2のキーがクォンタイズ処理指定キー、ノートナンバC#3のキーがデリートドラム指示キー、ノートナンバD#3のキーがデリートコンポーネント指示キー、ノートナンバF#3のキーがアクセント入力キー、ノートナンバG#3のキーがフィルイン指定キーにそれぞれ対応している。
これら各キーの操作に応じた処理内容の詳細については後述する。
【0042】
ドラムパターンエリアのノートナンバA3〜E5のキーは、ドラム音の指定キーとして機能する。従って、ノートナンバC2〜G#3がそのまま各鍵に割り当てられたドラム音の種類を表すドラム音情報となる。
【0043】
具体的には、ノートナンバA3のキーがバスドラム(BD)、ノートナンバA#3のキーがスネアドラム(SD)、ノートナンバB3のキーがタムタムのハイ(Tom H)、ノートナンバC4のキーがタムタムのロー(Tom L)、ノートナンバC#4のキーがタムタムのミドル(Tom M)、ノートナンバD4のキーがコンガのハイ(Conga H)、ノートナンバE4のキーがコンガのロー(Conga L)、ノートナンバD#4のキーがティンバレ(Timb)、ノートナンバF4のキーがテンプルブロックのロー(TB L)、ノートナンバF#4のキーがテンプルブロックのハイ(TB H)、ノートナンバG4のキーがハイハットのクローズ(HHC)、ノートナンバA4のキーがハイハットのオープン(HHO)、ノートナンバG#4のキーがタンブリン(Tamb)、ノートナンバA#4のキーがクラベス(Clave)、ノートナンバB4のキーがカウベル(Cowbell)、ノートナンバC5のキーがアゴゥゴゥのハイ(Agogo H)、ノートナンバC#5のキーがアゴゥゴゥのロー(Agogo L)、ノートナンバD5のキーがハンドクラップス(Claps)、ノートナンバD#5のキーがクラッシュシンバル(Crash CY)、ノートナンバE5のキーがライドシンバル(Ride CY)のドラム音にそれぞれ対応している。
【0044】
上述の各ドラム音は単独で指定することも可能であるが、この実施例では、複数のドラム音をその演奏形態に応じてグループ化したコンポーネントとして利用している。従って、このコンポーネントを構成するドラム音は1又は複数である。ここで、コンポーネントが複数のドラム音から構成される場合には、これらの間には演奏形態に共通性(音楽的な関連)が存在することが必要である。例えば、バスドラム(BD)とスネアドラム(SD)とが、タムタムのハイ(Tom H)とタムタムのミドル(Tom M)とタムタムのロー(Tom L)とが、コンガのハイ(Conga H)とコンガのロー(Conga L)とティンバレ(Timb)とが、テンプルブロックのハイ(TB H)とテンプルブロックのロー(TB L)とが、ハイハットのオープン(HHO)とハイハットのクローズ(HHC)とが、アゴゥゴゥのハイ(Agogo H)とアゴゥゴゥのロー(Agogo L)とが、それぞれ1つのコンポーネントを構成する。従って、タンブリン(Tamb)、クラベス(Clave)、カウベル(Cowbell)、ハンドクラップス(Claps)、クラッシュシンバル(Crash CY)及びライドシンバル(Ride CY)のドラム音は単独扱いのコンポーネントとなる。
【0045】
但し、タンブリン(Tamb)とクラベス(Clave)とを、カウベル(Cowbell)とハンドクラップス(Claps)とを、クラッシュシンバル(Crash CY)とライドシンバル(Ride CY)とを、それぞれ1つのコンポーネントとして扱ってもよいことはいうまでもない。また、これ以外の組合せでもよい。
【0046】
図1は、図2の電子楽器1F及びパソコン20が伴奏パターン作成装置として動作する場合の機能ブロックを示す図である。
図1の伴奏パターン作成装置はカレントパターンメモリ1を中心に動作する。パソコン20は、カレントパターンメモリ1からカレントパターンを読み出しながら自動伴奏処理を行うようになっている。
【0047】
カレントパターンメモリ1、アサインメモリ2、アンドゥバッファ3、退避メモリ4及びパターンテーブル63は、図3に示されたRAM23の所定領域がそれぞれ対応する。
データベース手段5は、図2のハードディスク装置24に対応する。データベース手段5は図3のように多数のリズムパターンデータを記憶している。
パターンセレクタ61は、図2の鍵盤1AのノートナンバA3、A#3、B3、・・・、E5のドラムパターンエリアの各指定キーと、鍵盤1AのノートナンバD3、E3及びF3のバンクA,B,Cの指定キーとがそれぞれ対応する。
【0048】
従って、この伴奏パターン作成装置は、パターンセレクタ61によってデータベース手段5内のコンポーネントが適宜選択されると、それに対応したリズムパターンデータをデータベース手段5から読み出して、カレントパターンメモリ1に供給する。この実施例では、コンポーネントの選択は、パターンセレクタ61すなわち鍵盤1Aの操作によって行われ、鍵盤1Aの操作によって発生したノートナンバに対応したコンポーネントが指定される。この時、各コンポーネント中のリズムパターンは複数存在するので、指定されたコンポーネントのどのリズムパターンデータを読み出すかは、鍵盤1Aの操作時におけるベロシティデータによって行う。
【0049】
すなわち、データベース手段5内の各バンクA,B,Cを構成する各リズムパターンデータの先頭アドレスは、図4のようにリズムパターンの複雑度に応じた順番をアドレスとしてパターンテーブル63に記録されている。そこで、パターンセレクタ61の操作時におけるベロシティデータをパターンテーブル63のアドレスに対応付けることによって、パターンテーブル63からはベロシティデータの大きさに応じて複雑度のそれぞれ異なるリズムパターンデータの先頭アドレスがパターンセレクタ61に供給される。パターンセレクタ61は、データベース手段5の該先頭アドレスによって指定されたアドレスに記憶されているリズムパターンデータを読み出して、カレントパターンメモリ1に供給する。データベース手段5から読み出されたリズムパターンデータはカレントパターンメモリ1内にカレントパターンとして格納される。格納されたカレントパターンの内容はエディット手段7やトランスフォーマー9によって種々の変更が施される。
【0050】
エディット手段7は、図2の鍵盤1AのノートナンバF#2のリプレース入力キー、ノートナンバG#2のインサート入力キー、ノートナンバA#2のクォンタイズ処理指定キー、ノートナンバC#3のデリートドラム指示キー、ノートナンバD#3のデリートコンポーネント指示キー、ノートナンバF#3のアクセント入力キーに対応する。
【0051】
ここで、リプレース入力とはカレントパターンの元のノートイベントデータを消去し、新たなノートイベントデータのみを記憶することをいう。インサート入力とはカレントパターンの元のノートイベントデータに新たなノートイベントデータを追加して記憶することをいう。クォンタイズとはノートイベントの発生タイミングを基準タイミングにジャストフィットさせることをいう。アクセントとはカレントパターン内のドラム音で、操作された鍵盤に対応するドラム音にアクセントを付けなおすことをいう。デリートドラムとはカレントパターン内のドラム音であって、操作された鍵盤に対応するドラム音だけを消去することをいう。デリートコンポーネントとはカレントパターン内のドラム音であって、操作した鍵盤に対応するコンポーネントのドラム音を全て消去することをいう。
【0052】
形容詞指示手段8は、図2の鍵盤1AのノートナンバD2,E2,F2,G2,A2のトランスフォーマー指定キーに対応する。
トランスフォーマー9は、図2のROM22内に格納されているトランスフォーマー用プログラムに対応する。カレントパターンの内容はこのトランスフォーマー指定キーに対応する形容詞指示手段8で指示された形容詞に応じて変形処理される。このトランスフォーマー9は感覚的な形容詞の指示をするだけで思い通りのイメージに沿ったパターンを作成する。
【0053】
アンドゥ手段10は、図2の鍵盤1AのノートナンバB2のアンドゥキーに対応する。
トランスフォーマー9によって変形されたパターンはアンドゥバッファ3に保存されるので、変形の結果、思い通りのパターンが得られなかった場合には、元のパターンを呼び戻すことができるようになっている。すなわち、アンドゥバッファ3には変形されたパターンが変形処理順に記憶されるので、アンドゥバッファ3の内容を順次遡って読み出すことによって元のパターンを呼び戻すことができる。
このようにして、新たなパターンの追加や変形によって作成されたカレントパターンは、アサインメモリ2に記憶しておくことが可能であり、アサインメモリ2に記憶されたパターンはいつでも鍵盤1Aのパターンアサインエリアのキーを操作することによって読み出すことができる。
【0054】
パターン登録手段62は、図2のパネルスイッチ2B上のパターン登録用操作子が対応する。
パターン登録手段62は、カレントパターンメモリ1内のカレントパターン、すなわちエディット手段7やトランスフォーマー9よって種々変更の施されたものをデータベース手段5に新たなリズムパターンデータとして新規登録する。この時、パターン登録手段62は、データベース手段5に新規登録したリズムパターンデータの複雑度を求め、その複雑度に応じてパターンテーブル63内の順番を並び替えて、新たなパターンテーブル63を作成する。
【0055】
例えば、図5に示すような複雑度『20』のタムタムTomのリズムパターンをデータベース手段5のバンクBのディスコ音楽用パターンテーブルに新たに登録する場合を想定して、パターンテーブルの並び替えについて説明する。まず、パターン登録手段62は、タムタムTomのリズムパターンをデータベース手段5のアドレス『B−n1』に登録する。そして、パターン登録手段62は、タムタムTomのリズムパターンの複雑度を求める。タムタムTomのリズムパターンの複雑度は『20』なので、パターン登録手段62は、図4に示すようなディスコ音楽用パターンテーブルのアドレス『3』以降の先頭アドレス『C−1,B−3,C−2,C−3,・・・,B−n』をそれぞれ1アドレスずつ後方に移動し、アドレス『3』の位置にタムタムTomのリズムパターンの先頭アドレス『B−n1』を新たに記録する。
【0056】
次に、CPU11によって実行される図2の電子楽器1Fの処理の一例を図7のフローチャートを用いて説明する。
図7(A)は図2の電子楽器1FのCPU11が処理するメインルーチンの一例を示す図である。
まず、電源が投入されると、CPU11はROM12に格納されている制御プログラムに応じた処理を開始する。「イニシャライズ処理」では、RAM13内の各種レジスタ及びフラグを初期化する。その後に、CPU11は「キー処理」、「MIDI受信処理」及び「その他の処理」をイベントの発生に応じて繰り返し実行する。
【0057】
図7(B)は図7(A)の「キー処理」の詳細を示す図である。
「キー処理」では、鍵盤1Aの操作状態がキーオン状態かキーオフ状態かを判定し、その判定結果に応じて、MIDIノートオンメッセージ又はMIDIノートオフメッセージをMIDIインターフェース1D及び2Cを介してパソコン20に出力する。従って、この実施例では、鍵盤1Aが操作された場合でも電子楽器自体の処理すなわち音源回路17を駆動しないようにしてある。そのため、キー処理の時点では、音源回路17は発音処理を行わないようにしてある。
【0058】
図7(C)は図7(A)の「MIDI受信処理」の詳細を示す図である。
「MIDI受信処理」では、パソコン20からMIDIインターフェース2C及び1Dを介してMIDIメッセージを入力する毎に実行する。「MIDI受信処理」では、そのMIDIメッセージがノートオンメッセージかどうかを判定し、ノートオン(YES)の場合にはそのノートオン信号、ノートナンバ及びベロシティデータを音源回路17に供給し、楽音の発音を音源回路17に行わせる。一方、MIDIメッセージがノートオン以外(NO)の場合には受信したMIDIメッセージに応じた「メッセージ対応処理」を行った後、図7(A)のメインルーチンにリターンする。
「その他の処理」では、パネルスイッチ1Bにおけるその他の操作子の操作に基づく処理やその他の種々の処理を行う。
【0059】
次に、CPU21によって実行される図2のパソコン20の処理の一例を図8〜図17のフローチャートを用いて説明する。
図8(A)は図2のパソコン20のCPU21が処理するメインルーチンの一例を示す図である。
まず、電源が投入されると、CPU21はROM22に格納されている制御プログラムに応じた処理を開始する。「イニシャライズ処理」では、RAM23内の各種レジスタ及びフラグを初期化する。その後に、CPU21は「MIDI受信処理」、「表示処理」及び「その他の処理」を繰り返し実行する。
【0060】
図8(B)は図8(A)の「MIDI受信処理」の詳細を示す図である。
「MIDI受信処理」は、電子楽器1FからMIDIインターフェース1D及び2Cを介してMIDIメッセージが入力する毎に実行される。「MIDI受信処理」では、MIDIメッセージがノートオンメッセージかどうかを判定し、ノートオン(YES)の場合にはそのキーオンのノートナンバに対応した処理(図9〜図12の処理)を実行し、ノートオフ(NO)の場合にはそのキーオフのノートナンバに対応した処理(図13の処理)を実行する。
【0061】
「表示処理」では、データベース手段5のどのバンクを処理中であり、演奏しているドラム音の種類やカレントパターンのどの部分を演奏中であるかをディスプレイ29に表示するための処理を行う。具体的には、図5や図21に示すような画面を表示する。
「その他の処理」では、パネルスイッチ2Bにおけるその他の操作子の操作に基づく処理やその他の種々の処理を行う。ここでは、パネルスイッチ2B上のパターン登録用操作子の操作に応じた図17の「パターン登録処理」を行う。この「パターン登録処理」の詳細について後述する。
【0062】
図9〜図12は、受信したMIDIメッセージがノートオンメッセージの場合に実行される図8(B)のノートオンメッセージのノートナンバに対応した処理を示す図である。
図9(A)は、鍵盤1AのノートナンバE0〜B1に対応したパターンアサインエリアのキーが操作されることによって、ノートナンバE0〜B1を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるパターンアサインエリアキー処理を示す図である。
このパターンアサインエリアキー処理では、まずアサインフラグASSIGNがハイレベル“1”かどうかを判定し、その判定結果に応じた処理を行う。
【0063】
すなわち、アサインフラグASSIGNは、鍵盤1Aのアサインキー(ノートナンバC2のキー)がキーオン操作された場合に、図9(B)のアサインキー処理によってハイレベル“1”にセットされ、逆にキーオフ操作された場合には図13(A)の処理によってローレベル“0”にリセットされる。従って、アサインフラグASSIGNがハイレベル“1”(YES)だと判定された場合は、パターンアサインエリアのキーとアサインキーとが同時に押されていることを意味するので、この場合には、カレントパターンメモリ1内のカレントパターンをそのノートナンバに対応したアサインメモリ2のアサインメモリ領域にコピーしてリターンする。
【0064】
一方、アサインフラグASSIGNがローレベル“0”(NO)だと判定された場合は、パターンアサインエリアのキーだけが操作されたことを意味するので、この場合には、そのノートナンバに対応したアサインメモリ2のアサインメモリ領域に記憶されているリズムパターンをカレントパターンメモリ1にコピーしてリターンする。
【0065】
すなわち、アサインキーを押しながらパターンアサインエリアのキーを操作した場合には、その時にカレントパターンメモリ1に記憶されているリズムパターンデータがそのパターンアサインエリアのキーに登録され、パターンアサインエリアのキーだけを単独に操作した場合には、そのキーに予め登録されているリズムパターンがカレントパターンメモリ1に呼び出されることとなる。
【0066】
図9(B)は鍵盤1AのノートナンバC2に対応したアサインキーが操作され、ノートナンバC2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるアサインキー処理を示す図である。
このアサインキー処理では、全フラグをローレベル“0”にクリアしてからアサインフラグASSIGNにハイレベル“1”をセットしてリターンする。
【0067】
図9(C)は鍵盤1AのノートナンバD2〜A2(#を除く)に対応したトランスフォーマー1〜5のキーが操作され、ノートナンバD2〜A2(#を除く)を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるトランスフォーマーキー処理を示す図である。
ノートナンバD2〜A2(#を除く)を含むMIDIメッセージが電子楽器1Fから受信されたということは、トランスフォーマーの形容詞の種類を指示したことを意味する。従って、このトランスフォーマーキー処理では、まず、全フラグをローレベル“0”にクリアし、MIDIメッセージ内のノートナンバ及びベロシティデータに応じてトランスフォーマーの形容詞の種類を決定する。トランスフォーマーの種類が決定したらトランスフォーマーフラグTRANSにハイレベル“1”をセットしてリターンする。
【0068】
なお、この実施例では、それぞれのトランスフォーマー1〜5には、2つの形容詞が割り当てられており、ベロシティデータの大きさに応じていずれか一方が選択されるようになっている。例えば、トランスフォーマー1には複雑化処理(Complex)と簡単化処理(Simple)、トランスフォーマー2には硬音化処理(Hard)と軟音化処理(Soft)、トランスフォーマー3には活発化処理(Energetic)と平静化処理(Calm)、トランスフォーマー4には無表情化処理(Mechanical)と優美化処理(Graceful)、トランスフォーマー5にはどもり化処理(Stuttering)と浮動化処理(Floating)がそれぞれ割り当てられている。
従って、ベロシティデータの大きさがある所定値以下の場合には前者が選択され、所定値よりも大きい場合には後者が選択されるようになっている。
トンラスフォーマーフラグTRANSがハイレベル“1”の場合は、トランスフォーマー9は図16(D)のトランスフォーマーキー処理を行い、カレントパターンの内容を各トランスフォーマーの形容詞に応じて変更する。
【0069】
以下、各形容詞の内容について説明する。
複雑化処理(Complex)とは、次のいずれか一つを実行することをいう。
複雑化処理の第1は、予め指示されたテンプレートと呼ばれるパターン原型に基づき、このテンプレートに対応した3連音符系のリズムパターンをデータベース手段5からサーチし、それをカレントパターンに加えることによって行われる。
複雑化処理の第2は、データベース手段5からランダムにクラッシュ以外のコンポーネントを構成するドラム音を抽出してカレントパターンに加えることによって行われる。
【0070】
簡単化処理(Simple)とは次のいずれか一つを実行することをいう。
簡単化処理の第1は、カレントパターン内のバスドラム(BD)、スネアドラム(SD)のリズムパターンに比べてより基本のリズムパターンに近いものをデータベース手段5からサーチし、それをカレントパターンとすることによって行われる。
簡単化処理の第2は、カレントパターン内のハイハット(HHC,HHO)のリズムパターンに比べてより基本のリズムパターンに近いものをデータベース手段5からサーチし、それをカレントパターンとすることによって行われる。
簡単化処理の第3は、上記バスドラム(BD)、スネアドラム(SD)、ハイハット(HHC,HHO)以外のコンポーネントのリズムパターンをカレントパターン内から除去することによって行われる。
【0071】
硬音化処理(Hard)とは次のいずれか一つを実行することをいう。
硬音化処理の第1は、カレントパターン内のリズムパターンの全てのベロシティを一律に増加させることによって行われる。
硬音化処理の第2は、カレントパターン内のドラム音をソフト用コンポーネントからハード用コンポーネントに交換することによって行われる。
【0072】
ここで、ハード用コンポーネントを構成するドラム音は、例えばバスドラム(BD)、スネアドラム(SD)、タムタム(Tom H,Tom M,Tom L)、カウベル(Cowbell)、アゴーゴ(Agogo H,Agogo L)、ハンドクラップス(Claps)、クラッシュ(Crash CY)であり、ソフト用コンポーネントを構成するドラム音は、例えばクラベス(Clave)、タンバリン(Tamb)、ハイハット(HHC,HHO)、ライド(Ride CY)、コンガ(Conga H,Conga L)、ウッドブロック、シェイカーである。なお、この実施例では、ウッドブロックとシェイカーのドラム音は、鍵盤1Aへ割当ててないが、これらのドラム音はソフト用コンポーネントを構成するものとして例示した。
【0073】
軟音化(Soft)とは次のいずれか一つを実行することをいう。
軟音化処理の第1は、カレントパターン内のリズムパターンの全てのベロシティを一律に減少させることによって行われる。
軟音化処理の第2は、カレントパターン内のドラム音をハード用コンポーネントからソフト用コンポーネントに交換することによって行われる。
【0074】
活発化処理(Energetic)とは次のいずれか一つを実行することをいう。
活発化処理の第1は、テンプレートに基づいたリズムパターンをカレントパターン内で増加させることによって行われる。
活発化処理の第2は、テンポ速度を120程度に近づけることによって行われる。
活発化処理の第3は、カレントパターン内のリズムパターンをテンプレートに基づいて3連音符系のリズムパターンに近づける(シャッフルする)ことによって行われる。
【0075】
平静化処理(Calm)とは次のいずれか一つを実行することをいう。
平静化処理の第1は、テンプレートに基づいたリズムパターンをカレントパターン内で減少させることによって行われる。
平静化処理の第2は、テンポ速度を60程度に近づけることによって行われる。
平静化処理の第3は、カレントパターン内のリズムパターンをテンプレートに基づいて非3連音符系のリズムパターンに近づける(ノンシャッフルする)ことによって行われる。
【0076】
無表情化処理(Mechanical)とは、次のいずれか一つを実行することをいう。
無表情化処理の第1は、テンプレートに基づいてカレントパターン内のリズムパターンを16分にクォンタイズすることによって行われる。
無表情化処理の第2は、テンプレートに基づいてカレントパターン内のリズムパターンをバスドラム(BD)又はスネアドラム(SD)を基本パターンとした8分にクォンタイズすることによって行われる。
無表情化処理の第3は、カレントパターン内のドラム音をソフト用コンポーネントからハード用コンポーネントに交換することによって行われる。
無表情化処理の第4は、ベロシティデータを『90』の値を中心とした値に圧縮処理することによって行われる。
【0077】
優美化処理(Graceful)とは、次のいずれか一つを実行することをいう。
優美化処理の第1は、ベロシティデータを『64』の値を中心として両側に拡張することによって行われる。
優美化処理の第2は、テンプレートに基づいて3連音符系のリズムパターンをカレントパターンに追加することによって行われる。
優美化処理の第3は、カレントパターン内のドラム音をハード用コンポーネントからソフト用コンポーネントに交換することによって行われる。
優美化処理の第4は、カレントパターン内のドラム音にフラッターを施す(装飾音を付ける)ことによって行われる。
【0078】
どもり化処理(Stuttering)とは、次のいずれか一つを実行することをいう。
どもり化処理の第1は、テンプレートに基づいて、カレントパターン内のリズムパターンからダウンビートを消去し、アップビートに変換する(シンコペーション化する)ことによって行われる。
どもり化処理の第2は、テンプレートに基づいて3連音符系のリズムパターンをカレントパターンに追加することによって行われる。
【0079】
浮動化処理(Floating)とは、次のいずれか一つを実行することをいう。
浮動化処理の第1は、テンプレートに基づいて、カレントパターン内のリズムパターンからアップビートを消去し、ダウンビートに変換する(非シンコペーション化する)ことによって行われる。
浮動化処理の第2は、テンプレートに基づいて3連音符系のリズムパターンをカレントパターンから減少させることによって行われる。
浮動化処理の第3は、テンプレートに基づいて12/8の3連音符系のリズムパターンをカレントパターンに追加することによって行われる。
浮動化処理の第4は、カレントパターン内のドラム音をハード用コンポーネントからソフト用コンポーネントに交換することによって行われる。
浮動化処理の第5は、テンポ速度を『120』程度に近づけることによって行われる。
【0080】
図9(D)は鍵盤1AのノートナンバB2に対応したアンドゥキーが操作され、ノートナンバB2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるアンドゥキー処理を示す図である。
このアンドゥキー処理では、全フラグをローレベル“0”にクリアしてからアンドゥフラグUNDOにハイレベル“1”をセットしてリターンする。
【0081】
アンドゥフラグUNDOがハイレベル“1”の場合は、アンドゥ手段10は図16(A)のアンドゥ処理を行い、アンドゥバッファ3から前のリズムパターンを読み出しカレントパターンメモリ1にコピーする。これによって、トランスフォーマー9によるパターン変更の結果が気に入らない場合には、前回のリズムパターンに戻すことができる。なお、アンドゥバッファ3は、全部で20個分のリズムパターンを順番に記憶しているので、アンドゥキーの操作に応じて順次遡って前のリズムパターンをカレントパターンメモリ1に復活することができるようになっている。
【0082】
図9(E)は鍵盤1AのノートナンバC3に対応したスタート/ストップキーが操作され、ノートナンバC3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるスタート/ストップキー処理を示す図である。
このスタート/ストップキー処理では、まず走行状態フラグRUNがハイレベル“1”かどうかを判定し、その判定結果に応じた処理を行う。ここで走行状態フラグRUNは、カレントパターンメモリ1からカレントパターンを読み出し中であるかどうかを示すものである。
【0083】
従って、走行状態フラグRUNがハイレベル“1”(YES)だと判定された場合は、読み出しを停止するために走行状態フラグRUNにローレベル“0”をセットしてリターンする。一方、走行状態フラグRUNがローレベル“0”(NO)だと判定された場合は、読み出しを開始するためにカレントパターンメモリ1の最初のタイミングデータをタイミングレジスタTIMEにセットし、走行状態フラグRUNをハイレベル“1”にセットしてリターンする。これによって、図14のタイマ割込処理においてカレントパターンメモリ1から順次カレントパターンの読み出し処理が実行されるようになる。
【0084】
図9(F)は鍵盤1AのノートナンバD3〜F3(#を除く)に対応したバンクA,B,Cのいずれかのキーが操作され、ノートナンバD3〜F3(#を除く)を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるバンクA,B,Cキー処理を示す図である。
このバンクA,B,Cキー処理では、バンクレジスタBANKに『1』、『2』、『3』のいずれか1つを格納してリターンする。この実施例では、ノートナンバD3に対応したバンクAのキーが操作された場合にはバンクレジスタBANKには『1』を格納し、ノートナンバE3に対応したバンクBのキーが操作された場合にはバンクレジスタBANKには『2』を格納し、ノートナンバF3に対応したバンクCのキーが操作された場合にはバンクレジスタBANKには『3』を格納する。これによって、キー操作に応じてデータベース手段5のバンクA,B,Cが切り替えられるので、これ以後にコンポーネントの指定があれば、そのバンクからリズムパターンが読み出され、カレントパターンメモリ1に格納されるようになる。
【0085】
図10(A)は鍵盤1AのノートナンバG3に対応したロックキーが操作され、ノートナンバG3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるロックキー処理を示す図である。
このロックキー処理では、全フラグをローレベル“0”にクリアしてからロックフラグLOCKにハイレベル“1”をセットしてリターンする。
データベース手段5からのリズムパターンは、通常はドラムパターンエリアのキーを操作している間だけ有効であるが、このロックキーを操作することによってリズムパターンの内容は確定し、ドラムパターンエリアのキーを離してもそのリズムパターンは有効状態を維持する。
【0086】
図10(B)は鍵盤1AのノートナンバC#2,D#2に対応したバリエーション1,2のキーが操作され、ノートナンバC#2,D#2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるバリエーション1,2キー処理を示す図である。
このバリエーション1,2キー処理では、全フラグをローレベル“0”にクリアしてからバリエーションフラグVARI1又はVARI2にハイレベル“1”をセットしてリターンする。
これによって、カレントパターンの読み出しが小節線まで進んだときに、バリエーションパターン(図3の形容詞シーケンス)が読み出されるようになる。
【0087】
図10(C)は鍵盤1AのノートナンバF#2に対応したリプレースキーが操作され、ノートナンバF#2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるリプレースキー処理を示す図である。
このリプレースキー処理では、全フラグをローレベル“0”にクリアしてからリプレースフラグREPLACEにハイレベル“1”をセットしてリターンする。
これによって、このリプレースキーを押しつづけている間にドラムパターンエリアのキーを操作すると、図11(D)の処理が実行され、対応するドラム音が操作タイミングの位置に入力されるようになる。このとき、前の対応ドラム音は消去される。
【0088】
図10(D)は鍵盤1AのノートナンバG#2に対応したインサートキーが操作され、ノートナンバG#2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるインサートキー処理を示す図である。
このインサートキー処理では全フラグをローレベル“0”にクリアしてからインサートフラグINSERTにハイレベル“1”をセットしてリターンする。
これによって、このインサートキーを押しつづけている間にドラムパターンエリアのキーを操作すると、対応するドラム音がその操作タイミングの位置に入力されるようになる。このとき、前のドラム音は消去されることなく新たなドラム音が追加される。
【0089】
図10(E)は鍵盤1AのノートナンバA#2に対応したクォンタイズキーが操作され、ノートナンバA#2を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるクォンタイズキー処理を示す図である。
このクォンタイズキー処理では、全フラグをローレベル“0”にクリアし、その時のベロシティデータの大きさに応じてクォンタイズの分解能を決定し、クォンタイズフラグQUANTにハイレベル“1”をセットしてリターンする。
これによって、カレントパターンの読み出しが小節線まで達したとき、次の小節線以降のリズムパターンを読み出す際に、データそのものは書き替えずに読み出すタイミングのみをクォンタイズ処理して読み出す。このような処理を読み出しクォンタイズ処理という。
【0090】
図10(F)は鍵盤1AのノートナンバC#3に対応したデリートドラムキーが操作され、ノートナンバC#3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるデリートドラムキー処理を示す図である。
このデリートドラムキー処理では、全フラグをローレベル“0”にクリアしてからデリートドラムフラグDELDRUMにハイレベル“1”をセットしてリターンする。
これによって、例えばその後にノートナンバC4のノートオンメッセージが検出されたら、ノートナンバC4に対応するドラム音(タムタムのロー(Tom L))をカレントパターンの中から削除する。
【0091】
図11(A)は鍵盤1AのノートナンバD#3に対応したデリートコンポーネントキーが操作され、ノートナンバD#3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるデリートコンポーネントキー処理を示す図である。
このデリートコンポーネントキー処理では、全フラグをローレベル“0”にクリアしてからデリートコンポネントフラグDELCOMPにハイレベル“1”をセットしてリターンする。
これによって、例えばその後にノートナンバC4のノートオンメッセージが検出されたら、ノートナンバC4のタムタムのロー(Tom L)が含まれるコンポーネントのドラム音が全て(すなわち、タムタムのハイ(Tom H)タムタムのミッド(Tom M)タムタムのロー(Tom L))カレントパターンから削除される。
【0092】
図11(B)は鍵盤1AのノートナンバF#3に対応したアクセントキーが操作され、ノートナンバF#3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるアクセントキー処理を示す図である。
このアクセントキー処理では全フラグをローレベル“0”にクリアしてからアクセントフラグACCENTにハイレベル“1”をセットしてリターンする。
これによって、例えばその後にノートナンバC4のノートオンメッセージが検出され、対応するノートナンバC4のノートオフメッセージが検出されるまでの間にそのノートナンバと同一のノートイベントがカレントパターンから読み出されたときは、そのノートイベントのベロシティがC4のノートオンベロシティに書き替えられる。
【0093】
図11(C)は鍵盤1AのノートナンバG#3に対応したフィルインキーが操作され、ノートナンバG#3を含むMIDIメッセージが電子楽器1Fから受信された場合に行われるフィルインキー処理を示す図である。
このフィルインキー処理では、まず全フラグをローレベル“0”にクリアしてからカレントパターンメモリ1内のカレントパターンを退避メモリ4に一時的に退避させる。そして、データベース手段5の対応するバンクA,B,Cのフィルインパターンをカレントパターンメモリ1にコピーし、その読み出し位置(現在の小節内のタイミングに対応するパターン上のデータ)をサーチしてからフィルインフラグFILLにハイレベル“1”をセットしてリターンする。
これによって、ノートナンバG#3に対応したフィルインキーが操作された時点からその小節の最後までフィルインパターンが演奏されるようになる。
【0094】
図11(D)は鍵盤1AのノートナンバA3〜E5に対応したドラムパターンエリアのキーが操作され、ノートナンバA3〜E5を含むMIDIメッセージを電子楽器1Fから受信した場合に行われるドラムキー処理を示す図である。
このドラムキー処理では、まずロックフラグLOCK以外のフラグ(リプレースフラグREPLACE、インサートフラグINSERT、デリートドラムフラグDELDRUM及びデリートコンポーネントフラグDELCOMP)のいずれかがハイレベル“1”かどうかを判定し、その判定結果に応じた処理を行う。
【0095】
すなわち、ノートナンバがA3〜E5のいずれかであれば、それはドラム音(単音)の指定又はコンポーネントの指定である。従って、ロックフラグLOCK以外のいずれかのフラグがハイレベル“1”(YES)だと判定された場合は、そのハイレベル“1”にセットされているフラグに対応したフラグ対応処理1を実行してリターンする。このフラグ対応処理1の詳細は、図12に示されている。
【0096】
一方、ロックフラグLOCK以外のいずれのフラグもハイレベル“1”でない(NO)と判定された場合は、押鍵されたキー(ノートナンバ)に対応したコンポーネントの音(一部についてはドラム音)をカレントパターンから削除して退避メモリ4に一時的に退避させる。そして、押鍵されたキー(ノートナンバ)、ベロシティデータ、ジャンルに対応したコンポーネント(ドラム)のリズムパターンをパターンテーブル63を参照して選択し、選択されたコンポーネントのリズムパターンをデータベース手段5から読み出してカレントパターンに追加する。
選択されたリズムパターンの複雑度を図5のようにディスプレイ29に表示する。
【0097】
これによって、ノートナンバA3〜E5に対応するキーを押鍵するだけで、ノートナンバに対応するコンポーネントのリズムパターンを、ベロシティデータの大きさに応じて選択して、追加することができる。なお、パターンテーブル63は、図4に示したようにベロシティの値すなわちアドレスが大きいほど、より複雑なパターンとなるように、リズムパターンの先頭アドレスを順番に記憶しているので、リズムパターンの種類をより細かく選択することができる。
【0098】
図12は、図11(D)のフラグ対応処理1の詳細を示す図である。
このフラグ対応処理1は、ロックフラグLOCK以外のリプレースフラグREPLACE、インサートフラグINSERT、デリートドラムフラグDELDRUM及びデリートコンポーネントフラグDELCOMPのいずれかがハイレベル“1”の場合に行われる処理である。
【0099】
図12(A)は鍵盤1AのノートナンバF#2に対応したリプレースキーが押されている状態でドラムパターンエリアのキーが操作されることによって実行されるリプレース処理を示す図である。すなわち、リプレースキーが押されている間は、図10(C)のリプレースキー処理によってリプレースフラグREPLACEにハイレベル“1”がセットされるので、図11(D)のドラムキー処理でロックフラグLOCK以外のリプレースフラグREPLACEがハイレベル“1”だと判定され、リプレース処理が行われる。
このリプレース処理では、ノートナンバに対応するドラム音をベロシティデータと共にカレントパターンに追加する。そして、押されたドラム音のデリートフラグにハイレベル“1”をセットして図11(D)のドラムキー処理にリターンする。デリートフラグにハイレベル“1”のセットされたドラム音は、図15のステップ54でカレントパターンから削除される。
【0100】
図12(B)は鍵盤1AのノートナンバG#2に対応したインサートキーが押されている状態でドラムパターンエリアのキーが操作されることによって実行されるインサート処理を示す図である。すなわち、インサートキーが押されている間は、図10(D)のインサートキー処理によってインサートフラグINSERTにハイレベル“1”がセットされるので、図11(D)のドラムキー処理でロックフラグLOCK以外のインサートフラグREPLACEがハイレベル“1”だと判定され、インサート処理が行われる。
このインサート処理では、ノートナンバに対応するドラム音をベロシティデータと共にカレントパターンに追加して図11(D)のドラムキー処理にリターンする。
【0101】
図12(C)は鍵盤1AのノートナンバC#3に対応したデリートドラムキーが押されている状態でドラムパターンエリアのキーが操作されることによって実行されるデリートドラム処理を示す図である。すなわち、デリートドラムキーが押されている間は、図10(F)のデリートドラムキー処理によってデリートドラムフラグDELDRUMにハイレベル“1”がセットされるので、図11(D)のドラムキー処理でロックフラグLOCK以外のデリートドラムフラグDELDRUMがハイレベル“1”だと判定され、デリートドラム処理が行われる。
このデリートドラム処理では、押されたドラム音のデリートフラグにハイレベル“1”をセットして図11(D)のドラムキー処理にリターンする。デリートフラグにハイレベル“1”のセットされたドラム音は、図15のステップ54でカレントパターンから削除される。
【0102】
図12(D)は鍵盤1AのノートナンバD#3に対応したデリートコンポーネントキーが押されている状態でドラムパターンエリアのキーが操作されることによって実行されるデリートコンポーネント処理を示す図である。すなわち、デリートコンポーネントキーが押されている間は、図11(A)のデリートコンポーネントキー処理によってデリートコンポーネントフラグDELCOMPにハイレベル“1”がセットされるので、図11(D)のドラムキー処理でロックフラグLOCK以外のデリートコンポーネントフラグDELCOMPがハイレベル“1”だと判定され、デリートコンポーネント処理が行われる。
このデリートコンポーネント処理では、押されたドラム音を含むコンポーネントのデリートフラグにハイレベル“1”をセットして図11(D)のドラムキー処理にリターンする。デリートフラグにハイレベル“1”のセットされたコンポーネントを構成するドラム音は、図15のステップ56でカレントパターンから削除される。
【0103】
図13は受信したMIDIメッセージがノートオフメッセージの場合に行われる図8(B)のノートオフメッセージのノートナンバに対応した処理の詳細を示す図である。
図13(A)では、鍵盤1AのノートナンバC2に対応したアサインキー、ノートナンバG3に対応したロックキー、ノートナンバF#2に対応したリプレースキー、ノートナンバG#2に対応したインサートキー、ノートナンバA#2に対応したクォンタイズ、ノートナンバC#3に対応したデリートドラム、ノートナンバD#3に対応したデリートコンポーネントキー又はノートナンバF#3に対応したアクセントキーが操作され、ノートナンバC2、G3、F#2、G#2、A#2、C#3、D#3又はF#3を含むMIDIメッセージを電子楽器1Fから受信した場合に、それぞれのノートナンバに対応した図9から図11の各キー処理でハイレベル“1”にセットされたフラグをクリアする。
【0104】
図13(B)は鍵盤1AのノートナンバA3〜E5に対応したドラムパターンエリアのキーが離鍵され、ノートナンバA3〜E5のノートオフメッセージを含むMIDIメッセージを電子楽器1Fから受信した場合に行われるドラムキー処理を示す図である。
このドラムキー処理では、まずロックフラグLOCKがローレベル“0”かどうかを判定し、YESの場合には以下の処理を行い、NOの場合にはデータベース手段5から読出し中のリズムパターンを確定させるために、そのまま図8(A)のメインルーチンにリターンする。
ロックフラグLOCKがローレベル“0”の場合には、離鍵されたキーのノートナンバA3〜E5のドラム音(単音)又はコンポーネントの音をカレントパターンから削除し、図11(D)で退避していたコンポーネント(ドラム)の音をカレントパターンに戻す。
【0105】
図14は4分音符当たり480回の割込みで実行されるタイマ割込処理を示す図である。このタイマ割込処理はカレントパターンメモリ1からカレントパターンを読み出す時のテンポに対応して処理される。すなわち、テンポに応じて割込み周期が変更される。この処理はつぎのようなステップで順番に実行される。
【0106】
ステップ31:走行状態フラグRUNがハイレベル“1”かどうかを判定し、ハイレベル“1”(YES)の場合には次のステップ32に進み、そうでない(NO)場合はリターンする。
ステップ32:タイミングデータを格納してあるタイムレジスタTIMEの値が『0』かどうか、すなわち次のノートイベントまでの時間が経過したか否かを判定し、『0』(YES)の場合は時間が経過しているので、次のステップ33に進み、そうでない(NO)場合は時間がまだ経過していないので、ステップ40に進む。
【0107】
ステップ33:前のステップ32で次のノートイベントまでの時間が経過したと判定されたので、ここではそのタイミングに対応するイベントデータを読み出す。
ステップ34:前のステップ33で読み出されたイベントデータがエンドデータかどうかを判定し、エンドデータの場合にはステップ39に進み、それ以外のデータの場合にはステップ35に進む。
【0108】
ステップ35:前のステップ33で読み出されたイベントデータがエンドデータ以外のデータだと判定されたので、そのデータに対応したMIDIノートイベント(MIDIメッセージ)をMIDIインターフェイス2C及び1Dを介して電子楽器1Fに出力する。このMIDIノートイベント出力の詳細については後述する。
ステップ36:前のステップ33で読み出されたイベントデータの次のデータを読み出す。
【0109】
ステップ37:前のステップ36で読み出されたデータがタイミングデータかどうかを判定し、YESの場合は次のステップ38に進み、NOの場合はステップ34にリターンする。従って、前のステップ36で読み出されたデータがエンドデータの場合には、ステップ34でYESと判定され、ステップ39の処理が行われ、イベントデータの場合にはステップ35,36の処理が行われる。
【0110】
ステップ38:読み出されたタイミングデータをタイムレジスタTIMEにセットする。
ステップ39:前のステップ34でエンドデータと判定されたので、ここではリズムパターンの最初のタイミングデータをタイムレジスタTIMEにセットしてステップ41に進む。
ステップ40:前のステップ32でまだ時間が経過していないと判定されたので、ここではタイムレジスタTIMEの値を1だけデクリメント処理してステップ41に進む。
【0111】
ステップ41:小節内における読み出しタイミング(図示しないカウンタによりカウントされる)が小節線のタイミングかどうかを判定し、小節線のタイミングの場合(YES)は次のステップ42に進み、そうでない(NO)場合はリターンする。
ステップ42:いずれかのフラグがハイレベル“1”かどうかを判定し、ハイレベル“1”のフラグがあれば(YES)ステップ43に進み、そうでなければリターンする。
ステップ43:前のステップ42でハイレベル“1”のフラグ有りと判定されたので、ここではそのハイレベル“1”のフラグに対応したフラグ対応処理2を行ってからリターンする。このフラグ対応処理2の詳細は図16に示されている。
【0112】
図15は、図14のステップ35のMIDIノートイベント出力処理の詳細を示す図である。
このMIDIノートイベント出力処理は、アクセントフラグACCENT、デリートドラムフラグDELDRUM又はデリートコンポーネントフラグDELCOMPのいずれかがハイレベル“1”の場合には、そのフラグに対応した処理を行い、そうでない場合にはカレントパターンメモリ1のリズムパターンに応じたノートイベントの出力処理を行う。この処理はつぎのようなステップで順番に実行される。
【0113】
ステップ51:鍵盤1AのノートナンバF#3に対応したアクセントキーが押鍵されてアクセントフラグACCENTにハイレベル“1”がセットされているかどうかを判定し、セットされている(YES)場合は次のステップ52に進み、そうでない(NO)場合はステップ53に進む。
ステップ52:読み出されたノートイベントのノートナンバが、受信したノートイベントの(そのときノートオンされている)ノートナンバに対応すれば、読み出しノートイベントのベロシティを受信したノートオンメッセージのベロシティに差し替える。
【0114】
ステップ53:鍵盤1AのノートナンバC#3に対応したデリートドラムキーが押鍵され、いずれかのドラム音のデリートドラムフラグDELDRUMにハイレベル“1”がセットされているかどうかを判定し、セットされている(YES)場合は次のステップ54に進み、そうでない(NO)場合はステップ55に進む。
ステップ54:受信したノートナンバに対応したドラム音のイベントがカレントパタンーメモリ1から読み出されたイベント中に存在する場合はそれを読み出されたカレントパターンのイベント中から削除する。
【0115】
ステップ55:鍵盤1AのノートナンバD#3に対応したデリートコンポーネントキーが押鍵され、いずれかのコンポーネントのデリートコンポーネントフラグDELCOMPにハイレベル“1”がセットされているかどうかを判定し、セットされている(YES)場合は次のステップ56に進み、そうでない(NO)場合はステップ59に進む。
ステップ56:受信したノートナンバに対応したコンポーネントを構成するドラム音のイベントがカレントパタンーメモリ1から読み出されたイベント中に存在する場合はそのコンポーネントを構成するドラム音全てを読み出されたカレントパターンのイベント中から削除する。
【0116】
ステップ57:前のステップ54又は56でドラム音が削除された結果、読み出されたカレントパターンのイベント内に残ったイベントが有るかどうかを判定し、残ったイベントが有る場合(YES)にはステップ58に進み、そうでない(NO)場合はリターンして図14のステップ36に進む。
ステップ58:ステップ52でアクセント処理されたノートイベント、ステップ54で削除された結果残ったノートイベント又はステップ52,54,56の処理を経なかったノートイベントをMIDIインターフェイス2C,1Dを介して電子楽器1Fに出力する。
【0117】
図16は図14のステップ43のフラグ対応処理2の詳細を示す図である。
このフラグ対応処理2は、アンドゥフラグUNDO、フィルインフラグFILL、バリエーションフラグVARI1,VARI2及びトランスフォーマーフラグTRANSのいずれかがハイレベル“1”の場合に行われる処理である。
【0118】
図16(A)は鍵盤1AのノートナンバB2に対応したアンドゥキーが押鍵されることによってアンドゥフラグUNDOにハイレベル“1”がセットされている場合(UNDO=1)に行われるアンドゥ処理を示す図である。
このアンドゥ処理では、アンドゥバッファ3に格納されているリズムパターンの1つ前のパターンを読み出し、カレントパターンメモリ1内にカレントパターンとして転送する。そして、アンドゥフラグUNDOをローレベル“0”にクリアする。
【0119】
図16(B)は鍵盤1AのノートナンバG#3に対応したフィルインキーが押鍵されることによって、フィルインフラグFILLにハイレベル“1”がセットされている場合(FILL=1)に行われるフィルイン復帰処理を示す図である。
このフィルイン復帰処理では、退避メモリ4に退避していたリズムパターンを読み出し、カレントパターンメモリ1内にカレントパターンとしてコピーする。そして、フィルインフラグFILLをローレベル“0”にクリアする。
【0120】
図16(C)は鍵盤1AのノートナンバD#2又はC#2に対応したバリエーションキーが押鍵されることによってバリエーションフラグVARI1,VARI2にハイレベル“1”がセットされている場合(VARI1又はVARI2=1)に行われるバリエーション処理を示す図である。
このバリエーション処理では、バリエーションの指示中なので、図3のバリエーションシーケンスから次(又は先頭)の形容詞を読み出してトランスフォーマー9に指示する。例えば、バリエーションシーケンスが4小節分存在する場合には、1回この処理を実行する毎に形容詞を1つずつ読み出し、4回分の読み出しが終了するまで繰り返す。そして、4回分終了した時には、バリエーションフラグVARI1又はVARI2をローレベル“0”にクリアする。
【0121】
図16(D)は鍵盤1AのノートナンバD2,E2,F2,G2,A2に対応したトランスフォーマーキーが押鍵されることによってトランスフォーマーフラグTRANSにハイレベル“1”がセットされている場合(TRANS=1)に行われるトランスフォーマー処理を示す図である。
このトランスフォーマー処理では、アンドゥバッファ3にカレントパターンメモリ1のカレントパターンをコピーし、指示されている形容詞に応じてカレントパターンの内容を変更する演算を行う。この演算の内容については後述する。そしてトランスフォーマーフラグTRANSをローレベル“0”にクリアする。
【0122】
図17は、パソコン20のCPU21が行う図8の「その他の処理」の中の「パターン登録処理」の詳細を示す図である。この「パターン登録処理」は、カレントパターンメモリ1内の新たなリズムパターンデータをデータベース手段5に登録する際に、そのリズムパターンデータの複雑度を求め、その複雑度がパターンテーブル63のどのレベルに位置するのかを判定し、そのレベル位置に登録して、パターンテーブル63の書換えを行う処理である。この処理はつぎのようなステップで順番に実行される。
【0123】
ステップ71:新規に登録するリズムパターンの複雑度を求め、その複雑度を新規登録複雑度レジスタCOMP(N)に格納する。
ステップ72:図1のパターンテーブル63からアドレスレジスタAD=1のリズムパターンの複雑度を読み出し、その複雑度を既登録複雑度レジスタCOMP(D)に格納する。このアドレスレジスタADは図4のパターンテーブル上のアドレスを格納するものである。
【0124】
ステップ73:新規登録複雑度レジスタCOMP(N)の複雑度が既登録複雑度レジスタCOMP(D)の複雑度よりも小さいかどうかを判定し、小さい(YES)場合にはステップ76に進み、同じか大きい(NO)場合にはステップ74に進む。
ステップ74:アドレスレジスタADを1だけインクリメント処理する。
ステップ75:パターンテーブル63からアドレスレジスタADのアドレスに記録されているリズムパターンの複雑度を読み出し、その複雑度を既登録複雑度レジスタCOMP(D)に格納し、ステップ73にリターンする。
すなわち、ステップ73〜75は、新規登録されるリズムパターンの複雑度が現在のパターンテーブル63上でどのアドレスに対応するのかを検出する。
【0125】
ステップ76:前のステップ73で新規登録複雑度レジスタCOMP(N)の複雑度が既登録複雑度レジスタCOMP(D)の複雑度よりも小さいと判定されたので、ここでは、アドレスレジスタADのアドレス以降のリズムパターンの先頭アドレスを1アドレスずつ後ろにずらして記録する。
ステップ77:新規登録リズムパターンの先頭アドレスと、その複雑度をアドレスレジスタADのアドレスの位置に登録する。
【0126】
図18〜図20はトランスフォーマー処理によってカレントパターンの内容を変更する演算処理の一例を示す図である。
図18〜図20に示されたトランスフォーマー処理は、カレントパターン内の変更対象となるリズムパターンをサーチテンプレート(Search−template)に基づいてサーチし、それをリプレーステンプレート(Replace−template)に基づいて所定のリズムパターンに変更して置き替えている。具体的には、サーチテンプレートに対応したリズムパターンをリプレーステンプレートの3連音符系のリズムパターンに置き替えている。
【0127】
図において、サーチテンプレートのデータフォーマットはSearch−template=((オフセットデータ)(サーチデータ)(誤差範囲データ))で与えられ、リプレーステンプレートのデータフォーマットはReplace−template=((リプレースデータ)(ベロシティー選択データ)(ドラム音選択データ))で与えれる。
サーチデータ及びリプレースデータにはタイミングデータで表現されたリズムパターンが記憶されている。すなわち、この実施例では、4分音符に相当するタイミングデータの値を「480」、8分音符相当のタイミングデータ値を「240」、16分音符相当のタイミングデータ値を「120」、32分音符相当のタイミングデータ値を「60」としている。従って、図18に示したサーチテンプレートのサーチデータ(0 240 360 480)は1個の8分音符と2個の16分音符からなる4分音符相当のリズムパターンを示し、リプレーステンプレートのリプレースデータ(0 160 320)は4分音符相当の3連音符系のリズムパターンを示す。
【0128】
図18では、サーチテンプレートのデータフォーマットはSearch−template=((0 480 960 1440)(0 240 360 480)(20 20 20 20))であり、リプレーステンプレートのデータフォーマットはReplace−template=((0 160 320)(001)(011))である。
サーチテンプレートのオフセットデータ(0 480 960 1440)は、サーチデータに示されるリズムパターンをカレントパターン内からサーチする際のオフセット量、すなわちサーチデータが示すリズムパターンが存在すべきカレントパターン中の位置を示す。誤差範囲データ(20 20 20 20)はサーチデータの許容誤差範囲を示す。従って、リズムパターンがサーチデータ(0 240 360 480)に正確に一致しなくても、誤差範囲データを含むサーチデータ(0±20 240±20 360±20 480±20)=(460〜20 220〜260 340〜380 460〜20)に該当するようなリズムパターンであれば、変更対象となり、リプレースデータに置き替えられる。
【0129】
リプレーステンプレートのリプレースデータ(0 160 320)は、置き替えられるリズムパターンを示す。
ベロシティー選択データはリプレースデータのベロシティーとしてサーチデータのどの音符のものを用いるかを示す。すなわち、ベロシティー選択データの『0』はサーチデータの第1番目のデータ(8分音符)のベロシティーを示し、『1』はサーチデータの第2番目のデータ(第1番目の16分音符)のベロシティーを示し、『2』はサーチデータの第3番目のデータ(第2番目の16分音符)のベロシティーを示す。そして、ベロシティー選択データのそれぞれの順番はリプレースデータの順番に対応している。
【0130】
すなわち、ベロシティー選択データ(001)の場合には、サーチデータの第1番目のデータ(8分音符)のベロシティーがリプレースデータの第1及び第2番目のデータ(3連音符の第1及び第2番目の音符)に置き替わり、サーチデータの第2番目のデータ(16分音符)のベロシティーがリプレースデータの第3番目のデータ(3連音符の第3番目の音符)に置き替わることとなる。
【0131】
ドラム音選択データはリプレースデータのドラム音としてサーチデータのどの音符のものを用いるかを示す。すなわち、ドラム音選択データの『0』はサーチデータの第1番目のデータ(8分音符)のドラム音を示し、『1』はサーチデータの第2番目のデータ(第1番目の16分音符)のドラム音を示し、『2』はサーチデータの第3番目のデータ(第2番目の16分音符)のドラム音を示す。そして、ドラム音選択データのそれぞれの順番はリプレースデータの順番に対応している。
【0132】
すなわち、ドラム音選択データ(011)の場合にはサーチデータの第1番目のデータ(8分音符)のドラム音がリプレースデータの第1番目のデータ(3連音符の第1番目の音符)のドラム音に置き替わり、サーチデータの第2番目のデータ(16分音符)のドラム音がリプレースデータの第2及び第3番目のデータ(3連音符の第2及び第3番目の音符)のドラム音に置き替わることを示す。
【0133】
図18は、サーチテンプレート((0 480 960 1440)(0 240 360 480)(20 20 20 20))及びリプレーステンプレート((0 160 320)(001)(011))に応じて、図18(A)のカレントパターンが図18(B)〜(E)のように順番にトランスフォーマー処理される様子を示す図である。
まず、図18(A)のカレントパターンは、各オフセットデータ(0 480960 1440)の位置からサーチデータ(0 240 360)に対応する4分音符相当のリズムパターンが存在するので、その中のいずれか一つがランダムに置き替えられる。この例では、図18(B)のようにサーチデータ(0 240 360)に対応する第4番目のリズムパターンがリプレースデータ(0160 320)の3連音符に置き替えられ、次の時点では図18(C)のように第2番目のリズムパターンが3連音符に置き替えられ、さらに次の時点では図18(D)のように第1番目のリズムパターンが3連音符に置き替えられ、最後に図18(E)のように第3番目のリズムパターンが3連音符に置き替えられることによって、図18(A)のリズムパターンは図18(E)のような3連音符のリズムパターンになる。
【0134】
図19(A)及び図19(B)は、サーチテンプレート((0 480 1440)(0 240 360 480)(20 20 20 20))及びリプレーステンプレート((0 160 320)(001)(011))に応じて、図18(A)のカレントパターンがトランスフォーマー処理される様子を示す図である。
図19(A)のカレントパターンは、図18(A)と同じであり、各オフセットデータ(0 480 960 1440)の位置からサーチデータ(0 240 360)に対応するリズムパターンが存在する。ところが、図19(A)では、サーチテンプレートのオフセットデータが(0 480 1440)であり、図18の場合のオフセットデータから『960』が削除された状態となっている。従って、この場合は、図19(B)のようにサーチデータ(0 240 360)に対応する第3番目のリズムパターンだけがリプレースデータ(0 160 320)の3連音符に置き替えられることなく、元の(0 240 360)のリズムパターンを維持することとなる。
【0135】
図19(C)及び図19(D)は、サーチテンプレート((0 480 960 1440)(0 240 360 480)(20 20 20 20))及びリプレーステンプレート((0 160 320)(001)(011))に応じて、図19(C)のカレントパターンがトランスフォーマー処理される様子を示す図である。
図19(C)のカレントパターンは、図18(A)と異なり、各オフセットデータ『0』、『480』、『960』を基準として、サーチデータ(0 240360)に対応するリズムパターンは存在しないが、最後のオフセットデータ『1440』を基準としてサーチデータ(0 240 360)に対応するリズムパターンが存在する。従って、この例では、図19(D)のようにサーチデータ(0 240 360)に対応する第4番目のリズムパターンだけがリプレースデータ(0 160 320)の3連音符に置き替えられ、これ以外は元のリズムパターンを維持している。
【0136】
図20は、ドラム音選択データ及びベロシティー選択データに応じて、リズムパターンのドラム音及びベロシティーがどのように置き替えられるのか、その様子を示す図である。
図20(A)及び図20(B)において、サーチテンプレート((0 480960 1440)(0 240 360 480)(20 20 20 20))及びリプレーステンプレート((0 160 320)(001)(011))は、図18の場合と同じである。従って、図20(A)のリズムパターンは図20(B)のような3連音符のリズムパターンになる。
【0137】
このとき、ドラム音選択データは(011)であるからサーチデータの第1番目のデータ(8分音符)のドラム音がリプレースデータの第1番目のデータ(3連音符の第1番目の音符)のドラム音に置き替わり、サーチデータの第2番目のデータ(16分音符)のドラム音がリプレースデータの第2及び第3番目のデータ(3連音符の第2及び第3番目の音符)のドラム音に置き替わることとなる。この様子を図20(A)及び(B)の第1及び第2番目のリズムパターンが3連音符に置き替わる部分に矢印で示した。
同様に、ベロシティー選択データは(001)であるからサーチデータの第1番目のデータ(8分音符)のベロシティーがリプレースデータの第1及び第2番目のデータ(3連音符の第1及び第2番目の音符)に置き替わり、サーチデータの第2番目のデータ(16分音符)のベロシティーがリプレースデータの第3番目のデータ(3連音符の第3番目の音符)に置き替わることとなる。この様子を図20(A)及び(B)の第3及び第4番目のリズムパターンが3連音符に置き替わる部分に矢印で示した。
【0138】
図20(C)及び図20(D)において、サーチテンプレートは((0 480 960 1440)(0 240 360 480)(20 20 20 20))であり、前述の場合と同じであるが、リプレーステンプレートは((0160 320)(001)(***))であり、ドラム音選択データだけが前回の場合と異なっている。この場合、ドラム音選択データが異なるだけであり、図20(C)のリズムパターンは前述のトランスフォーマー処理の場合と同様に図20(D)のような3連音符のリズムパターンに置き替わる。
【0139】
このとき、ドラム音選択データの(***)は、(000)、(111)、(222)、(012)・・・のように『0』と『1』と『2』の組み合わせが順番に現れるようになっている。
従って、図20(C)の第1番目のリズムパターンでは、サーチデータの第1番目のデータ(8分音符)のドラム音がリプレースデータの第1、第2及び第3番目のデータ(3連音符の第1、第2及び第3番目の音符)のドラム音に置き替わる。
第2番目のリズムパターンでは、サーチデータの第2番目のデータ(16分音符)のドラム音がリプレースデータの第1、第2及び第3番目のデータ(3連音符の第1、第2及び第3番目の音符)のドラム音に置き替わる。
【0140】
第3番目のリズムパターンでは、サーチデータの第3番目のデータ(16分音符)のドラム音がリプレースデータの第1、第2及び第3番目のデータ(3連音符の第1、第2及び第3番目の音符)のドラム音に置き替わる。
第4番目のリズムパターンでは、サーチデータの第1番目のデータ(8分音符)のドラム音がリプレースデータの第1番目のデータ(3連音符の第1番目の音符)のドラム音に、サーチデータの第2番目のデータ(16分音符)のドラム音がリプレースデータの第2番目のデータ(3連音符の第2番目の音符)のドラム音に、サーチデータの第3番目のデータ(16分音符)のドラム音がリプレースデータの第3番目のデータ(3連音符の第3番目の音符)のドラム音に、それぞれ置き替わる。
この様子を図20(C)及び(D)の各リズムパターンが3連音符に置き替わる部分に矢印で示した。
【0141】
図21は、図2のディスプレイ29の表示画面の表示例を示す図である。
バンク表示部29Aは、現在のバンクがハードディスク装置24のどのバンクであるかを示すものである。図では、現在のバンクはバンクAであることを示している。
このバンク表示部29Aの下には、現在のカレントパターンの状態を示す部分がある。
この部分は、ドラム音名表示部29Bと、現発音表示部29Cと、カレントパターン表示部29Dと、現在位置表示部29Eとから構成される。
ドラム音名表示部29Bには、鍵盤1Aに対応したドラム音名が表示されている。
現発音表示部29Cは、各ドラム音の右側に設けられた円形状の点灯部で構成され、現在発音中のドラム音に対応する点灯部のみが点灯するようになっている。
カレントパターン表示部29Dは、1小節分のリズムパターンを正方形状の点灯部で表示するようになっている。図では、バスドラム、スネアドラム及びハイハットのクローズドのリズムパターンがそれぞれ表示されている。
現在位置表示部29Eは、1小節中の現在発音中の位置を示すものである。
【0142】
このような表示をすることによって、発音されるドラム音や現在のカレントパターンの内容を一目で認識することができる。また、このカレントパターンが変形された場合でもその変形内容を簡単に把握できる。この場合には、変形前のパターンと変形後のパターンとを同時に表示するようにすればよい。さらに、図5のような複雑度を同時に表示してもよい。
【0143】
なお、上述の実施例では、リズム伴奏を例に説明したが、これに限らず、ベースやコードバッキング等の伴奏に本発明を適用してもよい。例えば、データベースに多数のベースパターンと、多数のバッキングパターンを記憶させておき、操作子の操作によって、各パート毎にいずれかのパターンを選択するようにすればよい。すなわち、ベースパート、パッキングパート1、2、3、・・・(各バッキングパートは音色が異なる)のそれぞれの操作子を設け、ベースパートの操作子を操作したらデータベースからベースパターンのいずれかを選択し、パッキングパート1の操作子を操作したらデータベースからバッキングパターンのいずれかを選択するといった具合にすればよい。
【0144】
また、上述の実施例では、フラグ対応処理2(アンドゥ処理、フィルイン処理、バリエーション処理、トランスフォーマー処理)を小節線までの演奏が終了した時点で実行する場合について説明したが、これら各処理に対応するキーが操作された時点で直ちにその処理を実行するようにしてもよい。
【0145】
図15のステップ52のアクセント処理では、ノートオンされているノートナンバに対応するベロシティをそのままノートオンベロシティに差し替えて、アクセントとしているが、上述のサーチテンプレートやリプレーステンプレートのようなアクセントテンプレート(例えば、タイミング毎にどれくらいのベロシティに差し替えるかを示したパターン)を複数容易しておき、これらをノートオンされているノートナンバに対応するベロシティによって選択し、選択されたアクセントテンプレートのベロシティをノートオンベロシティに差し替えるようにしてもよい。
【0146】
上述の実施例では、鍵盤楽器の鍵盤を各種機能の割当てキーとして使用したが、パソコン側のディスプレイ上にスイッチを表示させ、そのスイッチを指定することによって各種機能を指定するようにしてもよい。また、鍵盤以外にもドラムパッドのようなものを用いてもよいし、単なるスイッチでもよい。さらに、上述の実施例では、全ての機能を鍵盤で指定する場合について説明したが、ロック機能はフットスイッチに割り当てる等のようにして他の操作子と組合せて各種機能を指定するようにしてもよい。
【0147】
また、実施例では、電子楽器とパソコンとをMIDI回線で接続して自動伴奏装置を構成したが、単体の電子楽器に適用してもよい。
上述の実施例では、トランスフォーマーの形容詞を指定するときに、1つのキーに対して2種類の形容詞を割当て、それをベロシティの値に応じて切り換えるようにしたが、形容詞による変形の度合いをベロシティの値に応じて段階的に切り換えるようにしてもよい。また、1つのキーに対して1つの形容詞を割り当ててもよい。
【0148】
上述の実施例では、形容詞のシーケンスデータとして4小節分を割当て、この4小節の演奏が終了した形容詞のシーケンスも終了するが、シーケンス読出終了の指示がない場合には、その4小節分のシーケンスデータを繰り返し実行するようにしてもよい。また、シーケンスデータは4小節分に限定されず、何小節分でもよいことはいうまでもない。さらに、形容詞の指定は小節線のタイミングでなくてもよい。
【0149】
また、トランスフォーマーによりリズムパターンを変形させる際に、現在のリズムパターンの内容に応じて異なる変形処理を施すようにしてもよい。例えば、トランスフォーマーによってドラム音を追加する、あるいは差し替えるような変形のとき、現在のリズムパターンがどのようなパターンであるか判断し、16ビート系のリズムパターンである場合と、8ビート系である場合とで、追加するドラム音や差し替えるパターンを異ならせるようにしてもよい。
【0150】
次に本発明の他の実施例について説明する。他の実施例においては、トランスフォーマー指示があると直ちにトランスフォーマーによるパターンの変形がなされる。このとき、リアルタイムでパターンの変形処理を行うと、処理時間がかかるため、自動伴奏がもたつく可能性がある。そこで、他の実施例においてはCPUによる処理の空き時間を利用して、次回のトランスフォーマーの指定に備え、予め全てのトランスフォーマー種類に対する変形処理をカレントパターンに施しておき、トランスフォーマー指示が発生したときは変形済みのパターンと差し替える処理を行うようにして、自動伴奏がもたつくのを防ぐようにしている。なお、他の実施例においては前述の図2における電子楽器1Fが全ての処理を行うものとして説明するが、前述の実施例と同様、電子楽器とパソコンというような構成をとってもいいことはもちろんである。
【0151】
前述の実施例においてはトランスフォーマー機能が電子楽器1Fの鍵盤(#を除くA2〜D2)に割り当てられており、トランスフォーマーキーを操作すると、操作されたキーのベロシティに応じて該キーに割り当てられた2つのトランスフォーマー種類(形容詞)のうちの何れかが選択され、選択されたトランスフォーマー種類に応じてカレントパターンが変形されるようになっていた。他の実施例においては、鍵盤は通常の演奏用鍵盤として動作し、パネルスイッチに10種類の形容詞に対応したトランスフォーマースイッチや、その他機能スイッチが配置されているものとする。もちろん、トランスフォーマー種類は10種類に限るものではなく、何種類でもよい。
【0152】
他の実施例においては、マルチタスク方式で処理が行われる。各種機能はそれぞれ個別のタスクにより実行され、各タスク間の動作をモニタプログラムが管理する。ここでは、スイッチ検出回路15によって検出されたパネルスイッチの状態に応じて各種タスクを実行させるパネル管理タスク、パネルスイッチの操作によってトランスフォーマー指示が行われた場合に指示されたトランスフォーマー種類に応じてカレントパターンを変化させるトランスフォーマータスク、所定周期で実行されカレントパターンが読み出される自動伴奏タスク、CPUの処理の空き時間を利用してパターンの変形処理を行う変形タスクの4つのタスクに関して詳細に説明する。その他のタスク(たとえば鍵盤関連の処理を行うタスク等)については、詳細説明は省略する。
【0153】
図22はモニタプログラムによって各タスク間の動作を管理するために用いられるタスク制御ブロック(TCB)である。ここでは説明の便宜上、表形式でタスク制御ブロックを表示している。図22において、左端にはタスク名が記されており、処理の優先度の高い順に上から並んでいる。その右側にはタスクの動作状態を示すステータスが示されている。このステータスは、タスクが動作中であることを示す「ラン」、タスクが動作する準備ができている(順番がくればいつでも動作できる)状態を示す「レディ」、動作していない状態を示す「ウェイト」の3つからなる。モニタプログラムは、ステータスが「レディ」となっているタスクの内の、優先順位がもっとも高いタスクを「ラン」状態とし、いずれか1つのタスク処理を選択的に実行するようになる。したがって、この図22からわかるように、この実施例で説明する4つのタスクは、パネル管理タスク、トランスフォーマータスク、自動伴奏タスク、変形タスクの順に優先度が付与されている。
【0154】
ステータスの右側にはアドレスや、処理中のレジスタ等の再開用データが示されている。これは、あるタスクの動作中にタイマ割り込み等により、それまで処理をしていたタスクの処理を中断して他のの処理へ移行しなければならないとき、その後の復帰時に備えて、中断したアドレスや、レジスタの内容等をタスク制御ブロックに記録しておくものである。
【0155】
次に図23から図28を参照して、CPU11による処理のフローチャートを説明する。図23および図24は各タスク間の動作を管理するモニタプログラムである。このモニタプログラムはタイマ19から割り込み信号が発生したときや、タスクからWAITコール、STATコールがあった場合に起動される処理である。
【0156】
タイマ11から第1の割り込み信号(所定周期:例えば10ms毎)が発生すると、CPU11がいかなる処理(モニタプログラムの処理中あるいはタスク処理中)をしている途中であっても、ステップ81へと進む。ステップ81ではそれまでの処理がモニタプログラムであったか否かが判断される。モニタプログラムの処理中であったときは、ステップ82へと進み、モニタプログラムの処理中アドレス等、復帰に必要な情報を記憶し、ステップ83でパネル管理タスクのタスク制御ブロックのステートを「レディ」とする。すなわち、タイマ割り込み1がかかると、パネル管理タスクが「レディ」状態となり、後述するステップ88、ステップ89でパネル管理タスク(図25)が再開されるようになる。このようにして、パネル管理タスクはタイマ割り込み1の周期毎に実行されるようになる。ステップ83の後、ステップ84へ進み、記憶していたアドレス等の復帰に必要な情報にもとづいて、中断していた位置のモニタプログラムの処理へと復帰する。
【0157】
ステップ81にてNOと判断したとき、すなわち、いずれかのタスクの処理中にタイマ割り込みがかかったときは、ステップ85へ進み、処理中であったタスクの、そのときのアドレスやレジスタ等をタスク制御ブロックの該タスクに対応する領域へと記録し、ステップ86へ進んで、処理中だったタスクのステータスを「レディ」とし、ステップ87でパネル管理タスクのステータスを「レディ」とする。そして、ステップ88へと進む。
【0158】
ステップ88では、タスク制御ブロックにステータスが「レディ」状態のタスクがあるか否かをチェックする。この判断がYESとなるまで、ステップ88の処理を繰り返す。この間に、前述のタイマ割り込み1が発生したときは、ステップ81、82、83、84を介して、パネル管理タスクのステータスが「レディ」とされるので、ステップ88の判断でYESとなる。ステップ88でYESと判断されたときは、ステップ89へ進んで「レディ」状態にあるタスクの中で、優先順位が最も高いタスク(図22の表においては上側に記載されているタスク)のステータスを「ラン」とし、タスク制御ブロックに記憶された再開用のアドレス、レジスタ等にもとづいて該タスクの処理を再開し、モニタプログラムの処理からタスクの処理へと移行する。
【0159】
タイマ11から第2の割り込み信号(自動伴奏のテンポに応じた所定周期:例えば四分音符あたり480回の割合)が発生すると、CPU11がいかなる処理(モニタプログラムの処理中あるいはタスク処理中)をしている途中であっても、ステップ90へと進む。ステップ90ではそれまでの処理がモニタプログラムであったか否かが判断される。モニタプログラムの処理中であったときは、ステップ91へと進み、モニタプログラムの処理中アドレス等、復帰に必要な情報を記憶し、ステップ92で自動伴奏タスクのタスク制御ブロックのステートを「レディ」とする。すなわち、タイマ割り込み2がかかると、自動伴奏タスクが「レディ」状態となり、後述するステップ88、ステップ89で自動伴奏タスク(図26)が実行される。このようにして、自動伴奏タスクはタイマ割り込み2の周期毎に実行されるようになる。ステップ92の後、ステップ93へ進み、記憶していたアドレス等の復帰に必要な情報にもとづいて、中断していた位置のモニタプログラムの処理へと復帰する。
【0160】
ステップ90にてNOと判断したとき、すなわち、いずれかのタスクの処理中にタイマ割り込みがかかったときは、ステップ94へ進み、処理中であったタスクの、そのときのアドレスやレジスタ等をタスク制御ブロックの該タスクに対応する領域へと記録し、ステップ95へ進んで、処理中だったタスクのステータスを「レディ」とし、ステップ96で自動伴奏タスクのステータスを「レディ」とする。そして、ステップ88へと進む。
【0161】
また、詳細は後述するが、各タスクの処理において「WAITコール」が発生したときは、ステップ97へ進む。ステップ97においては、依頼タスク(WAITコールを発生させたタスク)における、処理中のアドレス、レジスタ等をタスク制御ブロックに記録し、次回の再開に備える。そして、ステップ98で依頼タスクのステータスを「ウェイト」とし、ステップ88へと進む。
【0162】
また、各タスクの処理において「STATコール」が発生したときは、ステップ99へ進む。ステップ99ではそれまで処理中の(すなわちSTATコールを発生させた)タスクのアドレスやレジスタ等をタスク制御ブロックに記録し、次回の再開に備える。そしてステップ100で処理中のタスクのステータスを「レディ」とし、ステップ101で指定タスクのステータスを「レディ」とする。そしてステップ88へと進む。
【0163】
ここで、前述したようにタイマ19による割り込み信号1の発生があり、ステップ83またはステップ87にてパネル管理タスクのステータスが「レディ」状態となり、ステップ88を介してステップ89でパネル管理タスクが「ラン」状態となった場合、図25のパネル管理タスクが実行される。このパネル管理タスクに限らず、すべてのタスクには「WAITコール」を発生する処理があり、この処理の後にタスクの処理を終了して「ウェイト」状態となる。従って、ここではWAITコール処理の次からパネル管理タスクの処理が再開するものとして説明する。
【0164】
まずステップ111でパネルスキャン処理を実行する。スキャンした結果、パネルスイッチのオンイベントがあったか否かをステップ112で判断し、イベントがあったときはステップ113へ進み、イベントバッファにパネルスイッチのオンのイベントを書き込む。イベントがなかったときはステップ117へと進む。ステップ114では書き込んだイベントが何れかのトランスフォーマースイッチのオンイベントか否かを判断し、トランスフォーマースイッチのオンイベントであったら、ステップ115へ進んでトランスフォーマータスクに対してSTATコールを発生する。この結果、図23のステップ99へ処理が進み、ステップ99、100を介してステップ101でトランスフォーマータスクのステータスが「レディ」となる。
【0165】
その後ステップ117へ進んでWAITコールを発生し、その結果、図23のステップ97へ進んで、ステップ98においてこのパネル管理タスクは「ウェイト」状態となる。ステップ114でNOと判断したときはステップ116へ進んでその他のタスクに対してSTATコールを発生し、その結果、図23のモニタプログラムのステップ101にてその他のタスクのステータスが「レディ」となる。
【0166】
次に、前述したようにタイマ19による割り込み信号2の発生があり、ステップ92またはステップ96にて自動伴奏タスクのステータスが「レディ」状態となり、ステップ88を介してステップ89で自動伴奏タスクが「ラン」状態となった場合、図26の自動伴奏タスクが実行される。前述したパネル管理タスクと同様に、WAITコール処理(ステップ123)の次からこの自動伴奏タスクの処理が再開するものとして説明する。
【0167】
まずステップ121で自動伴奏の走行状態を示すランフラグRUN(図示しないその他のタスクにて1又は0の設定される)の値が1であるか否かを判断し、1(YES)である場合はステップ122へ進み、自動伴奏処理を行う。この自動伴奏処理は、前述の図14における処理とほぼ同様の処理であるため、詳細説明は省略するが、カレントパターンのデータを、1クロック分読み出す処理である。その後ステップ123へ進んでWAITコールを発生し、その結果、図23のステップ97へ進んで、ステップ98においてこの自動伴奏タスクは「ウェイト」状態となる。ランフラグRUNの値が1でなかった(NO)ときもステップ123へと進む。
【0168】
次にステップ115、そしてモニタプログラムのステップ99、100、101、88、89を介して、トランスフォーマータスクが起動された場合について説明する。前述したパネル管理タスクと同様に、WAITコール処理(ステップ140)の次からトランスフォーマータスクの処理が再開するものとして説明する。まずステップ131でイベントバッファをチェックする。その結果、トランスフォーマースイッチのオンイベントがイベントバッファに記憶されていたら、ステップ132でYESと判断され、ステップ133へと進む。
【0169】
ステップ133ではイベントバッファに記憶されているトランスフォーマー種類(=形容詞)を得て、イベントバッファのトランスフォーマーイベントをクリアする。そして、ステップ134で該トランスフォーマー種類の変形済みパターンが変形パターンバッファに記憶されているか否かを判断し、記憶されている(YES)ときは、ステップ135で該トランスフォーマー種類の変形済みパターンを選択し、カレントパターンをこの変形済みパターンに差し換える。これにより、見かけ上トランスフォーマー処理が実行されたことになるが、実際には読み出すパターンを差し換えているだけであるので、処理には多くの時間を必要とせず、自動伴奏がもたつくことがない。
【0170】
一方、ステップ134で変形済みパターンが記憶されていない(NO)と判断されたときは、後述する変形タスクによる変形済みパターン作成処理が終了していない場合であり、この時点でトランスフォーマー処理を実行し、指定されたトランスフォーマー種類に従ってカレントパターンが変形される。従って、この場合はトランスフォーマースイッチが操作された時点で実際のトランスフォーマー処理が実行されるので、前述したステップ135におけるパターン差し替え処理よりも多くの処理時間を必要とし、自動伴奏が多少もたつく可能性もある。
【0171】
その後、ステップ137で変形パターンバッファをクリアし、ステップ138でトランスフォーマーフラグTRANSを1にセットする。このトランスフォーマーフラグTRANSはトランスフォーマースイッチが操作されたことを示すフラグであり、後述する変形タスクにて利用される。そして、ステップ139で変形タスクに対してSTATコールを発生する。この結果、図23のステップ99へ処理が進み、ステップ99、100を介してステップ101で変形タスクのステータスが「レディ」となる。
【0172】
そして、ステップ131へ戻り、イベントバッファをチェックし、ステップ132で再びトランスフォーマースイッチのオンイベントの有無を判断する。この場合、ステップ133でバッファのトランスフォーマーイベントがクリアされているので、NOと判断され、ステップ140へ進み、WAITコールを発生する。そして、図23のステップ97へと進み、その結果、トランスフォーマータスクは「ウェイト」状態となる。
【0173】
図23のステップ88、89にて変形タスクが優先順位最高のレディタスクであったとき、すなわち、変形タスクよりも優先度の高いパネル管理タスク、トランスフォーマータスク、自動伴奏タスク等が全て「ウェイト」状態で、かつ変形タスクが「レディ」状態であるときは、図28の変形タスクが実行される。ステップ151ではトランスフォーマーフラグTRANSが1であるか否かを判断し、1(YES)であるときはステップ152で全トランスフォーマー種類の変形済みパターンの作成が終了したか否かを判断する。全ての種類において変形済みパターンの作成が終了していない(NO)ときには、ステップ153で次の(全く変形済みパターンが作成されていないときは最初の)種類に従ったパターンを変形させるトランスフォーマー処理を実行し、変形済みパターンを作成する。そして、ステップ154で作成した変形済みパターンを変形パターンバッファへと保管し、ステップ151へと進む。一方、ステップ152でYESと判断されたときは、ステップ155でトランスフォーマーフラグTRANSをクリアして、ステップ151へと戻る。ステップ151でNOと判断されたとき、すなわち、ステップ155でトランスフォーマーフラグTRANSがクリアされた後にステップ151へと進んだときは、ステップ156へ進み、WAITコールを発生する。その結果、図23のモニタプログラムのステップ97、98において変形タスクが「ウェイト」状態となる。
【0174】
以上のようにしてトランスフォーマースイッチが操作されたとき、変形済みパターンが既に作成されていた場合は、カレントパターンが変形済みパターンに差し替えられる。この変形済みパターンの作成はパネル管理タスク、トランスフォーマータスク、自動伴奏タスクよりも優先度の低い変形タスクにより実行される。すなわち、変形タスクの処理中であっても、これら優先度の高いタスクが「レディ」状態となったときには、変形タスクの処理は中断され、優先度の高いタスクの処理が実行される。よって、変形済みパターンの作成はCPU11の空き時間になされることになり、自動伴奏処理には悪影響を及ぼさない。
【0175】
変形済みパターンの作成が終了する前に、次のトランスフォーマーの指示が発生することもあるが、この場合はトランスフォーマータスク内で変形処理が実行されるため、多少の自動伴奏処理のもたつきが発生することもあり得るが、あまり頻繁にトランスフォーマーの指示をしなければ、この問題はあまり生じない。また、CPUの処理速度が向上すれば、変形済みパターンの作成に要する時間は短縮され、全てのトランスフォーマー種類における変形済みパターンが作成されている可能性が高くなる。
【0176】
なお、変形タスクにおいて全てのトランスフォーマー種類における変形済みパターンを作成するようにしたが、指示される可能性の高い、一部のトランスフォーマー種類のみについて変形済みパターンを作成するようにしてもよい。指示される可能性の高いトランスフォーマー種類は、それまでのトランスフォーマー種類の指定状況を元に決定すればよい。また、全種類の変形済みパターンを作成する場合であっても、指示される可能性の高い種類順に変形済みパターンを作成していくようにすると、全種類の変形済みパターンの作成が終了していない場合であっても、新たに指定された種類の変形済みパターンが既に作成されている可能性が高くなる。
【0177】
また、トランスフォーマースイッチの操作があった時点で伴奏パターンを変更するようにしたが、操作のあった小節の次の小節の先頭や、操作のあった時点の次の拍等にてパターンを変更するようにしてもよい。また、実施例は1つのCPUで伴奏タスクと変形タスクの処理を行うようにしたが、それぞれ別のCPUによって処理するようにしてもよい。
【0178】
【発明の効果】
以上のようにこの発明によれば、変更操作が簡単かつ容易に行えるとともに、リアルタイムで伴奏パターンを変更しても自動伴奏がもたつかないという効果がある。
【図面の簡単な説明】
【図1】図2の電子楽器及びパソコンが伴奏パターン作成装置として動作する場合の機能ブロックを示す図である。
【図2】鍵盤及び音源回路を内蔵した電子楽器と、伴奏パターンのエディット処理を行うパソコンとの詳細構成及び両者間の接続関係を示すハードブロック図である。
【図3】図2のパソコン側のRAM及びハードディスク装置のデータ構成を示す図である。
【図4】パターンテーブル領域に記憶されているアドレス変換用のパターンテーブルの内容を示す図である。
【図5】ディスプレイの表示例を示す図である。
【図6】図2の鍵盤に割り当てられた各種機能の一例を示す図である。
【図7】図2の電子楽器のCPUが実行する処理ルーチンの一例を示す図であり、図7(A)はメインルーチンの一例を、図7(B)は図7(A)のキー処理の詳細を、図7(C)は図7(A)のMIDI受信処理の詳細を示す。
【図8】図2のパソコンのCPUが実行する処理ルーチンの一例を示す図であり、図8(A)はメインルーチンの一例を、図8(B)は図8(A)のMIDI受信処理の詳細を示す。
【図9】受信したMIDIメッセージがノートナンバE0〜B1,C2,D2〜A2(#を除く),B2,C3,D3〜F3(#を除く)に対応したノートオンメッセージの場合に行われる図8(B)の処理の詳細を示す図であり、図9(A)はノートナンバE0〜B1のパターンアサインエリアキーの場合を、図9(B)はノートナンバC2のアサインキーの場合を、図9(C)はノートナンバD2〜A2(#を除く)のトランスフォーマーキーの場合を、図9(D)はノートナンバB2のアンドゥキーの場合を、図9(E)はノートナンバC3のスタート/ストップキーの場合を、図9(F)はノートナンバD3〜F3(#を除く)のバンクA,B,Cキーの場合を示す。
【図10】受信したMIDIメッがノートナンバG3,C#2,D#2,F#2,G#2,A#2,C#3に対応したノートオンメッセージの場合に行われる図8(B)の処理の詳細を示す図であり、図10(A)はノートナンバG3のロックキーの場合を、図10(B)はノートナンバC#2,D#2のバリエーション1、2キーの場合を、図10(C)はノートナンバF#2のリプレースキーの場合を、図10(D)はノートナンバG#2のインサートキーの場合を、図10(E)はノートナンバA#2のクォンタイズキーの場合を、図10(F)はノートナンバC#3のデリートドラムキーの場合を示す。
【図11】受信したMIDIメッセージがノートナンバD#3,F#3,G#3,A3〜E5に対応したノートオンメッセージの場合に行われる図8(B)の処理の詳細を示す図であり、図11(A)はノートナンバD#3のデリートコンポーネントキーの場合を、図11(B)はノートナンバF#3のアクセントキーの場合を、図11(C)はノートナンバG#3のフィルインキーの場合を、図11(D)はノートナンバA3〜E5のドラムキーの場合を示す。
【図12】図11(D)のフラグ対応処理1の詳細を示す図であり図12(A)はリプレース処理を、図12(B)はインサート処理を、図12(C)はデリートドラム処理を、図12(D)はデリートコンポーネント処理を示す。
【図13】受信したMIDIメッセージがノートナンバC2,G3,F#2,G#2,A#2,C#3,D#3,F#3,A3〜E5に対応したノートオフメッセージの場合に行われる図6(B)の処理の詳細を示す図であり、図13(A)はノートナンバC2,G3,F#2,G#2,A#2,C#3,D#3,F#3の場合を示し、図13(B)はノートナンバA3〜E5の場合を示す。
【図14】4分音符当たり480回の割込みで実行されるタイマ割込処理を示す図である。
【図15】図14のステップ35のMIDIノートイベント出力処理の詳細を示す図である。
【図16】図14のステップ43のフラグ対応処理2の詳細を示す図であり、図16(A)はアンドゥ処理を、図16(B)はフィルイン復帰処理を、図16(C)はバリエーション処理を、図16(D)はトランスフォーマー処理を示す。
【図17】図2のパソコンのCPUが行う図8の「その他の処理」の中の「パターン登録処理」の詳細を示す図である。
【図18】トランスフォーマー処理によってカレントパターンの内容を変更する演算処理の一例を示す図である。
【図19】トランスフォーマー処理によってカレントパターンの内容を変更する演算処理の他の例を示す図である。
【図20】トランスフォーマー処理によってカレントパターンのドラム音及びベロシティーがどのように置き替えられるのか、その様子の概念を示す図である。
【図21】図2のディスプレイの表示画面の表示例を示す図である。
【図22】他の実施例におけるタスク制御ブロックを示す図である。
【図23】他の実施例におけるマルチタスクのモニタ処理のフローチャートを示す図である。
【図24】他の実施例におけるマルチタスクのモニタ処理のフローチャートを示す図である。
【図25】他の実施例におけるパネル管理タスク処理のフローチャートを示す図である。
【図26】他の実施例における自動伴奏タスク処理のフローチャートを示す図である。
【図27】他の実施例におけるトランスフォーマータスク処理のフローチャートを示す図である。
【図28】他の実施例における変形タスク処理のフローチャートを示す図である。
【符号の説明】
1…カレントパターンメモリ、2…アサインメモリ、3…アンドゥバッファ、4…退避メモリ、5…データベース手段、6…パターンセレクタ、7…エディット手段、8…形容詞指示手段、9…トランスフォーマー、10…アンドゥ手段、1F…電子楽器、11…マイクロプロセッサユニット(CPU)、12…ROM、13…RAM、14…押鍵検出回路、15…スイッチ検出回路、16…表示回路、17…音源回路、18…サウンドシステム、19…タイマ、1A…鍵盤、1B…パネルスイッチ、1C…表示部、1D…MIDIインターフェース、1E…バス、20…パソコン、21…マイクロプロセッサユニット(CPU)、22…ROM、23…RAM、24…ハードディスク装置、25…ディスプレイインターフェース、26…マウスインターフェース、27…スイッチ検出回路、28…タイマ、29…ディスプレイ、2A…マウス、2B…パネルスイッチ、2C…MIDIインターフェース、2D…バス。
Claims (3)
- 演奏すべき現在の伴奏パターンを記憶する記憶手段と、
伴奏パターンに対して与える変形をそれぞれ示す複数の形容詞の何れかを指定するための指定手段と、
全ての前記複数の形容詞に対応した変形アルゴリズムをそれぞれ実行して、前記記憶手段に記憶されている前記現在の伴奏パターンを基にして該伴奏パターンに対して変形を施し、各形容詞に対応した変形済みパターンをそれぞれ作成してバッファに保存する変形パターン作成手段と、
前記指定手段によって何れかの形容詞の指定があったとき、前記変形パターン作成手段によって作成されて前記バッファに保存済みの前記変形済みパターンの中から該指定された形容詞に一致するパターンを選択し、前記記憶手段に記憶されている前記現在の伴奏パターンを該選択したパターンで差し替えるパターン変更手段と、
前記記憶手段に記憶されている前記現在の伴奏パターンに従って自動伴奏を行い、自動伴奏音を発音させる伴奏手段と、
を備え、前記伴奏手段による自動伴奏に並行して前記変形パターン作成手段による前記各形容詞に対応した変形済みパターンの作成が行われることを特徴とする自動伴奏装置。 - 前記変形パターン作成手段は、前記指定手段による前記何れかの形容詞の指定に応じて前記パターン変更手段によって前記記憶手段に記憶する前記現在の伴奏パターンが該指定された形容詞に対応する前記変形済みパターンに差し替え変更された後は、該差し替え変更された新たな現在の伴奏パターンを対象にして、全ての前記複数の形容詞の各々に対応した前記変形済みパターンの作成を行うものである請求項1記載の自動伴奏装置。
- 前記変形パターン作成手段と前記伴奏手段はCPUのマルチタスク処理によりそれぞれ実現されるものであって、該CPUが処理する前記伴奏手段としてのタスクが前記変形パターン作成手段としてのタスクに優先して実行されることを特徴とする請求項1又は2に記載の自動伴奏装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25751694A JP3596048B2 (ja) | 1994-09-27 | 1994-09-27 | 自動伴奏装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25751694A JP3596048B2 (ja) | 1994-09-27 | 1994-09-27 | 自動伴奏装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0895566A JPH0895566A (ja) | 1996-04-12 |
JP3596048B2 true JP3596048B2 (ja) | 2004-12-02 |
Family
ID=17307390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25751694A Expired - Fee Related JP3596048B2 (ja) | 1994-09-27 | 1994-09-27 | 自動伴奏装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3596048B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006171626A (ja) * | 2004-12-20 | 2006-06-29 | Oki Electric Ind Co Ltd | 楽曲再生装置 |
JP4720893B2 (ja) * | 2008-10-14 | 2011-07-13 | ヤマハ株式会社 | カラオケ装置 |
JP2023131494A (ja) * | 2022-03-09 | 2023-09-22 | ヤマハ株式会社 | 音響生成方法、音響生成システムおよびプログラム |
-
1994
- 1994-09-27 JP JP25751694A patent/JP3596048B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0895566A (ja) | 1996-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5777251A (en) | Electronic musical instrument with musical performance assisting system that controls performance progression timing, tone generation and tone muting | |
US7091410B2 (en) | Apparatus and computer program for providing arpeggio patterns | |
JPH09114462A (ja) | 楽音発生方法 | |
US5756917A (en) | Automatic accompaniment device capable of selecting a desired accompaniment pattern for plural accompaniment components | |
JP2956505B2 (ja) | 自動伴奏装置 | |
EP0981128A1 (en) | Automatic performance apparatus with variable arpeggio pattern | |
US5712436A (en) | Automatic accompaniment apparatus employing modification of accompaniment pattern for an automatic performance | |
JP3596048B2 (ja) | 自動伴奏装置 | |
JP3579916B2 (ja) | 自動伴奏装置 | |
JP3584503B2 (ja) | 自動伴奏装置 | |
JP3541452B2 (ja) | 自動伴奏装置 | |
JP2900405B2 (ja) | 電子楽器 | |
JPH06202654A (ja) | 電子楽器 | |
JP3340565B2 (ja) | 自動伴奏装置 | |
JP2904020B2 (ja) | 自動伴奏装置 | |
JP3116948B2 (ja) | 自動伴奏装置 | |
JPS62159189A (ja) | 自動リズム演秦装置 | |
JP2904022B2 (ja) | 自動伴奏装置 | |
JP2640992B2 (ja) | 電子楽器の発音指示装置及び発音指示方法 | |
JP3632487B2 (ja) | 電子楽器等における和音検出装置 | |
JP2756799B2 (ja) | 自動リズム演奏装置 | |
JP2555569B2 (ja) | 電子楽器 | |
JP3123458B2 (ja) | 自動伴奏装置 | |
JP2697287B2 (ja) | 電子楽器 | |
JP3705203B2 (ja) | 楽音発生方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040405 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040405 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040511 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040712 |
|
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: 20040817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040830 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070917 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110917 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |