これは『Wreckage Systems 』(65daysofstatic作)に関するブログです。『Wreckage Systems 』は無限に続く生配信の音楽です。こちらでご覧になれるほか、音声のみのバージョンもこちらにあります。ゲームではありませんがUnityで構築されており、オーディオはすべてWwiseで実行しています。半ば学問的な研究プロジェクトであり、半ばコロナ禍で突然ツアーを断念せざるを得なかったバンドが思いついた代替計画とも言えます。音楽を操り発表するための新たな方法を探る、かたくなにユートピア的な試みであり、65daysofstaticの従来の活動で見ることのない、音のさまざまな「味」を生み出すための言い訳です。Wwiseで行った具体的な作業については後ほど詳しく述べることとして、そもそもの存在意義の背景を説明したいと思います。
背景
はじまりは2014年のことで、私のバンド65daysofstaticが『No Man’s Sky』のサウンドトラックの作曲を依頼されました。つまり歌形式の複数の音楽を組み合わせたリニアな曲を書き、通常のサウンドトラックアルバムをつくり上げるだけでなく、当時Hello Gamesが作成中の限りなく広くてプロシージャル生成される宇宙世界と合致する、動的で無限に続くサウンドトラックを築き上げることを意味しました。
作曲したのは自分たちでしたが、『No Man’s Sky』のオーディオフレームワークを作成するという手間のかかる仕事は(魔術師に違いないと思われる)オーディオディレクターの Paul Weir氏の担当であったため、この無限のサウンドスケープを実際にゲームに組み込む実用的な技術は、ここで私たちが語ることではありません。そうは言っても私たちもバンドとしてサウンドトラックの生成の性質を充分に活かしたいと考え、インタラクティブミュージックの技法を一気に覚えようと意気込み、いつの間にかそのプロセスに深く入り込んでいました。終わってみると私たちはノンリニア音楽のつくり方について無数のアイデアを抱えており、音楽の根本的な性質そのものについて、新たな悩みの一覧表ができあがっていました。
偶然にも同時期に、私はポピュラー音楽という文脈でアルゴリズミックコンポジションの戦略(つまりこういったことを私たちのにぎやかなライブバンドでどうやって応用するのか?)を博士課程で探求していました。ゲーム音楽の開発と実験的なアルゴリズミックミュージックの研究の65daysofstatiへの適用が数年に渡り並行して進行し、さらに探検してみたい未踏の地が目の前に広がりました。
さてそうなると、生涯に渡りコンピュータで音楽をつくってきた私ですが、すべてが終わったころにはアルゴリズムで駆動すると一般的に言われるプロシージャルまたは生成音楽の技法を、作曲に適用する事例全般にとても批判的となり、どちらかというと深い疑いを持つようになりました。何もコンピューターでおもしろい音の構造を自動的につくることができないと感じたわけではなく、実際にスピーカーから出てくる音は音楽の「音楽たるもの」のほんの一部でしかないと気が付いたのです。機械学習で発展させたニューラルネットワークのハイパー人工知能をどれだけコンピュータに与えたとしても、コンピュータに意思を持たせることは不可能なのです。失恋させたり溢れるほどの恋心を感じさせることは無理です。コンピュータが友達と散らかり放題の小部屋で滅茶苦茶な音を生み出す感動や、繰り返しのビートに合わせて朝まで踊り続ける喜びを理解できないということです。
ということで『Wreckage Systems』。エンドレスに変化し続ける音楽をインターネットで配信する現在進行形のプロジェクトであり、「音楽に意味を編み込む気持ちなどコンピュータに分かるはずがなく、意味ある音楽を自動的につくるためにコンピュータを利用しよう」という弁証を試みるものです。
『Wreckage Systems』は現代アーティストに対する、終わりのない音楽コンテンツを絞り出せという不合理な要求を表す芸術作品なのか?そうかもしれません。自動音楽が意味のないものになってしまうまで、音楽家がどこまでプッシュできるのかを見るための挑戦なのか?おそらくそうです。巨大なアルゴリズム爆弾、悲しいピアノのサウンドスケープ、グリッチだらけのブレークビート、自由なジャズループ、現場でのレコーディング、プロシージャルなシンセメロディー、その他生成ミュージックシステムを一括して混ぜてUnityプロジェクトに仕立ててWwiseで動かしているのか?まさしくそうです。
『Wreckage Systems』の哲学と芸術的な思惑をさらに詳しく説明したブログ記事や、私たちが採用した個々の作曲テクニックにご興味のある方は、この変わった音楽実験のために選んだ資金集めモデル『Wreckage Systems』Patreonがありますので、ぜひご覧ください。『No Man’s Sky』の私たちの経験について、プレビューを見ることができるロックのかかっていない記事がこちらにあります。もしユートピア的なマルクス主義の方がお好みでしたら、プロジェクトに関連して歴史的な唯物主義の大胆な適用例がこちらにあります。ここからは『Wreckage Systems』配信システムの中に存在する、独立した65種類のミュージックシステムを駆動させるWwiseプロジェクトを詳しく見ていきたいと思います。
全体の構造
このストリームは合計65個のWreckage(残骸)システムで構成されています。システムごとに独自の音と動作がWwiseで設定されてあり、多くの場合はその動作を拡張させるためのUnityに付随するカスタムスクリプトが含まれています。ノンゲームでソフトウェアではなく音声と動画のストリームだけを公開しているため、『Wreckage Systems』はディスク容量、DSPスレッド、ポリフォニー、オーディオ品質などを一切気にすることなく、すべてをオーディオ出力中心で設計できるという実に贅沢な環境になっています。従来型の出荷方式にこだわる必要が全くありません。
このためWwiseでほとんどすべてのWreckageシステムにサウンドバンクが個別に設定してあり、それぞれに高品質のオーディオが必要なだけ入っています。一般的なバックグランドの低音やスタティックヒス、そして時おり鳴るUI音など用に、常に読み込まれた状態の追加のサウンドバンクが別にあります。
ライブストリームの配信ループの流れは、まず雑音がラジオ放送に変わり、しばらくしてからまた雑音に戻るようなかたちです。新しいシステムがオンラインになると、システムのサウンドバンクが読み込まれて開始され、それまでの雑音がクロスフェードしてシステムから出力される音楽に変わります。このシステムが終わりに近づくとクロスフェードして雑音に戻り、終了したシステムのサウンドバンクがアンロードされ、サイクルが繰り返されます。1つのシステムが7~8分以上続くことはまれなため、少なくともそれくらい配信を見続けていただくと、一連の流れがログに表示されていくのが観察できるはずです。(ちなみに時々、システムが自分をハッキングすることも。)
Wreckageシステムのタイプ
65種類あるシステムは「constellation heart(星座の心臓部)」と私たちが呼ぶ、それぞれのコンセプトに基づいています。この考え方を非技術的な方法で説明している、私たちのPatreonの短い動画をご覧ください。
私たちがこの動画で一番伝えようとしているのは、音楽の核心となる各システムの意思を、私たちが構築したメインのオーディオ枠組みで制約してしまうのをできる限り避けたことです。システムの「星座の心臓部」こそがそのシステムの考え方の中核であり個性を形成しているため、何が何でも守り抜き、プロジェクト全体が単に65種類のテイストのある汎用的な生成サウンドスケープとなるのを阻止する必要がありました。中には「星座の心臓部」が単に固有のサンプル集であるシステムもあります。かと思えばオリジナルのスティンガーやトランジションを設定したインタラクティブミュージックスイッチやプレイリストコンテナが満載の、ほかの音楽作品とはかけ離れた、何日も何週間もかかって仕上げたシステムもあります。多くのシステムはUnityのカスタムスクリプト一式があり、Wwiseイベントの開始や停止を行うだけでなく、システムの動作を拡張させるMIDIパターンを生成したり、音楽をオンザフライで作成する各種呼び出しコマンドをイベントに対して使用してたりしています。「星座の心臓部」にある考えを保護するためにできる限りの努力をつくすと同時に、システムの運用方法をある程度共通化させる必要もありました。
そこですべてのシステムの上に、非常に汎用的なGame Sync Stateを設定しています。この中に以下7種の汎用的なステートが入っています:
- Beginning(はじまり)
- State_00
- State_01
- State_02
- State_03
- State_04
- Ending(終わり)
これらのステートをすべて無視したいと考えるシステムでは、すてべてのステートに同一のことを割り当てるわけですが、どのシステムも必ずBeginningステートではじまり、Endingステートで終わります。逆にさまざまなステートを活用するシステムでは、そのシステム独自のカスタムシーケンサーを利用してステート間を移動したり、汎用シーケンサーを利用してシステムが自分で決めた期間だけステート間をランダムに切り替えたりできます。
以上が最上位のしくみですが、これより先のWwise上での各システムの姿をこれから説明します。
Actor-Mixerシステム
比較的シンプルなつくりのシステムは、どちらかというとアンビエンスやサウンドスケープの感じが強く出ます。このような音楽は、Actor-Mixer階層にあるランダムコテコンテナやブレンドコンテナをバランスよく活用することで生成される傾向があります。いくつかの長いシンセサンプルをランダムにループさせるだけという、ベーシックなシステムもあります。(よくないアルゴリズム音楽を長年聞いてきた者として、例えシンプルなランダム再生であってもコアのメロディーやサウンドが充分におもしろいものであれば、かなり幅が広がるという信念を持っています。)
単純なランダム再生を何層も重ね、より複雑なバリエーションをつくり出すためにもWwiseが最適です。例えばUnravellingというこちらのシステムをご覧ください。
左側を見ると、どのような構成となっているのかが分かります。すべてがシステム開始と同時にトリガーされる1つのブレンドコンテナの中に入っています。大元のブレンドコンテナの子のブレンドコンテナは、それぞれが曲の違うパートを表します。スクリーンショットの右側を見ると、ハイライト表示されているコンテナ‘Busy’は、‘State_01’というステートの時だけに聞こえてくることが分かります。このUnravellingシステムの場合、ほかのコンテナがほかのステートを表しています。別のシステムでは1つ以上のステートでも存在するコンテナがあったり、複数のコンテナを同時にミックスさせたステートがあったりします。
バリエーションのつくり方を詳しく説明するために、‘DulcimerPhrases’コンテナを展開してしくみを見ていきます。中核にあるランダムコンテナが同じスケール内のダルシマーのノートサンプルのプールから、ノートサンプルを1つだけ再生します。その親であるシーケンスコンテナは6回ループし、最大オフセットが2であり、クロスフェードの大きさは0.5、その最小オフセットは-0.2です。そのさらに親のコンテナがDulcimerPhrasesコンテナであり、8秒ごとにトリガーし、最大オフセットが8です。以上を合算すると、8~16秒ごとに6~8個のダルシマーノートから成る短いパターンが再生され、タイミングに少しのバリエーションを持たせることで少し人間らしくしています。
ご覧の通り、このコンテナはほかのコンテナと共にブレンドコンテナに入っていて、このブレンドがシステムの特定ステートとなっています。ほかのステートには別のサンプル、別の階層、別のしくみがあります。ループの入っているものや、シンプルなパーカッションサンプルを一定の速さで繰り返すものなど... 可能性は基本的に無限大です。
一方こちらは、よりシンプルなPapourというシステムです:
このシステムではステートを使いません。3つのランダムコンテナがあり、同じ36個のサンプルが入っています。コンテナのローパスフィルタの量はそれぞれ異なり、トリガーレートも7~20秒と異なり、中間のコンテナはピッチが1オクターブ低くなっています。サンプル自体は65HQで録音されたブレードランナー風の長いシンセノートで、ライブフィルタースイープのバリエーションがあり、粗くリバーブがたっぷりとかかっています。これらすべてがWwiseのさらに大規模なリバーブバスを通り、なんと!一瞬でSFサウンドスケープのできあがりです。
Mist_CrackleなどほかのActor-Mixerシステムも、同じように効率的なオーディオコンテンツや複雑さとなっていますが、使い方が異なり、Wwiseでサンプルインストゥルメントとして存在しています。
一部の楽器では多くのサンプルを範囲全体にマッピングしています(例えば複数のシステムで使われているメインピアノなど)。一方、上図の‘CrackleToneSynth’のように、もっとそぎ落とされたものもあります。たった3つのサンプリングノートを範囲すべてのノートにマッピングしてあり、よい感じのリバーブをかけています。
このようなステムはステートを循環するUnityの一般的なシーケンサではなく、何らかのかたちで音楽的パターンをつくり出すカスタムスクリプトを使い、MIDIノートとしてWwiseに送ります。Mist_Crackleは正確なテンポが重要でないばかりか望ましくもないアンビエントサウンドスケープであり、Unityのコルチーンループを使いMIDIノートナンバーをプールから選び、簡単なランダマイゼーションを適用するだけで、スローなアンビエントメロディと低いコード進行で編成されたサウンドスケープをつくり出します。
インタラクティブミュージックシステム
ほかのシステムはWwiseでよくあるインタラクティブミュージックのアプローチを使い、水平と垂直のミキシング方式を活用しています。おそらくWwiseユーザにとって1番多いインタラクティブミュージック作曲のユースケースであるため、ここでは詳細に触れません。以下はインタラクティブミュージックをベースとしたシステムの1例です:
Available Data(利用可能なデータ)というこのシステムは『Wreckage Systems』の研究の一環として作曲した、リニアで固定された曲に基づいています。録音バージョンはビート、シンセ、ギター、ノイズを合わせた12分間の曲です。(こちらで聞くことができます。)Wreckageシステムも同じような長さで同じようにビートが効いていて、再生されるたびにバリエーション豊かなバージョンとしてテーマが展開されます。上図スクリーンショットから内部構成が分かります。すべてが1つのスイッチコンテナ内にあり、さまざまなトラックやサブトラックの入った多様なプレイリストがあります。トランジション用のカスタムスティンガーが数多くあり、Unity側を見ると重み付けされた確率を使いステート間を移動するカスタムシーケンサーがあります。バランスよく設定することに手間取りましたが、その結果Available Dataは再生されるたびにオリジナルと同じ2つのパートから成るゆるい骨組み内を流れながらも、必ず新たなセクション、ループ、バリエーションなどを出してくれます。
コンビネーションシステム
システムの多くはActor-Mixerコンテナを使うWwiseイベントと、Interactive Music階層の何らかの基礎的なループや構成を、コンビとして組み合わせた存在となっています。
Malignシステムは憂鬱なジャズサウンドトラックで、あなたがサイバーパンクの探偵気分で暗いどこかのサイバーバーに座り、寂しく飲んだくれている時にぴったりです。インタラクティブミュージックのプレイリストコンテナで再生される、非常にシンプルで意図的に繰り返されるループがベースとなっています。ここで注目すべきは、ループをUnityがコールバックでトリガーさせている点です。Unityは新しいループのスタートをコールバックで追跡し、ループの開始時にちょっとしたメロディーパターンを電子ピアノあるいはギターで奏でるのか、それとも奏でないのかを決めます。
ギターの再生が決まった場合はランダムコンテナをトリガーさせるWwiseイベントを使い、多数あるサンプルの中から1つのフレーズをトリガーさせます。電子ピアノの再生が決まった場合はカスタムコードを使い、MIDIノートナンバーで新しいメロディーパターンを作成してからMIDIノートをスケジューリングし、サンプリングした電子ピアノ楽器にポイントするWwiseイベントにポストし、次のループで再生します。
このようなコールバックの使い方はUnityの変動フレームレートでテンポが多少ぶれる可能性がありますが、Malignシステムが出すような音に限って、タイミングが少しズレることでかえってメロディーに人間味が加わります。(同じテクニックでコールバックを使って高BPMのブレークビートパターンを生成した実験では、あまりうまくいきませんでした。)
まとめ
さまざまなシステムの構成をこれらの例でだいたいカバーできたと思いますが、そもそもこのプロジェクトの目的は、ある程度汎用的で拡張可能な枠組みと、システムごとにそれぞれカスタマイズした動作を実装したシステムをバランスよく使うことが肝心である点を示すことです。何もかもが自動化された今日、『Wreckage Systems』は私たちがバンドとして(これはあくまで主観的な考えですが)意味ある芸術をつくる上で、近道をせずに力任せでこなしていくことが少なくともこれまで以上に大事だということを見せてくれました。みなさんも面倒な雑務を処理するためにぜひコンピュータを使い、ツールを見つけ構築し使用して、頭の中に埋もれているダイヤを早く採掘してください。ただし、よくないものを色々とふるいにかけて容赦なく切り捨てていく作業こそが、作曲なのだと思います。あなたが行うキュレーション作業の意図的な行いこそ、星座の心臓部です。そしてそれは永遠に汎用化できません。
コメント