Ultima Symphony >
合奏研究報告 -パッチ5.08 >詩人演奏 高精度合奏
~メトロノーム同期法~研究:
Ultima Symphony代表執筆:
Aster Almayard,
Mammaru Dione2019/01/14
執筆時のパッチ:4.5
皆さんこんにちは。Ultima Symphony です。
本稿は、合奏に関するレポートです。
ご興味とお時間よろしければ読んでやってください~。
※ 括弧 [ ] はリファレンス(記事最下部に記載)です。お急ぎの方は「5. おわりに」でまとめておりますので、そちらを!
4.2 では高精度二重奏の動画を掲載しております!2019/09/14 追記
本稿の手法を二重奏に適用した場合の
詳細調査結果を別途投稿しております。
いくつかの新しい事実も示唆されるものとなりました。
2019/11/05 追記
一連の合奏研究(-パッチ5.08)の最終報告はこちらです。
2020/10/12 追記
簡易同期に関する統計計算の解釈に誤りがあり、
関係する箇所の文言を修正しました。1. はじめに吟遊詩人に楽器演奏機能が実装されて1年と数ヶ月──
同機能は多彩な音色を有しており、ソロ演奏から
楽器の持ち替えによる音色変更を伴う演奏、複数名による合奏など
幅広い活動が展開されています。
ここで、ネットワーク通信を伴うオンラインゲームの特性上、
演奏時のラグは避けられない問題です。
先の調査 [参考1] では、後述する遅延時間のランダム性が考慮されていませんが、
合奏者の立場で約 4.3 秒、観客の立場で約 2.2 秒のラグが生じました。
そこで、わたし達は戦闘開始カウントを用いた同期法を考案しました [参考2] 。
しかし、演奏音の遅延時間がランダム性を有することが知られ [参考3] 、
単純に戦闘開始カウントの活用ではランダム性を打破できないことが分かりました。
ただし、遅延時間は毎回異なるわけではありません。
休みの無い演奏は問題なく聴こえるものの、ある程度の休みを挟むとズレが生じます。
恐らくFF14アプリケーションが何らかの工夫を実施しており、
休みの無い演奏が問題なく聴こえるようになっているものと推測されます [参考4 1.2] 。
[参考2] で提案した方法は、遅延時間のランダム性のため
高精度の合奏の実現が期待されるものではありません。
ですが、工夫を付与することで、
遅延時間のランダム性を打破できると考えました。
本稿はその提案および実証に関する内容になります。
以下、本稿の構成です。
2 で手法を提案し、3 で手法に必要となる数値の見積もりについて述べます。
そして 4 で実際に提案手法での合奏に挑戦し、5 でまとめます。
つまり──
お急ぎの方は 5 でまとめておりますので、
そちらをご覧下さい!
4.2 では高精度二重奏の動画を掲載しております!2. メトロノーム同期法2.1 簡易メトロノーム同期法まずは [参考2] で提案した手法を、
[参考3] の精度向上の工夫も採用した形で振り返ります。
手法は準備と演奏の二段階に大きく分けられます。
準備とは、演奏者各々の
メトロノーム調整値の算出です。
これはその名の通りメトロノームの動作を調整する値であり、
詳しくはこの後に続く説明の中で触れていきます。
具体例として、3人で三重奏を行うケースを考えます。
演奏者を順に 1st, 2nd, 3rd と呼ぶことにします。
そして、メトロノーム調整値の基準はここでは 1st とします。
まず 1st と 2nd がパーティを組み、1st が戦闘開始カウントをかけ、
カウントが 0 になる瞬間に 1st と 2nd は音を一つ鳴らします。
それを第三者── この場合 3rd でも構いませんし、この3人以外の
別の誰かでも構いません。その人を
観測者を呼びますが、
観測者は 1st と 2nd の音が鳴った時刻差を測定します。
これは 2nd の音が 1st の音よりどれだけ遅れて聴こえたかを意味します。
この時刻差を tau_2 - tau_1 で表すことにします。
この測定を10回繰り返し、tau_2 - tau_1 の平均値を算出します。
同様に 1st と 3rd がパーティを組み、
1st の戦闘開始カウント 0 でそれぞれ音を鳴らし、
第三者の観測者が時刻差 (tau_3 - tau_1) を測定──
10回分の測定値の平均を得ます。
この tau_2 - tau_1 および tau_3 - tau_1 の各平均値が
メトロノーム調整値であり、1st に対する各々の平均的な遅延です。
当然 1st の方が平均的に遅れることもあるでしょう。
その場合は、調整値はマイナスになります。
それでは、演奏について述べます。
1st, 2nd, 3rd 全員でパーティを組み、1st が戦闘開始カウントをかけ、
「カウントが 0 になる瞬間 - メトロノーム調整値」が指す時刻に、
メトロノーム──あるいは同等の機能を有するものを各自動かし始めて、
それに合わせて演奏します。
あるいは、メトロノーム調整値分だけメトロノームを進めておき、
カウントが 0 になる瞬間に動きを再開させる──という方法でも良いです。
メトロノーム調整値でメトロノームの動作を調整することで、
各々の演奏データがサーバーに届く時刻をできる限り合わせているわけです。
しかしランダムな遅延時間があるために、
聴き手側では各パートの旋律の進行はいつも一致するわけではありません。
具体的には、各パートの旋律の進行の時間差は、
二重奏の場合、およそ 500ミリ秒 以内に──
三重奏以上の場合、およそ 1秒 以内に収まることが期待できます [参考3] 。
この同期を
簡易同期と呼び、
上記手法を
簡易メトロノーム同期法と呼ぶことにします。
1秒以内 という時間差範囲の期待──
残念ながら、合奏にとっては致命的と言えるでしょう。
つまり──
準備として10回の測定で必要な調整値を算出し、
その調整値とメトロノームを用いることで、
1秒以内 の精度で同期した合奏の実現が
期待できるということです!2.2 完全メトロノーム同期法それでは、簡易メトロノーム同期法に工夫を加え、
ランダム性──すなわち
簡易同期で 1秒以内 と期待された時間差範囲の問題──
これを打破します。
工夫とは
「各パートの時間差が許容できるまで同期試行を試みる」
というものです。
[参考4] の測定結果は、演奏に4秒以上の休みを挟むことで
遅延時間のランダム性が再び現れることを表しています。
したがって、4秒以上の休みを挟みつつ
同期の時間差が許容できるほど小さくなるまで、
同期試行を繰り返せば良いのです!
先ほどと同様に3人 (1st, 2nd, 3rd) の三重奏を例にします。
ここで、3人とは別に、4人目の観測者を設ける必要があります。
まず 1st は、メトロノームの1拍1拍に合わせて、
音を1音1音鳴らし続けます。
続いて 2nd も同様にメトロノームの1拍1拍に合わせて、
1音1音鳴らし始めます。
そして、1st と 2nd の音を観測者が観測──
その時間差が許容できなければ観測者は「NG」を伝えます。
「NG」を受けた 2nd は演奏を停止し、
4秒以上経過した後に、再度メトロノームの1拍1拍に合わせて、
1音1音鳴らし始めます。
そして観測者側で時間差が許容できなければ「NG」を──
これを繰り返し、
時間差が許容できる同期ができたら「OK」を伝えます。
2nd が「OK」を受けたら 2nd はそのまま音を鳴らし続けます。
そして、次は 3rd の番です。
3rd も同様にメトロノームの1拍1拍に合わせて、1音1音鳴らし始め、
観測者は 3rd に対して同じコミュニケーションを取ります。
3rd が「OK」を受けたら同期完了です!
同期完了後に合奏曲の演奏に移ることで、
各パートの旋律の進行の時間差は許容範囲内になるのです!
この同期を
完全同期と呼び、
上記手法を
完全メトロノーム同期法と呼ぶことにします。
しかし、合奏曲の演奏に移るための連携はどうすればよいでしょうか。
[参考1] では、観測者の立場で、約 2.2 秒のラグが生じる結果でした。
さらに、各合奏メンバーはメトロノーム調整値による補正をしています。
観測者が合図を出しても、何拍かずれる可能性があります。
安全なのは、メトロノームの「何拍目から演奏する」──
という合奏メンバー間で共通している拍数で連携を取る方法でしょう。
しかし、演奏中にチャットはできません。
そこで、あらかじめ「何拍目から演奏する」か、決めておく──
これが得策のように思われます。
しかし、事前に合奏曲に移る拍数を決めておくのであれば、
完全同期はそれまでに実現しなければいけません。
それでは、完全同期まで何拍必要になるのでしょうか?
その見積もりが重要になってきます。
また、合奏曲そのものについても [参考4] より
完全同期を維持するためには、長い休符を挟むわけにはいきません。
このような制約下で合奏を構築する必要もあります。
つまり──
合奏メンバーはメトロノームに合わせて順に同期を試行──
観測者側は音の時間差が許容できるか否かを伝え、
全員が許容範囲内で同期できたら合奏曲の演奏へ移行する──
というのが今回の提案手法です!
それにあたり、何拍で同期できるか──その見積もりが必要でしょう!
また、完全同期を維持するためには、
合奏中に長い休符を挟むことができないという制約がかかります。3. 完全同期必要拍数の見積もり完全同期の基準者を一人決めます。
合奏メンバーを n 人とすると、(n - 1) 人の同期が求められます。
メトロノームの周期を T で書くことにします。
例えばテンポ60の場合 T = 1.0 [秒] となります。
また、同期試行──すなわち、
観測者が「OK」または「NG」を判定するのに必要な拍数を m_t ──
そして、同期試行の「NG」判定時に
同期試行者が休む拍数を m_w とそれぞれ書くことにします。
すると同期試行 1 回につき (m_t + m_w) × T の時間を要します。
同期試行で「OK」となる確率は、許容時間差に依存します。
許容時間差を delta とすると、[参考3] より、
同期試行で「OK」となる確率 p(delta) は以下の通りです。
※ 画像のギリシア文字は、
記事内ではアルファベット表記しております。
p(delta) は正規分布表を用いて計算することになるでしょう。
ここで sigma' は [参考3] の sigma_c および sigma に対して
以下の関係式で定義される標準偏差になります。
(sigma')^2 = (sigma_c)^2 + 2 × sigma^2
したがって、完全同期までの拍数を N とすると、
完全同期までの時間 N × T は以下のように見積もれます。
ここで ceil は天井関数──
与えられた値以上の最大の整数を返す関数を表します。
例えば ceil(4.53) = 5 です。
上記の式の両辺をメトロノームの周期 T で割り、
完全同期必要拍数の見積もり──
を得ます。
次の 4.1 にて、各パラメーターの具体的な考察をします。
つまり──
上の式で完全同期までの拍数を見積もれるわけですが、
具体的な考察を次の 4.1 からやっていきます!4. 完全メトロノーム同期法の試行4.1 パラメーターの考察考慮すべきパラメーターは、
同期試行時のメトロノームの周期 T および
完全同期必要拍数の見積もり──
に登場する、以下の値です。
m_t:観測者が「OK」または「NG」を判定するのに必要な拍数
m_w:「NG」判定時に同期試行者が休む拍数
delta:完全同期の許容時間差
合奏者数 n および
(sigma')^2 = (sigma_c)^2 + 2 × sigma^2 は、既知とみなします。
[参考3] の調査より、sigma' ≒ 230 [ミリ秒] が妥当でしょう。
※ sigma' の 95% 信頼区間の上側の境界値。
まず [参考4] の演奏区間結合境界の概念を仮定し、
確実に結合が維持される休み時間の上限を tau_c と、
確実に結合が解除される休み時間の下限を tau_p とすると、
T < tau_c かつ m_w × T > tau_p
が求められます。
また遅延時間のランダム性も考慮すべきです。
T > 1.96 × 2 × sigma' ≒ 0.90 [秒]
を必要条件として掲げておくのが良いでしょう。
ここで [参考4] より tau_p < 4.0 [秒] は分かっています。
tau_c は、演奏者が1名の場合 tau_c > 3.0 [秒] でしたが、
演奏者が複数名の場合は未調査であり、
3.0秒で評価し切って良いかどうかは、懸念点となっています。
したがってメトロノームの周期 T については
0.90 [秒] < T < tau_c
となり tau_c の詳細な調査は今後の課題となるでしょう。
m_t に関しては [参考1] の調査より、ランダム遅延を考慮しても
観測者に演奏音が届くのに長くても3秒要すると思われます。
加えて観測者が同期性を判断するのに数泊要すると思われ、
チャットによる意思疎通も考慮しなければなりません。
これらを総合的に考えて、整数値 m_t を決めるべきですが、
その値はメトロノームの周期 T に強く依存するでしょう。
同様に m_w × T > tau_p に関しては
m_w × T > 4.0 [秒] と考えるのが得策と思われます。
こちらもメトロノームの周期 T に依存しています。
最後に完全同期の許容時間差 delta ですが、人の聴覚に関して、
一般に 30ミリ秒 より大きなズレは遅延を感じるそうです [参考5] 。
ただ、これは人間の能力の観点の話であり、
わたし達は音楽的なアプローチをすれば良いと考えます。
音楽的な観点からは、ジャズの奏法の研究から 約100ミリ秒 ── [参考6]
幾つかの楽曲の分析から、曲を構成する主な音符──2種類あるのですが
その短い方の最短長が 約150ミリ秒 という研究報告がありました [参考7] 。
許容時間差 delta としては、約100ミリ秒 ~ 約150ミリ秒が
妥当ではないでしょうか。
つまり──以下の通りです!
T:0.90 秒 より大きく、上限の調査は今後の課題。
m_t:3秒分の拍数 + 同期性判断拍数 + 意思疎通時間分の拍数。
m_w:m_w × T が4秒よりも大きくなるような整数値。
delta:約100ミリ秒 ~ 約150ミリ秒。4.2 完全メトロノーム同期法の試行それでは実際に、合奏を行った報告です。
各種パラメーターは以下を用いました。
T = 1.40 [秒]
m_t = 4
m_w = 4
T の上限 tau_c については今後の課題になっていますが、
演奏者が1名の場合の tau_c > 3.0 [秒] [参考4] に対して
T = 1.40 [秒] と、控えめに設定しました。
また、同期性の判断は観測者に一任しました。
4.1 では、許容時間差は、約100ミリ秒 ~ 約150ミリ秒が妥当では──
と考察しましたが、実際の合奏時に観測者が正確に
10 ミリ秒 レベルの判断を下すのは簡単ではないと思われます。
実際のところ [参考8, 9] による先の考察から、
体感で 約100ミリ秒 ~ 約150ミリ秒 が許容範囲になるのでは──
という期待もしておりました。(個人差はあるかと思いますが)
以下が、完全同期二重奏の試行結果になります!
右:
Mammaru Dione左:
Aster Almayard5. おわりに今回、2.1 で [参考2, 参考3] を振り返り、
簡易メトロノーム同期法としてまとめました。
そして、その簡易メトロノーム同期法に工夫──
「各パートの進行の時間差が 0 になるまで同期を試みる」
を付与し、2.2 で完全メトロノーム同期法を提案しました。
[参考2] で挑戦した合奏は、第三者測定が1回のみという、
簡易同期にも満たない同期状態でした。
今回 4.2 で挑戦した合奏は、当時にくらべて一致性が高く、
十分に高精度の合奏が実現できたと考えております。
次の動画は、
提案した完全メトロノーム同期法の簡易解説動画です。
同期試行の分かりやすさのため、四重奏の例にしております。
※ 動画内の合奏曲は、DTM演奏のため、オリジナル曲です。
FF14の曲ではありません。
以下、上記動画で割愛した補足および注意点です。
詳しくは各章、各小節、および参考資料をご参照ください。
完全メトロノーム同期法では、メトロノームの周期や、
完全同期に要するメトロノームの拍数が重要になっており、
その見積もりの式を 3 で導出しました。
各種パラメーターについては 4.1 で考察しました。
また、合奏中も長い休符を挟むことができないという制約があり、
どれほどの休符が許されるかについては [参考4] に引き続き
今後の調査課題となっております。
この度の手法提案が、
皆様の演奏活動に貢献できることを願っております。
参考資料等[1] Ultima Symphony, 『
詩人演奏 ラグ調査結果 ~合奏可能性~』.
[2] Ultima Symphony, 『
詩人演奏 合奏の実現 ~戦闘開始カウントの利用~』.
[3] Ultima Symphony, 『
詩人演奏 合奏精度向上手法の提案』.
[4] Ultima Symphony, 『
詩人演奏 演奏区間結合境界調査』.
[5] 西堀佑, 多田幸生, 曽根卓朗, 遅延のある演奏系での遅延の認知に関する実験とその考察,
情報処理学会 研究報告, (2003).
[6] A. Friberg, Sundstrom, Swing ratios and ensemble timing in jazz performance,
Music Percept 19, pp. 333-349, (2002).
[7] ポール・フレス(津崎実 訳), 『リズムとテンポ』,
In ダイアナ・ドイチュ(寺西立年, 大串健吾, 宮崎謙一 監訳),『音楽の心理学(上)』,
村西書店, (1987).
以上です!
お読みいただきありがとうございました!!!
Ultima Symphony >
合奏研究報告 -パッチ5.08 >
詩人演奏 高精度合奏 ~メトロノーム同期法~