A port of the sfxr sound effect synthesizer to Lua
Go to file
2014-05-26 13:53:50 +02:00
loveframes@a02fafd902 Added LoveFrames as a submodule so I can start to build a fancy GUI as a demo 2014-05-12 14:24:04 +02:00
.gitmodules Added LoveFrames as a submodule so I can start to build a fancy GUI as a demo 2014-05-12 14:24:04 +02:00
LICENSE Initial commit 2014-04-11 10:31:10 -07:00
README.md Added two issues 2014-05-26 12:56:54 +02:00
sfxr.lua Don't reset volume at Sound.resetParameters(); Reset the parameters before Sound.randomize() 2014-05-26 13:53:50 +02:00

sfxr.lua

A port of the sfxr sound effect synthesizer to pure Lua, designed to be used together with the awesome Löve2D game framework.

Example usage

These examples should play a randomly generated sound.

With Löve2D 0.9:

local sfxr = require("sfxr")

function love.load()
    local sound = sfxr.newSound()
    sound:randomize()
    love.audio.newSource(sound:generateSoundData()):play()
end

With lao:

require("ao")
local sfxr = require("sfxr")

local driverId = ao.defaultDriverId()
local device = ao.openLive(driverId, {bits = 16, rate = 44100, channels = 1})

local sound = sfxr.newSound()
sound:randomize()

local buffer = sound:generateString()
device:play(buffer, #buffer)

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.
  • Sometimes (sometimes!) the generator yields nil, which causes setSample to fail.
  • ? Sound.repeatSpeed, Sound.waveType and Sound.frequency.deltaSlide should be lowercased instead of camelcased.
  • ? Everything seems to be pitched slightly higher than at the original (floating point error?)