Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Barking Sands

Mixing together a custom DOOM soundfont

Recommended Posts

I'm thinking about starting a new project that creates a custom soundfont that caters to each DOOM midi track individually. I'm brand new to Polyphone, and I have no idea how to keep things legal, so any help from the community is greatly appreciated.

 

The goal is a single soundfont, but if necessary, I plan on tayloring a series of soundfonts to maximize the quality of the music for each MIDI and converting the MIDI to .OGG so they can be compatible with Bethesda's Unity port.

 

The sound type I'm shooting for is a garage band of metalheads. It should use minimal synth and loop effects for maximum sound clarity and realism. Tracks like E3M3 can get away with orchestral presets for the atmospheric effects.

 

All resources need to be public domain (free to modify and distribute), so the samples especially must be both well normalized (same volume) and unprotected by legal tape. I'm very open to any advice on better ways of approaching the project.

 

E1M1  E1M2  E1M3  E1M4  E1M9

E2M3

 

Database of presets complete:

 

Spoiler

000:000  [Acoustic Grand Piano]          INTRO
000:004  [Electric Piano 1]                     STALKS
000:006  [Harpsichord]                          E1M2  IN_CIT
000:007  [Clavinet (Clavi)]                      VICTOR
000:010  [Music Box]                              E1M6
000:011  [Vibraphone]                           INTRO  INTROA  DOOM
000:012  [Marimba]                                STALKS  IN_CIT  MESSAG
000:013  [Xylophone]                             E2M7  DM2TTL
000:014  [Tubular Bells]                         DDTBLU
000:015  [Dulcimer]                                E1M7  DOOM
000:017  [Percussive Organ]                 EVIL
000:018  [Rock Organ]                           INTRO  INTROA  RUNNIN  DOOM  DEAD
000:020  [Reed Organ]                           EVIL
000:024  [Acoustic Guitar (nylon)]        ROMERO
000:028  [Electric Guitar (muted)]        E2M1  BETWEE  THE_DA  SHAWN  AMPIE
000:029  [Overdriven Guitar]                E1M1  E1M4  E1M8  E2M1  E3M1  E3M2  E3M3  RUNNIN  DDTBLU  MESSAG  AMPIE  READ_M
000:030  [Distortion Guitar]                  E1M1  E1M4  E1M9  E2M1  E3M1  E3M2  E3M3  E3M8  INTER  BUNNY  BETWEE  SHAWN  IN_CIT  DEAD  READ_M
000:031  [Guitar harmonics]                 INTRO  INTROA  E3M1  E3M8  BUNNY  DOOM
000:032  [Acoustic Bass]                        VICTOR  STALKS  COUNTD  DEAD  MESSAG
000:033  [Electric Bass (finger)]            E1M6  E1M9  E2M1  E3M2  E3M8  INTER  BUNNY  BETWEE  ADRIAN
000:034  [Electric Bass (pick)]                E1M1  E1M4  E3M1  RUNNIN  DDTBLU
000:035  [Fretless Bass]                         THE_DA  ROMERO
000:036  [Slap Bass 1]                            DM2INT
000:037  [Slap Bass 2]                            E1M2  RUNNIN  AMPIE
000:038  [Synth Bass 1]                          E1M3
000:039  [Synth Bass 2]                          DOOM  SHAWN
000:040  [Violin]                                      E1M9  OPENIN  READ_M
000:041  [Viola]                                       E1M9  READ_M
000:042  [Cello]                                       E1M9  IN_CIT  READ_M
000:043  [Contrabass]                            E3M1  IN_CIT  DEAD
000:044  [Tremolo Strings]                    E1M7  E1M8  E2M4  E2M6  E2M7  DOOM  OPENIN
000:045  [Pizzicato Strings]                   E1M7  E2M4  E3M1  COUNTD  IN_CIT  ROMERO  ADRIAN
000:046  [Orchestral Harp]                   E1M7  BUNNY  DEAD
000:047  [Timpani]                                  INTRO  E1M6  E1M7  E2M6  E2M7  DM2TTL  VICTOR  DEAD  TENSE  READ_M
000:048  [String Ensemble 1]                E1M2  E1M5  E1M7  E2M6  E2M7  E2M7  E3M1  VICTOR  BUNNY  COUNTD  ROMERO  ADRIAN  TENSE  DM2INT  READ_M
000:049  [String Ensemble 2]                E2M4  ROMERO
000:050  [Synth Strings 1]                      E2M6
000:051  [Synth Strings 2]                      INTRO  INTROA  E1M2  DM2TTL  DDTBLU  TENSE  DM2INT
000:052  [Choir Aahs]                             E1M8  E2M4  DM2INT
000:053  [Voice Oohs]                            DOOM
000:054  [Synth Choir]                            THE_DA  MESSAG  DM2INT
000:055  [Orchestra Hit]                         E2M7
000:058  [Tuba]                                        ULTIMA
000:060  [French Horn]                          OPENIN  ULTIMA
000:062  [Synth Brass 1]                        E1M6  STALKS  EVIL
000:063  [Synth Brass 2]                        E1M4  E1M6  STALKS  DEAD  DM2INT
000:068  [Oboe]                                       TENSE  ULTIMA
000:070  [Bassoon]                                 E2M8  BUNNY  TENSE
000:071  [Clarinet]                                  TENSE  ULTIMA
000:072  [Piccolo]                                    E2M7  BUNNY  ULTIMA
000:073  [Flute]                                        TENSE
000:075  [Pan Flute]                                BUNNY
000:078  [Whistle]                                   THE_DA  AMPIE  OPENIN
000:079  [Ocarina]                                  E2M2  DDTBLU
000:080  [Lead 1 (square)]                     E2M2  E2M8  E3M2  SHAWN  DDTBLU  DEAD  MESSAG  TENSE  DM2INT
000:081  [Lead 2 (sawtooth)]                 E1M2  E1M6  E1M7  E2M8  E3M2  INTER  SHAWN  IN_CIT  TENSE  ULTIMA
000:082  [Lead 3 (calliope)]                    E1M9  INTER  DEAD
000:085  [Lead 6 (voice)]                        TENSE
000:087  [Lead 8 (bass + lead)]             E2M6  READ_M
000:088  [Pad 1 (new age)]                    DOOM  DDTBLU  DM2INT
000:090  [Pad 3 (polysynth)]                 DOOM
000:092  [Pad 5 (bowed)]                      E1M3  OPENIN
000:093  [Pad 6 (metallic)]                     MESSAG
000:094  [Pad 7 (halo)]                           INTRO  INTROA  E2M2  VICTOR  SHAWN  TENSE
000:095  [Pad 8 (sweep)]                       DEAD
000:096  [FX 1 (rain)]                              OPENIN
000:097  [FX 2 (soundtrack)]                 E2M2  DDTBLU
000:100  [FX 5 (brightness)]                  THE_DA
000:101  [FX 6 (goblins)]                        E2M2
000:102  [FX 7 (echoes)]                        INTRO
000:107  [Koto]                                       DEAD
000:108  [Kalimba]                                 E1M6  E2M7  DDTBLU
000:116  [Taiko Drum]                           MESSAG
000:117  [Melodic Tom]                         INTRO  RUNNIN  MESSAG  DM2INT
000:118  [Synth Drum]                          E1M8  DM2TTL  RUNNIN  IN_CIT
000:119  [Reverse Cymbal]                   E1M5  IN_CIT
000:120  [Guitar Fret Noise]                 E1M5  E1M7  DM2INT
000:121  [Breath Noise]                        OPENIN  DM2INT
000:123  [Bird Tweet]                             BUNNY
000:127  [Gunshot]                                EVIL
128:000  [Standard]                               (Channel 09)

 

Production road map:

 

This next step might take longer than I previously imagined. I was planning on just copying and pasting the channel presets into a single soundfont, but comparing and analyzing the presets is taking a great deal more effort than I thought it would.  I just finished work on preset 000:004 (Rhodes piano), and I found myself feeling forced to mix multiple instruments together and modify the settings a great deal to get the sound I wanted. The Fender Rhodes only appears once in the DOOM soundtrack, and it isn't happening until late in D_STALKS.MUS which means there's a chance few will even hear it. But here it is in its full glory (the channel preset still has a couple of bugs in the higher register, but they don't affect the sound here): This is a comparison of the SC-55 General Grieferus versus the same soundfont but with Preset 000:004 replaced with a mix of three custom soundfonts.

 

  • I'm going to use that database to merge voices from soundfonts provided here and here into a single soundfont called Beowulf. The noise levels will be normalized to match the volume output that SC-55 General Grieferus uses. Beowulf.sf2 will only contain the samples necessary to populate those basic presets with instruments, so I predict it will be between 100-200 megabytes in size. At least this is something I'm confident that I can do with the very limited skill set that I currently have.
  • Part three is the first ambitious or optimistic endeavor. I'll try to assemble together a soundfont that mirrors Beowulf but also features cross-faded instruments from multiple soundfonts to populate individual channels. It will also use channels on higher level banks so it will need to be accompanied by a set of modified DOOM midi files. That soundfont, if I can create it, will be called Chives.sf2, and it will likely be larger than 400 megabytes in size.
  • The final achievement that I can only dream of reaching, is Gorgonzola.sf2 (Alias "The Cheese"). That soundfont is going to have a complete collection of presets so that it can be used to convert any custom midi files to ogg, mp3, wav, or flac. If it's even possible (it's going to have multiple banks and a huge assortment of intermixed voices and instruments, and it will probably contradict its own design at some point because of the large variety of custom midis that are designed to be played with DOOM), I predict its size to exceed 1 gigabyte, so it will only really be useful for conversions unless the user is running on a high-end machine that can manage that kind of workload in real time.
Edited by Barking Sands : Roadmap added

Share this post


Link to post

If you're considering exporting them to OGG anyway, which not only the Bethesda port but also Zandronum, GZDoom, ZDaemon and possibly others support, you could do this pretty easily without the need to assemble custom soundfonts for each song which would be hellish and take a million hours (at least for someone like me who has tried assembling a custom soundfont and failed miserably).

 

The best way to do this would be to layer various instruments from various soundfonts in a program that makes doing so very simple, such as Virtual MIDI Synth. I just do this on a per-song basis then export to MP3 or OGG. For example, recently I wanted to do a "soundfont remaster" of the old EXEC.WAD soundtrack (which kicks ass). Here's the soundfont remastered version:

 

 

 

Throughout the entire soundtrack, you can hear that guitars, drums, synths etc. are from many different soundfonts. The only way to really share this exact sound with others was to export as MP3 or OGG - actually compiling all the bits and pieces into one massive soundfont, then telling the game which bits of that soundfont to use for which MIDIs is, as far as I'm aware, impossible, but if you just export them as actual sound files you don't really need to worry about it, the only drawback being the largeish filesize.

Share this post


Link to post

I was hoping to get a reply from you; you're always so helpful on these subjects.

 

I don't have a million hours of spare time to work with, so I think it makes sense to steal presets from the soundfonts I already have and just throw them through a mixer in CoolSoft VirtualMIDISynth and convert the MIDIs to .mp3 and then into .ogg (I have to trim several seconds off of the end of the clip so I'm using Shotcut to convert from .mp3 to .ogg as well as do the time trimming). I'm just worried about getting into hot water for using both soundfonts and MIDIs I don't own the rights to and producing and distributing soundtrack files with them.

 

Here's a first draft At Doom's Gate (D_E1M1.ogg):

D_E1M1.zip

Edited by Barking Sands

Share this post


Link to post
23 hours ago, Barking Sands said:

I'm just worried about getting into hot water for using both soundfonts and MIDIs I don't own the rights to and producing and distributing soundtrack files with them.

 

Here's a first draft At Doom's Gate (D_E1M1.ogg):

D_E1M1.zip

Sounds really good! Stays true to the intended sound while adding a lot of oomph. I like that.

 

I wouldn't worry about getting into hot water - there's an extremely popular Doom Metal pack on ModDB which the creators likely don't have the "right" to do (technically speaking) but no one from id has given them any trouble yet. In a similar vein, a soundfont author would have to be really anal to get mad at you for using their instruments in a small scale Doom music conversion like this, though worst case you'd just have to take it off of wherever you're hosting it (ModDB, MediaFire, etc.)

Share this post


Link to post

Now that I've heard the direct VirtualMIDISynth output compared to a 100% quality converted .ogg format played through the Unity rerelease port a few times, I feel spoiled. I just don't want to allow the quality loss. I still think that a one-size-fits-all soundfont is the best route to go for quality, but it comes at a great cost as well. The same "Distortion Guitar" preset that plays the backup in "At Doom's Gate" is used at the forefront in "An Intermission from DOOM," and that just doesn't work at all for me because I'd have to find some kind of common ground between those MIDI tracks, which there is little to none.

 

I guess I just have to settle for something less than optimal no matter what approach I take here. I'm just lazily attempting to do a version that's noticeably crisper in sound clarity than the OST version (or versions) found all over YouTube. Also, for what it's worth, I'm only using assets or resources that were provided in that Soundfont tutorial you posted with 40 great soundfonts and 10 soundfonts of drums.

 

BTW I think I've finished "An Intermission from DOOM" (Besides more cowbell, I think it could benefit from a sawtooth with a higher pitch without sacrificing tuning):

(Uploading the file to DoomWorld forums isn't working for some reason)

Edited by Barking Sands : Link is broken and I can't upload the file because of Site disabling cookies or something wierd.

Share this post


Link to post
On 5/24/2021 at 5:43 AM, Doomkid said:

actually compiling all the bits and pieces into one massive soundfont, then telling the game which bits of that soundfont to use for which MIDIs is, as far as I'm aware, impossible

It would actually theoretically be possible by using edited MIDIs that specify what MIDI banks/SoundFont banks to use for each preset.
 

To elaborate, a SoundFont can contain multiple versions of the same presets. This means you can have, say, multiple Acoustic Grand Pianos stored at Preset 0, each with their own sound, in the same SoundFont.

 

In fact, EdgeSounds Soniqbear GM120Pro does this; it is a single SoundFont that contains 4 different versions of each General MIDI instrument (by default, most MIDIs will use the SoundFont's first GM set). With some additional editing in Polyphone and a MIDI sequencer, you could have one SoundFont play customized instruments for individual MIDIs (e.g., Bank 0 has instruments customized for MIDI 1, Bank 1 has instruments customized for MIDI 2, and so on). MIDIs can also be made to switch instrument banks on the fly, so you could have a channel cycling through the different banks for Preset 30 (Distortion Guitar) or such. Useful if you think certain versions of a particular instrument slot will fit specific parts of one MIDI.

 

Of course, all of that would take a bit of work, and I do think it is easier to just make MP3/OGG renders instead of making a SoundFont that contains a gajillion different versions of each GM preset.

 

Edited by TheUltimateDoomer666 : Made post less wordy.

Share this post


Link to post

That's very interesting. So far, all of the channels I've worked with have been using bank 0 (except for the drums channel of course, which uses bank 127), and I've been wondering why that is. I was thinking about trying different presets for the percussions to see what happens, but I have no way of knowing which preset the MIDI is using based on watching the synth mixer (it just says "drums"). I guess I would need to open the MIDI files in an editor.

 

If I get really ambitious, I could get tempted to edit the MIDI and swap some banks around so that I can use all of the custom presets in a single SF2 file. I think the harder job is just normalizing the sound using a combination of attenuation (to decrease a preset's sound volume) and duplicating instruments (to increase the volume).  Right now, I'm doing most of the work with the mixer board because it takes seconds instead of minutes to adjust a channel.

 

So far, I've been adjusting the mixer settings based on the drum channel as a constant (100% volume using the same exact drum soundfont).  I just realized that the MIDI sets the channel volume to different levels based on how pronounced the composer wants the drums to be which varies from one track to the next, and that means that my master levels are all out of whack.  I'm seriously considering just going with the first option which was to cobble together a custom soundfont (Chives.SF2) which just has normalized volume voices (just enough to populate the MIDI channels that DOOM uses) and providing along with it some custom MIDI files in order to use multiple banks. I looked at a DOOM MIDI file in a MIDIEditor program I downloaded, and it assigns voices to channels on the same tick that the music starts, so I think I have to replace that command with a command that assigns a bank instead of a preset. That hopefully changes a setting that was once (000:030) to (030:000) so I just have to meddle with the first preset in the bank which number matches the original voice's preset value.

Edited by Barking Sands : Just realized I need to look into the MIDI file pan/volume settings

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×