diff --git a/.idea/markdown.xml b/.idea/markdown.xml
new file mode 100644
index 0000000..c199a6e
--- /dev/null
+++ b/.idea/markdown.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/disk0/tvdos/bin/taut.js b/assets/disk0/tvdos/bin/taut.js
index 0e22918..c8bfa3b 100644
--- a/assets/disk0/tvdos/bin/taut.js
+++ b/assets/disk0/tvdos/bin/taut.js
@@ -1933,6 +1933,8 @@ function drawProjectContents(wo) {
Cues: `${song.lastActiveCue}/1024 ($${song.lastActiveCue.hex03()})`,
Notation: pitchTablePresets[PITCH_PRESET_IDX].name,
Flags: `${flagstrbuf} ($${mixerflag.hex02()})`,
+ GlobalVol: initialGlobalVolume,
+ MixingVol: initialMixingVolume
}
Object.entries(projMeta).forEach(([key, value], index) => {
diff --git a/it2taud.py b/it2taud.py
index 5c28757..6726e18 100644
--- a/it2taud.py
+++ b/it2taud.py
@@ -1209,7 +1209,7 @@ def build_sample_inst_bin_it(samples_or_proxy: list,
struct.pack_into(' bytes:
pat_bin_comp_size=len(pat_comp),
cue_sheet_comp_size=len(cue_comp),
global_vol=0xFF,
- mixing_vol=0xFF,
+ mixing_vol=0x7F,
)
assert len(song_table) == TAUD_SONG_ENTRY
diff --git a/s3m2taud.py b/s3m2taud.py
index ea647a5..54042b9 100644
--- a/s3m2taud.py
+++ b/s3m2taud.py
@@ -846,7 +846,7 @@ def assemble_taud(h: S3MHeader, instruments: list, patterns: list) -> bytes:
pat_bin_comp_size=len(pat_comp),
cue_sheet_comp_size=len(cue_comp),
global_vol=0xFF,
- mixing_vol=0xFF,
+ mixing_vol=0x7F,
)
assert len(song_table) == TAUD_SONG_ENTRY
diff --git a/terranmon.txt b/terranmon.txt
index ca687ad..faea031 100644
--- a/terranmon.txt
+++ b/terranmon.txt
@@ -2106,6 +2106,7 @@ TODO:
"Caveat: on a foreground voice, key-off (row.note == 0x0000) currently sets voice.active = false at AudioAdapter.kt:1713, which silences the channel immediately. Sustain-loop escape therefore only takes effect on background voices spawned by NNA "Note Off" — which matches the IT idiom of layering a new note over a sustained one. Let me know if you also want the foreground key-off to keep the voice playing through fadeout."
[x] cue and pattern compression of the Taud format (taud_common.py, taud.mjs)
[x] figure out how IT (0..256) and FT2 (0..FFF + cut) handles volume fadeout numbers, and come up with a compatible Taud spec, then implement
+ [x] Pitchbend on Amiga frequency mode sometimes works right, sometimes works wrong. (effect underdelivers) Affects every song with Amiga picth mode, AND ON THE fresh taut.js session only
[ ] implement bitcrusher (eff sym '8')
diff --git a/tsvm_core/src/net/torvald/tsvm/AudioJSR223Delegate.kt b/tsvm_core/src/net/torvald/tsvm/AudioJSR223Delegate.kt
index dfabbea..ff58666 100644
--- a/tsvm_core/src/net/torvald/tsvm/AudioJSR223Delegate.kt
+++ b/tsvm_core/src/net/torvald/tsvm/AudioJSR223Delegate.kt
@@ -132,7 +132,14 @@ class AudioJSR223Delegate(private val vm: VM) {
}
fun setTrackerMixerFlags(playhead: Int, flags: Int) {
- getFirstSnd()?.playheads?.get(playhead)?.initialGlobalFlags = flags
+ getFirstSnd()?.playheads?.get(playhead)?.let { ph ->
+ ph.initialGlobalFlags = flags
+ ph.trackerState?.let { ts ->
+ ts.panLaw = flags and 1
+ ts.amigaMode = (flags and 2) != 0
+ ts.fadeoutCutOnZero = (flags and 4) != 0
+ }
+ }
}
fun getTrackerMixerFlags(playhead: Int): Int? {