From 8f751717d8307e3aa09fdfee19bed9478b7b16be Mon Sep 17 00:00:00 2001 From: Harvie Date: Wed, 1 Aug 2012 06:10:05 +0200 Subject: [PATCH] Improved goertzel documentation --- c/goertzel/goertzel.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/c/goertzel/goertzel.c b/c/goertzel/goertzel.c index 607b08b..96458a5 100644 --- a/c/goertzel/goertzel.c +++ b/c/goertzel/goertzel.c @@ -4,13 +4,6 @@ float goertzel_mag(int numSamples,int TARGET_FREQUENCY,int SAMPLING_RATE, float* data) { - /* - On lower samplerates and frame sizes this may perform sub-optimally. Eg.: - When set to detect 440Hz (at 8000Hz samplerate and ~4000 samples) - it actually detects something around 438,3Hz rather than 400Hz... - If you can't increase samplerate way around this is just to increase sensitivity. - */ - int k,i; float floatnumSamples; float omega,sine,cosine,coeff,q0,q1,q2,magnitude,real,imag; @@ -44,10 +37,28 @@ float goertzel_mag(int numSamples,int TARGET_FREQUENCY,int SAMPLING_RATE, float* } void print_help(char ** argv) { + printf( + "%s takes raw (wav) audio stream and computes power (or magnitude)\n" + "of desired frequencies using Goertzel algorithm for time frames\n" + "of fixed length (specified in samples or relative to sample rate).\n" + "This can be used in various frequency detection applications\n" + "like guitar tuning, DTMF decoding and many others...\n" + "\n" + "http://en.wikipedia.org/wiki/Goertzel_algorithm\n" + "\n" + "Curently only raw unsigned 8bit (u8) mono audio is supported, but\n" + "samplerate may vary. You can convert other formats before processing.\n" + "\n" + "On lower samplerates and frame sizes this may perform sub-optimally. Eg.:\n" + "When set to detect 440Hz (at 8000Hz samplerate and ~4000 samples)\n" + "it actually detects something around 438,3Hz rather than 400Hz...\n" + "If you can't increase samplerate way around this is just to increase sensitivity.\n" + "\n" + ,argv[0] + ); printf( "Arguments:\n" - "\t-i \tInput from file (default STDIN)\n" "\t-o \tOutput to file (default STDOUT)\n" "\t-a \tOutput to file (append) (default STDOUT)\n" @@ -56,7 +67,7 @@ void print_help(char ** argv) { "\t-c \tFrame size in samples (default 4000 Samples)\n" "\t-d \tFrame size (default 2) (samplerate will be divided by this number to get frame size same as -c)\n" "\n" - "\t-f \tAdd frequency in Hz to detect (if no specified 440 Hz will be added)\n" + "\t-f \tAdd frequency in Hz to detect (use multiple times, if no added 440 Hz will be...)\n" "\n" "\t-t \tSet treshold (used to hide magnitudes lower than treshold) (defaults -1)\n" "\t-n\t\tPrint integers rather than floats\n" -- 2.30.2