TiXL 默认音频输入设备指南:让实时动效项目跨机器可移植的 WASAPI 输入选择机制
TiXL 默认音频输入设备指南让实时动效项目跨机器可移植的 WASAPI 输入选择机制【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3导读TiXLtooll3是一款用于创建实时动态图形的开源软件它的一大特色是让项目直接响应现场音频——麦克风、线路输入line-in或 What You Hear 回环loopback设备。本指南围绕audio-input-device-default手动测试场景系统讲解默认音频输入设备这一关键机制如何在项目中保持输入设备为默认跟随每台机器当前选中的麦克风或线路输入又如何在需要时把项目钉死到某一个具体设备默认选择只记忆在本机、不写入项目文件从而保证你分享出去的项目在其他人的机器上依然开箱即用。读完本文你将掌握该功能在项目播放设置与全局设置之间的联动关系、其底层 WASAPI 设备解析逻辑以及一套可复现的验证流程。功能背景项目如何响应现场音频在 TiXL 中项目可以通过外部音频输入实时驱动动态图形例如节奏同步、音频反应特效。项目的音频输入由两类设置共同决定项目级设置保存在项目文件CompositionSettings中跟随项目走机器级设置保存在本机CoreSettings中不随项目迁移。文档audio-input-device-default所验证的正是这两种设置的边界默认情况下项目引用这台机器当前的默认输入使共享项目具备可移植性当你需要固定使用某个设备时项目级设置又能显式覆盖默认值。这一设计在源码中有明确注释印证——Core/IO/CoreSettings.csMachine-specific WASAPI input device used when a project leaves its AudioInputDeviceName empty (use default input). Kept out of the project file so shared projects stay portable.即机器相关的 WASAPI 输入设备保存在LocalAudioInputDeviceName字段中刻意不写入项目文件以保证共享项目的可移植性。前置条件进行本文的验证与使用前请确认已打开一个 TiXL 项目本机至少有一个可用音频输入麦克风、线路输入或 What You Hear/loopback 设备。核心验证流程六步走以下步骤完整复现audio-input-device-default手动测试场景。该场景的 id 为audio-input-device-default属于project-settings范围标签为[user, essential, audio]随 TiXL 4.2 版本加入。第一步将项目切换到外部音频设备操作打开 [ui:ProjectSettings|project play settings]时间线工具栏中的齿轮图标。如需要勾选 Specify settings for project然后将Audio Source设置为External Device。预期结果出现外部设备控件Sync Mode、BPM、增益、输入电平表、Input DeviceInput Device下拉框显示Default Audio Input。在源码层面Audio Source下拉框对应CompositionSettings.AudioSources枚举其取值为ProjectSoundTrack与ExternalDevice见 Core/Settings/CompositionSettings.cs。项目播放设置窗口中的 Project Setup 区域正是该枚举的 UI 呈现Animation模式映射到ProjectSoundTrack项目配乐ExternalDevice模式才暴露外部设备控制项见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.cs。第二步默认项下方出现机器本地设备选择器操作保持Input Device为Default Audio Input直接看向下拉框正下方。预期结果出现第二个下拉框标签为Default Device出现一条提示说明该选择按机器存储保证共享项目可移植。该下拉框由AudioDeviceSelector.DrawLocalDefaultDeviceCombo绘制其数据源是CoreSettings.Config.LocalAudioInputDeviceName切换后立即写入CoreSettings并保存见 Editor/Gui/Audio/AudioDeviceSelector.cs。下方的提示文本在项目设置窗口源码中为Stored per machine, not in the project. Set this once and shared projects work everywhere.见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.cs。第三步选择本机的默认输入操作打开Default Device下拉框选择一个真实有信号的输入设备对着麦克风说话或对 loopback 设备播放音频。预期结果Input Level电平表随输入信号响应关闭并重新打开播放设置后选择仍然保留。电平表由AudioLevelMeter.DrawAbsoluteWithinBounds绘制其数值来自WasapiAudioInput.DecayingAudioLevel乘以增益系数见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.cs。设备选择会在变更时调用AudioEngine.OnAudioDeviceChanged()使音频引擎即时切换到新设备见 Editor/Gui/Audio/AudioDeviceSelector.cs。第四步默认设置不会被写入项目操作保存并关闭项目。打开 [ui:Settings] → Audio将Default Input Device改为另一个输入然后重新打开该项目。预期结果项目的音频现在跟随新的机器默认值——它没有记住你之前选的具体设备。共享项目在其他机器上的行为相同使用那台机器的默认值而不是你的。这正是可移植性设计的核心项目文件中的AudioInputDeviceName保持为空字符串实际设备名只存在于本机CoreSettings。运行时由WasapiAudioInput.ResolveInputDeviceName完成解析——空的项目设备名回退到机器级配置非空则视为显式覆盖见 Core/Audio/WasapiAudioInput.cs。第五步同一设置驱动全局设置窗口操作打开Settings → Audio滚动到Default Input Device。预期结果Device下拉框显示与播放设置中相同的设备在此处修改会立即反映到项目播放设置的Default Device下拉框中。全局设置窗口与项目设置窗口共用同一个AudioDeviceSelector组件二者都读取/写入同一个CoreSettings.Config.LocalAudioInputDeviceName字段因此天然保持同步见 Editor/Gui/Audio/AudioDeviceSelector.cs 的类注释该选择器是project settings and the global settings window共享的 WASAPI 输入设备选择器。第六步项目仍可显式覆盖为具体设备操作回到项目播放设置打开Input Device并选择某个具体设备名除Default Audio Input以外的任何项。预期结果Default Device选择器消失——项目现在固定使用你点名的设备保存、关闭并重新打开项目仍使用该确切设备即使机器默认值已改变。这是项目有意覆盖默认值的行为将Input Device切回Default Audio Input则恢复跟随机器默认值。源码中项目设备下拉框由AudioDeviceSelector.DrawProjectDeviceCombo绘制空字符串代表 Default Audio Input其余选项是具体的 WASAPI 设备名选择后写入playback.AudioInputDeviceName见 Editor/Gui/Audio/AudioDeviceSelector.cs。在项目设置窗口中当设备名非空时会提供一个恢复默认按钮##resetInputDevice点击后清空设备名、回到默认模式见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.cs。源码级原理解析两级设备解析要真正理解这套机制需要看清运行时如何决定从哪个设备采集音频。核心入口是WasapiAudioInput.StartFrame它在每一帧检查是否需要为 FFT 分析采集音频var wantsCaptureForFft settings.Playback.AudioSource CompositionSettings.AudioSources.ExternalDevice; var wantsCaptureForRecording _isCaptureNeededForRecording; ... var deviceName ResolveInputDeviceName(settings.Playback.AudioInputDeviceName);见 Core/Audio/WasapiAudioInput.cs关键点有两处只有ExternalDevice模式才触发 FFT 采集AudioSource为ProjectSoundTrack时如果没有录音会话采集会停止设备名解析是两级的ResolveInputDeviceName把空的项目级设备名映射到机器级LocalAudioInputDeviceName。ResolveInputDeviceName的完整实现public static string ResolveInputDeviceName(string projectDeviceName) { return string.IsNullOrEmpty(projectDeviceName) ? CoreSettings.Config.LocalAudioInputDeviceName ?? string.Empty : projectDeviceName; }见 Core/Audio/WasapiAudioInput.cs这段代码就是整个可移植性设计的翻译器项目要什么projectDeviceName→ 实际用什么返回值。设备列表本身是懒加载的首次访问WasapiAudioInput.InputDevices时才调用InitializeInputDeviceList()枚举系统 WASAPI 输入设备见 Core/Audio/WasapiAudioInput.cs。在 UI 层面设备行由DrawDeviceRows遍历InputDevices渲染悬停时还会通过反射展示WasapiDeviceInfo的完整属性设备名、通道、采样率等作为 tooltip见 Editor/Gui/Audio/AudioDeviceSelector.cs。采集启动后WASAPI 会使用设备的原生混音频率和最小更新周期配置 BASS并注册ProcessDataCallback做异步音频数据处理见 Core/Audio/WasapiAudioInput.cs。音频系统的缓冲参数定义在 Core/Audio/AudioConfig.cs混音器采样率MixerFrequency运行时跟随设备默认 48000Hz、播放缓冲 100ms、设备缓冲 20ms、FFT 缓冲 1024、频带数 32这些常量共同决定了音频分析与视觉响应的延迟与精度。两个 AudioSource 模式的职责划分模式用途是否触发外部采集ProjectSoundTrack项目内置配乐soundtrack clips驱动时间线否除非有录音会话ExternalDevice外部音频输入驱动实时动效、节拍同步是FFT 分析 电平表值得注意的是即使AudioSource为ProjectSoundTrack只要存在活跃的录音会话_isCaptureNeededForRecording系统仍会启动采集——此时若无配置设备名则静默回退到第一个可用输入设备以保证录音仍有音频见 Core/Audio/WasapiAudioInput.cs。播放设置中与输入相关的其他参数在项目播放设置的 Audio 区域除了设备选择外还有一组与输入信号相关的参数见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.csResync Threshold0.001–0.1s默认范围建议 0.02–0.05s音频播放与动画漂移超过该阈值时触发重新同步Main Volume0–10项目整体输出音量同时同步到 soundtrack 与 operator 音量字段Gain0.01–100默认 1调整输入信号增益适用于现场输入电平波动的场景Decay0.001–1默认 0.9控制 [AudioReaction] 在 AttackMode 下的衰减影响取值高度依赖输入信号的风格、响度与变化Level输入电平表实时反映AudioGainFactor × DecayingAudioLevel。与相关文档的衔接该功能的整体使用场景可参考 LivePerformances.md文档 frontmatter 中的 related-help 指向若项目设备名指定了一个当前不可用的设备播放设置窗口会以警告色显示(NOT FOUND)标记见 Editor/Gui/Windows/TimeLine/ProjectSettingsWindow.cs提示设备缺失但不会阻止项目打开——这也是默认设备机制存在的意义之一共享项目不依赖对方机器的具体设备名。总结与最佳实践追求可移植性保持Input Device Default Audio Input只在Settings → Audio → Default Input Device中设置本机默认设备。这样项目文件中的AudioInputDeviceName保持为空在任何机器上都会自动跟随该机的默认输入需要固定设备如演出机位固定在项目播放设置中直接选择具体设备名项目将无视机器默认值、坚持使用该设备直到你切回Default Audio Input多机部署为每台机器分别配置一次本机默认设备同一项目即可在多台机器上一致工作无需改项目文件排查输入无信号先确认Audio Source为External Device再看Input Device是否为Default Audio Input且机器默认设备Default Device/ Settings → Audio指向了一个真实有信号的设备最后观察Level电平表是否响应。这套项目级空设备名 机器级真实设备名的两级设计是 TiXL 在现场演出可移植性与设备确定性之间做出的取舍理解它之后无论是要分享项目给他人还是为固定演出环境锁定设备都能做到心中有数。【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

LibreHardwareMonitor 电脑硬件监控完整指南:5 分钟看明白 CPU 温度、风扇与电压

LibreHardwareMonitor 电脑硬件监控完整指南:5 分钟看明白 CPU 温度、风扇与电压

LibreHardwareMonitor 电脑硬件监控完整指南:5 分钟看明白 CPU 温度、风扇与电压 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor is free software that can monitor the temperature sensors, fan speeds, voltages, load and clock speeds of you…

2026/9/19 21:56:51 阅读更多 →
EtherCAT HotConnect配置与故障隔离:从状态字到4132处理

EtherCAT HotConnect配置与故障隔离:从状态字到4132处理

简介:倍福EtherCAT HotConnect功能设置指南PDF,专注解决工业现场中EtherCAT设备带电插拔导致的网络中断问题,适用对象为使用倍福控制器的自动化工程师与系统集成商。内容以CX9010作为EtherCAT Master、EK1122网关与多台EK1100从站构建的星型/…

2026/9/19 21:55:51 阅读更多 →
OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗?

OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 21:55:51 阅读更多 →

最新新闻

应变片压力传感器原理及现场应用要点

应变片压力传感器原理及现场应用要点

简介:围绕应变片压力传感器原理及应用,文档系统介绍了电阻应变片、瓷压力传感器、扩散硅压力传感器和蓝宝石压力传感器等常见类型。内容先以金属丝应变电阻的阻值变化公式入手,解释电阻应变效应,再结合应变电桥与信号放大流程&…

2026/9/19 22:38:12 阅读更多 →
Leaflet WMS Gutter:用 Gutter 渲染彻底解决 WMS 瓦片边界图标截断问题

Leaflet WMS Gutter:用 Gutter 渲染彻底解决 WMS 瓦片边界图标截断问题

Leaflet WMS Gutter:用 Gutter 渲染彻底解决 WMS 瓦片边界图标截断问题 【免费下载链接】Leaflet 🍃 JavaScript library for mobile-friendly interactive maps 🇺🇦 项目地址: https://gitcode.com/gh_mirrors/le/Leaflet …

2026/9/19 22:38:12 阅读更多 →
CMW100 SCDMA终端射频测试:SCPI指令与自动化脚本实践

CMW100 SCDMA终端射频测试:SCPI指令与自动化脚本实践

简介:面向使用Rohde & Schwarz CMW100测试设备进行TD-SCDMA测量的工程师,这份PDF指令手册系统梳理了KM750、KM751、KM012、KS750、KS751、KS760以及KE100/KE750等关键R&S CMW选项的功能定位与应用场景,分别覆盖上行链路发射测量、多评…

2026/9/19 22:38:12 阅读更多 →
校园二手交易平台技术方案:从数据模型到风控落地

校园二手交易平台技术方案:从数据模型到风控落地

简介:一份完整的校园二手交易平台创业项目计划书,适合正在准备创新创业大赛、编写商业计划书或关注大学生闲置物品交易方向的学生与创业团队使用。计划书以线下为主、线上为辅的运营思路为切入点,系统梳理了市场背景、竞争分析、SWOT分析、业…

2026/9/19 22:38:12 阅读更多 →
Noi浏览器指南:多AI助手接入、扩展与提示词模板如何配置

Noi浏览器指南:多AI助手接入、扩展与提示词模板如何配置

Noi浏览器指南:多AI助手接入、扩展与提示词模板如何配置 【免费下载链接】Noi 🚀 Less chaos. More flow. 项目地址: https://gitcode.com/GitHub_Trending/no/Noi 写文章时问一个AI,写代码又想换另一个。几个窗口来回切,确…

2026/9/19 22:38:12 阅读更多 →
同一把 TaoToken Key,Cursor 从 GPT-4 切到 Claude

同一把 TaoToken Key,Cursor 从 GPT-4 切到 Claude

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 22:37:12 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →