This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Assets/Audio/WindSFX.gd

37 lines
1.2 KiB
GDScript

extends AudioStreamPlayer
#@export var minimum_speed: float
#@export var minimum_speed_hysteresis: float
#@export var maximum_speed: float
@export var speed_to_volume: Curve
@export var speed_to_cutoff: Curve
# for mapping the curves
@export var max_speed: float = 50.0
# for pausing playback to save resources and avoid quiet hum all the time
@export var min_speed: float = 5.0
@export var min_speed_hysteresis: float = 0.5
@onready var audio_bus = AudioServer.get_bus_index("WindSFX")
@onready var audio_filter : AudioEffectFilter = AudioServer.get_bus_effect(audio_bus,1)
# Called when the node enters the scene tree for the first time.
func _ready():
speed_to_volume.bake()
speed_to_cutoff.bake()
func _physics_process(delta):
var speed = get_parent().get_parent().motion_velocity.length()
print("speed: ", speed)
if speed > min_speed + min_speed_hysteresis / 2:
stream_paused = false
elif speed < min_speed - min_speed_hysteresis / 2:
stream_paused = true
volume_db = speed_to_volume.interpolate_baked(speed / max_speed)
print(volume_db)
audio_filter.cutoff_hz = speed_to_cutoff.interpolate_baked(speed / max_speed) * 10 # cnvert to 0-1 kHz range
print(audio_filter.cutoff_hz)