Bfxr is a handy tool for making sound effects in a style reminiscent of the NES era, like the noise made when Mario collects a coin. It can run in a browser and export sounds in either WAV form, which almost every gamedev engine can import, or in a data form that can be interpreted by your game's code on the fly.
You can run Bxfr straight from the website, or download a standalone version for Windows or Mac. It looks like this:
That's... a lot of buttons and controls. It looks overwhelming, but don't worry; you don't need to understand what they all do to get started.
First, concentrate on the top seven buttons on the left: Pickup/Coin, Laser/Shoot, Explosion, Powerup, Hit/Hurt, Jump, and Blip/Select. Click any, and it will generate a sound effect that fits the category.
When you find something you like, you can click Mutation to alter it a little bit. (Randomize, by contrast, will just give you a brand new, random effect.)
Maintaining a Library
If you kept Create New Sound ticked, then you'll now have a bunch of effects in the bottom-left list. You can click any to play it again, and then type to rename it or click the X button to remove it.
The buttons at the bottom right let you share, save, and load your sound effects. When you've got something you like, you can hit Export Wav to save it as a
wav file, which you should be able to use directly in any game engine (or at least convert to another format that can be used, like MP3 or OGG).
Alternatively, you can hit Save to Disk to export a
bfxrsound file, which looks like this:
This is the same format used by the Copy and Paste buttons - try copying that above string into Bfxr and you'll see what I mean. Alternatively, you can use the Copy Link button, which gives you a link like this that encodes the
bfxrsound data and automatically passes it to the tool.
Getting More Advanced
The central panel gives you a whole heap of options. Let's look at a few:
- Attack Time, Sustain Time, and Decay Time all affect how long the sound lasts, in different ways. There's more technical info in this Wikipedia article on the Attack Sustain Decay Release envelope.
- Changing Frequency ever so slightly is an easy way to generate multiple effects that sound similar but aren't quite identical; this can be useful for, say, a rapid-fire laser gun.
- The nine buttons at the top (Triangle, Sin, Square, and so on) control the waveform of the sound, which in turn defines whether it sounds smooth, pure, or harsh. RetroModular's tutorial on synthesisers offers a great introduction to this, and this detailed series covers everything else you'd want to know.
Every slider and button has tooltip text explaining what it does - although in many cases it might be easier just to fiddle around with the value and listen to how it changes the sound! As you do so, you can overwrite your current effect with the Apply Synth button, or go back to how the effect initially sounded with the Revert Synth button.
The lock icon to the side of each control lets you state that you don't want it to be affected by the Randomize or Mutation buttons. You could, for example, lock everything except the Attack Time, Sustain Time, and Decay Time sliders and repeatedly hit Randomize to get a range of effects that sound similar but last different lengths of time.
Finally, the Mixer tab lets you overlap up to five of the effects you've made.
Bfxr, by Stephen Lavelle, is based on Tom Vian's as3sfxr, which in turn is an AS3 port of Tomas Pettersson's sfxr.
Tom Vian gave a presentation on as3sfxr at the Flash on the Beach conference (since renamed to Reasons to be Creative):
As well as giving a fantastic overview of what all the sliders do, he also mentions the
SfxrSynth AS3 class, which lets you import as3sfxr effect data into a Flash game's code and even mutate it on the fly. Bfxr offers the same functionality - see this API example for some sample code. Zeh Fernando has also ported this synthesiser to Unity.
Finally, I recommend checking out Mark Wonnacott's IECSFXR - Three new ways to use sfxr, which offer new interfaces for as3sfxr:
- sweepsfxr: A simple way to interpolate between two Sfxr sounds.
- evosfxr: A tool for evolving new sounds by combining existing ones.
- studiosfxr: A UI for crossing sounds, mutating them, and testing them out in dummy games.
Bfxr and the rest of the Sfxr family are great tools for quickly making low-fi sound effects, while still offering plenty of control to fine-tune and tweak the results. If you know of any other ports or examples that I've missed, please let me know!