#include <Application.h>
#include <Sound.h>
#include <SoundPlayer.h>
typedef struct cookie_record {
float value;
float direction;
} cookie_record;
void
BufferProc(void* _cookie, void* buffer, size_t size,
const media_raw_audio_format& format)
{
if (format.format != media_raw_audio_format::B_AUDIO_FLOAT)
return;
cookie_record* cookie = (cookie_record*)_cookie;
uint32 channelCount = format.channel_count;
size_t floatSize = size / 4;
float* buf = (float*)buffer;
for (size_t i = 0; i < floatSize; i += channelCount) {
for (size_t j = 0; j < channelCount; j++) {
buf[i + j] = cookie->value;
}
if (cookie->direction == 1.0 && cookie->value >= 1.0)
cookie->direction = -1.0;
else if (cookie->direction == -1.0 && cookie->value <= -1.0)
cookie->direction = 1.0;
cookie->value += cookie->direction * (1.0 / 64.0);
}
}
int
main()
{
BApplication app("application/dzwiek");
cookie_record cookie;
cookie.value = 0.0;
cookie.direction = 1.0;
BSoundPlayer player("wave_player", BufferProc, NULL, &cookie);
player.Start();
player.SetHasData(true);
sleep(5);
player.Stop();
}