From ea090658025cf3b17062b25a36f2cf39e7eeef36 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 24 Apr 2026 02:17:41 +0900 Subject: [PATCH] more taut gui --- assets/disk0/tvdos/bin/taut.js | 24 +++++---- assets/disk0/tvdos/bin/tautfont.kra | 4 +- assets/disk0/tvdos/bin/tautfont_high.chr | Bin 1920 -> 1920 bytes assets/disk0/tvdos/bin/tautfont_low.chr | Bin 0 -> 1920 bytes terranmon.txt | 63 +++++++++++------------ 5 files changed, 46 insertions(+), 45 deletions(-) create mode 100644 assets/disk0/tvdos/bin/tautfont_low.chr diff --git a/assets/disk0/tvdos/bin/taut.js b/assets/disk0/tvdos/bin/taut.js index 684a744..43a571f 100644 --- a/assets/disk0/tvdos/bin/taut.js +++ b/assets/disk0/tvdos/bin/taut.js @@ -8,9 +8,10 @@ const win = require("wintex") const font = require("font") const taud = require("taud") +font.setLowRom("A:/tvdos/bin/tautfont_low.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 MIDDOT = "\u00FA" @@ -71,7 +72,7 @@ middot:MIDDOT const fxNames = { A:"Set tick speed", B:"Jump to order", -C:"Break pattern to", +C:"Break pattern", D:"Volume slide", E:"Pitch down", F:"Pitch up", @@ -80,13 +81,13 @@ H:"Vibrato", U:"Fine vibrato", I:"Tremor", J:"Arpeggio", -K:"Vibrato + vol slide", -L:"Portamento + vol slide", +K:"Vibra+v.slide", +L:"Porta+v.slide", O:"Sample offset", Q:"Retrigger", R:"Tremolo", T:"Tempo", -V:"Gloval volume", +V:"Global volume", S:"Special", S1:"Glissando ctrl", 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}`]}, 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}`]}, -10123:{index:10123,name:"Shierlu", 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}`]}, +10123:{index:10123,name:"Shi'er lu", table:[0x0,0x184,0x2B8,0x43C,0x570,0x6F4,0x828,0x95C,0xAE0,0xC14,0xD98,0xECC], +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 panEffSym = [sym.panset, sym.panle, sym.panri, sym.panfinele, sym.panfineri] -const colNote = 239 +const colNote = 254 const colInst = 114 -const colVol = 117 +const colVol = 155 const colPan = 221 const colEffOp = 213 const colEffArg = 231 @@ -548,8 +549,8 @@ function drawPatternView() { function drawControlHint() { let hintElem = [ - [`\u008427u\u008425u\u008424u\u008426u`,'Ptn'], - [`Pg\u008424u\u008425u`,'Cue'], + [`\u008428u\u008429u`,'Ptn'], + [`Pg\u008418u`,'Cue'], ['sep'], ['F5','Song'], ['F6','Cue'], @@ -965,6 +966,7 @@ while (!exitFlag) { drawVoiceHeaders() drawSeparators(separatorStyle) drawStatusBar() + drawVoiceDetail() } else if (keysym === "m" || keysym === "M") { toggleMute(cursorVox) } else if (keysym === "s" || keysym === "S") { toggleSolo(cursorVox) } diff --git a/assets/disk0/tvdos/bin/tautfont.kra b/assets/disk0/tvdos/bin/tautfont.kra index 5dea847..db28c22 100644 --- a/assets/disk0/tvdos/bin/tautfont.kra +++ b/assets/disk0/tvdos/bin/tautfont.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:665ece319ad7e2bf06883e60d5e232da31703fd6d7df4101ddce67b30a969cb9 -size 122556 +oid sha256:bfaff76b490ad98bf6a468a4212c66df5534e96db06917480193c604a45a7436 +size 89184 diff --git a/assets/disk0/tvdos/bin/tautfont_high.chr b/assets/disk0/tvdos/bin/tautfont_high.chr index 66c8dbf8ba2935f5e25a368110ea22a1713c4fdb..ba8fb0cc1f5a31e0f4aa22dfe94df8662e016af3 100644 GIT binary patch delta 352 zcmYk1v1-FG5I|2caa_2>#n2+7V0G})(m^<}2_&&p=+MDKMvs|7hZI7)6e=$Hhx|f6 zpdXZv={dBJlLkre?sV@EAL5^<{vI_BY@F&;hhqTg<&HiZ-+03}A%qqp2*MC0fOF0} zw_Y0~@q+b-=_P9$X7*~RC*r@3URu9#e|3m9QmU%Pm`(VJ9nOP{3+ei?-ey?4UEMLvGPRt(A@XS4a?H%cUKUB$5*buSReg9*3qHY^gahbu?5#1@hh!orPU(M!8UHCF$FT&dRuseS zKGb!znLi9@9a0gd+O`_4v8H4q*Rbd`A3_(i2DAa zf4G;RVL5RqVRpxkQO?qaflOX(*Rkj9eGM7)*VifOkN2$gp{~p!o7S)E*8OSg$30p*N16k8cRN1WZ5V1NdJimrQr<m{Azc!LrHc@X8K!%1LiPsi$EXY7O%37H*V>+E;u=Ee#5$xnflVQ7J z3G*(ZYkCfyP7+*UR!gICDyIg7#P*z?W`tqSf%8Kk} pS8BZPr=0kf7tV>FDtu748S8%tqHpP`FyeEHkGX!lhrR#v@(+kB1L6Px literal 0 HcmV?d00001 diff --git a/terranmon.txt b/terranmon.txt index 095a22f..c97d566 100644 --- a/terranmon.txt +++ b/terranmon.txt @@ -2178,7 +2178,7 @@ Tracker Note Effects has been moved to `TAUD_NOTE_EFFECTS.md` **Taud serialisation format** 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 @@ -2194,17 +2194,18 @@ Endianness: Little [PATTERN BIN for SONG 2] [CUE SHEET for SONG 2] ... +[PROJECT DATA] (optional) ## Header Byte[8] Magic Uint8 Format version (always 1) Uint8 Number of songs in 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 -## SONG TABLE -Rows of 16 bytes: +## Song Table + * Rows of 16 bytes: Uint32 Song offset Uint8 Number of voices 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 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 -Created by CuriousTorvald on 2026-04-22 - -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 +## Pattern Bin and Cue Sheet + Raw Pattern Bin/Cue Sheet images ## 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] Reserved * Repetition of @@ -2278,6 +2261,15 @@ prefixes: Uint8 Song index Uint32 Size of this table following this field 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 composer, 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 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 --------------------------------------------------------------------------------