• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Custom Music Guide that Makes Sense

lanabo

Smash Apprentice
Joined
Jan 24, 2011
Messages
80
I don't like the guides that we currently have for custom music in SSBM. One doesn't make any sense and is more concerned about showboating irrelevant technicalities of the hps format and the other one doesn't work at all.

I thought it was unfortunate that the only guides for SSBM custom stage music were utter crap, so I decided to make my own video tutorials. There is one tutorial for music that loops at a specific time (custom loop) and another for songs that simply loop from beginning to end (basic loop).

BASIC LOOP:
Your song starts at the beginning and plays to the end. Then it plays from the beginning again.

CUSTOM LOOP:
Your song has some sort of intro (or not) and plays to the end. Then it loops back to some point in the middle of the song, not at the very beginning.

Here are the things you will need:
Audacity
If you know what you are doing, you can use a different audio editing program.
SSBM Audio Tools and Replacement Files

Please download and install Audacity and the .rar file before trying to follow the video tutorials. I highly recommend turning on annotations.

NOTE: If you know that your song/loop is less than 3 Minutes 38 Seconds, you can use Offsets_GARDEN.txt and garden.hps instead of Offsets.txt and NameOfStage.hps. This will save you file space, and you will not have to go through the trouble of hex editing the end of the .hps file.

Part 1: Prepping Your Game Files

Part 2A: Editing your Sound File (Custom Loop)

Part 2B: Editing Sound, Hex, and Saving Sound File (Basic Loop)

Part 3A: Hex Editing and Saving Sound File (Custom Loop)
 
Last edited:

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Tagging this to watch later. I didn't like the other guide because it assumed that you already knew what everything did before reading the guide.

Edit: Okay, so I've watched parts 1 and 2 so far, and I do have a few things to say about them.

Part 1: Can you explain what those files that you're replacing actually are, and how replacing them "prepares" your game for custom music?

Part 2: As someone who has spent a lot of time in the past meticulously looping songs down to the individual sample for Brawl, I sort of cringed at your uses of "pretty good" and "close enough" >_> If people are going to make custom music, I'd strongly encourage everyone to put in the extra effort to make sure that they loop perfectly, because if it's poorly made then it defeats the purpose of hacking your game in the first place.

Second, I was initially shocked that your solution to filling up the empty space was to edit the tempo of the song. I mean, by doing that you're technically changing the song itself from the original, even if it may be less than a second and would be hard to perceive if you're not listening super closely. But then I realized, for this game you have to set the start loop and end loop point (in Brawl you only have to set the start, and the end can be whatever). Does that mean that every song in the game has a length that's a multiple of 1.792, and if you have a song that in between that then there's nothing you can do? I need to investigate this more.

I haven't watched part 3 yet, which is the actual part that I needed, to learn how to actually put the songs into the game. I do want to try this soon though. My goal would be to find an easy way to convert Brawl songs into Melee songs, since all the grunt work (finding the loop points) is already done for us. All we'd have to do is use a bit of math to shift the loop points into Melee-accessible numbers.
 
Last edited:

lanabo

Smash Apprentice
Joined
Jan 24, 2011
Messages
80
@ hotdogturtle hotdogturtle , thanks for the feedback. I'll try my best to answer your questions.

Part 1: Those files are the "How to Play" and "Special Movie" videos that can be found in game by going to Data > Archives. We're replacing these videos with Ganon's Adventure mode ending movie (which is the smallest movie file IIRC), essentially freeing up around 480MB of space on the iso. We do this because, as far as I know, there's a limit to how large the .iso file can be, and when we edit our songs into the game's song files, they will usually be larger and take up a lot of space. By giving ourselves this 480MB buffer, we allow ourselves the opportunity to insert more "stuff" into the game (in this case, music). If we don't replace these files and replace an existing .hps music file with one that is larger in size, the .iso will not be able to be built OR will not be playable.

Part 2: Sorry, I noticed that as well (along with my endless use of the phrases/words "right" and "so,"). Personally, I couldn't stand to listen to myself talk for longer than a minute.

To address your issue, though, I personally think that the margin of error in the video is acceptable given the limitations of Audacity. I usually aim for an "error" of within 0.001 seconds because during the playback it's all but impossible to detect such a small gap. Ideally, I'd end each loop on the dot exactly when the offset ends, but I haven't found a way to consistently do this with Audacity. If you're aware of another program that can do this (or a way to do it with Audacity), I'd be happy to remake the videos with that software instead.

As to the second part of the question, the answer is yes AFAIK. There are other .hps files that you can use with different offsets that aren't multiples of 1.792. For example, the .hps file for Venom starts with 7 offsets each spaces 1.792 secs apart, then has 8 offsets that are length 1.739 in length. Afterwards, the remaining offsets are all 1.737 seconds in length until the end of the piece. I haven't personally looked through all of the .hps file offsets, but I can tell you that the few that I've dealt with have all started with offsets of length 1.792 and deviated afterwards.

I use the 'change tempo tool' because it is the only way that I'm aware of that allows the audio to "shift" to one of the end points dictated by the offset lengths without severely affecting the quality of the playback (change tempo tries its best to preserve the original pitch and speed of the section that it affects).

The .hps file supplied in the .rar archive is the one that has the longest length. This is done so that song files up to 12:59 in length are able to be encoded into the .hps file without any problems in playback. As far as I know (and I hope I'm wrong about this), the only .hps files that are compatible with SSBM are those that came from SSBM originally. Consequently:
1. The longest possible song length is 12:59 (since the .hps file in SSBM with the most offsets has offsets up to 12:59)
2. For the best possible playback, songs/loops must end as close as possible to the ending time corresponding to an offset in one of SSBM's .hps files (usually, but not always, a multiple of 1.7xx seconds in length)

I hope that you or someone else can find a way to achieve that goal! I'll be the first to admit that my method is a huge PITA and the farthest thing from perfect, but it's the best way that I've found to insert custom music into SSBM.
 
Last edited:

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
As far as I know (and I hope I'm wrong about this), the only .hps files that are compatible with SSBM are those that came from SSBM originally.
Incorrect. (inb4happy). HPS files from Kirby Air Ride can be used as well. It's just that nobody has made one from scratch before.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Thanks lanabo, that did answer a few of my questions. My main thing when watching the whole video was that I couldn't tell how much of the process was due to limitations of the .hps system, and how much was just due to the community's lack of knowledge on how to work around the limitations. Some stuff though, like the (time * 32000 * (16/14)) + 15 formula, what are those numbers and why do they work? It seems like very few people know how this stuff actually works, and just follow the guides word for word without understanding the meaning behind it. If we had more technically inclined people still researching stuff, we might be able to make more advancements.

If you have a song that's 3 minutes long before the loop, will it not work in a Melee hps that was originally 2 minutes long (and thus the 12:59 file becomes necessary)? It would be nice, at least for shorter songs, if we could choose which hps we used as a base in order to have a wider variety of possible end points, such as the Venom example that you mentioned.

Say you have a song that has an end point of 72.555. The closest offsets are 71.662 and 73.454. According to the guides, you would edit the song itself so the end point would change to one of those two lengths. But what if you didn't, and you tried to build the .hps from a 72.555 sec .wav? If you hexed the end point to be 73.454, would it have a second of silence before looping the music? If you used 71.662, would it loop early and completely ignore the last second of the wav? Or would they just crash since they weren't made right? And what if you converted 72.555 to hex for the last step instead of using one of the offsets?

Sorry that I turned this into a Q&A, and also if my last set of questions sounds stupid (half expecting "no, none of them will work"), but I'm just trying to understand this better to see if there's any possible way that we can have more control over this whole thing.


Edit: Ok the last part I posted was super dumb lol. None of it works.
 
Last edited:

lanabo

Smash Apprentice
Joined
Jan 24, 2011
Messages
80
hotdogturtle, unfortunately I'm as much in the dark as you are regarding a majority of the technical process.

Firstly, regarding the 32000 formula - I'm not sure what those numbers are or why they work. My best guess is that this formula accurately converts time (in seconds) from decimal to hexadecimal, which is the form of data that the .hps file reads when determining when/where to loop and end. I wish we had more technically inclined people as well - right now all we have are procedures that we don't fully understand.

To answer your second question, yes. If you try to put a longer song into a "smaller" .hps file, then the song will playback at most the original length of the .hps file. This is why I opted to provide the largest possible length .hps file in the .rar. I agree that choosing shorter .hps files would be of benefit, and this is something that I will look into when I have the time. Unfortunately, I have summer school + travel johns so I can't really get on that right away. But it's absolutely something that I (or someone else) could get done in a very reasonable amount of time.

For your example question, I decided to test it out myself. I used the original Venom.hps, which has the following two last offsets:
00213580 @ 59.463 secs
00222de0 @ 61.200 secs
After 61.200 secs, the .hps file says to loop back to 00070160 @ 12.541 secs.


For the first case, I simply encoded a 60.000 second .wav file into the .hps file and did no further hex editing. There was a noticeable period of silence at exactly the 60 second mark which was at least 1.3 seconds in length according to my stopwatch. At the end of the silence, a click/pop sound was heard (similar to the sound of audio clipping), and the song then looped back to 12.541 seconds. This continued indefinitely.

For the second case, I encoded the 60.000 second .wav file into Venom and made the following adjustments:
-Headers 18 and 50 were edited to correspond to the following decimal value converted to hex: (59.463 * 32000 * 16/14) + 15, which was 00212EC5. From what I understand, this means that the file thinks that the 'end' is at 59.463 seconds.

The result was that there was a period of silence beginning sometime before 59.949 seconds but after 59 seconds which was at least 1 second in length. At the end of the silence, a click/pop sound was heard and the song looped back to 12.541 seconds, continuing indefinitely.

For the third case, I encoded the 60 second file into Venom and made the following adjustment:
-Headers 18 and 50 were edited to correspond to the following decimal value converted to hex: (60.000 * 32000 * 16/14) +15, which was 00217B7C. From what I understand, this means the .hps file thinks the 'end' is at 60.000 seconds.

The result was that there was a period of silence beginning sometime before 60.634 seconds but after 60.000 seconds which was at least 1 second in length. At the end of the silence, a click/pop sound was heard and the song looped back to 12.541 seconds, continuing indefinitely.

I apologize about the uncertainty in the times that I gave. I used a stopwatch to measure the times when silence occurred and ended during playback. No need to apologize for the Q&A! It only serves to further our understanding of how these files work.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Yeah you pretty much did what I did to test it. Either it ends early, or it has silence/glitch noise before the loop. It doesn't seem like there's a way to get around the end point restriction, which sucks. I'm gonna see if I can find some more of the original HPSes so I can get a list of their different offsets at least.

If other HPSes from different Gamecube games apparently work, do we know if they have the same length restrictions? Maybe they're like these and they're all in 1.7xx second blocks that vary by song. I don't have any to test it with though.

Edit: Wait, how can you see the list of offsets from hps_insert? I thought that it would spit out a text log like the one that comes in the rar, but I guess you added that manually or something, because the program auto-closes when the hps is finished and there's no way to copy it. I'm trying to test garden.hps (the second longest song).

Never mind, I found the code to do this too.

Here are the offsets for garden.hps, the second longest song behind the special movie one:


offset:00000080 length:00008000 secs:1.792 total secs:0.000
offset:000100a0 length:00008000 secs:1.792 total secs:1.792
offset:000200c0 length:00008000 secs:1.792 total secs:3.583
offset:000300e0 length:00008000 secs:1.792 total secs:5.375
offset:00040100 length:00008000 secs:1.792 total secs:7.166
offset:00050120 length:00008000 secs:1.792 total secs:8.958
offset:00060140 length:00008000 secs:1.792 total secs:10.749
offset:00070160 length:00008000 secs:1.792 total secs:12.541
offset:00080180 length:00008000 secs:1.792 total secs:14.333
offset:000901a0 length:00008000 secs:1.792 total secs:16.124
offset:000a01c0 length:00008000 secs:1.792 total secs:17.916
offset:000b01e0 length:00008000 secs:1.792 total secs:19.707
offset:000c0200 length:00008000 secs:1.792 total secs:21.499
offset:000d0220 length:00008000 secs:1.792 total secs:23.290
offset:000e0240 length:00007f00 secs:1.778 total secs:25.082
offset:000f0060 length:00007f00 secs:1.778 total secs:26.859
offset:000ffe80 length:00007f00 secs:1.778 total secs:28.637
offset:0010fca0 length:00007f00 secs:1.778 total secs:30.415
offset:0011fac0 length:00007f00 secs:1.778 total secs:32.192
offset:0012f8e0 length:00007f00 secs:1.778 total secs:33.970
offset:0013f700 length:00007f00 secs:1.778 total secs:35.747
offset:0014f520 length:00007f00 secs:1.778 total secs:37.525
offset:0015f340 length:00007f00 secs:1.778 total secs:39.302
offset:0016f160 length:00007f00 secs:1.778 total secs:41.080
offset:0017ef80 length:00007f00 secs:1.778 total secs:42.858
offset:0018eda0 length:00007f00 secs:1.778 total secs:44.635
offset:0019ebc0 length:00007f00 secs:1.778 total secs:46.413
offset:001ae9e0 length:00007f00 secs:1.778 total secs:48.190
offset:001be800 length:00007f00 secs:1.778 total secs:49.968
offset:001ce620 length:00007f00 secs:1.778 total secs:51.745
offset:001de440 length:00007f00 secs:1.778 total secs:53.523
offset:001ee260 length:00007f00 secs:1.778 total secs:55.300
offset:001fe080 length:00007f00 secs:1.778 total secs:57.078
offset:0020dea0 length:00007f00 secs:1.778 total secs:58.856
offset:0021dcc0 length:00007f00 secs:1.778 total secs:60.633
offset:0022dae0 length:00007f00 secs:1.778 total secs:62.411
offset:0023d900 length:00007f00 secs:1.778 total secs:64.188
offset:0024d720 length:00007f00 secs:1.778 total secs:65.966
offset:0025d540 length:00007f00 secs:1.778 total secs:67.743
offset:0026d360 length:00007f00 secs:1.778 total secs:69.521
offset:0027d180 length:00007f00 secs:1.778 total secs:71.299
offset:0028cfa0 length:00007f00 secs:1.778 total secs:73.076
offset:0029cdc0 length:00007f00 secs:1.778 total secs:74.854
offset:002acbe0 length:00007f00 secs:1.778 total secs:76.631
offset:002bca00 length:00007f00 secs:1.778 total secs:78.409
offset:002cc820 length:00007f00 secs:1.778 total secs:80.186
offset:002dc640 length:00007f00 secs:1.778 total secs:81.964
offset:002ec460 length:00007f00 secs:1.778 total secs:83.742
offset:002fc280 length:00007f00 secs:1.778 total secs:85.519
offset:0030c0a0 length:00007f00 secs:1.778 total secs:87.297
offset:0031bec0 length:00007f00 secs:1.778 total secs:89.074
offset:0032bce0 length:00007f00 secs:1.778 total secs:90.852
offset:0033bb00 length:00007f00 secs:1.778 total secs:92.629
offset:0034b920 length:00007f00 secs:1.778 total secs:94.407
offset:0035b740 length:00007f00 secs:1.778 total secs:96.184
offset:0036b560 length:00007f00 secs:1.778 total secs:97.962
offset:0037b380 length:00007f00 secs:1.778 total secs:99.740
offset:0038b1a0 length:00007f00 secs:1.778 total secs:101.517
offset:0039afc0 length:00007f00 secs:1.778 total secs:103.295
offset:003aade0 length:00007f00 secs:1.778 total secs:105.072
offset:003bac00 length:00007f00 secs:1.778 total secs:106.850
offset:003caa20 length:00007f00 secs:1.778 total secs:108.627
offset:003da840 length:00007f00 secs:1.778 total secs:110.405
offset:003ea660 length:00007f00 secs:1.778 total secs:112.183
offset:003fa480 length:00007f00 secs:1.778 total secs:113.960
offset:0040a2a0 length:00007f00 secs:1.778 total secs:115.738
offset:0041a0c0 length:00007f00 secs:1.778 total secs:117.515
offset:00429ee0 length:00007f00 secs:1.778 total secs:119.293
offset:00439d00 length:00007f00 secs:1.778 total secs:121.070
offset:00449b20 length:00007f00 secs:1.778 total secs:122.848
offset:00459940 length:00007f00 secs:1.778 total secs:124.626
offset:00469760 length:00007f00 secs:1.778 total secs:126.403
offset:00479580 length:00007f00 secs:1.778 total secs:128.181
offset:004893a0 length:00007f00 secs:1.778 total secs:129.958
offset:004991c0 length:00007f00 secs:1.778 total secs:131.736
offset:004a8fe0 length:00007f00 secs:1.778 total secs:133.513
offset:004b8e00 length:00007ee0 secs:1.776 total secs:135.291
offset:004c8be0 length:00007ee0 secs:1.776 total secs:137.067
offset:004d89c0 length:00007ee0 secs:1.776 total secs:138.843
offset:004e87a0 length:00007ee0 secs:1.776 total secs:140.618
offset:004f8580 length:00007ee0 secs:1.776 total secs:142.394
offset:00508360 length:00007ee0 secs:1.776 total secs:144.170
offset:00518140 length:00007ee0 secs:1.776 total secs:145.946
offset:00527f20 length:00007ee0 secs:1.776 total secs:147.722
offset:00537d00 length:00007ee0 secs:1.776 total secs:149.497
offset:00547ae0 length:00007ee0 secs:1.776 total secs:151.273
offset:005578c0 length:00007ee0 secs:1.776 total secs:153.049
offset:005676a0 length:00007ee0 secs:1.776 total secs:154.825
offset:00577480 length:00007ee0 secs:1.776 total secs:156.601
offset:00587260 length:00007ee0 secs:1.776 total secs:158.377
offset:00597040 length:00007ee0 secs:1.776 total secs:160.152
offset:005a6e20 length:00007ee0 secs:1.776 total secs:161.928
offset:005b6c00 length:00007ee0 secs:1.776 total secs:163.704
offset:005c69e0 length:00007ee0 secs:1.776 total secs:165.480
offset:005d67c0 length:00007ee0 secs:1.776 total secs:167.256
offset:005e65a0 length:00007ee0 secs:1.776 total secs:169.031
offset:005f6380 length:00007ee0 secs:1.776 total secs:170.807
offset:00606160 length:00007ee0 secs:1.776 total secs:172.583
offset:00615f40 length:00007ee0 secs:1.776 total secs:174.359
offset:00625d20 length:00007ee0 secs:1.776 total secs:176.135
offset:00635b00 length:00007ee0 secs:1.776 total secs:177.911
offset:006458e0 length:00007ee0 secs:1.776 total secs:179.686
offset:006556c0 length:00007ee0 secs:1.776 total secs:181.462
offset:006654a0 length:00007ee0 secs:1.776 total secs:183.238
offset:00675280 length:00007ee0 secs:1.776 total secs:185.014
offset:00685060 length:00007ee0 secs:1.776 total secs:186.790
offset:00694e40 length:00007ee0 secs:1.776 total secs:188.565
offset:006a4c20 length:00007ee0 secs:1.776 total secs:190.341
offset:006b4a00 length:00007ee0 secs:1.776 total secs:192.117
offset:006c47e0 length:00007ee0 secs:1.776 total secs:193.893
offset:006d45c0 length:00007ee0 secs:1.776 total secs:195.669
offset:006e43a0 length:00007ee0 secs:1.776 total secs:197.445
offset:006f4180 length:00007ee0 secs:1.776 total secs:199.220
offset:00703f60 length:00007ee0 secs:1.776 total secs:200.996
offset:00713d40 length:00007ee0 secs:1.776 total secs:202.772
offset:00723b20 length:00007ee0 secs:1.776 total secs:204.548
offset:00733900 length:00007ee0 secs:1.776 total secs:206.324
offset:007436e0 length:00007ee0 secs:1.776 total secs:208.099
offset:007534c0 length:00007ee0 secs:1.776 total secs:209.875
offset:007632a0 length:00007ee0 secs:1.776 total secs:211.651
offset:00773080 length:00007ee0 secs:1.776 total secs:213.427
offset:00782e60 length:00007ee0 secs:1.776 total secs:215.203
offset:00792c40 length:00007ee0 secs:1.776 total secs:216.979
Loop in garden.hps from offset 00792c40 back to 000e0240
123 audio blocks, 218.754 seconds

(Just a few seconds too short to fit the song that I was using for my testing... Probably should have picked a shorter song for my first one, heh)

At the very least, this should be useful for some people to save file space, so you won't have to trim the 14 minute file... This fits songs up to 3m38s, which should be enough for most songs that people want to use.
 
Last edited:

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
I really need help with this. I've followed every step in your guide for the Basic Loop hps file but for some reason when I use hps_insert.exe it just closes and generates a 0kbs hps file... I also get a "Soundfile buffer not mono!" message.

Here is a screenshot of the problem:



EDIT:
Ok, for some reason Audacity was exporting the left channel with the wrong sample rate. What I did was to export the right channel twice, which produced two identical files. After that I ran hps_insert.exe via CMD commands and it worked.

Any clue why this happened with the left channel?
 
Last edited:

lanabo

Smash Apprentice
Joined
Jan 24, 2011
Messages
80
First of all, apologies for not following up on the offsets stuff. I was on vacation and went back to school, but no johns. @ hotdogturtle hotdogturtle , thanks for the offset data. I'll update the .rar file to include garden.hps with an addendum in the OP.

@ Goxplex Goxplex , I'm not sure why that would have happened. The only reason I can think of is that the sample rate was not set correctly in Audacity (you can adjust it in the lower left corner, which I'm sure you did), or perhaps the left channel was not saved as a single Mono channel. This can happen if more than one track is selected before File > Export Selection. Other than these two reasons, I have no idea.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Oh yeah, this thing. I didn't do anything else since my last post, but I did have one idea that someone else could possibly test (probably should have posted it earlier so people could have responded a month ago).

This post breaks down the data structure for an HPS. I'm wondering it would be possible to manually hex edit the length of the final block or something. There is a [0x00 - 0x03](4bytes) - length of the block and [0x04 - 0x07](4bytes) - last byte to read in the block that could maybe work? Or something with the "length of largest block" or "samples to read" in the header? The numbers have to be stored somewhere, so if we could figure out how to edit the length of the final block, then we could create a custom end point to make perfect loops without being constrained by the game's block sizes or having to edit the length of the song.
 

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
First of all, apologies for not following up on the offsets stuff. I was on vacation and went back to school, but no johns. @ hotdogturtle hotdogturtle , thanks for the offset data. I'll update the .rar file to include garden.hps with an addendum in the OP.

@ Goxplex Goxplex , I'm not sure why that would have happened. The only reason I can think of is that the sample rate was not set correctly in Audacity (you can adjust it in the lower left corner, which I'm sure you did), or perhaps the left channel was not saved as a single Mono channel. This can happen if more than one track is selected before File > Export Selection. Other than these two reasons, I have no idea.
I did some aditional songs and there was no problem. :)

I think we should create a new Audio/Music Hacks thread. Thanks for doing this amazing guide.

PS: Here are some of the .hps I made. Hope you guys enjoy them:
- Smash 4 - Practice Stage / Preview / Custom Loop / by Goxplex
- Smash 4 - Gerudo Valley / Preview / Custom Loop / by Goxplex
- Game of Thrones - Main Theme / Preview / Normal Loop / by Goxplex​
 
Last edited:

Firejew

Smash Cadet
Joined
Jan 21, 2014
Messages
57
HPS hacking the easy way? This guide looks hard as fuark.
Check dis.
http://www.youtube.com/watch?v=SstxPRVSb1U

You'll still have some issues with loops causing audial glitches, but it's a hell of a lot faster and easier than all other methods I've seen.

Edit:
Shiaat.
http://smashboards.com/threads/hpsauto-v1-0-1-melee-music-patcher-bug-fix-update.342767/

Double Edit:
OP already posted in this thread and it didn't work well for him. I've not had any issues so far with the 6 music changes I've used. They all have the same looping issues described in the thread though: clicking for about 3 seconds before the song is looped. I assume this guide is superior and doesn't result in that issue.

Triple Quadstacked Edit Supreem:
The hardest part of everything was the creation of the custom loop. Hex editing was EZPZ.
The resulting custom loop is perfect, no clicking or silence like the automated program. Good stuff OP.
I made this: https://www.mediafire.com/folder/ddyorbw5vov25/R_U_REDY_4_DIS
Sources (channel1 and channel2, and the audacity file) are all in the folder.
You can delete ALL of the "FF"s after the actual song, right? Because 37MB to 8MB is a gigantic deal.
 
Last edited:

Wooggle

Smash Apprentice
Joined
Jul 7, 2014
Messages
83
Location
NJ, USA
I am not sure if you would want to add this to your guide or not, but this is my advice for anyone who is having difficulty looping songs properly or complains about not being able to loop the song exactly where you want.

All you have to do is manually loop the original song so that it is more than 8 minutes long. Since no match will ever go beyond 8 minutes, you will never run actually get to the end of the song so looping is not a problem. I would reccomend that you make it around 9 minutes long to account for the music running while the game is paused. You should still make the song loop incase you ever reach the end of the song, but it doesn't have to be exact.

And if anyone is wondering about the songs taking up too much space, I was able to add 11 songs (1 for each tournament legal stage, 3 more for the alternate songs on Battlefield, FD and Pokemon Stadium and 2 more for both Menu songs) that were 9 min long and were around 30mb each to the iso file, and there was still plenty of room to spare.

The songs work perfectly in game and the looping sounds flawless because I never get to the "end" of the songs.
 

Goxplex

Smash Apprentice
Joined
May 16, 2013
Messages
139
Location
Panamá
I am not sure if you would want to add this to your guide or not, but this is my advice for anyone who is having difficulty looping songs properly or complains about not being able to loop the song exactly where you want.

All you have to do is manually loop the original song so that it is more than 8 minutes long. Since no match will ever go beyond 8 minutes, you will never run actually get to the end of the song so looping is not a problem. I would reccomend that you make it around 9 minutes long to account for the music running while the game is paused. You should still make the song loop incase you ever reach the end of the song, but it doesn't have to be exact.

And if anyone is wondering about the songs taking up too much space, I was able to add 11 songs (1 for each tournament legal stage, 3 more for the alternate songs on Battlefield, FD and Pokemon Stadium and 2 more for both Menu songs) that were 9 min long and were around 30mb each to the iso file, and there was still plenty of room to spare.

The songs work perfectly in game and the looping sounds flawless because I never get to the "end" of the songs.
Could you please share those songs? :) It always nice to have new music hacks to choose.
 

Myougi

My posts are gluten free.
Joined
Mar 14, 2014
Messages
484
Location
WEST COAST BEST COAST
I am not sure if you would want to add this to your guide or not, but this is my advice for anyone who is having difficulty looping songs properly or complains about not being able to loop the song exactly where you want.

All you have to do is manually loop the original song so that it is more than 8 minutes long. Since no match will ever go beyond 8 minutes, you will never run actually get to the end of the song so looping is not a problem. I would reccomend that you make it around 9 minutes long to account for the music running while the game is paused. You should still make the song loop incase you ever reach the end of the song, but it doesn't have to be exact.

And if anyone is wondering about the songs taking up too much space, I was able to add 11 songs (1 for each tournament legal stage, 3 more for the alternate songs on Battlefield, FD and Pokemon Stadium and 2 more for both Menu songs) that were 9 min long and were around 30mb each to the iso file, and there was still plenty of room to spare.

The songs work perfectly in game and the looping sounds flawless because I never get to the "end" of the songs.
Unlike what you said the big problem with your method is still the size of the files. This can sorta be countered by putting each song file into a hex editor like HxD and erasing all the FFs at the end, if there is any but 9 minute songs are too big anyway and it might not make much of a difference. Even though you think you still have a ton of space you really don't; you're adding files and are increasing the size of the iso.

I don't recommended your method since even with the removal of the whitespace in the file (all those FFs) since the audio files will still be huge. This can become a problem especially of you burn hacked isos onto disks and whatnot so I suggest looping them the old way, it's much more efficient in the long run.
 
Last edited:

IAmProPAGANda

Smash Cadet
Joined
Feb 28, 2014
Messages
31
Location
Maryland
It seems different levels have multiple songs to pull from. Anyone know what these files are named so I can replace them?
 

Myougi

My posts are gluten free.
Joined
Mar 14, 2014
Messages
484
Location
WEST COAST BEST COAST
It seems different levels have multiple songs to pull from. Anyone know what these files are named so I can replace them?
I know there is a list out there (I'm looking for it as I post this and I'll edit this post if I find it) but my quick-fix is to just download WinAmp (it's an audio player) and the in_cube plugin to play .hps music files. It's really helpful because now you can play all the music from Melee in their highest quality and test how your tracks will sound in game before you inject them into your ISO to make sure there aren't any blips or errors.

You can download WinAmp over here and in_cube here.
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Alright guys, so I'm thinking of adding a "music list" for stages to the 20XX Pack (in some sort of fashion), where you can randomize between a select amount of songs. Along with this, I'm thinking of filling up the unused space in the next version with a bunch of custom music.

Do we know how to create completely custom HPS files in order to make the song file size as small as possible? I have no audio hacking experience whatsoever.

I've only seen one post about doing so, but I think it looks promising. @ Doq Doq have you done this before? I just don't want to be adding 30mb song files to the game, when that could be like 6-10 songs if they were made perfectly.

One of the few things that Brawl did well was the soundtrack, and there's a lot I'd like to port over to Melee. (and maybe Smash4 stuff).
 
Last edited:

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
@ Achilles1515 Achilles1515 as a matter of fact I have. Have some examples.

What basically happens is that when I make my hps tracks (the classic method, convert to wav and use hps_insert), the unused data is filled with FFFFFFFF. After properly looping the music tracks the FFFFFFFF blocks can be safely deleted, optimizing file size!
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
@ Achilles1515 Achilles1515 as a matter of fact I have. Have some examples.

What basically happens is that when I make my hps tracks (the classic method, convert to wav and use hps_insert), the unused data is filled with FFFFFFFF. After properly looping the music tracks the FFFFFFFF blocks can be safely deleted, optimizing file size!
Alright, this is great news. I haven't actually watched the vids on the OP, but if I follow them using the 15 min track, then open up the hps when finished and delete all the 0xFFFFFFFF's at the end, it will give me the smallest possible file size for that song?
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
My goal would be to find an easy way to convert Brawl songs into Melee songs, since all the grunt work (finding the loop points) is already done for us. All we'd have to do is use a bit of math to shift the loop points into Melee-accessible numbers.
Where can I find these already documented loop points for Brawl songs?
 

Doq

Smash Lord
Joined
Dec 28, 2012
Messages
1,037
Location
The Lab, Sweet Home, OR
Alright, this is great news. I haven't actually watched the vids on the OP, but if I follow them using the 15 min track, then open up the hps when finished and delete all the 0xFFFFFFFF's at the end, it will give me the smallest possible file size for that song?
Yup
Where can I find these already documented loop points for Brawl songs?
BrawlBox and open the BRSTM.
 

hotdogturtle

Smash Master
Joined
Feb 15, 2007
Messages
3,503
Where can I find these already documented loop points for Brawl songs?
In Brawl, there is no restriction on the end loop point, and the start loop point could be anything that was a multiple of 14336 samples. It's not like Melee where we have to stuff the song into a pre-defined length. There's also no distinction between songs; all BRSTM files are interchangeable.

What I was getting at is that we have tens of thousands of Brawl songs already premade at brawlcustommusic.com. If we could somehow automate, or at least streamline, the HPS process, then we could more easily convert Brawl songs to Melee (even if it involved exporting the wav from the BRSTM and manually remaking it as a HPS, that still saves us the step of having to listen to the song to find the loop point on our own, since someone else already did it). But it doesn't look like we're anywhere near being able to do that, since we've hardly made any progress on even getting the basics of HPS creation down.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
So I’ve been heavily investigating HPS files for the past day and a half, and I think I have found the best way to create music files with custom and normal loops. I’ve been ripping BRSTM files quite perfectly after figuring things out.

MeleeHPS is a far superior program than HPS_Insert.

I’ll try and explain more when I get a chance.
 

Quail4Smash

Smash Rookie
Joined
Aug 27, 2015
Messages
5
It seems that everytime I use Audacity it gives me the message "The setup files are corrupted. Please obtain a new copy of the program". Any alternative links?
 

Niche

Smash Cadet
Joined
Sep 6, 2015
Messages
27
Location
Florida
Slippi.gg
fueg#0
NNID
0hribbon
I run hps_insert and it gives me no errors but the temp.hps always comes out to have 0 KB. Any reason for this or A way to fix .this
 

DruP

Smash Rookie
Joined
Feb 3, 2015
Messages
15
Location
Seattle, WA | Chicago, IL
This guide is great, but when the song reaches the end loop point my melee crashes.
Are there FF rows I shouldn't delete? Do I have to change my offset from the preceding to the length?
 

NS23

Smash Journeyman
Joined
Jan 4, 2015
Messages
238
Location
USA
Slippi.gg
SLOK#533
I tried to download the files in the first post, but it didn't download all the files for me... what should I do?
 
Top Bottom