Loading...

The blog is being migrated and merged with multiple Imphenzia blogs so the format and content will be inconsistent for a while.

Level Kits - New Concept for Game Music

It may not be a new concept in the game industry itself, but creating what I refer to as a Level Kit is a new concept for me. Previously I've mainly created full length tracks and seamless loops of various lengths and styles but I suspect that game developers may appreciate these new Level Kits.

The idea is to create variations of a track or theme which will cover most stages and situations of a game. Today I have composed and released Battle Zone Level Kit which is an orchestral military style set of music files:



Of course you can license each variation individually and it's the developers preference whether the Stage Short Loop should really be the Menu loop and so forth, but all the moods are for the various music hits and loops are custom designed to be suitable for the different game stages. As I continue to release Level Kits I hope to offer a very wide selections where you may license all the music necessary for your game.

Battle Zone from a composer's perspective


If you are interested to find out how the music was composed, read on. I use Cubase 5.5 with my full EastWest Symphonic Orchestra Gold keyswitch template (described in this post) along with Stormdrum 2 percussion, drone sounds from Quantum Leap Goliath, and additional patches from the Hollywood expansion for Nexus2 by ReFX.

Stage / Game Play Loops


The stage loops are fairly static and background like with marching drums, strong percussion, and tense strings and brass. The boss loop which could be used for especially hectic situations and, of course, boss encounters is 20 BPM faster with many french horn rips and violin effects to emphasize the danger.

Music Hits


The Stage Complete Music Hit is more melodic with a positive mood portraying success and accomplishment.

The Game Over Loop is a longer version of the Stage Complete Hit with more melodic and emotional strings and brass to emphasize pride and glory. String ensemble playing in marcato behind the lead instruments in both of these hits also establishes heroic courage.

The Life Lost hit is short with just failure written all over it due to the rips and crecendo strings and horns.

The Menu Loop is a very mysterious soundscape with drones from the Goliath library mentioned above. The same drones can also be found in the long stage loop. Plenty of reverb and a deep bass note playing adds to the tension.

The Get Ready hit is just a simple marching snare with some additional percussion and repeating double bass strings.

Fantasy RPG - a new set of orchestral loops

The latest addition to my library of Non-Exclusive game music is "Fantasy RPG" - a collection of 8 short seamless orchestral loops for games with a fantasy or medieval theme. The loops can, of course, be used for many other purposes as, for example, the battle loops are quite universal in time and game genres.

You can play the Intense Battle Full Loop to get an appreciation of what it sounds like (Note: the audio file is watermarked if you are wondering why my voice disturbs you gently half way through :)

The loops are very short, only between 10 and 32 seconds in length, making them especially suitable for small games with shorter gameplay. The short duration also makes them incredible cheap with excellent value for money as they are practically given away priced between $3 and $10 each for indie game developers.

Details for the curious


To create these loops I use Steinberg Cubase 5.5 as a sequencer. The orchestral library I use is Symphonic Orchestra Gold by EastWest Samples / Quantum Leap. I've set up a, for me, gigantic Cubase template with the full Orchestra and all instruments articulated with keyswitch instruments. The keyswitch means that I can select articulation for each midi note played to say how it should be played, e.g. the keyswitch for 18 Violins section contains no less than 23 articulations such as marcato, sustain, slur, tremolo, legato, lyrical, expressive, quick up down, etc.

[caption id="attachment_232" align="aligncenter" width="640" caption="Cubase with Symphonic Orchestra Gold Keyswitch template"]Cubase with Symphonic Orchestra Gold Keyswitch template[/caption]



The orchestral template is very memory hungry and to accomodate this I'm running a Intel i7 950  processor  @3.07 Ghz with 24 GB of RAM memory. I've stored all the orchestral library files on a 256 GB Crucial Solid State HDD because the library consists of 39983 files (32.3 GB) and it took forever to load it up on my previous 7200 RPM drive. This is running on Windows 7 x64 Ultimate and I must say that this combination works a treat. I can also take this opportunity to mention that the setup and music software is funded by my every day job as an IT Consultant and NOT from Imphenzia Soundtrack licenses - I've got a long way to go for that to happen =)

Here is also a screenshot of the Key Switch articulations I've configured. This one is for the 18 Violins sections so I had to configure the same thing for all instruments in the entire orchestra which took me the closest thing to forever.

[caption id="attachment_233" align="aligncenter" width="640" caption="Key Switch articulations for 18 Violins section"]Key Switch articulations for 18 Violins section[/caption]

I should also mention that this particular piece of music uses percussion from Stormdrum 2 and a little bit of choir from Symphonic Choirs.

 

Sound Forge script to create Seamless Loop

In my previous post I described how I create seamless music loops in Cubase and Sound Forge. I also mentioned that I have a Javascript for Sound Forge that I use to save time in performing the task to crop out the center third of the audio file along with fading the start and finish of the loop to remove any clicks at the loop point.

You can Download Seamless Loop Javascript for Sound Forge. Remember that you can't just magically rung this script on any old piece of audio to make a seamless loop of it - you need to follow the directions of the YouTube Tutorial to produce the audio file suitable for making a seamless loop.

Let's have a look at what the script does


Basically, I took the sample script that you get with Sound Forge that Crops and Fades a piece of audio. I then made the following alterations:
var smpLength : Int64 = Math.round(wnd.File.Length / 3);

The above line of code creates the variable smpLength, which is a 64 bit integer, to a third of the length of the audio file that is currently open and active in Sound Forge. I use the Math.round function to ensure it's a whole number as samples can't be decimals, it's either a sample or not =)
var asel : SfAudioSelection = new SfAudioSelection(smpLength, 
smpLength);

I then create the variable asel which is a new selection of audio. I use the arguments (smpLength, smpLength) for the constructor because I wan't it to start the selection one third into the audio file and I want the duration to also be a third. The script has now selected exactly the center third of the audio.
var ccFade : Int64 = 20;

We then set the variable ccFade to 20 which represents how many samples we want to fade. As you can see 20 samples is very little (0.00045 seconds if the sample rate is 44.1kHz) and this is because we just want to avoid the speaker having to abruptly jump to the start value other than 0 which would create and audible click.

Note: You may need to change ccFade depending on the music you are looping! For loud and aggressive music 20 samples is usually good, but for slow music such as sweeping strings and pads you may need around 100 samples. The reason for this is that 20 samples is still quite fast and it'll create a small percussive sound.

The rest of the script is pretty much the same as the Crop and Fade script I used as a base so it's a very small and simple modification.

You can also see the script in action in the YouTube tutorial video at 7:00.



Here is the entire script in clear text as well - or you can download it at the top of the post.
import System;
import System.Windows.Forms;
import SoundForge;

/*
Script: Seamless Loop Extractor
Author: Stefan Persson - Imphenzia Soundtrack - http://soundtrack.imphenzia.com

Run this script on an audio file were a piece of music is repeated 3 times exactly.
To create such an audio file in the first place copy a set of measures in your
sequencer software three times and export the audio from just the three sets of
measures. E.g. you want to loop 4 measures of music, make two adjacent copies of
the measures making it 12 measures in total. Export these 12 measures (no more and
no less) as an audio file.

The script will then crop out the center third of the audio file and make a very
short crossfade in the beginning and the end of the file to ensure that there is
no clicking at the loop points. What you should end up with is a perfect seamless
loop.

The crossfades are only 20 samples in length which should be inaudible for the ear
but without the crossfade the sample would start with a "click" as every audio
file should start and end at 0dB exactly.

NOTE! For slow pieces of music you may want to increase the variable ccFade from
20 to around 80 if there is an audible percussive click at the loop point.

(This script is based on the "Crop and Fade" sample script)
*/

public class EntryPoint {
public function Begin(app : IScriptableApp) {

var wnd = app.ActiveWindow;
if (null == wnd) return;

// We are interested in exactly one third of the samples in the center of the
// audio file, set smpLength to this value
var smpLength : Int64 = Math.round(wnd.File.Length / 3);

// Construct a new selection starting one third into the audio file with the
// duration of a third of the audio file
var asel : SfAudioSelection = new SfAudioSelection(smpLength, smpLength);

// Set the length of the fade to only 20.
// This can be changed and usually values between 10 and 100 will work, 10
// for aggressive music and 100 for very slow music.
var ccFade : Int64 = 20;

var file : ISfFileHost = wnd.File;

var fCancel = false;
var idUndo : int = file.BeginUndo("Crop and Fade");

file.CropAudio(asel.ccStart,asel.ccLength);
wnd.SelectionLength = 0; // remove the selection lest it confuse us.

file.DoEffect("Graphic Fade", "-6 dB exponential fade in",
new SfAudioSelection(0, ccFade),
EffectOptions("EffectOnly"));
var result : SfStatus = file.WaitForDoneOrCancel();
if (result != SfStatus.Success) {
fCancel = true;
} else {
file.DoEffect("Graphic Fade", "-6 dB exponential fade out",
new SfAudioSelection(wnd.File.Length - ccFade, ccFade),
EffectOptions("EffectOnly"));
result = file.WaitForDoneOrCancel();
if (result != SfStatus.Success) fCancel = true;
}

file.EndUndo(idUndo, fCancel);
DPF("Done - {0}", fCancel ? "failed and rewound changes" : "success");
}

public function FromSoundForge(app : IScriptableApp) {
ForgeApp = app;
app.SetStatusText(String.Format("Script '{0}' is running.", Script.Name));
Begin(app);
app.SetStatusText(String.Format("Script '{0}' is done.", Script.Name));
}

public var ForgeApp : IScriptableApp = null;
public function DPF(sz) { ForgeApp.OutputText(sz);}
public function DPF(sz,o) { ForgeApp.OutputText(System.String.Format(sz,o)); }
public function DPF(sz,o,o2) { ForgeApp.OutputText(System.String.Format(sz,o,o2)); }

public function DPF(sz,o,o2,o3) { ForgeApp.OutputText(System.String.Format(sz,o,o2,o3)); }

} // class EntryPoint

Create seamless loops for game music

Making seamless loops is an essential part in creating music suitable for games. Loops will keep the distribution size of games to a minimum and it also makes the audio cheaper to license which is crucial for smaller indie game developers.

Although I've been making music as the trance artist "Imphenzia" for 14 years, which is starting to sound like a very long time also making me sound old, I've only been releasing music for games during the past 3-4 years as "Imphenzia Soundtrack." I mention this for no apparent reason at all, so lets move on.

I've created a video tutorial of how I go about when creating a seamless loop. In this case it's an orchestral movie-style piece of music that will be added to my library of non-exclusive music. I use Steinberg Cubase 5.5 and Sony Sound Forge 10 to create the loop but you will probably be able to replicate the steps in your sequencer and audio editor of choice.

Time for the tutorial - have a look at it and don't forget to watch it in 720p so you can read the options better.



I hope the tutorial helps you to create perfect seamless loops of your music. Some of the important things to stress are:

  • Repeat the music you want to loop three times in your sequencer, exactly 3 times down to the measure. Why? It's because you want to ensure a good loop including any trailing audio at the end of the music piece, it could be decay, reverb trails, and echo.

  • Export the audio to a Wav file (or a format of choice) and load it into a good sound editor.

  • Crop out the center third of the music, use sample precision to do this.

  • Remove any clicks by ensuring that the audio file starts and stops on 0 dB exactly (or infinitely low as Sound Forge describes it.) This is performed by fading in the start and fading out the end by only a few samples, 20-100 samples is usually suitable.


In the video tutorial I also mention a Javascript that I've created for Sound Forge that will perform the selection of the center third, cropping, and fading the ends to ensure a good loop point. This particular Javascript will be the topic of my next blog post so do come back soon.


Watermarking music

Shortly following the release of the new Imphenzia Soundtrack site I've had some feedback that the watermark of "Imphenzia" every 5 seconds is annoying - understandably so. I used to offer my music in very low quality without watermarks for previewing but I found that some tracks were being used anyway. The tracks that were used without license were, however, only used in videos on Youtube and never in any games which supports my experience that indie game developers really want to do the right thing and license the assets they use properly.

In order to make the watermark less annoying I have now altered the previews. I've created a VBScript that automatically loops through all the original WAV files and watermarks them.

In my VBScript I use the free utility Sound eXchange (SoX) to extract the duration in samples of the original WAV file. I then have a Watermark audio file which is 20 minutes in duration (longer than my longest piece of music) and using SoX I can then mix the two audio files together with the output file being the exact same length in samples as the original WAV file thus not braking any seamless loops.

I also use SoX to read the Peak Amplitude (0.0 - 1.0) of the original audio file and adjust the Watermark amplitude exponentially before mixing the two together. E.g. if the original audio has a peak amplitude of 0.5 then the watermark gets the amplitude 0.25, and if the original audio has a peak amplitude of 1.0 the watermark also gets 1.0, etc. The only flaw with this method is that if a track is normalized (which equals a peak amplitude of 1.0) yet the track has many quiet sections, the watermark will be too loud in the quiet sections - but still it works fairly well until I can find a solution to fix that.

In order to also make the watermarked audio files less annoying I've also changed the frequency of the watermark. I have 4 different watermark audio files where the interval of the watermark is: every 5 seconds for tracks between 0-10 second duration, every 10 seconds for tracks between 10-20 seconds, every 20 seconds for tracks between 20-60 seconds, and every 30 seconds for tracks longer than 60 seconds.

With this script I could automatically re-watermark all 198 audio files in a matter of minutes, which is nice =) The encoding to Mp3 and Ogg previews is performed by another script and which takes around half an hour on my Intel i7 950 @ 3.07Ghz.

If any readers of this blog post is interested in the VBScripts - give me a shout.

Finally I'm finished with the new site design of Imphenzia Soundtrack

[caption id="attachment_191" align="alignright" width="150" caption="Screenshot of Imphenzia Soundtrack"]Screenshot of Imphenzia Soundtrack[/caption]

I’ve worked hard into the early hours every night for the past month but I’ve launched the new Imphenzia Soundtrack site. I already had my design template finished as it uses the same design as my artist site (and spacebox4096.com and beatball2.com) but it took a lot of time creating the new filter functionality to enable easy browsing of the hundreds of music tracks and sound effects.

I’ve taken a conscious decision to not add fallback functionality for visitors without javascript enabled. It simply takes way too long and there are so few of them that it’s not worthwhile. I also had a lot of troubles with browser compatibility but the site works in the browsers I have installed Chrome 13, Firefox 3.6, IE8, and I’ve had to force fallback to IE8 for IE9 browsers as IE9 hates me and jQuery =) I’ll deal with that some other day and I just wish the browser manufacturers could decide on using the same interpretation engine for html, css, and javascript.

There are some major differences between the new soundtrack site and the old one.

The new features are:

  • Discount Vouchers flexible to offers any sort of discount automatically on non-exclusive music and sound effects =) Let’s see how generous I become but I think it’s a good start with the current 70% discount offer to celebrate the new site (voucer: NEWSITE70)

  • Free Non-Exclusive Music License of the Month allows anyone to very easily get a free license of a randomly selected track every month.

  • New dedicated Non-Exclusive music page where all tracks can be easily browsed through and previewed. The page is “AJAX”-powered which means tracks can be viewed page by page without a full page reload.

  • Advanced search and filter functionality enables visitors to quickly locate music and sound effects based on criteria such as Keyword, Duration, Price, Tempo, Music Genre, Mood, Game Genre, Volume, Loops yes/no. When changing the search criteria the music and sound effect lists are updated instantly.

  • Search Engine Optimization, also making it easy for visitors to share links, for all tracks, track variations, and sound effects, e.g. http://soundtrack.imphenzia.com/non-exclusive-music/duplicate-my-soul/ and http://soundtrack.imphenzia.com/non-exclusive-music/fog-of-war/with-drones/

  • Indie and Commercial license model means only two pricing models (compared to a multi step game budget model before). It’s simple now, if you are an indie developer with an annual revenue below $250k every year you can use Indie licenses, otherwise you have to use a commercial license that costs 5 times more. It’s not that commercial licenses are expensive, it’s the indie licenses that are very cheap =)

  • Shortcuts to properties of music and sound effects means that you can click on music genres, tags, and other words to filter only audio files of that property.

  • Sorting functionality to sort music and sound effects on all columns such as Name, Music Genre, Category, Duration, and Price etc.

  • Audio Previews are now in much higher quality but the files are instead watermarked every 5 seconds. I’ve found out that audio was “stolen” even when it was in low quality so I think watermarking is the only way to go. The audio previews can be downloaded as 190kbps MP3 files and 128kbps OGG files to ensure they fit in your game.

  • License e-mails are sent directly following purchase (like before) but the download links to original WAV file, 128kbps OGG file, 64kbps OGG file, and 190kbps MP3 file, will now only be available for 7 days.

  • Exclusive Music Price Estimation Tool is available under Frequently Asked Questions on the Exclusive music page.

  • No more adverts. Google adverts were generating less and less due to their payment scheme so I’m sparing all my visitors by removing them and making a clean site instead!


Removed features:

  • Site accounts are gone as they weren’t used very much, it was hard maintenance, and I figure people have enough accounts on too many sites already. The download links to the audio files are sent instead to allow direct download from the e-mail. No more passwords and user names to remember.

  • Exclusive music can no longer be licensed automatically from the library. There are a number of reasons for this: 1) Exclusive license for a track resulted in all variations of the track being included in the exclusive license and these may not even be needed by the licensee; It would be a shame for some tracks to never be used. 2) Exclusive licenses are most commonly custom made for a game anyway, so the new Exclusive music page contains a show reel of exclusive music, a tool to calculate the pricing of exclusive music, and the contact details to discuss exclusive music for your game.

  • The “Imphenzia Audio System” for BlitzMax is no longer offered. If you want this code, please contact me instead.

  • Links page to games using my music is removed temporarily. I plan to create a better reference and promotional method for games using my music!


So I hope you enjoy the new site! Feedback and bug reports are always welcome – there are bound to be some issues with such a huge launch.

Thanks for reading… did you make it this far? =)