AudioChannelSplitter

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

AudioChannelSplitter 将音频流拆分为组成通道,以便可以独立处理每个通道。它提供一个 输入 引脚,一个组合 输出 引脚,以及以下次级输出引脚,所有这些引脚都可以通过 Wires 进行连接:左声道右声道中央环绕左环绕右低音后左后右顶部左顶部右顶部后左顶部后右

显示所有潜在通道位置的图示。

代码示例

分离与混合通道

local Workspace = game:GetService("Workspace")
local function wireUp(source: Instance, target: Instance, sourceName: string?, targetName: string?)
local wire = Instance.new("Wire", source)
wire.SourceInstance = source
wire.TargetInstance = target
if sourceName then
wire.SourceName = sourceName
end
if targetName then
wire.TargetName = targetName
end
return wire
end
local listener = Instance.new("AudioListener")
listener.Parent = Workspace.CurrentCamera
local output = Instance.new("AudioDeviceOutput")
output.Parent = Workspace
local splitter = Instance.new("AudioChannelSplitter")
splitter.Parent = Workspace
local mixer = Instance.new("AudioChannelMixer")
mixer.Parent = Workspace
-- 将听众听到的声音发送到分离器,并将混合声音发送到最终输出
wireUp(listener, splitter)
wireUp(mixer, output)
-- 设置分离器和混合器使用四声道布局
splitter.Layout = Enum.AudioChannelLayout.Quad
mixer.Layout = Enum.AudioChannelLayout.Quad
-- 为每个四个通道提供自己的音调变换器
local frontLeft = Instance.new("AudioPitchShifter")
frontLeft.Name = "前左"
frontLeft.Pitch = 1.25
frontLeft.Parent = Workspace
local backLeft = Instance.new("AudioPitchShifter")
backLeft.Name = "后左"
backLeft.Pitch = 0.5
backLeft.Parent = Workspace
local frontRight = Instance.new("AudioPitchShifter")
frontRight.Name = "前右"
frontRight.Pitch = 1.5
frontRight.Parent = Workspace
local backRight = Instance.new("AudioPitchShifter")
backRight.Name = "后右"
backRight.Pitch = 0.75
backRight.Parent = Workspace
wireUp(splitter, frontLeft, "左")
wireUp(splitter, backLeft, "后左")
wireUp(splitter, frontRight, "右")
wireUp(splitter, backRight, "后右")
wireUp(frontLeft, mixer, nil, "左")
wireUp(backLeft, mixer, nil, "后左")
wireUp(frontRight, mixer, nil, "右")
wireUp(backRight, mixer, nil, "后右")
-- 配置一个部件以发出音频
local part = Instance.new("Part")
part.Shape = Enum.PartType.Ball
part.Size = Vector3.new(4, 4, 4)
part.Material = Enum.Material.SmoothPlastic
part.CastShadow = false
part.Position = Vector3.new(0, 4, -12)
part.Anchored = true
part.Parent = Workspace
local analyzer = Instance.new("AudioAnalyzer")
analyzer.Parent = part
local emitter = Instance.new("AudioEmitter")
emitter.Parent = part
local assetPlayer = Instance.new("AudioPlayer")
assetPlayer.Looping = true
assetPlayer.Asset = "rbxassetid://97799489309320"
assetPlayer.Parent = emitter
wireUp(assetPlayer, emitter)
wireUp(assetPlayer, analyzer)
-- 开始播放音频
assetPlayer:Play()
-- 随着音频播放调整部件的颜色
while true do
local peak = math.sqrt(analyzer.PeakLevel)
part.Color = Color3.new(peak, peak, peak)
task.wait()
end

概要

方法

活动

属性

读取并联

控制要拆分的输入通道布局。当更改时,所有进入此通道拆分器输入的音频流可能需要进行上混(扩大到至少与输入要求相同的通道数)。

输出 引脚生成连接到 输入 的流的副本,但根据 AudioChannelSplitter.Layout 的值:

  • 对于 Mono中央 引脚生成音频流。
  • 对于 Stereo左声道右声道 引脚生成音频流。
  • 对于 Quad左声道右声道后左后右 引脚生成音频流。
  • Surround_5Quad 相同,外加 中央 产生音频流。
  • Surround_5_1Surround_5 相同,外加 低音 产生音频流。
  • Surround_7_1Surround_5_1 相同,外加 环绕左环绕右 生成音频流。
  • 对于 Surround_7_1_4,所有次级输出引脚生成音频流。

方法

GetConnectedWires

Instances

返回连接到指定引脚的 Wires 数组。

参数

pin: string

返回

Instances

GetInputPins

返回一个包含一个字符串的表,"Input",表示 Wire.TargetName 可用的输入引脚。


返回

GetOutputPins

返回一个字符串表,表示 Wire.SourceName 可用的哪些输出引脚:

  • "Output"
  • "Left"
  • "Right"
  • "Center"
  • "SurroundLeft"
  • "SurroundRight"
  • "BackLeft"
  • "BackRight"
  • "Sub"
  • "TopLeft"
  • "TopRight"
  • "TopBackLeft"
  • "TopBackRight"

返回

活动

WiringChanged

Wire 连接或断开连接后触发该事件,并且该 Wire 现在或以前连接到 AudioChannelSplitter 上的某个引脚和某个其他可连接实例。

参数

connected: boolean

实例是否已连接或断开连接。

pin: string

AudioChannelSplitter 上的 Wire 目标引脚。

wire: Wire

AudioChannelSplitter 和其他实例之间的 Wire

instance: Instance

通过 Wire 连接的其他实例。