From 89effb5b245ae4786b056c94064338fe054f8512 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 30 Apr 2026 15:10:32 +0900 Subject: [PATCH] beat indicator, secondary row emph --- assets/disk0/tvdos/bin/taut.js | 20 +++++++++++++++++--- 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 1920 -> 1920 bytes terranmon.txt | 2 ++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/assets/disk0/tvdos/bin/taut.js b/assets/disk0/tvdos/bin/taut.js index bcdeefc..e35661d 100644 --- a/assets/disk0/tvdos/bin/taut.js +++ b/assets/disk0/tvdos/bin/taut.js @@ -216,6 +216,8 @@ const colEffArg = 231 const colBackPtn = 255 let PITCH_PRESET_IDX = 240 // TODO read from the Project Data section of the .taud +let beatDivPrimary = 4 // TODO read from the Project Data section of the .taud +let beatDivSecondary = 16 // pitchSymLut[pitchInOct] = [symString, octaveOffset] // octaveOffset is 1 when pitchInOct is closer to the next octave's root (wraps up) than to any table entry. @@ -563,7 +565,8 @@ const colPlayback = 86 const colHighlight = 41 const colColumnSep = 6 const colRowNum = 250 -const colRowNumEmph1 = 180 +const colRowNumEmph1 = 225 +const colRowNumEmph2 = 217 const colStatus = 253 const colVoiceHdr = 230 const colSep = 252 @@ -670,6 +673,13 @@ function drawStatusBar() { con.move(2,1) print((playbackMode == PLAYMODE_NONE) ? sym.statusstop : sym.statusplay) + // beat indicator + let beatCursorRow = cursorRow + while (beatCursorRow > beatDivSecondary) { beatCursorRow -= beatDivSecondary } // test this behaviour with primary=4, secondary=22 or something + let beatInd = (playbackMode != PLAYMODE_NONE && beatCursorRow % beatDivPrimary < (beatDivPrimary >>> 1)) ? + ((beatCursorRow % beatDivSecondary < (beatDivPrimary >>> 1)) ? '\u00846u' : '\u00847u') : + '' + // cue row con.move(1,4) con.color_pair(colWHITE, 255); print(`Cue `) @@ -677,7 +687,7 @@ function drawStatusBar() { // con.color_pair(colWHITE, 255); print(`/`) // con.color_pair(20, 255); print(`${sCueMax}`) con.color_pair(colWHITE, 255); print(` Row `) - con.color_pair(130, 255); print(`${sRow}`) + con.color_pair(130, 255); print(`${sRow}${beatInd}`) // bpm spd con.move(2,4) @@ -791,7 +801,11 @@ function drawPatternRowAt(viewRow, style = timelineRowStyle) { con.color_pair(colRowNum, back) if (actualRow < ROWS_PER_PAT) { - if (actualRow % 4 == 0) {con.color_pair(colRowNumEmph1, back)} + let actualRowForBeatCalc = actualRow + while (actualRowForBeatCalc >= beatDivSecondary) { actualRowForBeatCalc -= beatDivSecondary } + + if (actualRowForBeatCalc % beatDivPrimary == 0) {con.color_pair(colRowNumEmph1, back)} + if (actualRowForBeatCalc % beatDivSecondary == 0) {con.color_pair(colRowNumEmph2, back)} let rowstr = actualRow.dec02() con.move(y, 1); con.prnch(rowstr.charCodeAt(0)); con.move(y, 2); con.prnch(rowstr.charCodeAt(1)) diff --git a/assets/disk0/tvdos/bin/tautfont.kra b/assets/disk0/tvdos/bin/tautfont.kra index d297947..34d5f4b 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:06b402d72aa65783445b42cc0f47072235c5dc92d5a6492bf757b97b28723db7 -size 128639 +oid sha256:a33e1854f685302cb9c6c5e9af53178e20584584d11b560170814a05b76fd413 +size 129166 diff --git a/assets/disk0/tvdos/bin/tautfont_high.chr b/assets/disk0/tvdos/bin/tautfont_high.chr index 763cda2e979d62d64de11cdebad407234e29d7d7..e03a16a190eceb4425139c19f15d714bb1b17bec 100644 GIT binary patch delta 49 ncmZqRZ{XkXmr+H=E|~!WBy7^sV3>g+EzL#(hBqrR#j^qcB`yo7 delta 20 bcmZqRZ{XkXmyub*CT%h!yXt0Drf60GLH-4V diff --git a/assets/disk0/tvdos/bin/tautfont_low.chr b/assets/disk0/tvdos/bin/tautfont_low.chr index c5c51b1f559adc5e7fc95938d6c1e97daddc8dc2..cd8d0f06d3697d0ef246f2f297d167a512bac326 100644 GIT binary patch delta 16 XcmZqRZ{VL$!kX;p=$O2*lARp@E2RYK delta 16 UcmZqRZ{VL$!dedk8!Oq_0Ww1c+W-In diff --git a/terranmon.txt b/terranmon.txt index 732ce97..c349e88 100644 --- a/terranmon.txt +++ b/terranmon.txt @@ -2296,6 +2296,8 @@ prefixes: 10121: Pythagorean Diminished Fifth 10122: Pythagorean Augmented Fourth 10123: Shi'er lü (East Asian traditional tuning) + Uint8 Primary beat division (default: 4 rows) + Uint8 Secondary beat division (default: 16 rows) Byte[*] Song name, null terminated. Encoding: UTF-8 Byte[*] Song composer, null terminated. Encoding: UTF-8