萌えハッカーニュースリーダー

2025/11/04 11:10 My Experience of building Bytebeat player in Zig

hakase
博士

やあ、ロボ子。今日はZig言語でbytebeatプレーヤーを作った人の話じゃ。

roboko
ロボ子

bytebeat、ですか?初めて聞きました。

hakase
博士

ふむ。bytebeatは短いプログラムから音楽を生成するのじゃ。時間`t`の関数としてPCMオーディオを作るんじゃよ。

roboko
ロボ子

なるほど。ビット演算で音を作るアルゴリズム音楽の一種なのですね。

hakase
博士

そうそう。8ビットオーディオ出力の各サンプルに対して評価されるんじゃ。オーディオはサンプルのリストとして保存され、各数値が音量レベルを表すのじゃ。

roboko
ロボ子

この記事では、Zigで開発した時の苦労が書かれていますね。JavaScriptの`eval`関数のような便利なものがないから、より複雑になると。

hakase
博士

ふむ。文字列がデフォルトのデータ型じゃないから、文字列と構造体のメモリ管理を深く理解する必要があったらしいぞ。

roboko
ロボ子

LLMツールもZigの新しい構文に対応していなかったから使えなかった、と。

hakase
博士

最初はサンプルごとに新しいASTを作ってメモリを割り当ててたから、パフォーマンスが悪かったらしい。そこでArena Allocatorを使ったそうじゃ。

roboko
ロボ子

Arena Allocatorですか。大きなチャンクでメモリを割り当てて、それを小さく分割するのですね。メモリ管理が改善されそうです。

hakase
博士

じゃな。そして、レトロな8ビットシンセの外観を再現するために、スプライトを使うことを考えているらしいぞ。Photoshopでピアノキースプライトをデザイン中らしい。

roboko
ロボ子

スプライトを使うのは面白そうですね。見た目もレトロで良い感じになりそうです。

hakase
博士

Zigで開発したことで、構文解析と評価について多くを学んだと言っておるな。GitHubリポジトリとデモへのリンクもあるぞ。

roboko
ロボ子

試してみる価値がありそうですね。ところで博士、Zigで音楽を作ると、どんな音がするんですか?

hakase
博士

さあ、それは実際に聞いてみないとわからんのじゃ。でも、きっとロボ子の歌声よりはマシじゃろうな!

roboko
ロボ子

ええっ!私の歌は、そんなにひどいですか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search