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