TLDR:
Please run this on whatever Windoze PCs you've got especially if they're old, and let me know if it loops well without stopping or inconsistently stuttering or if it spews an error or stays in Task Manager after it quits or anything weird like that. Left-mouse click on the black line to set position, CTRL to make it go slow-mo and SHIFT for chipmunk punk edition.
Backstory:
I've been looking to get a replacement music engine to GMFMODSimple in GMOSSE for a while now, and following shennanigans from the author of GMFMODSimple in response to FMOD's new licensing concerning two different products this has given me the kick in the behind I needed to look for a replacement.
Key part is the loop point support to allow you to have a track with an intro and main piece like most arcade OSTs ever and be able to correctly loop them, followed by a friendly license and OGG support (because MP3s cant reliably be used for looping at all and OGG is superior anyway). SuperSound has inconsistency issues on some machines on unload leading to either a black screen or staying in Task Manager, Caster does not support loop points or setting track position of an existing sound, SG Audio's function to set track positions only works for WAVs due to a bug which is useless for me and everything else has a non-commercial clause or uses FMOD anyway.
Then I found this thing, which runs on LGPL (which in a nutshell means you only have to release the source for anything concerning it if you edit XeAudiere itself, which nobody in GM-land wants to do). It supports setting track position and I use this to "manually" (as opposed to the DLL doing it by itself like FMOD does) loop the track back to a loop point. It's also really fucking easy to figure out its scripts, unlike GMFMODSimple which I've hidden behind my own generic script functions anyway. The song in question is Gleylancer's stage 4 tune, also used in GMOSSE's "vintage" music pack for Stage 2 and I have the percentage value in GMOSSE downpat. You can see exactly my loop point code here, note for the moment this is hardcoded not kept in INIs unlike GMOSSE:
Code: Select all
pos=XmusicPosition(music) // Get current position (frame) of music element
if pos > XmusicLength(music)-3200
{
XmusicSeek(music,XmusicLength(music)*0.1333335816614642);
//XmusicPlay(music);
}