20250605: (binary hotfix + source update)
Eureka: fix: turn off high frequency audio timeline debug messages
Eureka: fix: crash when merging mixed mono/stereo samples (e.g. via Track page context menu)
20250601:
Arranger: fix: cloning marker section (lshift-r) creates (additional) 0-length marker clip
Arranger: fix: lctrl-x a on audio clip shows unresolved node error message (=> now adjusts clip len to sample len)
Arranger: fix: lshift-delete on (e.g.) marker-section clips does not properly move clips
Arranger: fix: report play-patnr from marker clip
Arranger: change: split clip at cursor pos when 'r' is pressed and razor mode is already selected
Arranger: change: always prefer marker clip track when pressing left/right and multiple clips are selected
Arranger: change: include clips-under-marker in lctrl-a cycle
Arranger: change: delete/shift on selected tracks only when pressing lshift-delete in grid cursor mode
Arranger: change: select down/right clip if cursor is at up/right clip edge
Arranger: change: select upper clip if cursor is at up/left clip edge
Arranger: change: move cursor to end of last clip when it's located in the middle of it
Arranger: change: in edge select mode when there's a multiple selection, select first or last clip first when pressing left/right
Arranger: change: in selectClipUp/Down(), allow cursor to be placed after clip (no selection) if it ends exactly on edit offset
Arranger: change: selectClipRight() should select right clip when there's no selection
Arranger: add: keyboard shortcut for toggling 'auto-edit-sample' mode (lctrl-e)
Arranger: add: STConfig.b_audio_liverec_auto_edit_sample
Arranger: add: add keyboard shortcut for manually editing sample under cursor (+mark selection) (lshift-e or 'k')
Arranger: add: highlight track also when edit cursor is at end of clip
Arranger: add: when grid-cursor mode is disabled, draw grid-cursor, but in a different color
Arranger: add: always select marker clip when pressing lshift-a
Arranger: add: duplicate clips via lctrl-r when 'areAllClipsUnderMarkerSelected()'
Arranger: add: select none via lctrl-lshift-a
Arranger: add: show sample selector combobox popup when pressing 'g' on audio clip
Arranger: add: show valid patnr options only in showComboBoxPopupPatternNrDialog()
Arranger: add: warp mouse before showing clip dialog (patternr / sample selector)
Arranger: add: select-clips-after-cursor keyboard shortcut (LALT-z / LALT-y)
Arranger: add: per-clip initial performance controllers (cycle mw/bc/fc/ex/gp1..4 with PAGEUP/DOWN)
Arranger: add: add option to send relative clip offset (ticks) (e.g. for ModMatrix curves)
Arranger: add: add support for new Eureka audio-timeline track mode (auto-enabled when querying Eureka tracks)
Console1: add: add bi-di support for Softube Console1 MIDI controller (MK 2)
Eureka: fix: Cycle: fix vsync half-sine window types in script mode
Eureka: fix: Cycle: fix + improve 'qua' int code path
Eureka: fix: Cycle: lut init called twice when " shortform syntax (skip "shared"/"voice")
Eureka: add: Cycle: 'sta': optimize index_mul=1, index_add=0, var_mul=1, var_add=0
Eureka: add: Cycle: 'sta': make optional (def mul=1.0 add=0.0)
Eureka: add: Cycle: sin_p3 preset template
Eureka: add: Cycle: lut2x template(-include)
Eureka: add: Cycle: lut2y template(-include)
Eureka: add: Cycle: lut2xy template(-include)
Eureka: add: Cycle: lut4 template(-include)
Eureka: add: Cycle: lcurves (up to 48 per patch, e.g. for UI-auto-generated machines)
Eureka: add: Cycle: parse '' includes and auto-generate cycle patch (but no actual UI, yet)
Eureka: add: Cycle: select prev/next arg via mousewheel over arg name
Eureka: add: Cycle: edit include by pressing TAB
Eureka: add: Cycle: 'rbl' / 'rbr' modules (read left or right voice bus channel)
Eureka: add: Cycle: 'wbl' / 'wbr' modules (write left or right voice bus channel)
Eureka: add: Cycle: 'pal' / 'par' pan modules
Eureka: add: Cycle: 'wrl' / 'wrr': add amp/a input (write scaled values when connected)
Eureka: add: Cycle: treat 'param' as 'arg' when not in plugin mode
Eureka: add: Track page: add STConfig.pgtrack_default_list_type
Eureka: add: Track page: set zone names to orig sample names when merging samples
Eureka: add: Track page: merge lane eq3 stfx instances when merging samples
Eureka: add: Sample page: variable-sample-rate interpolation modes
Eureka: add: Sample page: add b_pgsample_zone_names=maybe option (prefer zone names if any zone has a name)
Eureka: add: Sample page: mixer view (SamplerMixerDialog / ZoneMixForm)
Eureka: add: Sample page: postrec_init_drum page cmd and 'Drum' button (Reinit tab)
Eureka: add: Sample page: remove unreferenced samples: show confirmation dialog
Eureka: add: Sample page: add "persistent" flag / CheckBox
Eureka: add: Sample page: leave 2+ row scroll margin when auto-selecting samples
Eureka: add: Sample page: modmatrix variations (up to 16 per zone, with optional interpolation)
Eureka: add: sample browser ratings (sample_ratings.ini, rating editor, rating filter)
Eureka: add: sample tag exclusion substrings (!substring)
Eureka: add: samplepad: quick-assign sample from pre-filtered favourite list (click RMB to shuffle)
Eureka: add: samplepad: Tools menu option for keeping original sample names when consolidating samples
Eureka: add: samplepad: Tools menu option for configuring autoduplicate config setting
Eureka: add: samplepad: utility function for grouping all samplepad samples
Eureka: add: samplepad: show variation name "" if all variation pads are unused
Eureka: add: samplepad: hold lctrl while changing variation to edit but NOT play it
Eureka: add: samplepad: per-variation relative send / pan (hold LALT while editing dials)
Eureka: add: samplepad: per-variation relative send / pan transition speed
Eureka: add: ModSample: show preset context sub menu (quick-load sample)
Eureka: add: ModSample: add option to auto-start voice (e.g. for fx-only Cycle patches)
Eureka: add: ModSample: sustain pedal default-handler bypass (+ add SUSTAIN_PEDAL / SOFT_PEDAL mod matrix sources)
Eureka: add: categorize samples (also) by tags
Eureka: add: 'Clone' item to modmatrix entry context menu
Eureka: add: MM context menu item for importing modmatrix entries from plugin mods
Eureka: add: ModGate2Audio (supports L/R/stereo modes. requires DC coupled audio interface)
Eureka: add: preset sample config option for new audio clip samples (STConfig.audio_clip_preset_sample)
Eureka: add: MIDI controlled audio multitracker ('timeline' track mode. up to 128 program-changeable variations)
Eureka: add: show recording time in status bar
Freeform: fix: controller events sometimes lost after tracker-detail-edit (a Monitor-node issue, actually)
Freeform: fix: tracker-detail-edit sometimes creates duplicate tracks
Freeform: add: alternative tracker-detail-edit shortcuts lctrl-TAB and RETURN
Freeform: fix: leave kbdfocus to NSQ_Arranger when editing NSQ_Events
Freeform: fix: copy/paste events between different seq nodes
Freeform: fix: edit cursor disappears after pressing esc on ports page
Freeform: add: utility function that merges perf.ctls to bar starts ('b', lctrl-b)
General: change: auto-start Eureka when pressing lctrl-x x
General: add: STConfig.replay_thread_affinity_mask (may contain only a single bit on macOS)
General: add: STConfig.midiout_thread_affinity_mask (may contain only a single bit on macOS)
MIDI: add: write script that converts pencilresearch MIDI CSVs to .msp format (=> add 186 new synth profiles)
MIDI: add: Oberheim OB-X8 synth profile and editor
Modular: fix: tickInput() called twice per song tick
Modular: fix: rmb-detail editing knob value does not immediately reflect changes
Proxy: add: forward MIDI events (except RPN) recvd on proxy node automation port(s) to syntheditor/synth
Proxy: add: convert prgchg on automation port(s) to 'virtual' synthedit proxy program change
Proxy: add: make bank-select / program-change bases configurable (1..128(def) or 0..127)
Script: fix: properly support script classes (fix false method arg parse errors)
Script: add: syntax highlighters
Script: add: gate/pitch/vel feedback MIDI delay with ducking ('script_delay')
SysEx: fix: FS1R editor: AEG scl change does not send update to synth
SysEx: change: FS1R editor: limit aeg_scl update rate to 150ms intervals
SysEx: add: FS1R editor: workaround for "Filter SW" synth issue
SysEx: add: 'debug' page cmd
Tracker: add: successively add bc/fc/ex/gp1/gp2/gp3/gp4 when other CC already exists (when dbl-clicking empty param row)
Tracker: add: LO_NIBL cel style support (value range 0..15)
TrigSeq: fix: step details / arg2 / mod floatparam edit/layout issues
UI: fix: call FloatParam parseExpressionOrMapUser() before inc/dec (update value)
UI: fix: TextEdit lctrl-RIGHT (gotoEndOfWord) when there's no word under cursor
UI: fix: Dial horizontal mouse-drag in force-fine-edit mode
UI: fix: wrong native filedialog path in macOS 15.3.2
UI: change: close TextView find dialog with lctrl-f when find string is blank
UI: add: set initial TextView find dialog string to first line of selection
UI: add: TextEdit: inc/dec number via RMB-hold + WHEEL up/down
UI: add: FileDialog: shortcut for switching to last used directory (lctrl-g)
20241223:
Eureka: fix: Cycle: fix rate=g-3/d#4 style rate expression (# comment in second note)
Eureka: fix: Cycle: string-conversion issue in evalMulSRInput() (when not in plugin mode and oversample>1)
Eureka: fix: Cycle: potentially wrong auto-assigned curve order after cloning patch
Eureka: fix: Cycle: bezier curve copy/paste not working between patches (after closing MachineEditDialog)
Eureka: fix: Cycle: fix error highlighting / cursor positioning in include files and template declarations
Eureka: fix: Cycle: lofi/int template code is wrongly evaluated as float
Eureka: fix: Cycle: isConstVal(): check if op is AUTO
Eureka: fix: Cycle: rewind input+mod stack before next template instantiation after nested sub-tree (e.g. "dly test 6")
Eureka: fix: Cycle: fix curve array params (e.g. 'osc_additive16arrayfm_1' machine)
Eureka: fix: Cycle: fix 'p2s' module plugin-mode 'kbd' input (for input values < 1.0)
Eureka: fix: STFX init patch not loaded after instantiation via plugin browser
Eureka: add: Cycle: save separate geometry config for zoomed/single-env curve dialog
Eureka: add: select system default device via STConfig.audio_device_index=-1 (tested on macOS)
Eureka: add: Cycle: 'ssl' (sine-slice) module can now also be used in voice plugins
Eureka: add: Cycle: add 'signed' input to 'frc' module
Eureka: add: Cycle: new 'apf' module (1st order all-pass filter)
Eureka: add: Cycle: new 'fam' module (fused add-multiply, counterpart to 'fma')
Eureka: add: Cycle: new 'eq3' module (3-band equalizer)
Eureka: add: Cycle: new 'wrp' module (wrap around min/max range)
Eureka: add: Cycle: new 'pre' module (template helper)
Eureka: add: Cycle: new 'dly' module (delay line)
Eureka: add: Cycle: new 'pdsinesaw' machine include (template)
Eureka: add: Cycle: new 'pdwarp' machine include (template)
Eureka: add: Cycle: new 'ws_quintic' machine include (template)
Eureka: add: Cycle: new 'bit_linear' machine include (template)
Eureka: add: Cycle: new 'rect_hs' machine include (template)
Eureka: add: Cycle: new 'tri_hs' machine include (template)
Eureka: add: Cycle: new 'saw_hs' machine include (template)
Eureka: add: Cycle: new 'eventooth_hs' machine include (template)
Eureka: add: Cycle: new 'evenangle_hs' machine include (template)
Eureka: add: Cycle: new 'parabolic_hs' machine include (template)
Eureka: add: Cycle: new 'evenangle_hs_det' machine include (template)
Eureka: add: Cycle: new 'rev_1' machine include (template)
Eureka: add: Cycle: add lane continuations (multiple declarations of the same lane)
Eureka: add: Cycle: copy initial sub-tree output value from parent
Eureka: add: Cycle: track last seen cursor pos per buffer
Eureka: add: Cycle: add patch-local source buffers (".mybuffer")
lctrl-g on 'inc .mytemplateinc' line or '~mytemplate' instantiation opens (new) patch buffer
lalt-LEFT/RIGHT selects previous / next buffer
Eureka: add: Cycle: add syntax highlighting (docs + editor)
Eureka: add: Cycle: 'pulse 2 *' example patches
Eureka: add: Cycle: 'eq3 test *' example patches
Eureka: add: Cycle: 'kr snare *' example patches
Eureka: add: Cycle: 'cross fm *' example patches
Eureka: add: Cycle: 'sine-saw pd *' example patches
Eureka: add: Cycle: 'warp pd *' example patches
Eureka: add: Cycle: 'test_fam_1' example patch
Eureka: add: Cycle: 'test apf *' example patches
Eureka: add: Cycle: 'tri_2_oversample_[cde]' (ws_quintic template) example patches
Eureka: add: Cycle: 'test ssl *' example patches
Eureka: add: Cycle: 'test tan *' example patches
Eureka: add: Cycle: 'bit linear *' example patches
Eureka: add: Cycle: 'rectangle hs *' example patches
Eureka: add: Cycle: 'tri hs *' example patches
Eureka: add: Cycle: 'saw hs *' example patches
Eureka: add: Cycle: 'eventooth hs *' example patches
Eureka: add: Cycle: 'evenangle hs *' example patches
Eureka: add: Cycle: 'parabolic hs *' example patches
Eureka: add: Cycle: 'evenangle hs det *' example patches
Eureka: add: Cycle: 'dly test *' example patches
Eureka: add: Cycle: 'rev_1 *' example patches
Eureka: add: Cycle: 'chain prepare *' example patches
Eureka: add: Cycle: 'multibuf test *' example patches
Eureka: add: Cycle: add "__dev__cycle_autosave_patch_after_recompile" sample page cmd
(codegen-dev helper, auto-saves patch after load + rebuild due to checksum update)
General: fix: string split/tokenize heap corruption issue
General: fix: hashtable element count issue
UI: add: BezierEdit: add 'trim' utility function that scales selected points to curve width (lctrl-t)
UI: add: set non-default statusbar message as tooltip (reverts to default tooltip after timeout)
20241130:
All Nodes: add: focus main/default widget when editor background is clicked
All Nodes: add: toggle ignore-seek-prgchg-mute per node (lctrl-x BACKSPACE)
Arranger: fix: audio track causes redundant events to be sent to sampler MIDI port
Arranger: fix: skip lctrl-HOME/END when "force" is disabled / cm_clip_pattern is not editable
Arranger: fix: fix delete region (when it's not intersecting start/end)
Arranger: change: lctrl-(lshift)-r when there's no space for cloned pattern, replace selected one(s)
(e.g. when creating a variation in the middle of a song)
Arranger: add: select all clips under marker (lshift-a)
Arranger: add: create marker clip that spans currently selected clips (lshift-w or lshift-m)
Arranger: add: lshift-r: clone current marker section (clips under marker + create new marker)
Arranger: add: allow *any* Eureka ModSample track to be used as an audio track
Arranger: add: "new clip sample" checkbox (for turning off sample-creation when drawing audio clips)
Arranger: add: immediately switch replay sample when sample selection has changed
Eureka: fix: update project page after changing track mute/solo state
Eureka: fix: update current track ModSample when changing initial performance controller(s)
Eureka: fix: slide instantly when time=1
Eureka: fix: when inserting/deleting mod matrix entry, shift all Mod Amount targets after the new entry
Eureka: fix: fix 'fsr' reset issue: all voices initially started with same seed
Eureka: fix: potential crash after adding voice plugin to sample and starting (ModSample) replay
Eureka: fix: SoX lowpass 6 and highpass 6 not working
Eureka: fix: "Macbook Pro Speakers" output device (no input channels)
Eureka: fix: support snap-to-grid when creating new center point in bezier curve editor
Eureka: fix: Cycle: fix LUT float codepath (wrap-around mode)
Eureka: fix: Cycle: reading from int var in float fallback misses type conversion
Eureka: fix: Cycle/STFX: faint clicks when triggering slide note
Eureka: fix: Cycle: syntax tree nesting corner case issue
Eureka: fix: Cycle: clip 'zon' source offset in int mode
Eureka: fix: track level indicator text mode font size
Eureka: fix: changing track dev/ch does not immediately affect remote_audio redirection
Eureka: fix: SampleBrowser: never load MIDI program assignment
Eureka: fix: skip .yml files when cleaning up project sample folder
Eureka: fix: sample bank exponential volume issue
Eureka: fix: when merging samples: convert "from start" flag to sample loop
Eureka: fix: when merging samples: merge zone cycle patches
Eureka: fix: when merging samples: adjust zone transpose when source sample bank transpose is != 0
Eureka: fix: ModSTFX instance lost after switching track variation
Eureka: fix: auto-unload-samples related crash when loading track patches
Eureka: fix: SamplePad pitchbend performance controller
Eureka: fix: avoid redundant scanCurvePresets() calls in BezierCurveArrayForm and CurveDialog
Eureka: fix: SDL audio (not recommended b/c of high latency, though)
Eureka: fix: quietly ignore invalid (null) output / input aliases
Eureka: fix: ring size change works but is not saved to eureka_config_local.tks
Eureka: fix: update output lane combobox options after adding/removing lane
Eureka: fix: exception when quickly closing Synth curves dialog while tooltip is visible
Eureka: fix: SamplePluginChainPatchBrowserDialog "Revert" does not update SamplePluginForm
Eureka: fix: LFO form tab cycling and type-dependent widget-editable states
Eureka: fix: plugin modulation update when previous plugin slot was unused or disabled
Eureka: fix: crash when going to previous page via back button (instead of ESCAPE key)
Eureka: fix: (potentially) wrong ModSample namespace after loading track patch
Eureka: fix: plugin browser layout issue after returning from track modmatrix
Eureka: fix: FMStack: plugin-variant, struct-size related crashes
Eureka: fix: handle negative values in sample envelope exponent (fix volume drop outs)
Eureka: fix: sample loops not working correctly in additive wavetable mode
Eureka: fix: 'alt' zone double trigger
Eureka: fix: mono slide not working with alt-grouped multi-sample
Eureka: fix: mono slide not working when modulating sample offset in modmatrix
Eureka: fix: hangup in sample LiveRec mixed copy oscillator mode ("polyphonizer")
Eureka: fix: "$a" returns constant 10 (0xA) instead of variable "a"
Eureka: change: Track: move ('empty' button) Sync options to submenu
Eureka: change: limit additive wavetable partial magnitude to -1;1 after exponent scaling
Eureka: change: increase number of MIDI input devices from 8 to 26 (vst_a..vst_z)
Eureka: change: ModSample: try autoload_suggested_pathname first when autoloading samples
Eureka: change: SamplePad: try autoload_suggested_pathname first when autoloading samples (track drum mode)
Eureka: change: Cycle: "unuse" temporary variables when module scope ends (=> reduces number of variables)
Eureka: change: Cycle: change fixed osc reference freq to middle C (261.63 Hz)
Eureka: change: Cycle: consider logic levels > 0.0f "high" (instead of "> 0.5")
(=> allow gate signals to carry velocity information)
Eureka: change: Cycle: use curve_intarrays in procedural sample float mode (like in plugin mode)
Eureka: change: move rescan and export buttons to submenus (audio page)
Eureka: change: don't calc anti-imaging params when AI filter is disabled (optimize)
Eureka: add: add short/mono, short/stereo columns (STConfig.audio_in_aliases / audio_out_aliases)
Eureka: add: inline-edit sample start / len / #rep (loops table)
Eureka: add: highlight textfield bg when saving curve preset (existing files)
Eureka: add: add sample filter option that exactly matches the given word (e.g. "=rs")
Eureka: add: add option to load track patch main variation to current variation
Eureka: add: warning indicator when MIDI program nr is already in use
Eureka: add: AudioScriptHost (via librs) (+ add "API" class) (port name: "audio")
(allows execution of external scripts in the context of the application)
Eureka: add: option to show CPU core combobox even when b_ignore_thread_affinity=true (macOS) (def=false)
Eureka: add: option to show/hide autoroute track page context menu items (def=false/hidden)
Eureka: add: auto-select loudest input channel ('A' button) (audio tracks page)
Eureka: add: SampleBrowser: add "user library only" filter checkbox
Eureka: add: SampleBrowser: select random sample with lctrl-r
Eureka: add: SampleBrowser: create Sample undo state when dialog is entered (and add undo button)
Eureka: add: SampleBrowser: try to move cursor to currently selected sample
Eureka: add: SampleBrowser: allow multiple selection when not in replace mode
Eureka: add: SampleBrowser: show tags / keywords + add filter
Eureka: add: SampleBrowser: append/copy temporary replay sample to clipboard with (lshift-)lctrl-c
Eureka: add: SampleBrowser: add context menu (RMB-click or lshift-a)
Eureka: add: add sample tag editor (with auto-detection / guessing and user-editable tag categories and lists)
Eureka: add: 'autotag_dir' page cmd (auto-assign tags to sample folder entries based on sample categories)
Eureka: add: 'fade_regions' page cmd and zone table context menu items
Eureka: add: "Snap loop starts [/ends] to zero crossings" zone table context menu items
Eureka: add: show autoload flag in samples table (":A")
Eureka: add: add namespace filter keyboard shortcut (lctrl-f)
Eureka: add: focus samples table when UP is pressed in namespace filter combofield
Eureka: add: save track_mode, multi_* per TrackPatchVariation
Eureka: add: SamplePad: bipolar pan dial display
Eureka: add: SamplePad: pad mute / solo
Eureka: add: SamplePad: make variation-select base note configurable
Eureka: add: SamplePad: modulate initial sample/pad performance controllers per variation
Eureka: add: SamplePad: support 14bit highres performance controllers (MSB+LSB)
Eureka: add: STConfig.cache_rootpath ($(CACHE_DIR)) and move samplecache.dat, clapcache[_wl].dat, vstcache[_wl].dat to cache dir
Eureka: add: Track: add "Clone selected samples with prefix.." page context menu utility function
Eureka: add: Track: add "Merge selected samples to new sample.." page context menu utility function
Eureka: add: Track: add input combobox + stereo/SC checkboxes (same as in track form)
Eureka: add: Track: implement lane fading (via CC or RPN, see widget tooltips. great for ambient!)
Eureka: add: Track: add multi-lane input mode (=> support 'arbitrary' number of inputs per track)
Eureka: add: Track: auto-select loudest input channel ('A' button)
Eureka: add: show voice plugin combobox popup when INSERT is pressed in plugin table
Eureka: add: GLIDE_TIME, GLIDE_TIME_INV, GLIDE_TIME_TRI, TIME_TRI_INV modulation sources
Eureka: add: ModSTFX: redirect side-chain input to voice bus 1
Eureka: add: NOTE_2 / FREQ_2 sample modmatrix destinations (added to primary note freq)
Eureka: add: volume adsr intensity FloatParam widget
Eureka: add: remember last loaded curve preset per envelope type and stage
Eureka: add: expose first 8 voice buses in sample zone mod matrix (VOICE_BUS_1..8 sources)
Eureka: add: copy / paste voice plugin parameters to / from clipboard (context menu)
Eureka: add: set voice plugin BPM (set_bpm() in STFX plugin.h)
Eureka: add: "cycle: mix next sample" samples context menu utility function
Eureka: add: hold-click "Export MOD.." to export to $(PROJECT_DIR)/$(PROJECT_NAME)/samples/export.mod
Eureka: add: mod export: map samples to mod samples via MIDI prgnr
Eureka: add: add "Prg Display Mode Hex" (Protracker style)
Eureka: add: "Add Sine (Amiga)", "Add Cycle (Amiga)" sample-table "+" menu options
Eureka: add: "User" patch template / preset submenu to samples table "+" menu (STConfig.pgsample_preset_path)
Eureka: add: click 'MIDI' labelbutton to auto-assign unused MIDI program
Eureka: add: indicate duplicate MIDI program number in samples table ('!')
Eureka: add: show sample nr in duplicate MIDI program number combobox tooltip
Eureka: add: BezierEdit: add utility function that sets current curve as backdrop
Eureka: add: open sample / zone / loop table context menus with 'a'
Eureka: add: focus-cycle sample / zone / loop / FX tables with cursor LEFT / RIGHT (or 's' / 'd')
Eureka: add: show Cycle editor when SampleView did not handle 'e' key (when already zoomed in to zone region)
Eureka: add: show last edited volume envelope with 'v'
Eureka: add: BezierEdit: select A/S/R stages with '1'..'3'
Eureka: add: BezierEdit: select freq/vol/pan/aux envelope with '4'..'7'
Eureka: add: extended parameter editor dialog for voice plugins with more than 8 parameters
Eureka: add: GenericParamDialogSTFX: add parameter sections and groups
Eureka: add: GenericParamDialogSTFX: randomize last selected parameter ('r')
Eureka: add: GenericParamDialogSTFX: randomize last selected parameter group ('lshift-r')
Eureka: add: GenericParamDialogSTFX: randomize all parameter groups ('lctrl-lshift-r')
Eureka: add: GenericParamDialogSTFX: support param presets (e.g. defined in Cycle plugin patch)
Eureka: add: GenericParamDialogSTFX: support array parameters
Eureka: add: port Valley's Plateau reverb to STFX plugin
Eureka: add: adjust wavetable cyclelen preset options to current sample frequency
Eureka: add: additive wavetable analysis area crossfading
Eureka: add: 'wt_resample' page cmd utility function (old cyclelen => new cyclelen)
Eureka: add: support WT resampling during additive export (STConfig.page_sample_additive_wt_export_cycle_len, def=1024)
Eureka: add: utility button that 'guesses' wavetable cyclelen from sample root note
Eureka: add: Scope: improve scope oscillator view stabilization
Eureka: add: Scope: autochop sample and trim to last region when entering edit mode
Eureka: add: support for CLAP plugins
(note to plugin devs: don't forget to support CLAP_EVENT_PARAM_MOD !)
Eureka: add: 'clap_debug', 'vst2_debug' sample page commands
Eureka: add: Cycle: add shortcuts for common keywords (a, av, ap, c, p, pv, m, mp)
Eureka: add: Cycle: support bezier curve exponent (in BezierCurveArrayForm)
Eureka: add: Cycle: make velocity accessible in plugins / add 'vel' module (also allowed as input value)
Eureka: add: Cycle: make note accessible in plugins / add 'note' module (also allowed as input value)
Eureka: add: Cycle: implement missing emitInt() code paths in bts, div, env, hbx, inc, ipl, kbd, rcp modules
Eureka: add: Cycle: add (optional) 'dither' option (8bit integer / Lo-Fi mode)
Eureka: add: Cycle: add 'map' keyword (keymaps)
Eureka: add: Cycle: array parameters
Eureka: add: Cycle: add indexed array param access via .
Eureka: add: Cycle: (optionally) auto-enumerate curves
Eureka: add: Cycle: support dynamic voiceplugin bezier curve updates (i.e. w/o recompilation)
Eureka: add: Cycle: remember last loaded preset per curve
Eureka: add: Cycle: add constant 'scl' input to 'lut' module
Eureka: add: Cycle: add linear and exponential pitch modes to 'kbd' module
Eureka: add: Cycle: add 'nrf' input to 'bus' module and change "nr" to int (0..32)
Eureka: add: Cycle: add 'phasemod'/'pm' input to oscillator modules (post-vsync modulation)
Eureka: add: Cycle: add 'f'/'ph'/'vs'/'cy'/'rs'/'fx'/'win' input aliases to oscillator modules
Eureka: add: Cycle: add 'pd' inputs to oscillators (phase distortion)
Eureka: add: Cycle: oscillator windowed-sync types 4..8 (hse1..hse5)
Eureka: add: Cycle: support custom window function when 'window' input is not constant (all oscillators)
Eureka: add: Cycle: add 'bipolar'/'b' input to 'lut' module
Eureka: add: Cycle: add 'hq' input/option to 'fld' module (arbitrary number of folds)
Eureka: add: Cycle: add named input constants/literals (e.g. svf mode=lpf|hpf|bpf|..)
Eureka: add: Cycle: add 'cycle_tree_debug' page cmd
Eureka: add: Cycle: add 'restart' input to 'zon' module
Eureka: add: Cycle: add hpf/bpf/lpf inserts to 'svf' module
Eureka: add: Cycle: add var 'smooth' flag (voice plugins only. enables/disables block interpolation)
Eureka: add: Cycle: add 'modparam' / 'mp' keywords (declare param + mod)
Eureka: add: Cycle: add 'xinc' keyword (support for C/C++ extension modules in plugins)
Eureka: add: Cycle: add 'xamp.h' example extension module
Eureka: add: Cycle: add 'x303.h' example extension module
Eureka: add: Cycle: add 'xldf.h' example extension module (Ladder filter)
Eureka: add: Cycle: add 'xlrf.h' example extension module (Linkwitz-Riley filter)
Eureka: add: Cycle: add 'xrm.h' example extension module (JRE ring mod)
Eureka: add: Cycle: add 'xdi.h' example extension module (JRE diode simulation)
Eureka: add: Cycle: add 'xfs.h' example extension module (Squinky Labs frequency shifter)
Eureka: add: Cycle: add 'xfsxy.h' example extension module
Eureka: add: Cycle: auto-prefix var with lane id when declared within lane
Eureka: add: Cycle: use plugin 'id' as name (fallback)
Eureka: add: Cycle: set plugin 'cat' to 'osc' (fallback)
Eureka: add: Cycle: increase max curve size from 2048 (11bit) to 16384 (14bit)
Eureka: add: Cycle: switch between script and curve dialogs with lctrl-TAB
Eureka: add: Cycle: add 'vsync' input to 'pha' module
Eureka: add: Cycle: add 'signed'/'sgn' input to 'fsr' module (def=1. 0=emit unsigned values)
Eureka: add: Cycle: add 'sr' input to 'box'/'flt' module (def=1)
Eureka: add: Cycle: add 'sr' input to 'boo' module (def=1)
Eureka: add: Cycle: add 'sr' input to 'hbx' module (def=1)
Eureka: add: Cycle: add 'sr' input to 'hld' module (def=1)
Eureka: add: Cycle: new compare modules (clt, cle, ceq, cne, cge, cgt)
Eureka: add: Cycle: new 'vst' module (declare + store var)
Eureka: add: Cycle: new 'adsr' module (analog-style/rate-based envelope with optional reset)
Eureka: add: Cycle: new 'ipl' module (a/b interpolation with various ease in/out window functions)
Eureka: add: Cycle: new 'out' module (write to voice bus)
Eureka: add: Cycle: new 'fix' module (fix float NaN/inf)
Eureka: add: Cycle: new 'itg' module (discard fractional bits)
Eureka: add: Cycle: new 'not' module (invert logic signal)
Eureka: add: Cycle: new 'red' and 'fed' modules (rising / falling edge detection)
Eureka: add: Cycle: new 'env' module (e.g. for (additional) cubic bezier curve envelopes)
Eureka: add: Cycle: new 'clk' module (freq or BPM based, configurable duty cycle, optional swing)
Eureka: add: Cycle: new 'nth' module (shiftable clock divider)
Eureka: add: Cycle: new 'hwr' module (half-wave rectification)
Eureka: add: Cycle: new 'fwr' module (full-wave rectification)
Eureka: add: Cycle: new 'tsq' module (trig sequencer)
Eureka: add: Cycle: new 'vsq' module (value sequencer)
Eureka: add: Cycle: new 'slw' module (slew)
Eureka: add: Cycle: new 'spr' module (springs)
Eureka: add: Cycle: new 'mkv' module (markov chains)
Eureka: add: Cycle: add stereo support (plugins only) ('rdl', 'rdr', 'wrl', 'wrr' modules)
Eureka: add: Cycle: &&, ||, ^^, !&, !|, !^ logical modifiers/operators
Eureka: add: Cycle: am/qm/QM/hm/HM/gm/GM operators (pythagorean means)
Eureka: add: Cycle: *s and +s operators (sample-rate independent multiplication / addition)
Eureka: add: Cycle: 'inc' statement and STConfig.cycle_machine_inc_path (include .cy files)
Eureka: add: Cycle: add "Import" utility function to bezier editor (import px py c1x c1y c2x c2y lines from ASCII clipboard)
Eureka: add: Cycle machine editor: utility function for expanding input under cursor (lctrl-i)
Eureka: add: Cycle machine editor: 'find' function (lctrl-f)
Eureka: add: Cycle machine editor: add keyboard shortcut for editing include file under cursor (lctrl-g)
Eureka: add: Cycle machine editor: show (last edited) bezier curve in + add combobox for curve selection
Eureka: add: Cycle machine editor: show param selector + single param slider+floatparam below curve
Eureka: add: Cycle: add support for user-defined templates (e.g. for macro oscillators)
(note: can also be used as structs. supports automatic or explicit/manual instance ids)
Eureka: add: GATE modmatrix modulation source
Eureka: add: TRIG_PULSE modmatrix modulation source
Eureka: add: MODSEQ4_STEP1..16 modmatrix modulation sources (=> use it in conjunction with modseq patterns)
Eureka: add: FMStack: show beige textfield bg warning when preset already exists (save)
Eureka: add: FMStack: add alternative ModFM mode (per op)
Eureka: add: FMStack: add hires-linear-complexity plugin variant ("osc fm stack v2 hires lm")
Eureka: add: FMStack: utility function that exports patch as Cycle script (context menu, lctrl-z or lctrl-y)
Eureka: add: fx_example: add mix_in / mix_bus params/mods to x_mul/x_min/x_max voice plugins
Eureka: add: fx_example: add "dly flt 2 mod" voice plugin (up to 1486ms, lp+hp filters, modulation LFO)
Eureka: add: fx_example: add "ws_fold_wrap2" voice plugin (wave folder)
Eureka: add: STFX param value string queries (e.g. delay millisec) (+ update GenericParamDialogSTFX + SamplePluginForm)
Eureka: add: sample liverec 'Peak Tuned', 'ZC Pk Tuned' oscillator cycle detection modes ("polyphonizer")
Eureka: add: sample zone modmatrix slew (up and down, per entry)
Eureka: add: sample zone modmatrix slew reset (off, zero, one) (per entry)
(tip: set to one and use slew-down to create simply decay envelopes. adjust curve for fine-tuning.)
Eureka: add: (per-voice) modulation plugins (stfx) (AM, VB, VM, SR targets)
(can be used for analog envelopes, sample FM, procedural modulation, ..)
Eureka: add: sample 'realloc' flag (force monophonic voice-reuse, e.g. for analog envelopes)
Eureka: add: Cycle/STFX: patch-specific sample voice plugins
(workflow improvement: no need to worry about shared/global-plugin side-effects anymore)
Eureka: add: multi-line sample info ('M' labelbutton next to sample info textfield)
Eureka: add: load/save single voice plugin preset via PatchBrowserDialogSTFX (hold-click 'P' to show chain-preset browser)
Eureka: add: MIDI-select namespace-local sample (RPN#0080 smp_nsp_abs and RPN#081 smp_nsp_rel)
(useful after e.g. grouping sample variations in common namespace, no need for assigning MIDI prg nrs to all of them)
Eureka: add: show namespace-local sample nr in samples table
Eureka: add: vst_deepscan_whitelist (e.g. for restricting/minimizing plugin choices)
Eureka: add: update/rewrite VST2 plugin scan process (+add "Rescan VST2" button)
Eureka: add: edit first global or patch plugin patch as fallback when double-clicking sample or zone
Eureka: add: micro-tuning (per sample and/or zone. tuning editor with .scl and .tun import)
Eureka: add: TUNING_TBL_ABS, TUNING_TBL_REL (interpolated) tuning table selection sample modmatrix destinations
Eureka: add: ADSR 'quick-edit' presets (click freq/vol/pan/aux labelbuttons) (lshift-v shows volume env preset menu)
Freeform: fix: program number dialog does not use HiDPI height
Freeform: fix: 'explode' (lctrl-x e) regression
Freeform: add: select Sequence tab when pressing ESC while Play tab is visible
Freeform: add: show prgchg display type when program number is entered (via 'p')
MIDI: change: increase number of local MIDI output devices from 8 to 26 (vst_a..vst_z)
MIDI: change: speed up (3x) CtlTag rebuild / lookup
MIDI: add: common BidiCtl base class for bidirectional controllers (e.g. FaderPort)
MIDI: add: bidirectional ctl support for MIDIFighter Twister
MIDI: add: STConfig.pipe_local_auto_devicename (def="")
MIDI: add: auto-add virtual "" device (STConfig.pipe_local_auto_devicename)
MIDI: add: auto-add virtual "" device (STConfig.editfocus_devicename)
MIDI: add: auto-add virtual "" and "" devices (STConfig.autodev_a_devicename)
MIDI: add: auto-add virtual "" device (STConfig.autodev_swing_devicename)
MIDIMon: add: show remote_audio events on PageOutputMon
Modular: fix: highlight _all_ outgoing connections when hovering over output port
Modular: fix: oneshot loop mode not working with Eurorack pitchbend cv/gate (GateOutput, ShuttleControl modules)
Modular: change: change PortOffsetWidget to ComboBox and add long options
Modular: change: fix / rewrite LFO module
Modular: add: select previous / next used pattern with lctrl-mousewheel
Modular: add: workaround for occasional flam effects when switching patterns (onPatternChanged())
Modular: add: Dial presets (various modules. LMB hold-click)
Modular: add: Attenuvertor: add scale input default value switch and add preset menu
Modular: add: CVSeq16: add clock-phase / LUT mode
Modular: add: CVSeq16: add interpolation type to context menu
Modular: add: CVSeq16: record from CV (with optional step mask + rec-gate input)
Modular: add: CVSeq16: show note name + cents when editing dials
Modular: add: TrigSeq16: add clock-phase 'scrub' mode
Modular: add: Math: add SAT op (saturate)
Modular: add: Math: add POW2_1..4, POW2_1..4I ops
Modular: add: Math: add CLAMP_0B, CLAMP_B ops
Modular: add: Math: add WRAP_0B, WRAP_B ops
Modular: add: Math: add FOLD_0B, FOLD_B ops
Modular: add: Math: add delta-detect modes (A_CHANGE, A_DELTA ops)
Modular: add: Math: add U2B, B2U ops (bipolar<>unipolar conversion)
Modular: add: Math: add STH op (sample&hold with threshold)
Modular: add: Math: add GTS, GTL ops (gate filter/comparator)
Modular: add: NoteInput: add slide/overlap gate output
Modular: add: Slew: add 'active' input
Modular: add: new Scope module
Modular: add: new PolyStepOutput module (e.g. for Tracker node remote-control)
Modular: add: new IntMonitor module
Modular: add: new GateQuantizer module
Modular: add: new ExtClkOutput module
Modular: add: new Buttons module (keyboard controlled gates)
Modular: add: new GateSeq16 module
Modular: add: new CVTrigSeq16 module
PipeMap: fix: NewTrackDialog: cannot create node unless category is selected (fix ReadClassNameFromPresetFile() regression)
PipeMap: add: NewTrackDialog: show category midiports in category combobox
PipeMap: add: NewTrackDialog: before reverting to "" port, try to find first used pipe autodevice first
PipeMap: add: NewTrackDialog: select first available preset after type has changed
PipeMap: add: NewTrackDialog/New Track: when auto-assigning automation midiport, only look at current pipe when midiport dev is ""
PipeMap: add: set/clear keyjazz lock with lctrl-x l (when pipenode is focused)
Replay: fix: "redirect SysEx-out Ch1 to Play Frame" requires 'master' (final output) pipe to be present (or notes will hang)
Replay: fix: remove non-virtual events from framePlayMaster after processing 'master' pipe 0 (don't mirror to remaining pipes)
Replay: add: apply keyjazz lock also to MIDI, not just the computer keyboard
Script: add: add "prgchg merge replace" preset (two notes+prgchgs in, one note + prgchg out)
Script: add: modexport preset: convert ptfx to mod commands
Script: add: modexport preset: don't save pattern orderlist identity (reduce module size)
Script: add: modexport preset: add option to keep samples in dest module
Script: add: add "prgchg chroma replace" preset (two notes+prgchgs in, one note + prgchg out)
ScriptHost: add: new SeqScriptHost (via librs) (port name: "seq")
(allows execution of external scripts in the context of the application)
Tracker: fix: fix NT_ManageColumnsDialog icons in HiDPI mode
Tracker: fix: reset injected_ctl_states at end of replay tick (fix channel pressure event flood)
Tracker: fix: always remove matching frameRec/Play events
Tracker: add: record-(usr)ctls-at-note-on option (lctrl-x .)
TrigSeq: fix: masterlength>0 causes microtimed notes to drop out after a few repeats
TrigSeq: fix: save/load mod_tickshift (see TrackSetupDialog)
TrigSeq: add: select Grid tab when pressing ESC while Play tab is visible
TrigSeq: add: show warning when track length (ticks) exceeds pat master_len_16th (ticks)
TrigSeq: add: enable rec and start replay with RSHIFT
TrigSeq: add: toggle pre-count with lctrl-x RCTRL
TrigSeq: add: beat-synchronized undo-and-restart-recording with RETURN
UI: fix: fix onDropFiles when UI.zoom_x/y != 1
UI: fix: (Eureka) statusbar textfield has wrong edit mode colors until autocompletition popup has been shown
UI: fix: update file dialog 'file-exists' flag / bgtint after directory change
UI: change: change Dial / FloatParam fine modifier from LCTRL to LSHIFT (LCTRL now snaps to nearest integer)
UI: add: honor display type in FloatParam expression parser
UI: add: FloatParam: toggle between dec/hex/percent when original display_type was percent ('h' key)
UI: add: BezierEdit: allow drag-curve-mode to be disabled in context menu (previously only via lctrl-e)
UI: add: BezierEdit: add Zoom submenu (previously only available as kbd shortcuts)
UI: add: BezierEdit: add Grid toggle+cycle submenu items (previously only available as kbd shortcuts)
UI: add: indicate current cycle length in statusbar cycle length menu via bgtint
UI: add: show cycle length menu with lctrl-lshift-KP3
20231216:
AnalogRytm: change: dynamically load node from .tsl script library
AnalogRytm: fix: update sound preset combobox when sound is selected via MIDI
AnalogRytm: add: support for Firmware/OS 1.70 (can import OS1.50/1.61 sound presets)
AnalogRytm: add: show names instead of raw parameter value for certain parameters (e.g. wave shapes, speeds)
AnalogRytm: add: track level widget (kit tab)
AnalogRytm: add: SYN / SMP / FLT / AMP / LFO randomization ('r' randomized last selected param group, 't' reverts to last saved state)
Arranger: fix: first clip replay tick after track mute/solo
Arranger: change: consecutive clicks within same clip no longer toggles selection
Arranger: add: clip start/len unit combobox
Arranger: add: option to display beat / bar labels as 0,1,2,3,4,.. instead of 1,2,3,4,5,..
Arranger: add: force-update sample peaks when executing "Query" or "Clear" in AudioLiveRecForm
Arranger: add: backward-cycle through play modes via lshift-p
Arranger: add: keyboard shortcut for (un-)muting select clip(s) (lctrl-q)
Audio: fix: don't normalize sample peaks when sample is empty (just background noise)
Audio: add: incremental, semi-automatic note overdub mode with customizable voice panning (AudioLiveRecForm)
Audio: add: alternatively toggle AudioLiveRecDialog by right-clicking "stop" button
Audio: add: extra-16ths field (used when creating new audio clip samples, e.g. by drawing clip in arranger)
Audio: add: handle case where Eureka track input is mono but sample is stereo (recording with FX / panning)
Audio: add: save/restore NT_AudioDialog, AudioRecordDialog, AudioLiveRecDialog window geometries
Audio: add: return focus to patternview with lctrl-x c
Buffer: change: dynamically load node from .tsl script library
CtlMorph: change: dynamically load node from .tsl script library
CtlTag: add: context menus and allow quick-selection of port+type from ctltag entries
CtlTag: add: import controllers from MIDI synth profile
CtlTag: add: edit tag name via RMB click or by pressing F2
CtlTag: add: new entry from ctl clipboard A/B menu items
CtlTag: add: add "Node Remote Control" submenu
Delay: change: dynamically load node from .tsl script library
Eureka: fix: sampler KEYBOARD mod matrix source curve transformation
Eureka: fix: (mono)glide not working correctly in temporary sample player
Eureka: fix: reload initial performance controllers from sample in resetAllControllers()
Eureka: fix: waveform freedraw stops audio when LMB is released
Eureka: fix: crash when drum track is active and replay is reset
Eureka: fix: sample cache occasionally gets corrupted after adding single sample (forces rescan on next start)
Eureka: fix: replay / audio stream restart (e.g. when LMB-hold-clicking statusbar "Reset" button)
Eureka: fix: release loop broken / crash when loop idx is set to 1
Eureka: fix: Scope loadState() and handle track reordering
Eureka: fix: "delete unused lanes" (delete _all_ unused lanes)
Eureka: change: don't run cores hot / set b_poll=false by default on macOS (instead of maybe=short spin lock)
Eureka: change: center new plugin windows
Eureka: add: show cycle or FM editor when sample is clicked thrice
Eureka: add: update zone sampleview view offset+zoom after deleting/insert area
Eureka: add: update zone len after SoX/Rubberband op
Eureka: add: 'fmstack' lofi fm synth voice plugin (and dedicated editor dialogs) (this is a phase modulation synth)
Eureka: add: add sampler mod matrix source that returns play position of other zone / layer
Eureka: add: inverted and bipolar mod sources (vel, mw, bc, fc, ex)
Eureka: add: glide switch via CC#65
Eureka: add: hold-click smp/EF/.. glide checkboxes to toggle all retrig flags
Eureka: add: per-zone flag that determines whether the zone will be autoselected
Eureka: add: optimize voice-plugin-only oscillator/fx rendering (helper sample size must be <= 32 frames)
Eureka: add: Scope FFT view
Eureka: add: editable lane names
Eureka: add: per-zone keyboard center and range settings (KEYBOARD mod matrix sources)
Eureka: add: show "new sample" menu (empty, sine, cycle(sine), fmstack)
Eureka: add: create audiotrack: also create namespace + empty sample (32 16ths)
Eureka: add: "FX send to track > xyz" output context menu items
Eureka: add: auto-route currently focused track output to "focus" track (if exists) (e.g. for analyzer plugins)
Eureka: add: "Create focus track", "Create master track" Tracks page context menu items
Eureka: add: mod-enable mutex groups (-;1A;1B;2A;2B;3A;3B;4A;4B)
Eureka: add: MMB-click "Current" navigation button to edit first mod
Eureka: add: MMB-click PageTrack background to edit first mod
Eureka: add: hold-click "+" in outputs form to clone last output
Eureka: add: "gradient" sampleview render mode
Eureka: add: undo freedraw via RMB (in sampleview)
Eureka: add: display hyperthreaded / efficiency / performance core info in manual CPU core scheduling mode
Eureka: add: append track at end when "+" button is used (hold-click to clone selected track)
Eureka: add: "New track" button (insert track before current, hold-click to clone selected track)
Eureka: add: input pan option (liverec samples)
Eureka: add: update / finish track colorization ("Tracks" page)
Eureka: add: sampler option that stops voices in release phase from being modulated by performance controllers
Eureka: add: toggle zerocrossing snap with MMB-hold (in addition to lctrl-y)
Eureka: add: outputs context menu function for quickly adding send to lane 2,3,4,..
Eureka: add: Cycle: AON FM machine / preset (see https://www.youtube.com/watch?v=T8B3NsRfjWg)
Eureka: add: Cycle: zlp module 'sub' and 'div' inputs
Eureka: add: Cycle: zlp module "lin" input
Eureka: add: Cycle: button to resize SynthDialog to used args
Eureka: add: Cycle: embed zlp/zon referenced waveforms in autogenerated STFX voice plugins
Eureka: add: Cycle: aon_fm_v1, aon_fm_v1_lofi voice-plugins (frequency, not phase modulation. supports all original AON op shapes.)
Eureka: add: Cycle: "arg_values" named preset values
Eureka: add: Cycle: "param_values" named STFX voice plugin parameter preset values
Eureka: add: Cycle: arg randomization groups
Eureka: add: Cycle: param (STFX plugin) randomization groups
Eureka: add: Cycle: osc_hh_v1 / osc_hh_v2 STFX plugins (hihat machines, see https://www.youtube.com/watch?v=NyD5j7OjLWA)
Eureka: add: insert new sample after current one (when pressing + button)
Eureka: add: AudioTracks: add "append silence" checkbox next to drag'n'drop mode
Eureka: add: snap loop ends of selected zones to nearest zero-crossing (de-click after auto-slicing)
Eureka: add: select and zoom to highlighted (loop) area with 'e' (or via 'M' or 'S' default row click actions)
Eureka: add: 4K / HiDPI support and 1K/2K/4K GUI size presets
Freeform: fix: grid / vis bars floatparam keyboard focus (after pressing return)
Freeform: fix: (regression) hanging notes when incoming MIDI event matches track port
Freeform: fix: occasional double triggers when recording notes in Q_BAR quantization mode
Freeform: change: default (new node) quant mode to Q_LOOP
Freeform: change: follow songpos and modulo seek within loop region in master mode when editor is not visible
Freeform: change: increase max visible bars from 8 to 256
Freeform: change: properly name auto-generated modmatrix nodes
Freeform: change: move "show context menu" to selection context menu
Freeform: add: preserve tracker-edit settings
Freeform: add: edit track sound with 'k' (SysEx, AnalogRytm, Eureka sample/plugin)
Keymap: change: dynamically load node from .tsl script library
MIDI: fix: UI briefly freezes after MIDI learn
MIDI: add: option to redirect "remote_audio" ch1 events to play frame (skip node MIDI transform / handle by sampler) (lshift-F12 / stop menu item)
MIDIMon: add: copy selected entry to ctl.clipboard a/b (RMB context menu)
Modular: fix: crash when editing rack after loading node preset (stale module-refs)
Modular: change: dynamically load node from .tsl script library
Monitor: fix: disable Clear button and update tooltip when pattern is not allocated
Monitor: change: increase STConfig.node_monitor_max_frames from 5000 to 20000
Monitor: add: show #events and #frames when copying pattern to clipboard
MonoPoly: change: dynamically load node from .tsl script library
MorphScene: add: add FaderPort fader from ctltag list
PagePipe: add: preset combobox to "new-node" dialog
PagePipe: add: lazy-create "master" pipe when creating new pipe via NewTrackDialog
PipeMap: add: 'stashed_syntheditor_list' page command (debug)
PipeMap: add: 'stashed_syntheditor_free ' page command (debug)
PipeMap: add: 'stashed_node_mmc_list' page command (debug)
PipeMap: add: 'stashed_node_mmc_free ' page command (debug)
PipeMap: add: remember preferred_node_x when moving through pipes (up/down)
PipeMap: add: select next instrument-type node with 'w'
PipeMap: add: select next arranger-enabled node with 'lshift-a'
PipeMap: add: quick-add tracker/freeform/trigseq context menu items
PipeMap: add: show node play position and flash buttons before arranger-enabled node pattern restart (unless parent pipe is muted)
PipeMap: add: select used patnr with lctrl-WHEEL (alternatively to HOME / END keys)
Prefs: change: zoom setting to FloatParam and set mouse/finestep to 0.25
Prefs: add: save window_x/y position
Prefs: add: gui size presets (1K/2K/4K)
Proxy: change: dynamically load node from .tsl script library
Replay: add: cycle option that mutes notes at end of loop (click status bar cycle icon)
Script: change: dynamically load node from .tsl script library
Script: add: "decchorder" manual arpeggiator preset
Script: add: add OnSongSelect() callback function
Script: add: Linnstrument Arranger: per-track change quantization (0..1024 16ths) (also used when switching scenes)
Script: add: Linnstrument Arranger: update pads after sub-song selection
Script: add: Linnstrument Arranger: prevent accidental "copy scene" triggers with 500ms pad-hold threshold
SubSongs: add: clone option + add alternative keyboard shortcuts + prompt sub-song name (new/delete)
SysEx: fix: FMMatrix alg layout unreadable in dark/mono mode
SysEx: change: dynamically load synth editors from .tsl script libraries
Tracker: fix: prevent audio pattern samples from being deleted by arranger "delete unused samples"
Tracker: change: don't select keyjazz instrument via lctrl-x a when current instrument uses audio mode
Tracker: change: "Query IDs" now queries _all_ Eureka module instances that listen on the given MIDI port (hold-click ID widget for dropdown list)
Tracker: add: when importing monitor pattern, (optionally) align pattern length to bar
Tracker: add: show #bars after monitor pattern import
Tracker: add: cycle steps/bars/beats with 'b' in pattern length dialog
Tracker: add: show block menu when pressing 'a' while selection is valid
Tracker: add: update AudioDialog so it can now also work w/o linked MIDI<>Audio nodes
Tracker: add: "Import Audio RPNs" instrument view param table context menu item
Tracker: add: show sample selector when detail-editing CTL_PC cel and keyjazz instrument uses audio mode
Tracker: add: when AudioLiveRecDialog is opened while tracker editor is active, try to preselect sample+nsp from audio pattern
Tracker: add: edit track sound with 'k' (SysEx, AnalogRytm, Eureka sample/plugin, audiopatterns)
TrigSeq: fix: track arg3 editing in "-/numbers" modes
TrigSeq: add: cycle step details/mods with mousewheel (over labelbutton)
TrigSeq: add: option to display step nrs as 0,1,2,3,4,.. instead of 1,2,3,4,5,..
TrigSeq: add: "Prev" option (ignore previous note output (framePlay) when unmapping notes)
TrigSeq: add: edit track sound with 'k' (SysEx, AnalogRytm, Eureka sample/plugin)
UI: fix: (REDRAW_DIRTY / REDRAW_ALL mixup related) high-frequency redraw issue
UI: add: sharpenfilter shader
UI: add: RMB-click shows detail-edit FloatParamDialog (Dial, Slider)
UI: add: SPACE opens and closes FloatParam detail-edit dialog
UI: add: LMB-hold-click shows FloatParam preset selector (when available)
UI: add: 4K / HiDPI support
20230818:
Eureka: fix: right mouse button handling in bezier curve dialog
Eureka: fix: int var init (e.g. zsq module)
Eureka: fix: drum kit pad selection (e.g. via '4' / '5' keys)
Eureka: fix: copy initial performance controllers when cloning sample
Eureka: fix: properly update drum kit sample ids after inserting/deleting/moving samples
Eureka: fix: fix UI auto-scrolling when adding new lane or output in DRUM track mode
Eureka: fix: undo after replaceSelectionByClipboard() when clipboard was larger than sample
Eureka: fix: assign pad sample namespace to autoloaded samples (when loading drum kits)
Eureka: add: add utility function for creating granular sample from selection (lctrl-x g)
Eureka: add: LUT 'inv' flag (inverse look up tables)
Eureka: add: 'sta' module (fma-transform value and store in procedural LUT)
Eureka: add: 'end' pseudo module (unsets current lane, discards output of inverse LUT init lanes)
Eureka: add: select track size with keys '1'..'6'
Eureka: add: "clear inactive entries" mod matrix utility function
Eureka: add: toggle initial performance controller widgets hex/dec mode by clicking on labels
Eureka: add: show STFX plugin list when there are no VST plugins available
Eureka: add: SoX and Rubberband pitchshifting, timestretching, and 25 other effects/utility functions
Eureka: add: 8svx, aiff(c), caf, cdda, cdr, flac, mp3, ogg, opus, txw, voc, w64 sample import
Eureka: add: loop start/end fade in/out option
Eureka: add: improve/declick sample shift EOL modulation
Eureka: add: "Cyclelen EOL" modmatrix target (click-free loop len modulation)
Eureka: add: properly handle missing STFX plugins (preserve plugin slots + params)
Eureka: add: support "Cyclelen Sample Offset" modmatrix target in non-wavetable sample playback (phase)
Eureka: add: build system for generated Cycle plugins (Linux, Windows, macOS)
Tracker: add: print warning message if "tap" mode is still active when leaving node editor
20230805:
Buffer: add: edit pattern name with lshift-n
Buffer: add: lctrl-1..8 tab shortcuts
Eureka: fix:
Eureka: add: Cycle modular synth can now generate native code STFX voice / track plugins
Eureka: add: STFX plugin module (ModSTFX)
Eureka: add: Preferences dialog (writes "eureka_config_local.tks")
Eureka: add: Linux support
Eureka: add:
Freeform: fix: polyphonic aftertouch events lost when switching to pattern editor and selection had no note ons
Freeform: fix: change quantized restart from beat to bar
Freeform: fix: temp steprec middle mouse button mode
Freeform: add: MMT_CURSOR_TRACK_DELTA map target
Freeform: add: edit pattern name with lshift-n
Freeform: add: create velocity-curve modmatrix node(s) for up to 4 selected tracks (lctrl-l)
Freeform: add: create velocity-rand modmatrix node (s) for up to 4 selected tracks (lctrl-lshift-l)
Freeform: add: create velocity-modwheel2 modmatrix node(s) for selected tracks (lctrl-m)
Freeform: add: create modwheel-modwheel2 modmatrix node(s) for selected tracks (lctrl-lshift-m)
Project: fix: overwrite confirmation dialog not shown when suggested pathname contains $()
Export: fix: write (non-optional) End Of Track meta SMF event
Export: add: add SysEx checkbox to SMF export dialog
Export: add: save export file name in project file and add option to set name to .mid
KeyMap: add: edit pattern name with lshift-n
MIDI: add: novation_sl_mk3 synth profile
MIDI: add: emit high-res (14bit MSB+LSB) modwheel, breathcontrol, footcontrol, expression CCs
(MIDI synth profile "ccPerfLSB" attribute)
MIDI: add: midi-mappable low/high octave softkeys to sl_mk3, montage, prophet08, acuna73, sub37 synth profiles
MIDI: add: LocalMIDI (virtual MIDI) link between Synergy and Eureka applications (default=enabled)
MIDIPipe: fix: force-disable running status on macOS
MIDIPipe: add: overflow buffers and restrict max emit buffer size to 48 bytes per tick (e.g. for Pro 3)
ModMatrix: fix: rescan curve presets after save within 30sec after startup
ModMatrix: add: edit pattern name with lshift-n
Modular: add: edit pattern name with lshift-n
Monitor: fix: set sysex frame event midi_ch to 0
Monitor: fix: show actual SysEx size instead of max buffer size
Monitor: add: edit pattern name with lshift-n
MorphScene: add: multi-edit src/dst dev/ch of selected entries
Script: fix: handle param type changes after source update / recompile
Script: fix: textedit layout glitches and tab cycling
Script: fix: potential double triggers in "note strum" script
Script: fix: Linnstrument Arranger: changing i/o port discards all scenes
Script: add: edit pattern name with lshift-n
Script: add: "vel curve blend" preset (blend two velocity curves with expression pedal)
Script: add: add OnUIUpdate() callback function
Script: add: "sl_mk3" preset
Script: add: "phrase_loop" preset (phrase retrig utility script)
Script: add: highlight parse error line
Script: add: "vel smooth" preset (velocity smoothing)
Script: add: Linnstrument Arranger: option to select scenes via MIDI (note#)
SysEx: add: Sequential Pro 3 synth profile + editor
SysEx: add: "uiSubGroup" MIDI synth profile controller (editor) attribute
TrigSeq: fix: note names preset not loaded
TrigSeq: add: edit pattern name with lshift-n
UI: fix: swap lalt/lmeta when queuing synKey on macOS
UI: add: delta-edit toggle button via MIDI mapper (allowDeltaClick XFM attribute)
UI: add: mouse cursor zoom option
20230401:
General: change release directory structure so the "mProjects/" folder can easily be copied to e.g. the user's home directory
(please update "my_mproj_path" in synergy_config.tks / eureka_config.tks accordingly)
Config: add: textedit_cmd option (TextEdit on macOS, notepad(++) on Windows)
Eureka: fix: $() handling in voice calibration, voice FX, and Cycle machine preset loaders
Eureka: fix: (macOS) sox path config (note: please install sox via homebrew)
Eureka: add: "Edit config" button
SysEx: add: Montage "Model" combobox (Montage or MODX) (will be saved in config)
UI: add: "Edit config" / "Edit local config" transport-stop-menu items (launches system text editor)
20230331: (10.12+ on x86_64 / 13.0+ on M1/M2)
AnalogRytm: change: use alternative TitledPanel render style in NAR_EditKitDialog
Arranger: change: top-align sample panel (when Eureka process is connected)
Config: add: STConfig.b_ignore_thread_affinity
Freeform: fix: keep MIDI events in Rec frame while node is not being edited
MIDI: fix: sort midi synth profiles by name (macOS)
MIDI: fix: (N)RPN with value 0 not received (macOS)
MIDI: fix: MIDI clock events (macOS)
ModMatrix: add: Paste menu item tooltips
ModMatrix: add: edit pattern script with lctrl-e
ModMatrix: add: init pattern script and edit with lctrl-p or lctrl-lshift-e
ModMatrix: add: edit current entry script with lctrl-f
ModMatrix: add: close NMM_ScriptEntryDialog with lctrl-f
ModMatrix: add: edit prev/next entry script with UP/DOWN (while ScriptEntryDialog is visible)
Pipe: add: display "show in arranger" and also make it editable without entering node ('a')
Pipe: add: edit current node with 'e'
Pipe: add: quick-assign automation port from node class with 'q'
PipeMap: add: edit current pipe with 'e'
PipeRoot: add: edit current pipe with 'e'
Prefs: change: use alternative TitledPanel render style
Prefs: add: make b_key_swap_pattern_home_end configurable in UI
Script: fix: script/xfm editor initial layout issue
Tracker: change: show current keyjazz octave as range (e.g. C3..G-5)
TrigSeq: change: use alternative TitledPanel render style in NTS_TrackSetupDialog
UI: fix: lshift wheelup mouse-events (macOS)
UI: fix: drag and drop (macOS)
UI: add: enforce minimum window size (960x600)
UI: add: Eureka launch button (status bar "Stop" button menu)
20230218: <7th macOS arm64+x86_64 beta release> (10.12+ on x86_64 / 13.0+ on M1/M2)
All Nodes: auto-load "default" node preset after instantiating new node (hold lshift in name dialog to skip)
All Nodes: fix node / pipe preset scan on macOS
Tracker: add: STConfig.b_node_tracker_note_octave_offset_glyphs
UI: add: STConfig.midi_note_octave_offset (-2=Yamaha C-3, -1=Roland C-4, 0=MIDI C-5)
UI: add: close application by clicking left/top pixel in fullscreen mode
20230127:
20221223:
Eureka: add: EQ3 module
Eureka: add: voice calibration tables + mod matrix sources
Eureka: add: major additive wavetable engine update
Arranger: add: normalize audio clip
20221216:
Eureka: add: dock window to Synergy sequencer window (STConfig.b_window_docked)
Eureka: fix: monophonic slide
Eureka: add: auto-slide (maxTime)
SysEx: add: Montage: (global) "Enable FX" option
ui: fix: TextField regression
20221125:
Eureka: change: new UI layout now fits into 960x600 window
General: add "nosynthedit" Synergy version (rename data_nosynthedit.tkx to data.tkx)
IO: add: save node data size and skip unknown node type chunks (STConfig.b_ignore_node_load_error)
ModMatrix: fix: S&H output type
ModMatrix: change: don't reset SH_INF type value when node is reset
ModMatrix: add: "slew v2" preset
MorphScene: add: "active" checkbox (per entry)
SysEx: change: post-pone synth editor init and profile data reload (+ skip entirely when device is not connected)
UI: fix: textinputdialog escape key regression
20221119:
PipeMap: add: alternative sysex page keyboard shortcut (lctrl-TAB)
PipeMap: add: insert new pipe after currently selected pipe (instead of first unused)
PipeMap: add: shift following pipes after deleting pipe
Proxy: add: Montage: handle frameRec Input Device events (e.g. control soundmorph with MIDI controller)
SysEx: fix: Montage: FMMatrix: part level+noteshift widgets
SysEx: fix: Montage: layer flags update issue (after copy'n'paste)
SysEx: fix: Montage: pfx lost after pasting variation to empty part
SysEx: fix: Montage: fix keyboard focus tab-cycling (CtlForm, LFOForm, PartForm)
SysEx: fix: Montage: FMSoundMixer: when is selected as sound source, restore before morph
SysEx: add: Montage: support extended LFO range (AWM2 + FM-X)
SysEx: add: Montage: edit part insert effects (89 effects, 1001 parameters)
SysEx: add: Montage: PartMixer: add "swap with main variation" utility function
SysEx: add: Montage: PageSysEx "ch" combobox can now be used for part selection
SysEx: add: Montage: tools menu utility function: disable Vol/Exp (all parts / all variations)
SysEx: add: Montage: add part button context menu (Patch tab)
SysEx: add: Montage: add AWM2/FM-X/DRUM part init functions
SysEx: add: Montage: change part variation star rating from boolean to 5 level rating
SysEx: add: Montage: FMSoundMixer: hold-click "Rand Sounds" button to limit selection to current patch sounds
SysEx: add: Montage: FMSoundMixer: add mix filter options (checkboxes)
SysEx: add: Montage: FMSoundMixer: [x] morph active ops only
SysEx: add: Montage: FMSoundMixer: add [x] current checkbox (set left-top sound to current part variation)
SysEx: add: Montage: PartForm: add Vol/Exp checkbox (next to [x] Kbd)
SysEx: add: Montage: FMMatrix: indicate last selected op (green highlight)
SysEx: add: Montage: FMMatrix: move operator up/down utility functions
SysEx: add: Montage: FMMatrix: add operator presets (1..8 ops)
SysEx: add: Montage: multi-edit element/op 1..8 ParamForm widgets (hold LALT)
SysEx: add: Montage: EGMixer: rand: filter presets by EG type (peg/feg/aeg)
SysEx: add: Montage: FMMatrix: offline operator AEG scaling (lengthen/shorten AEG times)
SysEx: add: Montage: realtime operator AEG scaling (lengthen/shorten AEG times) (RPN 1000)
SysEx: add: Montage: realtime FM sound morphing (RPNs 1001/1002 (x/y))
SysEx: add: Montage: support simultaneous realtime AEG scaling and sound morphing
SysEx: add: Montage: PartForm: sync part mseqs utility function
SysEx: add: Montage: display main variation name as "-: " instead of "1: " when there's only one variation
SysEx: add: Montage: (considerably) improve editor UI responsiveness
20221104:
FreeForm: add: background-recording option ("BG")
OutputMon: fix: update layout when page is first shown
Proxy: add: Montage: handle proxy notes (play layered parts)
SysEx: add: Montage: add element/op checkboxes to PartForm
SysEx: add: Montage: show op.pitch ctl widgets when ctl dest is "OP Freq"
SysEx: add: Montage: show op.level (rate) ctl widgets when ctl dest is "OP AEG Offset"
SysEx: add: Montage: add "Sync Ctl" utility button (synchronize modmatrix from Main variation)
SysEx: add: Montage: add copy/paste part variation ctl tool menu functions
SysEx: add: Montage: PartCtlForm: add variation combobox
SysEx: add: Montage: PartCtlForm: add copy/paste buttons
SysEx: add: Montage: update part variation assignable knob value params when HW knob or slider is moved
(when "Rec Ctls" is checked)
SysEx: add: Montage: variation scenes
SysEx: add: Montage: switch current editor part by holding E-2 and pressing C-4..D#5
SysEx: add: Montage: "part key solo" option (allow solo when pressing part key twice)
SysEx: add: Montage: switch editor part variation by holding F-2 and pressing C-4..D#5
SysEx: add: Montage: switch variation scene by holding F#2 and pressing C-4..G-6
SysEx: add: Montage: add option to remap sliders to assignable knob values
SysEx: add: Montage: change slider mode via synth keyboard:
- E-2 + C-3..G-3 (AK 1..8 parts 1..8)
- F-2 + C-3..G-3 (AK 1..8 parts 9..16)
- E-2 + B-3: revert to volume controls
- F-2 + B-3: revert to assignable knobs
SysEx: add: Montage: record part variation + variation scene selections + volume + assignable knob events back into sequencer
SysEx: add: Montage: filter out non-essential data groups when changing variations via sequencer
20221031:
Arranger: add: audio clips / tracks (requires Eureka sampler app)
Arranger: add: change track height with lctrl-lshift-wheelup/down when no clips are selected
Arranger: add: inc/dec track height with lctrl-+ and lctrl--
Arranger: add: scroll vertically via RMB drag
Arranger: add: center first selected track or grid cursor track (cursor key navigation + grid cursor mode enable)
Modular: add: attenuvertor module
SysEx: add: Yamaha FS1R: FM Matrix editor
SysEx: add: Yamaha FS1R: toggle solo current part with lctrl-tab
SysEx: add: Yamaha FS1R: randomize single param by holding down lctrl while changing value
SysEx: add: Yamaha FS1R: add "Consecutive" button to multi-part selection panel
SysEx: add: Yamaha Montage synth editor (see docs/montage.html)
UI: add: STConfig.window_x/y (e.g. move window to second screen)
20220624:
All Nodes: fix: keep current automation port when class based auto-port assignment is active and port remains unchanged
All Nodes: add: add autodev context menu for copying (supported) RPN to clipboard
Arranger: add: render RPN smp_peak (87) clip envelope (tracker audio patterns)
Arranger: add: set quick-jump nodes A+B by selecting two clips before editing pattern (via RETURN/RMB)
Config: add: GlobalInitPost(), rename GlobalInit() to GlobalInitPre()
Eureka: fix: disable underrun protection while loading VST2 patches (e.g. via patch browser)
Eureka: add: STConfig.vst_transport_blacklist (workaround for first-note-cut-after-replay-start issue with OB-E plugin)
FaderPort: fix: add workaround for missing display/button updates
FaderPort: fix: project file fails to load when MIDI is disabled (STConfig.b_enable_midi)
FaderPort: add: allocate/insert entry for next unused fader via lctrl-g or lctrl-INSERT (Scene page)
FreeForm: fix: properly handle song-seek and loops in non-master mode
FreeForm: fix: immediately update loop locators after pattern change (while replay is stopped)
FreeForm: change: clear-undo-history is now lctrl-x h instead of lctrl-x u (focus node name widget)
FreeForm: add: export selection to output capture buffer (lctrl-x \\)
FreeForm: add: show arranger selection menu via 'a' when there is a selection
FreeForm: add: standard MIDI file import (drag'n'drop or lctrl-lshift-f9)
FreeForm: add: focus prev/next track name widget with cursor up/down
MIDI: fix: update metronome click checkbox (PagePrefs) when metronome is toggled via MIDIMapContext
MIDI: fix: cannot disable non-present device
MIDI: change: emit sysex directly after sysrt
MIDI: change: emit channel and poly pressure events after note-on(s)
MIDI: add: add global MMT_NAV_NODE_PREV, MMT_NAV_NODE_NEXT, MMT_NAV_PIPE_PREV, MMT_NAV_PIPE_NEXT targets
MIDI: add: emit TYPE_SYSRT_*
MIDI: add: filterNoteOffChannelPressure synth profile attribute (Novation Peak workaround, default=0)
MIDI: add: runningStatus synth profile attribute (optimization, default=0)
ModMatrix: add: "4way note probability" preset
MorphScene: fix: apply remap/replace polypressure ops to pressure value instead of note
MorphScene: fix: set NRPN/RPN/pitchbend default to 16383
MorphScene: fix: remap source (filter) range (was 0..max instead of mev.arg1..mev.arg2)
MorphScene: add: add cursor entry to clipboard via RETURN or LMB double-click
MorphScene: add: save last selected row idx (per scene)
MorphScene: add: auto_morph_label field: revert to original label when remote target is not available anymore (after next query)
MorphScene: add: don't empty clipboard when deleting entries
MorphScene: add: auto-assign ctltag alias / midi profile ctl alias to label (FaderPort)
MorphScene: add: import ctls from MIDI synth profile (FaderPort)
MorphScene: add: add context menu item for replacing target with (supported) node RPN
Modular: fix: NoteOutput manual gate time
Modular: add: add modules to kbd focus cycle list
Modular: add: bidirectional, context-sensitive autodev RPN Ctl support (FaderPort)
Modular: add: cycle module kbdfocus with mousewheel
Other: add: delay calculator dialog ("stop" menu or lshift-f3)
Other: add: ppq + bpm presets (hold LMB) (project page ppq/bpm widgets, delay calculator dialog)
Pipe: add: "drums 4way note prob" and "drum 4way note prob polytrk" pipe presets
Pipe: add: option to name first node after pipe (STConfig.b_first_node_name_follows_pipe)
Proxy: fix: crash when changing output device before SysEx editor was shown
Proxy: fix: set initial proxy_bank/program during (SysEx editor) init (last edited patch number)
Script: fix: class unloading in case of script error
Script: fix: Linnstrument Arranger: mutex pattern pages not restored until script node editor is shown
Script: add: "polytrk" script (polymetric tracker pattern tracks, play directions, swing, probability, randomization, ..)
Script: fix: I/O ports tab cycle list
Script: add: "note strum" preset
SysEx: fix: move difflock widgets to scrollpane
SysEx: fix: support CC+NRPN proxy events in generic synth editor (volatile patch changes)
SysEx: fix: Korg Radias: fix tubepreampsim ifx/mfx gain params
SysEx: add: support new Novation Peak Firmware 2.0 features (patch editor / synth profile)
SysEx: add: Korg Radias: support vocoder parameters
SysEx: add: Korg Radias: add pseudo RPNs for non-destructive patch modulation via Proxy node
SysEx: add: Moog Sub 37 editor
Tracker: fix: showing instrument view with params moves cursor to last selected param column when returning to patternview
Tracker: fix: first created sample pattern starts with 02A after creating (empty) Audio Node
Tracker: fix: when pattern changes, select audio sample even if audionode is muted
Tracker: fix: delete MIDI cache entry before sending RPN_SMP_OFFMS_LO/HI (audio patterns)
Tracker: fix: new cel not repainted after importing param from synth profile
Tracker: fix: faint timingview box colors in dark and mono themes
Tracker: fix: mode buttons: don't grab keyboard focus
Tracker: fix: last_pattern_start_offset in edit-pattern-follow-mode (manual replay pattern changes)
Tracker: fix: replay hickup when first editing node after instancing
Tracker: fix: SMF import: imported note duration is 0 or 1
Tracker: fix: SMF import: temporarily disable recording latency compensation
Tracker: fix: SMF import: align pattern length to bar
Tracker: change: change focus-velocity shortcut from lshift-s to lshift-w
Tracker: change: move zoom menu items to submenu
Tracker: add: add MMT_CURSOR_TRACK_CTL_NEXT, MMT_CURSOR_TRACK_CTL_PREV, MMT_CURSOR_TRACK_CTL_DELTA map targets
Tracker: add: bidirectional support (FaderPort) (edit first 16 events of currently selected cel/ctl)
Tracker: add: start/stop song replay when space is pressed and node is in extclk mode
Tracker: add: auto-disable autoscroll when node is in extclk mode
Tracker: add: draw polystep highlight separately for each track
Tracker: add: lazy invalidate audio_node_gid / midi_node_gid when referenced node does not exist anymore (audio patterns)
Tracker: add: lazy invalidate midi_pat_nr / audio_pat_nr when referenced node or pattern does not exist anymore (audio patterns)
Tracker: add: add "Edit" checkbox for "Create Audio Node" action (default=unchecked)
Tracker: add: add "MIDI-Mute" checkbox (AudioDialog)
Tracker: add: auto-mute MIDI node when audio node is unmuted (and vice versa) (AudioDialog)
Tracker: add: support CTL_DELAY in extclk/polystep mode
Tracker: add: display ghost node events (set quick-jump node A with lctrl-x 1, node B with lctrl-x 2)
Tracker: add: show params context menu with 'a' (when table has kbd focus)
Tracker: add: optionally start recording in 2nd iteration (AudioDialog)
Tracker: add: auto-mute/unmute audio node when recording starts/stops (mixed mode Mutex and MIDI-Mute checkbox states) (AudioDialog)
Tracker: add: note randomizer (pattern generator) dialog (lctrl-x 0) (settings saved per pattern track)
Tracker: add: toggle slide keyboard shortcut (lshift-s, when there's no selection)
Tracker: add: advanced quantization dialog
Tracker: add: sort note cels in selected block (lshift-s)
Tracker: add: add menu item and kbd shortcut for standard MIDI file import (lctrl-lshift-f9)
TrigSeq: fix: refocus pattern area after combobox selection (notelen, arg3)
TrigSeq: add: support per-track velocity and duration scaling RPNs
TrigSeq: change: rename e.g. dotted "1/8t" to "1/8d" and add actual triplet note durations
UI: fix: dark and mono mode colors
UI: add: 9 new color grading presets
UI: add: DeviceIOForm: focus prev/next info and var textfields with cursor up/down (Script and FreeForm nodes)
20211219:
FaderPort: add: PreSonus FaderPort 8/16 support (see faderport.html)
MIDI: add: mmt_force_encoder_delta_mod config option (override target encoder modulo)
Modular: fix: AutoRPNSlider: update value in replay thread, update slider in UI thread
Modular: fix: transform / events
Modular: add: 'Mix4' module
Modular: add: 'Gate Hysteresis' module
Modular: add: 'Math' module OP_TH (track and hold)
MorphScene: fix: allow clipboard entries to be pasted into empty scene
MorphScene: change: paste entries _after_ currently selected entry
MorphScene: add: Label column (press F2 or right click on the label column)
MorphScene: add: update selected entry labels from (VST) params (query Eureka ModMatrix)
MorphScene: add: paste destination ctl+port from Ctl.Clipboard A/B
Replay: add: virtual device (input from Eureka ModAudio2RPN)
Tracker: fix: event recording when previous pipe contains delay node (don't forward frameRec to framePlay in Delay node)
Tracker: change: also record usrctl 1..16 via CTL_1..CTL_16 RPNs from framePlay (e.g. when transformed via / )
Tracker: add: "Audio To MIDI" import (from current Eureka sampleview cue points / zones)
Tracker: add: spread_unique_notes_to_tracks page command
UI: fix: combobox popup width (long option strings)
20211121:
All Nodes: change: (deviceioform) auto-enable port when previous devidx was 0
All Nodes: add: detected augmented chords, e.g. c e g# (C+, C aug, C #5)
AnalogRytm: add: edit sound env reset switch, velocity-to-mod / aftertoch-to-mod targets+amounts
Arranger: change: new clip+pattern (lctrl-n / lctrl-lshift-n): when clips are selected, move cursor past last selected clip
Arranger: add: clone clip pattern via lctrl-r / lctrl-lshift-r
CtlMorph: fix: MIDI-learn adds duplicate entry
CtlMorph: fix: support pattern-shifting in pattern manager
CtlMorph: fix: play/edit pattern nr restore (after loading project)
CtlMorph: fix: pattern change via HOME/END or WHEEL does not trigger ctl send
CtlMorph: change: replace checkboxes with minimalistic checkbox icons
CtlMorph: add: implement "num events" query (pattern manager)
CtlMorph: add: import params from synth profile
CtlMorph: add: show human-readable value names (when available in synth profile)
CtlMorph: add: Nord Drum 3P preset
CtlMorph: add: utility function that sends all controllers in all groups (lctrl-w)
CtlMorph: add: hold LALT when editing tickshift/mod to update all groups
CtlMorph: add: show pattern name textfield inside of tabswitch
CtlMorph: add: (Pattern Clipboard - This) to Min (Asym) (All Groups)
CtlMorph: add: (Pattern Clipboard - This) to Max (Asym) (All Groups)
CtlMorph: add: merge_replace_ignorech cmd
- paste group and ignore source MIDI ch (match CC/RPN only)
- e.g. when copying Nord Drum 3P drum sounds
CtlMorph: add: GroupCopyDialog
- e.g. for assembling Nord Drum 3P kits from preset sounds (pattern groups)
- find unique group names, e.g. bd, sd, hh, cy, ..
CtlMorph: add: set/clear asym flags with lctrl-m/lctrl-lshift-m
Delay: add: swing
Freeform: fix: tracker micro edit fails when initial sequence was empty
FreeForm: fix: wrong loop points after pasting pattern during replay
FreeForm: fix: honor freerun replay mode in master mode
FreeForm: fix: forced note movement via LALT-LMB-drag
FreeForm: change: stop recording when node editor is not visible
FreeForm: change: quantized move now snaps to 1/32 notes instead of Beat/Bar/Loop
FreeForm: add: hold LALT to update quantization amount of all tracks
FreeForm: add: fast-clear recording mode
- e.g. for multi-track recording Nord Drum 3P
- 'v'
- delete track loop area with single keypress
- 'q'..'p', [, ], (ü, + on german kbd)
- 'a'..'l', ;, ' (ä, # on german kbd)
- SPACE/DEL/TAB: clear current cursor track
- clear pattern when track is already empty
- change clip color to RED while fast clear mode is active
FreeForm: add: MMT_PATTERN_COPY, MMT_PATTERN_PASTE MIDI map targets
FreeForm: add: show pattern name textfield inside of tabswitch
FreeForm: add: 'raster' / replace "lap" recording mode
- when first recordable event is received, clear all loop bars (on current track)
- remember (loop modulo) tick/replay offset
- allow next clear not until replay offset is reached again
KeyMap: add: "Remove input events" option
KeyMap: add: show pattern name textfield inside of tabswitch
MIDI: fix: soft-crash after adding new device and creating (tracker) instrument+param
MIDI: change: emit bank select MSB+LSB before program change
MIDI: add: Nord Drum 3P synth profile
MIDI: add: synth profile (.msp) editOptions attribute auto-expand syntax
+ "@*", e.g. "@12*n1"
+ "@..", e.g. "@0..63;--;--;@66..127"
+ "@:", e.g. "@$74:A6_pulse"
+ auto-repeat last until
MIDI: add: make send-song-position-pointer configurable per device
MIDI: add: detect hanging MIDI device driver (10sec timeout)
MIDI: add: update MIDI output state when MIDI input event is received
- may be overwritten when transformed and output again
MIDI: add: PageMIDIMap: redirect default key press to status bar
MIDI: add: add option strings for Elektron Model:Cycles machine type
ModMatrix: fix: issue when writing "none" to dstCh=*
ModMatrix: fix: fix MPE/multich VELOCITY randomization
ModMatrix: add: "MPE note probability" preset
ModMatrix: add: TYPE_GROOVE (ticks)
ModMatrix: add: OP_SLEW: separate up/down amounts
Modular: add: bipolar checkboxes to "const" module
Modular: add: Bezier01 module
Modular: add: TrigSeq16 oneshot mode
Modular: add: CVSeq16 oneshot mode
Modular: add: customizable quantizer module
Modular: add: VoltageMemory module (demo: https://youtu.be/JMYQNdUQzP8)
PageNode: fix memory corruption / empty node type table issue
PipeMap: fix: UI not updated (anymore) when pattern is changed programmatically
PipeMap: add: change patterns via lshift-WHEEL
PipeMap: add: NewTrackDialog: auto-focus combofield when unicode char is typed
PipeMap: add: NewTrackDialog: exec create via lctrl-w
PipeMap: add: NewTrackDialog: auto-disable "show all node types" when invoked via Pipe
Replay: add: "output" pipe
- route all MIDI output through this pipe
Replay: add: global and per-pipe grooves (+ timing correction during recording)
Script: add: Linnstrument Arranger: recolorize all pads after node port assignment has changed
Script: add: Linnstrument Arranger: remove presets and support per-track configuration
Script: add: Linnstrument Arranger: mutual exclusive track groups
Script: add: Linnstrument Arranger: add pattern page offset per track
- for extending number of visible patterns (set two tracks to same output)
Script: add: note serializer preset
- e.g. to workaround Peak lost-USB-chord-notes issue
StatusBar: add: add freerun checkbox to "stop" menu
StatusBar: add: (Eureka) audio looper remote control dialog
SysEx: add: pagesysex_auto_devicename forced redirect channel
- forward incoming events to current sysex editor output device (default input dev="remote audio")
SysEx: add: Korg Radias: edit timbre effect 1/2 + master effect
SysEx: add: Korg Radias: implement patch diff (patch morphing + virtual patch changes)
SysEx: add: Korg Radias: timbre clipboard utility functions (tools menu)
SysEx: add: Korg Radias: support diff and proxy group locks (+save/restore them)
SysEx: add: Korg Radias: update osc1/osc2 ctrl labels when osc wave or osc mode changes
SysEx: add: Generic Editor: make UI update interval configurable
SysEx: add: Generic Editor: show patch name in status bar when patch is selected
Tracker: fix: crash in piano.clearNotes() (via PatternView::handleStartPlaying()) when tracker editor wasn't visible before
Tracker: fix: (Eureka) immediately restart sample after unmute
Tracker: change: remove CTL_COLOR and replace by CTL_GROOVE
Tracker: add: trim pattern start to cursor pos (lshift-t)
Tracker: add: (Eureka) support single-instrument mode / read smp_uid from pattern ctl
- add alternative CTL_PC mode (instrument "audio" checkbox mixed mode)
- find last PC before offset when pattern has changed
- send RPN_SMP_UID instead of prgchg
Tracker: add: (Eureka) audio dialog (lctrl-x a)
- sync/create audio sample / trigger live recording
- naming scheme: "a_ " (+suffix)
TrigSeq: add: show pattern name textfield inside of tabswitch
TrigSeq: add: MMT_PATTERN_COPY, MMT_PATTERN_CLONE, MMT_PATTERN_CLONE_SUB, MMT_PATTERN_PASTE MIDI map targets
TrigSeq: add: show arg3 note names when in note output mode
UI: fix: mousewheel not working in user table FloatParam with duplicate entries
UI: fix: crash when trying to set non-existing XMLForm member (e.g. fp_masterlevel)
UI: add: filedialog: directory combobox popup (lctrl-d)
20210523:
All Nodes: add: Pattern Manager: insert/delete pattern functions (lshift-INSERT/DELETE)
All Nodes: add: Pattern Manager: [x] hide empty (lctrl-a)
All Nodes: add: Pattern Manager: show total number of pattern events
All Nodes: add: Pattern Manager: navigate via PAGEUP/DOWN, HOME, END
All Nodes: add: Node automation port advanced configuration dialog (send/recv prgchg)
All Nodes: add: context sensitive automation devices ("autodev_a", "autodev_b")
(forwards incoming MIDI events to actual Node automation port(s))
All Nodes: add: auto-assign autodev from class
(click "Auto Device [AB]" to auto-assign port)
(auto-update port assignment when node class is changed)
(highlight "Auto Device" label-button bg while auto-assign mode is active)
All Nodes: add: improve chord detection (add 120+ new chords)
Arranger: fix: don't select empty patterns via END key on PipeMap page
Arranger: change: mute target node when track is muted
(checkbox on Play tab can be used to revert to old behaviour)
Arranger: change: immediately send update when clip is muted/unmuted (e.g. via 't' key)
CtlMorph: change: multi-morph each group separately (RPN_CTLMORPH_GRP_[1..8]_MULTI_POS)
CtlMorph: change: change morph_pos type from short to float
CtlMorph: change: change min/max/center type from short to float
CtlMorph: change: move last_selected_group from pattern to node
CtlMorph: change: use combined textfield+combobox for group names
CtlMorph: add: select groups with '1'..'8'
CtlMorph: add: cyclic morph: [x] all groups option
CtlMorph: add: copy output state (all groups) (lctrl-lshift-o)
CtlMorph: add: reset_enable_all, reset_disable_all statusbar commands
Freeform: add: 'Freeform' piano-roll style sequencer node
Freeform: add: explode-to-subsong feature
Freeform: add: tempo-mapping
Freeform: add: tracker micro-edit mode
Freeform: add: output-capture support (lctrl-x c: begin, lctrl-x v paste)
Keymap: fix: map framerec to framerec (instead of frameplay)
Keymap: add: add entry tools menu
Keymap: add: swap_match_and_send_notes statusbar command
Keymap: add: RMB click in table edits entry name
Keymap: add: tempest_drumpads preset (map to Analog Rytm or Cycles)
MIDI: fix: long multi-part MIDI message (>16k) not replayed correctly
MIDI: change: change MIDIMapEvent arg1/arg2 type from short to float
MIDI: change: invert input device filter display/ui
MIDI: add: find midimap target by name (incremental search)
MIDI: add: 'f'ind device statusbar command
MIDI: add: show incoming ctl info in status bar config option
MIDI: add: send-MTC option (per MIDI device) (lshift-F12 toggles send mode)
MIDI: add: add MMC-record-crash workaround for Studio One 5
(requires "studio_one_remote" loopback device + mapping of CC#1 to "transport / record" in S1)
(STConfig.b_mtc_studio_one_record_workaround)
(STConfig.mtc_studio_one_rec_pre_ms)
MIDI: add: call MIDI.SetDefaultVirtualDeviceAliases() when song is initialized (from scratch)
MIDIPipe: fix: reset shadow channels in clearMIDICache()
MIDIPipe: add: set suggested name of first created pipe to "master"
ModMatrix: fix: redraw issue in lower signal tap area (bad clipping)
ModMatrix: fix: arg layout after op change
ModMatrix: change: set default kbdfocus to tableview when entries tab is active
ModMatrix: add: output quantization (sh_type=SH_Q*)
ModMatrix: add: slew op
ModMatrix: add: "paste" menu (create new entry from ctl-port clipboard A/B) (lctrl-INSERT)
ModMatrix: add: "paste" menu: randomize modulation (a+rand(+-32))
ModMatrix: add: "paste" menu: sum a + b
ModMatrix: add: "paste" menu: sum a + (7bit signed) b
ModMatrix: add: "paste" menu: multiply a by (7bit fixpoint) b
ModMatrix: add: "paste" menu: delta modulate (a by b) (a + (b - const_ctr_val) * const_amt)
ModMatrix: add: "paste" menu: slew (read from A, write to A each tick)
ModMatrix: add: "paste" menu: slew quantized (read from A, write to B)
ModMatrix: add: copy/paste entries via lshift-c / lshift-v
ModMatrix: add: new / clone / delete entries via INSERT / lshift-INSERT / DELETE
ModMatrix: add: show last played index (in bezier curve editor)
Modular: add: Modular node
Modular: add: "Add 7-to-1" mixer module
Modular: add: "ADSR" module
Modular: add: "AutoRPNSlider" module (slider can be controlled with autodev CTL_1..32 RPN event)
Modular: add: "Bernoulli" module (Mutable Instruments Branches style Bernoulli gate)
Modular: add: "Clock" module
Modular: add: "Const" module
Modular: add: "Crossfade" module
Modular: add: "CVSeq16" module (sequencer. up to 8 patterns, modulatable offset+len)
Modular: add: "Delay" module
Modular: add: "Flip" gate module (momentary and toggle modes)
Modular: add: "GateOutput" module
Modular: add: "Output" module (CV)
Modular: add: "Input" module (CV)
Modular: add: "KeyMap" module (convert note events to up to 16 gate outputs)
Modular: add: "LEDMonitor" module (visualize gate/trig events)
Modular: add: "LFO" module (can be tempo-synced)
Modular: add: "Label" module
Modular: add: "Math" module (46 sub-modes)
Modular: add: "Multiple" module
Modular: add: "MultiNoteOut" module (map trigs to up to 12 notes)
Modular: add: "NoteInput" module
Modular: add: "NoteOutput" module
Modular: add: "Pan" module
Modular: add: "PerfInput" module (modwheel, breathcontrol, footcontrol, expression, aftertouch)
Modular: add: "PerfOutput" module (modwheel, breathcontrol, footcontrol, expression, aftertouch)
Modular: add: "Quantizer" module (quantize notes to scale+key, configurable semi-tone "fuzziness")
Modular: add: "RPNCtl" module (convert RPN CTL_1..12 to CV)
Modular: add: "RPNOut" module (convert CV to RPN CTL_1..16)
Modular: add: "RSH" module (random sample-hold with configurable seed+offset+level)
Modular: add: "Serial" module (outputs non-repeating random number sequences)
Modular: add: "Shift" module (12 step shift register) (CV)
Modular: add: "ShiftTrig" module (12 step shift register) (trigs)
Modular: add: "ShuttleControl" module (MIDI to CV via Endorphin.es Shuttle Control Eurorack module)
(looks for device alias "shuttlecontrol")
(expected module configuration: 1..8: -5V..+5V pitchbend, 9..16: 0..+5V CC#1, port# = MIDI channel)
Modular: add: "Slew" module (with separate rise / fall settings)
Modular: add: "Spring" module (verlet integrator)
Modular: add: "Switch" module (switch between 6 inputs)
Modular: add: "Transpose" module (octave / semi / cents)
Modular: add: "TrigSeq16" module (sequencer. up to 8 patterns, modulatable offset+len)
Modular: add: "TrigToGate" module (convert trig to gate with modulatable duration)
Modular: add: "VCA" module (inception-style amplifier/attenuator: offset + scale each have their own mini VCA)
Modular: add: output-capture support (lctrl-x c: begin, lctrl-x v paste)
Modular: add: option to output events to frameRec instead of framePlay (for ctl UIs)
Modular: add: show/hide connection lines (except for mouseover connection) ('h' or BACKSPACE)
Monitor: fix: patchview: center current pattern row after toggling replay/rec mode
Monitor: fix: play-frame0-issue with autodev trigger notes
Monitor: fix: always set replay_start_frame_idx when selecting frames (fix replay start pos)
Monitor: change: chord toggle shortcut to lctrl-x o
Monitor: add: add alternative tick-based timing mode (for output-capture mode)
Monitor: add: send custom sysex requests (in patch list mode)
('q': send request)
(lctrl-q: clear pattern, enable rec mode, send request, wait for timeout, revert to replay mode)
Monitor: add: output-capture support (lctrl-x c: begin, lctrl-x v paste)
Monitor: add: insert recorder marker when replay starts (in automarker mode)
Monitor: add: select prev/next marker with lctrl-LEFT/RIGHT
Monitor: add: set last started pattern song offset and support seek in replay sync mode
Monitor: add: show indicator/warning when node is in replay sync mode (yellow "mode" combobox bg)
Monitor: add: option to auto-disable sync mode when node is armed
MorphScene: fix: use default morph src type range in DST_OP_REMAP when src filter is off
MorphScene: fix: re-center current map entry after showing/hiding source/transform panels
MorphScene: change: add new entries after currently selected table row
MorphScene: add: show note/val range in SrcType column when source filter is enabled
MorphScene: add: load / save scenes separately (context menu)
PipeMap: fix: node swap (lctrl-x z) occasionally shows wrong node editor
PipeMap: fix: rebuild pipemap after subsong selection
PipeMap: fix: update patnr displays when replay is started
PipeMap: fix: NewTrackDialog: clip dialog to screen after relayout
PipeMap: fix: show-in-arranger node selection not restored correctly after loading pipe preset
PipeMap: add: toggle pre-count with lctrl-x RCTRL
PipeMap: add: NewTrackDialog: preselect [current pipe] when dialog is invoked via 't'
PipeMap: add: NewTrackDialog: add fallback device config (STConfig.newtrackdialog_default_autodev)
PipeMap: add: lctrl-LEFT: select pipe icon, lctrl-RIGHT: select last node
PipeMap: add: context-menu item for Tracker audio sample import ('q')
PipeMap: add: show warning message when only one pipe (master pipe) exists
PipeMap: add: add (root) context menu
Prefs: add: make global+tracker precounts editable in prefs UI
Proxy: add: implement handleProxyEvents() (roland alpha juno2)
Replay: add: Tiny Synergy Replay (TSR) export (Amiga 500)
Replay: add: click on statusbar time to reload last loaded marker
Script: fix: globally unique temp script class names (+add namespace pool)
Script: fix: Linnstrument Arranger: also clear AT, PB, BRITE (CC#74) when track is cleared
Script: change: Linnstrument Arranger: reset velocity modulation when performance pad is released
Script: add: Linnstrument Arranger: hold clear + press (any) pattern pad to clear scene pattern selection (track 1..8)
Script: add: Linnstrument Arranger: update to 16 tracks and add pattern split mode
Script: add: Linnstrument Arranger: add auto-save-scene mode (toggle with scene+clear)
(change scenepad color (from magenta) to red while mode is active)
Script: add: Linnstrument Arranger: hold scene-pad, then press another one to copy a scene
SubSongs: change: clean up subsongs page
SubSongs: save/restore selected pipe+node when switching subsongs
SubSongs: skip RebuildAllCtlNames() when neither prev or next sub-song has ctltags
SysEx: add: forward autodev events to current editor output dev (STConfig.pagesysex_auto_devicename)
SysEx: add: Generic editor: autosend patch after reload
SysEx: add: Generic editor: support uiWidget ctlalias attribute (e.g. for combobox-like FloatParam user tables)
SysEx: add: Generic editor: add Prophet 08 profile (rev1)
Tracker: fix: crash when finding active notes on row that has note offs
Tracker: fix: fix hi_nibble / lo_nibble jump-to-column
Tracker: fix: restore unused pattern state during undo
Tracker: fix: undo+restartrec: undo immediately and queue notes until restart
Tracker: fix: instrument selection via "ins" textfield
Tracker: fix: show warning and don't allow last visible cel to be turned off
Tracker: fix: group note/vel/dur utility function creates duplicate cels (vel5/dur5)
Tracker: fix: copy alt_style from style when there's no other default (when toggling alt styles)
Tracker: fix: param preselection from cursor cel sometimes does not work correctly
Tracker: fix: temporarily turn off quantization when importing monitor pattern
Tracker: fix: issues after importing CTL_1/CTL_2 (14bit RPN) and switching to BAR_4 cel type
Tracker: fix: pattern restart when speed is < 1.0
Tracker: change: minimize note-slots when importing Monitor clipboard events with duration > 0
Tracker: change: remove lctrl-x c, lctrl-x v shortcuts (copy/paste pattern)
Tracker: change: reassign toggle-CTL_DURn-recording shortcut to lctrl-x /
Tracker: add: BPM_MUL ctl
Tracker: add: [x] shift CTL_PC by 1 option
Tracker: add: env_shreset (toggle) statusbar command
Tracker: add: output capture mode (lctrl-x c: begin, lctrl-x v paste)
Tracker: add: loop selected block (select + press SPACE to play/queue)
Tracker: add: split pattern to clipboard
(copy 2nd half of pattern to clipboard)
(copy initial controller values to first step of pasted pattern)
(lctrl-k, lctrl-lshift-k pastes as new pattern)
Tracker: add: goto step (lshift-g)
Tracker: add: support pre-count, like in global recording mode
Tracker: add: add swing_speed preset
Tracker: add: export pattern to output capture buffer (lctrl-x \)
Tracker: add: make precount configurable and change kbd short to lctrl-x RCTRL
Tracker: add: add alternative (Eureka) audio pattern sample import dialog
(find samples by name pattern + auto-create instruments/patterns)
Tracker: add: pb arps, pb arps via arpeggiator node presets
TrigSeq: add: Monitor pattern clipboard import
TrigSeq: fix: skip parseRecordNote() when node or pipe is muted
TrigSeq: fix: when recording mod 1/2, filter by mod port instead of node-global record port
TrigSeq: fix: step move when neighbour step is repeat or mod trig
TrigSeq: fix: Linnstrument plugin: update pattern pads when pasting to empty pattern or cloning
TrigSeq: fix: track mod min/max is always applied to incoming (and echoed) midi events
(add "Mod" unmap checkbox on Play tab)
TrigSeq: fix: pipemap patnr display not updated when changing pattern via previous node
TrigSeq: add: remap tracks to selected note-name profile utility function (lctrl-x m)
TrigSeq: add: mouse-drag mini undo (mod1/mod2)
TrigSeq: add: guess note-name profile from track outputs utility function (lctrl-x g)
TrigSeq: add: monitor import: when all tracks use the same output port, set track output to default and update seq output
TrigSeq: add: configurable step highlight + bar modulos (Pattern tab)
TrigSeq: add: output capture support (lctrl-x c: begin, lctrl-x v paste)
TrigSeq: add: Linnstrument plugin: modulate DURATION_SCL (and VELOCITY_SCL) via TRIG pads in performance mode
TrigSeq: add: RPN_TRIGSEQ_TRACKn_DURATION_SCALING autodev events
TrigSeq: add: context menu option: init mod track (lshift-lalt-BACKSPACE)
TrigSeq: add: OUT_MULTITRACK_POLYSTEP4 output mode
UI: fix: filedialog: update path label after changing directory via combobox selection
UI: fix: lctrl release event not sent after lctrl-x
UI: fix: case-insensitive FloatParam user table match
UI: change: revert to nominal min/max values when FloatParam is reset (LMB double-click)
UI: change: show "stop" menu with single-click when song is already stopped
UI: add: lock mousewheel to scrollpane for 1(?) second after scrolling (prevent accidental widget editing)
UI: add: focus first menu item when popupmenu is opened via keyboard (usually 'a')
UI: add: FileNameDialog: create directories via "mkdir" or "md"
UI: add: statusbar commands: add context menu with default actions / default parameters
UI: add: copy cel port+ctl info to clipboard A or B
(in autodevform, deviceioform, modmatrixarg, monitor, morphscene entry, tracker instrument, ctlmorph)
UI: add: (Eureka) audio remote control (sampler) dialog
UI: add: add "open in explorer" button in filedialog (hold-click browse button)
UI: add: save rootpath and device config in separate config files
(UI-editable config is saved to "synergy_config_local.tks")
20200404:
Arranger: change: show 10% more than selection size (dont place timeline cursor at screenborder)
MIDI: add: yamaha_fs1r MIDI synth profile
PagePipe: add: focus name widget with lctrl-x u or lshift-n
PipeMap: fix: save/restore correct suggested pipe preset filename
Replay: fix: Node.handleReplayTick() was only called by Tracker node (fixes Linnstrument pad colors, among other things)
Script: Linnstrument Arranger: fix "send configuration" (timing / event flush)
Script: Linnstrument Arranger: change split point from 12 to 7 (more space for pattern pads)
Script: Linnstrument Arranger: change default configuration to , ..
Script: add: 'ptfx' preset (protracker-like effects) (16x slide/env+lag+LFO) (also added "ptfx" pipe preset)
SysEx: add: Yamaha FS1R editor
Tracker: fix: piano widget layout
Tracker: fix: remote(VST) param name reverted to "remote param " after reloading project
Tracker: fix: disable param widgets after instrument with no params was selected while instrument editor was hidden
Tracker: fix: update instruments table when dev or ch changed
Tracker: fix: common CC import (inherited synth profile controllers)
Tracker: fix: cel styles+ranges for imported params
Tracker: fix: a thousand-fold speed optimization of block-copy operations (also affects rotate, reverse, tap-mode, etc)
Tracker: change: CTL_MUTE (step-mute) now auto-resets after 4*dur_scl*value ticks (i.e. 4=1/16 by default)
Tracker: change/fix: insert/delete events on all tracks in 'pattern' block mode (DEL/INS keys w/ lshift and/or lctrl modifier)
Tracker: add: params context menu: add generic 1..4 CCs import option
Tracker: add: global and per-track chance / probability modifiers (internal RPNs 700..716)
Tracker: add: 'random' block interpolation mode (first/last selected step values = min/max)
TrigSeq: add: toggle MIDI recording mode with lctrl-x RCTRL (no note-to-track unmapping when disabled)
TrigSeq: add: global and per-track chance / probability modifiers (internal RPNs 700..716)
TrigSeq: add: mod1+mod2 can now be shifted 'n' ticks ahead (to counter CC smoothing on certain synths, e.g. Rytm and Cycles)
UI: add: filedialog: disable cursor key tab cycling (left/right)
UI: add: filedialog: cycle auto-completions with TAB key w/o showing auto-completion dialog
20191109:
All Nodes: fix: when node editor is entered via prev/next node, ESC leads to PagePipe
All Nodes: fix: lshift-numpad-1..9 keys don't work in pattern manager (used pattern selection)
All Nodes: add: show pattern names in pattern combobox (long options)
All Nodes: add: remember last saved/loaded node preset name per node
All Nodes: add: properly detect octave-spread chords, e.g. c-4, e-5, g-6
All Nodes: add: speaker icon is now clickable (mute/unmute node or pipe)
AnalogRytm: add: support firmware v1.50 (kit+pattern v4)
AnalogRytm: add: "r" / "w" minishell cmds (peek, poke kit or pattern byte, tab dependent)
AnalogRytm: add: kit / sound editor (with preset support)
AnalogRytm: add: note redirect modes (IO tab) (Chroma, Trig)
AnalogRytm: add: redirect pressure option
AnalogRytm: fix: midiInStop() related pipe process issue in sample/kit uploader ("audiotool")
Arranger: fix: select clip after creating it
Arranger: fix: lmb-click in draw mode on existing pattern should select it
Arranger: fix: loop starts one tick too late
Arranger: fix: pattern editor start offset is wrong when pattern edit was started at offset
Arranger: fix: fix rare crash/freeze issue when moving between clips (CalcTicks() threading issue)
Arranger: chg: remove Push mode (obsolete now)
Arranger: chg: in grid cursor mode, update song offset when moving left/right and replay is not running
Arranger: add: "New Track Dialog" (auto-create pipe+node, load preset, auto-assign automation port)
Arranger: add: make RMB-click edit-pattern work in all edit modes
Arranger: add: hold lctrl while creating clip(s) to assign unused pattern number, lshift to alloc "sub" pattern
Arranger: add: lazy-allocate pattern(s) when creating clip(s) (e.g. lctrl-n)
Arranger: add: set left locator with lctrl-x l / right with lctrl-x r
Arranger: add: select prev/next used pattern nr with lctrl-lshift HOME/END
Arranger: add: when multiple clips are selected and left/right is pressed, find leftmost / rightmost clip
Arranger: add: auto-reorder tracks according to pipemap occurence
Arranger: add: set edit offset to start when LEFT/RIGHT is pressed and there are no clips
Arranger: add: when entering (master) arranger editor, set edit offset to play offset
Arranger: add: when muting arranger via RPN_COMMON_MUTE_TEMP, forward mute state to currently playing nodes
Auto: chg: remove "Auto" node type
Buffer: fix: don't delete incoming frame events when buffer input device is not enabled
CtlTag: fix: ESC does not work when page is entered via navigation bar button
MIDI: chg: update AnalogRytm profile and add track NRPNs
MIDI: add: sort all device comboboxes by name
MIDI: add: Linnstrument: encode devidx in node notifications so multiple devices can be used simultaneously
MIDI: add: sort MIDI synth profiles by name
ModMatrix: fix: errors while re-parsing generated script (e.g. "cc#001 (modulation msb)")
ModMatrix: fix: copy poly+event flags when copying patterns
ModMatrix: fix: after editing macro name (and pressing enter), ESC selects Pipe page instead of PipeMap
ModMatrix: chg: keep pattern name after clear
ModMatrix: add: curve mapping (four cubic bezier curve look up tables per pattern)
ModMatrix: add: song pos ticks src type ("ticks")
ModMatrix: add: moddiv op, dst= (arg1 % arg2) / arg2
ModMatrix: add: curve bpm preset
ModMatrix: add: BPM src/dst arg type
ModMatrix: add: configurable tick modulo that reduces CPU usage in non-event driven (per-tick) mode
Monitor: fix: when entered via prev/next node, events don't update
Monitor: fix: CC tooltip does not show inherited parameter name (remote msp)
Monitor: chg: when filtering redundant ctl changes, don't filter RPN (don't filter RPN_COMMON_NODE_RESTART)
Monitor: add: pattern list table where double-click plays pattern (once)
Monitor: add: [x] auto-restart when pattern is selected (e.g. for triggering chords)
Monitor: add: (re-)start recording with RSHIFT (clear+select play/rec frame)
Monitor: add: set input filter from first frame event ('f')
Monitor: add: clone pattern to next (sub) ('n', lshift-n)
Monitor: add: automatic chord detection (checkbox) (updates pattern name)
Monitor: add: optionally auto-clear pattern when first note is received after last note timeout
Monitor: add: show pat notes on virtual kbd
Monitor: add: show armed mode in pipemap (armed when != REPLAY)
Monitor: add: "Sync with Replay" option (Play tab)
Monitor: add: "FrameRec+Play" recording mode (record from both rec+play frames)
PagePipe: add: show automation ports ("Auto" column)
PipeMap: add: toggle node arm-for-record via RCTRL
PipeMap: add: "New Track Dialog" (auto-create pipe+node, load preset, auto-assign automation port)
PipeMap: add: show automation ports when node is selected via kbd or mouseover
PipeMap: add: show incoming ctl info (STConfig.b_pipemap_show_ctl_info)
PipeMap: add: (re-)start global recording with RSHIFT (auto-create undo states and (re-)start precount)
Replay: fix: don't double-merge sysex events
Replay: chg: store ctl values (incl. velocity) as floats
Replay: chg: change RPN_COMMON_MUTE_TEMP to boolean (mute/unmute node)
Replay: chg: remove RPN_COMMON_MUTE and RPN_COMMON_MUTE_TOGGLE
Replay: add: RPN_COMMON_MUTE_TEMP_TRACK1_8, RPN_COMMON_MUTE_TEMP_TRACK9_16
Replay: add: RPN_COMMON_SOLO_TEMP_TRACK1_8, RPN_COMMON_SOLO_TEMP_TRACK9_16
Replay: add: toggle replay with ´ (for notebooks w/o numpad)
Replay: add: "Send initial pattern selection" option (STConfig.b_node_send_pattern_prgchg_when_replay_starts)
Replay: add: multi-track SMF export (SMF format 1)
Replay: add: export SysEx events to SMF
Script: add: Soundtracker / Protracker mod file exporter script
Script: add: autochorder preset ("jazz hands")
Script: add: add note_on_pre delegate
Script: add: periodically update UI widgets from param vars
Script: add: Linnstrument Arranger: "send configuration" button and "arranger"/"default" preset selection
Script: add: Linnstrument Arranger: select node in pipemap when pattern is selected
Script: add: "clone dev ch" preset
StepSeq: chg: remove StepSeq node type
SysEx: fix: silently skip project-specific MIDI profile data if it can't be loaded (e.g. patch size changed)
SysEx: fix: send entire patch when first proxy program change occurs (generic synth editor)
SysEx: add: init_bank minishell cmd
Tracker: fix: prevent double-processing in blockIncDecCurrentCtl() (when multiple cels show the same ctl)
Tracker: fix: program change flooding (reset CTL_INSTR injection at end of tick)
Tracker: fix: call instr.handleSelect() only while replay is running
Tracker: fix: don't play zero-length pattern
Tracker: fix: only map any performance ctl to dest instr when node editor is visible
Tracker: fix: update chord detection when zoom changes
Tracker: fix: Monitor import: importing prgchg-only sequence does not work with multiple automation ports
Tracker: fix: fix note res info for notes <1/256 (i.e. 1/384, 1/768)
Tracker: chg: remove Push support
Tracker: chg: update trigseq pattern import (mod1+mod2, CHROMATIC output modes)
Tracker: chg: change lctrl-lshift-PAGEUP/DOWN to "move to next/prev parent arranger clip start"
Tracker: add: Monitor import: when creating params, use midisynthprofile name/range/cel style when available
Tracker: add: Monitor import: convert RPN_COMMON_UI_PRGCHG to regular program change when recording controllers
Tracker: add: Monitor import: import pattern name
Tracker: add: Monitor import: set auto-created instrument name to device name+ch
Tracker: add: remember last selected param (and select in table)
Tracker: add: timescale_curtrack [=2] minishell cmd
Tracker: add: timescale_alltracks [=2] minishell cmd
Tracker: add: scale_ctl minishell cmd
Tracker: add: record to multiple (tracker) nodes
Tracker: add: import CTL_BPM from .mid (S1 exported tempo map / beat map)
Tracker: add: (preliminary) audio tracks (autocalc sample starts. for use with "Eureka" sampler)
Tracker: add: init_audio minishell cmd that initializes sample patterns+instruments
Tracker: add: instrument auto-name flag + update name when dev changes
Tracker: add: "Start Recording" / "Continue Recording" pulldown menu entries (Replay menu)
Tracker: add: make initial pattern length configurable (STConfig.node_tracker_initial_pattern_length_16th)
Tracker: add: (toggleable) piano widget
Tracker: add: pulldown menu entries for toggle alt cel view kbd shortcuts (lctrl-x p, lctrl-x [)
Tracker: add: optionally swap swap lshift-insert/delete behaviour (lctrl-x DELETE)
Tracker: add: edit-pattern-follows-replay-pattern mode (lctrl-x INSERT)
Tracker: add: show active edit modes next to note symbol
Tracker: add: Import AnalogRytm: clear all tracks (including first one) before import
Tracker: add: Import AnalogRytm: import microtiming
Tracker: add: Import AnalogRytm: single-channel import mode (create only one instrument)
Tracker: add: toggle both ignore prgchg + follow replay pattern with lctrl-lshift-space ("follow arranger")
Tracker: add: handle multi-pattern-sequence recording
TrigSeq: fix: trackdialog: button color is not updated after changing track color
TrigSeq: chg: bg-record from "rec_dev" only when record enable checkbox is in mixed state
TrigSeq: chg: always undo during recording (don't redo, e.g. when discarding last take)
TrigSeq: chg: change mute note (automation port) to mute_flip note
TrigSeq: add: customizable key-to-track unmapping
TrigSeq: add: separate mute and repeat recording options
TrigSeq: add: show context menu on RMB-hold
TrigSeq: add: add unfoldable detail-edit view ("stepdetails")
TrigSeq: add: add mod1+mod2 step parameters and assignable ctl outputs
TrigSeq: add: update / add presets (D16, StiX, Analog Rytm multich, ..)
TrigSeq: add: skip empty (play_len == 0) tracks when moving to prev/next track
TrigSeq: add: "" forced output / forced mod output device option
TrigSeq: add: hold lshift or lalt to paint mod1/2 values
TrigSeq: add: trackdialog: show track names in timing track long options
TrigSeq: add: trig-less mod/arg2-only trigs
TrigSeq: add: support "arm for recording" via pipemap
TrigSeq: add: OUT_CHROMATIC mode where arg2=note
TrigSeq: add: OUT_CHROMATIC_MONO mode with accent+slide
TrigSeq: add: per-pattern configurable pitchbend up/down range
TrigSeq: add: send fractional note number as pitchbend (when pitch range is != 0)
TrigSeq: add: default_note_duration offset (per pattern)
TrigSeq: add: inc/dec track default_note_duration kbd shortcuts (lalt-LEFT/RIGHT)
TrigSeq: add: arg2 note step recording mode (hold LCTRL and play MIDI notes, e.g. for 303-like patterns)
TrigSeq: add: force note step recording while sustain pedal is pressed
TrigSeq: add: new MIDI map targets (undo, toggle rec, clear track*, clear all tracks*)
TrigSeq: add: increase arg1 (usually velocity) detail (float precision)
TrigSeq: add: HW interface plugin support
TrigSeq: add: Linnstrument HW interface plugin (user firmware mode)
TrigSeq: add: honor recording latency setting
TrigSeq: add: per-pattern quantization offset
TrigSeq: add: per-track velocity scaling RPNs (see "internal.msp")
TrigSeq: add: per-track mute RPNs / mute permanently
TrigSeq: add: Analog Rytm pattern import (lshift-F7)
TrigSeq: add: add master_len_16th pattern setting (for polymetric patterns)
TrigSeq: add: edit-pattern-follows-replay mode (lctrl-lshift-space) ("follow arranger")
TrigSeq: add: "Pattern Output Channel" unmap mode (e.g. for Analog Rytm)
TrigSeq: add: "analog rytm multich" preset
UI: fix: update BPM display when BPM is edited on PageProject
UI: add: minishell DOWN key (autocomplete, same as TAB)
UI: add: minishell autocompletion: match cmd name substring
UI: add: show channel (profile) names in MIDI channel selectors / comboboxes
UI: add: sort node types by name (new node page)
UI: add: screenshot function (lalt-PRINTSCR)
UI: add: "Mono" color scheme
20190531:
All Nodes: add: clickable edit/play pattern numbers (show combobox)
All Nodes: add: toggle external clock mode with RPN_COMMON_EXTCLK (570)
All Nodes: add: draw mute icon in top/right corner when node or pipe is muted
AnalogRytm: fix: remove implicit automation ports to prevent nodes from being detected by Arranger
Arranger: fix: disappearing track names (layout issue)
Arranger: fix: preserve mute states when toggling track solo
Arranger: fix: never queue empty pattern change while timeline is muted
Arranger: fix: force-remove timeline track even if it still has clips but the target node has been deleted
Arranger: fix: don't reset loop to canvas size when timeline is muted and marker playmode is active
Arranger: chg: up/down in selection cursor mode: find clip directly above/below
Arranger: chg: 'v' to insert snapshot of currently playing pattern (current track only)
Arranger: chg: 'INSERT' to insert silence on all selected tracks in selection cursor mode
Arranger: chg: insert silence before pasting clipboard at existing clip start
Arranger: chg: when pasting play snapshots on all tracks, only insert silence if snapshot does not fit
Arranger: chg: align edit offset to grid when stopping replay at cursor (lctrl-space)
Arranger: chg: change lshift-d (toggle follow) to lctrl-lshift-f
Arranger: add: lshift-c to loop selected clip and set edit offset to loop start
Arranger: add: x/y grid cursor mode ('x' toggles it)
Arranger: add: lctrl-x left/right to move selected clip(s)
Arranger: add: lctrl-x up/down to resize selected clip(s)
Arranger: add: track mute/solo kbd shortcuts ('d', 's')
Arranger: add: lctrl-up/down to select clips at edit offset (all tracks)
Arranger: add: lshift-space to queue replay offset while replay is running (similar to lshift-click)
Arranger: add: dbl-click anywhere to queue replay offset (+start replay)
Arranger: add: lazy-start playing when marker clip is selected via RETURN
Arranger: add: lshift-z to toggle y-expand-selection mode
Arranger: add: 'z' to switch between regular track and marker track
Arranger: add: lctrl-lalt-left: go to previous marker
Arranger: add: lctrl-lalt-right: go to next marker
Arranger: add: highlight empty clip patterns
Arranger: add: lctrl-x e to toggle edge-selection mode (move to clip start/end when enabled)
Arranger: add: lshift-d to toggle unmute all tracks
Arranger: add: scratchpad timeline (toggle with lctrl-x s)
Arranger: add: utility fxn to set clip length(s) to node pattern length(s) (lctrl-x a)
Arranger: add: "calc_start_offsets_relative_to_first_clip" minishell cmd
CtlMorph: add: modulate entries with RPN_CTL_x (100..115)
CtlMorph: add: delete/insert/move entries via keyboard
CtlMorph: add: query remote params (e.g. "Add Remote ModMatrix controllers") (Eureka host)
CtlMorph: add: hold LALT when changing entry dev or dev_ch to update all matching entries
CtlMorph: add: query RPN_CTL_n destination parameter names and create tags (Eureka host) (lctrl-t)
CtlMorph: add: query RPN_CTL_n destination parameter values (Eureka host) (lctrl-f)
CtlMorph: add: query RPN_CTL_n destination parameter names+values (Eureka host) (lctrl-e)
CtlMorph: add: copy/paste entry with 'c', 'v'
CtlMorph: add: copy/paste group with lshift-c, lshift-v
CtlMorph: add: select prev/next group with lctrl-x LEFT/RIGHT
CtlTag: add: lctrl-q to query remote (Eureka host) modmatrix params
MIDI: add: "remove_unavailable_in_devs" minishell cmd (PageMidiDevs)
MIDI: add: "remove_unavailable_out_devs" minishell cmd (PageMidiDevs)
ModMatrix: add: "sub" op
ModMatrix: add: linear/sqrt/cos/pow pan ops
ModMatrix: add: "negharmony" op
ModMatrix: add: "pitchbend region (2)" preset
ModMatrix: add: "randomize velocity v2" preset
ModMatrix: add: "note probability v2" preset
ModMatrix: add: "crossfade 2xout linear modwheel" preset
ModMatrix: add: "crossfade 2xout linear modwheel invert" preset
ModMatrix: add: "crossfade 2xout linear pitchbend" preset
ModMatrix: add: "crossfade 2xout linear pitchbend invert" preset
Monitor: fix: SysEx recording + playback
Monitor: add: adjustable sequence start offset (16th) ("replay shift")
Monitor: add: toggle replay mode with lctrl-x c (same as rctrl)
Monitor: add: clear events with lctrl-x e (same as lshift-BACKSPACE)
Monitor: add: cycle seek modes with lctrl-x s
Monitor: add: queue marker with 't' (in recording mode)
Monitor: add: delete events left of marker with 'l' or lctrl-x DELETE
Monitor: add: 'u' to clear events and activate "framerec" mode
Monitor: add: 'h' to delete events left of marker and go to next pattern
Monitor: add: auto-marker mode (set marker at first note after silence)
Monitor: add: "note" seek type
MorphScene: add: send RPN_PRE_SCENETARGET_A..H on target port of first entry when scene is selected
(can be used by script nodes to change i/o ports)
MorphScene: add: "group_swap" minishell command
MorphScene: add: "scene_swap" minishell command
MorphScene: add: (optionally) auto-select morph scene when MIDI map context is activated
PatternMgr: add: 'DELETE' to delete pattern
PipeMap: fix: next/prev used patnr selection when current patnr is --/
PipeMap: add: improve cursor up/down navigation when pipe spans multiple rows
Proxy: add: bank+patch select comboboxes, dest.amount floatparam
Replay: fix: output-transform input events even when "echo" mode is disabled for a device
Replay: chg: don't send reset (allnotesoff) when replay is stopped via lshift-numpad enter
Replay: chg: TRACKER_RECORD_USRCTLx (2180..2195) is now RPN_CTL_x (100..115)
Replay: add: (N)RPN MSB/MSB+LSB send modes (per device, controlled via synth profile "dataEntryMode" attribute)
Script: add: "seq/rpn prgchg quantization" and "seq/quantized pattern restart" presets
(e.g. for postponing pattern changes until end of beat or bar)
Script: add: "ev/vector fade (radias)" preset
Script: add: octave up/down soft buttons in Linnstrument preset (bottom left pads)
Script: add: channel presets in Linnstrument preset
Script: add: Akai MPK49 pitchbend message fix preset (in 3, external MIDI) (it's a known issue)
SysEx: add: add generic, MIDI synth profile based synth editor
SysEx: add: Novation Peak editor (via synth profile + generic synth editor)
SysEx: add: Korg Radias editor (via synth profile + generic synth editor)
SysEx: add: midi tuning editor dialog (MIDI Tuning Standard)
SysEx: add: Black Corporation Deckard's Dream editor (via synth profile + generic synth editor)
SysEx: add: show only one editor per device
Tracker: fix: update instrument name after undo/redo
Tracker: fix: seek to edit offset when replay stops
Tracker: fix: missing ctltag (N)RPN names in combobox options
Tracker: fix: step-play (RETURN) when editor is invoked from Arranger
Tracker: fix: ignore (arranger) seek when starting replay from pattern editor
Tracker: fix: remove upper limit clipping for CTL_DURn
Tracker: chg: when CTL_DURn exceeds 255, display as ">>" instead of "??"
Tracker: chg: double-pattern shortcuts to lctrl-p / lctrl-lshift-p (instead of o)
Tracker: chg: re-init track layout when importing Monitor sequence and there's only one pattern
Tracker: chg: handle unipolar / bipolar 14bit and remote/VST value scaling separately
e.g. 255 maps to 16320 in 0..255 mode and to 16383 in -128..127 mode
M0_127: 64=0.503, 127=1.0
M64..63: 64=0.5, 127=1.0
M0_255: 128=0.501, 255=1.0
M128_127: 128=0.5, 255=1.0
Tracker: chg: remove upper limit clipping for CTL_DURn
Tracker: chg: display CTL_DURn values >255 as ">>" instead of "??"
Tracker: add: auto-add note-cels and tracks when importing Monitor sequences with more than 5 active notes
Tracker: add: improve "manage cels" dialog (change layout, improve keyboard navigation)
Tracker: add: auto-spread notes to multiple tracks ("Spread" recording mode)
Tracker: add: improve RPN_TRACKER_RECORD_USRCTLn handling and add asymmetric mode
Tracker: add: show effective output values when editing instrument param reset value
Tracker: add: improve keyboard focus behaviour in instrument editor
+ focus param list after param editing
+ focus instrument list after instrument name / bank / prognr / pitchbend editing
+ add tabcycle override after creating new instrument (focus name, dev, ..)
Tracker: add: envelope-view: fine-tune ctlpoint y-position in line/curve mode by holding LMB down + mouse drag
Tracker: add: edittracklayoutdialog: "Group By Note+Vel+Dur" utility fxn
Tracker: add: edittracklayoutdialog: "Auto-Add Cels (Auto-Layout)" utility fxn
Tracker: add: edittracklayoutdialog: "Reset Layout" utility fxn
Tracker: add: cel styles HI_NIBBLE, LO_NIBBLE
Tracker: add: toggle all pattern cel vel+dur styles with lctrl-x p
Tracker: add: always record note on velocity during realtime record (but not framePlay)
Tracker: add: import modmatrix params from remote (Eureka host) (via ctltag)
Tracker: add: import params from synth profile
Tracker: add: add "Import Performance Ctls" utility fxns (instrument view param table context menu)
Tracker: add: after deleting param, move table cursor to previous param if there's no next
Tracker: add: alternative cel styles, toggle with lctrl-x [
Tracker: add: RPN_COMMON_SPEED_SYNC_RATE controller (auto-sync speed modulation back to 1x)
Tracker: add: "rand_ctl_abs" minishell command
Tracker: add: "rand_ctl_delta" minishell command
Tracker: add: "rand_ctl_rel" minishell command
Tracker: add: "neg_harmony" minishell command
TrigSeq: fix: soft-crash when pattern is null
UI: fix: lots of layout / text positioning fixes
UI: fix: mouse-cursor related crash when toggling fullscreen mode
UI: fix: popupmenu submenu position near window borders
UI: chg: show tooltips in screen corners by default (can be changed in synergy_config.tks)
UI: chg: use flat look (no button borders) by default
UI: add: kbd shortcut for switching between Eureka and Synergy (lctrl-x x)
UI: add: add alternative "dark" theme
UI: add: color grading post processing shader
UI: add: interactive mini-shell in statusbar textfield (page dependent commands with auto-completion) (lctrl-`)
UI: add: page navigation toolbar (+ get rid of "start" page)
20180610:
MIDI: add: joystick support (via virtual MIDI input devices)
MIDI: add: Microsoft XBOX 360 joypad MIDI synth profile
MIDI: add: Logitech G27 racing wheel MIDI synth profile
MIDI: add: FrSky Taranis X9D RC MIDI synth profile
MorphScene: chg: copy'n'paste scenes via lctrl-lshift-c/v instead of lctrl-c/v
MorphScene: add: multiple table selection / copy'n'paste entries (lctrl-c/v)
MorphScene: add: multi scenes
MorphScene: add: send global RPN event(s) when scene or multi-scene is selected
Replay: chg: emit poly-pressure events _before_ note on
Tracker: chg: toggle play/arp views with lctrl-x tab instead of lctrl-x x
Tracker: add: event timing view (toggle with lctrl-\ or lctrl-x x)
Tracker: add: timingview: auto-double width/height options
Tracker: add: timing view move-lock (toggle with lctrl-lshift-\ or lctrl-x lshift-x)
Tracker: add: zoom in/out with lctrl-WHEELUP/DOWN
Tracker: add: lshift-RETURN to play/cycle single (chord-)notes
TrigSeq: fix: track setup tabcycle order
TrigSeq: add: track setup mini kbdfocus cyclelists (a,c,d,f,j,.. keys)
TrigSeq: add: velocity jitter (%) (per pattern and per track)
TrigSeq: add: pattern-global microtime jitter offset
TrigSeq: add: note-name profiles (see midi_note_names/ directory)
TrigSeq: add: per-pattern and/or per-track note-name definitions (note output modes)
TrigSeq: add: Superior Drummer 3 note-name definitions (clean/dry)
TrigSeq: add: Synergy note-name definitions
TrigSeq: add: Groove Agent 4 note-name definitions (alt/indie + electronic)
TrigSeq: add: DSI Tempest note-name definition (custom)
TrigSeq: add: Elektron Analog Rytm (perf.channel) note-name definition
TrigSeq: add: colorize forced-out widgets (darken when not enabled)
UI: chg: reduce number of relayout passes when node editor is shown
UI: chg: force relayouting of all node editors when window is resized
UI: add: wrap try..catch around every UI callback
UI: add: searchable comboboxes
(type to show filter in popup dialog)
(return to cycle through multiple choices or select unique result)
(UP to hide filter textfield and refocus option table)
20180523:
MIDI: add: increase default number of virtual MIDI devices from 8 to 16
MIDI: add API to generate midimap events from pipe nodes
ModMatrix: add: midi channel is now configurable when macro "n" dev is selected
ModMatrix: add: * midi channel selection (match all channels)
MorphScene: add: hold-click "Add" to replace input event
MorphScene: add: increase number of scenes from 4 (A..D) to 8 (A..H)
PipeMap: chg: move cursor to next pipe after deleting pipe
Prophet12: fix: morph layout (broken in last release)
Script: fix: crash when assigning non-delegate function to delegate
Script: add "mono_poly*" channel cycle scripts
Script: add latch brightness preset (linnstrument) ("mpe_latch_cc")
Script: add linnstrument arranger and fader preset ("linnstrument arranger", see docs)
Script: add: OnSaveState(Stream ofs) callback
Script: add: OnLoadState(Stream ifs) callback
Script: add: note to used patnr preset ("note_to_usedpatnr")
Script: add: OnUIInit(XMLForm xfm) callback
Tracker: fix: "remove cel" dialog crash
Tracker: chg: RT recording: fallback to first visible note cel when cursor is placed on non-note cel
Tracker: chg: when step recording, always record on current track (ignore filter)
Tracker: add: filter mode that only looks at the midich (filter mixed state setting)
Tracker: add "*mpe*" presets
Tracker: add: holding lalt when editing instrument device and/or channel now updates all instruments
TrigSeq: fix: support auto-noteoff for trackmute+globalmute+trackrepeat keys
TrigSeq: fix: global repeat trigs (a-4) only worked when delayed by 1 tick
TrigSeq: fix: global repeat trigs (a-4) in "Immediate" mode repeated all tracks
TrigSeq: add: OUT_SINGLECH_NOTE_PROBABILITY output mode (arg2=probability in %)
TrigSeq: add: per-track microtime jitter
UI: set filename to project name before, and prj name to filename after saving
UI: directory navigation related filedialog improvements
20180405:
CtlTag: fix: pressing 'a' while editing a tag name 'a' opened the 'add' dialog
Arranger: fix: start non-master arranger clip state recording at cursor position
Arranger: fix: never auto-remove tracks that have clips
Arranger: fix: redraw timeline after clip recording
Arranger: never stop clips on currently recording tracks
Arranger: chg: don't process autodev events when node is muted
Arranger: add: cursor right after last clip: move to clip end
Arranger: add: show marker clips in pattern manager (lctrl-x d)
KeyMap: chg: don't process autodev events when node is muted
20180402:
General: move to 64bit / x64 (tested on Windows 10)
Arranger: fix: rebuild device name (and alias) list when node is shown
Arranger: fix: restore clip selection after editing clip node
Arranger: chg: when starting selection with cursor keys, select upper or lower track
clip depending on cursor key (up/down)
Arranger: change inc/dec patnr shortcut to home/end
Arranger: change goto start/end shortcut to lshift-home/lshift-end (like in Tracker node)
Arranger: add: display pattern/clip names in timeline
Arranger: add marker track
(editable markers/ranges)
(auto assign pattern numbers to markers for autodev remote control)
(assigned pattern patnr can be changed by selecting and editing its patnr)
(marker name can be changed selecting a clip and editing its name)
(also supports standard autodev note-to-prg mapping (c-3..))
(marker play can be beat-synced via "Queue 16th" setting in "Play" tab)
('return' or double-clicking a marker queues it)
(support RPN_COMMON_SEEK_OFFSET when launching marker clips from other arranger)
Arranger: add arranger stack for easy navigation and editing of cascaded arranger setups
Arranger: add note to arranger offset (marker) feature
Arranger: add: zoom in/out with lshift-]/[ (+/ü) (like in Tracker node)
Arranger: add: show tools menu with 'a'
Arranger: add: focus grid size widget with lshift-a
Arranger: add: when editing "Queue 16th", show bar/beat equivalent
Arranger: add: cycle through play modes with 'p'
MIDIMon: add: colorize events
Monitor: chg: when clicking note (to play it), don't grab keyboard focus
(that prev/next frame can be select with cursor keys)
Monitor: add: move frame left/right (lshift-left/right)
Monitor: change "play frame" shortcut to 'w' (consistency with trigseq)
Monitor: change "delete frame" shortcut to DELETE
Monitor: change change "delete frame before current" shortcut to lctrl-DELETE
Monitor: add "clear frame" shortcut (backspace)
Monitor: add: open tools menu with 'a'
Monitor: add: auto-merge and set fixed duration option (useful for editing chords)
Monitor: add: save/restore merge millisec, fixed duration, fixed velocity settings per node
Monitor: add: when appending new events during record->play->record,
add some time offset to prevent merge
(STConfig.node_monitor_record_continue_time_offset)
Monitor: add: frames can now be triggered with notes (auto-dev)
(STConfig.node_monitor_trigger_base_note (c-3 / 36))
Monitor: add: trigger velocity modes (keep, replace, multiply, add)
Monitor: add: lock/overdub current frame mode
(don't advance while recording)
('l' or 'd' key toggles it)
Push: add: keyboard mode: dual+quad split modes
Script: fix: unresolved "module member not found" causes program to terminate
Script: fix: constant value error when script is recompiled
Script: add: boppad to trigseq script preset
TrigSeq: fix: remove note from framerec when record dev+ch matches
TrigSeq: fix: pasting pattern plays sounds
TrigSeq: fix: don't record note duration (arg2) when recording is not enabled
TrigSeq: fix: instance created during replay was not always in sync
TrigSeq: fix: autodev notes were only working when recording device was enabled
TrigSeq: chg: clear track trigs and repeats (and keep args+microtiming) (backspace)
TrigSeq: add: timing track (added to per-track step microtimes)
TrigSeq: add: timing track / groove presets (STConfig.groove_path)
TrigSeq: add: clear track microtiming shortcut (lalt-backspace)
TrigSeq: add: when drawing trigs with RMB, interpolate mouse position while LCTRL is pressed
(relative mouse y in step cell determines velocity)
TrigSeq: add: pageup/pagedown: move cursor to next/prev track (groups of 4)
TrigSeq: add: lshift-pageup/pagedown: inc/dec track len
TrigSeq: add: lshift-home / lshift-end: goto first/last track
TrigSeq: add: utility fxn to load arg2 identity (0..play_length-1)
TrigSeq: add: paste track to all patterns utility function (lctrl-lshift-v)
TrigSeq: add: undo/redo multiple patterns
(undo state is invalidated when pattern is changed)
Tracker: fix crash after deleting node and replacing it with another
Tracker: fix crash when toggling pattern manager / remark editor
Tracker: fix crash when undo timeout expires after node has already been deleted
Tracker: fix crash in getCursorXAtPixel() when no track is visible
Tracker: fix: instance created during replay was not always in sync
Tracker: fix: delegate pitchbend (delegate_perf_events) to current instrument
Tracker: change default note-off velocity to 64
Tracker: add: highlight steps in external sync / polystep mode
Tracker: add: inject_mute/inject_seek RPNs
Tracker: add: VST param type (for use with the new work-in-progress Eureka DAW and metahost plugin)
(more on this later!)
Tracker: add trk_rec_usr1..16 RPNS (redirected to current node / current track)
(then mapping your MIDI controller(s) to these RPNs makes it possible to
use a common controller setup in all tracker instances)
(when node is not currently editable (aimed for recording),
the RPN behaviour is the same as the inject_inject_usr1..16 RPNs)
Tracker: add toggle zoom / step_resolution hotkey ('f' / ''' ('Ä') keys)
(A/B zoom level is stored per node)
UI: fix: array-out-of-bounds exception in TextView (e.g. ScriptNodeEditor)
UI: fix: project page: bpm widget is not updated when bpm is changed via numpad
UI: add: project i/o: auto-set last loaded / last saved project
(add "Auto-Update" checkbox right next to "L" and "S" button on config page)
20171126:
All Nodes: add: lctrl-g (jump to pattern) dialog is now available in all nodes (not only in tracker)
All Nodes: add: when auto dev+ch is edited, indicate whether the setting is globally/locally unique
(bgcolor of channel combobox; tooltip lists conflict details)
All Nodes: add map targets for "used" pattern selection (MMT_SELECT_USED_PATTERN_1..16)
Arranger: fix: first tick of TrigSeq pattern was not played when the node was previously muted
Arranger: fix: selecting tracks with cursor up/down now skips empty tracks
Arranger: fix: immediately resize timeline area after window has been resized
Arranger: fix: when multiple clips are deleted, don't add deleted clip to new selection (fix crash)
Arranger: chg: prefer intersecting clips when selecting clips with cursor up/down
Arranger: chg: don't auto-scroll left/right when selecting clips up/down
Arranger: add: highlight track label (red) that haven't been assigned a unique auto dev+ch
(tooltip lists conflict details)
Arranger: add: 'return' key or right mouse button click now edit first selected clip
Arranger: add: lctrl-home to inc patnr of selected clips by 4
Arranger: add: lctrl-lshift-home to inc patnr of selected clips by 1
Arranger: add: lctrl-end to dec patnr of selected clips by 4
Arranger: add: lctrl-lshift-end to dec patnr of selected clips by 1
AudioTool: add -ow option
(set separate wav output prefix, "*samples" to place in relative "samples/" subdir)
AudioTool: add UVI Falcon (.uvip) patch generator
(currently supports Sample, Stretch, Layer-per-Keygroup and Layer CC-Switch options)
AudioTool: add wavetable mode (Serum-style 2048 frames/cycle wavetables)
(resamples input wav cycles to match required wavetable cycle length)
AudioTool: add "wavetable" preset
AudioTool: add "split layered" preset
AudioTool: add "multiloop c,d#,f#,a" presets
AudioTool: add "single loop-only" preset
MIDI: add Allen&Heath XONE K1 profile
MIDI: add Akai MPK49 ControlBank B+C profiles
MorphScene: fix: source filter "range" and "split end": compare <= end instead of <end
MorphScene: fix: "remap" 127..0 should invert (e.g. Roland foot switch)
PipeMap: fix: crash after node as moved to other pipe and previous pipe was deleted
PipeMap: add 'edit pipe/node comment" to context menus
PipeMap: add polystep_8ch and polystep_8ch_kong pipe presets
Proxy: fix crash in showDataStatic() (prophet08 editor)
Push: fix: when kbd mode is disabled, never map push events to outgoing device (note on, ..)
Replay: fix: duration of note-on events was truncated to 15bit (32767 ticks)
Replay: chg: increase replay thread priorities to realtime
Script: add "Script" node type
Script: add "chord detect" preset
Script: add "gen mts tunings" presets
Script: add: "ev/replace dev ch" preset
StatusBar: chg: increase BPM widget precision (e.g. 129.72 instead of 129.7)
Tracker: fix: untight recording due to use of UI song position instead of replay song position
Tracker: fix: patternmgr: after pattern selection during replay,
pattern nr reverts when page is exited
Tracker: fix: envelopeview: zero values not drawn correctly (invisible)
Tracker: fix: envelopeview: wrong -64..63 range editing center (display y offset)
Tracker: fix: don't process tap note input when node is not being edited
(unless "bg" recording is enabled)
Tracker: add: send parameter reset values when instrument is selected manually
Tracker: add: show current line chord name in status bar
(currently recognizes 102 different chords, e.g. "Sus4" or "Maj7No3_I2")
Tracker: add "collapse" utility function (prepare pattern for "tap" mode)
Tracker: add: automatically redirect AT/PAT/PB/MW/BC/Expr/Sostenuto/Sustain events
to current instrument dev+ch (STConfig.b_node_tracker_delegate_perf_events)
Tracker: add PAT_COLLAPSE_AND_TAP midimapper action
Tracker: add PAT_TAP_TOGGLE mode midimapper action
Tracker: add collapse+start tap menu item+kbd shortcut (lctrl-t)
Tracker: add PAT_RECORD_CONTINUE midimapper action
Tracker: add: set pattern length to cursor (lctrl-lshift-l)
TrigSeq: fix: highlight cursor got stuck after last track trig was deleted
TrigSeq: fix: 'w' in edit mode always set first step
TrigSeq: fix: show RMB context menu only when button was clicked,
not after hold-release (e.g. floatparam edit)
TrigSeq: fix: record device / playstep not working until replay's been started
at least once (after creating new node)
TrigSeq: fix: play repeat even if track has no trigs (external trigger)
TrigSeq: fix: only process record dev+channel events when editor is visible
TrigSeq: fix: store mute+repeat states in node so that they work across pattern changes
TrigSeq: fix: update vertical scrollbar when cursor is moved
TrigSeq: add: tracksetupdialog: MIDI learn track outputs (note + dev + ch)
TrigSeq: add: configurable track name bgcolors
TrigSeq: add: per-track roll/repeat keys (C-5..D#6)
TrigSeq: add: per-track mute keys (C-7..D#8)
TrigSeq: add: handle trig/repeat/mute/globalrepeat/globalmute notes on auto channels
TrigSeq: add: indicate external trig/repeat/mute in UI (flash track nr bg)
TrigSeq: add: save/restore cursor track and scroll offset
UI: chg: enable FPS limiter by default (fixes high CPU/GPU load on certain systems)
20170914:
Prophet12: add: mixed state "PL" mode: only send patch NRPN when patch is current proxy patch
Tracker: fix: note on recording (broken after recent metronome fix)
20170910:
Prophet12: fix: solo layer a/b not working in diff mode
Prophet12: fix: reload does send resend patch
20170909:
Auto: add: pattern copy/paste/new/delete keyboard shortcuts
Buffer: add: pattern copy/paste/new/delete keyboard shortcuts
MIDI: fix: race condition in lshift-NUMPAD enter shortcut handling (start/stop w/o sending MMC)
CtlMorph: chg: send pattern ctl states after clipboard paste
CtlMorph: chg: cyclic morph generator/player now cycles through "used" patterns
CtlMorph: add: lshift-r to send group reset ctl states (same as "Reset" button)
ModMatrix: add: OP_RANGE_IN (send arg4 when arg2 is in range), rename OP_RANGE to OP_RANGE_OUT
All Nodes: add: lctrl-lshift-HOME to go to next used (non-empty) pattern
All Nodes: add: lctrl-lshift-END to go to previous used (non-empty) pattern
PatternMgr: add: pattern manager (lctrl-x d) (for all nodes that support patterns)
Prophet12: fix: subosc levels were not sent correctly during proxy morph/patch change
Prophet12: add: option to ignore proxy events (for sound design during replay) ("PL" checkbox)
Prophet12: add: option to ignore option ignore proxy reset events ("PR" checkbox)
Prophet12: add: "autosend" mixed state: only send patch when it is selected, not when editor is shown
Prophet12: add: show patch name in empty tab area, mousewheel over label to select prev/next patch
Prophet12: add: multi-patch-edit mode (lctrl-q) (e.g. for editing common morph group settings)
Prophet12: add: morph preview mode
Prophet12: add: "Diff" patch change mode (faster patch changes and less sound hickups)
Prophet12: add: lctrl-e to load patch from synth edit buffer (same as "Receive Edit" button)
Prophet12: add: new oscillator randomization dialog ('r')
StepSeq: add: pattern copy/paste/new/delete keyboard shortcuts
Tracker: fix: single-event undo while pattern is in record mode and autoscroll is disabled
Tracker: fix: send MIDI keyjazz note off as actual note off instead of note on with velocity 0
Tracker: fix: overlay redraw issues when switching between e.g. the sysex editor and the tracker page
Tracker: fix: metronome click after "undo and restart recording" (return) was occasionally missing a beat
20170822:
AnalogRytm: add: "AR: Kit Send BD1/SD2/RS3/.." RPNs (send single sound)
MIDI: fix: SysEx input message handling in synth editors and nodes (broken in last release)
20170820:
AnalogRytm: fix: handle partial SysEx replies
AnalogRytm: fix: don't process note on/off events when node is muted
AnalogRytm: fix: only delete mapped input events
(i.e. pass unmapped events on to next node)
AnalogRytm: fix: learn trigs from autoch
(in prev releases, "Output Ch" had to be set to "TRK CH")
AnalogRytm: add: hold-click "Recv" to reset kit/pattern receive state
AnalogRytm: add: show RAW version
AnalogRytm: add: performance / scene / track lock mask (see "IO" tab)
(e.g. for mixing sounds from different kits)
AnalogRytm: add: select+send kit via RPN
AnalogRytm: add: mix kit+send via RPN (lock mask)
AnalogRytm: add: select+send pattern via RPN
AnalogRytm: add: re-enumerate UIDs tool functions (kit/pattern/..)
AnalogRytm: add: update track 1..12 sample nr tool function
AnalogRytm: add: hold-click kit recv to download only bd1,sd2,..,fx,perf,scene (opens menu)
AnalogRytm: add: support dual column names (separated via "~" character)
AnalogRytm: add: snapshot selection RPN
Arranger: fix: creating new nodes sometimes caused clips to move to wrong tracks
Arranger: fix: crash after pressing delete after last track clip has been deleted
Arranger: chg: move "silence" and "snapshot" functions to "Tools" menu
Arranger: add: timeline clipstate (mute/solo+patternnr) recording
Arranger: add: track recording lock buttons and kbd shortcuts
(h=toggle, lctrl-h=clear, lshift-h=invert)
Arranger: add: utility function to copy node clipstate from arranger
Arranger: add: utility function to delete all muted clips in selection
Arranger: add: clip track area to minimum height
Arranger: add: improve cursor key movement (e.g. auto-select clip near edit offset)
Arranger: add: lshift-LMB click in track area to extend clip selection
Arranger: add: after deleting clip, select next (or previous) one
Arranger: add: 'd' to center display to replay offset
Arranger: add: lshift-d to toggle center display lock
Arranger: add: lctrl-SPACE to stop replay, don't rewind to start, and
select clip near replay offset
AudioTool: add: SXT ClipLoop feature
(input=wav with 2 loop repeats, output=wav with 1 seamless loop)
Docs: add: autodevice MIDI implementation table
Docs: add: Arranger keyboard shortcuts table
KeyMap: fix: pattern clone
KeyMap: add: clone/clone sub/alloc sub utility functions and kbd shortcuts
KeyMap: add: option to send fixed RPN(s) (e.g. start/stop/toggle mute/..)
KeyMap: add: holding LALT while changing output device or channel now updates all entries
KeyMap: add: holding LALT while changing send mode now updates all entries
KeyMap: add: holding LALT while changing match mode now updates all entries
KeyMap: add: holding LALT while changing note duration now updates all entries
KeyMap: add: holding LALT while changing velocity curve now updates all entries
KeyMap: add: alternative program change mode (mixed state)
(send timeline recordable "UI Node PrgChg")
KeyMap: add: auto-advance to next entry in "update match note" recording mode
MIDI: fix: always echo-transform input events in node editors
that expect output device events
MIDI: fix: delete transformed SysEx messages only when device input echo is enabled
MIDI: fix: note off velocity was broken in last release
MIDI: add: "Note Buttons" synth profile
MIDI: add: timeline recordable node/pipe mute/solo (e.g. "Com: UI Node Mute")
MIDI: add: timeline recordable program change RPN ("Com: UI Node PrgChg")
MIDI: add: hold-click (or lshift-kp enter) to stop without sending MMC stop
MIDIPipe: fix: free marker when freeing frame, copy marker when copying frame
MIDIMon: add: show SysEx message size
MIDIMon: add: output monitor (MIDI buffer bytes) (lctrl-NUMPAD +)
Monitor: fix: don't clear events when play pattern has changed or node is shown
Monitor: add: punch in/out markers ('p')
Monitor: add: "trim to punch in/out" tool function ('k')
Monitor: add: "fit BPM to sequence" tool function ('b')
Monitor: add: merge-markers tool function
Monitor: add: default merge thresholds are now configurable
Monitor: add: 17 new MMC targets
Monitor: add: option to view transformed events
Monitor: add: support "Com: Run" RPN
Monitor: add: lshift-RCTRL to cycle through modes
MonoPoly: chg: don't reset active note state when node is reset
MorphScene: fix: conversion from polypressure to chpressure resulted in static value
MorphScene: add: update all matching entries when LALT is held down while
changing MIDI device or channel
MorphScene: fix: mousewheel-cycle through _all_ devs, don't stop at first unavailable dev
MorphScene: add: copy/paste scene with lctrl-c/v
MorphScene: add: clear scene with lshift-BACKSPACE
MorphScene: add: lctrl-up/down to move selected entry up/down
PipeMap: fix: crash after moving last pipe
PipeMap: add: lshift-up/down to move pipe
Tracker: fix: auto-deselect block on cursor move after select all,
or when pattern is changed
Tracker: fix: first beat note was not recorded when replay was started from last beat
Tracker: fix: some undo related issues ("transaction still in progress")
Tracker: fix: can now undo multiple track layouts (e.g. after monitor import)
Tracker: fix: block transpose now leaves "all track notes off" (===) and
"all channel notes off" (###) events intact
Tracker: fix: param events were not sent when param-specific device was set
and instrument device was invalid
Tracker: fix: "cursor sometimes temporarily stuck at last row after switching to node" issue
Tracker: add: Monitor pattern clipboard importer (auto-creates tracks/instruments/params)
Tracker: add: pattern length can now (optionally) be set in beats/bars (lctrl-l)
Tracker: add: support new "Com: Offset Queued" and "Com: Length Queued" RPNs
TrigSeq: add: support "Com: Run" RPN
20170618
AudioTool: add "SXT" wav slicer and autolooper (input=wav, output=wavs + Reason NNXT patch)
AudioTool: add "SDS" sample uploader and AnalogRytm samplechain/varichain/kit generator+uploader
Midi: fix bug that prevented polyphonic pressure events from being recorded from external MIDI input
MidiMon: fix bug that could cause discarded events to crash the app
MidiMon: add option to show events after morph-scene transformation
MidiMon: don't clear events when play pattern has changed
MorphScene: fix: conversion from poly to channel pressure resulted in static value
Push: add "kbd" mode
(play notes with push pads, configurable mode/key/octave/row_add/shiftx settings)
Push: add PUSH_MODE and PUSH_TOGGLE_KBD global midimapcontext targets
20170607
PipeMap: make node / pipe visible (via scroll offset) after they've been created
Prophet12: add multi-edit feature
(hold down LALT to multi-edit osc/env/lfo/delay 1..4 params)
Prophet12: patchmorpher: extended param range flags are now ORd (instead of interpolated)
Tracker: "up" key now works as expected in "add column dialog" when "Filter" textfield is focused
Tracker: polystep RPNs are now parsed in both "record" and "play" frames
(e.g. when they are generated by a modmatrix node that is controlled by external MIDI input)
Tracker: add "Trk: Slide Base Note Off" RPN
Tracker: pattern did not reset properly in ARP mode when CTL_SEEK was used simultaneously
20170605
ModMatrix: script editor dialog is now resizable
Prophet12: fix vertical size related layout issue
Tracker: fix raster recording mode (was completely broken in previous releases)
Tracker: fix MIDI note recording issue (after two pattern loops)
Tracker: lctrl-lshift-a to quantize block (no block = all steps)
Tracker: lctrl-a now selects none if there already is a selection
Tracker: rename "clear block" to "free envelope(s)" (lshift-f3)
Tracker: '\' ('<' on german kbds) now clears block when there is a selection
TrigSeq: implement "MultiTrack Polystep" output mode
TrigSeq: implement "Mute Temp" output mode
TrigSeq: implement "Pattern Change + Offset" output mode
TrigSeq: output mode can now be overridden per track
TrigSeq: output device+channel can now be overridden per track
TrigSeq: add per-track microtime shift
TrigSeq: lshift-x/c/v to cut/copy/paste track to/from track clipboard
TrigSeq: lshift-w to force step play (current track only) (even when muted)
UI: fix combobox item tooltip positions
20170528
Arranger: start current loop when reaching the end of the previous loop (after loop has been edited)
Arranger: implement snap-to-grid (can now be turned off)
Arranger: 'l' now aligns selected clips to grid
CtlMorph: update "internal" synth profile
(the previous release accidentally contained an old version w/o the "Morph Pat" RPN entries)
CtlMorph: morph ranges are now freely configurable (offset / range / position RPNs + UI widgets)
CtlMorph: add cyclic morph generator dialog (offset / range) (replaces hardcoded 1a..1d, 1a..2d, .. ranges)
CtlMorph: fix controller table layout issue
Docs: add Proxy node documentation
Docs: add TrigSeq keyboard shortcuts
Docs: add several missing shortcuts
MIDIPipe: fix MIDI cache clear bug (128 instead of 16384 (N)RPN states were cleared)
Prophet12: improved patch morpher
(fixed some bugs regarding modmatrix and character section interpolation)
Prophet12: "Transform" / RT morph configuration is now saved in the project file
Prophet12: lctrl-c/v/n to copy/paste/init patch
Prophet12: HOME/END to select next/previous patch
Prophet12: LMB-click on "Patch Nr" label-button to select next bank,
hold-click to select first project-specific patch (P17 P1)
Proxy: morph ranges are now freely configurable (offset / range / position RPNs + UI widgets)
Tracker: add replace mode to envelope view (when checked, only existing events will be modified)
20170523
- first public release