better animations, individual tracks

This commit is contained in:
Adam Burns 2026-03-13 17:52:21 -04:00
parent 7afda132ec
commit 06dc6d63b6
41 changed files with 795 additions and 650 deletions

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cc6smyxkrrvfr"
path="res://.godot/imported/eine-kleine-bass.wav-da431b42043512cb79f0259aece1a574.sample"
[deps]
source_file="res://assets/audio/eine-kleine-bass.wav"
dest_files=["res://.godot/imported/eine-kleine-bass.wav-da431b42043512cb79f0259aece1a574.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://duovjdbif7wkw"
path="res://.godot/imported/eine-kleine-cello.wav-8d75694fa69be2507bcfea5d53533bbb.sample"
[deps]
source_file="res://assets/audio/eine-kleine-cello.wav"
dest_files=["res://.godot/imported/eine-kleine-cello.wav-8d75694fa69be2507bcfea5d53533bbb.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -3,12 +3,12 @@
importer="wav" importer="wav"
type="AudioStreamWAV" type="AudioStreamWAV"
uid="uid://b8n6p428csquv" uid="uid://b8n6p428csquv"
path="res://.godot/imported/eine-kleine-click.wav-852262f48711240ef2bf8fbdd1754627.sample" path="res://.godot/imported/eine-kleine-click.wav-fbba7e96ff9c246f0f527ee8aa6b0a58.sample"
[deps] [deps]
source_file="res://assets/audio/full/eine-kleine-click.wav" source_file="res://assets/audio/eine-kleine-click.wav"
dest_files=["res://.godot/imported/eine-kleine-click.wav-852262f48711240ef2bf8fbdd1754627.sample"] dest_files=["res://.godot/imported/eine-kleine-click.wav-fbba7e96ff9c246f0f527ee8aa6b0a58.sample"]
[params] [params]

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bd01iv6fpqbdh"
path="res://.godot/imported/eine-kleine-viol.wav-2fdf00e5db288bd2a59340ea589a6e73.sample"
[deps]
source_file="res://assets/audio/eine-kleine-viol.wav"
dest_files=["res://.godot/imported/eine-kleine-viol.wav-2fdf00e5db288bd2a59340ea589a6e73.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bnypuodp8swg3"
path="res://.godot/imported/eine-kleine-bass-full.wav-6119ade6cad53a9417fc710d71a1e659.sample"
[deps]
source_file="res://assets/audio/full/eine-kleine-bass-full.wav"
dest_files=["res://.godot/imported/eine-kleine-bass-full.wav-6119ade6cad53a9417fc710d71a1e659.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d3qyd08xk7d3h"
path="res://.godot/imported/eine-kleine-cello-full.wav-f99802a2b6c877194ef67d280ba2c41e.sample"
[deps]
source_file="res://assets/audio/full/eine-kleine-cello-full.wav"
dest_files=["res://.godot/imported/eine-kleine-cello-full.wav-f99802a2b6c877194ef67d280ba2c41e.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bflw7me3q03gf"
path="res://.godot/imported/eine-kleine-full.wav-1595b51d9b7f7cfa295f7b9a1475aabc.sample"
[deps]
source_file="res://assets/audio/full/eine-kleine-full.wav"
dest_files=["res://.godot/imported/eine-kleine-full.wav-1595b51d9b7f7cfa295f7b9a1475aabc.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://rn5a5gjgvn4k"
path="res://.godot/imported/eine-kleine-viol-full.wav-4818df65fd6b6c137b8c92ab505d7dd5.sample"
[deps]
source_file="res://assets/audio/full/eine-kleine-viol-full.wav"
dest_files=["res://.godot/imported/eine-kleine-viol-full.wav-4818df65fd6b6c137b8c92ab505d7dd5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c7xjmhkvyyebo"
path="res://.godot/imported/eine-kleine-bass-new.wav-77254fb7b0aeb514aba05a68fc85905f.sample"
[deps]
source_file="res://assets/audio/new/eine-kleine-bass-new.wav"
dest_files=["res://.godot/imported/eine-kleine-bass-new.wav-77254fb7b0aeb514aba05a68fc85905f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://qm64ksqu4rjo"
path="res://.godot/imported/eine-kleine-cello-new.wav-3d5772878dfe0290618a80d2ccfbbabd.sample"
[deps]
source_file="res://assets/audio/new/eine-kleine-cello-new.wav"
dest_files=["res://.godot/imported/eine-kleine-cello-new.wav-3d5772878dfe0290618a80d2ccfbbabd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://mjgarsewuf48"
path="res://.godot/imported/eine-kleine-viol-new.wav-5bd685fcc212089ad96db26c51ce191f.sample"
[deps]
source_file="res://assets/audio/new/eine-kleine-viol-new.wav"
dest_files=["res://.godot/imported/eine-kleine-viol-new.wav-5bd685fcc212089ad96db26c51ce191f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bt1tsd8ahetqy"
path="res://.godot/imported/Flat_Wood_01_WindowA-SE-64x96-scaled-down.png-216912e1461e3a9b7e7fd134f2f45534.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/tiles/Flat_Wood_01_WindowA-SE-64x96-scaled-down.png"
dest_files=["res://.godot/imported/Flat_Wood_01_WindowA-SE-64x96-scaled-down.png-216912e1461e3a9b7e7fd134f2f45534.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

63
main.gd
View File

@ -1,63 +0,0 @@
#@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")
print("Musicians: " + str(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()
if event.is_action_pressed("viol"):
enter_instrument(musicians[0])
if event.is_action_pressed("cello"):
enter_instrument(musicians[1])
if event.is_action_pressed("bass"):
enter_instrument(musicians[2])
## CORE
func enter_instrument(instrument: Node) -> void:
print("Now playing " + instrument.name)
var instrument_audio: AudioStreamPlayer2D = instrument.get_child(0)
var instrument_light: PointLight2D = instrument.get_child(1)
instrument.play("default")
instrument_audio.play()
instrument_light.visible = true
## 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

413
main.tscn
View File

@ -1,413 +0,0 @@
[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/tiles/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://mjgarsewuf48" path="res://assets/audio/new/eine-kleine-viol-new.wav" id="4_efxa6"]
[ext_resource type="Texture2D" uid="uid://d1li1mlxutaym" path="res://resources/point_light_texture.tres" id="5_kek77"]
[ext_resource type="AudioStream" uid="uid://qm64ksqu4rjo" path="res://assets/audio/new/eine-kleine-cello-new.wav" id="6_dg77c"]
[ext_resource type="PackedScene" uid="uid://ojisu2jrshsp" path="res://rhythm_manager.tscn" id="7_272bh"]
[ext_resource type="AudioStream" uid="uid://c7xjmhkvyyebo" path="res://assets/audio/new/eine-kleine-bass-new.wav" id="7_ycdy4"]
[ext_resource type="Texture2D" uid="uid://du5d58gs5hbv1" path="res://assets/tiles/Flat_Wood_01-SE-64x96-scaled-down.png" id="10_dg77c"]
[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")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0xm2m"]
atlas = ExtResource("1_ig7tw")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_h2yge"]
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_lquwl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0xm2m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h2yge")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1bvp3")
}],
"loop": true,
"name": &"default",
"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(0, 14, -2, 15, -4, 14)
[sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"]
atlas = ExtResource("1_ig7tw")
region = Rect2(0, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_w48qg"]
atlas = ExtResource("1_ig7tw")
region = Rect2(32, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vivmo"]
atlas = ExtResource("1_ig7tw")
region = Rect2(64, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2cqfq"]
atlas = ExtResource("1_ig7tw")
region = Rect2(96, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yaehf"]
atlas = ExtResource("1_ig7tw")
region = Rect2(128, 160, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_074og"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ycdy4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w48qg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vivmo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2cqfq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yaehf")
}],
"loop": true,
"name": &"default",
"speed": 10.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ycdy4"]
polygon = PackedVector2Array(0, 13, 3, 13, -1, 14)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vw27"]
atlas = ExtResource("1_ig7tw")
region = Rect2(192, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_kek77"]
atlas = ExtResource("1_ig7tw")
region = Rect2(224, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4c57u"]
atlas = ExtResource("1_ig7tw")
region = Rect2(256, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_efxa6"]
atlas = ExtResource("1_ig7tw")
region = Rect2(288, 32, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_dg77c"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vw27")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kek77")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4c57u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_efxa6")
}],
"loop": true,
"name": &"default",
"speed": 8.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_dg77c"]
polygon = PackedVector2Array(-1, 13, 2, 14, -2, 15)
[sub_resource type="AtlasTexture" id="AtlasTexture_0odxb"]
atlas = ExtResource("1_ig7tw")
region = Rect2(0, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_lswn8"]
atlas = ExtResource("1_ig7tw")
region = Rect2(32, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a6jrf"]
atlas = ExtResource("1_ig7tw")
region = Rect2(64, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xuqvo"]
atlas = ExtResource("1_ig7tw")
region = Rect2(96, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_qsp4k"]
atlas = ExtResource("1_ig7tw")
region = Rect2(128, 32, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_kq58d"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0odxb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lswn8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a6jrf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xuqvo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qsp4k")
}],
"loop": true,
"name": &"default",
"speed": 10.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_efxa6"]
polygon = PackedVector2Array(-2, 14, 4, 15, -4, 14)
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_h2yge"]
texture = ExtResource("2_0xm2m")
texture_region_size = Vector2i(32, 16)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
[sub_resource type="TileSet" id="TileSet_272bh"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/5 = SubResource("TileSetAtlasSource_h2yge")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dg77c"]
texture = ExtResource("10_dg77c")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSet" id="TileSet_ycdy4"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/0 = SubResource("TileSetAtlasSource_dg77c")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ycdy4"]
texture = ExtResource("10_dg77c")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSet" id="TileSet_w48qg"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/0 = SubResource("TileSetAtlasSource_ycdy4")
[node name="Main" type="Node2D" unique_id=1319338792]
script = ExtResource("1_5vw27")
[node name="Camera2D" type="Camera2D" parent="." unique_id=1314238347]
zoom = Vector2(6, 6)
[node name="Conductor" type="AnimatedSprite2D" parent="." unique_id=880231478]
position = Vector2(26, 31)
sprite_frames = SubResource("SpriteFrames_7mycd")
frame_progress = 0.51704574
[node name="FullAudio" type="AudioStreamPlayer2D" parent="Conductor" unique_id=1320626273]
stream = ExtResource("2_7mycd")
[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 groups=["musicians"]]
position = Vector2(14, 6)
sprite_frames = SubResource("SpriteFrames_074og")
frame_progress = 0.6208535
[node name="ViolAudio" type="AudioStreamPlayer2D" parent="Musicians/Viol" unique_id=800067327]
stream = ExtResource("4_efxa6")
[node name="ViolLight" type="PointLight2D" parent="Musicians/Viol" unique_id=953248893 groups=["musician_lights"]]
visible = false
z_index = 100
position = Vector2(7, 8)
energy = 0.8
shadow_enabled = true
shadow_filter = 2
shadow_filter_smooth = 7.6
texture = ExtResource("5_kek77")
[node name="ViolOccluder" type="LightOccluder2D" parent="Musicians/Viol" unique_id=781715626]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_ycdy4")
[node name="Cello" type="AnimatedSprite2D" parent="Musicians" unique_id=504793709 groups=["musicians"]]
position = Vector2(-35, 20)
sprite_frames = SubResource("SpriteFrames_dg77c")
frame_progress = 0.5045058
[node name="CelloAudio" type="AudioStreamPlayer2D" parent="Musicians/Cello" unique_id=526745522]
stream = ExtResource("6_dg77c")
[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="CelloOccluder" type="LightOccluder2D" parent="Musicians/Cello" unique_id=1913557474]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_dg77c")
[node name="Bass" type="AnimatedSprite2D" parent="Musicians" unique_id=1099071968 groups=["musicians"]]
z_index = 10
position = Vector2(-32, -8)
sprite_frames = SubResource("SpriteFrames_kq58d")
frame_progress = 0.30279997
[node name="BassAudio" type="AudioStreamPlayer2D" parent="Musicians/Bass" unique_id=1653394620]
stream = ExtResource("7_ycdy4")
[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="BassOccluder" type="LightOccluder2D" parent="Musicians/Bass" unique_id=2068886055]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_efxa6")
[node name="Tilemaps" type="Node2D" parent="." unique_id=1115514972]
[node name="Stage" type="TileMapLayer" parent="Tilemaps" unique_id=15466516]
z_index = -10
tile_map_data = PackedByteArray("AAD8//L/BQABAAQAAAD8//P/BQABAAQAAAD8//T/BQABAAQAAAD8//X/BQABAAQAAAD8//b/BQABAAQAAAD8//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/wgABQABAAQAAAD9//L/BQABAAQAAAD9//P/BQABAAQAAAD9//T/BQABAAQAAAD9//X/BQABAAQAAAD9//b/BQABAAQAAAD9//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/wgABQABAAQAAAD+//L/BQABAAQAAAD+//P/BQABAAQAAAD+//T/BQABAAQAAAD+//X/BQABAAQAAAD+//b/BQABAAQAAAD+//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///L/BQABAAQAAAD///P/BQABAAQAAAD///T/BQABAAQAAAD///X/BQABAAQAAAD///b/BQABAAQAAAD///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//wgABQABAAQAAAAAAPL/BQABAAQAAAAAAPP/BQABAAQAAAAAAPT/BQABAAQAAAAAAPX/BQABAAQAAAAAAPb/BQABAAQAAAAAAPf/BQABAAQAAAAAAPj/BQABAAQAAAAAAPn/BQABAAQAAAAAAPr/BQABAAQAAAAAAPv/BQABAAQAAAAAAPz/BQABAAQAAAAAAP3/BQABAAQAAAAAAP7/BQABAAQAAAAAAP//BQABAAQAAAAAAAAABQABAAQAAAAAAAEABQABAAQAAAAAAAIABQABAAQAAAAAAAMABQABAAQAAAAAAAQABQABAAQAAAAAAAUABQABAAQAAAAAAAYABQABAAQAAAAAAAcABQABAAQAAAAAAAgABQABAAQAAAABAPL/BQABAAQAAAABAPP/BQABAAQAAAABAPT/BQABAAQAAAABAPX/BQABAAQAAAABAPb/BQABAAQAAAABAPf/BQABAAQAAAABAPj/BQABAAQAAAABAPn/BQABAAQAAAABAPr/BQABAAQAAAABAPv/BQABAAQAAAABAPz/BQABAAQAAAABAP3/BQABAAQAAAABAP7/BQABAAQAAAABAP//BQABAAQAAAABAAAABQABAAQAAAABAAEABQABAAQAAAABAAIABQABAAQAAAABAAMABQABAAQAAAABAAQABQABAAQAAAABAAUABQABAAQAAAABAAYABQABAAQAAAABAAcABQABAAQAAAABAAgABQABAAQAAAACAPL/BQABAAQAAAACAPP/BQABAAQAAAACAPT/BQABAAQAAAACAPX/BQABAAQAAAACAPb/BQABAAQAAAACAPf/BQABAAQAAAACAPj/BQABAAQAAAACAPn/BQABAAQAAAACAPr/BQABAAQAAAACAPv/BQABAAQAAAACAPz/BQABAAQAAAACAP3/BQABAAQAAAACAP7/BQABAAQAAAACAP//BQABAAQAAAACAAAABQABAAQAAAACAAEABQABAAQAAAACAAIABQABAAQAAAACAAMABQABAAQAAAACAAQABQABAAQAAAACAAUABQABAAQAAAACAAYABQABAAQAAAACAAcABQABAAQAAAACAAgABQABAAQAAAADAPL/BQABAAQAAAADAPP/BQABAAQAAAADAPT/BQABAAQAAAADAPX/BQABAAQAAAADAPb/BQABAAQAAAADAPf/BQABAAQAAAADAPj/BQABAAQAAAADAPn/BQABAAQAAAADAPr/BQABAAQAAAADAPv/BQABAAQAAAADAPz/BQABAAQAAAADAP3/BQABAAQAAAADAP7/BQABAAQAAAADAP//BQABAAQAAAADAAAABQABAAQAAAADAAEABQABAAQAAAADAAIABQABAAQAAAADAAMABQABAAQAAAADAAQABQABAAQAAAADAAUABQABAAQAAAADAAYABQABAAQAAAADAAcABQABAAQAAAADAAgABQABAAQAAAA=")
tile_set = SubResource("TileSet_272bh")
[node name="BackLeftWalls" type="TileMapLayer" parent="Tilemaps" unique_id=1380589034]
z_index = 1
tile_map_data = PackedByteArray("AAD9//n/AAAEAAIAAAD9//r/AAAEAAIAAAD8//v/AAAEAAIAAAD8//z/AAAEAAIAAAD7//3/AAAEAAEAAAD7/wAAAAAEAAEAAAD7////AAAEAAEAAAD8//7/AAAEAAIAAAD8//3/AAAEAAIAAAD9//z/AAAEAAIAAAD9//v/AAAEAAIAAAD+//r/AAAEAAIAAAD+//n/AAAEAAIAAAD///j/AAAEAAIAAAD+//j/AAAEAAIAAAD7//7/AAAEAAEAAAD///r/AAAEAAIAAAD+//v/AAAEAAIAAAD+//z/AAAEAAIAAAD9//3/AAAEAAIAAAD9//7/AAAEAAIAAAD8////AAAEAAIAAAD+//f/AAAEAAIAAAD8//n/AAAEAAIAAAD9//j/AAAEAAIAAAD9//f/AAAEAAIAAAD+//b/AAAEAAIAAAD+//X/AAAEAAIAAAD///T/AAAEAAIAAAD///b/AAAEAAIAAAD8//r/AAAEAAIAAAD8/wAAAAAEAAIAAAD///L/AAAEAAIAAAD+//P/AAAEAAIAAAD+//T/AAAEAAIAAAD9//X/AAAEAAIAAAD9//b/AAAEAAIAAAD8//f/AAAEAAIAAAD8//j/AAAEAAIAAAA=")
tile_set = SubResource("TileSet_ycdy4")
[node name="BackRightWalls" type="TileMapLayer" parent="Tilemaps" unique_id=1757009184]
position = Vector2(0, -8)
tile_map_data = PackedByteArray("AAABAPn/AAAFAAIAAAACAPr/AAAFAAIAAAAAAPn/AAAFAAIAAAABAPr/AAAFAAIAAAABAPv/AAAFAAIAAAACAPz/AAAFAAIAAAACAP3/AAAFAAIAAAAAAPr/AAAFAAIAAAAAAPv/AAAFAAIAAAABAPz/AAAFAAIAAAABAP3/AAAFAAIAAAACAP7/AAAFAAIAAAAAAPj/AAAFAAIAAAABAPj/AAAFAAIAAAACAPv/AAAFAAIAAAADAPz/AAAFAAIAAAAAAPf/AAAFAAIAAAAAAPb/AAAFAAIAAAD///v/AAAFAAIAAAAAAPz/AAAFAAIAAAAAAP3/AAAFAAIAAAABAP7/AAAFAAIAAAABAP//AAAFAAIAAAACAAAAAAAFAAIAAAACAAEAAAAFAAIAAAD///f/AAAFAAIAAAD///X/AAAFAAIAAAD///n/AAAFAAIAAAADAPr/AAAFAAIAAAADAP7/AAAFAAIAAAACAP//AAAFAAIAAAADAAAAAAAFAAIAAAADAAIAAAAFAAIAAAACAPn/AAAFAAIAAAACAPj/AAAFAAIAAAABAPf/AAAFAAIAAAABAPb/AAAFAAIAAAAAAPX/AAAFAAIAAAAAAPT/AAAFAAIAAAD///P/AAAFAAIAAAADAPj/AAAFAAIAAAACAPf/AAAFAAIAAAACAPb/AAAFAAIAAAABAPX/AAAFAAIAAAABAPT/AAAFAAIAAAAAAPP/AAAFAAIAAAAAAPL/AAAFAAIAAAD///H/AAAFAAIAAAA=")
tile_set = SubResource("TileSet_w48qg")
[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1681660400]
color = Color(0.3478174, 0.34781674, 0.3478171, 1)
[node name="UI" type="CanvasLayer" parent="." unique_id=701919079]
visible = false
[node name="RhythmManager" parent="UI" 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

View File

@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://dduyumwk5v1ge"] [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"] [ext_resource type="AudioStream" uid="uid://b8n6p428csquv" path="res://assets/audio/eine-kleine-click.wav" id="1_048mw"]
[node name="ClickTrack" type="AudioStreamPlayer2D" unique_id=1931221522] [node name="ClickTrack" type="AudioStreamPlayer2D" unique_id=1931221522]
stream = ExtResource("1_048mw") stream = ExtResource("1_048mw")

84
scenes/conductor.tscn Normal file
View File

@ -0,0 +1,84 @@
[gd_scene format=3 uid="uid://cj48n8wtq70ea"]
[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_lxg7y"]
[ext_resource type="Script" uid="uid://dppf0pasfnksi" path="res://scripts/conductor.gd" id="2_x67ht"]
[ext_resource type="AudioStream" uid="uid://b8n6p428csquv" path="res://assets/audio/eine-kleine-click.wav" id="3_q7w51"]
[ext_resource type="PackedScene" uid="uid://cwdkw1p371bks" path="res://scenes/musicians/input_prompt.tscn" id="4_0iywx"]
[ext_resource type="Texture2D" uid="uid://do6jqp2l6nmwm" path="res://assets/input/keyboard_r_outline.png" id="5_r54h3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lquwl"]
atlas = ExtResource("1_lxg7y")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0xm2m"]
atlas = ExtResource("1_lxg7y")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_h2yge"]
atlas = ExtResource("1_lxg7y")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1bvp3"]
atlas = ExtResource("1_lxg7y")
region = Rect2(64, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_7mycd"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lquwl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0xm2m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h2yge")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1bvp3")
}],
"loop": true,
"name": &"default",
"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(0, 14, -2, 15, -4, 14)
[node name="Conductor" type="AnimatedSprite2D" unique_id=607493736]
position = Vector2(2, 0)
sprite_frames = SubResource("SpriteFrames_7mycd")
frame_progress = 0.51704574
script = ExtResource("2_x67ht")
[node name="Audio" type="AudioStreamPlayer2D" parent="." unique_id=1922730130]
stream = ExtResource("3_q7w51")
[node name="Light" type="PointLight2D" parent="." unique_id=1770033681]
unique_name_in_owner = true
position = Vector2(5, 9)
energy = 0.8
shadow_enabled = true
shadow_filter = 2
shadow_filter_smooth = 7.6
texture = SubResource("GradientTexture2D_4c57u")
[node name="Occluder" type="LightOccluder2D" parent="." unique_id=978661388]
occluder = SubResource("OccluderPolygon2D_4c57u")
[node name="InputPrompt" parent="." unique_id=590379112 instance=ExtResource("4_0iywx")]
position = Vector2(-2, 24)
texture = ExtResource("5_r54h3")

213
scenes/main.tscn Normal file
View File

@ -0,0 +1,213 @@
[gd_scene format=4 uid="uid://irgt7rn5kfap"]
[ext_resource type="Script" uid="uid://bjv7i1kmivfai" path="res://scripts/main.gd" id="1_5vw27"]
[ext_resource type="Texture2D" uid="uid://cs47f2rurekyx" path="res://assets/tiles/floor_wood_01-32x16.png" id="2_0xm2m"]
[ext_resource type="PackedScene" uid="uid://cj48n8wtq70ea" path="res://scenes/conductor.tscn" id="2_4c57u"]
[ext_resource type="PackedScene" uid="uid://c5mms8bhjkplb" path="res://scenes/musicians/viol.tscn" id="3_efxa6"]
[ext_resource type="PackedScene" uid="uid://ekd4tkk01nug" path="res://scenes/musicians/cello.tscn" id="4_dg77c"]
[ext_resource type="PackedScene" uid="uid://b3ytvnucd8hod" path="res://scenes/musicians/bass.tscn" id="5_ycdy4"]
[ext_resource type="Texture2D" uid="uid://du5d58gs5hbv1" path="res://assets/tiles/Flat_Wood_01-SE-64x96-scaled-down.png" id="10_dg77c"]
[ext_resource type="Texture2D" uid="uid://bt1tsd8ahetqy" path="res://assets/tiles/Flat_Wood_01_WindowA-SE-64x96-scaled-down.png" id="10_ycdy4"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_h2yge"]
texture = ExtResource("2_0xm2m")
texture_region_size = Vector2i(32, 16)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
[sub_resource type="TileSet" id="TileSet_272bh"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/5 = SubResource("TileSetAtlasSource_h2yge")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dg77c"]
texture = ExtResource("10_dg77c")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w48qg"]
texture = ExtResource("10_ycdy4")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSet" id="TileSet_ycdy4"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/0 = SubResource("TileSetAtlasSource_dg77c")
sources/1 = SubResource("TileSetAtlasSource_w48qg")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ycdy4"]
texture = ExtResource("10_dg77c")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vivmo"]
texture = ExtResource("10_ycdy4")
texture_region_size = Vector2i(16, 24)
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
[sub_resource type="TileSet" id="TileSet_w48qg"]
tile_shape = 1
tile_size = Vector2i(32, 16)
sources/0 = SubResource("TileSetAtlasSource_ycdy4")
sources/1 = SubResource("TileSetAtlasSource_vivmo")
[node name="Main" type="Node2D" unique_id=1319338792]
y_sort_enabled = true
script = ExtResource("1_5vw27")
[node name="Camera2D" type="Camera2D" parent="." unique_id=1314238347]
position = Vector2(-4, 13)
zoom = Vector2(8, 8)
[node name="Conductor" parent="." unique_id=607493736 instance=ExtResource("2_4c57u")]
unique_name_in_owner = true
y_sort_enabled = true
position = Vector2(8, 25)
[node name="Musicians" type="Node2D" parent="." unique_id=237973745]
y_sort_enabled = true
[node name="Viol" parent="Musicians" unique_id=173609985 instance=ExtResource("3_efxa6")]
unique_name_in_owner = true
y_sort_enabled = true
position = Vector2(-47, 19)
[node name="Cello" parent="Musicians" unique_id=1539517068 instance=ExtResource("4_dg77c")]
unique_name_in_owner = true
y_sort_enabled = true
position = Vector2(28, 1)
frame_progress = 0.0
[node name="Bass" parent="Musicians" unique_id=1326988360 instance=ExtResource("5_ycdy4")]
unique_name_in_owner = true
y_sort_enabled = true
position = Vector2(-25, -6)
[node name="Tilemaps" type="Node2D" parent="." unique_id=1115514972]
[node name="Stage" type="TileMapLayer" parent="Tilemaps" unique_id=15466516]
z_index = -10
tile_map_data = PackedByteArray("AAD8//L/BQABAAQAAAD8//P/BQABAAQAAAD8//T/BQABAAQAAAD8//X/BQABAAQAAAD8//b/BQABAAQAAAD8//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/wgABQABAAQAAAD9//L/BQABAAQAAAD9//P/BQABAAQAAAD9//T/BQABAAQAAAD9//X/BQABAAQAAAD9//b/BQABAAQAAAD9//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/wgABQABAAQAAAD+//L/BQABAAQAAAD+//P/BQABAAQAAAD+//T/BQABAAQAAAD+//X/BQABAAQAAAD+//b/BQABAAQAAAD+//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///L/BQABAAQAAAD///P/BQABAAQAAAD///T/BQABAAQAAAD///X/BQABAAQAAAD///b/BQABAAQAAAD///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//wgABQABAAQAAAAAAPL/BQABAAQAAAAAAPP/BQABAAQAAAAAAPT/BQABAAQAAAAAAPX/BQABAAQAAAAAAPb/BQABAAQAAAAAAPf/BQABAAQAAAAAAPj/BQABAAQAAAAAAPn/BQABAAQAAAAAAPr/BQABAAQAAAAAAPv/BQABAAQAAAAAAPz/BQABAAQAAAAAAP3/BQABAAQAAAAAAP7/BQABAAQAAAAAAP//BQABAAQAAAAAAAAABQABAAQAAAAAAAEABQABAAQAAAAAAAIABQABAAQAAAAAAAMABQABAAQAAAAAAAQABQABAAQAAAAAAAUABQABAAQAAAAAAAYABQABAAQAAAAAAAcABQABAAQAAAAAAAgABQABAAQAAAABAPL/BQABAAQAAAABAPP/BQABAAQAAAABAPT/BQABAAQAAAABAPX/BQABAAQAAAABAPb/BQABAAQAAAABAPf/BQABAAQAAAABAPj/BQABAAQAAAABAPn/BQABAAQAAAABAPr/BQABAAQAAAABAPv/BQABAAQAAAABAPz/BQABAAQAAAABAP3/BQABAAQAAAABAP7/BQABAAQAAAABAP//BQABAAQAAAABAAAABQABAAQAAAABAAEABQABAAQAAAABAAIABQABAAQAAAABAAMABQABAAQAAAABAAQABQABAAQAAAABAAUABQABAAQAAAABAAYABQABAAQAAAABAAcABQABAAQAAAABAAgABQABAAQAAAACAPL/BQABAAQAAAACAPP/BQABAAQAAAACAPT/BQABAAQAAAACAPX/BQABAAQAAAACAPb/BQABAAQAAAACAPf/BQABAAQAAAACAPj/BQABAAQAAAACAPn/BQABAAQAAAACAPr/BQABAAQAAAACAPv/BQABAAQAAAACAPz/BQABAAQAAAACAP3/BQABAAQAAAACAP7/BQABAAQAAAACAP//BQABAAQAAAACAAAABQABAAQAAAACAAEABQABAAQAAAACAAIABQABAAQAAAACAAMABQABAAQAAAACAAQABQABAAQAAAACAAUABQABAAQAAAACAAYABQABAAQAAAACAAcABQABAAQAAAACAAgABQABAAQAAAADAPL/BQABAAQAAAADAPP/BQABAAQAAAADAPT/BQABAAQAAAADAPX/BQABAAQAAAADAPb/BQABAAQAAAADAPf/BQABAAQAAAADAPj/BQABAAQAAAADAPn/BQABAAQAAAADAPr/BQABAAQAAAADAPv/BQABAAQAAAADAPz/BQABAAQAAAADAP3/BQABAAQAAAADAP7/BQABAAQAAAADAP//BQABAAQAAAADAAAABQABAAQAAAADAAEABQABAAQAAAADAAIABQABAAQAAAADAAMABQABAAQAAAADAAQABQABAAQAAAADAAUABQABAAQAAAADAAYABQABAAQAAAADAAcABQABAAQAAAADAAgABQABAAQAAAA=")
tile_set = SubResource("TileSet_272bh")
[node name="BackLeftWalls" type="TileMapLayer" parent="Tilemaps" unique_id=1380589034]
z_index = 1
tile_map_data = PackedByteArray("AAD9//n/AQAEAAIAAAD9//r/AAAEAAIAAAD8//v/AQAEAAIAAAD8//z/AAAEAAIAAAD7//3/AAAEAAEAAAD7/wAAAAAEAAEAAAD7////AAAEAAEAAAD8//7/AQAEAAIAAAD8//3/AAAEAAIAAAD9//z/AQAEAAIAAAD9//v/AAAEAAIAAAD+//r/AQAEAAIAAAD+//n/AAAEAAIAAAD///j/AQAEAAIAAAD+//j/AAAEAAIAAAD7//7/AAAEAAEAAAD///r/AAAEAAIAAAD+//v/AQAEAAIAAAD+//z/AAAEAAIAAAD9//3/AQAEAAIAAAD9//7/AAAEAAIAAAD8////AQAEAAIAAAD+//f/AQAEAAIAAAD8//n/AAAEAAIAAAD9//j/AQAEAAIAAAD9//f/AAAEAAIAAAD+//b/AQAEAAIAAAD+//X/AAAEAAIAAAD///T/AQAEAAIAAAD///b/AAAEAAIAAAD8//r/AQAEAAIAAAD8/wAAAAAEAAIAAAD///L/AAAEAAIAAAD+//P/AQAEAAIAAAD+//T/AAAEAAIAAAD9//X/AQAEAAIAAAD9//b/AAAEAAIAAAD8//f/AQAEAAIAAAD8//j/AAAEAAIAAAA=")
tile_set = SubResource("TileSet_ycdy4")
[node name="BackRightWalls" type="TileMapLayer" parent="Tilemaps" unique_id=1757009184]
position = Vector2(0, -8)
tile_map_data = PackedByteArray("AAABAPn/AQAFAAIAAAACAPr/AAAFAAIAAAAAAPn/AAAFAAIAAAABAPr/AQAFAAIAAAABAPv/AAAFAAIAAAACAPz/AQAFAAIAAAACAP3/AAAFAAIAAAAAAPr/AAAFAAIAAAAAAPv/AQAFAAIAAAABAPz/AAAFAAIAAAABAP3/AQAFAAIAAAACAP7/AAAFAAIAAAAAAPj/AQAFAAIAAAABAPj/AAAFAAIAAAACAPv/AQAFAAIAAAADAPz/AAAFAAIAAAAAAPf/AQAFAAIAAAAAAPb/AAAFAAIAAAD///v/AAAFAAIAAAAAAPz/AQAFAAIAAAAAAP3/AAAFAAIAAAABAP7/AQAFAAIAAAABAP//AAAFAAIAAAACAAAAAQAFAAIAAAACAAEAAAAFAAIAAAD///f/AAAFAAIAAAD///X/AQAFAAIAAAD///n/AQAFAAIAAAADAPr/AAAFAAIAAAADAP7/AQAFAAIAAAACAP//AQAFAAIAAAADAAAAAAAFAAIAAAADAAIAAQAFAAIAAAACAPn/AAAFAAIAAAACAPj/AAAFAAIAAAABAPf/AAAFAAIAAAABAPb/AAAFAAIAAAAAAPX/AAAFAAIAAAAAAPT/AAAFAAIAAAD///P/AAAFAAIAAAADAPj/AAAFAAIAAAACAPf/AAAFAAIAAAACAPb/AAAFAAIAAAABAPX/AAAFAAIAAAABAPT/AAAFAAIAAAAAAPP/AAAFAAIAAAAAAPL/AAAFAAIAAAD///H/AAAFAAIAAAA=")
tile_set = SubResource("TileSet_w48qg")
[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1681660400]
color = Color(0.3478174, 0.34781674, 0.3478171, 1)

View File

@ -0,0 +1,85 @@
[gd_scene format=3 uid="uid://b3ytvnucd8hod"]
[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_vbktj"]
[ext_resource type="Script" uid="uid://djmn4qgj45j2p" path="res://scenes/musicians/musician.gd" id="2_fcial"]
[ext_resource type="AudioStream" uid="uid://cc6smyxkrrvfr" path="res://assets/audio/eine-kleine-bass.wav" id="3_7duo6"]
[ext_resource type="Texture2D" uid="uid://d1li1mlxutaym" path="res://resources/point_light_texture.tres" id="3_fcial"]
[ext_resource type="PackedScene" uid="uid://cwdkw1p371bks" path="res://scenes/musicians/input_prompt.tscn" id="5_k304j"]
[ext_resource type="Texture2D" uid="uid://bmc2ijkmfndv7" path="res://assets/input/keyboard_b_outline.png" id="6_5834n"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lswn8"]
atlas = ExtResource("1_vbktj")
region = Rect2(32, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a6jrf"]
atlas = ExtResource("1_vbktj")
region = Rect2(64, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xuqvo"]
atlas = ExtResource("1_vbktj")
region = Rect2(96, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_qsp4k"]
atlas = ExtResource("1_vbktj")
region = Rect2(128, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0odxb"]
atlas = ExtResource("1_vbktj")
region = Rect2(0, 32, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_kq58d"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lswn8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a6jrf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xuqvo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qsp4k")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lswn8")
}],
"loop": true,
"name": &"default",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0odxb")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_efxa6"]
polygon = PackedVector2Array(-2, 14, 4, 15, -4, 14)
[node name="Bass" type="AnimatedSprite2D" unique_id=1326988360]
z_index = 10
sprite_frames = SubResource("SpriteFrames_kq58d")
script = ExtResource("2_fcial")
[node name="Audio" type="AudioStreamPlayer2D" parent="." unique_id=1607169101]
stream = ExtResource("3_7duo6")
[node name="Light" type="PointLight2D" parent="." unique_id=1266087927]
position = Vector2(9, 9)
energy = 0.8
shadow_enabled = true
shadow_filter = 2
shadow_filter_smooth = 7.6
texture = ExtResource("3_fcial")
[node name="Occluder" type="LightOccluder2D" parent="." unique_id=968506542]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_efxa6")
[node name="InputPrompt" parent="." unique_id=590379112 instance=ExtResource("5_k304j")]
texture = ExtResource("6_5834n")

View File

@ -0,0 +1,79 @@
[gd_scene format=3 uid="uid://ekd4tkk01nug"]
[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_cwrgh"]
[ext_resource type="Script" uid="uid://djmn4qgj45j2p" path="res://scenes/musicians/musician.gd" id="2_dthcw"]
[ext_resource type="Texture2D" uid="uid://d1li1mlxutaym" path="res://resources/point_light_texture.tres" id="3_dthcw"]
[ext_resource type="AudioStream" uid="uid://duovjdbif7wkw" path="res://assets/audio/eine-kleine-cello.wav" id="3_pmcee"]
[ext_resource type="PackedScene" uid="uid://cwdkw1p371bks" path="res://scenes/musicians/input_prompt.tscn" id="5_ef0rn"]
[ext_resource type="Texture2D" uid="uid://d1onhhk6xorit" path="res://assets/input/keyboard_c_outline.png" id="6_4j1rk"]
[sub_resource type="AtlasTexture" id="AtlasTexture_kek77"]
atlas = ExtResource("1_cwrgh")
region = Rect2(224, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4c57u"]
atlas = ExtResource("1_cwrgh")
region = Rect2(256, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_efxa6"]
atlas = ExtResource("1_cwrgh")
region = Rect2(288, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vw27"]
atlas = ExtResource("1_cwrgh")
region = Rect2(192, 32, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_dg77c"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_kek77")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4c57u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_efxa6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kek77")
}],
"loop": true,
"name": &"default",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vw27")
}],
"loop": true,
"name": &"idle",
"speed": 10.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_dg77c"]
polygon = PackedVector2Array(-1, 13, 2, 14, -2, 15)
[node name="Cello" type="AnimatedSprite2D" unique_id=1539517068]
sprite_frames = SubResource("SpriteFrames_dg77c")
autoplay = "idle"
flip_h = true
script = ExtResource("2_dthcw")
[node name="Audio" type="AudioStreamPlayer2D" parent="." unique_id=1212448009]
stream = ExtResource("3_pmcee")
[node name="Light" type="PointLight2D" parent="." unique_id=822750253]
position = Vector2(6, 9)
energy = 0.8
shadow_enabled = true
shadow_filter = 2
shadow_filter_smooth = 7.6
texture = ExtResource("3_dthcw")
[node name="Occluder" type="LightOccluder2D" parent="." unique_id=1218678921]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_dg77c")
[node name="InputPrompt" parent="." unique_id=590379112 instance=ExtResource("5_ef0rn")]
texture = ExtResource("6_4j1rk")

View File

@ -0,0 +1,8 @@
[gd_scene format=3 uid="uid://cwdkw1p371bks"]
[ext_resource type="Texture2D" uid="uid://cctoyonq28i8q" path="res://assets/input/keyboard_v_outline.png" id="1_tpl0e"]
[node name="InputPrompt" type="Sprite2D" unique_id=590379112]
position = Vector2(0, 24)
scale = Vector2(0.25, 0.25)
texture = ExtResource("1_tpl0e")

View File

@ -0,0 +1,46 @@
#@tool
#@icon(icon_path: String)
class_name Musician
extends AnimatedSprite2D
## Documentation comments
# signal
# enum
# const
# @export var
var is_active: bool = false
@onready var audio: AudioStreamPlayer2D = $Audio
@onready var light: PointLight2D = $Light
@onready var occluder: LightOccluder2D = $Occluder
## OVERRIDES
func _ready() -> void:
light.visible = false
audio.connect("finished", enter_exit)
func _process(_delta: float) -> void:
pass
func _physics_process(_delta: float) -> void:
pass
## CORE
func enter_exit() -> void:
if is_active:
play("idle")
audio.stop()
light.visible = false
is_active = false
else:
play("default")
audio.play()
light.visible = true
is_active = true
## PRIVATE/HELPER
## RECEIVERS
## SETTERS/GETTERS

View File

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

View File

@ -0,0 +1,84 @@
[gd_scene format=3 uid="uid://c5mms8bhjkplb"]
[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_j3j2n"]
[ext_resource type="Script" uid="uid://djmn4qgj45j2p" path="res://scenes/musicians/musician.gd" id="2_ijwrm"]
[ext_resource type="AudioStream" uid="uid://bd01iv6fpqbdh" path="res://assets/audio/eine-kleine-viol.wav" id="3_atj5b"]
[ext_resource type="Texture2D" uid="uid://d1li1mlxutaym" path="res://resources/point_light_texture.tres" id="3_ijwrm"]
[ext_resource type="PackedScene" uid="uid://cwdkw1p371bks" path="res://scenes/musicians/input_prompt.tscn" id="5_u4mvl"]
[sub_resource type="AtlasTexture" id="AtlasTexture_w48qg"]
atlas = ExtResource("1_j3j2n")
region = Rect2(32, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vivmo"]
atlas = ExtResource("1_j3j2n")
region = Rect2(64, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2cqfq"]
atlas = ExtResource("1_j3j2n")
region = Rect2(96, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yaehf"]
atlas = ExtResource("1_j3j2n")
region = Rect2(128, 160, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"]
atlas = ExtResource("1_j3j2n")
region = Rect2(0, 160, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_074og"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_w48qg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vivmo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2cqfq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yaehf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w48qg")
}],
"loop": true,
"name": &"default",
"speed": 15.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ycdy4")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ycdy4"]
polygon = PackedVector2Array(0, 13, 3, 13, -1, 14)
[node name="Viol" type="AnimatedSprite2D" unique_id=173609985]
sprite_frames = SubResource("SpriteFrames_074og")
autoplay = "idle"
script = ExtResource("2_ijwrm")
[node name="Audio" type="AudioStreamPlayer2D" parent="." unique_id=734284253]
stream = ExtResource("3_atj5b")
[node name="Light" type="PointLight2D" parent="." unique_id=2065896281]
z_index = 100
position = Vector2(7, 8)
energy = 0.8
shadow_enabled = true
shadow_filter = 2
shadow_filter_smooth = 7.6
texture = ExtResource("3_ijwrm")
[node name="Occluder" type="LightOccluder2D" parent="." unique_id=1033753770]
position = Vector2(1, 0)
occluder = SubResource("OccluderPolygon2D_ycdy4")
[node name="InputPrompt" parent="." unique_id=590379112 instance=ExtResource("5_u4mvl")]

View File

@ -1,7 +1,7 @@
[gd_scene format=3 uid="uid://ojisu2jrshsp"] [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="Script" uid="uid://bhbfogebu1di5" path="res://scripts/rhythm_manager.gd" id="1_0wx20"]
[ext_resource type="PackedScene" uid="uid://dduyumwk5v1ge" path="res://click_track.tscn" id="2_6v8l0"] [ext_resource type="PackedScene" uid="uid://dduyumwk5v1ge" path="res://scenes/click_track.tscn" id="2_6v8l0"]
[node name="RhythmManager" type="Node2D" unique_id=2036637300 node_paths=PackedStringArray("target_audio")] [node name="RhythmManager" type="Node2D" unique_id=2036637300 node_paths=PackedStringArray("target_audio")]
script = ExtResource("1_0wx20") script = ExtResource("1_0wx20")

23
scripts/conductor.gd Normal file
View File

@ -0,0 +1,23 @@
#@tool
#@icon(icon_path: String)
class_name Conductor
extends Musician
## Documentation comments
## signal
## enum
## const
## @export var
## var
## @onready var
## OVERRIDES
## CORE
## PRIVATE/HELPER
## RECEIVERS
## SETTERS/GETTERS

1
scripts/conductor.gd.uid Normal file
View File

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

53
scripts/main.gd Normal file
View File

@ -0,0 +1,53 @@
#@tool
#@icon(icon_path: String)
#class_name MyNode
extends Node2D
## Documentation comments
## signal
## enum
## const
@onready var conductor: Conductor = %Conductor
@onready var violinist: Musician = %Viol
@onready var cellist: Musician = %Cello
@onready var bassist: Musician = %Bass
#@onready var rhythm_manager: RhythmManager = %RhythmManager
#@onready var click_track: AudioStreamPlayer2D = %ClickTrack
@onready var canvas_modulate: CanvasModulate = $CanvasModulate
## OVERRIDES
func _ready() -> void:
canvas_modulate.visible = true
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.enter_exit()
if event.is_action_pressed("viol"):
violinist.enter_exit()
if event.is_action_pressed("cello"):
cellist.enter_exit()
if event.is_action_pressed("bass"):
bassist.enter_exit()
## CORE
#
#func enter_instrument(instrument: Node) -> void:
#print("Now playing " + instrument.name)
#var instrument_audio: AudioStreamPlayer2D = instrument.get_child(0)
#var instrument_light: PointLight2D = instrument.get_child(1)
#instrument.play("default")
#instrument_audio.play()
#instrument_light.visible = true
## PRIVATE/HELPER
## RECEIVERS
## SETTERS/GETTERS