Mercurial > audlegacy
annotate Plugins/Input/modplug/modplugbmp.cpp @ 924:5ef13028e42d trunk
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
| author | chainsaw |
|---|---|
| date | Tue, 11 Apr 2006 14:33:16 -0700 |
| parents | a540829b188a |
| children | 543e37d18997 |
| rev | line source |
|---|---|
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
1 /* Modplug XMMS Plugin |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
2 * Authors: Kenton Varda <temporal@gauge3d.org> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
3 * |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
4 * This source code is public domain. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
5 */ |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
6 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
7 #include <fstream> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
8 #include <unistd.h> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
9 #include <math.h> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
10 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
11 #include "modplugbmp.h" |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
12 #include <libmodplug/stdafx.h> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
13 #include <libmodplug/sndfile.h> |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
14 #include "stddefs.h" |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
15 #include "archive/open.h" |
| 330 | 16 #include "libaudacious/configdb.h" |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
17 #include "libaudacious/vfs.h" |
|
414
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
18 extern "C" { |
|
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
19 #include "audacious/output.h" |
|
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
20 } |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
21 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
22 // ModplugXMMS member functions =============================== |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
23 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
24 // operations ---------------------------------------- |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
25 ModplugXMMS::ModplugXMMS() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
26 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
27 mSoundFile = new CSoundFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
28 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
29 ModplugXMMS::~ModplugXMMS() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
30 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
31 delete mSoundFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
32 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
33 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
34 ModplugXMMS::Settings::Settings() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
35 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
36 mSurround = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
37 mOversamp = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
38 mReverb = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
39 mMegabass = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
40 mNoiseReduction = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
41 mVolumeRamp = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
42 mFastinfo = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
43 mUseFilename = false; |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
44 mGrabAmigaMOD = true; |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
45 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
46 mChannels = 2; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
47 mFrequency = 44100; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
48 mBits = 16; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
49 mResamplingMode = SRCMODE_POLYPHASE; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
50 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
51 mReverbDepth = 30; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
52 mReverbDelay = 100; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
53 mBassAmount = 40; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
54 mBassRange = 30; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
55 mSurroundDepth = 20; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
56 mSurroundDelay = 20; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
57 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
58 mPreamp = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
59 mPreampLevel = 0.0f; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
60 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
61 mLoopCount = 0; //don't loop |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
62 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
63 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
64 void ModplugXMMS::Init(void) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
65 { |
| 330 | 66 ConfigDb *db; |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
67 |
| 330 | 68 db = bmp_cfg_db_open(); |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
69 |
| 330 | 70 bmp_cfg_db_get_bool(db,"modplug","Surround", &mModProps.mSurround); |
| 71 bmp_cfg_db_get_bool(db,"modplug","Oversampling", &mModProps.mOversamp); | |
| 72 bmp_cfg_db_get_bool(db,"modplug","Megabass", &mModProps.mMegabass); | |
| 73 bmp_cfg_db_get_bool(db,"modplug","NoiseReduction", &mModProps.mNoiseReduction); | |
| 74 bmp_cfg_db_get_bool(db,"modplug","VolumeRamp", &mModProps.mVolumeRamp); | |
| 75 bmp_cfg_db_get_bool(db,"modplug","Reverb", &mModProps.mReverb); | |
| 76 bmp_cfg_db_get_bool(db,"modplug","FastInfo", &mModProps.mFastinfo); | |
| 77 bmp_cfg_db_get_bool(db,"modplug","UseFileName", &mModProps.mUseFilename); | |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
78 bmp_cfg_db_get_bool(db,"modplug","GrabAmigaMOD", &mModProps.mGrabAmigaMOD); |
| 330 | 79 bmp_cfg_db_get_bool(db,"modplug","PreAmp", &mModProps.mPreamp); |
| 80 bmp_cfg_db_get_float(db,"modplug","PreAmpLevel", &mModProps.mPreampLevel); | |
| 81 bmp_cfg_db_get_int(db,"modplug", "Channels", &mModProps.mChannels); | |
| 82 bmp_cfg_db_get_int(db,"modplug", "Bits", &mModProps.mBits); | |
| 83 bmp_cfg_db_get_int(db,"modplug", "Frequency", &mModProps.mFrequency); | |
| 84 bmp_cfg_db_get_int(db,"modplug", "ResamplineMode", &mModProps.mResamplingMode); | |
| 85 bmp_cfg_db_get_int(db,"modplug", "ReverbDepth", &mModProps.mReverbDepth); | |
| 86 bmp_cfg_db_get_int(db,"modplug", "ReverbDelay", &mModProps.mReverbDelay); | |
| 87 bmp_cfg_db_get_int(db,"modplug", "BassAmount", &mModProps.mBassAmount); | |
| 88 bmp_cfg_db_get_int(db,"modplug", "BassRange", &mModProps.mBassRange); | |
| 89 bmp_cfg_db_get_int(db,"modplug", "SurroundDepth", &mModProps.mSurroundDepth); | |
| 90 bmp_cfg_db_get_int(db,"modplug", "SurroundDelay", &mModProps.mSurroundDelay); | |
| 91 bmp_cfg_db_get_int(db,"modplug", "LoopCount", &mModProps.mLoopCount); | |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
92 |
| 330 | 93 bmp_cfg_db_close(db); |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
94 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
95 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
96 bool ModplugXMMS::CanPlayFile(const string& aFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
97 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
98 string lExt; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
99 uint32 lPos; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
100 |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
101 VFSFile *file; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
102 gchar magic[4]; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
103 |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
104 if ((file = vfs_fopen(aFilename.c_str(), "rb"))) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
105 vfs_fread(magic, 1, 4, file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
106 if (!memcmp(magic, UMX_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
107 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
108 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
109 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
110 if (!memcmp(magic, XM_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
111 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
112 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
113 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
114 if (!memcmp(magic, M669_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
115 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
116 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
117 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
118 if (!memcmp(magic, IT_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
119 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
120 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
121 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
122 if (!memcmp(magic, MTM_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
123 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
124 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
125 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
126 if (!memcmp(magic, PSM_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
127 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
128 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
129 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
130 vfs_fseek(file, 44, SEEK_SET); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
131 vfs_fread(magic, 1, 4, file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
132 if (!memcmp(magic, S3M_MAGIC, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
133 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
134 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
135 } |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
136 if(mModProps.mGrabAmigaMOD) { |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
137 vfs_fseek(file, 1080, SEEK_SET); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
138 vfs_fread(magic, 1, 4, file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
139 if (!memcmp(magic, MOD_MAGIC_PROTRACKER4, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
140 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
141 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
142 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
143 if (!memcmp(magic, MOD_MAGIC_PROTRACKER4X, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
144 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
145 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
146 } |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
147 if (!memcmp(magic, MOD_MAGIC_NOISETRACKER, 4)) { |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
148 vfs_fclose(file); |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
149 return 1; |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
150 } |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
151 if (!memcmp(magic, MOD_MAGIC_STARTRACKER4, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
152 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
153 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
154 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
155 if (!memcmp(magic, MOD_MAGIC_STARTRACKER8, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
156 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
157 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
158 } |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
159 if (!memcmp(magic, MOD_MAGIC_STARTRACKER4X, 4)) { |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
160 vfs_fclose(file); |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
161 return 1; |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
162 } |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
163 if (!memcmp(magic, MOD_MAGIC_STARTRACKER8X, 4)) { |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
164 vfs_fclose(file); |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
165 return 1; |
|
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
166 } |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
167 if (!memcmp(magic, MOD_MAGIC_FASTTRACKER4, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
168 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
169 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
170 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
171 if (!memcmp(magic, MOD_MAGIC_FASTTRACKER6, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
172 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
173 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
174 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
175 if (!memcmp(magic, MOD_MAGIC_FASTTRACKER8, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
176 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
177 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
178 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
179 if (!memcmp(magic, MOD_MAGIC_OKTALYZER8, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
180 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
181 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
182 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
183 if (!memcmp(magic, MOD_MAGIC_OKTALYZER8X, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
184 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
185 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
186 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
187 if (!memcmp(magic, MOD_MAGIC_TAKETRACKER16, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
188 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
189 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
190 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
191 if (!memcmp(magic, MOD_MAGIC_TAKETRACKER32, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
192 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
193 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
194 } |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
195 if (!memcmp(magic, MOD_MAGIC_15INSTRUMENT, 4)) { |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
196 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
197 return 1; |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
198 } |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
199 } /* end of if(mModProps.mGrabAmigaMOD) */ |
|
910
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
200 |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
201 /* We didn't find the magic bytes, fall back to extension check */ |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
202 vfs_fclose(file); |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
203 } /* end of vfs_open main if statement */ |
|
a540829b188a
[svn] Detection of modules by magic bytes instead of by extension. Please let me know of false positives, if any. I would appreciate examples for any of the extensions still listed in the fallback that are not archives.
chainsaw
parents:
845
diff
changeset
|
204 |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
205 lPos = aFilename.find_last_of('.'); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
206 if((int)lPos == -1) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
207 return false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
208 lExt = aFilename.substr(lPos); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
209 for(uint32 i = 0; i < lExt.length(); i++) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
210 lExt[i] = tolower(lExt[i]); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
211 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
212 if (lExt == ".amf") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
213 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
214 if (lExt == ".ams") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
215 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
216 if (lExt == ".dbm") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
217 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
218 if (lExt == ".dbf") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
219 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
220 if (lExt == ".dsm") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
221 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
222 if (lExt == ".far") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
223 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
224 if (lExt == ".mdl") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
225 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
226 if (lExt == ".stm") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
227 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
228 if (lExt == ".ult") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
229 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
230 if (lExt == ".j2b") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
231 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
232 if (lExt == ".mt2") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
233 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
234 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
235 if (lExt == ".mdz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
236 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
237 if (lExt == ".mdr") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
238 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
239 if (lExt == ".mdgz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
240 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
241 if (lExt == ".mdbz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
242 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
243 if (lExt == ".s3z") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
244 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
245 if (lExt == ".s3r") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
246 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
247 if (lExt == ".s3gz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
248 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
249 if (lExt == ".xmz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
250 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
251 if (lExt == ".xmr") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
252 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
253 if (lExt == ".xmgz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
254 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
255 if (lExt == ".itz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
256 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
257 if (lExt == ".itr") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
258 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
259 if (lExt == ".itgz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
260 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
261 if (lExt == ".dmf") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
262 return true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
263 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
264 if (lExt == ".zip") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
265 return ContainsMod(aFilename); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
266 if (lExt == ".gz") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
267 return ContainsMod(aFilename); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
268 if (lExt == ".bz2") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
269 return ContainsMod(aFilename); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
270 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
271 return false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
272 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
273 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
274 void* ModplugXMMS::PlayThread(void* arg) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
275 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
276 ((ModplugXMMS*)arg)->PlayLoop(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
277 return NULL; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
278 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
279 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
280 void ModplugXMMS::PlayLoop() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
281 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
282 uint32 lLength; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
283 //the user might change the number of channels while playing. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
284 // we don't want this to take effect until we are done! |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
285 uint8 lChannels = mModProps.mChannels; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
286 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
287 while(!mStopped) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
288 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
289 if(!(lLength = mSoundFile->Read( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
290 mBuffer, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
291 mBufSize))) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
292 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
293 //no more to play. Wait for output to finish and then stop. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
294 while((mOutPlug->buffer_playing()) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
295 && (!mStopped)) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
296 usleep(10000); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
297 break; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
298 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
299 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
300 if(mModProps.mPreamp) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
301 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
302 //apply preamp |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
303 if(mModProps.mBits == 16) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
304 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
305 uint n = mBufSize >> 1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
306 for(uint i = 0; i < n; i++) { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
307 short old = ((short*)mBuffer)[i]; |
|
701
d539e5c5f730
[svn] Fixes of the remaining GCC 4.1 warnings from external contributor Diego "Flameeyes" Petteno (Gentoo).
chainsaw
parents:
414
diff
changeset
|
308 ((short*)mBuffer)[i] *= (short int)mPreampFactor; |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
309 // detect overflow and clip! |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
310 if ((old & 0x8000) != |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
311 (((short*)mBuffer)[i] & 0x8000)) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
312 ((short*)mBuffer)[i] = old | 0x7FFF; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
313 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
314 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
315 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
316 else |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
317 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
318 for(uint i = 0; i < mBufSize; i++) { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
319 uchar old = ((uchar*)mBuffer)[i]; |
|
701
d539e5c5f730
[svn] Fixes of the remaining GCC 4.1 warnings from external contributor Diego "Flameeyes" Petteno (Gentoo).
chainsaw
parents:
414
diff
changeset
|
320 ((uchar*)mBuffer)[i] *= (short int)mPreampFactor; |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
321 // detect overflow and clip! |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
322 if ((old & 0x80) != |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
323 (((uchar*)mBuffer)[i] & 0x80)) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
324 ((uchar*)mBuffer)[i] = old | 0x7F; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
325 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
326 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
327 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
328 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
329 if(mStopped) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
330 break; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
331 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
332 //wait for buffer space to free up. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
333 while(((mOutPlug->buffer_free() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
334 < (int)mBufSize)) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
335 && (!mStopped)) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
336 usleep(10000); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
337 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
338 if(mStopped) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
339 break; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
340 |
|
414
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
341 produce_audio |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
342 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
343 mPlayed, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
344 mFormat, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
345 lChannels, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
346 mBufSize, |
|
414
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
347 mBuffer, |
|
7fa1738514d5
[svn] Convert all input plugins (except timidity & wav-sndfile) to produce_audio.
chainsaw
parents:
330
diff
changeset
|
348 NULL |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
349 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
350 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
351 mPlayed += mBufTime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
352 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
353 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
354 // mOutPlug->flush(0); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
355 mOutPlug->close_audio(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
356 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
357 //Unload the file |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
358 mSoundFile->Destroy(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
359 delete mArchive; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
360 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
361 if (mBuffer) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
362 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
363 delete [] mBuffer; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
364 mBuffer = NULL; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
365 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
366 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
367 mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
368 mStopped = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
369 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
370 g_thread_exit(NULL); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
371 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
372 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
373 void ModplugXMMS::PlayFile(const string& aFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
374 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
375 mStopped = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
376 mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
377 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
378 //open and mmap the file |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
379 mArchive = OpenArchive(aFilename); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
380 if(mArchive->Size() == 0) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
381 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
382 delete mArchive; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
383 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
384 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
385 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
386 if (mBuffer) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
387 delete [] mBuffer; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
388 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
389 //find buftime to get approx. 512 samples/block |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
390 mBufTime = 512000 / mModProps.mFrequency + 1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
391 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
392 mBufSize = mBufTime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
393 mBufSize *= mModProps.mFrequency; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
394 mBufSize /= 1000; //milliseconds |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
395 mBufSize *= mModProps.mChannels; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
396 mBufSize *= mModProps.mBits / 8; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
397 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
398 mBuffer = new uchar[mBufSize]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
399 if(!mBuffer) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
400 return; //out of memory! |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
401 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
402 CSoundFile::SetWaveConfig |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
403 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
404 mModProps.mFrequency, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
405 mModProps.mBits, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
406 mModProps.mChannels |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
407 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
408 CSoundFile::SetWaveConfigEx |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
409 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
410 mModProps.mSurround, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
411 !mModProps.mOversamp, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
412 mModProps.mReverb, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
413 true, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
414 mModProps.mMegabass, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
415 mModProps.mNoiseReduction, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
416 false |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
417 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
418 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
419 // [Reverb level 0(quiet)-100(loud)], [delay in ms, usually 40-200ms] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
420 if(mModProps.mReverb) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
421 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
422 CSoundFile::SetReverbParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
423 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
424 mModProps.mReverbDepth, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
425 mModProps.mReverbDelay |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
426 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
427 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
428 // [XBass level 0(quiet)-100(loud)], [cutoff in Hz 10-100] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
429 if(mModProps.mMegabass) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
430 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
431 CSoundFile::SetXBassParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
432 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
433 mModProps.mBassAmount, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
434 mModProps.mBassRange |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
435 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
436 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
437 // [Surround level 0(quiet)-100(heavy)] [delay in ms, usually 5-40ms] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
438 if(mModProps.mSurround) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
439 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
440 CSoundFile::SetSurroundParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
441 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
442 mModProps.mSurroundDepth, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
443 mModProps.mSurroundDelay |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
444 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
445 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
446 CSoundFile::SetResamplingMode(mModProps.mResamplingMode); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
447 mSoundFile->SetRepeatCount(mModProps.mLoopCount); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
448 mPreampFactor = exp(mModProps.mPreampLevel); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
449 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
450 mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
451 mStopped = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
452 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
453 mSoundFile->Create |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
454 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
455 (uchar*)mArchive->Map(), |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
456 mArchive->Size() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
457 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
458 mPlayed = 0; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
459 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
460 bool useFilename = mModProps.mUseFilename; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
461 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
462 if(!useFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
463 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
464 strncpy(mModName, mSoundFile->GetTitle(), 100); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
465 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
466 for(int i = 0; mModName[i] == ' ' || mModName[i] == 0; i++) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
467 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
468 if(mModName[i] == 0) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
469 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
470 useFilename = true; //mod name is blank -- use filename |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
471 break; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
472 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
473 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
474 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
475 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
476 if(useFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
477 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
478 strncpy(mModName, strrchr(aFilename.c_str(), '/') + 1, 100); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
479 char* ext = strrchr(mModName, '.'); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
480 if(ext) *ext = '\0'; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
481 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
482 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
483 mInPlug->set_info |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
484 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
485 mModName, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
486 mSoundFile->GetSongTime() * 1000, |
|
845
073d2f46a490
[svn] Report sample rate properly. Rate is just the number of channels, but that is better then 0, right?
chainsaw
parents:
701
diff
changeset
|
487 mSoundFile->GetNumChannels() * 1000, |
|
073d2f46a490
[svn] Report sample rate properly. Rate is just the number of channels, but that is better then 0, right?
chainsaw
parents:
701
diff
changeset
|
488 mModProps.mFrequency, |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
489 mModProps.mChannels |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
490 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
491 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
492 mStopped = mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
493 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
494 if(mModProps.mBits == 16) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
495 mFormat = FMT_S16_NE; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
496 else |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
497 mFormat = FMT_U8; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
498 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
499 mOutPlug->open_audio |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
500 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
501 mFormat, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
502 mModProps.mFrequency, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
503 mModProps.mChannels |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
504 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
505 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
506 mDecodeThread = g_thread_create( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
507 (GThreadFunc)PlayThread, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
508 this, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
509 TRUE, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
510 NULL |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
511 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
512 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
513 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
514 void ModplugXMMS::Stop(void) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
515 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
516 if(mStopped) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
517 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
518 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
519 mStopped = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
520 mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
521 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
522 g_thread_join(mDecodeThread); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
523 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
524 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
525 void ModplugXMMS::Pause(bool aPaused) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
526 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
527 if(aPaused) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
528 mPaused = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
529 else |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
530 mPaused = false; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
531 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
532 mOutPlug->pause(aPaused); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
533 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
534 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
535 void ModplugXMMS::Seek(float32 aTime) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
536 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
537 uint32 lMax; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
538 uint32 lMaxtime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
539 float32 lPostime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
540 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
541 if(aTime > (lMaxtime = mSoundFile->GetSongTime())) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
542 aTime = lMaxtime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
543 lMax = mSoundFile->GetMaxPosition(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
544 lPostime = float(lMax) / lMaxtime; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
545 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
546 mSoundFile->SetCurrentPos(int(aTime * lPostime)); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
547 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
548 mOutPlug->flush(int(aTime * 1000)); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
549 mPlayed = uint32(aTime * 1000); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
550 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
551 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
552 float32 ModplugXMMS::GetTime(void) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
553 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
554 if(mStopped) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
555 return -1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
556 return (float32)mOutPlug->output_time() / 1000; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
557 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
558 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
559 void ModplugXMMS::GetSongInfo(const string& aFilename, char*& aTitle, int32& aLength) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
560 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
561 aLength = -1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
562 fstream lTestFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
563 string lError; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
564 bool lDone; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
565 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
566 lTestFile.open(aFilename.c_str(), ios::in); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
567 if(!lTestFile) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
568 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
569 lError = "**no such file: "; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
570 lError += strrchr(aFilename.c_str(), '/') + 1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
571 aTitle = new char[lError.length() + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
572 strcpy(aTitle, lError.c_str()); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
573 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
574 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
575 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
576 lTestFile.close(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
577 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
578 if(mModProps.mFastinfo) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
579 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
580 if(mModProps.mUseFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
581 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
582 //Use filename as name |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
583 aTitle = new char[aFilename.length() + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
584 strcpy(aTitle, strrchr(aFilename.c_str(), '/') + 1); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
585 *strrchr(aTitle, '.') = '\0'; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
586 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
587 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
588 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
589 fstream lModFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
590 string lExt; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
591 uint32 lPos; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
592 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
593 lDone = true; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
594 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
595 // previously ios::nocreate was used (X Standard C++ Library) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
596 lModFile.open(aFilename.c_str(), ios::in); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
597 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
598 lPos = aFilename.find_last_of('.'); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
599 if((int)lPos == 0) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
600 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
601 lExt = aFilename.substr(lPos); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
602 for(uint32 i = 0; i < lExt.length(); i++) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
603 lExt[i] = tolower(lExt[i]); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
604 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
605 if (lExt == ".mod") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
606 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
607 lModFile.read(mModName, 20); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
608 mModName[20] = 0; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
609 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
610 else if (lExt == ".s3m") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
611 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
612 lModFile.read(mModName, 28); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
613 mModName[28] = 0; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
614 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
615 else if (lExt == ".xm") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
616 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
617 lModFile.seekg(17); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
618 lModFile.read(mModName, 20); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
619 mModName[20] = 0; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
620 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
621 else if (lExt == ".it") |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
622 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
623 lModFile.seekg(4); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
624 lModFile.read(mModName, 28); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
625 mModName[28] = 0; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
626 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
627 else |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
628 lDone = false; //fall back to slow info |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
629 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
630 lModFile.close(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
631 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
632 if(lDone) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
633 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
634 for(int i = 0; mModName[i] != 0; i++) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
635 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
636 if(mModName[i] != ' ') |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
637 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
638 aTitle = new char[strlen(mModName) + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
639 strcpy(aTitle, mModName); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
640 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
641 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
642 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
643 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
644 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
645 //mod name is blank. Use filename instead. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
646 aTitle = new char[aFilename.length() + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
647 strcpy(aTitle, strrchr(aFilename.c_str(), '/') + 1); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
648 *strrchr(aTitle, '.') = '\0'; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
649 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
650 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
651 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
652 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
653 Archive* lArchive; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
654 CSoundFile* lSoundFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
655 const char* lTitle; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
656 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
657 //open and mmap the file |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
658 lArchive = OpenArchive(aFilename); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
659 if(lArchive->Size() == 0) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
660 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
661 lError = "**bad mod file: "; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
662 lError += strrchr(aFilename.c_str(), '/') + 1; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
663 aTitle = new char[lError.length() + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
664 strcpy(aTitle, lError.c_str()); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
665 delete lArchive; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
666 return; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
667 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
668 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
669 lSoundFile = new CSoundFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
670 lSoundFile->Create((uchar*)lArchive->Map(), lArchive->Size()); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
671 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
672 if(!mModProps.mUseFilename) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
673 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
674 lTitle = lSoundFile->GetTitle(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
675 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
676 for(int i = 0; lTitle[i] != 0; i++) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
677 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
678 if(lTitle[i] != ' ') |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
679 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
680 aTitle = new char[strlen(lTitle) + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
681 strcpy(aTitle, lTitle); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
682 goto therest; //sorry |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
683 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
684 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
685 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
686 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
687 //mod name is blank, or user wants the filename to be used as the title. |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
688 aTitle = new char[aFilename.length() + 1]; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
689 strcpy(aTitle, strrchr(aFilename.c_str(), '/') + 1); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
690 *strrchr(aTitle, '.') = '\0'; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
691 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
692 therest: |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
693 aLength = lSoundFile->GetSongTime() * 1000; //It wants milliseconds!?! |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
694 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
695 //unload the file |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
696 lSoundFile->Destroy(); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
697 delete lSoundFile; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
698 delete lArchive; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
699 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
700 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
701 void ModplugXMMS::SetInputPlugin(InputPlugin& aInPlugin) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
702 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
703 mInPlug = &aInPlugin; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
704 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
705 void ModplugXMMS::SetOutputPlugin(OutputPlugin& aOutPlugin) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
706 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
707 mOutPlug = &aOutPlugin; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
708 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
709 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
710 const ModplugXMMS::Settings& ModplugXMMS::GetModProps() |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
711 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
712 return mModProps; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
713 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
714 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
715 const char* ModplugXMMS::Bool2OnOff(bool aValue) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
716 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
717 if(aValue) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
718 return "on"; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
719 else |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
720 return "off"; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
721 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
722 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
723 void ModplugXMMS::SetModProps(const Settings& aModProps) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
724 { |
| 330 | 725 ConfigDb *db; |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
726 mModProps = aModProps; |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
727 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
728 // [Reverb level 0(quiet)-100(loud)], [delay in ms, usually 40-200ms] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
729 if(mModProps.mReverb) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
730 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
731 CSoundFile::SetReverbParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
732 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
733 mModProps.mReverbDepth, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
734 mModProps.mReverbDelay |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
735 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
736 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
737 // [XBass level 0(quiet)-100(loud)], [cutoff in Hz 10-100] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
738 if(mModProps.mMegabass) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
739 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
740 CSoundFile::SetXBassParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
741 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
742 mModProps.mBassAmount, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
743 mModProps.mBassRange |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
744 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
745 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
746 else //modplug seems to ignore the SetWaveConfigEx() setting for bass boost |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
747 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
748 CSoundFile::SetXBassParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
749 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
750 0, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
751 0 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
752 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
753 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
754 // [Surround level 0(quiet)-100(heavy)] [delay in ms, usually 5-40ms] |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
755 if(mModProps.mSurround) |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
756 { |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
757 CSoundFile::SetSurroundParameters |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
758 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
759 mModProps.mSurroundDepth, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
760 mModProps.mSurroundDelay |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
761 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
762 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
763 CSoundFile::SetWaveConfigEx |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
764 ( |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
765 mModProps.mSurround, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
766 !mModProps.mOversamp, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
767 mModProps.mReverb, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
768 true, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
769 mModProps.mMegabass, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
770 mModProps.mNoiseReduction, |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
771 false |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
772 ); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
773 CSoundFile::SetResamplingMode(mModProps.mResamplingMode); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
774 mPreampFactor = exp(mModProps.mPreampLevel); |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
775 |
| 330 | 776 db = bmp_cfg_db_open(); |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
777 |
| 330 | 778 bmp_cfg_db_set_bool(db,"modplug","Surround", mModProps.mSurround); |
| 779 bmp_cfg_db_set_bool(db,"modplug","Oversampling", mModProps.mOversamp); | |
| 780 bmp_cfg_db_set_bool(db,"modplug","Megabass", mModProps.mMegabass); | |
| 781 bmp_cfg_db_set_bool(db,"modplug","NoiseReduction", mModProps.mNoiseReduction); | |
| 782 bmp_cfg_db_set_bool(db,"modplug","VolumeRamp", mModProps.mVolumeRamp); | |
| 783 bmp_cfg_db_set_bool(db,"modplug","Reverb", mModProps.mReverb); | |
| 784 bmp_cfg_db_set_bool(db,"modplug","FastInfo", mModProps.mFastinfo); | |
| 785 bmp_cfg_db_set_bool(db,"modplug","UseFileName", mModProps.mUseFilename); | |
|
924
5ef13028e42d
[svn] Allow to disable grabbing Amiga MOD files so a diferent plugin such as UADE gets a chance. Adds a few extra magic strings for Amiga files. Amiga MOD grabbing defaults to on for that Just Works(TM) feeling.
chainsaw
parents:
910
diff
changeset
|
786 bmp_cfg_db_set_bool(db,"modplug","GrabAmigaMOD", mModProps.mGrabAmigaMOD); |
| 330 | 787 bmp_cfg_db_set_bool(db,"modplug","PreAmp", mModProps.mPreamp); |
| 788 bmp_cfg_db_set_float(db,"modplug","PreAmpLevel", mModProps.mPreampLevel); | |
| 789 bmp_cfg_db_set_int(db,"modplug", "Channels", mModProps.mChannels); | |
| 790 bmp_cfg_db_set_int(db,"modplug", "Bits", mModProps.mBits); | |
| 791 bmp_cfg_db_set_int(db,"modplug", "Frequency", mModProps.mFrequency); | |
| 792 bmp_cfg_db_set_int(db,"modplug", "ResamplineMode", mModProps.mResamplingMode); | |
| 793 bmp_cfg_db_set_int(db,"modplug", "ReverbDepth", mModProps.mReverbDepth); | |
| 794 bmp_cfg_db_set_int(db,"modplug", "ReverbDelay", mModProps.mReverbDelay); | |
| 795 bmp_cfg_db_set_int(db,"modplug", "BassAmount", mModProps.mBassAmount); | |
| 796 bmp_cfg_db_set_int(db,"modplug", "BassRange", mModProps.mBassRange); | |
| 797 bmp_cfg_db_set_int(db,"modplug", "SurroundDepth", mModProps.mSurroundDepth); | |
| 798 bmp_cfg_db_set_int(db,"modplug", "SurroundDelay", mModProps.mSurroundDelay); | |
| 799 bmp_cfg_db_set_int(db,"modplug", "LoopCount", mModProps.mLoopCount); | |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
800 |
| 330 | 801 bmp_cfg_db_close(db); |
|
278
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
802 } |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
803 |
|
37316876ef6e
[svn] Use modplug instead of mikmod. Supports more formats & compressed files.
chainsaw
parents:
diff
changeset
|
804 ModplugXMMS gModplugXMMS; |
