问题标签 [sdl-mixer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4053 浏览

makefile - make 找不到 SDL_mixer.h 但我包含了 SDL 目录

我正在尝试从 source 构建 eduke32 。

除其他外,它还需要 SDL_mixer.h。

我有它:

(我安装了开发工具组,以及许多其他开发包)

但是当我开始构建时,我得到了 SDL_mixer file not found 错误。

即使我添加了 include-dir 选项,也会发生这种情况:

这里发生了什么事 ?有人有线索吗?

0 投票
1 回答
643 浏览

c - SDL_Mixer:Mix_FreeChunk() 在内存中创建的样本上崩溃

我正在努力为声音样本添加随机音高,现在效果很好,但是当我使用完之后尝试释放块时,Mix_FreeChunk() 崩溃了。

我做了一个简化的测试来重现这个问题(SDL 1.2.14 和 SDL_mixer 1.2.11):

s1 是使用 Mix_LoadWAV_RW 从文件加载的,s2 是在内存中创建的 s1 的精确副本。后者在释放时崩溃,但前者不会。任何人都知道为什么会发生这种情况?我在这上面花了几个小时,并将其缩小到 SDL_Mixer 中发生的事情,但我无法查看底层源崩溃时发生了什么,现在测试非常简单,它是原始样本,但仍然失败...

具体错误消息的示例:“game.exe 中 0x77c5e3be 的第一次机会异常:0xC0000005:访问冲突读取位置 0x69b0f1d8。”

为什么不能释放内存?

编辑:在进一步检查了隔离测试之后,在 HeapFree(_crtheap, 0, pBlock) 调用期间,s2 的释放在 free.c 中特别崩溃,所以不知何故堆在这几行的空间中被破坏了?Mix_FreeChunk() 中的中间代码实际上非常简单,或多或少只是在缓冲区上调用 free()。既然如此,为什么 s1 会好,但 s2 会失败?

0 投票
0 回答
376 浏览

visual-studio-2008 - SDL Mixer 仅在某些机器上无法加载文件

一段时间以来,我一直在网上搜索有关此问题的一些帮助,但找不到有关此特定问题的帮助:我打算使用 SDL Mixer 播放 wav 文件“click.wav”。由于目前我无法弄清楚的原因,SDL Mixer 无法正确加载它。

我不明白的是,在不同的机器上执行完全相同的代码。除了加载和播放声音文件之外,其他所有内容都可以完美编译和执行:

Mix_LoadWAV 返回 NULL 但不幸的是 Mix_GetError() 没有返回错误代码。我什至开始查看 SDL 源代码,但我没有走多远。在 SDL_mixer.h: #define Mix_LoadWAV(file) Mix_LoadWAV_RW(SDL_RWFromFile(file, "rb"), 1) 中,即 Mix_LoadWAV 被从 RWOPS 结构中读取文件的 Mix_LoadWAV_RW 调用替换。它主要委托SDL_RWFromFile(file, "rb")实际打开文件并生成结构。也许这就是错误的来源。

两台计算机都使用 Windows 7 64 位操作系统、Visual Studio 2008 和 SDL2。我安装并检查了所有文件: 头文件:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\gl 32 位库文件:C:\Program Files (x86)\Microsoft Visual Studio 11.0\ VC\lib 32 位 dll 文件:C:\WINDOWS\SysWOW64 64 位 lib 文件:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Windows\VC\libs\amd64 64 位 dll 文件:C: \WINDOWS\System32

我为链接器设置了以下附加依赖项:SDL2.lib、SDL2main.lib、opengl32.lib、odbc32.lib、odbccp32.lib、SDL_mixer.lib

您将在下面找到我使用的代码。即使 SDL Mixer 无法加载波形文件,该文件也可以在这台计算机上播放,而其他程序不会出现任何问题。

如果有一些关于如何解决这个愚蠢问题的建议,我将不胜感激。我不是专家级程序员,最近才开始使用 SDL。

0 投票
2 回答
2738 浏览

c++ - SDL2_mixer 链接未定义的引用 C::B

我正在尝试将 SDL2_mixer 用于声音,但出现这些错误

未定义对“Mix_OpenAudio”的引用

未定义对“Mix_LoadWAV_RW”的引用

未定义对“Mix_PlayChannelTimed”的引用

根据 Lazy Foo 的教程,未定义的引用意味着我的链接器设置有问题,我认为我的每一个设置都是正确的。它是这样的:

-lmingw32 -lSDL2main -lSDL2 -lSDL2_mixer -lSOIL -lOpenGL32

此外,头文件和 lib 文件的搜索目录是正确的(我已经检查了三次),并且 .dll 与可执行文件位于同一目录中。代码文件也有相应的#include 目录。我想尝试的事情已经不多了,因此感谢您的帮助

0 投票
1 回答
1529 浏览

c++ - 使用 SDL_mixer 时没有声音

由于一些非常奇怪的原因,SDL_mixer 绝对没有声音播放。我已经尝试了一切:重新安装库,检查音乐是否真的可以播放,使用 Mix_FadeInMusic 和 Mix_FadeOutMusic,到绝对没有用。它告诉我音乐正在加载,它告诉我它正在播放。我在 VC 2013 中使用 Windows 8.1 64 位。

代码:

0 投票
1 回答
384 浏览

c++ - 削减依赖关系

我正在使用 SDL2/Box2D/OpenGL(加上 SDL2 扩展 SDL2_mixer 和 SDL2_ttf)用 C++ 编写一个小游戏。由于我接近1.0版本,我一直在考虑分发游戏,我刚刚发现我的游戏有一些意想不到的依赖。

显然,SDL2 引入了 libjson 之类的依赖项(为什么 SDL 需要 json?),而 SDL2_mixer 引入了 libglib。在我看来,这些是最奇怪的,但还有更多。例如,SDL2 而不是 SDL2_mixer 正在引入 libFLAC。还有一些依赖项,如 libpng、libmad、libvorbis 等。我确定我没有使用这些功能。

我是否需要包含所有这些依赖项才能拥有一个失败的独立游戏?将依赖项数量减少到绝对最低限度的最佳方法是什么?

这是 ldd 的完整输出:

0 投票
1 回答
686 浏览

sdl - 加载 .wav 文件 C++ 时出错

我试图加载一个 .wav 文件(afschieten.wav),但我无法加载它。我跟着lazyfoo的教程:http: //lazyfoo.net/SDL_tutorials/lesson11/

编码:

我在文件顶部得到了这个:


我从 main 调用的函数:

我究竟做错了什么?编译时我没有错误。它说音效 afschieten.wav 加载失败。

0 投票
2 回答
1572 浏览

c++ - 如何使用 SDL_mixer 指定设备

我有一个使用 SDL_mixer 库(http://www.libsdl.org/projects/SDL_mixer/)播放一些声音的程序。当我只是使用 Mix_OpenAudio 打开与默认设备的连接时,它运行良好。但是,我需要针对特定​​的音频设备。我看到 SDL 库本身有一个名为 SDL_OpenAudioDevice 的方法可以满足我的需要,但是我必须编写自己的混音器和所有这些东西。

任何人都知道如何使用 SDL_mixer 打开特定的音频设备,或支持此功能的 SDL 的不同混音器?我真的不想编写自己的混音器。我正在用 C++ 在 Windows 7 上开发一个 Win32 应用程序。

0 投票
0 回答
355 浏览

c - 使用 SDL 混频器的实时限带脉冲序列合成

我正在尝试使用这种技术实现音频合成器:

https://ccrma.stanford.edu/~stilti/papers/blit.pdf

我正在使用 SDL2_Mixer 库在标准 C 中执行此操作。

这是我的 BLIT 函数实现:

这个想法是按照纸上的说明将其结合起来生成方波。我使用以下配置设置了 SDL2_mixer:

这是我的create_rect功能。它创建了一个双极脉冲序列,然后整合它的值来生成一个带限的矩形函数。

我的问题是:产生的波很好,但几秒钟后它开始发出噪音。我试图绘制结果,这是它:

标准版本 更多放大版 评论区

任何想法?

编辑:这是双极 BLIT 在集成之前的图:

BLIT 缩放 BLIT

0 投票
4 回答
209 浏览

c++ - 如何修复这个执行错误?

每次我编译我的简单 SDL1.2 代码时,它都会成功编译,但是当我尝试通过终端(Ubuntu 中的alt+ )运行它时:t

我得到这个错误。你能帮忙吗?这是代码: