Changing Menu Music

Custom menu music is a really nice bit of polish that makes your disc stand out the moment it gets past the company logos. They're also incredibly easy to add: simply encode them to stereo VGSes (22KHz strongly recommended, I'll explain why later), drop them in sfx/streams in the ARK, and edit the (music) array in config/synth.dta to add it to the pool of menu music. Frankly, the hard part is making the menu music sound right! I'll still try to help you with that anyway...

(For my ease of typing, I'll be calling menu music "metaloops" for the rest of this tutorial. That's what they're referred to in the game files; the "meta" are menus, anything outside of the game loop proper.)

Some things to keep in mind when constructing metaloops

Custom metaloops are piss easy—on the technical end of things. I'm not gonna be able to tell you how to capture that specific, distant, muffled sound that Harmonix does for their metaloops. It took me a couple tries in a proper audio editor, and I keep ahold of that project file now so I can just drop a chopped up mix of a song in and get out a metaloop. If you are trying to capture Harmonix's sound, here's some engineer's notes. I apologize in advance. For the rest of you, have a graphic of some automation graphs to break up the load of text:

The automation graphs for one of my metaloops

Click for full size.

Good news is that metaloops are just audio. You can use whatever you want, though it might not match GH2 as nicely.

One final tip if you are trying to match Harmonix's metaloops—I like to use the crowd audio for some of the larger venues in my metaloops, specifically big (RedOctane Club), theatre (Detroit Rock City Theater), and arena (Harmonix Arena). You don't have to, but they're already in the files as standard VGSes.

There's five states the crowd can be in, and thus five different crowd loops for each venue: intro, danger (about to fail), poor (in the red), norm (in the yellow), and good (in the green). I like to start with intro and crossfade it into good a bit louder than the intro to simulate the crowd going wild for a recognizable guitar part or the vocalist entering.

How you construct your loops is up to you, though. They're just audio.

VGS specifications

The most important thing to keep in mind is that size matters. You'll want to keep the snippets of songs under two minutes, necessitating some radio editing of songs. You can get creative with your chops: Harmonix's own metaloops sometimes start with guitar solos or prominent guitar leads in songs, which is a fun way to keep the loops from sounding samey.

Additionally, you'll want to make sure that your VGSes are stereo and 22KHz in sample rate. You're likely more used to VGS files being multichannel, but the game doesn't like multichannel metaloops, so make them stereo. The sample rate not only helps to keep the file size down (which you can fairly easily crash the game using too big a metaloop, anything over 5MB is probably excessive), but the cut in the high end will get you closer to that authentic Harmonix metaloop sound.

Adding the files and editing synth.dta

Frankly, at this stage, you've already done the hard part. Metaloops go in sfx/streams in the ARK. Depending on what disc you're modifying, you'll find the existing ones in there, along with a credits.vgs. You don't need to name them anything specific (because we'll be adding the filename to a script in a moment), but metaloop_[shortname].vgs is a good template.

Now check config/synth.dta. This is a configuration file for a lot of internal audio settings, but most importantly, it's the (music) array in (metamusic) the game will look at to load a random metaloop. Add the filename to this array, sans extension:

(metamusic
   (volume -6.0)
   (fade_rate 1.0)
   (music metaloop_exile metaloop_iwannabesedated metaloop_salvation metaloop_teenagers metaloop_trooper)
   (background_sfx
      (sequence meta_people)
      (min_delay_sec 10)
      (max_delay_sec 20))
   (play_from_memory TRUE)
   (use_rnd_heap FALSE))

If you ever get a crash coming into the meta, you likely have a metaloop the game either can't find or chokes on. Boot your disc in debug to see. If you get some kind of heap alloc fail, you'll know your metaloops are too big and you should reduce their length and sample rate.