Music to my ears.

This commit is contained in:
Haze Weathers 2025-03-11 01:12:28 -04:00
parent 884f49fed3
commit 1570f6986f
15 changed files with 168 additions and 25 deletions

View file

@ -14,7 +14,6 @@ sounds = {
[node name="SoggyAmbience" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_3njyb")
volume_db = -10.0
autoplay = true
bus = &"Background Sound"
[node name="WinSound" type="AudioStreamPlayer" parent="."]

53
autoloads/music.gd Normal file
View file

@ -0,0 +1,53 @@
@tool
extends Node
@export_dir var songs_dir: String
@export_tool_button("Update Songs") var _update_songs_action = _update_songs
@export var songs: Dictionary[StringName, AudioStream]
@export var player_a: AudioStreamPlayer
@export var player_b: AudioStreamPlayer
@onready var _active_player: AudioStreamPlayer = player_a
@onready var _tween: Tween = null
func play_song(id: StringName, crossfade_time: float = 0.0, restart: bool = false) -> void:
var new_stream = songs.get(id) as AudioStream
if new_stream:
if not restart and _active_player.stream == new_stream:
return
var new_player = player_b if _active_player == player_a else player_a
new_player.stream = new_stream
new_player.play()
if crossfade_time > 0.0:
new_player.volume_linear = 0.0
if _tween:
_tween.kill()
_tween = create_tween().set_parallel()
_tween.tween_property(new_player, ^"volume_linear", 1.0, crossfade_time)
_tween.tween_property(_active_player, ^"volume_linear", 0.0, crossfade_time)
_tween.chain().tween_callback(_active_player.stop)
else:
new_player.volume_linear = 1.0
_active_player.stop()
_active_player = new_player
func _update_songs() -> void:
songs.clear()
var dir = DirAccess.open(songs_dir)
if dir:
dir.list_dir_begin()
var file = dir.get_next()
while file != "":
if not dir.current_is_dir() and not file.ends_with(".import"):
var stream := load(songs_dir + "/" + file) as AudioStream
if stream:
songs[file.get_basename()] = stream
file = dir.get_next()
notify_property_list_changed()

1
autoloads/music.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://dgi1v18r8dx4q

19
autoloads/music.tscn Normal file
View file

@ -0,0 +1,19 @@
[gd_scene load_steps=3 format=3 uid="uid://cxrhw5ic2vunh"]
[ext_resource type="Script" uid="uid://dgi1v18r8dx4q" path="res://autoloads/music.gd" id="1_16wm1"]
[ext_resource type="AudioStream" uid="uid://dmctaba7v1rgu" path="res://assets/music/bug_music.ogg" id="2_kl0u4"]
[node name="Music" type="Node" node_paths=PackedStringArray("player_a", "player_b")]
script = ExtResource("1_16wm1")
songs_dir = "res://assets/music"
songs = Dictionary[StringName, AudioStream]({
&"bug_music": ExtResource("2_kl0u4")
})
player_a = NodePath("MusicPlayerA")
player_b = NodePath("MusicPlayerB")
[node name="MusicPlayerA" type="AudioStreamPlayer" parent="."]
bus = &"Music"
[node name="MusicPlayerB" type="AudioStreamPlayer" parent="."]
bus = &"Music"

View file

@ -1,8 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://ckgsfhfpg00ys"]
[gd_scene load_steps=2 format=3 uid="uid://ckgsfhfpg00ys"]
[ext_resource type="Script" uid="uid://crlo6ow7fo6ca" path="res://autoloads/scene_manager.gd" id="1_1hxm1"]
[ext_resource type="AudioStream" uid="uid://sci5aqar0oyx" path="res://assets/audio/bgs/amb_sog.wav" id="2_dr7pa"]
[ext_resource type="AudioStream" uid="uid://flc817bekeh6" path="res://assets/audio/sfx/level_win.ogg" id="3_8ri5f"]
[node name="SceneManager" type="Node" node_paths=PackedStringArray("viewport", "viewport_holder")]
script = ExtResource("1_1hxm1")
@ -49,14 +47,3 @@ handle_input_locally = false
canvas_item_default_texture_filter = 0
size = Vector2i(288, 216)
render_target_update_mode = 4
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_dr7pa")
volume_db = -10.0
autoplay = true
bus = &"Background Sound"
[node name="WinSound" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_8ri5f")
volume_db = -6.558
bus = &"Sound Effects"