#include #include #include "mossrose.h" PaStream *stream; struct audio_output_t { float l; float r; }; static int callback( const void *input, void *output, unsigned long frame_count, const PaStreamCallbackTimeInfo *time_info, void *userdata) { static float left = 0; static float right = 0; struct audio_output_t *out = output; for (int i=0; i 1) left -= 2; if (right > 1) right -= 2; } return 0; } int mr_init(double sample_rate, int n_channels) { PaError err; err = Pa_Initialize(); if (err != paNoError) { fprintf(stderr, "failed to initialize PortAudio!\n"); return 1; } err = Pa_OpenDefaultStream(&stream, 0, 2, paFloat32, sample_rate, 0, callback, NULL); if (err != paNoError) { fprintf(stderr, "failed to open audio stream!\n"); return 1; } err = Pa_StartStream(stream); if (err != paNoError) { fprintf(stderr, "failed to start audio stream!\n"); return 1; } return 0; }; int mr_terminate(double sample_rate, int n_channels) { Pa_AbortStream(stream); Pa_CloseStream(stream); Pa_Terminate(); return 0; }