Methods for managing a large FT project file?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Methods for managing a large FT project file?
by on (#216442)
My famitracker project file for the gothic fantasy universe i've been working on currently has 43 songs, $3F instruments (the famitracker max) that share 36 volume envelopes. It is 84kB large, not counting samples (which are mostly intended for sfx as to not interrupt the music).

Not all songs will see use. Some are stored clipboards (for variants and renegade melody ideas that don't work in one song but might work in another), others just aren't good enough. Some data is redundant and will be removed, automatically or by hand.

Still... it's starting to get a bit unwieldy to manage. Do you have any tips on methods to keep track of things? For example, what songs use what instruments, how many instruments share this envelope, how do i easily detect if an instrument is replacable by another?

At some point selected songs will be divided into banks organized per level. That will ultimately free up some instrument space and on the other hand duplicate some data. I'm kind of fearing this process (how to best group songs and instruments into new subsequent project files).

(Edited a typo).
Re: Methods for managing a large FT project file?
by on (#216467)
Dividing the songs to banks is best done on the exported data, it's quite quick there, so you can probably avoid doing all that. (on famitone2, may not apply to other music engines)
Re: Methods for managing a large FT project file?
by on (#216474)
That's a good insight, thanks! The target engine is up in the air... half of the tracks were written with rahsennors' personal compiler + music engine plans in mind, which would favor reuse of transposed phrases across songs. But for the platformer set in the same universe and sharing the same theme, any music engine except famitone2 goes (i'm using duty envelopes) at this point. I'm not using any effects or the volume channel.
Re: Methods for managing a large FT project file?
by on (#216475)
Allow me to shill what I think might be a good match for your project.

FrankenGraphics wrote:
The target engine is up in the air... half of the tracks were written with rahsennors' personal compiler + music engine plans in mind, which would favor reuse of transposed phrases across songs.

Pently supports cross-channel, cross-song, and transposed repetition of patterns, though ft2pently doesn't recognize them in FTM files.

FrankenGraphics wrote:
But for the platformer set in the same universe and sharing the same theme, any music engine except famitone2 goes (i'm using duty envelopes) at this point.

Are they looping envelopes? Pently supports duty, volume, and arpeggio sequences so long as they don't loop. Though you may have to cut down your instruments from 63 to 51, effects make that easier, and instruments used only on noise are in a separate pool of 25.

FrankenGraphics wrote:
I'm not using any effects or the volume channel.

Pently supports many effects and the volume column, but build-time configuration can disable many of them. Effects disabled in this manner take 0 bytes of ROM and RAM.
Re: Methods for managing a large FT project file?
by on (#216476)
I would just put each track in its own file.

I think the only important thing that a multi-track FTM can do is export directly as an NSF with all the tracks in it. For exporting to a game it doesn't matter, since your exporter/engine is what does the job of putting tracks together.

Hopefully you have an exporter that can detect and merge shared instruments. Famitracker's own internal 64 instrument limit is pretty severe, IMO, so having separate files really helps here. Whatever engine you're exporting to would have its own limit, but hopefully it's more like 256 or something. You can save and load FTI instrument files from Famitracker to transfer them to other FTM files.
Re: Methods for managing a large FT project file?
by on (#216643)
@tepples
Thanks for the insight into pently! I was hoping either pently or GGsound would be a good match. Though since it's a long way before any of it actually needs to be implemented i'm not in any hurry to make a decision just yet. I started reading through the documentation and wrote a comparison on most things i remember about my instrument at first, but suffice to say that most things either check out fine or can be modified to match (for example: subtle pitch bends can hopefully replace fine-pitched fluctuations to attack portions and my volume loops can be made into longer pre-sustain envelopes so they cover enough time).

The volume and fx channel should help reduce the number of necessary instruments, maybe even by half. They could also help take the soundtrack to new places. There's a few incompatibilities, still. I'll post those in case it is something you're interested in addressing somehow. They're not intended as criticism (pently is well-rounded), they're just plainly some problems i would have translating this particular project.

-Leaning on both romanticism and horror, i'm varying my vibratos to paint a wider range. Some of my instrument groups vary their vibrato speed to paint a change of ease/tension, organs often have a rate faster than sung pop/rnb vibratos, etc. The soundtrack would come out a bit less without a means to vary the vibrato speed. The 'golden standard' for a pleasant, neutral pop vibrato is loosely about ~6hz, but sometimes you want to be faster, or in the case of horror (or scifi) especially, or just for creating choruses, a lot slower. It doesn't need to be settable at the same time as setting depth, but it'd help a lot being more expressive if this was an option.

A hack on the song itself i could do instead is increasing the speed of the songs that need variable vibrato by a power of 2, spread out the notes accordingly, and use pitch bend effects create a vibrato with an alternative rate.. it's a little cumbersome and potentially data heavy and a bit left to circumstance of the basic tempo of the song, is all.

-A lot of the instrumens offset the tone by an increment or two in one direction or the other. Would it be possible to add an effect to detune the pitch until the next detune effect? (those are also handy for circumventing vibrato flutter on troublesome notes, create a different harmonic tension between two tones, smooth pulsewidth sweeps, and ensemble-type sounds.


Lastly, a random thought. and not even sure if i need this: if i do variable-fixed banking and keep instruments in the switchable level banks at the same address, wouldn't pently be able to do 51+25 instruments per bank?

rainwarrior wrote:
I would just put each track in its own file.

That sounds like a really good move at this point. Thanks for the suggestion!

Quote:
I think the only important thing that a multi-track FTM can do is export directly as an NSF with all the tracks in it.

Originally i wanted to be able to organize instruments collectively for all songs because the plan for the engine was to use relative instrument shifting with a limit on how far a shift you could do per instrument message. But that's not relevant for the platformer set in the same universe.
Re: Methods for managing a large FT project file?
by on (#216651)
FrankenGraphics wrote:
The 'golden standard' for a pleasant, neutral pop vibrato is loosely about ~6hz

A rough range that I've also seen classical guitarists use.

FrankenGraphics wrote:
but sometimes you want to be faster, or in the case of horror (or scifi) especially, or just for creating choruses, a lot slower. It doesn't need to be settable at the same time as setting depth, but it'd help a lot being more expressive if this was an option.

I'd have to figure out a good way to do that, seeing as vibrato is currently processed more or less as a hardcoded looped pitch envelope.

FrankenGraphics wrote:
-A lot of the instrumens offset the tone by an increment or two in one direction or the other. Would it be possible to add an effect to detune the pitch until the next detune effect?

You mean like the Pxx effect in FamiTracker? I can see where a detune could be inserted: in the pitch bend effect, add a signed 8-bit value to the target pitch. I just held off implementing it in the master tree to save RAM.

FrankenGraphics wrote:
Lastly, a random thought. and not even sure if i need this: if i do variable-fixed banking and keep instruments in the switchable level banks at the same address, wouldn't pently be able to do 51+25 instruments per bank?

That should be possible, but with my two jobs recently picking up, I lack the time to make the tooling for that configuration.
Re: Methods for managing a large FT project file?
by on (#217129)
Short of making a new ftm for each track, you could just separate out the ones that you know won't be in the final product, or you could just split the soundtrack into however many files, 2, 3, 4, etc.

Just make a copy of the file, then open the copy and delete all the tracks you want to keep, then click edit->clean up-> remove unused instruments. That'll show you what instruments these tracks are using specifically. Do the same thing with the original file (except delete the tracks you want to remove). From the difference in instruments you can tell which ones are shared and which ones are unique to each set. The $3F instrument limit in FT is definitely a limiting factor if you want to have a cohesive soundtrack all in one nsf.