X-Git-Url: https://git.sesse.net/index.cgi/?p=pitch;a=blobdiff_plain;f=glpitch.cpp;h=a3c301051046fe2466b3bb5a7a45a234a905703d;hp=90c47b8502715ec95bda0f2a7e73a97c819dc26d;hb=09fabeb39bc13d46d88351729d3b8daecab8820e;hpb=f5029e9edd2cff89ae9e0ff3d836d871c7c61f95 diff --git a/glpitch.cpp b/glpitch.cpp index 90c47b8..a3c3010 100644 --- a/glpitch.cpp +++ b/glpitch.cpp @@ -27,6 +27,19 @@ int main(void) glClear(GL_COLOR_BUFFER_BIT); for ( ;; ) { + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_KEYUP: + if (event.key.keysym.sym == SDLK_ESCAPE) { + exit(0); + } + break; + case SDL_QUIT: + exit(0); + } + } + short buf[FFT_LENGTH / PAD_FACTOR / OVERLAP]; read_chunk(fd, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP); std::pair peak = pd.detect_pitch(buf); @@ -49,17 +62,18 @@ int main(void) glVertex2f(MAX_X, 0.0f); glEnd(); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - - double peak_pos = find_pos(peak.first); - - glBegin(GL_QUADS); - glColor4f(0.0, 1.0f, 0.0f, 0.2f); - glVertex2f(peak_pos - 0.1, 0.0f); - glVertex2f(peak_pos - 0.1, 1.0f); - glVertex2f(peak_pos + 0.1, 1.0f); - glVertex2f(peak_pos + 0.1, 0.0f); - glEnd(); + if (peak.second - log10(FFT_LENGTH) >= 0.0) { + double peak_pos = find_pos(peak.first); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glBegin(GL_QUADS); + glColor4f(0.0, 1.0f, 0.0f, 0.2f); + glVertex2f(peak_pos - 0.1, 0.0f); + glVertex2f(peak_pos - 0.1, 1.0f); + glVertex2f(peak_pos + 0.1, 1.0f); + glVertex2f(peak_pos + 0.1, 0.0f); + glEnd(); + } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glBegin(GL_LINES);