AudioEqualizer

顯示已棄用項目

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

AudioEqualizer 調整音頻流的頻率內容。它提供一個 輸入 彈簧和一個 輸出 彈簧,可以由 WiresAudioEqualizer有3個頻率帶,其增益值可以控制,並且帶之間的交叉點可以移動。

範例程式碼

音頻均衡器可用於變更音頻傳輸的頻率內容。這可以在發射之前、或在聆聽之後進行,並可用於實裝您自己的、自訂 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

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

instance: Instance

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