Why oh my God WHY do we have to keep using these foul bug ridden tools!
I have been fighting with this joy of a tool to use for the last month now and I just love the crap it keeps dumping on me. First I can't even audition anything even after I connect to my local machine (WTF is that all about anyway?! - I just want to play a sound for chrisakes - what a PITA!). And don't even get me started on the lack of playback support for MP3 files - you mean to tell me I need to bloat my code with 30 megs of a WAV file when I could just use a 3 meg MP3 of the equivalent sound quality and get the same result - whatever... Seems like I need to go back to using raw DirectX or OpenGL and dump this garbage. :P
And another thing... Half the time - if the XACT process doesn't get completely killed in the process manager - it will interfere with any builds go do after that and corrupt your XACT project file and the builds so that when you try to load them into the audio engine - they completely crap out - it's hit or miss on that one - you just have to keep trying until it works - again WTF?! And how do I know this? Well - I it's because it starts complaining to me about a half hour after I have used it and closed it. Whadya mean there something wrong and you need to close - I haven't even had you open for the last 1/2 hour - holy shit already... I mean give me a break - there's nothing better than that warm and fuzzy feeling you get inside when an app you can't fix but are stuck with - does this intermittent crap.
So now we have my recent issue with the tool which has caused my Rant for the day. And somebody please tell me that this is supposed to be supported - otherwise error check that the sound bank name matches the wavebank or at least take out the ability to make a change to the name before you ship the god damn thing.... All I want to do is change the name of a sound bank that is referring to a wave file that another sound bank is using - sounds easy doesn't it - if you only knew...
So here's the story...
Here we have one wave file called "LaserBlast" it plays a laser sound (go figure).
Then we have one Sound Bank called - well you probably guessed it - "LaserBlast" which points at the wave bank of LaserBlast. Now I want to create a new sound bank that uses the same LaserBlast wave bank but loops the sound 4 times before the cue ends (this is because I have a rapid fire laser and a 4 shot burst laser).
But - when you drag the LaserBlast wave bank to the sound bank list - you get - LaserBlast2 - no problem - lets just change that Sound Bank to be named "LaserFourShotBurst". Except after you change the name - you get this little gem of an error...
------------- Begin Dump Exception -------------
Exception Type:
System.NullReferenceException
Source:
XactInterop
Message:
Object reference not set to an instance of an object.
Clickable StackTrace:
(Unknown Source Location): XACT.Interop.CXACTSoundBankCue.GetVariationType()
(Unknown Source Location): XACTGui.PropertyPlaylistEditor.SetValue(Object objInstance, Object objValue)
(Unknown Source Location): XACTGui.PropertyPlaylistEditor.CSoundBankSound_Changed(Object sender, CPropertyChangeEventArgs e)
(Unknown Source Location): XACTGui.CSoundBankSound.set_Name(String value)
(Unknown Source Location): XACTGui.CSoundBankForm.AfterSoundNameEdit(Object sender, LabelEditEventArgs e)
(Unknown Source Location): System.Windows.Forms.LabelEditEventHandler.Invoke(Object sender, LabelEditEventArgs e)
(Unknown Source Location): System.Windows.Forms.ListView.OnAfterLabelEdit(LabelEditEventArgs e)
(Unknown Source Location): System.Windows.Forms.ListView.WmReflectNotify(Message& m)
(Unknown Source Location): System.Windows.Forms.ListView.WndProc(Message& m)
(Unknown Source Location): XACTGui.CXACTBaseListView.WndProc(Message& m)
(Unknown Source Location): System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
(Unknown Source Location): System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
(Unknown Source Location): System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
------------- End Dump Exception -------------
And seriously - why bother - it's not like I can fix this bug myself - I don't have the source code. And if I report it to microsoft - well - we all know what a crap shoot that can be. So i try a workaround - I leave the sound bank name alone (now it's called LaserBlast2) - I set the loop to 4 and create a que for it (LaserBlast2 once again). But - alas - when I try to load the que in my game - it gives me that all to familiar error message "Resource Could Not Be Loaded" - kind of reminds me of the good ol' days of ATL COM and the wonderful EFAIL toilet paper that I used to get reams of when working with that pile of steaming ass goo.