{"id":15298,"date":"2024-07-26T23:04:29","date_gmt":"2024-07-26T23:04:29","guid":{"rendered":"https:\/\/liquidinstruments.com\/?p=15298"},"modified":"2025-06-11T23:10:40","modified_gmt":"2025-06-11T23:10:40","slug":"digitally-implementing-fractional-delay-with-the-fir-filter-builder","status":"publish","type":"post","link":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/","title":{"rendered":"Fractional delays with the FIR Filter Builder","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Analog signals can be precisely delayed by employing delay lines. In digital systems that are quantized in time, a delay of an integer number of samples can be implemented trivially but implementing fractional delays is more challenging. Fortunately, the advanced <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/fir-filter-builder\/\">FIR Filter Builder<\/a> developed by Liquid Instruments serves as a reliable and powerful tool for implementing fractional delays on arbitrary signals.<\/p>\n<p>The action of an FIR filter is that of convolution:<\/p>\n<p><img decoding=\"async\" width=\"681\" height=\"54\" class=\"size-full wp-image-19171 alignright\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.49.08-PM.png\" alt=\"Fractional delay equation\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.49.08-PM.png 681w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.49.08-PM-300x24.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.49.08-PM-600x48.png 600w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><\/p>\n<p>where n is the sample index, * is the convolution operator, y is the output of the filter, x is the input and h is the filter\u2019s impulse response. A useful property of convolution is:<\/p>\n<p><img decoding=\"async\" width=\"743\" height=\"62\" class=\"size-full wp-image-19172 alignright\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.50.19-PM.png\" alt=\"fractional delay formula\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.50.19-PM.png 743w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.50.19-PM-300x25.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.50.19-PM-600x50.png 600w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/p>\n<p>so that to obtain a delayed filter output we may simply apply a delayed filter to the original input signal. For example, a trivial unity gain, all-pass filter could be written as:<\/p>\n<p><img decoding=\"async\" width=\"720\" height=\"56\" class=\"size-full wp-image-19173 alignright\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.51.08-PM.png\" alt=\"Fractional delay\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.51.08-PM.png 720w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.51.08-PM-300x23.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.51.08-PM-600x47.png 600w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/p>\n<p>where our filter impulse response is h[n]=\u03b4[n]. To implement a one-sample delay one could construct the following filter:<\/p>\n<p><img decoding=\"async\" width=\"799\" height=\"54\" class=\"aligncenter size-full wp-image-19175\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.52.28-PM.png\" alt=\"Fractional delay filter\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.52.28-PM.png 799w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.52.28-PM-300x20.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.52.28-PM-768x52.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.52.28-PM-600x41.png 600w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><\/p>\n<p>Note how the delayed filter impulse response ([0 1] rather than [1]) leads to a delayed output. This method can easily produce integer-sample delays, but fractional delays are still unobtainable (one cannot implement e.g. \u03b4[0.5]).<\/p>\n<h2>Fractional delays<\/h2>\n<p>The frequency response of a filter is the Fourier transform of its impulse response. To implement fractional delays without changing the magnitude of the signal we need a filter kernel whose Fourier transform has a flat, unity-gain frequency response up to Nyquist frequency and then a sharp cut-off, rolling off to zero for higher frequencies, ideally like a rectangle. If we know the analytical form of such a function then it can be evaluated at arbitrary delays. Noting that the sinc function (sine cardinal) is the Fourier transform of the rectangle function, the sinc function will prove a useful prototype impulse response for implementing fractional delays. By adding an appropriate offset in the argument of the sinc filter, its delay may be arbitrarily controlled.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19176 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.53.59-PM.png\" alt=\"Fractional delay filter\" width=\"669\" height=\"61\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.53.59-PM.png 669w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.53.59-PM-300x27.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.53.59-PM-600x55.png 600w\" sizes=\"(max-width: 669px) 100vw, 669px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19177 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.54.20-PM.png\" alt=\"The frequency response of the directly truncated sinc filter exhibits significant ripples. The frequency response of the Blackman windowed-sinc filter shows minimum ripples.\" width=\"969\" height=\"549\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.54.20-PM.png 969w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.54.20-PM-300x170.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.54.20-PM-768x435.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.54.20-PM-600x340.png 600w\" sizes=\"(max-width: 969px) 100vw, 969px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 1: (a) The frequency response of the directly truncated sinc filter exhibits significant ripples. (b) The frequency response of the Blackman windowed-sinc filter shows minimum ripples.<\/p>\n<h2>A windowed sinc<\/h2>\n<p>To realise an ideal brick-wall frequency response requires an infinitely long sinc function and therefore an infinite number of filter taps. The length of a real FIR filter cannot be infinite, and the sinc filter must be truncated. Truncating the filter is equivalent to multiplying by a rectangular window in the time domain. As noted above, this will result in convolution of our brick-wall response with a sinc function in the frequency domain, degrading the magnitude response of the filter. This error is worse for short filters but only improves slowly with 1\/(filter length), as illustrated in Figure 1(a).<br \/>\nThe errors associated with truncation can be reduced by windowing the sinc function to avoid sharp discontinuities at the edges. Numerous windows exist offering trade-offs between bandwidth and passband flatness. In Figure 1(b), a Blackman windowing function was applied to achieve a relatively flat frequency response, as is desirable for an all-pass delay filter.<\/p>\n<h2>Equation editor<\/h2>\n<p>The FIR Filter Builder instrument offers a variety of configurable filters, specified in both time and frequency domains. Moreover, it is possible to upload a custom impulse response or define one using the built-in equation editor. Although the sinc function is included as a pre-defined option, as an educational exercise, we show here how it could be realised using the equation editor.<\/p>\n<p>Mathematically, the sinc filter that achieves band-limited unity gain within the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Nyquist_frequency\" target=\"_blank\" rel=\"noopener\">Nyquist frequency<\/a> range can be expressed as:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19179\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.56.02-PM.png\" alt=\"Fractional delay filter\" width=\"709\" height=\"37\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.56.02-PM.png 728w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.56.02-PM-300x16.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.56.02-PM-600x31.png 600w\" sizes=\"(max-width: 709px) 100vw, 709px\" \/><\/p>\n<p style=\"text-align: center;\">where: m is the desired delay in units of the sampling period T<sub>s<\/sub>= 1\/f<sub>s<\/sub><\/p>\n<p>The time length of the sinc filter is T<sub>s<\/sub> (N<sub>taps<\/sub>-1). However, in the FIR Filter Builder, the Equation editor has a nominal time base of 1. To preserve the sinc filter shape within the FIR Filter Builder, n in Eq. 6 must be reduced by a factor of T<sub>s<\/sub> (N<sub>taps<\/sub>-1). Therefore, the filter equation for FIR Filter Builder becomes:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19180\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.57.45-PM.png\" alt=\"Equation\" width=\"890\" height=\"118\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.57.45-PM.png 928w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.57.45-PM-300x40.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.57.45-PM-768x102.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.57.45-PM-600x80.png 600w\" sizes=\"(max-width: 890px) 100vw, 890px\" \/><\/p>\n<p>One important consideration is that the sinc function in Eq. 7 is defined over the interval <img decoding=\"async\" class=\"alignnone wp-image-19181\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.58.17-PM.png\" alt=\"equation\" width=\"139\" height=\"34\" \/>. To position the center of the sinc filter at the center of the FIR filter window and preserve causality (shifting the definition range to [0,N<sub>taps<\/sub>-1] ), the expression can be further refined to:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19182\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.00-PM.png\" alt=\"equation\" width=\"726\" height=\"64\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.00-PM.png 783w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.00-PM-300x26.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.00-PM-768x68.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.00-PM-600x53.png 600w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19183 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.10-PM.png\" alt=\"FIR filter Channel A configuration for a delay of 50 sampling periods\" width=\"995\" height=\"515\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.10-PM.png 995w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.10-PM-300x155.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.10-PM-768x398.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.10-PM-600x311.png 600w\" sizes=\"(max-width: 995px) 100vw, 995px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 2: FIR filter Channel A configuration for a delay of 50 sampling periods.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19184 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.53-PM.png\" alt=\"FIR filter ChannelB configuration for a delay of 50.5 sampling periods\" width=\"982\" height=\"510\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.53-PM.png 982w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.53-PM-300x156.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.53-PM-768x399.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-3.59.53-PM-600x312.png 600w\" sizes=\"(max-width: 982px) 100vw, 982px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 3: FIR filter ChannelB configuration for a delay of 50.5 sampling periods.<\/p>\n<h3><strong>Example<\/strong><\/h3>\n<p>Figure 2 and Figure 3 depict the configurations of two channels in the FIR Filter Builder. In Channel A, a delay of 50 sampling periods is provided, and the filter coefficients exhibit a single peak located precisely in the center. This peak essentially represents a Delta function \u03b4[n-50]. Channel B accurately displays a digitized sinc function. The center of the sinc function is located between two FIR taps, resulting in the absence of a single peak value. This path delays the input signal by 50.5 samples. Figure 4 demonstrates the accurate realization of a 1\/2 sampling period delay between the two paths.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-19185 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-4.00.54-PM-1.png\" alt=\"A 1\/2 sampling period lag compared to Channel A (red) can be observed on Channel B (blue)\" width=\"812\" height=\"606\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-4.00.54-PM-1.png 812w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-4.00.54-PM-1-300x224.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-4.00.54-PM-1-768x573.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/07\/Screenshot-2024-07-26-at-4.00.54-PM-1-600x448.png 600w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 4: A 1\/2 sampling period lag compared to Channel A (red) can be observed on Channel B (blue).<\/p>\n<h3>Conclusion<\/h3>\n<p>The precise alignment of signals and the compensation of delays are important in various control and signal transmission applications. The utilization of the robust FIR Filter Builder enables highly accurate control over signal line delays. Additionally, FIR Filter Builder can be seamlessly combined with other instruments and custom <a href=\"https:\/\/liquidinstruments.com\/moku-cloud-compile\/\">Moku Cloud Compile<\/a> code within <a href=\"https:\/\/liquidinstruments.com\/multi-instrument-mode\/\">Multi-Instrument Mode<\/a> to ensure precise and accurate results even in complicated integrated testing environments.<\/p>\n<p style=\"font-weight: 400;\">To learn more about fractional delay generation, read the <a href=\"https:\/\/liquidinstruments.com\/blog\/2022\/04\/08\/precise-delay-generation-with-mokus-fir-filter-builder\/\" rel=\"noopener\">application note<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Analog signals can be precisely delayed by employing delay lines. In digital systems that are quantized in time, a delay of an integer number of samples can be implemented trivially but implementing fractional delays is more challenging. Fortunately, the advanced FIR Filter Builder developed by Liquid Instruments serves as a reliable and powerful tool for [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":40,"featured_media":14006,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[5],"tags":[223,222,226,93,224,225],"class_list":["post-15298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-notes","tag-finite-impulse-response-filter","tag-fir-filter","tag-fractional-delay","tag-mokugo","tag-sinc-filter","tag-sinc-function","site-category-fir-filter-builder","site-category-mokugo"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Fractional Delays with the FIR Filter Builder<\/title>\n<meta name=\"description\" content=\"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fractional delays with the FIR Filter Builder\" \/>\n<meta property=\"og:description\" content=\"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\" \/>\n<meta property=\"og:site_name\" content=\"Liquid Instruments\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LiquidInstruments\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-26T23:04:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T23:10:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1333\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"jpatterson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:site\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jpatterson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\"},\"author\":{\"name\":\"jpatterson\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\"},\"headline\":\"Fractional delays with the FIR Filter Builder\",\"datePublished\":\"2024-07-26T23:04:29+00:00\",\"dateModified\":\"2025-06-11T23:10:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\"},\"wordCount\":923,\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg\",\"keywords\":[\"Finite impulse response filter\",\"FIR filter\",\"fractional delay\",\"Moku:Go\",\"sinc filter\",\"sinc function\"],\"articleSection\":[\"Application notes\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\",\"url\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\",\"name\":\"Fractional Delays with the FIR Filter Builder\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg\",\"datePublished\":\"2024-07-26T23:04:29+00:00\",\"dateModified\":\"2025-06-11T23:10:40+00:00\",\"description\":\"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.\",\"breadcrumb\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage\",\"url\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg\",\"contentUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg\",\"width\":2000,\"height\":1333},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liquidinstruments.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fractional delays with the FIR Filter Builder\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liquidinstruments.com\/#website\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"name\":\"Liquid Instruments\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/liquidinstruments.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/liquidinstruments.com\/#organization\",\"name\":\"Liquid Instruments\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"width\":1000,\"height\":924,\"caption\":\"Liquid Instruments\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/LiquidInstruments\/\",\"https:\/\/x.com\/liquidinstrmnts\",\"https:\/\/www.instagram.com\/liquidinstruments\/\",\"https:\/\/www.linkedin.com\/company\/liquidinstruments\/\",\"https:\/\/www.youtube.com\/c\/LiquidInstruments\",\"https:\/\/vimeo.com\/liquidinstruments\"],\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"merchantReturnLink\":\"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\",\"name\":\"jpatterson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"caption\":\"jpatterson\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fractional Delays with the FIR Filter Builder","description":"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.","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":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/","og_locale":"en_US","og_type":"article","og_title":"Fractional delays with the FIR Filter Builder","og_description":"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.","og_url":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/","og_site_name":"Liquid Instruments","article_publisher":"https:\/\/www.facebook.com\/LiquidInstruments\/","article_published_time":"2024-07-26T23:04:29+00:00","article_modified_time":"2025-06-11T23:10:40+00:00","og_image":[{"width":2000,"height":1333,"url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg","type":"image\/jpeg"}],"author":"jpatterson","twitter_card":"summary_large_image","twitter_creator":"@liquidinstrmnts","twitter_site":"@liquidinstrmnts","twitter_misc":{"Written by":"jpatterson","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#article","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/"},"author":{"name":"jpatterson","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5"},"headline":"Fractional delays with the FIR Filter Builder","datePublished":"2024-07-26T23:04:29+00:00","dateModified":"2025-06-11T23:10:40+00:00","mainEntityOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/"},"wordCount":923,"publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg","keywords":["Finite impulse response filter","FIR filter","fractional delay","Moku:Go","sinc filter","sinc function"],"articleSection":["Application notes"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/","url":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/","name":"Fractional Delays with the FIR Filter Builder","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg","datePublished":"2024-07-26T23:04:29+00:00","dateModified":"2025-06-11T23:10:40+00:00","description":"Implement precise fractional delays with software-defined finite impulse response (FIR) filters with no additional software.","breadcrumb":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#primaryimage","url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg","contentUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2023\/07\/MokuProFIR.jpg","width":2000,"height":1333},{"@type":"BreadcrumbList","@id":"https:\/\/liquidinstruments.com\/application-notes\/digitally-implementing-fractional-delay-with-the-fir-filter-builder\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liquidinstruments.com\/"},{"@type":"ListItem","position":2,"name":"Fractional delays with the FIR Filter Builder"}]},{"@type":"WebSite","@id":"https:\/\/liquidinstruments.com\/#website","url":"https:\/\/liquidinstruments.com\/","name":"Liquid Instruments","description":"","publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/liquidinstruments.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/liquidinstruments.com\/#organization","name":"Liquid Instruments","url":"https:\/\/liquidinstruments.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","contentUrl":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","width":1000,"height":924,"caption":"Liquid Instruments"},"image":{"@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LiquidInstruments\/","https:\/\/x.com\/liquidinstrmnts","https:\/\/www.instagram.com\/liquidinstruments\/","https:\/\/www.linkedin.com\/company\/liquidinstruments\/","https:\/\/www.youtube.com\/c\/LiquidInstruments","https:\/\/vimeo.com\/liquidinstruments"],"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","merchantReturnLink":"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/"}},{"@type":"Person","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5","name":"jpatterson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","caption":"jpatterson"}}]}},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/15298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/comments?post=15298"}],"version-history":[{"count":4,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/15298\/revisions"}],"predecessor-version":[{"id":24338,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/15298\/revisions\/24338"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media\/14006"}],"wp:attachment":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media?parent=15298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/categories?post=15298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/tags?post=15298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}