--- title: 音乐控制DMX灯光的简单方法 date: 2022-11-09 17:13:17 excerpt: 摘要 tags: rating: ⭐ --- ## 前言 最近公司有个活涉及到DMX打光的活,还比较急。为了减少美术同学的压力,所以我就想通过音乐分析+播放Sequence的方式来实现。 UE有自带基于FFT的音乐分析功能,但只能根据频率进行对应的判断,比较麻烦所以放弃了。具体操作可以参考: https://www.bilibili.com/video/BV1FP411c79v/ ## AudioAnalysisTools 这里推荐使用audio-analysis-tools,原因是免费且开源,默认带有一些预设:IsHiHat、IsBeat、IsKick、IsSnare,同时可以通过频率范围来判断节拍。但也正因为此一些功能不够完善,需要自己改一下。 下载地址:https://www.unrealengine.com/marketplace/zh-CN/product/audio-analysis-tools 以下是我做的一个案例,通过音乐分析与K帧来播放对应的子Sequence(预先K好DXM动画)来实现音乐控制DMX灯光效果: ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/AudioAnalysisTools_1.png) IsBeatRange是根据指定频率声音的音量进行判断,这里可以根据需要来设置判断条件: ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/AudioAnalysisTools_2.png) 因为逻辑是写在Actor中的,所以搞了按键事件来停止音乐播放。 ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/AudioAnalysisTools_3.png) 不过需要注意:启用这个插件之后导入Wav就会变成这个资产。如果想要获得SoundWave资产就必须停用插件并且再次导入。 ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/AudioAnalysisTools_4.png) ## DMX移植 只需要在新工程里启用DMX插件,之后将官方的DMX的工程迁移即可。需要注意的是Sequence里的需要使用DMX,里面设置好DMXLibrary以及补丁(这中文翻译槽点满满)即可。 ## 后续工作 这个方案有一些缺点: 1. AudioAnalysisTools需要播放声音才能获取的数据。 2. AudioAnalysisTools无法使用UE自带的Asset,同时会导致无法在导入后生成SoundWave Asset。 3. 无法在Sequence停止播放时停下(更好的控制)或者在拖动轨道时执行正确的行为。 这就需要通过自定义Sequence Track以及修改插件才能完美实现。