mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 16:24:04 +02:00
9763fa626b
This adds support for having a sound fade in when it is started and fade out when it is stopped. This commit does not yet include support for fading out when the sound approaches the end - it only fades out when explicitly stopped with ma_sound_stop(). The fade time is set in milliseconds. This commit includes a new effect called ma_fader, but it currently only supports f32 formats. Support for other formats will be added in the future.
102 lines
2.9 KiB
C
102 lines
2.9 KiB
C
#define STB_VORBIS_HEADER_ONLY
|
|
#include "../extras/stb_vorbis.c" /* Enables Vorbis decoding. */
|
|
|
|
#define MA_DEBUG_OUTPUT
|
|
#define MA_IMPLEMENTATION
|
|
#include "../miniaudio.h"
|
|
#include "ma_engine.h"
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
ma_result result;
|
|
ma_engine engine;
|
|
ma_sound sound;
|
|
|
|
|
|
if (argc < 2) {
|
|
printf("No input file.\n");
|
|
return -1;
|
|
}
|
|
|
|
result = ma_engine_init(NULL, &engine);
|
|
if (result != MA_SUCCESS) {
|
|
printf("Failed to initialize audio engine.\n");
|
|
return -1;
|
|
}
|
|
|
|
|
|
#if 1
|
|
result = ma_engine_sound_init_from_file(&engine, argv[1], MA_DATA_SOURCE_FLAG_DECODE | MA_DATA_SOURCE_FLAG_ASYNC | MA_DATA_SOURCE_FLAG_STREAM, NULL, &sound);
|
|
if (result != MA_SUCCESS) {
|
|
printf("Failed to load sound: %s\n", argv[1]);
|
|
ma_engine_uninit(&engine);
|
|
return -1;
|
|
}
|
|
|
|
/*ma_data_source_seek_to_pcm_frame(sound.pDataSource, 5000000);*/
|
|
|
|
/*ma_engine_sound_set_volume(&engine, &sound, 0.25f);*/
|
|
ma_engine_sound_set_pitch(&engine, &sound, 1.0f);
|
|
ma_engine_sound_set_pan(&engine, &sound, 0.0f);
|
|
ma_engine_sound_set_looping(&engine, &sound, MA_TRUE);
|
|
ma_engine_sound_start(&engine, &sound, 4000);
|
|
|
|
ma_sleep(5000);
|
|
ma_engine_sound_stop(&engine, &sound, 4000);
|
|
#endif
|
|
|
|
#if 1
|
|
/*ma_engine_play_sound(&engine, argv[1], NULL);*/
|
|
/*ma_engine_play_sound(&engine, argv[2], NULL);
|
|
ma_engine_play_sound(&engine, argv[3], NULL);*/
|
|
#endif
|
|
|
|
#if 0
|
|
float pitch = 1;
|
|
float pitchStep = 0.01f;
|
|
float pitchMin = 0.125f;
|
|
float pitchMax = 8;
|
|
for (;;) {
|
|
pitch += pitchStep;
|
|
if (pitch < pitchMin) {
|
|
pitch = pitchMin;
|
|
pitchStep = -pitchStep;
|
|
}
|
|
if (pitch > pitchMax) {
|
|
pitch = pitchMax;
|
|
pitchStep = -pitchStep;
|
|
}
|
|
|
|
ma_engine_sound_set_pitch(&engine, &sound, pitch);
|
|
|
|
ma_sleep(1);
|
|
}
|
|
#endif
|
|
|
|
printf("Press Enter to quit...");
|
|
getchar();
|
|
|
|
ma_engine_sound_uninit(&engine, &sound);
|
|
ma_engine_uninit(&engine);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* stb_vorbis implementation must come after the implementation of miniaudio. */
|
|
#if defined(_MSC_VER) && !defined(__clang__)
|
|
#pragma warning(push)
|
|
#pragma warning(disable:4100) /* unreferenced formal parameter */
|
|
#pragma warning(disable:4244) /* '=': conversion from '' to '', possible loss of data */
|
|
#pragma warning(disable:4245) /* '=': conversion from '' to '', signed/unsigned mismatch */
|
|
#pragma warning(disable:4456) /* declaration of '' hides previous local declaration */
|
|
#pragma warning(disable:4457) /* declaration of '' hides function parameter */
|
|
#pragma warning(disable:4701) /* potentially uninitialized local variable '' used */
|
|
#else
|
|
#endif
|
|
#undef STB_VORBIS_HEADER_ONLY
|
|
#include "../extras/stb_vorbis.c"
|
|
#if defined(_MSC_VER) && !defined(__clang__)
|
|
#pragma warning(pop)
|
|
#else
|
|
#endif
|