////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Update Instructions:
Unzip and copy the firmwareXX.TFM file (not the ZIP file!) to the root of the SD card using the included USB SD card reader or any other micro SD card reader. 
Update will automatically occur when you boot the device. Please refer to the manual or video for more details.

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///
Changelog v3.2

Expanded the browser MIDI editor with new sound-design panels for Mixer / Levels, Operator ADSR, Filter, Filter Envelope Settings, Mod Envelope, and MOD MATRIX.
Added browser control for master volume, operator total levels, operator ADSR, additional filter controls, filter envelope settings, and modulation envelope settings.
Added a device preset browser with SD-card bank/preset lists, automatic load on preset selection, plus Load and Save buttons for the selected preset slot.
Added an editable MOD MATRIX view for LFO 1, LFO 2, LFO 3, Pressure, and Envelope routes, with click-to-connect/disconnect and right-click or long-press depth editing.
Improved browser editor navigation with compact grouped tabs plus combined ARP / SEQ and CHORD / SCALE panels.
The browser editor now hides the firmware/MIDI-engine reminder after the first successful connection and shows the latest firmware version in the panel menu.
New browser editor controls now stay synchronized with hardware movements.


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///
Changelog v3.1

Reduced browser editor MIDI/SysEx traffic by requesting only the data needed for the currently visible editor panels, with hidden panels refreshed when opened.
Improved editor transfer recovery and status messages so a previously successful connection no longer falls back to a generic firmware-update warning when a later data transfer is incomplete.
Slightly increased firmware SysEx bulk-response pacing for more reliable browser editor sync over USB MIDI.
Added guarded browser-editor feedback for hardware-side parameter and sequencer changes after an editor handshake, keeping the editor in sync without sending unsolicited SysEx when no editor is active.


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///
Changelog v3.0

Added a browser-based TWISTfm SysEx MIDI tool using Web MIDI for two-way patch, menu, and setup editing from a computer.
Added a sequencer piano-roll grid to the MIDI tool for editing sequencer run/rate/mode/length controls plus per-step notes and trigger/tie/rest gate states.

Added per-operator software looping envelopes for OP1-OP6, available from the OPER menu and MIDI tool. Loop mode is now OFF, FREE, or SYNC; SYNC maps the operator ADSR phase controls to 16 tempo-synced musical divisions, with softened loud-to-quiet wraps at very fast settings.

Added flat direct performance MIDI CC controls for real-time preset parameters:
CC2 VOICEMODE
CC3 LAYER2_TRANSPOSE
CC4 FAT_MULTIPLIER
CC5 FILTER_FLAVOR
CC6 FILTER_WOBBLE
CC7 MASTER_VOL
CC89 FILTER_SLEW
CC90 INPUT_VOL
CC91 FILTER_KEYTRACK
CC92 ARP_RUN
CC93 SEQ_RUN
CC101 BPM
CC103 GLIDE_MODE
CC104 MORPH_POS
CC105 AFTERTOUCH_MODE
CC106 ARP_MODE
CC107 ARP_RANGE
CC108 ARP_RATE
CC109 ARP_SYNC
CC110 ARP_LINK
CC111 ARP_LENGTH
CC112 SEQ_RATE
CC113 SEQ_MODE
CC114 SEQ_LENGTH
CC115 SEQ_LOOP
CC116 SEQ_RETRIG
CC117 SEQ_LATCH
CC118 SEQ_SYNC
CC119 SEQ_DIRECTION

Added bidirectional MIDI feedback for existing fader CCs, direct performance CCs, preset-load refreshes, and hardware ribbon CC88.
Added optional MPE pressure pickup for Osmose/Haken-style controllers, off by default, allowing new notes to pick up fresh per-channel pressure immediately before normal pressure smoothing resumes.
Added per-operator double-decay envelope mode in the OPER menu and editor, exposing the OPL3 EGT envelope type.
Added extended SysEx raw preset/settings commands so every stored synth parameter can be controlled through SysEx while retaining the performance CC maps.
Added chunked SysEx preset buffer get/set dump commands for Surface32-style external editor workflows.
Accelerated browser editor Request All by using paced SysEx bulk replies with automatic missing-value fallback.
Added a SysEx patch-changed event so the browser editor refreshes preset values after patch loads without re-reading global settings.
Suppressed unsolicited patch-change SysEx unless the firmware has recently seen an active editor heartbeat.
Optimized timer and encoder ISR paths by deferring filter-mode SPI work, caching free-run arpeggiator timing, reducing duplicate vibrato/phase calculations, and ramping the SPI master volume down/up during filter-mode switching to reduce clicks.

Bug fixes:
Fixed MPE pitch bend, pressure, and CC74 voice targeting by tracking the MIDI channel assigned to each active voice, avoiding same-note cross-channel expression bleed.
Fixed incoming CC95-100 handling so LFO shape 1, tremolo rate/depth, and LFO modes 1-3 respond correctly to external MIDI control.
Fixed outgoing MIDI CC feedback to use the configured MIDI channel, with channel 1 used as the global feedback channel when needed.
Fixed panel button actions incorrectly sending conflicting fader CC feedback.
Fixed preset-load filter cutoff feedback by syncing the raw and smoothed cutoff state to the loaded preset value before sending controller refreshes.
Fixed Layer 1 Algorithm 5 feedback so the feedback fader affects both operator pairs, matching the panel graphic.


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///
Changelog v2.2

System or hidden folders are no longer incorrectly reported as PRESET folders.


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///
Changelog v2.1

Added rotary encoder acceleration with an ACCL setup option (Off/Med/High) so fast spins jump farther while slow moves stay precise
Added SETUP menu PICK (pickup) option: when ON, faders wait until they meet the preset value before changing the sound and show UP/DOWN cues to guide you
Filter cutoff MIDI CC remapped to 102 (from 32) to avoid Bank Select conflicts and restore remote control
Added Scala file (SCL) support for microtonal tuning


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// ///

Changelog v2.0

FEATURES
	
•Added Program Change handling (requires MIDI Engine v2.0 or later - open MIDIEngine2 folder for details)

BUG FIXES

•Fixed an issue where operators 5 and 6 were muted if all operators 1–4 volume faders were set to zero.
•Fixed filter tracking issue where the cutoff frequency was lowered after key release.

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////

Changelog v1.9 

FEATURES
Added CC control of Ribbon (CC#88)

BUG FIXES
Fixed Software solution to completely mute operators when all volumes are at minimum 
(had issues in 1.8)


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.8 

FEATURES
Software solution to completely mute operators when volume is at minimum

BUG FIXES
Sequencer latch mode did not latch correctly

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////

Changelog v1.7

BUG FIXES
Resolved an issue where preset volume settings were occasionally ignored, resulting in some presets being silent.

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.6
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
NEW FEATURES

Added FUGUE mode to the arpeggiator. In this mode, each voice plays the held keys in different directions and at different octaves, creating an intricate polyphonic melody from just a few held notes.

BUG FIXES
Fixed a bug causing an imbalance in voice volume under certain conditions (the heat setting was not being applied consistently across all voices).

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.5
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
NEW FEATURES

Preset volume and tremolo depth is now displayed when adjusted using faders

BUG FIXES

Filter and Modulation Envelope Sustain faders incorrectly displayed values as tempo divisions when sync was active

Filter Envelope Sync was not working

Changing all operator envelopes at once (Menu + Envelope fader) did not display the value ranges correctly (0–15)

USER MANUAL ADJUSTMENTS

Previously stated that the ribbon bends up to 5 semitones in CS80 mode — correct range is actually up to one octave, as shown in this excellent CS80 video.
https://youtu.be/sV3qDUTVsNo?si=_H-MPX7bQqbObkgy&t=1488
Note: TWISTfm behaves accordingly, matching what’s demonstrated in the video

Corrected instruction that mistakenly said to hold the encoder and move an envelope fader; it should say hold Menu and move the envelope fader


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.4
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////

Bug Fixes:
Removed an unintended debug feature that displayed the voice number on-screen in certain voice modes in FW 1.3

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.3
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
NEW FEATURES
Filter HEAT value display: The HEAT parameter now displays its value when adjusted using the menu button + resonance fader.
Legato envelope mode: Added LEGATO mode to the envelope menus, allowing the envelope to trigger only on the first note of a legato phrase (applies to both filter env and mod env).
Modwheel detachment: The modwheel can now be detached from assigned parameters. To clear its effect, enter Mod Learn mode and cancel the assignment using the menu button.
Improved USER waveform recording user interface

FIXES
Fixed an issue causing some operators voices to be routed through the wrong filters
Fixed an issue where the HEAT parameter was non-functional when adjusted from the filter menu.
Multiplier fader correction: Multiplier faders were not correctly implemented, causing missing values—this has now been addressed.
RIBBON_HOLD parameter was conflicting with ARP_TIES
Fixed issue causing corrupt USER LFO waveform playback 


//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.2 (Jan 22nd 2025)
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////

NEW FEATURES

preset MOVE function allows to move the currently loaded preset and its backup to another folder

FIXES

MIDI priority menu could not be exited
TREM menu was displaying the wrong item names

//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////
Changelog v1.1 (Jan 4th 2025)
//////////////// //////// ////////// ///////////////// //////// ////////// ///////////////// //////// ////////// ////////////////

NEW FEATURES

MPE Engine improvements:

MPE is now enabled/disabled globally from the MIDI menu instead of the voice menu, allowing all voice modes to be used with MPE controllers.
MPE mode now supports MIDI channels 2–16 (previously only 2–9).
MPE works with the sustain pedal
Please configure your MPE controller for lower zone (MIDI Channel1 is the global channel and 2-16 are member channels)
Further improvements have been made to better respond to SLIDE (CC74) 

New "SET(U)P" Menu:
LED settings have been moved to this menu.
Added the ENCS (Encoder Speed) parameter to adjust encoder speed (Normal or Faster).
Added a global BAL (left/right balance offset) setting to the setup menu

New "OPER" (Operator) Menu:
KSL, KSR, and KVS parameters have been moved to this menu.

Fader Shortcuts Added:
MENU + Algo1 fader changes the voicing mode.
MENU + Algo5 fader changes the MIDI input channel (1–16 or MPE).
MENU + Pressure Attack fader changes the ARP mode.
MENU + Pressure Depth fader changes the ARP range.

Improved voice handling algorithm so stealing doesn't occur during release phase (reduces clicks)

FIXES

ARP Compatibility with MPE:
The ARP now works with MPE, allowing pitch bending of layers not linked to the ARP.

KSL & KSR Issues Resolved:
KSL and KSR now function correctly on all voices.

Round Robin Voice Stealing Disabled:
Voice stealing has been disabled in Round Robin mode to ensure proper functionality.

Sustain Pedal in MPE Mode Fixed:
The sustain pedal now works correctly in MPE mode.

Settings Autosave Adjustment:
Autosave is now suspended until all voices are silent, preventing brief stuttering of the arpeggiator or sequencer 5 seconds after a preset change.

2X4 Voice Mode Restored:
Fixed an issue where the 2X4 voice mode was incorrectly monophonic in firmware version 1.0.

Fixed a bug causing operator2 to be muted after changing algoryhtm 5 to #1 when algo 1 is set to #3 in Round Robin voice mode
