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