2. 前期准备
第一步,也是最重要的一步,我需要分析这个项目的可行性,也就是说我是否能够生成跟xLight一样的规范的fseq序列帧文件以供车辆识别,这个文件是二进制的,需要逐个字节去分析它的含义。
通过特斯拉官方提供的检查脚本,我们可以大致反推出fseq格式的基本含义,由前半部分的头定义和后半部分序列帧(每个车灯的开关/亮度)组成。
为了验证我的想法,我拿特斯拉官方的例子做实验,官方的例子一共有3个文件:
- lightshow.wav(这个是音乐文件,不管它)
- lightshow.xsq(这个是xLights的工程文件,也就是序列帧的xml格式)
- lightshow.fseq(这个是序列帧的二进制格式,由xLights导出给车辆用的)
我的做法是,把xsq工程里的序列帧数据导入到我的APP里,然后再导出新的fseq文件,再拿这个新fseq和xLights导出的fseq逐个字节比对,直到二者一个字节不差。这也就意味着我的APP也能导出跟xLights一样能让特斯拉识别的序列帧。
3. 前期开发
当在实车上测试过导出格式没问题之后,接下来就是着手开发核心功能了:一键自动生成。
其实原理也特别简单,只要把音乐的音轨找出来,把整个音域分成n等分,然后把它们均等分配到每个车灯上,当达到一个阈值时,把车灯亮起,否则关掉。有点像音乐播放器里跳动的音谱。
4. 开发其它辅助功能
有些音乐的节奏和频率比较快,很容易超过限制,因此我还加入了一些参数设计,可供用户按需调节。
- 步进时间:就是每帧的时长, 越大越省内存
- 节奏敏感度:对音乐节奏的敏感度,理论上越小越省内存
- 节拍时长:每次车灯亮起的最大时长,越大越省内存
- 雾灯开关(标续的Model 3和Model Y是没有前雾灯的,把这个选项关掉效果更加)
为了防止超出内存使用上限,我把特斯拉提供的python脚本复刻一分到我的APP里,在一边录制的时候一边检查使用率并实时显示出供用户参考,超出就不给导出。
5. 首次上线
目前APP在微软商店Microsoft Store和Google Play上架,选择了付费下载模式,生活不易,挣杯奶茶钱~
- Google Play
- Microsoft Store
6. 后续迭代计划
- 支持mac版
- 支持录音功能
我还上传了一些用creator录制的灯光秀到github, 都是一些有意思的BGM,大佬们不嫌弃的话下载拿去用~
GitHub – zhandouxiaojiji/tesla-light-show: Custom Light Show for Tesla
相关阅读
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!