About This File
This plugin plays thrust/slap sound when actors genitals collide in a SexLab scene.
Preview: https://files.catbox.moe/pplqtg.mp4
Attention: you might want to take a look at Procedural Penis Animations/Collision mod, it contains procedural sex sounds feature which is implemented way better than in this mod.
Requirements:
- Skyrim SE/AE/VR
- Address Library for SKSE Plugins
- Backported Extended ESL Support - only for Skyrim versions below 1.6.1130
Recommended optional dependencies:
- SKSE Menu Framework - if installed, allows to open settings, troubleshooting and debug menu (something like MCM). Press F1, then select "SexLab Sex Sound" menu item
- Papyrus Tweaks NG - if this mod doesn't work for some reason try installing Papyrus Tweaks for "Fix delayed script breakage" bugfix
How add sounds to animations manually:
1. Install SKSE Menu Framework
2. Open "Data/SKSE/Plugins/SKSEMenuFramework.ini". Set these options:
- FreezeTimeOnMenu = false
- BlurBackgroundOnMenu = false
3. Open the game
4. Go to MCM => SexLab
- Set Voices & SFX volume to 1% (optional)
- Set "Auto Advance Stages" = No
5. Play animation using SexLab
6. Press F1
7. Open "SexLab Sex Sound" => "Animation editor"
8. Currently playing SexLab scene should be displayed here
9. Press "Add marker" when sex sound should play in this animation
10. You can edit Sound Category for this marker under "Markers" collapsible section below animation timeline
11. After adding all markers press "Save animations" (optional, there is autosave every second)
12. Now you can change animation/stage to add markers to different scene
Annotated animations are saved to "Data/SKSE/Plugins/SexLabSexSound/Annotations" folder.
Configuration:
- If you have SKSE Menu Framework installed, you can press F1 and change settings there. Otherwise refer to "Data/SKSE/Plugins/SexLabSexSound.json":
{ "logging": { // Valid values: critical, error, warn, info, debug, trace, off // Log file is written to "C:\Users\<username>\Documents\My Games\Skyrim Special Edition\SKSE\SexLabSexSound.log" "logLevel": "debug", "flushLevel": "debug" }, "animationEditor": { // Every time you change animation it will be autosaved after this amount of time. "autoSaveAnimationsInSeconds": 1.0, // When you use "Auto create markers based on bone distance sound players" option, new marker will not be created if there is another marker nearby. "minDistanceBetweenAutoCreatedMarkersInSeconds": 0.2 }, "sound": { // Power of controller rumble when sound plays in scene involving player character. // Doesn't do anything if controller is not attached. // Valid value from [0.0, 1.0] // 0.0 = disable controller rumble // 1.0 = full power "controllerRumbleStrength": 0.2, // Duration of controller rumble in seconds. // 0.0 = disable controller rumble // 0.2 = rumble will last for 0.2 seconds "controllerRumbleDuration": 0.2 }, "soundCategories": [ { // Name of sound category. Must be unique across all sound categories. "name": "Vaginal", // Plugin name where Sound Descriptor is located "plugin": "SexLabSexSound.esp", // HEX value of Sound Descriptor FormID to play on each thrust (https://ck.uesp.net/wiki/Sound_Descriptor) // Example: 12AB "formId": "2", // Sound volume. 1.0 is 100%, 0.0 is 0% "volume": 1.0, // Controller will rumble when this sound is played, this setting // can be used to multiply controller rumble strength ("sound" => "controllerRumbleStrength") // 0.0 = disable controller rumble for this sound category "controllerRumbleStrengthMultiplier": 1.0, // Color for marker in animation editor in RGBA format "color": [ 0.583, 0.823, 0.376, 1.0 ] }, { "name": "Anal", "plugin": "SexLabSexSound.esp", "formId": "2", "volume": 1.0 }, { "name": "Handjob", "plugin": "SexLabSexSound.esp", "formId": "4", "volume": 1.0 } ], "stageHandlers": [ { // Only play sound when stage has this tag "stageTag": "Vaginal", // The sound will be played whenever the given bones are closest to each other "victimBone": "VaginaDeep1", "aggressorBone": "NPC Genitals01 [Gen01]", // Determines at which point to play the sound (value between 0.0 and 1.0) // 0.1 - sound will play when two bones are closest together // 0.9 - sound will play when two bones are furthest apart "distanceThresholdFraction": 0.1, // When stage starts pauses for this amount of seconds before playing sounds "initialCooldown": 1.0, // Sound category. Information from it is used to play sounds. "soundCategory": "Vaginal", // If set the amount of seconds that two sound triggers will need to be apart in order for the sound to be played // This can be used to not play the sound at fast speeds "minInterval": 0.05, // If set the amount of seconds that the time between two triggers cannot exceed in order for the sound to be played // This can be used to not play the sound at slow speeds "maxInterval": 0 }, { "stageTag": "Anal", "victimBone": "NPC Anus Deep1", "aggressorBone": "NPC Genitals01 [Gen01]", "distanceThresholdFraction": 0.1, "initialCooldownMS": 1000, "soundCategory": "Anal", "minIntervalMS": 50, "maxIntervalMS": 0 } ] }
Known issues:
- Not all animation files are annotated. In that case sound will be played using "bone distance" system - sound will play depending on distance between actors' genitals. This system has some limitations, for example:
- Sound only plays for stages that are tagged as "vaginal", "anal", "blowjob"
- SexLab stages often incorrectly tagged, because of that incorrect sounds may play
- Only 2 actors are supported
- Might not work correctly for all animations
- Sound might stop playing if actors are realigned (change stage to fix this)
- (Only applicable to SexLab SE) If scene takes a lot of time to set up sound might not play at all, I recommend to increase "initialCooldown" in "Data/SKSE/Plugins/SexLabSexSound.json" to fix this
Troubleshooting:
Press F1 (SKSE Menu Framework has to be installed), go to "Troubleshooting" page. If you see any errors there, try this:
- Disable "SexLabSexSound" mod in mod manager
- Load your save. It will say "SexLabSexSound.esp is disabled", thats fine, load the save anyway
- Save game again. Quit
- Enable "SexLabSexSound" mod in mod manager
- Load your last save
- Open "Troubleshooting" page again and check if there any errors
If this did not help you need to send logs, I can't help otherwise.
1) In Skyrim.ini set these options:
[Papyrus]
bEnableLogging=1
bEnableTrace=1
then load the game and try to reproduce the issue.
2) Send C:\Users\<username>\Documents\My Games\Skyrim Special Edition\Logs\Script\Papyrus.0.log AND C:\Users\<username>\Documents\My Games\Skyrim Special Edition\SKSE\SexLabSexSound.log in this thread or in DMs
You can look into these files yourself, maybe there is a hint why things don't work.
Credits:
- OStim Standalone - bone distance code, sounds
- CommonLibSSE-NG-Template-Plugin
License: GNU General Public License v3.0
Full changelog
0.14.0:
- Added sound annotations for 178 animation files
0.13.0:
- Added "Animation picker" tab. Works only with SexLab P+
- Added todo field to JSON annotation file. It can be edited in "Animation editor" => "Advanced" => "TODO".
- Fixed bug when mod would receive animation start and end events out of order due to asynchronous nature of Papyrus script execution, causing sound not to play. This was fixed by adding delay before destroying state for SexLab thread, then checking if scene has actually ended after timeout. Delay amount can be changed in "Settings" => "Workarounds" => "Thread state destroy delay"
- Fixed bug causing mod to write JSON annotation files without meaningful information
- Fixed "animationName" field in JSON annotation file to be empty for first stage of animation
- Fixed "animationName" field in JSON annotation file not updating if with newer animation name if JSON was already loaded by the mod
- Removed "Failed to load annotated animation..." error message from SexLabSexSound.log when annotated JSON file does not exist
- Added sound annotations for 105 animation files
0.12.0:
- Fixed bug where annotated sound would not play if it was at the end of animation and animation has looped back to start
- Fixed bug in animation editor where it was possible to drag marker beyond animation timeline
- Fixed inconsistent indent in collapsible headers inside "Settings" section
- Added "Debug" tab with "Fix player character looking at random shit" button. This function has nothing to do with SexLabSexSound, I just put it here because it's convenient for me =). This fixes issue where player character looks at NPCs/corpses in game and first person model becomes broken. Some mod sets IsNPC=1 in animation graph and doesn't revert it back, I made this button to fix this issue.
- Added sound annotations for 22 animation files
0.11.0:
- Fixed bug when information about current animation did not update correctly after user has pressed built-in "O" hotkey to change animation, which caused sound playback system to use data from previous animation. This issue only happened on original SexLab Framework, SexLab P+ was not affected
- Fixed bug when sound playback system would try to use sound annotations for "Animations\male\MT_Idle.HKX" (default idle animation) after user has started new SexLab animation or pressed animation change hotkey "O". This issue only happened on original SexLab Framework, SexLab P+ was not affected
- Added workaround for cases where SexLab does not send animation change event that is used by SexLabSexSound to update sound playback state. This fixes stale information issues when lead-in animation ends or when "SexLab Defeat SSE" animation picker is used. This issue only happened on original SexLab Framework, SexLab P+ was not affected
- Animation editor is now blocked if current animation is default idle animation to prevent adding sound annotations to wrong animation
- Improved error checking in "Troubleshooting" and "Dump SexLab animations" pages
- Added instructions on how to fix your save to "Troubleshooting" page
- Added sound annotations for 61 animation files
0.10.0:
- Fixed hotkey "M" for "Add marker" action in animation editor working when it should not
- SexLab animation name is now saved into annotated animation JSON file
- Added "Dump SexLab animations" tab. It can be used to see which animations don't have manual annotations (this page only works for SexLab P+)
- Added "Delete" button for active bone distance sound player in "Live scenes" tab
- Now all bone distance sound players are shown in "Live scenes" instead of first one
- Added sound annotations for 138 animation files
0.9.0:
- Added automatic bone distance sound player for blowjob animations
- Added bone distance sound player for handjob. This one doesn't work automatically because SexLab stage tags do not contain information whether actor is using right or left hand, but it is still useful for animation annotation automation
- Deleted "Debug => Dump actor node names" settings option. This functionality was moved into "Animation editor => Advanced => Actor node selector" with new UI instead of writing data into logs
- Added display of current animation tags in "Animation editor" and "Live scenes"
- Added ability to change markers' sound categories in bulk. Go to Animation editor => Marker => Category, when you select category hold Shift key and all markers will change their sound categories to selected one
- Replaced text edit with combobox selector widget for stage tag in "Live scenes => Create bone distance sound player"
- Added "Reset dynamic state" button in "Live scenes". Allows to reset bone distance sound player without changing animation stage
- Improved text display of stage handlers in "Settings" tab
- Updated "Animation editor => Auto create markers based on bone distance sound players" to create markers using sound category from respective bone distance sound player, previously it would use sound category from nearest marker
- Added sound annotations for 50+ animation files
0.8.1:
- Fixed crash on startup for Skyrim VR
- Updated JSON schema file for SexLabSexSound.json
0.8.0:
- Added controller rumble when sound plays in scenes involving player
- Added settings related to controller rumble in new "Sound" settings section and in "Sound category" settings
- Added colors to sound categories, this color is used in animation editor for markers and sound category picker widget
- Sound category is now selected using combobox widget instead of text edit widget
- Improved error handling when SexLabSexSound.json contains incorrect data
- Added JSON schema file for SexLabSexSound.json
- Added sound annotations for 50+ animation files
0.7.0:
- Added support for playing sound for animations with more than 2 actors (animation MUST be annotated in this case)
- Added "M" hotkey for "Add marker" action in animation editor
- Added ability to manually attach bone distance sound player to actors in "Live scenes" menu section (actors must be in animation). This is mostly useful for automating animation annotation
- Added sound annotations for 45+ animation files (including threesome anims)
0.6.0:
- Removed AnimationPatcher program. It is no longer needed to patch .hkx animations. Sound annotations are now stored in seperate JSON files inside Data/SKSE/SexLabSexSound/Annotations folder
- Removed PayloadInterpreter dependency. Mod now hooks into the game itself and plays sound without using annotations from .hkx file
- Removed settings option "updateThread.updateEveryMS". Now mod hooks into main thread and update logic runs every frame
- Added in-game "Animation editor" in MCP menu (F1 key). Requres SKSE Menu Framework to be installed. Allows to annotate animations in-game without running additional software
- Bone distance sound players and annotated animations can run and play sounds together now
- Added sound annotations for 70+ animations
- Improved logging format for SexLabSexSound.log file
- Improved version check for SexLab P+
- Added error message popup on startup when Data/SKSE/Plugins/SexLabSexSound.json contains invalid JSON
- Added sounds for blowjob, spanking
- Renamed settings "stageHandlers.initialCooldownMS", "stageHandlers.minIntervalMS", "stageHandlers.maxIntervalMS" to "stageHandlers.initialCooldown", "stageHandlers.minInterval", "stageHandlers.maxInterval" in SexLabSexSound.json. These options now take seconds instead of milliseconds
0.5.1:
- Fixed crash on startup when Data/SKSE/Plugins/SexLabSexSound_PatchedAnimations.json does not exist
0.5.0:
- Added SEQ file to fix startup quest not working for some people
- Sound volume no longer depends on SexLab SFX volume
- Added support for playing sounds baked in animation files. This functionality requires Payload Interpreter to be installed: https://www.nexusmods.com/skyrimspecialedition/mods/65089
- Added animation patcher program that annotates animation files with sound playback data. It is located in "SexLabSexSound_AnimationPatcher" folder. Run it using MO2 virtual file system to patch animations. Also sorry for big file size, I will fix this later
- Added example patches for 2 animation files that use new system (this list will be expanded later)
- Added interoperation between old & new sound playback systems (old system will not create sound playback handlers if it detects that animation is patched by new system)
- Added "Sound Categories" to JSON config file
- Added in-game editor for sound categories
- Sound-related properties were removed from stage handlers JSON and replaced with reference to "Sound Category"
- Added handjob sounds & handjob sound category
0.4.0:
- Fixed sound not diminishing with distance for NPC scenes (this feature doesn't work with scenes involving player)
- Fixed bug causing sound not to play in non-aggressive scenes. This error only affected SexLab P+
- Added game version logging and several integrity checks in DLL and Papyrus script
- Added "Settings" mod menu page that allows to edit JSON settings in-game (requires SKSE Menu Framework to be installed)
- Added "Troubleshooting" mod menu page to check that mod is running correctly (requires SKSE Menu Framework to be installed)
- Renamed page "Debugger" to "Live scenes" in mod menu
0.3.0:
- Added debug UI panel. Requires SKSE Menu Framework (https://www.nexusmods.com/skyrimspecialedition/mods/120352) to be installed. To open it, press F1 and select "SexLab Sex Sound -> Debugger" menu item
- Fixed bug causing sound not to play in non-aggressive scenes. This error only affected SexLab SE
- Fixed issue where stage handler wouldn't get deleted after animation ends. This error only affected SexLab SE
- Added code to delete stage handler when actor bone could not be found (fixes error spam of "findActorNode failed: cannot find bone ..." in logs)
- Changed default log level from "info" to "debug"
0.2.0:
- Added compatibility with SexLab Framework (previously only SexLab P+ was supported)
- Enabled compiler optimizations for Papyrus scripts
0.1.0:
- Initial release
Edited by wabuke
new version 0.7.0
What's New in Version 0.14.0
Released
- Added sound annotations for 178 animation files