JP3632606B2 - 自動演奏装置 - Google Patents
自動演奏装置 Download PDFInfo
- Publication number
- JP3632606B2 JP3632606B2 JP2001075139A JP2001075139A JP3632606B2 JP 3632606 B2 JP3632606 B2 JP 3632606B2 JP 2001075139 A JP2001075139 A JP 2001075139A JP 2001075139 A JP2001075139 A JP 2001075139A JP 3632606 B2 JP3632606 B2 JP 3632606B2
- Authority
- JP
- Japan
- Prior art keywords
- trigger
- automatic performance
- data
- read
- phrase
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
この発明は、あらかじめ記憶させておいた演奏データを順次読み出し、この演奏データに基づいて楽音を発生させて自動演奏を行う自動演奏装置に関する。
【0002】
【従来の技術】
従来より、さまざまな自動演奏装置が開発されている。そのなかで、ある種の自動演奏装置においては、あらかじめ発生すべき楽音に基づく演奏データをあらかじめメモリ等に記憶しており、これらのデータをトリガーによって順次読み出して、楽音を発生するものがある。この際に、メモリに記憶されているデータの読み出アドレスは、トリガーがかかる毎に、1つずつ順次後方へ移動する。
【0003】
ここでトリガーは、例えば、鍵盤の中の、ある特定のキーに割り当てておき、このキーが押下されることによって、発生するようになっている。また、楽音の発生する長さは、このキーが押下されている期間に等しくなっている。
【0004】
これによって、演奏者は、正確な音高を指定しなくても、特定のキーを押下するだけで、演奏することが可能となる。このとき、テンポや各一音一音の発音長さは、演奏者の嗜好によって自由に調節される。
【0005】
【発明が解決しようとする課題】
しかしながら、上述した従来の自動演奏装置にあっては、、一旦、トリガーをかけるタイミングを失うと、演奏が中断して完結しない、という問題とともに、曲の途中から演奏することができない、という問題があった。
【0006】
また、演奏者が、音符の一つ一つの長さを覚えていない場合、すなわち、曲を知らない場合には、正確な演奏ができないという問題があった。
また、速いフレーズを演奏するときは、トリガーをタイミングよく速く発生させる必要がある。しかしながら、初心者や曲を知らない者にとっては演奏できず、楽しめないという問題がある。
さらに、従来の自動演奏装置にあっては、トリガーによる発音が、単音にしか対応していないため、和音を含むものやアルペジオ、レガート奏法を含むものなどは弾くことができない。
【0007】
これらの問題を解決するためには、1回のトリガーの発生に対してフレーズ単位で自動演奏行うことが望ましい。複雑な奏法を用いるものはその奏法を含んだフレーズとして演奏データを用意することで解決する。そこでこの発明の目的とするところは、簡単な操作で、フレーズ単位の自動演奏を行うことができるとともに、演奏タイミングを逸しても、容易に演奏を再開することができ、曲の途中からでも演奏することが可能な自動演奏装置を提供することにある。
【0008】
【課題を解決するための手段】
これらの課題を解決するために、この発明による自動演奏装置は、操作者の操作によりトリガー信号を発生するトリガー信号発生手段と、前記トリガー信号でコントロールするパートと前記トリガー信号でコントロールしないパートとを有する複数のパート分の自動演奏データを記憶する記憶手段と、前記トリガー信号でコントロールするパートの自動演奏データについて、前記トリガー信号が発生したときに所定の限られた自動演奏データ単位で読み出されるべき自動演奏データの読出し開始位置を楽曲の進行に従って移動させておく読出し開始位置移動手段と、前記トリガー信号が発生したことに基づいて、前記トリガー信号でコントロールするパートについて、前記読出し開始位置移動手段で移動された読出し開始位置から前記所定の限られた自動演奏データを読み出すように制御する読出し制御手段と、前記トリガー信号でコントロールしないパートの自動演奏データを楽曲の進行に従って順次読み出して楽音を発生すると共に、前記読出し制御手段によって前記トリガー信号でコントロールするパートの自動演奏データが読み出されたときは当該自動演奏データによる楽音を発生する自動演奏手段と、ディスプレイとを備え、前記ディスプレイには、自動演奏の進行状況と併せて、トリガーをかけるべきタイミングを表示するようにしたことを特徴としている。
【0009】
〔発明の作用〕
この発明の構成について、理解の便のために、以下の実施態様で使用される記号、用語乃至箇所を括弧書きで付記して、この発明の作用を説明すると、次のとおりである。この発明による自動演奏装置においては、操作者の操作によりトリガー信号を発生するトリガー信号発生手段(1)と、トリガー信号でコントロールするパート(トリガー駆動専用トラック)とトリガー信号でコントロールしないパート(ノーマルトラック)とを有する複数のパート分の自動演奏データを記憶する記憶手段(ROM5)と、トリガー信号でコントロールするパートの自動演奏データについて、トリガー信号が発生したときに所定の限られた自動演奏データ(フレーズ)単位で読み出されるべき自動演奏データの読出し開始位置を楽曲の進行に従って移動させておく(St7→Sv3→Sv7)読出し開始位置移動手段(Ss4,Sm5)と、トリガー信号が発生したことに基づいて、トリガー信号でコントロールするパートについて、読出し開始位置移動手段で移動された読出し開始位置から所定の限られた自動演奏データを読み出す(Sv1→Sv5→Su1→Su5)ように制御する読出し制御手段(Sm5→Ss5)と、トリガー信号でコントロールしないパートの自動演奏データを楽曲の進行に従って順次読み出して楽音を発生する(Ss3)と共に、読出し制御手段によってトリガー信号でコントロールするパートの自動演奏データが読み出されたときは当該自動演奏データによる楽音を発生する(Su7)自動演奏手段(Ss3,Ss5)と、ディスプレイ(11)とが備えられ、ディスプレイ(11)には、自動演奏の進行状況と併せて、トリガーをかけるべきタイミングが表示される(段落[0121])。従って、操作者は、トリガー信号でコントロールしないパートの演奏を聴きながら、初心者でも簡単に演奏を楽しむことができる。
【0010】
〔種々の特徴〕
なお、この発明に備えられる種々の特徴により、以下の(1)〜(8)のように構成することができる:
(1)トリガーを発生するトリガー発生手段と、トリガーによって読み出すべきフレーズに対応した複数の識別データを記憶するフレーズ識別データ記憶手段と、前記識別データに対応したフレーズを複数記憶したフレーズ記憶手段と、自動演奏の開始を指示する指示手段と、前記指示手段の指示に応じて前記フレーズ識別データ記憶手段の読出しに必要なアドレスの進行を開始し、時間の経過によって該アドレスの進行を制御する制御手段とを備え、前記トリガー発生手段によって発生したトリガーの発生したタイミングで、前記アドレスに応じてフレーズ識別データ記憶手段からフレーズ識別データを読出し、該フレーズ識別データに対応するフレーズを自動演奏することを特徴とする自動演奏装置。
【0011】
(2)自動演奏装置(1)において、前記フレーズ識別データ記憶手段には、さらにフレーズ識別データと交互に記憶される時間間隔データが記憶され、前記フレーズ記憶手段からフレーズを読出すべき期間を表すことを特徴とする自動演奏装置。
【0012】
(3)自動演奏装置(2)において、前記フレーズ識別データ記憶手段には、さらにフレーズの読出しを禁止することを表すフレーズ読出禁止データが記憶され、前記時間間隔データとの組み合わせによってフレーズ読出しを禁止する期間を設定することを特徴とする自動演奏装置。
【0013】
(4)自動演奏装置(2)において、前記フレーズ記憶手段からフレーズを読出す期間中に少なくとも2回、前記トリガー発生手段からトリガーを受け付けた時には、2回目以降のトリガーに関してはフレーズ読出しを行わないことを特徴とする自動演奏装置。
【0014】
(5)自動演奏装置(1)において、前記フレーズ記憶手段に記憶される複数のフレーズはそれぞれすくなくとも発音指示データと時間間隔データから構成され、トリガー受け付け期間内に前記トリガー発生手段によってトリガーが発生しなかった場合には、該トリガー受け付け期間にトリガーが発生したときに自動演奏されるフレーズの少なくとも発音指示データと時間間隔データを無視して実行することを特徴とする自動演奏装置。
【0015】
(6)自動演奏装置(1)において、第1のフレーズの自動演奏中に第2のフレーズの自動演奏指示があった場合には、第1のフレーズの自動演奏を少なくとも発音指示データ、時間間隔データを無視して実行することを特徴とする自動演奏装置。
【0016】
(7)自動演奏装置(1)において、トリガーを受け付ける期間を操作者に表示するための表示手段を備える自動演奏装置。
【0017】
(8)自動演奏装置(1)において、さらに、通常の自動演奏を行うための自動演奏データを記憶する自動演奏データ記憶手段を備え、前記制御手段は、前記指示手段の指示に応じて前記フレーズ識別データ記憶手段の読出しに必要なアドレスの進行を開始し、時間の経過によって該アドレスの進行を制御するとともに、前記自動演奏データ記憶手段から自動演奏データを読み出し、通常の自動演奏を行うことを特徴とする自動演奏装置。
【0018】
上記自動演奏装置(1)では、指示手段によって自動演奏の開始が指示されると、制御手段によってフレーズ識別データ記憶手段の読出しに必要なアドレスの進行が開始し、時間の経過によって該アドレスの進行が制御される。そのためトリガー発生手段によって発生するトリガーによって読み出されるフレーズが、時間経過、すなわち曲の進行に応じた適切なフレーズで自動演奏される。また、トリガーが発生しないときも、曲の進行に応じた適切なフレーズを再生すべくアドレスを移動させておくので、演奏が中断して途中から復帰しても、トリガーによる自動演奏は曲の進行に合った適切な自動演奏をするので演奏者は曲を終わりまで演奏する事ができる。
【0019】
上記自動演奏装置(2)では、前記フレーズ識別データ記憶手段に、さらにフレーズ識別データと交互に記憶される時間間隔データが記憶され、前記フレーズ記憶手段からフレーズを読出すべき期間を設定することができるので、本来のタイミングに対して前後にある程度ずれた範囲でのトリガーの受け付けができることになる。このため演奏者が意図的に本来のタイミングをずらして、いわゆる前ノリ、後ノリを表現したりして演奏に変化をつけることも可能である。また、本来のタイミングを逸することがあってもずれたタイミングを保持したまま演奏されるので、演奏者の失敗が反映され、失敗を認識して演奏技量を向上させることができる。
上記自動演奏装置(3)では、自動演奏装置(2)の構成に加えさらに、前記フレーズ識別データ記憶手段にフレーズの読出しを禁止することを表すフレーズ読出禁止データを記憶しているので、前記時間間隔データと組み合わせることでフレーズ読出禁止期間が設定され、この期間中に発生したトリガーは受け付けられない。このように、フレーズ読出しを禁止する期間を設定することができるので、トリガーを発生するタイミングが本来のタイミングに対して大幅にずれた場合は、フレーズが読み出されないので曲の進行に自動演奏されるフレーズが合わないという不都合を回避できる。
上記自動演奏装置(4)では、自動演奏装置(2)の構成に加えて、前記フレーズ記憶手段からフレーズを読出す期間中に少なくとも2回、前記トリガー発生手段からトリガーを受け付けた時には、2回目以降のトリガーに関してはフレーズ読出しを行わない。このように、2回目以降のトリガーに関してはフレーズ読出しを行わないので、同じフレーズが重複して演奏されることがないので違和感のない演奏が楽しめる。
【0020】
上記自動演奏装置(5)では、自動演奏装置(1)の構成に加えて、前記フレーズ記憶手段に記憶される複数のフレーズは、それぞれ少なくとも発音指示データと時間間隔データから構成され、トリガー受け付け期間内に前記トリガー発生手段によってトリガーが発生しなかった場合には、該トリガー受け付け期間にトリガーが発生したときに自動演奏されるフレーズの少なくとも発音指示データと時間間隔データを無視して実行するので、音色変更や操作子の情報などの情報を無視されることがない。そのためこれらの情報に応じた処理をしないために後の自動演奏に影響がでるという不都合を回避できる。
【0021】
上記自動演奏装置(6)では、自動演奏装置(1)の構成に加えて、第1のフレーズの自動演奏中に第2のフレーズの自動演奏指示があった場合には、第1のフレーズの自動演奏を少なくとも発音指示データ、時間間隔データを無視して実行するので、後の演奏の影響がでるような処理は行いつつ、第1のフレーズの残りの自動演奏データを発音せずに迅速に実行する。聴感上は、トリガーを発生させた瞬間に第1のフレーズの演奏が中断し、第2のフレーズの演奏が開始されたように聞こえる。このためトリガーの発生とフレーズの演奏と応答が悪くなることはない。
【0022】
上記自動演奏装置(7)では、自動演奏装置(1)の構成に加えて、トリガーを受け付ける期間を操作者に表示するための表示手段を備えているので、演奏者はトリガーを発生させるタイミングを視覚的に認識することができる。
【0023】
上記自動演奏装置(8)では、自動演奏装置(1)の構成に加えて、さらに通常の自動演奏を行うための自動演奏データを記憶する自動演奏データ記憶手段を備え、前記制御手段は、前記指示手段の指示に応じて前記フレーズ識別データ記憶手段の読出しに必要なアドレスの進行を開始し、時間の経過によって該アドレスの進行を制御するとともに、前記自動演奏データ記憶手段から自動演奏データを読み出し、通常の自動演奏を行う。従って、通常の自動演奏データも自動演奏するので演奏者は他のパートの演奏を聞きながら合奏に参加できる。
【0024】
【発明の実施の形態】
以下、図面を参照して、この発明の各実施例を説明する。実施例は3つあるが、まず共通する部分を説明する。この発明による実施例は、自動演奏の複数のトラックのうちの少なくとも一つのトラック(「トリガー駆動トラック」と呼ぶ。)をトリガーによってコントロールする一方、トリガーでコントロールしない他のトラック(「ノーマルトラック」と呼ぶ。)を周知の自動演奏の処理を用いて再生する。
【0025】
演奏者は、ノーマルトラックによる演奏を聞きながら、演奏曲におけるトリガーをかけるべきタイミングでトリガーをかける。トリガーが出力されると、直ちにトリガー駆動トラックから所定の限られた自動演奏演奏データの読み出しを開始し、読み出されたデータに従って、自動演奏を行う。
【0026】
この際に、必要とされるトリガーのタイミングと、演奏者による実際のトリガーのタイミングとはズレる場合がほとんどであるが、これにかまわずノーマルトラックのテンポと同一のテンポで再生される。そのため、演奏者は、演奏に慣れていない、あるいはリズム感が悪いほどズレ量を大きくしてしまい、ノーマルトラックによる演奏とトリガー駆動トラックによる演奏とがズレて再生されて、いわゆる下手な演奏になる。
【0027】
一方、演奏者がトリガーをかけずにいても、ノーマルトラックの進行に応じて、トリガーが発生したときの再生開始位置(アドレス)を移動させておくので、演奏者が演奏に慣れていなくて、演奏が中断しても、トリガーによる自動演奏はノーマルトラックの進行に応じた、適切な自動演奏をするので、演奏者は、途中から復帰できる。
【0028】
さらに、演奏者は、演奏に慣れるにしたがってズレ量を小さくすることができるので、本来の演奏に近くなり、いわゆる上手な演奏になる。従って、演奏者は、練習効果を演奏に反映することができる。
【0029】
第1の実施例では、1小節単位でトリガーによる自動演奏を行う。演奏者は、ノーマルトラックの演奏を聞きながら、各小節の先頭付近でトリガーをかける。トリガーが発生したことを装置が認識すると、トリガー駆動トラックの読み出しを開始し、トリガーのタイミングによって読み出しを開始してから一小節分のデータを読み出したところで停止する。
【0030】
トリガーが各小節の頭で規則的に発生する場合は、以上の動作を繰り返すので、演奏が途切れることがない。ところが、演奏者がトリガーを発生させることを途中でやめた場合は、ノーマルトラックの進行に応じて、読み出し位置を移動する。そして演奏者がトリガーの発生を再開した場合は、ノーマルトラックの進行に応じた読み出し位置から読み出しを開始して、自動演奏を行う。これによって、途中から演奏に参加する場合や、演奏が途中で中断しても、復帰することができる。この第1の実施例は、複音楽器をトリガー駆動する場合に適している。
【0031】
次に、この第1実施例の構成について図面を参照して説明する。図1は、この発明の実施例による自動演奏装置を示す、ブロック図である。
この図において、1はトリガー発生器であり、読み出し動作を開始させる“きっかけ”を発生するものである。なお、トリガー発生器1の詳細については後述する。トリガー発生器1によって発生したトリガーはトリガーI/F(インターフェース)2によって検出され、その検出信号がアドレス・データバス13を介してCPU3に供給される。
【0032】
4はタイマであり、割り込み信号INTをCPU3に供給する。この割り込み信号INTが供給されると、CPU3は後述するタイマ割込処理を実行する。この実施例では、割込信号INTの発生する時間間隔は曲のテンポに応じて変化し、発生する回数は、4分音符について96回の割合であり、例えば4/4拍子の場合には、1小節について384回となる。
【0033】
5はROMであり、CPUにおいて用いられるプログラムや自動演奏に用いられる演奏データ等が記憶されている。6はRAMであり、後述する種々のレジスタ等に使用する。7は音源回路であり、CPU3の制御によって楽音信号を発生させ、サウンドシステム8に供給する。サウンドシステム8は、DAコンバータ、アンプ、スピーカから構成されていて、音源回路7からのデジタル楽音信号をアナログ信号に変換した後、増幅されて、音響信号として放音される。
【0034】
9は、パネル操作子であり、曲のテンポ設定やトリガー駆動トラックの選択等を行うための、種々の操作子より構成される。各操作子の操作状態は、パネルI/F10によって検出され、その検出信号が、アドレス・データバス13を介してCPU3に供給される。11はディスプレイであり、ディスプレイI/F12およびアドレス・データバス13を介したCPU3の制御によって種々の表示を行う。
【0035】
ROM5には図18に示すような、自動演奏データが格納されている。この実施例では、ピアノ、ベース、ドラム、トランペットの4つのパートの自動演奏データが別々のトラックに記憶されている。自動演奏データは、イベントデータEDと、イベントデータとイベントデータの時間間隔を表す、デュレーションデータDDからなる。イベントデータEDはキーオンデータ、キーオフデータ、プログラムチェンジ、コントロールチェンジなどの種類があり、デュレーションデータの時間が経過する毎に、イベントデータEDを読出し、データの種類に応じた処理を行うことで、自動演奏が行われる。
【0036】
トリガー発生器1は単なるスイッチでもよいが、実際に楽器を演奏している気にさせるため、本物の楽器を使うことが好ましい。図2(a)の101はアナログ信号を出力するアナログ楽器であり、エレクトリックギターや、エレクトリックベースギター、電子ドラム等がよい。自然楽器にマイクロホンをとりつけてもよいが、生音が大きいものはふさわしくない。アナログ楽器101からのアナログ信号(ADコンバーターを通してデジタル信号にしてもよい)はレベル比較器102でしきい値と比較され、しきい値レベルを越えるとパルス発生器103にてトリガー信号を発生し、トリガーI/F2を介してCPU3に伝えられる。
【0037】
また、トリガー発生源としてMIDI信号を出力する電子楽器を用いてもよく、図2(b)にはMIDIキーボードを使用した例が示されている。キーボード104は複数の鍵からなるキーボードであり、様々なMIDI信号を出力するが、キーオンイベント検出器105にてキーオンイベントしか検出せず、キーオンイベントがあったときだけ、それをトリガーとしてトリガーI/F2を介してCPU3に伝える。これによって演奏者は、何らかの音高の音を演奏するだけで、トリガーを発生することができる。
【0038】
図1のROM5に記憶されているプログラムに従って、第1の実施例に係る自動演奏装置が動作する。以下、その動作を図3〜11を参照して説明する。
演奏者が、この装置の電源を投入すると、図3に示すメインルーチンが起動される。まず、Sa1において、RAM6に記憶する、各種レジスタや各種フラグを初期設定値にする処理や、その他の初期設定に必要な処理を行う。次にパネル処理(Sa2)が行われるが、CPU3がパネル処理(Sa2)を実行するときは、図5に示すサブルーチンを起動する。
【0039】
Sc1ではテンポ設定処理が行われる。これは、演奏者が、パネル操作子9のテンポ設定操作子にてテンポ設定操作を行ったときに、設定されたテンポに応じた時間間隔で割込信号INTが発生するように設定する処理である。しかし、この実施例では、自動演奏を行うのであるから、あらかじめテンポは、その自動演奏する曲にあわせて、あらかじめ設定されているので、割込信号INTが発生する時間間隔も設定されているものとする。ただし、演奏者が、変更したいときは変更できる。ここでは、あらかじめ決められたテンポのままにしておき、Sc2に進む。
【0040】
Sc2ではトリガーによってコントロールする自動演奏トラックが演奏者によって選択された時、選択された自動演奏トラックを識別するデータをRAM6に記憶する。この実施例では、演奏者は、ピアノ、ベース、ドラム、トランペットのなかから選択する。ここでは、ピアノをトリガー駆動トラックとして選択したとして説明を進める。その結果、他のベース、ドラム、トランペットのパートはノーマルトラックとなる。
【0041】
演奏者が、図示しないパネル9上の自動演奏スタートスイッチを押すと、自動演奏スタートイベントがあったとみなされるので、Sc3の判断が「yes」となり、タイマ割込を許可し(Sc4)、自動演奏を開始していることを示す、スタートフラグSTARTを1にする(Sc5)。もし、演奏者が自動演奏スタートスイッチを押さない場合は、Sc3での判断が、「no」となるので、Sc4〜Sc5の処理を行わない。
【0042】
演奏者が、図示しないパネル9上の自動演奏ストップスイッチを押すと、ストップイベントがあったとみなされるので、Sc6の判断が「yes」となり、タイマ割込を禁止し(Sc7)、オールノートオフを音源回路7に指示して、自動演奏によって発音中の全ての楽音を強制的にキーオフし(Sc8)、STARTを0にする(Sc9)。演奏者が自動演奏ストップスイッチを押さない場合は、Sc6の判断が「no」となるので、Sc7〜Sc9の処理を行わない。その後メインルーチンにリターンする。
【0043】
このようにパネル処理では、演奏者がテンポ設定した場合のテンポ設定処理、トリガー駆動トラックの選択操作をした場合の処理、自動演奏のスタート/ストップの指示をしたときに、タイマ割込許可/禁止、STARTの設定が行われる。
【0044】
演奏者が、スタートスイッチを押すと、Sc4でタイマ割込が許可されるので、設定されているテンポに応じた時間間隔で割込信号INTが発生する。割り込み信号INTが発生すると、CPU3は、発生した時点で実行していた処理を中断し、図4に示す処理を行う。すなわちタイマインタラプトフラグTMIFを1に設定し(Sb1)、すぐに中断していた処理に戻る。この実施例では、タイマ割込の処理はフラグTMIFを1に設定するという最小のプログラムで終了している。これは、もしタイマ割込処理に時間がかかると、他の優先度の高い割込があった場合に、その処理を優先できないことがあるからである。このタイマ割込に関する具体的処理は、メインルーチンの自動演奏処理(Sa6)で行う。メインルーチンはSa2〜Sa7を高速で実行しているため、タイマ割込があってから、自動演奏処理(Sa6)を実行するまでの時間差は自動演奏のテンポ遅れとして認識できるほどはない。
【0045】
メインルーチンに戻って、Sa3でスタートフラグSTARTが1かどうか判断するが、演奏者がスタートスイッチを押した場合は、START=1なので、読出し許可処理(Sa4)、トリガー処理(Sa5)、自動演奏処理(Sa6)を行う。START=0のときは、これらの処理(Sa4〜Sa6)を行わない。その後、本実施例に関係のない、その他の処理(Sa7)を行い、パネル処理(Sa2)の処理に戻る。以後Sa2〜Sa7の処理を繰り返す。
【0046】
さて、第1の実施例では、演奏者によるトリガーを受け付ける期間と、受け付けない期間を自動演奏の進行に応じて設定する。演奏者が、トリガーを受け付ける期間内で自動演奏が進行しているときに、トリガーをかけると、それに対応して、トリガー駆動トラックとして選択したトラックの1小節分の自動演奏データが読み出され、演奏されるが、トリガーを受け付けない期間では、トリガーをかけても無視される。
【0047】
図12を参照して説明すると、トリガーの受け付け期間は、ノーマルトラックの進行とともに設定され、小節線をはさむS1〜S2の間をノーマルトラックが演奏しているときが、受け付け期間になる。S2を越えて次のS1まではトリガーを受け付けない期間である。ノーマルトラックのある時点での進行位置は、レジスタNTCT(ノーマルトラックカウンタ)の数値で表す。
【0048】
NTCT=0のときは、ちょうど小節線の位置がノーマルトラックの進行位置である。NTCTはタイマ割込があるたびに、1インクリメントされる(図10のSg1)。時間が経過して、次の小節線に達すると0になる。この実施例では4分音符=96クロックであるので、1小節の大きさは4拍子の場合、384クロックである(1クロックはタイマ割込があってから次のタイマ割込までの周期を表す)。
【0049】
S1とS2の位置はデフォルトではあらかじめ決められた設定値になっているが、パネル操作子9(図1参照)によって、演奏者が変更するようにしてもよい。S1は小節線から左方向のクロック数、S2は同じ小節線の右方向のクロック数に対応する進行位置で定義される。
【0050】
S1は自動演奏が演奏している時点の小節サイズに左右されるので、小節サイズが変動するような曲であると、S1の位置も変動する。小節サイズは図19に示すように、ROM5に小節サイズテーブルとして記憶されているので、これを読み出してS1の位置を決定する。例えば、小節線から左に48クロックの位置にS1があるとすると、小節サイズが383の場合は、383―48=335がS1の位置である。また小節サイズが191のときは、191―48=143がS1の位置である。またS2の位置は小節サイズに左右されず、小節線から右に96クロックとすると、S2の位置も96である。
【0051】
CPU3がメインルーチン中の読出し許可処理(Sa4)を実行するときは、図6に示すサブルーチンを呼び出し、実行する。このサブルーチンは、ノーマルトラックによる自動演奏がトリガーを受け付ける期間に達したとき、トリガー駆動トラックの自動演奏データの読出しを許可することを示す読出し許可フラグREFを1にし、受け付け期間を過ぎるとREFを0にする。またトリガーが、トリガー受け付け期間内に発生しなかったとき、トリガー駆動トラックの読出し開始のアドレス(ポインタ)を移動させる処理を行う。
【0052】
Sd1でノーマルトラックカウンタNTCTがS1〜S2のトリガー受け付け期間内であるか判断し、期間内である時は(「yes」と判断される)、REFが0のときは1にし、すでに1のときはそのままにする(Sd2、Sd3)。一方、トリガー受け付け期間を過ぎた時は(Sd1で「no」と判断されたとき)、REFが0以外のときは0にするとともに、トリガー駆動トラックの読出し準備が完了したことを示す、読出し準備完了フラグRYFも0に設定し、REFがすでに0のときはそのままにする(Sd7、Sd8)。その後、メインルーチンに戻る。
【0053】
トリガーの発生によってトリガー駆動トラックが演奏中であることを示す実行フラグEXEFが1であるときは(Sd4で「yes」)、メインルーチンに戻る。Sd4で「no」と判断されたときは、Sd5でRYFが0かどうか判断する。RYFが1のときは(Sd5で「no」)、読出しの準備が完了しているので、メインルーチンに戻る。RYFが0のときは(Sd5で「yes」)、トリガー駆動トラックの読出しの準備が完了していないので、ポインタ移動処理(Sd9)を行う。ポインタ移動処理を行うことによって読出し準備が完了するので、前もってRYFを1にしておく(Sd6)。Sd6はSd9の後で実行してもよい。
【0054】
ポインタ移動処理(Sd9)はトリガーが受け付け期間中にトリガーが無かったとき、次のトリガー受け付け期間に入ってトリガーを受けたときに、読み出される自動演奏データが古く無いように、常にノーマルトラックの進行位置に応じた自動演奏データが読み出されるように、ポインタ(アドレス)を次の小節の先頭に移動させる処理である。CPU3がこの処理を行うときは、図8に示すサブルーチンを実行する。
【0055】
ここで、小節の先頭の概念が難しいので、詳細に説明する。もし、あらたな小節の始まり(小節線のある位置)が、イベントデータであるならば、そのイベントデータが格納されているアドレスが小節の開始位置となるが、演奏者が演奏した演奏データを記憶した自動演奏データは多くの場合、小節線の位置にイベントデータはなく、ずれている。したがって小節線はあるイベントデータとあるイベントデータの間にあると考えられるので、正確な小節の先頭位置を求めるため、その小節線から最初のイベントデータまでのデュレーションを算出する処理を行う。そして、トリガーが発生して、その小節の再生を開始するときは、算出されたデュレーションデータを減算することから始まる。
【0056】
図8にて、Si1はトリガーに応じてトリガー駆動演奏が行われた時間を計測するトリガー駆動トラックカウンタTTCTとトリガー駆動トラックの各デュレーションデータDDがセットされ、トリガー駆動演奏の進行とともにその数値DTtが低減される(図11のSh4参照)。デュレーションレジスタDTtに格納された値DTtの和が、現在演奏中のトリガー駆動トラックの小節サイズMStより小さいかを比較する。和が小さいときは、次の小節線までに、何らかのイベントデータがあるので、Si2〜Si8の処理を行う。
【0057】
すなわち、TTCTにDTtを加算して、カウンタ値を進め(Si2)、さらにポインタPTtを1進めて(Si3)、自動演奏データを読み(Si4)、そのデータがイベントデータのときは(Si5で「no」)、キーオン以外のイベントデータを対応処理し(Si7、Si8)、Si3に戻る。イベントデータがキーオンの場合はキーオン処理せず、Si3に戻る。この処理はキーオンを処理しないことによって、発音させず、キーオフやプログラムチェンジなど、キーオン以外のイベントは処理することによって、楽音の鳴りっぱなしを防止し、音色などの変更を行うことによって、トリガーによる次の小節の演奏が始まっても、本来の演奏と異なる状態になることを防ぐものである。
【0058】
Si4にて読み出したデータがデュレーションデータならば(Si5で「yes」)、レジスタDTtに格納し(Si6)、Si1に戻り、判断が「no」になるまでSi2〜Si8の動作を繰り返す。これによって、まだ実行していない現在の小節のイベントデータをキーオンを除いて、迅速に実行する事ができる。なお、場合によってはキーオンも処理した方がよい場合があるので、キーオンも処理するようにしてもよい。
【0059】
Si1にて、TTCTとDTtの和がMSt以上のときは、デュレーションレジスタDTtに格納されているデュレーションデータが小節線をまたいでいることになるので、その和からMStを減算すると、小節線から次のイベントデータまでのデュレーションが求められることになる。ここで求められたデュレーションデータはDTtに格納される(Si9)。
【0060】
この時点で次の小節の先頭から自動演奏データを読出す準備ができたので、トリガー駆動トラックの小節番号を表すレジスタTTMNを1進め(Si10)、トリガー駆動トラックカウンタTTCTを0にし(Si11)、次の小節のサイズを図19に示す、小節サイズテーブルから、TTMNを参照して読み、MStレジスタに格納する(Si12)。その後、読出し許可処理(図6)にもどり、さらにメインルーチンにもどる。
【0061】
CPU3がメインルーチン中のトリガー処理(Sa5)を実行するときは、図7に示す、サブルーチンを呼び出し、実行する。
読出し許可フラグREFが1の状態で、演奏者がトリガー発生器1にてトリガーを発生させると、Se1、Se2にて判断が「yes」となり、REFを2にする(Se3)。REFを2に設定するのは、同じトリガー受け付け期間でトリガーが2回以上発生しても、2回目からは、Se2で「no」となるので、Se3〜Se13の処理は行われない。トリガーイベント(トリガーの発生)がない場合(Se1で「no」)や、読出し許可フラグREFが1以外のとき(Se2で「no」)はすぐにメインルーチンに戻る。
【0062】
Se4での判断が「no」のときは、Se5にてEXEFを1にし、読出し準備完了フラグRYFを0にする(Se6)。RYFを0にするのは、トリガーによってトリガー駆動トラックの読出しを開始することで、読出し準備の完了状態が解除されるからである。
【0063】
Se4での判断が「yes」のときは、ポインタ移動処理(Se13)を実行する。この処理が行われるときは、トリガー駆動トラックの前の小節の自動演奏が終了していないうちに、読出し許可期間となり、トリガーが発生した場合である。具体的には演奏者のトリガーをかけるタイミングが小節線よりも前、すなわち早すぎた場合や、前の小節のトリガータイミングが遅すぎた場合であり、自動演奏が一部オーバーラップしてしまう場合である。この場合は、トリガーをかけたタイミングでトリガー駆動トラックだけは次の小節の演奏を開始しなければならないので、現在の小節の演奏を中止し、速やかにトリガー駆動トラックのポインタPTtを次の小節の先頭に移動するという処理を行う。この処理は図8のサブルーチンを呼び出すが、詳細説明はすでに述べているので省略する。
【0064】
その後、Se7に進むが、ポインタ移動処理(Se13)でポインタPTtを移動させた結果、新たな小節の先頭がイベントデータの場合は、DTtが0になっているので、Se8〜Se12の処理を行う。また、デュレーションデータが小節線をまたいでいる場合は、DTt>0なので、メインルーチンに戻る。
【0065】
Se7〜Se12の処理は、トリガー駆動トラックのデュレーションレジスタDTtが0のときに(Se7で「yes」)、ポインタPTtを1進めて(Se8)、PTtをアドレスとしてトリガー駆動トラックの自動演奏データを読み(Se9)、そのデータがイベントデータの場合には(Se10で「no」)、そのイベントに対応する処理を行い(Se11)、Se8に戻る。Se8〜Se11の処理は、Se9で読み込まれたデータがデュレーションデータだと判断されるまでつづけられ、デュレーションデータと判断されたときは(Se10で「yes])、DTtにそのデュレーションデータを格納し(Se12)、メインルーチンに戻る。
【0066】
このようにトリガー処理(図7)は、トリガーが発生した場合のトリガー駆動トラックの自動演奏処理であり、1つのトリガー受け付け期間のうちの1つのトリガーに対してだけ実行されるプログラムである。
【0067】
CPU3がメインルーチン中の自動演奏処理(Sa6)を実行するときは、図9に示すサブルーチンを呼び出し、実行する。Sf1では、タイマインタラプトフラグTMIFをみて、1のときは(「yes」)、タイマインタラプトがあったことを意味するので、Sf2〜Sf4の処理を行うが、0のときは(「no」)、その処理のタイミングでないので、メインルーチンにもどる。Sf2では、TMIFを0にして次のタイマ割込まで、Sf3、Sf4の処理を行えないようにする。
【0068】
Sf3のノーマルトラック処理は、図10に示すようなサブルーチンになっていて、ノーマルトラックの自動演奏処理を行う。Sg1ではノーマルトラックカウンタNTCTを1進めて、その結果、小節の終わりに来たかどうか判断する(Sg2)。これは、現在演奏中の小節のサイズMSと比較する事で行われる。NTCTがMSに等しいときは(Sg2で「yes」)、ノーマルトラックの演奏進行位置が小節の終わりに達したことになるので、ノーマルトラック小節番号NTMNを1進め(Sg3)、NTCTを0にし(Sg4)、新たなNTMNに基づいて、図19に示す小節サイズテーブルから小節サイズを読出し、MSレジスタに格納する(Sg5)。Sg2にて、まだ小節の終わりに達していないと判断されたときは(「no」)、Sg3〜Sg5の処理をスキップしてSg6に進む。
【0069】
Sg6〜Sg12の処理は複数あるノーマルトラックの処理をトラック毎に個別に行う。これらの処理において使用される、デュレーションデータレジスタDTn、ポインタPTnのnは処理するトラック番号を表している。この実施例では、ピアノ、ベース、ドラム、トランペットの4つのトラックがあり、順番にトラック番号をつけられているとする。いま、ピアノはトリガー駆動トラックとして選択されているので、ノーマルトラックであるベース、ドラム、トランペットの処理を行う。
【0070】
すなわち、Sg6〜Sg12では複数あるノーマルトラックのうち一つのトラックの自動演奏処理を行い、未処理のノーマルトラックがある場合は(Sg13)、次に処理するトラック番号nを入れて(Sg14)、Sg6に戻り、トラック毎に自動演奏処理を行う。ここでは、ノーマルトラックのベース、ドラム、トランペットのトラック番号nを2、3、4として処理する。
【0071】
Sg6〜Sg12の処理自体は、図7のSe7〜Se12と全く同じであるので説明を省略する。トランペットのパートが終わると処理すべきノーマルトラックはもうないので、図9の自動演奏処理に戻る(Sg13)。
【0072】
トリガー駆動トラック処理Sf4を実行するときは、図11に示すサブルーチンを実行する。この処理は、トリガーによるトリガー駆動トラックの自動演奏処理を行うプログラムである。
【0073】
演奏者が、読出し許可期間中(REF=1のとき)に、トリガー発生器1にてトリガーを発生させると、実行フラグEXEFは1になるので(図7のSe5)、Sh1での判断は「yes」となって、トリガー駆動トラックカウンタTTCTを1進めて(Sh2)、トリガー駆動トラックが実行中の小節における小節サイズMStと比較する(Sh3)。トリガー駆動トラックの演奏進行位置が小節の最後でないときは(Sh3で「no」)、Sh4でデュレーションレジスタDTtの数値を1デクリメントし、次に、Sh5〜Sh10にてトリガー駆動トラックの自動演奏処理を行う。処理の内容自体は図7のSe7〜Se12と全く同じであるので説明を省略する。Sh4〜Sh10の処理が終了すると、自動演奏処理(図9)に戻り、さらにメインルーチン(図3)に戻る。
【0074】
実行フラグEXEFが1でないときは(Sh1で[no」)、自動演奏処理(図9)に戻り、さらにメインルーチン(図3)に戻る。
【0075】
また、Sh3でトリガー駆動トラックの自動演奏位置が小節の最後であると判断されたときは(Sh3で「yes」)、トリガー駆動トラックの小節番号TTMNを1進め(Sh11)、TTCTを0にし(Sh12)、新たなTTMNに基づいて、小節サイズテーブル(図19)から小節サイズを読出し、MStレジスタに格納する(Sh13)。
【0076】
トリガー駆動トラックの演奏位置が小節の最後に達したときは、トリガー駆動トラックの自動演奏を止めるため、実行フラグEXEFを0にする(Sh14)。また小節の最後まで演奏位置が進んだということは、次の小節の読出しの準備が完了していることになるので、読出し準備完了フラグRYFを1にする(Sh15)。その後、自動演奏処理(図9)に戻り、さらにメインルーチン(図3)に戻る。
【0077】
トリガー駆動トラックの自動演奏処理自体(Sh4〜Sh10)はノーマルトラックのそれと何ら変わるところはない。割込信号INTは1つしかないので、必然的にテンポも同一である。ただし、トリガー駆動トラックの自動演奏は開始するタイミングが小節ごとに異なるので、本来の自動演奏(トリガー駆動トラックをノーマルトラックとして処理した場合)に比べて、小節単位で前にずれたり、後ろにずれたりするのである。これが演奏者がトリガー駆動トラックを制御していると感じるところであり、演奏に参加していると実感するところである。
【0078】
次に、図13〜図19に基づいて第2実施例の説明をする。なお説明を簡潔にするため第1の実施例と共通の部分は説明を省略し、異なる部分を詳細に説明する。
【0079】
この発明による第2実施例は、トリガーの発生によって単音楽器のパートの演奏を行う。第1実施例と第2実施例との相違は、第1実施例では演奏曲を一定期間(1小節)に区切ってトリガーを受け付けていたのに対し、第2実施例ではトリガーを受け付ける毎に1つの音符を再生する、という点である。
【0080】
具体的にはこの第2実施例では、トリガー駆動トラックからキーオンデータが検索されてイベントバッファに記憶される。トリガーが発生すると、このイベントバッファからキーオンデータが読み出されて発音が行われる。トリガー駆動トラックから音符を探す検索ポインタは、ノーマルトラックにおける読出しポインタに比べて所定時間(実施例では先行クロックサイズに対応する時間)だけ先行させておくことによって、トリガーのタイミングが本来の演奏すべき音符のタイミングよりも早くても、再生できるようにした。
【0081】
イベントバッファはトリガーの発生の有無にかかわらず、検索ポインタがキーオンデータをサーチした場合に書き換えられる。トリガーの受け付ける期間は、時間的には発音すべき音符の有する長さと等しいが、タイミング的には検索ポインタを先行させる所定時間だけ発音すべき音符よりずれている。
【0082】
この第2実施例は、単音楽器のパートをトリガーによって演奏する場合に適している。第1の実施例は、小節線付近でのトリガー発生によって、その小節の自動演奏を行うものであったが、この第2の実施例は、発音タイミング付近でのトリガー発生によって、そのタイミングで発生すべき音(単音)を発生するものである。
【0083】
第2の実施例に関する自動演奏装置のハード的な構成は図1に示す、第1の実施例と同一であるので説明を省略する。
【0084】
次に、この実施例の動作について図13〜図17を参照して説明する。
図13はメインルーチンであり、演奏者によって電源が投入されると、RAM6内の各種レジスタやフラグに初期設定値が書き込まれる等の初期設定処理(Sm1)が行なわれる。特に、フラグSTEを0、レジスタOFCTを0に設定し、レジスタDTk、DTtに1が設定される。
【0085】
次に、Sm2のパネル処理を行う。このパネル処理は図5に示すサブルーチンを読出す。このサブルーチンは第1の実施例と共通なので、説明を省略する。第2の実施例は単音楽器の自動演奏をトリガー駆動する場合に適しているので、Sc2(図5)のトリガートラック選択では、第1の実施例ではピアノを選択したが、ここでは、ベースまたはトランペットを選択するのがよい。
【0086】
Sm3では、スタートフラグSTARTが1かどうか判断する。CPU3はSTARTが1のときはSm4の自動演奏処理、Sm5のトリガー処理を行い、STARTが1でないときはSm4、Sm5の処理を行わない。
その後、その他の処理(Sm6)を行い、Sm2にもどる。以後、Sm2〜Sm6の処理を繰り返し行う。
【0087】
演奏者が自動演奏スタートスイッチを押すと、タイマ割込が許可されるので(図5のSc4)、設定されているテンポに応じた時間間隔で割込信号INTが発生する。割り込み信号INTが発生すると、CPU3は、発生した時点で実行していた処理を中断し、図14に示す処理を行う。
【0088】
すなわちタイマインタラプトフラグTMIFを1に設定し(Sn1)、スタート許可フラグSTEが0かどうか判断する(Sn2)。STEが0のときは、自動演奏は行われず、1になったことを確認して、自動演奏が行われる。STEが0である期間は、自動演奏スタートスイッチが押されてから、タイマ割込がある毎にカウントするカウンタ値が、あらかじめ設定されている先行クロックサイズに等しくなるまでの期間に一致する。タイマ割込の間隔は、テンポ設定値によって変化するので、STEが0である期間も変化する。STEは自動演奏がストップしているときは0でなくてはいけないので、初期設定(Sm1)や、自動演奏ストップスイッチが押されたときに、0に設定される。従って、自動演奏スタートスイッチが押された直後はSTEは0のままである。
【0089】
STEが0のときは(Sn2で「yes」)、レジスタOFCTを1進め(Sn3)、先行クロックサイズに等しくなったとき(Sn4で「yes」)、STEを1にする(Sn5)。Sn2でSTEが1のとき(判断が「no」)、Sn4でOFCTが先行クロックサイズに達していないとき(判断が「no」)、Sn5の処理が終了したときは、タイマ割込が起こった時点の処理にもどる。レジスタOFTCは初期設定(Sm1)のときの他、自動演奏ストップスイッチが押されたときも0にリセットされる。
【0090】
なお先行クロックサイズは、トリガー駆動トラックに記憶されている自動演奏データ内の最小の音符の半分のサイズ以下に設定されることが望ましい。もし先行クロックサイズが大きい場合は、最適な位置でトリガーが発生しても、イベントバッファがすでに書き変わっていて本来の自動演奏ができないこともあり得る。また、演奏者が上達するにつれて先行クロックサイズを変更して、条件を厳しくすることもできる。
【0091】
メインルーチン(図13)の自動演奏処理(Sm4)をCPU3が実行するときは、図15に示すサブルーチンを実行する。この処理はトリガー駆動トラックのキーオンデータを検索してイベントバッファに格納する処理と、ノーマルトラック処理、トリガートラックのキーオン処理を除いた処理を行うプログラムである。
【0092】
Sp1ではタイマ割込があったことを示すタイマインタラプトフラグTMIFが1かどうか判断し、1でないときはすぐにメインルーチンにもどる(Sp1で「no」)が、1のときは(Sp1で「yes」)Sp2〜Sp14の処理を行う。すなわち、TMIFを0に設定し(Sp2)、キーオンデータ検索用のデュレーションレジスタDTkを1減じて(SP3)、0になったかどうか判断する(Sp4)。この判断が「yes」となったときには、キーオンデータ検索用のポインタPTkを1進め(Sp5)、PTkをアドレスとしてトリガー駆動トラックの自動演奏データを読み(Sp6)、そのデータがデュレーションデータかどうか判断し(Sp7)、判断が「yes」のときはデュレーションデータをキーオンデータ検索用のデュレーションレジスタDTkに格納し(Sp11)、Sp12に進む。
【0093】
Sp7にて判断が「no」の場合、そのデータがキーオンデータかどうか判断し(Sp8)、キーオンデータの場合はRAM6に設定されているイベントバッファに記憶し(Sp9)、イベントバッファからの読出しを許可するフラグREを1に設定する(Sp10)。その後、Sp5にもどる。Sp8にて、読み出されたデータがキーオンデータでないと判断されたときは(「no」)、Sp5にもどる。Sp4にて、DTkが0でないと判断したときは(「no」)、Sp12に進む。Sp12ではSTEが1かどうか判断し、1のときは(「yes」)、ノーマルトラック処理(Sp13)、トリガートラック処理(Sp14)を行って、メインルーチンに戻る。
【0094】
Sp12でSTEが1でないときは、Sp13、Sp14の処理を行わず、メインルーチンに戻る。したがってSTE=0のあいだは、通常のノーマルトラックの自動演奏は行われず、Sp5〜Sp11の処理によって、トリガー駆動トラックのキーオンデータ検索が先行して行われる。
【0095】
なお、ノーマルトラック処理(Sp13)については、第1の実施例(図10)と同様であるので説明を省略する。トリガートラック処理(Sp14)を実行するときには、図16に示すサブルーチンを実行する。この処理はキーオンデータを処理しないということを除いては、ノーマルトラックの処理と同じである。すなわち、キーオンを除いた、キーオフ、プログラムチェンジ、コントロールチェンジなどのデータは、本来の自動演奏(トリガー駆動トラックをノーマルトラックとして自動演奏した場合)で処理するタイミングと同じである。
【0096】
Sq1では、トリガー駆動トラックのデュレーションレジスタDTtを1減じて、0になったかどうか判断し(Sq2)、0の場合は(「yes」)、Sq3〜Sq8の処理を行い、0でない場合は(「no」)、これらの処理を行わず、リターンする。
【0097】
Sq3ではトリガー駆動トラックの自動演奏データ読出しのためのポインタPTtを1進め、PTtをアドレスとしてトリガー駆動トラックの自動演奏データを読み(Sq4)、そのデータがデュレーションデータの場合は(Sq5で「yes」)、DTtにそのデュレーションデータを格納し(Sq8)、リターンする。またSq5で「no」と判断されたときは、読み込まれたデータがキーオン以外のイベントデータの場合は(Sq6で「yes」)、そのイベントデータに対応する処理を行い(Sq7)、Sq3にもどる。Sq6での判断が「no」のときは、読み込まれたデータはキーオンデータなので、対応する処理を行わず、Sq3にもどる。
【0098】
メインルーチンのトリガー処理(Sm5)を行うときは、図17に示すサブルーチンを実行する。この処理にて、演奏者によって発生されたトリガーに応じて、イベントバッファに格納されているキーオンデータを読出し、キーオン処理する。
【0099】
演奏者によってトリガーが発生されると、Sr1の判断が「yes」となり、Sr2にてフラグREが1かどうか判断する。トリガーが発生しないとき(Sr1で「no」)やREが1でないとき(Sr2で「no」)はメインルーチンに戻る。Sr2でREが1と判断されるときは(「yes」)、イベントバッファにキーオンデータが格納されていることをしめしているので、Sr3にてそのデータを読出し、トリガーの発生とともに発生するタッチ情報にて、キーオンデータに含まれているタッチデータを変更し(Sr4)、それらのデータを用いてキーオン処理(Sr5)を行い、音源回路7に発音指示する。
【0100】
その後、Sr6にてREを1にして、あらたなキーオンデータがイベントバッファに格納されるまで、Sr3〜Sr5の処理を行わないようにして、メインルーチンに戻る。Sr6の処理はトリガー発生器1でチャタリングや、演奏者が誤って、短い時間内に何回かトリガーを発生したばあいでも、同じキーオンデータを読出すことを防ぐ。
【0101】
第2の実施例によれば、キーオンデータのみ先行して検索し、イベントバッファを書き換えていくので、演奏者がトリガーを発生を中断し、途中から再開した場合でも、ノーマルトラックの進行位置に応じたキーオンデータがイベントバッファから読み出されるので、いつでも最適な合奏を楽しむことができる。またキーオン以外のイベントデータは、ノーマルトラックと同様に処理されるので、トリガーの発生の有無に関わらず、キーオフ、音色変更等が行われるので、音が消音されなかったり、音色が変更されない等の不都合を回避することができる。
【0102】
次に第3の実施例について、説明する。第3の実施例は、トリガーの発生によって自動演奏を行う自動演奏データを複数のフレーズに分けて、1回のトリガーの発生について1つのフレーズを再生するようにする。第1、第2の実施例では、トリガー駆動トラックはノーマルトラックと同じものを利用したが、第3の実施例ではトリガー駆動専用のトラックを持っている。トリガー駆動専用トラックのデータフォーマットは図20に示すように、フレーズ番号データPh1、デュレーションデータD1、読出し禁止データNR、デュレーションデータD2、フレーズ番号データPh2・・・というデータのならびになっている。
【0103】
この実施例では、フレーズ番号データが読み出されてから、読出し禁止データNRが読み出されるまでのデュレーションデータに対応する期間がトリガー受け付け期間に相当し、読出し禁止データNRが読み出されてから、次のフレーズ番号データが読み出されるまでのデュレーションデータに対応する期間がトリガー受け付け禁止期間である。
【0104】
具体的には、図21に示すように、自動演奏がスタートしてから最初のデュレーションデータD1に相当する期間がトリガー受け付け期間に相当し、この期間内に、演奏者によってトリガーが発生すると、フレーズ1(Ph1)の自動演奏データの読出しを開始するように指示される。
図21のデュレーションデータD2の期間はトリガー受け付け禁止期間であり、ノーマルトラックの自動演奏位置が、この期間内にあるときは、トリガーは受け付けられない。この期間中イベントバッファにはNRというデータが格納されている。
【0105】
次に、デュレーションデータD3の期間に入り、この期間中にトリガーが発生するとフレーズ2(Ph2)の自動演奏の開始が指示される。このように、自動演奏のスタートが指示されてから交互にトリガーの受け付け期間と受け付け禁止期間がデュレーションデータD1、D2、D3、D4の時間間隔で繰り返される。
【0106】
各フレーズの自動演奏データは、ノーマルトラックの自動演奏データを複数に分割したものと考えてよく、図22に示すように、ROM5に記憶されている。それぞれのフレーズは区切りのよいところで分割されているため、各フレーズの演奏時間は同一でなくてよい。フレーズの自動演奏処理自体はノーマルトラックにおける自動演奏処理と同じである。フレーズの自動演奏は、そのフレーズの最後を表すEOFデータを読み込んだところで停止する。
【0107】
第3の実施例の動作をフローチャートにて説明する。なお、メインルーチンは第2の実施例の図13と共用する。またタイマ割込処理は第1の実施例の図4と共用し、説明は省略する。すなわちメインルーチンの自動演奏処理(Sm4)、トリガー処理(Sm5)のみ第1、第2の実施例と異なるので、図23〜図26を用いて説明する。
【0108】
メインルーチンの自動演奏処理(Sm4)を実行するときは、図23のサブルーチンを呼び出す。このサブルーチンではノーマルトラック処理、フレーズ番号データやNRデータをイベントバッファに格納する処理やフレーズ自動演奏処理を行う。
【0109】
Ss1でTMIFが1かどうか判断し、「yes」と判断されたときは、TMIFを0に設定し(Ss2)、ノーマルトラック処理(Ss3)を行う。ノーマルトラック処理はトリガーで制御しないトラックの自動演奏を行う。トリガー駆動専用トラック処理(Ss4)を実行するときは、図24に示すサブルーチンを実行する。このサブルーチンはトリガー受け付け期間になったときにフレーズ番号データをイベントバッファに格納する処理や、トリガー受け付け禁止期間になったときにNRデータをイベントバッファに格納するなどの処理を行う。またトリガーの受け付けや禁止期間になったことを演奏者に伝えるために表示処理等を行う。
【0110】
St1では、デュレーションデータDTtを1減算し、St2で0になったかどうか判断し、判断が「yes」のときは、St3にてポインタPTtを1進め、PTtをアドレスとしてデータを読む(St4)。そのデータがNRかどうか判断し(St5)、判断が「yes」のときは、St10に進む。St10では、イベントバッファにフレーズ番号データが格納されているときは、対応するフレーズの自動演奏データのうち、キーオン、キーオフ、デュレーションデータを無視して実行し、音色変更などの指示だけを実行する。その後、NRをイベントバッファに格納し(St11)、トリガー受け付け禁止になったことを識別する表示を行う(St12)。その後、自動演奏処理ルーチン(図23)に戻る。
St2での判断が「no」の場合は、リターンする。
【0111】
St5で、St4で読んだデータがNRでないと判断されたときは、St6にて、さらにフレーズ番号データかどうか判断される。そのデータがフレーズ番号データの場合には、「yes」となるので、St7にて、そのフレーズ番号データをイベントバッファに格納する。そして、トリガー受け付け期間を表す表示をディスプレイに指示する(St8)。その後、リターンする。
【0112】
St7の判断が「no」となったときには、そのデータはデュレーションデータなので、レジスタDTtにそのデュレーション値を格納する(St9)。その後、リターンする。
【0113】
自動演奏処理(図23)のフレーズ自動演奏処理(Ss5)を実行するときは、図25に示すサブルーチンを実行する。このサブルーチンはフレーズの自動演奏処理を行うもので、処理自体はノーマルトラックの自動演奏処理と変わらない。Su1では、トリガーによってフレーズの再生が行われているかどうかを示すフラグPEFが1かどうか判断し、1でないときは、すぐに自動演奏処理(図23)にもどる。また1のときは、デュレーションレジスタDTpを1減じて(Su2)、0になったかどうか判断し(Su3)、0でないときは、リターンし、0のときは、ポインタPTpを1進めて(Su4)、そのPTpをアドレスとしてデータを読む(Su5)。
【0114】
Su6ではそのデータがイベントデータ、デュレーションデータ、ファイルエンドを示すEOFデータかどうか判断し、その結果によって処理を振り分ける。そのデータがイベントデータの場合は、そのイベントデータに対応した処理を行い(Su7)、Su4に戻る。そのデータがデュレーションデータの場合は、DTpにそのデュレーションデータを格納し(Su8)、リターンする。また、そのデータがEOFの場合は、フラグPEFを0にして(Su9)、リターンする。
【0115】
メインルーチン(図13)にて、トリガー処理(Sm5)を実行するときは、図26に示す、サブルーチンを実行する。このサブルーチンはトリガーがあったときに、イベントバッファからフレーズ番号データを読出し、そのフレーズに対応するアドレスを設定する処理等を行う。
【0116】
Sv1では、トリガーが発生したかどうか判断し、「no」のときは、メインルーチンにリターンする。判断が「yes」の場合は、イベントバッファからデータを読出し(Sv2)、そのデータがフレーズ番号データかどうか判断する(Sv3)。判断が「no」の場合は、リターンする。判断が「yes」の場合は、フラグPEFが1かどうか判断し(Sv4)、「yes」のときは、フレーズの再生中にトリガーが発生したことになるので、現在実行中のフレーズをすぐに終了させるため、キーオン、デュレーションデータを無視して実行し(Sv6)、Sv7に進む。
【0117】
Sv4での判断が「no」のときはPEFを1にして(Sv5)、Sv7に進む。Sv7では、ポインタPTpをSv2で読み出した、フレーズ番号データに対応したフレーズの先頭アドレスに設定し、デュレーションレジスタDTpを初期値である1に設定する(SV8)。そして、NRをイベントバッファに格納し(Sv9)同じトリガー受け付け期間内に2回以上トリガーが発生した場合に、Sv4〜Sv9の処理が複数回行われることのないようにする。その後、メインルーチンに戻る。
【0118】
第3の実施例は、トリガー受け付け期間をあらかじめ決められているため、第1、第2の実施例に比べて処理が簡単になるという利点がある。
ディスプレイにトリガー受け付け期間を表示するので、演奏者は、トリガー受け付け期間に入ってからの大きな拍のタイミングでトリガーを発生させればよいので、演奏しやすくなる。
【0119】
上述した実施例は次のような変形が可能である。
各実施例では、複数の演奏パート(トラック)のうちの1つをトリガー駆動トラックとしたが、複数の演奏者が演奏できるように、複数のトリガー発生器を用意し、これに対応して複数のトリガー駆動トラックを駆動するようにすれば、合奏が楽しめる。
【0120】
また、各実施例にトリガーイベントの発生タイミングを記憶・再生する装置を付加することにより、自分の演奏が、ノーマルトラックの演奏ととどれだけズレていたかを聴感的に確認することができる。さらにディスプレイに楽譜を表示させ、そこにトリガーを発生させたタイミングを表示させるようにすれば、演奏者はトリガーを発生させたタイミングが本来のタイミングとどれだけズレているかを視覚的に確認できる。
【0121】
第3の実施例では、トリガーの受け付け期間だけを表示したが、さらにディスプレイに楽譜を表示させ、自動演奏の進行状況とあわせて、トリガーをかけるべきタイミングを表示するようにすれば、初心者でも簡単に演奏が可能となる。
【0122】
第3の実施例では、トリガー駆動専用トラックのデータをイベントバッファに記憶させるようにしたが、イベントバッファを備えず、トリガーの発生する毎に、トリガー駆動専用トラックのトリガーが発生した時点のアドレスのデータを読み、読み出されたデータによってフレーズ再生処理を行うようにしてもよい。
【0123】
第1の実施例ではトリガーをかけた場合の再生単位が小節単位だったが、1/2小節、1/3小節、あるいは2小節等の単位でもよい。またそれらを選択できるようにしてもよい。
【0124】
第2実施例ではキーオンデータのみをイベントバッファに格納したが、キーオンとキーオフ、そのデュレーションデータを一組としてイベントバッファに格納してもよい。
【0125】
第3の実施例では、トリガー専用トラックにフレーズ番号を記憶して、これをもとに演奏すべきフレーズのアドレスを求めていたが、これに限らず、演奏すべきフレーズのアドレスをそのまま記憶してもよい。
【0126】
【発明の効果】
この発明による自動演奏装置によれば、操作者の操作によりトリガー信号を発生するトリガー信号発生手段と、トリガー信号でコントロールするパートとトリガー信号でコントロールしないパートとを有する複数のパート分の自動演奏データを記憶する記憶手段と、トリガー信号でコントロールするパートの自動演奏データについて、トリガー信号が発生したときに所定の限られた自動演奏データ単位で読み出されるべき自動演奏データの読出し開始位置を楽曲の進行に従って移動させておく読出し開始位置移動手段とを設け、トリガー信号でコントロールしないパートについては、自動演奏手段により、楽曲の進行に従って順次自動演奏データを読み出して楽音を発生する。一方、トリガー信号でコントロールするパートについては、読出し制御手段により、トリガー信号が発生したことに基づいて、読出し開始位置移動手段で移動された読出し開始位置から所定の限られた自動演奏データを読み出すように制御し、トリガー信号でコントロールするパートの自動演奏データが読出し制御手段によって読み出されたときは、自動演奏手段により、当該自動演奏データによる楽音を発生する。また、ディスプレイには、自動演奏の進行状況と併せて、トリガーをかけるべきタイミングが表示される。従って、操作者は、トリガー信号でコントロールしないパートの演奏を聴きながら、初心者でも簡単に演奏を楽しむことができる。
【図面の簡単な説明】
【図1】本発明による第1〜第3実施例の構成を示すブロック図である。
【図2】(a)は、図1のトリガー発生器1の構成例を示すブロック図であり、(b)は、図1のトリガー発生器1の別の構成例を示すブロック図である。
【図3】第1実施例のメインルーチンを示すフローチャートである。
【図4】第1実施例のタイマ割込処理サブルーチンを示すフローチャートである。
【図5】第1実施例のパネル処理サブルーチンを示すフローチャートである。
【図6】第1実施例の読み出し許可処理サブルーチンを示すフローチャートである。
【図7】第1実施例のトリガー処理サブルーチンを示すフローチャートである。
【図8】第1実施例のポインタ移動処理サブルーチンを示すフローチャートである。
【図9】第1実施例の自動演奏処理サブルーチンを示すフローチャートである。
【図10】第1実施例のノーマルトラック処理サブルーチンを示すフローチャートである。
【図11】第1実施例のトリガー駆動トラック処理サブルーチンを示すフローチャートである。
【図12】第1実施例において設定されるトリガー受け付け期間を説明するためのタイムチャートである。
【図13】第2実施例及び第3実施例共通のメインルーチンを示すフローチャートである。
【図14】第2実施例におけるタイマ割込処理サブルーチンを示すフローチャートである。
【図15】第2実施例における自動演奏処理サブルーチンを示すフローチャートである。
【図16】第2実施例におけるトリガートラック処理サブルーチンを示すフローチャートである。
【図17】第2実施例におけるトリガー処理サブルーチンを示すフローチャートである。
【図18】第1及び第2実施例におけるROM5に記憶される演奏データの内容を示すメモリマップである。
【図19】第1及び第2実施例におけるROM5に記憶される小節番号とクロック数の関係を示す小節サイズテーブルである。
【図20】第3の実施例のトリガー駆動専用トラックのデータフォーマットを示す図である。
【図21】第3実施例におけるトリガー受け付け期間と受け付け禁止期間の交互の生起を示す図である。
【図22】第3実施例におけるトリガー駆動トラック用のフレーズデータのフォーマットを示す図である。
【図23】第3実施例の自動演奏処理サブルーチンを示すフローチャートである。
【図24】第3実施例のトリガー駆動専用トラック処理サブルーチンを示すフローチャートである。
【図25】第3実施例のフレーズ自動演奏処理サブルーチンを示すフローチャートである。
【図26】第3実施例のトリガー処理サブルーチンを示すフローチャートである。
【符号の説明】
1:トリガー発生器、2:トリガーI/F(インターフェース)、3:CPU(中央処理装置)、4:タイマ、5:ROM(読出専用メモリ)、6:RAM(ランダム−アクセス−メモリ)、7:音源回路、8:サウンドシステム、9:パネル操作子、10:パネルI/F(インターフェース)、11:ディスプレイ、12:ディスプレイI/F(インターフェース)、13:アドレス・データバス。
Claims (1)
- 操作者の操作によりトリガー信号を発生するトリガー信号発生手段と、
前記トリガー信号でコントロールするパートと前記トリガー信号でコントロールしないパートとを有する複数のパート分の自動演奏データを記憶する記憶手段と、
前記トリガー信号でコントロールするパートの自動演奏データについて、前記トリガー信号が発生したときに所定の限られた自動演奏データ単位で読み出されるべき自動演奏データの読出し開始位置を楽曲の進行に従って移動させておく読出し開始位置移動手段と、
前記トリガー信号が発生したことに基づいて、前記トリガー信号でコントロールするパートについて、前記読出し開始位置移動手段で移動された読出し開始位置から前記所定の限られた自動演奏データを読み出すように制御する読出し制御手段と、
前記トリガー信号でコントロールしないパートの自動演奏データを楽曲の進行に従って順次読み出して楽音を発生すると共に、前記読出し制御手段によって前記トリガー信号でコントロールするパートの自動演奏データが読み出されたときは当該自動演奏データによる楽音を発生する自動演奏手段と、
ディスプレイと
を備え、
前記ディスプレイには、自動演奏の進行状況と併せて、トリガーをかけるべきタイミングを表示するようにした
ことを特徴とする自動演奏装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001075139A JP3632606B2 (ja) | 2001-03-16 | 2001-03-16 | 自動演奏装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001075139A JP3632606B2 (ja) | 2001-03-16 | 2001-03-16 | 自動演奏装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP07402194A Division JP3528230B2 (ja) | 1994-03-18 | 1994-03-18 | 自動演奏装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001282238A JP2001282238A (ja) | 2001-10-12 |
JP3632606B2 true JP3632606B2 (ja) | 2005-03-23 |
Family
ID=18932260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001075139A Expired - Fee Related JP3632606B2 (ja) | 2001-03-16 | 2001-03-16 | 自動演奏装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3632606B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005304839A (ja) * | 2004-04-22 | 2005-11-04 | Samii Kk | 弾球遊技機 |
JP4692189B2 (ja) * | 2005-09-28 | 2011-06-01 | ヤマハ株式会社 | 合奏システム |
JP2010117419A (ja) * | 2008-11-11 | 2010-05-27 | Casio Computer Co Ltd | 電子楽器 |
JP6772640B2 (ja) * | 2016-08-03 | 2020-10-21 | ヤマハ株式会社 | フレーズを生成する装置および方法 |
-
2001
- 2001-03-16 JP JP2001075139A patent/JP3632606B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001282238A (ja) | 2001-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2927229B2 (ja) | メドレー演奏装置 | |
US5565640A (en) | Automatic performance device capable of starting an automatic performance in response to a trigger signal | |
JPH0944171A (ja) | カラオケ装置 | |
JP6402878B2 (ja) | 演奏装置、演奏方法およびプログラム | |
JP3237455B2 (ja) | 演奏指示装置 | |
JP3632606B2 (ja) | 自動演奏装置 | |
JP3528230B2 (ja) | 自動演奏装置 | |
US6376760B1 (en) | Parameter setting technique for use in music performance apparatus | |
JP4123583B2 (ja) | カラオケ装置 | |
JP2674452B2 (ja) | 楽曲再生装置 | |
JP3358568B2 (ja) | 演奏補助装置及びそのための記録媒体 | |
JP3811043B2 (ja) | 電子楽器 | |
JP2004101979A (ja) | 電子楽器 | |
JP3887957B2 (ja) | カラオケ装置 | |
JP3918308B2 (ja) | カラオケ装置 | |
JPH1057635A (ja) | 曲再生制御装置 | |
JP3931551B2 (ja) | 演奏装置および演奏方法 | |
JPH10143177A (ja) | カラオケ装置 | |
JP2018155792A (ja) | 電子管楽器、その電子管楽器の制御方法及びその電子管楽器用のプログラム | |
JP2586784B2 (ja) | 自動演奏制御装置 | |
JP3862988B2 (ja) | 電子楽器 | |
JP2848092B2 (ja) | 自動伴奏装置 | |
JP2000010572A (ja) | 歌声発生装置およびカラオケ装置 | |
JP2842440B2 (ja) | 自動伴奏装置 | |
JPH08185169A (ja) | 楽音発生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040608 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040728 |
|
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: 20041130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041213 |
|
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: 20090107 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100107 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120107 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |