mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2025-12-31 09:49:06 +03:00
Update most demos for Godot 4.0.beta10 (#782)
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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://"))
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user