cat2151
banner
cat2151.bsky.social
cat2151
@cat2151.bsky.social
28 followers 59 following 800 posts
にゃ~ん ねむ~ https://zenn.dev/cat2151/scraps/8e0e950ed2888e
Posts Media Videos Starter Packs
Pinned
できた。

格ゲーのボタン練習ができるfighting-game-button-challenge。
github.com/cat2151/figh...

そういうわけで別リポジトリに切り出した。
英語版READMEはその場でLLMに翻訳させたものがそれなりにできてるっぽいので思ったより楽だった。
GitHub - cat2151/fighting-game-button-challenge: A tool to practice button inputs for fighting games on Windows. Ideal for leverless controllers in games like Street Fighter 6.
A tool to practice button inputs for fighting games on Windows. Ideal for leverless controllers in games like Street Fighter 6. - cat2151/fighting-game-button-challenge
github.com
いや

肯定コメントを書いたのち、批判コメントを「複数の批判側のペルソナをlistし」「それぞれの主張として」書いて

とはベクトルが違うから使い分けだなー
「複数のペルソナで意見を書いて」
これは短い割にそこそこ効果が出てる気がする。もうちょっと試そう
ちなみに根本的な
「issue並列でagentに投げたらそりゃそうなるじゃろ」
はそれはそのとおりで、それよりも、

「userがノンブロッキングで

(issueどうしの関連とクリティカルパスを把握し、
片方のissueをとめておく、等をせずに)

issueを大量に投げつけて、寝て起きたらPRできてる」

という作業フローを維持できること、

が重要なので、それの実現を優先してる

犠牲になるのはagent計算コストで、
かわりに獲得できるのは安眠・快眠

安眠・快眠とくれば定期
www.youtube.com/watch?v=Ui-K...
TVアニメ【魔王城でおやすみ】ノンクレジットオープニング映像『快眠!安眠!スヤリスト生活』
YouTube video by FURYU Pictures Channel
www.youtube.com
この実験の意図としては、
test redして(仕様を決めて実装して)test greenするがごとく、

もし、
競合検知した時点で
agentが自発的に実装しなおす機能がほしいなら、
その機能が発動するときの作業フロー、入力の状況はどのようなものか?
を具体的に把握するため

としておこう

実際、わかったのは、競合検知はPR後だから、
agentへのオーダーのpromptで指示しても意味がなく、

やっぱgithub側の競合チェック処理(今も自動で走ってる)
をトリガーにして自動発動するタイプになりそうだなという点
agentに、10個くらいissueを並列で投げて寝て起きたら、
いくつかのPRが巨大な競合を発生してた

予想どおりだな!agent相手ならOKだから一度やっておきたかったんだ!(ほんまかいな)

で試しに競合発生したPRについて、
「じゃー今のmainブランチを元に実装しなおして。今までのやつは破棄ね」
みたいな、いかにもagent向けのtaskをふってみた
朝一番でGitHubの通知欄をみて、

agentが古い教師データでハルシネーションして生成したinstall手順書を

別のLLM chatbotにセカンドオピニオンして
モダンな手段を知って
それに置き換えるようPRレビューに書く、みたいなことを複数やってる

結果的にissueに「それはハルシネーションで、正しいのはこれ」
というノウハウが蓄積されていくので、いろいろおいしい
かもしれない
こりゃagent学習不足なだけじゃなく、
userの知識量もだいぶ不足してるタイプの状態やね

小さな一歩として、
node.jsで波形レンダリングして鳴るのが確認できたのは、よい収穫だ
んー、npm install speaker時に、
Visual Studio Build Toolsによるネイティブビルドが走ることがある、
みたいな情報もLLMかなんかが言うてた気がするけど、

where msbuild
でhitなしだったので、
path通ってるとこにはVisual Studio Build Tools入れてない認識
npm install speaker
node test.js
※test.jsはclaudeに書かせた。sine waveをbufferに書くやつ

普通にwindowsで音が鳴るんだが?
github側でagentが盛大にMSYS2 mingwコンパイルについての巨大なビルド手順書を書いてたのはなんなんだ?

YM2151 emulatorと結合すると別の問題でも発生するのか?
あー、バイナリ生成projectも、
別スレッドに切り出したほうがいいな

cat-play-mml
 ym2151-emulator-examples
  ym2151-emu-win-bin

project依存の階層が3階層目に到達してしまった
んー?

※Windows前提で

Denoだとaudioない

Node.jsだとPortAudioなnode-speakerがマスト

node-speakerはWSL2よりはmingwのほうがビルド構成構築が楽なので推奨

mingwはGitHub Actions Windows Runnerならローカル汚染しないだろう

node-speakerはPortAudioでやれる情報が見当たらない(LLMが言い出したのだが)

みたいな情報が入り乱れておりカオス!

まぁissueに可視化されてるから、
試して失敗ならそれがissueにおいしいノウハウとして蓄積されるから、
淡々とやればOK
いろいろやってる途中で、

そもそもクロスコンパイルをWSL2でやったほうが
今ならずっと楽だよね

(もう俺はMSYS2 mingw環境のメンテとか完全に放置してるよ)
みたいなことも思い出したので、

元のagentにそれを投げたりしていた

やりとりから、手がかりを思い出して進展するのはおいしいなー
壁打ち感がある
なので別projectを立ち上げるのがよいだろう

ym2151-emu-win-bin

そこでバイナリをbuildするのがよいだろう
方針は、ベストエフォート、問題あればcloneして自分とこで対処してちょ
まずあちこちでmingwでビルドする手順が前提になってるのが、
project方針とマッチしないなー

mingwランタイムDLLに依存するリスクがある

MSYS2をuserにinstallさせる作業負荷が大きすぎる
(このprojectをバイナリ配布にするのは、
リポジトリのメンテコストが増えるので最後の手段である。
基本的に、カジュアルにビルドでいけるよー、という方針で進めている)
titleはそれで、
issue内でagentにassignしたところの指示欄に
がっつり「こうやってちょ」を書いてある
それDAWでよくね?なぜわざわざ?どこに違いが?メリデメは?
を毎回丁寧に説明していく必要がある気もするがめんどいので今は割愛
階層分割することで何を実現したいか?が重要で、
変更容易性が最優先、
そしてカジュアルに運用できることが次に優先、となるだろうか
例えば、階層5と6を受け持つ、
簡易的なSMFシーケンサ的ライブラリも考えられる。
例えば、演奏時刻0において、noteNum60を、duration480tick、velocity127で鳴らす、等。

それらのメリットは、広範囲な音楽データやライブラリと
容易に接続できそう、という点にある。
素早く実現可能であることが期待できる。

まぁメッセージングだと階層4がトラフィック無理じゃねみたいになりそうで、
そういうのはプロトタイピングで検証して、
じゃー階層4~8をモノリスかーとか、
ソフトLFOを階層8に持たせようそれってハードLFOじゃねとか、
教育用だから音ぶちぶちでいいぞとか
さて各階層を分担する薄いマイクロなライブラリは
どんなものがありうるだろうか。

教育に用途を絞り、レイテンシや音ぶちぶちを許容し、
実装容易性を優先する方向で、
雑に思考実験してみよう。

例えば、階層7と8を受け持つ、

仮想YM2151動的streamingサーバが考えられる。
それはWindows上で常駐しており、
メッセージング(例えば名前付きパイプでOPMレジスタを書く)で
アクセスができる。出力はaudio streamingそのものである。