JP2018146782A - タイミング制御方法 - Google Patents
タイミング制御方法 Download PDFInfo
- Publication number
- JP2018146782A JP2018146782A JP2017041650A JP2017041650A JP2018146782A JP 2018146782 A JP2018146782 A JP 2018146782A JP 2017041650 A JP2017041650 A JP 2017041650A JP 2017041650 A JP2017041650 A JP 2017041650A JP 2018146782 A JP2018146782 A JP 2018146782A
- Authority
- JP
- Japan
- Prior art keywords
- time
- event
- score
- timing control
- events
- 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.)
- Pending
Links
Images
Landscapes
- Auxiliary Devices For Music (AREA)
Abstract
【課題】より少ないコンピュータ資源で、外部装置におけるシーケンスに係るイベントの命令を出力するタイミングを制御する。【解決手段】第1遅延時間および当該第1遅延時間と異なる第2遅延時間を取得し、現在時刻から第1遅延時間および第2遅延時間がそれぞれ経過した場合の、シーケンス上の予想位置である第1位置および第2位置を取得するステップと、第1位置および第2位置を用いて、現実時刻からシーケンス上の位置を得るための近似関数を決定するステップと、複数のイベントのうち対象となる対象イベントについて、現在時刻から当該対象イベントに対応する遅延時間が経過した第1時刻を近似関数に代入して得られる第3位置から、第1時刻から基準時間が経過した第2時刻を近似関数に代入して得られる第4位置までの範囲に、当該対象イベントが位置する場合に、当該対象イベントを発生させる命令を外部装置に出力する。【選択図】図10
Description
本発明は、複数のイベントのシーケンスを外部装置に実行させる場合に、そのイベントの命令を出力するタイミングを制御する技術に関する。
人間の演奏者と自動演奏楽器とによる合奏等をするためのシステムにおいては、人間が楽譜上のどの位置を演奏しているのか推定し、さらにこの推定に基づいて自動演奏楽器が次の音を演奏するタイミングを予想する処理が行われる。例えば特許文献1には、演奏の音響信号から、その演奏が楽譜上でどの位置にあるかを推定する技術が記載されている。
自動演奏楽器等の外部装置は、命令を受けてからイベントを実行するまでの間に遅延がある。この遅延も加味して演奏者の演奏と同期を取るには、指定された時刻における楽譜内位置を予想する必要がある。特に、イベントに応じて遅延の値が異なるような場合は、イベント毎にこの予想を行わなければならず、予想に多大なコンピュータ資源が必要であるという問題があった。
これに対し本発明は、より少ないコンピュータ資源で、外部装置におけるシーケンスに係るイベントの命令を出力するタイミングを制御する技術を提供する。
本発明は、外部装置における複数のイベントのシーケンスを示すデータを取得するステップと、前記複数のイベントについて前記外部装置がイベントの命令を受けてから当該イベントを発生させるまでの遅延時間に関し、第1遅延時間および当該第1遅延時間と異なる第2遅延時間を取得するステップと、現在時刻から前記第1遅延時間および前記第2遅延時間がそれぞれ経過した場合の、前記シーケンス上の予想位置である第1位置および第2位置を取得するステップと、前記第1位置および前記第2位置を用いて、現実時刻から前記シーケンス上の位置を得るための近似関数を決定するステップと、前記複数のイベントのうち対象となる対象イベントについて、現在時刻から当該対象イベントに対応する遅延時間が経過した第1時刻を前記近似関数に代入して得られる第3位置から、前記第1時刻から基準時間が経過した第2時刻を前記近似関数に代入して得られる第4位置までの範囲に、当該対象イベントが位置する場合に、当該対象イベントを発生させる命令を前記外部装置に出力するステップとを有するタイミング制御方法を提供する。
前記外部装置は自動演奏楽器であり、前記複数のイベントは、前記自動演奏楽器における発音を制御するためのイベントであってもよい。
前記外部装置は、複数の物理ユニットを含み、前記複数の物理ユニットのうち一の物理ユニットに関する第1イベントおよび第2イベントの組が繰り返し発生することが予想された場合、当該第2イベントの前記シーケンス上の位置を早めるステップを有してもよい。
本発明によれば、より少ないコンピュータ資源で、外部装置におけるシーケンスに係るイベントの命令を出力するタイミングを制御することができる。
1.概要
図1は、一実施形態に係る合奏システム1の構成を示す図である。合奏システム1は、人間の演奏者Pと自動演奏楽器30とが合奏を行うためのシステムである。すなわち、合奏システム1においては、演奏者Pの演奏に合わせて自動演奏楽器30が演奏を行う。合奏システム1は、タイミング制御装置10、センサー群20、および自動演奏楽器30を有する。合奏システム1および演奏者Pにおいて、合奏する楽曲は既知である。すなわち、タイミング制御装置10は、合奏する楽曲の楽譜を示すデータを記憶している。
図1は、一実施形態に係る合奏システム1の構成を示す図である。合奏システム1は、人間の演奏者Pと自動演奏楽器30とが合奏を行うためのシステムである。すなわち、合奏システム1においては、演奏者Pの演奏に合わせて自動演奏楽器30が演奏を行う。合奏システム1は、タイミング制御装置10、センサー群20、および自動演奏楽器30を有する。合奏システム1および演奏者Pにおいて、合奏する楽曲は既知である。すなわち、タイミング制御装置10は、合奏する楽曲の楽譜を示すデータを記憶している。
演奏者Pは楽器を演奏する。センサー群20は、演奏者Pの挙動に関する情報を検知するものであり、この例では、演奏者Pの前に置かれたマイクロフォンを含む。マイクロフォンは、演奏者Pにより演奏される楽器から発せられる演奏音を集音し、その演奏音を音信号に変換して出力する。タイミング制御装置10は、センサー群20から供給される音信号を実時間的に解析し、(1)楽譜位置の推定、(2)自動演奏楽器30による次の発音時刻の予想、および(3)自動演奏楽器30に対する演奏命令の出力、の3つの処理を行う。すなわち、タイミング制御装置10は、演奏者Pの演奏に追従して自動演奏楽器30が演奏するタイミング(次の自動イベントのタイミングの一例)を制御する装置である。楽譜位置の推定は、演奏者Pおよび自動演奏楽器30による合奏が楽譜上のどの位置にいるかを推定する処理である。発音時刻の予想は、楽譜位置の推定結果を用いて、自動演奏楽器30が次の発音を行うべき時刻(タイミング)を予想する処理である。演奏命令の出力は、自動演奏楽器30に対する演奏命令を、予想された発音時刻に応じて出力する処理である。自動演奏楽器30は、タイミング制御装置10により供給される演奏命令に応じて自動的に(すなわち人間の操作無しに)演奏を行う楽器であり、一例としては自動演奏ピアノである。
まず、自動演奏楽器30に対する演奏命令の出力処理における技術的な問題点について検討する。検討に先立ち、前提条件を明示する。自動演奏楽器30における演奏を制御するための楽曲データは、N個(Nは自然数)のイベント(例えばMIDIイベント。より具体的には、ノートオンイベントおよびノートオフイベント等)から構成される。これらN個のイベントは、それぞれ、楽譜内(楽曲内)で進行する時間軸上の位置に配置される。楽譜内の時間軸は、現実時間とは異なる単位、一例としてはMIDIにおけるティックで表される。以下、楽譜内における時間軸上の位置を楽譜内位置sという。楽曲データに含まれるN個のイベントのうちn番目(nは、n≦Nを満たす自然数)のイベントを、以下、単にイベントnという。楽譜内位置sは、イベントnおよび実時刻tに応じて決まる(すなわち、楽譜内位置sはnおよびtの関数である)。イベントnとの関係を議論するときは、楽譜内位置sがnの関数であることを強調するため楽譜内位置s(n)と記載する。現実時刻tとの関係を議論するときは、楽譜内位置sがtの関数であることを強調するため楽譜内位置s(t)と記載する。
1曲の楽曲を通じて完全に同一のテンポで演奏をした場合、楽譜内位置sと現実時刻tとの関係は線形である。しかし実際には、音楽表現上の意図により、または演奏者Pの技術的な問題により、楽曲を通じてテンポが同一のままであり続けることはあり得ない。
図2は、楽譜内位置s(t)と現実時刻tとの関係を例示する図である。図2の例では、楽曲内の時間領域D1では相対的にテンポが速くなっており、時間領域D2ではテンポが遅くなっている。楽譜内位置s(t)の現実時刻tとがこのような関係にあるという前提の下、演奏命令の出力処理における技術的な問題点を説明する。
図3は、演奏命令の出力するタイミングを決定する処理を示す概念図である。図3は、演奏の途中の状態を示しており、このときt=tcである。演奏の途中であるので、t≦tcの範囲ではs(t)は確定しているが、t>tcの範囲ではs(t)は未確定であり、この範囲のs(t)はあくまで予測値である(図では破線で示される)。
ところで、自動演奏楽器30は、演奏命令が入力されると直ちに演奏音を出力することが理想である。しかし、実際には、演奏命令が入力されてから演奏音が出力されるまでの間には遅延がある。この遅延は、例えば、自動演奏楽器を構成する物理ユニット(発音機構。例えばピアノにおいて弦を打つハンマー)の駆動に起因する。例えば自動演奏楽器30がピアノである場合、自動演奏楽器30は、演奏命令を受けてからハンマーを駆動して打弦する。ハンマーを駆動し始めてから打弦されるまでの時間が遅延に相当する。この例からわかるように、遅延は一定ではなく、イベントに応じて異なる。例えば、同じ鍵を打つ場合でも、打鍵速度が遅いとき遅延は長く、打鍵速度が速いとき遅延は短くなる。あるいは、同じ打鍵速度でも鍵によって遅延は異なる。そこで、イベントnに対する遅延を遅延T(n)と表す。
遅延T(n)があるため、s(tc)=s(n)となった瞬間に自動演奏楽器30に演奏命令を出力するのではイベントnを演奏者Pの演奏と同期させることはできない。イベントnを演奏者Pの演奏と同期させて発生させるには、タイミング制御装置10は、イベントnの楽譜内位置s(n)に対応する現実時刻tnに対し、時刻(tn−T(n))に演奏命令を出力する必要がある。このように、自動演奏楽器30に対する演奏命令の出力処理とは、楽曲データ、時刻tにおいて再生すべき楽譜内位置s(t)、および遅延T(n)が入力された(与えられた)場合に、演奏者Pの演奏と同期したタイミングで演奏音が出力されるように、適切なタイミングで演奏命令を出力する処理をいう。
実際には、タイミングの判断はある一定の時間間隔毎に行われる。この時間間隔をループ間隔dTという。例えば、イベントn1に対しては(図3(A))、現在時刻tcに対して、時刻(tc+T(n1))から時刻(tc+T(n1)+dT)に対応する楽譜内位置s(tc+T(n1))からs(tc+T(n1)+dT)の範囲R1内にイベントn1が配置されていた場合に、タイミング制御装置10は演奏命令を出力する。あるいは、イベントn2に対しては(図3(B))、現在時刻tcに対して、時刻(tc+T(n2))から時刻(tc+T(n2)+dT)に対応する楽譜内位置s(tc+T(n2))からs(tc+T(n2)+dT)の範囲R2内にイベントn2が配置されていた場合に、タイミング制御装置10は演奏命令を出力する。以下、この処理をより具体的に説明する。
図4は、関連技術に係る演奏命令の出力処理を示すフローチャートである。ステップS91において、タイミング制御装置10は、時刻tを初期化する。この例では、t=0に初期化される。これ以降、図4のフローは、ループ間隔dTで繰り返し実行される(ループ処理される)。ステップS92において、タイミング制御装置10は、楽曲データに含まれるイベントのうち、対象となるイベント(以下「対象イベント」という)ntを決定する。
ステップS93において、タイミング制御装置10は、対象イベントntについて次式(1)の条件が満たされるか判断する。
式(1)の条件は、現在時刻から遅延T(nt)が経過した後の現実の時刻に対応する楽譜内位置s(t+T(nt))から、次回の処理時における楽譜内位置s(t+dT+T(nt))までの間に、対象イベントntが配置されているか否かを判断するための条件である。式(1)の条件が満たされると判断された場合(S93:YES)、タイミング制御装置10は、処理をステップS94に移行する。式(1)の条件が満たされないと判断された場合(S93:NO)、タイミング制御装置10は、処理をステップS95に移行する。
ステップS94において、タイミング制御装置10は、イベントntを実行させるための演奏命令を自動演奏楽器30に出力する。
ステップS95において、タイミング制御装置10は、楽曲データに含まれるすべてのイベントに対して処理が行われたか判断する。まだ対象イベントとなっていない処理が存在すると判断された場合(S95:NO)、タイミング制御装置10は、処理をステップS92に移行する。ステップS92において、タイミング制御装置10は、対象イベントを次のイベントに更新する。すべてのイベントに対して処理が行われたと判断された場合(S95:YES)、タイミング制御装置10は、処理をステップS96に移行する。
ステップS96において、タイミング制御装置10は、ステップS92の処理を開始してから時間dTが経過したか判断する。時間dTが経過していないと判断された場合(S96:NO)、タイミング制御装置10は、時間dTが経過するまで待機する。時間dTが経過したと判断された場合(S96:YES)、タイミング制御装置10は、経過時間を計測するタイマーおよび対象イベントをリセットし、処理を再びステップS92に移行する。
このように、演奏命令の出力タイミングを決定するためには、各イベントにつき2回ずつ、指定された時刻における楽譜内位置sを計算(予測)する必要がある。楽曲データにN個のイベントが含まれている場合、ループ間隔dTの間に合計で2N回、楽譜内位置s(t)を計算しなければならない。既に説明したように、楽譜内位置s(t)は、演奏者Pの演奏に応じて動的に変化する。例えば、演奏者Pが演奏のテンポを速めたり遅くしたりすると、それに合わせて楽譜内位置s(t)は動的に変化する。一般に楽譜内位置s(t)を予測するには多くのコンピュータ資源を消費する。例えば、シミュレーションまたはインタプリタ言語を経由して楽譜内位置s(t)を予測には、無視できない負荷がプロセッサにかかる。また、図4のフローを実行している間にも、演奏者Pの演奏に応じて楽譜内位置s(t)は動的に変化し得るので、楽譜内位置s(t)を事前に計算しておくこともできない。本実施形態は、このような、タイミング制御装置10のプロセッサに多大な計算負荷がかかるという問題に対処する。
上記の問題に対処するための技術的手段の一つは、楽譜内位置s(t)をより計算負荷の少ない関数で近似することである。この例では、次式(2)により楽譜内位置が線形近似される。
式(2)を用いることで、式(1)の条件は次式(3)のように書き替えられる。
なお、式(3)における係数aおよびbは、ループ(すなわち図4のフローのステップS92〜S95の処理)の前に計算される。例えば、遅延T(n)の最小値Tminおよび最大値Tmaxを用いて、s(t+Tmin)およびs(t+Tmax)の2点補間により線形近似すると、楽譜内位置sはループ間隔dTの間に2回のみ計算すればよい。すなわち、計算負荷を1/Nにすることができる。
図3において、式(2)の近似による近似直線Laを図示する。近似直線Laは、t=tc+Tminおよびt=tc+Tmaxにおけるs(t)の値を用いて得られたものである。この例で、TminおよびTmaxは、第1遅延時間および第2遅延時間の一例である。s(t+Tmin)およびs(t+Tmax)は、現在時刻から第1遅延時間および第2遅延時間がそれぞれ経過した場合の、シーケンス上の予想位置である第1位置および第2位置の一例である。s(tc+T(nt))は、現在時刻から対象イベントに対応する遅延時間が経過した第1時刻を近似関数に代入して得られる第3位置の一例である。s(tc+T(nt+dT))は、第1時刻から基準時間が経過した第2時刻を近似関数に代入して得られる第4位置の一例である。
なお、係数aおよびbは毎ループ計算されなくてもよい。例えば、複数のループに1回、係数aおよびbが計算されてもよい。一例として、dT=10msの場合に係数aおよびbを100ms毎に計算(更新)されてもよい。
上記の問題に対処するための別の技術的手段は、考慮するイベントの数を絞り込むことである。具体的には、タイミング制御装置10は、楽曲データを読み込む際、すべての演奏時刻sに対し、その近傍のイベントの集合E(s)を取得し、これを保持する。その上で、ステップS92において対象イベントntの候補となるイベントnを、楽曲データに含まれるすべてのイベントではなく、
に限定する。ここで、本来、集合E(s(t))には、
を満たす楽譜位置sに配置されたイベントが含まれる必要がある。式(5)のmax_t(s(t+dT+Tmax)-s(t))の項は、次回の処理時における楽譜内位置s(t+dT+T(nt))に相当する楽譜内時間軸上の距離の最大値である。しかし、最大値max_tを計算するのは煩雑である。そこで、ここでは、max_t(s(t+dT+Tmax)−s(t))を、マージンを考慮した固定値smに置換し、
E(s)={楽譜内位置sからs+smの間に含まれるイベント} …(6)
とする。
E(s)={楽譜内位置sからs+smの間に含まれるイベント} …(6)
とする。
また、集合E(s)を、「sを含む一定の区間k=(bk,ek)」の間で同一の集合F(k)になるようにし、保持すべき情報を減らすことができる。例えば、
(b1,e1)=(0,100)
(b2,e2)=(100,200)
F(1)={楽譜内位置0から100+960の間に含まれるイベント}
F(2)={楽譜内位置100から200+960の間に含まれるイベント}
とすると(この例でsm=960である)、
E(s=0)=E(s=1)=…=E(s=99)=F(1)
E(s=100)=E(s=101)=…=E(s=199)=F(2)
となるため保持すべき情報を低減することができる。
(b1,e1)=(0,100)
(b2,e2)=(100,200)
F(1)={楽譜内位置0から100+960の間に含まれるイベント}
F(2)={楽譜内位置100から200+960の間に含まれるイベント}
とすると(この例でsm=960である)、
E(s=0)=E(s=1)=…=E(s=99)=F(1)
E(s=100)=E(s=101)=…=E(s=199)=F(2)
となるため保持すべき情報を低減することができる。
なお、既に処理済みのイベントが再度実行されることがないように(同じ音符が2度演奏されることがないように)、対応する演奏命令を出力済のイベントは、対象イベントの候補から除外される。これは、例えば、処理済/未済を示すフラグをイベント毎に保持することにより実現される。
本実施形態によれば、楽譜内位置s(t)の計算(予想)を呼び出す回数が1/Nに低減される。そのため、楽譜内位置s(t)の計算負荷を低減することができる。また、計算が呼び出される回数が低減されるため、楽譜内位置s(t)の計算を外部スクリプト言語またはゲームエンジンなど、比較的処理が遅い言語で実装することもでき、タイミング制御装置10の拡張性を増大させることができる。さらに、楽譜内位置s(t)が簡単な関数で表せないもの(例えばディープラーニングで用いられるような多層ニューラルネット)、または解析的に記述できないもの(例えば、カオス系の解)で記述されていた場合であっても、比較的効率的にシーケンスを制御することができる。
2.構成
図5は、タイミング制御装置10の機能構成を例示する図である。タイミング制御装置10は、入力部11、記憶部12、推定部13、予想部14、出力部15、および表示部16を有する。入力部11は、センサー群20から音信号の入力を受け付ける。記憶部12は、各種のデータを記憶する。この例で、記憶部12は、楽曲データおよび遅延データを記憶する。楽曲データは、演奏者Pと合奏する楽曲の楽譜を示すデータである。楽曲データは、少なくとも、発音タイミングおよび音高を示す情報を含んでいる。発音タイミングは、楽譜において設定された単位時間(一例としては32分音符)を基準として表される。楽曲データは、発音タイミングおよび音高に加え、音長、音色、および音量の少なくとも1つを示す情報を含んでもよい。一例として、楽曲データはMIDI(Musical Instrument Digital Interface)形式のデータである。
図5は、タイミング制御装置10の機能構成を例示する図である。タイミング制御装置10は、入力部11、記憶部12、推定部13、予想部14、出力部15、および表示部16を有する。入力部11は、センサー群20から音信号の入力を受け付ける。記憶部12は、各種のデータを記憶する。この例で、記憶部12は、楽曲データおよび遅延データを記憶する。楽曲データは、演奏者Pと合奏する楽曲の楽譜を示すデータである。楽曲データは、少なくとも、発音タイミングおよび音高を示す情報を含んでいる。発音タイミングは、楽譜において設定された単位時間(一例としては32分音符)を基準として表される。楽曲データは、発音タイミングおよび音高に加え、音長、音色、および音量の少なくとも1つを示す情報を含んでもよい。一例として、楽曲データはMIDI(Musical Instrument Digital Interface)形式のデータである。
図6は、遅延データの内容を例示する図である。遅延データは、自動演奏楽器30における遅延を示すデータである。既に説明したように、自動演奏楽器30において、演奏命令が入力されてから演奏音が出力されるまでの間には遅延がある。この遅延は一定ではなくイベントに応じて異なる。この例では、遅延データはテーブルの形式を有する。このテーブルには、演奏命令により駆動される鍵および演奏命令に含まれるベロシティ(発音を制御するためのパラメーターの一例)の値と対応付けて、それぞれ独自の遅延の値が記録される。
推定部13は、入力された音信号を解析し、いま楽譜上のどの位置が演奏されているかを推定する。推定部13は、まず、音信号からオンセット時刻(発音開始時刻)および音高に関する情報を抽出する。次に、推定部13は、抽出された情報から、演奏がいま楽譜上のどの位置にいるかを示す確率的な推定値を計算する。推定部13は、計算により得られた推定値を出力する。この例で、推定部13が出力する推定値は、発音位置s、観測ノイズq、および時刻tcを含む。発音位置sは、前述の楽譜内位置sに相当し、発音された音の楽譜上の相対的な位置(例えば、5小節目の2拍目)を示す。ノイズqは、発音位置の観測ノイズ(確率的な揺らぎ)を示す。発音位置uおよびノイズqは、楽譜において設定された単位時間を単位とする。時刻Tは、発音が観測された時刻(実時間上の位置)を示す。
予想部14は、推定部13から供給される推定値を観測値として、自動演奏楽器30による次の発音時刻の予想を行う。発音時刻の予想にはどのようなアルゴリズムが用いられてもよいが、例えば、いわゆるカルマンフィルタを用いた予想が行われる。発音時刻の予想モデルとしては例えば回帰モデルおよび動的モデルが知られており、予想部14はこれらのいずれか一方または両方を組み合わせて発音時刻を予想する。回帰モデルは、演奏者Pおよび自動演奏楽器30による発音時刻の履歴を用いて次の発音時刻を推定するモデルである。動的モデルは、観測値(発音位置s等)の背後に、この観測値を定める状態変数があると仮定するモデルである。状態変数は状態空間をある規則で遷移し、さらにプロセスノイズが加算される。
出力部15は、予想部14から入力された予想時刻に応じて、次に発音すべき音符に対応する演奏命令を自動演奏楽器30に出力する。タイミング制御装置10は内部クロック(図示略)を有しており、時刻を計測している。この演奏命令は所定のデータ形式に従って記述されている。所定のデータ形式とは例えばMIDIであり、演奏命令は、ノートオンメッセージ、ノート番号、およびベロシティを含む。
図7は、出力部15の機能構成を例示する図である。出力部15は、取得部151、取得部152、取得部153、近似部154、および決定部155を有する。取得部151は、楽曲データを取得する。取得部152は、演奏音の出力タイミングに関する情報を取得する。演奏音の出力タイミングに関する情報は、例えば、現在時刻tcに対応する楽譜内位置s(t)を含む。取得部153は、楽譜内位置s(t)の近似関数の決定に用いられる遅延の値を取得する。近似関数の決定には、少なくとも2つの異なる遅延の値、例えば最大値および最小値が用いられる。近似部154は、楽譜内位置s(t)の近似関数を決定する。近似関数の決定とは、近似関数における係数を決定することをいい、具体的には、式(2)の係数aおよびbを決定することをいう。決定部155は、現在時刻tに対応する楽譜内位置s(t)を基準とする所定の範囲に配置されたイベントの集合E(s(t))が、式(1)(この場合は式(3)と等しい)の条件を満たすイベントnを含んでいた場合、そのイベントnに対応する演奏命令を出力することを決定する。
表示部16は、楽譜位置の推定および次の発音時刻の予想に関する情報を表示する。楽譜位置の推定に関する情報は、例えば、楽譜、入力された音信号の周波数スペクトログラム、および推定位置の確率分布のうち少なくとも1つを含む。次の発音時刻の予想に関する情報は、例えば、状態変数を含む。これらの情報を表示することにより、タイミング制御装置10の操作者がシステムの動作状態を把握することができる。
図8は、タイミング制御装置10のハードウェア構成を例示する図である。タイミング制御装置10は、CPU(Central Processing Unit)101、メモリ102、ストレージ103、入出力IF104、および表示装置105を有するコンピュータ装置である。CPU101は、タイミング制御装置10の各部を制御する制御装置である。メモリ102は、CPU101がプログラムを実行する際のワークエリアとして機能する主記憶装置である。ストレージ103は、各種のプログラムおよびデータを記憶する不揮発性の記憶装置である。入出力IF104は、他の装置との間で信号または命令の入力または出力を行うためのインターフェースである。入出力IF104は、例えば、マイクロフォン入力およびMIDI出力を含む。表示装置105は、各種の情報を出力する装置であり、例えばLCD(Liquid Crystal Display)を含む。
ストレージ103は、コンピュータ装置を合奏システム1におけるタイミング制御装置10として機能させるためのプログラム(以下「タイミング制御プログラム」という)を記憶している。CPU101がこのプログラムを実行することにより、図4に示した機能が実装される。このプログラムを実行しているCPU101は、入力部11、推定部13、予想部14、および出力部15の一例である。メモリ102およびストレージ103の少なくとも一方は、記憶部12の一例である。表示装置105は、表示部16の一例である。
3.動作
図9は、タイミング制御装置10の動作の概要を例示するシーケンスチャートである。図9のフローは、例えば、タイミング制御プログラムが起動されたことを契機として開始される。なお、以下の説明において推定部13等のソフトウェア要素を処理の主体として記載することがあるが、これは、タイミング制御プログラムを実行しているCPU101が他のハードウェア要素と協働して処理を実行することを意味する。
図9は、タイミング制御装置10の動作の概要を例示するシーケンスチャートである。図9のフローは、例えば、タイミング制御プログラムが起動されたことを契機として開始される。なお、以下の説明において推定部13等のソフトウェア要素を処理の主体として記載することがあるが、これは、タイミング制御プログラムを実行しているCPU101が他のハードウェア要素と協働して処理を実行することを意味する。
ステップS1において、推定部13は、音信号の入力を受け付ける。この例で、音信号はアナログ信号であり、DA変換器(図示略)によりデジタル信号に変換される。
ステップS2において、推定部13は、音信号を解析して、いま楽譜上のどの位置が演奏されているかを推定する。この処理は、例えば以下のとおり行われる。この例で、楽譜時系列(楽譜位置の遷移)は確率モデルを用いて記述される。確率モデルを用いることにより、演奏の誤り、繰り返しの省略、テンポの揺らぎ、および音高または発音時刻の不確実性等の問題に対処することができる。楽譜時系列を記述する確率モデルとしては、例えば、隠れセミマルコフモデル(Hidden Semi-Markov Model、HSMM)が用いられる。推定部13は、音信号をフレームに分割して定Q変換を施すことにより周波数スペクトログラムを得る。推定部13は、この周波数スペクトログラムから、オンセット時刻および音高を抽出する。推定部13は、現在の状態の事後分布をDelayed-decisionで逐次推定し、楽譜上でオンセットとみなされる位置を事後分布のピークが通過した時点で、事後分布のラプラス近似およびいくつか統計量を出力する。具体的には、推定部13は、楽曲データ上に存在するn番目のイベントを検知すると、そのイベントが検知された時刻tc、事後分布により示される楽譜上の平均位置および分散を出力する。楽譜上の平均位置が発音位置s(n)の推定値であり、分散が観測ノイズq(n)の推定値である。なお、発音位置の推定の詳細は、例えば特開2015−79183号公報に記載されている。
ステップS3において、予想部14は、演奏者Pの演奏タイミングに関する観測値および自動演奏楽器30の演奏タイミングに関する観測値を用いて、自動演奏楽器30による次の発音時刻の予想を行う。演奏者Pの演奏タイミングに関する観測値としては、例えば、演奏者Pによる発音位置s(t)および発音時刻tcが用いられる。
予想部14から入力された予想時刻になると、出力部15は、次に発音すべき音符に対応する演奏命令を自動演奏楽器30に出力する(ステップS4)。なお、実際には出力部15および自動演奏楽器30における処理の遅延を考慮して予想時刻よりも早い時刻に演奏命令を出力する必要があるが、詳細は後述する。自動演奏楽器30は、タイミング制御装置10から供給された演奏命令に従って発音すなわち演奏する(ステップS5)。
図10は、出力部15における処理の詳細を例示するシーケンスチャートである。図11は、この処理を示すフローチャートである。ステップS401において、取得部151は、楽曲データを取得する。この例で、楽曲データは記憶部12に記憶されている。取得部151は、記憶部12から楽曲データを取得する。ステップS402において、取得部152は、推定部13から現在時刻tcに対応する楽譜内位置s(tc)を取得する。ステップS403において、取得部153は、楽譜内位置s(t)の近似関数の決定に用いられる遅延の値を取得する。この例で、取得部153は、記憶部12から最大値Tmaxおよび最小値Tminを取得する。
ステップS404において、近似部154は、予想部14に対し、時刻(tc+Tmin)および時刻(tc+Tmax)における楽譜内位置の予想を要求する。予想部14は、この要求により指定された時刻における楽譜内位置(この例ではs(tc+Tmin)およびs(tc+Tmax))を計算する(ステップS405)。予想部14は、計算された楽譜内位置を近似部154に出力する(ステップS406)。
ステップS407において、近似部154は、楽譜内位置s(t)の近似関数を決定する。この例では、近似式として式(2)が用いられるので、近似部154は、予想部14から取得した、指定時刻における楽譜内位置の予想値を用いて、近似関数における係数(この例では式(2)の係数aおよびb)を決定する。近似部154は、決定した係数の値を決定部155に出力する(ステップS408)。
ステップS409において、決定部155は、決定された近似関数を用いて、対象イベントの遅延およびループ間隔dTを考慮して、演奏命令を出力すべきか判断する。判断のフローは例えば図4に例示したものが用いられる。ステップS93における判断には、楽譜内位置s(tc)、遅延の最大値Tmaxおよび最小値Tmin、並びに係数aおよびbが用いられるので、図10のフローのうち少なくともステップS402〜S410の処理はループ間隔dTで繰り返し実行される。また、対象イベントntの候補となるイベントは、式(6)の条件を満たすものに限定される。
演奏命令を出力すると判断された場合、決定部155は、演奏命令を出力する(ステップS410)。演奏命令を出力しないと判断された場合、決定部155は、演奏命令を出力しない。
4.変形例
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
4−1.変形例1
自動演奏楽器30が例えばピアノである場合において、同一の鍵に対するノートオンイベントおよびノートオフイベントの組が短い間隔で繰り返し発生する場合(すなわち同じ鍵が連打される場合)、ノートオフイベントに応じて鍵が元の位置に戻る動作が、次のノートオンイベントに間に合わない可能性がある。このような問題に対応するため、タイミング制御装置10は、同一の鍵に対するノートオンイベントおよびノートオフイベントの組が短い間隔で繰り返し発生することが予想される場合、ノートオフイベントの命令を出力するタイミングを、楽曲データから得られるタイミングよりも早める処理を行う。具体的には、タイミング制御装置10は、ノートオフイベントから次のノートオンイベントまでの時間が、ノートオフイベントの遅延時間以上となるように、ノートオフイベントの命令を出力するタイミングを調整する。
自動演奏楽器30が例えばピアノである場合において、同一の鍵に対するノートオンイベントおよびノートオフイベントの組が短い間隔で繰り返し発生する場合(すなわち同じ鍵が連打される場合)、ノートオフイベントに応じて鍵が元の位置に戻る動作が、次のノートオンイベントに間に合わない可能性がある。このような問題に対応するため、タイミング制御装置10は、同一の鍵に対するノートオンイベントおよびノートオフイベントの組が短い間隔で繰り返し発生することが予想される場合、ノートオフイベントの命令を出力するタイミングを、楽曲データから得られるタイミングよりも早める処理を行う。具体的には、タイミング制御装置10は、ノートオフイベントから次のノートオンイベントまでの時間が、ノートオフイベントの遅延時間以上となるように、ノートオフイベントの命令を出力するタイミングを調整する。
一般化すると、タイミング制御装置10は、自動演奏楽器30の同一の物理ユニットに対して第1イベント(上記の例ではノートオンイベント)および第2イベント(上記の例ではノートオフイベント)の組が繰り返し発生することが予想されるときは、第2イベントの命令を出力するタイミングを早めるための処理を行う。
4−2.変形例2
楽譜内位置s(t)の近似関数は実施形態で例示した線形関数に限定されない。例えば、2次以上の多項式の近似関数が用いられてもよい。また、近似関数を決定するために用いられる遅延時間の値は、最大値Tmaxおよび最小値Tminに限定されない。楽曲データに含まれる複数のイベントに関する遅延時間のうち大小異なる2つの値であれば、どの遅延時間が用いられてもよい。さらに、また、近似関数を決定するために用いられる遅延時間の値の数は2つに限定されない。3つ以上の遅延時間(例えば、最大、最小、および中間)の値を用いた区分線形近似により、近似関数が決定されてもよい。
楽譜内位置s(t)の近似関数は実施形態で例示した線形関数に限定されない。例えば、2次以上の多項式の近似関数が用いられてもよい。また、近似関数を決定するために用いられる遅延時間の値は、最大値Tmaxおよび最小値Tminに限定されない。楽曲データに含まれる複数のイベントに関する遅延時間のうち大小異なる2つの値であれば、どの遅延時間が用いられてもよい。さらに、また、近似関数を決定するために用いられる遅延時間の値の数は2つに限定されない。3つ以上の遅延時間(例えば、最大、最小、および中間)の値を用いた区分線形近似により、近似関数が決定されてもよい。
4−3.変形例3
タイミング制御装置10によるタイミング制御の対象となる外部装置は、自動演奏楽器30に限定されない。タイミング制御の対象となるイベントは、自動演奏楽器における発音を制御するイベントに限定されない。外部装置は、演奏者Pの演奏と同期してダンス等の動作を行うロボットであってもよい。この場合、外部装置におけるシーケンスに係るイベントは、ロボットの四肢等の物理ユニットを駆動するためのイベントである。
タイミング制御装置10によるタイミング制御の対象となる外部装置は、自動演奏楽器30に限定されない。タイミング制御の対象となるイベントは、自動演奏楽器における発音を制御するイベントに限定されない。外部装置は、演奏者Pの演奏と同期してダンス等の動作を行うロボットであってもよい。この場合、外部装置におけるシーケンスに係るイベントは、ロボットの四肢等の物理ユニットを駆動するためのイベントである。
別の例で、外部装置は、演奏者Pの演奏と同期して変化する映像を生成する装置(例えば、リアルタイムで変化するコンピュータグラフィックスを生成する装置)であってもよいし、演奏者Pの演奏と同期して映像を変化させる表示装置(例えば、プロジェクターまたは直視のディスプレイ)であってもよい。これらの装置における遅延は、物理ユニットの駆動に起因するものではなく、ソフトウェア処理に起因するものであってもよい。
このように、外部装置における複数のイベントのシーケンスを示すデータは楽曲データに限定されず、ロボットの動作シーケンスを示すデータ、または表示装置における表示シーケンスを示すデータ等であってもよい。
4−4.変形例4
演奏者Pは人間ではなくてもよい。すなわち、自動演奏楽器30とは別の自動演奏楽器の演奏音をタイミング制御装置10に入力してもよい。この例によれば、複数の自動演奏楽器による合奏において、一方の自動演奏楽器の演奏タイミングを、他方の自動演奏楽器の演奏タイミングにリアルタイムで追従させることができる。
演奏者Pは人間ではなくてもよい。すなわち、自動演奏楽器30とは別の自動演奏楽器の演奏音をタイミング制御装置10に入力してもよい。この例によれば、複数の自動演奏楽器による合奏において、一方の自動演奏楽器の演奏タイミングを、他方の自動演奏楽器の演奏タイミングにリアルタイムで追従させることができる。
4−5.変形例5
演奏者Pおよび自動演奏楽器30の数は実施形態で例示したものに限定されない。合奏システム1は、演奏者Pおよび自動演奏楽器30の少なくとも一方を2人(2台)以上、含んでいてもよい。
演奏者Pおよび自動演奏楽器30の数は実施形態で例示したものに限定されない。合奏システム1は、演奏者Pおよび自動演奏楽器30の少なくとも一方を2人(2台)以上、含んでいてもよい。
4−6.変形例6
タイミング制御装置10の機能構成は実施形態で例示したものに限定されない。図5に例示した機能要素の一部は省略されてもよい。例えば、タイミング制御装置10は、予想部14を有さなくてもよい。この場合において、ネットワーク上のサーバ装置等の他の装置が、予想部14に相当する機能を有してもよい。サーバ装置が予想部14に相当する機能を有する場合においてタイミング制御装置10がs(t)の近似関数を用いない場合、ループ間隔dTの間に合計で2N回、サーバ装置にアクセスする必要がある。しかし、式(2)で例示したような近似関数を用いれば、サーバ装置へのアクセス回数をループ間隔dTの間に合計で2回に低減することができる。これにより、ネットワークアクセスによる処理の遅延、ネットワークのトラフィックの増加、およびサーバ装置における処理負荷の増大を抑制することができる。
タイミング制御装置10の機能構成は実施形態で例示したものに限定されない。図5に例示した機能要素の一部は省略されてもよい。例えば、タイミング制御装置10は、予想部14を有さなくてもよい。この場合において、ネットワーク上のサーバ装置等の他の装置が、予想部14に相当する機能を有してもよい。サーバ装置が予想部14に相当する機能を有する場合においてタイミング制御装置10がs(t)の近似関数を用いない場合、ループ間隔dTの間に合計で2N回、サーバ装置にアクセスする必要がある。しかし、式(2)で例示したような近似関数を用いれば、サーバ装置へのアクセス回数をループ間隔dTの間に合計で2回に低減することができる。これにより、ネットワークアクセスによる処理の遅延、ネットワークのトラフィックの増加、およびサーバ装置における処理負荷の増大を抑制することができる。
また、タイミング制御装置10のハードウェア構成は実施形態で例示したものに限定されない。例えば、タイミング制御装置10は、それぞれ推定部13、予想部14、および出力部15としての機能を有する複数のプロセッサを有してもよい。また、物理的に複数の装置が協働してタイミング制御装置10としての機能を有していてもよい。複数の装置に機能が分散される場合において、少なくとも一部の装置はネットワークを介して接続された装置であってもよい。
タイミング制御装置10のCPU101により実行されるプログラムは、光ディスク、磁気ディスク、半導体メモリなどの記憶媒体により提供されてもよいし、インターネット等の通信回線を介してダウンロードされてもよい。また、このプログラムは、図9および図10のすべてのステップを備える必要はない。これらのステップの一部が省略されてもよい。
1…合奏システム、10…タイミング制御装置、11…入力部、12…記憶部、13…推定部、14…予想部、15…出力部、16…表示部、20…センサー群、30…自動演奏楽器、101…CPU、102…メモリ、103…ストレージ、104…入出力IF、105…表示装置、151…取得部、152…取得部、153…取得部、154…近似部、155…決定部
Claims (3)
- 外部装置における複数のイベントのシーケンスを示すデータを取得するステップと、
前記複数のイベントについて前記外部装置がイベントの命令を受けてから当該イベントを発生させるまでの遅延時間に関し、第1遅延時間および当該第1遅延時間と異なる第2遅延時間を取得するステップと、
現在時刻から前記第1遅延時間および前記第2遅延時間がそれぞれ経過した場合の、前記シーケンス上の予想位置である第1位置および第2位置を取得するステップと、
前記第1位置および前記第2位置を用いて、現実時刻から前記シーケンス上の位置を得るための近似関数を決定するステップと、
前記複数のイベントのうち対象となる対象イベントについて、現在時刻から当該対象イベントに対応する遅延時間が経過した第1時刻を前記近似関数に代入して得られる第3位置から、前記第1時刻から基準時間が経過した第2時刻を前記近似関数に代入して得られる第4位置までの範囲に、当該対象イベントが位置する場合に、当該対象イベントを発生させる命令を前記外部装置に出力するステップと
を有するタイミング制御方法。 - 前記外部装置は自動演奏楽器であり、
前記複数のイベントは、前記自動演奏楽器における発音を制御するためのイベントである
ことを特徴とする請求項1に記載のタイミング制御方法。 - 前記外部装置は、複数の物理ユニットを含み、
前記複数の物理ユニットのうち一の物理ユニットに関する第1イベントおよび第2イベントの組が繰り返し発生することが予想された場合、当該第2イベントの命令を出力するタイミングを早めるステップ
を有する請求項1または2に記載のタイミング制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017041650A JP2018146782A (ja) | 2017-03-06 | 2017-03-06 | タイミング制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017041650A JP2018146782A (ja) | 2017-03-06 | 2017-03-06 | タイミング制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018146782A true JP2018146782A (ja) | 2018-09-20 |
Family
ID=63592130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017041650A Pending JP2018146782A (ja) | 2017-03-06 | 2017-03-06 | タイミング制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018146782A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111862912A (zh) * | 2020-07-10 | 2020-10-30 | 咪咕文化科技有限公司 | 曲谱显示方法、装置、服务器及存储介质 |
-
2017
- 2017-03-06 JP JP2017041650A patent/JP2018146782A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111862912A (zh) * | 2020-07-10 | 2020-10-30 | 咪咕文化科技有限公司 | 曲谱显示方法、装置、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10586520B2 (en) | Music data processing method and program | |
CN109478399B (zh) | 演奏分析方法、自动演奏方法及自动演奏系统 | |
JP6729699B2 (ja) | 制御方法、及び、制御装置 | |
JP6801225B2 (ja) | 自動演奏システムおよび自動演奏方法 | |
US10878789B1 (en) | Prediction-based communication latency elimination in a distributed virtualized orchestra | |
JP7448053B2 (ja) | 学習装置、自動採譜装置、学習方法、自動採譜方法及びプログラム | |
JPH1165558A (ja) | パラメータ表示装置および楽音合成装置 | |
JP6631714B2 (ja) | タイミング制御方法、及び、タイミング制御装置 | |
US10699685B2 (en) | Timing prediction method and timing prediction device | |
US10636399B2 (en) | Control method and control device | |
JP7243026B2 (ja) | 演奏解析方法、演奏解析装置およびプログラム | |
JP2018146782A (ja) | タイミング制御方法 | |
CN110959172B (zh) | 演奏解析方法、演奏解析装置以及存储介质 | |
Chafe | Simulating performance on a bowed instrument | |
JP6838357B2 (ja) | 音響解析方法および音響解析装置 | |
WO2023170757A1 (ja) | 再生制御方法、情報処理方法、再生制御システムおよびプログラム | |
JP7332002B2 (ja) | 電子楽器、方法及びプログラム | |
JP6977813B2 (ja) | 自動演奏システムおよび自動演奏方法 | |
JP7124370B2 (ja) | 電子楽器、方法及びプログラム | |
JPH10319958A (ja) | 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体 | |
JP2010271373A (ja) | 楽音合成装置および変数設定装置 | |
Havryliv et al. | Haptic Carillon: A computationally enhanced mechanical performing instrument | |
JPH03158898A (ja) | 自動演奏ピアノの信号処理装置 |