Topic: Stripes (Tritone)

I might as well post this here since I remembered I have an account here. First piece of music I made this year as a whole.

https://soundcloud.com/moviemovies1/str … ectrum-48k

Still most comfy with the Tritone engine after all these years.

Re: Stripes (Tritone)

Very good track. Particularly like it from 47 secs in where the bass kicks in. Sounds like way more than 3 channels

Re: Stripes (Tritone)

Wooo MovieMovies1, long time no see! Fantastisk track, still rocking the beeper like a boss, I see wink

Re: Stripes (Tritone)

It's nice to see that people like this track, I'm very happy with it myself.

I do find myself a bit frustrated with the xm2tritone conversion tool nowadays with how it handles detune. It treats E5x as a direct -8 to +7 to the frequency, which is highly ineffective due to how frequencies are done in Tritone. I've looked at the converted music asm files and each note is stored as a direct frequency write from 000h to 0xFFFh, so it would definitely be possible to rewrite the XM converter to make things correlate to a linear pitch assignment using a lookup table or similar, but I wouldn't be able to do that myself given my lack of programming skills. I do think it'd be a huge benefit though as it'd allow for much more fine detune control without having to dive into the music data file and manually edit the frequencies directly.

Re: Stripes (Tritone)

I think I could hack something like it into the converter. What exactly should those 15 steps in E5x represent, though? E58 is no detune of course and then I guess E50 should represent -¼ tone and E5F should represent +¼ tone. I don't like the idea of having a lookup for this, so I'd prefer to have a formula in the form of

freq = freq_base + (E5x_param - 8) * something_something

6 (edited by MovieMovies1 Yesterday 00:50:09)

Re: Stripes (Tritone)

A formula is definitely the more elegant solution, I just thought of a lookup table first for whatever reason (probably my non-programmer brain).

As for how the E5x effect works in the XM format, it's in ⅛ semitone steps, or 12.5 cents, from one semitone lower to ⅞ semitone higher:

E50 = -100 (1 semitone lower)
E51 = -87.5
E52 = -75 
E53 = -62.5
E54 = -50
E55 = -37.5
E56 = -25
E57 = -12.5
E58 = 0
E59 = +12.5
E5A = +25
E5B = +37.5
E5C = +50
E5D = +62.5
E5E = +75
E5F = +87.5 (⅞ semitone higher)

Another thing I've also noticed is that the overall tuning of Tritone is slight off from standard A=440Hz tuning. Clock speed and memory contention both seem to affect just how much, as different models produce different deviations from standard tuning. Using the current xm2tritone's tuning table conversions I recorded a test tone of what should be an A at 440Hz from different models in an emulator:

   48K: -34 cents from A=440
  128K: -11 cents from A=440
+2A/+3: +22 cents from A=440

As can be seen the 48K at 3.5 MHz with contended memory is downtuned the most, where the 3.5469Mhz 128K is a bit higher, while the +2A/+3 is even higher in pitch owing to the memory in use being uncontended. I think it might be neat to perhaps be able to set a custom tuning, to be able to perhaps compensate for this or just for the purposes of achieving alternate tunings, but this is absolutely not a necessity, moreso a curious observation.

7

Re: Stripes (Tritone)

Hmm, having a range of -1 - +⅞ semitune would make sense from a "least surprise" pov, I guess. Otoh we could have twice the resolution if we do half of that range, since with the former setup, ranges actually overlap. Then again I'm not entirely sure it's even possible to represent that with 16-bit frequency resolution. Hmm... I'll work something out and then you can test to see what works best for you.

As far as custom tuning goes, that'd be a bit more involved, so I'd rather pass on that for now, even though I would very much like to have that available myself. Bintracker will eventually support that kind of thing, hopefully.

Re: Stripes (Tritone)

-1 to +⅞ semitones would definitely be the optimal way to go I feel. It does technically introduce some overlap in detuned notes, but that can make it easier to think about how to apply detunes more logically, and the less discrepancies between the source module and the compiled files the better I think. ⅛ steps gives plenty room for working with fine pitch changes, though Tritone can definitely handle 1/16 steps very well with its 12-bit frequency resolution (I discovered it's 12 bits when I checked the .asm music data, each note is made up of 16 bits, but only 12 of those bits are the frequency data. Seems to work the same as the Famicom Disk System's frequency register, was able to hack a copy of Dn-FamiTracker with an appropriate clock frequency to get matching frequency data between it and Tritone)

The custom tuning I was thinking of was moreso a global detune for everything to compensate for the different global pitch of different spectrum models that could possibly be relatively easy to do, but it's not of much importance either way. Per-note detune would be too complicated, especially for XM conversions.