In preparation for the next Ludum Dare, I have finished adding all advanced sound synthesis features first introduced by BFXR to usfxr, my own Unity port of the SFXR game audio synthesis engine. The new version is 1.2 and is available as a zip download on the GitHub usfxr repository (the asset store version will be updated later this week).
(If you don’t know what usfxr or SFXR is, this post is less cryptic)
At first, I wasn’t so sure I’d like to add the BFXR features to my port; I have to confess I always saw BFXR as a rogue fork of SFXR, and the fact that parameter strings were incompatible between the two projects always rubbed me the wrong way. However, after testing BFXR for a while, I came to really like its original features, and decided to adopt them in usfxr. This is what this update is about.
The new features are as such (as described by BFXR’s interface):
- New wave form types
- Triangle: robust at all frequencies, stand out quite well in most situations, and have a clear, resonant quality
- Breaker: a little bit more hi-fiwave type; like a smoother, slicker triangle wave
- Tan: a potentially crazy wave, tends to produce plenty of distortion
- Whistle: a sine wave with an additional sine wave overlayed at a lower amplitude and 20x the frequency; it can sound buzzy, hollow, resonant, or breathy.
- Pink noise: random numbers with a filtered frequency spectrum to make it softer than white noise
- New filters
- Compression: pushes amplitudes together into a narrower range to make them stand out more; very good for sound effects when you want them to stick out against background music
- Harmonics: overlays copies of the waveform with copies and multiples of its frequency;g ood for bulking out or otherwise enriching the texture of the sounds
- Bit Crusher: resamples the audio at a lower frequency, for that extra retro feeling
- Expanded pitch-jumping abilities; good for arpeggiation effects
On top of that, this new version is still compatible with previous versions, as well as SFXR itself; instead of starting anew and breaking compatibility, usfxr accepts both standard (SFXR/as3sfxr style) parameter strings, as well as the new BFXR parameter strings. This means old code will still work, but you can also copy & paste effect parameter strings directly between usfxr’s Unity interface and BFXR.
There are a few additional non-core BFXR properties that I will have to add support for in the future, specifically property locking for mutation and the UI. This should be added soon along with other UI updates.