better tracker font, IT eff for Taud

This commit is contained in:
minjaesong
2026-04-24 12:12:51 +09:00
parent 6d70960e5c
commit 4802e10dfc
7 changed files with 22 additions and 8 deletions

2
.gitignore vendored
View File

@@ -68,3 +68,5 @@ assets/disk0/*.mov
assets/diskMediabin/*
video_encoder/*
assets/disk0/tvdos/bin/tautfont.png

View File

@@ -487,7 +487,7 @@ A tempo slide's memory slot is separate from the set-tempo path and is private t
**Plain.** Sets the global mix bus volume (0..$FF). $00 is silence; $FF is full. The default is $80.
**Compatibility.** ST3's global volume is 0..$40; convert with `taud_v = st3_v × 4`, clamped at $FF. On export, `st3_v = taud_v >> 2`, clamped at $40.
**Compatibility.** ST3's global volume is 0..$40; convert with `taud_v = st3_v × 4`, clamped at $FF. On export, `st3_v = taud_v >> 2`, clamped at $40. IT's global volume is 0..$80; convert with `taud_v = it_v × 2`, clamped at $FF.
**Implementation.** Write the high byte to `global_volume` on the row the command appears. The low byte is reserved. ST3's `kST3NoMutedChannels` rule applies: V on a muted channel is ignored by ST3; for strict-compatible playback Taud follows suit, but new Taud compositions should avoid muting channels that carry global effects.
@@ -517,6 +517,16 @@ Peak at maximum settings: $7F × $FF >> 9 = $3F — the full panning range. Retr
---
## X $xx00 — Set Panning
**Plain.** **Unimplemented**. On IT, sets the panning position of the current channel, $00 being full-left and $FF being full-right.
**Compatibility.** Convert directly into panning effect `0.$xx`, rounded down to nearest 6-bit value.
**Implementation.** Not applicable.
---
# The S subcommand family
S is a multiplexing opcode; the **high nibble of the high byte** selects the sub-effect, and the remainder is the sub-argument.

View File

@@ -70,7 +70,7 @@ middot:MIDDOT
}
const fxNames = {
A:"Set tick speed",
A:"Tick speed",
B:"Jump to order",
C:"Break pattern",
D:"Volume slide",
@@ -89,8 +89,8 @@ R:"Tremolo",
T:"Tempo",
V:"Global volume",
S:"Special",
S1:"Glissando ctrl",
S2:"Sample finetune",
S1:"Gliss. ctrl",
S2:"Sample tune",
S3:"Vibrato LFO",
S4:"Tremolo LFO",
S8:"Channel pan",
@@ -629,18 +629,20 @@ function drawVoiceDetail() {
const effop = ptnDat[5]
const effarg = ptnDat[6] | (ptnDat[7] << 8)
// TODO draw cumulative internal status in the very time play cursor is on
con.move(6,1)
print(`Pitch $${note.hex04()}\tInst $${inst.hex02()}\tVolEff ${voleffop}.$${voleffarg.hex02()}\t`+
`PanEff ${paneffop}.$${paneffarg.hex02()}`)
con.move(7,1)
let fx = effop.toString(36).toUpperCase()
if (fx == '0') {
print(`Fx`+' '.repeat(32))
print(`\u00F8`+' '.repeat(32))
}
else {
if (fx == 'S') fx += (effarg >>> 12).hex1()
let fxName = fxNames[fx]
print(`Fx ${fxName} $${effarg.hex04()} `)
print(`\u00F8 ${fxName}\t$${effarg.hex04()} `)
}
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB