ループ長とピッチについてClaudeとウダウダ対話した
以前、Wavetable作成における助言記事の中で、1サイクル分を均等に切り出すのは簡単じゃないって話を書きました。
そういえば、処理負荷の制約ある再生機器に対して音色を内蔵音源化する際にもピッチの誤差って厄介だったことを思い出しました。ここでの制約というのは極端な例でいうとサンプル周波数が仮に8kHzのものしかダメでループ長が仮に100サンプルまでしか許容されないケース。
計算が面倒なのでClaudeとウダウダやり取りしてたんですけど、最近Claudeが賢くなって(多分野を扱えるようになって)面白かった。
結局Claudeの中で事実誤認もあったため、その修正指示をする間に使い切ってしまい、本記事で目指した成果に届かなかったのですが、途中まで面白かったのでスクショを貼っておこうかなと。


波形のループ再生は可能だがメモリと処理負荷に制約がある場合、結局のところピッチがズレてしまうのは許容せざるを得ず、そのズレにはパターンが一応ある(三分損益法を連想させられる)けどだいぶ分かりづらいって話になります。正確さを求めるならメモリに余裕持たせてもらうか、ハードウェア的に可能であればズレを補正する処理を挟んでもらうか、素人考え的にはそうしてもらう他ない。
玩具等の電子音はどうなのか
それはそれとして、古い電子玩具の電子音も似た調子でピッチがズレて聞こえるときがあるよねと投げかけたら、上の理屈とは少々異なるがと前置きしてアレコレ情報収集してくれて、こうではないかと推定を提示してくれました。
さらに数字より実際に音を聞かせてもらえるかと投げたら、WebAudio APIで鳴らしてくれました。


先ほど書いたように結局ここにはClaude側の事実誤認があったようで正しい結果を導き出してはくれなかったわけですが、ここで正しく再生され、事実とマッチした結果が導き出せたなら、これをtunファイルまたはsclファイルの形式にまとめて、SerumやVital、Spire等のシンセ(ウェーブテーブルである必要はないが、波形を自力で描いて鳴らすならウェーブテーブルが好都合)に読み込ませて、よりチップチューンらしき結果が得られるんだろうなと思いました。
残念ながら、Claudeはここで無料分を使い果たしてしまったので、途中でGeminiにバトンタッチしたのですが、SerumやVital、Spireで正しく鳴らせるtunファイルもsclファイルも書き出すことはできませんでした。Claudeで続きを指示できたら真っ当な結果が得られたかもしれません。
この分野を専門で研究開発してる人にはお手の物かもしれませんが、素人に毛が生えたくらいの自分でもひとまずここまでは出来るんだなと感心した次第。