2014-04-11 18:16:20 +00:00
|
|
|
sfxr.lua
|
|
|
|
========
|
2014-04-11 17:31:10 +00:00
|
|
|
|
2014-05-24 13:32:13 +00:00
|
|
|
A port of the sfxr sound effect synthesizer to pure Lua, designed to be used
|
2014-04-11 18:16:20 +00:00
|
|
|
together with the *awesome* Löve2D game framework.
|
|
|
|
|
|
|
|
|
|
|
|
Example usage
|
|
|
|
-------------
|
|
|
|
|
|
|
|
These examples should play a randomly generated sound.
|
|
|
|
|
2014-05-25 21:26:49 +00:00
|
|
|
With [Löve2D](http://love2d.org) 0.9:
|
2014-04-11 18:16:20 +00:00
|
|
|
```lua
|
|
|
|
local sfxr = require("sfxr")
|
|
|
|
|
|
|
|
function love.load()
|
2014-05-07 14:58:37 +00:00
|
|
|
local sound = sfxr.newSound()
|
2014-04-11 18:16:20 +00:00
|
|
|
sound:randomize()
|
|
|
|
love.audio.newSource(sound:generateSoundData()):play()
|
|
|
|
end
|
|
|
|
```
|
|
|
|
|
2014-05-25 21:26:49 +00:00
|
|
|
With [lao](https://github.com/TheLinx/lao):
|
2014-04-11 18:16:20 +00:00
|
|
|
```lua
|
|
|
|
require("ao")
|
|
|
|
local sfxr = require("sfxr")
|
|
|
|
|
|
|
|
local driverId = ao.defaultDriverId()
|
|
|
|
local device = ao.openLive(driverId, {bits = 16, rate = 44100, channels = 1})
|
|
|
|
|
2014-05-07 14:58:37 +00:00
|
|
|
local sound = sfxr.newSound()
|
2014-04-11 18:16:20 +00:00
|
|
|
sound:randomize()
|
|
|
|
|
|
|
|
local buffer = sound:generateString()
|
|
|
|
device:play(buffer, #buffer)
|
|
|
|
```
|
2014-05-25 21:26:49 +00:00
|
|
|
|
|
|
|
Known Issues
|
|
|
|
------------
|
|
|
|
|
|
|
|
Issues marked with an exclamation mark should be prioritized to be fixed before
|
|
|
|
adding any more complicated features. These marked with a question mark either
|
|
|
|
are of less priority or it is unknown if they should be handled as a bug.
|
|
|
|
|
|
|
|
- ! The sine wave sound distorts when played with a frequency lower than 0.33.
|
|
|
|
- ! The phaser offset has no audible effect, the phaser sweep however has.
|
|
|
|
- ! The Lowpass and Highpass filters sounds distorted.
|
|
|
|
- ! Changing is broken when the amount is < 0.
|
2014-05-26 10:56:54 +00:00
|
|
|
- Sometimes (sometimes!) the generator yields nil, which causes setSample to fail.
|
|
|
|
- ? Everything seems to be pitched slightly higher than at the original (floating point error?)
|