@@ -11,225 +11,44 @@ WARNING: The licenses for libmad, ADLMIDI, OPNMIDI, and GME is GPL,
1111The latest original version of this library is available from:
1212http://www.libsdl.org/projects/SDL_mixer/
1313
14- Sources of modified library version is available in the PGE Project's sources:
15- https://github.com/Wohlhabend-Networks/PGE-Project/
16- in the folder: _Libs/SDL2_mixer_modified/
17- or:
18- https://bitbucket.org/Wohlstand/pge-project
19- in the folder: _Libs/SDL2_mixer_modified/
14+ Sources of modified library version is available here:
15+ https://github.com/WohlSoft/SDL-Mixer-X
2016
21- =============================================================================
22- Difference between original and this library:
23- -----------------------------------------------------------------------------
24- + Added new codecs:
25- - Game Music Emulators (LGPL v2.1) which adds support of chip tunes
26- like NSF, VGM, SPC, HES, etc.
27- - libADLMIDI (GPL v3, LGPL v3) (remake from ADLMIDI) to play MIDI with
28- emulated OPL3 synthesiser, also supports loop points
29- "loopStart" and "loopEnd"
30- - libOPNMIDI (GPL v3, LGPL v3) to play MIDI with
31- emulated OPN2 synthesiser, also supports loop points
32- "loopStart" and "loopEnd"
33- + Added some new functions
34- + Added support of loop points for OGG files (via "LOOPSTART" and "LOOPEND"
35- (or "LOOPLENGTH" to be compatible with RPG Maker) vorbis comments)
36- + Reorganized music codecs processing system
37- + Added support to get current position and track lenght for a seekable codecs
38-
39- vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
40- IMPORTANT: To choice a track number of NSF, GBM, HES, etc file,
41- you must append "|xxx" to end of file path for
42- Mix_LoadMUS function.
43- Where xxx - actual number of chip track, (from 0 to N-1)
44- Examples: "file.nsf|12", "file.hes|2"
45- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46- vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
47- Arguments are passing like argument for a GME-based files (NSF, HES, etc.):
48- Syntax for MIDI is:
49- myfile.mid|xyy;xyy;xyy;...;
50- where x - parameter type
51- where y - value (every value must be ended with semicolon!)
5217
53- available parameters:
54- s - use a specific synthesiser
55- 0 - ADLMIDI
56- 1 - Native MIDI [Win32/OSX/Haiku only]
57- 2 - Timidity
58- 3 - Fluidsynth
59- b - value from 0 to 66 - number of ADLMIDI bank
60- t - (0 or 1) enable deep tremolo on ADLMIDI
61- v - (0 or 1) enable deep vibrato on ADLMIDI
62- m - (0 or 1) enable scalable modulation on ADLMIDI
63- a - (0 or 1) enable AdLib mode of percussion on ADLMIDI
64- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6518=============================================================================
66- Added music codecs:
67- -----------------------------------------------------------------------------
68- General:
69- - MUS_GME - Game Music Emulatirs
70-
71- MIDI Playing:
72- - ADLMIDI - A software synthesizer is based on Yamaha OPL3 (YMF262) chip emulator
73- - OPNMIDI - A software synthesizer is based on Yamaha OPL3 (YM2612) chip emulator
74-
75- =============================================================================
76- Added functions:
77- -----------------------------------------------------------------------------
78- /*
79- Allows you to set up custom path for Timidify patches
80- */
81- void MIX_Timidity_addToPathList(const char *path);
82-
83- /*
84- Get music title from meta-tag if possible. If title tag is empty, filename will be returned
85- */
86- const char* Mix_GetMusicTitle(const Mix_Music *music);
87-
88- /*
89- Get music title from meta-tag if possible
90- */
91- const char* Mix_GetMusicTitleTag(const Mix_Music *music);
92-
93- /*
94- Get music artist from meta-tag if possible
95- */
96- const char* Mix_GetMusicArtistTag(const Mix_Music *music);
97-
98- /*
99- Get music album from meta-tag if possible
100- */
101- const char* Mix_GetMusicAlbumTag(const Mix_Music *music);
102-
103- /*
104- Get music copyright from meta-tag if possible
105- */
106- const char* Mix_GetMusicCopyrightTag(const Mix_Music *music);
107-
108- /*
109- Load music from memory with passing of extra arguments
110- */
111- Mix_Music * SDLCALLCC Mix_LoadMUS_RW_ARG(SDL_RWops *src, int freesrc, char *args)
112-
113- /*
114- Load music from memory with passing NSF/HES/etc. track number (accepts integer unlike SDLCALLCC Mix_LoadMUS_RW_ARG)
115- */
116- Mix_Music * SDLCALLCC Mix_LoadMUS_RW_GME(SDL_RWops *src, int freesrc, int trackID)
117-
118- typedef enum
119- {
120- MIDI_ADLMIDI,
121- MIDI_Native,
122- MIDI_Timidity,
123- MIDI_OPNMIDI,
124- MIDI_Fluidsynth,
125- MIDI_KnuwnDevices /* Count of MIDI device types */
126- } Mix_MIDI_Device;
127-
128- /*
129- Allows you to toggle MIDI Devices!
130- (change will be applied on re-opening of MIDI file)
131- Attempt to toggle unsupported MIDI device takes no effect
132- (for case when library built without linking of required library)
133- */
134- int Mix_SetMidiDevice(int device);
135-
136- /*
137- Returns current ADLMIDI bank number
138- */
139- int MIX_ADLMIDI_getBankID();
140-
141- /*
142- Changes ADLMIDI bank number (changes applying on MIDI file reopen)
143- */
144- void MIX_ADLMIDI_setBankID(int bnk);
145-
146- /*
147- Returns current state of ADLMIDI deep tremolo flag
148- */
149- int MIX_ADLMIDI_getTremolo();
150-
151- /*
152- Changes ADLMIDI deep tremolo flag (changes applying on MIDI file reopen)
153- */
154- void MIX_ADLMIDI_setTremolo(int tr);
155-
156- /*
157- Returns current state of ADLMIDI deep vibrato flag
158- */
159- int MIX_ADLMIDI_getVibrato();
160-
161- /*
162- Changes ADLMIDI deep vibrato flag (changes applying on MIDI file reopen)
163- */
164- void MIX_ADLMIDI_setVibrato(int vib);
165-
166- /*
167- Returns current state of ADLMIDI deep scaling modulation flag
168- */
169- int MIX_ADLMIDI_getScaleMod();
170-
171- /*
172- Changes ADLMIDI scaling modulation flag (changes applying on MIDI file reopen)
173- */
174- void MIX_ADLMIDI_setScaleMod(int sc);
175-
176- /*
177- Resets ADLMIDI flags and settings to default state
178- */
179- void MIX_ADLMIDI_setSetDefaults();
180-
181- /*
182- Get the time current position of music stream
183- returns -1.0 if this feature is not supported for some codec
184- */
185- double Mix_GetMusicPosition(Mix_Music *music);
186- /*
187- Get the total time length of music stream
188- returns -1.0 if this feature is not supported for some codec
189- */
190- double Mix_GetMusicTotalTime(Mix_Music *music);
191-
192- /*
193- Get the loop start time position of music stream
194- returns -1.0 if this feature is not used for this music or not supported for some codec
195- */
196- double Mix_GetMusicLoopStartTime(Mix_Music *music);
197- /*
198- Get the loop end time position of music stream
199- returns -1.0 if this feature is not used for this music or not supported for some codec
200- */
201- double Mix_GetMusicLoopEndTime(Mix_Music *music);
202- /*
203- Get the loop time length of music stream
204- returns -1.0 if this feature is not used for this music or not supported for some codec
205- */
206- double Mix_GetMusicLoopLengthTime(Mix_Music *music);
207-
19+ Please read the updated ReadMe at the `docs/index.md` and the full documentation
20+ at the docs/SDL_mixer_ext.html
20821=============================================================================
20922
21023Due to popular demand, here is a simple multi-channel audio mixer.
21124It supports 8 channels of 16 bit stereo audio, plus a single channel
212- of music, mixed by the Modplug MOD, Timidity MIDI, ADLMIDI, GME
213- and LibMAD MP3 libraries.
25+ of music, mixed by the libXMP, Modplug MOD, Timidity MIDI, libADLMIDI,
26+ libOPNMIDI, FluidSynth, FluidLite, GME, and LibMAD MP3 libraries.
21427
21528See the header file SDL_mixer_ext.h for documentation on this mixer library.
21629
21730The mixer can currently load Microsoft WAVE files and Creative Labs VOC
218- files as audio samples, and can load MIDI files via Timidity and the
219- following music formats via MikMod: .MOD .S3M .IT .XM. It can load
220- Ogg Vorbis streams as music if built with Ogg Vorbis or Tremor libraries,
221- and finally it can load MP3 music using the SMPEG or libmad libraries.
31+ files as audio samples, and can load MIDI files via Timidity, libADLMIDI,
32+ libOPNMIDI, or by FluidSynth, and the following music formats via libXMP,
33+ libModPlug, or MikMod: .MOD .S3M .IT .XM, and many other formats. It can load
34+ Ogg Vorbis streams as music if built with Ogg Vorbis, Tremor, or stb-vrobis
35+ libraries, load Opus, FLAC, and finally it can load MP3 music
36+ using the minimp3, libmad, or libmpg123 libraries.
22237
22338Tremor decoding is disabled by default; you can enable it by passing
224- --enable-music-ogg-tremor
225- to configure, or by defining OGG_MUSIC and OGG_USE_TREMOR.
39+ -DUSE_OGG_VORBIS=ON -DUSE_OGG_VORBIS_TREMOR=ON
40+ to CMake, or you can tell the library to use the internally-included stb-vorbis
41+ by passing
42+ -DUSE_OGG_VORBIS=ON -DUSE_OGG_VORBIS_STB=ON
43+ to CMake.
44+
45+ All other flags and codecs you can find using the CMake configure tools like the
46+ cmake-gui or ccmake.
22647
227- libmad decoding is disabled by default; you can enable it by passing
228- --enable-music-mp3-mad
229- to configure, or by defining MP3_MAD_MUSIC
23048vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
231- WARNING: The license for libmad is GPL, which means that in order to
232- use it your application must also be GPL!
49+ WARNING: The license for libmad, libADLMIDI, and libOPNMIDI is GPL,
50+ which means that in order to use them your application must
51+ also be GPL!
23352^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
23453
23554The process of mixing MIDI files to wave output is very CPU intensive,
@@ -243,6 +62,3 @@ http://www.libsdl.org/projects/mixer/timidity/timidity.tar.gz
24362and unpack them in /usr/local/lib under UNIX, and C:\ under Win32.
24463
24564This library is under the zlib license, see the file "COPYING.txt" for details.
246-
247-
248-
0 commit comments