added click track, rhythm manager scene, input actions

This commit is contained in:
Adam Burns 2026-03-11 22:20:36 -04:00
parent 42fac607db
commit 6bf0b2dadc
44 changed files with 613 additions and 113 deletions

View File

@ -4,3 +4,4 @@ Beepbox project: https://is.gd/E5IIJR
https://is.gd/E5IIJR
https://is.gd/4iBSfC
*latest: https://is.gd/H7zjZ1*
final(?): https://is.gd/EcOorF

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c2sebjygsix7l"
path="res://.godot/imported/eine-kleine-bass-1.wav-b54afd9930f613ff0723564e6f002516.sample"
[deps]
source_file="res://assets/audio/eine-kleine-bass-1.wav"
dest_files=["res://.godot/imported/eine-kleine-bass-1.wav-b54afd9930f613ff0723564e6f002516.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

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bjv5v1w3x0n4i"
path="res://.godot/imported/eine-kleine-cello-1.wav-b900b30c3fccffbc96dae18bc925b0ff.sample"
[deps]
source_file="res://assets/audio/eine-kleine-cello-1.wav"
dest_files=["res://.godot/imported/eine-kleine-cello-1.wav-b900b30c3fccffbc96dae18bc925b0ff.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://be4kjw5l6yh30"
path="res://.godot/imported/eine-kleine-nachtmusik-theme-1.wav-46596d738c1b08a6e76a3e51de14d609.sample"
[deps]
source_file="res://assets/audio/eine-kleine-nachtmusik-theme-1.wav"
dest_files=["res://.godot/imported/eine-kleine-nachtmusik-theme-1.wav-46596d738c1b08a6e76a3e51de14d609.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

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://q6wqgiif77yi"
path="res://.godot/imported/eine-kleine-viol-1.wav-b114f6c4fd9defc9822eb2899c219143.sample"
[deps]
source_file="res://assets/audio/eine-kleine-viol-1.wav"
dest_files=["res://.godot/imported/eine-kleine-viol-1.wav-b114f6c4fd9defc9822eb2899c219143.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

Binary file not shown.

View File

@ -0,0 +1,24 @@
[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

Binary file not shown.

View File

@ -0,0 +1,24 @@
[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

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b8n6p428csquv"
path="res://.godot/imported/eine-kleine-click.wav-852262f48711240ef2bf8fbdd1754627.sample"
[deps]
source_file="res://assets/audio/full/eine-kleine-click.wav"
dest_files=["res://.godot/imported/eine-kleine-click.wav-852262f48711240ef2bf8fbdd1754627.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

@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://bflw7me3q03gf"
path="res://.godot/imported/eine-kleine-full.wav-00a97bd13cc0b912523c788d0298bd64.sample"
path="res://.godot/imported/eine-kleine-full.wav-1595b51d9b7f7cfa295f7b9a1475aabc.sample"
[deps]
source_file="res://assets/audio/eine-kleine-full.wav"
dest_files=["res://.godot/imported/eine-kleine-full.wav-00a97bd13cc0b912523c788d0298bd64.sample"]
source_file="res://assets/audio/full/eine-kleine-full.wav"
dest_files=["res://.godot/imported/eine-kleine-full.wav-1595b51d9b7f7cfa295f7b9a1475aabc.sample"]
[params]

Binary file not shown.

View File

@ -0,0 +1,24 @@
[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

BIN
assets/input/keyboard_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bw3nb0oru0pam"
path="res://.godot/imported/keyboard_b.png-71978e8901de6389891ee44206a11ed8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_b.png"
dest_files=["res://.godot/imported/keyboard_b.png-71978e8901de6389891ee44206a11ed8.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmc2ijkmfndv7"
path="res://.godot/imported/keyboard_b_outline.png-78b1023215bfc44f58687a9961c11a73.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_b_outline.png"
dest_files=["res://.godot/imported/keyboard_b_outline.png-78b1023215bfc44f58687a9961c11a73.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

BIN
assets/input/keyboard_c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dahurq3y0kh20"
path="res://.godot/imported/keyboard_c.png-1146edca3890f0be7840c02b9bd1b6e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_c.png"
dest_files=["res://.godot/imported/keyboard_c.png-1146edca3890f0be7840c02b9bd1b6e9.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1onhhk6xorit"
path="res://.godot/imported/keyboard_c_outline.png-85198403ed6a2f3f09e65199b3566cb9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_c_outline.png"
dest_files=["res://.godot/imported/keyboard_c_outline.png-85198403ed6a2f3f09e65199b3566cb9.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blpawb3qyrqh2"
path="res://.godot/imported/keyboard_space.png-234c6ee69553ead35d22943ace33c74d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_space.png"
dest_files=["res://.godot/imported/keyboard_space.png-234c6ee69553ead35d22943ace33c74d.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://snb8rm4p7s1x"
path="res://.godot/imported/keyboard_space_outline.png-4e9954671d62479691833162f0e18256.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_space_outline.png"
dest_files=["res://.godot/imported/keyboard_space_outline.png-4e9954671d62479691833162f0e18256.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

BIN
assets/input/keyboard_t.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d24f5eemnnvrn"
path="res://.godot/imported/keyboard_t.png-5ca6c6a935d689c9b23f9c13f743e73e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_t.png"
dest_files=["res://.godot/imported/keyboard_t.png-5ca6c6a935d689c9b23f9c13f743e73e.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bl3rq1xnhtmuy"
path="res://.godot/imported/keyboard_t_outline.png-f47f0784b47bf5f229b467909ab0e562.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_t_outline.png"
dest_files=["res://.godot/imported/keyboard_t_outline.png-f47f0784b47bf5f229b467909ab0e562.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

BIN
assets/input/keyboard_v.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bm53tpx7cbocx"
path="res://.godot/imported/keyboard_v.png-0a9fa5270c53461dc7ce55f9787edd41.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_v.png"
dest_files=["res://.godot/imported/keyboard_v.png-0a9fa5270c53461dc7ce55f9787edd41.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cctoyonq28i8q"
path="res://.godot/imported/keyboard_v_outline.png-f82bbd3bcff322d09781a98abc4ee6df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/input/keyboard_v_outline.png"
dest_files=["res://.godot/imported/keyboard_v_outline.png-f82bbd3bcff322d09781a98abc4ee6df.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

View File

@ -2,10 +2,10 @@
[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/eine-kleine-full.wav" id="2_7mycd"]
[ext_resource type="AudioStream" uid="uid://q6wqgiif77yi" path="res://assets/audio/eine-kleine-viol-1.wav" id="2_h2yge"]
[ext_resource type="AudioStream" uid="uid://c2sebjygsix7l" path="res://assets/audio/eine-kleine-bass-1.wav" id="3_1bvp3"]
[ext_resource type="AudioStream" uid="uid://bjv5v1w3x0n4i" path="res://assets/audio/eine-kleine-cello-1.wav" id="3_lquwl"]
[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="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")
@ -209,10 +209,13 @@ sources/5 = SubResource("TileSetAtlasSource_h2yge")
[node name="Main" type="Node2D" unique_id=1319338792]
[node name="Camera2D" type="Camera2D" parent="." unique_id=1314238347]
zoom = Vector2(4, 4)
[node name="Conductor" type="AnimatedSprite2D" parent="." unique_id=880231478]
sprite_frames = SubResource("SpriteFrames_7mycd")
autoplay = "default"
frame_progress = 0.33208793
frame_progress = 0.51704574
[node name="FullAudio" type="AudioStreamPlayer2D" parent="Conductor" unique_id=1320626273]
stream = ExtResource("2_7mycd")
@ -224,11 +227,11 @@ autoplay = true
position = Vector2(-27, -4)
sprite_frames = SubResource("SpriteFrames_074og")
autoplay = "default"
frame_progress = 0.8901965
frame_progress = 0.6208535
[node name="ViolAudio" type="AudioStreamPlayer2D" parent="Musicians/Viol" unique_id=800067327]
visible = false
stream = ExtResource("2_h2yge")
stream = ExtResource("3_7mycd")
[node name="LightOccluder2D" type="LightOccluder2D" parent="Musicians/Viol" unique_id=781715626]
position = Vector2(1, 0)
@ -247,23 +250,21 @@ texture = SubResource("GradientTexture2D_7mycd")
position = Vector2(-14, -28)
sprite_frames = SubResource("SpriteFrames_dg77c")
autoplay = "default"
frame_progress = 0.31955153
frame_progress = 0.5045058
[node name="CelloAudio" type="AudioStreamPlayer2D" parent="Musicians/Cello" unique_id=526745522]
visible = false
stream = ExtResource("3_lquwl")
stream = ExtResource("4_272bh")
[node name="Bass" type="AnimatedSprite2D" parent="Musicians" unique_id=1099071968]
position = Vector2(-49, -19)
sprite_frames = SubResource("SpriteFrames_kq58d")
autoplay = "default"
frame_progress = 0.57215303
frame_progress = 0.30279997
[node name="BassAudio" type="AudioStreamPlayer2D" parent="Musicians/Bass" unique_id=1653394620]
visible = false
stream = ExtResource("3_1bvp3")
[node name="Camera2D" type="Camera2D" parent="." unique_id=1314238347]
stream = ExtResource("5_5vw27")
[node name="Stage" type="TileMapLayer" parent="." unique_id=15466516]
z_index = -10

View File

@ -19,7 +19,34 @@ config/icon="res://icon.svg"
window/size/viewport_width=1280
window/size/viewport_height=720
window/stretch/scale=8.0
[input]
viol={
"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":86,"key_label":0,"unicode":118,"location":0,"echo":false,"script":null)
]
}
cello={
"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":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null)
]
}
bass={
"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":66,"key_label":0,"unicode":98,"location":0,"echo":false,"script":null)
]
}
tick={
"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":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null)
]
}
start={
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
[physics]

44
rhythm_manager.gd Normal file
View File

@ -0,0 +1,44 @@
#@tool
#@icon(icon_path: String)
class_name RhythmManager
extends Node2D
## Documentation comments
## signal
## enum
## const
@export var tempo: int = 120
@export var beats_per_measure: int = 4
var seconds_per_beat: float
var seconds_elapsed: float = 0.0
var is_running: bool = false
@onready var click_track: AudioStreamPlayer2D = %ClickTrack
## OVERRIDES
func _ready() -> void:
seconds_per_beat = 60.0/float(tempo)
print(seconds_per_beat)
func _process(_delta: float) -> void:
if is_running:
seconds_elapsed = Time.get_ticks_msec() / 1000.0
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_accept"):
is_running = true
click_track.play()
#func _physics_process(delta: float) -> void:
#pass
## CORE
## PRIVATE/HELPER
## RECEIVERS
## SETTERS/GETTERS

1
rhythm_manager.gd.uid Normal file
View File

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

26
rhythm_manager.tscn Normal file
View File

@ -0,0 +1,26 @@
[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"]
[node name="RhythmManager" type="Node2D" unique_id=2036637300]
script = ExtResource("1_0wx20")
[node name="RhythmUI" type="Control" parent="." unique_id=510351076]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="VBoxContainer" type="VBoxContainer" parent="RhythmUI" unique_id=715801075]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="SongStartLabel" type="Label" parent="RhythmUI/VBoxContainer" unique_id=825673648]
layout_mode = 2
text = "To start the song, press the space bar"
[node name="ClickTrack" type="AudioStreamPlayer2D" parent="." unique_id=875092300]
unique_name_in_owner = true
stream = ExtResource("2_6v8l0")