晚自习的铃声刚响过,陈志强的手机突然震动起来。屏幕上跳出唐雨欣的名字,后面跟着个旋转的舞蹈小人表情——这是她专属的聊天标识。他犹豫了两秒,悄悄溜出教室,躲到走廊尽头的安全通道里接起电话。
“你看视频了吗?”唐雨欣的声音带着喘,背景里有嘈杂的音乐和脚步声,“刚排练完,赶紧给你打过来。”
“还没,”陈志强靠在冰冷的铁门上,听着她那边传来的喝水声,“刚下课。”
“那我发你微信,”她的声音突然压低,像在说什么秘密,“记得开声音,有惊喜。”
电话挂断得很仓促,像是被谁催着走。陈志强点开微信,唐雨欣的消息已经发了过来:一个时长三分二十秒的视频,附带文字“你的代码活过来了”。
他点下播放键。画面有点晃,应该是用手机随手拍的。镜头对准排练厅的舞台,二十个穿着练功服的舞者站成散乱的队列,唐雨欣站在最中间,头发挽成紧绷的芭蕾髻,脖颈线条在顶灯照射下像道流畅的曲线。
音乐响起的瞬间,陈志强愣住了。那不是什么专业配乐,而是他去年写的“情绪代码”生成的电子音——代码运行时的错误提示音被调成了音阶,循环语句变成了重复的节奏型,听起来有点像老式游戏机的音效,带着股笨拙的可爱。
舞者们动了起来。每个人的动作都不一样:有人双臂伸直像在输入指令,有人侧身旋转模仿光标移动,还有个高个子男生总在关键时刻突然顿住,像程序卡壳了一样。
“这是‘条件判断’动作,”唐雨欣的画外音突然响起,带着笑意,“他每次都故意慢半拍,说这样才像你写代码时犹豫的样子。”
陈志强忍不住笑了。他确实有这毛病,写关键函数时总爱盯着屏幕发呆,沈静还给他起过外号叫“卡顿小王子”。
视频拍到一半,镜头突然切换到后台。唐雨欣举着手机对着镜子,额前的碎发被汗水打湿,贴在脸颊上。“看到没?”她转动镜头,对准墙上的白板,上面用红笔写着串奇怪的公式:“if抬手高度45,则旋转180;else保持静止”。
“这是把你的代码翻译成舞蹈指令了,”她用手指点着“45”那个数字,“你设置的容错率是5%,我们就把动作误差控制在±2.5,比你们调试程序还严格。”
陈志强凑近屏幕,发现白板角落画着个小小的坦克图案,和王家坪小学那个叫小石头的男生画的一模一样。他突然想起唐雨欣上次说要把乡村孩子的画做成舞蹈道具,原来不是随口说说。
视频最后三十秒是群舞部分。舞者们突然开始同步动作,手臂划出的角度、脚步移动的距离,甚至呼吸的节奏都变得一致。就在陈志强以为这是最精彩的部分时,意外发生了——那个总爱卡顿的高个子男生脚下一滑,差点撞到旁边的女生。
混乱只持续了两秒。唐雨欣顺势拉住男生的胳膊,转了个漂亮的圆弧,其他舞者也立刻调整队形,把意外变成了段即兴的双人舞。台下传来掌声和口哨声,有人喊“这段加得好”。
“看到没?”唐雨欣的声音带着得意,“出错时的停顿反而成了亮点,就像你代码里那些被强行改成彩蛋的漏洞。”
视频结束在她的特写镜头里。她对着镜头眨了眨眼,指尖在屏幕上比了个敲代码的动作,然后突然想起什么似的,匆匆说:“对了,导演想把这个作品带去国外演出,问你那个实时音效系统能不能用上?”
陈志强还没来得及回复,系统弹窗先跳了出来:
【检测到“跨国界合作邀请”,“艺术感知”模块启动多语言环境适配】
【当前进度:30%...50%...80%...适配完成】
【解锁功能:“情感频率同步”——可根据舞者实时动作调整音效参数】