diff --git a/MacOSX/codecs/include/libmodplug/modplug.h b/MacOSX/codecs/include/libmodplug/modplug.h new file mode 100644 index 00000000..3ffbf9d9 --- /dev/null +++ b/MacOSX/codecs/include/libmodplug/modplug.h @@ -0,0 +1,185 @@ +/* + * This source code is public domain. + * + * Authors: Kenton Varda (C interface wrapper) + */ + +#ifndef MODPLUG_H__INCLUDED +#define MODPLUG_H__INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) +# if defined(MODPLUG_BUILD) && defined(DLL_EXPORT) /* building libmodplug as a dll for windows */ +# define MODPLUG_EXPORT __declspec(dllexport) +# elif defined(MODPLUG_BUILD) || defined(MODPLUG_STATIC) /* building or using static libmodplug for windows */ +# define MODPLUG_EXPORT +# else +# define MODPLUG_EXPORT __declspec(dllimport) /* using libmodplug dll for windows */ +# endif +#elif defined(MODPLUG_BUILD) && defined(SYM_VISIBILITY) +# define MODPLUG_EXPORT __attribute__((visibility("default"))) +#else +#define MODPLUG_EXPORT +#endif + +struct _ModPlugFile; +typedef struct _ModPlugFile ModPlugFile; + +struct _ModPlugNote { + unsigned char Note; + unsigned char Instrument; + unsigned char VolumeEffect; + unsigned char Effect; + unsigned char Volume; + unsigned char Parameter; +}; +typedef struct _ModPlugNote ModPlugNote; + +typedef void (*ModPlugMixerProc)(int*, unsigned long, unsigned long); + +/* Load a mod file. [data] should point to a block of memory containing the complete + * file, and [size] should be the size of that block. + * Return the loaded mod file on success, or NULL on failure. */ +MODPLUG_EXPORT ModPlugFile* ModPlug_Load(const void* data, int size); +/* Unload a mod file. */ +MODPLUG_EXPORT void ModPlug_Unload(ModPlugFile* file); + +/* Read sample data into the buffer. Returns the number of bytes read. If the end + * of the mod has been reached, zero is returned. */ +MODPLUG_EXPORT int ModPlug_Read(ModPlugFile* file, void* buffer, int size); + +/* Get the name of the mod. The returned buffer is stored within the ModPlugFile + * structure and will remain valid until you unload the file. */ +MODPLUG_EXPORT const char* ModPlug_GetName(ModPlugFile* file); + +/* Get the length of the mod, in milliseconds. Note that this result is not always + * accurate, especially in the case of mods with loops. */ +MODPLUG_EXPORT int ModPlug_GetLength(ModPlugFile* file); + +/* Seek to a particular position in the song. Note that seeking and MODs don't mix very + * well. Some mods will be missing instruments for a short time after a seek, as ModPlug + * does not scan the sequence backwards to find out which instruments were supposed to be + * playing at that time. (Doing so would be difficult and not very reliable.) Also, + * note that seeking is not very exact in some mods -- especially those for which + * ModPlug_GetLength() does not report the full length. */ +MODPLUG_EXPORT void ModPlug_Seek(ModPlugFile* file, int millisecond); + +enum _ModPlug_Flags +{ + MODPLUG_ENABLE_OVERSAMPLING = 1 << 0, /* Enable oversampling (*highly* recommended) */ + MODPLUG_ENABLE_NOISE_REDUCTION = 1 << 1, /* Enable noise reduction */ + MODPLUG_ENABLE_REVERB = 1 << 2, /* Enable reverb */ + MODPLUG_ENABLE_MEGABASS = 1 << 3, /* Enable megabass */ + MODPLUG_ENABLE_SURROUND = 1 << 4 /* Enable surround sound. */ +}; + +enum _ModPlug_ResamplingMode +{ + MODPLUG_RESAMPLE_NEAREST = 0, /* No interpolation (very fast, extremely bad sound quality) */ + MODPLUG_RESAMPLE_LINEAR = 1, /* Linear interpolation (fast, good quality) */ + MODPLUG_RESAMPLE_SPLINE = 2, /* Cubic spline interpolation (high quality) */ + MODPLUG_RESAMPLE_FIR = 3 /* 8-tap fir filter (extremely high quality) */ +}; + +typedef struct _ModPlug_Settings +{ + int mFlags; /* One or more of the MODPLUG_ENABLE_* flags above, bitwise-OR'ed */ + + /* Note that ModPlug always decodes sound at 44100kHz, 32 bit, stereo and then + * down-mixes to the settings you choose. */ + int mChannels; /* Number of channels - 1 for mono or 2 for stereo */ + int mBits; /* Bits per sample - 8, 16, or 32 */ + int mFrequency; /* Sampling rate - 11025, 22050, or 44100 */ + int mResamplingMode; /* One of MODPLUG_RESAMPLE_*, above */ + + int mStereoSeparation; /* Stereo separation, 1 - 256 */ + int mMaxMixChannels; /* Maximum number of mixing channels (polyphony), 32 - 256 */ + + int mReverbDepth; /* Reverb level 0(quiet)-100(loud) */ + int mReverbDelay; /* Reverb delay in ms, usually 40-200ms */ + int mBassAmount; /* XBass level 0(quiet)-100(loud) */ + int mBassRange; /* XBass cutoff in Hz 10-100 */ + int mSurroundDepth; /* Surround level 0(quiet)-100(heavy) */ + int mSurroundDelay; /* Surround delay in ms, usually 5-40ms */ + int mLoopCount; /* Number of times to loop. Zero prevents looping. + * -1 loops forever. */ +} ModPlug_Settings; + +/* Get and set the mod decoder settings. All options, except for channels, bits-per-sample, + * sampling rate, and loop count, will take effect immediately. Those options which don't + * take effect immediately will take effect the next time you load a mod. */ +MODPLUG_EXPORT void ModPlug_GetSettings(ModPlug_Settings* settings); +MODPLUG_EXPORT void ModPlug_SetSettings(const ModPlug_Settings* settings); + +/* New ModPlug API Functions */ +/* NOTE: Master Volume (1-512) */ +MODPLUG_EXPORT unsigned int ModPlug_GetMasterVolume(ModPlugFile* file) ; +MODPLUG_EXPORT void ModPlug_SetMasterVolume(ModPlugFile* file,unsigned int cvol) ; + +MODPLUG_EXPORT int ModPlug_GetCurrentSpeed(ModPlugFile* file); +MODPLUG_EXPORT int ModPlug_GetCurrentTempo(ModPlugFile* file); +MODPLUG_EXPORT int ModPlug_GetCurrentOrder(ModPlugFile* file); +MODPLUG_EXPORT int ModPlug_GetCurrentPattern(ModPlugFile* file); +MODPLUG_EXPORT int ModPlug_GetCurrentRow(ModPlugFile* file); +MODPLUG_EXPORT int ModPlug_GetPlayingChannels(ModPlugFile* file); + +MODPLUG_EXPORT void ModPlug_SeekOrder(ModPlugFile* file,int order); +MODPLUG_EXPORT int ModPlug_GetModuleType(ModPlugFile* file); +MODPLUG_EXPORT char* ModPlug_GetMessage(ModPlugFile* file); + +#define MODPLUG_NO_FILESAVE /* experimental yet. must match stdafx.h. */ +#ifndef MODPLUG_NO_FILESAVE +/* + * EXPERIMENTAL Export Functions + */ +/*Export to a Scream Tracker 3 S3M module. EXPERIMENTAL (only works on Little-Endian platforms)*/ +MODPLUG_EXPORT char ModPlug_ExportS3M(ModPlugFile* file, const char* filepath); + +/*Export to a Extended Module (XM). EXPERIMENTAL (only works on Little-Endian platforms)*/ +MODPLUG_EXPORT char ModPlug_ExportXM(ModPlugFile* file, const char* filepath); + +/*Export to a Amiga MOD file. EXPERIMENTAL.*/ +MODPLUG_EXPORT char ModPlug_ExportMOD(ModPlugFile* file, const char* filepath); + +/*Export to a Impulse Tracker IT file. Should work OK in Little-Endian & Big-Endian platforms :-) */ +MODPLUG_EXPORT char ModPlug_ExportIT(ModPlugFile* file, const char* filepath); +#endif /* MODPLUG_NO_FILESAVE */ + +MODPLUG_EXPORT unsigned int ModPlug_NumInstruments(ModPlugFile* file); +MODPLUG_EXPORT unsigned int ModPlug_NumSamples(ModPlugFile* file); +MODPLUG_EXPORT unsigned int ModPlug_NumPatterns(ModPlugFile* file); +MODPLUG_EXPORT unsigned int ModPlug_NumChannels(ModPlugFile* file); +MODPLUG_EXPORT unsigned int ModPlug_SampleName(ModPlugFile* file, unsigned int qual, char* buff); +MODPLUG_EXPORT unsigned int ModPlug_InstrumentName(ModPlugFile* file, unsigned int qual, char* buff); + +/* + * Retrieve pattern note-data + */ +MODPLUG_EXPORT ModPlugNote* ModPlug_GetPattern(ModPlugFile* file, int pattern, unsigned int* numrows); + +/* + * ================= + * Mixer callback + * ================= + * + * Use this callback if you want to 'modify' the mixed data of LibModPlug. + * + * void proc(int* buffer,unsigned long channels,unsigned long nsamples) ; + * + * 'buffer': A buffer of mixed samples + * 'channels': N. of channels in the buffer + * 'nsamples': N. of samples in the buffeer (without taking care of n.channels) + * + * (Samples are signed 32-bit integers) + */ +MODPLUG_EXPORT void ModPlug_InitMixerCallback(ModPlugFile* file,ModPlugMixerProc proc) ; +MODPLUG_EXPORT void ModPlug_UnloadMixerCallback(ModPlugFile* file) ; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/MacOSX/codecs/include/modplug_config.txt b/MacOSX/codecs/include/modplug_config.txt new file mode 100644 index 00000000..caabd655 --- /dev/null +++ b/MacOSX/codecs/include/modplug_config.txt @@ -0,0 +1,3 @@ +libmodplug - v0.8.8.5 release + git (2014-06-10.) + +only the C-interface is exported in the dylibs, which is what we use. diff --git a/MacOSX/codecs/lib/libmodplug.dylib b/MacOSX/codecs/lib/libmodplug.dylib new file mode 100755 index 00000000..2a1364ec Binary files /dev/null and b/MacOSX/codecs/lib/libmodplug.dylib differ diff --git a/Windows/codecs/include/libmodplug/modplug.h b/Windows/codecs/include/libmodplug/modplug.h index 9b57ec73..3ffbf9d9 100644 --- a/Windows/codecs/include/libmodplug/modplug.h +++ b/Windows/codecs/include/libmodplug/modplug.h @@ -19,9 +19,8 @@ extern "C" { # else # define MODPLUG_EXPORT __declspec(dllimport) /* using libmodplug dll for windows */ # endif -/* FIXME: USE VISIBILITY ATTRIBUTES HERE */ -#elif defined(MODPLUG_BUILD) -#define MODPLUG_EXPORT +#elif defined(MODPLUG_BUILD) && defined(SYM_VISIBILITY) +# define MODPLUG_EXPORT __attribute__((visibility("default"))) #else #define MODPLUG_EXPORT #endif @@ -88,7 +87,7 @@ enum _ModPlug_ResamplingMode typedef struct _ModPlug_Settings { int mFlags; /* One or more of the MODPLUG_ENABLE_* flags above, bitwise-OR'ed */ - + /* Note that ModPlug always decodes sound at 44100kHz, 32 bit, stereo and then * down-mixes to the settings you choose. */ int mChannels; /* Number of channels - 1 for mono or 2 for stereo */ @@ -98,7 +97,7 @@ typedef struct _ModPlug_Settings int mStereoSeparation; /* Stereo separation, 1 - 256 */ int mMaxMixChannels; /* Maximum number of mixing channels (polyphony), 32 - 256 */ - + int mReverbDepth; /* Reverb level 0(quiet)-100(loud) */ int mReverbDelay; /* Reverb delay in ms, usually 40-200ms */ int mBassAmount; /* XBass level 0(quiet)-100(loud) */ @@ -106,7 +105,7 @@ typedef struct _ModPlug_Settings int mSurroundDepth; /* Surround level 0(quiet)-100(heavy) */ int mSurroundDelay; /* Surround delay in ms, usually 5-40ms */ int mLoopCount; /* Number of times to loop. Zero prevents looping. - -1 loops forever. */ + * -1 loops forever. */ } ModPlug_Settings; /* Get and set the mod decoder settings. All options, except for channels, bits-per-sample, @@ -131,7 +130,7 @@ MODPLUG_EXPORT void ModPlug_SeekOrder(ModPlugFile* file,int order); MODPLUG_EXPORT int ModPlug_GetModuleType(ModPlugFile* file); MODPLUG_EXPORT char* ModPlug_GetMessage(ModPlugFile* file); - +#define MODPLUG_NO_FILESAVE /* experimental yet. must match stdafx.h. */ #ifndef MODPLUG_NO_FILESAVE /* * EXPERIMENTAL Export Functions @@ -147,7 +146,7 @@ MODPLUG_EXPORT char ModPlug_ExportMOD(ModPlugFile* file, const char* filepath); /*Export to a Impulse Tracker IT file. Should work OK in Little-Endian & Big-Endian platforms :-) */ MODPLUG_EXPORT char ModPlug_ExportIT(ModPlugFile* file, const char* filepath); -#endif // MODPLUG_NO_FILESAVE +#endif /* MODPLUG_NO_FILESAVE */ MODPLUG_EXPORT unsigned int ModPlug_NumInstruments(ModPlugFile* file); MODPLUG_EXPORT unsigned int ModPlug_NumSamples(ModPlugFile* file); diff --git a/Windows/codecs/include/modplug_config.txt b/Windows/codecs/include/modplug_config.txt index 3f540638..d2cfa5a0 100644 --- a/Windows/codecs/include/modplug_config.txt +++ b/Windows/codecs/include/modplug_config.txt @@ -1,4 +1,4 @@ -libmodplug - version 0.8.8.5 (release 2014-03-10.) +libmodplug - v0.8.8.5 release + git (2014-06-10.) only the C-interface is exported in the dlls and the import libraries, which is what we use. the dll is compiled using mingw (gcc-3.4.5/x86) diff --git a/Windows/codecs/x64/libFLAC.lib b/Windows/codecs/x64/libFLAC.lib index f6299984..5a57b7d0 100644 Binary files a/Windows/codecs/x64/libFLAC.lib and b/Windows/codecs/x64/libFLAC.lib differ diff --git a/Windows/codecs/x64/libmodplug-1.dll b/Windows/codecs/x64/libmodplug-1.dll index 002c61d3..bb0f29d0 100644 Binary files a/Windows/codecs/x64/libmodplug-1.dll and b/Windows/codecs/x64/libmodplug-1.dll differ diff --git a/Windows/codecs/x64/libmodplug.dll.a b/Windows/codecs/x64/libmodplug.dll.a index 343303ea..0527c025 100644 Binary files a/Windows/codecs/x64/libmodplug.dll.a and b/Windows/codecs/x64/libmodplug.dll.a differ diff --git a/Windows/codecs/x64/libmodplug.lib b/Windows/codecs/x64/libmodplug.lib index 86378c4e..3b92f146 100644 Binary files a/Windows/codecs/x64/libmodplug.lib and b/Windows/codecs/x64/libmodplug.lib differ diff --git a/Windows/codecs/x64/libopusfile.lib b/Windows/codecs/x64/libopusfile.lib index 68c58425..6d87263e 100644 Binary files a/Windows/codecs/x64/libopusfile.lib and b/Windows/codecs/x64/libopusfile.lib differ diff --git a/Windows/codecs/x86/libFLAC.lib b/Windows/codecs/x86/libFLAC.lib index 1448523e..48aeae91 100644 Binary files a/Windows/codecs/x86/libFLAC.lib and b/Windows/codecs/x86/libFLAC.lib differ diff --git a/Windows/codecs/x86/libmodplug-1.dll b/Windows/codecs/x86/libmodplug-1.dll index 8577e61b..50f776a5 100644 Binary files a/Windows/codecs/x86/libmodplug-1.dll and b/Windows/codecs/x86/libmodplug-1.dll differ diff --git a/Windows/codecs/x86/libmodplug.dll.a b/Windows/codecs/x86/libmodplug.dll.a index af427390..3b958ac3 100644 Binary files a/Windows/codecs/x86/libmodplug.dll.a and b/Windows/codecs/x86/libmodplug.dll.a differ diff --git a/Windows/codecs/x86/libmodplug.lib b/Windows/codecs/x86/libmodplug.lib index d39447ee..bc7fadb5 100644 Binary files a/Windows/codecs/x86/libmodplug.lib and b/Windows/codecs/x86/libmodplug.lib differ diff --git a/Windows/codecs/x86/libopusfile.lib b/Windows/codecs/x86/libopusfile.lib index c046a5c5..d36ff516 100644 Binary files a/Windows/codecs/x86/libopusfile.lib and b/Windows/codecs/x86/libopusfile.lib differ