konstanty / libmodplug Goto Github PK
View Code? Open in Web Editor NEWlibmodplug GitHub repository
License: Other
libmodplug GitHub repository
License: Other
Seeking to invalid position doesn't report failure, and falls back to playing from 0 - making it impossible to tell if seek position was invalid. The library already detects invalid position, but it should also notify user that it wasn't valid. Many other playback libraries (not necessarily module players) fail to produce output when seeked to invalid position, so there's a suggestion that libmodplug does the same.
The following is an enhancement request for libmodplug
's support for playing MIDI files (.mid).
libmodplug
to specify a directory containing timidity.cfg
as opposed to specifying the SoundFont file (.sf2) directly.This request also applies to .abc and other "instrument-free" music formats as it does to MIDI files.
EDIT (Oct. 9): Just as an aside, a public-domain music synthesis library and instrument banks would greatly help improve MIDI playback support across the open-source ecosystem; however, I don't insist on that for purposes of this issue.
The S3M file loader requires patterns to end at least 6 bytes before the end of the file:
Line 347 in d1b97ed
I have some S3M files that lack this padding. They seem to play fine in MilkyTracker, but libmodplug drops the final pattern due to the lack of padding. I cannot find any documentation for why it should be necessary to include.
Is it necessary? Can the - 6
not be simply removed?
"If it sounds wrong there, then send the mod and a bug report to Olivier Lapicque" - Given that Olivier has open-sourced the tracker more than 10 years ago and hasn't worked on it since then, it's probably futile to make him fix a bug in ModPlug Tracker 1.16. :) And reporting the bug to us (OpenMPT team) is of course also futile because our code has quite diverged from the original source drop. So maybe simply remove that part of the readme. :)
Hello, When I pay a Midi audio,it cannot get the right duration of the audio, also it plays the wrong tone. I do not know how to send the music to you. waiting your reply,Thanks.
Are there any guides on how to call / use this library?
breaking the walls.mdl causes libmodplug to crash when it's loaded:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a75095 in MDLReadBits (bitbuf=@0x7ffffffd6000: 0, bitnum=@0x7ffffffd6004: 24,
ibuf=@0x7ffffffd6008: 0x7ffffffff001 <error: Cannot access memory at address 0x7ffffffff001>, n=n@entry=1 '\001') at load_mdl.cpp:497
497 bitbuf |= (((DWORD)(*ibuf++)) << bitnum);
(gdb) bt
#0 0x00007ffff7a75095 in MDLReadBits (bitbuf=@0x7ffffffd6000: 0, bitnum=@0x7ffffffd6004: 24,
ibuf=@0x7ffffffd6008: 0x7ffffffff001 <error: Cannot access memory at address 0x7ffffffff001>, n=n@entry=1 '\001') at load_mdl.cpp:497
#1 0x00007ffff7a5e02e in CSoundFile::ReadSample (this=this@entry=0x612c20, pIns=pIns@entry=0x61c320, nFlags=<optimized out>,
lpMemFile=lpMemFile@entry=0x7ffffffdbb07 "B\b\221\344\036B\006\317\062<\255g\351=\352\352P\v]\342~\005%X\265\004\374z\017Vd,^:\006{7R\004q\213\f\254\n\217SDi\036\214\032\363\033S\023\312\065>n*\336\352s\367\342\332\024\203@\372\263\071V\003'yRJ\260JE\211\231\353\310\363V5̐\232\240\245\025\300\213H\253t\246$\357\252\301\245\177\363\237ޜB\002W\330&\bY%\312\070\067\223\306J\304*\325\331\060SJ\260v\220\340a\311\360\360\020\061T\230MY\307Ȕ\231%\274\022\224\202\205\235\216\300\217\302k\262Y\221\340<\214J*\240\246\261B\207\003B@\204\313\016\021\r\202N;ة\235L*+\001%2\302I\361\270\357e"...,
dwMemLength=dwMemLength@entry=5404) at sndfile.cpp:1420
#2 0x00007ffff7a74a38 in CSoundFile::ReadMDL (this=this@entry=0x612c20, lpStream=<optimized out>, dwMemLength=142719) at load_mdl.cpp:401
#3 0x00007ffff7a5c869 in CSoundFile::Create (this=this@entry=0x612c20, lpStream=lpStream@entry=0x7ffffffda030 "DMDL",
dwMemLength=dwMemLength@entry=142719) at sndfile.cpp:152
#4 0x00007ffff7a8ff77 in ModPlug_Load (data=0x7ffffffda030, size=142719) at modplug.cpp:88
#5 0x00000000004007a4 in main () at t.c:15
This occurs in master as well as 0.8.8.5.
The library isn't looping my sounds, even with the setting mLoopCount set to -1.
Why is this line commented?
Line 368 in d7ba5ef
return FALSE
on the next line and invalidate some lines of code.The only current open source implementations are @optixx's fcplay in C/C++, @photonstorm's Flod in ActionScript, FlodJS in Javascript and @neumatho's NostalgicPlayer in C#
(gdb) bt full
#0 0x00007ffff788744e in mmreadUBYTE(MMFILE*) (mmfile=0x7fffe66ee4a0)
at /home/fratti/Projekte/libmodplug/src/load_mid.cpp:133
b = 0 '\000'
#1 0x00007ffff7888bab in mid_read_byte(MIDHANDLE*) (h=0x7fffb0001eb0)
at /home/fratti/Projekte/libmodplug/src/load_mid.cpp:725
#2 0x00007ffff788ae1f in CSoundFile::ReadMID(unsigned char const*, unsigned int)
(this=0x7fffb000ada0, lpStream=0x7fffb00773c0 "MThd", dwMemLength=5242880)
at /home/fratti/Projekte/libmodplug/src/load_mid.cpp:1420
avoid_reentry = 1
h = 0x7fffb0001eb0
mm = {
mm = 0x7fffb00773c0 "MThd",
sz = 5242880,
pos = 30022720
}
ch = 15
dmulti = 1
maxtempo = 126
panlow = 0
panhigh = 177
numchans = -1341688896
numtracks = 32767
ttp = 0x0
t = 13
numpats = 0
buf = "\000\000\000\000\b\001\000\000\000\000\000\000%\000\000\000\000\000\000\000\020\355α\377\177\000\000\022\305\342", '\000' <repeats 224 times>
miditracklen = 2122740291
runningstatus = 255 '\377'
cmd = 240 '\360'
midibyte = "\034"
metalen = 1768455
delta = 0
p = 0x7fffe66ee4c0 ""
#3 0x00007ffff78a7efe in CSoundFile::Create(unsigned char const*, unsigned int)
(this=0x7fffb000ada0, lpStream=0x7fffb00773c0 "MThd", dwMemLength=5242880)
at /home/fratti/Projekte/libmodplug/src/sndfile.cpp:147
bMMCmp = false
i = -141957232
pins = 0x7fffb000ada0
#4 0x00007ffff789e7f3 in ModPlug_Load(void const*, int) (data=0x7fffb00773c0, size=5242880)
at /home/fratti/Projekte/libmodplug/src/modplug.cpp:88
result = 0x7fffb000ada0
I'm assuming that 5a39f59 is what we get when we download https://sourceforge.net/projects/modplug-xmms/files/libmodplug/0.8.9.0/
However, it would be nice when we don't have any doubt about this. Could you please create a tag for the 0.8.9.0 release?
Hi.
Seeing this as a successor to the SourceForge project, can I ask for some official release, pretty please with sugar on top?
(see also issue #48)
Is it possible? I tried by using mingw compiler and it fails with this error:
G:\modplugtools\modplugtools\snd_dsp.cpp|40|error: definition of static data member 'CSoundFile::m_nXBassDepth' of dllimport'd class|
with loading .mod and .mt2 files. .xm/.it/.s3m are fine.
visible with song title being "moretimers chipdisko", but on ppc showing up as "tromremihc sipdisko".
yours,
Hi, how explained into this topic:
https://discourse.libsdl.org/t/back-to-integrate-mikmod-into-sdl2-mixer/25465
trying to play these .AMF musics, modplug return a "biiip" bad sound on precise points of the song.
In particular the two songs listed:
Tried to play them even with Winamp or VLC and same error: can you confirm if they use your plugin/codec?
These were created by PlayerPro and the associated MADLibrary.
https://sourceforge.net/projects/playerpro/ for more info.
I'm reverse engineering an old DOS game's custom music file format which highly resembles the ULT format, including its functions.
However, the game file also uses the 0x10 function, Set Global Volume. (Essentially, the game's instruction format is note,instrument,func1,func2,func2_param,func1_param
bytes.) However, this function code can't fit into an ULT instruction because func1 & func2 are nibbles in the byte. I know Fast Tracker ][ introduced this 0x10 command.
I managed to write a converter in C# that outputs an ULT file (playable by VLC player), however, it doesn't sound right as some tracks are louder or quieter than when the game plays it. Probably because I converted the 0x10 function into 0x0C (Set Volume) incorrectly. (Remembering the 0x10 parameter value and adding it to each subsequent 0x0C parameter use. I tried using the global volume as a maximum and rescaling 0x0C volume amounts relative to it, which resulted in very quiet music.)
My question is, how do I correctly interpret such 0x10 functions and turn them into 0x0C functions? In other terms, if I have 0x10(0x07)
and 0x0C(0x20)
, what would be the equivalent argument y
if there was just 0x0C(y)
.
Thank you for your time.
According to https://sourceforge.net/projects/modplug-xmms/files/libmodplug/ latest version is 0.8.9.0 however there is no here any version tags.
Is it possible to tag exect has for last version? (just 0.8.9.0
)
text and length of music seems able to load, but no audio when trying to play https://modarchive.org/module.php?172634 . everything works fine if use libopenmpt to play.
COPYING says ModPlug-XMMS and libmodplug are now in the public domain. However, dedicating works to Public Domain is a legal gray area in jurisdictions where public domain or mechanisms for dedicating a work to it prematurely aren't recognized.
Suggest switching to something like CC0 for a backup solution where public domain might be problematic.
Fists just summary stats:
[tkloczko@ss-desktop SPECS]$ rpmbuild -ba --with check --with failing_tests libmodplug.spec --quiet 2>&1 | grep -- -W | sed 's/.*\[//; s/\]//' | sort | uniq -c | sort -nr
80 -Wregister
12 -Wsign-compare
8 -Wunused-result
8 -Wunused-but-set-variable
2 -Wmisleading-indentation
1 -Wodr
1 -Wlto-type-mismatch
and extracted all warnings from stderr with autoconf (2.71) warnings:
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /usr/bin/autoconf --force
configure.ac:30: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:30: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
configure.ac:30: the top level
configure.ac:58: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:58: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
configure.ac:58: the top level
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:21: installing './compile'
configure.ac:8: installing './missing'
src/Makefile.am: installing './depcomp'
autoreconf: Leaving directory '.'
load_okt.cpp: In member function 'BOOL CSoundFile::ReadOKT(const BYTE*, DWORD)':
load_okt.cpp:46:28: warning: variable 'npatterns' set but not used [-Wunused-but-set-variable]
46 | UINT nsamples = 0, npatterns = 0, norders = 0;
| ^~~~~~~~~
load_mod.cpp: In member function 'void CSoundFile::ConvertModCommand(MODCOMMAND*) const':
load_mod.cpp:42:33: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
42 | if ((param == 0xFF) && (m_nSamples == 15)) command = 0; break;
| ^~
load_mod.cpp:42:89: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
42 | if ((param == 0xFF) && (m_nSamples == 15)) command = 0; break;
| ^~~~~
load_it.cpp: In member function 'BOOL CSoundFile::ReadIT(const BYTE*, DWORD)':
load_it.cpp:166:27: warning: variable 'channels_used' set but not used [-Wunused-but-set-variable]
166 | BYTE chnmask[64], channels_used[64];
| ^~~~~~~~~~~~~
load_it.cpp: In function 'void ITUnpack8Bit(signed char*, DWORD, LPBYTE, DWORD, BOOL)':
load_it.cpp:1221:15: warning: variable 'wHdr' set but not used [-Wunused-but-set-variable]
1221 | DWORD wHdr = 0;
| ^~~~
load_it.cpp: In function 'void ITUnpack16Bit(signed char*, DWORD, LPBYTE, DWORD, BOOL)':
load_it.cpp:1303:15: warning: variable 'wHdr' set but not used [-Wunused-but-set-variable]
1303 | DWORD wHdr = 0;
| ^~~~
load_dmf.cpp: In member function 'BOOL CSoundFile::ReadDMF(const BYTE*, DWORD)':
load_dmf.cpp:282:81: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
282 | else if (!cmd.note) { cmd.note = 0xfe; } break;
| ^~~~
load_dmf.cpp:282:122: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
282 | else if (!cmd.note) { cmd.note = 0xfe; } break;
| ^~~~~
load_669.cpp: In member function 'BOOL CSoundFile::Read669(const BYTE*, DWORD)':
load_669.cpp:51:14: warning: variable 'b669Ext' set but not used [-Wunused-but-set-variable]
51 | BOOL b669Ext;
| ^~~~~~~
load_ams.cpp: In member function 'BOOL CSoundFile::ReadAMS(LPCBYTE, DWORD)':
load_ams.cpp:48:14: warning: variable 'pkinf' set but not used [-Wunused-but-set-variable]
48 | BYTE pkinf[MAX_SAMPLES];
| ^~~~~
load_psm.cpp: In member function 'BOOL CSoundFile::ReadPSM(LPCBYTE, DWORD)':
load_psm.cpp:103:15: warning: variable 'smpnames' set but not used [-Wunused-but-set-variable]
103 | DWORD smpnames[MAX_SAMPLES];
| ^~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:678:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
678 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:684:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
684 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:690:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
690 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:696:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
696 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:702:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
702 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:708:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
708 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:714:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
714 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:720:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
720 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:728:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
728 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:734:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
734 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:740:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
740 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:746:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
746 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:752:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
752 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:758:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
758 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono8BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:764:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
764 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Mono16BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:770:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
770 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:780:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
780 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:786:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
786 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:792:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
792 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:798:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
798 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:804:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
804 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:810:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
810 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:816:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
816 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:822:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
822 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:830:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
830 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:836:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
836 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:842:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
842 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:848:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
848 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:854:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
854 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:860:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
860 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono8BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:866:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
866 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FastMono16BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:872:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
872 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:882:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
882 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:888:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
888 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:894:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
894 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:900:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
900 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:906:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
906 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:912:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
912 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:918:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
918 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:924:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
924 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:932:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
932 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:938:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
938 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:944:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
944 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:950:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
950 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:956:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
956 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:962:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
962 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo8BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:968:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
968 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID Stereo16BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:974:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
974 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:988:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
988 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:995:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
995 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1002:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1002 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1009:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1009 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1016:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1016 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1023:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1023 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1030:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1030 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1037:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1037 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1045:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1045 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1052:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1052 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1059:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1059 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1066:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1066 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1073:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1073 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1080:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1080 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono8BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1087:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1087 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterMono16BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1094:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1094 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1103:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1103 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1110:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1110 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1117:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1117 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitLinearMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1124:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1124 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1131:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1131 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitSplineMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1138:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1138 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1145:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1145 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitFirFilterMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1152:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1152 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1160:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1160 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1167:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1167 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1174:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1174 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitLinearRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1181:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1181 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1188:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1188 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitSplineRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1195:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1195 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo8BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:291:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1202:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP8'
1202 | SNDMIX_BEGINSAMPLELOOP8
| ^~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In function 'VOID FilterStereo16BitFirFilterRampMix(MODCHANNEL*, int*, int*)':
fastmix.cpp:299:37: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
299 | register MODCHANNEL * const pChn = pChannel;\
| ^~~~
fastmix.cpp:1209:9: note: in expansion of macro 'SNDMIX_BEGINSAMPLELOOP16'
1209 | SNDMIX_BEGINSAMPLELOOP16
| ^~~~~~~~~~~~~~~~~~~~~~~~
fastmix.cpp: In member function 'UINT CSoundFile::CreateStereoMix(int)':
fastmix.cpp:1488:30: warning: variable 'nMasterCh' set but not used [-Wunused-but-set-variable]
1488 | UINT nFlags, nMasterCh;
| ^~~~~~~~~
load_pat.cpp: In function 'void pat_init_patnames()':
load_pat.cpp:281:54: warning: ignoring return value of 'char* fgets(char*, int, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
281 | #define _mm_fgets(f,buf,sz) fgets(buf,sz,f)
| ~~~~~^~~~~~~~~~
load_pat.cpp:387:25: note: in expansion of macro '_mm_fgets'
387 | _mm_fgets(mmcfg, line, PATH_MAX);
| ^~~~~~~~~
load_pat.cpp:281:54: warning: ignoring return value of 'char* fgets(char*, int, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
281 | #define _mm_fgets(f,buf,sz) fgets(buf,sz,f)
| ~~~~~^~~~~~~~~~
load_pat.cpp:433:25: note: in expansion of macro '_mm_fgets'
433 | _mm_fgets(mmcfg, line, PATH_MAX);
| ^~~~~~~~~
load_pat.cpp: In function 'void pat_read_waveheader(FILE*, WaveHeader*, int)':
load_pat.cpp:284:54: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
284 | #define _mm_read_UBYTES(buf,sz,f) fread(buf,sz,1,f)
| ~~~~~^~~~~~~~~~~~
load_pat.cpp:517:33: note: in expansion of macro '_mm_read_UBYTES'
517 | _mm_read_UBYTES((BYTE *)hw, sizeof(WaveHeader), mmpat);
| ^~~~~~~~~~~~~~~
load_pat.cpp:284:54: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
284 | #define _mm_read_UBYTES(buf,sz,f) fread(buf,sz,1,f)
| ~~~~~^~~~~~~~~~~~
load_pat.cpp:525:33: note: in expansion of macro '_mm_read_UBYTES'
525 | _mm_read_UBYTES((BYTE *)hw, sizeof(WaveHeader), mmpat);
| ^~~~~~~~~~~~~~~
load_pat.cpp:284:54: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
284 | #define _mm_read_UBYTES(buf,sz,f) fread(buf,sz,1,f)
| ~~~~~^~~~~~~~~~~~
load_pat.cpp:542:9: note: in expansion of macro '_mm_read_UBYTES'
542 | _mm_read_UBYTES((BYTE *)hw, sizeof(WaveHeader), mmpat);
| ^~~~~~~~~~~~~~~
load_pat.cpp: In function 'void pat_read_layerheader(FILE*, LayerHeader*)':
load_pat.cpp:284:54: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
284 | #define _mm_read_UBYTES(buf,sz,f) fread(buf,sz,1,f)
| ~~~~~^~~~~~~~~~~~
load_pat.cpp:486:9: note: in expansion of macro '_mm_read_UBYTES'
486 | _mm_read_UBYTES((BYTE *)hl, sizeof(LayerHeader), mmpat);
| ^~~~~~~~~~~~~~~
load_pat.cpp: In function 'void pat_readpat(int, char*, int)':
load_pat.cpp:285:54: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
285 | #define _mm_read_SBYTES(buf,sz,f) fread(buf,sz,1,f)
| ~~~~~^~~~~~~~~~~~
load_pat.cpp:695:9: note: in expansion of macro '_mm_read_SBYTES'
695 | _mm_read_SBYTES(dest, num, mmpat);
| ^~~~~~~~~~~~~~~
load_abc.cpp: In function 'ABCTRACK* abc_locate_track(ABCHANDLE*, const char*, int)':
load_abc.cpp:829:23: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
829 | for( i=0; i+1 < sizeof(vc) && *voice && *voice != ']' && *voice != '%' && !isspace(*voice); voice++ ) // can work with inline voice instructions
| ~~~~^~~~~~~~~~~~
load_abc.cpp: In function 'void abc_add_chord(const char*, ABCHANDLE*, ABCTRACK*, uint32_t)':
load_abc.cpp:1499:21: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
1499 | for( i=0; i < sizeof(s) - 1 && p[i] && p[i] != '"' && p[i] != '/' && p[i] != '(' && p[i] != ')' && p[i] != ' '; i++ ) s[i] = p[i];
| ~~^~~~~~~~~~~~~~~
load_abc.cpp: In function 'void abc_set_parts(char**, char*)':
load_abc.cpp:1833:56: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare]
1833 | for( i=0; p[i] && p[i] != '%' && j < size && i < size; i++ ) {
| ~~^~~~~~
load_abc.cpp:1839:54: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare]
1839 | for( k = n; k<j; k++ ) q[k-1] = q[k]; // shift to the left...
| ~^~
load_abc.cpp:1874:20: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare]
1874 | for( i=0; i<j; i++ ) {
| ~^~
load_abc.cpp:1877:36: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'long unsigned int'} [-Wsign-compare]
1877 | for( k=i; k<j; k++ ) q[k] = q[k+1];
| ~^~
load_abc.cpp: In function 'int abc_MIDI_drum(const char*, ABCHANDLE*)':
load_abc.cpp:2979:41: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
2979 | if( !isdigit(*p) && len < sizeof(h->drum)-1 ) {
| ~~~~^~~~~~~~~~~~~~~~~~~
load_abc.cpp:2983:25: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
2983 | if (len >= sizeof(h->drum)-1) {
| ~~~~^~~~~~~~~~~~~~~~~~~~
load_abc.cpp: In function 'int abc_MIDI_gchord(const char*, ABCHANDLE*)':
load_abc.cpp:3033:41: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
3033 | if( !isdigit(*p) && len < sizeof(h->gchord)-1 && !isdigit(p[1]) ) { *q++ = '1'; len ++; }
| ~~~~^~~~~~~~~~~~~~~~~~~~~
load_abc.cpp:3034:25: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
3034 | if (len >= sizeof(h->gchord)-1) {
| ~~~~^~~~~~~~~~~~~~~~~~~~~~
load_abc.cpp: In function 'void abc_metric_gchord(ABCHANDLE*, int, int)':
load_abc.cpp:3080:34: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
3080 | if (dest >= sizeof(h->gchord))
| ~~~~~^~~~~~~~~~~~~~~~~~~~
load_abc.cpp: In member function 'BOOL CSoundFile::ReadABC(const uint8_t*, DWORD)':
load_abc.cpp:3935:64: warning: comparison of integer expressions of different signedness: 'int' and 'DWORD' {aka 'unsigned int'} [-Wsign-compare]
3935 | if (mmstack[mmsp]->pos < dwMemLength) {
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
load_abc.cpp: In function 'MMFILE* mmfopen(const char*, const char*)':
load_abc.cpp:447:14: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
447 | fread(&mmfile[1],1,len,fp);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~
load_abc.cpp:428:3: warning: type 'struct MMFILE' violates the C++ One Definition Rule [-Wodr]
428 | } MMFILE;
| ^
load_mid.cpp:108:3: note: a different type is defined in another translation unit
108 | } MMFILE;
| ^
load_abc.cpp:426:13: note: the first difference of corresponding definitions is field 'sz'
426 | int sz;
| ^
load_mid.cpp:106:22: note: a field of same name but different type is defined in another translation unit
106 | unsigned int sz;
| ^
load_abc.cpp:428:3: note: type 'int' should match type 'unsigned int'
428 | } MMFILE;
| ^
snd_dsp.cpp:102:12: warning: type of 'MixSoundBuffer' does not match original declaration [-Wlto-type-mismatch]
102 | extern int MixSoundBuffer[MIXBUFFERSIZE*2];
| ^
fastmix.cpp:17:5: note: array types have different bounds
17 | int MixSoundBuffer[MIXBUFFERSIZE*4];
| ^
fastmix.cpp:17:5: note: 'MixSoundBuffer' was previously declared here
libtool: warning: remember to run 'libtool --finish /usr/lib64'
FFmpeg relies on libraries probing capabilities do detect if a file is in a format supported by the library. Please implement probing for file formats supported by libmodplug, so FFmpeg is able to detect mod files with invalid extension.
See https://trac.ffmpeg.org/ticket/2583 & https://trac.ffmpeg.org/ticket/4153
replacement setenv() in load_abc is broken: it frees the buffer memory after feeding it to putenv(), but it needs to stay persistent. See the putenv() manpage for it. I don't have a patch for this.
Examples at modland.com Andy Vaisey PlaySID tunes
@erique's playsid.library
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.