BMS, Movie, Illustrations, Programming

週報 2024/3/24

週報 2024/3/24

今週やったこと

  • musicx、envelopex のフォーマットについて探究
  • ノートPCのストレージ整理
  • Blender 3.6 をインストールした
    • Blender を更新して Geometry Nodes に初挑戦した
  • DTM (割と長時間)
  • Overcooked 2 を新規セーブデータでやり始めた
  • BMS ナゾを少し考えた

今週学んだこと

  • 恣意的、は意図的という意味ではない
  • スイカは野菜だとはよく言われるが、いちごも同様の分類にあたる
  • 十二海里は十里より短い
  • 線形変換後の面積は向きによらない
  • フタエノキワミは英語版アニメのセリフだった
  • 封じ手は「相手の行動を封じるための妨害行為」という意味ではない
  • FXチャンネル(Auxセンドエフェクトのこと) に OpenAir を挿すと Mix レベルがロックされる(すごすぎ)

Blender 関連

※あんまり詳しく書くと週報を書くだけで数時間掛かってしまうので簡潔に書く

GeoNodes の Field について学んだ(ちょっと難しい!)

  • ダイヤのノードはフィールドと言い、関数のようにふるまう
  • データの流れが一方向ではないノードシステムはわくわくする
  • capture attribute node

GeoNodes の インスタンスについて学んだ

Geometry Nodes で扱う対象とは、単一のメッシュや単一のカーブではなく、複数個のメッシュやカーブを再帰的に含む多分木構造ということらしい

なぜか Edge Split しないと頂点カラーが綺麗に指定できない

頂点カラーは頂点ではなくループ(Face Corner)に対して設定されているはずである。バグか、あるいは自分の作り間違いか。


メッシュの形にあわせてグリッド状に配置(すごい!)

Geometry Nodes でカメラを動かす

魔法のようなテクニックだった

関数型思考の要求

Geometry Nodes は強力だが、ステートフルの考え方からステートレスの考え方に、手続き型の考え方から関数型の考え方に変える必要がある。Geometry Nodes や Animation Nodes を使う場合はしっかりと頭を切り替えないといけない。これが難しいことがある。

たとえば、「ランダムな地点から開始する。X, Y, Z 座標のいずれか1つのみをランダムに変更し、他の成分はそのままとする。現在の座標から新しい座標に直線を引く。これを繰り返す。」という手続き的な操作を考えるとする。

これを、「N 以下の自然数 k に対して 点 \( a_k \) の X, Y, Z座標の値をそれぞれ

\[ 3\left\lfloor\frac{k}{3}\right\rfloor,\quad 3\left\lfloor\frac{k-1}{3}\right\rfloor+1,\quad 3\left\lfloor\frac{k-2}{3}\right\rfloor+2 \]

をシード値とした乱数とする。点列 \( a_k \) を直線で結ぶ。」という操作に変更するのである。


どちらが早く実装できるか、どちらが表現力が高いか、どちらが計算量を少なくできるか、というのはまだ分からないので、これから色々試してみたいが、Geometry Nodes は驚くほど強力で自由度が高いように感じた。

musicx、envelopex のフォーマット探究

musicx、envelopex のフォーマットについて調べた。色々とやってみたいことはあるが、フォーマットを知るだけで満足してしまいそうではある。

基本は JSON 文字列だが、オブジェクトのキーと、バリューのうちプリミティブ値であるものにバイナリ化の圧縮が掛かっている。また、不要な空白文字はすべて省略する。

キーの圧縮

  • 1バイト文字 ‘i’ で始まる
  • その後、識別子の長さを表す8ビット整数が続く
  • その後、識別子が続く
  • キーを囲む二重引用符、区切りを表すコロンは省略される

バリューの圧縮(プリミティブ値のみ)

  • プリミティブの場合、1バイト文字 ‘i’, ‘U’, ‘D’ などで始まる
    • ‘i’ : 8ビット整数を指定する
    • ‘U’ : 8ビット符号なし整数指定する
    • ‘D’ : 64ビット浮動小数点数指定する
    • それ以外 : 不明
  • その後、上記で指定された形式のバリューが続く
  • 区切りを表すカンマは省略される

Studio One のコントロールサーフェスの扱いが独特

設定によってコントロールチェンジが反映されたり反映されなかったりする。詳細な割り当ては xml を見ないと分からないらしい。

そもそも Studio One の独特な扱いの他に、Kontakt (VSTi) にピッチベンドレンジが設定されていなかったりとか、デバイス側でコントロールチェンジ番号を変えられたりとか、問題の解決が難しかった