Music, reorganization, metadata, and fixes

This commit is contained in:
DaforLynx 2022-07-07 04:14:20 +00:00 committed by Justin Shipsey
parent c0f06dcb8a
commit 00f1e9c407
86 changed files with 515 additions and 319 deletions

View File

@ -55,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fall damage and some (extra) buffs/debuffs now show up in the damage numbers.
- Optimized sprite processing decreasing the startup time of voxygen (and long freezes when trying
to enter the world when this hasn't finished).
- Metadata added to music files. Listen to the soundtrack more easily!
### Removed
- Removed the options for single and cumulated damage.
@ -76,6 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- UI sfx now play from UI instead of from camera (allowing stereo sfx)
- Most sfx now correctly play when camera is underwater
- All sounds now stop upon quitting to main menu
- Combat music now loops and ends properly
## [0.12.0] - 2022-02-19

View File

@ -9,7 +9,7 @@
(TitleMusic, Combat): (4.0, 4.0),
(Exploration, TitleMusic): (2.0, 2.0),
(Exploration, Combat): (0.5, 0.5),
(Combat, Exploration): (2.0, 6.0),
(Combat, Exploration): (2.0, 5.0),
(Combat, TitleMusic): (2.0, 2.0),
},
interrupt_delay: 5.0,

View File

@ -950,6 +950,9 @@
],
threshold: 1.0,
),
// Utterances (NPCs)
Utterance(Angry, BipedLarge): (
files: [
"voxygen.audio.sfx.utterance.ogre_angry1",
@ -997,12 +1000,6 @@
],
threshold: 1.0,
),
Utterance(Angry, Wendigo): (
files: [
"voxygen.audio.sfx.utterance.wendigo_angry1",
],
threshold: 1.0,
),
Utterance(Calm, Cat): (
files: [
"voxygen.audio.sfx.utterance.cat_calm1",
@ -1130,5 +1127,47 @@
],
threshold: 1.0,
),
Utterance(Angry, Wendigo): (
files: [
"voxygen.audio.sfx.utterance.wendigo_angry1",
"voxygen.audio.sfx.utterance.wendigo_angry2",
"voxygen.audio.sfx.utterance.wendigo_angry3",
"voxygen.audio.sfx.utterance.wendigo_angry4",
"voxygen.audio.sfx.utterance.wendigo_angry5",
"voxygen.audio.sfx.utterance.wendigo_angry6",
],
threshold: 1.0,
),
Utterance(Calm, Wendigo): (
files: [
"voxygen.audio.sfx.utterance.wendigo_calm1",
"voxygen.audio.sfx.utterance.wendigo_calm2",
"voxygen.audio.sfx.utterance.wendigo_calm3",
"voxygen.audio.sfx.utterance.wendigo_calm4",
"voxygen.audio.sfx.utterance.wendigo_calm5",
],
threshold: 1.0,
),
Utterance(Angry, Wolf): (
files: [
"voxygen.audio.sfx.utterance.wolf_angry1",
"voxygen.audio.sfx.utterance.wolf_angry2",
"voxygen.audio.sfx.utterance.wolf_angry3",
"voxygen.audio.sfx.utterance.wolf_angry4",
"voxygen.audio.sfx.utterance.wolf_angry5",
"voxygen.audio.sfx.utterance.wolf_angry6",
],
threshold: 1.0,
),
Utterance(Hurt, Wolf): (
files: [
"voxygen.audio.sfx.utterance.wolf_hurt1",
"voxygen.audio.sfx.utterance.wolf_hurt2",
"voxygen.audio.sfx.utterance.wolf_hurt3",
"voxygen.audio.sfx.utterance.wolf_hurt4",
"voxygen.audio.sfx.utterance.wolf_hurt5",
],
threshold: 1.0,
),
}
)

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_angry2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_angry3.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_angry4.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_angry5.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_angry6.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_calm1.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_calm2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_calm3.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_calm4.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wendigo_calm5.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry1.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry3.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry4.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry5.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_angry6.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_hurt1.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_hurt2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_hurt3.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_hurt4.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/wolf_hurt5.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -5,10 +5,60 @@
// Sites: Some(Settlement), Some(Cave), Some(Dungeon), Some(Void) [none]
// Music states: Activity(Explore), Activity(Combat)
// Combat music is looped. Needs three files: start, loop, and end. Start contains leadup to the loop.
// It's recommended to also have appropriate metadata for those who listen via the game files :)
(
tracks:
[
// Overworld exploration tracks
Individual((
title: "Adventurous Soul",
path: "voxygen.audio.soundtrack.overworld.adventurous_soul",
length: 184.0,
timing: Some(Night),
biomes: [
(Mountain, 1),
],
site: Some(Void),
music_state: Activity(Explore),
artist: "Crow",
)),
Individual((
title: "Stargazing",
path: "voxygen.audio.soundtrack.overworld.stargazing",
length: 216.0,
timing: Some(Night),
biomes: [
(Taiga, 1),
(Grassland, 1),
],
site: Some(Void),
music_state: Activity(Explore),
artist: "GeekyGami",
)),
Individual((
title: "The Heavens Weep",
path: "voxygen.audio.soundtrack.overworld.the_heavens_weep",
length: 209.0,
timing: None,
weather: Some(Rain),
biomes: [],
site: None,
music_state: Activity(Explore),
artist: "Oolnokk",
)),
Individual((
title: "A Hero's Sorrow",
path: "voxygen.audio.soundtrack.overworld.a_heroes_sorrow",
length: 251.0,
timing: None,
weather: Some(Rain),
biomes: [],
site: None,
music_state: Activity(Explore),
artist: "Oolnokk",
)),
Individual((
title: "Follow the Signs",
path: "voxygen.audio.soundtrack.town.follow_the_signs",
@ -33,46 +83,6 @@
music_state: Activity(Explore),
artist: "Oolnokk",
)),
Individual((
title: "Cobbled Halls",
path: "voxygen.audio.soundtrack.dungeon.cobbled_halls",
length: 240.0,
timing: None,
biomes:[],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Crow",
)),
Individual((
title: "Warmth of the Hearth",
path: "voxygen.audio.soundtrack.town.warmth_of_the_hearth",
length: 156.0,
timing: Some(Night),
biomes:[],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Crow",
)),
Individual((
title: "The Quiet After the Battle",
path: "voxygen.audio.soundtrack.town.the_quiet_after_the_battle",
length: 240.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Tobias Thy - (Thy SFX)",
)),
Individual((
title: "A Rest Under the Sunset",
path: "voxygen.audio.soundtrack.town.a_rest_under_the_sunset",
length: 83.0,
timing: Some(Day),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "phoenix13032005",
)),
Individual((
title: "Raising Below Like Thunder",
path: "voxygen.audio.soundtrack.overworld.raising_below_like_thunder",
@ -86,69 +96,6 @@
music_state: Activity(Explore),
artist: "Rarnage",
)),
Individual((
title: "A Tale Worth Telling",
path: "voxygen.audio.soundtrack.town.a_tale_worth_telling",
length: 279.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Oolnokk; mixed by cereal7",
)),
Individual((
title: "Bustle and Bloom",
path: "voxygen.audio.soundtrack.town.bustle_and_bloom",
length: 155.0,
timing: Some(Day),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "DaforLynx",
)),
Individual((
title: "Starlit Pathways",
path: "voxygen.audio.soundtrack.town.starlit_pathways",
length: 132.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "DaforLynx",
)),
Individual((
title: "Rest Assured",
path: "voxygen.audio.soundtrack.town.rest_assured",
length: 189.0,
timing: Some(Day),
weather: None,
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "badbbad",
)),
Individual((
title: "I'm Home",
path: "voxygen.audio.soundtrack.town.im_home",
length: 125.0,
timing: Some(Night),
weather: None,
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "badbbad",
)),
Individual((
title: "Dank Dungeon",
path: "voxygen.audio.soundtrack.dungeon.dank_dungeon",
length: 130.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Calming Hills",
path: "voxygen.audio.soundtrack.overworld.calming_hills",
@ -162,63 +109,6 @@
music_state: Activity(Explore),
artist: "Ultimafounding; mixed by Robotnik",
)),
Individual((
title: "Fiesta Del Pueblo",
path: "voxygen.audio.soundtrack.town.fiesta_del_pueblo",
length: 183.0,
timing: Some(Day),
weather: None,
biomes: [
(Desert, 1)
],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Aeronic; mixed by Robotnik",
)),
Individual((
title: "Ruination",
path: "voxygen.audio.soundtrack.dungeon.ruination",
length: 135.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Saturated Hallows",
path: "voxygen.audio.soundtrack.cave.saturated_hallows",
length: 227.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "Flashbang",
)),
Individual((
title: "Vast Onslaught",
path: "voxygen.audio.soundtrack.dungeon.vast_onslaught",
length: 237.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Sacred Temple",
path: "voxygen.audio.soundtrack.dungeon.sacred_temple",
length: 75.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "True Nature",
path: "voxygen.audio.soundtrack.overworld.true_nature",
@ -437,17 +327,6 @@
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Mineral Deposits",
path: "voxygen.audio.soundtrack.cave.mineral_deposits",
length: 148.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Moonbeams",
path: "voxygen.audio.soundtrack.overworld.moonbeams",
@ -514,17 +393,6 @@
music_state: Activity(Explore),
artist: "badbbad",
)),
Individual((
title: "Down The Rabbit Hole",
path: "voxygen.audio.soundtrack.dungeon.down_the_rabbit_hole",
length: 244.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "badbbad",
)),
Individual((
title: "Between The Fairies",
path: "voxygen.audio.soundtrack.overworld.between_the_fairies",
@ -538,27 +406,228 @@
music_state: Activity(Explore),
artist: "badbbad",
)),
// Town music
Individual((
title: "The Heavens Weep",
path: "voxygen.audio.soundtrack.overworld.the_heavens_weep",
length: 209.0,
timing: None,
weather: Some(Rain),
biomes: [],
site: None,
title: "Life of a Background Mob",
path: "voxygen.audio.soundtrack.town.life_of_a_background_mob",
length: 234.0,
timing: Some(Day),
biomes: [
(Forest, 2),
(Grassland, 1),
],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Oolnokk",
artist: "GeekyGami",
)),
Individual((
title: "A Heroes Sorrow",
path: "voxygen.audio.soundtrack.overworld.a_heroes_sorrow",
length: 251.0,
timing: None,
weather: Some(Rain),
title: "Warmth of the Hearth",
path: "voxygen.audio.soundtrack.town.warmth_of_the_hearth",
length: 156.0,
timing: Some(Night),
biomes:[],
site: None,
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Oolnokk",
artist: "Crow",
)),
Individual((
title: "The Quiet After the Battle",
path: "voxygen.audio.soundtrack.town.the_quiet_after_the_battle",
length: 240.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Tobias Thy - (Thy SFX)",
)),
Individual((
title: "A Rest Under the Sunset",
path: "voxygen.audio.soundtrack.town.a_rest_under_the_sunset",
length: 83.0,
timing: Some(Day),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "phoenix13032005",
)),
Individual((
title: "A Tale Worth Telling",
path: "voxygen.audio.soundtrack.town.a_tale_worth_telling",
length: 279.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Oolnokk; mixed by cereal7",
)),
Individual((
title: "Bustle and Bloom",
path: "voxygen.audio.soundtrack.town.bustle_and_bloom",
length: 155.0,
timing: Some(Day),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "DaforLynx",
)),
Individual((
title: "Starlit Pathways",
path: "voxygen.audio.soundtrack.town.starlit_pathways",
length: 132.0,
timing: Some(Night),
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "DaforLynx",
)),
Individual((
title: "Fiesta Del Pueblo",
path: "voxygen.audio.soundtrack.town.fiesta_del_pueblo",
length: 183.0,
timing: Some(Day),
weather: None,
biomes: [
(Desert, 1)
],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "Aeronic; mixed by Robotnik",
)),
Individual((
title: "Rest Assured",
path: "voxygen.audio.soundtrack.town.rest_assured",
length: 189.0,
timing: Some(Day),
weather: None,
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "badbbad",
)),
Individual((
title: "I'm Home",
path: "voxygen.audio.soundtrack.town.im_home",
length: 125.0,
timing: Some(Night),
weather: None,
biomes: [],
site: Some(Settlement),
music_state: Activity(Explore),
artist: "badbbad",
)),
// Cave music
Individual((
title: "Cavernous Hollow",
path: "voxygen.audio.soundtrack.cave.cavernous_hollow",
length: 256.0,
timing: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "GeekyGami",
)),
Individual((
title: "Saturated Hallows",
path: "voxygen.audio.soundtrack.cave.saturated_hallows",
length: 227.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "Flashbang",
)),
Individual((
title: "Mineral Deposits",
path: "voxygen.audio.soundtrack.cave.mineral_deposits",
length: 148.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Down The Rabbit Hole",
path: "voxygen.audio.soundtrack.cave.down_the_rabbit_hole",
length: 244.0,
timing: None,
weather: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "badbbad",
)),
// Dungeon music
Individual((
title: "Mysty Temple",
path: "voxygen.audio.soundtrack.dungeon.mysty_temple",
length: 183.0,
timing: None,
biomes:[],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Tiny",
)),
Individual((
title: "Cobbled Halls",
path: "voxygen.audio.soundtrack.dungeon.cobbled_halls",
length: 240.0,
timing: None,
biomes:[],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Crow",
)),
Individual((
title: "Dank Dungeon",
path: "voxygen.audio.soundtrack.dungeon.dank_dungeon",
length: 130.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Ruination",
path: "voxygen.audio.soundtrack.dungeon.ruination",
length: 135.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Vast Onslaught",
path: "voxygen.audio.soundtrack.dungeon.vast_onslaught",
length: 237.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
Individual((
title: "Sacred Temple",
path: "voxygen.audio.soundtrack.dungeon.sacred_temple",
length: 75.0,
timing: None,
weather: None,
biomes: [],
site: Some(Dungeon),
music_state: Activity(Explore),
artist: "Aeronic",
)),
// Combat Music

BIN
assets/voxygen/audio/soundtrack/cave/cavernous_hollow.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/voxygen/audio/soundtrack/dungeon/mysty_temple.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/voxygen/audio/soundtrack/overworld/stargazing.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -290,6 +290,7 @@ impl MusicMgr {
// TODO: Instead of a constant tick, make this a timer that starts only when
// combat might end, providing a proper "buffer".
// interrupt_delay dictates the time between attempted interrupts
let interrupt = matches!(music_state, MusicState::Transition(_, _))
&& self.last_interrupt.elapsed().as_secs_f32() > mtm.interrupt_delay;
@ -331,6 +332,11 @@ impl MusicMgr {
rng.gen_range(100.0..130.0)
} else if matches!(music_state, MusicState::Activity(MusicActivity::Explore)) {
rng.gen_range(90.0..180.0)
} else if matches!(
music_state,
MusicState::Activity(MusicActivity::Combat(_)) | MusicState::Transition(_, _)
) {
0.0
} else {
rng.gen_range(30.0..60.0)
};
@ -373,13 +379,14 @@ impl MusicMgr {
}
// Second, prevent playing the last track (when not in combat, because then it
// needs to loop)
if music_state == &MusicState::Activity(MusicActivity::Combat(CombatIntensity::High))
|| music_state
== &MusicState::Transition(
if matches!(
music_state,
&MusicState::Activity(MusicActivity::Combat(CombatIntensity::High))
| &MusicState::Transition(
MusicActivity::Combat(CombatIntensity::High),
MusicActivity::Explore,
MusicActivity::Explore
)
{
) {
let filtered_tracks: Vec<_> = maybe_tracks
.iter()
.filter(|track| track.title.eq(&self.last_track))

View File

@ -220,6 +220,7 @@ pub enum VoiceKind {
Asp,
Fungome,
Truffler,
Wolf,
}
fn body_to_voice(body: &Body) -> Option<VoiceKind> {
@ -250,8 +251,8 @@ fn body_to_voice(body: &Body) -> Option<VoiceKind> {
| quadruped_medium::Species::Lion
| quadruped_medium::Species::Frostfang
| quadruped_medium::Species::Snowleopard => VoiceKind::Lion,
quadruped_medium::Species::Wolf
| quadruped_medium::Species::Roshwalr
quadruped_medium::Species::Wolf => VoiceKind::Wolf,
quadruped_medium::Species::Roshwalr
| quadruped_medium::Species::Tarasque
| quadruped_medium::Species::Darkhound
| quadruped_medium::Species::Bonerattler