#S3maphore - Music Management from 2090
1 messages · Page 2 of 1
Unc is older than Divayth
NiN even released a vinyl of quake 1
which is why shipping the soundtrack in a mod would probably be a quick DMCA
Oh yeah of course I would never lmao
But I can roll whatever random ass playlist if you populate the VFS
Yknow
Yea actually this was like the one song I admit to really liking from Q1
quake champions (Chris Vrenna's stuff only) lifts some stuff from Quake 1, so it feels like a more action based q1 ost in a way
Yeah idk bro, it doesn't show up as a playlist, when Telvanni and Empire do, and I definitely have it installed since it showed up in the lua console
It also doesn't work in Vivec's, where there isn't a house or faction playlist either
For some reason it knows where to play the files, it just isn't
Oh, okay, well if it doesn’t show up as a playlist you must not have the 11 folder enabled.
im so dumb
Sorry 😂 I've been super distracted reworking my site so I can improve the documentation, but I promise I'll make the install instructions more explicit, particularly on the nexus page
It's set up such that none of the playlists except the vanilla ones are included by default, that way you don't necessarily have to use my versions of the playlists if you don't like how I implemented them.
Right now in my game I have it set up that tracks can finish, but then I have all the other overrides turned on. It works really well!
I love that when I enter a city, it starts the city playlist. But if I leave, it still lets the current track continue. Especially nice if you're on the edge of a city cell, switching multiple times between the region and city cell, and the music continues smoothly.
I'm glad you like it! That was reaaaaaaallllyyyyy hard to dial in. But I think it worked out well, it just didn't feel right to never let stuff be overridden
Yeah I like how it works for taverns as well, the music starts when I enter and ends when I leave.
Can I ask, are you playing on a MOMW list or not? Reason being, we have this one mod that overrides most of the tavern tracks, so I actually haven't really heard any of them
The one place I did hear one was somewhere I felt pretty strongly shouldn't play it lol (pawnbroker)
No I'm on my own custom setup
Hmm I'm also getting the music in the balmora pawnbroker store it seems
Yeah personally I would take pawnbroker out of this list in the Inns and Taverns lua.
my thoughts exactly lol
I noticed that when I was copying the data over and thought ??? but I was focused on just copying it accurately and less making it make sense
The only part where this setup still felt a little strange, is with entering and leaving caves for example. If I enter a cave in the bitter coast region, it ends the bitter coast playlist and starts the cave playlist. Which is great. But when I leave the cave, it continues playing the current cave track, while I would like it to switch to the bitter coast playlist again.
Hm.
I think this is probably where dungeon detection may come into play.
What you're talking about is ideally covered by that one override for dungeons
But I don't really have actual "dungeon" detection implemented, it just checks if there are hostiles in there and once everyone's dead, it falls back through to whatever playlist is appropriate for that area and then it can't even tell you're in a "dungeon" per se
There is not exactly a great way to hack around this so I will have to add a dependency to this: https://modding-openmw.gitlab.io/s3ctors-s3cret-st4sh/tagger/
I don't really wanna be that guy that has a bunch of mods that all depend on his other mods but the whole Skyrim tagging system is pretty neat, it has plenty of use cases generally but also for this mod
If I had tags for daedric artifacts for example, maybe I could look at playing a cool like musical sting whenever you pick one up
Or just immediately check if you enter/exit a dungeon
The thing is that the bard songs that they sing are really freaking good. I think they’re all from ESO. Like Planemeld is specifically so amazing so it feels weird having the taverns and inns turned on.
Definitely a matter of personal taste, as all music is
and playing it right off the actor instead of ambient channels adds nice effect
not a lot but it's there
The only thing I don’t like is that it use the dialogue volume setting instead of music, so some random nord will always blow out your ear with “THAT’S HOW I LIKE IT. BOLD AND DIRECT”.
Well it could run on the effect channel I guess but that tends to be even worse lol
Idk if you've played starwind but they do a lot of VA on the effects channel and it is arguably one of the mod's biggest problems overall
I noticed in my setup there's quite some variation in loudness from different music sources. Do you personally use something like MP3Gain to equalize the volume of your music tracks, or do you just accept things as they are?
Tbh this is sort of a new problem set to me so I'm still figuring out how to deal with it
@golden swift has had some pretty good ideas but his technique is a bit advanced for my blood. I'm vaguely hopeful when cases like this arise we can handle it in umo or something
I'm going to give MP3Gain a try, lowering the volume of everything above 80db to 80db. In theory that should make the tracks a bit more consistent than the current 80-95db range. Then I'll see how that feels, especially for the combat tracks vs explore tracks
Yeah some banks are louder than others. Doesn't help that the vanilla music is really loud as well.
MP3Gain is fine, I've used that many times on Beth games specifically.
We've talked about possibly doing sox umo actions to normalize everything. It'd take a lot of work to find what the baseline should be though. Once the banks for something like Total Overhaul are settled upon, it'd make it easier to start work on that.
Honestly, settling on a lower number, like you did, and just chopping the head off the louder tracks seems like the easiest/safest way to do it.
It's hard to imagine a world where turning the music slider up 100% would ever be necessary, so the upper bound is probably not super imporotant.
I just wrote a janky little script to run all the MUSE tracks through FFMPEG's loudness normalize filter and it seems to have worked okay
I was hoping Discord would know to embed that but oh well
#!/bin/fish
for i in MUSE\ Expansions/**/**.mp3
set -f FILEPATH MUSE\ Expansions\ Normalized/(string split --allow-empty -f2-100 \/ (path dirname $i) | string join \/)
mkdir -p $FILEPATH && ffmpeg -y -i $i -af loudnorm=I=-16:LRA=11:TP=-1.5 $FILEPATH/(path basename $i)
end
The specific numbers are "shit I got from the internet forever ago and works well enough"
I, i
Indicates the integrated loudness (-70 to -5.0 with default -24.0)
LRA, lra
Indicates the loudness range (1.0 to 20.0 with default 7.0)
TP, tp
Indicates the max true peak (-9.0 to 0.0 with default -2.0)
Perhaps from here? https://k.ylo.ph/2016/04/04/loudnorm.html
@sly helm, could you pin that link?
I would also pin a posix compliant version of ^ .

It's not posix compliant but now it does two-pass normalization which is kind of the same thing if you don't think about it (requires you to have jq on your system)
#!/bin/fish
for i in MUSE\ Expansions/**/**.mp3
set -f FILEPATH MUSE\ Expansions\ Normalized/(string split --allow-empty -f2-100 \/ (path dirname $i) | string join \/)
mkdir -p $FILEPATH
set -f OUTPUT_JSON (ffmpeg -y -i $i -af loudnorm=I=-16:LRA=11:TP=-1.5:print_format=json -f null - 2>| cat)
set -f OUTPUT_JSON (string match -r '{.*}' "$OUTPUT_JSON")
set -f MEASURED_I (echo "$OUTPUT_JSON" | jq -r '.input_i')
set -f MEASURED_LRA (echo "$OUTPUT_JSON" | jq -r '.input_lra')
set -f MEASURED_TP (echo "$OUTPUT_JSON" | jq -r '.input_tp')
set -f MEASURED_THRESH (echo "$OUTPUT_JSON" | jq -r '.input_thresh')
set -f MEASURED_OFFSET (echo "$OUTPUT_JSON" | jq -r '.target_offset')
ffmpeg -y -i $i -af loudnorm=I=-16:LRA=11:TP=-1.5:measured_I=$MEASURED_I:measured_LRA=$MEASURED_LRA:measured_TP=$MEASURED_TP:measured_thresh=$MEASURED_THRESH:offset=$MEASURED_OFFSET:linear=true $FILEPATH/(path basename $i)
end
Telvanni DM addon to modlists when
The MUSE expansion may or may not hit lists, we haven’t really decided yet
Tbf I get the impression we’ll be adding neither Telvanni nor Empire
I understood empire before the changes on may 31st, but why leave content for the house that already has the most added content?
I also don't understand leaving Empire, out of Dwemer, Tomb, Daedric, and Sixth House, it's definetly the most thematic and musical theory sound
I already told you, nobody’s listened to telvanni and decided yet.
Which is also the same situation for empire.
But a couple mentioned listening to it and that it seemed weird, which it definitely is, it is mostly just my thoughts based on vibe check.
Nah bro, you said you liked it:
YOOOOOOOO WHY ARE YOU GASLIGHTING ME
Aw hell naw, making me feel like Glarthir over here
Okay, perhaps I should have phrased it better
I've listened to it for about five minutes total and really enjoyed what I heard of it, but overall we haven't collectively gotten immersed in it enough to decide one way or the other and also actually punch it up into the database. 😛
Really, part of it, is that atm we're a lot more interested in trying to implement some Skyrim playlists.
The thing with Skyrim playlists versus anything we can get with MUSE (or other morrowind packs of any stripe) is that Skyrim already has the capability for like, having certain tracks run during the day. In specific types of dungeons
When you kill a boss, or go to a player home, or some special event happens
So it would be a lot easier to do more advanced things with a soundtrack that is just, already built better, so to speak.
Settyness mentioned he wants to do a Dragonborn module, for example. Of course, it would be beyond insane to consider shipping the soundtrack itself, but if you happen to have Skyrim installed, and you happen to load it into your openmw install, well...
Doesn't have anything to do with me, then does it
I looked at that Daggerfall soundtrack we talked about before and weirdly even daggerfall seems to have a more "advanced" music system than mw does.
No doubt I would love to hear watch the skies, dragonborn (Obviously), and even On the Wings of Kynareth and Reign of the Septims, but you've already coded the Telvanni cells into the game.
And this soundtrack, as someone who did the Entire ROHT including the TR stuff, this soundtrack is so fitting, so perfectly alien and mushroom. Obviously, this was never in doubt, the same guy who made Red, Haal, Ash, Dwemer, Daedric, and Tomb made it. It's just nonsensical not to put the house that has the most extra content and thus benefits from the inherent additive nature of modpacks to not have its own special soundtrack. This really is a no brainer. The Empire soundtrack, although I really like it, is more up to taste, but you'll never know if people like the soundtrack if you don't bundle it.
Personally I'm all for having both on the lists and indeed replacing everything altogether, in some way or another.
I would argue though, that I actually have a pretty good idea that people want the telvanni soundtracks on the lists, sorta! It was one of the first ones anybody mentioned didn't work in here, and also if you look at my nexus comments before the first couple updates went out, everyone said the telvanni playlist wasn't working
That's strange, it's working for me lmao
Wait so who's against it
Well the very first version I released didn't have a telvanni playlist because DM never ported it
Well
Okay we already talked about this
Bro we've went over this they ported it in January lmaoooo
LMAOOOOOOOOOOOOOOOOOOOOOOO
What I did when I made this was I sat and went through every DM playlist we had in total overhaul.
Yeah y'all need to get on the OpenMW subreddit
Oh okay you're saying when S3maphore first came out gotcha
Yeah!
But I had every other faction, SO I got a lot of indirect feedback that people wanted it, because for the first day or two everybody who installed it was like, "Wait, why doesn't the telvanni playlist also work?"
Untangling how MUSE vs DM playlists actually worked in comparison to one another was really hard and the first version was pretty inaccurate in that regard
Wanting to replace the vanilla soundtrack entirely is a little more controversial and I'd like to have some means for playlists to, like, interop with each other better
I reaaaaaalllyyyyy wanna add that Morrow Winds music pack
but the problem with regional playlists is that once you start filling those in, it essentially completely overrides the vanilla soundtrack
And I've gotten a comment on the nexus about that one, also, so users are noticing it as well
I'm not going to lie, this was Jeremy Soule's first try at something this big, and he put all his energy into the Prisoner's Leitmotif
Everything else is kinda dogwater
He got a lot better in Oblivion and Skyrim. I hope he's still composing for TES 6. Poor guy went through a lot
Hey man Nerevar Rising is an incredible track. It's not about that. It's just that I wasn't quite even old enough to read when I started playing this game. I've heard this shit.
And I've never played with MUSE or DYnamic Music much either, mostly being into TES3MP or Starwind, either not having any capability to do that or just having no soundbanks/interest to make them
Yeah that's what I was speaking about in the Prisoner's Leitmotif
You know how every main theme is an interpolation of Nerevar Rising
Plus the way the explore playlists work fundamentally means nothing else interesting is happening that a playlist might respond to, right? So from that perspective I feel like not going crazy on the playlists means the mod goes underutilized
but like it's so fire you can still do that and it's fine.
A lot of musicians will do that in their art and it's actually something I really appreciate
No no, I like that
Like here are my current thoughts and ideas about this thing I did a very long time ago
I was saying that the rest of the exploration and battle music aren't as good as Nerevar Rising
Like Harvest Moon and On Kynareth's Wings are immedietly way better in Oblivion
That's why so many people replace Morrowind's soundtrack
Bro forgor
Yeah that is kinda my perspective on it. Plus the morrow winds and captaincreepy stuff are just fire - although having the taverns playlists enabled is kinda pointless atm
But it would be nice if we had some sort of way, maybe, to allow playlists to fall through on each other.
This could get weird and annoying later on down the line if like, maybe three or four people have some solstheim-related playlists
I think it's specifically just regional playlists overriding the vanilla ones though
What if each song had a weight, and depending on the specific situation you're in, based on what recent entries are in your journal, what loot you have, what your class/race/playstyle is, it changes what songs from what playlists you hear
I personally just tossed copies of the original Morrowind explore tracks into the regional folders
Hm.
That would not necessarily be hard to implement, I suppose, there is a dedicated function in the original builtin to get the next track out of the playlist.
I'm slightly hesitant to extend the playlist schema.
If track selection becomes more complex (introducing a similar callback functionality to how playlist selection works, probabl) then it could be costly.
Like in performance terms
Does Redguard playlist always take precedence over Project Cyrodiil playlist?
The playlists work great for when there's already something to weigh the songs toward a certain theme, like all the Hlaalu songs can play in Hlaalu territory, and which ones they are don't matter. However, when in free roam, suddenly it's a lot more important for the songs to match the context. The weighting would only need to be done for explore. You could have a vector with a dimension for every state that you think the songs could apply too, how magical an enemy you're facing, what part of the map you're in, what faction's quest you're doing, whether you're incumbered or not, what kind of armor you're wearing, what type of spell you're using, whether you're walking, running, levitating, or jumping with fortify acro. Then, based on whether a song is jumpy, magical, heavy, etc, you give the songs their own vectors with the magnitude of each of the dimensions how much they feel in that category. Then you project the song vector on the state vector and which ever song has the least angle and magnitude difference, you play that song. Just an idea.
yes
That's actually kind of what chop and I are disucssing right now
The concern isn't really so much how to do it as doing that making song resolution cost twice as much.
Stuff like what you're talking about, state is all handled by playlist resolution already.
"Explore" is not a category of things anymore, it's one playlist, it happens at the very end, when nothing else interesting is happening. If you want, for example, to have levitation tracks, and have them in a specific region, you make rules to do that.
The problem specifically is that when I have two playlists that could match in the same circumstance, the current priority implementation means one always overrides the other. It doesn't matter if you shuffle the load order around, rename files, change priorities, whatever, if you install Region tracks they'll always beat the explore playlist.
Especially when you take folder-based playlists into account you have no real hope of making song weights work anyway
I can't apply a weight to songs you may not have, or have added
I think realistically just having an RNG in the playlist state that is updated whenever tracks actually change and letting playlists define their own entire "weight" would solve a lot of this.
Ong, we need to be able to dynamically shift the weight of songs though, so the player doesn't get overexposed. That's where assigning a vector to the songs and situation would be useful, because you could change what music is played radically
But it would require people to tag their music so
They would need to rate their music on each dimension and people ain't gon do that sadge
Yeah, and it would completely destroy the idea of folder-based playlists. It's pretty much the entire reason isValidCallback exists.
You define whatever random arbitrary conditions in a deck that's already naturally weighted in two dimensions.
There really wouldn't be any point to weighting songs, all the granularity you mentioned there can come out of playback rules
The big benefit there would probably just be the capability to define what your chance to play is.
You could also probably make a playlist shuffle itself around in whatever manner it is you're describing in an isValidCallback. They don't have to be randomly selected, so... you could have something sit atop that list and move them around
Maybe not, I think it duplicates the original track order into some interior data structure.
Well my point is that those rules will never change, so it eventually becomes fatiguing hearing the same song for the same scenario again and again and again. This is why everyone turns battle music off, because hearing the same music everytime a cliff racer notices you is torturous.
With a stored vector of the player's state, which would at least be dynamic, I was thinking it might head off audio fatigue, that was my thinking at least
Yeah but this is a thing already.
Like there are time of day rules, weather rules, you can check if the player sneaking, and some rng would help spice it up a lot too as would a couple of the combat-related rules you mentioned
The MUSE playlists don’t behave that way because they’re meant to be accurate reproductions of the originals.
No but I’m gonna add some rng to the regional playlists and maybe take a closer look at the muse ones to see if it permutates them at all.
In the meantime all you can really do is either disable the regional playlists or shuffle your tracks around.
oh yeah dude totally.
But can it detect if the player is gooning in real life? That is what the future of modding morrowind needs to do, to cater to the true gooners, and play mango phonk as they do.
0.50 milestone
the only way to overthrow mwse hegemony is to get loverslab fully onboard
okay, look
Hypothetically speaking
If someone ported that one thing, uhhhh
God I'm glad I don't remember the name.
There is a classic MWSE mod where you can bang, and it has a full suite of animations
Now, the way I would approach this, is by using the builtin S3maphoreEnv which is now passed into every playlist in the latest version
With this, a playlist file could do a call to I.AnimationController.registerTextKeyHandler and in fact, play special boning music.
Provided to YouTube by Rightsscale
Snake Eater · Cynthia Harrell · Norihiko Hibino · Norihiko Hibino
METAL GEAR 20th ANNIVERSARY METAL GEAR MUSIC COLLECTION
℗ Konami Digital Entertainment Co.,Ltd.
Released on: 2007-07-18
Auto-generated by YouTube.
fargoth removes his shirt.
DUN DUN DUN DDUUUUUNNNNN
cmon.
I have given you all the technology
No, there's only one answer: https://www.youtube.com/watch?v=eN6jkWxxm2Y
stroke game...🐬
hot → https://hudmo.ffm.to/cbat
https://www.instagram.com/hudmo/
https://twitter.com/HudMo
https://www.hudsonmohawke.com/
#hudsonmohawke #cbat #hudmo #reddit #redditstories #redditguy
The Box - Roddy Rich starts to play
Playing event-based tracks is another thing I'd like to add some internal api surface for, I'm just not exactly sure what the best way to implement it is.
Somebody was also asking about how to add silence tracks and I thought that would be a nice feature for the next patch.
adjustable variable-length silence between tracks would be very nice
currently i've just been putting a bunch of silent mp3s in my music folders but that's only so effective when you have a bunch of tracks
With track silencing, that one bothers me in terms of like, how will the user interact with it?
I'm idly thinking maybe what you could do is have a default base duration, playlists can define an override, and then users set an upper and lower multiplier in their settings, and it randomly picks which when a track ends
I don't want it to be complicated but you want some granulairty
Maybe it shouldn't actually happen at the playlist level though.
maybe instead you just have the min/max/silence-at-all settings
i would say min/max/toggle and like, chance for silence
i think having playlist-level settings could be useful but
more for like the playlist curator than the user
I'm skeptical playlist creatores would care either tbh
Another interesting case is that it will retrigger the Vivec playlist if you move around the different Vivec canton exterior cells, probably because they have their own unique cell names.
hm, that's gotta be a bug 🤔
Songs should only re-trigger like that when you're actually changing playlists, specifically going from a lower to higher priority playlist.... Maybe there are chunks of the town where my name resolution fails
I'll be perfectly honest I have been pretty sure this entire time it wasn't 100% correct but hadn't found any edge cases where I was proven wrong and thus let it slide 😄
Feature request: (option) when changing from exterior with non-default playlist to interior with default playlist to not change the playlist. It would allow to "inherit" playlists from exteriors w/o setting that up explicitly.
That's a thing.
Sorta.
wait, no, yeah, that's a thing.
There are two separate settings controlling that.
Playlist override?
Yeah, one for hostile interiors and one for friendly interiors
There's not an explicit check that something is a dungeon atm so it literally just looks to see if the cell has hostile actors and >= 1 is considered a dungeon
meaning after you've cleared a dungeon out the other setting will apply. By default, dungeons are set to override because that's how skyrim does it AFAIK
Thanks.
I get this error when starting in Arrille's trade house with OpenMW test mode:
[11:43:24.771 E] Can't start L@0x1[scripts/s3/music/core.lua]; Lua error: [string "scripts/s3/music/core.lua"]:180: attempt to index field 'cell' (a nil value)
I’ve seen this a couple times in frame logs, but it shouldn’t meaningfully affect anything I don’t think.
There’s a frame during load where you exist but you’re not in a cell yet.
is that code in an "onActive" or "onPlayerAdded" engine handler?
onFrame
Pretty much that entire script is 700 lines of onFrame except the anonymous onTeleported/onInputPressed at the end
maybe you could add a simple test "self.cell and..."
This is the ineficient way to do things, the (resource) efficient way is just to pause the checking script for a trivial amount of time every time you load a cell
ahkshewally, the script does stop execution during cell transitions.
But starting the game does not count as a cell transition. 😄
I'm gonna patch it, but it's minor and shouldn't affect anything.
Some playback rules require an up-to-date list of statics, so playlist changes can only occur, at minimum, on the frame after a cell transition is finished. For purposes of the script, this just means the cell changed, and not necessarily teleporting.
This man would've found the Quake 3 Inverse Square approximation
I bow down to you sir
You would not be bowing if you could see just how incredibly stupid the expression on my face is rn.
Post it you won't
I won't.
Damn
I got to see it at least can confirm 😄
more'n you got, sweetheart.
Crassius Curio when you ask how much you need to pay to join House Hlaalu
You should turn into Crassius mode whenever someone requests a mod
Hey could you add a better journal menu to OpenMW?
I had a phase where I did that for quite a while
I don't think you two realize who you're talking to in this regard
it started with fabio but like, don't ask me why
because I couldn't tell you
I got, uh, bout 111 of these
Looks like some I didn't do yet tho
I dropped this one on someone one day when they were raging at me and I no longer felt like dealing with it
They did not, in fact, chill
LMAOOOOOO BRO WHAT
I think they were mad the api wasn't moving fast enough or something
tbh I don't remember, I posted that and I went to bed.
It was not something I should have done, but, it was pretty funny nevertheless
Nobody's perfect, eh 😅
Will there be a setting to disable combat music for enemies below a certain level, and enemy blacklist for those filty sky skeevers?
i would've
though i rarely argue with anyone online outside of Twitter, and that's for entertainment
I’ve done the same, but we must remember not to delude ourselves or lest we forget:
I don't necessarily like the idea of doing that at the setting level
in MUSE combat playlists are implemented with level-based rules
so like they just, will say, "don't do this playlist, ever, if there are no enemies within this level or health range"
It's literally just for cliff racers and trust me it's an amazing setting for that alone
i mean that level of specificity should definitely happen at the playlist level
This is why the mod is designed the way it is, in the end
It specifically does not make many decisions of its own, you feed it all the logic yourself through the playlists
If you genuinely want to not have combat music specifically for racers, it's this simple:
local Racers = {
["cliff racer"] = true
}
---@type S3maphorePlaylist[]
return {
{
isValidCallback = function()
return Playback.state.isInCombat
and not Playback.rules.combatTargetExact(Racers)
end
}
}
Oh my god
A vampire playlist for fighting vamps and vampire tombs
Imagine beating the shit out of raxle Burne with Vampire Killer playing in the background or hearing lost painting in the Quarra nest
this is so good oh my god
also it turns out the kenshi music files actually work amazingly well with s3maphore even if it can't do the same kind of layering kenshi's own system doe
the sparseness of the specifically curated tracks can blend into each other beautifully to make little procedural tunes
Vampire playlist should be pretty actually. I was vaguely considering making a special rule for it
after spending a lot of time working with dynamic sounds playlists the past few days i'm really coming into a new appreciation for how s3maphore handles it
if i could just pull sound files at random from a directory instead of needing to define them all individually i feel like it would probably add at least six years to my lifespan
Has anyone got this mod running on SteamDeck, I cant get it to play any sounds or music at all but unsure what I am doing wrong. TY
Hey, there's nothing platform specific about this mod. How exactly did you install it?
If you have the 00 Core folder installed properly, it will at least play the battle and explore playlists from Vanilla. I would guess you are probably not actually using openmw 0.49
If you run the openmw launcher and check in the bottom left it will tell you (also the bottom-right of the in-game main menu)
Uh, wait, no sound at all?
None
Im new to modding on linux but not modding in general.
Are you using the AppImage of openmw?
If so, this is an unresolved bug with the appimages that started happening after a recent SteamOS update. The most sane solution is to just use the official openmw builds: https://github.com/OpenMW/openmw/releases/download/openmw-49-rc7/openmw-0.49.0-Linux-64BitRC7.tar.gz
Which also requires doing this, to level the framerates out.
Cool I will try that TY
I have tonnes of other mods working just this one is giving me issue
No, it isn't, running the appimage is giving you this issue.
You can remove it, and the sound will still not work. There's nothing in this that will touch any kind of non-music sounds in any way.
Once you get switched over, all the sound should work.
Right click game -> Properties -> Launch Options
(sorry, i don't use steam for openmw, but it'll work the same.
Ok TY, I have all that sorted though I'm not sure Ive installed the mod correctly where am I supposed to extract everything to? TYVM for the help
Oh, well, you can install it anywhere.
If you look on the st4sh page I have a little widget that even generates the folder paths for you:
https://modding-openmw.gitlab.io/s3ctors-s3cret-st4sh/s3maphore/
ffffffuuuuuuuuuu they are not alphabetized
Anyway you can also follow this video, it shows how toa dd stuff in the launcher: https://www.youtube.com/watch?v=xzq_ksVuRgc
You can use the widget on my site to do it manually or via the launcher, both should work the same way as long as you know where it is.
Each folder other than 00 Core and 06 Songbook of the North corresponds to a playlist from some other mod(s), either MUSE Expansions or Dynamic Music soundbanks for the most part
Songbook is the only module that includes the tracks because I ship them at a higher quality than the original mod did. (They're CC0)
00 Core will have the main mod and the vanilla Explore/Battle playlists
Great thanks! I have done this part so do I just extract the actual music files for the various play lists into the folder locations from the picture above?
Nah you don't have to put the music tracks inside of my stuff at all
Just install them normally, as totally separate mods
here's how mine is set up for example, all the actual playlist files are separated from the tracks
Cool thank you. I've had to install a lot of mods manually on the steamdeck as there isn't any easy to use managers. Appreciate the help!
Ty
You can still use the AppImage with the solutions here: https://gitlab.com/modding-openmw/openmw-appimage/-/issues/7#note_2534075517
Setting ~/.alsoftrc is the easiest fix.
At least until we can solve the AppImage stuff.
moving here from bardcraft. didn't want to spam the guy's thread. I get into the game, background music starts playing. I then perform a bardcraft song, s3maphore goes to silence. I stop playing after ~30 secs, but the music remains silent. I move through a few cells, get into combat, no music. At the end I hit F8 and music plays again.
[08:49:45.097 I] Playing "music/ms/region/ascadian isles region/bgexplore3.mp3" [08:50:10.514 I] Global[scripts/bardcraft/conductor.lua]: Starting performance (Five-Legged Festus) [08:50:10.610 I] L@0x1[scripts/s3/music/core.lua]: [ S3MAPHORE ]: Track changed! Current playlist is: BardcraftSilence Track: sound/Bardcraft/silence.opus [08:50:10.610 I] L@0x1[scripts/s3/music/core.lua]: [ S3MAPHORE ]: No translations found for track sound/Bardcraft/silence.opus [08:50:11.552 I] Playing "sound/bardcraft/silence.opus" [08:50:42.174 I] Unloading cell Ascadian Isles Region (3, -7) [08:50:42.176 I] Unloading cell Ascadian Isles Region (5, -5) [08:50:42.176 I] Unloading cell Ascadian Isles Region (5, -7) [08:50:42.177 I] Unloading cell Ascadian Isles Region (4, -7) [08:50:42.178 I] Unloading cell Ascadian Isles Region (5, -6) [08:50:42.180 I] Loading cell Ascadian Isles Region (2, -5) [08:50:42.188 I] Loading cell Ascadian Isles Region (3, -4) [08:50:42.191 I] Loading cell Ascadian Isles Region (2, -4) [08:50:42.193 I] Loading cell Arvel Plantation (2, -6) [08:50:42.204 I] Loading cell Molag Mar Region (4, -4) [08:50:53.762 I] L0x31000041[scripts/maxyari/mercycao/improvedai.lua]: [Mercy][aa_comp_amalie]: WARNING: No voice records of type GetEm were found to fit breton female character. [08:50:56.603 I] L0x31000041[scripts/maxyari/mercycao/improvedai.lua]: [Mercy][aa_comp_amalie]: WARNING: No voice records of type CombatDowntime were found to fit breton female character. [08:51:43.146 I] L@0x1[scripts/s3/music/core.lua]: [ S3MAPHORE ]: Track changed! Current playlist is
It's no biggie, hitting keys is what I do on a computer, but it's odd
Oh, shit okay, so you do have to manually skip.
Weird question. Are you on vvardenfell?
I don’t think it should matter but I’m in anvil rn, the playlist rules there are wildly different.
ya ascadian isles
Does the log actually end there? It should have a playlist name.
didn't think it'd be relevant
L@0x1[scripts/s3/music/core.lua]: [ S3MAPHORE ]: Track changed! Current playlist is: ms/region/ascadian isles region Track: music/ms/region/ascadian isles region/06. the future of house atreides (unreleased).mp3 [08:51:44.147 I] Playing "music/ms/region/ascadian isles region/06. the future of house atreides (unreleased).mp3"
Ohh that’s from when you skipped?
at the very end yes
Ah, I see
practices worked fine but I'd never actually performed before, I see this also
I believe...
I think this probably worked in the version I had published at the time when I hit up ralts but playlist transitions are a little more sophisticated now... for the most part, they won't just override each other once a playlist is not valid anymore. Most cases will wait for a track to try to finish
Which I guess must not be happening because I've been sitting here for a while now. I'm scared to check the duration of the silence track, ngl.
tl;dr @rugged hedge you can probably fix this by just switching to using S3maphoreToggleMusic event. self:sendEvent("S3maphoreToggleMusic", Performer.playing) Or something to that effect. I wouldn't mind to patch it myself, but I am very tired.
More generally speaking between explicitly toggling playlists and playback being enabled in the first place, there should be enough frameworking here to eliminate the concept of silence tracks altogether
💡 !
an mwscript global float whose value indicates the length of time for which playback should be stopped
Let's say a short so we don't have to deal with floating point
Anyway, back on topic, S3maphore itself is actually working as intended in this case. Because of how playlist transitions work now (this is configurable ! Changing one of the track skip-related settings would also fix this ingame, but I wouldn't do that for this case), higher-priority playlists will typically try to finish their playback before they surrender control back to whichever one is valid at the time
Nothing has explicitly stopped this track, except you pressing F8, so it's going to run all the way through and then do whatever comes after. That's what special playlists are meant to be, in the end (priority <= 50)
in non-s3maphore situations I stop the performance and the game music starts up again immediately, so I'm not sure what the difference is there, the game is dumb as a bag of bricks but handles this as expected
Oh, well, Idunno what exactly it does if you don't have s3maphore installed now that you mention it
But this will only ever happen if you do have it installed, and Bardcraft registers this silence playlist
I'm certain that I broke this doing feature requests 😅
The setting that controls this on my end is trying to prevent, like
maybe bardcraft should be dumber about this and not register stuff
Eh, more or less, this one-liner will do same job and not pollute the playlist queue
If you're in balmora and the hlaalu playlist is playing, you don't want it to suddenly fall through down to the ascadian isles playlist as soon as you go out of town
So higher-priority playlists will not allow lower-priority ones to interrupt their playback.
yeah this is a bit awkward which muse handled reasonably well (at least from a user experience standpoint)
I kinda would appreciate having an actual muse user explain it to me a little because I've sorta just been analyzing the playlist jsons like an archaeologist looking at dinosaur bones
I have no idea what the feel of it is
But one weak point of s3maphore right now is that playlists don't really mesh well together. They're very strict about which is in control at any given moment
This apparently is all how skyrim's playback system works but I can't say anything about that one way or another except that I vaguely remember some discussion about this in MR comments, when music was first dehardcoded
I frequently do not want the current track playing all the way to the end, like when I'm entering/leaving an inn, I want immediate override which I did with some switches in muse. Unfortunately I saved the music folders and nuked the config stuff
yeah but that does it everywhere right?
There are three based on where the transition happens
overworld, friendly ints, dungeons
Dungeon detection is not great but it's vaguely based on what I could gather from the muse playlists
tilesets and such?
No for dungeon detection I actually literally copied the muse code
It checks for NPCs with fight >= 90 and creatures >= 83
And if either of those is true then it is considered a dungeon
"folder" : "Tavern", "requireHostiles": false, "queued" : false, "priority" : 500, "instant" : true, "cancelOnExit": 1, "cellNamePart":
so for taverns I had this, "instant" told it to start playing immediately (as opposed to normal finish-track behavior), "cancelonExit" told it to stop immediately when I exit the tavern (again as opposed to normal finish-current), and for matching I used partial cell names.
in most cases you do want "finish what you're playing" behavior I think, it usually going from interior to exterior or vice versa that you might want a more abrupt change and switches to support that
oh so that's what those do.
I kinda had guessed so but it's nice to be sure.
What is queued?
S3maphore actually does have a system kind of like this. But playlists are only using the default behavior atm
there is an interruptMode param on playlists
The way I've organized it is by Explore/Battle/Special, so based on the vanilla ones
Special playlists specifically may never be interrupted, but otherwise, if the playlist priorities change then this is a fallback check that happens underneath it to decide whether playback should interrupt
So for example you could short-circuit the Taverns playlist to always interrupt regardless of the setting by making its interruptMode = InterruptMode.BATTLE
I thought I knew what it was, now I'm looking at my configs and I'm not so sure anymore, I downloaded the mod and looked at the templates and I kind of feel "instant": false is the same as "queued": true? But then why two flags?
My thoughts exactly
but if I set interruptMode = InterruptMode.BATTLE and exit the tavern?
normally it will go both directions
nice
Whatever is on the outside will probably be interruptMode.EXPLORE, and it'll fall back down to that
Hypothetically someone could use BATTLE for an exterior playlist for the same reason though, and then it's down to the playlist's priority
yes priority escalation was a problem with muse mods/playlists
everyone wanted to make sure their new shiny mod's playlists... played so let's set priority to insanity numbers
I'm hoping that this design counteracts that somewhat
Playlists have a pretty straightforward range
They're meant to coexist at the same priority level, in fact it will run better if they do (possibly)
It also goes down and caps at a thousand
Which itself is drastically increased from the builtin script's version... I think it goes to 100 and doesn't use Special as a playlist type at all
I noticed a thing. I don't know if this comment is from you or from original MUSE. As it says here, Dagoth Ur folder takes priority over Dagoth folder, which explains an issue I had. I had the MUSE Sixth House expansion installed, which puts a finalbattle.mp3 track in the Dagoth Ur folder, and some other combat tracks in the Dagoth folder. But with S3maphore at least, it will just pick finalbattle.mp3 all the time when fighting the sixth house due to the folder priority thing.
That is all me lol
Hm.
I can double check it but this… seems right. Sorta.
I’m sorry, but I’m not really equipped to do this myself (time)
What exactly did MUSE do here, if you can check?
I am fairly sure this is an accurate representation of how that one runs in MUSE. I think
Looks like MUSE only uses the Dagoth Ur folder for the battle with Dagoth Ur, and the Dagoth folder for fights with other sixth house related enemies
So I'm guessing if I take the Dagoth Ur folder out of s3maphore's Muse Sixth House.lua, it will make sure all the Sixth House fights use the Dagoth folder with the multiple combat tracks. For Dagoth Ur himself I'm using this other mod which should take care of Dagoth Ur himself 😄 https://www.nexusmods.com/morrowind/mods/56809
Okay. Now I remember what the deal is here.
If you look really closely at this image you may see the issue.
Set the latter dagoth-only playlist to run theManHimselfRule
I remember being really confused by this when I first opened… DM?
I can’t recall which, untangling playlists was a smorgasbord of fuck.
Anyway I didn’t finish updating that playlist after I fixed some of the other aspects.
As is they are for all intents the same playlist with different folders.
O_O
mm, the main reason i decided to use a playlist was because toggling music off entirely gives a hard cutoff instead of a nice fade-out, it's not a huge deal though
if anything i could probably still play the silence track and just toggle s3maphore off once the fade is done
Well, whatever you’re doing for practice works perfectly.
huh, the logic isn't any different
But my memory is a fallible thing.
it might be to do with being inside or outside a tavern, i was running into some issues with the tavern playlist's overrides myself after updating s3maphore
don't remember the specifics either xD
but yea i'll just switch to toggling tbh
Yeah I can imagine that was a lot of messy work!
It was kind my fault in fairness
When I started, I simply copied all the DM playlists into the S3maphore format. I assumed at the time these playlists were accurate. They were not, in fact, accurate.
Then I finally realized because someone said an expansion wasn't working which I was certain should have... then I realized it was all folder based. But they still, all had to be rewritten as a result, and I spent...
Idunno, most of a day trying to understand how MUSE playlists worked. Had never seen one before.
As it turns out you shouldn't try to copy a system you have never used whilst also doing zero research into the subject
But, this is modding ! 😄
What's the deal with the fade duration setting? I can't seem to get it to do anything. Supposedly there's also a way to specify the fade duration in the playlist but I don't see anything about it in the documentation and there's definitely nothing set in the playlist files I'm using because I wrote them myself.
It would be really cool to get permission to adapt https://www.nexusmods.com/skyrimspecialedition/mods/115096 to morrowind
thats the neat part, openmw can just load the files and play them already
Durations aren't defined at the playlist level, although I did consider making them do so
Actually they do nvm:
https://gitlab.com/modding-openmw/s3ctors-s3cret-st4sh/-/blob/master/s3maphore/00 Core/scripts/s3/music/core.lua?ref_type=heads#L572
But that only works if you have one of the fade settings enabled
By default only transitions into hostile areas fade, IIRC
Well, kinda. I should probably have been a little more awake before answering this. Oops.
The fade duration is a parameter of the playlist itself, fadeDuration, if that doesn't exist the setting is used. In some cases you may not really notice the fadeout as much from the tracks being instantly interrupted.
There we go.
Okay I figured it out. It actually doesn't work at all currently because the wrong parameter is getting passed to ambient.streamMusic. The second parameter needs to be a table with the fadeOut variable in it (see: https://openmw.readthedocs.io/en/l/reference/lua-scripting/openmw_ambient.html##(ambient).streamMusic ). So line 572 in core.lua
ambient.streamMusic(trackPath, newPlaylist.fadeOut or FadeOutDuration) - this doesn't work, because you're just passing a number as the second parameter.
ambient.streamMusic(trackPath, {fadeOut = newPlaylist.fadeOut or FadeOutDuration}) - this seems to work as expected, now it's a table with the fadeOut option in it.
Y'know, I noticed that at one point and thought it was weird but brushed it off.
Fair enough, will patch after work. Thanks for the help!
It might-possibly be worth reporting upstream also or maybe not. That's an original bug that technically sorta still exists in the builtin music script
Oh that's a bug? I thought it was working as intended, in case they wanted to add some more options to the table later.
No, it is supposed to be a table, I mean, the builtin openmw music script has the same bug
S3maphore is built off of it almost entirely. But none of the playlist stuff is used there
Ohhh I didn't know that
the setup of vanilla regions is great, there's an id pointing to a folder and a region check and that's it, I can just dump my mp3s in the folders and happy days. The Tamriel Rebuilt setup is very different, it's all "only play these specific tracks" which is a pain to change (have to edit the track list). How can I set up the TR side of things so I can just point it to a folder to play as well (for region playlists)
Yea tbh I'm not a super huge fan of how they're laid out myself, I'd like to change it, but the model needs poked at a bit to be more flexible
So here's the aanthirin playlist, right:
{
id = 'Tamriel Rebuilt - Aanthirin',
priority = PlaylistPriority.Region,
randomize = true,
tracks = {
'Music/MS/general/TRairdepths/Dreamy athmospheres 1.mp3',
'Music/MS/general/TRairdepths/Dreamy athmospheres 2.mp3',
'Music/MS/region/Aanthirin/Aanthirin 1.mp3',
'Music/MS/region/Aanthirin/Aanthirin 2.mp3',
'Music/MS/region/Aanthirin/Thirr.mp3',
'Music/MS/region/Aanthirin/Thirr 1.mp3',
'Music/MS/region/Aanthirin/Thirr 2.mp3'
},
isValidCallback = function(playback)
return playback.state.self.cell.region == 'aanthirin region'
end,
},
It's set up this way with the hardcoded track paths so they can all reuse dreamy athmospheres
anyway you'd change it like this:
{
id = 'MS/region/Aanthirin/',
priority = PlaylistPriority.Region,
randomize = true,
isValidCallback = function(playback)
return playback.state.self.cell.region == 'aanthirin region'
end,
},
yeah but there's also a thirr list because I don't think there's a region called "aanthirin region" (it's thirr valley region) and the thirr list contains three regions
so that one would win? I think that one plays
The idfield should be the folder in which the tracks are
cell.region == 'aanthirin region' is the one
no such region
but I'll try with this edit
2:12:27 s3kshun8@UNDEAD-ASYLUM TamrielData/00 Data Files √ % tes3cmd dump --type REGN ./Tamriel_Data.esm
WARNING: Can't find "Data Files" directory, functionality reduced. You should first cd (change directory) to somewhere under where Morrowind is installed.
Record: REGN "aanthirin region" Flags:0x0000 ()
NAME: ID:Aanthirin Region
FNAM: Name:Aanthirin Region
WEAT: Clear:35 Cloudy:25 Foggy:5 Overcast:15
Rain:15 Thunder:5 Ash:0 Blight:0
Snow:0 Blizzard:0
BNAM: Sleep_Creature_ID:T_Mw_RStat_AanthirinSleep
CNAM: Red:102 Green:165 Blue:217 Unused:0
*SNAM: Sound_ID:wind calm5 Chance:4
*SNAM: Sound_ID:wind calm4 Chance:4
*SNAM: Sound_ID:wind calm3 Chance:4
*SNAM: Sound_ID:wind calm2 Chance:4
*SNAM: Sound_ID:wind calm1 Chance:4
*SNAM: Sound_ID:rocks2 Chance:5
*SNAM: Sound_ID:rocks1 Chance:5
hmmm did that change or am I hallucinating
Well, something seems to've happened:
Record: REGN "thirr valley region" Flags:0x0000 ()
NAME: ID:Thirr Valley Region
FNAM: Name:Coronati Basin Region
WEAT: Clear:15 Cloudy:45 Foggy:10 Overcast:10
Rain:15 Thunder:5 Ash:0 Blight:0
Snow:0 Blizzard:0
BNAM: Sleep_Creature_ID:T_Mw_RLvl_ThirrValleyLand+0
CNAM: Red:183 Green:176 Blue:130 Unused:0
*SNAM: Sound_ID:wind trees1 Chance:4
*SNAM: Sound_ID:swamp 1 Chance:4
*SNAM: Sound_ID:swamp 2 Chance:4
*SNAM: Sound_ID:swamp 3 Chance:4
*SNAM: Sound_ID:howl1 Chance:2
*SNAM: Sound_ID:howl2 Chance:2
*SNAM: Sound_ID:howl3 Chance:2
@devout oar made some edits to the playlists in these specific areas IIRC so he would know better
but yea just remove the track table completely and then make the id the folder the tracks will be in, and they'll work
I'd like to make the actual playlists do that, but I need a means to insert tracks after the fact first
I can't really think of any situation where I want to manage lists of individual mp3 files as opposed to pointing it to a folder to play whatever is in there
well, this one is a good example, really
the TR/PC playlists are like this so they can all use the airdepths tracks to fill them in
er, not quite all of them I guess but most of them
I'm thinking maybe, because the problem that's trying to solve is repetitive music, maybe I could keep a queue of "exhausted" playlists, so they expire after a while, and then every so often become usable again
I've noticed it too actually, playing PC
it's not so much you want to have the hardcoded list, as that it's the only way to have extras
I have several thousand of MMO mp3s lined up, exhaustion is not a worry but I may be an edge case there
uhhh yes lol
playlists being cycled out after overplay and getting back into play later is good though
looks like the TR team did some more region shuffling or I am misremembering, I am sure "aanthirin region" used to be called "thirr valley region"
guess they moved it around to account for the new regions (which I now realize I will need playlist/folders for)
I'm reasonably sure it did because I distinctly remember looking at ronik's changes and thinking wtf is going on here, but didn't think twice about it
But one of the TR devs went through my version of these playlists before i published, so... it should at least be right as of the last update
whoops (in my defense this is years of hoarding and categorizing using muse)
I blame archive.org
I've been wanting to do an extended one based on the daggerfall chiptune playlist for MG/FG
That has a whole album with like 77 tracks
with a badcrt filter and some ps dithering I could see it
this works, cheers! Just have to enter every region and it's good to go. I don't really have playlist suggestions, I'm happy with unique regional music + cell-based towns (imperial/hlaalu/redoran/etc) + tile-based dungeons (tomb/cave/dwemer/daedric) and everything playing from folders where you can put whatever (easy to manage too), honestly think you don't need much more for 99% of the game, bunch of combat music maybe but special enemy playlists don't do much for me because I'm not focused on music in combat.
I've been using dynamic music with the plugin for all the MUSE playlists but just saw this and want to try it out, how do I go about installing it? Do I just drag and drop all the playlists I threw into dynamic music?
Nvm I see there is a bain installer :')
Don't think this is compatible with Better Sounds, at least I can't get anything but the default Morrowind explore OST to play. Tried tweaking settings through the scripts in game, changing directories, etc without any luck
All the s3maphore playlists work the same way dynamic music ones do
You're not supposed to copy anything into the folders, although you can I guess
You do need to install like, the MUSE Expansions, or CaptainCreepy's MUSE Music Pack though too
Only 06 module comes with music
I downloaded each of the MUSE expansions manually, which folder in s3 do I put those in?
Or does it matter, as long as I have them in the directory?
Each playlist has its own directory like the muse ones
All you should have to do is download and extract one of them, and "Append" it in the launcher
Alright great, it does work with better sounds and I was able to get it to play the MUSE expansions
I pinky promise I'll update this for you guys soon and add links to supported mods and stuff
Going through a lot rn but cooking next build in my head, will try to squeeze it in this week, but no promises
The mod works really well as is, just finished integrating the world of warcraft OST from all expacs (~1300 tracks, 130+ hours), I don't think I'll ever return to WoW and Blizzard but hearing lament of the highborne in necrom is peak
I mostly just wanna make some dope playlists
there are a couple minor bugs/features to address but mostly playlists and docs tbh
I have had to tell a few too many people which mods exactly are compatible atm and I keep forgetting which ones I need to make compatible too lol
I was thinking about playlists, like, it maybe would be nice to have daytracks and nighttracks for areas with calmer/more mysterious tracks playing at night but I am not ready to rejigger all tracks once more
yea there's rules for that
this is kinda why it's set up the way it is though with the bain archives
cause MUSE playlists aren't really expressive enough for you to do that unless I changed them myself, which was not the idea at all
I kinda just installed the core and started editing playlist stuff
every playlist I ship is 1:1 with its original implementation (or, wants to be)
but downside of that is that by default it never actually uses most of its capability 😄
Main reason I want to do Lorkhan is openmw builtin script with this whole playlist concept is supposed to be how skyrim music works to some degree
yeah and a lot of those music expansions were really just "play only these specific tracks" and frankly none of them have enough tracks to remain interesting for long
So really, we should be making playlists based on Skyrim mods and not morrowind ones
I will never cease advocating for folder-basic music management, having to fiddle with playlists is terrible
point it at a folder, manage the folder
All the skyrim stuff is folder based too it just has way more rules/contexts
There are specific musical stings that play depending on what category of dungeon you're in, for example
right when you enter
and there are others when you get to the end
plus it also uses time-of-day stuff liberally
oh yeah, I mean, at some point you hit what I consider OCD levels of attention to detail and I kind of get off the train there, I just want some vaguely-relevant tracks playing
Check the file preview on this
most of it is rather muse-like but they get weird with it in some places, like I don't know what the a/b/c subdirectories are supposed to be (times of day like s3maphore uses 0-3?)
first thought "yeah interesting" second thought "fucking xwm"
oh yeah it's trivial to transcode but it's just annoying
Todd gives us nothing without curling his paw
kind of have run skyrim to see what they're doing exactly, I can't make it out from desc. or file structure
I have no wish to return to skyrim at this time
See that's part of my problem too 
I installed skyrim recently, even, to test BSA extraction in this thing I wrote
But then I said, nah
[libmp3lame @ 0x556ccebb96c0] Queue input is backward in time [mp3 @ 0x556ccebbcb80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 3933359 >= 3932463
I said trivial and it seems to work but these are some odd messages
I was lazy and ran find -name "*.xwm" -exec ffmpeg -i {} -acodec libmp3lame -ab 320k {}.mp3 \;
just use the originals
openmw plays xwm now?
it supports whatever ffmpeg supports
In theory you should be able to run mgs3 cutscenes
ah right, never tried it because I always tried to keep things in sync with og mw.exe and muse
its the same playlists as skyrim proper since its a replacer
you could probably just open skyrim.esm in xedit and see
I looked around but I don't think your transmog/glamour mod has a dedicated thread or a nexus page; just wanted to note that sometimes when I open the transmog menu (not always), luasync kind of goes crazy with intermittent big bursts of activity, you can see the graph in pic 1 (no problem, before opening menu) and graph in pic 2 (the block pattern after opening and closing the menu) which causes noticable ingame stutters when it happens. Don't see anything in the logs about it.
Ohhh yeah. That UI is very unoptimized
I didn't know how not to make them run like shit at the time. The object highlights cause the whole thing to redraw
Hey! Thanks for the great mod! I can now enjoy TR and PT with their proper soundtracks!
It took me a few minutes to figure out why the music wasn't loading at first. In the readme file included in the Nexus download, the installation steps list content=s3maphore.omwscripts , when I can see in the git changelog that the file was renamed to S3maphore.esp
After changing that everything worked smoothly
Oh, thanks for calling that out! I must've forgotten to update readme when I switched to embedded records for the script
Sorry if not the right place to ask but how would I expand the Vvardenfell soundtrack? I use s3maphore with the TR original soundtrack, but are there any nice playlists for Vvardenfell? What playlist should I add?
Use the MUSE playlists, module 01. You can mix and match mods from the MUSE expansions (this is literally what they are called, by scipio) and most other MUSE packs will work out of the box as well.
I personally am in love with these two and will not play without them:
https://www.nexusmods.com/morrowind/mods/51734?tab=files
An implementation of my album on morrowind. Requires MUSE 2 by Rytelier.A collection of 37 songs located in their appropriate cells, but free to be customized at will.
Alternatively, you can just enable the muse playlists and put your own tracks in the right folders, most existing playlists are either region based or faction based
So, for Sheogorad region for example I believe the folder path is: music/ms/region/sheogorad
Just what I needed, ty!
I'm a dummy how do I use MUSE playlists?
Enable the 01 MUSE playlists data dir
Download a MUSE mod like ^
Active playlists will be visible in its settings menu, although ones without any tracks found will be greyed out, so you can't disable em
"MUSE The Morrow Winds Of Resdanya - A Morrowind Inspired Music Alb" mod doesn't have that dir for me 😵💫
Oh sorry it's 03 Muse Expansion Playlists
That's from S3maphore, muse mods don't ship that
For muse stuff you just add it like any other mod
ah I'm running an older version of s3maphore
that's why I'm so confused lol
Can openmw play .xwm files?
Yea I was goin over this with acid a couple pages up
I've been desperately wanting to make some playlists based on LORKHAN so you can just smack that in there like Morrowind mods
Anything ffmpeg can decode, openmw can, which is... everything I can think of, anyway
yeah that's exactly why I was asking 😆
If you need any help on playlist creation I gotchu
Playlists now don't even need to require most stuff
I haven't had a chance to document this yet but this table is passed into every playlist
Somebody mentioned one of the regional playlists has an incorrect name.
Anybody remember what it was? 😅 I can't find it!
Ah! I knew it was sheogorad.
What exactly is the difference between this and dynamic music?
The playlist mechanics s3maphore uses are far more open ended than either MUSE or Dynamic Music, and unlike both mods it will not cause freezes in your game
One of the biggest advantages is that most S3maphore playlists are folder based, so just like the normal Explore/Battle folders, you can just smack songs in the right folders and they work automagically
Speaking of which, 0.54 is now available!
- fix sheogorad playlist
- fix fadeOut setting
- fix overriding playlists causing infinite throws
- add bbl drizzy playlists -> place your favorite Drizzies in
music/s3/drizzyto hate Drake whilst exploring sixth house areas/dungeons - oh yeah also swedish translations
Put the new Travis Scott album
Actually no, only put this:
Travis Scott & GloRilla - SHYNE (Official Audio)
JACKBOYS 2 OUT NOW: https://jackboys.lnk.to/JB2
Travis Scott online:
https://shop.travisscott.com/
https://twitter.com/trvisXX
https://www.instagram.com/travisscott/
https://soundcloud.com/travisscott-2
https://www.facebook.com/travisscottlaflame
https://travisscott.com/
(C) 2025 Cactus Jack Re...
The power is in your hands my son
I cannot distribute BBL drizzies myself
Actually some.... zealous, let's say politely nexus moderator deleting the bbl drizzy mod is why I made my own website to post stuff on anyway
He will live on on my credits section forever
du är svensk? 😄
No I refuse to even learn how to type extended characters on my keyboard tbh, the swedish translations are courtesy of @urban pelican
Mais, je parle le français assez bien
Mesdames l'aimé
Gotcha haha
There are probably over a dozen or so Swedish mod translations I've done by now. Most of them are mods by johnnyhostile, like #1194631593692778587 and #1192953808163180595. It's just a silly fun thing to do I guess. The Swedish translation of OpenMW itself is done by me as well.
Hey btw lysol, I had an excuse to bother you (since you also did UiModes)
Np hit me
What would be a good equivalent for slimline or streamlined
In Swedish? Literally speaking, streamlined is strömlinjeformad (which in turn is literally streamline-shaped).
Slimlined however... Depends on the context.
I'm making stripped down version of ui modes
Ah
uiModesSlim
Right. Strömlinjeformad could make sense. Like, you have a setting called "UI Modes" with the options "Normal" and "Streamlined", that could be translated into "Gränssnittslägen" with the options "Normalt" and "Strömlinjeformat". Perhaps avskalat could do instead of slimlined, which would mean something like stripped down.
But have a go and I'll figure something out.
Certainly not even a novice but strönlinjeformat seems a bit... idk, out of context?
There are good terms for most these things, we can thank Microsoft for that. Windows has been available in Swedish since forever and thus we've got well established terms for UI.
Avskalat sounds like it communicates the idea better
Not really actually, but I guess "avskalat" looks more elegant.
Sure.
Strömlinjeformat is often used as a metaphor for something that is very optimized.
Oh wow that's awesome!! I don't play the game in swedish but I lived in sweden for some years and know a bit of it :)
Hm, interesting, I'll spring for that then. Thanks!
It's pretty common you can't do a direct literal translation for a metaphorical term. So it might end up being a completely different term once I start thinking about it.
Just downloaded the new update, what do I do with the drizzies folder now? xD
I rip BBL drizzy tracks off youtube
Some of my favorites include:
https://youtu.be/UXzXr9gGfIg?si=vya-UG8xaCakvzzV
#bbldrizzy #metroboomin #drake #kendricklamar #drakekendricklamarbeef #drakekendricklamar #wedonttrustyou #westilldonttrustyou #future #ASAPRocky #theWeeknd #familymatters #notlikeus #meetthegrahams #bbldrizzybeatgiveaway #duet #duetthisvideo #fyp #foryou #foryoupage #talentedartist #duetthis #viral #atlanta #jamaicanartists #explore #explorepag...
B.E.A.R - BBL Drizzy Freestyle prod by @metroboomin
https://youtu.be/EmkpOjUycgs?si=Bc5M7EJ6wW-mCN0B
scru face also killed it
Scru Face Jean BBL Drizzy Freestyle produced by Metro Boomin
#BBLdrizzy #BBLDRIZZYBEATGIVEAWAY
My new Single with Metro Boomin “TOO REAL” https://youtu.be/YBLpRFgO37s?si=BsCq52pec36bhXVu
STREAM "TOO REAL" EVERYWHERE:
https://open.spotify.com/album/13v1ZXfFZwlBhQWgP0u05D?si=KZ9ig69MQaadHhV5NvB1rQ
Get the Underdog App & Win some MONEY: ht...
The module itself has the music/s3/drizzy folder already so you just gotta pick whatever you like !
Perfect!
Oh! Madame L'Amour! (interjection typically used in Lyon (and more widely in the south-east of France), in the popular, affectionate and slightly ironic register) 🙂
Ahh, forgive me, I am very clearly not a native speaker
Fun fact, I got on VC with Rickoff once, and he was incredibly polite about it, but I think my pronunciation was so awful he asked me not to ever speak french to him
I need to practice more 😄
😉
Most french thing I've read today xD
Was a beautiful moment, he's the best
Alright, after messing with many mods and whatnot I had trouble with installing and using s3maphore but now I think I'm good.... time to give it a whirl :) I installed the other MUSE ones you recommended last night as well
And now that I see there's a dagoth folder I can properly plop in dagothwave for our final battle
Scipio's sixth house tracks are pretty good tbh
Nice I think everything works but I'm having trouble with tamriel rebuilt xD
S3maphore is compatible with the TR original soundtrack mod yeah?
Or do I just use it alongside s3?
Hmm
And the PC one that the author of Morrow Winds did
Show openmw.cfg?
For TR you need 01 Tamriel Rebuilt Playlists enabled
data="E:/Morrowind Mods/mods/s3maphore" data="E:/Morrowind Mods/mods/s3maphore/00 Core" data="E:/Morrowind Mods/mods/s3maphore/01 Tamriel Rebuilt Playlists" data="E:/Morrowind Mods/mods/s3maphore/02 Project Cyrodiil Playlists" data="E:/Morrowind Mods/mods/s3maphore/03 Muse Expansion Playlists" data="E:/Morrowind Mods/mods/s3maphore/04 Vindsvept Solstheim" data="E:/Morrowind Mods/mods/s3maphore/06 Songbook of the North" data="E:/Morrowind Mods/mods/s3maphore/08 Redguard Music" data="E:/Morrowind Mods/mods/s3maphore/09 Nordic Lands" data="E:/Morrowind Mods/mods/s3maphore/10 Inns and Taverns" data="E:/Morrowind Mods/mods/s3maphore/12 BBL Drizzy"
I think there was a problem when i installed the TR soundtrack the first time around though so I'm messing with that now
Yeah this is strange
With s3 the TR OST works in port telvannis but not Almas Thirr or Roa Dyr
Not sure what others, those are just the ones I’ve tried
Open game settings > scripts > s3maphore and find and enable debug messages or whatever it was called. Return to game, press F10 > look in the console to see what playlist is actually playing (press F8 to skip to the next track and it will mention the playlist). From there, you can mess with the s3maphore playlists, I had to do some rearranging to suit my tastes.
Haha I just figured it out, I just had some files paths wrong xD had to check the playlist lua file to get the right ones but we’re good now
Did I name some of them wrong?
No no, I didn’t have an MS file for some reason xD easy fix, no idea how that happened
`---@type CellMatchPatterns
local DreughCellMatches = {
allowed = {
'paruddma',
'crystal scissure',
'the whispers',
'withering murk',
'wraithspire',
},
disallowed = {},
}
---@type ValidPlaylistCallback
local function dreughCellRule(playback)
return playback.rules.cellNameMatch(DreughCellMatches)
end
local PlaylistPriority = require 'doc.playlistPriority'
---@type S3maphorePlaylist[]
return {
{
-- 'MUSE - Dreugh Cells',
id = 'ms/cell/dreugh',
priority = PlaylistPriority.CellMatch - 150,
randomize = true,
isValidCallback = dreughCellRule,
},
}`
maybe of interest, folder-based playback for TR's new dreugh hive locations, given their vibe it goes well with some really oppressive music or maybe if you're feeling whimsical, a bunch of sea shanties (you'll need a folder MS/cell/dreugh to place the music in, or think of a different folder name to put there). I used a MUSE template, I don't know what the minimum amount of information for a working folder-based playlist is. prio is at cellmatch-150 to override any tile-based shenanigans.
`---@type CellMatchPatterns
local KhalaanCellMatches = {
allowed = {
'khalaan',
},
disallowed = {},
}
---@type ValidPlaylistCallback
local function khalaanCellRule(playback)
return playback.rules.cellNameMatch(KhalaanCellMatches)
end
local PlaylistPriority = require 'doc.playlistPriority'
---@type S3maphorePlaylist[]
return {
{
-- 'MUSE - Khalaan Cells',
id = 'ms/cell/khalaan',
priority = PlaylistPriority.CellMatch - 150,
randomize = true,
isValidCallback = khalaanCellRule,
},
}`
there is also an oblivion pocket realm in TR, it's unique and large enough and you spend enough time there as part of questing to warrant a playlist as part of TR imo, it's also a pretty nasty place full of debris, fire, and daedra so choose music accordingly.
Thank you for this lol! I already did that questline but this will be handy for my next playthrough :)
You’d think the Telvanni would be the ones to send you to oblivion 🤣😭
These are pretty dope, I like it. This is pretty much all you need for a folder list. Although if you wanted to be spicy you could add names for them via the l10n
What, uh.... what exactly is with the priority, you're trying to overstep any tileset matches?
I should really update the existing playlists to use the built-in environment 🤔
I'll do that during this long-ass ride I guess
I had a couple of experiments where dwemer tilesets kept overriding my partial cell name matches which was annoying, I guess I cloned these from those experiments. Also Khalaan uses mournhold tilesets in the sewers, not sure if any list uses those but that would override. I doubt any list calls out dreugh hive tiles, but eh.
I don't have a mournhold tileset, I thought about it but m I'm not ultimately sure what tilesets are most useful to have
Unfortunately since I've modularized my configurations it's a lot harder to do that than it used to be with delta plugin, can't read nested configs
it's pretty good for dwemer, daedric, various PC and SHOTN ruins, I guess "locations with a bunch of wildly different names but similar layout", I think you got most of them (haven't really been to PC or SHOTN yet though). Maybe a special egg mine list lol.
Yo a kwama faction playlist sounds cool actually
PC is probably the worst configured one right now. There are so few of those tracks but they're really neat but also aren't folder based so they can use athmospheres as filler
Maybe I can fix that by having people add the athmospheres everywhere module 🤔
yeah I looked at it, it's definitely not enough tracks, not enough filler in the world to fix that. I ripped out most of the TR playlist guts and replaced it with region folders, think I'll do the same for PC.
maybe get strongholds a tilebased list too if it doesn't have one, not actually sure what is playing in there now (seems to be generic explore fallback)
other random idea, immersive travel. A strider travel playlist and a boat travel playlist. Finally, legit sea shanty time. I don't suppose s3maphore can detect when stuck on a ship or strider, so I guess immersive travel needs to have a "play/stop this playlist" clause added somewhere in the travel sequence much like what happened with bardcraft, correct?
The rulesets are built in such a way that you can make pretty much anything a rule
Preferably if there's a function in immersive travel's i terface that can say whether you're traveling or not
Then you could make playlists for it and hook into the other rules like time of day or whatever
https://pastebin.com/rKHaGFLs - basic tileset test for strongholds, seems to work ok and gets overridden by sixth house playlist when in one of their strongholds (this is good)
@sly helm modders who checking error logs like me get their attention caught by this line each time:
I'd thought that was fixed already, but I guess it must be throwing when constructing the initial PlaylistState instead of the onFrame. I'll deal with it
`---@type CellMatchPatterns
local Narsis_CatacombsCellMatches = {
allowed = {
'narsis, catacombs',
},
disallowed = {},
}
---@type ValidPlaylistCallback
local function narsis_catacombsCellRule(playback)
return playback.rules.cellNameMatch(Narsis_CatacombsCellMatches)
end
local PlaylistPriority = require 'doc.playlistPriority'
---@type S3maphorePlaylist[]
return {
{
-- 'Narsis_Catacombs',
id = 'ms/cell/narsis_catacombs',
priority = PlaylistPriority.CellMatch - 150,
randomize = true,
isValidCallback = narsis_catacombsCellRule,
},
}`
playlist for Narsis Catacombs which I suppose play cave music normally. This is generally fine but it's a huge place, you'll likely get lost there for a while, and I felt it deserved its own tunes. It's not too many cells, you could build an exact cellmatch list but eh.
Which file did you add this to?
standalone for me but you could add it to TR playlist
Word, thank you!!
What is the .gitkeep file for?
It lets you commit empty directories to git
I made a playlist for Sotha Sil Expanded but I couldn't figure out why it wouldn't play. Turns out the mod itself has mwscript dictating the tracks. I like the mod's music but it's only a couple of tracks, not enough for the amount of time you spend there solving trainwiz's infernal puzzles. I ended up nuking the scripts for it, this works aside from a little complaining in the log, but it's not very elegant. Is there a better way using s3maphore?
`---@type IDPresenceMap
local SothaEnemyNames = {
['hulking fabricant'] = true,
['verminous fabricant'] = true,
['imperfect'] = true,
}
---@type ValidPlaylistCallback
local function sothaEnemyRule(playback)
return playback.rules.combatTargetExact(SothaEnemyNames)
end
---@type CellMatchPatterns
local SothaCellMatches = {
allowed = {
'sotha sil',
},
disallowed = {},
}
---@type ValidPlaylistCallback
local function sothaCellRule(playback)
return playback.rules.cellNameMatch(SothaCellMatches)
end
local PlaylistPriority = require 'doc.playlistPriority'
---@type S3maphorePlaylist[]
return {
{
-- 'MUSE - Sotha Cells',
id = 'ms/cell/sothasil',
priority = PlaylistPriority.CellMatch - 150,
randomize = true,
isValidCallback = sothaCellRule,
},
{
-- 'MUSE - Sotha Enemies',
id = 'ms/combat/sothasil',
priority = PlaylistPriority.BattleMod,
randomize = true,
isValidCallback = sothaEnemyRule,
},
}`
More specifically in this case they're there so that the folders you can put music into, already exist, just don't have anything in them.
I think I see a way this script can be patched but it will be kind of lame.
Basically you're going to lose to mwscripted music playback err time. I could try forcing the track if it didn't match the current one, but that's a bit aggressive.
The only real option I see is to reach into the script and set the timer to 0 in every frame
Is there a general dungeon playlist? Don't really need them separated by type
there is now !
The necessary folders are premade in here under music/s3, so you should be able to just add this in the Data Directories tab of the launcher, and smack whatever in there
This includes in and out of comobat
Awesome, thanks!
hey is there a repository for playlists somewhere?
Yep, I source track all my mods under s3st4sh: https://gitlab.com/modding-openmw/s3ctors-s3cret-st4sh/-/tree/master/s3maphore?ref_type=heads
Most of the stuff posted in this channel in this last week or so, both has not made it into the repo and I would like to add later
check pins for web version of the docs
cool thanks
what's the difference between a cave and a dungeon?
or is a cave a specific type of dungeon?
I'm basically just trying to include Oblivion and Skyrim OSTs in OpenMW, deciding whether certain tracks should go in MUSE's interiors or in your mod's General Dungeon folder
like if an interior isn't specified in muse folder would it default to your dungeon folder?
wwweeellll
so it's a bit of a cheat, really
The way a dungeon is defined is that it is an interior with living hostiles in it
caves are that + the cell has to have some specific statics placed inside of it from the cave tileset
The other playlists which are associated with specific types of dungeons generally do that as well, but it depends on how common a certain dungeon/tileset is
It's set up this way partially because that bit of the system isn't entirely complete and also because I think skyrim is supposed to have different playlists roll after a dungeon is cleared
For things like the end-of-dungeon loot sting/entrance track you can use the builtin events for cell/track change to intercept any song change you want
that's awesome that you can do that but I'll just stick to the premade folders cause I'm a total noob at this haha
just trying to match stuff up like this that's good enough for me
I'm also a total noob at Morrowind and have no idea what the different dungeon tilesets are
I guess I'm asking if I have all the muse expansion folders, are there still unaddressed tilesets that would use the general dungeon playlist?
and this is kinda out there, any chance .flac works? lol
Yea totally basically all audio/video formats work in openmw
Whatever ffmpeg supports, you can look it up
I thought about it for a bit and I'm not honestly sure if the muse dungeons cover everything or not. I don't think so.
thanks for your truly awesome mod, I wish every game had something like this
Hey thanks, I really appreciate it. This mod was easily my favorite to work on, of everything I’ve done. Sometimes I open the game up just to listen to the music 😄
Yeah it's a great mod, it Just Works
and has been really easy for me to make my little custom playlists! Having spooky atmospheric music for dungeons and caves really elevates the experience.
Nothing breaks immersion more than hearing The Road Most Traveled in the depths of illunibi xD
That happened to me one playthrough and I had to step away because I was laughing so hard
traveling in PC lands now, the cyrodiil playlist works fine (as long as you populate the folders it points to of course), it's missing entries for the statics used in first era ruins like Eumaeus, I added the following to the end of local CryptStatics = {
https://pastebin.com/2HGJxqgb
which is probably overkill but it works (and not as overkill as the ayleid section which I think hits every single ayleid static). Considered adding a separate entry but I only have so much tomb/ruin/dungeon music.
and it might be intentional but PC has large wilderness/water areas marked "abecean sea region" which fall back to generic explore music, but I wanted specific music
` {
-- 'Project Cyrodiil - Abecean seas',
id = 'ms/region/cyrodiil abecean sea region',
priority = PlaylistPriority.Region,
randomize = true,
isValidCallback = function(playback)
return playback.state.self.cell.region == 'abecean sea region'
end,
},`
(it's just DKC 1994 underwater music on endless loop)
https://www.youtube.com/watch?v=-5rAjOjTGtc
If you like these restorations, consider donating at https://www.patreon.com/JamminSam or https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z48HC6C37U8AY&source=url
DOWNLOAD
MP3: https://drive.google.com/file/d/19QbeC3-TzxKk-B4xt8rIWfdKWaBdp3K-/view?usp=sharing
FLAC: https://drive.google.com/file/d/1DV5IhYTtIhudR6wjohAxZHC81A...
hello s3xxor, after messing up my interior lights and stuffs, i am ready and willing to finally reach pleasant results regarding musick playing, as i did with lights and stuffs, after messing everything up. very much thanks for your works, i like you works very much, thank you. (felt the urge to say thank you, couldnt come up with something more eloquent, sorry)
What an excellent nickname, I think I'll appropriate that, and thank you, as well! I'm glad you enjoy it 💜
is it possible to not let it play music from a folder inside a folder? for example, my ID is id = 'ms/cell/hlaalu', inside a hlaalu folder there is 'night' folder and currently it plays tracks from both hlaalu and hlaalu/night folder
Nope. The vfs bindings I use give all paths matching a prefix, so, ms/cell/hlaalu matches for ms/cell/hlaalu/night also. You'd have to do something night-hlaalu
MUSE packs aren't meant to be used this way so you might be best off just abandoning the MUSE convention and making up your own.
thank you. I have one more question, I'm trying to write a playlist rule for night time music, this is a modified hlaalu muse playlist
local function hlaaluNCellRule(playback) return not playback.state.isInCombat and playback.rules.timeOfDay(18, 6) and ( playback.rules.cellNameExact(HlaaluCatacombNames) or playback.rules.cellNameMatch(HlaaluCellNames) ) end
but with that new line added the playlist doesn't play at any time, what's wrong? I only have this one playlist for testing, only vanilla explore tracks are playing. I can see that it registered the playlist in the lua log
Hey sorry, yesterday was super busy. The first number should be the minHour, and the second should be the max, so if you just flip 18 and 6 here in your timeOfDayRule it should be fine.
I guess I should rearrange that rule though. I see what you're going for here.
You could instead do Playback.state.timeOfDay == 'night'
The current rule straight up won't work the way you're trying to use it unfortunately, but it definitely should.
I think the formula in playlistrules.lua might be wrong
local gameHour = math.floor(core.getGameTime() / 3600) gives me 930 on my current game, so when my min and max hours are 1 and 950 for example the playlist finally kicks in
this fixed that
local gameHour = math.floor(core.getGameTime() / 3600) % 24
It is wrong.
But also, when you pass 18 as the min and 6 as the max, it's going to check that, say, 19 >= 18 and 19 < 6, which will never happen.
so it would have to be something like and not playback.rules.timeOfDay(6, 18)
yeah this and the formula fix does it for me
is it better to define the hour arguments as local variables or it doesnt matter?
Nah they don't have to be locals unless that's just easier for you to keep track of.
do you mind sharing what you ended up with for that night rule? i got confused trying to follow the thread
This form should work
time of day rules are slightly broken 😅
As it turns out, some tests require actually playing the game... Who'd have thought?
They work just fine on the first day. 
Will have fixed build up this weekend
yeah, before you even have timeofday rules Sector needs to update the function, you can do a simple patch in the meantime. go to S3maphore\scripts\s3\music, open playlistRules.lua and find this line
math.floor(core.getGameTime() / 3600)
add % 24 to it like I wrote above.
here's a simple playlist example. you have a separate night rule, and remember that right now the formula doesn't wrap around midnight (you can't go 18, 6), in this example it will play when it's not the hours between 6 and 17. then below you want to make sure that the priority for the night playlist is lower than your day playlist
if you want want to expand on it, have night music for different regions and cities, you need to get your priorities straight. this is a basic priority structure that I follow
explore > regions > explore night > regions night > cities > cities night > cells > cells night
regions that dont have specific music will have overworld explore day and night playlists. a cell like Southwall Cornerclub will have cell night music, but Caius house will have city night music
In a lot of cases, the best way to handle priorities is to just reuse them.
Then, if they conflict, bump one of them further down.
For example, all the city playlists are the same priority, because you can't be in two places at once, right?
I DID add a special priority class for timeOfDay but I'm not sure how necessary it really is.
cool thanks for the explanaitions. im slowly getting my head around this new languge, its super fun
Glad you're enjoying it 🙂
And please, lmk if you come up with new rule ideas (you don't actually have to use mine either)
I have a few listed in the Nexus comments lol
yeah major kudos for making it as approachable as it is👍 ill check the comments too. just thinkn though id love a way to have more combat music options, theres some for specific bosses but a some kind of "threat level" tracking would be cool. or maybe creature type, i have a few random folders labelled "animal" or "bandit" (i think from merging soule sounds into the folder structure) that dont do anything now but its an interesting idea.
also im checking out children of morrwind and its pretty funny when they have play fights and the epic combat music starts
though not as funny as it was before i updated my Protective Guards blacklist 😂
Muse had a level difference rule I think would help a lot.
i missed the subtitle where he said "hah! you fight like a child!"
no they were having a play fight and the guards just descended on them
i may have gotten a few digs in in the tussle
slightly easier than expected. Look for some noice upgrades soon....
Please BTW remove the error on game loading
Yeah that's been done, it's meaningless anyway
When it fails to index the cell on the first frame it's corrected by the third before any playlists are selected
That particular error was one of a handful of fixes I just kinda sat on for a bit until I got the motivation to do something more interesting. Sorry lol 😅
No pb 🙂
If anybody has any, I'd love some thoughts on how to deal wit silence between tracks. Not in code terms, just how the playlists should be structured.
Presently I've got this:
silenceParams = {
betweenTracks = 30,
betweenPlaylists = 5,
chance = 0.15,
-- betweenTracks = { max = 30 },
-- betweenPlaylists = { max = 0 },
},
betweenPlaylist kind of sucks though, and also isn't exactly easy to implement the way things are structured. Doable, but ugly.
I'd like for the betweenTracks param to behave like journal rules do, so you can define either a minimum/maximum silence duration, or both, and then add a chance for silence.
I momentarily considered instead making it play a specified number of tracks prior to doing the silence, but idk, feels like just having a chance to not play anything for a bit seems best.
Here's a test build and the hlaalu playlist I've been messing with if anybody wants to try out the new playlist stuff
There's currently no way to disable music, is there?
There are many
I mean, on the fly. Like to turn it on/off in game
No.. my words aren't good sorry
I get what you're asking
Just depends on context
As a player or another mod maker?
-- via Interface
I.S3maphore.toggleMusicEnabled(false)
-- via events
player:sendEvent("S3maphoreToggleMusicEnabled", false)
Also there's a setting
Yes, context is good 😅 I was just thinking about having more control of my playlists while playing, like to silence with a hotkey or switch to a custom playlist
The way it's structured might never support custom playlists, I'll have to think about that
I could add a button for it though, maybe hold shift when you hit the skip track button
interesting yeah that could be cool, the thing that got me thinking was recording some clips to make little dynamic scenes to send to my friend and I was curious what's possible
Possible vs plausible
Yea it's pretty easy to terminate playback
I put the methods in there and stuff but really I never expected players to be using them for any reason, I even thought about that
Easiest thing ATM is just disable playback completely in settings but both of the above commands will work in console
Ok cool thanks, all good. Really not a pressing concern, just a niche curiosity
Hey pal, wanna help me update my translations for 0.55?
GlobalSilenceToggle: Enable Silence Tracks
GlobalSilenceToggleDesc: Whether or not there may be a period of silence between each song played.
GlobalSilenceChance: Global Silence Chance
GlobalSilenceChanceDesc: The chance that a playlist which does not define its own silence rules may not immediately play another song.
ExploreSilenceMin: Minimum Explore Silence Duration
ExploreSilenceMinDesc: The minimum possible duration for silence when an explore playlist is running.
ExploreSilenceMax: Maximum Explore Silence Duration
ExploreSilenceMaxDesc: The maxiumum possible duration for silence when an explore playlist is running.
BattleSilenceMin: Minimum Battle Silence Duration
BattleSilenceMinDesc: The minimum possible duration for silence when a battle playlist is running.
BattleSilenceMax: Maximum Battle Silence Duration
BattleSilenceMaxDesc: The maxiumum possible duration for silence when a battle playlist is running.
@urban pelican
ofc
MR or just throw the lines here?
Just drop it here, unless you care about owning the commits
I'm having a very minor issue and idk if it's even an issue or not but I'm using the built in support measures of S3maphore with the project cyrodiil music and the chapel music just isn't playing. It looks like the anvil music is overwriting it in priority and idk how to fix it.
Thought I might ask here since it's the S3maphore thread, if that's not welcome please let me know and I'll shoot for a more appropriate channel
I don't want to be a prick >~<
Relax 🙂
Literally just whatever priority is already there and do -1.
Actually, since this is a bug, just... Gimme like five minutes.
Tried this, it didn't work, so I assume I did something wrong. Did you mean this?
priority = PlaylistPriority.CellMatch-1,
I have never coded with lua before so, I am blundering around in the dark here
Yeah, that's exactly what I was thinking of.
I can't check rn, am at work, what Prio is the Anvil playlist at?
It's the same, I think. priority = PlaylistPriority.CellMatch
The change you made to the priority should be good then.
Maybe the matches are screwed up.
Lemme see what happens if I add chapel and temple to the disallow list for anvil music
Odd, nothing
Anvil looks like this
local AnvilPatterns = {
allowed = {
"anvil",
"marav",
"hal sadek",
"archad",
"brina cross",
"goldstone",
"charach"
},
disallowed = {
'sewer',
'underworks',
'crypt',
},
}```
And Temples looks like this
```---@type CellMatchPatterns
local TemplePatterns = {
allowed = {
"anvil, chapel",
"anvil, temple",
"brina cross, chapel",
"charach, chapel",
"fort heath, chapel",
"goldstone, chapel",
"thresvy, chapel"
},
disallowed = {},
}```
Idk what fixed it, but something fixed it
Thanks for the help
Huh. Okay lmao.
I'll double check the priorities are good!
I've only been playing in Anvil so nbd to check it out on my side 💜
By the way how would I hypothetically go about putting together a playlist of music that will only play at night in-game
A request @sly helm. Not sure if possible but I would love if there was a longer fade option going from battle to exploration
especialy since I prefer normal exploration music off the the battle music cuts very abruptly
There's an option for the fadeOut.
Although ....
I think the currently published version just straight up uses it incorrectly
Try changing that setting and please lmk if it works.
I remember someone told me it was implemented wrong (it totally was), you can scroll up far enough and see it.
Super easy! Sorry I didn't reply last night. Actually I guess I have some improvements to make here...
Anyhow, there are two options.
local function tombCellRule()
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and Playback.state.playlistTimeOfDay == 'night'
end
Playback.state.playlistTimeOfDay, will be morning, afternoon, evening, or night, each covering six hours of the day. So ^ works if you don't wanna be SUPER specific about it.
If you wanna be more detailed you can do this:
local timeRules = { min = 8, max = 12 }
local function tombCellRule()
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and Playback.rules.timeOfDay(timeRules)
end
This way allows you to set specific times of day.
I'll probably do night, and probably also want to lock region priority at some point since I want it to play on Vvardenfell and TR but not anywhere else
Thanks
As I've said I've never coded in Lua before. I'm a C# person >~<
Oh, okay, that's cool! I like C# a lot, depending on the day
Imagine if you could write C# whilst drunk and you get the basic idea
Not many rules, typing is entirely your problem
I mostly learned it in school to do visual studio work with Unity
I'll probably look into certification so I might maybe one day get a job lol
Me too!
Those were the days I didn't like C#. 
C# isn't that bad to me, just gets annoying when I try to use some advanced function protocol I learned yesterday on a stack overflow thread for dialogue queueing and the next two days are just me debugging
The unity impl runs like shit and I don't really like their API/Docs
When the whole time I could have just done twine integration =~=
DIvorced from Unity, the language shines
Although I learned to strongly prefer rust in the end
After the incident I want to try and learn Godot and see if it's any better
Oh yeah.
I'd absolutely encourage learning godot, the ecosystem behind it is growing rapidly after The Incident
(also another reason I won't be going back to Unity, personally)
No weirdly enough the language so far I dislike the most was actually python
Idk why but the freeform syntax was mind bogglingly frustrating for me lol
Aaaaahhhhh, that's a good sign 😄
What autism does to a mf
Yea significant whitespace is super cringe garbage
The ONE thing I do think is really cool about Python is comprehensions, but it's not even close to being worth the cost of not realistically being able to ship Python apps to users, and everything constantly being broken because "it's easy!"
What people really mean when they say "it's easy" is, I didn't have to verify anything actually works properly

fight me irl python devs
Lol
python devs wouldn't even make it to the fight debugging stack traces
ANYWAY I'm hopping in to test that chapel issue, do you have a specific cell name I can check out?
okay yeah bumping the priority down on the Anvil playlist by one confirmed fix 👌
Nice
I was using Temple of the first Breath
Since my PC save was outside the fighters guild
also where I'm testing
No honestly I think the -1 may have fixed it??? It's just that S3maphore waits until the current track is over before switching for me, so I had to actually quicksave/quickload to hear
yea that's the default setting
I'm fine with it, just feel a bit dumb lol
I didn't wanna do it that way originally but everyone and their mom and dog asked for it, haha
You can disable it in the settings menu if you want
I still like how dungeon music comes in immediately
also configurable, but kinda skeptical that specific one needed to be a setting
Love the open endedness of the playlists though since I can just use the framework for the Project Cyrodiil music mod with S3maphore and then drag in Oblivion music from my install
Yeah actually I've been meaning to set up some proper oblivion playlists for it
Like using the dungeon rules and stuff
What I reeeaaaallllyyyy want, is to make some Lorkhan playlists
Only had different music for the Aylied Ruins (They Left me in here, and Diaspora Nenalata) and Chapels (Nox Atra) from BS Bruma
No idea if I already borked this
local function tombCellRule()
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and Playback.state.playlistTimeOfDay == 'night'
end
---@type S3maphorePlaylist[]
return {
{
-- 'Skywind Nighttime Music',
id = 'ms/time/morrowind night',
priority = PlaylistPriority.Tileset,
randomize = true,
isValidCallback = function(tombCellRule)
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and Playback.state.playlistTimeOfDay == 'night'
end
}```
Seems legit. One note I'll mention, that has not made it into documentation yet, is that you no longer need to require anything inside of a playlist.
Y'see how current ones don't take the playback argument, and it's now Playback, capitalized?
I see
That's because of this
So when every playlist is loaded, this curated environment is fed into it
You can even use the print function here to debug your playlist, and the messages will only be emitted if you have the debugMessages setting enabled
Evidently it's not. Testing in-game and it's 1am and it's not playing
No the playlist timeOfDay thing is just kinda jank.
12-6 am is morning.
6pm-12am is night.
Oh ok
It's broken up into chunks of six
Lemme just do manual then
yeah, before you even have timeofday rules Sector needs to update the function, you can do a simple patch in the meantime. go to S3maphore\scripts\s3\music, open playlistRules.lua and find this line
math.floor(core.getGameTime() / 3600)
add % 24 to it like I wrote above.
Check out the playlist file sandcastles posted
And test it on a new game, eg using --skip-menu --start "some cell name"
I already fixed this like immediately but the new version including said patch isn't yet published
I can send it to you if you want
Dwamn
Oh no you don't have to start a new game for the next update to work
It's just that when I first made that rule I only was testing in new games, and I didn't notice my math doesn't work after the first day of gameplay. 😅
So like, it's supposed to calculate the hour of the day, between 0-24, and instead after a long time of play you'll get it up to 9000 or whatever
Ok so it's still not working, do I need to install the patch and do manual time of day?
Also this seems to be min/max. How do I structure like 8pm to 4am for example?
Yes, those two things are unrelated
Because I am pretty sure if i do min = 4, max = 20 It will be the opposite
It will, BUT
Just change it to not Playback.rules.timeOfDay(whateverRange)
That's what sandcastles was talking about
Ok testing now
Still no luck
Lemme dump the current lua
local function tombCellRule()
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and not Playback.rules.timeOfDay(timeRules)
end
---@type S3maphorePlaylist[]
return {
{
-- 'Skywind Nighttime Music',
id = 'ms/time/morrowind night',
priority = PlaylistPriority.Tileset-1,
randomize = true,
isValidCallback = function(tombCellRule)
return not Playback.rules.cellNameExact(TombCellExclusions)
and Playback.rules.cellNameMatch(TombCellMatches)
and not Playback.rules.timeOfDay(timeRules)
end
}```
Wait I think I see what's wrong
No, lemme edit to what I changed though
Hmm wait a sec
What should I invoke for playlist priority
Since it's set to tileset right now that doesn't seem right
I forget the exact name, but CellMatch is likely most appropriate here
There's also an explicit time of day priority that supersedes most of the others you might orefer
Tileset is meant for instances where you're using one of the static rules, eg for daedric objects or whatever
If I do CellMatch without specifying any cells that's fine, right?
I'm not sure what you mean, sorry. It looks like your playlist still uses the CellMatch rule
But in any case, you can set any priority level you like
The only thing you shouldn't do is use an explicit number, like 1000 on an explore playlist
Because the actual numbers behind those enums may change at some point, if I need to
It's just a classification thing to allow them to layer better
I think my syntax is just bad because my Ashlands playlist isn't working either
The F10 log should indicate whether it threw trying to load the playlist or not, and also you can tell if it loaded at all if you look in the settings menu and try to find it.
Post the file?
I'll post both
It looks like you might be missing a second close brace }
ah, yes, ashlands is missing a close } at the end
I see what you meant about not having any cell names now
your log is probably full of errors from the nighttime one
oh, they're both missing close }
If you use vscode, and add the 00 Core folder to your workspace, you can get completions for all the rules and everything
Honestly this is a sin but I was using Notepad lmao
If Visual Studio works with lua I will use that
Idunno about Visual Studio, VSCode definitely does
Oh those are two different things?
yes

You're most likely using Visual Studio Code
Please don't ask me why microsoft adopted this stupid naming convention or why they even have two editors
VS is mostly for hardcode C++ dev, VSCode is the one everyone else uses
I'll test the modified lua's you made first, and thank you
yea, of course!
I was using VS actually, because Unity workflows yada yada
huh. It's been a while but I thought all the unity extensions were for VSCode
I'm not really even sure if they're different extension systems or not
But yeah I was probably overlooking the end brackets since, again, I was notepad coding like a moron
That's what all the ---@type stuff in the mod is for, they're not functional at all, it's just error checking
I seem to have done it so aggressively most people who don't know better think it is though which I consider a success
:
For me at least it was lol
Yeah lol
Also probably why music just doesn't play now at night
Prioritizing red mountain region music over combat music
Is the main one rn to me
So if I am like fighting hordes of corprus beasts and cliff racers I still hear whatever music I'm using for red mountain
hello
I tried a test build with the silence feature
much needed feature, a cherry on top that completes the mod for me, as I don't need to have dozens of silent mp3s in every folder anymore
in skyrim of course you have to specify the silent track manually, track by track and by duration
but I think you have an elegant and simple implementation, make a minimum and maximum duration of silence, have it choose randomly between the two, and chance of a silence track of course
I feel like you can ditch the silence between playlists and have it only between tracks
in the build you posted, skipping a track with F8 would never play silence. and when it plays, it spams the console the countdown on every frame
Damn, totally forgot. Sorry. Here goes:
GlobalSilenceToggle: Aktivera tysta spår
GlobalSilenceToggleDesc: Om det ska förekomma en paus mellan varje låt som spelas eller inte.
GlobalSilenceChance: Chans för global tystnad
GlobalSilenceChanceDesc: Chansen för att en spellista som inte definierar sina egna tystnadsregler inte omedelbart spelar upp en annan låt.
ExploreSilenceMin: Kortaste tystnad under utforska
ExploreSilenceMinDesc: Minsta möjliga varaktighet med tystnad när en utforska-spellista körs.
ExploreSilenceMax: Längsta tystnad under utforska
ExploreSilenceMaxDesc: Längsta möjliga varaktighet med tystnad när en utforska-spellista körs.
BattleSilenceMin: Kortaste tystnad under strid
BattleSilenceMinDesc: Minsta möjliga varaktighet med tystnad när en strid-spellista körs.
BattleSilenceMax: Längsta tystnad under strid
BattleSilenceMaxDesc: Längsta möjliga varaktighet med tystnad när en strid-spellista körs.
ey ey ey
en svensk broder
Haha. Du har nog missat kanalen #skandinaviskt samt att allt som går att översätta i OpenMW är översatt. :)
Yeah, the log spam’s intentional, for now anyway. Had to make sure it worked!
Was kinda in a rush so didn’t add a check for whether or not playlists change, but, I can do that no probs.
I forgot about this but I’d probably make whatever Red Mountain playlist use PlaylistPriority.Special + 1
You could also just not do the + 1 but Special playlists don’t follow the same rules as others. Which may be exactly what you want
Could you use special for example to play a certain song when the game starts in the ship? Or what about the first time you enter a cell/area?
Yep.
It's the ideal playlist for any one-off thing you can make up, I have plans to use it for both of those things
Neat!
Can this mod detect weather? Putting in the Daggerfall weather tracks in correct occasions when outdoors would be sick.
yep.
I'm not sure if this particular rule ever made it into the docs but I did an awkward mwscript bridge setup that tracks weather
Which, come to think, I guess I don't need now...
What would be the correct form to use in a playlist? Or is the answer "wait for now because I'm about to change the format and the new system will be clearner?"
S3ctor really just be pulling the dopest shit out of his ass at random
Can you elaborate a bit?
I’m adding some new fields in the next version, but the format isn’t changing enough that you should bother to wait on me for anything.
Oh, sure. Like, I assume tying playlists to cell names uses the same form the Dynamic Music used.
not remotely, no
But how would I replace the condition with weather, so that during a blizzard, say, it adds G_Snow to the rotation?
Hah, fair, the lists S3maphore ships with are close enough I can read it from Dynamic Music lists.
Again, regarding Cell names.
---@type CellMatchPatterns
local ImperialPatterns = {
disallowed = {
"sewer",
"dungeon",
"fields",
},
allowed = {
'firewatch',
'helnim',
'old ebonheart',
'teyn',
},
}
return {
-- way more stuff
{
id = 'Tamriel Rebuilt - Imperial',
priority = PlaylistPriority.CellMatch,
randomize = true,
tracks = {
'Music/MS/general/TRairdepths/Dreamy athmospheres 1.mp3',
'Music/MS/general/TRairdepths/Dreamy athmospheres 2.mp3',
'Music/MS/cell/ImperialCity/Beacon of Cyrodiil.mp3',
},
isValidCallback = function()
return Playback.rules.cellNameMatch(ImperialPatterns)
end,
},
-- more stuff
}
So like here's your imperial playlist right
{
id = 'Tamriel Rebuilt - Imperial - Snow',
priority = PlaylistPriority.CellMatch - 1,
randomize = true,
tracks = {
'Music/MS/general/TRairdepths/Dreamy athmospheres 1.mp3',
'Music/MS/general/TRairdepths/Dreamy athmospheres 2.mp3',
'Music/MS/cell/ImperialCity/Beacon of Cyrodiil.mp3',
},
isValidCallback = function()
return Playback.rules.cellNameMatch(ImperialPatterns) and Playback.state.weather == 'blizzard'
end,
},
You make another playlist that checks the weather in its isValidCallback
This makes me suddenly realize I need a new priority level for weather, probably.
making it a lower priority than whatever the normal playlist is, is critical
OR iif you literally just write the weather-based playlist after it in the file, since registration order will be later also
these are the weathers, copied 1:1 from the actual names the game uses:
---@enum WeatherType
local WeatherType = {
[0] = 'clear',
[1] = 'cloudy',
[2] = 'foggy',
[3] = 'overcast',
[4] = 'rain',
[5] = 'thunder',
[6] = 'ash',
[7] = 'blight',
[8] = 'snow',
[9] = 'blizzard',
}
weather was kinda half-assed, I guess.
it also sends events when the weather changes so you could just leverage that to play a special track, but that's more script-intensive than just a normal playlist
in the sense of being more to actually write yourself, I mean.
fish spotted