JP4572980B2 - 自動演奏装置及びプログラム - Google Patents

自動演奏装置及びプログラム Download PDF

Info

Publication number
JP4572980B2
JP4572980B2 JP2008275958A JP2008275958A JP4572980B2 JP 4572980 B2 JP4572980 B2 JP 4572980B2 JP 2008275958 A JP2008275958 A JP 2008275958A JP 2008275958 A JP2008275958 A JP 2008275958A JP 4572980 B2 JP4572980 B2 JP 4572980B2
Authority
JP
Japan
Prior art keywords
tempo
performance
operator
sound
sound generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008275958A
Other languages
English (en)
Other versions
JP2009020539A (ja
Inventor
善樹 西谷
健二 石田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2008275958A priority Critical patent/JP4572980B2/ja
Publication of JP2009020539A publication Critical patent/JP2009020539A/ja
Application granted granted Critical
Publication of JP4572980B2 publication Critical patent/JP4572980B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、アンサンブル演奏を簡単に行うことができる自動演奏装置及びプログラムに関する。
近年、電子楽器分野においては、楽器を全く演奏したことがない楽器演奏初心者であっても簡単にアンサンブル演奏が楽しめるような演奏装置が種々開発されている。かかる演奏装置として、自動演奏データを用いた自動演奏の各楽器のパートを各操作子に割り当て、各操作子の操作状態(例えば、「振る」、「叩く」、「傾ける」等)を検出することにより、各楽器に対応したパート音の音量、音色や演奏テンポなどを独自に変化させることができるものが提案されている(例えば、特許文献1参照)。
各操作子を操作する操作者は、操作子を「振る」といった簡単な操作により、該操作子に割り当てられたパートの演奏を制御することができ、これにより楽器演奏初心者であってもアンサンブル演奏の充実感を味わうことができる。
特開平2001−350474号公報
しかしながら、上記演奏装置においては、各パート演奏が各操作者による操作によって独自に制御されるため、例えば各操作者が自身の曲想に従って操作子に割り当てられたパートの演奏テンポ(進行)を変えると、当然に各パート間での演奏進行のずれは大きくなる。この結果、各パート演奏がばらばらになり、統一感ある表現豊かなアンサンブル演奏ができないという問題があった。
本発明は、以上説明した事情を鑑みてなされたものであり、統一感ある表現豊かなアンサンブル演奏を可能とする自動演奏装置及びプログラムを提供することを目的とする。
上述した問題を解決するため、本発明に係る自動演奏装置は、楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、前記主となる操作子から操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、前記各チャネルの楽音の発音長を制御するためのテンポを記憶するテンポ記憶手段と、前記時間間隔算出手段が算出した時間間隔が所定時間未満である場合には、当該時間間隔、および前記主となる操作子に対応するチャネルについて前回発音処理された発音イベントの音符の長さに基づきテンポを算出し、前記テンポ記憶手段に記憶されたテンポを更新する一方、当該時間間隔が前記所定時間以上である場合には、前記テンポ記憶手段に記憶されたテンポを更新しないテンポ更新手段と、前記発音処理手段が処理をする発音イベントの発音長を、前記テンポ記憶手段に記憶されたテンポに対応した長さに制御する発音長制御手段とを具備し、前記発音処理手段は、前記従となる操作子からの操作信号が、所定時間以上出力されない場合には、当該操作子に対応するチャネルについては、次に当該操作子から操作信号が出力されるまでは、前記主となる操作子からの操作信号に応じて発音イベントを読み出して発音処理することを特徴とする。
ここで、上記構成にあっては、前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えないように前記発音処理手段による発音処理を制御する発音処理制御手段をさらに具備してもよい。
また、前記発音処理制御手段は、前記従となる操作子から操作信号が出力された場合、当該時点における前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置の直前まで達しているか否かを確認し、直前に達していない場合には、前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えない範囲で、前記操作信号に従って前記発音処理手段による発音処理を進めてもよい。
また、前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置よりも所定量以上遅れている場合、前記従となる操作子に対応する発音イベントの位置を前記主となる操作子に対応する発音イベントの位置までスキップさせる発音位置制御手段をさらに具備してもよい。
本発明によれば、統一感ある表現豊かなアンサンブル演奏が可能となる。
以下、本発明に係る実施の形態について説明する。かかる実施の形態は、本発明の一態様を示すものであり、本発明の技術的思想の範囲で任意に変更可能である。
A.本実施形態
<実施形態の構成>
図1は、本実施形態の構成を示す図である。同図において、操作子1−1,1−2,…,1−n(nは整数)は、図3に示すように操作者Aが手に持って自由に動かすことができる棒状の形状をしている。なお、操作子1−1〜1−nについて総称するときは、単に操作子1と記すことにする。
この操作子1には、その動きを検出するためのセンサが内蔵されている。本実施形態においては操作子1が振られていることを検出するための速度センサが内蔵されている。操作子1は振り下ろされた瞬間の速度センサの出力信号の変化に応じたピーク信号SP(すなわち、操作子1の操作状況に応じた操作信号)を出力するようになっている。なお、本実施形態においては、操作子1の振り下ろしが検出されればよいので、センサとしては他のもの(例えば加速度センサなど)を用いてもよい。また、操作子1は、各々自己を識別するための識別情報SIDを出力するようになっている。なお、各操作子1−1〜1−nの識別情報をSID(1−1)〜SID(1−n)と表記する。
操作子1は、ピーク信号SPと識別情報SIDを含んだセンサ情報SIを無線によって受信装置2に送信し、受信装置2はセンサ信号SIをパーソナルコンピュータ3に供給するようになっている。なお、本実施形態においては、Bluetooth(登録商標)による無線伝送方式が採用されるが、この伝送方式は任意である。
図2は、パーソナルコンピュータ3の構成を示すブロック図であり、受信装置2は、USB(Universal Serial Bus)インターフェイス(I/F)309に接続されている。そして、USBインターフェイス309を介してセンサ情報SIはCPU301に供給される。
同図において、CPU301は、RAM303の記憶領域をワークエリアとして利用し、ROM302に格納されている各種プログラムを実行することで装置各部を制御する。
ハードディスク装置(以下、HDDと記す)304には複数の演奏データが記憶されており、また、外部記憶装置310に挿入されるCD−ROMにも複数の演奏データが記録されている。本実施形態において用いる演奏データは、MIDI規格によるものであるが、演奏データは楽音を指定する楽音パラメータの集合となっている。
自動演奏が指示されたときは、指定された演奏データがHDD304またはCD−ROMより呼び出されて、RAM303の演奏データ格納領域に格納される。演奏データ格納領域に格納された演奏データの各楽音パラメータは、CPU301によって演奏の進行に沿って順次読み出されるようになっている。
表示部305は、CPU301の制御の下に各種情報を表示する。キーボード306およびポインティングデバイス307は、操作者の操作に従って各種の指示や情報を入力する。また、MIDIインターフェイス308は、パーソナルコンピュータ3と音源装置4との間でMIDI規格の楽音パラメータの送受信を行うためのインターフェイスである。
次に、図1に示す音源装置4はパーソナルコンピュータ3から出力されたMIDI規格の楽音パラメータを受信して、これに基づいて楽音信号を生成する。この楽音信号の生成においては、楽音パラメータデータが示す音高、音量、残響、ブライトネス、音像等に従って楽音信号が形成される。この楽音信号は、アンプ5へと供給され、アンプ5において楽音信号が増幅された後にスピーカ6にて放音される。
以上説明した受信装置2,パーソナルコンピュータ3,音源装置4,アンプ5,スピーカ6によって自動演奏装置100が構成されている。
(演奏データの内容)
ここで、HDD304またはCD−ROMに記憶されている演奏データの構造について説明する。
本実施形態においては、上述したようにMIDI規格による演奏データを用いて自動演奏を行う。演奏データを構成する楽音パラメータには、一つひとつの音符について音高、音長、ベロシティ(つよさ)などを示すもの、楽曲全体に影響を与えるもの(全体の音量、テンポ、残響や音像定位など)、あるいは特定のパートの全体に影響を与えるもの(パート別の残響や音像定位など)がある。
本実施形態においては、演奏の進行に応じて楽音パラメータを順次読み出して自動演奏処理を行うが、操作子1の操作に応じて楽曲の進行を制御するようになっている。
以下においては、本実施形態で用いる演奏データについて図4を参照して詳細に説明する。図4は行と列のマトリックスになっているので、まず、列について説明する。
第1列のデルタタイムは、イベントとイベントとの時間間隔を示しており、テンポクロックの数で表される。デルタタイムが「0」の場合は、直前のイベントと同時に実行される。
第2列には演奏データの各イベントが持つメッセージの内容が記述されている。このメッセージには、例えば発音イベントを示すノートオンメッセージ(NoteOn)や消音イベントを示すノートオフメッセージ(NoteOff)の他、音量やパンポット(音像定位)を指示するコントロールチェンジメッセージ(ControlChange)等が含まれる。
第3列にはチャネルの番号が記述されている。各チャネルは各々異なる演奏パートに対応し、複数のチャネルが同時に演奏されることにより、アンサンブル演奏がなされる。なお、メタイベントやシステムエクスクルーシブイベント等のチャネルに依存しないイベントデータについては、この第3列に値を持たない。
第4列には、ノートナンバ(NoteNum)、プログラムナンバ(ProgNum)あるいはコントロールナンバ(CtrlNum)が記述されるが、どれが記述されるかはメッセージの内容により異なる。例えばノートオンメッセージまたはノートオフメッセージであれば、ここには音階を表すノートナンバが記述され、またコントロールチェンジメッセージであればその種類(音量やパンポット等)を示すコントロールナンバが記述されている。
第5列にはMIDIメッセージの具体的な値(データ)が記述されている。例えばノートオンメッセージまたはノートオフメッセージであれば、ここには音の強さを表すベロシティの値が記述され、またコントロールチェンジメッセージであればコントロールナンバに応じたパラメータの値が記述されている。
次に、図4に示す各行について説明する。まず、第1行のヘッダー(Header)は時間単位を示している。「時間単位」とは分解能を示すものであり、4分音符あたりのテンポクロック数で表現される。図4においては「480」の値がセットされており、この場合は4分音符一つが480個分のテンポクロックの長さに対応することが指示されたことを意味している。
第2行のテンポ指令値(SetTempo)は、演奏の速さを指定し、4分音符の長さをマイクロ秒で表す。例えば、4分音符=120のテンポの場合、4分音符が1分間に120拍であるため、60(秒)/120(拍)×1000000=500000(マイクロ秒)の値が、テンポ指令値の値としてセットされる。自動演奏はテンポクロックに基づく速さで行われるが、テンポクロックの周期は、テンポ指令値と時間単位の値に応じて制御されるようになっている。したがって、テンポ指令値(SetTempo)が「500000」で時間単位が「480」の場合は、テンポクロックの周期は「1/960」となる。
第3行から第6行にはシステムエクスクルーシブメッセージが記述され、第7行から第11行にはプログラムチェンジメッセージとコントロールチェンジメッセージが記述されている。これらは、楽曲全体に影響を与える楽音パラメータであるが、本実施形態の動作には関係がないので、その説明は割愛する。
次に、第12行以降は、各チャネルの音符についての楽音パラメータとなっている。これらは発音を示すノートオンイベント(NoteOn)と消音を示すノートオフイベント(NoteOff)のメッセージで構成され、各イベントには音高を示すノートナンバ(NoteNum)と、音の強さを示すベロシティ(Velocity)が付加される。
ここで、図4に示す音符列がどのように演奏されるかを説明すると、まずチャネル「1」で「C4」、チャネル「2」で「E4」、チャネル「3」で「G4」、チャネル「4」で「B4」、チャネル「5」で「C3」が同時に発音される。それからデルタタイム「240」の後にチャネル「2」から「5」が一斉に消音する。このときチャネル「1」にはノートオフイベントが記述されていないので、チャネル「1」では引き続き「C4」の音が発音される。チャネル「2」から「5」においては、消音と同時に次の音が発音される。具体的にはチャネル「2」、「4」、「5」で「F4」、チャネル「3」で「A4」の音が発音される。
以上のような手順で各チャネルの発音と消音が繰り返され、演奏が進行する。
すなわち、MIDIデータを用いた一般的な自動演奏処理は、デルタタイムによって示される時間を待って次々とイベントを実行する、という処理を演奏が終了するまで繰り返す。ただし、本実施形態においては、デルタタイムに基づいた楽曲の進行の制御よりも、操作子1の操作に応じた楽曲の進行制御の方が優先される。その詳細については後述する。
(RAM303に設定されるテーブルの内容)
次に、RAM303に設定されるテーブルについて説明する。パーソナルコンピュータ3の電源投入時に起動されるROM302のプログラムに基づき、CPU301は、初期設定を行うが、このときRAM303の記憶領域にそれぞれ図5、図6に示されるようなテーブルを作成する。
図5に示すTB1はチャネル設定テーブルであり、操作子とチャネルの対応関係が設定されている。なお、この対応関係は、キーボード306やポインティングデバイス307を操作することによって自由に変更することができる。
図6に示すTB2は現在テンポテーブルであり、操作子1の操作(振り下ろしの間隔)に応じたテンポ値Tempo・Rが格納される。このテンポ値Tempo・Rは操作子1が振り下ろされる度に更新されるようになっている。なお、初期状態においては、演奏データに含まれているテンポ指令値(SetTempo)の値が書き込まれるようになっている。
<実施形態の動作>
上記の構成によるこの実施形態の動作について説明する。
まず、この自動演奏装置100には、各種の演奏モードが備わっており、操作者がキーボード306等を用いてモードの選択操作をすることにより、モードの選択や組み合わせが設定される。
各モードについて簡単に説明すると、まず、操作者が単独で演奏をする単独演奏モードと複数の操作者が異なるパートを同時に演奏する複数演奏モードがある。また、単独演奏モードと複数演奏モードのそれぞれにおいては、操作子1が振り下ろされる間隔(いわゆる楽曲の拍タイミング)に基づいてテンポが制御されるマニュアルモードと、操作子1が振り下ろされる度に、対応するチャネルのノートオンイベント(NoteOn)が読み出されて発音されるノートモードとがある。以下、それぞれのモードの動作について説明する。
a:単一操作子演奏モード
このモードは、一人の操作者が単一の操作子を操作して一つまたは複数のパートの演奏を制御するモードである。この単一操作子演奏モードにおいては、ノートモードとマニュアルモードを選択することができる。さらに、単一操作子演奏モードにおいて複数のパートの演奏を制御する場合のノートモードには、ノート自動モードとノート伴奏モードの二つのモードがある。
(1)ノートモード
このモードは、操作子1が振り下ろされる度に、例えばメロディパートなど操作子に対応するチャネルのノートオンイベント(NoteOn)が読み出されて発音されるとともに、例えば伴奏パートに対応するチャネルのノートオンイベント(NoteOn)を操作子1の振り下ろしタイミングに応じて読み出して発音することにより、アンサンブル演奏を自動的に行うモードである。
(単独の演奏パートの演奏)
初めに、単独のパートを演奏する場合を例にとる。図7は単独のパートの一例を示す楽譜であり、図8はそれに対応した演奏データの一部である。なお、図8に示す演奏データにおいては、「時間単位」が「480」に設定されており(図4参照)、4分音符に相当するデルタタイムは「480」になっている。
まず、図8に示す演奏データを用いて、一般的な自動演奏を行った場合の動作を説明する。演奏の開始が指示されると、図2に示すCPU301は、図8に示す演奏データをRAM303の演奏データ格納領域に格納し、先頭のデータから順次読み出して処理してゆく。ノートイベントについては、まず、E3音のノートオンイベント(NoteOn)が読み出され、MIDIインターフェイス308を介して音源装置4に転送される。音源装置4は、E3音の楽音信号を生成し、この楽音信号はアンプ5で増幅された後にスピーカ6で放音される。
そして、デルタタイム「480」の後、すなわち、テンポクロックを480カウントした後に、E3音のノートオフイベント(NoteOff)が読み出され、E3音が消音される。この結果、E3音は4分音符の長さだけ発音される。また、E3音のノートオフイベント(NoteOff)に対しデルタタイム「0」のイベントであるF3音のノートオンイベント(NoteOn)が、同時に読み出されて発音される。そして、デルタタイム「240」の後に、F3音のノートオフイベント(NoteOff)が読み出され、F3音が消音される。これにより、F3音は8分音符の長さだけ発音される。以後、同様にして発音処理、消音処理が行われ、図7に示す楽曲の演奏が自動的に行われてゆく。なお、デルタタイムが「0」のC4音はA3音と同時に発音され、同様にB3音とD4音も同時に発音される。このようにして和音についても自動演奏が行われる。自動演奏のテンポは、テンポクロックの周期で決定されるが、テンポクロックの周期は前述したようにテンポ指令値(SetTempo)で決定される(図4参照)。
以上の自動演奏によって各音符が発音された時刻を図7に示すように時刻t1〜t6とする。これらの時刻t1〜t6は、テンポ指令値(SetTempo)に基づく一定のテンポで演奏を行った場合の各音符の発音時刻である。
次に、本実施形態における操作子1を用いた演奏について説明する。操作者は、まず、演奏開始を自動演奏装置100に指示するために操作子1を振り下ろす(以下、この操作を前うち操作という)。操作者によって前うち操作がなされると、操作子1からは、上から下へ振り下ろした時の速度変化を表すピーク信号SPが出力される。ピーク信号SPは受信装置2を介してCPU301に供給される。CPU301は、操作子1から最初のピーク信号SPを受け取ると、操作者によって前うち操作がなされたと判断し、図6に示す現在テンポテーブルTB2の現在テンポTempo・Rの値をテンポ指令値(SetTempo)の値に設定する。そして、テンポクロックの周期を現在テンポTempoの値に従って決定する。なお、前うち操作がなされた段階においては、自動演奏は開始されず、この段階においては演奏データ内のテンポ指令値(SetTempo)に従ってテンポクロックが決定されていることになる。
次に、操作者が操作子1を振り下ろすと、振り下ろしたタイミングにおいてピーク信号(操作信号)SPが出力される。ピーク信号SPは受信装置2を介してCPU301に供給される。CPU(発音処理手段)301は、ピーク信号SPを受け取ると、図8に示すE3音のノートオンイベント(NoteOn)を読み出し、これについて上述した場合と同様の発音処理を行う。このように本実施形態においては、前うち操作がなされた後に操作子1が振り下ろされてはじめて、自動演奏が開始される。
そして、発音されたE3音は、デルタタイム「480」をカウントしている間は発音が継続されるが、操作者が時刻t2より早いタイミングで操作子1を再度振り下ろすと、この振り下ろしによってピーク信号SPが出力されたタイミングでE3音のノートオフイベント(NoteOff)、F3音のノートオンイベント(NoteOn)が読み出され、それぞれ消音処理、発音処理がなされる。例えば、時刻t11で2度目の振り下ろし(前うち操作のための振り下ろしを除く;以下同様)があると、この時刻においてE3音が消音され、F3音が発音される。
一方、操作子1の2度目の振り下ろしが時刻t2になっても行われない場合は、デルタタイム「480」をカウントし終えたタイミングで、CPU301はE3音のノートオフイベント(NoteOff)を読み出し、E3音を消音する。そして、CPU301は、F3音のノートオンイベント(NoteOn)を読み出さず、このイベントが格納されているRAM303の記憶エリアのアドレスをポインタに格納して自動演奏を一時中止する。すなわち、CPU301は、現在発音中の音のノートオフイベント(NoteOff)が読み出されても、次のピーク信号SPが来ない場合は、次の音の発音処理に移行せず、自動演奏を一時中止する。また、次に発音すべきF3音が、E3音に対してデルタタイムが「0」でない場合(楽譜上は休符を挟んで位置している場合)も、次に発音すべきF3音のノートオンイベント(NoteOn)が格納されている記憶エリアのアドレスをポインタに格納して自動演奏を一時中止する。
なお、場合によっては、消音の時刻が異なる複数の音を同時に発音していることもあるが、この場合には、最後に消音する音のノートオフイベント(NoteOff)が読み出されるまでにピーク信号SPが検出されなければ、次のノートオンイベント(NoteOn)を読み出すことなく、自動演奏を一時中止する。
そして、自動演奏が中止された後に、操作者が操作子1を振り下ろすと、このタイミングにおいてピーク信号SPが出力される。このピーク信号SPがCPU301に検出されると、CPU301はポインタから、次に発音すべき音のイベントが格納されているアドレスを読み出し、そのアドレスにあるノートオンイベント(NoteOn)を実行する。図7、図8に示す例において時刻t21にピーク信号SPが検出された場合は、この時刻においてF3音のノートオンイベント(NoteOn)を読み出し、発音処理を行う。
また、上記処理においては、CPU(間隔算出手段)301は、ピーク信号SPを検出したときは、その時刻と一つ前にピーク信号SPを検出した時刻との差を求める。すなわち、上記の場合は、(t11−t1)あるいは(t21−t1)を求める。そして、CPU(テンポ更新手段)301は、この時間差に基づいてテンポを更新し、更新したテンポをテンポ値Tempo・Rとして現在テンポテーブルTB2に格納する。
新しいテンポは、ピーク信号SPが出力された間隔と、その時発音していた音符の長さから決定される。図7,図8に示すE3音の場合は、4分音符であり、デルタタイムは「480」であるから、このデルタタイムに対するピーク信号SPの出力間隔からテンポを求める。
例えば、時刻t11でピーク信号SPが出力された場合は、デルタタイム「480」のカウントが終了していないから、CPU301はE3音のノートオフイベント(NoteOff)を探し、E3音のノートオンイベント(NoteOn)からノートオフイベント(NoteOff)までのデルタタイムと時間差(t11−t1)とから新しいテンポを決定する。
上記の例の場合は、「時間単位」が「480」でテンポ指令値SetTempo(初期値)が「500000」であるから、4分音符であるE3音の発音時間は「500000」マイクロ秒であり、テンポクロック周期は「1/960」である。そして、ピーク信号SPの時間差(t11−t1)が「400000」マイクロ秒であれば、テンポ値Tempo・Rを「400000」に書き換える。そして、更新されたテンポ値Tempo・Rに応じてテンポクロックの周期を変更する。これにより、テンポが早くなり、次の音であるF4音の発音時間は当初のテンポの場合より短くなる。一方、ピーク信号SPの時間差(t21−t1)が「600000」マイクロ秒であれば、テンポ値Tempo・Rを「600000」に書き換える。そして、更新されたテンポ値Tempo・Rに応じてテンポクロックの周期を変更する。これにより、テンポが遅くなり、次の音であるF4音の発音時間は当初のテンポの場合より長くなる。つまり、CPU(発音長制御手段)301は、次の音であるF3音の発音長さについては、上記の如く更新したテンポに対応する長さに制御する。
なお、E3音が8分音符であったとすると、時間差(t11−t1)あるいは(t21−t1)は新たなテンポにおける8分音符の長さを示すものとなるから、これを4分音符に換算してテンポ値Tempo・Rを更新する。
上記処理においては、時間差をそのまま用いてテンポ値Tempo・Rを更新したが、テンポが大幅に変化するのを防止するため、時間差の変化分を用いてテンポを変化させたり、あるいはテンポ変化の上限値を設けてそれ以上の変化を許容しないように処理してもよい。
また、E3音のノートオフイベント(NoteOff)が検出されるまでの間に、複数のデルタタイムが存在している場合は、それらのデルタタイムを全て加算したものとピーク信号の時間差とから、新しいテンポを求める。
また、上記処理においては、発音中の音のノートオフイベント(NoteOff)が読み出されるまでにピーク信号SPが検出されない場合は、自動演奏を一時中止するようにしたが、一時中止の状態が所定時間以上継続した場合は、テンポの更新を行わず、現在テンポテーブルTBに記憶されている一つ前のテンポ値Temp・Rの値でテンポクロックの周期を決めるようにしてもよい。これは、長時間曲が中断した場合に、その中断時間に基づいてテンポを設定すると、不自然に遅いテンポとなってしまい、楽曲の演奏にふさわしくないからである。なお、この場合には、初期のテンポであるテンポ指令値SetTempoを用いてもよい。
(複数の演奏パートの同時演奏)
(1−1)ノート自動モード
次に、一人の操作者が単一の操作子を操作して複数のパートを演奏する場合を説明するが、説明の簡略化のために2つのパートからなる曲を演奏する場合を例にとる。ここで、図9は2つのパートからなる曲を示す楽譜である。図9における上段がメロディ、下段が伴奏のパートであり、それぞれチャネル1(特定チャネル),チャネル2(他のチャネル)に割り振られている。なお、上段のメロディは、図7に示した楽譜と同じである。また、図10は図9に示す楽譜に対応した演奏データを示す図である。
まず、メロディのパートについての操作子1の操作と演奏との関係は、上述の単独のパートを演奏する場合と同じである。伴奏のパートについては、メロディパートで発音されている音に対応する音のノートオンイベント(NoteOn)が読み出されて同期を取りながら発音処理されるようになっている。別言するとこの複数の演奏パートの同時演奏においては、同時発音すべきイベントが複数ある場合(メロディパートのみに同時発音すべきイベントがある場合のみならず、メロディパート及び伴奏パートに同時に発音すべきイベントがある場合も含む)があり、かかる場合にはそれらが全て読み出されて発音処理されるようになっている。
一例を挙げて具体的に説明する。例えば、時刻t1でメロディパート(チャネル1)のE3音のノートオンイベント(NoteOn)が読み出されると、伴奏パート(チャネル2)のC3音のノートオンイベント(NoteOn)が読み出され、それぞれの発音処理が行われる。その後、時刻t2〜t6において操作子1からピーク信号SPが出力されると、メロディパートの音に対応した伴奏パートの音のノートオンイベント(NoteOn)が読み出されて発音される。この場合、時刻t5とt6においては、メロディパートの音に対し伴奏パートの音が複数対応するので以下のような処理内容となる。
時刻t5において、メロディパートのB3音、D4音(4分音符)のノートオンイベント(NoteOn)および伴奏パートのG3音、B3音(8分音符)のノートオンイベント(NoteOn)が読み出されて発音処理される。次に、CPU301は、ピーク信号SPが検出されていないことを条件にして、デルタタイム「240」のカウントを続け、カウントが終了した時点で演奏データから伴奏パート(チャネル2)のG3音、B3音のノートオフイベント(NoteOff)を読み出して消音処理を行うとともに、デルタタイム0のG3音、B3音のノートオンイベント(NoteOn)を直ぐに読み出して発音処理を行う。そして、デルタタイム「240」をカウントする。このカウントにおけるテンポクロックの周期は、現在テンポテーブルTB2(図6参照)のテンポ値Tempo・Rによって決定される。つまり、直前のピーク信号SPの出力間隔によって決定される。
そして、デルタタイム「240」のカウントが終了すると、メロディパートのB3音、D4音および伴奏パートのG3音、B3音のノートオフイベント(NoteOff)を読み出し、これらの音の消音処理を行う。別言すると、CPU(他チャネル発音制御手段)301は、ピーク信号SPが検出されていないことを条件にして、t5において処理をしているメロディパートのB3音、D4音(4分音符)のノートオンイベント(NoteOn)から次のメロディパートのC4音(2分音符)のノートオンイベント(NoteOn)までの区間に存在する伴奏パートのノートオンイベント(NoteOn)等を、更新したテンポに応じた速さで順次読み出すとともに、これら伴奏パートの各ノートオンイベントの発音長さをそのテンポに応じた長さに制御する。以上の動作によって、メロディパートの一つの4分音符に対し、伴奏パートの2つの8分音符の演奏が自動的に行われる。また、時刻t6においては、メロディパートのC4音(2分音符)に対して、伴奏パートのG3,A3,B3,C4音(8分音符)が対応しているが、これらの処理についても上記と同様である。
次に、操作者がテンポを変更したときの伴奏音の発音処理について説明する。今、操作者が時刻t4において操作子1を振り下ろした後、時刻t5の前の時刻t41において再び操作子1を振り下ろしたとする。これにより、時刻t41においてピーク信号SPが検出されるから、CPU301はメロディパートの発音中の音(A3音、C4音)を直ぐに消音処理し、同時に伴奏パートのE3音についても消音処理する。そして、メロディパートの次の音であるB3音、D4音のノートオンイベント(NoteOn)を読み出すとともに、これらに対してデルタタイムが「0」である伴奏パートのG3音,B3音のノートオンイベント(NoteOn)も読み出し、これらの音についての発音処理を行う。
また、上記とは逆に時刻t4では操作子1が振り下ろされず、少し遅れた時刻t41において操作子1が振り下ろされた場合は、時刻t3で発音されたメロディパートのG3音は、その時のテンポに応じた長さだけ発音された後、消音処理され、これに対応する伴奏パートのE3音、G3音もメロディパートのG3音とともに消音処理される。その後は、ピーク信号SPの検出待ちとなり、時刻t41でピーク信号SPが検出された時点でメロディパートのB3音、D4音および伴奏パートのG3音,B3音が発音される。
以上のように、操作者の操作に対応したメロディ音の発音、消音処理が行われ、これに同期して伴奏音の発音、消音処理が行われるようになっている。
また、時刻t6でメロディパートのC4音が発音され、これに伴って伴奏パートのG3音が発音、消音処理され、続いてA3音が発音、消音処理された後、時刻t61においてピーク検出信号SPが検出されると、CPU301はメロディパートの次の音であるE3音のノートオンイベントを読み出して発音処理するとともに、伴奏パートのB3音、C4音(8分音符)の処理をスキップし、発音を行わない。
以上のように、メロディパートの演奏が優先され、伴奏パートの発音、消音処理はメロディパートに追従するように制御される。
(1−2)ノート伴奏モード
次に、ノート伴奏モードについて説明する。このモードは伴奏パートについては、演奏データによって指定されるテンポに基づいて自動演奏を行う、いわゆる通常の自動演奏処理となる。そして、メロディパートについては、前述した単独の演奏パートの動作と同じである。このモードにおいては、伴奏パートとメロディパートの同期は取られない。なお、いずれのチャネルを伴奏パートにするかメロディパートにするかは操作者が任意に設定すればよい。
このモードは、操作者が伴奏パートの自動演奏を聞きながら、自由にメロディの発音タイミングを指示するときに用いられるモードである。
(2)マニュアルモード
このモードは全てのチャネルについて、通常の自動演奏と同じ動作を行うが、テンポについては操作者の操作に従って変化する。
すなわち、操作者が1拍(あるいは2拍)のタイミングで操作子1を振り下ろすと、その振り下ろし間隔に相当するピーク信号の間隔等がCPU301によって検出され、上述の場合と同様にして、ピーク信号の間隔等からテンポを逐次更新してゆく。この更新されたテンポは現在テンポテーブルTB2にテンポ値Tempo・Rとして格納され、このテンポ値Tempo・Rによってテンポクロックの周期が決定される。したがって、操作子1が振り下ろされる間隔に応じて自動演奏のテンポが変化する。なお、この動作は演奏するパートが単一・複数にかかわらず、同様である。
<変形例>
以上説明した動作例では、操作子1の振り下ろし操作を検出する毎に(すなわち1回のピークを検出する毎に)、1音符ずつ演奏を進める場合について説明したが、上記振り下ろし操作を検出する毎に複数の音符を進めるようにしても良い。かかる場合には、検出したピークに続く音符については、既に求めたテンポ値Tempo・Rを利用して演奏を進めれば良い。なお、検出したピークに続く音符が休符(4分休符等)である場合も上記テンポ値Tempo・Rを利用して演奏を進めれば良い。
b:複数操作子演奏モード
このモードは、複数の操作者がそれぞれ操作子を操作して、各自に割り当てられたパートの演奏を制御することにより、複数パートからなる楽曲の演奏を制御するモードである。この複数演奏モードにおいては、例えばメロディパートについてはノートモードで演奏制御を行う一方、伴奏パートについてはマニュアルモードで演奏制御を行うといった選択を行うことができる。
複数操作子演奏モードにて演奏を試みる操作者は、まず、自動演奏装置100のキーボード306等を操作して楽曲の選択、及び各操作子に対するパートの割り当てを行う。例えば、2人の操作者(第1操作者及び第2操作者)で演奏する場合には、操作者は操作子1−1(第1操作者用)に対してメロディパートを割り当て、操作子1−2(第2操作者用)に対して伴奏パートを割り当てるといった選択を行う。なお、以下の説明では、メロディパートが割り当てられた操作子1−1をマスタ操作子1−1と呼び、伴奏パートが割り当てられた操作子1−2をスレーブ操作子1−2と呼ぶ。
かかる操作を行うと、操作者は、さらにキーボード306等を操作してメロディパート及び伴奏パートの各々についてノートモード若しくはマニュアルモードの選択を行う。この結果、RAM(記憶手段)303の所定エリアには、チャネル番号、各操作子を識別するための識別情報、各操作子に対する演奏パートの割り当て、各演奏パートの演奏制御モードの割り当て(属性情報)等が記述された複数演奏モード管理テーブルTA1が格納される(図11参照)。いいかえると、RAM303の所定エリアには、各操作子と各チャネルとの対応関係及び各操作子の主従関係(いずれの操作子がマスタ操作子となり、いずれの操作子がスレーブ操作子となるか)等が記述された複数演奏モード管理テーブル(操作関連情報)TA1が格納される。
以下、マスタ操作子1−1及びスレーブ操作子1−2がともにノートモードに設定された場合の動作について説明する。
自動演奏装置100のCPU301は、演奏制御に必要な選択等を受け付けると、操作者によって選択された楽曲に対応する演奏データをHDD304から読み出し、これをRAM303の演奏データ格納領域に転送する。一方、各操作者(若しくはいずれか一方の操作者)は、演奏開始を自動演奏装置100に指示すべく、前述した前うち操作を行う。かかる操作がなされると、操作子1からピーク信号SPが出力され、CPU301に供給される。CPU301は、操作子1から最初のピーク信号SPを受け取ると、操作者によって前うち操作がなされたと判断し、図6に示す現在テンポテーブルTB2の現在テンポTempo・Rの値をテンポ指令値(SetTempo)の値に設定する。
その後、各操作者によって演奏進行操作(すなわち操作子1の振り下ろし)が開始されると、各操作子1においてピーク信号SPが生成される。各操作子1は生成したピーク信号(操作信号)SPと当該操作子1を識別するための識別情報SIDとを、操作情報として受信装置2に送信する。CPU(発音処理手段)301は、受信装置2を介して操作情報を受け取ると、複数演奏モード管理テーブル(操作関連情報)TA1を参照し、受け取った操作情報に含まれる識別情報SIDに対応するパートの楽音をノートオンイベント等を読み出して発音処理等を行い、演奏を進めてゆく。
この演奏について図12を参照しながら説明すると、メロディパートの演奏については、CPU301は、マスタ操作子1−1の操作を検出する度に(すなわち、操作情報を受信する度に)、この検出タイミングで対応する楽音を発音し、1音符ずつ演奏を進める(図に示すt1〜t7参照)。なお、この際、マスタ操作子1−1の操作(ピーク)を検出してから次の操作(ピーク)を検出するまでの時間と音符の長さとに基づいて逐次テンポ計算するのは前述したとおりである。
一方、伴奏パートの演奏については、CPU301は、スレーブ操作子1−2の操作を検出するタイミング(図13〜図16に示すケース1〜ケース4参照)に応じて下記4通りの処理のいずれかを実行する。なお、CPU301は、受信した操作情報に含まれる識別情報SIDを参照することにより、マスタ操作子1−1からの操作情報であるか、或いはスレーブ操作子1−2からの操作情報であるかを判断する。ここで、上記各図に示すマスタ演奏とは、マスタ操作子1−1によって演奏制御されるメロディパートの演奏を意味し、スレーブ演奏とは、スレーブ操作子1−2によって演奏制御される伴奏パートの演奏を意味する。また、各図に示す黒丸及び白丸は、マスタ演奏若しくはスレーブ演奏の演奏位置を表しており、黒丸は、既演奏位置(既に演奏された位置)、白丸は未演奏位置(未だ演奏されていない位置)を表している。
(ケース1)
CPU(発音処理制御手段)301は、常にマスタ操作子(主となる操作子)1−1の次演奏位置(次に処理される発音イベントの位置)を確認し、スレーブ操作子(従となる操作子)1−2の現演奏位置(発音イベントの位置)が、マスタ操作子1−1の次演奏位置を越えないように制御する。例えば、図13のAに示すように、CPU301がマスタ操作子1−2から操作情報を受け取った時点において、マスタ演奏の演奏位置(現演奏位置)が「2」まで進んでおり、スレーブ演奏の演奏位置がマスタ演奏の未演奏位置(次演奏位置)「3」の直前まで進んでいる状態においてスレーブ操作端末1−2の操作を検出した場合には、スレーブ演奏についてはマスタ演奏よりも先に進ませないという原則のもと、スレーブ演奏を進ませない。かかる場合には、図13のBに示すように、マスタ演奏が演奏位置「3」に進んでからスレーブ操作子1−2の操作を検出したときにスレーブ演奏を進ませる。ただし、この場合にスレーブ演奏を進ませることができるのは、あくまでマスタ演奏の未演奏位置「4」の直前までに限られる。いいかえれば、上記の場合、スレーブ演奏については、マスタ演奏の未演奏位置「4」を越えない範囲でスレーブ演奏を進ませることができる。
(ケース2)
また、図14のAに示すように、楽曲の途中の間奏部分など、メロディパートの演奏が途切れて伴奏パートの演奏のみが行われるような部分においてスレーブ操作子1−2の操作を検出すると、CPU301は、このスレーブ操作子1−2の操作を検出するタイミングでスレーブ演奏を進ませる。ただし、スレーブ演奏を進ませることができるのは、あくまで伴奏パートの演奏のみが行われる部分に限られる。いいかえれば、スレーブ演奏を進ませることができるのは、図14のBに示すようにマスタ演奏が再開される未演奏位置「1」の直前までに限られる。なお、スレーブ演奏の演奏位置が間奏部分の演奏位置であるか否かについては、楽曲データ中のメロディパートの楽音パラメータと伴奏パートの楽音パラメータとを比較等して判断すれば良い。
(ケース3)
また、CPU301は、スレーブ操作子1−2の操作を検出するタイミングがマスタ操作子1−1の操作を検出するタイミングと同時、若しくはマスタ操作子1−1の操作を検出してから所定時間(300(ms)等)内である場合には、スレーブ操作子1−2の操作を検出するタイミングでスレーブ演奏を進ませる。例えば、図15のAに示すように、スレーブ演奏の演奏位置がマスタ演奏の未演奏位置「3」の直前まで進んでいる場合、マスタ操作子1−1の操作を検出すると同時にスレーブ操作子1−2の操作を検出すると、CPU301は、図15のBに示すように、マスタ演奏を演奏位置「3」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置「3」に対応する位置まで進ませる。なお、上記所定時間内にさらにスレーブ操作子1−2の操作を検出した場合には、スレーブ演奏を進ませることができるが、進ませることができるのは、あくまでマスタ演奏の未演奏位置「4」の直前までに限られる。
(ケース4)
また、CPU(発音位置制御手段)301は、スレーブ演奏がマスタ演奏から所定量以上遅れている場合(例えばスレーブ演奏が停止されていた等により4分音符1つ分以上等)にスレーブ操作子1−2の操作を検出すると、スレーブ演奏の演奏位置をマスタ演奏の演奏位置までスキップして進ませる。例えば、図16のAに示すように、マスタ演奏の演奏位置が「3」であり、かつ、スレーブ演奏の演奏位置がマスタ演奏の演奏位置「2」に対応する位置に存在する場合、マスタ操作子1−1の操作を検出すると同時にスレーブ操作子1−2の操作を検出すると、CPU301は、図16のBに示すように、マスタ演奏を演奏位置「4」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置「4」に対応する位置までスキップさせる。この結果、スキップしてとばされた音符列(図16に示すM参照)については演奏されずにスキップ後の演奏位置に対応する音符が発音されることになる。
以上説明したように、マスタ操作子1−1及びスレーブ操作子1−2がともにノートモードに設定されている場合には、たとえスレーブ操作子1−2の操作がマスタ操作子1−1の操作より先行して行われたとしても、スレーブ演奏はマスタ演奏よりも決して先に進まない。ただし、スレーブ操作子1−2の操作に応じて進行するスレーブ演奏がマスタ操作子1−1の操作に応じて進行するマスタ演奏よりも遅れている場合には、スレーブ演奏とマスタ演奏とを同期させるべく、スレーブ演奏の演奏位置をマスタ演奏の演奏位置までスキップさせる。これにより、たとえ第2操作者が演奏途中においてスレーブ操作子1−2の操作をいったん停止したとしても、単にスレーブ操作子1−2の操作を再開するだけで(すなわちスレーブ演奏とマスタ演奏との同期を図るために煩雑な操作をすることなしに)スレーブ演奏とマスタ演奏とを同期させることができる。
上記例では、マスタ操作子1−1及びスレーブ操作子1−2がともにノートモードに設定されている場合について説明した。これに対し、以下に示す例では、マスタ操作子1−1がノートモードに設定され、スレーブ操作子1−2がマニュアルモードに設定されている場合について説明する。ただし、マニュアルモードに設定されている場合の動作については、以下に示すケース4’(上記ケース4に対応)を除き、上記ケース1〜3とほぼ同様に説明することができるため割愛する。
(ケース4’)
CPU(発音位置制御手段)301は、上記ケース4と同様、スレーブ演奏がマスタ演奏から所定量以上遅れている場合(例えばスレーブ演奏が停止されていた等により1拍分以上等)にスレーブ操作子1−2の操作を検出すると、スレーブ演奏の演奏位置をマスタ演奏の演奏位置に対応する拍子位置までスキップして進ませる。詳述すると、例えば、図17のAに示すように、マスタ演奏の演奏位置が「5」であり、かつ、スレーブ演奏の演奏位置がマスタ演奏の演奏位置「2」に対応する位置に存在する場合、マスタ操作子1−1の操作を検出すると同時にスレーブ操作子1−2の操作を検出すると、CPU301は、図17のBに示すように、マスタ演奏を演奏位置「6」に進ませるとともに、スレーブ演奏をマスタ演奏の演奏位置に対応する拍子位置(図17では3拍目の頭の位置)までスキップさせる。このように、スレーブ操作子1−2がマニュアルモードに設定された場合には、スレーブ演奏の演奏位置をマスタ演奏の演奏位置と同じ位置までスキップさせるのではなく、マスタ演奏の演奏位置に対応する拍子位置までスキップさせる。この結果、スキップしてとばされた音符列(図17に示すM参照)については演奏されずにスキップ後の演奏位置に対応する音符が発音されることになる。このように、スレーブ操作子1−2がマニュアルモードに設定されている場合についても、スレーブ演奏とマスタ演奏とを同期させることが可能となる。
<変形例>
以上説明した動作例では、マスタ操作子1−1をノートモードに設定し、スレーブ操作子1−2をノートモード若しくはマニュアルモードに設定した場合について説明したが、例えばマスタ操作子1−1をマニュアルモードに設定し、スレーブ操作子1−2をノートモード若しくはマニュアルモードに設定しても良いのはもちろんである。また、上記動作例では、メロディパートが割り当てられた操作子1−1をマスタ操作子1−1とし、伴奏パートが割り当てられた操作子1−2をスレーブ操作子1−2としたが、これとは逆に伴奏パートが割り当てられた操作子をマスタ操作子とし、メロディパートが割り当てられた操作子をスレーブ操作子とするなど、どのパートが割り当てられた操作子をマスタ操作子若しくはスレーブ操作子とするかは適宜変更可能である。また、該動作例では2人の操作者が2つの操作子1を利用して同期演奏する場合について説明したが、3人以上の操作者が3つ以上の操作子1を利用して同期演奏しても良いのはもちろんである。
また、上記動作例では、スレーブ操作子1−2の操作が停止してから当該操作が再開されるまでの間、スレーブ演奏(すなわち伴奏パートの演奏)が停止する構成であったが、例えばスレーブ操作子1−2の操作が停止した場合であっても、スレーブ演奏を継続させるべく、マスタ操作子1−1の操作タイミングに同期してスレーブ演奏を自動継続し、スレーブ操作子1−2の操作が再開されたとき、当該操作を反映させて(すなわち当該操作タイミングで)スレーブ演奏を行うようにしても良い。なお、スレーブ操作子1−2の操作が停止したか否かについては、スレーブ操作子1−2の操作を検出してから所定時間内(例えば500(ms)内)に次の操作が検出されたか否かに基づき判断すれば良い。
また、上記動作例では、各操作子の操作(ピーク)を検出してから次の操作(ピーク)を検出するまでの時間と音符の長さとに基づいて逐次テンポ計算する場合について説明したが、例えば各操作子の操作(ピーク)の大きさを検出し、このピークの大きさをボリュームに反映させても良い。図18は、RAM303に格納されているボリューム管理テーブルTA2を例示した図である。
ボリューム管理テーブルTA2には、ピーク信号SPの値pspとボリューム値vとが対応づけて登録されている。図18に示すように、ボリューム値vは、ピーク信号SPの値pspに略比例して大きくなるように設定されている。CPU301は、各操作子1から操作情報を受信すると、この操作情報に示されるピーク信号SPの値とボリューム管理テーブルTA2とを参照し、ボリューム値vを決定する。この結果、例えば、操作者が操作子1を上から下に小さく振り下ろした場合には制御対象となるパート(例えばメロディパート)の演奏音は小さくなり、逆に大きく振り下ろした場合には該パートの演奏音は大きくなる。このように、操作子1の操作を演奏音のボリュームに反映させるようにしても良い。なお、ピークの大きさをボリュームに反映させる点については単独演奏モードについても適用可能である。
なお、以上説明した本実施形態に係るCPU301の諸機能は、ROM302等のプログラムによって実現されるため、かかるプログラムについてCD−ROM等の記録媒体に記録して頒布したり、インターネット等の通信ネットワークを介して頒布しても良い。もちろん、上記諸機能を実現するCPU301、ROM302等を組み込んだ専用装置として構成することも可能である。
本実施形態の構成を示す図である。 同実施形態に係るパーソナルコンピュータの構成を示すブロック図である。 同実施形態に係る操作子の操作態様を例示した図である。 同実施形態に係る演奏データの構造を例示した図である。 同実施形態に係るチャネル設定テーブルを例示した図である。 同実施形態に係る現在テンポテーブルを例示した図である。 同実施形態に係る1つのパートの一例を示す楽譜である。 図7に示す楽譜に対応する演奏データを例示した図である。 同実施形態に係る2つのパートの一例を示す楽譜である。 図9に示す楽譜に対応する演奏データを例示した図である。 同実施形態に係る複数演奏モード管理テーブルを例示した図である。 同実施形態に係る複数演奏モードにおける演奏状態を説明するための図である。 同演奏モードにおけるケース1の演奏状態を説明するための図である。 同演奏モードにおけるケース2の演奏状態を説明するための図である。 同演奏モードにおけるケース3の演奏状態を説明するための図である。 同演奏モードにおけるケース4の演奏状態を説明するための図である。 同演奏モードにおけるケース4’の演奏状態を説明するための図である。 同実施形態に係るボリューム管理テーブルを例示した図である。
符号の説明
1・・・操作子、2・・・受信装置、3・・・パーソナルコンピュータ、4・・・音源装置、5・・・アンプ、6・・・スピーカ、301・・・CPU、302・・・ROM、303・・・RAM、304・・・HDD、305・・・表示部、306・・・キーボード、307・・・ポインティングデバイス、TB1・・・チャネル設定テーブル、TB2・・・現在テンポテーブル、TA1・・・複数演奏モード管理テーブル、TA2・・・ボリューム管理テーブル。

Claims (5)

  1. 楽音の発音内容を示す発音イベントが複数のチャネルに配されている演奏データから前記各チャネルの発音イベントを順次読み出し、読み出した発音イベントを処理することによりアンサンブル演奏をする自動演奏装置において、
    各操作者によって操作されると、操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と、
    前記各操作子と前記各チャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
    前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
    前記主となる操作子から操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、
    前記各チャネルの楽音の発音長を制御するためのテンポを記憶するテンポ記憶手段と、
    前記時間間隔算出手段が算出した時間間隔が所定時間未満である場合には、当該時間間隔、および前記主となる操作子に対応するチャネルについて前回発音処理された発音イベントの音符の長さに基づきテンポを算出し、前記テンポ記憶手段に記憶されたテンポを更新する一方、当該時間間隔が前記所定時間以上である場合には、前記テンポ記憶手段に記憶されたテンポを更新しないテンポ更新手段と、
    前記発音処理手段が処理をする発音イベントの発音長を、前記テンポ記憶手段に記憶されたテンポに対応した長さに制御する発音長制御手段と
    を具備し、
    前記発音処理手段は、前記従となる操作子からの操作信号が、所定時間以上出力されない場合には、当該操作子に対応するチャネルについては、次に当該操作子から操作信号が出力されるまでは、前記主となる操作子からの操作信号に応じて発音イベントを読み出して発音処理する
    ことを特徴とする自動演奏装置。
  2. 前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えないように前記発音処理手段による発音処理を制御する発音処理制御手段
    をさらに具備することを特徴とする請求項1に記載の自動演奏装置。
  3. 前記発音処理制御手段は、前記従となる操作子から操作信号が出力された場合、当該時点における前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置の直前まで達しているか否かを確認し、直前に達していない場合には、前記従となる操作子に対応する発音イベントの位置が前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置を越えない範囲で、前記操作信号に従って前記発音処理手段による発音処理を進める
    ことを特徴とする請求項2に記載の自動演奏装置。
  4. 前記従となる操作子に対応する発音イベントの位置が、前記発音処理手段によって次に処理される前記主となる操作子に対応する発音イベントの位置よりも所定量以上遅れている場合、前記従となる操作子に対応する発音イベントの位置を前記主となる操作子に対応する発音イベントの位置までスキップさせる発音位置制御手段
    をさらに具備することを特徴とする請求項1に記載の自動演奏装置。
  5. コンピュータを、
    各操作者によって操作されると操作状況に応じた操作信号及び当該操作子を識別するための識別情報を出力する複数の操作子と複数のチャネルとの対応関係及び前記各操作子の主従関係とをあらわす操作関連情報を記憶する記憶手段と、
    前記操作信号及び前記識別情報が前記各操作子から出力されると、前記操作関連情報を参照し、前記識別情報に対応するチャネルについて、次に発音すべき楽音の発音イベントを読み出して発音処理する発音処理手段と、
    前記主となる操作子から操作信号が出力された出力時刻を検出するとともに、前回の出力時刻との時間間隔を算出する時間間隔算出手段と、
    前記各チャネルの楽音の発音長を制御するためのテンポを記憶するテンポ記憶手段と、
    前記時間間隔算出手段が算出した時間間隔が所定時間未満である場合には、当該時間間隔、および前記主となる操作子に対応するチャネルについて前回発音処理された発音イベントの音符の長さに基づきテンポを算出し、前記テンポ記憶手段に記憶されたテンポを更新する一方、当該時間間隔が前記所定時間以上である場合には、前記テンポ記憶手段に記憶されたテンポを更新しないテンポ更新手段と、
    前記発音処理手段が処理をする発音イベントの発音長を、前記テンポ記憶手段に記憶されたテンポに対応した長さに制御する発音長制御手段
    として機能させ、
    前記発音処理手段は、前記従となる操作子からの操作信号が、所定時間以上出力されない場合には、当該操作子に対応するチャネルについては、次に当該操作子から操作信号が出力されるまでは、前記主となる操作子からの操作信号に応じて発音イベントを読み出して発音処理する
    ことを特徴とするプログラム。
JP2008275958A 2008-10-27 2008-10-27 自動演奏装置及びプログラム Expired - Fee Related JP4572980B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008275958A JP4572980B2 (ja) 2008-10-27 2008-10-27 自動演奏装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008275958A JP4572980B2 (ja) 2008-10-27 2008-10-27 自動演奏装置及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007001680A Division JP4241833B2 (ja) 2007-01-09 2007-01-09 自動演奏装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2009020539A JP2009020539A (ja) 2009-01-29
JP4572980B2 true JP4572980B2 (ja) 2010-11-04

Family

ID=40360155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008275958A Expired - Fee Related JP4572980B2 (ja) 2008-10-27 2008-10-27 自動演奏装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4572980B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7383943B2 (ja) * 2019-09-06 2023-11-21 ヤマハ株式会社 制御システム、制御方法、及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000276141A (ja) * 1999-03-25 2000-10-06 Yamaha Corp 電子楽器および電子楽器の制御装置
JP2001188535A (ja) * 1999-12-28 2001-07-10 Yamaha Corp テンポ設定装置及び方法
JP2001195060A (ja) * 2000-01-11 2001-07-19 Yamaha Corp 演奏インターフェイス
JP2002023743A (ja) * 2000-07-12 2002-01-25 Yamaha Corp 発音制御システム
JP2002278552A (ja) * 2001-03-22 2002-09-27 Roland Corp テンポ設定装置
JP2003122355A (ja) * 2001-10-10 2003-04-25 Kawai Musical Instr Mfg Co Ltd 電子楽器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0876760A (ja) * 1994-08-31 1996-03-22 Kawai Musical Instr Mfg Co Ltd 自動演奏装置のテンポスピード制御装置
JPH09258649A (ja) * 1996-03-19 1997-10-03 Sukeo Kimura 合奏・合唱用の体感リズムテンポ親子調整器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000276141A (ja) * 1999-03-25 2000-10-06 Yamaha Corp 電子楽器および電子楽器の制御装置
JP2001188535A (ja) * 1999-12-28 2001-07-10 Yamaha Corp テンポ設定装置及び方法
JP2001195060A (ja) * 2000-01-11 2001-07-19 Yamaha Corp 演奏インターフェイス
JP2002023743A (ja) * 2000-07-12 2002-01-25 Yamaha Corp 発音制御システム
JP2002278552A (ja) * 2001-03-22 2002-09-27 Roland Corp テンポ設定装置
JP2003122355A (ja) * 2001-10-10 2003-04-25 Kawai Musical Instr Mfg Co Ltd 電子楽器

Also Published As

Publication number Publication date
JP2009020539A (ja) 2009-01-29

Similar Documents

Publication Publication Date Title
US8502057B2 (en) Electronic musical instrument
JPH09160551A (ja) 電子楽器
JP3922224B2 (ja) 自動演奏装置及びプログラム
JP2006243102A (ja) 演奏補助装置及び演奏補助プログラム
JP2005266350A (ja) 演奏情報表示装置およびプログラム
JP5228315B2 (ja) 自動伴奏生成装置および自動伴奏生成方法を実現するためのプログラム
JP4572980B2 (ja) 自動演奏装置及びプログラム
JP4241833B2 (ja) 自動演奏装置及びプログラム
JP4858504B2 (ja) カラオケ装置
JP2010117419A (ja) 電子楽器
JP2000221967A (ja) 電子楽器等における設定制御装置
JP5590350B2 (ja) 楽曲演奏装置及び楽曲演奏用プログラム
JP2006031056A (ja) 自動演奏装置
JP2017015957A (ja) 演奏記録装置およびプログラム
JP5164401B2 (ja) 自動演奏装置および自動演奏プログラム
JP6427447B2 (ja) カラオケ装置
JP2007072387A (ja) 演奏補助装置及びプログラム
JP2002182647A (ja) 電子楽器
JP3788457B2 (ja) 自動演奏装置
JP3760940B2 (ja) 自動演奏装置
JP6343911B2 (ja) 電子楽器、プログラム及び発音音高選択方法
JP6264660B2 (ja) 音源制御装置、カラオケ装置、音源制御プログラム
JP6427439B2 (ja) カラオケ装置
JP3931874B2 (ja) 自動演奏装置
JP2005189899A (ja) 電子楽器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091201

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: 20100720

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100802

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees