Page 1 of 2

DPCM Arpeggios

Posted: Mon Oct 19, 2015 6:14 pm
by BioMechanicalDude
Is it too late to suggest new features for version 0.5? Well, I'll give that a shot, anyway.
I think it'd be useful if you could apply arpeggios to the DPCM channel, both from the instrument editor and the tracker. Now, I know, the DPCM channel is probably the last place, where you would use arpeggios, but at some point you might either try that or some other kind of effect, that needs rapid note(or in this case sample) switching. The only way to do it at the moment, is to make the song at a really high speed and you'd also have to input a lot of notes. And no, don't tell me "Why don't you just make a sample of the arpeggio or whatever effect you're trying to make?"
First of all, it would take up a lot of space, because you'll need a sample for every note(not to mention, samples will have a larger file-size, because of their length). Yeah, Famitracker has 256KB for DPCM samples, which is nice and all, but when you're trying to make music that could, at least theoretically, play on an actual NES and, therefore limit yourself to the original 16KB limit, this is not a good option. Even if they don't take up too much space, the arpeggios will be slowed down, when playing at lower pitches.
So, if it is possible, can Famitracker have such a feature in future versions? I'm sure it would be useful to a lot of people and make it easier to experiment with the DPCM channel.

Thanks.

Re: DPCM Arpeggios

Posted: Mon Oct 19, 2015 6:27 pm
by jaxcheese
Perhaps a "sample envelope" option could handle that, although triggering multiple samples from one note event would be an entirely new functionality for famitracker.

Re: DPCM Arpeggios

Posted: Mon Oct 19, 2015 6:27 pm
by Dr. Merio
This is more suited for the Feature requests section so I've moved it there. :P

Re: DPCM Arpeggios

Posted: Tue Oct 20, 2015 3:10 pm
by BioMechanicalDude
Oops! Didn't even notice this section. :D Sorry.
jaxcheese wrote:Perhaps a "sample envelope" option could handle that, although triggering multiple samples from one note event would be an entirely new functionality for famitracker.

I guess it would have to be programmed differently, because samples are being played and there's stuff to do with pitch and delta counters, and what not. Still, I don't think it's that hard to add such a thing... or is it?
Speaking of the feature, I suppose I shouldn't judge something by how much attention the thread for it has, but I have the feeling very few people will even consider such a thing in the near future. I hope I'm wrong.

Re: DPCM Arpeggios

Posted: Tue Oct 20, 2015 3:22 pm
by HertzDevil
Exported NSFs have no concept of DPCM instruments; all DPCM assignments are collected into one place, and notes on the DPCM channel are renamed so that they invoke the assignments directly, without any sequence handler. Needless to say, the NSF driver also bypasses the period/frequency tables completely when processing the DPCM channel; hence, it can neither query whether an assignment exists for a given instrument and pitch from the FTM, nor ensure that the same 0xy effect makes sense for DPCM notes resulting from different instruments' assignment tables from the FTM.

Nonetheless an implementation is possible -- not requiring heavy algorithmic operations on the pattern data on compilation -- by imposing several limitations:
  • Instrument arpeggio sequences are disallowed: the same instrument may be used in any other 2A03 channel, where the arpeggio sequence makes sense, but the same sequence terms cannot be used to derive the DPCM mappings in the NSF driver;
  • 0xy commands are parsed during NSF export: the FamiTracker pattern compiler retrieves the DPCM mappings and places assignments in a new command rather than using the current 0xy effect. This requires the NSF driver to have a separate entry on ft_command_table that calls ft_get_pattern_byte twice;
  • 0xy commands are effective only on rows that contain a DPCM note: it may not be possible for commands that do not come with a note to retrieve the current arpeggiated DPCM assignments. Consider the following track consisting of a single frame:

    Code: Select all

         # : DPCM
    ROW 00 : C-3 00 . ...
    ROW 01 : ... .. . 037
    ROW 02 : C-3 01 . 000
    ROW 03 : ... .. . D01
    Since instruments 00 and 01 may have different assignments to notes C-3, D#3, and G-3, the 0xy effect may not be processed.
  • 0xy commands are effective until a new note begins: by a similar reasoning, considering the following track:

    Code: Select all

         # : DPCM
    ROW 00 : C-3 00 . ...
    ROW 01 : D-3 00 . 037
    The 037 effect parameters, once expanded to DPCM assignments, should not apply to the C-3 note.
  • On non-existent assignments: the DPCM arpeggio command must handle the case where a given DPCM assignment does not refer to an existing DPCM sample. The most sensible way is to leave the DPCM as-is without playing new notes or cutting the current one (so a 0x0 behaves like X01, 0xy like X02 if the arpeggiated notes do not exist);
  • The pitch sequence may be interpreted as DPCM sample pitch offset, but this feature request in the first place is already very specific.
As in the "really high speed" case, the user is responsible for making sure the delta offset of the DPCM channel does not drift away when playing multiple samples, either by tilting the samples at the very beginning (the exact position depends on the refresh rate), or using a default counter value for some or all the sample assignments. I will not provide an implementation this time.

Re: DPCM Arpeggios

Posted: Wed Oct 21, 2015 9:50 am
by w7n
My 2 cents:
1, this feature is acceptable but not as useful as some other features.
2, judging from the developing state of the official FamiTracker, I'd suggest that you just cover everything in speed 1 to gain full control of all the notes. Tracking in speed 1 isn't as frustrating as it may seem, by the way.

Re: DPCM Arpeggios

Posted: Wed Oct 21, 2015 7:10 pm
by BioMechanicalDude
HertzDevil wrote:Exported NSFs have no concept of DPCM instruments;

Well, they they have no concept of regular instruments or envelopes either... or at least I think so. Every NSF I've opened has all the sequences and whatnot as note data.
HertzDevil wrote:Instrument arpeggio sequences are disallowed: the same instrument may be used in any other 2A03 channel, where the arpeggio sequence makes sense, but the same sequence terms cannot be used to derive the DPCM mappings in the NSF driver;

So, then, DPCM arpeggio sequences can be a different functionality all together.

About the various effect limitations and .NSF export problems: In that case, the effect and the .NSF export functions will have to be re-written. But I suppose that would be too much work, so it's not happening.

HertzDevil wrote:As in the "really high speed" case, the user is responsible for making sure the delta offset of the DPCM channel does not drift away when playing multiple samples, either by tilting the samples at the very beginning (the exact position depends on the refresh rate), or using a default counter value for some or all the sample assignments. I will not provide an implementation this time.

The high-speed problem never had anything to do with the delta offset.

w7n wrote:I'd suggest that you just cover everything in speed 1 to gain full control of all the notes. Tracking in speed 1 isn't as frustrating as it may seem, by the way.

For me it is. I may have full control over speed and instrument sequences, but each frame is short in terms of time(even when the rows are 256), it's harder for me to organize things and because of the long spaces between notes, it's easy to get lost. This is why most of the time when I make covers, I don't use the original .NSF, when I want to see the notes. I either use a MIDI file or convert the original track to MIDI. I know .NSF files, when opened in Famitracker, don't really have any structure, but still. If it wasn't for such speed issues, I would've probably be making stuff at speeds like 4 or even 6. I guess I just like having everything nicely put together and compact. For me, it's much easier to edit that way. :|

Re: DPCM Arpeggios

Posted: Wed Oct 21, 2015 8:48 pm
by ollaxe
Two tips when tracking in speed one:
1. Use the row highlight feature. This is great for keeping track of where you are in the song.
2. Try to use the most high-resolution screen as possible. This will give you a greater view in the sequence editor. If you don't have a high-res monitor, you could use an HDTV as long as your computer is somewhat portable and your eventual roommate(s)/family members are okay with it.

Now, if you're still not going to track in speed one, track in speed 2! Arpeggios still sound great at that speed, and everything is much easier to keep track of. The bad thing with this though is that you're quite limited in terms of which tempo's you can use.

Now, I still agree that this should be a feature, but these are a bunch of workarounds which you can use for the time being. One thing I'm kinda troubled about though is, wouldn't there be a ton of popping noises? :?

Re: DPCM Arpeggios

Posted: Thu Oct 22, 2015 7:58 pm
by BioMechanicalDude
Not when I tried it, using the usual method. So I guess as long as you don't reset the delta counter manually, you'll be fine.
By the way, wasn't there a zoom in/zoom out feature? I'm probably remembering it wrong. My screen resolution is 1280x1024. It's not full HD, but close enough(at least in terms of vertical resolution), and I'm still not satisfied with the row size. :|

Re: DPCM Arpeggios

Posted: Thu Oct 22, 2015 8:29 pm
by ollaxe
BioMechanicalDude wrote:By the way, wasn't there a zoom in/zoom out feature? I'm probably remembering it wrong.

If you mean within windows, then yes, and there still is. Or well, upscale at least. I have a faint memory of there being an option to downscale to 75% somewhere in the settings of windows 7, 8 or 8.1, but I can't find it in windows 10. Maybe I'm remembering wrong, I dunno.