674190f711ada

674190f713383
1 Guest is here.
 

Topic: Shock Player Read 3334 times  

674190f713d10Hunk Guerrius

674190f713d7e
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 »

674190f713fffsarge945

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

674190f7142c2Deu sex

674190f71430e
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)

674190f7144ffHunk Guerrius

674190f71456b
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 »

674190f7148beHunk Guerrius

674190f71490b
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.
674190f7149fb
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.

674190f714bf2Hunk Guerrius

674190f714c4e
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.
674190f714e97
Hunk Guerrius
app.manifest file has requestedExecutionLevel as requireAdministrator

Setting it to asInvoker most likely solves the issue.

Or remove the request?
674190f714fd4
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.

674190f715227Hunk Guerrius

674190f715278
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.
674190f715400
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.
674190f71552c
@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.

674190f71561aDeu sex

674190f715668
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 »

674190f715a7cHunk Guerrius

674190f715ad8
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 »

674190f715e97Deu sex

674190f715ee9
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:

How can you ____ a perfect, immortal machine? (Fill in the missing word):
1 Guest is here.
Man overboard again
Contact SMF 2.0.19 | SMF © 2016, Simple Machines | Terms and Policies
FEEP
674190f716947