SDL_mixer 2.0 The latest version of this library is available from: http://www.libsdl.org/projects/SDL_mixer/ Due to popular demand, here is a simple multi-channel audio mixer. It supports 8 channels of 16 bit stereo audio, plus a single channel of music. See the header file SDL_mixer.h and the examples playwave.c and playmus.c for documentation on this mixer library. The mixer can currently load Microsoft WAVE files and Creative Labs VOC files as audio samples, it can load FLAC files with libFLAC, it can load Ogg Vorbis files with Ogg Vorbis or Tremor libraries, it can load MP3 files using mpg123 or libmad, and it can load MIDI files with Timidity, FluidSynth, and natively on Windows, Mac OSX, and Linux, and finally it can load the following file formats via ModPlug or MikMod: .MOD .S3M .IT .XM. Tremor decoding is disabled by default; you can enable it by passing --enable-music-ogg-tremor to configure, or by defining MUSIC_OGG and OGG_USE_TREMOR. libmad decoding is disabled by default; you can enable it by passing --enable-music-mp3-mad to configure, or by defining MUSIC_MP3_MAD vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WARNING: The license for libmad is GPL, which means that in order to use it your application must also be GPL! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The process of mixing MIDI files to wave output is very CPU intensive, so if playing regular WAVE files sound great, but playing MIDI files sound choppy, try using 8-bit audio, mono audio, or lower frequencies. To play MIDI files using FluidSynth, you'll need to set the SDL_SOUNDFONTS environment variable to a Sound Font 2 (.sf2) file containing the musical instruments you want to use for MIDI playback. (On some Linux distributions you can install the fluid-soundfont-gm package) To play MIDI files using Timidity, you'll need to get a complete set of GUS patches from: http://www.libsdl.org/projects/mixer/timidity/timidity.tar.gz and unpack them in /usr/local/lib under UNIX, and C:\ under Win32. iOS: In order to use this library on iOS, you should include the SDL.xcodeproj and Xcode-iOS/SDL_mixer.xcodeproj in your application, add the SDL/include and SDL_mixer directories to your "Header Search Paths" setting, then add the libSDL2.a and libSDL2_mixer.a to your "Link Binary with Libraries" setting. This library is under the zlib license, see the file "COPYING.txt" for details.
An audio mixer that supports various file formats for Simple Directmedia Layer.
Overview
Issues
-
Rebase and update stb_vorbis.h to SDL_sound's version :
- Keeps the original stb_vorbis as intact as possible so that future updates from mainstream would be painless.
- Reduces STB_VORBIS_MAX_CHANNELS from 16 to 6 (objections?)
- Adds several missing libm function overrides,
- SDL_mixer now requires SDL >= 2.0.9 because of SDL_exp()
- Fixes slow loads and leaks in start_decoder: https://github.com/nothings/stb/pull/1174
- Fixes submap array out-of-bounds indexing bug: https://github.com/nothings/stb/pull/1312
- Replace signed overflow clamps with unsigned overflow: https://github.com/nothings/stb/issues/1168
- Replaces alloca() usage with setup_malloc() (from libxmp.)
- Fixes '-Wmaybe-uninitialized' warnings in get_seek_page_info: https://github.com/nothings/stb/pull/1172
- A minor UBSan fix and suppression: https://github.com/nothings/stb/issues/1168
- Fixes signature of dummy realloc() for STB_VORBIS_NO_CRT: https://github.com/nothings/stb/pull/1198
- Renames BUFFER_SIZE macro to STB_BUFFER_SIZE: https://github.com/nothings/stb/pull/1078
- Pulls in sample-accurate offset patch of Vitaly Novichkov: (stb_vorbis_get_playback_sample_offset, because it's used in OGG_Tell and OGG_GetSome): https://github.com/nothings/stb/issues/1294 https://github.com/nothings/stb/pull/1295
- Fixes a few warnings here and there in some environments.
- Replaces two dummy '(void) 0' with 'do {} while(0)'
-
Use after free bug in Mixer's `OPUS_Delete()` on macOS
There's some background on this issue in the rust-sdl2 project. It seems that on the Mac while Wave files work happily if mixer is unload before the music file is but Opus causes a SEGFAULT.
Digging deeper, it turns out that there isn't a proper guard in
OPUS_Delete
to make sure that the Opus library is still loaded.The fix seems to be to make sure "opus.loaded" is greater than zero before calling
opus.op_free()
.Does this seem reasonable? Also, I noticed that you can leak the Opus libraries if calling
OPUS_Load()
more than once.If this does make sense, I'm happy to write a merge request here. It seems like @Wohlstand would be a good mentor for this if they're willing to help me out.
invalid -
MOD, native MIDI, and Opus support removed from macOS binaries?
Hi all,
This is essentially the same as my issue for
SDL_image
(https://github.com/libsdl-org/SDL_image/issues/288). Basically, native MIDI as well as decoders for Modplug and Opus have been removed from the official macOS binaries, while they are all still enabled/included (albeit in an "optional" folder) for the Windows binaries.I understand making various dependency libraries optional, but is there a way to have pre-built optional dependencies included for the macOS release, the same way they are for Windows? A folder of pre-built frameworks that can be dragged inside the mixer framework or into the same folder as the framework?
Thanks in advance!
Austin
-
Fixes of the master_volume behaviour
- Make the
master_volume
variable being atomic - Fixed the master_volume behavior at the music (there a middle buffer should be allocated to safely apply the volume effect)
Bonus: whitespace clean-up at the mixer.c.
- Make the
-
Release plans
As far as I can tell, the last release was 2018 and there have been > 300 commits since then. Any chance for a new release? Or perhaps there are blockers for that?
-
Added support of quoted strings in Timidity config
Resolves #334
An argument of property in Timidity config can be surrounded with
"
or'
characters to prevent splitting into several arguments if it contains spaces or other delimiter characters.If an argument itself contains
"
characters it should be surrounded with'
characters and vice versa. -
Add 'Libs.private' field to pkg-config file
In order to support static linking, SDL_mixer.pc should include a 'Libs.private' field listing all the libraries that SDL_mixer requires.
This patch adds such a field and also modifies configure.ac so that EXTRA_LDFLAGS (which is now also used as the value of 'Libs.private') no longer includes SDL_LIBS. This is done so as to prevent libraries required by SDL from being listed twice when 'pkg-config --libs --static SDL_mixer' is run (they're already shown because of the 'Requires: sdl' line in SDL_mixer.pc). Makefile.in is also adjusted accordingly.
Upstream status: submitted https://bugzilla.libsdl.org/show_bug.cgi?id=3278
Signed-off-by: Rodrigo Rebello [email protected] [Retrieved from: https://git.buildroot.net/buildroot/tree/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch] Signed-off-by: Fabrice Fontaine [email protected]
-
VCRUNTIME140.dll dependency in SDL2_mixer.dll
due to the compiler option /MD and the use of memcpy and memset, including SDL2_mixer.dll will create a dependency on the visual studio run time DLLs, which isn't desirable. Either use SDL_memset / SDL_memcpy or /MT instead of /MD.
-
wrong mp3 duration with libmad backend
One mp3 I have reports 56.607347s duration instead of about 31.320816s with libmad backend: I can attach the mp3 in question here.
Originally posted in https://github.com/libsdl-org/SDL_mixer/issues/300#issuecomment-1140079544
-
Implemented the master volume feature.
In some cases we need to set the overall volume level. For now we have only two ways:
- modify chunk's volume
- modify channel's volume
Both are bad in case when we need to modify all played now sounds and all sounds that will be played in the future. To solve this problem I suggest new function Mix_MasterVolume(int) which works with single static variable int master_volume. This variable is used in mix_channels/music_mixer to calculate current volume level.
-
Remove all initializers from static loader arrays
Addition to https://github.com/libsdl-org/SDL_mixer/commit/143b0bbfd50654af667c87143c1a2d69ef80f151
EDIT: As was discussed below, I changed the entire goal of this PR:
C standard gives guarantee they will be NULLed by default: https://port70.net/~nsz/c/c89/c89-draft.html#3.5.7
If an object that has static storage duration is not initialized explicitly, it is initialized implicitly as if every member that has arithmetic type were assigned 0 and every member that has pointer type were assigned a null pointer constant. If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate.
-
Unable to open an audio device on macOS
I'm running SDL 2.0.22 and SDL_mixer 2.60 on macOS 12.5.
I'm attempting to open an audio device as follows, after calling
SDL_Init
(audio and video), andMix_Init
:Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 2048 )
The error I get is as follows:
MEMixerChannel.cpp:1636 client <[email protected]; [0]; play> got error 2003332927 while sending format information
I'm also having the same issue calling
Mix_CloseAudio()
-
Improve coexistence of internal and external decoders
This is potentially useful to allow building with libvorbis, libFLAC and libmpg123 for the reasons described in https://github.com/libsdl-org/SDL_mixer/issues/427#issuecomment-1186630491, while still having the internal libraries as fallbacks if dynamic loading fails.
TODO:
- Additional CMake changes to allow enabling both libvorbis and stb_vorbis
- Should libvorbis, libFLAC and libmpg123 be enabled by default?
-
[Proposal] Support Logarithmic Scale Volume Control
Thank you for this great library. I've integrated it into my project over the last few days and it's working very well. However, I have a suggestion for improvement in regard to the volume controls. SDL currently implements audio volume control as a simple linear attenuation of the input signal. The problem with this is that it's not an accurate model of how hearing works.
Due to the characteristics of the human ear, there is a logarithmic relationship between the amplitude of an audio signal and its perceived loudness, which is why loudness is typically measured in decibels. The linear scale results in an extremely uneven distribution of loudness. This can be demonstrated with a simple SDL_mixer test program: play a chunk sound effect at
MIX_MAX_VOLUME
(128), then change the channel volume to half (64) and recompile and play again. You will notice that there is only a very slight reduction in the loudness, despite the volume being halved. Indeed, halving the amplitude of an audio signal reduces its loudness by only 6 dB. The difference is even more apparent when comparing the top 25% and bottom 25% of the scale. The difference between 128 and 96 is only 2.5 dB, but the difference between 35 and 1 is more than 30 dB.My Implementation
I would like for the users of my application to be able to specify channel volume on a limited scale that is linear with respect to loudness instead of signal amplitude. I designed a wrapper function for
Mix_Volume()
to convert the requested application-level log volume to the internal SDL linear attenuation factor volume.There are a couple factors that go into designing a log scale volume control. The first is the dynamic range in dB, which is the volume difference between the loudest signal and the quietest. Since we have 128 volume steps in SDL, the most we can attenuate the signal is 1/128, which is about -42 dB. I rounded this to -40 dB.
Next is the number of volume steps. Ideally, I would like to have a volume scale of 0-100. Unfortunately, with a limited resolution of only 128 steps in SDL, a 0-100 scale cannot produce a unique SDL volume for each step due to rounding, so I decided to settle for a simpler 0-10 scale. In this scale, a value of 10 corresponds to 0 dB (full, unattenuated signal), while 0 corresponds to -40 dB. However, I decided to set 0 to a volume of 0, since most users will interpret 0 as meaning complete silence. Each step in the scale corresponds to a 4 dB adjustment, plus or minus a bit due to rounding. I created a spreadsheet with the calculations which is screenshotted below:
Here is how I chose to implement this volume control in C++. Since the log and power functions can be computationally expensive, I pre-calculate the SDL volume values at compile time for each step in the scale using a constexpr lambda function, and store the results in a static array. Then, determining the SDL volume at runtime is simply accessing the array at the requested volume step.
I chose to use constexpr lambda strictly for convenience purposes, so I could alter the macro values and recompile without having to manually type the array values from the spreadsheet each time. But this function could be easily adapted to C by doing that instead of the lambda.
#define MAX_VOLUME 10 #define RANGE_DB -40 int Sound::set_volume(int channel, int volume) { if (volume > MAX_VOLUME || volume < 0) return 1; constexpr auto generate_array = []() { double a = pow(10.f, (double) RANGE_DB / 20.f); double b = log10(1.f / a) / (double) MAX_VOLUME; std::array<int, MAX_VOLUME + 1> arr; arr[0] = 0; arr[MAX_VOLUME] = MIX_MAX_VOLUME; for (int n = 1; n < MAX_VOLUME; n++) { arr[n] = (int) std::round(a * pow(10.f, (double) n * b) * (double) MIX_MAX_VOLUME); } return arr; }; static constexpr std::array<int, MAX_VOLUME + 1> volume_array = generate_array(); Mix_Volume(channel, volume_array[volume]); return 0; }
I don't support the volume querying here because I don't personally need it, but it would be trivial to implement.
Proposal
My proposal is to add a logarithmic volume control function with a title such as
Mix_VolumeLog()
orMix_VolumeDB()
, which would be implemented similar to the above. The fundamentals of psychoacoustics are not well understood by many people, so I believe it would provide a very useful abstraction for implementing application-level volume control. Since it uses SDL's current volume controls underneath, it would not break any existing functionality nor the ABI. -
Advice for downstream distributions re decoder libs
We got a request that our downstream package should be built with the new dr_ stb_ internal decoders instead of the external libraries such as libvorbis/libflac/mpg123.
What's the recommended way to build sdl_mixer for downstream distributions?
thanks!
-
CMake support for libxmp?
The current CI fails because libxmp is missing vendored library CMake support: https://github.com/libsdl-org/SDL_mixer/runs/7365768492?check_suite_focus=true
Maybe we don't need it? It's provided for Visual Studio in VisualC/external
What's the best way to fix this?
-
Added Mix_PauseAudio() call to suspend/resume entire audio output
This call allows cheaper pausing/resuming of the whole audio processing without pausing every playing channel or music stream.
For example, this call can be used to pause the entire audio playback when the game is not focused.
Note: the "pause_async_music" call is required for music which is playing asynchronously from the main audio output processor, for example, OS Native MIDI. However, the stuff doesn't affect CMD Music which will still play (however, never tested this as I never used CMD music for my needs).
Releases(release-2.6.1)
-
release-2.6.1(Jul 12, 2022)
This is a minor bug-fix release, fixing a packaging issue on Linux.
Here are the highlights for the 2.6.0 release:
- API documentation is now available on the wiki: https://wiki.libsdl.org/SDL_mixer
- Added support for building with CMake
- Added support for playing Ogg files using stb_vorbis, which is now the default Vorbis backend. To use libvorbis instead, configure using --disable-music-ogg-stb --enable-music-ogg-vorbis
- Added support for playing FLAC files using dr_flac, which is now the default FLAC music backend. To use libflac instead, configure using --disable-music-flac-drflac --enable-music-flac-libflac
- Added support for playing MP3 files using dr_mp3, which is now the default MP3 music backend. To use libmpg123 instead, configure using --disable-music-mp3-drmp3 --enable-music-mp3-mpg123
- Added libxmp support for mod music playback. Modplug is still the default backend for MOD music. To use libxmp instead, configure using --disable-music-mod-modplug --enable-music-mod-xmp
- Removed support for libmad as a MP3 music backend.
- Removed support for libmikmod as a MOD music backend.
- Added Mix_MasterVolume() for additional volume control over all channels
- Update Mix_Init() return value to match documentation, including MIXER_INIT_* flags for already-initialized modules
- Added Mix_HasMusicDecoder()
- Memory leak fixes and F32 format support to fluidsynth player
- Fixed distorted MIDI playback with FluidSynth if sample rate is out of library's limits
- Added Mix_ModMusicJumpToOrder() for mod music formats
- Enabled module internal loops in modplug player
- Respect original mp3 file offset
- Support setting soundfont via SDL_SOUNDFONTS in OSX native midi
- Fixed mp3 file detection
- Fixes to ogg playback on big-endian devices
- Added functions to get metadata information: Mix_GetMusicTitle() Mix_GetMusicTitleTag() Mix_GetMusicArtistTag() Mix_GetMusicAlbumTag() Mix_GetMusicCopyrightTag()
- Add functions to get loop point information: Mix_GetMusicLoopStartTime() Mix_GetMusicLoopEndTime() Mix_GetMusicLoopLengthTime()
- Added Mix_GetMusicVolume() and Mix_GetMusicPosition()
- Added Mix_MusicDuration() to return music duration in seconds
- Fixed music_mpg123 seek bug when sample rate of the file and the stream don't match
- Timidity improvements, added Mix_SetTimidityCfg()
- Improved mp3 tag detection/skipping
- Extended support for WAV files
- Allow rmid files be opened by native midi
- Fixed possible crash in win32 native midi
- Prevent clipping due to volume settings in modplug music
- Added looping support for Opus files
- Added looping support for FLAC files
- Improved OGG looping support
- Fixed loading Opus audio as audio chunks
Source code(zip)
SDL2_mixer-2.6.1-win32-x64.zip(526.13 KB)
SDL2_mixer-2.6.1-win32-x86.zip(501.57 KB)
SDL2_mixer-2.6.1.dmg(308.30 KB)
SDL2_mixer-2.6.1.tar.gz(9.46 MB)
SDL2_mixer-2.6.1.tar.gz.sig(95 bytes)
SDL2_mixer-2.6.1.zip(12.74 MB)
SDL2_mixer-2.6.1.zip.sig(95 bytes)
SDL2_mixer-devel-2.6.1-mingw.tar.gz(2.70 MB)
SDL2_mixer-devel-2.6.1-mingw.zip(2.71 MB)
SDL2_mixer-devel-2.6.1-VC.zip(1.04 MB)
-
release-2.6.0(Jul 8, 2022)
In addition to new CMake support by @madebr and many bug fixes, here are the highlights since the last release:
- API documentation is now available on the wiki: https://wiki.libsdl.org/SDL_mixer
- Added support for building with CMake
- Added support for playing Ogg files using stb_vorbis, which is now the default Vorbis backend. To use libvorbis instead, configure using --disable-music-ogg-stb --enable-music-ogg-vorbis
- Added support for playing FLAC files using dr_flac, which is now the default FLAC music backend. To use libflac instead, configure using --disable-music-flac-drflac --enable-music-flac-libflac
- Added support for playing MP3 files using dr_mp3, which is now the default MP3 music backend. To use libmpg123 instead, configure using --disable-music-mp3-drmp3 --enable-music-mp3-mpg123
- Added libxmp support for mod music playback. Modplug is still the default backend for MOD music. To use libxmp instead, configure using --disable-music-mod-modplug --enable-music-mod-xmp
- Removed support for libmad as a MP3 music backend.
- Removed support for libmikmod as a MOD music backend.
- Added Mix_MasterVolume() for additional volume control over all channels
- Update Mix_Init() return value to match documentation, including MIXER_INIT_* flags for already-initialized modules
- Added Mix_HasMusicDecoder()
- Memory leak fixes and F32 format support to fluidsynth player
- Fixed distorted MIDI playback with FluidSynth if sample rate is out of library's limits
- Added Mix_ModMusicJumpToOrder() for mod music formats
- Enabled module internal loops in modplug player
- Respect original mp3 file offset
- Support setting soundfont via SDL_SOUNDFONTS in OSX native midi
- Fixed mp3 file detection
- Fixes to ogg playback on big-endian devices
- Added functions to get metadata information: Mix_GetMusicTitle() Mix_GetMusicTitleTag() Mix_GetMusicArtistTag() Mix_GetMusicAlbumTag() Mix_GetMusicCopyrightTag()
- Add functions to get loop point information: Mix_GetMusicLoopStartTime() Mix_GetMusicLoopEndTime() Mix_GetMusicLoopLengthTime()
- Added Mix_GetMusicVolume() and Mix_GetMusicPosition()
- Added Mix_MusicDuration() to return music duration in seconds
- Fixed music_mpg123 seek bug when sample rate of the file and the stream don't match
- Timidity improvements, added Mix_SetTimidityCfg()
- Improved mp3 tag detection/skipping
- Extended support for WAV files
- Allow rmid files be opened by native midi
- Fixed possible crash in win32 native midi
- Prevent clipping due to volume settings in modplug music
- Added looping support for Opus files
- Added looping support for FLAC files
- Improved OGG looping support
- Fixed loading Opus audio as audio chunks
Source code(zip)
SDL2_mixer-2.6.0-win32-x64.zip(526.13 KB)
SDL2_mixer-2.6.0-win32-x86.zip(501.57 KB)
SDL2_mixer-2.6.0.dmg(308.28 KB)
SDL2_mixer-2.6.0.tar.gz(9.46 MB)
SDL2_mixer-2.6.0.tar.gz.sig(95 bytes)
SDL2_mixer-2.6.0.zip(12.74 MB)
SDL2_mixer-2.6.0.zip.sig(95 bytes)
SDL2_mixer-devel-2.6.0-mingw.tar.gz(2.70 MB)
SDL2_mixer-devel-2.6.0-mingw.zip(2.71 MB)
SDL2_mixer-devel-2.6.0-VC.zip(1.04 MB)
-
prerelease-2.5.3(Jul 7, 2022)
This is hopefully the final release candidate for 2.6.0.
The header documentation has been updated and is available at https://wiki.libsdl.org/SDL_mixer
Source code(tar.gz)
Source code(zip)
SDL2_mixer-2.5.3-win32-x64.zip(526.13 KB)
SDL2_mixer-2.5.3-win32-x86.zip(501.57 KB)
SDL2_mixer-2.5.3.dmg(308.26 KB)
SDL2_mixer-2.5.3.tar.gz(9.46 MB)
SDL2_mixer-2.5.3.zip(12.74 MB)
SDL2_mixer-devel-2.5.3-mingw.tar.gz(2.70 MB)
SDL2_mixer-devel-2.5.3-mingw.zip(2.71 MB)
SDL2_mixer-devel-2.5.3-VC.zip(1.04 MB)
-
prerelease-2.5.2(Jun 17, 2022)
This is a release candidate for 2.6.0.
In addition to new CMake support by @madebr and many bug fixes, here are the highlights since the last release:
- Added support for playing Ogg files using stb_vorbis, which is now the default Vorbis backend. To use libvorbis instead, configure using --disable-music-ogg-stb --enable-music-ogg-vorbis
- Added support for playing FLAC files using dr_flac, which is now the default FLAC music backend. To use libflac instead, configure using --disable-music-flac-drflac --enable-music-flac-libflac
- Added support for playing MP3 files using dr_mp3, which is now the default MP3 music backend. To use libmpg123 instead, configure using --disable-music-mp3-drmp3 --enable-music-mp3-mpg123
- Added libxmp support for mod music playback. Modplug is still the default backend for MOD music. To use libxmp instead, configure using --disable-music-mod-modplug --enable-music-mod-xmp
- Removed support for libmad as a MP3 music backend.
- Removed support for libmikmod as a MOD music backend.
- Added Mix_MasterVolume() for additional volume control over all channels
- Update Mix_Init() return value to match documentation, including MIXER_INIT_* flags for already-initialized modules
- Added Mix_HasMusicDecoder()
- Memory leak fixes and F32 format support to fluidsynth player
- Fixed distorted MIDI playback with FluidSynth if sample rate is out of library's limits
- Added Mix_ModMusicJumpToOrder() for mod music formats
- Enabled module internal loops in modplug player
- Respect original mp3 file offset
- Support setting soundfont via SDL_SOUNDFONTS in OSX native midi
- Fixed mp3 file detection
- Fixes to ogg playback on big-endian devices
- Added functions to get metadata information: Mix_GetMusicTitle() Mix_GetMusicTitleTag() Mix_GetMusicArtistTag() Mix_GetMusicAlbumTag() Mix_GetMusicCopyrightTag()
- Add functions to get loop point information: Mix_GetMusicLoopStartTime() Mix_GetMusicLoopEndTime() Mix_GetMusicLoopLengthTime()
- Added Mix_GetMusicVolume() and Mix_GetMusicPosition()
- Added Mix_MusicDuration() to return music duration in seconds
- Fixed music_mpg123 seek bug when sample rate of the file and the stream don't match
- Timidity improvements, added Mix_SetTimidityCfg()
- Improved mp3 tag detection/skipping
- Extended support for WAV files
- Allow rmid files be opened by native midi
- Fixed possible crash in win32 native midi
- Prevent clipping due to volume settings in modplug music
- Added looping support for Opus files
- Added looping support for FLAC files
- Improved OGG looping support
- Fixed loading Opus audio as audio chunks
Source code(zip)
SDL2_mixer-2.5.2-win32-x64.zip(522.23 KB)
SDL2_mixer-2.5.2-win32-x86.zip(497.98 KB)
SDL2_mixer-2.5.2.dmg(289.20 KB)
SDL2_mixer-2.5.2.tar.gz(9.45 MB)
SDL2_mixer-2.5.2.zip(12.73 MB)
SDL2_mixer-devel-2.5.2-mingw.tar.gz(2.40 MB)
SDL2_mixer-devel-2.5.2-mingw.zip(2.41 MB)
SDL2_mixer-devel-2.5.2-VC.zip(1.02 MB)
-
candidate-2.5.1(May 25, 2022)
Early testing pre-release for 2.6.0, not for general use
Source code(tar.gz)
Source code(zip)
SDL2_mixer-2.5.1.tar.gz(9.44 MB)
-
release-2.0.4(Jan 11, 2022)
Changes in this release:
- Removed smpeg support for mp3 music, now that it's replaced by libmpg123
- Fixed mp3 mad decoder to skip tags, which otherwise would lead to crashes
- Added support for Opus music playback using opusfile library
Source code(zip)
Owner
Simple Directmedia Layer
simple audio mixer for native and web
?? auph ?? Trivial audio mixer API for native and web targets. Online Demo ⚠️ Work in progress! API is constantly changing. The native playback at the
A simple CLI to extract & save artwork of a 🎵 music/audio file.
artwork-extractor A simple CLI to extract & save artwork of a ?? music/audio file. Usage Dependencies MediaInfoLib On Debian based distros, one may in
PortAudio is a portable audio I/O library designed for cross-platform support of audio
PortAudio is a cross-platform, open-source C language library for real-time audio input and output.
Single file audio playback and capture library written in C.
A single file library for audio playback and capture. Example - Documentation - Supported Platforms - Backends - Major Features - Building - Unofficia
Audio File Library
Audio File Library
Single file C library for decoding MPEG1 Video and MP2 Audio
PL_MPEG - MPEG1 Video decoder, MP2 Audio decoder, MPEG-PS demuxer Single-file MIT licensed library for C/C++ See pl_mpeg.h for the documentation. Why?
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)
Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) digital scores into SVG images. Verovio also contain
cute_dsp is a C API for various DSP effects suitable for video games
cute_dsp is a C API for various DSP effects suitable for video games and meant to interface directly with the cute_sound library created by Randy Gaul
A simple C++ library for reading and writing audio files.
AudioFile A simple header-only C++ library for reading and writing audio files. Current supported formats: WAV AIFF Author AudioFile is written and ma
SimplE Lossless Audio
SELA SimplE Lossless Audio A lossless audio codec which aims to be as simple as possible while still having good enough compression ratios. Code Quali
A simple and easy-to-use audio library based on miniaudio
raudio A simple and easy-to-use audio library based on miniaudio raudio forks from raylib.audio module to become an standalone library. Actually, it w
ASS: Audio Stupidly Simple
A single header library for audio decoding and playback
A C library for reading and writing sound files containing sampled audio data.
libsndfile libsndfile is a C library for reading and writing files containing sampled audio data. Authors The libsndfile project was originally develo
C library for cross-platform real-time audio input and output
libsoundio C library providing cross-platform audio input and output. The API is suitable for real-time software such as digital audio workstations as
C++ Audio and Music DSP Library
_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|
Easy and efficient audio synthesis in C++
Tonic Fast and easy audio synthesis in C++. Prefer coding to patching? Love clean syntax? Care about performance? That's how we feel too, and why we m
Explore fractals in an audio-visual sandbox
Fractal Sound Explorer Explore fractals in an audio-visual sandbox Download executable on my itch.io page: https://codeparade.itch.io/fractal-sound-ex
Audio out with an FTDI UART cable
Audio out with an FTDI UART cable This encodes audio as either PDM (using a first order sigma-delta stage), 32-bits PWM or 64-bits PWM and sends it as
Sexy, audio-responsive effects on LED strips.
Striptease Sexy, audio-responsive effects on LED strips. For Teensy 4 with Audio Adapter Board, by PJRC. Quick demo Shooting video of LEDs is very tri