From e919ad41b01595d2cd8fb0771bd3542817ec1058 Mon Sep 17 00:00:00 2001 From: gramanas Date: Thu, 20 Apr 2023 18:52:53 +0300 Subject: Midi also plays notes now --- src/synth.c | 73 ++++--------------------------------------------------------- 1 file changed, 4 insertions(+), 69 deletions(-) (limited to 'src/synth.c') diff --git a/src/synth.c b/src/synth.c index 29c44e7..1113a56 100644 --- a/src/synth.c +++ b/src/synth.c @@ -41,84 +41,19 @@ #define WAVE_SIZE (44100) -static void -StreamFinished( void* synthData ) -{ - synth_t *synth = (synth_t *) synthData; - printf( "Stream Completed\n"); -} - int main(void) { - PaStreamParameters outputParameters; - PaStream *stream; - PaError err; - int i; synth_t synth; midi_t midi; init_synth(&synth); init_midi(&midi, &synth); + rayrun(&synth); - err = Pa_Initialize(); - if( err != paNoError ) goto error; - - const PaDeviceInfo *deviceInfo; - for( i=0; i< Pa_GetDeviceCount(); i++ ) { - deviceInfo = Pa_GetDeviceInfo( i ); - //if (!strcmp("HyperX Cloud II Wireless: USB Audio (hw:0,0)", deviceInfo->name)) break; - printf("dev: %s || %f\n", deviceInfo->name, deviceInfo->defaultSampleRate); - if (!strcmp("HDA Intel PCH: ALC1220 Analog (hw:0,0)", deviceInfo->name)) break; - } - - - outputParameters.device = i; Pa_GetDefaultOutputDevice(); /* default output device */ - printf("-------\nSelected device: %s\n-------\n", Pa_GetDeviceInfo(outputParameters.device)->name); - if (outputParameters.device == paNoDevice) { - fprintf(stderr,"Error: No default output device.\n"); - goto error; - } - outputParameters.channelCount = 2; /* stereo output */ - outputParameters.sampleFormat = paFloat32; /* 32 bit floating point output */ - outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultLowOutputLatency; - outputParameters.hostApiSpecificStreamInfo = NULL; - - err = Pa_OpenStream(&stream, - NULL, /* no input */ - &outputParameters, - SAMPLE_RATE, - FRAMES_PER_BUFFER, - paClipOff, /* we won't output out of range samples so don't bother clipping them */ - sound_gen, - &synth ); - if( err != paNoError ) goto error; - - err = Pa_SetStreamFinishedCallback( stream, &StreamFinished ); - if( err != paNoError ) goto error; - - err = Pa_StartStream( stream ); - if( err != paNoError ) goto error; - - rayrun(&synth, stream); - - err = Pa_StopStream( stream ); - if( err != paNoError ) goto error; - - err = Pa_CloseStream( stream ); - if( err != paNoError ) goto error; - - Pa_Terminate(); - printf("Test finished.\n"); - - return err; - error: - Pa_Terminate(); - free_synth(&synth); terminate_midi(&midi); - fprintf( stderr, "An error occurred while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); - return err; + free_synth(&synth); + + return 0; } -- cgit v1.2.3