AudioStreamPreview.gd 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. @tool
  2. extends TextureRect
  3. signal generation_started
  4. signal generation_progress(normalized_progress)
  5. signal generation_completed
  6. var voice_preview_generator
  7. var stream : AudioStreamWAV = null
  8. var stream_length := 0.0
  9. @export_file("*.wav") var stream_path: String:
  10. set(new_path):
  11. stream_path = new_path
  12. _update_preview()
  13. func _ready():
  14. voice_preview_generator = preload("res://addons/audio_preview/voice_preview_generator.tscn").instantiate()
  15. add_child(voice_preview_generator)
  16. voice_preview_generator.generation_progress.connect(_on_generation_progress)
  17. voice_preview_generator.texture_ready.connect(_on_texture_ready)
  18. _update_preview()
  19. func _update_preview():
  20. if not voice_preview_generator:
  21. return
  22. if stream_path in ["", "res://", "user://"]:
  23. texture = null
  24. return
  25. stream = load(stream_path)
  26. stream_length = stream.get_length() if stream else 0.0
  27. voice_preview_generator.generate_preview(stream)
  28. emit_signal("generation_started")
  29. func _on_generation_progress(normalized_progress: float):
  30. emit_signal("generation_progress", normalized_progress)
  31. func _on_texture_ready(image_texture):
  32. texture = image_texture
  33. emit_signal("generation_completed")