663b4b3b8b9da

663b4b3b8bf49
1 Guest is here.
 

Topic: Shock Player Read 1729 times  

663b4b3b8c859Hunk Guerrius

663b4b3b8c8c6
Hello.

If anybody likes System Shock as much as I do then you probably like to listen to it's music every once in a while. If you do then you probably also heard about the System Shock Random Music Generator or SSPLAYER, which randomizes sequences like the game does. However not only is the program old, it runs through the command line and has some quirks. I decided to fix that.

Link to SSPLAYER: https://wenchy.net/old/ssplayer.html

I wrote my own take on a System Shock music generator, I call it Shock Player.

It does what SSPLAYER does also, but now in Windows Forms application and with extra features:

- Playing of a theme follows the pattern specified in the theme's midi folder under the name "preset.dps", it contains instructions for the program to follow during playback, namely what sequences it can randomize next, you'll have to check it out to understand in detail;

- To play a theme, select one from the track list and click play, clicking it again alternates between pause\play, the stop button does just that, it stops playback;

- You can select between the available MIDI output devices in your system under "Edit->Settings", as well as set playback speed between "Normal" and "Fast", normal will play sequences at their normal speed, fast will play them like they usually sound in the OST, slightly faster;

- You have some neat details around too like Left, Right volume meters, a playback timer and active sequence display.

The program was written in C# and requires .NET framework 4.5 to work, dependencies should have been smaller in my opinion but the libraries it uses require that.

Other than that, if anybody has suggestions on things that could be improved let me know, have fun.

Changelog:

v1.0 - Initial Release.

v1.1 - Improved theme preset entries to make playback sound less repetitive;
        - Changed the presets file format to .txt, they are meant for easy editing;
        - Theme name added to the main form title text during playback;
        - Minor internal improvements;
        - Changed "requestedExecutionLevel" in app.manifest to "asInvoker".

EDIT:
The program's executable lacks any kind of certificate or signature and is detected by some antivirus programs as potentially malicious, I am not able to remedy that circumstance and even though it has been proven to be a false positive, if you don't feel comfortable with this fact however then DON'T download. Otherwise add an exception for it in your antivirus software if you're unable to run it.

Download via GDrive: https://drive.google.com/file/d/18PYS_kJGsvHNESi9rps7_xbB70yOCM3q/view?usp=sharing

I will relay my thanks to the community for pointing this issue out, trying to help me fix it and being kind enough still to let me re-upload it even though I wasn't able to fix it entirely. Thanks, you people are nice.
« Last Edit: 26. August 2023, 22:16:26 by Hunk Guerrius »

663b4b3b8cbf9sarge945

663b4b3b8cc6d
You say it runs on the command line as if that's a bad thing
663b4b3b8cdcd
Windows Defender says Trojan:Win32/Wacatac.B!ml

663b4b3b8cee4Deu sex

663b4b3b8cf38
Man! I've been wishing to have something like this for a long time! Gonna try this with my soundfont mod once I get the chance!
(hopefully when the false positive thing is resolved though)

663b4b3b8d172Hunk Guerrius

663b4b3b8d1cb
Gawain
Hm, are you sure this isn't a problem on your end? Has this happened to anyone else so far?
« Last Edit: 23. August 2023, 20:31:21 by Kolya »

663b4b3b8d563Hunk Guerrius

663b4b3b8d5b6
There are multiple possibilities that could be causing the program to be detected as malware, the obvious one is that it does indeed contain malware, which it doesn't, even if some antivirus software say it does, which leads me to the next possibility.

The detection done by the antivirus sounds like its done based on an automatic detection algorithm, which is triggered I guess because my code might have some common trait with the specific malware its being accused of, the denominator being the intention of what the code is used for, the antivirus wouldn't know that.

The third possibility is the fact that the program lacks a digital signature or code certificate which costs money, being therefore software that can't be endorsed by any official software vendor, that alone can raise the possibility for a false positive by a whole lot I heard.

This is all simply speculation however, I am not completely certain what is causing it, I know in myself the program does not contain malware because I wrote it, and my computer is not infected, but for that I only have my own word and integrity to argument with, if that's not enough then I'm sorry, I don't think there isn't much I can do.
663b4b3b8d6b3
If you are willing to share the source code then we could verify or find reason for the false positive.

It is also possible you are infected and the trojan is infecting your build.

663b4b3b8d8efHunk Guerrius

663b4b3b8d946
Gawain
I did share the source code, it was inside the archive beside the executable, but I'll share it here again in case somebody wants to take a look, help is really appreciated.
663b4b3b8dbb6
Hunk Guerrius
app.manifest file has requestedExecutionLevel as requireAdministrator

Setting it to asInvoker most likely solves the issue.

Or remove the request?
663b4b3b8dd4d
Also. You might want to use later .net version such as 4.8 that it is included in latest windows 10.
https://learn.microsoft.com/en-us/archive/blogs/astebner/mailbag-what-version-of-the-net-framework-is-included-in-what-version-of-the-os

Edit: You probably wanted maximum Windows support, so 4.5 is best for that of course.

663b4b3b8df7aHunk Guerrius

663b4b3b8dfcd
Gawain
I tried different setups, modifying the execution level, compiling with an embedded manifest or disabling it, I also tried swapping to different .NET framework versions and compiling the project on different machines but as far as whats reported in VirusTotal, it still contains malware. None of my machines detected the executable as a virus by the way.

I can provide a build with "requestedExecutionLevel" set as "asInvoker" but I kind of doubt that'll help anything.

I am 99% sure it is a false positive, but right now I can't upload another archive without an admin giving me an all clear.
663b4b3b8e0d9
Yep. VirusTotal gives 5/65 for my own builds too (I sent just the exe without the dlls).

In any case. You shouldn't need administrator rights to play midis. So please provide builds without it when you can.
663b4b3b8e1f9
@Hunk Guerrius You asked me per PM if you were allowed to re-upload the new version with the changed execution level. I'm rather responding here to make this transparent for everyone. Yes, please upload it. Thank you for your work and understanding.

663b4b3b8e2e7Deu sex

663b4b3b8e335
Just got it, damn!!! I can listen to the ACTUAL ost with my soundfont mod without playing the game! Thank you so much!
This is super cool, I wonder how it works, does it trigger random events? Or do you have procedural patterns? This is absolutely lovely.

Edit: Do you think it would be possible to get the enemy midi samples overlapping, as well as the midi samples that smoothes out the transition to action samples? Also be careful as Research always repeat a sample once :) I suppose this is still WIP? It's absolutely lovely though :)
« Last Edit: 12. September 2023, 13:09:58 by Deu sex »

663b4b3b8e72dHunk Guerrius

663b4b3b8e786
Deu sex
The sequences are chosen randomly from a set of predefined ones specified in the "preset.txt" file that the individual track you're listening to has, if you take a look inside the "midi" directory you'll see it. You can tweak the way the tracks are played yourself, I provided a brief description of how it works in the program's "Readme" file.

As for the overlapping tones for enemies and transitioning, I tried to implement them but DryWetMIDI which is what I used for midi playback support wouldn't allow two sequences to play at the same time. I actually wrote in the whole feature and logic in but it didn't work in the end because the audio library wouldn't work whenever two sequences were playing simultaneously, I looked through the documentation and didn't find any solution nor did I looking online for it too. But this not to say it isn't possible, maybe it is and I haven't looked hard enough. I'll contact the original writer sometime and ask him.

As for sequence repetition, yeah it does happen sometimes, software randomizers are actually pseudo randomizers, meaning they always need external factors to base decisions on, since no machine can choose between 0 and 1 arbitrarily, only humans do that. But philosophy aside this leads the randomization results to be repetitive at times. I attempted to remedy this as much as I could, further optimization is possible though, sometime later I'll give it another try.

Thanks for the feedback, glad you like the application.

EDIT:

Oh I wanted to say to you by the way, I played System Shock using your custom soundfont and I love it. Is there a way to enable full stereo surround though? I can only get it to play Stereo (2.1), whereas the original GS WaveTable that comes with Windows actually plays in stereo surround (5.1), I'd love to listen to yours the same way.
« Last Edit: 20. September 2023, 22:16:17 by Hunk Guerrius »

663b4b3b8eb52Deu sex

663b4b3b8ebad
Hunk Guerrius
I had no idea there was 2.1 / 5.1 support for soundfonts! I'm sorry but I have actually no idea... Maybe there's a option to select in Viena (the software I'm using to "compile" the soundfont).

As for MIDI overlapping, I have a dirty idea, create new unique samples that merges two, so the engine will think it's reading only one. That's going to be a lot of samples though... I'm sorry to hear that you wrote the logic just to find out the engine wouldn't play them!

Edit: I double checked Viena and I can't seem to find anything 5.1 related, I guess the best you could do is to use a third party software that converts 2.1 to 5.1 in realtime, hopefully for free...
« Last Edit: 21. September 2023, 11:44:17 by Deu sex »

Your name:
This box must be left blank:

Look at you, ____: a pathetic creature of meat and bone!  (Fill in the missing word):
1 Guest is here.
Mabel learns Grunkle Stan has never seen a rainbow and declares a color emergency.
Contact SMF 2.0.19 | SMF © 2016, Simple Machines | Terms and Policies
FEEP
663b4b3b8ed30