AudioEqualizer

显示已弃用

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

AudioEqualizer 调整音频流的频率内容。它提供一个 输入 接口和一个 输出 接口,可以通过 Wires 连接到/从。AudioEqualizer 有 3 个频率带,其增益值可以控制,带之间的交叉点可以移动。

代码示例

音频Equalizer可用于改变音频流的频率内容。这可以在发射之前进行,或在收听后进行,并可用于实现自己的、自定义 RollOff 逻辑!在这个例子中,我们使用一个音频均衡器使音频播放器的高频变得更加淡化,因为音频收听器离开了音频发射器。我们还会减少低频和高频,因为收听器越来越远。

收听器平衡

local function wireUp(source: Instance, target: Instance): Wire
local wire = Instance.new("Wire")
wire.Parent = target
wire.SourceInstance = source
wire.TargetInstance = target
return wire
end
local function getCFrameFrom(inst: Instance): CFrame?
local parent = inst.Parent
if not parent then
return nil
elseif parent:IsA("Model") then
return parent.WorldPivot
elseif parent:IsA("BasePart") then
return parent.CFrame
elseif parent:IsA("Attachment") then
return parent.WorldCFrame
elseif parent:IsA("Camera") then
return parent.CFrame
else
return nil
end
end
local function rescale(value: number, oldRange: NumberRange, newRange: NumberRange): number
local clamped = math.clamp(value, oldRange.Min, oldRange.Max)
local normalized = clamped - oldRange.Min / (oldRange.Max - oldRange.Min)
return normalized * (newRange.Max - newRange.Min) + newRange.Min
end
local assetPlayer = Instance.new("AudioPlayer")
assetPlayer.AssetId = "rbxassetid://142376088"
assetPlayer.Parent = workspace
local equalizer = Instance.new("AudioEqualizer")
equalizer.MidRange = NumberRange.new(400, 3000)
equalizer.Parent = workspace
local emitterPart = Instance.new("Part")
emitterPart.Anchored = true
emitterPart.Position = Vector3.new(0, 5, 0)
emitterPart.Parent = workspace
local emitter = Instance.new("AudioEmitter")
emitter.Parent = emitterPart
local listener = Instance.new("AudioListener")
listener.Parent = workspace.CurrentCamera
local output = Instance.new("AudioDeviceOutput")
output.Parent = workspace
wireUp(assetPlayer, equalizer)
wireUp(equalizer, emitter)
wireUp(listener, output)
assetPlayer.Looping = true
assetPlayer:Play()
while true do
local emitterFrame = getCFrameFrom(emitter)
local listenerFrame = getCFrameFrom(listener)
if emitterFrame and listenerFrame then
local towardEmitter = emitterFrame.Position - listenerFrame.Position
local look = towardEmitter.Unit:Dot(listenerFrame.LookVector) -- 范围为 [-1, 1]
look = rescale(look, NumberRange.new(-1, 1), NumberRange.new(-20, 0))
local distance = math.max(towardEmitter.Magnitude, 1)
local rolloff = 1 / distance -- 范围为 [0, 1]
rolloff = rescale(rolloff, NumberRange.new(0, 1), NumberRange.new(-10, 10))
equalizer.HighGain = look + rolloff
equalizer.LowGain = rolloff
end
task.wait()
end

概要

属性

  • 读取并联

    无论是否有音频流被此效果影响。

  • 未复制
    Roblox 脚本安全性
    读取并联
  • 读取并联

    获得值,可应用于平衡器中最高带的频率内容。

  • 读取并联

    获得值,可应用于平衡器中最低带的频率内容。

  • 读取并联

    获得值,可应用于中等带的频率内容的均衡器。

  • 读取并联

    MidGain 影响的带的频率范围。

活动

属性

Bypass

读取并联

如果 true,音频流将无受此效果影响地通过。

Editor

未复制
Roblox 脚本安全性
读取并联

HighGain

读取并联

在十分贝中获得值,应用于均衡器中最高带的频率内容。范围从 -80 到 10。

LowGain

读取并联

在十分贝中获得值,应用于均衡器中最低带的频率内容。范围从 -80 到 10。

MidGain

读取并联

在频率内容中获得值,以十分贝计,应用于中频带的均衡器。范围从 -80 到 10。

MidRange

读取并联

MidGain 影响的带的频率范围在赫兹。范围的较低值决定了低频和中频之间的交叉频率。范围的更高值决定了中高带之间的交叉频率。两个交叉频率范围为 200 到 20,000。

方法

GetConnectedWires

Instances

返回连接到指定端置顶的 Wires 阵列。 AudioEqualizer 有一个 "输入" 端口和一个 "输出" 置顶。

参数

pin: string
默认值:""

返回

Instances

GetInputPins


返回

GetOutputPins


返回

活动

WiringChanged

Wire 连接或断开后发生的事件,该 Wire 现在或之前已连接到 AudioEqualizer 上的某个引脚或其他可连接的实例。

参数

connected: boolean

实例是否连接或断开。

pin: string

AudioEqualizer 上的按钮,用于 Wire 目标。

wire: Wire

之间的 Wire 和其他实例之间的 AudioEqualizer

instance: Instance

连接到 Wire 通过的另一个实例。