View Full Version : [Tutorial] Editing MIDIs Voicegroups.

October 2nd, 2008, 11:59 PM
Hey all, I am TRANSPARANCY and I will be giving you a tutorial on how to Edit the voicegroups of a MIDI. Magnius has pretty much covered everything on FR and LGs' Voicegroups so I will give credit to him for the information. Now... onto the actual tutorial.

There will be a few things you need... all can be found on google and PC.


Magnius' "A document on Fire Red voice groups and the instruments they play."
Magnius' "Guide to Pokemon Music Hacking"
2x CLEAN Pokemon FireRed ROMs (FR is the one I am using)
Anvil Studio (google it, I will provide a link later)
Sappy+mid2agb (can be found in Magnius' "Guide to Pokemon Music Hacking" thread)
A Pokemon GB/C/A/(DS?) MIDI (A GBC one is supplied for you in the link)
Free Space Finder (FSF?): Optional Tool when looking for free offsets in a ROM.

Level of skill needed: 2/5
Good Listening Skills
The ability to read.

and thats pretty much it.

(Since I lack the15 posts needed for links and images, i will need to get 15 posts then post images to help you, but for now, i will explain it in as much detail as i can before it gets too confusing.

Level of skill needed: 2/5

Lets begin:

Part 1: Downloading and installing Anvil Studio.

To get Anvil Studio... type in Anvil Studio in Google and download it. Install Anvil Studio in C:/Program Files/Anvil Studio. Once it has finished installing shortcut to Anvil Studio should appear on your desktop. If not go to C:/Program Files/Anvil Studio, copy the .exe file, right click on your desktop and say paste shortcut.
Thats one part done.

Part 2: Downloading and installing Sappy and mid2agb.

Now head over to Mangius' Music Hacking thread and there should be a link to getting Sappy and mid2agb right near the top. Click on it and download the .rar file and extract it with winRAR. Again Place the file Rom_tools on the desktop. Go into Rom_Tools/mid2agb and copy everything in the folder. Paste this stuff in the Sappy folder. You can now delete the mid2agb folder. You can choose to rename the folder Rom_tools to something else.

Part 3: Getting a MIDI

For this you will need to so web hunting and it can take awhile to find the right midi file, something not too large like the ones from vgmusic as those are more remixes than rips.

I have provided you with one in the attachments.
Drop this MIDI into the rom_tools/sappy folder.

Part 4: Editing the MIDI file.

Editing the MIDI file is easy, just follow these simple steps:

1: open Anvil Studio.
2: Open your MIDI by going to File->Open
3: Select your MIDI, copy it and paste it again. Rename it so you know it is the edited one and open it.

Now this part will be confusing without images so i'll try and explain it in as much detail as possible.

You SHOULD appear at a screen with a table set out like this:

[] | Track Name | Type | on | Device| Channel | Instrument | Vol| Pan | FX | Time Shift|----->|

[]= the current track viewed

Track Name= name of the track

type= If it is just an instrument/rhythm/audio/audio24
**Instrument= Basic beats
**rhythm/audio/audio24= useless to us.

Device= Should be set to General MIDI

Channel= Keeps track of what track is what, a max of 16 tracks can be used in a MIDI. Can not have the same track.

INSTRUMENT= The most important part of this tutorial is the instruments, instruments are used by the MIDI device to identify a sound such as a flute. Only certain MIDI instruments will work with a GBA ROM.

Vol= The volume of the track, sometimes the tracks volume changes so it is good to leave them as is.

Pan= If the sound comes out of the left, right or both speakers, again some tracks panning changes so it is good to leave them as is.

FX= Effects, no important use in a GBA MIDI.

Time Shift= Audio Tracks only.

----->= The track itself.

Ok now that stuff has been explained, the only thing we will need now is the INSTRUMENT Collum.
If you wish to edit and experiment with the MIDI, then go to View-> Piano Roll Editor and you will see the track.

Now open up Magnius' "A document on Fire Red voice groups and the instruments they play." thread and scroll down to a offset, we will be using the offset 0x490574.

Now this is where your listening skills come in: Click on the second track, go to the instruments column and click on the instrument called "Acoustic Grand". A new window should now open and a list of instruments will appear. Now refer to Magnius' Chart and find an instrument... lets pick instrument number 24 from the chart... now since the chart and Anvil Studios one is off by 1, go

X= The Instrument Number from the chart.
Y= The answer given from adding 1 to X/[]

So select number 25 and say OK. The tracks instrument has now been changed.

Now do this with every other track, by using the above equation and the chart.

Test it out in Anvil Studio and say file->save when you are satisfied.

Part 5: Using mid2agb

(Magnius has covered this part a bit more than myself.)

All you need to do is get your midi and make sure it is in the Sappy folder. Drag the MIDI over mid2agb and a file with your midi track should appear with an .s extention on the end.

If not then it is probably the wrong type of MIDI file. Sometimes this works: Open the MIDI in Anvil Studio, go to Export Midi-Format 0 file, then save it in the Sappy folder. If it then still not works, then it must be the MIDI itself.

Part 6: Using Sappy

(Magnius has covered this part a bit more than myself.)

I will put it simple for you people.

1. Open up Sappy then open up your FireRed ROM. Make sure you have 2 copies of it.
2. Go to the dropbox and select "Pokemon Theme".
3. Now go to Tasks -> Assemble Song
4. Click on the [...] box and search for your .s file
5. Place the offset 0x490574 into the box that says "voicegroup offset"
6. If you know how to use Free Space Finder then use that tool and find a free offset in the ROM. (If you don't know how to, im pretty sure that there is a tutorial somewhere on PC about FSF) If not, type in 0x800000 and say ASSEMBLE THAT UGLY THING! Then say Yes to the next message.
7. Press Play. Notice how it sounds different from Anvil Studio? Does it sound like some ancient Polyphonic ringtone? This is how it will sound in your ROM. You can continue fixing it but you should always use a clean ROM. If nothing happens when ingame then follow these steps.

8. Go to Tasks-> Export Tracks. Tick all the tracks and type in $TTitle Screen.
9. Go and open your clean FR ROM
10. Go to Tasks -> Import Tracks. Tick all the files with a file like this 0Title Screen, 1,2, ect.
11. Make sure that the Voice Group offset is set to 0x490574 and the Track Offset is set to 0x800000 or the Offset you found with FSF.
12. It should now work in your ROM.

Well... Thats it. Any questions don't hesitate to ask me and as soon as i get 15 posts, ill update the thread with images.

Again in the attachment i will provide you with a MIDI Track: The Title Screen from G/S/C


October 3rd, 2008, 8:44 AM
Awsome tut i see u use same way i use that good,instrumental adaptation for gba voices groups.

October 3rd, 2008, 9:20 AM
It's good, Images for the newbs would help
but, I already know how to do this..

October 3rd, 2008, 10:00 AM
It's kinda logical though, if you can count 1 +1 together...
Magnius reffered to Anvil Studio as well, and he posted document with offsets and instruments, so it's logical that u need to open the midi in AS and adjust the instruments.
(that's no negative critism, I just think it wouldn't be hard to find out alone ^^)

But anyway, it's well explained and everything's summed up here. Nice work ;)

also, I think you could post links to your images and just replace the http with hxxp, the user won't see the image directly but if they replace the hxxp with http they can open the images in another tab :)

October 3rd, 2008, 10:52 AM
@ master_track: But still you would prefer something like this than some1 nagging at you all day wouldn't you?

Thanks for all yr feedback, i gather you understood it well.

I know this sounds noobish of me but can some1 tell me how i can find an offset using a HEX editor?
Cause I kinda forgot how to search for them. BTW that will help write my next part of the tutorial.

October 3rd, 2008, 12:56 PM
@ master_track: But still you would prefer something like this than some1 nagging at you all day wouldn't you?

Thanks for all yr feedback, i gather you understood it well.

I know this sounds noobish of me but can some1 tell me how i can find an offset using a HEX editor?
Cause I kinda forgot how to search for them. BTW that will help write my next part of the tutorial.
Depending on your ROM size, you'd need to use the "08" which points to any offset from 0x0 - 0xFFFFFF

16 MB - (offset backwards) 08
Example - 123456 = search for 56 34 12 08(no spaces)

32 MB - You should use 09 instead of 08, simple.

October 26th, 2008, 9:20 PM
so do we change instrument for the first track tooo?

i always get runtime error 13" type mismatch error for sappy 05 and and sappy 06 wont work at al on my pc i have vista and i couldnt get it to wooork on my friends XP computer

November 22nd, 2008, 12:37 AM
sorry for the late response =/

Well it depends, I'd just experiment with different MIDIs to see which 1's work. Also with the thing of the first line, if its blank, i just leave it.

With the runtime error, i would have no idea because I'm using Windows XP.

I will be getting around to posting images for the tutorial soon, hopefully it will help even more.

November 23rd, 2008, 4:47 PM
That a great job you did there !!!
now i remember do you know mid editor powerful than anivil studio?

November 27th, 2008, 5:48 PM
I only get assemble halted. When I press play, Sappy just closes. Can anyone tell what am I doing wrong?

November 27th, 2008, 7:26 PM
Off course there 2 probability:
1.The mid is contain unsuppoted byte by sappy-[in this situation just play the song ingame. (by the emulator)]

2.The mid is contain alot of irigularties-[Not supported at all by sappy and by the game.]

3. 100 Posts XD