Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chr15m/jsfxr
JavaScript sound effects generator.
https://github.com/chr15m/jsfxr
8-bit 8bit audio game-development javascript library music retro sound sound-effects
Last synced: 7 days ago
JSON representation
JavaScript sound effects generator.
- Host: GitHub
- URL: https://github.com/chr15m/jsfxr
- Owner: chr15m
- License: unlicense
- Fork: true (grumdrig/jsfxr)
- Created: 2015-07-27T12:45:55.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-05-04T07:15:03.000Z (over 1 year ago)
- Last Synced: 2024-10-02T07:39:49.950Z (about 1 month ago)
- Topics: 8-bit, 8bit, audio, game-development, javascript, library, music, retro, sound, sound-effects
- Language: JavaScript
- Homepage: http://sfxr.me
- Size: 608 KB
- Stars: 271
- Watchers: 6
- Forks: 25
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Quick 'n' easy game sound effects generator.
App 👉 https://sfxr.me
[About](#about) | [Use as a library](#library) | [Jsfxr Pro](#jsfxr-pro)
# About
A port of [sfxr](http://www.drpetter.se/project_sfxr.html) to HTML5 by Eric Fredricksen.
Maintained by Chris McCormick.![jsfxr screenshot](screenshot.png)
# Library
You can use the jsxfr library to generate and play sounds in your JavaScript game code.
## Node
Install it:
```
npm i jsfxr
```Require it:
```
const sfxr = require("jsfxr").sfxr;
```See [API](#API) below for usage examples.
## Browser
Include the scripts in your page:
```
```
You can then directly use the `sfxr` namespace without requiring it.
## API
Generate a sound effect using a preset algorithm and play it using webaudio API.
```javascript
const sfxr = require("jsfxr").sfxr;const preset = "pickupCoin";
const sound = sfxr.generate(preset);sfxr.play(sound);
```Available presets are `pickupCoin`, `laserShoot`, `explosion`, `powerUp`, `hitHurt`, `jump`, `blipSelect`, `synth`, `tone`, `click`, and `random`.
You can also use the interface at https://sfxr.me to find the sound you want and then use the sound definition.
Click the "serialize" button and copy the JSON code for the sound you want.
You will get a datastructure that you can use like this:```javascript
var sound = {
"oldParams": true,
"wave_type": 1,
"p_env_attack": 0,
"p_env_sustain": 0.31718502829007483,
"p_env_punch": 0,
"p_env_decay": 0.2718540993592685,
"p_base_freq": 0.26126191208337196,
"p_freq_limit": 0,
"p_freq_ramp": 0.43787689856926615,
"p_freq_dramp": 0,
"p_vib_strength": 0,
"p_vib_speed": 0,
"p_arp_mod": 0,
"p_arp_speed": 0,
"p_duty": 1,
"p_duty_ramp": 0,
"p_repeat_speed": 0.7558565452384385,
"p_pha_offset": 0,
"p_pha_ramp": 0,
"p_lpf_freq": 1,
"p_lpf_ramp": 0,
"p_lpf_resonance": 0,
"p_hpf_freq": 0,
"p_hpf_ramp": 0,
"sound_vol": 0.25,
"sample_rate": 44100,
"sample_size": 8
};var a = sfxr.toAudio(sound);
a.play();
```You can also use the short URL compressed version of the sound:
```javascript
var a = sfxr.toAudio("5EoyNVSymuxD8s7HP1ixqdaCn5uVGEgwQ3kJBR7bSoApFQzm7E4zZPW2EcXm3jmNdTtTPeDuvwjY8z4exqaXz3NGBHRKBx3igYfBBMRBxDALhBSvzkF6VE2Pv");
a.play();
```You can also access an array of samples.
By default the buffer contains audio rendered at a sample rate of `44100`.```
var buffer = sfxr.toBuffer(sound);
console.log(buffer);
```Additionally you can get a dataURI for a wav file of the sound:
```
var a = sfxr.toWave(sound);
console.log(a.dataURI);
```You can convert between the base58 short-url encoded format and JSON using `b58encode` and `b58decode`:
```
var b58string = sfxr.b58encode(sound);
var sound = sfxr.b58decode(b58string);
```You can also access the lower level classes `SoundEffect` and `Params` if you need to.
This can be useful for caching the internal representation for efficiency, or mutating the sound with `params.mutate()`.# Jsfxr Pro
A [Pro version of Jsfxr](https://pro.sfxr.me/) is available with enhanced features like the ability to save sounds to packs and download a zip file of all wavs.
[![Jsfxr Pro Screenshot](./jsfxr-pro-screenshot.png)](https://pro.sfxr.me)
# Links
* Application: http://sfxr.me/
* Source code: https://github.com/chr15m/jsfxr/# Thanks
* Dr. Petter for inventing sfxr.
* Eric Fredricksen for creating this port.
* riffwave.js: http://www.codebase.es/riffwave/
* jquery-ui: http://jqueryui.com/