JP4251895B2 - 演奏制御装置およびプログラム - Google Patents
演奏制御装置およびプログラム Download PDFInfo
- Publication number
- JP4251895B2 JP4251895B2 JP2003081808A JP2003081808A JP4251895B2 JP 4251895 B2 JP4251895 B2 JP 4251895B2 JP 2003081808 A JP2003081808 A JP 2003081808A JP 2003081808 A JP2003081808 A JP 2003081808A JP 4251895 B2 JP4251895 B2 JP 4251895B2
- Authority
- JP
- Japan
- Prior art keywords
- note
- time interval
- tempo
- value
- sound
- 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】
【従来の技術】
従来より、与えられたシーケンスデータに基づいて自動演奏を行う自動演奏装置が知られている。自動演奏のテンポは、ユーザが所定の操作子を操作することで任意に調整できるようになっている。一方、操作子によるテンポの調整だけでは、自動演奏に合わせて演奏者が例えばメロディーを演奏する場合、演奏者は自動演奏のテンポに合わせて演奏しなくてはならない。このため、演奏者が演奏するテンポに合わせて自動演奏する機能が求められている。
【0003】
例えば、特許文献1には、音程や発音タイミングに基づいた音楽アクセントを検出し、その音楽アクセントに基づいてテンポ変化を予測し、予測したテンポになるようにテンポ修正するテンポ検出装置が開示されている。
【0004】
【特許文献1】
特開平06−348272号
【0005】
【発明が解決しようとする課題】
上記特許文献1に記載の技術では、音楽アクセントに基づいてテンポを修正するだけであるので、演奏者が自由に演奏し入力された楽音から細やかなテンポ追随を行うことはできなかった。
【0006】
この発明は、演奏者の演奏のテンポに自動演奏のテンポを追随させることができ、特に演奏の盛り上がりや演奏表現によるテンポの揺れに対しても細やかにテンポ追随ができるようにすることを目的とする。
【0007】
【課題を解決するための手段】
この目的を達成するため、この発明は、演奏者が自由に演奏し入力されたノートから演奏された各音符の音価やリズムを類推し、テンポを選出することを特徴とする。また、例えば演奏者が演奏開始前に出すプリカウント(現行では2小節分8拍、任意の音数やリズムに変更可能)からデフォルトのテンポを算出し、それを基準テンポとして次に入力されるノートの各音価の有効範囲を絶対時間で設定する。次のノートが入力された際、そのノートが何れかの範囲に収まっていればその値をもとに音価を判断し、その時点の参考テンポ(前入力からの経過時間を4分音符あたりの時間に直したもの)を算出する。そして、各音価毎の有効範囲を再設定し、次の入力を待つ。なお、どの音価の有効範囲にも該当しないソートは対象外とみなし無視する。参考テンポが一定数(例えば4)蓄積されるとその平均値を出して新しい基準テンポとする。シーケンスの進行は、基準テンポをもとに現在の演奏位置を割り出し、次のコード切り替えタイミングまでの時間を算出することで行う。または、ポピュラー音楽の性質上入力抜けの確率の低い2拍目と4拍目をトリガーとし、その入力の有無によって判断するのでもよい。
【0008】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【0009】
図1は、この発明の実施の形態に係る自動演奏装置の概略構成を示す。この装置は、中央処理装置(CPU)101、記憶手段102、入力手段103、出力手段104、および通信手段105を備える。110は各部を相互に接続するバスラインである。
【0010】
CPU101は、この装置の全体の動作を制御する処理装置である。記憶手段102は、CPU101が実行するプログラムや各種のデータを記憶する。記憶手段102は、例えば半導体メモリ(ROM、RAM)、磁気記録媒体(フレキシブルディスク、テープデバイス、ハードディスクなど)、光記憶媒体(CD、CD−R/RW、DVD、MOなど)などを含む。入力手段103は、キーボードや各種スイッチなどのキーデバイス、マウスやタブレットなどのポインティングデバイス、マイクロホン、あるいはカメラなどを含むものとし、少なくとも複数の鍵を有する鍵盤などの演奏入力デバイスは備えているものとする。出力手段104は、表示手段(CRT、LCDなど)、放音手段(音源、スピーカなど)、印刷手段(プリンタなど)などを含み、少なくとも放音手段は備えているものとする。通信手段105は、通信ネットワーク106と接続するためのものである、例えばEthernet(登録商標)、IEEE1394、IEEE802.11b、Bluetooth(登録商標)、MIDIなどの規格に基づくネットワークである。
【0011】
図1の装置では、所定のプログラム(図2以降を参照して後述する)をCPU101で実行することにより、与えられたシーケンスデータ(自動演奏データ)に基づいて自動演奏を行うことができる。また、演奏入力デバイスの操作を検出して演奏者の演奏入力に応じた楽音を発音する。特に、本装置では、演奏者が自由に演奏し入力されたノートから演奏された各音符の音価(全音符、二部音符、四分音符などの区別)やリズムを類推し、演奏のテンポを算出する。そして、自動演奏のテンポを前記算出した演奏のテンポに追随させる。以下、本装置における処理手順を説明する。
【0012】
図2は、本装置のメインルーチンの処理手順を示す。なお、以下ではオブジェクト指向プログラミングの手法で処理手順を説明する。メインルーチンが起動されると、ステップ201〜204で各オブジェクトを構築する。その後は、ステップ211〜214に示すように、構築された各オブジェクトがそれぞれ動作し、ステップ205でシーケンサオブジェクトからの終了通知を受けると処理終了する。メインルーチンは、シーケンサオブジェクトからの終了通知を検知するか、別途プログラムの終了が指示されるまで、テンポトレースおよび再生処理に関しては特に処理を必要としない。
【0013】
構築された各オブジェクトの処理について説明する。タイマオブジェクト211は、システムクロックに基づいて実時刻情報を随時出力する。ノートイベントハンドラ212は、演奏者による演奏入力デバイスの操作を検出し、操作がなされていたときは、該操作に応じたノートイベントをノート時刻情報と共に発生する。発生したノートイベントに応じた楽音は放音手段により放音される。テンポトレースオブジェクト213は、ノートイベントハンドラ212から発生されるノート時刻情報(演奏者による演奏入力で発生したノートオンの時刻)に応じてテンポを検出しテンポ情報を出力する。シーケンサオブジェクト214は、テンポトレース213から出力されるテンポ情報に応じたテンポで、与えられたシーケンスデータに基づく自動演奏を行う。
【0014】
各オブジェクトの処理についてさらに詳しく説明する。ただし、ここでは演奏者による演奏入力からテンポを検出しそのテンポに応じてシーケンスデータの再生のテンポを追随させる処理に着目して説明する。演奏者による演奏入力に応じた楽音の発生処理やシーケンスデータの再生制御処理については従来と同様であるので詳しく説明しない。
【0015】
まず、ノートイベントハンドラ212について説明する。ノートイベントハンドラは、演奏入力デバイスからの入力状態を監視し、ノートイベントの入力時刻を所定のバッファに蓄積し、先入れ先出し方式でノート入力時刻を出力(GetNote()関数による)する。
【0016】
図3(a)は、ノートイベントハンドラ212が構築されたときに起動される処理(CONSTRUCT)301を示す。ステップ302で、ノート時刻FIFO(先入れ先出し方式)バッファを初期化し、未処理数(詳しくは未処理数を格納するワークレジスタ)を0とする。ステップ303でノートオンの入力があるか否か繰り返しチェックする。ノートオン入力があるときは、ステップ304でタイマ211から現在時刻を取得し、ステップ305でノート時刻FIFOバッファの末尾にその時刻情報を追加し、ステップ306で未処理数をインクリメントして、ステップ303に戻る。
【0017】
図3(b)は、演奏入力の取得を指示するGetNote()関数311の処理を示す。ステップ312で、現在の未処理数が0か否か判定する。0であれば上記FIFOバッファに格納されているノートオンはないということであるから、ステップ313で呼び出し元へヌル(NULL)を返す。未処理数が0でないときは、ステップ314で未処理数をデクリメントし、ステップ315でFIFOバッファの先頭のノートオン情報を取り出して呼び出し元へ返す。
【0018】
なお、上述のノート時刻FIFOバッファとしては、オブジェクト構築時に、十分なサイズ(読み出し位置が書き込み位置を追い越さない程度)の配列を確保するものとする。また、FIFOバッファの読み出しと書き込みは、ノートオン入力がある度に書き込みポインタをインクリメントし、GetNote()関数が呼び出される度に読み出しポインタをインクリメントするようにしている。書き込みポインタや読み出しポインタがバッファの最後に到達したら先頭に戻り、これによりバッファをサイクリックに使用する。
【0019】
次に、シーケンサオブジェクトについて説明する。図4(a)は、シーケンサオブジェクトの構築時の処理(CONSTRUCT)401を示す。ここではステップ402で読み出しポインタをセットするだけである。この読み出しポインタのセットは、自動演奏を行うためのシーケンスデータの先頭に読み出しポインタをセットし再生の開始が指示されたときの準備をしておくものである。この後、再生開始タイミングで下記のInitialize()関数が起動されると、データの終端に到達するまでシーケンスデータの再生が行われる。
【0020】
図4(b)は、シーケンサオブジェクトのInitialize()関数411の処理を示す。ステップ412で、テンポトレースオブジェクト213から基準テンポ(演奏者による演奏入力から算出したテンポ)を取得する。ステップ413では、基準テンポに基づくテンポで、シーケンスデータに基づく自動演奏の再生を順次行う。次にステップ414で、現時刻が2拍目かまたは4拍目か(詳しくはこれらの拍の先頭タイミング)を判定する。どちらでもないときはステップ413に戻る。2拍目または4拍目であるときは、ステップ415でテンポトレースオブジェクト213から最新の基準テンポを取得し、ステップ413に戻って自動演奏の再生を続ける。なお、ステップ413の再生処理では、2拍目または4拍目のタイミングで基準テンポが更新されたときすぐにその更新された基準テンポで再生するのでなく、更新前の基準テンポで再生を継続するものとし、次の拍タイミング(1拍目と3拍目の先頭タイミング)から更新後の基準テンポを適用して再生するものとする。なお、ステップ413の再生処理において、シーケンスデータの再生位置は、基準テンポ情報とタイマがカウントする時刻情報に基づいて制御する。
【0021】
次に、テンポトレースオブジェクトについて説明する。テンポトレースオブジェクトは、演奏者により入力されたノートの時間間隔を常時監視し、4ノート入力毎に基準テンポの更新を行うものである。
【0022】
図5(a)は、テンポトレースオブジェクトの構築時の処理(CONSTRUCT)501を示す。ステップ502で、ノートイベントハンドラ212のGetNote()関数311を用いてノート時刻を8回取得する。ステップ503で、最後の時間間隔(7回目入力から8回目入力までの時間)を基準テンポとして設定する。ステップ504で、シーケンサオブジェクト214を初期化し、音価テーブルを初期化する。ステップ502と503は、初期テンポの確定のために、最初の8個のノート入力(四分音符と見なす)をプリカウントと見なし、最後の(7個目と8個目との)時間間隔を初期基準テンポとして設定する処理である。ステップ504は、8個目のノート入力から基準テンポ(四分音符1拍分)だけ経過したタイミングが演奏開始タイミングとなるようにシーケンサオブジェクトを初期化して(すなわちシーケンサオブジェクトのInitialize()関数411を起動して)再生を開始する処理である。
【0023】
図6(a)を参照して、ステップ504の音価テーブルの初期化処理601について説明する。ステップ602で音価の有効範囲を計算し、ステップ603で計算結果に基づいて音価テーブルを更新する。
【0024】
音価テーブルは、ユーザからの演奏入力間隔に基づいて、演奏された音価を推定するのに用いるテーブルである。ここでは、音価は、全音符(4拍)、付点二分音符(3拍)、二分音符(2拍)、付点四分音符(1.5拍)、四分音符(1拍)、八分音符(0.5拍)、および一六分音符(0.25拍)の7種類とする。図6(a)中の「テンポ」とは基準テンポのことである。基準テンポは、演奏入力から決定される四分音符、すなわち1拍あたりの絶対時間である。この基準テンポを基に、上記7種類の音価の正確な時間(ジャストタイミング)が決定され、各音価のジャストタイミングから±12.5%を有効範囲として設定する。例えば、全音符であれば、ジャストタイミングが「基準テンポ×4」であるので、これを−12.5%した値「基準テンポ×4×0.875」を全音符の最小値(min)とし、これを+12.5%した値「基準テンポ×4×1,125」を全音符の最大値(max)とする。他の音価についても同様である。
【0025】
図5に戻って、ステップ504の後、ステップ505でワークレジスタiを0に初期化する。ステップ506で、基準時刻(ワークレジスタ)に最後に取得したノート時刻を設定する。ステップ507では、ノートイベントハンドラ212のGetNote()関数311を用いてノート時刻の取得を行い、該取得が成功したか否か判定する。ノート時刻を取得できないということは、ノートイベントハンドラがヌル(NULL)を返した場合であり、このときは再度ステップ507を繰り返す。ノート時刻の取得に成功したら、ステップ508で、レジスタΔtにノート時刻−基準時刻(すなわち今回取得した演奏入力のノート時刻と直前の演奏入力のノート時刻との差)をセットする。次にステップ509で、Δtが音価テーブルに定義された何れかの範囲に含まれているか否か判定する。Δtが何れの音価にも当てはまらない場合は、演奏入力ミス、チャタリング、または和音構成音と見なし(すなわち、テンポ追従目的としては無効なノートと見なす)、ステップ507に戻る。Δtが何れかの音価に当てはまるときは、今回の演奏入力をテンポ追従有効入力と見なし、ステップ510で、暫定テンポ(ワークレジスタ)にAverage4(i,Δt,音価種類)をセットする。この引数のうち「音価種類」は、ステップ509で音価テーブルを参照して判定した全音符、付点二分音符、…の種類である。
【0026】
図6(b)を参照して、Average4関数611について説明する。Average4関数は、iとΔtと音価種類を引数とし、Δtを四分音符に換算した場合の平均値(すなわち四分音符の時間長=テンポ値)を出力するものである。この実施の形態では、有効なノート入力4回毎の平均値を出力している。まず、ステップ612で引数iが0か否か判定する。0であるときはステップ613でレジスタavを0に初期化し、ステップ614に進む。iが0でないときはそのままステップ614に進む。ステップ614では、レジスタdtに、音価種類に応じてΔtを四分音符に換算した時間をセットする。例えば、全音符ならΔtを1/4倍し、付点二分音符なら1/3倍するということである。ステップ615で、av=av+dt/4を求める。ステップ616でavの値をリターンする。これにより、i=0から開始して4回Average4関数を呼ぶことにより、その4回分の有効演奏入力を四分音符に換算した時間の平均値が出力される。
【0027】
図5(a)に戻って、ステップ510の後、ステップ511ではレジスタiが3か否か判定する。3でないときはiをインクリメントし、ステップ506に戻る。iが3であるときは、ステップ512で暫定テンポの値を基準テンポにセットし、ステップ513で音価テーブルを初期化して(すなわち図6(a)の呼び出し)、ステップ505に戻る。以上により、有効なノートが4回検出される度に、基準テンポを暫定テンポで更新し、音価テーブルを新たな基準テンポに基づいて再初期化する。
【0028】
図5(b)は、GetTempo()関数521の処理を示す。これは他ルーチンから呼び出されたとき、最新の基準テンポを返す関数である。ステップ522で、基準テンポをリターンする。
【0029】
図7(a)は、本実施形態における基準テンポの更新の具体例を示す。711は演奏者により演奏入力された音符を示す。これらの音符にはn01からの通し記号を付してある。nの添字は幾つめの入力であるかを示す。712は各演奏入力間の時間間隔(msec)を示す。まず、図7(1)の1拍目と3拍目で再生テンポを切り替える例を説明する。再生小節位置の1−1,1−2,…,2−1,2−2,…は、それぞれ、1小節目の1拍目、1小節目の2拍目、…、2小節目の1拍目、2小節目の2拍目、…を示す。再生テンポは、自動演奏でシーケンスデータが実際に再生されるテンポを示す。
【0030】
ノートn01〜n08はプリカウントのための演奏入力である。最後の時間間隔(n07からn08までの500msec)を基準テンポとして設定するので、n08のタイミングから500msec経過した矢印701のタイミングからシーケンスデータに基づく自動演奏が再生開始する。このときの基準テンポは500msecであり、自動演奏の再生テンポも500msecである。作成される音価テーブルは、この基準テンポの値を基に計算されるので、図7(b)のようになる。なお、図7(b)および(c)では、各音価の有効範囲の最小値(min)からジャストタイミングの時間値を挟んで最大値(max)までの範囲を示した。
【0031】
ノートn08からノートn09までの時間間隔は550msecであり、図7(b)の音価テーブルから四分音符の音価有効範囲に収まる。ノートn09からノートn10までは560msecであり、四分音符の音価有効範囲に収まる。ノートn10からノートn11までは270msecであり、八分音符の音価有効範囲に収まる。ノートn11からノートn12までは275msecであり、八分音符の音価有効範囲に収まる。ノートn12が有効と判定された時点で、有効ノート入力が4回となったので、基準テンポの更新を行う(矢印702)。新しい基準テンポは、(550+560+270×2+275×2)/4=550msecとなる。この新しい基準テンポに基づき、音価テーブルの更新を行う。図7(c)が更新後の音価テーブルである。矢印702の時点では、第1小節の3拍目の途中の演奏データを再生中であるので、再生テンポは以前の500msecが維持されている。また、矢印702のタイミングでの基準テンポの更新はテンポトレースオブジェクト内での更新(ステップ512)であり、その時点では当該更新後の基準テンポは未だシーケンサオブジェクトには伝えられていない。第1小節の4拍目(の先頭)に至ったとき、シーケンサオブジェクト内の基準テンポが上記新しい基準テンポ550msecに更新される(ステップ415)。さらに、図4(b)で説明したように、再生処理では各小節の1,3拍目のタイミングで新たな基準テンポが適用されるから、第2小節の1拍目(の先頭)から実際の再生テンポが550msecとなる。
【0032】
引き続き、ノートn12からノートn13までは280msecであり、図7(c)の音価テーブルから八分音符の音価有効範囲に収まる。ノートn13からノートn14までは70msecであり、何れの音価有効範囲にも収まらないので無効と見なす。ノートn13からノートn15までは70+210=280msecであり、八分音符の音価有効範囲に収まる。ノートn15からノートn16までは620msecであり、何れの音価有効範囲にも収まらないので無効と見なす。ノートn15からノートn17までは620+300=920msecであり、付点四分音符の音価有効範囲に収まる。ノートn17からノートn18までは154msecであり、一六分音符の音価有効範囲に収まる。ノートn18が有効と判定された時点で、有効ノート入力が4回となったので、基準テンポの更新を行う(矢印703)。新しい基準テンポは、(280×2+(70+210)×2+(620+300)×2+154×4)/4=587msecとなる。この新しい基準テンポに基づき、音価テーブルの更新を行う。矢印703の時点では、第2小節の2拍目の途中の演奏データを再生中であるので、再生テンポは以前の550msecが維持されている。第2小節の4拍目(の先頭)に至ったとき、シーケンサオブジェクト内の基準テンポが新しい基準テンポ587msecに更新され、さらに第3小節の1拍目(の先頭)から実際の再生テンポが587msecとなる。
【0033】
上述の図7(1)では1拍目と3拍目で再生テンポを切り替えたが、図7(2)のように基準テンポを更新した後の次拍タイミングで切り替えてもよい。図7(2)では、基準テンポを更新した矢印702や703の次の拍タイミングで再生テンポを切り替えている。さらに図7(3)のように基準テンポを更新したとき直ちに再生テンポを切り替えるようにしてもよい。図7(3)では、基準テンポを更新した矢印702や703のタイミングですぐに再生テンポを切り替えている。また、さらに別のタイミングで切り替えるようにしてもよい。
【0034】
次に、上記実施の形態の第1の変形例を説明する。この変形例は、上記実施の形態における図5(a)のテンポトレースオブジェクトでの処理を一部変形したものである。
【0035】
テンポトレースオブジェクトでの処理ではΔtが音価テーブルで定義された音価の有効範囲に入るか否か判定している。音価の有効範囲に入らないノートは、チャタリングあるいは和音構成音等のほぼ同時に演奏入力されるノート、または演奏技能・音楽能力が未熟なことに起因する演奏タイミングのずれたノート、の2種類に大別される。前者は先着のノートのみを有効とし、上記実施の形態と同様に後着のノートは無視すべきである。後者の場合、必ずしも無視してよいとは限らない場合がある。例えば、入力タイミングがずれたものと、有効範囲に収まったものが連続する等の場合、本来有効範囲に収まっていたノートまでもが無効として判定される可能性がある。例えば、上記実施形態の図7(a)の具体例では、ノートn16が無効になるので、次にノートn15〜ノートn17の区間を620+300=920msecと求め、これが音価有効範囲に収まるのでノートn17を有効な入力と判定した。ここで、もしノートn16〜ノートn17までの時間間隔が309msecであった場合、この間隔自体は本来八分音符の有効範囲(図7(c))に入るが、ノートn16が無効ノートであるので、ノートn15〜ノートn17の区間全体の時間間隔620+309=929msecを音価テーブルから探すことになり、これはどの音価有効範囲にも入らないので無効と判定されてしまう。
【0036】
そこで、本変形例では、上記2種類の「有効範囲に入らないノート」を区別して扱うようにした。図8は、テンポトレース処理の変形例の手順を示す。図5のステップ506〜509を、ステップ801〜805に置き換えるものとする。ステップ801,802,803,805は、ステップ506,507,508,509と同じ処理である。ステップ804では、Δtが所定の閾値以上か判定する。閾値以上でないときは、チャタリングあるいは和音構成音等のほぼ同時に演奏入力されるノートと見なし、先着のノートのみを有効とし今回のノートは無効とするため、ステップ802に戻る。ステップ805でΔtが音価有効範囲に入らなかったときは、演奏技能・音楽能力が未熟なことに起因する演奏タイミングのずれたノートと見なし、先着のノートを無効とし今回のノートから次のノートまでの時間を求めるため、ステップ801に戻る。
【0037】
図7(a)の具体例の場合、ノートn14はチャタリングとして無視され、ノートn13〜ノートn15までの時間間隔と音価の有効範囲とが対比される。一方、ノートn16はミスノートとして扱われ、ノートn15〜ノートn17までの時間間隔ではなく、ノートn16〜ノートn17までの時間間隔と音価の有効範囲とが対比される。この場合、2度目のテンポ更新によるテンポ値は587msecではなく、549msecとなる。
【0038】
次に、第2の変形例について説明する。ミスノートが連続するなどした場合、長期間にわたりテンポの検出が行われないことがある。上記実施形態の方式では、全音符に相当する時間を超えて有効なノートが検出されなかった場合、有効な音価として全音符以上の長さを音価テーブルに定義していないためそれ以降のテンポ検出が不可能である。その対応として、本変形例では、全音符に相当する時間有効なノートが検出されなかった場合は、例えば「テンポ追従のループ処理(505〜514)においてi=−1にセットし、次の有効ノートからテンポトレースを仕切り直す。」等の例外処理を行う。あるいは、テンポ追従が不可能になった時点で演奏をストップするようにしてもよい。
【0039】
なお、上記実施形態では、有効とする音価を7種類としたが、これ以外の音価(例えば三連符(1/3拍)等)を含めてもよい。この場合、隣接する音価との区別が困難な場合(三連符と十六分音符は時間間隔が近いため、有効範囲を±12.5%で定義すると有効範囲が重複する)は、何れの音価の有効範囲を適用するか選択できるようにするとよい。
【0040】
各音価の有効時間範囲は、各音価のジャストタイム±12.5%としたが、例えば各音価共通の有効範囲(100msecで固定したり、基準テンポ四分音符の12.5%等)としてもよい。また、ジャストタイムを中心とした正方向の有効範囲と負方向の有効範囲を非対称としてもよい。また、音価に応じて有効時間範囲幅を変更してもよい(例えば、四分音符は±5%だが、全音符は±12.5%とする等、演奏誤差の発生しやすさに応じて有効幅を設定してもよい)。
【0041】
初期基準テンポの特定については、例えば以下のような変形例がありうる。第1に、プリカウント中の特定区間の時間間隔を初期基準テンポに採用する(上記実施形態含む)。第2に、プリカウント(8個の演奏入力)間の時間間隔の平均を初期基準テンポに採用する。第3に、別途、設定パネル等において固定的に設定しておく。また、上記実施形態ではプリカウントを四分音符8個分の演奏入力としたが、プリカウントのリズムあるいはプリカウントの個数は他の数であってかまわない。基準テンポの更新は、有効入力4回毎としたが他の数(2,3,5等)でもよい。
【0042】
再生シーケンス処理において、基準テンポを不連続に切り替えているが、所定の期間(例えば0.3拍)で徐々に変化するよう処理してもよい。あるいは所定の変化量(テンポ変化の傾き)でテンポを徐々に変更するよう処理してもよい。さらに、現在の基準テンポを報知する手段(演奏テンポの数値表示・LEDやインジケータの明滅・メトロノーム音の発生等)を備えてもよい。
【0043】
上記実施形態では、演奏データシーケンスの再生を行うもので説明をしたが、他のシーケンスデータ(伴奏コードを指定するコードシーケンス、電子楽器の種々の設定状態を保持するレジストレーションデータを時間的に並べたレジストシーケンス、伴奏(演奏)パターンの再生順序を定めたパターンシーケンス、映像効果の制御データ等の順序を定めた映像シーケンス等)であってもよい。こういったシーケンスを再生する場合、次の拍タイミングに到達する前に(例えば次の拍タイミングの0.3拍前に)シーケンスの進行を行うように処理することが演奏上望ましい(ジャストタイミングで進行すると、演奏者はシーケンス進行に追従できない)。
【0044】
上記例示する他のシーケンスデータの場合、さらに、特定のタイミング(例えば基準テンポに基づいて推定される2拍目や4拍目等)に演奏入力があったことを検知した場合にのみ、シーケンスを進行させるようにしてもよい。音楽ジャンルによっては演奏入力の確率の高い特定のタイミングがあり(例えば所謂ポップスジャンルにおいては2拍目、4拍目といったアフタービート)、このような変形例は演奏指導等の教育的利用に効果的である。
【0045】
本発明は、いわゆる電子楽器のほか、PC、ゲーム機、STB(Set-Top Box)、あるいはPDA(Personal Digital Assistant)などのコンピュータ機器のソフトウェアに適用することも可能である。
【0046】
【発明の効果】
以上説明したように、この発明によれば、演奏者が再生テンポに追従するのではなく、演奏者のペースに再生テンポが追従する演奏システムを提供することができる。また、基準テンポの算出は拍毎あるいは小節毎ではなく、入力されたノート一定数分毎(例えば4音毎)に行うことにより、拍毎や小節毎に算出するのに比べてより細やかなテンポ追随が可能となる。
【図面の簡単な説明】
【図1】 実施の形態の自動演奏装置の概略構成図
【図2】 本装置のメインルーチンの処理手順を示す図
【図3】 ノートイベントハンドラの処理手順を示す図
【図4】 シーケンサオブジェクトの処理手順を示す図
【図5】 テンポトレースオブジェクトの処理手順を示す図
【図6】 音価テーブルの初期化処理とAverage4関数の処理手順を示す図
【図7】 基準テンポの更新の具体例を示す図
【図8】 テンポトレース処理の変形例を示す図
【符号の説明】
101…中央処理装置(CPU)、102…記憶手段、103…入力手段、104…出力手段、105…通信手段、110…バスライン。
Claims (3)
- 基準テンポに基づくテンポでシーケンスデータの再生を行う再生手段と、
演奏者による演奏入力デバイスの演奏操作を検出し、該演奏操作に応じてノートイベントを発生し、該ノートイベントに応じた楽音を出力する演奏操作処理手段と、
前記ノートイベントが発生した時点の間の時間間隔を求める時間間隔取得手段と、
複数種類の音価に相当する時間間隔範囲を規定する情報である音価テーブルを記憶する記憶手段と、
前記時間間隔取得手段により求めた時間間隔を前記音価テーブルと照合して、該時間間隔に対応する音価を求める音価取得手段であって、該照合の結果、該時間間隔が前記音価テーブルの何れかの音価の時間間隔範囲に収まっていたときはその時間間隔を有効とし、収まっていなかったときはその時間間隔を無効とするものと、
所定個数の有効な時間間隔から求めた音価に基づいて前記基準テンポを更新するテンポ更新手段と、
を備えることを特徴とする演奏制御装置。 - 請求項1に記載の演奏制御装置において、
前記音価テーブルは、各音価に対応する最小時間間隔値情報及び最大時間間隔値情報により時間間隔範囲を規定するものであり、
前記テンポ更新手段は、前記基準テンポに基づいて前記音価テーブルの各音価の最小時間間隔値情報及び最大時間間隔値情報をも更新するものであることを特徴とする演奏制御装置。 - コンピュータを、
基準テンポに基づくテンポでシーケンスデータの再生を行う再生手段と、
演奏者による演奏入力デバイスの演奏操作を検出し、該演奏操作に応じてノートイベントを発生し、該ノートイベントに応じた楽音を出力する演奏操作処理手段と、
前記ノートイベントが発生した時点の間の時間間隔を求める時間間隔取得手段と、
複数種類の音価に相当する時間間隔範囲を規定する情報である音価テーブルを記憶する記憶手段と、
前記時間間隔取得手段により求めた時間間隔を前記音価テーブルと照合して、該時間間隔に対応する音価を求める音価取得手段であって、該照合の結果、該時間間隔が前記音価テーブルの何れかの音価の時間間隔範囲に収まっていたときはその時間間隔を有効とし、収まっていなかったときはその時間間隔を無効とするものと、
所定個数の有効な時間間隔から求めた音価に基づいて前記基準テンポを更新するテンポ更新手段と
を備える演奏制御装置として機能させることを特徴とする演奏制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003081808A JP4251895B2 (ja) | 2003-03-25 | 2003-03-25 | 演奏制御装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003081808A JP4251895B2 (ja) | 2003-03-25 | 2003-03-25 | 演奏制御装置およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004287308A JP2004287308A (ja) | 2004-10-14 |
JP4251895B2 true JP4251895B2 (ja) | 2009-04-08 |
Family
ID=33295242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003081808A Expired - Fee Related JP4251895B2 (ja) | 2003-03-25 | 2003-03-25 | 演奏制御装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4251895B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4714479B2 (ja) * | 2005-02-21 | 2011-06-29 | セイコーインスツル株式会社 | 電子式メトロノームおよび電子式メトロノームのテンポ設定方法 |
CN100409662C (zh) * | 2006-02-14 | 2008-08-06 | 深圳创维数字技术股份有限公司 | 自动放映的文件的制做方法及该文件的播放方法 |
JP4320782B2 (ja) * | 2006-03-23 | 2009-08-26 | ヤマハ株式会社 | 演奏制御装置、およびプログラム |
JP5672280B2 (ja) * | 2012-08-31 | 2015-02-18 | カシオ計算機株式会社 | 演奏情報処理装置、演奏情報処理方法及びプログラム |
JP2019200390A (ja) | 2018-05-18 | 2019-11-21 | ローランド株式会社 | 自動演奏装置および自動演奏プログラム |
-
2003
- 2003-03-25 JP JP2003081808A patent/JP4251895B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004287308A (ja) | 2004-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170213534A1 (en) | Interactive, expressive music accompaniment system | |
JP4251895B2 (ja) | 演奏制御装置およびプログラム | |
JP2000056769A (ja) | 演奏情報変換装置および演奏情報変換制御プログラムを記録した媒体 | |
JP3577561B2 (ja) | 演奏分析装置及び演奏分析方法 | |
JP4808868B2 (ja) | 自動演奏装置 | |
JP3259602B2 (ja) | 自動演奏装置 | |
JP4165007B2 (ja) | 楽音データ補正装置 | |
JP5821170B2 (ja) | 電子音楽装置及びプログラム | |
JP3609045B2 (ja) | 自動演奏装置 | |
JP2010185973A (ja) | 発音制御装置 | |
JP3362070B2 (ja) | 自動演奏装置 | |
JP2836028B2 (ja) | 自動演奏装置 | |
JP2017015957A (ja) | 演奏記録装置およびプログラム | |
JP3740717B2 (ja) | 音源装置及び楽音生成方法 | |
JP2004219495A (ja) | 電子楽器 | |
JP2004317775A (ja) | 自動演奏装置および自動演奏処理のプログラム | |
JP3767418B2 (ja) | 自動演奏装置及び自動演奏制御プログラム | |
JP3282675B2 (ja) | 電子楽器 | |
JPH04274297A (ja) | 自動演奏装置 | |
JPH04257895A (ja) | 自動伴奏システムのコードステップレコーディング装置及び方法 | |
JP2533907B2 (ja) | リズムマシ―ン | |
JP2018097158A (ja) | 電子打楽器、テンポ更新方法およびテンポ更新プログラム | |
JP2580872Y2 (ja) | 電子楽器 | |
JP2665854B2 (ja) | 自動演奏装置 | |
JP2001042862A (ja) | 与えられたリズムに応じて再生を制御する装置および方法,ならびに再生制御のためのプログラムを格納した媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071012 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071026 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080319 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080410 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080611 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080619 |
|
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: 20090120 |
|
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: 20090120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4251895 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120130 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120130 Year of fee payment: 3 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120130 Year of fee payment: 3 |
|
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: 20130130 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140130 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |