Hello !
I'm also working with Famitone and i add some feature you found with the volume and the "every-note support".
I see some problem too.
With the
pitch envelope :
It's work completely different with Famitracker : the pitch is added in every loop for example :
pitch : 0 1 2 3 | 4 ("|" is the loop position)
the period offset will be : +0 +1 +3 +6 +10 +14 +18 .... in Famitracker
So i add a new variable in every channel who use the pitch and cumulate the value and the music's composer have to be careful to didn't go out of the frequency's bounds. In the case there is no loop, the converter have to add a zero value at the end of the envelope.
I remake a converter in Java because yours didn't work on Linux (with Wine too, you used a C library specific to Window$, i didn't have the problem with Famitone 2 version) but i have some bug to correct and the change i made to Famitone make the values completely different. But i see an error with the
loop position when it's in a repeated value sequence like :
0 0 1 1 1 | 1 1 1 2 2 2
the Famitone loop send to the first value "1" because it's keep the sequence as a block (0*2,1*6,2*3). In fact the repeated value must to be split in two (0*2,1*3,1*3,2*3) and the loop need to go to the second repeat sequence to be correct.
I also make a
PAL note's table (because i'm a frog eater !
):
Code:
_FT2NoteTableLSB:
.byte $ff,$ff
;note C- C# D- D# E- F- F# G- G# A- A# B- octave
.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$d1,$60,$f6,$92 ;0
.byte $34,$db,$86,$37,$ec,$a5,$62,$23,$e8,$b0,$7b,$49 ;1
.byte $19,$ed,$c3,$9b,$75,$52,$31,$11,$f3,$d7,$bd,$a4 ;2
.byte $8c,$76,$61,$4d,$3a,$29,$18,$08,$f9,$eb,$de,$d1 ;3
.byte $c6,$ba,$b0,$a6,$9d,$94,$8b,$84,$7c,$75,$6e,$68 ;4
.byte $62,$5d,$57,$52,$4e,$49,$45,$41,$3e,$3a,$37,$34 ;5
.byte $31,$2e,$2b,$29,$26,$24,$22,$20,$1e,$1d,$1b,$19 ;6
.byte $18,$16,$15,$14,$13,$12,$11,$10,$0f,$0e,$0d,$0c ;7
_FT2NoteTableMSB:
.byte $07,$07
;note C- C# D- D# E- F- F# G- G# A- A# B- octave
.byte $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$06,$06 ;0
.byte $06,$05,$05,$05,$04,$04,$04,$04,$03,$03,$03,$03 ;1
.byte $03,$02,$02,$02,$02,$02,$02,$02,$01,$01,$01,$01 ;2
.byte $01,$01,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00 ;3
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;4
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;5
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;6
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;7
My friend who make the music is very sad to can't add Duty envelope so i add it and remove duty-strange-thing. (Of course i know this will have an impact on the cycle value but music will be a very important part of the game i work on.)
The version I work on don't function well yet. I have some work to do. I will send it later if you want to read it (but the comments are in french).