标签: sdl-mixer

如何在Windows上静态编译SDL游戏

我一直试图为我的游戏生成一个静态链接的"单二进制"版本的Windows.我想链接sdl,sdl_image和sdl_mixer,这反过来又引入了一些支持库.不幸的是我还没有找到一种方法来使用cygwin/mingw/gcc来编译和链接.据我所知,所有现有的公共版本只是共享库/ dll.

请注意,我不是在谈论许可.源将是开放的,因此sdl的GPL/LGPLness无关紧要.

windows sdl sdl-image sdl-mixer

14
推荐指数
1
解决办法
2万
查看次数

Windows Vista/7上的SDL_Mixer MIDI卷问题

我实际上并不精通C++或SDL_Mixer,但我仍然代表Doom社区提出这个问题.简而言之,在Windows Vista或7上使用SDL_Mixer独立编写Doom源端口的人似乎无法想出如何独立控制正常的音量和MIDI音量.我会让Eternity Engine的作者James Haley用他自己的话说出来:

似乎在Windows Vista或7下不存在原生MIDI的独立音量概念,因为在任何具有它们的应用程序中使用MIDI音量滑块(包括大多数使用SDL_mixer的游戏)也会影响数字声音输出的音量.这使得尝试调整音乐的相对音量以使舒适变得不可能.

有没有人为此找到任何解决方法?我猜测微软似乎不太可能在整个操作系统中以任何方式分别控制单个声音设备的音量.

我听说过各种涉及Timidity驱动程序的变通办法,但这需要用户超越简单地在他的系统上安装游戏.我所知道的唯一一个明确修复此问题的端口是ZDoom,但它使用的是GPL不兼容的FModEx,因此不是一个合适的解决方案.

如果你想看一些代码,Chocolate Doom可能是最简单的Doom源端口,你可以在这里获取它的源代码.

任何关于其他开源声音和音乐库的建议也会受到欢迎.

c++ windows midi sdl sdl-mixer

6
推荐指数
1
解决办法
1063
查看次数

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

我正在尝试从源代码构建eduke32.

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

我有它:

$ locate SDL_mixer.h
/usr/include/SDL/SDL_mixer.h
Run Code Online (Sandbox Code Playgroud)

(我安装了Devel Tools组,以及很多其他开发包)

但是当我开始构建时,我得到SDL_mixer文件未找到错误.

$ make

Build started using:
compiler: "gcc -Wimplicit -Wdeclaration-after-statement -O2 -funswitch-loops -fomit-frame-pointer -DNDEBUG -DUSING_LTO -flto -fno-stack-protector  -W -Wall -Werror-implicit-function-declaration -Wpointer-arith -Wextra  -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -D_FORTIFY_SOURCE=2 -fjump-tables -Wno-unused-result  -Wno-char-subscripts -DUSE_LIBPNG -DUSE_LIBVPX -Isource -Ibuild/include -Isource/jmact -Isource/jaudiolib/include -Isource/enet/include  -fno-pic -DHAVE_GTK2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -I/usr/include/harfbuzz    -DHAVE_INTTYPES -DSDL_TARGET=2 -I/usr/include/SDL2 -D_REENTRANT -DRENDERTYPESDL=1 -DMIXERTYPESDL=1 -Wno-strict-overflow -DUSE_OPENGL -DNOASM -DPOLYMER  -Wno-attributes"
linker: " -flto  -Wl,-Map=start.memmap     -lrt -lFLAC -lvorbisfile -lvorbis …
Run Code Online (Sandbox Code Playgroud)

sdl makefile sdl-mixer

5
推荐指数
1
解决办法
3583
查看次数

Mix_Chunk和Mix_Music有什么区别?

我何时应该使用Mix_Chunk而不是Mix_Music

audio sdl sdl-mixer

4
推荐指数
2
解决办法
3379
查看次数

我在播放Mix_Chunk时出现意外延迟

所以我正在尝试学习SDL并创建一个小游戏.当用户按下空格键时,它应该播放声音.这有效,但声音需要大约0.5秒才能播放......我该如何解决这个问题?我已经检查了实际的文件,看看延迟是否只是其中的一部分,事实证明并非如此.

在win vista上使用c ++进行SDL.

这是一些相关的代码:

...
Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 )
...

    main() 
    {

    ...

    Mix_PlayMusic( BG_Music, 0 );   //background music

        while( quit == false )
        {
            fps.start();
            fire.handleInput( event, ship.get_x_pos() );
    ...
    }
Run Code Online (Sandbox Code Playgroud)

句柄输入功能:

void lasersC::handleInput( SDL_Event &event, int x )
{
    Uint8 *keystates = SDL_GetKeyState( NULL );

    if ( keystates[ SDLK_SPACE ] && delay == 0)
    {
        Mix_PlayChannel(-1, laser, 0);
        fired * F = new fired( NULL, S_HEIGHT - 50, x + 20 );

        F->shot  = lasers; …
Run Code Online (Sandbox Code Playgroud)

c++ user-interface sdl sdl-mixer

3
推荐指数
1
解决办法
1373
查看次数

SDL_mixer 在某些事件中停止播放音乐

如果某个点在范围内,我的程序需要停止播放声音,因为我有一个类,run()其函数在单独的线程上运行,并使用SDL.h和播放声音SDL_mixer.h

void SoundCheck::run()
{
    Mix_PlayMusic(music, 1);
    while(1)
    {
        if(normalize(sound[0], range_->getPos()))
        {

            printf("stop sound\n");
            Mix_HaltChannel(-1);
        }
        sleep(1);

    }
}
Run Code Online (Sandbox Code Playgroud)

但是当if条件返回 true 时,它​​会打印“停止声音”,但声音仍然播放,似乎是什么问题?

c++ sdl sdl-mixer

3
推荐指数
1
解决办法
3457
查看次数

即使安装了 libmpg123,SDL_Mixer 2.0.4“MP3 支持不可用”

我是编程初学者,正在尝试制作一个简单的控制台 MP3 播放器作为一个项目。为此,我需要一种播放.mp3文件的方法。SDL Mixer 提供了此功能,但需要libmpg123安装在系统上。

即使我安装了所需的依赖项“libmpg123”,调用“Mix_Init()”总是失败。我没有对其他格式的依赖,例如 FLAC、OGG、MOD 和 MIDI(如果有的话)。

我在笔记本电脑上运行 Ubuntu 18.04,并且 SDL2 版本 2.0.9、SDL_Mixer 2.0.4 都是从源代码构建的(尽管我已经尝试了通过包管理器提供的版本apt)。我还libmpg123安装了我也是从源代码构建的(同样,我也尝试了通过包管理器提供的版本)。

我用两种方式编译了代码:

g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer

g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer -lmpg123

我不知道哪一个是正确的,但都不能解决问题。

#include<SDL2/SDL.h>
#include<SDL2/SDL_mixer.h>
#include<iostream>

int main(int argc, char** argv)
{
    if(SDL_Init(SDL_INIT_AUDIO))
        std::cerr << "SDL_Init() Error: " << SDL_GetError() << std::endl;

    else {
        int result {0};
        if(!((result = Mix_Init(MIX_INIT_MP3)) && MIX_INIT_MP3)){
            std::cerr << Mix_GetError() << std::endl;
            std::cerr << "Mix_Init() returns " << result << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ mp3 sdl-mixer sdl-2

3
推荐指数
1
解决办法
1441
查看次数

使用 SDL_mixer 播放一种又一种声音?

我有4个声音。当声音1结束后,我需要自动播放声音2;当声音2结束时,自动播放声音3;当声音 3 完成后,播放声音 4...我使用的是 SDL Mixer 2.0,没有 SDL Sound...有办法做到这一点吗?

int main() {
    int frequencia = 22050;
    Uint16 formato = AUDIO_S16SYS;
    int canal = 2; // 1 mono; 2 = stereo;
    int buffer = 4096;
    Mix_OpenAudio(frequencia, formato, canal, buffer);

    Mix_Chunk* sound_1;
    Mix_Chunk* sound_2;
    Mix_Chunk* sound_3;
    Mix_Chunk* sound_4;

    som_1 = Mix_LoadWAV("D:\\sound1.wav");
    som_2 = Mix_LoadWAV("D:\\sound2.wav");
    som_3 = Mix_LoadWAV("D:\\sound3.wav");
    som_4 = Mix_LoadWAV("D:\\sound4.wav");

    Mix_PlayChannel(-1, sound_1, 0);
    Mix_PlayChannel(1, sound_2, 0);
    Mix_PlayChannel(2, sound_3, 0);
    Mix_PlayChannel(3, sound_4, 0);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c++ sdl sdl-mixer

3
推荐指数
1
解决办法
2823
查看次数

如何使用 SDL_mixer 指定设备

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

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

c++ sdl sdl-mixer windows-7

1
推荐指数
1
解决办法
1463
查看次数

标签 统计

sdl-mixer ×9

sdl ×8

c++ ×6

windows ×2

audio ×1

makefile ×1

midi ×1

mp3 ×1

sdl-2 ×1

sdl-image ×1

user-interface ×1

windows-7 ×1