- assets/audio/music/zombie_industrial_loop.ogg: 57.60 s Ogg Vorbis loop generated locally with YuE2-3B on the Tesla V100 (score written for this track; vocals removed with HTDemucs). The loop is spliced at the track's structural repeat with a 0.6 s crossfade: measured seam dip <= 1.6 dB. - scripts/main.gd: "Music" AudioStreamPlayer at -11 dB, started at boot on desktop and on the start click on Web (browser autoplay policy). It forces stream.loop at runtime because the Web staging step re-imports the OGG with loop=false. - tools/test_music.gd: soundtrack test (loop, length, volume, playback, still playing after player death). - docs/MUSIC.md: source, loop construction, verification, licence. - docs/WEB-DEPLOY.md: release ab6054111f5919a8 notes. Initial commit of the project.
23 lines
753 B
GDScript
23 lines
753 B
GDScript
extends RefCounted
|
|
## Original WAVs; overlapping shots allowed, positional creature/environment audio.
|
|
static func play(parent: Node, path: String, positional: bool = false, volume: float = -10.0) -> void:
|
|
var stream := load("res://assets/audio/" + path) as AudioStream
|
|
if stream == null:
|
|
return
|
|
if positional:
|
|
var speaker := AudioStreamPlayer3D.new()
|
|
speaker.stream = stream
|
|
speaker.volume_db = volume
|
|
speaker.max_distance = 30
|
|
speaker.unit_size = 4
|
|
parent.add_child(speaker)
|
|
speaker.finished.connect(speaker.queue_free)
|
|
speaker.play()
|
|
else:
|
|
var speaker := AudioStreamPlayer.new()
|
|
speaker.stream = stream
|
|
speaker.volume_db = volume
|
|
parent.add_child(speaker)
|
|
speaker.finished.connect(speaker.queue_free)
|
|
speaker.play()
|