Giter Site home page Giter Site logo

Comments (18)

Wohlstand avatar Wohlstand commented on June 13, 2024 2

I think, I need to review how it will work as I looking for replacement of libModPlug which produces even good, but too-loud sound and lacks some set of formats, or libMikMod which produces non-clear and in some cases may crash. I checked out libOpenMPT which was a candidate to replace libModPlug, but it seems too heavy (+10 MB binary).

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024 1

Just now I have tested it out, and it seems good, and even it's super-simpleness, the positioning is possible to implement by libMAD's way.
The ID3Tag GPL2-licensed library to parse ID3 tags and take the begin position to avoid some crap: I have found that libMAD on some files have produced a damaged sound output and later have crashed. Then I began to use ID3Tag library not for tag parsing, but also for begin position retrieving and I thinking to provide simplified alternative to that.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024 1

Just now I have added experimental stuff (tested on Linux only, need to test work on all other platforms):
WohlSoft/AudioCodecs@d78bb03
So, to support it in SDL Mixer X side I only need to implement the interface submodule to begin using the library.

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

Great.
Thank you very much for your response.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

I see library is able to play IMF (Imago Orpheus) files which ModPlug is not able to play, and I see that size of built static library is ~4 MB and built example application (statically linked XMP and dynamically all other dependencies) has size in ~2MB, it's a good thing!
I'll keep this thread and later I'll try to provide CMake build for XMP and include it into AudioCodecs repo for future adding into SDL Mixer X as alternative to ModPlug and MikMod!

Anyway, cons of XMP I see:

  • No native ability to get absolute time position in the song (ModPlug has internally, but wasn't binded into public officially, I modified a library to make that function be public) which will give better positioning support
  • No native ability to take a full time length of the song (ModPlug has)

However, that is not a trouble, it will just return -1 as this codec doesn't supports full positioning.
At me I have cases of positioning on MP3 codecs:

  • libMAD (GPL 2 licensed) has no native positioning, but I have implemented it around, therefore MAD-based MP3 playing supports full positioning
  • MPG123 (LGPL 2.1licensed) has full positioning with few exceptions I have implemented to have full support for positioning
  • SMPEG (LGPL 2 licensed) has no way to provide positioning as library itself is clunky and no more supported (for choice of MPG123 as same-license alternative)

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

Speaking about MP3, have you see https://github.com/lieff/minimp3 . It is a compact MP3 decoder and MIT licensed.

If you find it useful, it may be become alternative for those existing MP3 decoder.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

@RyanBram , libXMP has been implemented, and it works, include full seekability support!

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

Nice. What a great news!

Do you want me to test the feature?
I don't know much about programming and compiling software, so if there is a prebuilt binary that can be tested, I will be happy to try it.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

Do you want me to test the feature?

Yes, that would be cool, to let you confirm that everything works as needed.

I don't know much about programming and compiling software, so if there is a prebuilt binary that can be tested, I will be happy to try it.

The only question which operating system you are use?
Anyway, there are two ways of support: as a part of AudioCodecs libs set (I had to make the complete CMake build for it), and as system-wide installed original libXMP.

Anyway, myself I have found a possible issue on ARM (tested on my Android phone): when I playing music via libXMP, then stopping it, the game can freeze which I didn't had before... Possibly a bug of libXMP itself that I need to also test and polish separately.

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

Cool.
I have Windows 10 Home system, Lubuntu Bionic Beaver, and an Android One (Pie) Phone with Snapdragon 625 SoC.

For Windows I have tried your PGE MusPlay, but not the current build, so I am not sure what changes you've made.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

PGE MusPlay

You need the most fresh Laboratory bulid taken from here: http://wohlsoft.ru/docs/_laboratory/_Builds/win32/bin-w64/_packed/pge-musplay-master-win64.zip . I have posted libXMP and folks into anywhere include this. libXMP here works by default, also you are able to verify will it work or not by playing IMF files: IMF Files.zip. Before libXMP was added, they aren't be playable (the MikMod only was able to play them, but ModPlug that was in use here, can't play them).

For Android you can try out experimental Android build of my game engine that I have updated recently, with one exception: take this episode which contains many tracker music that will affect libXMP working.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

On Linux you are easily can build complete PGE toolchain, and the complete manual is provided here: https://wohlsoft.ru/pgewiki/Building_PGE_From_sources

That doesn't needs you to be a coder, it only requires you to install dependencies, configure build and run compiling of it, then, you can use built binaries. One note, you can configure the build to don't build everything, but build, for example, PGE MusPlay only (use ./build.sh --help where I have explained everythign what to do for that)

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

Hi @Wohlstand .
I am really sorry for taking very looooonngg time to reply you.
I have tested the IMF Files under windows. Most of them is played well in your player, except one: spaceintro.imf . I use OpenMPT for comparison, but the file was played perfectly in OpenMPT.
I will report you again after testing for Android.

from sdl-mixer-x.

RyanBram avatar RyanBram commented on June 13, 2024

I also use pre-compiled XMP binary I got from here and it also failed to play spaceintro.imf.
So the problem must be in XMP itself.
libxmp 4.4.1 Adlib.zip

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

Yeah, that spaceintro.imf is a weird file, however, the MikMod is able to play it. The bug seems on the side of libXMP itself, and I would like to report this bug to the libXMP.

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

Done! libxmp/libxmp#142

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

@RyanBram, good news: @sezero have found a solution for this issue and I have applied it! 🦊
I tested it on my end, and it now works!

from sdl-mixer-x.

Wohlstand avatar Wohlstand commented on June 13, 2024

Okay, I don't think this should be kept opened, the thing works and completed now.

from sdl-mixer-x.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.