Jump to content

[FE7] One last music question


Avril Lavigne
 Share

Recommended Posts

I inserted a song and it worked! But I'm having issues with the voice it's producing.

Just because I was celebrating and going "oh yeah it worked hooray" and then I came across another problem.

Alright here's a picture of my problem:

post-11188-0-76082200-1434597006_thumb.png

So as you can see, the red numbers are the voices I chose. Now, the green "Square1" is the voice that it's choosing for me. I don't want that. No matter which voice I choose, it does the Square1 voice. I want it to be "Direct" (at least I think that's what I want). So how can I change this "Square1"? It's a real nuisance.

Edited by Avril Lavigne
Link to comment
Share on other sites

I already fucking told you how to do this

oh the instrument doesn't exist. go to edit voice table - at the moment the instrument is 5. you'll see a list of voices you can edit so go to 5. it'll be set up like a waveform, so it'll have a bunch of parameters to change. now find another voice that uses direct sound and copy over all the parameters such that they match. congratulations, you've set up your first instrument. if you want to change instrument you'll want to edit the pointer - you can steal the pointers from other songs as well

Edited by Agro
Link to comment
Share on other sites

I already fucking told you how to do this

Dude, I know how to change the voice in a notepad editor. I just said "the red numbers are the voices I chose. Now, the green "Square1" is the voice that it's choosing for me." IT WON'T LET ME FUCKING CHANGE THE GREEN.

No matter how many times I change the voice in notepad (between 1-127) it WILL NOT change the "Square1". So you DIDN'T tell me this. I can change the way it sounds in Sappy, but when I open the game again... It's the SQUARE voice.

Edited by Avril Lavigne
Link to comment
Share on other sites

I actually don't know what you mean by "parameters" though. I'm not really savvy in the coding language. Based on the way we've discussed things, you should know by now that I don't really know that stuff. I appreciate you telling me all of this, I really do. But you'll need to dumb it down for me if you're gonna tell me. I'm sorry but if you say something like "take the parameters" and in the program it doesn't even mention the word "parameters", I'm not gonna know what it is. You need to be more specific like "So in sappy, there's a 'Edit Voice Table' option, go there and then when you open it, you'll see the voice table in the dropdown menu. Go to 5 and it'll have dropdown menus with different options for DirectSound blah blah blah, now go to a different voice with direct sound" and then you'll need to explain... instead of use language like "copy parameters" because, like I said, no where in sappy does it specifically call anything a parameter nor do I know what that is.

Not trying to be bitch, just trying to make it easier from my perspective so you don't get so angry when I don't get it. Like when I asked how to change voices for the first time in the other thread, you just assumed that I knew it could be edited in a Notepad program. You just kind of said "VOICE 2" and I was like "lol wut".

So I might need an explanation because it's just NOT working for me. I've copied over the offsets and stuff and changed the Atk Dec Sus stuff in the voice table editor and it still sounds like complete garbage when I open it in the game.

Once again, I appreciate your help.

Link to comment
Share on other sites

Whats so hard with using zahlman song editor?
Cmon.

With all due respect, you have no idea what you're talking about. Even Zahlman now knows how inefficient and ineffective ZSE is.

Or you could just google the word "parameter" and you'd know it's the word for an arbitrary bunch of numbers. In the case of hacking "parameter" is the word you'd use for a number belonging to a command. For example, if the command is the change voices, then the parameter would be what to change the voice to. Therefore, if you come across the line "VOICE , 5", VOICE is the command and 5 is the parameter.

You're not helping me much, either. Qualitative descriptions like "it sounds like complete garbage" are useless to me. Does that mean the header didn't write correctly? Did you copy the pointer for the instrument correctly? When did it start sounding like garbage? Was there ever a point when it didn't sound like garbage? It's also important, believe or not, for me to know what kind of "garbage" you're hearing. Does part of the song play properly? Does none of it? So on, and so forth. Every single bit of information is crucial and when you leave parts of it out from sheer frustration I'm forced to give brief descriptions because A. I don't know what the problem is and B. I don't want to take half an hour to write up a solution to the wrong sort of problem.

I apologise for the vague descriptions, I was picking my parents up from the airport and was on my phone, and was therefore unavailable to provide detailed things such as screenshots, and had also hoped that you'd be able to figure out much of it on your own. I personally learned music hacking from scratch with no programming background when there weren't a lot of resources for me to go off, and I learned it by fiddling around with things on my own. You need to approach hacking with an inquisitive, open and flexible mind, or else you're going to run into a lot of roadblocks. There will not always be someone available to help you as sooner or later you will be doing someone no one else has done and you'll have to figure it out for yourself. When something doesn't work, and someone else has made it work, it means you fucked up. In the case of the last topic you made, it was specifically because you didn't follow instructions and didn't provide me with the appropriate tools to help you (e.g. the MIDI you were using, the .s file output, etc.). There are myriad tutorials on using Sappy scattered throughout the internet which you could have also googled as it is a widely-used and extremely well-documented program.

With that said, let's dive into editing your own voices.

Go to the song you want to edit. I'll explain this screen. Again, there are a whole bunch of online tutorials that will teach you this, but I'm happy to explain it for you if you actually read what I say. I've bolded technical terms that you'll want to get used to using if you plan on continuing hacking.

sappy%20screenshot%201_zpsqyaqbbvw.png

These numbers will become apparent if you hit the arrow off the right, which you already know how to do. I'm going to explain each of these, one by one.

"Table" is the location within the game's song table of the pointer to the song. Songs and sounds in FE are arranged into a giant table of pointers, each of which points to a "header".

"Header" is... well, it's a header. It's difficult to explain what this is because it varies between each use, but in the case of track data, it's a set of data that tells the game how many tracks the song has, and where to find those tracks. You can see this for yourself if you head to the address in a hex editor. I implore you to always do this when you see an address and don't understand what it is.

The song header corresponds to a bit of data found in the bottom of your .s file, by the way:

daysoftrainingA:
.byte 16 @ NumTrks
.byte 0 @ NumBlks
.byte daysoftrainingA_pri @ Priority
.byte daysoftrainingA_rev @ Reverb.

.word daysoftrainingA_grp

.word daysoftrainingA_1
.word daysoftrainingA_2
.word daysoftrainingA_3
.word daysoftrainingA_4
.word daysoftrainingA_5
.word daysoftrainingA_6
.word daysoftrainingA_7
.word daysoftrainingA_8
.word daysoftrainingA_9
.word daysoftrainingA_10
.word daysoftrainingA_11
.word daysoftrainingA_12
.word daysoftrainingA_13
.word daysoftrainingA_14
.word daysoftrainingA_15
.word daysoftrainingA_16

Throughout the .s file you'll see "labels" which are like little bookmarkers like this:

daysoftrainingA_1:

So the header is basically the game's way of saying "so this is a song with 16 tracks, and here's where to find all those tracks". Sappy automatically updates the pointers to the tracks every time you insert the song.

Finally, "Voices" is the location of another table which is composed of, yep, you guessed it, voices. In FE7 each song has its own voice table for reasons unknown to me; this is uncommon practice and most games would use a unified voice table. In FE7, each voice table ONLY contains the samples each song uses, and everything else is by default set to a Square wave, which I'll explain in a little bit.

Manipulation of a voicetable is absolutely crucial to good music hacking, and perhaps one day I'll teach you how and why, but we'll focus on the task at hand for now.

Then there's the actual track data. "Location" is fairly self-explanatory; it's the location of the track data and where the game is reading the track data from. This isn't actually very useful information usually.

Then there are these other coloured numbers; the parameters. Any time a note plays (and even when it doesn't) it's going to have a set of parameters as determined by the track data in the .s file. The first number, the red number, determines which voice the track is currently using. If this doesn't change when you edit the VOICE commands in the .s file, this too means you're not doing something right. In your own .s file you should see something resembling this:

.byte VOICE , 5

All you'd need to do is change the 5 to something else, then save it and re-insert it. If the red 5 hasn't changed, something is up with your insertion. If it has changed, but you're still getting the "Square1" thing at the side, then you either need to pick a voice that isn't a Square1 or edit voice 5 to be a Direct sound. How to do that? I'll explain after.

The second number (orange) is the current note velocity, which you can interpret as the overall volume of the note. This is determined by "vxxx" next to each note in the .s file, such as "v028". The next is a green number, which you may or may not recognise as the master volume, and is determined by this command:

.byte VOL   , 110*daysoftrainingA_mvlx/mxv

The blue number is "modulation", which if you don't know what that is, don't ask me, because I don't either. It's a musical production term so it's beyond my scope, but you can think of it like "vibrato". Then the purple number is "pitch bend", which is determined by the BEND command, and looks like this:

.byte BEND  , c_v+0

Finally, off to the side, you'll see a bit of text saying things like "Noise", or "Square1", or "Direct". These are telling you what type of instrument is being played. "Direct" sounds are samples being played. If you can imagine recording yourself humming a middle C and then digitally altering the pitch to make a song out of it, that's what a Direct sound is.

"Drum" is a set of "Direct" sounds in a separate table. Imagine instead you make a recording of yourself clapping, then clicking, then stomping your foot, and then making a rhythm part out of that, that's what a "Drum" is. You'd tell the game to play the "stomp foot" sound every time a C comes up, and then a "clap" every time it's a D, and so on and so forth. Then you'd make the game play C, D, C, D and it would output stomp, clap, stomp, clap. "Multi" is something very similar, but we won't go into that here.

"Square1", "Square2", "Wave" and "Noise" are what we call generated waveforms. You remember the NES and its beeping and booping, right? This is the exact same sort of thing. Generated waveforms are mostly outdated now, but they have their uses. For example, the game uses them for sound effects. FE7 on its default setting can only play 8 direct sounds at once - if it then tries to play another "direct" sound effect on top of that, one of the music tracks would cut out. You can often hear this happening when you switch between stat screens and the "wop" sound plays, because the "wop" sound is a Direct sound, not a generated waveform. By using a generated waveform for the sound effects it doesn't have to do this as often.

Got all that? Good. Let's move on to editing the voice table. Click on the command. A little window should appear, a little bit like this:

sappy%20screenshot%202_zpsfkeczf8d.png

This is the Sappy graphical user interface that allows you to directly edit the voice table in the game. Again, if you don't quite understand the effect of what you're doing, I encourage you to visit the addresses that are given to you in a hex editor to see what's being changed. In your case, you were looking to edit voice 5, which probably looks a bit like this.

sappy%20screenshot%203_zps8zfmi7ek.png

There it is! That pesky "Square" thing. You'll have to change "Output Device" to "DirectSound" to start with.

sappy%20screenshot%205_zpsnuwtmr6b.png

Some of the stuff will change because now Sappy interprets the same parameters differently. Remember to keep pressing "Update" every time you edit something.

First of all, you'll have to change "Address1". What is this address, exactly? It's the location of a sample within FE7's data. That's right--this is the pointer to the sample itself.

How do you know what to put in there? By using the address of an existing instrument. This is what I meant when I said you can steal instruments from other songs. For example, in your case, Song 1 has a DirectSound for voice 0. So if you go to voice 0 in the voice table editor, you can copy the "Address1" pointer and paste it into voice 5.

sappy%20screenshot%202_zpsfkeczf8d.png

As for the Atk, Dec, Sus, Rel values, these are collectively referred to as an enveloped, which is best explained by someone who's more well-versed in synthesizing. The moral of the story is that if you want the instrument to sound exactly the same, you need to copy those over, too. I encourage you to fiddle around with these in your own time to see what kind of fun effects you can get out of it.

Once you're done with the voice editor, hit "OK". Don't hit "Cancel" unless you want to undo the changes you've just been working on.

Play back the song. Hopefully, it should be playing back with SOMETHING, though perhaps not the sound you want it to.

By the way, I know from experience that the MIDI you inserted will have the melody playing an octave lower. You could fix that by editing the MIDI yourself, or you could once again edit the .s file. At the beginning of every track you'll see a KEYSH command that looks like this:

.byte KEYSH , daysoftrainingA_key+0

If you change the +0 to +12 you'll increase all notes within that track by an octave, as this would increase all notes by 12 semitones, which is an octave.

I hope this has helped. This took me almost an hour to write out so I hope you'll understand why I was so hesitant to go into detail. Still, hopefully others can refer back to this post if they need help with the same or a similar sort of thing.

Edited by Agro
Link to comment
Share on other sites

Whats so hard with using zahlman song editor?

Cmon.

It bloats the ROM unnecessarily, doesn't support all types of instrument samples, has an awful interface (command lines? In 2015? There's something to be said for having the option but it shouldn't be the only option)

Shall I continue?

Link to comment
Share on other sites

  • 1 month later...

"Drum" is a set of "Direct" sounds in a separate table. Imagine instead you make a recording of yourself clapping, then clicking, then stomping your foot, and then making a rhythm part out of that, that's what a "Drum" is. You'd tell the game to play the "stomp foot" sound every time a C comes up, and then a "clap" every time it's a D, and so on and so forth. Then you'd make the game play C, D, C, D and it would output stomp, clap, stomp, clap. "Multi" is something very similar, but we won't go into that here.

Sooooo I'm just wondering then.... how do I do this part then? Like it'll make an actual drum sound at F3 and then a Square1 sound at G3 and I'm trying to figure out how to make all the notes drum-type sounds.

I think I got most of it figured out. But sheesh is it a lot of work for just one song. And Sappy stops responding at the drop of a hat. Like for real is there a sappy that doesn't stop working every time you change the song?

Also I appreciate the work you put into showing me how to do this. It means a lot.

Edited by Avril Lavigne
Link to comment
Share on other sites

http://forum.highlyliquid.com/showthread.php?p=7416

So this requires a little bit more application of your previous knowledge. If your drum part is instrument 124, then go to the voice table editor in Sappy and head to 124. There should be an edit option, which will lead you to another set of voices. These are each individual drum sample and correspond to a list of notes as shown in that link. For example, C0 would be 0, D3 is 38, etc. You'll probably have to refer to that every time you want to edit a drum group for a while. As the link also says, the octaves are not standardised, and therefore you may need to do a bit of trial and error before you get it right.

now, if you head to something like G3, which would be 45, you'll see that it's not a direct sound, its a square1. Like the last time, you need to edit this into something else. At this point you have two options - you can copy and paste another sample (or import your own) into this part or you could edit your MIDI such that it never plays a G3 and instead plays F3 or something like that.

I know its a lot of work, but you are laying the groundwork for future songs and the more you do it the faster you will get. For instance, from editing to insertion, one song typically takes me about 15-20 minutes; it used to take 2-3 hours...

Link to comment
Share on other sites

http://forum.highlyliquid.com/showthread.php?p=7416

So this requires a little bit more application of your previous knowledge. If your drum part is instrument 124, then go to the voice table editor in Sappy and head to 124. There should be an edit option, which will lead you to another set of voices. These are each individual drum sample and correspond to a list of notes as shown in that link. For example, C0 would be 0, D3 is 38, etc. You'll probably have to refer to that every time you want to edit a drum group for a while. As the link also says, the octaves are not standardised, and therefore you may need to do a bit of trial and error before you get it right.

now, if you head to something like G3, which would be 45, you'll see that it's not a direct sound, its a square1. Like the last time, you need to edit this into something else. At this point you have two options - you can copy and paste another sample (or import your own) into this part or you could edit your MIDI such that it never plays a G3 and instead plays F3 or something like that.

I know its a lot of work, but you are laying the groundwork for future songs and the more you do it the faster you will get. For instance, from editing to insertion, one song typically takes me about 15-20 minutes; it used to take 2-3 hours...

Agro... this is the most tedious thing I never thought I'd figure out. After many frustrating pulls at you telling me what to do... I finally did it. I am a new person. I AM GROWING! THIS IS MY BIGGEST OBSTACLE SO FAR AND I HAVE OVERCOME IT'S TEDIUM!

OMG I LOVE YOU AGRO. You are my savior <3

I don't know what I would do without you. It sounds AMAZING!!!

EDIT: Oh and one more thing.... this won't mess up any other adjustments I've made to the game right? I know this is probably a dumb question but it's best that I ask it now. I'm basically asking if my ROM isn't clean and I was like "oh hey I like this tune I'm gonna insert it now", then it won't screw up say... some events, or battle palettes I've previously added, will it? Just stuff like that.

Edited by Avril Lavigne
Link to comment
Share on other sites

Technically this will sully your ROM but it will in no way affect any current functions. You are literally changing 12 bytes that the game never wanted to use anyway.

I'm not sure about the instability of your Sappy program, by the way. Which version are you using?

Link to comment
Share on other sites

Technically this will sully your ROM but it will in no way affect any current functions. You are literally changing 12 bytes that the game never wanted to use anyway.

I'm not sure about the instability of your Sappy program, by the way. Which version are you using?

Sappy 2006 17.1

And I was using another Sappy but they BOTH crash super frequently and the 2006 17.1 is definitely easier to use cause it accesses the voice table, etc.

But yeah I need to emphasize the crashing part more. It pisses me off haha

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...