AudioEqualizer

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

AudioEqualizer 調整音頻流的頻率內容。它提供一個 輸入 彈簧和一個 輸出 彈簧,可以由 WiresAudioEqualizer有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

之間的 WireAudioEqualizer 和其他實個體、實例之間。

instance: Instance

通過 Wire 連接的另一個實例,或是已連接的實例。