Advanced music installer

For use with Event Assembler/build files.

Behold the culmination of my no longer wanting to spend hours manually editing voice tables in Sappy! This is a new music installer that gives you full control over the instrument table; this means that you can insert, edit, etc the instruments to your liking as well as add key splits for instruments that use multiple samples in a single instrument, all in completely modular EA format.

Even though there are some tweaks I would like to make (mostly just manually seeing to all of the drum tables so the included drum fix is no longer needed), I don’t want to delay releasing this any longer because my computer has been having a really weird glitch happening to it that makes me suspect it’s nearing the end of its life (don’t be sad; it’s been a good five years!).

Advanced music installer suite

This “suite” is basically a pre-prepared “music” folder for your FE8 build file and includes the installer plus several useful tools. See the readme for more information. The readme is long, but don’t be intimidated; this is only because I did my best to be exhaustive in explaining everything.

FEE3 demonstration (.ups patch only)
FEE3 demonstration (open source version)

Screenshots

fevdemoscreen1fevdemoscreen3fevdemoscreen4

This is the patch that I submitted to FEE3 for demonstration purposes. It’s a short FE8 chapter packed full of custom music that I created to put the installer through its paces and demonstrate what it can do.
First is a link to a .ups patch, for if you just want to play the chapter. Second is an “open source” version so you can have a full “project” with multiple voice tables, samples in all possible formats, etc to use as a model if you’re not sure how things work. Be sure to read the readme; there are several files (mostly auxiliary applications for use with/by Event Assembler, as well as EA itself) that I removed for the sake of keeping the file size low while leaving all the music stuff intact. All you need to do is add back these common files from your own projects as well as a copy of your own FE8 rom and the build file will assemble.

I hope to make this post more presentable and informative later. I just wanted to post the basic thing right now in case I lose control of my computer permanently.

Edit 2019-10-30: Added the missing SampleHeader macro definition to the base installer and fixed one of the key split tables having an unused extra entry.
2019-11-1: Added the open source version of the FEE3 demo.
2019-11-18: Clarified some wording in the readme about variable base notes.
2019-12-3: Corrected a typo in the VoiceWave macro and added a note on label terminology to the readme.
2020-7-13: Fixed a typo in the VoiceDirect macro. The calculation of the forced panning byte from IsForcedPan+Pan was incorrect. midi2agb (ipatix’s non-proprietary alternative to mid2agb) is now included as well.
2020-8-18: Added a paragraph to the readme about padding .sb sample data to ensure the sound mixer interpolates samples at the end of the loop correctly. A soundfont for the default example installer is now also included.
2021-11-7: fixed typos (formula for forced panning in VoiceDirect was incorrect; voice 75’s address was off by 0x10 because I accidentally used a headerless address from a Sappy dump originally) and tweaked envelopes on a few other voices.

22 Likes

ITS FINALLY HERE!!! Thank you so much Alusq, you’re amazing.

1 Like

The SampleHeader macro is referenced in the readme, but not defined anywhere in the installer.

2 Likes

Good catch. I must have forgotten to add the #define to the basic installer. I’ll get it updated.

2 Likes

Open source version of the FEE3 demonstration is up!

2 Likes

This is great, but does it work with FE7? :thinking::thinking::thinking::thinking::thinking:

It works with any GBA game that uses the M4A/Sappy engine. You just need to plug in the appropriate offsets yourself if you want to use instruments already in the game.

2 Likes

Epic :ok_hand:

I just found and corrected a typo in the base installer. If you are using the VoiceWave macro (e.g. for sound effects) in your game, double-check to make sure there is a semicolon after the POIN WaveData and a BYTE before the envelope parameters in the definition.

2 Likes

Hey Alusq, this is a fantastic tool and it’s really helping me out with a non-FE game I’m working on, so thank you so much for making it.

I just have one suggestion; after converting the .s file to .event, I have to manually change instances of “.align 2” to “ALIGN 4”. It’s not too much trouble but it’s proving to be a minor annoyance. If you could make s2ea do that automatically for me that’d be one small issue for me out of the way. Thanks again for the excellent tool!

1 Like

I’m glad it’s been useful! Unfortunately, I don’t actually know how to edit s2ea to make it automatically do that, since the application was made by circleseverywhere, not me. I remember looking into making a Windows batch script to find-and-replace it, but got nowhere with it.

1 Like

I made one at some point. Apparently it uses powershell. It works on my Windows 10 computer. You can give it a whirl. It also replaces the standard voicegroup000 with a different voicetable label which you can set to whichever voice table you want the song to use.

Dropbox

Just drag the midi over MAKE SONG.cmd and make sure to have midi2agb and s2ea in the same folder.

2 Likes

Thanks so much!

1 Like

That saves me a few clicks too. Thank you very much!

It turns out there’s also this script that Sme wrote at the bottom of the first post here:

1 Like

Apologies for the huge necro for something that’s probably totally minor, but while plaing around with this I noticed that there was a bit of a typo or something-- in the ‘music installer.event’ there’s this, about a quarter through~

//11 vibraphone (same sample as celesta? recommend use 8 instead) - C4
VoiceDirect(MusicVoices,0xb,0x3c,0x04C4758C,0x0,0x0,0x0,0xff,0xf0,0x0,0xcc)

In particular the bolded bit, the ‘C’ at the end of the address isn’t supposed to be there is it? Especially if it does use the same sample as the Celesta which uses the same address minus the ‘C’