{"id":2793,"date":"2017-12-10T05:14:33","date_gmt":"2017-12-10T12:14:33","guid":{"rendered":"http:\/\/fallows.ca\/wp\/?p=2793"},"modified":"2017-12-27T13:32:31","modified_gmt":"2017-12-27T20:32:31","slug":"goertzel-filter-tone-detector-learning-dsp","status":"publish","type":"post","link":"https:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/","title":{"rendered":"Goertzel Filter Tone Detector &#8211; Learning DSP"},"content":{"rendered":"<p><a href=\"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2844\" src=\"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\" alt=\"goertzel filter tone detector\" width=\"449\" height=\"228\" srcset=\"https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png 449w, https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel-300x152.png 300w\" sizes=\"auto, (max-width: 449px) 100vw, 449px\" \/><\/a><\/p>\n<p>You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.\u00a0\u00a0<!--more--><\/p>\n<p>Watch this short <a class=\"vp-a\" href=\"https:\/\/youtu.be\/0gtdA0Xyg9U\">learning video<\/a> which demonstrates using GNURadio to examine filter performance. If you want to run this yourself, just copy and expand the graphic to understand the flow diagram. Or you can use the GNURadio Companion file here.\u00a0[sdm_download id=&#8221;4068&#8243; fancy=&#8221;0&#8243; color=&#8221;orange&#8221; button_text=&#8221;Download GRC File&#8221;]<\/p>\n<p>In the video, you will see how to use GNURadio to create a tone signal and run it through the Goertzel algorithm. By converting the output signal to a power reading, you have a circuit than can recognize a\u00a0 tone of the specific frequency. Then, you measure the strength of the output signal to know when a tone is actually present, and for how long.<\/p>\n<p>The flow diagram shows how to set up a signal source of varying frequency and amplitude, and how to tune the filter. Also, it demonstrates using a GNURadio tabbed notebook to display different signal displays. The easiest way to show a strength meter is to use a GUI Number Sink<\/p>\n<h2>Goertzel Filter Tone Detector for Arduino<\/h2>\n<p>Previously, I posted some articles showing how to build an <a href=\"http:\/\/play.fallows.ca\/wp\/series\/morse-decoder\/\" target=\"_blank\" rel=\"noopener\">Arduino Morse Code Decoder<\/a>. This series showed how to use Arduino analog input to read audio, a Goertzel filter to detect the presence of a Morse Code signal, and then translated the Morse into text.<\/p>\n<p>At the time, I wondered how to manage the bandwidth of the Morse filter. By varying the number of samples used by the Goertzel detector, I could increase or decrease filter bandwidth. The trade-off was the amount of time required for the filter to work. With GNURadio, you can experiment with various sample lengths to figure out the right bandwidth and timing requirements for your decoder.<\/p>\n<p>Keep in mind that to decode Morse signals you need to capture the rising and falling edges of the tones. This means that you must sample two or three times faster than the shortest &#8220;dot length&#8221; you expect to receive.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.\u00a0\u00a0<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Goertzel Filter Tone Detector - Learning DSP #gnuradio #hamr #hamradio #SDR","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[12],"tags":[269,242,243,34],"series":[270],"class_list":["post-2793","post","type-post","status-publish","format-standard","hentry","category-software-defined-radio","tag-gnuradio","tag-hamr","tag-hamradio","tag-sdr","series-learning-sdr-and-dsp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon<\/title>\n<meta name=\"description\" content=\"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon\" \/>\n<meta property=\"og:description\" content=\"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/\" \/>\n<meta property=\"og:site_name\" content=\"Living On The Horizon\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-10T12:14:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-27T20:32:31+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\" \/>\n<meta name=\"author\" content=\"John VE6EY\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@VE6EY\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John VE6EY\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/\",\"url\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/\",\"name\":\"Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon\",\"isPartOf\":{\"@id\":\"https:\/\/fallows.ca\/wp\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\",\"datePublished\":\"2017-12-10T12:14:33+00:00\",\"dateModified\":\"2017-12-27T20:32:31+00:00\",\"author\":{\"@id\":\"https:\/\/fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945\"},\"description\":\"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.\",\"breadcrumb\":{\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage\",\"url\":\"https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\",\"contentUrl\":\"https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png\",\"width\":449,\"height\":228,\"caption\":\"goertzel filter tone detector\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fallows.ca\/wp\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Radio\",\"item\":\"https:\/\/fallows.ca\/wp\/category\/radio\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ham Radio\",\"item\":\"https:\/\/fallows.ca\/wp\/category\/radio\/ham-radio\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Goertzel Filter Tone Detector &#8211; Learning DSP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fallows.ca\/wp\/#website\",\"url\":\"https:\/\/fallows.ca\/wp\/\",\"name\":\"Living On The Horizon\",\"description\":\"Blogs and Stuff\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fallows.ca\/wp\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945\",\"name\":\"John VE6EY\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fallows.ca\/wp\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g\",\"caption\":\"John VE6EY\"},\"sameAs\":[\"https:\/\/x.com\/VE6EY\"],\"url\":\"https:\/\/fallows.ca\/wp\/author\/play\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon","description":"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/","og_locale":"en_US","og_type":"article","og_title":"Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon","og_description":"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.","og_url":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/","og_site_name":"Living On The Horizon","article_published_time":"2017-12-10T12:14:33+00:00","article_modified_time":"2017-12-27T20:32:31+00:00","og_image":[{"url":"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png","type":"","width":"","height":""}],"author":"John VE6EY","twitter_card":"summary_large_image","twitter_creator":"@VE6EY","twitter_misc":{"Written by":"John VE6EY","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/","url":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/","name":"Goertzel Filter Tone Detector - Learning DSP - Living On The Horizon","isPartOf":{"@id":"https:\/\/fallows.ca\/wp\/#website"},"primaryImageOfPage":{"@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage"},"image":{"@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage"},"thumbnailUrl":"http:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png","datePublished":"2017-12-10T12:14:33+00:00","dateModified":"2017-12-27T20:32:31+00:00","author":{"@id":"https:\/\/fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945"},"description":"You can use GNURadio to examine the performance of a Goertzel filter tone detector. Its selectivity depends on the number of samples used.","breadcrumb":{"@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#primaryimage","url":"https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png","contentUrl":"https:\/\/fallows.ca\/wp\/wp-content\/uploads\/2017\/12\/gnuradio-goertzel.png","width":449,"height":228,"caption":"goertzel filter tone detector"},{"@type":"BreadcrumbList","@id":"http:\/\/fallows.ca\/wp\/radio\/software-defined-radio\/goertzel-filter-tone-detector-learning-dsp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fallows.ca\/wp\/"},{"@type":"ListItem","position":2,"name":"Radio","item":"https:\/\/fallows.ca\/wp\/category\/radio\/"},{"@type":"ListItem","position":3,"name":"Ham Radio","item":"https:\/\/fallows.ca\/wp\/category\/radio\/ham-radio\/"},{"@type":"ListItem","position":4,"name":"Goertzel Filter Tone Detector &#8211; Learning DSP"}]},{"@type":"WebSite","@id":"https:\/\/fallows.ca\/wp\/#website","url":"https:\/\/fallows.ca\/wp\/","name":"Living On The Horizon","description":"Blogs and Stuff","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fallows.ca\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/fallows.ca\/wp\/#\/schema\/person\/9750e0ab227030255d9806757525f945","name":"John VE6EY","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fallows.ca\/wp\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4048edfe09efff51033c48b4fb951e8ac0a4dc84a25c96b25e5ae9f5b7069a5?s=96&d=mm&r=g","caption":"John VE6EY"},"sameAs":["https:\/\/x.com\/VE6EY"],"url":"https:\/\/fallows.ca\/wp\/author\/play\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6wKKr-J3","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/2793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/comments?post=2793"}],"version-history":[{"count":3,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/2793\/revisions"}],"predecessor-version":[{"id":2845,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/posts\/2793\/revisions\/2845"}],"wp:attachment":[{"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/media?parent=2793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/categories?post=2793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/tags?post=2793"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/fallows.ca\/wp\/wp-json\/wp\/v2\/series?post=2793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}