§ Ссылка для скачивания

Скачать готовый шаблон.
В этом шаблоне реализована лишь событийная модель, но нет поддержки звука.

§ Небольшая тестовая программа

#include "main.h"

int main(int argc, char* argv[]) {

    Main app(320, 200, 2, 25);

    // Нарисовать что-нибудь
    app.block(0, 0, 320, 200, 0x80);
    app.line(0, 0, 320, 200, 0xffff);
    app.circlef(160, 100, 20, 0x008000);
    app.circle(160, 100, 20, 0xffffff);

    // Обработка возникшего события
    while (int event = app.event()) {

        switch (event) {
            // Обработать событие
        }
    }

    return 0;
}

§ Объявление звука

int cursor;

// Объявление
SDL_AudioSpec sdl_audio = {44100, AUDIO_U8, 2, 0, 2048};

// Обработчик
void audio_callback(void *data, unsigned char *stream, int len)
{
    for (int i = 0; i < len; i += 2) {

        float v1 = sin((float)cursor*0.020)*31. + 127;
        float v2 = sin((float)cursor*0.021)*31. + 127;

        stream[i]   = v1;
        stream[i+1] = v2;

        cursor += 1;
    }
}
Вызов данной функции можно реализовать так:
sdl_audio.callback = audio_callback;
SDL_OpenAudio(&sdl_audio, 0);
SDL_PauseAudio(0);