You can find all updates and news about ABC Sanitizer here from now on. http://community.playstarbound.com/index.php?threads/abc-sanitizer-not-a-mod-really.42226/ This tool will report any errors I found out that might cause a ABC file to crash starbound. Reports: Error for white spaces in Q parameter. Error on unhandled exceptions and last parsed file (probably the source for the exception) Errors where ":" is used in a comment "%" If you get an error, or warning of any kind when running the tool, contant me with the result. If you have a song that makes starbound crash that is not reported by my tool, please send me that file as well and I will figure out why and add that warning to the tool. Latest Version: https://dl.dropboxusercontent.com/u/7965736/ABCSanitizer0_5.zip
Cool. I'll throw the basics together when I get home. Luckely I have access to songs that don't play, play, and crashes. So I'll use that as a basis for my validation. Not bothering the developers with such things, since they have more important things to do. Maybe, MAYBE it will be possible to implement basic abc error fixing and tempo adjustmen as well... depending on the error type and how the data is handled... (If thats the case I should implement some kind of feedback/player as well) This could be a really fun project.
I will dive more in to it tomorrow, looked at an existing ABC parser, but didn't like the structure, also the abc layout is not rocket science, so will write my own parser tomorrow. Can still use the one i found as inspiration, since it mention all the different data types and sizes. Will mention the creator of that one with thanks. ABCp I think it was called.
Ok. So I figured out atleast two reasons for the ingame crash. Both of these might be resolved by the C-Fish crew futher down the road. I am going to fix the output messages for the errors I found. And then I will upload it and provide a Link.
Current error fixed was an additional white space in the Q parameter. So here is a first beta of a beta. It find one of the most basic crashs and reports it. https://dl.dropboxusercontent.com/u/7965736/ABCSanitizer0_2.zip It's written in C# under win8 so that might give people issues executing. If the program gives no warnings and you still get an error running a song, pm me and tell me where I can get that song and I will make that my next target. Since this is no official big company release you will probably get a crazy mount of warnings installing this. Like Unknow publisher. If you don't dare to install it, thats ok, I understand. But the code is sane and does nothing wierd.
the only option i get with teh program is ValidateFolder in one file menu. when guiding it to the folder my ABC's are stored in it throws an error for an unhandled exception "index and length must refer to a location within the string. Parameter name: length." See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ************** Exception Text ************** System.ArgumentOutOfRangeException: Index and length must refer to a location within the string. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at ABCSanitizer.ABCHeader..ctor(String[] lines) at ABCSanitizer.ABCParser..ctor(String fileIn) at ABCSanitizer.ABCSanitizer.validateFolderToolStripMenuItem_Click(Object sender, EventArgs e) at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e) at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met) at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met) at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at System.Windows.Forms.ToolStrip.WndProc(Message& m) at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ************** Loaded Assemblies ************** mscorlib Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.34003 built by: FX45W81RTMGDR CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ---------------------------------------- ABCSanitizer Assembly Version: 1.0.0.0 Win32 Version: 0.0.1.0 CodeBase: file:///C:/Users/Mechrior/AppData/Local/Apps/2.0/VN6K64RM.20Q/DZZ7HCVT.4GG/abcs..tion_523811f81b6fa19f_0000.0001_d045a64ab9fbaa42/ABCSanitizer.exe ---------------------------------------- System.Windows.Forms Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System.Drawing Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- System Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.34003 built by: FX45W81RTMGDR CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- System.Core Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.33440 built by: FX45W81RTMREL CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ---------------------------------------- ************** JIT Debugging ************** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled. For example: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box.
Ok got a new version out that will report what file casues uncatched exceptions. https://dl.dropboxusercontent.com/u/7965736/ABCSanitizer0_4.zip
Mechrior please let me know as soon as you figure out what file caused the exception, as it should be reported properly in the latest version.
Debugging Misty Mountains Cold... Can't really pinpoint the error, I have made the song play, just trying to figure out the difference between the working version and the non working version...
Latest version is up. Turns out that starbound assume that any row with a : in it should be parsed as a field even if it's a comment "%". The tool will now provide warnings for such cases. https://dl.dropboxusercontent.com/u/7965736/ABCSanitizer0_5.zip
Thanks for this, TheSpaceMan! I'm on Windows XP so I haven't had a chance to test much out, but when and if I run into problems I'll check back in here.
I figured out some false positives, going to add the new version (that is done) as soon as I get home.
I will move over to only post in. http://community.playstarbound.com/index.php?threads/abc-sanitizer-not-a-mod-really.42226/ That way I don't have to update two threads with the same info.