{
  "$schema": "https://siliconverify.com/schemas/tool-v1.json",
  "slug": "signals",
  "title": "Signals & Spectrum Analyzer — FFT, THD, PSD",
  "category": "signal-processing",
  "category_label": "Signal processing",
  "urls": {
    "interactive": "https://siliconverify.com/signals.html",
    "static_sheet": "https://siliconverify.com/ref-signals.html",
    "api_doc": "https://siliconverify.com/api/signals.json",
    "blog_index": "https://siliconverify.com/llms-signalprocessing.txt"
  },
  "description": "The Signals & Spectrum Analyzer generates standard waveforms (sine, square, saw, triangle, chirp, PRBS) and computes their FFT, total harmonic distortion (THD), and power spectral density (PSD). Pick a window (Hann, Hamming, Blackman, Kaiser) and see how spectral leakage changes. The workbench is the canonical tool for \"is my signal actually clean?\" debugging: feed it any periodic signal and read off the harmonic content in dBc.",
  "keywords": [
    "signals and systems",
    "FFT",
    "spectrum analyzer",
    "THD",
    "PSD",
    "signal generator",
    "online"
  ],
  "pricing": {
    "class": "workbench-tool",
    "protocol": "x402",
    "network": "base",
    "currency": "USDC",
    "price_atomic": 1000,
    "price_usd": 0.001,
    "payTo": "0x97DAA5649Fd7Dfe3e46fCd9f75516e36E750eed7",
    "static_sheet_price_atomic": 1000,
    "export_price_atomic": 5000
  },
  "content": {
    "formulas": [
      "FFT: X[k] = Σ_{n=0}^{N-1} x[n]·e^{−j·2π·k·n/N}",
      "PSD (Welch): S(f) = (1/M)·Σ |FFT{windowed segment}|²",
      "THD = √(Σ P_harmonic) / P_fundamental (typically in dB or %)",
      "THD+N = √(Σ P_harmonic + P_noise) / P_fundamental",
      "SFDR = 10·log₁₀(P_fundamental / max(P_spur)) (spurious-free dynamic range)",
      "Window scalloping loss: Hann = 1.5 dB, Hamming = 1.4 dB, Blackman = 2.3 dB, Rectangular = 0 dB (but most leakage)"
    ],
    "citations": [
      "Oppenheim, A. V., Schafer, R. W., \"Discrete-Time Signal Processing,\" 3rd ed., Pearson, 2010.",
      "Harris, F. J., \"On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform,\" Proc. IEEE, 1978."
    ],
    "faq": [
      {
        "q": "Why does my FFT show 60 Hz spur when the input is 1 kHz?",
        "a": "Mains pickup (50/60 Hz). The workbench does not remove it; you need a differential probe, a notch filter, or a battery-powered test setup."
      },
      {
        "q": "Rectangular vs Hann window — which to use?",
        "a": "Rectangular: best frequency resolution, worst leakage (use for transients with no leakage). Hann: best general-purpose (use for periodic signals). Blackman: best dynamic range (use when weak tones matter)."
      }
    ]
  },
  "accessibility": {
    "crawlable": true,
    "javascript_required": true,
    "static_alternative": "/ref-signals.html",
    "structured_data": [
      "TechArticle",
      "SoftwareApplication",
      "FAQPage",
      "BreadcrumbList"
    ]
  },
  "x402_challenge_example": {
    "request": "curl -A 'GPTBot/1.0' -i https://siliconverify.com/signals.html",
    "response_headers": [
      "HTTP/1.1 402 Payment Required",
      "X-Siliconverify-Resource-Class: workbench-tool",
      "X-Siliconverify-Price-Atomic: 1000",
      "X-Siliconverify-Price-USD: 0.001"
    ],
    "response_body": "{\n  \"x402Version\": 1,\n  \"accepts\": [\n    {\n      \"scheme\": \"exact\",\n      \"network\": \"base\",\n      \"maxAmountRequired\": \"1000\",\n      \"resource\": \"https://siliconverify.com/signals.html\",\n      \"description\": \"SiliconVerify workbench tool — interactive browser-based engineering calculator. Client-side computation, no server cost.\",\n      \"mimeType\": \"text/html\",\n      \"payTo\": \"0x97DAA5649Fd7Dfe3e46fCd9f75516e36E750eed7\",\n      \"validAfter\": 1783274656,\n      \"validBefore\": 1783274956\n    }\n  ]\n}",
    "paid_request": "curl -A 'GPTBot/1.0' -H 'X-PAYMENT: 0x<txhash>' -i https://siliconverify.com/signals.html"
  },
  "last_updated": "2026-07-05"
}