From e24870ce0783d5dd221d4fff3888cff8eb36d7bc Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 28 May 2026 04:58:37 +0900 Subject: [PATCH] taut: sample/inst scrollbar --- assets/disk0/tvdos/bin/taut.js | 58 ++++++++++++++++++----- 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 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/assets/disk0/tvdos/bin/taut.js b/assets/disk0/tvdos/bin/taut.js index d8bea73..5c85f61 100644 --- a/assets/disk0/tvdos/bin/taut.js +++ b/assets/disk0/tvdos/bin/taut.js @@ -67,20 +67,49 @@ panri:"\u008416u", panfinele:"\u008427u", panfineri:"\u008426u", -/* Fx/Vx/Px */ -fx:'\u00F8', -px:'\u00AC', -vx:'\u00AD', - /* transport control */ playall:'\u00E1', playcue:'\u00E2', playrow:'\u00E3', stop:'\u00E4', +/* GUI stuffs */ +slider1: '\u00E4', // slider knob fitting in 7px cell snugly +slider2: '\u00E5\u00E6', // slider knob fitting in right 6px then 1px to the next cell +slider3: '\u00E7\u00E8', // slider knob fitting in right 5px then 2px to the next cell +slider4: '\u00E9\u00EA', // slider knob fitting in right 4px then 3px to the next cell +slider5: '\u00EB\u00EE', // slider knob fitting in right 3px then 4px to the next cell +slider6: '\u00EF\u00F0', // slider knob fitting in right 2px then 5px to the next cell +slider7: '\u00F1\u00F2', // slider knob fitting in right 1px then 6px to the next cell + +vhairline1: '\u00AD', // vertical line on left 1px +vhairline2: '\u00AE', // vertical line on left 2px +vhairline3: '\u00AF', // vertical line on left 3px +vhairline4: '\u00DA', // vertical line on the centre +vhairline5: '\u00F6', // vertical line on left 5px +vhairline6: '\u00F7', // vertical line on left 6px +vhairline7: '\u00F8', // vertical line on left 7px + +taut_scrollgutter_top: 0xBA, +taut_scrollgutter_mid: 0xBB, +taut_scrollgutter_bot: 0xBC, +taut_scrollgutter_top_full: 0xBD, +taut_scrollgutter_mid_full: 0xBE, +taut_scrollgutter_bot_full: 0xBF, + +blob0: '\u00840u', +blob1: '\u00841u', +blob2: '\u00842u', +blob3: '\u00843u', +blob4: '\u00844u', +blob5: '\u00845u', +blob6: '\u00846u', +blob7: '\u00847u', +blob8: '\u00848u', +blob9: '\u00849u', +blob10: '\u008410u', + /* miscellaneous */ -unticked:"\u00AE", -ticked:"\u00AF", middot:MIDDOT, doubledot:"\u008419u", statusstop:"\u008420u\u008421u", @@ -220,7 +249,7 @@ sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`D${sym.sharp}`,`E${sym 10122:{index:10122,name:"Pythagorean aug. 4th",table:[0x0,0x134,0x2B8,0x3EC,0x570,0x6A4,0x828,0x95C,0xA90,0xC14,0xD48,0xECC],interval:0x1000,t:'d', 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:"\u00FC\u00FD\u00FE (shi'er lu)", table:[0x0,0x184,0x2B8,0x43C,0x570,0x6F4,0x828,0x95C,0xAE0,0xC14,0xD98,0xECC],interval:0x1000,t:'d', -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`]}, +sym:[` \u00C0\u00C1`,` \u00C2\u00C3`,` \u00C4\u00C5`,` \u00C6\u00C7`,` \u00C8\u00C9`,` \u00CA\u00CB`,` \u00CC\u00CD`,` \u00CE\u00CF`,` \u00D0\u00D1`,` \u00D2\u00D3`,` \u00D4\u00D5`,` \u00D6\u00D7`]}, /* non-octave */ 35130:{index:35130,name:"Equal-Tempered Bohlen-Pierce",table:[0x0,0x1F3,0x3E7,0x5DA,0x7CE,0x9C1,0xBB4,0xDA8,0xF9B,0x118E,0x1382,0x1575,0x1769],interval:0x195C,t:'M', sym:[`C${sym.accnull}`,`C${sym.sharp}`,`D${sym.accnull}`,`E${sym.accnull}`,`F${sym.accnull}`,`F${sym.sharp}`,`G${sym.accnull}`,`H${sym.accnull}`,`H${sym.sharp}`,`J${sym.accnull}`,`A${sym.accnull}`,`A${sym.sharp}`,`B${sym.accnull}`]}, @@ -1127,7 +1156,7 @@ function drawStatusBar() { let beatCursorRow = cursorRow while (beatCursorRow >= beatDivSecondary) { beatCursorRow -= beatDivSecondary } let beatInd = (playbackMode != PLAYMODE_NONE && beatCursorRow % beatDivPrimary < (beatDivPrimary >>> 1)) ? - ((beatCursorRow % beatDivSecondary < (beatDivPrimary >>> 1)) ? '\u00846u' : '\u00847u') : + ((beatCursorRow % beatDivSecondary < (beatDivPrimary >>> 1)) ? sym.blob8 : sym.blob5) : '' // cue row @@ -3229,7 +3258,10 @@ function drawSamplesListColumn() { for (let r = 0; r < SMP_LIST_H; r++) { con.move(SMP_LIST_Y + r, SMP_LIST_SCROLL_X) con.color_pair(colStatus, colSmpListBg) - print(r === indPos ? sym.ticked : sym.unticked) + + let scrollChar = (r == 0) ? sym.taut_scrollgutter_top : (r == SMP_LIST_H - 1) ? sym.taut_scrollgutter_bot : sym.taut_scrollgutter_mid + if (r == indPos) scrollChar += 3; + con.addch(scrollChar) } } else { for (let r = 0; r < SMP_LIST_H; r++) { @@ -3713,8 +3745,10 @@ function drawInstrumentsListColumn() { for (let r = 0; r < INST_LIST_H; r++) { con.move(INST_LIST_Y + r, INST_LIST_SCROLL_X) con.color_pair(colStatus, colInstListBg) - print(r === indPos ? sym.ticked : sym.unticked) - } + + let scrollChar = (r == 0) ? sym.taut_scrollgutter_top : (r == INST_LIST_H - 1) ? sym.taut_scrollgutter_bot : sym.taut_scrollgutter_mid + if (r == indPos) scrollChar += 3; + con.addch(scrollChar) } } else { for (let r = 0; r < INST_LIST_H; r++) { con.move(INST_LIST_Y + r, INST_LIST_SCROLL_X) diff --git a/assets/disk0/tvdos/bin/tautfont.kra b/assets/disk0/tvdos/bin/tautfont.kra index edd39ea..0541eab 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:c37c5609b06ff135231819b7fe15b8497d5f5fb2de41801b4ec1d99bc5f75d3e -size 148484 +oid sha256:dc60baf6cdfdb18af2880e7f1a0ef6f9e9509b9428e4c433b34dc86bfa05ab7e +size 147300 diff --git a/assets/disk0/tvdos/bin/tautfont_high.chr b/assets/disk0/tvdos/bin/tautfont_high.chr index 42c93b9843a1b5af2ffb977cf191756616135275..dbabef881e6cb53dcb129d744c755d56f32468f3 100644 GIT binary patch delta 272 zcmZqRZ{Xih#-!zd0u)ey01DW=fawuaay<}>7 zlTF#80s^2i%n$(O)j$B0#|QyX-edO}$RKlNWMmL>95QxDk}`I7c5q3c6p#ni$sq&gLAV@n9#9s_ X0V|x delta 164 zcmZqRZ{V+IKm&G;p^lERzK(Waal88L`ugPJdI*oftR4vLWH=ytIArXQIWlJDW*i(c zAUPl@$ B9((`*