more taut gui

This commit is contained in:
minjaesong
2026-04-24 02:17:41 +09:00
parent 8d28bde119
commit ea09065802
5 changed files with 46 additions and 45 deletions

View File

@@ -8,9 +8,10 @@ const win = require("wintex")
const font = require("font") const font = require("font")
const taud = require("taud") const taud = require("taud")
font.setLowRom("A:/tvdos/bin/tautfont_low.chr")
font.setHighRom("A:/tvdos/bin/tautfont_high.chr") font.setHighRom("A:/tvdos/bin/tautfont_high.chr")
const BUILD_DATE = "260423" const BUILD_DATE = "260424"
const TRACKER_SIGNATURE = "TsvmTaut"+BUILD_DATE // 14-byte string const TRACKER_SIGNATURE = "TsvmTaut"+BUILD_DATE // 14-byte string
const MIDDOT = "\u00FA" const MIDDOT = "\u00FA"
@@ -71,7 +72,7 @@ middot:MIDDOT
const fxNames = { const fxNames = {
A:"Set tick speed", A:"Set tick speed",
B:"Jump to order", B:"Jump to order",
C:"Break pattern to", C:"Break pattern",
D:"Volume slide", D:"Volume slide",
E:"Pitch down", E:"Pitch down",
F:"Pitch up", F:"Pitch up",
@@ -80,13 +81,13 @@ H:"Vibrato",
U:"Fine vibrato", U:"Fine vibrato",
I:"Tremor", I:"Tremor",
J:"Arpeggio", J:"Arpeggio",
K:"Vibrato + vol slide", K:"Vibra+v.slide",
L:"Portamento + vol slide", L:"Porta+v.slide",
O:"Sample offset", O:"Sample offset",
Q:"Retrigger", Q:"Retrigger",
R:"Tremolo", R:"Tremolo",
T:"Tempo", T:"Tempo",
V:"Gloval volume", V:"Global volume",
S:"Special", S:"Special",
S1:"Glissando ctrl", S1:"Glissando ctrl",
S2:"Sample finetune", S2:"Sample finetune",
@@ -154,8 +155,8 @@ sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym
sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`G${sym.sharp}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]}, sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`G${sym.sharp}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]},
10122:{index:10122,name:"Pythagorean Augmented Fourth", table:[0x0,0x134,0x2B8,0x3EC,0x570,0x6A4,0x828,0x95C,0xA90,0xC14,0xD48,0xECC], 10122:{index:10122,name:"Pythagorean Augmented Fourth", table:[0x0,0x134,0x2B8,0x3EC,0x570,0x6A4,0x828,0x95C,0xA90,0xC14,0xD48,0xECC],
sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`G${sym.sharp}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]}, sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`G${sym.sharp}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]},
10123:{index:10123,name:"Shierlu", table:[0x0,0x184,0x2B8,0x43C,0x570,0x6F4,0x828,0x95C,0xAE0,0xC14,0xD98,0xECC], 10123:{index:10123,name:"Shi'er lu", table:[0x0,0x184,0x2B8,0x43C,0x570,0x6F4,0x828,0x95C,0xAE0,0xC14,0xD98,0xECC],
sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`G${sym.sharp}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]}, sym:[` \u00E0\u00E1`,` \u00E2\u00E3`,` \u00E4\u00E5`,` \u00E6\u00E7`,` \u00E8\u00E9`,` \u00EA\u00EB`,` \u00EC\u00ED`,` \u00EE\u00EF`,` \u00F0\u00F1`,` \u00F2\u00F3`,` \u00F4\u00F5`,` \u00F6\u00F7`]},
@@ -165,9 +166,9 @@ sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym
const volEffSym = [sym.volset, sym.volup, sym.voldn, sym.volfineup, sym.volfinedn] const volEffSym = [sym.volset, sym.volup, sym.voldn, sym.volfineup, sym.volfinedn]
const panEffSym = [sym.panset, sym.panle, sym.panri, sym.panfinele, sym.panfineri] const panEffSym = [sym.panset, sym.panle, sym.panri, sym.panfinele, sym.panfineri]
const colNote = 239 const colNote = 254
const colInst = 114 const colInst = 114
const colVol = 117 const colVol = 155
const colPan = 221 const colPan = 221
const colEffOp = 213 const colEffOp = 213
const colEffArg = 231 const colEffArg = 231
@@ -548,8 +549,8 @@ function drawPatternView() {
function drawControlHint() { function drawControlHint() {
let hintElem = [ let hintElem = [
[`\u008427u\u008425u\u008424u\u008426u`,'Ptn'], [`\u008428u\u008429u`,'Ptn'],
[`Pg\u008424u\u008425u`,'Cue'], [`Pg\u008418u`,'Cue'],
['sep'], ['sep'],
['F5','Song'], ['F5','Song'],
['F6','Cue'], ['F6','Cue'],
@@ -965,6 +966,7 @@ while (!exitFlag) {
drawVoiceHeaders() drawVoiceHeaders()
drawSeparators(separatorStyle) drawSeparators(separatorStyle)
drawStatusBar() drawStatusBar()
drawVoiceDetail()
} }
else if (keysym === "m" || keysym === "M") { toggleMute(cursorVox) } else if (keysym === "m" || keysym === "M") { toggleMute(cursorVox) }
else if (keysym === "s" || keysym === "S") { toggleSolo(cursorVox) } else if (keysym === "s" || keysym === "S") { toggleSolo(cursorVox) }

Binary file not shown.

Binary file not shown.

View File

@@ -2178,7 +2178,7 @@ Tracker Note Effects has been moved to `TAUD_NOTE_EFFECTS.md`
**Taud serialisation format** **Taud serialisation format**
Created by CuriousTorvald on 2026-04-19 Created by CuriousTorvald on 2026-04-19
This is a file format for Taud tracker data. This is a file format for Taud tracker data. Taud can be extended with project data in backward-and-forward-compatible manner.
Endianness: Little Endianness: Little
@@ -2194,17 +2194,18 @@ Endianness: Little
[PATTERN BIN for SONG 2] [PATTERN BIN for SONG 2]
[CUE SHEET for SONG 2] [CUE SHEET for SONG 2]
... ...
[PROJECT DATA] (optional)
## Header ## Header
Byte[8] Magic Byte[8] Magic
Uint8 Format version (always 1) Uint8 Format version (always 1)
Uint8 Number of songs in SONG TABLE Uint8 Number of songs in SONG TABLE
Uint32 Compressed size of SAMPLE+INST section (used to calculate offset to SONG TABLE) Uint32 Compressed size of SAMPLE+INST section (used to calculate offset to SONG TABLE)
Uint32 Reserved for Taud Project Format. Fill with zero Uint32 Offset to Project Data. Zero if Project Data is nonexistent
Byte[14]Tracker/Converter signature Byte[14]Tracker/Converter signature
## SONG TABLE ## Song Table
Rows of 16 bytes: * Rows of 16 bytes:
Uint32 Song offset Uint32 Song offset
Uint8 Number of voices Uint8 Number of voices
Uint16 Number of patterns (0 is invalid. pattern bin length = numPats * 8 bytes) Uint16 Number of patterns (0 is invalid. pattern bin length = numPats * 8 bytes)
@@ -2214,38 +2215,20 @@ Rows of 16 bytes:
Float32 Frequency at the base note. Default (A440) is 440.0. If zero, assume the default value Float32 Frequency at the base note. Default (A440) is 440.0. If zero, assume the default value
Byte[1] Reserved for future versions Byte[1] Reserved for future versions
Taud device can queue up to 2 "playdata" in its buffer, which can be interpreted as a song. Taud device can queue up to 2 "playdata" in its buffer, which can be interpreted as a song.
-------------------------------------------------------------------------------- * Known standard tunings
A440. ISO standard. Tracker default
C256. Power of two
C311. East Asian tuning (ROK National Gugak Center standard)
**Taud Project Format** is an extension to Taud format ## Pattern Bin and Cue Sheet
Created by CuriousTorvald on 2026-04-22 Raw Pattern Bin/Cue Sheet images
Endianness: Little
# File Structure
\x1F T S V M a u d
[HEADER] (modified)
[SAMPLE+INSTRUMENT BIN IMAGE (GZip or Zstd compressed. Read 4-byte magic to determine)]
[SONG TABLE]
[PATTERN BIN for SONG 0]
[CUE SHEET for SONG 0]
[PATTERN BIN for SONG 1]
[CUE SHEET for SONG 1]
[PATTERN BIN for SONG 2]
[CUE SHEET for SONG 2]
...
[PROJECT DATA] (new!)
## Header
Byte[8] Magic
Uint8 Format version (always 129; high-bit set and number 0x01)
Uint8 Number of songs in SONG TABLE
Uint32 Compressed size of SAMPLE+INST section (used to calculate offset to SONG TABLE)
Uint32 Offset to Project Data (low twobyte)
Byte[14]Tracker/Converter signature
## Project Data ## Project Data
Project Data is just a concatenation of blocks identified by their FourCC.
Byte[8] Magic (\x1E T a u d P r J) Byte[8] Magic (\x1E T a u d P r J)
Byte[8] Reserved Byte[8] Reserved
* Repetition of * Repetition of
@@ -2278,6 +2261,15 @@ prefixes:
Uint8 Song index Uint8 Song index
Uint32 Size of this table following this field Uint32 Size of this table following this field
Uint16 Notation used for this song (takes notation index) Uint16 Notation used for this song (takes notation index)
0: raw numbers
10*n: TET-number times 10 (12-TET = 120)
* Following systems have alternative notation conventions:
531: 53-TET Pythagorean Notation
* Following list defines ethnic notations in 12-tone scale
10121: Pythagorean Diminished Fifth
10122: Pythagorean Augmented Fourth
10123: Shi'er lü (East Asian traditional tuning)
Byte[*] Song name, null terminated. Encoding: UTF-8 Byte[*] Song name, null terminated. Encoding: UTF-8
Byte[*] Song composer, null terminated. Encoding: UTF-8 Byte[*] Song composer, null terminated. Encoding: UTF-8
Byte[*] Song copyright string, null terminated. Encoding: UTF-8 Byte[*] Song copyright string, null terminated. Encoding: UTF-8
@@ -2299,7 +2291,14 @@ prefixes:
Note: custom notations will use internal index 65535 down to 65520 (index 0 = 65535, index 15 = 65520) Note: custom notations will use internal index 65535 down to 65520 (index 0 = 65535, index 15 = 65520)
Note Tuning:
1. "Base Note at C3" will be derived using "Current Tuning Base Note" and "Frequency at the Base Note" from the song table. If the values are A3,440Hz, it will be converted to C3,261.6255653Hz
2. Frequency at C4 will be (Base Note at C3) × (Interval Size)
3. 4096 notes will be equidistance-distributed between (Frequency at C3) and (Frequency at C4), with logarithmic pitch progression; this builds the frequency-offset table
4. Frequency-Offset Table from the previous step will be applied against the "Base Note at C3" to construct the notes within the notation. Value at index zero of the Frequency Table must be 0
5. The progress will continue outside the "root interval" (C3..C4) to build a complete note-to-frequency table
Note: if your sample is pre-tuned for your system, keep the project setting as A4,440Hz. If you are not working with the conventional octave system, you still need to specify the Interval Size
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------