Skip to content

PJDude/sas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

212 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Audio Sweeper

A handy tool for DIY audio projects and all kinds of sound experiments

Features

  • Automatic and manual sweeping of the audio frequency spectrum to determine the system's frequency response
  • Easy generation of any specific sound frequency to test audio equipment or identify unwanted resonances
  • Live FFT graph with selectable FFT size, window functions, and post-processing stages
  • Input and output device selection
  • 8 separate spectrum buffers for result comparison
  • Export of results to PNG or CSV files
  • Portable
  • Dark and light themes
  • Automatic frequency peak detection

Simple Audio Sweeper uses the following libraries:

image info image info

Configuration / First Use

  • Make sure the microphone and speakers are connected and enabled in the system.
  • Select an API. The same physical hardware is often available through different APIs. If available, start with the recommended API:
    • Windows — WASAPI or WDM-KS
    • Linux — ALSA
  • Select the Output and Input devices. The default device is marked with an asterisk (*) in the device selection dropdown tooltip. The default device may not always be the best choice and may not work correctly in all cases.
  • Click and hold the left mouse button on the graph. Sound should be generated by the speakers and captured by the microphone. Be mindful of the volume levels set in the system mixer and hardware.
  • Enable debug information (F11) to monitor key parameters, especially latency.
    • Latency and block size are the key factors for the responsiveness of signal generation (Output) and analysis (Input).
    • The Latency parameter in the "Audio Interface" section is the value passed directly to the SoundDevice API. The latency shown in the debug panel is an estimated time value that results from multiple compounding factors.
    • Lower values may, in theory, improve responsiveness but can result in sound distortion and incorrect analysis results.
    • Adjust the values to achieve the lowest latency while maintaining clean sound. A measured latency in the range of 0.01s–0.03s is ideal for modern hardware.Values around 0.1s are considered laggy.

Usage

The microphone and speakers must be connected and configured. Audio from the speakers must be captured by the microphone.

With the mouse cursor on the frequency graph:

  • Hold down the left mouse button to generate a specific frequency
  • Right-click to lock the frequency
  • Use the scroll wheel or arrow keys to adjust the locked frequency
  • Start a frequency sweep using the action icon at the bottom

With keyboard:

Key Action
H Show help
Backspace Clear console
F12 Toggle settings
F11 Toggle debug info
1–8 Toggle the visibility of the corresponding spectrum buffer (track)
Ctrl Enable recording into the selected buffer (track)
F Toggle FFT
F1 / F2 About / License
L / D Light / Dark theme
V Toggle VSync
P Toggle peak detection
S / C Save screenshot / CSV
Arrow keys Adjust the locked frequency
F3 / Shift+F3 Cycle FFT size
F4 / Shift+F4 Cycle FFT window function
F5 / Shift+F5 / Ctrl+F5 Cycle values / Toggle FFT Frequency Band Averaging (FBA)
F6 / Shift+F6 / Ctrl+F6 Cycle values / Toggle FFT Smoothing
F7 / Shift+F7 / Ctrl+F7 Cycle values / Toggle FFT Time Domain Averaging (TDA)
space pause

⚠️ Due to latency in the sound generation, propagation, capture, and analysis chain, manually recording the spectrum with rapid mouse movements can produce inaccurate, "lagged" results depending on the direction of movement. Accurate measurements require slow, manual frequency adjustments or the use of the automatic sweep, which is designed to operate at a controlled, steady pace.

Troubleshooting

FFT chart is enabled but flat

  • Check if a microphone or other input source is connected and selected. The Input icon should turn green when active.

The sound is choppy and distorted

  • Enable debug information and verify that the OUT and IN sample rates match the selected devices' output and input sample rates. If they do not match, try:
    • Disabling VSync
    • Increasing the latency and block size of the devices
    • Reducing the number of active FFT processing stages or disabling it entirely

CPU consumption is high

  • VSync is disabled by default and the application refreshes the GUI as fast as possible. Enabling VSync will reduce CPU load in most cases, at the cost of a slight increase in latency.
  • The FFT size may be too large. Reducing the FFT size decreases the number of calculations, while enabling FBA (Frequency Bin Aggregation) reduces the number of GUI objects to render.

Any other problems

  • Try reinitializing the device or the entire audio interface.
  • Close other applications that may be using the audio device.
  • Delete the configuration files from the data folder and restart the application.
  • Report a bug. It is impossible to predict all possible hardware and software configurations. Please open an issue on GitHub and share logs and screenshots to help diagnose the problem.

Ensure silence during analysis — only the sound emitted by the speakers should be recorded. The resulting characteristics will reflect the combined response of the microphone, speakers, and all other components in the audio path. For example, when analyzing an amplifier with speakers, the microphone's frequency response should be more accurate than that of the speakers being measured.

Download

Portable executable packages for Linux and Windows can be downloaded from the Releases.

Supported platforms:

  • Linux
  • Windows (10,11)

Licensing

False positives issue

Reference to potential problems with Windows Defender and other antivirus programs.

$~$

Check out my homepage for other projects!

Packages

 
 
 

Contributors

Languages