GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - scijs/periodic-function: List of periodic functions normalized to 0..1 range

BranchesTags
Open more actions menu

Latest commit

 

History

49 Commits
49 Commits

Folders and files

NameName
Last commit message
Last commit date
img
img
 
 
.eslintrc.json
.eslintrc.json
 
 
.gitignore
.gitignore
 
 
.npmignore
.npmignore
 
 
.travis.yml
.travis.yml
 
 
clausen.js
clausen.js
 
 
cosine.js
cosine.js
 
 
fourier.js
fourier.js
 
 
generate-plots.js
generate-plots.js
 
 
index.js
index.js
 
 
interpolate.js
interpolate.js
 
 
noise.js
noise.js
 
 
package.json
package.json
 
 
pulse.js
pulse.js
 
 
readme.md
readme.md
 
 
sawtooth.js
sawtooth.js
 
 
sine.js
sine.js
 
 
square.js
square.js
 
 
step.js
step.js
 
 
test.js
test.js
 
 
trapezoid.js
trapezoid.js
 
 
triangle.js
triangle.js
 
 
wavetable.js
wavetable.js
 
 

Repository files navigation

periodic-function

Periodic waveform functions. Phase t is normalized to [0, 1] — one full turn.

npm install periodic-function
import { sine, square, wavetable } from 'periodic-function'

sine(0.25)          // 1  (peak)
square(0.75)        // -1 (low)
wavetable(null, [0, 1, 0, 0.5])  // Float32Array wavetable from Fourier coefficients

API

All functions take phase t ∈ [0, 1] as first argument. Values outside [0, 1] wrap correctly.

Function Description
Waveforms
sine sine(t, phase=0) Sine wave. phase=0.25 gives cosine.
cosine cosine(t, phase=0) Cosine wave. Equivalent to sine(t, 0.25).
sawtooth sawtooth(t) Descending ramp: 1 at t=0, −1 approaching t=1. For ascending ramp use triangle(t, 0).
square square(t, duty=0.5) Square wave. duty = fraction of period spent high.
triangle triangle(t, ratio=0.5) Triangle wave. ratio = peak position (0 = ascending ramp, 1 = descending ramp).
trapezoid trapezoid(t, p1=0.25, p2=0.5, p3=0.75) Trapezoid wave. Rise ends at p1, fall starts at p2, fall ends at p3. Generalizes square and triangle.
pulse pulse(t, width=0) Dirac-like pulse: 1 at t=0, 0 elsewhere. width extends the high region.
clausen clausen(t, harmonics=10) Clausen function: Σ sin(kθ)/k².
noise noise(t) Periodic noise — repeating random buffer.
Fourier / Wavetable
fourier fourier(t, real, imag) Evaluate one sample from Fourier coefficients. real[k] and imag[k] are cosine/sine amplitudes for harmonic k. Index 0 is DC, 1 is fundamental.
wavetable wavetable(real, imag, {size=8192, normalize=true}) Build a Float32Array wavetable from Fourier coefficients. Used for AudioContext.createPeriodicWave.
Lookup
interpolate interpolate(t, samples) Linearly interpolate between samples, treating them as one period.
step step(t, samples) Step lookup — nearest sample, no interpolation.

Examples

// Cosine as a phase-shifted sine
sine(0, 0.25)     // 1  (same as cosine(0))

// Square wave with 10% duty cycle
square(0.05, 0.1) // 1
square(0.15, 0.1) // -1

// Triangle with peak at 0.25 (asymmetric)
triangle(0.25, 0.25) // -1  (valley, since peak is at t=0)

// Trapezoid as a square with soft edges
trapezoid(t, 0.05, 0.5, 0.55)

// Fourier series: pure sine
fourier(0.25, null, [0, 1])  // 1

// Wavetable for Web Audio API PeriodicWave
const real = new Float32Array(64)
const imag = new Float32Array(64)
for (let k = 1; k < 64; k += 2) imag[k] = 4 / (Math.PI * k)  // square wave
const table = wavetable(real, imag)  // Float32Array[8192], normalized to ±1

Related

  • web-audio-api — uses wavetable() for PeriodicWave
  • MDN: createPeriodicWave
  • List of periodic functions

License

MIT © Dmitry Iv

ॐ

About

List of periodic functions normalized to 0..1 range

Resources

Readme
Activity
Custom properties

Stars

58 stars

Watchers

2 watching

Forks

4 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.