extends Node export(Array, AudioStream) var music_list = [] var music_index = 0 var lowering_sound = false const min_vol_db = -17 onready var musicPlayer = $AudioStreamPlayer onready var tween = $Tween func _ready(): music_list.shuffle() list_play() func list_play(): assert(music_list.size() > 0) musicPlayer.stream = music_list[music_index] musicPlayer.play() music_index += 1 if music_index == music_list.size(): music_index = 0 tween.interpolate_property( musicPlayer, "volume_db", musicPlayer.volume_db, min_vol_db, 40, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT ) func lower_sound(): lowering_sound = true var new_vol = musicPlayer.volume_db new_vol -= 10 tween.interpolate_property( musicPlayer, "volume_db", musicPlayer.volume_db, new_vol, .5, tween.TRANS_LINEAR, tween.EASE_IN_OUT ) tween.start() func continue_playback(): lowering_sound = false _on_Timer_timeout() func list_stop(): musicPlayer.stop() func _on_AudioStreamPlayer_finished(): music_list.shuffle() list_play() func _on_Timer_timeout(): var new_pitch = rand_range(.9, 1.1) tween.interpolate_property( musicPlayer, "pitch_scale", musicPlayer.pitch_scale, new_pitch, 1, tween.TRANS_LINEAR, tween.EASE_IN_OUT ) tween.start() # if not lowering_sound: # var new_vol = rand_range(-8, -12) # tween.interpolate_property(musicPlayer, "volume_db", musicPlayer.volume_db, new_vol, .5, tween.TRANS_LINEAR, tween.EASE_IN_OUT) # tween.start()