article = "https://physicslibrary.org/encyclopedia/PeriodicFunctionsHarmonicsAndWhyFourierSeriesExist.html" article_alias = "FS01" article_id = 1517 julia_version = "1.10.12" reference_generator = "julia --startup-file=no --project=. harmonics-fourier-lab.jl" reference_method = "complex exponential finite sums using cispi; analytic orthogonality RMS and integer gcd periods; independent PCM WAV synthesis" browser_method = "real sine/cosine finite sums; vertical projections of complex harmonic vectors; D3 scales and Canvas2D" audio_method = "Web Audio PeriodicWave with cosine real and sine imaginary coefficients, disableNormalization=true; DC excluded; gain bounded by sum of harmonic amplitudes" renderer = "D3 7.9.0 and Lucide 0.468.0, bundled offline without runtime requests" scope = "finite synthesis and Fourier previews, not coefficient derivation or a general convergence theorem" phase_convention = "R_n cos(n omega_0 t - delta_n), A_n=R_n cos(delta_n), B_n=R_n sin(delta_n)" period = "T_0 / gcd(nonzero harmonic numbers); coefficients below amplitude 1e-10 treated as zero for period classification; constants have no smallest positive period" audio_limits = "user gesture required; sound initially off; volume up to 0.3 full scale divided by L1 harmonic-amplitude bound; components at or above 0.45 sampleRate omitted from sound only; visual clock slowed independently" wav = "48000 Hz, mono signed 16-bit little-endian PCM, 2 seconds, linear 25 ms start/end fades; Julia generated square-wave reference" reference_cases = 14 reference_samples = 1806 reference_csv_sha256 = "84c277c8c0575a7d52de94a56a6b9cd51e0092e2e1c9f355e1bb180e03facb20" coefficients_csv_sha256 = "38254541823dde9567b3522d2c7a5064712f1d0bfbda4ff4a98f61f3a2e1320a" julia_square_wav_sha256 = "6a8f8650328cfd1bd6e71f1510dab200b6387dfcc6de526efd85f58fdb5d51d8" harmonics_fourier_lab_jl_sha256 = "a68848747a71ef8c27417eb26a4226465cff4b6a8557875125fb112f0a213585" model_js_sha256 = "7663a680546d0513d1969ea8ec71336937b5fce652f0580f46ae76c88759058f" audio_js_sha256 = "08e982dbe8dab97cc696ddf0b75c381106e11f3a03d8f2d14308082494e30219" Manifest_toml_sha256 = "db6f41f5f03f102ae06a33a9bac6e57708033a3e297fec30b08da750224783c3" pnpm_lock_yaml_sha256 = "74cf4af8287380f3f5fbbfced59dfd65b15abb38783c36911d88893cf49b97f7" viewer_sha256 = "ddfb9f665a4e67de20596f9956e33a884ae4088a58f798e87502beb2b224c651"