A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Assets and Asset Store' started by dark_tonic, Jan 28, 2013.
Thanks anyways. I'm digging further into it. It looks to be UCB related, although I'm not sure yet.
Can now confirm that it's a Unity Cloud Build issue which is being fixed as we speak. For more info: https://forum.unity.com/threads/ios-build-unable-to-find-quicklookthumbnailing.777827/
Great! Thanks for the update.
Hey @jerotas just wanted to ask if Master Audio works with Asset Bundles and Addressables out of the box or are there some things to keep in mind?
Bundles yes, info here: https://www.dtdevtools.com/docs/masteraudio/AssetBundles.htm
Addressables, it's not possible to work "out of the box" since that's an optional package. Meaning it wouldn't compile if I had code using those unless you had the package installed. I am currently trying to figure out how and if to support addressables actually, but currently there's no support.
Aye, thanks! But refering to Addressables:
should there be an issue if all my music files are marked as addressables and I load/manage the assets with the whole Addressables API?
No idea about that, sorry. You'd need to give me a whole scenario with detail.
Alright, guess I'll fool around and see for myself
Let me know what you find.
@jerotas Is there some way to organize SFX under the MasterAudio prefab? I've been looking through the forum and documentation and I can't find anything about it.
It seems a bit silly to me for a game with tons of SFX to have to keep them all nested under 1 MasterAudio prefab, it makes it very difficult to work with and find what SFX I'm looking for.
For example, is there some way to keep all 'Player' related SFX organized somewhere, and all 'Weapon' SFX elsewhere?
There's a good reason you couldn't find anything on it. It's been asked a few times, but no, there are no other organization layer you can use here in the Hierarchy.
However, there are good workflows here. I would suggest you discard the notion that you should locate your Sound group using the Hierarchy window. As you've noticed, that doesn't scale well.
Instead, locate your Sound Group from the mixer section of the Master Audio game object. There you can use the bus filter to show only the Sound Groups in the "player" bus. The rest of the noise will disappear. You can also sort by bus, and filter by partial Sound Group name. These have all been added to assist with large numbers of Sound Groups. Yes, they pretty much require you to using buses, but that's pretty much a necessity anyway, since buses are what you use to send the audio to a Unity mixer channel.
Also, make sure you only include the Sound Groups the current Scene needs, and load up others using a Dynamic Sound Group Creator.
I'm not sure what you're trying to do here, but Audio Clips are loaded into Variation game objects when the scene starts. There's no chance for you to load something elsewhere because by the time you do, the Variations are already queued up and ready.
So I don't think so.
I am coincidentally looking into supporting addressables but it may take a few weeks. We'll see soon.
Humm, I am not sure what I am doing wrong but when I try to use the Dynamic Sound Group Creator I get this error :
NullReferenceException: Object reference not set to an instance of an object
DynamicSoundGroupCreatorInspector.CreateVariation (UnityEngine.Transform aGroup, UnityEngine.AudioClip aClip) (at Assets/Plugins/Editor/DarkTonic/MasterAudio/DynamicSoundGroupCreatorInspector.cs:2775)
DynamicSoundGroupCreatorInspector.CreateGroup (UnityEngine.AudioClip aClip) (at Assets/Plugins/Editor/DarkTonic/MasterAudio/DynamicSoundGroupCreatorInspector.cs:2751)
DynamicSoundGroupCreatorInspector.OnInspectorGUI () (at Assets/Plugins/Editor/DarkTonic/MasterAudio/DynamicSoundGroupCreatorInspector.cs:594)
UnityEditor.UIElements.InspectorElement+<CreateIMGUIInspectorFromEditor>c__AnonStorey1.<>m__0 () (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorElement.cs:501)
UnityEngine.GUIUtilityrocessEvent(Int32, IntPtr) (at C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)
This happens when I assign group control and variation control templates in debug mode as suggested, and then dragged audio clip into it. Using the latest version from store.
You have a really screwed up Master Audio game object then. I suggest deleting it and creating a new one from the Master Audio Manager window.
If there are any warnings near the top of the mixer section let me know or import again from asset store.
Ive just updated to unity 2019.3 and i'm having inspector problems.
i see that in V 4.2.7 change-log you wrote that it fixed but in beta, i downloaded this version and still doesn't fix it.
Is there a beta version or am i missing something.
Show me a screenshot of what you're talking about. It shows fine on my computer, both light and dark skin.
But yes, I did have a couple things I fixed after the last release.
You can email me with your Asset Store invoice PDF for the latest beta if you like.
Hi, I'm just getting starting to use MA and I have one quick question.
I have many different sound effects audio clips and it looks like I need to create a "Master Audio Group" for each clip.
Assume, each clip is not variations but they are independent audio clips but share the same setup.
For example, think of bullet hit sound effects on various types of materials.
What I would like to do is to create a "Bullet Hit" Audio Group and put all related audio clips in there.
Is it possible to do so? Creating a separate Audio Group for the individual bullet hit audio clips seems like overkill.
Well, thinking a bit more about expressing Bullet Hits, it will be nice to have some variations of the bullet hit. What would be ideal is to have nested Groups. The most of the Bullet Hit will have only one audio clip and they are put into the topmost "Bullet Hit" group, and some Bullet Hit that has variations will be put into nested Group within the topmost Group.
From API's perspective, we will need something like, MasterAudio.PlaySoundAndForget("Bullet Hit", "Concreate", ...)
"Bullet Hit" is the topmost Group, and "Concrete" can be either the nested Group or just the name of AudioClip.
From a programmer's perspective, we don't need to know whether "Concreate" has variations or not.
I hope it makes sense.
We will not be doing nested groups, it's been asked before, and I've evaluated it. That makes things more complicated than a lot of users can understand. Also, there are performance implications when you get down to 4 levels of Hierarchy with anything, and we're currently at 3.
As you mentioned, you can of course accomplish what you said by making a Sound Group called "Bullet Hit Concrete" without nested groups. And "Bullet Hit Wood" group, etc.
That will make selecting the Sound Group in your script just selecting a value from a dropdown if you use the [SoundGroup] attribute on the field. No copy/paste or room for error.
You said the following: "Assume, each clip is not variations but they are independent audio clips but share the same setup."
If that's so, then I would suggest putting all the Bullet Hits in a single Sound Group as Variations and play the Variation you want by specifying it. There is a parameter for that in PlaySoundAndForget which is optional.
Hmm.. I see. Specifying a variation name will help. But some bullet-hit have variations (if there are many different types of Concreate sound) but some won't . And it's little inconvenient because I have to know if it will have variations or not before I call Play.
I have an idea. If we add folders within the Group, I'll put similar AudioClips into the folders. Some AudioClip will be in a folder and some will not be in a folder. And I can call Play with a variation name and it happens to be a folder name(this folder is like a group within a Group), it will play one of the AudioClip from the folder. The randomness will use the same setup from the Group. This way, we can have a nested group without implementing a new Group component. Yeah, we can limit to one folder depth, so that we don't have folders within folders.
What do you think?
In that case, just make a Sound Group for each material and don't worry about it (I know you said it's wasteful, but it works reliably). I don't really understand the objection or why it's wasteful if it helps your workflow and productivity.
You can't alter the expected Hierarchy structure of the Master Audio game object (adding folders) or it will throw errors left and right and cease working. The Group reads information from the SoundGroupVariation script in each child game object on Start. If any child doesn't have that script, it will break.
The thing is I'll have 1000s of sound files and most of them won't have variations. I can't imagine having them listed as one gigantic child objects of MasterAudio.
I'm not talking about adding physical folders(component) but logical folders, like below.
You can call Play with variation name. If the name happens to be folder and it will play one of the variations within it. Hope that makes sense.
This way, I can organize many different sounds using one Group and I believe the existing mechanism will work with minor modifications.
It may seems simple but its nowhere near that. And also we have to consider backward compatibility with our > 7000 existing customers. So we take no change lightly.
It's fully ok to have 1000 sound groups if that is necessary for you. You keep them collapsed in the Hierarchy and manage through the Master Audio mixer section where you can filter by bus or partial group name so you're not looking at 1000 there. In our games we have close to 200 Sound groups and some of our AAA clients have upwards of 300 but I have never heard of higher usage than that.
I have doubts that you need 1000's in any one scene. You should investigate using Dynamic Sound Group Creators to bring numbers of Sound groups in and out id the Master Audio game object only when you need them. I would be more worried about scene load time and memory usage with so many audio clips honestly. Even with Master Audio out of the equation.
Right, Memory usage is important and planning on using Addressable.
Have you considered supporting them?
In the meantime, I'll take a look at Dynamic Sound Group Creator and see if that can be used instead.
And lastly, the "Folder" suggestion shouldn't break the existing project. It's completely optional. Even when you add Folders, the existing systems should just work. The Folder name is used like AudioClip. I hope you reconsider supporting them. No matter how efficient Group is, using a single AudioClip Group can't be more efficient than using as many AudioClips in one group. Besides, I think Folder makes AudioClip management much easier.
Yeah, that's actually what I've been working on for the last 3 weeks - Addressables. Got one main part working, and lots of edge cases to fix still.
I still think what you are proposing is a bit strange - useful possibly - but specifically I don't think it's easily understandable in the UI. Do you think that assigning optional "tags" to the Variations and using the tags as "folders" would do the trick?
Addressable sounds good and it's perfect, timing-wise. I wish it works out without too much pain.
Yeah, Tag would help but I think Folder concept is easier to understand since they are always grouped.
Perhaps I'm not explaining it correctly. Let me give another try.
Here is a use-case having Folders in a Group.
1. I gave BulletHit on materials but Weapon sound requires a similar setup. So, let me try using Weapon sounds instead. Assuming you want to have a unique WeaponFire sound for each weapon, e.g. M4, AK47. Some weapon have several Variations and some will have just one WeaponFire sound. At the time of calling Play WeaponFire, I don't know if it will have variations or not, therefore, I have to put them into Audio Group and call Play on the Group.
2. I currently ~100 different weapons and it will increase over time. Each weapon will also have, EmptyWeaponFire, Reload sounds, and etc, thus the number of sounds can quickly increase. There will be many other sounds and imagine having each individual Sound has its own Group. It will become unmanageable quickly. Therefore I need to find a way to organize them. That's why I suggested Folders.
3. To elaborate on the problems, Audio Group can have variations and they are listed in Flat list, therefore I cannot list all WeaponFire sound in a single Group, since some has variations and some don't. There is no way to tell different weapons on the flat list with variations.
4. This is where Folder comes in. If I can put weapon variations into a Folder, and then, I can call PlaySoundAndForget with variation name is either AudioClip or Folder name. If it's AudioClip, it will just play (it's a weapon without variations), if it's Folder name(it's a weapon with variations), it will play one of the AudioClip in the Folder. This way, I can put all WeaponFire sounds in a Group and it helps greatly to organize sounds. This will allow One SoundType to One Group, much easier than having a hundred of Groups for each SoundType. I won't be able to tell what Group is for without a long Group name.
I hope I explained better this time. Having a Tag perhaps will help sort thing but I'm not sure it's easier to use than Folders.
Thanks, I understand all that now. However, one thing you said definitely sticks out to me that you should be using Dynamic Sound Group Creators.
I currently ~100 different weapons and it will increase over time.
Fair enough, but surely you don't possess all 100 weapons at the same time? If each weapon has a DSGC with only its Sound Groups, then only the Sound Groups for the weapons you actually have will exist at any time in the Master Audio mixer. Most games I can think of limit you to only be able to carry 3-6 weapons at any one time, and then you have to "drop" to pick up another. In which case you wouldn't even have 100 Sound Groups I think, even without folders.
Tags would work regardless of what we call them (folders etc). However, there are other issues with the implementation of folders. The randomization counter has a list of all possible weighted plays of all variations in the Sound Group, so it knows when to "refill" all the variations when there's none left to play randomly. This would be exceedingly difficult to have respect only "folders" and work only at that level, or at both. It may sound trifling, but there are so many different features that the code gets pretty complex and even a seemingly small change can break a lot of functionality. This is a particularly hairy area of the code that I don't want to touch unless absolutely necessary.
Anyway, now that you've described more, I'm pretty sure you aren't going to have hundreds of Sound Groups, so I'll leave it at that.
Of course, I won't all Weapons at once. I think that's why we want Addressable.
I'll take a look at DSGC soon. Assuming we have Addressable support in MA, will DSGC still be relevant?
Addressable will be usable whether it's on DSGC authored Sound Groups or having them directly on the Master Audio game object. You would still want to use DSGC so that you don't have 1000 Sound Groups visible at once, because that's just hard to work with, even with our filtering controls.
DSGC will always be relevant. They can also be used as "sound skins", which you will soon see.
It's worth mentioning though, that you may not even require Addressables if you use DSGC to limit down the number of Sound Groups and not use a ton of memory as a result.
We have always had Resource File support, and DSGC are useful still. Same underlying concept except that they can't be remotely downloaded. They only occupy memory while playing.
Does your plugin help with Unity platforms that traditionally had a lot of latency (like Android)?
Or to say it another way, will I have less latency than built-in Unity on Android with your plugin?
No it does not. We are just using Unity Audio Clips and Audio Sources under the covers believe it or not.
Although it is on the roadmap to investigate using an open source Java solution for Android in particular.
I wasn't aware there was another platform besides Android with a lot of latency....what else is there?
Hi, has there been any updates to add functionality with Timeline?
In particular I would like to be able to use an audio clip or playlist in the timeline while editing in order to have an idea where a track has reached.
My work around to this at the moment is to place the audio track manually in the timeline and only un-mute it while editing.
No, I'm not really sure how Timeline would be useful with this product. I actually removed this from our roadmap. You can email us or start a private conversation with me if you have ideas.
V 4.2.9 changelog - Addressables are here!!!
Bug fix for Ambient Sound in 4.2.6 broke other things. Now fixed in a better way that doesn't cause other issues.
Fixed bug: Dragging more than 1 Variation only created 1 Variation.
Fixed compile error when either Physics2D or Physics3D aren't installed. Now there's a Welcome Window where you must check those boxes to enable 2d and 3d features.
Ambient Sound now disables the creation of its tracker triggers by 1 frame so it won't cause audio glitches such as when the script is on a Game Object being instantiated and instantly disabled for pooling purposes.
Removed option for "Load Resources Async" under Resource File / Audio Clip settings because now it is always async.
Added Performance Settings section in Advanced Settings. Has an option to "Perform Code Warming" which defaults to on. It shows the Warm Sound Group there if enabled. Now defaults to the first Sound Group with an Audio Clip Variation.
Added support for Addressables for Sound Groups and Playlists. 3rd Audio Origin of "Addressable" now exists if you enable Addressables support on the new Welcome Window and have Addressables package installed.
Note: Dragging a non-Addressable into a Master Audio Addressable field may make the Audio Clip an Addressable if it isn't already.
Removed "File On Internet" option. It could never unload anyway.
Renamed Resource File / Audio Clip Settings to Audio Clip Settings. Now we will have Addressable settings there too if you have the feature enabled.
Added "Unused Addressable Life (seconds)" field to each Sound Group. This lets you specify to keep the Addressables in your Variations around for an extra X seconds after it's no longer used. This will avoid having to load it again in that time frame since we cache the loaded Addressables on our side.
Re-ordered the sections of Advanced Settings. There are a lot now so I put them in alphabetical order.
Fixed the deletion of game object (Sound Groups and Variations) in Unity 2018.2+ when they're part of a prefab. It was logging an error to the Console and not deleting.
Put back the "Clone" icon and made it work in Unity 2018.2+.
Hello is there any way to play in realtime preiview of some sound group in Editor mode by code? I have a cutscenes and want to heart that sounds in editor mode too.
Maybe. But the previewer code lives in the Editor folder, so your scripts that call it would need to live in the Editor folder too.
var previewer = MasterAudioInspector.GetPreviewer();
previewer.PlayOne(find your audio clip and put it here)
You can find that code in MasterAudioInspector.cs but it's a super long code file.
Ok thanks but what exactly should I put under (find your audio clip and put it here) I dont want to use another reference to audio clip I just would it to play by sound group name Is that possible? I'm just working on Slate cutscene editor integration, and overall thats a last problem we fightning with. So there is no wayu to just simple API to play certain sound group in editor ?
There is no simple way, no.
You'd need to basically traverse the sub-game objects of MasterAudio game object and find the one named the Sound Group you want to play, then navigate to a sub-object Variation game object of that, then grab its Audio Clip and use it.
OK but I noticed that I could already preview sound group by clicking special button that you prepared. Why I just cant Invoke function that is doing that, but from cut scene code? Even to have simple pseudo preview like playing that sound by name on enter of some action.
That's not a simple function unfortunately. It's within a loop that is looking through the Hiearchy and has a lot of prerequisites. You could copy what's in the MasterAudioInspector under that, and try to construct everything you need from above it, but it's not an easy task.
Ok I understand, We will try then to search audio source by name inside master audio object. My second question is how to play audio clip reverse way? or play it faster slower, or faster reverse? Cause we have cutscenes where we rewind action and try to play sound group fast reverse way
To play a clip backward, set the pitch to negative. i.e. play forward at normal speed with pitch of 1. play backward at normal speed with pitch of -1. Higher negative values (-2) would be double speed in reverse.
Hello, super longtime user and appreciator. I'm seeing a strange volume bug when loading a new scene with a persistent MA prefab. I'm on the latest version and it was also occurring as far back as v4.2.4, the version I had when the bug was reported.
I have an options slider for music that I set to, say, 10%, which I then set into PersistentAudioSettings.MusicVolume (though I've also tried setting MasterAudio.PlaylistMasterVolume). After a new scene is loaded, I use MasterAudio.FadePlaylistToVolume(volume, duration);. Everything shows up correctly in the MA inspector: the Master Playlist Volume shows as 0.1, and the currently playing playlist volume shows as V 1.00 or whatever it was set to. But: the music is playing too loudly.
Now, the kicker is that if I slightly drag one of those sliders in the MA prefab (either the Master Playlist Volume slider or the one next to the currently playing playlist), it instantly fixes itself to be the correct volume combination of the two. Same happens if I slightly drag by one pixel my options dialog slider -- it instantly fixes itself. What can I do to make it be correct immediately?
So there's quite a few things at play here. Not likely that I will be able to reproduce it without a lot of back and forth. You said it only happens with a persistent MA prefab. I will need you to send me an example (stripped down is preferable) and then I should be able to fix it pretty quick. You can email to email@example.com.
Ok no problem; when I get unburied from launching our upcoming game next month, I'll see about putting together a repro of some kind.
FWIW, I just tried replacing all the FadePlaylistToVolume calls with MasterAudio.OnlyPlaylistController.FadeToVolume(1, 0);, and my issue still did not go away.
I wouldn't expect that would fix it. Probably some sort of race condition. Ok I'll hear from you later on.
So since I needed to fix this bug for launch to prevent volumes from going crazy, I decided to spend a few minutes looking into it myself (much faster than figuring out how to cut down my project or create a separate repro project that mimics the behavior). I think I may have found a fix. It's on line 504 of PlaylistController.cs, where it seems ratioPassed needs to be clamped, since the delta realtime can have values of multiple seconds:
var ratioPassed = Mathf.Clamp01((Time.realtimeSinceStartup - _crossFadeStartTime) / workingCrossFade);
Now when I transition back and forth between scenes, the correct playlist volume is restored each time.
That looks promising. I'll take a look in a day or 2 when I have some time. Thanks!
Thanks for the fix, I've added it for the next update.
Master Audio and Core GameKit are currently 20% off for a limited time!