diff --git a/assets/disk0/tvdos/bin/taut.js b/assets/disk0/tvdos/bin/taut.js index 575883b..130cee0 100644 --- a/assets/disk0/tvdos/bin/taut.js +++ b/assets/disk0/tvdos/bin/taut.js @@ -20,9 +20,9 @@ const VERT = "\u00B3" const TWOVERT = "\u00BA" // global var for the app -if (!_G.TAUT) _G.TAUT = {}; -if (!_G.TAUT.UI) _G.TAUT.UI = {}; -if (!_G.TAUT.UI.NEXTPANEL) _G.TAUT.UI.NEXTPANEL = undefined; +_G.TAUT = {}; +_G.TAUT.UI = {}; +_G.TAUT.UI.NEXTPANEL = undefined; const sym = { /* accidentals */ @@ -51,7 +51,7 @@ doubledntick:"\u009D", /* special notes */ -keyoff:"\u00A0\u00CD\u00CD\u00A1", +keyoff:"\u00A0\u00B1\u00B1\u00A1", notecut:"\u00A4\u00A4\u00A4\u00A4", /* special effects */ @@ -2591,10 +2591,11 @@ function openHelpPopup() { if (lines.length > HELP_CONTENT_H) { const trackH = HELP_CONTENT_H const indPos = (maxScroll === 0) ? 0 : ((scroll * (trackH - 1) / maxScroll) | 0) + con.color_pair(colStatus, colPopupBack) for (let r = 0; r < trackH; r++) { con.move(HELP_CONTENT_Y + r, HELP_POPUP_X + HELP_POPUP_W - 2) - con.color_pair(colPushBtnBack, colPopupBack) - print(r === indPos ? '\u00DB' : '\u00B3') + let trough = (r == 0) ? 0xBA : (r == trackH - 1) ? 0xBC : 0xBB + print(String.fromCharCode(r === indPos ? (trough + 3) : (trough))) } } diff --git a/assets/disk0/tvdos/bin/taut_helpmsg.js b/assets/disk0/tvdos/bin/taut_helpmsg.js index a6c8e53..4526665 100644 --- a/assets/disk0/tvdos/bin/taut_helpmsg.js +++ b/assets/disk0/tvdos/bin/taut_helpmsg.js @@ -18,7 +18,7 @@ Tags: &updn; - up-down arrow (\u008418u) &udlr; - four direction arrow (\u008428u\u008429u) -&keyoffsym; - pattern view key-off symbol (\u00A0\u00CD\u00CD\u00A1) +&keyoffsym; - pattern view key-off symbol (\u00A0\u00B1\u00B1\u00A1) ¬ecutsym; - pattern view note-cut symbol (\u00A4\u00A4\u00A4\u00A4) &demisharp; @@ -44,8 +44,8 @@ Tags: default alignment: fully justified */ -let helpNotation = `CONTROL NOTATON - +let helpNotation = `CONTROL NOTATION +\u00B7${'\u00B8'.repeat(16)}\u00B9 µtone; shortcuts differentiate normal and shifted shortcuts. &bul;a&ddot;z : alphabet without shift-in &bul;A&ddot;Z : alphabet with shift-in @@ -56,7 +56,7 @@ let helpNotation = `CONTROL NOTATON //////////////////////////////////////////////////////////////////////////////////////////////////// let helpJam = `NOTE JAMMING - +\u00B7${'\u00B8'.repeat(12)}\u00B9 Push keys to play or insert notes.  w e   t y u a s d f g h j k @@ -65,7 +65,7 @@ a s d f g h j k //////////////////////////////////////////////////////////////////////////////////////////////////// let helpCommon = `COMMON CONTROLS - +\u00B7${'\u00B8'.repeat(15)}\u00B9 &bul;! : show this help message &bul;Y : play the entire song from the current cue &bul;U : play the current cue then stop @@ -79,10 +79,11 @@ let helpCommon = `COMMON CONTROLS //////////////////////////////////////////////////////////////////////////////////////////////////// let helpTimeline = `TIMELINE VIEW - +\u00B7${'\u00B8'.repeat(13)}\u00B9 Timeline has two distinct modes: view and edit mode. Two modes are toggled using the space bar. -VIEW MODE + VIEW MODE +\u00B7${'\u00B8'.repeat(9)}\u00B9 &bul;Note jamming : plays the note &bul;&udlr; : move the viewing cursor by voices and rows &bul;pg&updn; : go to previous/next cue @@ -90,22 +91,25 @@ Timeline has two distinct modes: view and edit mode. Two modes are toggled using &bul;n : toggle soloing of the selected voice &bul;m : toggle muting of the selected voice -EDIT MODE + EDIT MODE +\u00B7${'\u00B8'.repeat(9)}\u00B9 &bul;Note jamming : (note column) inserts the note &bul;{&mdot;} : (note column) lower/raise a note by one octave (or period) &bul;[&mdot;] : (note column) lower/raise a note by one unit -&bul;= : (note column) insert a key-off &keyoffsym; -&bul;^ : (note column) insert a note-cut ¬ecutsym; -&bul;. : remove a symbol on the selected column +&bul;z : (note column) insert a key-off &keyoffsym; +&bul;x : (note column) insert a note-cut ¬ecutsym; +&bul;. : clear fields &bul;bksp : delete one character on the selected column &bul;0&ddot;9 a&ddot;f : inserts a (hexa)decimal number +&bul;0&ddot;9 a&ddot;z : (fx column) inserts an effect &bul;^&mdot;v : (volume column) slide up/down &bul;<&mdot;>: (panning column) slide left/right &bul;-&mdot;= : (vol/pan col) fine slide down/up &bul;&udlr; : move the viewing cursor by columns and rows &bul;pg&updn; : go to previous/next cue -ACCIDENTALS + ACCIDENTALS +\u00B7${'\u00B8'.repeat(11)}\u00B9 &demisharp; ♯ &doublesharp; &triplesharp; &quadsharp; &demiflat; ♭ &doubleflat; &tripleflat;  &accuptick;  &accupup;  &accdntick;  &accdndn; C  c  cx x  xx B  b  bb bbb ^  ^^ v  vv ` @@ -115,6 +119,7 @@ Timeline has two distinct modes: view and edit mode. Two modes are toggled using // assemble help text pieces to complete help message const SCRW = con.getmaxyx()[1] +const HRULE = '\u00B4\u00B5'.repeat((_G.TAUT.HELPMSG_WIDTH) >>> 1) + '\n' // Display-command palette. taut.js's popup uses (HELP_COL_TEXT on background) as the // default colour pair, so embedded `\x1B[38;5;Nm` codes switch foreground only. @@ -137,7 +142,7 @@ function expandEntities(s) { .replaceAll('&mdot;', '\u00FA') .replaceAll('&updn;', '\u008418u') .replaceAll('&udlr;', '\u008428u\u008429u') - .replaceAll('&keyoffsym;', '\u00A0\u00CD\u00CD\u00A1') + .replaceAll('&keyoffsym;', '\u00A0\u00B1\u00B1\u00A1') .replaceAll('¬ecutsym;', '\u00A4\u00A4\u00A4\u00A4') .replaceAll(' ', '\u007F') .replaceAll('­', '') @@ -369,13 +374,13 @@ function typeset(text, customWidth) { } let helpMessages = [ // index: taut.js PANEL_NAMES - [helpJam, helpTimeline, helpCommon, helpNotation].join('\n'), - [helpCommon, helpNotation].join('\n'), // placeholder - [helpCommon, helpNotation].join('\n'), // placeholder - [helpCommon, helpNotation].join('\n'), // placeholder - [helpCommon, helpNotation].join('\n'), // placeholder - [helpCommon, helpNotation].join('\n'), // placeholder - [helpCommon, helpNotation].join('\n'), // placeholder + [helpJam, helpTimeline, helpCommon, helpNotation].join(HRULE), + [helpCommon, helpNotation].join(HRULE), // placeholder + [helpCommon, helpNotation].join(HRULE), // placeholder + [helpCommon, helpNotation].join(HRULE), // placeholder + [helpCommon, helpNotation].join(HRULE), // placeholder + [helpCommon, helpNotation].join(HRULE), // placeholder + [helpCommon, helpNotation].join(HRULE), // placeholder ] help.MSG_BY_TABS = helpMessages.map(it => typeset(it)) diff --git a/assets/disk0/tvdos/bin/tautfont.kra b/assets/disk0/tvdos/bin/tautfont.kra index da2b0d5..b41d945 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:63b3dd03d8be5cb761229421a2293d85e370ea535d04bc9b0795ab1effbef8e1 -size 138940 +oid sha256:7f98394acfbab62ac44aa5530ea9cba5d9699f8c6024ad7f2f0765c7dc434e7a +size 138295 diff --git a/assets/disk0/tvdos/bin/tautfont_high.chr b/assets/disk0/tvdos/bin/tautfont_high.chr index 7700b83..7bb7293 100644 Binary files a/assets/disk0/tvdos/bin/tautfont_high.chr and b/assets/disk0/tvdos/bin/tautfont_high.chr differ diff --git a/terranmon.txt b/terranmon.txt index 75335be..9d8667e 100644 --- a/terranmon.txt +++ b/terranmon.txt @@ -2396,6 +2396,8 @@ TODO: previous "row volume default = 63" behaviour. [x] physical_presence order 0x1F chn 2: note cuts unexpectedly fast — engine fix [x] GSLINGER order 0x03 chn 1: L 0100 fades unexpectedly fast? — converter fix + [ ] do not reset tickspeed on pattern view play / add key to modify tick speed ('[' down/']' up) + [ ] expose song table on UI (test with `insaniq2.taud`) TODO - list of demo songs that MUST ship with Microtone: * 4THSYM (rename to Fourth Symmetriad) — excellent piece for demonstrating NNAs and filter envelopes