X-Git-Url: https://git.sesse.net/index.cgi/?a=blobdiff_plain;f=glpitch.cpp;h=a168d79c5c4d3083bd4bf7766d2c9e46f6455a8c;hb=HEAD;hp=e47e977f2b8743960b776e28c13f6a77947b574c;hpb=3fff09f828423670c99dac1681ef32c2f764dfea;p=pitch diff --git a/glpitch.cpp b/glpitch.cpp index e47e977..a168d79 100644 --- a/glpitch.cpp +++ b/glpitch.cpp @@ -52,7 +52,7 @@ double find_display_pos(double freq) int main(void) { PitchDetector pd(SAMPLE_RATE, FFT_LENGTH, PAD_FACTOR, OVERLAP); - int fd = get_dsp_fd(SAMPLE_RATE, FFT_LENGTH, OVERLAP); + snd_pcm_t *pcm = get_dsp_handle(SAMPLE_RATE); SDL_Init(SDL_INIT_VIDEO); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); @@ -60,6 +60,7 @@ int main(void) glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); + glDisable(GL_DEPTH_TEST); for ( ;; ) { SDL_Event event; @@ -76,7 +77,7 @@ int main(void) } short buf[FFT_LENGTH / PAD_FACTOR / OVERLAP]; - read_chunk(fd, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP); + read_chunk(pcm, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP); std::pair peak = pd.detect_pitch(buf); glMatrixMode(GL_PROJECTION); @@ -99,12 +100,14 @@ int main(void) if (peak.second - log10(FFT_LENGTH) >= 0.0) { double peak_pos = find_display_pos(peak.first); + double strength = peak.second / 40.0f; + glEnable(GL_POLYGON_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_POLYGON_SMOOTH); glBegin(GL_QUADS); - glColor4f(0.0, 1.0f, 0.0f, 0.2f); + glColor4f(0.0f, strength, 1.0 - strength, 0.2f); glVertex2f(peak_pos - 0.1, 0.0f); glVertex2f(peak_pos - 0.1, 1.0f); glVertex2f(peak_pos + 0.1, 1.0f);