Add a way to select samples from folder

This commit is contained in:
Tim Krief 2021-05-11 18:09:25 +02:00
parent 5c06bde646
commit 404b09d236
5 changed files with 62 additions and 6 deletions

View File

@ -17,6 +17,7 @@ script/source = "extends Spatial
onready var RandomAudioStreamPlayer3D = $Orbit/Sprite3D/RandomAudioStreamPlayer3D
func _ready():
randomize()
$Timer.start(.3)
func _on_Timer_timeout():
@ -24,7 +25,7 @@ func _on_Timer_timeout():
$Timer.start(.3)
"
[sub_resource type="Animation" id=3]
[sub_resource type="Animation" id=2]
resource_name = "Orbit"
length = 5.0
loop = true
@ -52,6 +53,7 @@ billboard = 1
texture = ExtResource( 9 )
[node name="RandomAudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Orbit/Sprite3D"]
unit_db = 10.0
script = ExtResource( 12 )
samples = [ ExtResource( 7 ), ExtResource( 3 ), ExtResource( 5 ), ExtResource( 4 ), ExtResource( 6 ), ExtResource( 8 ), ExtResource( 2 ), ExtResource( 1 ) ]
random_strategy = 2
@ -66,6 +68,6 @@ fov = 90.0
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "Orbit"
anims/Orbit = SubResource( 3 )
anims/Orbit = SubResource( 2 )
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]

View File

@ -1,7 +1,8 @@
tool
extends AudioStreamPlayer
export(Array, AudioStream) var samples
export(Array, AudioStream) var samples = []
export(String, DIR) var select_samples_from_folder setget load_samples_from_folder
export(int, "Pure", "No consecutive repetition", "Use all samples before repeat") var random_strategy = 0
onready var base_volume = volume_db
export(float, 0, 80) var random_volume_range = 0
@ -48,3 +49,20 @@ func set_volume_db(new_volume_db):
func set_pitch_scale(new_pitch):
base_pitch = new_pitch
func load_samples_from_folder(path):
if path != "":
samples.clear()
var dir = Directory.new()
if dir.open(path) == OK:
dir.list_dir_begin(true)
var file_name = dir.get_next()
while file_name != "":
if not dir.current_is_dir():
if file_name.to_lower().ends_with(".wav") or file_name.to_lower().ends_with(".ogg"):
print(dir.get_current_dir() + "/" + file_name)
var resource = ResourceLoader.load(dir.get_current_dir() + "/" + file_name)
print(resource)
samples.append(resource)
file_name = dir.get_next()
select_samples_from_folder = ""

View File

@ -1,7 +1,8 @@
tool
extends AudioStreamPlayer2D
export(Array, AudioStream) var samples
export(Array, AudioStream) var samples = []
export(String, DIR) var select_samples_from_folder setget load_samples_from_folder
export(int, "Pure", "No consecutive repetition", "Use all samples before repeat") var random_strategy = 0
onready var base_volume = volume_db
export(float, 0, 80) var random_volume_range = 0
@ -48,3 +49,20 @@ func set_volume_db(new_volume_db):
func set_pitch_scale(new_pitch):
base_pitch = new_pitch
func load_samples_from_folder(path):
if path != "":
samples.clear()
var dir = Directory.new()
if dir.open(path) == OK:
dir.list_dir_begin(true)
var file_name = dir.get_next()
while file_name != "":
if not dir.current_is_dir():
if file_name.to_lower().ends_with(".wav") or file_name.to_lower().ends_with(".ogg"):
print(dir.get_current_dir() + "/" + file_name)
var resource = ResourceLoader.load(dir.get_current_dir() + "/" + file_name)
print(resource)
samples.append(resource)
file_name = dir.get_next()
select_samples_from_folder = ""

View File

@ -1,7 +1,8 @@
tool
extends AudioStreamPlayer3D
export(Array, AudioStream) var samples
export(Array, AudioStream) var samples = []
export(String, DIR) var select_samples_from_folder setget load_samples_from_folder
export(int, "Pure", "No consecutive repetition", "Use all samples before repeat") var random_strategy = 0
onready var base_volume = unit_db
export(float, 0, 80) var random_volume_range = 0
@ -48,3 +49,20 @@ func set_unit_db(new_unit_db):
func set_pitch_scale(new_pitch):
base_pitch = new_pitch
func load_samples_from_folder(path):
if path != "":
samples.clear()
var dir = Directory.new()
if dir.open(path) == OK:
dir.list_dir_begin(true)
var file_name = dir.get_next()
while file_name != "":
if not dir.current_is_dir():
if file_name.to_lower().ends_with(".wav") or file_name.to_lower().ends_with(".ogg"):
print(dir.get_current_dir() + "/" + file_name)
var resource = ResourceLoader.load(dir.get_current_dir() + "/" + file_name)
print(resource)
samples.append(resource)
file_name = dir.get_next()
select_samples_from_folder = ""

View File

@ -1,4 +1,4 @@
Copyright (c) 2020 Tim Krief.
Walking sound effects by Tim Krief are licensed under a Creative
Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License.