Giter VIP home page Giter VIP logo

libxm's People

Contributors

artefact2 avatar danieloaks avatar nukep avatar r0ptr avatar rasky avatar saneki avatar tilka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libxm's Issues

Optional support for most effects, xmanalyze cflags

Write a little helper program (xmanalyze?) that loads a module and sees which effects are used. The program spits out CFLAGS to build libxm with only these effects enabled. Maybe this saves a couple dozen bytes for demos and such.

Things that could be somewhat easily #ifdef'd out:

  • Amiga frequencies
  • Linear frequencies
  • Waveform control stuff
  • etc.

Buffer overrun in xm_create_context

I'm writing a Rust wrapper for libxm, and noticed that there's no bounds for moddata in xm_create_context(). This is obviously bad if moddata is corrupted or invalid.

From what it appears, you seem to be aware of this issue already; it's listed in the README as:

  • Loading a bogus file (that yet has a valid 60-byte header) will probably result in a segmentation fault.

Are there any plans to address this issue in the near future?

wav file format

is there easy way in code to convert this to 16bit pcm instead of ieee float wav file which is not valid for openal to play

Rxy + ghost note inaccuracies

Just to log it, there's another bug in Rxy which I'm not planning to fix for now. If a row contains no note but an instrument with the Rxy effect, what happens is that on tick 0, the ghost note of the previous instrument plays (as per standard behavior with rows that contain instruments without notes), but on the first retrigger the instrument is changed to the new one. So actually the instrument changes mid-row.

This looks harder to implement because the logic to change instruments is not part of xm_trigger_note, but I haven't investigated into it. If you want, I can open an issue to log this.

Originally posted by @rasky in #20 (comment)

Playback inaccuracies

Gave it a spin with some tricky songs, and unfortunately I noticed some bugs that also appear in several other player libs. Note that it might be the songs that are at fault, with certain libs (xmplay/bassmod, openmpt/modplug, milkytracker/milkyplay) taking steps to cover it up. I don't know enough about the file format to judge.
.
binary_world.xm goes bad 39sec in, and OpenMPT has slight issues too
http://modarchive.org/module.php?138953
http://clyp.it/hhp3pfex
.
around 51sec, the lead echo in colond.xm is played at a slightly different pitch than the main lead, resulting in phasing
http://modarchive.org/module.php?174415
http://clyp.it/gfuaa1do
.
as jt_strng.xm hits the higher notes at 35sec, they go off-pitch.
libxm gets a fair bit of static as well but I suppose that's intended
http://modarchive.org/module.php?46508
http://clyp.it/nh15rq5h
.
synthetic_attack.xm plays correctly but segfaults at the end: (fixed in ac0bbdb, the module file is unsane. Opening then resaving the module in MilkyTracker fixes it.)
http://modarchive.org/module.php?142503
#0 xm_row (ctx=0x7f8d92832010, output=, numsamples=128) at /libxm-master/src/play.c:847
#1 xm_tick (ctx=0x7f8d92832010, output=, numsamples=128) at /libxm-master/src/play.c:948
#2 xm_sample (ctx=0x7f8d92832010, output=, numsamples=128) at /libxm-master/src/play.c:1293
#3 xm_generate_samples (ctx=0x7f8d92832010, output=, numsamples=128) at /libxm-master/src/play.c:1340

.
zalza-tequila_groove.xm throws assertion failures, (fixed in f24bcab)
and some static at the 49sec and 58sec marks:
http://modarchive.org/module.php?66518
xm_sample(): final sample value is 136597905678638606450688.000000, this is a bug
xm_sample(): final sample value is 296616456960244306673664.000000, this is a bug
xm_sample(): final sample value is 144714319948683478564864.000000, this is a bug

.
All tests done with master as of writing.
Also, what are those (*) in the effects table?

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.