Honey Line,我用绘制方式保护的网页拼图,没有音乐。它的音效已经由 Node 脚本生成,所以我让 Claude Code 为一个音乐循环做同样的事,而不是去寻找授权的曲目。
这段音乐是数据:四个和弦(Cmaj7、Am7、Fmaj7、G6)以 92 BPM 的速度,8 分音符的琶音模式,每个和弦一个低音基底音和每 8 分音符一个沙锤。每种乐器都是随时间变化的小函数。玛里姆巴是正弦波加上快速衰减的第八倍音程的部分,沙锤是相减噪声,衰减时间 35 毫秒。
无缝循环是最棘手的部分。音符被混入循环缓冲区,所以在末尾的尾音如果跑出范围,会回到起点;同样,混响和低通滤波器也进行两次处理,原因相同。循环处没有点击声。
脚本大约在 1.5 秒内生成三个候选循环。Claude 听不到声音,所以只能通过数值检查:没有削波、各候选循环的音量相等,并且 Chrome 解码 AAC 文件后得到的样本数与渲染的完全一致,这才是保证 WebAudio 循环无间隙的关键。然后我听了并挑选了一个。结果是一个 21 秒的循环,作为 AAC 编码后的文件大小为 172 KB。
该片段是宣传用的,包含该循环以及游戏自带的音效,时间与动画同步,通过读取生成它的脚本中的时间线实现。
显而易见的限制是:模型无法判断声音是否好听,因此生成几个变体供并排比较是最有用的部分。我的下一个问题是变体,所以 5 分钟的会话不应该听到同一个 21 秒的循环播放十五次。有人在这里做过游戏音乐的过程化变体,除了简单的循环之外吗?
游戏,免费在线玩:https://playgama.com/game/honey-line
评论 (0)