Browse Source

moved tone player to Mandarin

Iver 1 month ago
parent
commit
48d87155bc
3 changed files with 6 additions and 95 deletions
  1. 1 2
      changelog.txt
  2. 0 36
      src/launch program/main.c
  3. 5 57
      src/main/main.c

+ 1 - 2
changelog.txt

@@ -1,2 +1 @@
--added tone player
--new example
+-moved tone player to Mandarin (https://git.mynameisthe.com/IverMartinson/Mandarin)

+ 0 - 36
src/launch program/main.c

@@ -1,41 +1,5 @@
 #include "../headers/yuzuparse.h"
 
-float saw_wave_generator(float time, float value){
-    // play a VALUE hz note
-    
-    return fmodf(time * value * 2 + 1.0, 2.0) - 1.0;
-}
-
-float sine_wave_generator(float time, float value){
-    // play a VALUE hz note
-    
-    return sin(time * value * 3.14159264 * 2);
-}
-
-float square_wave_generator(float time, float value){
-    // play a VALUE hz note
-    
-    return fmodf(time * value, 1) - fmodf(time * value + 0.5, 1);
-}
-
-float triangle_wave_generator(float time, float value){
-    // play a VALUE hz note
-    
-    return sin(time * value * 3.14159264 * 2);
-}
-
 int main(){
-    pa_tone_callback_data* data;
-
-    data = YZ_play_tone(sine_wave_generator, 44100, 100, 220);
-    data = YZ_play_tone(sine_wave_generator, 44100, 100, 440);
-    data = YZ_play_tone(sine_wave_generator, 44100, 100, 880);
-    data = YZ_play_tone(sine_wave_generator, 44100, 100, 110);
-
-    while (data->current_sample < data->sample_count){
-    }
-
-    YZ_kill_player();
-
     return 0;
 }

+ 5 - 57
src/main/main.c

@@ -287,40 +287,12 @@ int portaudio_callback(const void* input, void* output, unsigned long frame_coun
         return 1;    
 }
 
-int tone_callback(const void* input, void* output, unsigned long frames_per_buffer, const PaStreamCallbackTimeInfo* time_info, PaStreamFlags status_flags, void* user_data){
-    pa_tone_callback_data* data = (pa_tone_callback_data*)user_data;
-    float *out = (float*)output;
-    unsigned long i;
-
-    for(i = 0; i < frames_per_buffer; i++){
-        *out++ = data->left_tone;
-        *out++ = data->right_tone;
-        
-        float delta = data->tone_generator((double)data->current_sample / (double)data->sample_rate, data->value);
-
-        data->left_tone = delta;
-        if(data->left_tone >= 1.0) data->left_tone = 1.0;
-        if(data->left_tone <= -1.0) data->left_tone = -1.0;
-        
-        data->right_tone = delta;
-        if(data->right_tone >= 1.0) data->right_tone = 1.0;
-        if(data->right_tone <= -1.0) data->right_tone = -1.0;
-    
-        data->current_sample++;
-    }
-
-    if (data->current_sample >= data->sample_count){
-        return 1;
-    }
-
-    return 0;
-}
-
 unsigned char player_is_initialized = 0;
+unsigned char debug_mode = 0;
 
 void YZ_init_player(){
     if (player_is_initialized){
-        printf("cannot init, already started");
+        if (debug_mode)printf("cannot init, already started");
     
         return;
     }
@@ -337,14 +309,14 @@ void YZ_init_player(){
     freopen("/dev/tty", "w", stdout);
     freopen("/dev/tty", "w", stderr);
 
-    if(error != paNoError) { printf("PortAudio error: %d\n", error); exit(1);}
+    if(error != paNoError) { if (debug_mode)printf("PortAudio error: %d\n", error); exit(1);}
     
     player_is_initialized = 1;
 }
 
 void YZ_kill_player(){
     if (!player_is_initialized){
-        printf("cannot kill, player isn't initilized");
+        if (debug_mode)printf("cannot kill, player isn't initilized");
 
         return;
     }
@@ -352,7 +324,7 @@ void YZ_kill_player(){
     PaError error;
 
     error = Pa_Terminate();
-    if(error != paNoError) { printf("PortAudio error: %d\n", error); exit(1);}
+    if(error != paNoError) {if (debug_mode) printf("PortAudio error: %d\n", error); exit(1);}
 }
 
 pa_callback_data* play_stream(YZ_audio_stream* audio_stream, double* pitch_multiplier, double* speed_multiplier, unsigned char* should_loop_audio, double starting_second, void (*end_func)(void* custom_pointer_for_end_function), void* custom_pointer_for_end_function){
@@ -394,27 +366,3 @@ pa_callback_data* YZ_play_stream(YZ_audio_stream* audio_stream){
 pa_callback_data* YZ_play_stream_dynamic(YZ_audio_stream* audio_stream, double* speed_multiplier, unsigned char* should_loop_audio, double starting_second, void (*end_func)(void*), void* custom_pointer_for_end_function){
     return play_stream(audio_stream, NULL, speed_multiplier, should_loop_audio, starting_second, end_func, custom_pointer_for_end_function);
 }
-
-pa_tone_callback_data* YZ_play_tone(float (*tone_generator)(float, float), float sample_rate, float duration, float value){
-    if (!player_is_initialized) YZ_init_player();
-
-    pa_tone_callback_data* callback_data = malloc(sizeof(pa_tone_callback_data));
-
-    callback_data->tone_generator = tone_generator;
-    callback_data->current_sample = 0;
-    callback_data->duration = duration;
-    callback_data->left_amplitude = 1;
-    callback_data->right_amplitude = 1;
-    callback_data->sample_rate = sample_rate;
-    callback_data->sample_count = duration * sample_rate;
-    callback_data->value = value;
-
-    PaStream* stream;
-
-    PaError error = Pa_OpenDefaultStream(&stream, 0, 2, paFloat32, sample_rate, paFramesPerBufferUnspecified, tone_callback, callback_data);
-    if(error != paNoError) { printf("PortAudio error: %d\n", error); exit(1);}
-
-    Pa_StartStream(stream);
-
-    return callback_data;
-}