社区问答

欢迎来到 Audiokinetic 社区问答论坛。在此,Wwise 和 Strata 用户可互帮互助。如需我们团队直接提供协助,请前往技术支持申请单页面。若要报告问题,请在 Audiokinetic Launcher 中选择“报告错误”选项(注意,问答论坛并不会接收错误报告)。我们内部设有专门的错误报告系统,会有专人查看报告并设法解决问题。

要想尽快得到满意的解答,请在提问时注意以下几点:

  • 描述尽量具体:比如,想达到什么样的目的,或者具体哪里有问题。
  • 包含关键细节:比如,Wwise 和游戏引擎版本以及所用操作系统等等。
  • 阐明所做努力:阐明自己为了排除故障都采取了哪些措施。
  • 聚焦问题本身:聚焦于问题本身的相关技术细节,以便别人可以快速找到解决方案。

0 投票
I am trying to start events at a certain point, not just from the start of the sound. Is there any way to do this from UE, potentially thru some RPTC's?

 

Also curious on how to get the length of an event from in UE4.

 
Thank you!
分类:General Discussion | 用户: Evan B. (170 分)

1个回答

+1 投票
 
已采纳
Hi Evan B!

So yes.... with a little bit of hacking. You have to hack it into AKComponent. If you're savvy enough to jump into the code I can try and help you out!

 

-Rob
用户: Robert M. (4.6k 分)
采纳于 用户:Evan B.
Hey Robert,

Thanks for getting back to me. I would love a little help figuring this out. I was already in the AKComponent.h/cpp files, and duplicated the GetAttenuationRadius() method, changing it to GetLength(), but for some reason when I built, there were no new Blueprint nodes.

Looking forward to hearing back from ya!

Thanks
Cool. For the first problem it is probably because you did not have "blueprint callable" in the ufunction. OR you did not generate project files on your engine/project. First do those things and tell me if it works.
Hey, so definitely had blueprintcallable.

I will try generate project files, but I am pretty sure I did.

Can you explain a little how to expose seek and where the length value is stored?

I sorta have two issues, one is the blueprints not showing up, and two is not being exactly sure of where the data I need exists.

I installed via the wwise launcher, and then wwise showed up in my plugins dir, but it could potentially be using the engine version.
Try also giving the event a category as well, that could also be a reason.
So you have to write it in yourself in the AK component files. at the bottom of this message is the cpp addition I added.

The data you will need is just the ID number of the event/sound file. The function also gets fed in how long (in ms) you want to seek in the event. If you over do it you'll actually end up looping it.

 if you want the length of time that the event runs, is you'll have to parse the XML file that is created when you generate sound banks. (to enable that go to ProjectSettings> SOund banks> generate XML data)

.cpp:

void UAkComponent::Seek(int32 MilliSeconds, const FString& IDNumber)
{
    AkTimeMs MilliSec = MilliSeconds;
    AkUniqueID AkIDNumber = FCString::Atoi64(*IDNumber);
    AK::SoundEngine::SeekOnEvent(AkIDNumber, (AkGameObjectID) this, MilliSec, false, (AkPlayingID)AK_INVALID_PLAYING_ID);
}
Thank you! I will work on implementing this.

Is the length exposable from the blueprints at all? I imagine Event->Length might work?
No unfortunately not
Touching on that other issue w/ the plugin not updating the blueprints exposed, for some reason I cannot generate project files when Wwise is enabled. It throws this error:

'ERROR: Unable to instantiate instance of 'AkAudio' object type from compiled assembly 'MicrodoseVRModuleRules,'

When I disable the plugin, it works...but therein lies the problem. Any idea what may be causing this? If I install thru the Wwise launcher, doesn't it just put the plugin in my plugins directory and use that?

Thanks for your time!
Hmm I think that may be a problem with your (project).build.cs file.

PrivateDependencyModuleNames.AddRange{"AKAudio"}; should be the fix i think
I put that in there, and now I'm getting this error:

'EXEC : error : Expecting to find a type to be declared in a module rules named 'AKAudio' in MicrodoseVRModuleRules'

Any ideas? Sorry to keep coming back!
Looks like the SDK files didn't copy over properly while installing the plugin. Modified and re-did and now its working. Thank you much!
Hey, so now I can get it to build, but the updates and additions to the Wwise plugin are not showing after building/compiling. Any ideas?
does the function have a category? it won'ts how up sometimes if you dont. also generate project files.
Hey Robert, turned out I had to delete the bin and intermediate folders in the plugin directory..then it would build. thanks for all your help!

Is there any chance I could get you to show me an example (like u did above) of how to expose SetMultiplePositions()? I have been researching for weeks and cannot get it to build properly.

Thanks so much!
Unfortunately no. :( sorry mate.
.cpp:

void UAkComponent::Seek(int32 MilliSeconds, const FString& IDNumber)
{
    AkTimeMs MilliSec = MilliSeconds;
    AkUniqueID AkIDNumber = FCString::Atoi64(*IDNumber);
    AK::SoundEngine::SeekOnEvent(AkIDNumber, (AkGameObjectID) this, MilliSec, false, (AkPlayingID)AK_INVALID_PLAYING_ID);
}


Hey Robert,

sorry to come back to this, but it seems seeking is still not supported in your UE4.16 integration. What are your plans to add this to the plugin ?


Thank you,
Oliver
Hey! I actually got version frozen on .14 unfortunately so I can't help you there :/ I haven't gotten the time to check it out sorry. This was a work around that I was able to do in the code myself. I am not a dev hehe so I can't just add it in directly to the plug in
Could you elaborate on how to get this working, i tried adding this to UAkComponent:

void UAkComponent::Seek(int32 MilliSeconds, const FString& IDNumber)
{
    AkTimeMs MilliSec = MilliSeconds;
    AkUniqueID AkIDNumber = FCString::Atoi64(*IDNumber);
    AK::SoundEngine::SeekOnEvent(AkIDNumber, (AkGameObjectID) this, MilliSec, false, (AkPlayingID)AK_INVALID_PLAYING_ID);
}

And the corresponding declaration in .h and can get the function to call from BP but nothing is happening when i for example spawn an ak event, seek and then post it, or if i spawn it, post it, then seek.

I suspect there is soemthing from with the line:
AK::SoundEngine::SeekOnEvent(AkIDNumber, (AkGameObjectID) this, MilliSec, false, (AkPlayingID)AK_INVALID_PLAYING_ID);

I added UE_LOGs at AudioDevice.cpp that has some SeekOnEvents but they never get printed.
...