Update most demos for Godot 4.0.beta10 (#782)

This commit is contained in:
Hugo Locurcio
2023-01-05 16:50:17 +01:00
committed by GitHub
parent 85ca2fb2a1
commit 1d5184e235
758 changed files with 24258 additions and 9624 deletions

View File

@@ -4,32 +4,36 @@
[ext_resource type="AudioStream" uid="uid://k0y5fyud50c1" path="res://Intro.ogg" id="2"]
[node name="Changer" type="Control"]
offset_right = 1023.0
offset_bottom = 598.0
script = ExtResource( "1" )
__meta__ = {
"_edit_use_anchors_": false
}
layout_mode = 3
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -511.5
offset_top = -299.0
offset_right = 511.5
offset_bottom = 299.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1")
[node name="ItemList" type="ItemList" parent="."]
layout_mode = 0
offset_left = 57.0
offset_top = 33.0
offset_right = 960.0
offset_bottom = 228.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="DeviceInfo" type="Label" parent="."]
layout_mode = 0
offset_left = 321.0
offset_top = 248.0
offset_right = 660.0
offset_bottom = 284.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="SetDevice" type="Button" parent="."]
layout_mode = 0
offset_left = 425.723
offset_top = 309.733
offset_right = 556.723
@@ -37,6 +41,7 @@ offset_bottom = 354.733
text = "Set Device"
[node name="PlayAudio" type="Button" parent="."]
layout_mode = 0
offset_left = 424.0
offset_top = 373.0
offset_right = 557.0
@@ -44,7 +49,7 @@ offset_bottom = 414.0
text = "Play Audio"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource( "2" )
stream = ExtResource("2")
volume_db = -6.0
[connection signal="button_down" from="SetDevice" to="." method="_on_Button_button_down"]

View File

@@ -1,7 +1,7 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOGGVorbis"
type="AudioStreamOggVorbis"
uid="uid://k0y5fyud50c1"
path="res://.godot/imported/Intro.ogg-dfe75727d0e47692e220adf97ddb7ad9.oggvorbisstr"
@@ -14,3 +14,6 @@ dest_files=["res://.godot/imported/Intro.ogg-dfe75727d0e47692e220adf97ddb7ad9.og
loop=true
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -29,5 +29,6 @@ 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

@@ -13,88 +13,96 @@ config_version=5
config/name="Audio Device Changer Demo"
config/description="This is a demo showing how the audio output device can be changed from Godot."
run/main_scene="res://Changer.tscn"
config/icon="res://icon.png"
config/features=PackedStringArray("4.0")
run/low_processor_mode=true
config/icon="res://icon.png"
[display]
window/vsync/vsync_mode=0
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
[input]
ui_accept={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777221,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777222,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777221,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777222,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_select={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_cancel={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_focus_next={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_focus_prev={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":0,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_page_up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777235,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777235,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_page_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777236,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777236,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_home={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777229,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777229,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_end={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777230,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777230,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
[rendering]
environment/defaults/default_clear_color=Color(0.2, 0.2, 0.2, 1)
quality/driver/driver_name="GLES2"
vram_compression/import_etc=true
vram_compression/import_etc2=false

View File

@@ -5,8 +5,79 @@
[sub_resource type="AudioStreamGenerator" id="AudioStreamGenerator_8tsrq"]
[node name="Generator" type="Node"]
script = ExtResource( "1" )
script = ExtResource("1")
[node name="Player" type="AudioStreamPlayer" parent="."]
stream = SubResource( "AudioStreamGenerator_8tsrq" )
stream = SubResource("AudioStreamGenerator_8tsrq")
volume_db = -12.041
autoplay = true
[node name="CenterContainer" type="VBoxContainer" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -200.0
offset_top = -118.0
offset_right = 200.0
offset_bottom = 118.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 15
[node name="FrequencyTitle" type="Label" parent="CenterContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.466667, 0.882353, 1, 1)
theme_override_font_sizes/font_size = 24
text = "Generated Audio Frequency"
[node name="Frequency" type="HBoxContainer" parent="CenterContainer"]
custom_minimum_size = Vector2(400, 0)
layout_mode = 2
theme_override_constants/separation = 20
[node name="FrequencyLabel" type="Label" parent="CenterContainer/Frequency"]
unique_name_in_owner = true
layout_mode = 2
text = "440 Hz"
[node name="FrequencyHSlider" type="HSlider" parent="CenterContainer/Frequency"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
min_value = 100.0
max_value = 1000.0
value = 440.0
[node name="HSeparator" type="HSeparator" parent="CenterContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="VolumeTitle" type="Label" parent="CenterContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.466667, 0.882353, 1, 1)
theme_override_font_sizes/font_size = 24
text = "Playback Volume"
[node name="Volume" type="HBoxContainer" parent="CenterContainer"]
custom_minimum_size = Vector2(400, 0)
layout_mode = 2
theme_override_constants/separation = 20
[node name="VolumeLabel" type="Label" parent="CenterContainer/Volume"]
unique_name_in_owner = true
layout_mode = 2
text = "-12.04 dB"
[node name="VolumeHSlider" type="HSlider" parent="CenterContainer/Volume"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
min_value = 0.001
max_value = 1.0
step = 0.001
value = 0.25
[connection signal="value_changed" from="CenterContainer/Frequency/FrequencyHSlider" to="." method="_on_frequency_h_slider_value_changed"]
[connection signal="value_changed" from="CenterContainer/Volume/VolumeHSlider" to="." method="_on_volume_h_slider_value_changed"]

View File

@@ -21,7 +21,21 @@ func _process(_delta):
func _ready():
$Player.stream.mix_rate = sample_hz # Setting mix rate is only possible before play().
playback = $Player.get_stream_playback()
_fill_buffer() # Prefill, do before play() to avoid delay.
# Setting mix rate is only possible before play().
$Player.stream.mix_rate = sample_hz
$Player.play()
playback = $Player.get_stream_playback()
# `_fill_buffer` must be called *after* setting `playback`,
# as `fill_buffer` uses the `playback` member variable.
_fill_buffer()
func _on_frequency_h_slider_value_changed(value):
%FrequencyLabel.text = "%d Hz" % value
pulse_hz = value
func _on_volume_h_slider_value_changed(value):
# Use `linear_to_db()` to get a volume slider that matches perceptual human hearing.
%VolumeLabel.text = "%.2f dB" % linear_to_db(value)
$Player.volume_db = linear_to_db(value)

View File

@@ -16,9 +16,16 @@ play audio samples from GDScript.
It plays a simple 440 Hz sine wave at 22050 Hz."
run/main_scene="res://generator.tscn"
config/features=PackedStringArray("4.0")
run/low_processor_mode=true
[display]
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
[rendering]
environment/defaults/default_clear_color=Color(0.12549, 0.12549, 0.12549, 1)
quality/driver/driver_name="GLES2"
vram_compression/import_etc=true
vram_compression/import_etc2=false

View File

@@ -1,7 +1,7 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOGGVorbis"
type="AudioStreamOggVorbis"
uid="uid://c2re52petqrvx"
path="res://.godot/imported/Intro.ogg-dfe75727d0e47692e220adf97ddb7ad9.oggvorbisstr"
@@ -14,3 +14,6 @@ dest_files=["res://.godot/imported/Intro.ogg-dfe75727d0e47692e220adf97ddb7ad9.og
loop=true
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -33,12 +33,12 @@ func _on_RecordButton_pressed():
func _on_PlayButton_pressed():
print("Recording: %s" % recording)
print("Format: %s" % recording.format)
print("Mix rate: %s" % recording.mix_rate)
print("Stereo: %s" % recording.stereo)
print_rich("\n[b]Playing recording:[/b] %s" % recording)
print_rich("[b]Format:[/b] %s" % ("8-bit uncompressed" if recording.format == 0 else "16-bit uncompressed" if recording.format == 1 else "IMA ADPCM compressed"))
print_rich("[b]Mix rate:[/b] %s Hz" % recording.mix_rate)
print_rich("[b]Stereo:[/b] %s" % ("Yes" if recording.stereo else "No"))
var data = recording.get_data()
print("Size: %s" % data.size())
print_rich("[b]Size:[/b] %s bytes" % data.size())
$AudioStreamPlayer.stream = recording
$AudioStreamPlayer.play()
@@ -77,11 +77,11 @@ func _on_MixRateOptionButton_item_selected(index: int) -> void:
func _on_FormatOptionButton_item_selected(index: int) -> void:
if index == 0:
format = AudioStreamSample.FORMAT_8_BITS
format = AudioStreamWAV.FORMAT_8_BITS
elif index == 1:
format = AudioStreamSample.FORMAT_16_BITS
format = AudioStreamWAV.FORMAT_16_BITS
elif index == 2:
format = AudioStreamSample.FORMAT_IMA_ADPCM
format = AudioStreamWAV.FORMAT_IMA_ADPCM
if recording != null:
recording.set_format(format)
@@ -90,3 +90,7 @@ func _on_StereoCheckButton_toggled(button_pressed: bool) -> void:
stereo = button_pressed
if recording != null:
recording.set_stereo(stereo)
func _on_open_user_folder_button_pressed():
OS.shell_open(ProjectSettings.globalize_path("user://"))

View File

@@ -6,6 +6,8 @@
[sub_resource type="AudioStreamMicrophone" id="1"]
[node name="MicRecord" type="Control"]
layout_mode = 3
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
@@ -14,10 +16,10 @@ offset_left = -278.0
offset_top = -224.0
offset_right = 296.0
offset_bottom = 226.0
script = ExtResource( "1" )
script = ExtResource("1")
[node name="AudioStreamRecord" type="AudioStreamPlayer" parent="."]
stream = SubResource( "1" )
stream = SubResource("1")
autoplay = true
bus = &"Record"
@@ -25,166 +27,134 @@ bus = &"Record"
autoplay = true
[node name="AudioStreamPlayer2" type="AudioStreamPlayer" parent="."]
stream = ExtResource( "2" )
stream = ExtResource("2")
volume_db = -6.0
[node name="Status" type="Label" parent="."]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_bottom = 26.0
text = "Status: "
horizontal_alignment = 1
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="RecordButton" type="Button" parent="."]
minimum_size = Vector2(130, 40)
layout_mode = 0
offset_left = 29.0
offset_top = 77.0
offset_right = 159.0
offset_bottom = 117.0
text = "Record"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="PlayButton" type="Button" parent="."]
minimum_size = Vector2(130, 40)
layout_mode = 0
offset_left = 209.0
offset_top = 77.0
offset_right = 339.0
offset_bottom = 117.0
disabled = true
text = "Play"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="PlayMusic" type="Button" parent="."]
minimum_size = Vector2(130, 40)
layout_mode = 0
offset_left = 30.0
offset_top = 395.0
offset_right = 160.0
offset_bottom = 435.0
text = "Play Music"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="FormatLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 33.0
offset_top = 153.0
offset_right = 102.0
offset_bottom = 179.0
text = "Format:"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="FormatOptionButton" type="OptionButton" parent="."]
layout_mode = 0
offset_left = 131.0
offset_top = 150.0
offset_right = 315.0
offset_bottom = 181.0
item_count = 3
selected = 1
popup/item_0/text = "8 Bit audio codec"
popup/item_0/text = "8-bit Uncompressed"
popup/item_0/id = 0
popup/item_1/text = "16 Bit audio codec"
popup/item_1/text = "16-bit Uncompressed"
popup/item_1/id = 1
popup/item_2/text = "IMA ADPCM Compression"
popup/item_2/id = 2
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="MixRateLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 33.0
offset_top = 192.0
offset_right = 102.0
offset_bottom = 218.0
text = "Mix rate:"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="MixRateOptionButton" type="OptionButton" parent="."]
layout_mode = 0
offset_left = 131.0
offset_top = 189.0
offset_right = 220.0
offset_bottom = 220.0
item_count = 6
selected = 4
popup/item_0/text = "11025"
popup/item_0/text = "11025 Hz"
popup/item_0/id = 0
popup/item_1/text = "16000"
popup/item_1/text = "16000 Hz"
popup/item_1/id = 1
popup/item_2/text = "22050"
popup/item_2/text = "22050 Hz"
popup/item_2/id = 2
popup/item_3/text = "32000"
popup/item_3/text = "32000 Hz"
popup/item_3/id = 3
popup/item_4/text = "44100"
popup/item_4/text = "44100 Hz"
popup/item_4/id = 4
popup/item_5/text = "48000"
popup/item_5/text = "48000 Hz"
popup/item_5/id = 5
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="StereoLabel" type="Label" parent="."]
layout_mode = 0
offset_left = 33.0
offset_top = 233.0
offset_right = 102.0
offset_bottom = 259.0
text = "Stereo:"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="StereoCheckButton" type="CheckButton" parent="."]
layout_mode = 0
offset_left = 126.0
offset_top = 233.0
offset_right = 170.0
offset_bottom = 264.0
button_pressed = true
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="SaveButton" type="Button" parent="."]
minimum_size = Vector2(130, 40)
layout_mode = 0
offset_left = 29.0
offset_top = 284.0
offset_right = 159.0
offset_bottom = 324.0
disabled = true
text = "Save WAV To:"
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="Filename" type="LineEdit" parent="SaveButton"]
layout_mode = 0
offset_left = 180.0
offset_right = 507.0
offset_bottom = 40.0
text = "user://record.wav"
caret_blink = true
caret_blink_speed = 0.5
__meta__ = {
"_edit_layout_mode": 0,
"_edit_use_custom_anchors": false
}
[node name="OpenUserFolderButton" type="Button" parent="."]
layout_mode = 1
offset_left = 209.0
offset_top = 334.0
offset_right = 372.0
offset_bottom = 374.0
text = "Open User Folder"
[connection signal="pressed" from="RecordButton" to="." method="_on_RecordButton_pressed"]
[connection signal="pressed" from="PlayButton" to="." method="_on_PlayButton_pressed"]
@@ -193,3 +163,4 @@ __meta__ = {
[connection signal="item_selected" from="MixRateOptionButton" to="." method="_on_MixRateOptionButton_item_selected"]
[connection signal="toggled" from="StereoCheckButton" to="." method="_on_StereoCheckButton_toggled"]
[connection signal="pressed" from="SaveButton" to="." method="_on_SaveButton_pressed"]
[connection signal="pressed" from="OpenUserFolderButton" to="." method="_on_open_user_folder_button_pressed"]

View File

@@ -10,5 +10,5 @@ bus/1/mute = true
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = &"Master"
bus/1/effect/0/effect = SubResource( "AudioEffectRecord_fo272" )
bus/1/effect/0/effect = SubResource("AudioEffectRecord_fo272")
bus/1/effect/0/enabled = true

View File

@@ -29,5 +29,6 @@ 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

@@ -14,8 +14,9 @@ config/name="Audio Mic Record Demo"
config/description="This is an example showing how one can record audio from
the microphone and later play it back or save it to a file."
run/main_scene="res://MicRecord.tscn"
config/icon="res://icon.png"
config/features=PackedStringArray("4.0")
run/low_processor_mode=true
config/icon="res://icon.png"
[audio]
@@ -26,6 +27,7 @@ enable_audio_input=true
window/size/viewport_width=640
window/size/viewport_height=480
window/vsync/vsync_mode=0
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"

View File

@@ -27,8 +27,8 @@ config/features=PackedStringArray("4.0")
[display]
window/size/width=1280
window/size/height=200
window/size/viewport_width=1280
window/size/viewport_height=200
[network]

View File

@@ -1,8 +1,8 @@
[gd_resource type="AudioBusLayout" load_steps=2 format=3 uid="uid://byxtiup0hs2og"]
[sub_resource type="AudioEffectSpectrumAnalyzer" id="AudioEffectSpectrumAnalyzer_m7e3v"]
[sub_resource type="AudioEffectSpectrumAnalyzer" id="AudioEffectSpectrumAnalyzer_ihlsb"]
resource_name = "SpectrumAnalyzer"
[resource]
bus/0/effect/0/effect = SubResource( "AudioEffectSpectrumAnalyzer_m7e3v" )
bus/0/effect/0/effect = SubResource("AudioEffectSpectrumAnalyzer_ihlsb")
bus/0/effect/0/enabled = true

View File

@@ -29,5 +29,6 @@ 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

@@ -1,7 +1,7 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOGGVorbis"
type="AudioStreamOggVorbis"
uid="uid://dl3ppges2sw77"
path="res://.godot/imported/maldita.ogg-16f33b83786e8d938ac9e0b887e47ec6.oggvorbisstr"
@@ -14,3 +14,6 @@ dest_files=["res://.godot/imported/maldita.ogg-16f33b83786e8d938ac9e0b887e47ec6.
loop=true
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -13,11 +13,19 @@ config_version=5
config/name="Audio Spectrum Demo"
config/description="This is a demo showing how a spectrum analyzer can be built using Godot."
run/main_scene="res://show_spectrum.tscn"
config/icon="res://icon.png"
config/features=PackedStringArray("4.0")
run/low_processor_mode=true
config/icon="res://icon.png"
[display]
window/vsync/vsync_mode=0
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
[rendering]
environment/defaults/default_clear_color=Color(0.12549, 0.12549, 0.12549, 1)
quality/driver/driver_name="GLES2"
vram_compression/import_etc=true
vram_compression/import_etc2=false

View File

@@ -3,8 +3,8 @@ extends Node2D
const VU_COUNT = 16
const FREQ_MAX = 11050.0
const WIDTH = 400
const HEIGHT = 100
const WIDTH = 800
const HEIGHT = 200
const MIN_DB = 60
@@ -14,17 +14,28 @@ func _draw():
@warning_ignore(integer_division)
var w = WIDTH / VU_COUNT
var prev_hz = 0
for i in range(1, VU_COUNT+1):
var hz = i * FREQ_MAX / VU_COUNT;
var magnitude: float = spectrum.get_magnitude_for_frequency_range(prev_hz, hz).length()
var energy = clamp((MIN_DB + linear2db(magnitude)) / MIN_DB, 0, 1)
for i in range(1, VU_COUNT + 1):
var hz = i * FREQ_MAX / VU_COUNT
var magnitude = spectrum.get_magnitude_for_frequency_range(prev_hz, hz).length()
var energy = clampf((MIN_DB + linear_to_db(magnitude)) / MIN_DB, 0, 1)
var height = energy * HEIGHT
draw_rect(Rect2(w * i, HEIGHT - height, w, height), Color.WHITE)
draw_rect(
Rect2(w * i, HEIGHT - height, w - 2, height),
Color.from_hsv(float(VU_COUNT * 0.6 + i * 0.5) / VU_COUNT, 0.5, 0.6)
)
draw_line(
Vector2(w * i, HEIGHT - height),
Vector2(w * i + w - 2, HEIGHT - height),
Color.from_hsv(float(VU_COUNT * 0.6 + i * 0.5) / VU_COUNT, 0.5, 1.0),
2.0,
true
)
prev_hz = hz
func _process(_delta):
update()
# Sound plays back continuously, so the graph needs to be updated every frame.
queue_redraw()
func _ready():

View File

@@ -4,8 +4,13 @@
[ext_resource type="AudioStream" uid="uid://dl3ppges2sw77" path="res://maldita.ogg" id="2"]
[node name="ShowSpectrum" type="Node2D"]
script = ExtResource( "1" )
position = Vector2(136, 224)
script = ExtResource("1")
[node name="Player" type="AudioStreamPlayer" parent="."]
stream = ExtResource( "2" )
stream = ExtResource("2")
autoplay = true
[node name="Camera2D" type="Camera2D" parent="."]
offset = Vector2(440, 100)
current = true