From b55b68bcf22956123d7777acf551b81ab38d513b Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 12 Mar 2026 21:20:57 -0400 Subject: [PATCH] it's kinda fun now --- click_track.tscn | 6 ++ main.gd | 48 ++++++++++ main.gd.uid | 1 + main.tscn | 130 ++++++++++++++++++-------- project.godot | 5 + resources/light_occluder_polygon.tres | 4 + resources/point_light_texture.tres | 13 +++ rhythm_manager.gd | 18 ++-- rhythm_manager.tscn | 30 ++++-- 9 files changed, 200 insertions(+), 55 deletions(-) create mode 100644 click_track.tscn create mode 100644 main.gd create mode 100644 main.gd.uid create mode 100644 resources/light_occluder_polygon.tres create mode 100644 resources/point_light_texture.tres diff --git a/click_track.tscn b/click_track.tscn new file mode 100644 index 0000000..ba69ead --- /dev/null +++ b/click_track.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://dduyumwk5v1ge"] + +[ext_resource type="AudioStream" uid="uid://b8n6p428csquv" path="res://assets/audio/full/eine-kleine-click.wav" id="1_048mw"] + +[node name="ClickTrack" type="AudioStreamPlayer2D" unique_id=1931221522] +stream = ExtResource("1_048mw") diff --git a/main.gd b/main.gd new file mode 100644 index 0000000..b11cc5d --- /dev/null +++ b/main.gd @@ -0,0 +1,48 @@ +#@tool +#@icon(icon_path: String) +#class_name MyNode +extends Node +## Documentation comments + +## signal +## enum +## const +## @export var +var musicians: Array[Node] +var musician_lights: Array[Node] + +@onready var rhythm_manager: RhythmManager = %RhythmManager +@onready var conductor: AnimatedSprite2D = $Conductor +@onready var conductor_light: PointLight2D = %ConductorLight +@onready var click_track: AudioStreamPlayer2D = %ClickTrack + +## OVERRIDES + +func _ready() -> void: + musicians = get_tree().get_nodes_in_group("musicians") + musician_lights = get_tree().get_nodes_in_group("musician_lights") + rhythm_manager.connect("song_started", on_song_started) +#func _process(delta: float) -> void: + #pass +# +#func _physics_process(delta: float) -> void: + #pass + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("ready"): + conductor.play("default") + conductor_light.visible = true + click_track.play() +## CORE + +## PRIVATE/HELPER + +## RECEIVERS + +func on_song_started() -> void: + for musician in musicians: + musician.play("default") + for light in musician_lights: + light.visible = true + +## SETTERS/GETTERS diff --git a/main.gd.uid b/main.gd.uid new file mode 100644 index 0000000..24b3cf9 --- /dev/null +++ b/main.gd.uid @@ -0,0 +1 @@ +uid://bjv7i1kmivfai diff --git a/main.tscn b/main.tscn index 14b8996..50388c9 100644 --- a/main.tscn +++ b/main.tscn @@ -1,15 +1,16 @@ [gd_scene format=4 uid="uid://irgt7rn5kfap"] +[ext_resource type="Script" uid="uid://bjv7i1kmivfai" path="res://main.gd" id="1_5vw27"] [ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_ig7tw"] [ext_resource type="Texture2D" uid="uid://cs47f2rurekyx" path="res://assets/floor_wood_01-32x16.png" id="2_0xm2m"] [ext_resource type="AudioStream" uid="uid://bflw7me3q03gf" path="res://assets/audio/full/eine-kleine-full.wav" id="2_7mycd"] [ext_resource type="AudioStream" uid="uid://rn5a5gjgvn4k" path="res://assets/audio/full/eine-kleine-viol-full.wav" id="3_7mycd"] [ext_resource type="AudioStream" uid="uid://d3qyd08xk7d3h" path="res://assets/audio/full/eine-kleine-cello-full.wav" id="4_272bh"] +[ext_resource type="OccluderPolygon2D" uid="uid://inxtfgsnw5sq" path="res://resources/light_occluder_polygon.tres" id="5_4c57u"] [ext_resource type="AudioStream" uid="uid://bnypuodp8swg3" path="res://assets/audio/full/eine-kleine-bass-full.wav" id="5_5vw27"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_1bvp3"] -atlas = ExtResource("1_ig7tw") -region = Rect2(64, 0, 32, 32) +[ext_resource type="Texture2D" uid="uid://d1li1mlxutaym" path="res://resources/point_light_texture.tres" id="5_kek77"] +[ext_resource type="PackedScene" uid="uid://ojisu2jrshsp" path="res://rhythm_manager.tscn" id="7_272bh"] +[ext_resource type="PackedScene" uid="uid://dduyumwk5v1ge" path="res://click_track.tscn" id="11_efxa6"] [sub_resource type="AtlasTexture" id="AtlasTexture_lquwl"] atlas = ExtResource("1_ig7tw") @@ -23,13 +24,14 @@ region = Rect2(0, 0, 32, 32) atlas = ExtResource("1_ig7tw") region = Rect2(32, 0, 32, 32) +[sub_resource type="AtlasTexture" id="AtlasTexture_1bvp3"] +atlas = ExtResource("1_ig7tw") +region = Rect2(64, 0, 32, 32) + [sub_resource type="SpriteFrames" id="SpriteFrames_7mycd"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_1bvp3") -}, { -"duration": 1.0, "texture": SubResource("AtlasTexture_lquwl") }, { "duration": 1.0, @@ -37,12 +39,31 @@ animations = [{ }, { "duration": 1.0, "texture": SubResource("AtlasTexture_h2yge") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1bvp3") }], "loop": true, "name": &"default", -"speed": 8.0 +"speed": 4.0 }] +[sub_resource type="Gradient" id="Gradient_lquwl"] +interpolation_mode = 2 +offsets = PackedFloat32Array(0.5, 0.8) +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_4c57u"] +gradient = SubResource("Gradient_lquwl") +width = 96 +height = 48 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.85, 0.85) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_4c57u"] +polygon = PackedVector2Array(-1, 12, 1, 13, -2, 14, -4, 13) + [sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"] atlas = ExtResource("1_ig7tw") region = Rect2(0, 160, 32, 32) @@ -86,21 +107,6 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_lquwl"] -polygon = PackedVector2Array(0, 12, 4, 13, 0, 14, -4, 13) - -[sub_resource type="Gradient" id="Gradient_lquwl"] -interpolation_mode = 2 -offsets = PackedFloat32Array(0.5, 0.8) -colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0) - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_7mycd"] -gradient = SubResource("Gradient_lquwl") -width = 128 -fill = 1 -fill_from = Vector2(0.5, 0.5) -fill_to = Vector2(0.85, 0.85) - [sub_resource type="AtlasTexture" id="AtlasTexture_5vw27"] atlas = ExtResource("1_ig7tw") region = Rect2(192, 32, 32, 32) @@ -208,64 +214,101 @@ tile_size = Vector2i(32, 16) sources/5 = SubResource("TileSetAtlasSource_h2yge") [node name="Main" type="Node2D" unique_id=1319338792] +script = ExtResource("1_5vw27") [node name="Camera2D" type="Camera2D" parent="." unique_id=1314238347] -zoom = Vector2(4, 4) +zoom = Vector2(8, 8) [node name="Conductor" type="AnimatedSprite2D" parent="." unique_id=880231478] +position = Vector2(40, 15) sprite_frames = SubResource("SpriteFrames_7mycd") -autoplay = "default" frame_progress = 0.51704574 [node name="FullAudio" type="AudioStreamPlayer2D" parent="Conductor" unique_id=1320626273] stream = ExtResource("2_7mycd") -autoplay = true + +[node name="ConductorLight" type="PointLight2D" parent="Conductor" unique_id=339554188] +unique_name_in_owner = true +visible = false +position = Vector2(5, 9) +energy = 0.8 +shadow_enabled = true +shadow_filter = 2 +shadow_filter_smooth = 7.6 +texture = SubResource("GradientTexture2D_4c57u") + +[node name="ConductorOccluder" type="LightOccluder2D" parent="Conductor" unique_id=122003117] +occluder = SubResource("OccluderPolygon2D_4c57u") [node name="Musicians" type="Node2D" parent="." unique_id=237973745] -[node name="Viol" type="AnimatedSprite2D" parent="Musicians" unique_id=932682158] -position = Vector2(-27, -4) +[node name="Viol" type="AnimatedSprite2D" parent="Musicians" unique_id=932682158 groups=["musicians"]] +position = Vector2(-18, 2) sprite_frames = SubResource("SpriteFrames_074og") -autoplay = "default" frame_progress = 0.6208535 [node name="ViolAudio" type="AudioStreamPlayer2D" parent="Musicians/Viol" unique_id=800067327] visible = false stream = ExtResource("3_7mycd") -[node name="LightOccluder2D" type="LightOccluder2D" parent="Musicians/Viol" unique_id=781715626] +[node name="ViolOccluder" type="LightOccluder2D" parent="Musicians/Viol" unique_id=781715626] position = Vector2(1, 0) -occluder = SubResource("OccluderPolygon2D_lquwl") +occluder = ExtResource("5_4c57u") -[node name="PointLight2D" type="PointLight2D" parent="Musicians/Viol" unique_id=953248893] +[node name="ViolLight" type="PointLight2D" parent="Musicians/Viol" unique_id=953248893 groups=["musician_lights"]] +visible = false z_index = 100 position = Vector2(8, 10) energy = 0.8 shadow_enabled = true shadow_filter = 2 shadow_filter_smooth = 7.6 -texture = SubResource("GradientTexture2D_7mycd") +texture = ExtResource("5_kek77") -[node name="Cello" type="AnimatedSprite2D" parent="Musicians" unique_id=504793709] -position = Vector2(-14, -28) +[node name="Cello" type="AnimatedSprite2D" parent="Musicians" unique_id=504793709 groups=["musicians"]] +position = Vector2(21, -18) sprite_frames = SubResource("SpriteFrames_dg77c") -autoplay = "default" frame_progress = 0.5045058 [node name="CelloAudio" type="AudioStreamPlayer2D" parent="Musicians/Cello" unique_id=526745522] visible = false stream = ExtResource("4_272bh") -[node name="Bass" type="AnimatedSprite2D" parent="Musicians" unique_id=1099071968] -position = Vector2(-49, -19) +[node name="CelloOccluder" type="LightOccluder2D" parent="Musicians/Cello" unique_id=1913557474] +position = Vector2(1, 0) +occluder = ExtResource("5_4c57u") + +[node name="CelloLight" type="PointLight2D" parent="Musicians/Cello" unique_id=576926503 groups=["musician_lights"]] +visible = false +position = Vector2(10, 9) +energy = 0.8 +shadow_enabled = true +shadow_filter = 2 +shadow_filter_smooth = 7.6 +texture = ExtResource("5_kek77") + +[node name="Bass" type="AnimatedSprite2D" parent="Musicians" unique_id=1099071968 groups=["musicians"]] +position = Vector2(-45, -32) sprite_frames = SubResource("SpriteFrames_kq58d") -autoplay = "default" frame_progress = 0.30279997 [node name="BassAudio" type="AudioStreamPlayer2D" parent="Musicians/Bass" unique_id=1653394620] visible = false stream = ExtResource("5_5vw27") +[node name="BassOccluder" type="LightOccluder2D" parent="Musicians/Bass" unique_id=2068886055] +position = Vector2(1, 0) +occluder = ExtResource("5_4c57u") + +[node name="BassLight" type="PointLight2D" parent="Musicians/Bass" unique_id=1562439646 groups=["musician_lights"]] +visible = false +position = Vector2(9, 9) +energy = 0.8 +shadow_enabled = true +shadow_filter = 2 +shadow_filter_smooth = 7.6 +texture = ExtResource("5_kek77") + [node name="Stage" type="TileMapLayer" parent="." unique_id=15466516] z_index = -10 tile_map_data = PackedByteArray("AAD5//f/BQABAAQAAAD5//j/BQABAAQAAAD5//n/BQABAAQAAAD5//r/BQABAAQAAAD5//v/BQABAAQAAAD5//z/BQABAAQAAAD5//3/BQABAAQAAAD5//7/BQABAAQAAAD5////BQABAAQAAAD5/wAABQABAAQAAAD5/wEABQABAAQAAAD5/wIABQABAAQAAAD5/wMABQABAAQAAAD5/wQABQABAAQAAAD5/wUABQABAAQAAAD5/wYABQABAAQAAAD5/wcABQABAAQAAAD5/wgABQABAAQAAAD5/wkABQABAAQAAAD5/woABQABAAQAAAD6//f/BQABAAQAAAD6//j/BQABAAQAAAD6//n/BQABAAQAAAD6//r/BQABAAQAAAD6//v/BQABAAQAAAD6//z/BQABAAQAAAD6//3/BQABAAQAAAD6//7/BQABAAQAAAD6////BQABAAQAAAD6/wAABQABAAQAAAD6/wEABQABAAQAAAD6/wIABQABAAQAAAD6/wMABQABAAQAAAD6/wQABQABAAQAAAD6/wUABQABAAQAAAD6/wYABQABAAQAAAD6/wcABQABAAQAAAD6/wgABQABAAQAAAD6/wkABQABAAQAAAD6/woABQABAAQAAAD7//f/BQABAAQAAAD7//j/BQABAAQAAAD7//n/BQABAAQAAAD7//r/BQABAAQAAAD7//v/BQABAAQAAAD7//z/BQABAAQAAAD7//3/BQABAAQAAAD7//7/BQABAAQAAAD7////BQABAAQAAAD7/wAABQABAAQAAAD7/wEABQABAAQAAAD7/wIABQABAAQAAAD7/wMABQABAAQAAAD7/wQABQABAAQAAAD7/wUABQABAAQAAAD7/wYABQABAAQAAAD7/wcABQABAAQAAAD7/wgABQABAAQAAAD7/wkABQABAAQAAAD7/woABQABAAQAAAD8//f/BQABAAQAAAD8//j/BQABAAQAAAD8//n/BQABAAQAAAD8//r/BQABAAQAAAD8//v/BQABAAQAAAD8//z/BQABAAQAAAD8//3/BQABAAQAAAD8//7/BQABAAQAAAD8////BQABAAQAAAD8/wAABQABAAQAAAD8/wEABQABAAQAAAD8/wIABQABAAQAAAD8/wMABQABAAQAAAD8/wQABQABAAQAAAD8/wUABQABAAQAAAD8/wYABQABAAQAAAD8/wcABQABAAQAAAD8/wgABQABAAQAAAD8/wkABQABAAQAAAD8/woABQABAAQAAAD9//f/BQABAAQAAAD9//j/BQABAAQAAAD9//n/BQABAAQAAAD9//r/BQABAAQAAAD9//v/BQABAAQAAAD9//z/BQABAAQAAAD9//3/BQABAAQAAAD9//7/BQABAAQAAAD9////BQABAAQAAAD9/wAABQABAAQAAAD9/wEABQABAAQAAAD9/wIABQABAAQAAAD9/wMABQABAAQAAAD9/wQABQABAAQAAAD9/wUABQABAAQAAAD9/wYABQABAAQAAAD9/wcABQABAAQAAAD9/wgABQABAAQAAAD9/wkABQABAAQAAAD9/woABQABAAQAAAD+//f/BQABAAQAAAD+//j/BQABAAQAAAD+//n/BQABAAQAAAD+//r/BQABAAQAAAD+//v/BQABAAQAAAD+//z/BQABAAQAAAD+//3/BQABAAQAAAD+//7/BQABAAQAAAD+////BQABAAQAAAD+/wAABQABAAQAAAD+/wEABQABAAQAAAD+/wIABQABAAQAAAD+/wMABQABAAQAAAD+/wQABQABAAQAAAD+/wUABQABAAQAAAD+/wYABQABAAQAAAD+/wcABQABAAQAAAD+/wgABQABAAQAAAD+/wkABQABAAQAAAD+/woABQABAAQAAAD///f/BQABAAQAAAD///j/BQABAAQAAAD///n/BQABAAQAAAD///r/BQABAAQAAAD///v/BQABAAQAAAD///z/BQABAAQAAAD///3/BQABAAQAAAD///7/BQABAAQAAAD/////BQABAAQAAAD//wAABQABAAQAAAD//wEABQABAAQAAAD//wIABQABAAQAAAD//wMABQABAAQAAAD//wQABQABAAQAAAD//wUABQABAAQAAAD//wYABQABAAQAAAD//wcABQABAAQAAAD//wgABQABAAQAAAD//wkABQABAAQAAAD//woABQABAAQAAAAAAPf/BQABAAQAAAAAAPj/BQABAAQAAAAAAPn/BQABAAQAAAAAAPr/BQABAAQAAAAAAPv/BQABAAQAAAAAAPz/BQABAAQAAAAAAP3/BQABAAQAAAAAAP7/BQABAAQAAAAAAP//BQABAAQAAAAAAAAABQABAAQAAAAAAAEABQABAAQAAAAAAAIABQABAAQAAAAAAAMABQABAAQAAAAAAAQABQABAAQAAAAAAAUABQABAAQAAAAAAAYABQABAAQAAAAAAAcABQABAAQAAAAAAAgABQABAAQAAAAAAAkABQABAAQAAAAAAAoABQABAAQAAAABAPf/BQABAAQAAAABAPj/BQABAAQAAAABAPn/BQABAAQAAAABAPr/BQABAAQAAAABAPv/BQABAAQAAAABAPz/BQABAAQAAAABAP3/BQABAAQAAAABAP7/BQABAAQAAAABAP//BQABAAQAAAABAAAABQABAAQAAAABAAEABQABAAQAAAABAAIABQABAAQAAAABAAMABQABAAQAAAABAAQABQABAAQAAAABAAUABQABAAQAAAABAAYABQABAAQAAAABAAcABQABAAQAAAABAAgABQABAAQAAAABAAkABQABAAQAAAABAAoABQABAAQAAAACAPf/BQABAAQAAAACAPj/BQABAAQAAAACAPn/BQABAAQAAAACAPr/BQABAAQAAAACAPv/BQABAAQAAAACAPz/BQABAAQAAAACAP3/BQABAAQAAAACAP7/BQABAAQAAAACAP//BQABAAQAAAACAAAABQABAAQAAAACAAEABQABAAQAAAACAAIABQABAAQAAAACAAMABQABAAQAAAACAAQABQABAAQAAAACAAUABQABAAQAAAACAAYABQABAAQAAAACAAcABQABAAQAAAACAAgABQABAAQAAAACAAkABQABAAQAAAACAAoABQABAAQAAAADAPf/BQABAAQAAAADAPj/BQABAAQAAAADAPn/BQABAAQAAAADAPr/BQABAAQAAAADAPv/BQABAAQAAAADAPz/BQABAAQAAAADAP3/BQABAAQAAAADAP7/BQABAAQAAAADAP//BQABAAQAAAADAAAABQABAAQAAAADAAEABQABAAQAAAADAAIABQABAAQAAAADAAMABQABAAQAAAADAAQABQABAAQAAAADAAUABQABAAQAAAADAAYABQABAAQAAAADAAcABQABAAQAAAADAAgABQABAAQAAAADAAkABQABAAQAAAADAAoABQABAAQAAAAEAPf/BQABAAQAAAAEAPj/BQABAAQAAAAEAPn/BQABAAQAAAAEAPr/BQABAAQAAAAEAPv/BQABAAQAAAAEAPz/BQABAAQAAAAEAP3/BQABAAQAAAAEAP7/BQABAAQAAAAEAP//BQABAAQAAAAEAAAABQABAAQAAAAEAAEABQABAAQAAAAEAAIABQABAAQAAAAEAAMABQABAAQAAAAEAAQABQABAAQAAAAEAAUABQABAAQAAAAEAAYABQABAAQAAAAEAAcABQABAAQAAAAEAAgABQABAAQAAAAEAAkABQABAAQAAAAEAAoABQABAAQAAAAFAPf/BQABAAQAAAAFAPj/BQABAAQAAAAFAPn/BQABAAQAAAAFAPr/BQABAAQAAAAFAPv/BQABAAQAAAAFAPz/BQABAAQAAAAFAP3/BQABAAQAAAAFAP7/BQABAAQAAAAFAP//BQABAAQAAAAFAAAABQABAAQAAAAFAAEABQABAAQAAAAFAAIABQABAAQAAAAFAAMABQABAAQAAAAFAAQABQABAAQAAAAFAAUABQABAAQAAAAFAAYABQABAAQAAAAFAAcABQABAAQAAAAFAAgABQABAAQAAAAFAAkABQABAAQAAAAFAAoABQABAAQAAAD6//X/BQABAAQAAAD6//b/BQABAAQAAAD7//X/BQABAAQAAAD7//b/BQABAAQAAAD8//X/BQABAAQAAAD8//b/BQABAAQAAAD9//X/BQABAAQAAAD9//b/BQABAAQAAAD+//X/BQABAAQAAAD+//b/BQABAAQAAAD///X/BQABAAQAAAD///b/BQABAAQAAAAAAPX/BQABAAQAAAAAAPb/BQABAAQAAAABAPX/BQABAAQAAAABAPb/BQABAAQAAAACAPX/BQABAAQAAAACAPb/BQABAAQAAAADAPX/BQABAAQAAAADAPb/BQABAAQAAAAEAPb/BQABAAQAAAD5//P/BQABAAQAAAD5//T/BQABAAQAAAD5//X/BQABAAQAAAD5//b/BQABAAQAAAD6//P/BQABAAQAAAD6//T/BQABAAQAAAD7//P/BQABAAQAAAD7//T/BQABAAQAAAD8//P/BQABAAQAAAD8//T/BQABAAQAAAD9//P/BQABAAQAAAD9//T/BQABAAQAAAD+//P/BQABAAQAAAD+//T/BQABAAQAAAD///P/BQABAAQAAAD///T/BQABAAQAAAAAAPP/BQABAAQAAAAAAPT/BQABAAQAAAABAPP/BQABAAQAAAABAPT/BQABAAQAAAACAPP/BQABAAQAAAACAPT/BQABAAQAAAADAPP/BQABAAQAAAADAPT/BQABAAQAAAAEAPP/BQABAAQAAAAEAPT/BQABAAQAAAAEAPX/BQABAAQAAAAFAPP/BQABAAQAAAAFAPT/BQABAAQAAAAFAPX/BQABAAQAAAAFAPb/BQABAAQAAAD5//L/BQABAAQAAAD5/wsABQABAAQAAAD5/wwABQABAAQAAAD6//L/BQABAAQAAAD6/wsABQABAAQAAAD6/wwABQABAAQAAAD7//L/BQABAAQAAAD7/wsABQABAAQAAAD7/wwABQABAAQAAAD8//L/BQABAAQAAAD8/wsABQABAAQAAAD8/wwABQABAAQAAAD9//L/BQABAAQAAAD9/wsABQABAAQAAAD9/wwABQABAAQAAAD+//L/BQABAAQAAAD+/wsABQABAAQAAAD+/wwABQABAAQAAAD///L/BQABAAQAAAD//wsABQABAAQAAAD//wwABQABAAQAAAAAAPL/BQABAAQAAAAAAAsABQABAAQAAAAAAAwABQABAAQAAAABAPL/BQABAAQAAAABAAsABQABAAQAAAABAAwABQABAAQAAAACAPL/BQABAAQAAAACAAsABQABAAQAAAACAAwABQABAAQAAAADAPL/BQABAAQAAAADAAsABQABAAQAAAADAAwABQABAAQAAAAEAPL/BQABAAQAAAAEAAsABQABAAQAAAAEAAwABQABAAQAAAAFAPL/BQABAAQAAAAFAAsABQABAAQAAAAFAAwABQABAAQAAAAGAPL/BQABAAQAAAAGAPP/BQABAAQAAAAGAPT/BQABAAQAAAAGAPX/BQABAAQAAAAGAPb/BQABAAQAAAAGAPf/BQABAAQAAAAGAPj/BQABAAQAAAAGAPn/BQABAAQAAAAGAPr/BQABAAQAAAAGAPv/BQABAAQAAAAGAPz/BQABAAQAAAAGAP3/BQABAAQAAAAGAP7/BQABAAQAAAAGAP//BQABAAQAAAAGAAAABQABAAQAAAAGAAEABQABAAQAAAAGAAIABQABAAQAAAAGAAMABQABAAQAAAAGAAQABQABAAQAAAAGAAUABQABAAQAAAAGAAYABQABAAQAAAAGAAcABQABAAQAAAAGAAgABQABAAQAAAAGAAkABQABAAQAAAAGAAoABQABAAQAAAAGAAsABQABAAQAAAAGAAwABQABAAQAAAD5/w0ABQABAAQAAAD6/w0ABQABAAQAAAD7/w0ABQABAAQAAAD8/w0ABQABAAQAAAD9/w0ABQABAAQAAAD+/w0ABQABAAQAAAD//w0ABQABAAQAAAAAAA0ABQABAAQAAAABAA0ABQABAAQAAAACAA0ABQABAAQAAAADAA0ABQABAAQAAAAEAA0ABQABAAQAAAAFAA0ABQABAAQAAAAGAA0ABQABAAQAAAA=") @@ -274,3 +317,12 @@ metadata/_edit_lock_ = true [node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1681660400] color = Color(0.3478174, 0.34781674, 0.3478171, 1) + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=701919079] + +[node name="RhythmManager" parent="CanvasLayer" unique_id=2036637300 node_paths=PackedStringArray("target_audio") instance=ExtResource("7_272bh")] +unique_name_in_owner = true +target_audio = NodePath("../../Conductor/FullAudio") + +[node name="ClickTrack" parent="." unique_id=1931221522 instance=ExtResource("11_efxa6")] +unique_name_in_owner = true diff --git a/project.godot b/project.godot index be42df7..34b7d6d 100644 --- a/project.godot +++ b/project.godot @@ -47,6 +47,11 @@ start={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) ] } +ready={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +] +} [physics] diff --git a/resources/light_occluder_polygon.tres b/resources/light_occluder_polygon.tres new file mode 100644 index 0000000..aff5c92 --- /dev/null +++ b/resources/light_occluder_polygon.tres @@ -0,0 +1,4 @@ +[gd_resource type="OccluderPolygon2D" format=3 uid="uid://inxtfgsnw5sq"] + +[resource] +polygon = PackedVector2Array(0, 12, 4, 13, 0, 14, -4, 13) diff --git a/resources/point_light_texture.tres b/resources/point_light_texture.tres new file mode 100644 index 0000000..329b487 --- /dev/null +++ b/resources/point_light_texture.tres @@ -0,0 +1,13 @@ +[gd_resource type="GradientTexture2D" format=3 uid="uid://d1li1mlxutaym"] + +[sub_resource type="Gradient" id="Gradient_lquwl"] +interpolation_mode = 2 +offsets = PackedFloat32Array(0.5, 0.8) +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0) + +[resource] +gradient = SubResource("Gradient_lquwl") +width = 128 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.85, 0.85) diff --git a/rhythm_manager.gd b/rhythm_manager.gd index eddc44b..b9d2db1 100644 --- a/rhythm_manager.gd +++ b/rhythm_manager.gd @@ -4,10 +4,11 @@ class_name RhythmManager extends Node2D ## Documentation comments -## signal +signal song_started() ## enum ## const +@export var target_audio: AudioStreamPlayer2D @export var tempo: int = 120 @export var beats_per_measure: int = 4 @@ -26,15 +27,17 @@ var click_track_stream: AudioStream #var delay_time: float @onready var beat_bar: ProgressBar = %BeatBar -@onready var click_track: AudioStreamPlayer2D = %ClickTrack +#@onready var click_track: AudioStreamPlayer2D = %ClickTrack @onready var beat_time_value: Label = %BeatTimeValue @onready var volume_bar_left: ProgressBar = %VolumeBarLeft @onready var volume_bar_right: ProgressBar = %VolumeBarRight +@onready var volume_value_left: Label = %VolumeValueLeft +@onready var volume_value_right: Label = %VolumeValueRight ## OVERRIDES func _ready() -> void: - click_track_stream = click_track.stream + #click_track_stream = click_track.stream ready_time = Time.get_ticks_usec() print("Ready time: %s" % ready_time) print("Buses at index 0: %s" % AudioServer.get_bus_name(0)) @@ -52,6 +55,8 @@ func _process(_delta: float) -> void: if is_running: volume_bar_left.value = AudioServer.get_bus_peak_volume_left_db(0, 0) volume_bar_right.value = AudioServer.get_bus_peak_volume_right_db(0, 0) + volume_value_left.text = str(snappedf(AudioServer.get_bus_peak_volume_left_db(0, 0), 0.1)) + volume_value_right.text = str(snappedf(AudioServer.get_bus_peak_volume_right_db(0, 0), 0.1)) song_time_elapsed = total_time_elapsed - start_time #print("song time elapsed: %s" % song_time_elapsed) beat_time_elapsed = song_time_elapsed - beat_time_start @@ -67,17 +72,18 @@ func _process(_delta: float) -> void: beat_time_start = song_time_elapsed func _input(event: InputEvent) -> void: - if event.is_action_pressed("ui_accept"): + if event.is_action_pressed("start"): if is_running == false: start_time = Time.get_ticks_usec() print("start time: %s" % start_time) is_running = true - click_track.play() + target_audio.play() else: - click_track.stop() + target_audio.stop() is_running = false end_time = Time.get_ticks_usec() print("end_time: %s" % end_time) + song_started.emit() #func _physics_process(delta: float) -> void: #pass diff --git a/rhythm_manager.tscn b/rhythm_manager.tscn index ec39472..6b8775a 100644 --- a/rhythm_manager.tscn +++ b/rhythm_manager.tscn @@ -1,10 +1,11 @@ [gd_scene format=3 uid="uid://ojisu2jrshsp"] [ext_resource type="Script" uid="uid://bhbfogebu1di5" path="res://rhythm_manager.gd" id="1_0wx20"] -[ext_resource type="AudioStream" uid="uid://b8n6p428csquv" path="res://assets/audio/full/eine-kleine-click.wav" id="2_6v8l0"] +[ext_resource type="PackedScene" uid="uid://dduyumwk5v1ge" path="res://click_track.tscn" id="2_6v8l0"] -[node name="RhythmManager" type="Node2D" unique_id=2036637300] +[node name="RhythmManager" type="Node2D" unique_id=2036637300 node_paths=PackedStringArray("target_audio")] script = ExtResource("1_0wx20") +target_audio = NodePath("") [node name="RhythmUI" type="Control" parent="." unique_id=510351076] layout_mode = 3 @@ -47,7 +48,7 @@ text = "00000" [node name="VolumeContainer" type="HBoxContainer" parent="RhythmUI/VBoxContainer" unique_id=845038304] layout_mode = 2 -[node name="VolumeLabel" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainer" unique_id=1552250086] +[node name="VolumeLabelLeft" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainer" unique_id=1552250086] layout_mode = 2 text = "Volume L: " @@ -56,15 +57,20 @@ unique_name_in_owner = true custom_minimum_size = Vector2(0, 24) layout_mode = 2 size_flags_horizontal = 3 -min_value = -200.0 +min_value = -100.0 max_value = 0.0 -fill_mode = 1 +step = 0.1 show_percentage = false +[node name="VolumeValueLeft" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainer" unique_id=1495628968] +unique_name_in_owner = true +layout_mode = 2 +text = "-00.0" + [node name="VolumeContainerRight" type="HBoxContainer" parent="RhythmUI/VBoxContainer" unique_id=1505527639] layout_mode = 2 -[node name="VolumeLabel" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainerRight" unique_id=96518109] +[node name="VolumeLabelRight" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainerRight" unique_id=96518109] layout_mode = 2 text = "Volume R: " @@ -73,11 +79,15 @@ unique_name_in_owner = true custom_minimum_size = Vector2(0, 24) layout_mode = 2 size_flags_horizontal = 3 -min_value = -200.0 +min_value = -100.0 max_value = 0.0 -fill_mode = 1 +step = 0.1 show_percentage = false -[node name="ClickTrack" type="AudioStreamPlayer2D" parent="." unique_id=875092300] +[node name="VolumeValueRight" type="Label" parent="RhythmUI/VBoxContainer/VolumeContainerRight" unique_id=1882589387] +unique_name_in_owner = true +layout_mode = 2 +text = "-00.0" + +[node name="ClickTrack" parent="." unique_id=1931221522 instance=ExtResource("2_6v8l0")] unique_name_in_owner = true -stream = ExtResource("2_6v8l0")