LINUX.ORG.RU

История изменений

Исправление waker, (текущая версия) :

проще всего через sdl

сорри за форматирование, писал прямо в комменте

компилить gcc file.c -lSDL

#include <SDL/SDL.h>
#include <string.h>
SDL_AudioSpec spec;
float phase = 0;
void sdl_callback (void *userdata, Uint8 *stream, int len) {
int i;
for (i = 0; i < len/2; i++) {
((short*)stream)[i] = (short)((phase * 2 - 1)*0x7fff);
phase += 440.f / spec.freq;
if (phase > 1) phase -= 1;}}
int main() {
SDL_AudioSpec obt;
spec.freq = 48000;
spec.format = AUDIO_S16;
spec.channels = 1;
spec.samples = 4096;
spec.callback = sdl_callback;
SDL_OpenAudio(&spec, &obt);
memcpy (&spec, &obt, sizeof (SDL_AudioSpec));
SDL_PauseAudio (0);
for (;;sleep (1));
return 0;}

гы. если повернуть голову на 90 градусов, и смотреть издалека - похоже на анализатор спектра.

Исходная версия waker, :

проще всего через sdl

сорри за форматирование, писал прямо в комменте

компилить gcc file.c -lSDL

#include <SDL/SDL.h>
#include <string.h>
SDL_AudioSpec spec;
float phase = 0;
void sdl_callback (void *userdata, Uint8 *stream, int len) {
int i;
for (i = 0; i < len/2; i++) {
((short*)stream)[i] = (short)((phase * 2 - 1)*0x7fff);
phase += 440.f / spec.freq;
if (phase > 1) phase -= 1;}}
int main() {
SDL_AudioSpec obt;
spec.freq = 48000;
spec.format = AUDIO_S16;
spec.channels = 1;
spec.samples = 4096;
spec.callback = sdl_callback;
SDL_OpenAudio(&spec, &obt);
memcpy (&spec, &obt, sizeof (SDL_AudioSpec));
SDL_PauseAudio (0);
for (;;sleep (1));
return 0;}