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.
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
요약
속성
오디오 스트림이 이 효과에 영향을 받지 않고 전달되는지 여부.
이퀄라이저의 최고 밴드에서 주파수 콘텐츠에 적용할 값을 얻습니다.
이퀄라이저의 가장 낮은 밴드에서 주파수 콘텐츠에 적용할 값을 얻습니다.
이퀄라이저의 중간 밴드에서 주파수 콘텐츠에 적용할 값을 얻습니다.
밴드에 영향을 미치는 주파수 범위 MidGain .
메서드
지정된 핀하다연결된 배열 Wires를 반환합니다.
이벤트
다른 인스턴스가 를 통해 연결되거나 연결 해제되면 발생합니다. 연결되거나 연결 해제되면 발생합니다.
속성
Editor
MidRange
대역폭에 영향을 미치는 밴드의 주파수 범위는 MidGain입니다.범위의 낮은 값은 낮은 대역과 중간 대역 간의 교차 주파수를 결정합니다.범위의 더 높은 값은 중간 및 높은 밴드 간의 교차 주파수를 결정합니다.두 교차 주파수 범위는 200에서 20,000입니다.
메서드
이벤트
WiringChanged
연결되거나 연결 해제된 Wire 후 발생하는 이벤트로, Wire 는 현재 또는 이전에 AudioEqualizer 및 다른 연결 가능한 인스턴스에 고정되었거나 고정되었습니다.
매개 변수
인스턴스가 연결되었거나 연결 해제되었는지 여부.
타겟 AudioEqualizer 에 있는 핀은 다음과 같습니다.The pin on the that the Wire targets.
Wire 와 다른 인스턴스 사이의 AudioEqualizer.