AudioEqualizer

显示已弃用

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

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

代码示例

An AudioEqualizer can be used to change the frequency content of audio streams. This can be done before emission, or after listening, and can be used to implement your own, custom RollOff logic! In this example, we use an AudioEqualizer to make an AudioPlayer's high frequencies more muffled as the AudioListener looks away from the AudioEmitter. We also reduce both the low and high frequencies as the listener gets further away.

Listener Equalization

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) -- ranges from [-1, 1]
look = rescale(look, NumberRange.new(-1, 1), NumberRange.new(-20, 0))
local distance = math.max(towardEmitter.Magnitude, 1)
local rolloff = 1 / distance -- ranges from [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 通过的另一个实例。