Well, with the instrument wavs, you want to check two things.
1) There are actually three kind of music datas in Pokemon - Regular (First row info row, second row wav. offset, third row property row, which always works normally if set as FFFF FF7F) Two Offset (First row info row, second row offset to intstruments (NOT THE ACTUAL WAVS!!!), third row programming offset), and Generated (First row tells the generator what to do, second and third rows are basically blank).
Golden Sun's instruments, with the important exception of the Drum Kit and several generated instruments (As far as I know they are Lead 1 (Square); used in battle themes and the intro of TLA; Lead 2 (Sawtooth); used only in Saturos's battle theme I believe; Lead 4 (Charang); I'm not sure if I have the midi number right on this one, but it's the Oricana-like instrument used in Ivan's theme and Mars Lighthouse; and I don't remember what the midi number for this one is but it's used in Garoh and sounds like a low whistle).
The pan flute is not one of these. So continue.
Find the flute offset (or, you can just add it somewhere in your voicegroup). Let's say you want to import the pan flute at 0x8700000. Simply copy and paste from Golden Sun (I don't remember the exact offset at the moment - I'll get it to you ASAP). Then, add the offset into your voicegroup somewhere. You know how it goes.
2) If you copied it correctly.
A very important thing to note is that the first four rows of the wav. tells VERY important information about an instrument.
Here's a sample I made up:
Okay, the first row should always be a "0000 0000" or a "0000 0040". The former tells the instrument that it should not repeat the sound. The latter tells the instrument that it should repeat the sound for as long as the note is held (the difference between a snare and the String Ensamble, for example).
The second row has some random stuff in the first halfword. Don't know what that all means so skip it. The second halfword tells you the frequency for the sound. Golden Sun's frequencies, unlike Pokemon's, are all set at the same value (It's 0x0158). To transfer it to Pokemon, you may need to adjust the frequency. To make it an octave higher, double this number. To lower it an octave, half it.
The third row is only used if the first row reads "0000 0040". The third row tells the instrument when to begin its repeat sound. The fourth row tells it how many bytes long the sound is (in Hex, of course).
Sometimes a sound still won't work. Try moving it. Some of my sounds are located around 0x8280000, where the old maps used to be (which were moved using Advancemap).
Most of Golden Sun's instrument wav.s range in size from like 2300 bytes (Like in instruments like the Celesta) to over 16300 bytes (like in the String Ensamble)! The Pan flute is smaller, though, around 9470 bytes. Most of the time, the end of an instrument is loaded with 0x00 bytes, the quietest sound.
Thank you so much. Trial and error by editing volume in Anvil Studio was so much harder. Man, the older version of sappy is so useful.. tells more info than the newer one. If you were wondering why I cared so much about volume its because about 50% of the songs I'm importing (a variety of like.. zelda, gsc, some golden sun, f-zero, etc.) use the distortion guitar and overdriven guitar. I have to lower those two instruments' volumes like crazy so that the music doesn't make crackling noises.
Also, I was wondering. Do you know exactly how much hex data you should copy when you want to copy the instrument (such as pan flute) from another game and transplant it onto Ruby? Becuase what I did, I took a whole bunch of hex data and just threw it in there. All the instruments I put worked, but some are kinda wierd. For example, distortion guitar long note plays a wierd noise. Another example is that acoustic guitar steel plays a pan flute noise when there's a high pitch note.
Oh yes, for some reason I forgot to tell you - I was really tired when I sent you that last PM. I really had no clue what the hell I was thinking then XD Don't worry, I understand the Tutorial just fine, and I got it to work right on my first go.
Well, you can't change an actual wav file's volume without using Wav editing software, but yes, there is a way to change volume.
For example, I'm assuming you're using a clean Ruby rom.
Open up sappy, and load the song. For this simple tutorial, I'll be using the Regi Battle Song. Let's say that I want the first instrument to be super loud. What I would do is press play, then press stop right after that. I'll not only get the offsets to the individual tracks (which you already know), but I'll get a bunch of other junk too.
Some things you will see:
Rel - I'm not entirely sure what this is.
Len - Length of the note.
Note - Note number/value
Velocity - Not entirely sure what this is either.
? - Well, nobody really knows. Maybe just a buffer.
Mod - Modulation, it's used in many Golden Sun's songs, but far less often in Pokemon's. This affects how the song sounds. Invalid modulations produced by Sappy's "export Midi" command crash Sappy.
Pitch - Used in pitch bends, such as in Magma Rock (I think it's used in Fog of Mt. Pyre but I'm not certain)
Pan - Pan is whether you hear the song from the left speaker or the right.
Now here comes the important parts:
Voic - Voice number. Same as midi number minus 1. For example, Lead 1 (Square) is Midi number 81, but in Sappy, it displays 80 (this is because midi numbers usually start at 1, but Sappy and the GBA's music system begin at 0).
Vol - This is what you're looking for. This is the volume for a track. For the first track of the song mentioned above, it says the volume is 80 (Hex 50).
So we go to our first track, which is located at 0x86ACA58. Here we see:
Now, the italicized part is the instrument number. Yes, you can change instruments a lot easier now!
The bold part is where most likely our volume is located.
The underlined part should NEVER be changed.
Now, I change the bolded place to 0x7F. This is the loudest a track can be. Now the track is much louder than the other tracks. Changing it to 0x01 is the quietest you can make it, so, if trying to make a track quiet, try going with a lower hex number than the rest of the tracks.
By the way, it should be noted that this works only most of the time. If the volume doesn't change, it might be that Sappy messed up on finding the volume of the song. Look for it byte by byte then (it's a real pain but it shouldn't be far from where I pointed out).
I was just wondering, do you know how to tune down an instrument/track's volume in hex? Because like, no matte how much I try to tune it down its like 10x louder than other songs in the game.
Lol, it's okay, I just realized it right after I sent the PM
I'll see what I can do. Who knows, we could have just found some other programming stuffies. The GS:TLA's programming is already in my rom - I just need to find the pointer to the old programming so I can repoint it to the new.
You don't have to try it if you don't want to. I can still loop them the other way.
EDIT: Nevermind. I think I know why now. You see if I do each track one by one, like WorkA, WorkB, WorkC, etc. and convert them to GBA and save them as seperate tracks they can loop because each track is like a different song. However, if I do it my method and just compile the whole song, each track has a different amount of measures and beats and each track is part of one song. So basically, the loop doesn't work because each track has to have the same amount of measures and same amount of beats in its last measure as all the other tracks in which it is part of the song in order for it to loop successfully (If each track is part of one song; meaning all the tracks were assembled together).
Hmmmm... that's weird. You might have your offset off. If it isn't, then I really don't know. If that happened to me I'd probably just reinsert the track and make sure I didn't screw something up.
To be honest, sometimes I mess up on the repeat because I change a 0x1B byte rather than a 0xB1 byte. Ugh, I honestly don't know. I'd go through everything and make sure it all lines up, that's all I'd say.
Whoops. I meant B1. It did end with B1. I think my problem's that the original song was like 12 tracks, and I cut it down to 8 so that it sounds good in game. Then, I took those 8 tracks and added B1 and B2 bytes with the pointers in between them.
Well anyways it worked on one song so that's good. For the ones that won't work, I'll loop em the old fashion way using notepad.