Mod Archive Forums

Music Production => Players => PC Players => Topic started by: DragShot on December 13, 2013, 03:39:36

Title: NfmM MOD Player
Post by: DragShot on December 13, 2013, 03:39:36
Hello everybody. My name is Dany, 18 years old. I'm from Lima, Peru; and one of the things I like to do is to develop software. I've created some apps so far and I'm getting more skilled in Java.

Meanwhile, as I noticed there is a software section in this forum, I just wanted to post my own application. It's a ProTracker/FastTracker/ModPlugTracker module (.mod) desktop player made for JavaSE 1.7 (aka Java 7).

Specifically speaking about it, it's a dedicated player made for use in conjunction with a online car game called Need for Madness (http://multiplayer.needformadness.com/), which uses this module format for its soundtracks. Actually, many people got to know this site due to the creator's advice of looking for some good soundtracks in ModArchive.

Have a little screenshot of the version 2.1 being developed:

(http://i57.servimg.com/u/f57/17/37/76/58/modpla10.png)

Current features:
- Local .mod files and zipped mod files support, using the game's engine called ModSlayer (which I couldn't find anywhere, so I assume it was made by the same guy who developed such game, I should ask him about it anyway).
- Playlists: playback, saving, loading, creation of new playlists using online search in the servers of Need for Madness.
- Tailor-made swing components for the GUI.
- Self-updateable.

Under development:
- Rise the time limit per track from 6:45 to 8:00 minutes (or a bit more).
- Optimization of controls (mainly redirecting controls to the output mixer instead of the audio clip, to get an actual control over the volume instead of just adjusting the gain).
- Integration of the HiFi Look&Feel, available in the jTattoo skins package (http://www.jtattoo.net/) (what you can see in this preview).
- Other minor improvements and bug fixes.

More info & download: http://dragshot.webcindario.com/software/modplayer.php

By the way, does somebody here know where I can know more about the internal bytecode in .mod files? I want to extend the engine being used in the player for stuff like adding compatibility with more effects, fixing some sampling issues and so, because this engine is really great at rendering the audio data but it's not perfect reading samples and certain effects.
Title: Re: NfmM MOD Player
Post by: Saga Musix on December 13, 2013, 09:44:07
- Rise the time limit per track from 6:45 to 8:00 minutes (or a bit more).
Why limit it at all? There are mods well over the 10 minutes barrier.

By the way, does somebody here know where I can know more about the internal bytecode in .mod files? I want to extend the engine being used in the player for stuff like adding compatibility with more effects, fixing some sampling issues and so, because this engine is really great at rendering the audio data but it's not perfect reading samples and certain effects.
Check e.g. the famous modfil11.txt (http://sid.ethz.ch/debian/xmp/xmp-3.4.0/docs/formats/Modfil11.txt) or other documentation available at ModLand (http://ftp://ftp.modland.com/pub/documents/format_documentation/), though I didn't read through those documents, so cannot comment on their accuracy (which is a big problem with many documents about module formats).
Title: Re: NfmM MOD Player
Post by: arist9912 on December 13, 2013, 16:57:28
Why limit it at all? There are mods well over the 10 minutes barrier.
Check e.g. the famous modfil11.txt (http://sid.ethz.ch/debian/xmp/xmp-3.4.0/docs/formats/Modfil11.txt) or other documentation available at ModLand (http://ftp://ftp.modland.com/pub/documents/format_documentation/), though I didn't read through those documents, so cannot comment on their accuracy (which is a big problem with many documents about module formats).

Or try to examine the code of IBXM(a mod player, plays MOD, S3M and XM; the sourcecode is included in the jar file)

IBXM: http://code.google.com/p/micromod/downloads/list

For the playback time limit, in the ModArchive there are modules with 1 hour lenght
try: http://modarchive.org/index.php?request=view_by_moduleid&query=157663
Title: Re: NfmM MOD Player
Post by: DragShot on December 13, 2013, 20:03:40
Why limit it at all? There are mods well over the 10 minutes barrier.

The engine I use renders the song into an array of bytes. I've noticed this limited the time per song to 6:45, and some .mod songs I've listened reached 7:30. I'm trying to see how much I can extend such limit, seeing how does this affect the heap memory required and stuff (although I don't think it should be a lot).

Check e.g. the famous modfil11.txt (http://sid.ethz.ch/debian/xmp/xmp-3.4.0/docs/formats/Modfil11.txt) or other documentation available at ModLand (http://ftp://ftp.modland.com/pub/documents/format_documentation/), though I didn't read through those documents, so cannot comment on their accuracy (which is a big problem with many documents about module formats).

Thank you :D , it has exactly what I wanted to read.

Or try to examine the code of IBXM(a mod player, plays MOD, S3M and XM; the sourcecode is included in the jar file)

IBXM: http://code.google.com/p/micromod/downloads/list

I'm trying luck with 2 engines, one of them resulted being way too confusing xD , but the other is more organized, so I can read its sources. I'll add this one too, thank you.

For the playback time limit, in the ModArchive there are modules with 1 hour lenght
try: http://modarchive.org/index.php?request=view_by_moduleid&query=157663

I'll have that in count, but... you know, that isn't exactly a .mod file.

PS: "Wants more pie"? LOL, I love these ranks xD!
Title: NfmM MOD Player - New update!
Post by: DragShot on December 17, 2013, 04:28:11
I've released a new version of the player. It comes with the new Look&Feel and also with support for 6 new effects: Bxx (position jump), E6 (row loop), E9 (note retrigger), EA (fine volume slide up), EB (fine volume slide down) and EC (note cut). I've raised the buffer size as much as I could without overloading the heap space to can render longer tracks.

Here it is a preview:

(http://i57.servimg.com/u/f57/17/37/76/58/modpla14.png)

Now it shows the module format and the number of channels, plus some effects which aren't supported by the original engine it came from to warn the users about possible differences in playback between this player and the game.

To update the player from the version 2.0, go to Info > Check for updates and when it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version. It also can be downloaded from the website: http://dragshot.webcindario.com/software/modplayer.php
Title: Re: NfmM MOD Player
Post by: Saga Musix on December 17, 2013, 09:38:03
Frankly, when you're already about to implement own effects, you may want to rewrite the whole thing in a sane way, without having to render the whole song in a static buffer. A MOD player is fairly simple to program.
Title: Re: NfmM MOD Player
Post by: DragShot on January 20, 2014, 19:29:20
Frankly, when you're already about to implement own effects, you may want to rewrite the whole thing in a sane way, without having to render the whole song in a static buffer. A MOD player is fairly simple to program.
In that way it's relatively easy to skip between parts in the song and export it all into a .wav file quickly; but yeah, I'm looking for better mechanisms for the payback, mainly to save memory and stuff.

Duh, just noticed I posted this thread is the wrong section -_- (I missed the respective readme for this section and I didn't even find the proper section before posting the topic in first place). Could you move it into the Players section when you get some free time? Thanks a lot.
Title: NfmM MOD Player - New update!
Post by: DragShot on January 26, 2014, 05:02:23
NfmM MOD Player has been updated!

The version 2.2 is now up and includes the following changes:

- Added the option to search in The Mod Archive. Find any module from a repository with thousands! (Thanks a lot for the API key, it's safe in a web server which performs the requests between the search engine and the player). More options will be added in future releases to improve the results.
- The script format used in playlists has been changed to support local modules, modules from ModArchive and modules from Need for Madness Multiplayer in the same playlist. I'm keeping backwards compatibility with the previous format.
- Added the option to download a module being listened from The Mod Archive, or to save any other file as a module file or a module compressed into a zip. However, modules CANNOT be downloaded from NfmM, because the players haven't authorized such copies to be downloaded, and also several of them are from ModArchive.
- Minor interface and engine changes to work with the new features in a proper way.

To update your player, go to Info > Check for updates and when it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version.

It can also be downloaded from here: http://dragshot.webcindario.com/software/modplayer.php
Title: Re: NfmM MOD Player
Post by: m0d on February 28, 2014, 13:50:26
Cool stuff :)
Title: Re: NfmM MOD Player
Post by: Jay on March 03, 2014, 23:57:42
I can't seem to run this, am I missing a lib? Running from the command line gives:

Code: [Select]
Exception in thread "main" java.lang.UnsupportedClassVersionError: ds/modplayer/ModPlayer : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: ds.modplayer.ModPlayer. Program will exit.

Linux Mint 13 (Ubuntu based) x86_64 running 3.8.0-26-generic. I have both JRE6 and JRE7 installed (just updated to the latest vers.)
Title: Re: NfmM MOD Player
Post by: DragShot on March 05, 2014, 16:03:20
I can't seem to run this, am I missing a lib? Running from the command line gives:

Code: [Select]
Exception in thread "main" java.lang.UnsupportedClassVersionError: ds/modplayer/ModPlayer : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: ds.modplayer.ModPlayer. Program will exit.

Linux Mint 13 (Ubuntu based) x86_64 running 3.8.0-26-generic. I have both JRE6 and JRE7 installed (just updated to the latest vers.)

Well, I've heard that in Linux Systems, when you have more than 1 JRE installed, you have to set one of them to be used by default. The "Unsupported major.minor version 51.0" means you're still using Java 6 when you are trying to open a Java 7 app.

You can specify which JRE to use through the console command alternatives --config java. Check the step 2 in this page for instructions: http://tecadmin.net/steps-to-install-java-on-centos-5-6-or-rhel-5-6 (it is for CentOS, but it should work for other Linux distributions too).

PS: "Devouring the Pies" om! nom! nom! nom! xD
Title: Re: NfmM MOD Player
Post by: DragShot on May 06, 2014, 23:08:09
NfmM MOD Player has been updated!

The version 2.3 is now up and includes the following changes:

- [NEW!] Added a splash screen.
- [NEW!] Song loops enabled when repeat is ON!
- Now the Mod Player checks for updates on background when it starts.
- Fixed a bug in Windows XP where the playlist used to get stuck when the window was minimized.
- Some interface adjustments

To update your player, go to Info > Check for updates and when it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version.

And if you don't have the player yet, go get it here: http://dscore.webcindario.com/software/modplayer.php
Title: NfmM MOD Player - New update!
Post by: DragShot on May 09, 2014, 00:31:58
NfmM MOD Player has been updated! (again)

The version 2.35 is now up and includes the following changes:

- Added socket service to run one instance at time. It will use the port 45055 at localhost, I hope no big software maker has spotted this port yet :T (it looked unassigned in the IANA official list so I took it).
- Added support for future file associations.
- Now files from ModArchive are not loaded as zipped files.

You will be notified about the new update the next time you open NfmM MOD Player (you can go to Info > Check for updates to update your player too). When it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version.

And if you don't have the player yet, go get it here: http://dscore.webcindario.com/software/modplayer.php
Title: NfmM MOD Player - New update!
Post by: DragShot on August 28, 2014, 21:03:48
NfmM MOD Player has been updated!

The version 2.4 is now up and includes the following changes:

- [NEW!] The in-RAM buffer has been replaced by a local file buffer. Such buffer is virtually unlimited, so the playback rate has been upgraded to 44.1KHz!
- Added support for java.io zipped files. It should be able to open its own zipped files now.
- Added a 'reload' button in the settings area for reloading the track without having to read/download the file again.
- DS Desktop Notify (http://dscore.webcindario.com/software/desktopnotify.php) is now used to display the name of the next song being played when the player window is minimized.
- Other minor fixes.

You can now use the params -Xms32m -Xmx64m to keep a low RAM consumption by the player.

Example:
Code: [Select]
java -Xms32m -Xmx64m -jar NfmM_MOD_Player.jar
You will be notified about the new update the next time you open NfmM MOD Player, or you can go to Info > Check for updates to update your player too. When it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version.

And if you don't have the player yet, go get it here: http://dscore.webcindario.com/software/modplayer.php
Title: NfmM MOD Player - New update!
Post by: DragShot on October 28, 2014, 05:46:49
NfmM MOD Player has been updated!

The version 2.5 is now up and includes the following changes:

- [NEW!] The ability to normalize the audio gain in tracks! This feature now comes enabled by default.
- Fixed a bug when downloading tracks from ModArchive. For some reason it wasn't doing what it should.
- Minor interface changes.
- Other minor fixes.

You will be notified about the new update the next time you open NfmM MOD Player, or you can go to Info > Check for updates to update your player too. When it shows the details about the new version, accept the download. The new version should be downloaded and installed automatically, restarting the player and opening the new version.

And if you don't have the player yet, go get it here: http://dscore.webcindario.com/software/modplayer.php