Skip to content

KilledByAPixel/ZzFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ZzFX - Zuper Zmall Zound Zynth

NPM Package Build Size NPM Downloads DeepScan

ZzFX is a tiny sound generator designed to produce a wide variety of sound effects with minimal code overhead. It's perfect for games, prototypes, and any web application that needs sound without the bulk of traditional sound files.

ZzFX Image

๐ŸŒŸ Features

  • Compact: Less than 1 kilobyte when compressed!
  • Versatile: 20 controllable parameters for diverse sound effects.
  • No Dependencies: Standalone with no external libraries.
  • Cross-Browser: Compatible with nearly all web browsers.
  • Open Source: MIT licensed, use it anywhere!

๐Ÿ”Š Why Use ZzFX?

  • Code-Driven Sound: Add or change sound effects with just one line of code.
  • Lightweight: No sound asset files mean faster download times.
  • Prototyping: Ideal for placeholder sound effects.
  • Game Jams: Minimal overhead for size-limited competitions like JS13K.
  • Not Just for Games: Enhance any website with sound.

๐Ÿš€ How to Use

  • Download from github or use npm install zzfx
  • Import ZZFX as a module with using import {ZZFX, zzfx} from './ZzFX.js'
  • Or paste the code from ZzFXMicro.min.js
  • To play a sound just call zzfx(), something like zzfx(...[,,,,.1,,,,9])
  • Use the ZzFX sound designer web app to craft new sounds.

Sample sounds...

zzfx(...[,,925,.04,.3,.6,1,.3,,6.27,-184,.09,.17]); // Game Over
zzfx(...[,,537,.02,.02,.22,1,1.59,-6.98,4.97]); // Heart
zzfx(...[1.5,.8,270,,.1,,1,1.5,,,,,,,,.1,.01]); // Piano
zzfx(...[,,129,.01,,.15,,,,,,,,5]); // Drum

๐ŸŽถ ZzFX Music

๐Ÿ› ๏ธ ZzFX UI Features

  • Random Sound Generation: Create sounds from presets.
  • Sound Management: Auto-save, rename, and favorite sounds.
  • Sound Visualization: View sound wave images on playback.
  • Sharing: Load sounds via pasted zzfx code.
  • Export/Import: Drag-and-drop support for sound lists.
  • Offline Playback: Save sounds as .wav files.

๐Ÿ–ฅ๏ธ ZzFX Micro Code

Here's all the code you need to play ZzFX sounds with JavaScript!

// ZzFXMicro - Zuper Zmall Zound Zynth - v1.2.1 by Frank Force ~ 880 bytes
zzfxV=.3    // volume
zzfx=       // play sound
(p=1,k=.05,b=220,e=0,r=0,t=.1,q=0,D=1,u=0,y=0,v=0,z=0,l=0,E=0,A=0,F=0,c=0,w=1,m=
0,B=0,M=Math,R=44100,d=2*M.PI,G=u*=500*d/R/R,C=b*=(1-k+2*k*M.random(k=[]))*d/R,g
=0,H=0,a=0,n=1,I=0,J=0,f=0,x,h)=>{e=R*e+9;m*=R;r*=R;t*=R;c*=R;y*=500*d/R**3;A*=d
/R;v*=d/R;z*=R;l=R*l|0;for(h=e+m+r+t+c|0;a<h;k[a++]=f)++J%(100*F|0)||(f=q?1<q?2<
q?3<q?M.sin((g%d)**3):M.max(M.min(M.tan(g),1),-1):1-(2*g/d%2+2)%2:1-4*M.abs(M.
round(g/d)-g/d):M.sin(g),f=(l?1-B+B*M.sin(d*a/l):1)*(0<f?1:-1)*M.abs(f)**D*zzfxV
*p*(a<e?a/e:a<e+m?1-(a-e)/m*(1-w):a<e+m+r?w:a<h-c?(h-a-c)/t*w:0),f=c?f/2+(c>a?0:
(a<h-c?1:(h-a)/c)*k[a-c|0]/2):f),x=(b+=u+=y)*M.cos(A*H++),g+=x-x*E*(1-1E9*(M.sin
(a)+1)%2),n&&++n>z&&(b+=v,C+=v,n=0),!l||++I%l||(b=C,u=G,n=n||1);p=zzfxX.
createBuffer(1,h,R);p.getChannelData(0).set(k);b=zzfxX.createBufferSource();b.
buffer=p;b.connect(zzfxX.destination);b.start();return b};zzfxX=new AudioContext

๐ŸŽฎ Games Using ZzFX

Space Huggers / Packabunchas / Galaxy Rider / The Adventures of Captain Callisto / Welcome to Space / Bogus Roads / NoteCraft / The Wandering Wraith / Bounce Back / Hue Jumper / Bubba's Back Room / Backstabber Hero / Spendotron: 2019 / Dioretsa / Back 2 Back / Quick Wins / Back Relax / Back To The Island / Backspace It / Back To The Stars / Can't Get Back / Letchworth Village / Noegnud / Sausage Redemption / Marshmallow Sky / Big Champ / I want to google the game / Edge Not Found / Stolen Sword / Highway 404 / The Last Spartan / OS13k / Crab Story / Cooking for Skully / Egg Time Rewind / Charon Jr. / 13 / Soul Surf / Dead Again / Trench Fisher / Path to Glory / Merlin vs Alfonso / Casual Crusade

ZzFX Image