KLV Canvas & 性DEC 2023/02/01 12:00

【スクリプト】ツクールにPSO2のような音楽表現を実現する「#LovelaceProject」始動!

気の長いプロジェクトです

1月ももうおしまいです。年始からコツコツNotionにまとめてきたので、月例報告ということでその一部をご紹介いたします。(記事公開直前でCi-enが緊急メンテナンスに入った…😭)

Lovelace Project

インタラクティブミュージックを採用したゲームがもっと増えてほしい!という理念に基づき、まずはRPGツクールMV/MZ用のプラグインを作ろうというプロジェクトです。Lovelaceはその製品名でもあります。

リッチなインタラクティブミュージックでは、ゲーム側がピンチ度や興奮度を推し量って演出内容を変えるということから、Lovelaceには作曲AIとしての可能性も期待しています。

最初はテンポと音量のみを扱った最もシンプルなDJのような楽曲遷移とし、バージョンアップを重ねるごとに

  • 楽曲全体の調性に基づいた、曲をまたぐ遷移
  • コード進行に基づいた、曲をまたぐ遷移
  • エフェクトの追加
  • ゲーム内の状況を受けた、リアルタイムな楽曲の組み立て(ピンチ度が高ければこのパートが増える、など)

などを盛り込んでいくことができればと考えています。

副次的な効果として、割と早い段階で

  • BGM素材ごとの音量が揃わない問題
  • ツクール製ゲームだいたいタイトル画面から音デカすぎる問題
  • ツクール製ゲームの音量0%~100%でしか選べない問題

も解決されます。

究極的には「くらびすたが死んでもくらびすたに似た意識が曲を作り続ける仕組み≒『強いAI』に基づく自動作曲システム」に憧れています。

また、LovelaceもしくはLovelace互換(?)のプログラムやスクリプトに読ませるための、楽曲の構成やテンポ、AメロBメロの位置などのメタデータをまとめた「ADAフォーマット」も併せて策定していきます。

【2/1 20:00追記】音量ウンヌンの話

音量関係の問題をどう解決するのかわからない」とツッコミをいただきました。

https://twitter.com/gemini_gamedev/status/1620732834578317313

具体的な実現方法はどうなるんだろうとしっかり頭で練っていただいたからこそのお言葉ですよね。あたたけえ。僕からの回答はこの通りです。

https://twitter.com/Klavistr/status/1620735240410128384

自由で開かれたインタラクティブミュージック(音楽アセット利用)」をやる上で、音量のバラつきを抑える仕組みを用意することは、「大阪から東京に新幹線で行くからには必ず名古屋を通る」くらい当たり前のことだと思っています。スクリプト側と説明書き側のそれぞれで必要な仕様を作るつもりです

簡単なゲイン調整は既にRPGツクールがやっている通りWeb Audio APIを軽く叩けば何とかなりそうなのですが、もうちょっと細かいところまでと言われれば「しばし待たれよ」が答えになります。

成果の発表方法について

ADAフォーマットは自由な規格として、適当にオンラインで仕様を公開し、まだ見ぬ外部のコーディング担当さん(下記「ADA - Adaptive Description for Audio-assets」参照)にもアクセスできるようにする予定です。

一方で、実際にツクールに組み込むプラグインスクリプトLovelace.js(仮)はWeb Audio APIガチ勢のスクリプティングになること必至なので、有償プラグインとしての頒布を予定しています。

Ci-en支援者限定特典としてのベータ版提供や、クラウドファンディングも考えているので、これからの続報にご注目ください。もちろんある程度まとまるまで、+大事なことについては、Ci-enアカウントを持っていない人や無料フォロワーでも見られるようにします。

Lovelace Projectの進捗については、1か月に一度の更新を予定しております。見逃さないようCi-enページのフォローをぜひお願いいたします。

◆◆◆
Twitterやくるっぷで「#LovelaceProject」をタグにつけて投稿いただければ可能な限り反応します。このプロジェクトに期待すること、やってみたいことなどをお寄せください!!
◆◆◆

図解

wavやoggのファイルは専用のソフトを使わないと編集できない。音量がバラバラだったり、ループ設定が何らかの理由で設定されていないファイルの扱いに困ったりと、この運用には不都合が多い。

Audacityでどうにかする猛者もたまには見かけるが面倒には変わりない。

wavやoggのファイル内部には手を付けず、対象の音源(典型的にはBGM素材)の構造を示すファイルと、それを読み込むプラグインを用意する。

それぞれの役割がより明確になり、効率が良くなる。なにより美しい✨

ADA - Adaptive Description for Audio-assets

※作曲家/プログラマー寄りの内容です

Notionの内容から公開できる範囲で転記。

※本セクションのすべての内容は仕様の正式な確定とドキュメントの公開までに変更される可能性があります

目標

各種オーディオアセットのメタ情報(ループ地点や、“Aメロ” “サビ” といったマーカー)を「後付け」する方法を提供する。ADA は次のような特長を備える。

特長 1. テキストベース(JSON)である

既存の BLOB フォーマットに依存しない。アセットが WAV / Ogg Vorbis / MPEG-4 AAC / MP3 のどのフォーマットで提供されているか、ADA コーディングを担当する人がどのフォーマットに対応したアプリケーションを持っているかによらず、正しく「仕込む」ことができる。

特長 2. 音楽的である

たとえば、扱う時間表現においては「サンプル」「ミリ秒」「小数表記」を可能な限り排し、主に「小節」「拍」「分数表記」を採用する。これにより 7 連符や n+1/3 BPM といった Standard MIDI file 等では正しく表現できない / 特別なハックを必要とするものも、元の意味を保って格納できる。

特長 3. オープンである

既存のアセットのために ADA を書くことにも、これから新規に作成するアセットに ADA を添付することにも、ライセンス料等の費用はかからない。Windows / Mac のそれぞれに、専用のネイティブアプリもしくは既存の波形編集アプリのアドインとして、ADA をエクスポートできる仕組みを提供する予定。

サンプルコード(まだまだ作りかけ)

{

  "generalInfo": [
    {
      "adaVersion": "1.0",
      "fileVersion": "1.00",
      "title": "サンプル1",
      "author": "かんころもっち",
      "authorWeb": "http://soundscape.xyz/",
      "adaCoder": "くらびすた",
      "adaCoderWeb": "https://ci-en.dlsite.com/creator/120"
      "assetType": "music"
    }
  ],

  "fileInfo": [
    {
      "isEmbedded": false,
      "embeddedStream": null,
      "fileName": "Sample.ogg"
      "samplingRate": 48000
    }
  ],

  "musicInfo": [
    {
      "startPosition": 0,
      "timeSignature": [],
      "keySignature":[],
      "tempo":[],
    }
  ]
}

(鼻が利く人にはだいたいこういうものなのかなと伝わると信じている)

作例協力: かんころもっちさん

LovelaceとADAの名前の由来

1843年にRichard Taylorによって著されたScientific Memoirs Vol.3において、世界初の女性プログラマー(現代のそれに通じる功績をあげた人物)であるAda Lovelaceがこのようなことを言った、ないし綴ったとされています。

Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent.

例えば、作曲論とか和声学とかで扱う、ある音の高さとある音の高さの関係について、計算機科学の表現を持ち込めるとしたら、その「エンジン」は複雑さや長さを問わず緻密で理論的な作曲ができるでしょう。(くらび訳)

ラブレス婦人の話を知ったとき、僕が生まれる150年前には既にこの境地に達していた人がいたんだと感動を覚えました。先述の「『強いAI』に基づく自動作曲システム」へ近づくためのプロジェクトの名前として、ぜひあやかりたいと思ったのです。

ファーストネームがAdaと3文字で拡張子や規格の名前っぽいのも気に入りました。こちらは全大文字ADAとして、楽曲構造定義ファイルのフォーマットの名前として採用しました。

名前重要

プログラマーの哲学に「名前重要」というものがあります。

この言葉を広めたひとりである、Ruby開発者のまつもとゆきひろ氏曰く

適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていないということ

だそうです。

2018年に思いつくだけ思いついて、でもアイデアをまとめるに至らなかったのも、たぶん名前が決まってなかったからです。一応、「DJミキサーみたいなものだから…Pioneerの機材みたいにDJMとでも呼ぶか…」とか思っていた時期はあったのですが。人前に出せるほどの何かは生み出さずじまいでした。

結局僕が目指していたのは「リッチな音楽表現をコンピューターの力を活用してかなえたい」だったのです。この名前に思い至ったときにすべてのフワフワしたものがひとつの芯に向かって集まり始めた、確かな感触がありました。

それはそうとラブレス婦人の名前は氏の功績から米軍のプログラミング言語やnVIDIAのチップの名前にも使われているので、エゴサ力はどん底です。

よろしくお願いします

どれほどのものになるかは実のところ未知数ですが、動かせるものが増えてくると面白くなると思っています。Ci-enのフォローと記事の拡散、ぜひお願いします!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

記事を検索