Mimir/research/sonar-dsp-recursive-refinement-2026-05-25/mirrors/opentds.html
2026-05-25 01:01:49 +01:00

136 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.5.0 -->
<title>OpenTDS | An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry</title>
<meta name="generator" content="Jekyll v3.8.5" />
<meta property="og:title" content="OpenTDS" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry" />
<meta property="og:description" content="An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry" />
<link rel="canonical" href="https://syarusinsky.github.io/OpenTDS/" />
<meta property="og:url" content="https://syarusinsky.github.io/OpenTDS/" />
<meta property="og:site_name" content="OpenTDS" />
<script type="application/ld+json">
{"@type":"WebSite","url":"https://syarusinsky.github.io/OpenTDS/","headline":"OpenTDS","name":"OpenTDS","description":"An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry","@context":"http://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/OpenTDS/assets/css/style.css?v=3afa7e4fc89c8f25df666c58abed0e7ddcf5b243">
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1><a href="https://syarusinsky.github.io/OpenTDS/">OpenTDS</a></h1>
<p>An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry</p>
<p class="view"><a href="https://github.com/syarusinsky/OpenTDS">View the Project on GitHub <small>syarusinsky/OpenTDS</small></a></p>
</header>
<section>
<h1 id="opentds">OpenTDS</h1>
<p>An Open Source Alternative to Generating Frequency Response and Time Response Graphs by Time Delay Spectrometry</p>
<p>This project was designed as an Open Source alternative to Gold Line’s TEF system and other similar (expensive) software and hardware bundles. These systems use Time Delay Spectrometry to achieve frequency response measurements of loudspeakers, rooms, audio circuits, and many other minimal-phase systems without the need of an anechoic chamber. This project benefits from being capable of taking measurements using any modern consumer-grade audio interface, while TEF and other systems require you to purchase their proprietray hardware. The goal of this project is to provide hobbyist and professional acousticians and audio engineers with a means to measure frequency response and time response without the need to purchase any additional hardware or software.</p>
<h2 id="current-status">Current Status</h2>
<p>Currently, the program is capable of producing reliable frequency response graphs comparable to Goldline’s TEF system and other TDS based systems. However, the accuracy of the results are currently dependant on the user’s ability to correctly measure the microphone’s distance from the loudspeaker and the temperature of the room (ie: correctly measure the time-of-flight from loudspeaker to microphone). In future versions of the program, calculation of the time-of-flight will instead be measured by the user using the Time Response Graphing Module. This module, along with the Phase Response Module, will be among the landmark goals of the project.</p>
<h3 id="landmark-goals">Landmark Goals</h3>
<ul>
<li>Time Response Module</li>
<li>Phase Response Module</li>
<li>Improved TDS Functionality
<ul>
<li>Improved BandPass Filtering (A Custom IIR Filter Class)</li>
<li>Improved Amplitude Calculation (Algorithmically-Selected FFT-Bin-Based Magnitude Instead of Block-Based Magnitude Averages)</li>
<li>dB Referencing (Capability to Calibrate the System to Reference Pressure Levels. ie: 20uPa for dBSPL)</li>
</ul>
</li>
<li>Increased Driver Support (ASIO currently fully supported)</li>
</ul>
<h2 id="juce">JUCE</h2>
<p>This project was written using the <a href="https://juce.com/">JUCE framework</a> which provides excellent cross-platform support.</p>
<h2 id="license">License</h2>
<p>This project is licensed under the GNU General Public License v3.0 - see the <a href="LICENSE.md">LICENSE.md</a> file for details.</p>
<h2 id="authors">Authors</h2>
<p>Stevey Yarusinsky - Initial Work</p>
<h2 id="acknowledgements">Acknowledgements</h2>
<p>Richard C. Heyser - For his work developing the method of Time Delay Spectrometry. An anthology of his published works (“Time Delay Spectrometry: An Anthology of the Works of Richard C. Heyser on Measurement Analysis and Perception”) was an invaluable asset in developing this project.</p>
<h2 id="documentation">Documentation</h2>
<h3 id="tds-background-information-and-concepts">TDS Background Information and Concepts</h3>
<p>In traditional swept signal analysis, a sinusoidal waveform is sent to a device-under-test (DUT) and the resulting magnitude and phase changes on the output of the DUT are plotted on a graph for each frequency under consideration. The plotted magnitudes are the <em>Frequency Response</em> of the graph. Often included are the plotted phases (or <em>Phase Response</em>) which are often plotted on the same graph usually in a different color.</p>
<p>Frequency response is critical to achieving the required performance of many systems such as loudspeakers. However, loudspeakers cannot be accurately measured with traditional swept signal analysis unless measurement is performed in an anechoic chamber. An anechoic chamber is a room designed to be completely acoustically absorptive which eliminates the possiblity of sound being reflected on any surfaces of the room. In this chamber a loudspeaker can be measured by inputting sinusoidal waves and measuring the magnitude and phase changes with a calibrated reference microphone, though most professionals and hobbyists do not have access to an anechoic chamber. In a normal room the waves generated by the speaker would reflect off of the surfaces of the room and eventually reach the microphone, skewing the measurement results considerably. <em>Time Delay Spectrometry</em> was designed to solve this problem.</p>
<p>Time Delay Spectrometry introduces a variable-bandwidth band-pass filter capable of both tracking the frequency of a paired oscillator and delaying that oscillator to compensate for the time-of-flight. This process filters out any reflections generated by the conditions of the space where measurement is taking place. The concepts are difficult to grasp initially so a procedural description is helpful.</p>
<ul>
<li>First, a sweeping oscillator generating a sinusoidal waveform is sent to the loudspeaker.</li>
<li>The sound waves generated by the loudspeaker propagate and reflect off of surfaces in the measurement space</li>
<li>The direct sound reaches the microphone first followed later by the reflected sound.</li>
<li>These sounds are recorded by the software then processed with the band pass filter, which is sweeping its cutoff frequency with a paired oscillator.</li>
<li>The reflections take more time to reach the microphone and therefore are lower frequency than the direct sound.</li>
<li>Since the reflections are lower frequency than the direct sound they are filtered out by the band pass filter whose cutoff frequency is equivalent to the paired oscillator, leaving only the direct sound in the signal.</li>
<li>This signal is then processed to determine its amplitude and phase information.</li>
<li>That information is then plotted as a frequency response graph.</li>
</ul>
<p>It is also important to note that the paired oscillator is actually a slightly lower frequency than the oscillator being fed into the loudspeaker due to the delay placed on the paired oscillator. This is necessary to compensate for the amount of time required for the direct sound to reach the microphone. Figure 1a. and Figure 1b. should help visualize the TDS process.</p>
<p>Figure 1a. Block Diagram of TDS
<img src="TDS_Block_Diagram.png?raw=true" alt="Block Diagram of TDS" title="TDS Block Diagram" /></p>
<p>Figure 1b. TDS Geometry Example
<img src="TDS_Geometry_Example.png?raw=true" alt="TDS Geometry Example" title="TDS Geometry Example" /></p>
<h3 id="delay-in-tds">Delay in TDS</h3>
<p>Since the direct sound is the desired component, the accuracy of the frequency response measurements is determined by the delay placed on the sweeping of the tracking band pass filter. This is known as the <em>time-of-flight</em>. In an ideal analog system, this would simply be the time it takes for the sound to travel from the speaker to the microphone. However, this TDS program was designed to be used with any consumer grade audio interface and nearly all modern systems utilize digital audio concepts. Most notably, these systems use input and output <em>audio buffers</em> to lighten the CPU load. These buffers introduce a <em>latency</em>, or delay, into the signal path. While this delay is usually negligible for recording and playback purposes, it is catastrophic for the accuracy of TDS frequency response measurements. In addition, each audio interface will have its own unique latency. In order to be absolutely sure that any latency from any system is accounted for in our <em>time-of-flight</em>, OpenTDS allows the user to calibrate latency before taking measurements. The user must plug the output of their system into the input and click the calibrate latency button. After this is operation is performed the user can continue taking measurements until the program is terminated. The next time the program is opened, the user must calibrate the latency again before taking measurements.</p>
<h3 id="frequency-response-comparison">Frequency Response Comparison</h3>
<p>Speaker (QSC K8) Frequency Response at 1 ft away with TEF25 (Graph is Smoothed by the TEF Software)
<img src="TEFComparisonSpeakerTrial1_3.PNG?raw=true" alt="Speaker (QSC K8) Frequency Response at 1 ft away with TEF25" title="Speaker (QSC K8) Frequency Response at 1 ft away with TEF25" />
Speaker (QSC K8) Frequency Response at 1 ft away with OpenTDS and Akai EIE Pro audio interface
<img src="TEFComparisonSpeakerTrial1_4.png?raw=true" alt="Speaker (QSC K8) Frequency Response at 1 ft away with OpenTDS and Akai EIE Pro audio interface" title="Speaker (QSC K8) Frequency Response at 1 ft away with OpenTDS and Akai EIE Pro audio interface" /></p>
<p>Video Tutorials coming soon . . .</p>
</section>
<footer>
<p>This project is maintained by <a href="https://github.com/syarusinsky">syarusinsky</a></p>
<p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<script src="/OpenTDS/assets/js/scale.fix.js"></script>
</body>
</html>