mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-06 13:38:30 +09:00
fix: random pitch changes; NNA note cut (not off!) for MOD and S3M
This commit is contained in:
@@ -522,9 +522,10 @@ def build_sample_inst_bin(samples: list) -> tuple:
|
|||||||
inst_bin[base + 21] = env_vol
|
inst_bin[base + 21] = env_vol
|
||||||
inst_bin[base + 22] = 0
|
inst_bin[base + 22] = 0
|
||||||
inst_bin[base + 171] = 0xFF # instrument global volume
|
inst_bin[base + 171] = 0xFF # instrument global volume
|
||||||
inst_bin[base + 176] = 0xFF # default pan = off
|
inst_bin[base + 177] = 0x80 # default pan = centre (unused; pan env "p" flag not set)
|
||||||
inst_bin[base + 181] = 0xFF # filter cutoff = off
|
inst_bin[base + 182] = 0xFF # filter cutoff = off
|
||||||
inst_bin[base + 182] = 0xFF # filter resonance = off
|
inst_bin[base + 183] = 0xFF # filter resonance = off
|
||||||
|
inst_bin[base + 186] = 1 # NNA: note cut
|
||||||
|
|
||||||
vprint(f" instrument[{taud_idx}] '{s.name}' ptr={ptr} c2spd={s.c2spd} "
|
vprint(f" instrument[{taud_idx}] '{s.name}' ptr={ptr} c2spd={s.c2spd} "
|
||||||
f"vol={s.volume} loop=({ls},{le},{'on' if loop_mode else 'off'})")
|
f"vol={s.volume} loop=({ls},{le},{'on' if loop_mode else 'off'})")
|
||||||
|
|||||||
@@ -514,9 +514,10 @@ def build_sample_inst_bin(instruments: list) -> tuple:
|
|||||||
inst_bin[base + 21] = env_vol
|
inst_bin[base + 21] = env_vol
|
||||||
inst_bin[base + 22] = 0
|
inst_bin[base + 22] = 0
|
||||||
inst_bin[base + 171] = 0xFF # instrument global volume
|
inst_bin[base + 171] = 0xFF # instrument global volume
|
||||||
inst_bin[base + 176] = 0xFF # default pan = off
|
inst_bin[base + 177] = 0x80 # default pan = centre (unused; pan env "p" flag not set)
|
||||||
inst_bin[base + 181] = 0xFF # filter cutoff = off
|
inst_bin[base + 182] = 0xFF # filter cutoff = off
|
||||||
inst_bin[base + 182] = 0xFF # filter resonance = off
|
inst_bin[base + 183] = 0xFF # filter resonance = off
|
||||||
|
inst_bin[base + 186] = 1 # NNA: note cut
|
||||||
|
|
||||||
vprint(f" instrument[{base // 192}] '{inst.name}' ptr: '{ptr}', sampling rate: '{inst.c2spd}'")
|
vprint(f" instrument[{base // 192}] '{inst.name}' ptr: '{ptr}', sampling rate: '{inst.c2spd}'")
|
||||||
if inst.c2spd > 65535:
|
if inst.c2spd > 65535:
|
||||||
|
|||||||
@@ -2090,15 +2090,16 @@ TODO:
|
|||||||
[x] implement Instrument Flag, Vibrato Depth, Vibrato Rate, other samplewise/instrumentwise changes to it2taud and audio engine
|
[x] implement Instrument Flag, Vibrato Depth, Vibrato Rate, other samplewise/instrumentwise changes to it2taud and audio engine
|
||||||
[x] implement new note action on the audio engine (IT uses "background channels", maybe we can do the same but make "background channels" mixer-private)
|
[x] implement new note action on the audio engine (IT uses "background channels", maybe we can do the same but make "background channels" mixer-private)
|
||||||
[x] (same context as above) implement S7x command
|
[x] (same context as above) implement S7x command
|
||||||
[ ] on playback, panning changes randomly on Taud made by s3m2taud.py and mod2taud.py, but not by it2taud.py (maybe something's off with the instrument exports?)
|
[x] on playback, panning changes randomly on Taud made by s3m2taud.py and mod2taud.py, but not by it2taud.py (maybe something's off with the instrument exports?)
|
||||||
|
[x] NNA not disabled for S3M and MOD
|
||||||
[ ] implement S6x command
|
[ ] implement S6x command
|
||||||
[ ] `S B000` and `S B100` not working as intended -- on first playback it jumps to the next cue same row, on subsequent playbacks the commands are completely ignored
|
[ ] `S B000` and `S B100` not working as intended -- on first playback it jumps to the next cue same row, on subsequent playbacks the commands are completely ignored
|
||||||
[ ] implement Wxx command (global volume slide)
|
[ ] implement Wxx command (global volume slide)
|
||||||
[ ] implement sample loop sustain
|
[ ] implement sample loop sustain
|
||||||
[ ] Amiga mode freq shift now "underdelivers" (pitch bend not "strong" enough) -- appear to be fixed (2nd_pm.taud is the only one behaves incorrectly)
|
|
||||||
[ ] cue and pattern compression of the Taud format (taud_common.py, taud.mjs)
|
[ ] cue and pattern compression of the Taud format (taud_common.py, taud.mjs)
|
||||||
[ ] figure out how IT (8 bits) and FT2 (12 bits) handles volume fadeout numbers, and come up with a compatible Taud spec, then implement
|
[ ] figure out how IT (8 bits) and FT2 (12 bits) handles volume fadeout numbers, and come up with a compatible Taud spec, then implement
|
||||||
[ ] implement bitcrusher (eff sym '8')
|
[ ] implement bitcrusher (eff sym '8')
|
||||||
|
[ ] Figure out why pitch slides are not working right on 2nd_pm.s3m only
|
||||||
|
|
||||||
|
|
||||||
Play Data: play data are series of tracker-like instructions, visualised as:
|
Play Data: play data are series of tracker-like instructions, visualised as:
|
||||||
|
|||||||
Reference in New Issue
Block a user