Process on soundfont creation

Hey All,

I had tried to find the means on how to create a soundfont and there was not a lot in the way of how to’s.

based on my understanding. there are some who take the free soundfonts, parse them through audacity and make small changes using effects.

there are others that record the sounds with proper equipment and the methods that they used in the original trilogies. (audio gear heavy and very expensive) .

there are others that use sound clips online or from youtube of random sounds and then apply filters and other effects on audacity.

what are some tips that you lovely people can provide and at what stage can I say, this is my soundfont?

If you want to claim that it’s yours, you have two choices:

  1. exclusively use sounds that you created or recorded yourself.
  2. familiarize yourself with copyright law to make sure that whatever you do is considered “fair use” or similar.

Since I’m not a lawyer, I require (1) for all fonts distributed on my site.

1 Like

that’s what i thought but I wanted to see exactly what the process that people used.

Regardless of where you personally choose to source your sounds from, these tips apply to any digital audio processing:

Ok, so first and foremost, you need to 100% make sure you are exporting ALL wavs at 44.1khz 16 mono.

If you have stereo wavs in your font, or a rogue 96khz file…no good. Yes ProffieOS can handle others. Why do that though? Just make them all optimal at 44.1 16bit mono (monaural-single channel audio, not to be confused with monophonic).
Monophonic plays files back to back, so hum gets mixed into effect sounds so when they seam together, the hum “continues”, but it starts at the beginning each time :frowning: This can be noticeable, especially if the hum has some movement to it.
Polyphonic fonts work by layering the effect sounds OVER the hum running constantly. Effect sounds should be isolated, clean sounds.

HIGH PASS YOUR FILES. Use your ear, or use the speaker’s frequency response range as a guide and tune from there.
Dubstep drops are not going to come out of your 28mm speaker because it’s a “bass” speaker.

NEVER EVER EVER LET YOUR WAV FILES CLIP. 0db is ZERO. Anything higher digitally distorts and there’s no coming back or fixing audio that’s clipped.

MIX QUIET, have the loudest peaks NOT near the edges of total loudness. When you’re done, a last step could be to Normalize to 0db, except hum, normalize that to around 3-5dB.

MAKE THEM RIGHT, like clean looping smoothswings and hum, correctly set humstart in config.ini etc… but those are part of your creation process.

NO POPS on transitions/joints/end->beginning loop.
Tip: Zoom in first and always start/end your looping wav at the wave’s zero crossing
You don’t need to make long loops…they loop, so multiple instances is just a waste of file space and buffer memory.
10-15 second hum is more than fine, a little longer if it has motion to it that needs to cycle, but don’t make 2 minute long smoothswings.
You hear about .7 seconds of it playing.

There’s no capital letters in any Proffie sounds (or CFX either I think.) BGNlock.wav is not a thing.
Not required, but this is the way: Number all of your files as double digit endings clsh01, clsh02 etc… including ones that are singles, like hum01
One exception is the 8 character limit, so bgnlock, endlock, bgnmelt, enddrag …….are all 7 already, so name those single digit, like bgnlock1.


FONT FOLDER ORGANIZATION Performance determined by the fact the SD card is formatted FAT32.
The OS can find files fastest if they are arranged this way:
Single files live in the root of the folder, but sounds with multiples (clsh, blst, etc…) go in subfolders labeled their sound.

For system performance:
44.1kHz 16 bit mono.
Named correctly.
Font folder organization.

For sonic quality:
Never clip.
High Pass filter at 100Hz.
Loop cleanly.
Normalize to 0, except hum to -3 to 5dB
Fade ends.

BATCH PROCESSING WITH MACROS is the move when you have a whole font to modify.
To batch process files in Audacity (free), use macros. After you build a macro, click the files button and choose all the wavs in a font folder.
Put all files in one temp spot, process, then drag and drop new versions into organized folders.

You should build this one:

-Mix stereo to mono
-Set project rate 44.1,
-High Pass Filter 100Hz 24dB slope
-Normalize to 0dB
-Export to WAV

It makes a new subfolder where the files came from called macro-output. Those are your new versions.
Just open the hum afterwards and Norm to -5

When you have to name / rename your font files sequentially (all the clashes, then all the swngs etc… ) You can do it manually as you make them, one by one by hand once they’re done, or save time and hassle by batch renaming.
A GUI driven app I use on MacOS is here:

If you have Windows, you can find something similar.
If you can run a bash shell, a quick way to rename all the files in a directory from a text file would be something like:
for file in *.wav; do read line; mv -v "${file}" "${line}"; done < fileNameList.txt

  • Now go make something cool, and pass on what you have learned!

Hopefully we’ll soon be able to get rid of this recommendation as the filtering can now be done in ProffieOS.

FAT32 is case-insenseitive, so upper case or lower case shouldn’t matter. If that’s not the case, please let me know. Still, it’s probably better to just keep everything lower case.

My recommendation is actually to name them like this: clsh/001.wav, clsh/002.wav. That way the filename is never a limit. For effects that only have one file it’s more efficient to skip the directory and just do clsh.wav

1 Like

I see your point, however, I personally have yet to see a case where there have been more than 9 endlocks (probably most likely sound to exceed 8 char) but more so, for me personally, I’m juggling over 150 fonts and interchanging sounds all the time. It could be much easier to mistake one swng/002 file for a blst/002 file as opposed to just having the file itself named.

…and yes:

1 Like

this is a lot to unpack. but I recognise some of this as part of that post you did @NoSloppy on the opensource FB post on how to optimise the sd card.

I made some custom soundfonts where I modded the hum only but this is a great way to check. now If I’m using Audacity, is there an easy way to check the the settings are to your recommended settings?

The bottom left corner shows the project rate. Should be 44100
There should be one track (monaural)
Export window should have drop down menus set to File Type: WAV (Microsoft) and Encoding: Signed 16-bit PCM
In Preferences, under Import/Export, you can turn on the checkmark for Show MetaData on export. Then you want to clear anything in there when you export (see image)

1 Like

is this the export window? and that 32-bit float should be 16-bit pcm right?


That is not the export window, that is a track header, to the left of the track.
When you go to the menu File>Export as WAV, you have dropdown menus. Once they’re set, they should stay what you selected last time, so it’s sort of set and forget.
If you go back into Preferences, again under import/export, you can set the defaults for project settings. Make that 44100 (a.k.a. 44.1kHz) 16 bit as well and new projects will open that way from now on.

@Afrojedi I also just wrote this to a newbie font creator so he has some info. Should be helpful to you as well:

A few tips/tricks/FYI regarding fonts for ProffieOS:

There was a guy who posted how his font sounds, where he’s getting pauses and dead spots between sounds.

First thing (chronologically of use) is the out.wav played at ignition.

Because it’s a polyphonic font, you have hum playing underneath the other effect sounds. Well, the ignition has a delay until the hum fades in so that the initial burst of the out.wav happens first. This time is controlled by the humstart value found in the config.ini file that lives in the font folder.

It is in milliseconds, and behaves opposite of what you would think. The time set is how long from the END of the out.wav the hum should start playing. Here’s a visual example:

So taking Greyscale Font’s Deadlink as an example, the out.wav is long at 3.2 seconds. So unless the humstart is set to about 3000, there’s going to be an unnatural delay until the hum is audible.

Typically the default humstart is 1800, with most out.wavs being 1500-2000ms long.

TL;DR if you are going to do long out.wavs, just make sure the humstart is about 80% of the total length of the file to keep things sounding right.

Ok, next is lockup.

ProffieOS can use bgnlock files, which as you can guess, play at the beginning of a lockup. Typically it’s a blades-coming-together sort of clash sound that leads into the lockup sound. Three files are played back-to-back, butted up to one another:


If there are no bgnlock files in the font, it will play a clash instead.

Again, using Deadlink for example, the clash wavs have a good 1000ms of trailing reverb/quiet ending, most of which gets lost under a hum anyway or subsequent clashes.

So, what this guy was hearing was a clash, 1 second of essentially nothing, then sudden full volume lock up sound.

I suggest you make bgnlock files, keeping in mind how they seam together with lock. Ideally, you should have a cleanly looping lock01.wav. You should take the last bit of that wav (end of the loop), and paste it into the clash, fading up from nothing relatively quickly, and should end at full , so that when the next sound played is the lock file (beginning of the loop), it makes a seamless transition and it all sounds like one sound. See this vid clip:

In light of the above, you should also try to make clashes and blasts as short as they can be without sacrificing the sound, (like lose the long quiet reverb tail that you can’t hear under the hum anyway). The reason being that ProffieOS only has 7 wavplayers available at one time (as of current OS version).

1 = hum

2&3 = smoothswings

4 = maybe track

5 = maybe force sound

That leaves 2 slots open to play clashes and blasts (usually more, but it can be this few as you can see).

If that’s the case, things can be laggy, and you’ll only hear 2 overlapping clash/blast effects at a time. SO if you have LONG wavs, it’s going to wait until it finishes playing the whole thing before another wav player slot is available to play another. They play out in full and don’t interrupt each other…

I think … LOL.

They might interrupt, and I could be wrong, but if you just avoid it regardless by building less “wasteful” long files that have a lot of silence or inaudible levels, things can run and sound better :wink:

@profezzorn, do clash/blast wavs interrupt themselves with a subsequent clash/blast, or do they always play out their full length? Would running out of wavplayers be a factor somewhat then? I don’t think I ever got that specific before.

1 Like

THAT’S super helpful man. I was working on the hum for an unstable blade.

I don’t know how I feel about it. but it’s a start first attempt.

I learnt that the kylo ren was custom sounds paulstretch and a chainsaw + crackling fire.

now with the information you gave me I used that and did this.

my son said that the sound is a bit annoying. thoughts?

Tons of super great info here!!!

Just to add, I strongly urge you to learn an read up on some fundamentals of basic audio mixing. Things like gain staging, EQ (what frequencies do what), compression (how different rations, attack and release times effect the audio), and things of this nature. A little EQ and compression can make certain sound “pop” and “come alive” …which may be something you want when the end result is being played on a tiny 24mm mono speaker.

1 Like


For your hum, try the chainsaw sound when its at “idle”, meaning its not revving up/down. The idle of a chainsaw has more of a chunky buzz/stutter sound, and when added some “fire crackle” on top of that may be more in what you intended.


See that makes sense. I searched for chainsaw sounds when it should be idle. Thanks for that. I’ll add the crackles.

so this is my my normal hum.

Cool. Now high pass filter it at 100Hz and make it loop cleanly.

1 Like

I did already.

Oh. Not the clip you posted above then?