Support on Patreon | GitHub | Discord | README | Experimental
π Navigation: Paketti README | Changeslog (You are here) | Experimental
Every changelog entry below represents hours of development time. Paketti is free, but building it isn't.
Join Patreon to keep Paketti growing β | Other options
What supporters funded this month:
number_of_lines error on PatternTrackMain Menu:OptionsPakettiCompat.lua β all API-version compatibility flows through one file (41 files refactored)Fixed a Lua forward-reference error in PakettiLaunchApp.lua where filterProcessPoll() called filterLoadResult() before it was declared, causing variable 'filterLoadResult' is not declared at runtime. Reordered the two functions so filterLoadResult is defined before filterProcessPoll, which is the standard Lua 5.1 requirement for local functions.
Fixed a crash in handle_sample_recording() (PakettiRecorder.lua) where pressing the "Start/Stop Sample Recording and Pakettify" keybinding a second time (to stop recording) would error with "attempt to index local 'sample' (a nil value)" if renoise.song().selected_sample was nil after the recording stopped. Added a nil guard so the function returns safely with a status message instead of crashing. Also removed a dead local variable from the else block. Affects keybinding Global:Paketti:Start/Stop Sample Recording and Pakettify and Global:Paketti:TouchOSC Sample Recorder and Record.
Drop a drum loop on the instrument. Click any of the eight buttons under Wipe & Slice β Phrase (Continuous) (2 / 4 / 8 / 16 / 32 / 64 / 128 / 256). Paketti does three things in one click:
Each phrase is mapped to a consecutive note starting at C#0 (phrase 1 = C#0, phrase 2 = D-0, phrase 3 = D#0, β¦) and loops continuously until you release the note. So with a 32-slice cut: hit C#0 β full loop cycles forever; hit D-0 β loop starts from slice 2 and cycles; hit G#0 β loop starts from slice 8 and cycles. Pick up the groove from any beat without re-slicing or touching the original audio. Mapped to keybindings (Global:Paketti:Wipe&Slice&Phrase (064) etc.) and MIDI mappings too, so a controller pad can do it.
The "Continuous" wrapper was building one phrase containing all slices, then looping it. That's not what "Continuous" was supposed to mean.
Correct semantics, confirmed: for BOOM TCHIK CLAP TCHIK, triggering phrase 1 plays BOOM TCHIK CLAP TCHIK; phrase 2 plays TCHIK CLAP TCHIK; phrase 3 plays CLAP TCHIK; phrase 4 plays TCHIK. One looping phrase per starting slice, mapped to consecutive notes (C#0, D-0, D#0, β¦). This is exactly what pakettiSlicesToPhrasesPerSlice already does.
Fix: WipeSliceAndPhraseContinuous(N) now calls pakettiSlicesToPhrasesPerSlice(false, true) with a new in_place parameter on that function (mirroring the one added to pakettiSlicesToPhrase earlier today). The in_place mode wipes existing phrase mappings + phrases on the current instrument and rebuilds them β no instrument duplicate. The dropped looping-on-single-phrase logic is gone.
PakettiSlice.lua β WipeSliceAndPhraseContinuous()PakettiOldschoolSlicePitch.lua β pakettiSlicesToPhrasesPerSlice() gains in_place parameterThe "Continuous" wrapper shipped earlier only built the phrase; it didn't enable looping, so triggering the phrase played the slice sequence once and stopped. "Continuous" was just a label. Fix: after the phrase is built, the wrapper now sets phrase.looping = true with loop_start = 1 and loop_end = phrase.number_of_lines. Triggering the phrase now cycles the slice sequence indefinitely until note-off, matching drum-loop intent.
PakettiSlice.lua β WipeSliceAndPhraseContinuous()Two new button banks in the Slice Tools dialog, mirroring the existing Equal Slicing (Wipe & Slice) 2/4/8/16/32/64/128/256 set:
lines_per_slice = pattern_lines / slice_count.Implementation reuses existing primitives: slicerough(N) for the wipe&slice step; pakettiSlicesToPhrase(false, false, in_place=true) (new in-place parameter) for the phrase build; pakettiSlicesToPatternEvenly(true) for the pattern write. Two ~3-line wrappers (WipeSliceAndPhraseContinuous, WipeSliceAndPatternEqual) in PakettiSlice.lua.
Surfaced as:
Paketti Slice Tools, named "Wipe & Slice β Phrase (Continuous)" and "Wipe & Slice β Pattern", each with eight slice-count buttons.Global:Paketti:Wipe&Slice&Phrase (002) through (256) and Global:Paketti:Wipe&Slice&Pattern (002) through (256) β 16 new bindings.Paketti:Wipe&Slice&Phrase (002) x[Toggle] through (256) and Paketti:Wipe&Slice&Pattern (002) x[Toggle] through (256) β 16 new mappings.The new in_place parameter on pakettiSlicesToPhrase(add_trigger_note, use_detected_bpm, in_place) defaults to false so existing callers (the dialog "With Trigger" / "Phrase Only" buttons, keybindings, MIDI mappings) keep their non-destructive copy-instrument behavior unchanged.
PakettiSlice.lua β new WipeSliceAndPhraseContinuous, WipeSliceAndPatternEqual, 16 new keybindingsPakettiOldschoolSlicePitch.lua β pakettiSlicesToPhrase gains in_place parameterPakettiMidi.lua β 16 new MIDI mappingsPakettiSliceToolsDialog.lua β two new collapsible sections in column 1Paketti0G01_Loader.lua β new pakettiSliceToolsShowWipeSlicePhrase and pakettiSliceToolsShowWipeSlicePattern preferencesAfter the three-column split, button rows within sections had different total widths because the original constants (sw=45, bw=160, fw=325) didn't divide cleanly. The 2-button row (320px) was 5px narrower than the full-row button (325px); the 4-button row (180px) left 140px of empty padding inside its 320px-wide section. Result: in the same panel, "Manual Slicer (Longest) | Manual Slicer (Shortest)" appeared narrower than the "Slice Step Sequencerβ¦" button above it, and the numeric slice-count buttons floated in oversized empty space.
Fix: reset the width constants so every row sums to the same fw=320:
sw = 80 (quarter-row, was 45) β 4 * 80 = 320tw = 107 (third-row, new) β 3 * 107 = 321bw = 160 (half-row, unchanged) β 2 * 160 = 320fw = 320 (full-row, was 325) β single buttoncw = 336 (column lock, was 340) β fits fw + section group margin + slackZero-Crossing Slicing's second row (32 / 64 / 128) now uses tw per button so it spans the same width as the 4-button row above it instead of leaving a quarter of the panel empty.
PakettiSliceToolsDialog.luaBoth pakettiSlicesToPhrase and pakettiSlicesToPhrasesPerSlice produced phrases where each successive slice played progressively higher in pitch. Discord report from tdel00 confirmed the workaround: toggling off the phrase's sample column (## button, phrase.instrument_column_visible) eliminated the rise. That pinpointed the root cause.
Root cause: previous fixes wrote instrument_value = slice_idx AND set note_value to the keyzone mapping's base_note. With the instrument (sample) column visible, Renoise plays the slice sample directly and compares note_value to the sample's intrinsic base_note (uniformly C-4 across all slices in a sliced instrument β they share one buffer). The keyzone mapping's base_note is a different field (the natural-pitch reference for the keyzone slot), often ascending (C-4, C#4, D-4, β¦). Writing those ascending values as note_value caused +1, +2, +3 semitone shifts per slice β rising pitch.
Fix (Option A β matches the empirically-working pakettiSlicesToPattern β Pattern-to-Phrase path):
phrase.instrument_column_visible = false β playback routes purely through the instrument's keyzone.instrument_value per note.note_value = mapping.note_range[1] β the keyzone trigger note (what pakettiSlicesToPattern uses at line 977). This is the note that, played through the keyzone, selects the corresponding slice at natural pitch.Reverts the base_note-based logic from commit 56e7b2e (2026-05-15) β that fix was reading the wrong field. The ascending-pitch bug (e091cfa) and the rogue C-4 bug (5772872) both stay fixed because the keyzone trigger notes are ascending and per-slice, not a single shared C-4.
PakettiOldschoolSlicePitch.lua β pakettiSlicesToPhrase(), pakettiSlicesToPhrasesPerSlice()The "Slices to Pattern" and "Slices to Phrase" sections were missing four bound-but-unsurfaced features. Added:
Slices to Pattern β BPM Detect (1st Row) and BPM Detect (Cur Row) β invokes pakettiSlicesToPattern with use_detected_bpm=true
Slices to Phrase β BPM Detect (Trigger) and BPM Detect (Phrase Only) β invokes pakettiSlicesToPhrase with use_detected_bpm=true
Slices to Phrase β Per Starting Slice β invokes pakettiSlicesToPhrasesPerSlice() (the multi-phrase per-slice generator that creates one phrase per slice with the correct per-slice base_note)
Slices to Phrase β Per Starting Slice (BPM Detect) β same with use_detected_bpm=true
File: PakettiSliceToolsDialog.lua β PakettiSliceToolsDialog()
The Paketti Slice Tools dialog was previously a single tall column of 11 collapsible sections, forcing vertical scrolling on most displays. It is now laid out in three side-by-side columns, source order preserved:
Each section's collapsed/expanded state is still individually preserved via the existing pakettiSliceToolsShow* preferences β collapse a section in column 2 and it stays collapsed across reopens, exactly as before.
PakettiSliceToolsDialog.lua β PakettiSliceToolsDialog()slicerough() (the function behind every MIDI-mapped Wipe&Slice 004 / 008 / 016 / 032 / 064 / 128 / 256) stopped inserting a slice marker at frame 1 in February. The first slice region therefore ran from the implicit sample start to the first computed marker, instead of from an explicit frame-1 marker β a regression that broke the round-trip with WipeSliceAndWrite and made the first slice's keyzone mapping inconsistent.
Root cause: commit f60f8e5 (Feb 23 2026) removed insert_slice_marker(1) to dodge a duplicate-position-1 crash that only happens when tw < 1 (sample has fewer frames than changer slices). The crash guard was correct; throwing away the frame-1 marker for the 99.9% common path was not.
Fix: restore insert_slice_marker(1) and seed last_inserted = 1. The existing pos > last_inserted guard still skips the duplicate when tw < 1.
PakettiSamples.lua β slicerough()Disabling a context (e.g. Mixer, Pattern Editor, Sample Editor) in Main Menu:Options:Paketti Menu Configuration now actually skips registering those menu entries at boot, including the ~2,390 entries that call renoise.tool():add_menu_entry{...} directly instead of going through the PakettiAddMenuEntry helper. Previously only the ~860 helper-routed entries honored the per-context preference; the remaining 2,390 direct calls were always queued, sorted, and registered regardless of the toggle β so disabling a category never made reloads faster.
Fix: the per-context decision is now a shared global PakettiShouldRegisterMenuEntry(name) called by both the helper and the proxy interceptor in main.lua. Entries with a disabled context return early before queueing β no queue cost, no sort cost, no add_menu_entry cost at flush.
Paketti0G01_Loader.lua β new PakettiShouldRegisterMenuEntry, PakettiMenuContextPrefKey promoted to globalmain.lua β proxy_add_menu_entry checks PakettiShouldRegisterMenuEntry before queueingFixed a regression where all slice notes in phrases came out as the same note (e.g. C#3) regardless of which slice was playing, causing progressive pitch drift. The previous fix had swung too far: it replaced the ascending-note bug with a single shared base note for every slice. But in a Renoise sliced instrument, each slice sample has its own base_note in the keyzone mapping (incrementing by one semitone per slice). When instrument_value selects a specific slice sample, the phrase note must match that slice's base_note for zero pitch offset β otherwise earlier/later slices play sharp or flat relative to their natural pitch.
Fix: both pakettiSlicesToPhrase() and pakettiSlicesToPhrasesPerSlice() now read each slice's individual base_note from instrument.sample_mappings[1][i+1] (where [1] is the original sample and [i+1] is slice i). Each slice note in the phrase gets its own correct pitch value instead of a single shared one.
PakettiOldschoolSlicePitch.lua β pakettiSlicesToPhrasesPerSlice() and pakettiSlicesToPhrase()Fixed a bug where each triggered slice in a phrase was gradually increasing in pitch. The root cause: when writing slice notes into phrases, ascending note values were used (C-4, C#4, D-4, D#4, ...) alongside the instrument_value column that selects each slice. In a phrase, instrument_value already handles which slice to play β the note value only controls pitch. Using ascending notes caused each successive slice to play one semitone higher than the last. Fix: all slices now use the same base note (the first slice's mapping base note), and only instrument_value varies to select the correct slice.
Also fixed pakettiSlicesToPhrase() (single phrase variant) which had the same ascending note bug plus a second bug where instrument_value was set to the song-level instrument index instead of the sample index within the instrument. Both paths (equal-spacing and frame-accurate) in both functions are patched.
PakettiOldschoolSlicePitch.lua β pakettiSlicesToPhrasesPerSlice() and pakettiSlicesToPhrase()Fixed a bug where every phrase generated by "Slices to Phrases Per Starting Slice" had a rogue C-4 note (with no instrument number) stuck in note column 1 of the first row. Renoise's insert_phrase_at() initializes new phrases with a default C-4 on line 1. The collision-avoidance loop that finds empty note columns would see this default C-4 as occupied, pushing the real first slice note to column 2 and leaving the rogue C-4 behind. Fix: phrase:clear() is now called immediately after creating each phrase to wipe default content before writing slice data. Both pakettiSlicesToPhrase() and pakettiSlicesToPhrasesPerSlice() in PakettiOldschoolSlicePitch.lua are patched.
Each Chebyshev polynomial T_k(x) now gets an optional sign(y) * |y|^exp[k] shaping pass applied BEFORE its coefficient multiplies and sums into the LUT. The shaping is a 12-element exponent table (one per harmonic H2..H13), default 1.0 across the board (identity β behaves exactly like before, hits the fast Clenshaw path). Values < 1.0 expand each harmonic's contribution (steepens near zero, softens peaks); values > 1.0 compress it (flattens near zero, sharpens peaks). Each polynomial reshapes independently, giving a different timbral palette than linear gain mixing alone.
Per-sample cost stays at zero β the shaping bakes into the existing 4096-entry LUT at parameter-change time (cold path). LUT build is roughly 33K extra pow() calls per parameter change with all harmonics active, ~5β30ms in Lua 5.1 β imperceptible during slider drag. When all 12 exponents are 1.0, the code falls back to the original Clenshaw recurrence so existing presets behave identically.
PakettiChebyshevWaveshaper.lua β new state array harmonic_exponents, new make_series_per_polynomial() evaluator alongside make_series_clenshaw(), branch selection at LUT build, "H Shape" UI row of 12 valuefields under the parameter canvas, "Reset Shapes" button, dynamic ViewBuilder IDs (per Paketti house rule).Taktik confirmed (2026-05-13) that renoise.song():trigger_instrument_note_on(1, 1, 48, 1.0) works fine during playback. My earlier "this API is silently broken during playback" conclusion was wrong β it was based on a single test that called the function with the note wrapped in a table ({48}) instead of as a plain integer (48). The integer form works. I never tested the integer form before parking the feature. Mea culpa.
What's restored:
Main Menu:Options:Trigger Sample on Pattern Input During Record Toggle checkmarkPattern Editor:Paketti:Trigger Sample on Pattern Input During Record Toggle checkmarkMain Menu:Tools:Paketti:Debug:Trigger Sample Manual TestWhat changed in the implementation:
trigger_instrument_note_on(idx, track, note, vel) β note as a plain integer, not a table.pcall error-swallowing removed so real errors surface in the Scripting Terminal.toi_debug = true) for one round of testing β flip to false in the file once you've confirmed it works.The OSC code is gone. The Parked Features section in manual/README.md has been removed.
PakettiTriggerOnInput.luaPakettiMenuConfig.lua (menu entry uncommented)PakettiImpulseTracker.lua (IT Bootstrap auto-enable restored)manual/README.md (Parked Features section removed)Two new variants of the existing "Fill Effect Column with 0G01+0Xxx" commands. The existing ones overwrite the whole pattern. The "(From Cursor)" variants behave smarter and toggle: if the cursor is on row 1 they do exactly the same as the original (0G01 on row 1, 0U00/0D00 on rows 2..end). If the cursor is on any other row N, they fill only rows N..end with the glide effect and leave rows 1..N-1 untouched. Same shortcut twice = wipe: when the target range is already filled with the exact effect being requested, running the command again clears that same range instead. Third press refills. So you can use the same keybinding/MIDI button to create, wipe, and recreate without touching anything else.
Pattern Editor:Paketti:Effect Columns:Fill Effect Column with 0G01+0D00 (From Cursor)Pattern Editor:Paketti:Effect Columns:Fill Effect Column with 0G01+0U00 (From Cursor)Pattern Editor:Paketti:Fill Effect Column with 0G01+0D00 (From Cursor)Pattern Editor:Paketti:Fill Effect Column with 0G01+0U00 (From Cursor)Paketti:Fill Effect Column with 0G01+0D00 (From Cursor) [Trigger]Paketti:Fill Effect Column with 0G01+0U00 (From Cursor) [Trigger]One-shot command that brings Renoise into IT-style working mode in a single keypress. Loads the bundled Dynamic Views layout from KeyBindings/Paketti Dynamic Views F2 F3 F4 F11.txt into the Dynamic Views preferences (note: you still have to assign Dynamic View 01/02/03/04 to F2/F3/F4/F11 yourself in Renoise keybindings for them to fire β Paketti just provides the layout), and force-enables three IT-mode toggles regardless of their current state: SBx Pattern Loop Follow, Trigger Sample on Pattern Input During Record, and Audition Current Line on Pattern Row Change. Safe to run again any time you want to reset back to IT-mode defaults. load_dynamic_views_from_txt() now accepts an optional path argument; passing nil keeps the existing file-prompt behaviour.
Global:Paketti:Impulse Tracker BootstrapPaketti:Impulse Tracker BootstrapMain Menu:Tools:Paketti:Impulse Tracker BootstrapPattern Editor:Paketti:Impulse Tracker BootstrapFixed a crash when toggling "Audition Current Line on Pattern Row Change" on or off. The code was calling instrument:trigger_note_off() which does not exist on the Instrument object. Replaced both occurrences (in the timer callback and in the toggle-off path) with the correct Song-level API: song:trigger_instrument_note_off(instrument_index, track_index, note_value).
PakettiPatternEditor.lua (lines ~8453, ~8504)After exhausting every available path, this feature is parked. The Renoise 3.5 / API 6.2 Lua and OSC interfaces do not expose any way to preview a note during playback without also recording it into the pattern. Specifically:
trigger_pattern_line() errors out when playback is running (documented).trigger_instrument_note_on() is silent during playback (verified empirically via manual test that bypassed our notifier path β same instrument, same track, same note, only difference was transport.playing β stopped played sound, playing produced nothing). This restriction is not documented anywhere./renoise/trigger/note_on via the built-in OSC server is implemented internally as song:trigger_instrument_note_on(...) (osc.md line 248), so it inherits #2 β AND when edit mode is on, OSC trigger inputs get recorded into the pattern like an external MIDI controller, which combined with add_line_edited_notifier creates immediate runaway feedback that fills the pattern and freezes Renoise.The 7 built-in OSC commands do not include any preview-without-recording endpoint.
The toggle, keybinding, MIDI mapping, and menu entries remain in place (so existing user setups don't break) but they now show a status-bar message explaining the limitation instead of doing anything. The persisted preference is forced to false on every boot so legacy true state from earlier broken attempts can't auto-re-enable.
Workaround for users: keep Follow Player ON. Renoise auditions natively when the edit cursor and the playback cursor coincide.
PakettiTriggerOnInput.luaadd_line_edited_notifier + duplicate-menu crashTwo real bugs were keeping the feature silent and causing a boot crash:
pattern:add_line_notifier() (generic β fires on any pattern content change, including script-driven). Switched to pattern:add_line_edited_notifier(), which is the dedicated API documented as: "fires only when the user added, changed or deleted a line with the computer or MIDI keyboard." This is exactly the event we want.pcall was swallowing errors. Any failure inside the callback or note trigger was hidden, so when something went wrong you just got silence with no clue. Removed the error-swallowing pcalls; real errors now surface in the Scripting Terminal.Main Menu:Options entry crashed boot β the same menu name was registered both in PakettiTriggerOnInput.lua and PakettiMenuConfig.lua. Kept the one in PakettiMenuConfig.lua (central menu config owns Options-menu entries).Also added diagnostic print() lines and show_status() calls so it's possible to confirm at runtime that the notifier is attaching and firing β flip toi_debug = false in the file once it's verified working.
PakettiTriggerOnInput.luaFixed the core bug: trigger_pattern_line() only works when playback is stopped (Renoise API limitation). Replaced with trigger_instrument_note_on() which works in all states β playing, stopped, follow on/off. The feature now correctly reads note values and instrument indices from the edited line, respects volume column for velocity, groups notes by instrument for multi-instrument lines, and sends proper trigger_instrument_note_off() to stop previously previewed notes before triggering new ones.
PakettiTriggerOnInput.luaNew toggle feature that auditions notes as you type them into the pattern editor during record mode. When enabled, every note entered triggers trigger_instrument_note_on() so you hear what you typed β regardless of whether playback is running, stopped, or what the follow mode is. This fills the gap where Renoise is silent during note entry in certain states (playing + follow OFF).
Uses event-driven add_line_notifier (not timer polling), following the proven SBx Pattern Loop Follow lifecycle. Only fires when edit mode is ON and an actual note (value < 120) is present on the edited line.
Main Menu:Options:Trigger Sample on Pattern Input During Record Toggle (checkmark toggle)Pattern Editor:Paketti:Trigger Sample on Pattern Input During Record Toggle (checkmark toggle)Global:Paketti:Trigger Sample on Pattern Input During Record TogglePaketti:Trigger Sample on Pattern Input During Record x[Toggle]pakettiTriggerOnInputEnabled (persisted, restored on new document)PakettiTriggerOnInput.luaOptionβControl instead of OptionβAlt)A previous MacβLinux/Windows keybinding conversion silently produced malformed entries: any binding that used both Option and Control on Mac became Control + Control + X on LWin (duplicate modifier). Renoise can't parse duplicate modifiers, so on load it dropped both Controls and re-saved the binding as a fragmentary Shift + Alt + Control + with no actual key β making the feature un-triggerable. The Mac convention Option + Control + 1 (Toggle Track Slot Mute 01) is correctly Alt + Control + 1 on LWin, but the shipped file had it as Control + Control + 1 (junk).
26 duplicate-modifier entries fixed in KeyBindings/2025_07_10_PakettiKeyBindings_Linux_Windows.xml:
OptionβLWin Alt, Mac CommandβLWin Control). Examples: Toggle Track Slot Mute 01/02 β Alt + Control + 1/2, TouchOSC Sample Editor β Alt + Control + F3, Quick Sample to New Track (Sync Off) β Alt + Control + Q, Stem Loader β Alt + Control + O, Master Track Mono/Pan Cycle β Shift + Alt + Control + Q, Pick a Random Theme (All) β Shift + Alt + Control + Comma, plus 10 more.Option + Command + Control + X) which can't fit on LWin (only two non-Shift modifiers exist). Examples: Rename Tracks By Played Samples β Alt + Control + R; Phrase Editor :: Nudge and Move Selection Up/Down β Alt + Control + Up/Down; Pattern Name Loop - Next β Shift + Alt + Right; Modify PitchStep Steps (Hard Detune) β Shift + Alt + P; Load Device (AudioUnit) Uhbik-D β Shift + Alt + Control + V. Four Pattern Editor cases (ChordsPlus Arpeggio Up, Replicate Above Into Selection Only, Pattern Editor Nudge and Move Selection Up/Down) left unbound because the arrow-key space in that scope is fully saturated by Impulse Tracker emulation and existing Paketti bindings.Sequence Selection (Next)/(Previous), Quick Sample to New Track (Sync On + 0G01), Paketti PitchBend Drumkit Sample Loader (Random), and Transpose Octave Down Note Column (Selection/Note Column) lost their <Key> so the remapped bindings claim their rightful position.Re-import the keybinding preset (Edit β Preferences β Keys β Load) to pick up the new defaults. The Mac file (2025_07_10_PakettiKeyBindings.xml) is unchanged.
The shipped KeyBindings/2025_07_10_PakettiKeyBindings_Linux_Windows.xml had 48 keyboard shortcut collisions (the macOS file has zero β Cmd vs Ctrl gives Mac users two separate spaces; Linux/Windows users had to fold everything onto Ctrl and bindings collided). 15 of the worst collisions (same key combination bound to two different actions in the same scope) are now resolved by stripping the <Key> element from the loser side (the keybinding entry remains so menus and Lua references still work β only the default keyboard shortcut assignment is removed). Re-import the keybinding preset to pick up the new defaults.
Impulse Tracker emulation wins (11 keyboard shortcuts):
Ctrl+F7 β IT Capture Marker Position keeps it (Cycle Paketti Dynamic View 07 unbound)Ctrl+N β IT New Song Dialog keeps it (Load New Instrument with Current Slice Markers unbound)Ctrl+O β IT Pattern to Sample keeps it (Add Gainer A unbound)Pattern Editor Ctrl+Up β IT Home*2 keeps it (Cycle Chord Inversion Up unbound)Pattern Editor Ctrl+Down β IT End*2 keeps it (Replicate Selected Track Above unbound)Pattern Editor Ctrl+Left / Ctrl+Right β IT Alt-Left/Right keep them (Delay Column Β±1 unbound)Mixer Ctrl+Up / Ctrl+Down / Ctrl+Left / Ctrl+Right β IT navigation keeps them (Parama Param previous/next/decrease/increase unbound)Renoise natives win (4 keyboard shortcuts):
Ctrl+B β Show/Hide Disk Browser keeps it (Show BPM Calculation Dialog unbound)Ctrl+K β Show/Focus Track Editors keeps it (PlayerPro OpenMPT Keyboard Layer unbound)Ctrl+S β Save Song keeps it (Sample Effect Generator unbound)Mixer Alt+Ctrl+Left β Move Track Left keeps it (Move DSPs to Previous Track unbound)33 Paketti-vs-Paketti keyboard shortcut collisions remain (Ctrl+C, Ctrl+D, Ctrl+E, Ctrl+P, Ctrl+U, Ctrl+V, Ctrl+Z, Ctrl+Shift+A/P/Q/S/X, etc.) and need per-chord decisions β list saved to /tmp/paketti_lwin_deferred.md for follow-up.
Added an AU loader for the Esa Ruoho ParaEQ plugin (aufx:peQA:EsaR). When loaded β either via the new keybinding or any pathway that goes through loadvst() β the plugin opens its external editor instead of the Renoise parameter editor, matching the existing FabFilter Pro-Q 3 behaviour. Detection works either by VST/AU identifier prefix or by "esa ruoho" + "paraeq" in the device name (case-insensitive), so manually-loaded instances are handled too.
Global:Track Devices:Load Esa Ruoho ParaEQ (AU)Restored all 6 SampleStepperModulationDevice entries in the four v31-compatible instrument presets (12st_Pitchbend.xrni, 12st_Pitchbend_Drumkit_C0.xrni, 12st_Pitchbend_Drumkit_C0_mutegroup.xrni, 12st_WT.xrni). The Stepper's <Nodes> format includes <ValueQuantum> and <Polarity> elements from modulation set v5 (Renoise 3.2+), which Renoise 3.1 cannot parse β causing all Stepper point values to reset to 0 (VolumeΓ0 = silence, CutoffΓ0 = filter closed). Fix: rebuilt from v33/v34 backups, stripped <ValueQuantum> and <Polarity> from inside <Nodes>, and set all Stepper point values to 1.0 (neutral for multiply operators, maximum range for additive operators). The Stepper devices are now present and ready for the user to program on Renoise 3.1. Targets: Panning (+), Drive (+), Resonance (+), Pitch (+), Cutoff (Γ), Volume (Γ).
Renamed the two older MIDI mappings in PakettiMidi.lua (MidiRecordAndFollowToggle) to make it clear they also start/stop playback β unlike the newer Record+Follow Toggle mappings which only toggle edit mode and follow player.
Paketti:Record and Follow x[Toggle] β Paketti:Record and Follow and Start/Stop Playback x[Toggle]Paketti:Record and Follow On/Off x[Knob] β Paketti:Record and Follow and Start/Stop Playback On/Off x[Knob]Added four MIDI mappings for the Record+Follow Toggle function, allowing it to be mapped to multiple MIDI controllers simultaneously. These call the same RecordFollowToggle() used by the existing keybindings (2nd/3rd/4th), which handles pattern editor, phrase editor, and various edit/follow/play state toggling.
Paketti:Record+Follow Toggle (1st) x[Toggle]Paketti:Record+Follow Toggle (2nd) x[Toggle]Paketti:Record+Follow Toggle (3rd) x[Toggle]Paketti:Record+Follow Toggle (4th) x[Toggle]The default Preset++ device chain (hipass_lopass_dcoffset.xrnt) uses DigitalFilterDevice, a Renoise 3.5-only (doc_version 22) DSP type that does not exist before API 6.1. On Renoise 3.1 this caused the error "was saved with an incompatible, more recent version of Renoise" when creating a new track with channelstrip. Fixed by:
PAKETTI_V2_ONLY_DEVICE_CHAINS in PakettiCompat.luapakettiGetXRNTDeviceChainFiles()) on API < 6.1pakettiPresetPlusPlusDeviceChain to "" (none) on API < 6.1 instead of the incompatible chainPakettiCreateNewTrackWithChannelstrip() to catch persisted preferences pointing to blacklisted chainsPakettiNoteReleaseGate.lua used tool_will_unload_observable and tool_finished_loading_observable unconditionally at load time. Both observables were introduced in API 6.1 (Renoise 3.3) and do not exist in Renoise 3.1, causing a fatal unknown property or function 'tool_will_unload_observable' error that prevented the entire tool from loading. Both calls are now guarded with if PAKETTI_API >= 6.1, matching the established pattern in PakettiExperimental_BlockLoopFollow.lua. On older Renoise versions, cleanup happens via app_new_document_observable (already registered) and natural tool unload.
The GitHub Actions CI pipeline (package-api5 job) now automatically replaces v33/v34 XRNI presets with their v31-compatible versions before packaging the Renoise 3.1 build. Previously, the Paketti 3.1 .xrnx release contained v33/v34 instrument files that Renoise 3.1 cannot load β the runtime pakettiGetVersionedPresetPath() routing worked for code paths that used it, but any direct Presets/filename reference would still fail. Now the build copies Presets/v31/*.xrni over the originals in Presets/ before zipping, providing belt-and-suspenders coverage. Both the API 6 and API 5 builds also now exclude Presets/v31/ and Presets/backup_v33_v34/ from their zip archives to reduce package size.
Added version-aware XRNI preset loading so Paketti works correctly on Renoise 3.1 (API 5). The XRNI instrument presets shipped in Presets/ are doc_version 33/34 (Renoise 3.3/3.5 format) which Renoise 3.1 cannot load. This caused silent failures when Paketti tried to load scaffolding instruments for features like pitchbend instruments, drumkits, RingMod, wavetable, SF2 import, stem slicing, and MuteTrig.
What changed:
Presets/backup_v33_v34/Presets/v31/ containing stripped-down doc_version=31 copies of all 13 active preset XRNI files (removed PitchbendMacro, ModulationWheelMacro, ChannelPressureMacro, FilterBankVersion, MonophonicGlide, BeatSyncMode, AutoFade, SingleSliceTriggerEnabled, MtsEspTuning, SelectedPresetLibrary)pakettiGetVersionedPresetPath(filename) helper in PakettiCompat.lua β on API < 6 (Renoise 3.0/3.1) it resolves to Presets/v31/filename, on API 6+ it uses the normal Presets/filenamePaketti0G01_Loader.lua, PakettiRequests.lua, PakettiSamples.lua, PakettiSF2Loader.lua, PakettiStemSlicer.lua, PakettiPCMWriter.lua, PakettiExperimental_Verify.luav31/ subdirectory is not scanned), and selected presets are resolved through the versioned path helper automaticallyFiles affected: 12st_Pitchbend.xrni, 12st_Pitchbend_Drumkit_C0.xrni, 12st_Pitchbend_Drumkit_C0_mutegroup.xrni, 12st_WT.xrni, RingMod.xrni, RingModLegacy.xrni, empty.xrni, and all 6 *_Legacy_with_VolAmp_VolFreq.xrni variants.
Added PakettiMCP/tools/paketti.lua with four MCP verbs that wrap existing Paketti functions so they can be invoked from any external process via the MCP server on localhost:19714:
paketti_pattern_preset_dialog β toggles PakettiPatternPresetDialog()paketti_groovebox β toggles GrooveboxShowClose() (Paketti Groovebox 8120)paketti_pattern_shrink β calls resize_pattern(selected_pattern, lines * 0.5, 0) (dBlue Pattern Shrink)paketti_pattern_expand β calls resize_pattern(selected_pattern, lines * 2, 0) (dBlue Pattern Expand)These are MCP tools only β no new menu entries, no new keybindings, no new MIDI mappings. They expose the existing Pattern Editor keybindings (Pattern Editor:Paketti:Pattern Shrink (dBlue) / Pattern Expand (dBlue)), the global Groovebox keybinding (Global:Paketti:Paketti Groovebox 8120), and the Pattern Preset Dialog function so they can be triggered from pmcp, the Apple repo's hey-sal voice router, AppleScript / Shortcuts / Loupedeck, or any HTTP client. Demo: pmcp paketti_groovebox from a shell or "open the groovebox" via hey-sal.
#filenames Γ 3 slicesCreate New Rhythmic Slice DrumChain with Current Slices (and the Randomize variant) used a shared attempts counter declared once outside the per-slice loop, with max_attempts = #filenames * 3. Once that counter hit the cap, every remaining slice fell through to the silence-padding fallback. With 1 file selected, the chain capped at 3 successful slices; with 2 files, at 6; etc. The resulting WAV had the rest of the slice slots filled with silence β looking like the function "cut off at 3 samples." Moved attempts and max_attempts inside the per-slice for-loop so each slice gets its own attempt budget. Cap is now math.max(#filenames, 1) * 2 per slice, which is enough to retry each selected file twice (in case of a silent or broken file) without prematurely capping the whole chain. Selecting 1 sample to fill an 8-slice rhythmic chain now works correctly. Same fix applied to both the regular and Randomize coroutines.
Pattern Preset bank text files are now actually editable by humans. The previous v1 format dumped the internal storage (H#32#1#1#1~L#1#48,12,255,255,0,0,0#0,0β¦) which was efficient for preferences.xml but unreadable. The new v2 format uses Renoise-style notation with sectioned slots, hex bytes, and dot sentinels for empty fields. Save now writes v2; Load auto-detects v1 vs v2 from the PakettiPatternPresetBank vN header, so existing v1 files keep working.
Example v2 output:
PakettiPatternPresetBank v2
[Slot01]
Name=Kick (P1/T2)
Lines=32
NoteCols=1
EffectCols=1
TrackType=1
001: C-4 0C .. .. 00 00 00 || 00 00
005: C-4 0C .. .. 00 00 00 || 00 00
009: C-4 12 .. .. 00 00 00 || 00 00
β¦
Per-line: <line>: <NC> | <NC> | β¦ || <EC> | <EC> | β¦. NC fields: <note> <inst> <vol> <pan> <delay> <fxN> <fxA>. EC fields: <num> <amt>. Notes C-4 / C#4 / OFF / ---. Bytes 00βFF hex, .. for empty (instrument / volume / panning only β delay and FX bytes are always shown as hex). Section header per slot includes Lines, NoteCols, EffectCols, TrackType (1=Sequencer, 2=Master, 3=Send, 4=Group). You can edit a saved bank in any text editor β change a note from C-4 to D#5, a volume from 7F to 40, add or remove rows β and Load will round-trip cleanly.
Two big additions to Pattern Preset:
Slice & Distribute. Take the currently selected matrix slot, divide it into 2 / 4 / 8 / 16 / 32 equal-length pieces, and drop each piece into its own preset bank starting at a chosen slot. A 64-row pattern sliced into 8 fills slots 01β08 with eight 8-row chunks; each chunk's stored line numbers are remapped to start at 1 so it behaves as a standalone N-line preset. Combined with Put at cursor + Advance to End of Put you can hammer 1, 2, 3, 4, 5, 6, 7, 8 to lay them down sequentially in any destination matrix slot. Dialog row: Slice current pattern into [N] equal pieces, starting at slot [NN] + button. PakettiPatternPresetSliceCurrent(num_slices, start_slot). Menu entries: Pattern Matrix:Paketti:Pattern Preset:Slice into 2, ... into 4, ... into 8, ... into 16, ... into 32. Keybindings: Global:Paketti:Pattern Preset Slice into 2/4/8/16/32.
Bank text-file save/load. Save all 32 slots (data + names) to a plain text file, load them back later. Format is line-based and human-readable: a PakettiPatternPresetBank v1 header followed by Slot01|Name|<name> and Slot01|Data|<serialized> rows for each slot. Lets you share preset banks, snapshot them into a project folder, or version-control them. PakettiPatternPresetSaveBank(filename) / PakettiPatternPresetLoadBank(filename) (filename optional β pops a file chooser if omitted). Dialog buttons: Save Bank to File..., Load Bank from File.... Menu entries: Pattern Matrix:Paketti:Pattern Preset:Save Bank to File..., ... Load Bank from File.... Keybindings: Global:Paketti:Pattern Preset Save Bank to File, ... Load Bank from File. MIDI mappings: Paketti:Pattern Preset Save Bank to File, ... Load Bank from File.
New Advance to End of Put checkbox in the Pattern Preset dialog. When Put at cursor is on and this checkbox is enabled, every Put jumps selected_line_index to the line right after the placed preset (cursor lands on applied_at_line + stored_pattern_length, clamped to the last pattern line). Lets you stack consecutive presets back-to-back regardless of edit-step value: pick a 16-line pattern, put it at line 1, cursor jumps to 17, put a 12-line pattern, cursor jumps to 29, and so on. Takes precedence over Use Edit Step if both are checked. Persisted in preferences.xml (PakettiPatternPreset.AdvanceToEnd).
New Use Edit Step checkbox in the Pattern Preset dialog (mirrors the OctaMED Pick/Put Row dialog's behaviour). When both Put at cursor and Use Edit Step are enabled, every Put advances song.selected_line_index by transport.edit_step after placing the preset, so you can stack consecutive presets down a pattern by tapping 1, 2, 3 β¦ without manually moving the cursor between Puts. Persisted in preferences.xml (PakettiPatternPreset.UseEditStep). Cursor stops advancing at the last line of the pattern.
Each Pattern Preset slot card now has two persistent text rows under the buttons: a compact stats line (<lines>L <ncols>N <ecols>E <filled>F) and a multi-character preview of the slot's first six first-column notes (C-4 D#5 G-4 A-4 E-5 ... style). Cards widened to 130 px / ~16 monospace characters of preview, so you can spot what's stored in each slot at a glance instead of having to put it into a pattern to find out. Empty slots show Empty and (empty) respectively.
The Pattern Preset dialog is rebuilt around a QWERTY-keyboard layout: 32 slot mini-cards arranged in four rows that mirror the keyboard β 1234567890 (slots 01β10), qwertyuiop (11β20), asdfghjkl; (21β30), zx (31β32). Each card shows the key letter, the slot number, Put / Pick / Clear buttons, and a live summary line. While the dialog is focused: pressing <key> puts that slot, pressing Shift+<key> picks into that slot β same one-handed flow as the Paketti Enhanced Automation dialog. Click cards directly for the same actions. New Put at cursor checkbox: when on, Put places the preset starting at the currently selected line and only clears the destination range it overwrites β outside lines stay untouched. So picking a 16-line pattern and putting it at line 16 of a 32-line pattern lays the 16 lines into rows 16β31 without nuking rows 1β15. The checkbox state persists in preferences.xml (PakettiPatternPreset.PutAtCursor). Pressing the standard dialog-close key (default esc) closes the dialog. All previously registered keybindings, MIDI mappings, and Pattern Matrix submenu entries remain intact.
The 32 banks added to Pattern Preset earlier today are now fully exposed as menu entries inside the Pattern Matrix right-click menu under a Pattern Preset submenu: Pattern Matrix:Paketti:Pattern Preset:Open Dialog, plus Pick 01βPick 32, Put 01βPut 32, and Clear 01βClear 32 (97 entries total). The dialog also gets a top-level slot in the Renoise main menu β Main Menu:Options:Paketti Pattern Preset Menu β so the editing UI is reachable directly from the Options menu without diving into the Tools submenu.
Sister system to OctaMED Pick/Put Slots β but instead of a single row, Pattern Preset picks/puts a complete Pattern Matrix slot (all the lines for the currently selected track within the currently selected pattern, including all visible note and effect columns) across 32 banks stored persistently in preferences.xml. Pick captures the cell at selected_pattern Γ selected_track; Put writes the stored cell into the cell currently selected in the Pattern Matrix. Track type, visible note column count, and visible effect column count all roundtrip; visible columns auto-expand on Put if the stored slot has more than the destination. Empty pattern lines aren't serialized, so the on-disk footprint stays compact even when storing 32 full-pattern banks. PakettiPatternPresetPick(slot), PakettiPatternPresetPut(slot), PakettiPatternPresetClear(slot), PakettiPatternPresetClearAll(), and PakettiPatternPresetDialog() are the entry points. The dialog lays out all 32 slots in two columns of 16 with per-slot Pick / Put / Clear buttons and a live summary line per slot. Menu entries: Main Menu:Tools:Paketti:Pattern Editor:Pattern Preset Dialog..., Pattern Editor:Paketti:Pattern Preset Dialog..., Pattern Matrix:Paketti:Pattern Preset Dialog.... Dialog keybindings: Global:Paketti:Pattern Preset Dialog, Pattern Matrix:Paketti:Pattern Preset Dialog, Pattern Editor:Paketti:Pattern Preset Dialog. MIDI mapping: Paketti:Pattern Preset Dialog. Per-slot keybindings (1β32) in three scopes: Global:Paketti:Pattern Preset Pick Slot NN / ... Put Slot NN, Pattern Matrix:Paketti:Pattern Preset Pick Slot NN / ... Put Slot NN, Pattern Editor:Paketti:Pattern Preset Pick Slot NN / ... Put Slot NN. Per-slot MIDI mappings: Paketti:Pattern Preset Pick Slot NN / Paketti:Pattern Preset Put Slot NN. 64 keybindings Γ 3 scopes + 64 MIDI mappings cover the full 32-bank pick/put surface.
New MIDI knob mapping Paketti:Midi Set Selection to Block Loop x[Knob] divides the current pattern into N equal-sized blocks (where N = transport.loop_block_range_coeff, the same coefficient that drives Renoise's block-loop button) and lets a continuous knob jump the Pattern Editor selection_in_pattern between blocks on the currently selected track. Pair it with Paketti:Change Current Slot Instruments x[Knob] for a two-knob workflow: one knob picks which block to target, the other slams a new instrument into that block. Examples with loop_block_range_coeff = 4: a 64-row pattern gives four 16-line blocks (1-16, 17-32, 33-48, 49-64); knob at 0 selects block 1, knob at 127 selects block 4. Increase the coefficient (up to 16) for finer subdivisions. Block size uses math.ceil(pattern_lines / coeff) so odd-length patterns still expose every row through some block. The selection covers all visible note + effect columns of the current track. Includes a "skip-no-op" guard so duplicate CC values don't churn the selection. PakettiBlockLoopSelectionKnobHandler(message) handles both absolute and relative MIDI controllers.
Companion trigger actions for stepping the block-loop selection by one block at a time (with wrap-around at the ends) β bind these to keys, footswitches or pads when you don't want a continuous knob: PakettiBlockLoopSelectionStepNext() / PakettiBlockLoopSelectionStepPrevious(). Keybindings: Global:Paketti:Set Selection to Next Block Loop, Global:Paketti:Set Selection to Previous Block Loop, Pattern Editor:Paketti:Set Selection to Next Block Loop, Pattern Editor:Paketti:Set Selection to Previous Block Loop. MIDI mappings: Paketti:Midi Set Selection to Next Block Loop, Paketti:Midi Set Selection to Previous Block Loop.
A clean trio of Next/Previous instrument-bumpers that operate on three distinct, sharply-defined scopes β all with wrap-around (Next at the last instrument wraps to the first; Previous at the first wraps to the last) and all reusing the same paint-the-slot-color-and-rewrite engine added earlier today:
Set Current Track Instrument to Next / ... to Previous β always operates on the whole currently selected track in the current pattern, regardless of any selection. PakettiSetCurrentTrackInstrumentToNext() / PakettiSetCurrentTrackInstrumentToPrevious(). Keybindings: Global:, Pattern Editor:, Pattern Matrix: (Γ both directions). MIDI mappings: Paketti:Midi Set Current Track Instrument to Next / ... to Previous.Set Selection Instrument to Next / ... to Previous β operates only on selection_in_pattern (Pattern Editor selection). Bails with a status notice when no selection exists, so Next/Previous don't silently scroll the instrument list. PakettiSetSelectionInstrumentToNext() / PakettiSetSelectionInstrumentToPrevious(). Same six keybinding contexts and two MIDI mappings.Set Selection or Track Instrument to Next / ... to Previous β uses selection_in_pattern if it exists, otherwise falls back to the whole current track. The "do the right thing" middle-ground variant. PakettiSetSelectionOrTrackInstrumentToNext() / PakettiSetSelectionOrTrackInstrumentToPrevious(). Same six keybinding contexts and two MIDI mappings.Internals refactored: PakettiChangeSlotInstrumentsApplyOps(ops, source_label) is the shared apply-engine; PakettiChangeSlotInstrumentsBuildOpsTrackOnly(), ...BuildOpsSelectionOnly(), ...BuildOpsSelectionOrTrack(), ...BuildOpsMatrixOrCurrent() are scope builders; PakettiChangeSlotInstrumentsComputeSlotColor() is the inverted+hardened track-color helper; PakettiChangeSlotInstrumentsBumpInstrumentWrap(direction) is the wrap-around bumper (logs [WRAPPED] to the Scripting Terminal when wrap fires). The existing PakettiChangeCurrentSlotInstrumentsToSelectedInstrument() is now just a thin shim that picks the most specific scope (selection > matrix > current slot) and delegates to the apply-engine β its keybindings, menu entry and MIDI mappings are unchanged.
New action PakettiChangeCurrentSlotInstrumentsToSelectedInstrument() in PakettiImpulseTracker.lua rewrites every non-empty note column to use the currently selected instrument, with three-tier scope priority: (1) Pattern Editor selection_in_pattern β restricts to the selected line range and note-column range across the selected track range in the current sequence; (2) Pattern Matrix selected slots β whole pattern, all visible note columns, per slot; (3) Fallback β the currently selected slot (track + sequence), whole pattern. Then colors the affected slot(s) with an inverted + hardened version of the currently selected track's color (each channel inverted via 255 - c, then snapped to its nearest extreme β 0 or 255 β to maximize contrast and saturation; pure black is nudged to white so Renoise still renders a slot color), with a fallback magenta {0xFF, 0x00, 0xFF} when the track has no color set (the Renoise renoise.Instrument API doesn't expose a color property) so the change is visible at a glance in the matrix. Falls back to the currently selected slot when no matrix selection exists. Skips Send/Master/Group tracks and aliased pattern tracks (only colors aliases). Reports each modified slot in the status bar as Changed Pattern X Track Y (name) Slot Z to instrument NN (instrname), or a summary Changed N slots to instrument NN (instrname) when multiple slots were touched. Menu entry: Pattern Matrix:Paketti:Change Current Slot Instruments to Selected Instrument. Keybindings: Pattern Matrix:Paketti:Change Current Slot Instruments to Selected Instrument and Pattern Editor:Paketti:Change Current Slot Instruments to Selected Instrument. MIDI mappings: Paketti:Change Current Slot Instruments to Selected Instrument (trigger β apply currently selected instrument) and Paketti:Change Current Slot Instruments x[Knob] (knob β scales int_value 0..127 to an instrument index in [1..#instruments], sets selected_instrument_index to that, and immediately rewrites the current slot(s) to use it; supports both absolute and relative MIDI controllers; remembers the last applied instrument so the rewrite is skipped when the knob hasn't moved to a new instrument). Companion actions PakettiSetCurrentSlotInstrumentToNext() / PakettiSetCurrentSlotInstrumentToPrevious() bump selected_instrument_index by Β±1 (clamped to [1..#instruments], with a status-bar notice when already at the first/last instrument) and immediately rewrite the current slot(s); keybindings Global:Paketti:Set Current Slot Instrument to Next, Global:Paketti:Set Current Slot Instrument to Previous, Pattern Matrix:Paketti:Set Current Slot Instrument to Next, Pattern Matrix:Paketti:Set Current Slot Instrument to Previous, Pattern Editor:Paketti:Set Current Slot Instrument to Next, Pattern Editor:Paketti:Set Current Slot Instrument to Previous; MIDI mappings Paketti:Midi Set Current Slot Instrument to Next, Paketti:Midi Set Current Slot Instrument to Previous (matching Renoise's Paketti:Midi Change Selected Instrument x[Knob] naming convention).
PakettiDump.lua adds a global function pdump(value, label) callable from Renoise's Scripting Terminal that takes any Lua value, dumps it to /tmp/paketti-<label>-<timestamp>.txt, and opens the file in the system default editor (open on macOS, start on Windows). Tables are walked via rprint with print temporarily monkey-patched to redirect into the file; userdata is walked via oprint; primitives are tostring'd. Companion pdump_quiet(value, label) writes the file without opening it. Designed to make introspection one-liners trivial β e.g. pdump(renoise.song().selected_track.available_device_infos, "devices") produces a grep-able file with all VST/VST3/AU/Native plugin names + paths.
Paketti now hosts a Streamable HTTP MCP server on localhost:19714/mcp, letting Claude (or any MCP client) drive Renoise via JSON-RPC 2.0 over HTTP. The MCP core (json/router/server/dialog + tools for transport, song, tracks, patterns, sequencer, instruments, devices) is adapted from kraken@renoise.com's ReMCP project (https://github.com/renoise/xrnx, MIT licensed) into Paketti's namespace under PakettiMCP/. Start the server via menu entry Main Menu:Tools:Paketti:!Preferences:MCP Server Start or keybinding Global:Paketti:MCP Server Start. Verify with curl http://localhost:19714/health. Tools/list and tools/call work from any MCP client β Claude Desktop, Claude Code via mcp-remote, plain curl. This collapses the OSC + probe-file feedback hack into a proper bidirectional API surface. Added: 3 keybindings (MCP Server Dialog/Start/Stop), 3 menu entries under Paketti Preferences, full server source under PakettiMCP/ (json.lua, router.lua, server.lua, dialog.lua, tools/{transport,song,tracks,patterns,sequencer,instruments,devices}.lua).
PakettiClaudeProbe.lua adds keybinding-callable functions that evaluate Renoise API expressions in tool context (full io access, unlike /renoise/evaluate's sandbox) and dump the result to /tmp/paketti-probe.txt for Claude to read. Five quick probes: Selected Track, Available Devices, Selected Instrument, Song summary, plus a Custom Expression dialog for arbitrary Lua. Output format includes timestamp, expression, result type, ok-flag, and a stable Lua-table-style serialization (numeric keys first, then string keys, sorted). Pairs with the upgraded ~/.claude/bin/renoise-eval which now routes via PakettiClaudeProbeRun instead of trying to write files from the sandboxed eval context. Added: 5 keybindings (Global:Paketti:Claude Probe ...), 5 menu entries under Paketti Preferences.
PakettiClaudeChat.lua adds a chat dialog inside Renoise that talks to a Claude Code session via the OSC /renoise/evaluate channel and a /tmp/claude-inbox.txt mailbox. You type a message, click Send (or press Return), the message is written to the inbox file with a timestamp; Claude (running in /loop mode) polls the inbox, generates a reply, and sends it back via OSC /renoise/evaluate calling the global _PakettiClaudeReply(text), which appends to the dialog's response area. Round-trip latency is ~20-60s β this is an "ambient assistant inside Renoise," not real-time chat. Includes Esc-to-close, Return-to-send, Shift+Return for newline, a Clear button, and a persistent on-disk log at /tmp/claude-chat-log.txt. Pairs with the new ~/.claude/bin/renoise-eval Python helper that sends Lua to Renoise via UDP/8000. Added: keybinding Global:Paketti:Claude Chat Dialog, menu entry Main Menu:Tools:Paketti:!Preferences:Claude Chat Dialog.... Requires Renoise's OSC server enabled in Preferences > OSC (UDP, port 8000).
Added a new dialog that walks the user through importing Paketti's bundled keybinding presets into Renoise. The Renoise Lua API has no function to apply default keyboard shortcuts β the Tool API doc explicitly states "Users manually have to bind them in the keyboard prefs pane" β so this dialog automates everything Paketti is allowed to automate around that constraint:
.xml preset file found inside the tool bundle's KeyBindings/ folder (currently 2025_07_10_PakettiKeyBindings.xml for macOS and 2025_07_10_PakettiKeyBindings_Linux_Windows.xml for Linux/Windows). The recommended file for the current OS is starred and shown in bold.renoise.app():open_path().KeyBindings.xml is read from at startup and saved back to at quit (~/Library/Preferences/Renoise/V<ver>/ on macOS, %APPDATA%\Renoise\V<ver>\ on Windows, ~/.config/Renoise/V<ver>/ on Linux). Falls back to a friendly warning if the folder doesn't exist yet.Edit > Preferences > Keys > Import... flow with notes that import merges (does not wipe), and that Renoise only persists the merged result on next quit.Registered via Main Menu:Tools:Paketti:!Preferences:Paketti Keybindings Loader Dialog... and Main Menu:Options:Paketti Keybindings Loader Dialog... (both via the sortable PakettiAddMenuEntry{} wrapper), Global:Paketti:Paketti Keybindings Loader Dialog keybinding, and Paketti:Paketti Keybindings Loader Dialog x[Toggle] MIDI mapping. Toggle behaviour: invoking the menu/key while the dialog is open closes it.
The Ctrl+Up / Ctrl+Down "Duplicate Pattern Above/Below & Clear Muted Tracks" actions in PakettiPatternMatrix.lua now keep the workflow fluid when the user is mid-loop. If, at the moment of duplication, playback is on AND the current pattern is being looped (either via transport.loop_pattern or via a single-slot transport.loop_sequence_range == {N, N}), the loop and the playhead are now handed off to the freshly created duplicate. Specifically:
{N, N}) is moved to {new_seq_index, new_seq_index}. Multi-slot ranges (e.g. {3, 7}) are intentionally left alone β those are song-structure loops, not "loop this one pattern".transport:set_scheduled_sequence(new_seq_index), which queues the jump for the next pattern boundary. The current loop iteration finishes naturally and playback rolls into the duplicate without a mid-bar cut. Pattern Loop (transport.loop_pattern) is left as-is β once playback lands on the duplicate, it auto-loops the new pattern just like it did the old one.was_playing and was_looping were true.[loop+playback moved to new pattern] so it's clear what just changed.Two new global helpers in PakettiPatternMatrix.lua factor the logic: PakettiCapturePatternLoopState(song, seq_index) snapshots the relevant loop fields before mutation, and PakettiHandoverPatternLoopAndPlayback(song, prior_state, new_seq_index) performs the loop-range move and the scheduled-sequence jump after insertion. Both emit verbose print() debug lines so the scripting console shows exactly what was decided each time.
The duplicate-pattern-and-wipe-muted-tracks workflow that has lived under Ctrl+Up / Ctrl+Down in the Pattern Matrix is now bound to the same keys in the Pattern Sequencer by default. The Lua keybindings (Pattern Sequencer:Paketti:Duplicate Pattern Above & Clear Muted Tracks and Pattern Sequencer:Paketti:Duplicate Pattern Below & Clear Muted Tracks) were already registered against the existing duplicate_pattern_and_clear_muted_above / duplicate_pattern_and_clear_muted functions in PakettiPatternMatrix.lua β they just weren't bound to keys in the default keybinding presets. Added <Key>Control + Up</Key> and <Key>Control + Down</Key> to both KeyBindings/2025_07_10_PakettiKeyBindings.xml (macOS) and KeyBindings/2025_07_10_PakettiKeyBindings_Linux_Windows.xml (Linux/Windows) inside the Pattern Sequencer section (<Identifier>Pattern Sequencer</Identifier>). Re-import the keybinding preset to get the new defaults; existing users can also bind these manually via Edit β Preferences β Keys β Pattern Sequencer β Paketti.
Fixed two Renoise 3.1 (API 5) crashes:
PakettiInjectDefaultXRNI ("Pakettify Current Instrument") unconditionally set to_sample.device_chain_index = 1 in three locations without checking whether the instrument has any device chains. On Renoise 3.1, the loaded XRNI template may have 0 device chains, causing std::logic_error: 'invalid device_chain_index value'. All three assignments now guarded with if #instrument.sample_device_chains > 0.show_custom_dialog (where a key handler is expected). On Renoise 3.1 this causes a No matching overload error. Fixed by adding a proper create_keyhandler_for_dialog() keyhandler and guarding the close callback (4th arg) behind PAKETTI_API >= 6.Added a new "Folders" row in the Paketti Preferences dialog with a button labelled "Open folder to Paketti KeyBindings (macOS/Linux/Windows)". Clicking it opens the KeyBindings/ folder inside the Paketti tool bundle in the OS file manager (Finder on macOS, file manager on Linux, Explorer on Windows). Uses renoise.app():open_path() for cross-platform compatibility with an io.exists() guard to show a warning if the folder is missing.
A robust replacement for the brittle "Note Release Device Gate" prototype tool. Plays a MIDI note β the targeted device on the track turns ON; release the note β the device turns OFF. Solves the long-standing gap that Signal Follower can't fill: held-key gating that doesn't depend on an audio signal (so a snare hit can feed into a delay that keeps building until you actually release the key).
Differences from the prototype it replaces:
{track_index, device_index} and resolved at fire-time, so device insert/delete/swap can't dangle them.(pattern, line) is not re-written.is_active while playing back.Menu entries added under Main Menu:Tools:Paketti:Note Release Gate: β Add Selected Device as Target, Remove Targets For Current Track, Clear All Targets, List Targets, Start, Stop, Toggle Start/Stop, Toggle Latch Mode, Toggle Automation Writing, Toggle Pattern Scanner. Also DSP Device:Paketti:Note Release Gate Add as Target and Mixer:Paketti:Note Release Gate Toggle Start/Stop.
Keybindings (Global): Paketti:Note Release Gate Add Selected Device as Target, Paketti:Note Release Gate Toggle Start/Stop, Paketti:Note Release Gate Start, Paketti:Note Release Gate Stop, Paketti:Note Release Gate Toggle Latch Mode, Paketti:Note Release Gate Toggle Automation Writing, Paketti:Note Release Gate Toggle Pattern Scanner, Paketti:Note Release Gate Clear All Targets, Paketti:Note Release Gate List Targets.
MIDI mappings: Paketti:Note Release Gate Toggle Start/Stop, Paketti:Note Release Gate Toggle Latch Mode.
Engine landed first; UI dialog (target list editor with per-row note range / channel / latch toggle) ships in the same release.
Per-target release_quantize_lines (0β64, 0 = immediate). When transport is playing and a key is released, instead of firing the gate-off immediately, the gate schedules it to fire at the next pattern line where (line - 1) % N == 0. With LPB=4 and release_quantize_lines = 4, releases snap to the next downbeat. Note-on for the same target before the scheduled release fires cancels the pending release (clean re-trigger). If the transport stops or the pattern changes before the fire line is reached, the pending release fires immediately. Pending releases are cleared on Stop. Exposed in the dialog as the quant(lines) valuebox per row.
Three musical primitives added to make the gate genuinely performable:
attack_ms and release_ms fields (0β5000 ms). On note-on the parameter ramps from its current value to on_value over attack_ms; on note-off it ramps to off_value over release_ms. A 16ms timer drives the interpolation. Ramps are linear and only apply to non-is_active parameters (the bypass flag stays binary). New ramps cancel any in-flight ramp on the same target. Exposed in the dialog as atk(ms) and rel(ms) valueboxes per row.velocity β on scales the effective on-value by note velocity: effective_on = off_value + (velocity / 127) * (on_value - off_value). A soft-played note opens the gate less than a hard hit. Off by default; per target.pakettiNoteGateSustainPedalEnabled. When enabled, pedal-down (CC 64 β₯ 64) opens every target matching the channel filter as if held; pedal-up closes them. Foot-driven all-gates-open performance gesture. Independent of note-driven holds; both can coexist.New menu entry: Main Menu:Tools:Paketti:Note Release Gate:Toggle Sustain Pedal (CC 64).
New keybinding: Global:Paketti:Note Release Gate Toggle Sustain Pedal.
The pattern scanner and the live MIDI gate previously fought when a held key and a pattern note OFF on the same track collided: the scanner would force the target off mid-hold, then the MIDI release would set off again. With this fix, a live MIDI hold beats the scanner β held targets are not force-released by pattern OFFs while the key is still down. The scanner regains control as soon as the key releases.
Rewrote the engine to gate an arbitrary parameter on a device, not only the device's bypass. New default behaviour: when you add a #Send or #Multiband Send device as a target, the gate automatically wires up the Send's Amount (or Band1Volume) parameter with on=1.0 / off=0.0. Note-on opens the gate, note-off closes it; the destination effect on the Send track keeps running, so the delay/reverb tail decays naturally. This is the use case Signal Follower can't handle (audio gating depends on signal presence; this is gestural).
Changes:
(scope, track_index | instrument_index/chain_index, device_index, parameter_index, on_value, off_value, channel, note_lo, note_hi, device_name_snapshot, parameter_name_snapshot). The legacy "gate is_active" mode survives as a parameter_index = -1 sentinel.Instrument > Sample FX > devices) as a target. Gate works the same way β wired to the chain's device parameters.#Send or #Multiband Send, the new target defaults to its Amount (or Band1Volume) parameter with on=1.0 / off=0.0, and the parameter is set to off at rest so the gate is closed by default.display_name and the parameter's name at add time; on resolve, if the indexed slot doesn't match the snapshot, the gate searches the device list / parameter list for a name match before declaring the target unresolved. Survives swap_devices_at and insert_device_at reshuffles.describe_undo("Note Gate Automation Write") on every automation write.New menu entries: Main Menu:Tools:Paketti:Note Release Gate:Add Selected Sample FX Chain Device as Target, Sample Editor:Paketti:Note Release Gate Add Sample FX Device as Target.
New keybinding: Global:Paketti:Note Release Gate Add Sample FX Device as Target.
Dialog updates: per-row parameter readout, per-row channel popup (Inherit + Ch 1-16), per-row on / off valuefields, per-song header showing current song's filename, scope indicator (track vs Sample FX Chain), and an Add Sample FX Device button.
Configuration dialog for the Note Release Gate. Pick the MIDI input device and channel filter, toggle Latch / Automation Writing / Pattern Scanner / Auto-start, manage the target list (add selected device, jump to a target's track and device, edit per-target note range with note-name display, remove individual targets, clear all), and Start/Stop the gate from one window. Note range valueboxes display as C-4, F#3, etc.
Added: Main Menu:Tools:Paketti:Note Release Gate:Show Dialog..., keybinding Global:Paketti:Note Release Gate Show Dialog, MIDI mapping Paketti:Note Release Gate Show Dialog.
Fixed the persistent C-4-on-line-1 bug: without an explicit instrument value, note events were resolved through keyzone lookup where the parent sample (sample 00, full break) covers the entire keyboard and "wins" the conflict, causing the whole sample to play through on every phrase. Now each note explicitly sets instrument_value to the correct slice sample index (sample 01 = slice 1, sample 02 = slice 2, etc.), bypassing keyzone ambiguity entirely. The instrument column is now visible in generated phrases.
Fixed two playback bugs and adjusted keymapping for the Slices to Phrases Per Starting Slice feature:
instrument_value = 0 which forced sample 0 (the unsliced parent sample) to trigger on every note, causing the full break to play through on top of the individual slice hits. Now the instrument column is left empty so Renoise's keyzone routing correctly triggers each slice.Instrument column is now hidden in generated phrases since it's no longer needed.
New feature that creates N phrases from a sliced break β one phrase per starting slice. Phrase 1 plays from slice 1 through the entire break. Phrase 2 starts from slice 2 onward, etc. All note timing is recalculated relative to each phrase's starting slice (first note forced to line 1 delay 0, subsequent notes repositioned with sub-line delay precision). The result is a new duplicated instrument with phrase playback set to Keymap mode, each phrase mapped to a consecutive note starting from C#0.
Supports both beat-sync timing (when the sample has beat sync enabled) and BPM/LPB-based frame-accurate timing. Optional detected-BPM variants use transient analysis for orphaned breaks without known tempo.
Pattern Editor:Paketti:Slices to Phrases Per Starting SliceSample Editor:Paketti:Slices to Phrases Per Starting SlicePattern Editor:Paketti:Slices to Phrases Per Starting Slice (detected BPM)Sample Editor:Paketti:Slices to Phrases Per Starting Slice (detected BPM)Paketti:Slices to Phrases Per Starting SlicePaketti:Slices to Phrases Per Starting Slice (detected BPM)Per-cell velocity is now a real 8120 feature, not a canvas-only illusion. Both views read/write the same row_elements.velocities[step] table; print_to_pattern writes the explicit volume_value into the pattern's note column. nil (default) leaves the volume column empty so Renoise plays the note at full velocity, identical to pre-refactor behaviour.
Canvas mouse model now matches the spec:
Cells render velocity as bar height, dropping back to full when the velocity is nil. In Yxx mode the velocity is irrelevant (Yxx is boolean), so cells render full-height there.
Parity batch 1 β per-row controls in left strip:
rows[r].solo_checkbox.value)rows[r].random_button_pressed() β same as 8120's Random per row)rows[r].valuebox.value). Cells past the per-row step count render dimmed so you can see the active region.Animated playhead in canvas: hooked into 8120's existing play_step_index update loop. The amber border now follows the play cursor across cells just like 8120's classic dialog highlights its number buttons.
The standalone PakettiGroovebox8ch960samp.lua file was a parallel re-implementation that could only access ~15% of 8120's surface (file-local functions like random_gate, fill_empty_steps, clear_all, fetch_pattern, reverse_all, random_all were unreachable). The MK2 promise β feature-complete with 8120, plus selection-based editing on top β was unachievable from outside.
Moved the canvas view to live INSIDE PakettiEightOneTwenty.lua at the bottom of the file, where it has direct access to every file-local 8120 function. The canvas is now a real second view of 8120's actual state β clicking a cell fires 8120's existing print_to_pattern notifier, the verb palette calls 8120's actual random_gate/clear_all/fetch_pattern/reverse_all/random_all/randomize_all/randomize_groove directly, and the Sequential Load family is on the same palette.
Verbs that work right now in Canvas View:
Selection model: click a cell to toggle, click+drag to range-select within or across rows, alt+click selects the entire 4-step quadrant, shift+click extends the existing selection.
Launch points:
Main Menu:Tools:Paketti:Groovebox:Canvas View (MK2)β¦Pattern Editor:Paketti:Groovebox 8120 Canvas View (MK2)β¦Global:Paketti:Paketti Groovebox 8120 Canvas ViewPaketti:Paketti Groovebox 8120:Canvas View [Trigger]The classic 8120 dialog auto-opens in the background if it isn't already (so rows[] is populated). Closing the canvas view leaves the classic 8120 dialog open. Both windows can be visible simultaneously and edit the same state. Future passes will layer in automation-stack drawing per row, automatron-style modulator generators, per-cell velocity/probability/roll modes, and Akai MidiMix LED feedback for selection β all alongside the canvas, all with full access to 8120's data model.
Removed: PakettiGroovebox8ch960samp.lua (deleted), timed_require("PakettiGroovebox8ch960samp") (removed from main.lua). The previous standalone-file CHANGESLOG entries for the 8ch960samp prototype refer to functionality that is now part of 8120 itself.
The MK2 prototype was rendering seeded fake data (kick-808.wav, snare-clap.wav, etc.) and a hardcoded "lane 5 muted" β none of which reflected the user's actual song or 8120 state. Lane heights also didn't align with the side-strip text rows because style="panel" added chrome padding the canvas didn't account for, so the canvas extended below the side strips.
Changes:
rows[] (the existing per-row checkbox state). Click a cell and 8120's own print_to_pattern notifier fires β same path as if you'd clicked the checkbox in 8120's dialog. All verbs (nudge / invert / reverse / fill / clear / density / euclid / curve) operate on the real pattern.renoise.song().instruments[r].name so you see the actual instrument names you've loaded, not the hardcoded demo strings.mute_checkbox (or track mute state as a fallback). Clicking M in the prototype toggles the real lane.style="panel" removed and lane height tightened (90 β 56 px) so the cells align with the side text rows pixel-for-pixel rather than overflowing.rows[] is populated before the canvas tries to read it.The MK2 prototype now exposes the same Loadβ¦, RandomLoadβ¦, and RandomLoadAllβ¦ buttons as 8120 in its verb palette. They call the existing 8120 load functions (loadSequentialSamplesWithFolderPrompts, loadSequentialDrumkitSamples, loadSequentialRandomLoadAll) which populate the actual song instruments β independent of the prototype's local model β so the same workflow works in both dialogs without bouncing between them.
The three Sequential Load actions (Sequential Load, Sequential RandomLoad, Sequential RandomLoadAll) used to live only as buttons inside the open dialog, which meant: no MIDI mapping (couldn't fire from a controller), no keybinding, no menu entry, and no way to use them when nothing was selected or no row was focused. Now wired for all three trigger paths so you can repopulate the entire 8120 from any state β including a fresh empty song where nothing has been touched yet.
Each safe-launcher opens the 8120 dialog first if it isn't already open, so the launchers also serve as a one-shot "boot a Groovebox from scratch" button.
Global:Paketti:):Paketti Groovebox 8120 Sequential LoadPaketti Groovebox 8120 Sequential RandomLoadPaketti Groovebox 8120 Sequential RandomLoadAllPaketti:Paketti Groovebox 8120:):Sequential Load [Trigger]Sequential RandomLoad [Trigger]Sequential RandomLoadAll [Trigger]Main Menu:Tools:Paketti:Groovebox:):Sequential Load (8 folders)β¦Sequential RandomLoad (8 folders, random sample each)β¦Sequential RandomLoadAll (1 folder, all 8 rows)β¦PakettiEightOneTwentyFocusedRow = PakettiEightOneTwentyFocusedRow or 1 read the global before declaring it, which trips Renoise's strict-globals guard (__index blocks unknown globals) and prevented Paketti from loading at all on a fresh tool install. Replaced with a rawget / rawset pair so the variable is created without a prior read. Reported by Issou2suc on Renoise 3.5.4 / Windows.
The Akai MidiMix is now auto-opened (input + output) when the 8120 dialog appears, and auto-closed when it goes away. No MIDI-learn dance, no Renoise mapping required β Paketti talks to the device directly.
Device detection is name-fuzzy (matches "MIDI Mix", "MidiMix", "MIDIMIX", with or without bus suffixes). If no MidiMix is attached the bridge silently no-ops; the rest of 8120 is unaffected.
New mapping for manual control: Paketti:Paketti Groovebox 8120:MidiMix Bridge Toggle [Trigger] β toggle the bridge on/off without closing the dialog.
The "Solo" button (note 27) is currently unused β reserved for a future modifier (clear / half-velocity / select).
A single bank of 16 physical buttons on a MIDI controller (e.g. EXP1-EXP8 + P1-P8) can now drive the step grid of whichever of the 8 rows is currently focused, instead of needing one bank per row. The focused row is changed with "Focused Row Next/Previous" or "Focused Row Set 1..8" mappings β typically bound to a "page" / "scene" button on the controller. The focused row is highlighted in the dialog as you switch.
New MIDI mappings under Paketti:Paketti Groovebox 8120::
Focused Row Step1 .. Focused Row Step16 (or 32 in 32-step mode) β toggle the step on the currently focused rowFocused Row Next [Trigger] / Focused Row Previous [Trigger] β wrap-around row navigationFocused Row Set 1 [Trigger] .. Focused Row Set 8 [Trigger] β direct row jumpFocused Row < / > / Clear / Randomize / Load / Show / Random / Automation / Reverse β utility buttons re-routed to the focused rowLED feedback (lighting the controller's buttons to mirror the focused row's step state) is a follow-up: it requires sending MIDI back out and the SysEx vocabulary differs per controller β name the controller to wire that next.
Second pass on the canvas prototype β wired every stub verb, added per-lane view modes, and added the modifier-key selection model.
nudge β/β rotates within the selection (per row)nudge β/β rotates rows within multi-row selection (move pattern between lanes)invert / reverse / fill / cleardensity+ finds the longest empty stretch in each selected row and inserts a trigger in the middledensityβ removes the lowest-velocity trigger in each selected rowhumanize jitters velocities Β±15%roll β/+ decrements/increments the roll-count per cell (1..8, badge rendered)copy / paste use a module-local clipboard (rectangular)euclidβ¦ opens a sub-dialog (pulses + offset valueboxes), fills the selection with an Euclidean rhythmapply curveβ¦ opens a sub-dialog using PakettiAutomationCurvesShapes, samples the chosen curve at each step's normalized position, writes into either velocity or probabilityreset model re-seeds the demo dataStill no song integration β next pass wires the EightOneTwenty pattern read/write so the prototype edits actual tracks.
Working render-only Lua prototype of the rethought 8120 dialog. Single canvas paints all 8 lanes (4-white/4-black quadrant backgrounds, contrast-inverted triggers, velocity-as-bar-height, playhead as 2px amber border, selection as purple wash + border). Click toggles a cell, click+drag selects a range or rectangle, verb palette acts on the active selection. Working verbs: nudge β/β (rotate within selection), invert, reverse, fill, clear. Stub verbs (status-line only): densityΒ±, humanize, roll, copy/paste, euclidβ¦, curveβ¦. Step count toggles 16β32 live. No song integration yet β this is a visual scratchpad to refine layout before wiring to the EightOneTwenty data model.
PakettiGroovebox8ch960samp.luaMain Menu:Tools:Paketti:Groovebox:Groovebox 8ch960samp (MK2 prototype)β¦ and Pattern Editor:Paketti:Groovebox 8ch960samp (MK2 prototype)β¦Global:Paketti:Show Groovebox 8ch960samp (MK2 prototype)PakettiEightOneTwenty in main.luaFirst sketch of the Groovebox 8120 successor. Canvas-rendered grid with 4-white/4-black quadrant backgrounds (and 8-quadrant 32-step variant), selection-as-primary-gesture (single-row range, alt+click quadrant, shift+drag rectangle across rows), verb palette acting on the active selection (nudge β/β/β/β, invert, reverse, densityΒ±, humanize, roll, copy/paste/stamp, euclid, apply curve, probability), per-cell velocity rendered as bar height, playhead drawn as a 2px border so quadrant identity survives playback, per-lane settings collapsed into a right-side ribbon. Mockup files: manual/Screenshots/groovebox_8ch960samp_mockup.svg (source) and groovebox_8ch960samp_mockup.png (2560-wide render). No code changes β design exploration only.
Five more Sidechain Doofer follow-ons completing the Mr. Zensphere video roadmap.
Trigger Phrase Library. Generates 12 ready-made rhythmic ducking phrases inside the chosen trigger instrument (named with SC: prefix): 4-on-floor, Half-time, 8th-gate, 16th-gate, Trance gate, Dub-stab, Garage swing, Beats 1+3, Beats 2+4, Off-beats, Triplet 8ths, Build-up. Drop a phrase trigger in your pattern instead of placing notes by hand. Skips duplicates if phrases already exist. Menu: Main Menu:Tools:Paketti:DSP:Generate Trigger Phrase Library and Instrument Box:Paketti:Generate Trigger Phrase Library. Keybinding: Global:Paketti:Generate Trigger Phrase Library. MIDI mapping: Paketti:Generate Trigger Phrase Library.
Sidechain Recipe save/load. Save the full active_preset_data of the Sidechain Doofer's three (or four) devices on the selected track to an XML file in Presets/SidechainRecipes/. Reload writes it back onto the matching devices. Use case: save "Verse Pump", "Chorus Pump", "Bridge Pump" recipes and switch them per song section. Menu: Main Menu:Tools:Paketti:DSP:Save Sidechain Recipe... and Load Sidechain Recipe.... Keybindings: Global:Paketti:Save Sidechain Recipe Dialog, Global:Paketti:Load Sidechain Recipe Dialog.
Trigger-Driven Modulator. Same Key Tracker β Custom LFO chassis as the Sidechain Doofer, but the LFO destination is user-pickable: any device on the track, any parameter on that device. Reframes "sidechain compression" as generic rhythm-locked modulation. Apply the Sidechain Curve Pack to filter cutoff, send amount, sample offset, reverb size, EQ band gain β anything modulatable. Dialog with target-device popup, target-parameter popup, and curve picker. Menu: Main Menu:Tools:Paketti:DSP:Trigger-Driven Modulator... (also Mixer + DSP Chain). Keybinding: Global:Paketti:Trigger-Driven Modulator Dialog. MIDI mapping: Paketti:Trigger-Driven Modulator Dialog.
Sidechain Hydra Fanout. Inserts Key Tracker β *LFO β *Hydra on the selected track and wires the LFO into the Hydra's Input. The Hydra's 9 outputs can each be routed to a different destination (manually wired by user), so one trigger curve drives nine destinations across the project at near-zero CPU. Project-wide ducking from a single shape. Menu: Main Menu:Tools:Paketti:DSP:Insert Sidechain Hydra Fanout (also Mixer). Keybinding: Global:Paketti:Insert Sidechain Hydra Fanout. MIDI mapping: Paketti:Insert Sidechain Hydra Fanout.
Capture Trigger Notes from Sample. Walks the selected sample's audio buffer in line-sized windows (samples_per_line = sample_rate Γ 60 / (BPM Γ LPB)), peak-detects with onset/debounce thresholds, and writes trigger notes into a target pattern column at the corresponding line + delay position (sub-line accurate via delay column). Velocity = scaled peak amplitude with linear / sqrt / squared curves. Use case: take any audio kick, snare, or rhythmic loop and convert it to a programmable trigger pattern. Dialog at Main Menu:Tools:Paketti:DSP:Capture Trigger Notes from Sample... and Sample Editor:Paketti:Capture Trigger Notes from Sample.... Keybindings: Sample Editor:Paketti:Capture Trigger Notes from Sample Dialog, Global:Paketti:Capture Trigger Notes from Sample Dialog. MIDI mapping: Paketti:Capture Trigger Notes from Sample Dialog.
Three follow-on features for the Sidechain workflow.
Trigger Column Mirror. Mirrors note positions from a source track's note column into a target track's note column as trigger-instrument notes β automating the manual copy/paste step from the Mr. Zensphere video. Dialog at Main Menu:Tools:Paketti:DSP:Trigger Column Mirror... and Pattern Editor:Paketti:Trigger Column Mirror... lets you pick: source track + column, target track + column, trigger instrument (auto-defaults to existing trigger), scope (current pattern / all patterns), every-Nth-hit filter (1β16), minimum velocity threshold (0β127), and whether to tag the target column "trigger". Preserves source velocity into the target column. Preserves source delay column for sub-line accuracy. Keybindings: Global:Paketti:Trigger Column Mirror Dialog, Pattern Editor:Paketti:Trigger Column Mirror Dialog. MIDI mapping: Paketti:Trigger Column Mirror Dialog.
Velocity-Sensitive Sidechain Doofer. New checkbox in the Sidechain Doofer Auto-Loader dialog: when enabled, inserts a *Velocity Tracker device alongside the Key Tracker, routed to the LFO's Amplitude parameter. Soft trigger notes duck softly, hard trigger notes slam β dynamic sidechain that native audio compressors can't easily replicate. Filtered to the same chosen instrument as the Key Tracker.
Column Tagging. New keybinding Pattern Editor:Paketti:Tag Selected Note Column as Trigger renames the currently selected note column to "trigger" via track:set_column_name(), making sidechain trigger columns visually distinct from melodic content. Auto-applied to the target column by Trigger Column Mirror (toggle in dialog).
Drops the full Mr. Zensphereβstyle sidechain chain on the selected track in one operation: inserts *Key Tracker β *LFO β Compressor at the end of the track DSP chain, wires the Key Tracker to reset the LFO on every note from a chosen trigger instrument, wires the LFO to drive the compressor's threshold, applies a default ducking curve (defaults to EDM Pump but the dialog offers all 8 sidechain curves plus 4 inverted classic shapes), and sets sane sidechain compressor defaults (~4:1 ratio, fast attack, ~80ms release). Auto-detects existing trigger / Kick Trigger / Snare Trigger / Hat Trigger instruments and pre-selects them. Standardized macro names across all auto-loaded sidechain instances: Threshold, Ratio, Attack, Release, Makeup, Lines/Cycle, Amount, Offset β same order, same names, every time, so muscle memory builds. Dialog: Main Menu:Tools:Paketti:DSP:Sidechain Doofer Auto-Loader... with trigger instrument popup, curve popup, envelope length popup (64/128/256/512/1024), and lines-per-cycle valuebox. One-click variant for power users: Main Menu:Tools:Paketti:DSP:Insert Sidechain Doofer (defaults). Mirrored under Mixer:Paketti: and DSP Chain:Paketti:. Keybindings: Global:Paketti:Sidechain Doofer Auto-Loader Dialog, Global:Paketti:Insert Sidechain Doofer Defaults. MIDI mappings: Paketti:Sidechain Doofer Auto-Loader Dialog, Paketti:Insert Sidechain Doofer.
Creates a silent MIDI-trigger instrument matching the spec from the Mr. Zensphere sidechain video β single zero-amplitude mono sample (8 frames at 44100 Hz, 16-bit), velocityβvolume disabled, keyβpitch disabled, no loop, sample volume at -INF dB, full velocity range, full key range. The instrument exists only to emit note events that drive a Key Tracker inside a Sidechain Doofer; it produces no sound. If an instrument with the requested name already exists, selects it instead of creating a duplicate. Menu entries added under Main Menu:Tools:Paketti:DSP:Sidechain Trigger Instrument: for trigger (default), Kick Trigger, Snare Trigger, Hat Trigger, and Custom name... (opens a textfield prompt). Also added under Instrument Box:Paketti:Create Sidechain Trigger Instrument and Instrument Box:Paketti:Create Sidechain Trigger Instrument (custom name).... Keybindings: Global:Paketti:Create Sidechain Trigger Instrument, Global:Paketti:Create Sidechain Trigger Instrument Kick, Global:Paketti:Create Sidechain Trigger Instrument Snare, Global:Paketti:Create Sidechain Trigger Instrument Hat, Global:Paketti:Create Sidechain Trigger Instrument Custom. MIDI mapping: Paketti:Create Sidechain Trigger Instrument.
Added 8 ready-made sidechain ducking curves that plug into the existing PakettiAutomationCurves LFO Custom Waveform writer. Each shape applies to the currently selected *LFO device in a track DSP chain or sample FX chain β useful inside Mr. Zensphereβstyle sidechain Doofers (Key Tracker β Custom LFO β Compressor) or any rhythm-locked parameter modulation. The pack: EDM Pump (instant drop, exponential recovery), Reverse Pump (slow descent, snap recovery β for cycling LFOs), Double Tap (two pumps per cycle), Triple Tap (three pumps per cycle), Kick Ghost (tiny brief dip near start, mostly flat), Bump Pump (fast drop, two-stage release), Breath Pump (smooth cosine swell), Swing Duck (asymmetric off-beat duck with secondary dip). Menu entries added under Main Menu:Tools:Paketti:DSP:Sidechain Curves:<Name> and DSP Device:Paketti:Sidechain Curves:<Name>. Keybindings added: Global:Paketti:Sidechain Curve <Name> for all 8. MIDI mappings added: Paketti:Sidechain Curve <Name> for all 8. Shapes are also injected into the global PakettiAutomationCurvesShapes table so the existing automation insert pipeline can use them.
Fixed ValhallaVintageVerb's Mix parameter (parameter 1) being set to 0.304 (30.4% wet) instead of 0 (fully dry) when inserted into a Sample FX Chain. The Track FX chain version already correctly set Mix to 0. Also added missing ValhallaDelay and ValhallaShimmer default parameter overrides to the Sample FX chain path β these were only present in the Track FX chain path before.
Moved 6 menu entries from the orphan submenu Main Menu:Tools:Paketti:Pattern into the established Main Menu:Tools:Paketti:Pattern Editor submenu where they belong. Affected entries: Alias Identical Pattern Slots, Clear Pattern Aliases, Copy Delay to All Same Notes in Track, Match Automation with all Aliases, Pattern Delay Viewer, Set Delay for All Same Notes in Track. Also fixed the previously shipped Paketti Export.. β Paketti Export typo in Main Menu β File that caused Batch Convert SF2 to XRNI to appear in a separate rogue submenu.
Added a "Remember to Restart Renoise!" button at the bottom of the Paketti Menu Configuration dialog (Main Menu:Options:Paketti Menu Configuration...). Since the Renoise Lua API does not provide a way to quit or restart Renoise programmatically, this button closes the dialog and shows a status bar reminder that Renoise needs to be restarted for menu changes to take effect.
Fixed a crash when pressing "Apply" in the Paketti Instrument Transpose dialog. The error was unknown property or function 'number_of_lines' for an object of type 'PatternTrack' β the code was accessing number_of_lines on a PatternTrack object, but that property belongs to Pattern. Changed to use pattern.number_of_lines instead.
All Paketti menu entries (including "Paketti Gadgets" submenus in Mixer, Pattern Editor, Sample Editor, Instrument Box, etc.) are now registered in alphabetical order. Previously, menu entries appeared in the order their source files happened to load β which was effectively random and changed unpredictably across Renoise sessions.
How it works: Instead of registering menu entries immediately as each module loads, they are now queued into a pending table. After all modules finish loading, the entire queue is sorted alphabetically by name and then registered in sorted order. This is a two-phase approach: accumulate β sort β flush.
This affects ALL ~500+ menu entries registered via PakettiAddMenuEntry and renoise.tool():add_menu_entry. The -- prefix (disabled/separator entries) is stripped for sorting purposes so disabled entries sort alongside their enabled counterparts. Shortcut hints are still appended during registration.
The "Batch Convert SF2 to XRNI (Per Preset)..." menu entry was incorrectly placed under Main Menu:File:Paketti Export.. (with trailing dots) instead of the standard Main Menu:File:Paketti Export submenu. Fixed the menu path so it appears alongside all other export entries.
Main Menu:File:Paketti Export:Batch Convert SF2 to XRNI (Per Preset)...The Paketti Menu Configuration dialog is now also available under Main Menu:Options:Paketti Menu Configuration..., right next to the existing Paketti Preferences entry. This makes it much easier to discover β previously it was only accessible via Main Menu:Tools:Paketti:!Preferences:Paketti Menu Configuration....
The Switch Note Instrument Dialog (Pattern Editor:Paketti:Switch Note Instrument Dialog...) had a bug where closing the window with the X button didn't actually fully close it β the dialog would pop back up every time you switched tracks, and after a few cycles of this, Renoise would crash.
What was happening: The dialog was leaving invisible "listeners" behind when you X'd it out. Those listeners kept watching for track changes, and every track switch would force the dialog back open. Each reopen left more listeners behind, piling up until Renoise gave up and crashed.
What's fixed: Closing the dialog now properly cleans up after itself no matter how you close it β X button, ESC key, or switching songs. If anything unexpected happens during a refresh, the dialog quietly closes itself instead of crashing. It also no longer tries to scan send tracks, master tracks, or group tracks (which don't have notes and would cause errors).
Inspired by Halebop's gorgeous 8chip Renoise tool, both Paketti's phrase tools gained the classic tracker-arp note motions that were missing.
Paketti Phrase Generator β three new buttons next to Random / Ascending / Descending in the note-order row:
The three shapes auto-sync the dialog's note-count slider so the displayed count stays accurate. Open via Main Menu:Tools:Paketti Gadgets:Phrase Generator....
Musical Chord Progression Arpeggiator β six new named pattern-shape Type buttons (Asc Β· Desc Β· Ping-Pong Β· Down-Up Β· Skip Β· Random) alongside the existing "Straight" and "Looped" permutation modes. Before, picking a 4-note arp meant scrolling through 24 permutations on the canvas grid. Now you click the shape you want and get one clean pattern. Random reshuffles every time you press it β instant inspiration. When a named shape is selected, only one pattern canvas appears (no grid clutter). Open via Main Menu:Tools:Paketti Gadgets:Musical Chord Progression Arpeggiator... or Global:Paketti:Musical Chord Progression Arpeggiator....
Both tools work with any chord, any scale, any instrument β drop them into a phrase, hit play, done.
Big thanks to Halebop for 8chip β go grab it, it's a beauty: https://github.com/halebop17/8chip
No new menu entries, keybindings, or MIDI mappings β both changes extend existing dialogs.
Added delay column fill/randomization to Paketti, both integrated into the existing Fill dialog and as a standalone tool.
Paketti Fill Dialog β New "Fill Delay" checkbox with Delay Min / Delay Max vertical sliders (00-FF). When enabled, filled lines also receive random delay values in the specified range. The delay column is auto-made visible when filling. This works with all existing fill modes (Constant, From-To, Random, Euclidean, etc.).
Standalone Randomize Delay Column Dialog β A dedicated dialog (Main Menu:Tools:Paketti Gadgets:Randomize Delay Column Dialog...) with Min/Max sliders and buttons for Selection and Track operations. Enter key triggers "Randomize Track". Includes clear functions to zero out delay values.
Menu entries added:
Main Menu:Tools:Paketti Gadgets:Randomize Delay Column Dialog...Main Menu:Tools:Paketti:Pattern Editor:Randomize Delay Column (Selection)Main Menu:Tools:Paketti:Pattern Editor:Randomize Delay Column (Track)Main Menu:Tools:Paketti:Pattern Editor:Clear Delay Column (Selection)Main Menu:Tools:Paketti:Pattern Editor:Clear Delay Column (Track)Keyboard shortcuts added:
Global:Paketti:Randomize Delay Column Dialog...Pattern Editor:Paketti:Randomize Delay Column (Selection)Pattern Editor:Paketti:Randomize Delay Column (Track)Pattern Editor:Paketti:Clear Delay Column (Selection)Pattern Editor:Paketti:Clear Delay Column (Track)MIDI mappings added:
Paketti:Pattern Editor:Randomize Delay Column (Selection)Paketti:Pattern Editor:Randomize Delay Column (Track)Paketti:Pattern Editor:Clear Delay Column (Selection)Paketti:Pattern Editor:Clear Delay Column (Track)Paketti:Pattern Editor:Randomize Delay Column DialogThe Function Search (autocomplete) now automatically detects when any .lua file has been modified since the cache was last built, and rebuilds the cache on next open. Previously, newly added menu entries, keybindings, or MIDI mappings would not appear in the Function Search until the user manually rebuilt the cache via Main Menu:Tools:Paketti:!Preferences:Function Search Debug:Rebuild Autocomplete Cache.
Added three Dynamic Views menu entries to Main Menu:Options:
Main Menu:Options:Paketti Dynamic Views 1-3...Main Menu:Options:Paketti Dynamic Views 4-6...Main Menu:Options:Paketti Dynamic Views 7-9...These open the Dynamic View configuration dialogs directly from the Options menu, making it easy to set up your preferred view layouts without navigating through Tools:Paketti:!Preferences.
Added Main Menu:Options:Paketti Function Search... menu entry so that the Function Search dialog is easy to find from the Options menu. The entry invokes pakettiAutocompleteToggle, the same function used by the existing keybinding Global:Paketti:Paketti Function Search... and the Main Menu:Tools:Paketti Gadgets entry.
All three renoise.PatternTrackAutomation.PLAYMODE_* class statics (PLAYMODE_POINTS, PLAYMODE_LINES, PLAYMODE_CURVES) do not exist in API 5 (Renoise 3.1.1) β even reading them causes a fatal std::logic_error at boot. Replaced all 53 references across 6 files with safe global constants PAKETTI_PLAYMODE_POINTS (1), PAKETTI_PLAYMODE_LINES (2), PAKETTI_PLAYMODE_CURVES (3 on API 6+, degrades to 2 on API 5) defined in PakettiCompat.lua using hardcoded numeric values. Files changed: PakettiAutomation.lua, PakettiAutomationCurves.lua, PakettiAutomationStack.lua, PakettiCanvasExperiments.lua, PakettiEQ30.lua, PakettiHyperEdit.lua.
Paketti now supports Renoise 2.8 (API version 4). The module loading in main.lua has been restructured into three clearly separated tiers:
if PAKETTI_API >= 5 then β all slice_markers, phrases, sample_modulation_sets, and sample_device_chains featuresThe manifest is set to <ApiVersion>4</ApiVersion> with <Id>org.lackluster.Paketti28</Id> and <Name>Paketti 2.8</Name>, allowing side-by-side installation with Paketti 3.1 and Paketti 3.5.
Added PAKETTI_HAS_SLICING flag to PakettiCompat.lua. Fixed align_instrument_names() in main.lua to guard sample_device_chains access behind PAKETTI_HAS_DEVICE_CHAINS.
Updated the CI/CD build pipeline so the Renoise 3.1.x legacy build uses a different tool identity, allowing both versions to be installed simultaneously in Renoise's Tools folder.
Changes to the API 5 (Renoise 3.1.x) build:
<Id> changed from org.lackluster.Paketti to org.lackluster.Paketti31 β Renoise uses this to identify tools, so different Ids = side-by-side installation<Name> changed from Paketti to Paketti 3.1 β clearly distinguishes it in Renoise's Tools menu<Version> changed from 3.54 to 3.1 β matches the target Renoise versionUsers running Renoise 3.1.x and 3.5 on the same machine can now have both "Paketti" and "Paketti 3.1" installed without conflicts.
Created PakettiCompat.lua β a single centralised file for all API-version compatibility code. This replaces the scattered renoise.API_VERSION checks throughout the codebase with clean global flags and helper functions.
New file: PakettiCompat.lua β loaded first by main.lua before anything else. Contains:
pakettiSafe*() wrapper functions (previously inline in main.lua): pakettiSafeDeviceShortName, pakettiSafeInfoShortName, pakettiSafeCopyBeatSyncMode, pakettiSafeSetBeatSyncMode, pakettiSafeGetBeatSyncMode, pakettiSafeGetScaling, pakettiSafeAddPointAt, pakettiSetViewStyle, pakettiSafeTriggerPatternLinepakettiSteps(...) β replaces 36 inline (renoise.API_VERSION >= 6) and {...} or nil ternaries for valuebox/slider step propertiespakettiVertSep(vb) β style-aware vertical separator helperPAKETTI_API β cached renoise.API_VERSION value used by all checksPAKETTI_HAS_CANVAS, PAKETTI_HAS_PHRASES, PAKETTI_HAS_TRIGGER_LINE, PAKETTI_HAS_SHORT_NAME, PAKETTI_HAS_BEAT_SYNC_MODE, PAKETTI_HAS_STYLE, PAKETTI_HAS_STEPS, PAKETTI_HAS_SCALING, PAKETTI_HAS_PHRASES_BASIC, PAKETTI_HAS_MODULATION_SETS, PAKETTI_HAS_DEVICE_CHAINSpakettiSafeGetPhrases, pakettiSafeGetModulationSets, pakettiSafeGetDeviceChains, pakettiSafeSetMiddleFrameRefactored 41 files β replaced all 119 renoise.API_VERSION checks with the appropriate PAKETTI_HAS_* flags or PAKETTI_API references. Replaced all 36 inline steps ternaries with pakettiSteps() calls. Every API compatibility check in Paketti now flows through one file.
PakettiTkna.lua sliceDrumKit() now uses pakettiSafeSetBeatSyncMode() to apply beat_sync_mode only on API β₯ 6. On Renoise 3.1.1, percussion/texture beat sync modes are silently skipped instead of crashing. Affects Sample Editor:Paketti:Slice Drumkit (Percussion) and Sample Editor:Paketti:Slice Drumkit (Texture).
steps properties for dual Renoise 3.1.1 / 3.5 compatibilityRestored all 36 steps properties on valuebox and slider widgets across 10 files, wrapped with (renoise.API_VERSION >= 6) and {...} or nil. On Renoise 3.5+ (API 6.2), custom step increments work as designed. On Renoise 3.1.1 (older API), the guard evaluates to nil, which is the same as omitting the property entirely β no crash. Files: PakettiFill.lua (6), PakettieSpeak.lua (5), PakettiPhraseGenerator.lua (5), PakettiStemLoader.lua (5), PakettiEightOneTwenty.lua (4), PakettiStretch.lua (4), PakettiPitchControl.lua (3), PakettiMidi.lua (2), PakettiPCMWriter.lua (1), PakettiAudioProcessing.lua (1).
Added 12 new "Flood" variants of Write Notes. Unlike the standard Write Notes functions (which only write notes that have sample mappings), the Flood variants write ALL 120 notes (C-0 through B-9) regardless of whether the instrument has samples mapped to those notes. This is useful for "flooding" a pattern with note data that doesn't necessarily need to trigger a sample β for example, controlling external MIDI gear, testing, or creative purposes.
New keybindings (all Pattern Editor:Paketti: scope):
Write Notes Flood Ascending / Descending / RandomWrite Notes Flood EditStep Ascending / Descending / RandomWrite Notes Flood Pro Ascending / Descending / Random (multi-column selection via selection_in_pattern_pro)Write Notes Flood Pro EditStep Ascending / Descending / RandomNew menu entries under Pattern Editor:Paketti:Write Notes::
The Flood Pro variants use selection_in_pattern_pro() and silently skip group/send/master tracks and effect columns, same as the existing Pro variants.
Fixed crashes in PakettiExperimental_Verify.lua where has_line_notifier(), add_line_notifier(), and remove_line_notifier() were called on PatternTrack objects (returned by pattern:track(idx)). These methods only exist on Pattern objects, not PatternTrack. The SBx loop analyzer (sbx_add_line_notifiers / sbx_remove_line_notifiers) now uses a single Pattern-level notifier instead of per-PatternTrack notifiers. The Pattern notifier callback already receives pos.track, so no functionality is lost.
Refactored writeNotesMethod and writeNotesMethodEditStep (PakettiPatternEditor.lua) into a shared writeNotesCore function. When a selection exists, notes are now written across ALL note columns in the highlighted selection (across multiple tracks if selected), not just the column where the cursor sits. Effect columns in the selection are silently skipped. If the selection contains only effect columns, the user sees "No note columns in selection. Effect columns cannot contain notes." When no selection exists, the previous behavior is preserved: cursor must be on a note column, writes from cursor to end of pattern.
Affects all six Write Notes variants:
Pattern Editor:Paketti:Write Notes AscendingPattern Editor:Paketti:Write Notes DescendingPattern Editor:Paketti:Write Notes RandomPattern Editor:Paketti:Write Notes EditStep AscendingPattern Editor:Paketti:Write Notes EditStep DescendingPattern Editor:Paketti:Write Notes EditStep RandomAdded 6 new "Pro" Write Notes variants that write across ALL selected note columns in a selection_in_pattern highlight, spanning multiple tracks. These use selection_in_pattern_pro() to identify every selected note column across all selected tracks. Group tracks, send tracks, master tracks, and effect columns are gracefully skipped β no errors.
Behavior:
New keybindings (Pattern Editor:Paketti:...):
Write Notes Pro AscendingWrite Notes Pro DescendingWrite Notes Pro RandomWrite Notes Pro EditStep AscendingWrite Notes Pro EditStep DescendingWrite Notes Pro EditStep RandomNew menu entries under Pattern Editor:Paketti:Write Notes: with matching names.
Also refactored shared note-building and ordering logic into helper functions buildNotesList() and orderNotes() in PakettiPatternEditor.lua.
Both writeNotesMethod and writeNotesMethodEditStep (PakettiPatternEditor.lua) now respect the highlighted selection in the pattern editor. Previously, these functions always wrote from the cursor position to the end of the pattern. Now, if a selection exists (selection_in_pattern), notes are written only within the selected range. If no selection exists, the old behavior (cursor to end of pattern) is preserved.
This affects all six Write Notes variants:
Pattern Editor:Paketti:Write Notes AscendingPattern Editor:Paketti:Write Notes DescendingPattern Editor:Paketti:Write Notes RandomPattern Editor:Paketti:Write Notes EditStep AscendingPattern Editor:Paketti:Write Notes EditStep DescendingPattern Editor:Paketti:Write Notes EditStep RandomFixed a crash in both loadNewWithCurrentSliceMarkers and loadNewWithCurrentSliceMarkersLengthMatching (PakettiLoaders.lua) where scaling slice marker positions could produce a value of 0 after rounding. Renoise requires slice positions to be >= 1, so assigning a 0 caused logic_error: 'invalid slice sample position index 0, valid values are 1 to ...'. Both functions now clamp markers to >= 1, sort them in ascending order, and remove duplicates before applying.
Instrument Box:Paketti:Load:Load New Instrument with Current Slice MarkersInstrument Box:Paketti:Load:Load New Instrument with Current Slice Markers (Length Matching)Five additional robustness improvements to the SBx Pattern Loop Hack (PakettiExperimental_Verify.lua):
playing_observable notifier: Repeat counts and state are now reset instantly when playback stops via transport.playing_observable, instead of waiting for the next idle callback to notice. This eliminates the brief window where stale state could persist.
Live re-analysis on pattern edits: Line edit notifiers are installed on the currently-playing pattern's tracks. When the user adds, removes, or modifies SBx commands during playback, the monitor detects the change and re-analyzes on the next idle tick β preserving repeat counts for unchanged loop pairs.
Fixed double analysis in reset_repeat_counts(): Previously called analyze_loops() and then InitSBx() which called analyze_loops() again. Now analyzes once and directly ensures the idle notifier is active.
Status bar feedback: During playback, the status bar now shows SBx: loop 2/5 (lines 8-16) when a loop triggers, giving visual confirmation that SBx is working.
Proper cleanup on disable/document change: disable_monitoring() and PakettiSBxNewDocumentHandler() now remove line edit notifiers and reset the sbx_needs_reanalyze flag, preventing stale notifiers from accumulating across songs or toggle cycles.
Complete rewrite of the SBx Pattern Loop Hack (PakettiExperimental_Verify.lua) for reliability and performance:
Scans all tracks: SB0/SBx commands are now detected across ALL sequencer tracks, send tracks, and master track, in ALL effect columns β not just the Master Track's first effect column. This matches Impulse Tracker behavior where SBx is a global pattern command.
O(1) playback lookup: Analysis pre-builds a hash table keyed by SBx end-line numbers. During playback, the idle callback does a simple table lookup per line instead of iterating all pairs β zero overhead when no SBx is on the current line.
First-tick coverage: On playback start or pattern wrap, the monitor now checks the range [1, current_line] instead of only [current_line, current_line], preventing missed SBx commands if the first idle tick fires late.
Repeat counts reset on stop: When playback stops, all repeat counts are immediately reset. Previously they survived across stop/start cycles, causing loops to resume mid-count.
Correct initialization order: playPattern() (Impulse Tracker F6) now initializes SBx monitoring AFTER setting the playback position, so the correct pattern is analyzed.
Preference sync: Replaced ambiguous monitoring_enabled with sbx_monitoring_enabled to avoid shadowing the same variable name used in PakettiAutoSamplify.lua. State now always syncs from preferences.PakettiSBxFollowEnabled.
All previous fixes retained: Playing-pattern-vs-selected-pattern, range-based line checking, stale-pairs-across-patterns, off-by-one reset, and wrap detection β all carried forward from the prior commit.
Files changed: PakettiExperimental_Verify.lua, PakettiImpulseTracker.lua.
Removed PakettiM8Export.lua and PakettiOP1Export.lua entirely. Both modules were already disabled (commented out in main.lua) and non-functional. They have been fully deleted along with all references in the autocomplete cache, preferences, and manual documentation.
Files removed: PakettiM8Export.lua, PakettiOP1Export.lua.
Files changed: main.lua (removed commented-out require lines), preferences.xml (cleared stale M8 reference), autocomplete_cache.txt (removed 18 cached entries), manual/Experimental.md (removed M8 and OP-1 documentation sections).
Added Batch Sample Adjust Dialog β converts ALL samples in the selected instrument at once, combining sample rate, bit depth, channel mode, and phase inversion into a single pass. Previously, Paketti had batch conversion for bit depth and mono/stereo separately, and the single-sample "Paketti Sample Adjust" dialog for combined settings β but no unified batch version. Now there is.
The dialog scans the instrument to show a summary (sample count, most common format) and defaults to the most common settings. Uses ProcessSlicer for non-blocking operation with a progress indicator. All sample properties (name, volume, panning, transpose, fine tune, beat sync, loop, keyzone mapping, etc.) are preserved through the conversion.
Menu entries: Sample Editor:Paketti Gadgets:Batch Sample Adjust Dialog..., Sample Navigator:Paketti Gadgets:Batch Sample Adjust Dialog..., Sample Mappings:Paketti Gadgets:Batch Sample Adjust Dialog..., Instrument Box:Paketti Gadgets:Batch Sample Adjust Dialog..., Main Menu:Tools:Paketti:Paketti Gadgets:Batch Sample Adjust.
Keybindings: Sample Editor:Paketti:Batch Sample Adjust Dialog..., Global:Paketti:Batch Sample Adjust Dialog..., Sample Keyzones:Paketti:Batch Sample Adjust Dialog....
MIDI mapping: Paketti:Batch Sample Adjust Dialog....
Files changed: PakettiAudioProcessing.lua (new functions: show_batch_sample_adjust_dialog, batch_sample_adjust_process), PakettiMenuConfig.lua, PakettiMainMenuEntries.lua.
Added Nudge Sequence Selection β select a range of sequence slots (rows) in the Pattern Sequencer/Matrix, then nudge the entire block up or down one row at a time. Each keypress moves the whole selection by 1 position, so tapping down 5 times moves the block down 5 rows. The selection follows the block automatically. If no selection exists, nudges the current single sequence slot. Mute states are preserved through the move.
Optimization (2026-04-06): Completely rewritten to move sequence slot references (insert_sequence_at / delete_sequence_at) instead of copying all pattern data line-by-line. The old approach iterated every line of every track of every column, causing multi-second freezes with the macOS beachball on large songs. The new approach is O(1) regardless of pattern size or track count β it just relocates which pattern index lives at which sequence position.
Menu entries: Pattern Sequencer:Paketti:Nudge Sequence Selection Down, Pattern Sequencer:Paketti:Nudge Sequence Selection Up, Pattern Matrix:Paketti:Nudge Sequence Selection Down, Pattern Matrix:Paketti:Nudge Sequence Selection Up, Pattern Editor:Paketti:Nudge Sequence Selection Down, Pattern Editor:Paketti:Nudge Sequence Selection Up.
Keybindings: Global:Paketti:Nudge Sequence Selection Down, Global:Paketti:Nudge Sequence Selection Up, plus Pattern Sequencer, Pattern Matrix, and Pattern Editor scoped variants.
MIDI mappings: Paketti:Nudge Sequence Selection Down, Paketti:Nudge Sequence Selection Up.
Files changed: PakettiPatternMatrix.lua (PakettiNudgeSequenceSelectionDown, PakettiNudgeSequenceSelectionUp rewritten).
Added Filter Mode to the Launch App system. Each of the 6 app slots can now be toggled to filter mode, allowing CLI tools (sox, ffmpeg, shell scripts) to process samples non-blockingly and return the result as a new instrument or new sample slot.
How it works: Enable the "Filter Mode" checkbox next to any app slot in the Launch App dialog. Enter arguments in the Args textfield using $infile and $outfile placeholders (e.g. $infile -r 8000 $outfile for sox). When you click "Send Selected Sample to App" or "Send Sample Range to App", instead of launching a GUI application, Paketti saves the sample to a temp WAV, runs the CLI command in the background (non-blocking), polls for completion, and loads the result back into Renoise. The processed audio creates either a new pakettified instrument or a new sample slot, controlled by the "Filter Output" preference in the dialog.
New preferences (25 total): FilterMode1βFilterMode6 (checkbox per slot), FilterArgs1βFilterArgs6 (arguments template per slot), FilterUseStdin1βFilterUseStdin6 (reserved for v2), FilterUseStdout1βFilterUseStdout6 (reserved for v2), FilterOutputMode (popup: "New Instrument" or "New Sample Slot").
New functions: getSlotIndexForAppPath(), filterBuildCommand(), filterProcessPoll(), filterLoadResult(), filterExecuteAsync(), filterSendSample(), filterSendSampleRange(). The existing saveSelectedSampleToTempAndOpen and saveSelectedSampleRangeToTempAndOpen functions transparently redirect to the filter pipeline when filter mode is enabled for a slot β no changes needed to the 20+ menu/keybinding/MIDI invoke closures.
Dialog changes: Each app slot row now has a filter controls row beneath it (Filter Mode checkbox, Args textfield, stdin/stdout checkboxes greyed out for v2). A new "Filter Output" popup at the top of the dialog controls whether processed audio becomes a new instrument (pakettified) or a new sample slot.
Files changed: PakettiLaunchApp.lua (309 lines added), Paketti0G01_Loader.lua (25 new preferences + safety defaults).
Fixed a boot crash where main.lua called PakettiAddMenuEntry at lines 511 and 522 β before Paketti0G01_Loader.lua (which defines that function) was loaded at line 1048. The two affected menu entries (Main Menu:Tools:Paketti:!Preferences:Which Sub-Column? and Main Menu:Tools:Paketti:!Preferences:Toggle Timed Require Debug) now use direct renoise.tool():add_menu_entry calls instead, fixing the variable 'PakettiAddMenuEntry' is not declared error that prevented the entire tool from loading.
The Paketti Menu Configuration dialog (Main Menu β Tools β Paketti β Paketti Menu Configuration...) lets you uncheck entire right-click menu contexts to reduce clutter β Disk Browser, DSP Device, Sample Editor, Main Menu (Tools/File/View), Pattern Editor, Mixer, and so on. But until today, unchecking things did absolutely nothing. You'd uncheck a context, restart Renoise, and the menus were still there. Here's what was wrong and what got fixed:
Bug 1 β The toggles never actually toggled. Every conditional check was written as if preferences.pakettiMenuConfig.MainMenuTools then β but in Renoise's preference system, that's checking if the preference object exists (it always does), not whether the user set it to true or false. All 278 checks were fixed to if preferences.pakettiMenuConfig.MainMenuTools.value then.
Bug 2 β Hundreds of menus bypassed the system entirely. 529 menu entries in PakettiMenuConfig.lua and ~500 more across 88 other files were registered unconditionally β they never checked any preference at all. All were wrapped in proper preference checks or routed through the PakettiAddMenuEntry wrapper that respects Menu Configuration.
Bug 3 β 4 Automation Curve entries still used direct registration. Four Track Automation:Paketti:Automation Curves:... entries in PakettiAutomation.lua bypassed the system. Fixed to use PakettiAddMenuEntry.
Bonus β Dialogs now tell you what's going on. Both Menu Configuration and Paketti Toggler dialogs now show a bold notice: "Note: Changes will only take effect after Renoise has been restarted."
How to use it: Open Tools β Paketti β Paketti Menu Configuration..., uncheck any contexts you don't want (e.g. uncheck "Disk Browser Menus" to remove all Paketti entries from the Disk Browser right-click menu), close the dialog, restart Renoise. The menus will be gone. Every single Paketti menu entry β all 2,200+ of them β now respects these toggles.
Added a new Version Compatibility section to the manual explaining which Renoise versions Paketti supports and what features are available on each. Every release now ships two builds: one for Renoise 3.2+ and one legacy build for Renoise 3.1.x. Both are available on the Releases page. Features gracefully scale up with your Renoise version β buttons, menus, keybindings, and MIDI mappings for unsupported features are automatically hidden.
New feature that is the inverse of "Replace Selection with Phrase" β push the selected phrase's content into the pattern at the current edit cursor position. Designed for quickly accessing breakbeat pattern libraries stored as instrument phrases without the usual copy/paste workflow.
Unlike the existing "Convert Phrase to Pattern" (which always writes at line 1 and overlays onto existing data), "Dump Phrase to Pattern at Cursor" clears the destination lines first for a clean overwrite, writes at whatever line your cursor is on, expands pattern length / columns / sub-column visibility as needed, and stamps the correct instrument value on every note.
Global:Paketti:Dump Phrase to Pattern at Cursor, Pattern Editor:Paketti:Dump Phrase to Pattern at CursorMain Menu:Tools:Paketti..:PhraseGrid:Pattern Integration:Dump Phrase to Pattern at Cursor, Pattern Editor:Paketti:PhraseGrid:Dump Phrase to Pattern at Cursor, Phrase Editor:Paketti:PhraseGrid:Dump to Pattern at CursorPaketti:Dump Phrase to Pattern at Cursor [Trigger]Paketti now supports Renoise 3.1.x through runtime API gating and a consolidated CI workflow that produces two .xrnx files per release.
Runtime gating (code changes across 19 files):
beat_sync_mode (API 6 / Renoise 3.2+ only) β 73 direct property accesses replaced with safe helpers across 13 unconditionally-loaded modules:
pakettiSafeCopyBeatSyncMode(dst, src) β copies beat_sync_mode between samples (no-op on API 5)pakettiSafeSetBeatSyncMode(sample, mode) β sets beat_sync_mode (no-op on API 5)pakettiSafeGetBeatSyncMode(sample) β reads beat_sync_mode (returns nil on API 5)Automation point .scaling (API 6 / Renoise 3.2+ only) β 40 property accesses replaced across 4 files:
pakettiSafeGetScaling(point) β returns point.scaling on API 6+, 0 on API 5pakettiSafeAddPointAt(automation, time, value, scaling) β wraps add_point_at with/without scaling argkey_handler_options (API 6 / Renoise 3.2+ only) β gated in PakettiOpenMPTLinearKeyboardLayer.lua with fallback to 3-arg show_custom_dialog on API 5
beat_sync_mode_observable β gated behind renoise.API_VERSION >= 6 in PakettiEightOneTwenty.lua
CI workflow consolidation (.github/workflows/main.yml):
org.lackluster.Paketti_V3.54_TIMESTAMP.xrnx β API 6, Renoise 3.2+org.lackluster.Paketti_V3.54_API5_TIMESTAMP.xrnx β API 5, Renoise 3.1.xDevice chain preset files (.xrdp/.xrnt) that contain v2 DSP devices are now properly gated on Renoise 3.2.
PakettiDeviceChains.lua:
Global:Paketti:Load Device Chain ClippyClip) now gated behind if renoise.API_VERSION >= 6.1 β ClippyClip.xrdp contains Distortion2Deviceif renoise.API_VERSION >= 6.1 β these .xrdp files contain DigitalFilterDevicePakettiRandomDeviceChain) now filters out 7 known v2-only preset files on API < 6.1 (ClippyClip variants, hipass_lopass_dcoffset, Low - High Cut variants)All "v2" DSP devices (Chorus 2, Comb Filter 2, Digital Filter, Distortion 2, Flanger 2, Gate 2, LofiMat 2, mpReverb 2, Phaser 2, RingMod 2) β introduced in Renoise 3.3 (API 6.1) β are now fully gated so Renoise 3.2 users never see keybindings, menu entries, or MIDI mappings for devices that don't exist in their version.
PakettiLoaders.lua:
Global:Track Devices:Load Renoise Chorus 2, etc.) moved into if renoise.API_VERSION >= 6.1 blocknativeDevices table split: base table has v1 devices only; v2 devices added conditionally on API >= 6.1PakettiMidi.lua:
target_devices table into conditional API >= 6.1 block β their MIDI mappings are only registered on Renoise 3.3+PakettiControls.lua:
target_devices table and added conditionally on API >= 6.1 β device enable/disable/toggle keybindings for v2 devices only appear on 3.3+PakettiPresetPlusPlus.lua:
HipassPlusPlus() now checks API version and shows a warning + returns early on Renoise < 3.3 (Digital Filter not available)PakettiMetaSynth.lua (comprehensive v1 fallbacks):
"Lofimat 2" β (API >= 6.1) and "Lofimat 2" or "LofiMat"constraint_map now maps both v1 and v2 device names to constraint togglesPakettiMetaSynthFXDeviceList split: base list + conditional v2 or v1 equivalentsPakettiMetaSynthSafeFXDevices full v1/v2 conditional blockPakettiMetaSynthHeavyFXDevices uses ternary for mpReverb 2 β mpReverbPakettiMetaSynthSelectableFXTypes uses _v2 variable for all device referencesdevice_pool uses ternary for Chorus 2 β ChorusPakettiImageToSample.lua:
if renoise.API_VERSION >= 6.2; shows "Waveform preview requires Renoise 3.5+" text on older versionsPakettiSliceEffectStepSequencer.lua:
if renoise.API_VERSION >= 6.2 blockPakettiMenuConfig.lua:
main.lua:
14 Dialog of Dialogs entries that reference functions from API 6.2-only modules (Canvas, Phrases, EQ30, HyperEdit, etc.) are now properly gated behind if renoise.API_VERSION >= 6.2. On Renoise 3.2β3.4, these dialogs are completely invisible instead of appearing as non-functional buttons that crash with "variable 'X' is not declared".
Entries moved into the API 6.2 gate:
PCMWriterDialog β PCMWriterShowPcmDialog)Defensive fix in execute_dod_selection():
_G[func] to rawget(_G, func) to bypass Renoise's strict global access metatable. If a dialog function is somehow missing (e.g. module not loaded), this now shows a friendly warning instead of crashing with a Lua error.Two remaining unguarded API 6.2 features found and fixed during comprehensive audit:
show_phi_interval_circle() used vb:canvas (API 6.2 only) without a version gate. Now shows a warning and returns early on Renoise < 3.5. Menu entry, keybinding, and button in tuning dialog are safe (the function handles the guard internally).song:trigger_pattern_line() (API 6.2 only) were unguarded: in pakettiPlayerProTranspose (playback mode), pakettiPlayerProTransposeAllInstruments (playback mode), and scan_next_line (Scanner). All now wrapped in if renoise.API_VERSION >= 6.2. On older Renoise, transpose still works but line preview is silently skipped; scanner skips note preview.Comprehensive audit and fix for API 6.1+ features used in unconditionally-loaded modules, ensuring Paketti works on Renoise 3.2 (API 6.0) without crashes.
main.lua β New global helper functions:
pakettiSafeDeviceShortName(device) β safe accessor for AudioDevice.short_name (added in API 6.1). Falls back to display_name or name on older Renoise versions.pakettiSafeInfoShortName(info) β safe accessor for AudioDeviceInfo/PluginInfo .short_name. Falls back to name or extracts from path on older versions.PakettiExperimental_BlockLoopFollow.lua β CRITICAL fix:
tool_finished_loading_observable (API 6.1 only) now gated with if renoise.API_VERSION >= 6.1. Falls back to app_new_document_observable on older versions. This previously prevented the entire tool from loading on Renoise 3.2.All .short_name accesses replaced across 8 files:
get_device_name() helper now uses pakettiSafeDeviceShortName()tostring() on favorite_name/is_bridged/is_favoriteFinderShower2() device matching, FinderShowerByPath() error messages, User Preferences load/save debug output, User Preferences dialog device groupingPakettiLoaders.lua β Device list fixes:
nativeDevices table (it's API 6.2 only)table.insert for "Notepad" and "Splitter" behind if renoise.API_VERSION >= 6.2, so their menu entries only appear on Renoise 3.5+Fixed backwards compatibility for Renoise versions older than 3.5 (API < 6.2). Canvas-based features now properly check the API version before executing, preventing crashes on Renoise 3.2β3.4.x.
PakettiChebyshevWaveshaper.lua:
Global:Paketti:Show Chebyshev Polynomial Waveshaper, Sample Editor:Paketti:Show Chebyshev Polynomial Waveshaper) are now wrapped in if renoise.API_VERSION >= 6.2 β they will no longer appear on older Renoise versionsshow_chebyshev_waveshaper() as a defensive fallbackPakettiForeignSnippets.lua:
pakettiSampleVisualizerDialog() (canvas sample visualizer β currently commented-out registrations, but now safe if re-enabled)PakettiPlayerProSuite.lua:
if renoise.API_VERSION >= 6.2 checks β no changes neededAdded extensive new features from Christian Lange's "Phi Music System 7/10" spreadsheet β a system bridging 10 equal divisions of the octave with Phi^(n/7) tuning, developed over many years of research rooted in Viktor Schauberger's mathematical principles.
3 New Tuning Presets:
New Wavetable Generator:
3 New Tool Dialogs:
Menus (per location: Main Menu + Instrument Box):
Microtonal Tunings β Apply 10-TET Decagono (Lange)Microtonal Tunings β Apply Phi 7/10 Hybrid (Lange)Microtonal Tunings β Apply Lange Phi Music System (304.295 Hz)Microtonal Tunings β Generate Phi Harmonic Strings Wavetable (Lange)Microtonal Tunings β Phi Sum/Product Chord Builder (Lange)...Microtonal Tunings β Phi Interval Circle...Microtonal Tunings β Phi Tuning-Aware Note Display...Keybindings:
Global:Paketti:Apply 10-TET Decagono Lange TuningGlobal:Paketti:Apply Phi 7/10 Hybrid Lange TuningGlobal:Paketti:Apply Lange Phi Music System TuningGlobal:Paketti:Phi Harmonic Strings Wavetable LangeGlobal:Paketti:Phi Sum Product Chord Builder LangeGlobal:Paketti:Phi Interval Circle VisualizationGlobal:Paketti:Phi Tuning-Aware Note DisplayMIDI Mappings:
Paketti:Microtonal Tunings:Apply 10-TET Decagono LangePaketti:Microtonal Tunings:Apply Phi 7/10 Hybrid LangePaketti:Microtonal Tunings:Apply Lange Phi Music SystemPaketti:Microtonal Tunings:Phi Harmonic Strings WavetableAdded Trim Selected Sample to Selection and Normalize β a combined operation that first trims the selected sample to the current selection range in the Sample Editor, then immediately normalizes the trimmed result. This is a common two-step workflow now available as a single action.
Global:Paketti:Trim Selected Sample to Selection and NormalizeMain Menu β Tools β Paketti β Samples β Trim Selected Sample to Selection and NormalizeSample Editor β Paketti β Process β Trim Selected Sample to Selection and NormalizePaketti:Trim Selected Sample to Selection and NormalizeAdded Destructive Clean Render In Place β a variant of Clean Render In Place that also strips all DSP devices from the rendered tracks after rendering. Once the audio is bounced with all effects baked in, the original DSP chains are no longer needed, so this removes them automatically.
Available for both the Pattern Editor and the Pattern Matrix:
Pattern Editor:
Pattern Editor:Paketti:Destructive Clean Render In PlacePattern Editor β Paketti β Clean Render β Destructive Clean Render In PlacePaketti:Destructive Clean Render In PlacePattern Matrix:
Pattern Matrix:Paketti:Destructive Clean Render Matrix In PlaceGlobal:Paketti:Destructive Clean Render Matrix In PlacePattern Matrix β Paketti β Destructive Clean Render Matrix In PlacePaketti:Destructive Clean Render Matrix In PlaceThe status bar reports exactly what was cleaned up, e.g. "deleted 3 unused instruments, stripped 7 DSP devices".
Added Clean Render Matrix In Place β the Pattern Matrix equivalent of Clean Render In Place. Select slots in the Pattern Matrix, trigger the function, and it will:
Works with single or multiple tracks. The instrument is named to show the sequence range and track names (e.g. "Clean Matrix Render S01-S04 (Bass+Pad+Lead)").
Pattern Matrix:Paketti:Clean Render Matrix In PlaceGlobal:Paketti:Clean Render Matrix In PlacePattern Matrix:Paketti:Clean Render Matrix In PlacePaketti:Clean Render Matrix In PlaceFixed two issues with Clean Render In Place:
+12dB headroom compensation: The rendered sample now has its volume set to +12dB (math.db2lin(12)) to match Renoise's native "Render Selection To Sample" behavior. Previously the rendered sample sounded quieter because no headroom compensation was applied.
Multitrack rendering: Selecting across multiple tracks now renders ALL selected tracks together (by soloing all of them during render), clears notes on ALL selected tracks, and places the C-4 on the first track. Previously only the first track was rendered and the others were left intact. Instruments are now collected from all selected tracks for the unused-instrument cleanup. The instrument name includes all rendered track names when multitrack (e.g. "Clean Render L1-L16 (Track 01+Track 02+Track 03)").
Pattern Editor:Paketti:Clean Render In PlacePattern Editor:Paketti:Clean Render:Clean Render In PlacePaketti:Clean Render In PlaceAdded Clean Render In Place β a one-keybind workflow that renders the selected pattern area, clears the original notes, places a C-4 note with the rendered instrument at the start of the selection, and automatically deletes any instruments that were only used in that selection and are now unused anywhere in the song. This replaces the manual process of: render selection β Ctrl+X β delete unused instruments β fix instrument references.
The render uses the same engine and preferences as the existing Render Pattern Selection (sample rate, bit depth, interpolation, DC Offset). After rendering, instrument indices are automatically adjusted so the C-4 note always points to the correct rendered instrument even after unused instruments are deleted and indices shift.
Pattern Editor:Paketti:Clean Render In PlacePattern Editor:Paketti:Clean Render:Clean Render In PlacePaketti:Clean Render In PlaceAdded 10 keyboard shortcuts for triggering Dynamic Macro Toolbar slots directly, without opening the dialog. Each keybinding calls the same logic as the existing MIDI mappings β build the action list and execute the action assigned to that slot.
Global:Paketti:Dynamic Macro Toolbar Trigger Slot 01 through Slot 10Added Replace Selection with Phrase β select a region in the Pattern Editor and instantly convert it into a phrase while replacing the original notes with a single phrase trigger. The selection is copied into a new phrase on the current instrument (with matching note/effect columns, sub-column visibility, and LPB), then the selected rows are cleared and a C-4 note with a Zxx phrase-trigger command is written at the first line. Phrase playback mode is automatically set to Selective so the Zxx command works immediately. The new phrase is selected in the UI so you can edit it right away.
Pattern Editor:Paketti:Replace Selection with PhraseGlobal:Paketti:Replace Selection with PhraseMain Menu:Tools:Paketti..:PhraseGrid:Pattern Integration:Replace Selection with PhrasePattern Editor:Paketti:PhraseGrid:Replace Selection with PhrasePaketti:Replace Selection with Phrase [Trigger]Added a dedicated Selection to Phrase feature that grabs whatever you've selected in the Pattern Editor and turns it into a new phrase on the selected instrument. Select a region, fire the shortcut, and you've got a phrase β complete with the same number of note columns, effect columns, volume/panning/delay sub-column visibility, and your current LPB. The phrase is set to loop by default and named with the source pattern and line range for easy identification.
Also fixed the existing Pattern to Phrase function: instrument column values are now correctly cleared when copying to a phrase (previously, the song instrument index was copied raw into the phrase's sample-index column, which could cause wrong samples to play). Both functions now support undo.
Pattern Editor:Paketti:Selection to PhraseMain Menu:Tools:Paketti..:PhraseGrid:Pattern Integration:Selection to PhrasePattern Editor:Paketti:PhraseGrid:Selection to PhrasePaketti:Selection to Phrase [Trigger]Global:Paketti:Pattern to Phrase β now also fixes instrument column, adds undo, copies sub-column visibilityRemoved unnecessary padding from four dialogs so they take up less screen space:
All four now use Renoise's default compact layout with no extra margins.
Previously, when you generated a sine wave or an amplitude-modulated sine wave using the built-in generators, the resulting sample ignored all of your Paketti Loader preferences β interpolation was left at Renoise's default instead of your chosen setting (e.g. Sinc), and oversample, autofade, autoseek, new note action (NNA), oneshot, and loop release were all at factory defaults regardless of what you had configured. Now both generators apply your full Paketti Loader settings to every sample they create, so generated waveforms behave consistently with loaded samples right out of the box.
Previously, selecting SF2, RX2, PTI, ITI, or IFF files in Fuzzy Sample Search only showed a status message saying "Use the menu loader" β the existing Paketti loaders were not wired up. Now all formats load immediately when selected:
import_sf2() (PakettiSF2Loader.lua)rx2_loadsample() (PakettiRX2Loader.lua) β REX and RX2 now share the same loaderpti_loadsample() (PakettiPTILoader.lua)iti_loadinstrument() (PakettiITIImport.lua)loadIFFSample() (PakettiIFFLoader.lua)importMPC2000Sample() (PakettiAkaiMPC2000.lua)Also added 4 new file extensions to the scan list: ogg, 8svx, 16sv, snd. Total supported formats: 18 (up from 14).
Fixed a race condition in the Chebyshev Waveshaper where rapidly dragging sliders with auto-preview enabled would crash with finalize_sample_buffer_changes called without prepare_sample_data_changes. The root cause was concurrent ProcessSlicer coroutines: each slider drag started a new async processing coroutine without stopping the previous one, causing their prepare/finalize buffer locks to interleave and corrupt each other. The fix tracks the active slicer in a module-level variable and explicitly stops it (with safe cleanup of any outstanding buffer prepare) before starting a new preview cycle. All code paths that restore sample data (reset, toggle preview off, apply) now also stop any in-flight slicer first.
Fixed the Dynamic Macro Toolbar crashing on open with unknown property or function 'menu_entries'. The Renoise API does not expose renoise.tool().menu_entries or renoise.tool().keybindings for enumeration β those properties don't exist. Rewrote the action list builder to use the existing create_button_list() function (now made global) which provides 170+ Paketti dialog actions. Also fixed create_button_list being local in PakettiMainMenuEntries.lua so it's accessible from other modules.
Added a new Dynamic Macro Toolbar: a 2Γ5 grid of configurable buttons, each assignable to any Paketti dialog action (170+ dialogs from the Dialog of Dialogs list). Toggle Edit Mode to reveal per-slot popup selectors for assigning actions. Supports named preset save/load/delete (stored in DynamicMacroToolbar_Presets/ directory). All 10 slots are individually MIDI-mappable.
New menu entries:
Main Menu:Tools:Paketti Gadgets:Dynamic Macro Toolbar...Pattern Editor:Paketti Gadgets:Dynamic Macro Toolbar...Mixer:Paketti Gadgets:Dynamic Macro Toolbar...Sample Editor:Paketti Gadgets:Dynamic Macro Toolbar...New keybinding:
Global:Paketti:Dynamic Macro Toolbar ToggleNew MIDI mappings:
Paketti:Dynamic Macro Toolbar:Trigger Slot 01 through Trigger Slot 10New preferences: PakettiDMTSlot01 through PakettiDMTSlot10 β store the assigned action for each toolbar slot.
Also added to the Dialog of Dialogs list as "Dynamic Macro Toolbar".
Added a Snap Grid option to the Real-Time Slice feature. When enabled, slice markers are automatically snapped to the nearest musical grid position (1/4, 1/8, 1/16, 1/32, or 1/64 note) based on the song BPM and sample rate. Works with both beat-synced and non-beat-synced samples.
New preference: Paketti Preferences β Real-Time Slice β Snap Grid popup (Off, 1/4, 1/8, 1/16, 1/32, 1/64). Default: Off (existing behavior preserved).
The snap calculation uses the song's current BPM to determine grid frame positions. For beat-synced samples, it uses the beat_sync_lines and LPB to compute the correct musical grid within the sample's stretched duration.
Fixed a crash (std::logic_error: invalid note_column index '0') in writeNotesMethod and writeNotesMethodEditStep when the cursor was on an effect column instead of a note column. song.selected_note_column_index returns 0 in that case, and passing 0 to note_column() is invalid (valid range is 1β12). Both functions now check for this and show a status message ("Please select a note column first.") instead of crashing.
Affected keybindings (Pattern Editor β Paketti):
Write Notes AscendingWrite Notes DescendingWrite Notes RandomWrite Notes EditStep AscendingWrite Notes EditStep DescendingWrite Notes EditStep RandomMajor expansion of the Microtonal Tunings system with new instrument generators, wavetable generators, composition tools, and sacred geometry waveforms.
New Tuning Presets (4 sacred geometry tunings added):
New Wavetable Generators:
Spectral Morph JI-to-Golden β 12 positions morphing from Just Intonation triad to Golden triadTuning History Wavetable β 12 positions representing the history of tuning: Pythagorean, Werckmeister, Meantone, Just, Kirnberger, 12-TET, 24-TET, through to GoldenSacred Geometry Wavetable β 12 positions each using a different irrational constant (phi, pi, e, sqrt(2), silver ratio, sqrt(3), sqrt(5), phi^2, ln(2), phi/pi, e/phi, pi*phi)New Instrument Generators:
Golden Drone Pad β 7 drones with golden-ratio partials and slow amplitude modulation, 4 seconds each, with Golden Pythagorean tuning auto-appliedGolden Binaural Beats β 12 stereo samples (C3βG4) where left/right channels differ by golden-ratio Hz, creating theta-wave binaural beating for meditationFull Colundi (128 frequencies) β all 128 Colundi sequence frequencies across the audible spectrum, with Colundi tuning appliedNew Composition Tools:
Golden Chord Library β dialog with 6 golden-ratio chord types (Golden Major, Minor, Power, Sixth, Sus, Stacked 3rds), insert at cursor or all on successive linesGolden Ratio Tempo/Rhythm β dialog showing BPM * phi and BPM / phi, golden pattern lengths (64/phi=40, 128/phi=79), write golden-ratio delay values to patternGolden Arpeggio Phrases β generates 6 phrase presets (Triad Up/Down, Scale Up/Down, Penta, Shimmer) using golden scale degreesTuning Comparison A/B β duplicates selected instrument, lets you apply different tunings to each copy and switch between themNew PCMWriter Waveforms (4 sacred geometry types):
pi_harmonic β partials at pi, pi^2, pi^3...e_harmonic β partials at e, e^2, e^3...silver_ratio β partials at silver ratio powerssqrt2_tritone β partials at sqrt(2) powers (tritone as harmonic generator)All new features available via Main Menu, Instrument Box context menu, keybindings, and MIDI mappings. Everything accessible from the unified Microtonal Tunings Dialog.
The Slice Tools Dialog now has collapsible sections. Each of the 11 sections (Equal Slicing, Zero-Crossing Slicing, Advanced Slicing, All Slices Loop Mode, Slices to Pattern, Slices to Phrase, Slice Marker Management, DrumChain / Conversion, Beatsync, Specialized Tools, Oldschool Gap Fill) has a checkbox that shows/hides its contents. Section visibility is saved to preferences and persists across sessions, so you can hide the sections you rarely use and keep only what you need visible.
Fixed a crash in the Slice Effect Step Sequencer when using Two Octaves or Octave Up/Down presets on instruments with fewer slices than the transpose pattern requires. The transpose offsets (+-12, +-24) could push slice note values outside the valuebox's valid range, causing std::logic_error: invalid value for valuebox. Values are now clamped to the instrument's actual slice range. Also added defensive clamping in PakettiSliceStepRefreshSliceUI to prevent similar issues during UI refresh.
Comprehensive microtonal tuning system for Renoise instruments using the native trigger_options.tuning API. Apply any of 23 built-in tuning presets to instruments with a single click β no multi-sample workarounds needed.
Tuning Presets:
Dialog shows scale degrees with ratios and cent values. Apply to selected instrument or all instruments at once. Load Scala (.scl) files. Export any preset as Scala file for sharing.
Wavetable Generators:
PCMWriter Golden Waveforms (5 new waveform types in Single Cycle Waveform Writer):
golden_sine β fundamental + partials at phi-ratio frequenciesgolden_additive β additive synthesis with phi-spaced partials (controllable via shape)golden_fm β FM synthesis with modulator at phi Γ carrier frequencygolden_ring β ring modulation at golden ratio (bell-like timbres)solfeggio_chord β layered solfeggio frequency ratiosMenu Entries (Main Menu β Tools β Paketti β Microtonal Tunings):
Microtonal Tunings Dialog...Apply Golden Pythagorean (13-note), Apply 36-EDO, Apply Solfeggio, Apply ColundiApply Just Intonation (5-limit), Apply Pythagorean (pure fifths), Reset to 12-TETGenerate Golden Shimmer Wavetable, Generate Golden Beating WavetableSame entries available in Instrument Box context menu.
Keybindings (Global β Paketti):
Microtonal Tunings Dialog, Apply Golden Pythagorean Tuning, Apply 36-EDO TuningApply Solfeggio Tuning, Apply Colundi Tuning, Reset Instrument to 12-TETMIDI Mappings: Paketti:Microtonal Tunings:Apply Golden Pythagorean, Apply 36-EDO, Apply Solfeggio, Apply Colundi, Reset to 12-TET
Fixed a crash in the Slice Effect Step Sequencer when using Two Octaves or Octave Up/Down presets on instruments with fewer slices than the transpose pattern requires. The transpose offsets (Β±12, Β±24) could push slice note values outside the valuebox's valid range, causing std::logic_error: invalid value for valuebox. Values are now clamped to the instrument's actual slice range. Also added defensive clamping in PakettiSliceStepRefreshSliceUI to prevent similar issues during UI refresh.
The Columnizer +1/+10/-1/-10 shortcuts for Delay, Panning, Volume, Effect Number, and Effect Amount now support pattern editor selections using selection_in_pattern_pro(). When a selection is active, the change is applied to every selected note column (for delay/panning/volume) or every selected effect column (for effect number/amount) across all selected lines and tracks. The selection-aware logic properly identifies which columns are note columns vs effect columns, even when a selection spans multiple tracks with different column configurations. When no selection is active, behavior is unchanged (cursor row only). Includes proper undo support (describe_undo) and a status bar message showing how many cells were modified (e.g. "Columnizer: Delay +10 applied to 32 cells"). Works with all existing keybindings (Pattern Editor:Paketti:Columnizer Increase/Decrease Delay/Panning/Volume/Effect Number/Effect Amount) and MIDI mappings.
Split any note into perfectly even subdivisions with calculated delay values β triplets, quintuplets, septuplets, or any number up to 128. Select a range of lines containing a note, choose how many pieces, and each piece is placed at the mathematically correct position using the delay column for sub-line precision.
Dialog with a real-time slider β drag it and watch the pattern update live. Also includes a valuebox for precise input and quick-split buttons for 2 through 8.
No-selection mode β if nothing is selected, Paketti auto-detects the note length by scanning forward for the next note or NOTE_OFF.
Preserves original note properties (note value, instrument, volume, panning). Writes a NOTE_OFF at the end of the range. Full undo support.
Keybindings (Pattern Editor β Paketti):
Split Note into N Equal Pieces... (dialog)Split Note into 02 Equal Pieces through Split Note into 08 Equal PiecesMIDI mappings available for all nine functions.
New consolidated "Slice Tools" dialog accessible from Main Menu > Tools > Paketti > Slice Tools > Slice Tools Dialog... and Sample Editor > Paketti > Slice Tools. Brings together all slice-related operations into a single discoverable hub with 11 grouped sections: Equal Slicing, Zero-Crossing Slicing, Advanced Slicing launchers, All Slices Loop Mode, Slices to Pattern, Slices to Phrase, Slice Marker Management, DrumChain/Conversion, Beatsync, Specialized Tools, and Oldschool Gap Fill. Existing individual menus and keybindings remain unchanged β this adds a central access point. Available via keybinding (Global:Paketti:Slice Tools Dialog) and MIDI mapping.
Fixed a crash when toggling the "0G01 Loader" checkbox in the Paketti Toggler dialog. The checkbox notifier was calling a non-existent function update_0G01_loader_menu_entries(). Replaced with the correct manage_sample_count_observer() call so the observer is properly attached/detached when toggling.
"Replicate Into Selection" and "Replicate Above Into Selection Only" were two separate implementations doing the exact same thing β taking whatever is above your selection and tiling it downward into the selected rows. Removed the duplicate code (~240 lines) and unified both shortcuts to use the same single implementation. Both keybinding names still work, no workflow changes needed.
Fixed a crash in the Autocomplete dialog that could happen when clicking on certain command suggestions (e.g. AKAI-related entries). Instead of crashing, those entries now safely show "Failed to execute" so the dialog stays usable.
Full MIDI mapping file management β save your controller setup, load it into another song, merge mappings from multiple files, or do a clean replace. Ideal for switching between different MIDI controllers or sharing setups between projects.
Save MIDI Mappings β exports all current song MIDI mappings to an .xrnm file via file picker.
Load MIDI Mappings from File (Merge) β loads an .xrnm file and merges it with your existing mappings. Existing bindings stay, new ones are added.
Load MIDI Mappings from File (Replace All) β clears all existing mappings first, then loads from the selected .xrnm file. Clean slate.
Load Default MIDI Mappings β loads the .xrnm file configured in Paketti Preferences (merge behavior).
Clear & Reload Default MIDI Mappings β clears all mappings, then loads the configured default (replace behavior).
Load Paketti MIDI Mappings β loads the bundled MIDI mapping presets shipped with Paketti (from the KeyBindings/ folder). If multiple .xrnm files are bundled, presents a picker dialog.
Clear All MIDI Mappings β removes every MIDI mapping from the song.
Menu entries (Main Menu β Tools β Paketti β MIDI Mappings):
Load Paketti MIDI MappingsSave MIDI Mappings (.xrnm)...Load MIDI Mappings from File (Merge)...Load MIDI Mappings from File (Replace All)...Load Default MIDI MappingsClear & Reload Default MIDI MappingsClear All MIDI MappingsKeybindings (Global β Paketti):
Load Paketti MIDI MappingsSave MIDI Mappings (.xrnm)...Load MIDI Mappings from File (Merge)...Load MIDI Mappings from File (Replace All)...Load Default MIDI MappingsClear & Reload Default MIDI MappingsClear All MIDI MappingsMIDI mappings available for all seven functions.
Save All Phrases as Presets β exports every phrase in the selected instrument as individual .xrnz preset files to a chosen folder. Files are named 01_PhraseName.xrnz, 02_PhraseName.xrnz, etc. for easy browsing and auditioning.
Load All Phrase Presets from Folder β imports all .xrnz files from a chosen folder into the selected instrument as phrases. Files are loaded in alphabetical order. Respects Renoise's 126-phrase limit and warns if the folder contains more presets than available slots.
Designed for workflows involving large phrase collections β batch-import 200+ MIDI files as phrases, save them all as presets in one click, then load them back into any instrument later.
Menu entries (Main Menu β Tools β Paketti β Instruments):
Save All Phrases as Presets (.xrnz)...Load All Phrase Presets from Folder (.xrnz)...Keybindings (Global β Paketti):
Save All Phrases as Presets (.xrnz)...Load All Phrase Presets from Folder (.xrnz)...MIDI mappings available for both functions.
Four ways to merge patterns end-to-end into a new combined pattern, with automation time-shifted correctly:
Merge with Next β combines the current pattern with the one immediately after it in the sequence, inserts the merged result after both source slots.
Merge with Previous β combines the pattern before the current one with the current pattern, inserts the merged result after the current slot.
Merge Selected β merges all patterns within the current Pattern Sequencer selection range into a single new pattern, inserted after the selection end.
Merge All β Monster β concatenates every pattern in the entire sequence into one large pattern (capped at Renoise's 512-line maximum), appended at the end.
Source patterns are never modified. Automation envelope points from later patterns have their time values offset by the accumulated line count so they land in the correct position. Merged patterns are named automatically (PatternA+PatternB+...).
Menu entries (Pattern Sequencer and Pattern Matrix, Γ4 each):
Pattern Sequencer:Paketti:Merge Current with Next PatternPattern Sequencer:Paketti:Merge Current with Previous PatternPattern Sequencer:Paketti:Merge Selected PatternsPattern Sequencer:Paketti:Merge All Patterns to MonsterPattern Matrix:Paketti:Merge Current with Next PatternPattern Matrix:Paketti:Merge Current with Previous PatternPattern Matrix:Paketti:Merge Selected PatternsPattern Matrix:Paketti:Merge All Patterns to MonsterKeybindings (Pattern Sequencer and Global, Γ4 each):
Pattern Sequencer:Paketti:Merge Current with Next PatternPattern Sequencer:Paketti:Merge Current with Previous PatternPattern Sequencer:Paketti:Merge Selected PatternsPattern Sequencer:Paketti:Merge All Patterns to MonsterGlobal:Paketti:Merge Current with Next PatternGlobal:Paketti:Merge Current with Previous PatternGlobal:Paketti:Merge Selected PatternsGlobal:Paketti:Merge All Patterns to MonsterLike the existing XO plug-in shortcut, but fully user-configurable: assign any VST, VST3, AU, LADSPA, or DSSI instrument plugin to one of 5 named slots, then use a keybinding (or menu entry) to load it / show its external editor / hide it β exactly the same addβshowβhide cycle as the hardcoded XO shortcut.
Configuration dialog
Main Menu:Tools:Paketti:Plugins/Devices:Plugin Slots:Configure Plugin Slots...Instrument Box:Paketti:Plugins/Devices:Plugin Slots:Configure Plugin Slots...Global:Paketti:Plugin Slots:Configure Plugin SlotsThe dialog shows all available instrument plugins grouped by type (AU β VST3 β VST β LADSPA β DSSI), sorted alphabetically within each group. Selecting a plugin stores both its load path and its display name in preferences.xml for instant recall across sessions.
Per-slot toggle (Γ5, replace N with 1β5)
Main Menu:Tools:Paketti:Plugins/Devices:Plugin Slots:Toggle Slot NInstrument Box:Paketti:Plugins/Devices:Plugin Slots:Toggle Slot NGlobal:Paketti:Plugin Slots:Toggle Slot N Show/HidePaketti:Plugin Slots:Toggle Slot N Show/HideToggle behaviour per slot:
external_editor_visible (show β hide)loadPlugin() inserts a new instrument and shows the editor[Full changelog below β]
The Plugin Slots Configuration dialog is now registered in Paketti's Dialog of Dialogs (the central hub for launching all Paketti dialogs). Search for "plugin slots" or "slot" to open it alongside all other Paketti dialogs.
Global:Paketti:Dialog of Dialogs (existing), then filter for "slot"Four new functions that concatenate patterns end-to-end into a single new pattern of combined length (capped at Renoise's 512-line maximum). All source patterns are left intact; the merged result is inserted as a new sequence slot and navigated to automatically. Automation envelope points from the second pattern onward are time-shifted so they land in the correct position inside the merged pattern.
A+Bprev+currentMenu entries added under:
Pattern Sequencer:Paketti:Merge Current Pattern with NextPattern Sequencer:Paketti:Merge Current Pattern with PreviousPattern Sequencer:Paketti:Merge Selected PatternsPattern Sequencer:Paketti:Merge All Patterns to Monster PatternPattern Matrix:Paketti:Merge Current Pattern with NextPattern Matrix:Paketti:Merge Current Pattern with PreviousPattern Matrix:Paketti:Merge Selected PatternsPattern Matrix:Paketti:Merge All Patterns to Monster PatternKeybindings added under Pattern Sequencer:Paketti: and Global:Paketti: for all four operations.
New SampleRecorderWithTrackScopes() function in PakettiRecorder.lua. First press: adds #Line Input device to the selected track (if not already present), switches the upper frame to Track Scopes so you can see the live input waveform, and opens the Sample Recorder dialog. Second press: closes the recorder and removes the #Line Input device. Gives a visual waveform monitor during recording without needing a third-party VST oscilloscope.
Global:Paketti:Display Sample Recorder with #Line Input and Track ScopesMain Menu:Tools:Paketti:Recording:Display Sample Recorder with #Line Input and Track ScopesSample Editor:Paketti:Display Sample Recorder with #Line Input and Track ScopesAll random BPM functions now use a configurable Min/Max range instead of a hardcoded list of {80, 100, 115, 123, 128, 132, 135, 138, 160}. Two new preferences (RandomBPMMin default 60, RandomBPMMax default 180) with valueboxes in the Paketti Preferences dialog (range 32-999, with cross-validation so min can't exceed max). Affects randombpm(), randomBPMMaster(), randomBPMFromList(), randomBPM(), and the bell curve BPM generator used by "New Song BPM Randomizer". Values persist across sessions.
Paketti's shortcut hint system β which appends keyboard shortcuts like [Opt+K] to menu entry names β was silently broken because renoise.tool() returns a new wrapper object on every call, so monkey-patching methods on it had no effect. Replaced the broken approach with a renoise.tool proxy that intercepts add_menu_entry, add_keybinding, and add_midi_mapping at the source. The proxy also handles conditional keybinding/midi registration via master toggles. Shortcut hints now display correctly in all Paketti menu entries. A new module PakettiShortcutHints.lua parses KeyBindings.xml and the tool's autocomplete_cache.txt to match menu entries to their keybindings by both function identity and display name.
Paketti now includes a pure Lua MIDI file parser that converts Ableton/GM MIDI drum clips into Renoise instrument phrases. Drop a .mid file onto an instrument via the file import hook, or use the batch import dialog to convert an entire folder of MIDI clips into phrases at once. Features include configurable LPB (4/6/8/12/16/24), optional delay column for sub-line timing precision, automatic polyphony detection (up to 12 note columns), volume/velocity preservation, and automatic instrument overflow when the 126 phrase limit is reached. Supports MIDI Format 0 and Format 1 files.
Single file import: menu entry Main Menu:Tools:Paketti:Instruments:MIDI Drum Pattern to Phrase (Import)..., keyboard shortcut Global:Paketti:MIDI Drum Pattern to Phrase (Import)..., MIDI mapping Paketti:MIDI Drum Pattern to Phrase (Import)... x[Button], plus drag-and-drop via the .mid file import hook.
Batch folder import: menu entry Main Menu:Tools:Paketti:Instruments:MIDI Folder Batch Import to Phrases..., keyboard shortcut Global:Paketti:MIDI Folder Batch Import to Phrases..., MIDI mapping Paketti:MIDI Folder Batch Import to Phrases... x[Button].
Running the MetaSynth instrument generator on Renoise v3.4 would crash with '[BinStream]' was saved with an incompatible, more recent version of Renoise. The generated LFO and Send devices were being built in a format only Renoise v3.5.4 understands. Paketti now detects which version of Renoise you're running and generates devices in the matching format, so MetaSynth works on both v3.4 and v3.5.4.
Added MIDI mappings for "Roll the Dice on Notes" (Paketti:Roll the Dice on Notes) and "Randomize Positions of Note-Offs" (Paketti:Randomize Positions of Note-Offs). Note position randomization now has 1 menu entry (Pattern Editor β Paketti β Note Columns β Roll the Dice on Notes in Selection), 2 keyboard shortcuts (Global:Paketti:Roll the Dice on Notes, Pattern Editor:Paketti:Randomize Positions of Note-Offs), and 2 MIDI mappings.
slicerough β the fast rough-slicer that divides a sample into N equal parts β would crash Renoise with a C++ std::logic_error ("invalid slice sample_position index '0'") when the target sample was very short relative to the requested slice count. The bug had two causes working together: an unconditional insert_slice_marker(1) call before the loop, followed by the loop itself computing a frame position of 0 (via math.floor(tw * i) rounding down) and attempting to insert a second marker at or before position 1. Renoise rejects any slice marker at a frame index that has already been used, which surfaces as the misleading index-0 error.
Fixed by removing the standalone pre-loop insert_slice_marker(1) call (the sample start is implicit; Renoise does not need an explicit marker there) and adding a last_inserted guard inside the loop so that any computed position equal to or less than the previous one is silently skipped. All positions are also clamped to a minimum of 1. This makes slicerough safe for very short samples and for large slice counts.
When a user searched Preferences β Keys for Write Current BPM&LPB to Master Column β the exact wording shown in the menu entry β nothing came up. The existing keybindings used a shorter internal name (Write BPM/LPB to Master) that didn't match what users had read in the menu.
Three new keybindings now exist under Global, Pattern Editor, and Mixer scopes β all named Write Current BPM&LPB to Master Column β matching the menu entry word-for-word. The original Write BPM/LPB to Master keybindings remain untouched alongside them.
The phrase_follow_notifier (which syncs the Phrase Editor display during playback) would crash with a nil-access error whenever the selected instrument had no phrases β or when playback started before any phrase had been selected. The notifier fires on every idle tick during playback, so this caused the notifier to permanently disable itself mid-session. Fixed by adding a nil-guard: if song.selected_phrase is nil the notifier now exits cleanly instead of erroring out.
https://www.loom.com/share/29043519c0a548a1a30fd696560f580f?sid=b2bd3dc7-8647-4294-b3d3-01545f44be5b
Impulse Tracker for easier discoverability.No more guessing. Note: "Mixpaste" is still not working, i started work on it but somehow couldn't get it going, will hopefully look at that later
![]()
their naming has been tweaked also for better discoverability






(Meaning: now compatible with Renoise 3)

Backend Improvement: there's now a global function for giving a XML Preset and loading it directly to a plugin. which'll be useful in the future for loading XML content into active_preset_data for a plugin or a device.
I've removed that since it benefits no-one - the viewport should stay the same no matter what
ALT-L *2 functionality.Now, if you are on Send or Master, and press ALT-L, it will select the content of the Send or Master track. when you press ALT-L again, it will select all of the pattern data (including sends + masters). instead of "only the tracks and not sends + masters".

now no error is shot no more and the automation works as expected.
And they're sorted correctly



this Loop Release mode, coupled with Backward - means that whenever you let go of the playing slice, it will start playing backwards until the beginning of the sample is reached.

pretty much does what it says on the tin - if there are no groups, then it doesn't do anything.

these init instruments were lagging behind from 12st_pitchbend which had all the goodies

more tweaks incoming later (additional efx, grouping)

Effect Commands Cheatsheet (Renoise Forum post, printable PDF by someone else)
these change the Column Visibility of all regular Tracks to On/Off (Toggle) or Set to Visible.
(found this on a Renoise Forum post by ViZiON from 2008)





Bypass all Effects on Channel now shows status Disabled all Track DSP Devices on Selected ChannelEnable all Effects on Channel now shows status Enabled all Track DSP Devices on Selected Channel
Tweaked most Track DSP Device hiding shortcuts + menu entries to make mention of "External Editor"
and added "All open External Editors for Track DSP & Sample FX Chain Devices have been closed." and "No Track DSP or Sample FX Chain Device External Editors were open, did nothing." for informing the user what is going on.
this show_status thing will need to be done for hundreds of functions so whenever you see one that doesn't tell you what it does, hit me up and i'll tweak it in. there's too many for it to be doable in one go.


Bypass All Other Track DSP Devices (Toggle) as a keyshortcut, menu entry for Mixer + Track DSP (Lower Frame) -- as requested by untilde



(this closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/183 )
I've also removed sox usage for adjusting 32bit samples to 24bit samples, which is no longer needed since Logic Pro can handle 32bit wavefiles nowadays.
NOTE: if there are apps out there that can't handle 32bit wavefiles, please tell me which ones they are, so i can try them out and add "adjust to 16bit" "adjust to 24bit" next to the Smart Folder path buttons.
(this closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/161 )


Feature: Create Identical Track. if your track has X amount of Note Columns, Effect Columns, Panning, Delay, Volume, Sample FX Columns visible or the track is collapsed -- (or if none of these are visible or on), the "Create Identical Track" shortcut will create a Track that matches the track you were on. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/208 (as requested by ViZiON on the Renoise Forums in January2009)

Feature: Randomize Selected Device Parameters:
https://www.loom.com/share/52748313bf284544976bf7f90b62e6c6?sid=b3198df4-229b-47e0-a5ce-465ca11f90e6
Feature: Randomize Selected Instrument (All) Plugin Parameters .. but since it randomizes each parameter, you might have a bad time if the synth sets itself to not play anything (outputs that you're not listening to, etc..)
Improvement: Randomize Selected Device Parameters now shows the name of the device that was randomized.

Feature: LADSPA/DSSI Device loader (shortcut + midimapper) GUI created. if you have Linux, please DM me and i'll send you a xrnx and please take some video + screenshots, i can't test how it works myself. EDIT: there's apparently some noisy devices there that have a really long name (looking at you:
721 Audio/Effects/LADSPA/lsp-plugins-ladspa.so:http://lsp-plug.in/plugins/ladspa/sc_mb_dyna_processor_stereo
fun. but shoot me some screenshots + video so i can pick up the pieces. seems to work anyway.
Improvement: Gainer Exponential Curve Up, Gainer Exponential Curve Down now goes from 0.0dB to INF or from INF to 0.0dB - instead of to "12.5dB" - thus boosting the input signal by +12dB. fixes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/171
usecase: make a way to fade in a sound by adding a gainer device to the track and fading sound in or sound out.


Improvement: Moved "Jump to First Track in Next Group" & "Jump to First Track in Previous Group" to Main Menu:Tools:Paketti..:Pattern Editor:

Improvement: Added "Create Identical Track" to Tools->Paketti.. -> Pattern Editor

Improvement: Added "Randomize Selected Instrument Plugin Parameters" &."Randomize Selected Device Parameters" to Tools->Paketti..->Plugins/Devices

Feature: Move Slice End Left/Right by +10/-10, +100/-100, Move Slice Start LeftRight by +10/-10 +100/-100:
this means that you can be in the slice itself, and adjust the slice visually with nudges.


Improvement: Wipe Slices (in Wipe&Slice suite of features) now will properly wipe all slices from the sample even if a slice was selected when you wipe slices. (it used to do nothing)
Improvement: If there are no apps configured in App Selection, the dialog does not forcibly open on every new song, Renoise start, etc. Just a show_status message instead:
No apps have been configured in Paketti..:Launch App..:Configure Launch App Selection, cannot populate Menu.
Improvement: if no LADSPA or DSSI devices found on computer, display a sensible message (No LADSPA/DSSI Devices found on this computer. ) instead of ruining the GUI by making the buttons not show properly
Improvement: if no AU, VST or VST3 plugins found on computer, display a sensible message ( No AudioUnit Plugins found on this computer. or No VST Plugins found on this computer. or No VST3 Plugins found on this computer.) instead of ruining the GUI by making the buttons not show properly
Feature: Solo Selected Track in Group using Note Column Mute:
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/106

Improvement: +300/-300 +500/-500 for both Slice Start & Slice End:


Improvement: Midi Mapping Sample FX Column knob now shows the Sample FX Column, for better visibility.

Improvement: Midi Change 01 Volume Column Value / 02 Panning Column Value / 03 Delay Column Value / 04 Sample FX Value: if you have nothing selected, it'll output to current_line row. if columns are not visible, they are made visible. if you have a selection, then the whole selection will be changed by midi knobs.
https://www.loom.com/share/3af37cfeac9a4aa78834d7b6c74b7f36?sid=0285c5a2-1d7b-4c83-820c-e9e07f40a52f
Feature: Selected Device Parameter Randomizer Dialog. Offers a slider for controlling percentage of randomization auto-updates to new device if you select a new device.
https://www.loom.com/share/6358542ad6db449daf581421653548fa?sid=aee4ccb0-2738-4214-933d-0bd5c50eb163
Improvement: BPM +0.1 / BPM -0.1 (in addition to +1/+5/-5/-1 already being there since 14 years ago in Paketti.) this is ripped straight from the ModPlugTracker playbook:

Improvement: Randomize Selected Device Parameters Dialog now updates if no Device is selected. also, after clicking on the Randomize button, the keyboard focus is returned to Renoise / the Tracker, so you can continue shortcutting+keyjazzing.
Feature: "Duplicate Effect Column Content to Pattern"

Improvement: "Duplicate Effect Column Content to Pattern or Selection" -> if something is selected, your current row effect parameter is input to selection.. if nothing selected, then the whole pattern gets the effect parameter input
Feature: "Randomize Effect Column Parameters for Pattern or Selection"

Feature: Effect Column Interpolation for Selection or Pattern.

Feature: Flood Fill Selection or Track with Instrument + Note:

Improvement: now all Plugin parameters can be randomized, or all plugins in the whole song can be randomized. same GUI as Selected Track Device & All Devices on Selected Track.

Improvement: If currently selected instrument has no plugin, Randomize Devices & Plugins dialog will still open.
If there are no plugins in the song, then Randomize All Plugins will show_status stating there are no plugins, instead of saying "yes, randomized all plugins in song". and in the same situation, "Show/Hide all Plugin External Editors" will also show a status.
and visual update: the fourth column now has empty space before the "Randomization intensity (%)" line to better line up.

Feature: Impulse Tracker ALT-Left / ALT-Right (two flavors, one that Wraps (last track to first track.. or first track to last track), and another that doesn't wrap (press alt-left enough, and you'll be in first track but that's it.. same for alt-right)))
![]()
Feature: Impulse Tracker "Slide Content Up / Down". this takes Selected Track.. or Selected Note Column or Selected Effect Column. will slide it up and down.

Feature: Solo Tracks - if no pattern selection - then mute currently selected track. if current track is selected or has selection, mute that. draw selection around multiple tracks and run shortcut = all other tracks are muted. or unmuted.

Improvement: Note Interpolation now works on any note column on the track. same with selection. and.. if you have multiple note columns selected, and there's notes there at the start + end of pattern rows, the interpolation will happen. and if you have a selection within a track, the note interpolation will happen for the whole selection.

Feature: ALT-Y "Swap Block" straight from ImpulseTracker2/SchismTracker/ScreamTracker3(?)

Improvement: Alt-Y will now work with tracks that don't have "enough" note columns, they will be resized. and now this can be used for multiple note columns, and to the track you're at.

Improvement: Transpose +12 / -12 / +1 / -1 so that if nothing is selected in the pattern, it will transpose the whole selected_track. if something is selected in the pattern, then it'll transpose the selection. Feature: Transpose +12/-12/+1/-1 for selection, or just current note column.
both of these transposes actually go from C-9 to C-0 if you keep transposing.

Feature: Duplicate Instrument and Reverse Sample -- this just takes your currently selected instrument, duplicates it below it, and reverses the samples in the instrument. (and selects the newly created reversed instrument)

Improvement: F5 "Impulse Tracker Play" used to have a 0.4 second delay after Panic + playback starting. it was to avert plugins from crashing (F5 is a macro that stops playback, runs Renoise Panic (to kill all audio) and then starts playback with follow pattern = on)) - now i cut it down to 0.225second, so it "feels less sluggish".
Feature: Paketti Renamer - shortcut + menu entry for renaming a track. opens a dialog with current name highlighted, you can type, press enter -> renaming done. works for master, send, group, track.

Improvement: Now Paketti Track Renamer reads selection-in-pattern for multi-track renaming one at a time.

Improvement: "Wipe Plugins" added to CTRL-N, it will look through all the instruments and clear the plugins from the instruments.

Improvement: Added the Note-On to Note-Off (with transpose) copying to Sample Navigator, since i went there to try and run it and realized it's not there. it's now in sample editor, sample mappings, and sample navigator.

Improvement: Solo Tracks will now:
still ironing out 4 other issues, then it's ready. .. π«’
Feature: Isolate Slices to New Instruments - this takes the slices in your sliced instrument, and copies all their settings and modes, and creates new instruments, naming them according to the slice.
available in Sample Editor, Sample Navigator, Sample Mappings and Instrument Box. and a global shortcut.

Feature: Reverse Notes in Selection

Improvement: Load Native Devices Dialog can be opened multiple times instead of only once (and then the gui fails to render)
Improvement: the Smart Folders segment of this dialog has been, more understandably, modified to include "Backup Folders" and for the buttons to refer to "Folders" instead of "Smart Folders" - because the usecase is of course that you can set the folder of your choice to be a folder that's a smart folder (macOS) or any folder (such as a backup folder). think "folder 1 = drums, folder 2 = melodies, folder 3 = pads" or something like that

Improvement: End *2 now actually first takes you to last row of current note column, and on second press, to the last track last row.
Feature: Send Populator for Selected Track or All Tracks.

Feature: Flood Fill Note & Instrument with Edit Step - this takes the Edit Step and fits the currently selected line note + instrument to it, or if you have a multi-track selection, it will take the current row and fill the selection with the note+instrument using editstep.
https://www.loom.com/share/2dc0c84c97dc4dcc9c5125671e6b1da2?sid=081e5637-a092-4299-ac49-7433e90d344a
Improvement: Load Native Devices Dialog now has "Randomize Selection" as a possibility. it will clear the current selection, and then select a random amount of devices.

Improvement: Load VST Devices Dialog also has "Randomize Selection"

Improvement: Load VST3/AudioUnit Randomize Selection

Improvement: Load VST3/VST/AudioUnit Plugins Randomize Selection:

Improvement: Plaidzap gift now uses the macros (pitchbend,cutoff,resonance,cutoffLFOAmount,cutoffLFOFreq,Overdrive,VolLFOAmount,VolLFOFreq
Feature: Unison Generator.. creates 6 samples and finetunes them by -1 +1 -2 +2 -3 +3 and adjusts the sample startpoint by fractions (1/8 to 7/8) so they're slightly offset

Feature: You can now Export the Convolver IR to a new Instrument, which will export it and then show the Sample Editor. You can also, after modifying, Import the Selected Sample back to the Selected Device (Convolver). if anyone's into IRs, please DM me and I'll send a build and we can continue looking at this - i need plenty of IRs to make sure it all works
Improvement: There's now a connection between 0G01 loader and Paketti PitchBend Multiple Sample Loader - if 0G01 loader is set to On, then new tracks will be created per each loaded sample, and each track will cleanly have a instr automation device added, so there's no longer a flood of instr automation devices for the track you were on, i.e. you load 36 samples and there's 36 instr automation devices on selected_track.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/191
file feature now offers a GUI for also importing to convolver or exporting from convolver, and the gui allows for using shortcuts while open, so you can select a new sample to be imported to a Convolver of your choice. it also will update when you select a different sample, it allows you to add a Convolver to the start of the Track DSP Chain or the end of it, and you can import or export from any of them.


Improvement: Set Master is now 0...63 Selected Track Output Routing is now 0...63
Feature: MidiMapping Knob 0...127 for Selected Track Output Routing, and Master Track Output Routing:

Feature: MidiMapping Buttons for Selected Track Output Routing, and Master Track Output Routing: 0...63



Feature: PlayerPro Note Dialog - lets you output selected instrument and note to row if nothing selected.. if there's a selection_in_pattern, and you press a note, the selected instrument + clicked on note will appear in the selection.

Feature: Set Master Track Volume +0.1dB / -0.1dB, with clamping at -INF and 3dB.
Feature: Paketti eSpeak Text-to-Speech, tested with macOS & Linux.
This supports both espeak and espeak-ng
it is an improvement over Martblek's abandoned ReSpeak. (Martblek gave permission to take his work and improve upon it)
Supports:

Improvement: if you have no MIDI input devices and/or MIDI output devices, the Paketti Midi Populator no longer errors out and stops working.
Improvement: Switch to Automation will now switch back to TrackDSPs if Automation is already displaying
Feature: Resize & Fill. (available in Pattern Editor menu, Tools menu, and as a shortcut). this takes your pattern (and pattern automation) and expands until you have a pattern of 032, 064, 128, 256, 512 rows. so if you have a 4 row pattern, and you press "Resize & Fill 128" - the 4 row pattern changes to 128 rows, and the content is duplicated 32 times. if, however, you have a 512 row pattern and you press "resize&fill 032" - it will simply resize the pattern to 32 rows. and tell you accordingly.
this is basically a controlled "Paketti Pattern Doubler".

Improvement: Paketti Save Sample as FLAC / WAV menu entries added to Sample Editor (!!!) they should have always been there.

Improvement: Paketti Save Selected Sample as FLAC / WAV menu entries added to Sample Navigator.

Improvement: Unison Generator -> sets the selected instrument selected sample loopmode to Forward, in case if it is not set

Improvement: "Save Selected Sample" & "Save All Samples" to Smart/Backup Folder menu entries added for Sample Navigator (Selected+All), Sample Editor (Selected) and Instrument Box (All)
EDIT: typo fix, "All Sample" -> "All Samples" for each menu entry π
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/245 )


Improvement: Transpose +1/-1/+12/-12 now work with 1) selection only if selection in pattern 2) each note column in track if no selection in pattern. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/174
Update: Paketti Donations list updated with URL button added to newest donator - a maximum of 3 URLs can be added upon donation (Zoey Samples got the BTD Records url)

Improvement: Unison Generator now reads this brand new (still WIP) setting in Paketti Preferences: .. i.e. if it is set to ON, then the Unison Generated Instrument will have AHDSR envelope enabled instead of disabled. default is disabled.

Improvement: Unison Generator is now the first feature that uses the "Default .XRNI to use" Paketti Preferences setting. This allows you to set your own instrument to be loaded when generating a Unison - enabling you to decide which macros + etc modfx + samplefx settings (sample fx chains) stuff your instrument comes preloaded with. including sample modulation. this is a powerful thing to have.
Improvement: "Create New Instrument & Loop" now also uses Default XRNI Preference
Improvement: Paketti Pitchbend Multi Sample Loader now also uses Default .XRNI preference
Improvement: Paketti Clean Render now also uses Default .XRNI Preference
Improvement: Default XRNI Loader now has a dropdown menu in Paketti Preferences: you can pick from the ones already available, or your own.
this lets me also collaborate with other people who want to make a default XRNI available, and want to contribute it to Paketti

Plumbing: Paketti has KeyBindings.xml files inside the script itself, I've moved them to the KeyBindings folder. These are, for now, only used for storing the "macOS Paketti" shortcuts.. The objective is to eventually offer a PakettimacOS / PakettiWindows / PakettiLinux KeyBindings files, but that is further down the line.
Feature: PlayerPro Transpose Selection or Row +1/-1/+12/-12

Feature: Paketti Theme Selector Dialog.
https://www.loom.com/share/2289acd190614b388a93edc2e7f3507a

Improvement: Paketti eSpeak TTS now will use the Default XRNI Instrument - so you have pitchbend, cutoff, resonance, overdrive etc Macros already set up
Improvement: Paketti Theme Selector:
Removed all the duplicate themes.. and added all the Renoise default themes + "More" themes, so there's 505 now.
Added shortcuts for these functions.

Plumbing: Isolated all Preferences to separate segments of the preferences.xml for better managing. this should help a lot. Hopefully also with the Paketti Theme Selector
Improvement: Paketti Theme Selector:


Improvement: 12st_Pitchbend now has
NOTE: this modifies the Instr Control device usage, should not touch X_Pitchbend but instead Pitchbend in Automation lane.
this closes
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/286

(regards 12st_Pitchbend)

Improvement: *Key Tracker & *Velocity Tracker can no longer be added from Menu Entry or shortcuts, to Send, Master or Group Tracks. instead of shooting an error (!!) there will be a show_status notification.


Improvement: Separate blacklists for loading native devices.
Master cannot load #Send, #Multiband, #Sidechain, *Key Tracker, *Velocity Tracker
Group cannot load *Key Tracker or *Velocity Tracker
Send cannot load *Key Tracker or *Velocity Tracker.
SampleFX cannot load #ReWire Input
Improvement: #Sidechain added to "regular Paketti Shortcuts" (the ones that are manually written, not created by user via Native Device dialog
Improvement: "Randomize Selected Device" will now read if you're in the Sample FX Chain - and randomize the parameters of that. if you're not there, it'll randomize the selected device (in track dsp chain, or in mixer). it used to shoot an error.
Improvement: "Pitchbend" is now part of the "start from center" brigade for drawing automation using midimapping. (the Default XRNI had PitchBend, but that's now called X_PitchBend since it's not to be touched (since the addition of the Inertia for Gliding with Pitchbend).
Improvement: added *Instr. MIDI Control, *Instr. Automation and *Instr. Macros to blacklist of SampleFX Chain - so they can no longer be added even if you have them shortcutted - meaning that no error will be shot but a warning will be shot on the show_status.

Improvement: If you're in the Sample Editor, and press the "Switch to Automation" shortcut, it'll jump to Pattern Editor + Automation, instead of requiring two presses of "Switch to Automation" to have the Automation lane display.
Improvement: EditMode Signaler now no longer shoots an error, if you had editmode on, a track was blended, and you open a new song or create a new song.
Improvement: "Isolate Slices to New Instruments" now also adds the Default XRNI Instrument for each isolated slice to new instrument - meaning, your slices now have cutoff, resonance, pitchbend inertia, overdrive, parallel compression and cutoff LFO Amount & cutoff LFO Freq. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/295 )
Improvement: "Wipe Song & Retain Sample" now retains the name of the Instrument and the name of the Sample in the new song. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/294 )
Improvement: "Wipe Song & Retain Sample" now also adds the Default XRNI Instrument for the sample. also, added the feature to Sample Navigator & Sample Editor menus.
Improvement: "Load Renoise Native" menu entries now also list the Hidden devices (deprecated devices)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/292 )

Improvement: Added Hidden / deprecated devices as shortcuttable devices:


Improvement: the Load Native Devices dialog, for loading, or adding to shortcuts+ midimappings, now also shows the Hidden/deprecated devices:

Improvement: Paketti YT-DLP Downloader has been verified as working for downloading content from SoundCloud, Bandcamp and Instagram (in addition to YouTube). updating the dialog to better inform the user:

Improvement: Paketti Pattern Effect Cheat Sheet now correctly outputs 0Y into selection in pattern, or if no selection in pattern exists, to current row.
Improvement: Paketti Pattern Effect Cheat Sheet now has dialog improvements: you can open and close it with the same shortcut.
the Delay, Panning and Volume sliders now will turn the tracks within selection in pattern to visible, if they aren't already.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/300 )

Feature: Paketti About page:
( closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/291 )

Improvement: If you're on Modulation tab and run a shortcut to add a VST,VST3,AudioUnit,Native Device or LADSPA/DSSI device, then the view will change to Sample FX Tab. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/284
Improvement: "Isolate Slices to New Instruments" is now "Isolate Slices or Samples to New Instruments" -> meaning if your instrument has multiple samples, you can dump them to new instruments, with the Default XRNI instrument applied to each instrument.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/246

Improvement: Paketti Coluga Downloader will now automatically focus the "URL" textfield, meaning, for me, the workflow is CTRL-C (start Coluga), CMD-V (paste YouTube URL), press enter -> download starts
Improvement: It seems they lowered minimum BPM from 32 to 20.. So BPM +1/-1/+0.1/-0.1 will now go to 20BPM. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/306
Feature: "Select First Half of Sample Buffer" - this will select exactly half of the available sample buffer content in Sample Editor.

Improvement: "Select First Half of Sample Buffer" now has a counterpart, "Select Second Half of Sample Buffer".

Improvement: Paketti eSpeak Text-to-Speech now:
Improvement: Pattern Editor Cheat Sheet

Improvement: Pattern Editor Cheat Sheet
added all missing effect commands from the "FX dropdown" in Renoise Pattern Editor.
tweaked the copywriting to conform to what FX dropdown says

Improvement: Cheatsheet modified with.. randomize functions. hopefully this video will shed some light as to what is going on:
https://www.loom.com/share/978e659e038e432d873272b8a819b96c?sid=df8061c5-fef7-45a0-bb43-aa0333bbe66a

Improvement: CheatSheet randomize functions improvements:
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/313 )

Feature: Paketti Gater
offers 16 steps for Volume, (C00 to C0F) and for Retrig (user can set the Retrig speed)
randomize features, shift left&right, imprint on volume column (volume/retrig), panning column (retrig), effect columns (volume/retrig)
clear checkboxes. ..
how it works: will fill the whole selected track with content, and you have 16 steps available, the length of which you can modify so that retrig could be 8 steps and volume could be 6 steps,.. and presets like all, every second, every third, every fourth.
can also receive the first 16 rows of volume, or retrig, to the checkboxes.
some screenshot examples:



Feature: Flood Fill with Selection.
https://www.loom.com/share/147fab8a865e4b87af4850185620aae3?sid=191b0f48-7985-4603-b218-c77abbd84d87 select anything, effect columns, note columns, run flood fill with selection = result = pattern filled with content.
Feature: Selected Row to / Selection In Pattern Start -> circular rotate to first row. this means, if your cursor is on say row 6 and you trigger the shortcut, row6 becomes row1 and everything in row1-row5 goes to the end of the pattern. or if you have a selection, such as a couple of note columns and a couple of effect columns, and trigger the shortcut, then the first row in the selection is moved to the first row of the pattern.
https://www.loom.com/share/a3f55137bb4d46de9ccd81e76296fc60?sid=b7c8a4f5-9d76-46b9-9034-5bbbc5c73500
Feature: Oblique Strategies this fetches a random line from the official Oblique Strategies list and shows it either in a dialog, or on the statusbar.



Feature: Paketti Dater & Titler - (Save Song As replacement)
https://www.loom.com/share/6d1b8cf98ee0471cb67156b6a98fa383?sid=73e989d0-b7ff-4f96-a538-264f67a18239

Improvement: Mixer: Load Native Device menu entry now shows both the renoise native devices and renoise hidden devices - instead of there being two menus (one with the name "Load Native Device" and the other "Load Native Device ") closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/335
Improvement: "Duplicate and Reverse Instrument" is now available in the Instrument Box, Sample Editor and Pattern Editor closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/331
Improvement: "Paketti Save sample as FLAC / WAV" now says that the file was successfully saved, and where closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/329

Improvement: If you were in F4 view ( MIDI or Plugin frame ) and pressed F3 , nothing happened. fixed. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/323
Improvement: Naming of Delay +1 -1 +10 -10 - discoverability improvement:
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/333

Improvement: Double Beatsync Line & Halve Beatsync Line now has a total of 4 shortcuts. both for selected sample, and for all slices, or all samples. if there are slices, the 1st (original sample slot) will not be touched. if there's only samples, (all) will apply for all.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/51

Improvement: Wipe Song & Retain Sample now supports Selected Slice -> if you select a slice and run the script, a new song is created with that slice retained. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/304
Feature: Paketti KeyBindings Dialog. Shows all the KeyBindings with Paketti. sort by path (Global, Sample Editor) can filter "unshortcutted" menu entry in main menu tools paketti.. but also in every instance (right-click on Mixer for instance to go to Paketti..: Show Keybindings
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/308


Improvement: Paketti KeyBindings Dialog:
NOTE: KeyBindings.xml is only saved when Renoise is closed - so this is not a realtime / updatable Dialog. Make changes, quit Renoise, and relaunch this Dialog) 
Plumbing: Removed all Paketti..: shortcuts (should be Paketti:
Feature: Renoise KeyBindings Dialog:
shows all KeyBindings in Renoise.
you can only show tools, or show without tools.
search is fuzzier (for both Renoise + Paketti KeyBindings dialogs)
padding has been introduced to make it better looking.

Improvement: Paketti KeyBindings Dialog:
fuzzy search
padding for better readability

Improvement: 0G01 Loader no longer triggers every time you load a sample, even if Off (!!!).
Improvement: I've tweaked all the Midi Mappings to no longer fluctuate wildly ("Global:Paketti:Name" // "Global:Tools:Paketti:Name" // "Tools:Paketti:Name" // "Tools:Name" //). now they're either Paketti:Name or Context:Paketti:Name.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/342
Improvement: Wipe&Create Slice renamed to Wipe&Slice - better conforms to what the Paketti Preferences calls it.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/352
Improvement: Impulse Tracker shortcut naming convention is now Impulse Tracker <keyshortcut> featurename
and "Set Selection to Instrument (Protman)" has been renamed to Impulse Tracker ALT-S Set Selection to Instrument for better discoverability.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/346
and https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/345


Feature: "Insert Stereo -> Mono to Master Track"
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/350

Feature: Paketti Midi Mappings dialog. This shows all the Midi Mappings created by Paketti. if you also open the CMD-M Midi Mappings Dialog and enter the Extended mode, clicking on the button selects the Midi Mapping and you can press a button, twist a knob or move a slider to assign that. fastest way to onboard yourself into the features Paketti introduces. I've also tweaked the namings of all the midimappings, and grouped them accordingly.
https://www.loom.com/share/ad75ebed54234085965675a1c4649726?sid=7ad37178-855d-4b9e-af35-7594afdc09fe
Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/262

Improvement: "Duplicate Instrument and Reverse" would break if instrument had slices. now no longer. - now it reverses the first sample and the slices are maintained.
Improvement: "Duplicate Instrument and Reverse" now handles each slice setting separately and works. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/332
Feature: Strip Silence shortcut - this will take the currently selected sample, and strip silence from beginning and from the end. some examples in the gif.
this might help with drumloops.

Improvement: Strip Silence now has Strip Silence Threshold - "some sort of threshold"..
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/48#issuecomment-2275323680


Feature: Move Beginning Silence to End

Feature: Rotate Sample Buffer Content Backward / Forward:
i believe this lets me close these:
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/228
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/148

Feature: Paketti Clean Render Track or Group with LPB*2
Ok, so what this does is pretty much identical to Paketti Clean Render - except.. right after it diskwrites, it writes current BPM + LPB to Master of current pattern then it clones the pattern, increases LPB by *2 (so 4 -> 8), and writes BPM + LPB to Master of the new cloned pattern, which non-destructively replaces the original_pattern, and then puts in the sample onto the new track. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/65
Feature: MidiMapping for EditStep Double + Halve: closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/92

Improvement: EditStep Halve + EditStep Double added to Paketti MidiMappings dialog

Improvement: now all Plugin, VST, VST3, AudioUnit, Native Device loaders will work properly with Midi Mapping - meaning, a pad will trigger it once - instead of loading the same thing twice (!) closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/173
Improvement: Create New Instrument & Loop MidiMapping now triggers once instead of twice
Improvement: "Midi Select Track (Next)" & "Midi Select Track (Previous)" now triggers once instead of twice (and no longer need you to hammer a midipad at 127 velocity to happen π
Improvement: "Midi Select Group (Next)" & "Midi Select Group (Previous) now trigger once with the press of midipad, and no longer capped to "must be velocity 127 to work"
Improvement: Midi Trigger fixes:
Impulse Tracker F5 Start Playback x[Toggle]
Impulse Tracker F8 Stop Playback (Panic) x[Toggle]
Switch to Automation
Impulse Tracker Pattern (Next) x[Toggle]
Impulse Tracker Pattern (Previous) x[Toggle]
Wipe&Slice 004-128 x[Toggle] (all 6 of them)
Paketti:Metronome On/Off x[Toggle]
Paketti:Uncollapser
Paketti:Collapser
Paketti:Show/Hide Pattern Matrix x[Toggle]
Paketti:Record Quantize On/Off x[Toggle]
also renamed Start Playback to Impulse Tracker F5 Start Playback for easier discoverability, also Wipe & Create Slices to Wipe&Slice so it matches the other places.
Improvement: Global:Paketti:Selected Instrument Midi Program +1 (Next) & Global:Paketti:Selected Instrument Midi Program -1 (Previous) now map from 0...128 meaning you can select "Off" in addition to 1...127
Improvement: these now work with triggers
Paketti:Play Current Line & Advance by EditStep x[Toggle]
Paketti:Record and Follow x[Toggle]
Paketti:Impulse Tracker F7 Start Playback from Cursor Row x[Toggle]
Paketti:Stop Playback (Panic) x[Toggle]
Paketti:Set Delay (+1) x[Toggle]
Paketti:Set Delay (-1) x[Toggle]
more updates coming
Feature: NumPad SelectPlay 0-8 now works with MidiMappings (single trigger, not double trigger). what this does is, you can play instrument slots 00 to 08 with pads. why is it called NumPad? Because there's also a version for NumPads. NOTE: this will NOT play the sample. it WILL however record to the pattern. if you have a quick pattern running, you can tap in beats and keep tapping in more beats. it will input a note to "current row". the note will always be C-4. while it is of course possible to fingerdrum a singular instrument's drums, this is for fingerdrumming instruments 00 to 08.

Improvement: NumPad SelectPlay 0-8 will now warn the user to select a note column, if on effect column.

Improvement: MidiTrigger singular fix:
Paketti:Capture Nearest Instrument and Octave
Paketti:Simple Play
all Columnizers
also renamed the Columnizers for better discoverability
also fixed Columnizer Effect Amount / Effect Number Increase Decrease to not error out if you're on Note Column instead of Effect Column.

Improvement: added "Midi Paketti PitchBend Drumkit Loader" midimapping (and more "Trigger once only" things)

Improvement: Paketti Gater now has LPB*2 and LPB/2 buttons for Clone Current Pattern and set LPB*2 and Clone Current Pattern and set LPB/2
what these do, is, print current LPB + BPM to current pattern.. then if you run LPB*2 , it makes an identical copy of the same pattern, selects the new pattern, prints LPB*2 and BPM to the pattern. LPB/2 does the LPB halving so LPB4 becomes 2.
Also, Print now writes to the amount of rows in the pattern, instead of only writing to 64 rows of the pattern.
Improvement: Paketti Gater now will output L00 & LC0 - in case you want to flip the mixer volume instead of sample volume.

Improvement: Clear FX Column would not clear L00/LC0 columns. now it clears them. if you resize the pattern while dialog is open, now the maximum amount of rows to be printed to will be set on every Print, instead of "set on start of dialog".
Improvement: Receive would receive volume or retrig stuff from where the cursor was, not from the beginning of the pattern. it now receives it from the beginning of the pattern.
Feature: Shift Sample Buffer Upwards / Downwards (MidiMapping)

Improvement: renamed these and added -INF dB. they now more clearly say it's all the samples in the instrument

Feature: Set Selected Instrument Volume 0.0dB / -INF dB.

Feature: Set Selected Instrument Volume +0.01dB / -0.01dB

Feature: Set Selected Sample Volume to 0.0dB and others to -INF dB
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/371

Improvement: better name

Improvement: Now references Global Volume name

Improvement: Set Selected Sample Volume 0.0dB, others -INF now has an informative showstatus

Feature: "Paketti Save Selected Sample Range .FLAC / .WAV" - basically just saves the selection in sample editor to a wav or flac using macOS Finder or Windows Explorer prompts. available in midimapping, keybinding and menu entry flavors.
p.s. the genesis of this is FastTracker 2! https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/233

Improvement: CTRL-N "New Song Dialog" now has Track DSP Wipe/Keep.
wipes Track DSP devices from all tracks, groups, sends, master.
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/249

Improvements: Paketti Midi Mappings Dialog has been updated with additional tweaks and fixes and added midimappings
Feature: "FT2 Minimize Selected Sample" -> another FT2 port - this will remove the rest of the sample after LoopEnd.
shortcut + menu entry
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/232

Improvement: Paketti DrumKit default instrument now has ParallelCompression and Glide Inertia
closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/336


Improvement: if you're in Mixer with TrackDSP displaying and run "F12", it used to kick you from TrackDSP to Automation - now it correctly goes to Mixer, Master, TrackDSP. same with if you're in Sample Editor, Sample FX Chain, or Instrument pages (f3, f3, f4, f4) closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/344
Improvement: if you're in Mixer without Upper Frame visible, pressing F3 would do nothing - now it goes to Sample Editor without requiring a second F3 press.
Improvement: All Plugin & Device loader dialogs now say "Add as Shortcut(s) & MidiMappings". closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/347





Improvement: ALT-D when there's less rows to be selected than LPB allows (you're on 3rd last row, LPB is 8), would shoot an error. now it gracefully selects from 3rd last row to last row. closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/354
Feature: Recursive DC Offset - one shortcut that wrecks the sample, the other that runs it random amounts (1-50 times)
https://www.loom.com/share/3b67650f0d8242f8ad7d08c6640207fc?sid=b4996356-c5b1-4cf6-a66b-1f9a56952d82

Feature: Load Device Chain shortcut - this is within Paketti. the first Device Chain Load command. If you have XRNTs you wanna share that are utility/utilitarian in essence, please hit me up with DMs. This is only the beginning re: Device Chain uses / scope of where we're going with this

Feature: Record,Follow,Jump to Pattern Editor & start playback with Metronome Precount for 1-4bars.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/348 )

Improvement: for better discoverability, midimapping names Sample Buffer Selection 01 Start x[Knob] & Sample Buffer Selection 02 End x[Knob] will be used from now on.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/349)

Improvement: Midi Mapping for Move Slice Start Left / Right, Move Slice End Left / Right
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/355)

Feature: 15 frame Fade in & Fade out to sample buffer
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/372)




Feature: Invert Left Sample, Invert Right Sample, Invert whole sample - with protection against running "Left Sample Invert" if sample is mono (same for Right) - available as menu entries and keybindings


Improvement: Re-added OverSampling + AutoFade to PakettiLoader - when loading multiple or single samples, or drumkit, these two are now applied. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/360)

Improvement: Autoseek + Oneshot added to Paketti Loader Settings.

Improvement: Renamed "Enable Pitchbend Loader Envelope" to "Enable AHDSR Envelope" (as witnessed with the two screenshots above
also some additional tweaks like having the Note text be on the next row, matching "One-Shot" text everywhere (not "One-Shot" somewhere and "Oneshot" somewhere else. also increased the Beatsync Mode Switch width so the text is better displayed.
Paketti Preferences dialog can now be closed with the same shortcut that opens it.
and it is now less wide. and other minor look'n'feel tweaks

Improvement: CTRL-N (Keep/Clear song elements) now has a Keep/Clear switch that switches all the below ones to Clear (or to Keep)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/388 )

Improvement: Added "Select All" to all the VST,VST3,AudioUnit,Ladspa/DSSI,Native Devices & VST,VST3,AudioUnit Plugin dialogs.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/380 )




Improvement: the "SimpleSend" DeviceChain now looks like this:
(i.e. needless hydra device parameters have been hidden and it really is just "one slider for send dry/wet")

Improvement: Midi Populator dialog now has better text titles
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/384)

Improvement: Paketti Clean Render Selection/Track now has a setting in Paketti Preferences for bypassing devices on rendered track after end of render.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/250)

Improvement: "Pale Green Theme" actually works now. it was broken after i renamed it as a file. so it's been broken for multiple weeks π
Improvement: the Plaid Zap Gift XRNI name is more accurate now. Next to the Pale Green theme, there's a button for opening the Paketti Theme Selector dialog.

Improvement: added dialog openers into Paketti Preferences. so Theme Selector, Gater, Effect Column Cheatsheet, Phrase Init Dialog, MIDI Populator, KeyBindings, MidiMappings

Improvement - grouping is now a little bit better, less visual jitter.

Improvement: added minor 0G01 Loader detail / info. further small tweaks to layout.

Improvement: Theme Selector no longer uses numbers in the dropdown menus, or when exporting XML or loading XML. this should mean that if you add x amount of Themes, the Favorite loading no longer breaks. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/338 )
Feature: Paketti Dialogs Dialog. This should in theory show all the dialogs in Paketti. It's a handy piece you can use to open them, or familiarize yourself with different features of Paketti.

Improvement: Forgot "Paketti Preferences" from the Dialog π
here's a demo of opening all the dialogs
https://www.loom.com/share/830634bae9f544bcacc6867d74ee5a6c?sid=e771626f-c8e7-4f10-b840-a99e1b408c0f

Improvement: "Computer Keyboard Velocity Slider" now works instead of shooting an error. this is a midimapping knob that lets you set the Velocity of your Computer Keyboard.

Improvement: I've changed the "Strip Silence" & "Move Beginning Silence to End of Sample" default settings to be "0.0121" (1.21%) so they immediately do something useful from the start, instead of requiring the user to set the Strip Silence/Beginning Silence Move settings in the dialog. of course they can set the dialogs as they want, after, but it's good to start with "for most cases, this'll be identified as silence -> blammo, do something useful" π (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/394)
Improvement: "Paketti Pattern Doubler" will now shoot a status error if you're trying to go beyond 512 rows.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/392)

Improvement: Theme Selector Favorites dropdown menu no longer has .xrnc at the end. this means loading +/- randomize (favorites) in dialog & randomize favorite shortcut work without issues now.


Improvement: Randomize Devices / Plugins dialog now tells you which preset you're setting (user#1 to user#5) for each of the four flavors, and there's a "run" button to run the randomize.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/334)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/387)

Improvement: Main Menu Entries tweaked and organized with better horizontal ruler sorting same for Instrument Box: and Pattern Editor:
i.e. Clean Render Selected Track or Group + LPB*2 flavor are together instead of separated.



Improvement: "MIDI Populator Dialog" now closes if you click on a button that opens it, instead of opening a second (and third and fourth.. etc) copy of the same dialog. shortcut for opening it also opens it, or if open, closes it.
Improvement: Menu Entries in Tools:Paketti..: are now organized in a better way.
and from now on, I'll try to enforce ... for signifying that it's a dialog in both keybindings, menu entries and midimappings

Improvement: Unison Generator now correctly assigns all the created instruments to Sample FX Chain 1, so "Parallel Compression" etc works. - i.e., you load Devices (Renoise, VST, VST3, AudioUnits) to FX Chain1, and you hear them being played. (closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/401)
Feature: Randomize Selected Instrument Modulation Filter Type shortcut
this will pick a random Filter Type .

Improvement: Added Default Filter Type to Paketti Loader settings. - from now on you don't need to be stuck with "LP Clean" - you can set the filter you want the samples/kits/renders/create new instrument/unison generator/isolate slices/samples to new instruments/duplicate instrument and reverse sample etc to be loaded with.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/231)

Feature: Added Midi Mapping for controlling Beatsync value 1-128. If Beatsync Mode is Off - it turns it On.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/409)


Feature: Paketti Phrase Default Settings Dialog + shortcuts + midimappings + menu entries for creating according to the Settings.
this lets you set your own specified settings for Phrase creation, meaning you can use it instead of the Renoise Native "Insert Phrase" shortcut that people might already be using.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/165 and
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/399 )

Improvement: Paketti Loader Preferences now has NNA & Loop Release / Exit Mode (these are used for unison, multiple sample loader, drumkit loader, clean render, etc, etc, etc.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/376 )

Improvement: Paketti Preferences Dialog has been split in half (the maximum height was exhausted, i couldn't have added anything extra at all - the OK/Cancel buttons would have stopped showing.
I also added some more dialogs to the top bar of the dialog. this resize will hopefully let me add some more content to to all the places in the near future.

Feature: Midi Mapping for toggling selected track Send 01-64 Value On/Off. It will either be -INF dB or 0.0dB aka full volume.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/79 )
p.s. if there is no send, it will gracefully error on the show_status

Improvement: Changed Midi Change 04 Effect Column Value x[Knob] to Midi Change 04 Sample FX Column Value x[Knob]
(since it wrote to sample fx column and not effect column)

Feature: Added Midi Change 05 Effect Column Value x[Knob] which directly inputs into the Effect Column with a slider.
this now completes the 5 columns.
note the "selected row" or "selected column"
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/134 )

Improvement: Midi Change 01 to 04 (Volume, Panning, Delay, Sample) will now work even if you're on Effect Column.
Improvement: Midi Change 05 Effect Column Value will now check which Effect Column you are on and output to that column

Improvement: Midi Change 05 Effect Column Value will now check which Effect Columns are selected, across multiple tracks, and output to those columns.

Improvement: Midi Change 01 -04 (Volume Panning Delay SampleFX) will now work across all columns that have been selected.

Improvement: Paketti Cheatsheet now has the Sample FX Column Slider too
(one checkbox marked as done at https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/317 )

Improvement: Hot Dog Stand theme added to Theme Selector!

Improvement: Sand (Contrast) added to Theme Selector

Improvement: Paketti Default Drumkit XRNI Loader can now be set in the Paketti Preferences - meaning, you aren't stuck using the default Drumkit XRNI - and can instead use your own.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/305)

Improvement: Pick a Random Theme (All) now shows the name of the theme picked

Improvement: Randomize a Theme on Startup of Renoise from all Themes.
(one checkbox from https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/283 )
note: this will take preference over "Randomize Theme from Favorites".

Improvement: "About Paketti..." Dialog will now close if it is already open, and you try to open it again.
Improvement: "Donate" Dialog will now close if it is already open, and you try to open it again.
Improvement: "Oblique Strategies" Dialog will now close if it is already open, and you try to open it again.
Improvement: "Paketti Theme Selector" Dialog will now close if it is already open, and you try to open it again.
Improvement: "Create New Instrument & Loop" now has Autofade, AutoSeek + Interpolation settings inside Paketti Preferences

Improvement: Paketti Gater/Retrig/Playback now has 0B01 / 0B00 added.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/443)

Improvement: Added Set Pattern Length 006 012 024
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/438)

Improvement: Added Set Phrase Length 006 012 024
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/439 )

Improvement: Phrase Init Generator, added 006 012 024
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/437)

Improvement: Fix Toggle Visible Column (Sample Effects) Globally string in menu
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/435)


Improvement: Grouped Sample Editor Menu Entries(Save Sample as WAV / FLAC, Save Selected Sample Range WAV / FLAC) together for better discoverability
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/422)

Improvement: Moved Strip Silence Threshold Dialog & Move Beginning Silence to End Threshold Dialog sliders to Paketti Preferences for better discoverability.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/440)

Feature: Max Amplitude DC Offset Kick Generator

Improvement: F3 will now correctly exit back to Sample Editor <-> Sample FX Chain loop .. even if you're in Phrase Editor, Keyzones or Modulation.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/442 & https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/418)
Improvement: Added "Global Visible Column (None)" to all menu entries (Pattern Editor, Tools, View)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/436)

Improvement: Plaid Zap now uses Parallel Compression + Glide Inertia instead of "old Drumkit XRNI)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/427)

Improvement: Reintroduced LPB*2 LPB/2 to Paketti Gater

Improvement: F4 *2 will now go from Midi Monitor in Midi Out, to Instrument Plugins Phrase Editor (instead of Instrument Plugins External Editor screen which just has a button there for opening the External Editor)
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/417)

Feature: Wipe Selected Track Track DSPs
a shortcut that wipes the Track DSPs from the selected track
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/419)

Improvement: Midi Populator will now also name the track accordingly - i.e. if you load a plugin, then the plugin name is shown in the track title.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/429)

Improvement: If you try to run "Create New Instrument and Loop" while there is no sample there - an error used to be shot. now shows a show_status and exits gracefully.

Improvement: Pattern Effect Command CheatSheet now has visual rows, hopefully making it easier to recognize where tempo + bpm + lpb stuff is.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/430)

Improvement: Paketti Gater will now print C00 to each of the empty checkbox rows until there's a checkbox that starts the C01 process.
also if there are no checkboxes for playback reversing checked, then 0B01 will no longer printed on each row of the selected track.
Improvement: Paketti Gater now has Panning for Panning Column or Effect Column 4.

Feature: Multi-pattern Automation Drawing (Curve Up, Curve Down, Line Up, Line Down) - this reads the selection in Pattern Matrix and imprints
https://www.loom.com/share/2642b8a5ab7f4afe9328ddff90aba7bf?sid=c94130c3-5274-4e7a-abb2-b4322398aa70 (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/57)
Improvement: Multi-pattern Automation Drawing now has Center->Top, Top->Center, Center-> Bottom, Bottom->Center in both Exp + Lin form.
https://www.loom.com/share/6d851711aa52451eb41cbedd631d61cc?sid=77630b42-cef3-4ff7-a4e2-9c0192000dc4

Feature: Set Velocity Range 00,7F for selected sample, and 00,00 for all the other samples in the instrument. midimapping + keybinding flavors. midimapping is 0...127, keybinding is +1 -1 and random.
this lets you load f.ex. 120 snares into an instrument, you manually click "Layer" in the KeyMappings, then tweak a midiknob or press a shortcut and all the other snares stop playing - but the one you selected will play. quickly audition your samples or other drums or oneshot synth sounds or wotevs.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/157)

Improvement: the above Switcharoo now will actually select the selected sample - meaning, if you're in the Sample Editor, you immediately can see, and start editing, the sample that you've selected with shortcuts or midimapping.

Improvement: Receive / Writing of Panning + 0B00 / 0B01 in Paketti Gater has had various bugs fixed, and a Jaguar preset has been added to Volume.

Improvement: Added "Caapi" preset to Paketti Gater

Improvement: Some minor improvements to make the Paketti Gater gui less wide:

Improvement: "Solo one sample out of all samples in instrument" (Velocity Range / Switcharoo -- still looking for a name) now prints status of which sample slot / sample name is selected.

Improvement: "Global Receive" added to Paketti Gater -> this will take what's in the currently selected track, and receive.

Feature: OctaMED Pick/Put Dialog / Shortcuts / MidiMapping:
This lets you PICK a row to a slot (10 slots).. then you can move your cursor around and PUT it anywhere, to any track. the slots are saved.
there's editstep too. so you could pick, say, 10 very highly customized rows, and bang them in yourself with midi buttons or shortcuts, to any track.
it will resize the track to fit the max 12 note columns and max 8 effect columns, if they're in use.
you can also set it to selected instrument, so grab something that uses one instrument, and paste it somewhere else, using another instrument.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/453)

Improvement: Paketti MIDI Populator takes less screen space - dialog is more optimized:

Improvement: OctaMED Pick/Put shortcuts + midimappings will now put slot content to pattern editor even if dialog is not open.
Feature: Selected Track Mute
midimapping for toggling mute on/off with one button. if it's off, it'll be turned on. if it's on, it'll be turned off. flavors: "selected track" or track01-64. also has protection against track not existing.

Feature: Set all non-empty patterns to current pattern length
Set all non-empty patterns to 96 rows.
menu entries + keybinds
(closes 2/3 of https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/464)


Improvement: Paketti KeyBindings + Renoise KeyBindings dialogs will now close when you run the shortcut again (and the dialog was open).
Improvement: Paketti Theme Selector will now return focus to Pattern Editor when opening dialog.
Improvement: Paketti Preferences can now be opened, closed .. and re-opened multiple times without an error
Improvement: Audio Processing Tools Dialog can now be opened.. and closed, with the same shortcut.
Improvement: Merged Audio Processing Tools Dialog and Resample Dialog together - because it makes sense.

Improvement: fixed the width of the slider and overall the rectangle boxes.. for Audio Processing Dialog

Improvement: Paketti About dialog is now the Donate dialog too.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/465)

Improvement: Paketti Preferences topbar + Dialog of Dialogs content tweaked. (aka removed Donations, renamed "About Paketti" to "About Paketti/Donations..." - and removed "Resample" dialog since it is in Audio Processing Dialog.


Improvement: Formula Device Documentation Dialog + manual text optimized so it no longer takes so much space. this loads the Formula device and displays the manual, with helpful Renoise forum links at the bottom.

Improvement: App Selection dialog has now been optimized so it takes less space
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/470)

Improvement: About Paketti/Donations dialog can now be closed with "OK" or "Cancel": (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/482)
Improvement: Pattern Effect CheatSheet will now correctly write to current row SampleFX Column if no selection in pattern exists - instead of erroring. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/475 )
Feature: "Duplicate Sample Range, Mute Original"
this takes the samplerange, copies it to a new sample slot, mutes the original and makes sure all other settings are copied for the sample. (transpose, pitch, finetune, panning, autofade,autoseek, interpolation, oversampling, beatsync etc)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/457)

Improvement: "Interpolate Effect Column Parameters" now also duplicates the first row effect number - so it's not just empty lines with interpolated effect values.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/170
and https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/480
and https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/473)

Feature: Clean Render Selected Track or Group and save as WAV or FLAC
this will do a render of the original track, without muting notecolumns of original track, without collapsing the track, and without printing C-4 on a new track (since no new track is created).
this is basically a shortcut and a menu entry for "selected track or group straight to .WAV/.FLAC".
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/408)

Feature: Randomize Selected Sample Pitch +6/-6 and Finetune +127/-127
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/458)

Improvement: moved "Strip Silence Dialog & Move Beginning Silence to End Dialog" content to Audio Processing Dialog
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/451)

Improvement: Audio Processing Tool now includes "15 frame fade in, 15 frame fade out" - and it correctly updates the sample waveform at the end of running it - and some visual tweaks to make the dialog take less space.

Improvement: Added Max Amp DC Offset Kick, DC Offset, DC Offset 1-50 times buttons to Audio Processing dialog and a slider for running DC Offset multiple times (1-500 times)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/450)

Improvement: Rotate up,down,left,right shortcuts + midimappings now all refer to Rotate instead of some Rotate and some Shift.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/481)

Improvement: Added Invert Left Channel, Invert Right Channel, Invert Sample buttons to Audio Processing Dialog.
also added DC Offset, Recursive DC Offset with a slider, and a max amp dc offset kick generator
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/485)

Improvement: Resample Name + Details now change when changing to a new sample, and they update when running Process or Resample 44.1khz

Feature: Transpose Notes in Selection via Midi Mapping
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/449)

Improvement: Rotate Sample Buffer Left/Right Fine + Coarse MidiMappings:
and with protection against rotating a sample larger than 64000 frames - (as it would cause a significant hit on performance, crash renoise - well, all 3.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/486)

Improvement: Rotate Sample Buffer Left / Right by 1000/10000 shortcuts now implemented.


Feature: Duplicate selected Sample, Maximize Sample, Convert to 16bit, save as WAV or FLAC
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/445)

Improvement: Midi Change 05 Effect Column Value x[Knob] will now work even if you are on Note Column. it used to shoot an error.

Improvement: Introduced "Sample FX Column Visible" to the dialog + preferences for Paketti Phrase Init.
also modified "Create Phrase" entry in Menu Entries to read the Phrase Init Settings and use them.

Improvement: Flood Fill Note and Instrument every 1-64 step now also captures Volume, Panning, Delay, SampleFX column content
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/476)

Feature: Replicate at Cursor (0, +1, -1, +12, -12). this will replicate everything that is above the cursor to below the cursor until pattern runs out. this is from PollyTracker, JohnPlayer and QuantumSoundTracker.
https://www.loom.com/share/66b956cf80d24ad2a72ed5abe590b84a?sid=fae3b7e0-359f-472b-b059-5a4c9ab9a683
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/460)

Improvement: Added "Replicate Selected Track at Cursor" to the above.
quick demo.
https://www.loom.com/share/2df6c536454041128e2d38aff6c4dcd3?sid=8c2ce261-ce79-45a3-a9c9-02efb6ecb432


Improvement: Rotate Sample Buffer Left / Right by 10, 100 added

Improvement: Wipe&Slice now reads if the drumloop or other loop has beatsync mode ON and a specific line set. meaning. if you set sample to 128 beatsync, and slice into 64 slices, then each slice will have beatsync 2. if you set sample to 16 beatsync, and slice into 16 slices, then each slice will have beatsync 1. and so on. and if sample has no beatsync, then slice without beatsync. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/100)
Feature: Draw a diagonal line to new sample for DC Offset drum generation
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/493)

Improvement: Paketti Transpose will no longer shoot an error if you try to transpose a selection in a Group, Send or Master track which cannot have Note Columns. Will cleanly error. If selection in pattern contains tracks, sends, groups and masters - no error will be shot, also - just transpose the rows with notes.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/488)

Improvement: The Randomized Theme randomizing is now run once, not twice, on load/save of Song and restart of Renoise.
Improvement: Added "Mono->Stereo" & "Mono->Stereo (Blank L)" and "Mono->Stereo (Blank R)" to Audio Processing Dialog.

Feature: Double LPB / Halve LPB - this will double the current LPB - or halve it, if possible (odd LPBs will not be halved).
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/500 )

Feature: Initialize Groove Automation.
this adds three *Instr. Automation devices to Master, the first is set up for Global Groove Settings (slot 1-4) and the second one is set for EditMode, EditStep and Octave, and a currently experimental RunScript1 and a third device will have RunScript2-5.
they will be the first four No Parameter in each automation for each device.
these are not yet configured for anything since I'm trying to find usecases for which Paketti functions should be automated. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/150)
Here's a little video of how it works:
https://www.loom.com/share/f24ab48833aa47aab640aa3a79350b16?sid=c6c8c08d-1aae-49f8-86e2-8b15e1a31c2e

Improvement: the above Automation now is named accordingly - am still tweaking this and it requires a reload of the parameter notifiers on every song load or song save, but at least the automation lanes are named accordingly.

Improvement: Another screenshot for the above to show the improvement better

Improvement: "instr00" is automatically added, which is a placeholder for "Paketti Automation" - and now there's no chance you will accidentally automate some plugin's parameters.
Improvement: When launching Paketti Automation - the current Global Groove 1-4, EditStep, LPB, BPM, Octave are read into the Doofer devices. so there's no "oh!" panic situation happening when launching the init (i.e. all your settings changing)

Improvement: Upon request from Osionik Cyberpunk1.xrnc has been renamed as Osi-Cyberpunk1.xrnc in Themes
Improvement: Mono Blue & Mono Orange & Mono Red removed since Mono Blue (dblue).xrnc & Mono Orange (dblue).xrnc & Mono Red (dblue).xrnc already exist
Improvement: 12st_Pitchbend.xrni instrument (aka Paketti PitchBend Multiple Sample Loader etc) now has "PitchStepper" automatically added to the instrument. this means you have a 16 step randomizer for pitch there, which will only become active when you start configuring the steps.

Feature: "Jump to Sends" - this jumps to Sends globally, anywhere. (Renoise Native jump one is only available in the Mixer)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/504)

Improvement: eSpeak TTS now has Randomize Settings for randomizing Language, Voice, Word Gap, Pitch Capitals, Pitch, Speed. (Closes 3rd checkbox of https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307 )
Improvement: Added "Normalize Sample" function to Audio Processing Dialog.

Improvement: eSpeak TTS now automatically normalizes the audio, this prevents clipping. (Closes a todo-entry in https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307)
Improvement: eSpeak TTS now has Randomize Consonants and Randomize Vowels
(Closes a todo-entry in https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307)


Improvement: eSpeak TTS now has Randomized String
(Closes a todo-entry in https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307)

Improvement: Added Pitchbend Drumkit Init Menu Entries (Instrument Box, Tools, keybinding)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/507)



Improvement: added PitchStep to Drumkit default XRNI
Feature: Show/Hide PitchStep External Editor
this will show/hide the PItchStep External Editor of selected device.. There's protection against errors if there's no sample, or if modulationset is not called Pitchbend.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/506)




Feature: Pakettify Selected Instrument - this will make an identical copy of the sample, samples or slices, and inject the Default XRNI into the mix.

Improvement: .WAV and .FLAC are now capitalized in the Dialogs for saving samples. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/514)
Improvement: "Set Pattern Length" and "Set Phrase Length" shortcuts will now show the number in Hex after it. so 012 (00C)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/512)

Improvement: OctaMED Pick/Put Slots are now named from 01-10 instead of from 1-10
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/511)

Improvement: Changed the Clean Render and Save Selected Track or Group as .WAV to a shorter version for better discoverability in KeyBinding:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/515)

Improvement: added "Replicate at Cursor" MidiMappings:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/518)

Improvement: Paketti Gater "Retrig Gater" feature will now clear the steps that don't have checkboxes set to On. It will now read the switch status (FX Column, Volume Column, Panning Column) for Retrig - and clear that, before printing the new content in. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/478)
Improvement: Paketti Gater "Panning Gater" - Clear FX Column or Clear Panning Column will now set 0P80 or 40 (panning column) when wiping. - returning the Panning to the original state.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/456)

Improvement: Unison Generator now auto-sets the Instrument Volume down to -10.5dB to evade clipping
Feature: Chordsplus add 1-12 / sub 1-12. This takes the current note column content, and adds x to it and adds the note+x to the next column row. if there's more visible note columns required, then it adds more visible note columns. looks like this:

Feature: "Insert Note Offs to all Visible Note Columns" - this will put a note off to all the visible note columns.


Improvement: Paketti Automation now has 2 Doofers. the Doofer2 has "EditMode" & "Sample Recorder" & "Pattern Length" and "Instrument Pitch"

Improvement: 2nd Doofer now has "LoopEnd" for Selected Sample. example:
https://www.loom.com/share/acbb53d9d5b34f04b9dc11f9274fb794?sid=2e88e830-5ecc-4be4-a72e-8614873b4423
Improvement: "Insert Note Offs to all Visible Note Columns" has been renamed to Toggle Note Off in All Visible Note Columns - and yep, it now adds or removes Note Off.
Improvement: Added BPM +0.5 & -0.5 shortcuts (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/520)
Feature: Track Grouper - creates a Group based on Selection in Pattern.
Selection in Pattern to Group
edit: this is a KeyShortcut that i run in the video. i select tracks with mouse or keyboard (regular renoise feature), then run the shortcut and bang, the tracks that are in the selection, are grouped)
(idea from https://forum.renoise.com/t/fastest-group/34495)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/521 )

before: here's hey ho huh and track 08 selected
after: here's the selection grouped. π


Feature: There's now a Customization folder inside Paketti which includes the transparent "Badge" & "Logo" images - so that your Renoise can look like this (i.e. Renoise logos from bottom right + R badge in Instrument Box are removed)
note, the copying is manual work since Renoise cannot be open at the same time. These are just stashed so they are safe.

Improvement: Paketti Gater now correctly writes a 0P7F for real Center, when wiping Panning with no entries.
EDIT: it's actually a bug in Renoise. they say 0P80 is center, but when you right-click on Center, it says 0P7F and neither of them are Center. i've reported it.
Improvement: the Paketti Automation Doofer will now correctly set Global Groove 1,2,3,4, LPB, BPM, EditStep and Octave to the Doofer device - so you can start automating from "actual settings".
Improvement: Unison Generator now introduces randomized Panning (Hard Left / Hard Pan), and Finetuning happens randomly between -8 and 8 finetune values.
Feature: Chordsplus - this one is heavily in progress. Basically, you select a note on the first note column, and run either "add 1" to "add 12" - what it does is, print a note on the second note column that is pitched upwards by the number. so "add 3"? C-4 now has D#4 on the second note column. add 4? C-4 now has E-4 on the second note column. you can continue until you get to the 12th note column, after which, you'll be kicked back to the first note column but next row.
then, the same for sub to sub 12 - you have a C-4 on note column and run sub12? you now have C-3 on the next note column and that column is selected. this means you can quickly put together a chord with intervals.
but that's not all.
there are ready-made chords that you bang out with a shortcut (check second screenshot). this means, you run the script while cursor is on a basenote -> result is a chord.
and the real deal is the midimapping. Global:Paketti:Chord Selector [0-127] <- this means you're on any row with a note on notecolumn1 -> twist a knob, and you've output an interval based on the note the cursor is under. meaning a large amount of possibilities of chords and variations.
note: this is very much a work in progress so if you're seeing intervals that are missing, send me a DM with the intervals (run them as "3-4-4-3" meaning 3rd transpose of basenote, 4th transpose of 2nd note, 4th transpose of 3rd note and 3rd transpose of 4th note.
I'm also introducing "Toggle Note Off to all Visible Note Columns on track" and a "Phrasing Randomizer" which takes the notes on your row and transposes them by 1, 2, 3 octaves up or down.
if you have any ideas, please get in touch.






Improvement: Paketti Phrase Doubler / Halver naming tweaked
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/526)

Improvement: PitchStep Show/Hide will now allow for hiding the PitchStep if running the shortcut on an instrument that has no instrument / sample.
Plumbing: Paketti Manual has now been added to my account, and the first PR has been merged in. ( https://github.com/esaruoho/paketti-manual/ )
Feature: Show/Hide Selected Device on Master or Selected Track
you have your favorite visualizer or different device on Master? now you can set "ok, always show TDR Kotelnikov external editor, no matter where it is on Master, if shown, hide it". meaning, you can configure your preferred devices to be shown on master or on selected track, 10 slots in total. you will get a dropdown menu with a list. if you always have device1, device2, device3 on your master - anywhere in the fx chain, you can display one of them, or hide one of them.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/374)

Feature: Main Menu -> Tools -> Paketti.. -> Plugins/Devices -> Debug -> Dump VST/VST3/AU/LADSPA/DSSI/Native Effects to Dialog
opens up a dialog, with a save button, with the full list of available devices, and their full details.
good for debugging.

Improvement: Show/Hide Slots will now add, and show, the slot device to your Master or Selected Track, if it's not already there.
also added midimappings.. so when you press a midibutton.. if it's not there, it's added. if it's there, it's shown. if it's visible, it's hidden.
Also Improvement: fixed LADSPA / DSSI so they are shown in the dropdown menus
Also Improvement: the dropdowns are now alphabetically ordered for easier discoverability

Improvement: Show/Hide Slots -> If no External Editor available, then say it instead of erroring. and don't minimize the device, since parameters can be shown within the device.
Improvement: Show/Hide Slots: if you open the dialog while it is open, it closes. when you open the dialog, cursor focus is shot back to Renoise. and when you use the shortcut to close the dialog -> the slots are saved.
Improvement: Added missing Silence + Beginning Silence threshold text info to Paketti Preferences
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/529)

Improvement: Paketti Transpose +1 -1 +12 -12 and Note Column Transposes now 6. no longer transpose "OFF" note to B-9 or C-0 (both) 7. no longer exit transposing if first column selected is an effect column (Note Column Transpose) (1. Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/524)
Feature: Insert Random Delay on Visible Note Columns on Selected Row of Selected Track
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/492)

Improvement: Added Insert Random Delay, Insert Random Volume, Insert Random Panning shortcuts + midimappings:

Improvement: Modified Insert Random Delay Volume + Panning shortcuts + midimappings to either do it to the current row, or to selection in track .. or selection in pattern.
Improvement: From now on, all Modulation Device loaders (menu, shortcuts) will default to + instead of *
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/534)

Improvement: Player Pro Note Dialog will now wipe Instrument column of selection, if "000" or "OFF" is selected:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/499 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/498)

Improvement: Player Pro Note Dialog now can follow EditStep.

Improvement: if PlayerPro Note Dialog receives EditStep = 0 - it defaults to filling the rows as if EditStep was 1
Improvement: minor PlayerPro dialog tweaks and EditStep row is more informative now.

Improvement: Player Pro Transpose now works across multiple tracks, and does not transpose "OFF" "notes"

Improvement: Added "Save as Textfile" to Paketti KeyBindings - saves a textfile of what is shown on the textfield.

Improvement: I've added a new file to the paketti-manual; https://github.com/esaruoho/paketti-manual/blob/main/Documentation/22-KeyBindings.md
it is a direct print from the Paketti KeyBindings.
(Closes https://github.com/esaruoho/paketti-manual/issues/5)

Feature: "Set Repeater Value" MidiMapping. this takes a leaf from the Show/Hide Slot book, but instead of opening an external editor, one knob will 1. add Repeater if it is not already in Selected Track 2. change the parameters from parameterspace
Off, 1/1 Even, 1/1 Triplet, 1/1 Dotted, 1/2 Even, 1/2 Triplet, 1/2 Dotted, 1/4 Even, 1/4 Triplet, 1/4 Dotted, 1/8 Even, 1/8 Triplet, 1/8 Dotted, 1/16 Even, 1/16 Triplet, 1/16 Dotted, 1/32 Even, 1/32 Triplet, 1/32 Dotted, 1/64 Even, 1/64 Triplet, 1/64 Dotted, 1/128 Even, 1/128 Triplet, 1/128 Dotted
meaning, you tweak a knob and it changes to one of these. this is surprisingly powerful.
there's two flavors - one will rename the track destructively, so you know what's going on, the other will not rename the track.


Feature: Global Set EditStep to 00...64 this means you only configure one set of shortcuts, instead of "Pattern Editor EditStep" & "Phrase Editor EditStep". Found this need while going to Phrase Editor and cmd-1-9 doing nothing.
Improvement: "Duplicate Instrument and Select New Instrument" shortcuts will now detect you're in the Phrase Editor, and keep you in the Phrase Editor. meaning: you've got a phrase you're happy with, run the script, you're editing a new phrase for a new instrument, but still in the Phrase Editor.
Improvement: "Duplicate Instrument and Select New Instrument" shortcuts will now detect if you're in Plugin->Monitor view and stay there.
Improvement: Init Phrase Settings will now create a new Phrase if there is no Selected Phrase - otherwise it'll modify the Selected Phrase.
Improvement: added 2 and 4 to Init Phrase Settings dialog because.. they weren't there.

Improvement: Added further protections for Randomize Devices and Plugins dialog - now it will properly update the selected Plugin, and return from "No Plugin Selected" state back to the selected Plugin state.
Improvement: Player Pro Note Dialog will now also follow editstep when changing instruments - instead of typing the whole selection in pattern full of the instrument.
Feature: "Record Automation to Selected Parameter" - pick a parameter in Automation View (Lower Frame), twist the knob assigned to this midimapping - whichever parameter you have selected in Automation, is the one that gets automated.
https://www.loom.com/share/5b46a1dd7d5e4d82b87ff145fc38c3cb?sid=a70c3095-f7b8-4909-a664-6b449baecb23
Improvement: Record Automation to Selected Parameter" will now write it to selected automation range, if there is such a thing. but if playback + follow pattern is ON, then it will write to playhead position.
Feature: Selected Device Automation Parameter 001-128 midimappings added. This means, you select a Device on TrackDSP, and twist a knob, and if it has a parameter in the knob you've set (001-128), that parameter will change, in the device, no automation. BUT if you have EditMode on, then the parameter value change is written to automation automatically to currentStep (not following playhead) BUT if you have EditMode + Playing on, then the automation is written to playStep -> following playhead.
this means you will automate, with your battery of knobs or sliders, the value of any parameter in a selected device. - or if not recording, then simply change the parameter of any device.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/543)


Improvement: Selected Device Automation Parameter will now also edit device parameters if Playing is on, but follow pattern is off.
Improvement: Selected Device Automation Parameter will now also edit device parameters if Playing is Off. and if Playing is Off and Record is On, it will write to Automation.
Improvement: If using Wipe&Slice while there was no BeatsyncLines set - it would shoot an error. no more. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/547)
Improvement: If you run Paketti Normalize Sample on a Slice - it will normalize the original sample. otherwise, selected sample. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/548)
Improvement: Paketti Renoise Native, VST, VST3, LADSPA, DSSI, AudioUnit dialogs have now been combined into one dialog. with dropdown menus. this averts the issue with "too many devices" when in AU/VST3.
it also has a randomize slider.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/403 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/466 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/406 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/404)

Improvement: Paketti Device Loader dialog now correctly sorts VST3, and has 36 rows per column, which should help with large selections of VST3
Improvement: Paketti Plugin Loader dialog now shows LADSPA, DSSI, splits VST3 and VST and AudioUnit to separate dropdown menu dialogs.

Improvement: Paketti Device Loader dialog has now been optimized for maximum amount of rows i can stretch out of it. this should help when you have hundreds of devices. you now have 39 items per each column, and the dialog will fit to how many columns you have.

Improvement: I've optimized the Paketti Device Loader about as far as it can go. Please post on <#1251962697298214922> with a screenshot if you have any issues with the Device Loader Dialog.

Improvement: LADSPA / DSSI dialog names have been filtered so they no longer take up a lot of space. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/414 )
Improvement: Added "ClippyClip" Device Chain to Shortcuts:

Improvement: "Change Selected Track Volume +0.1 +0.05 +0.01 -0.1 -0.05 -0.01" - this sets the PostFX volume of the Selected Track. protection against going over 3dB and below 0dB.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/553)

Improvement: Coluga YT-DLP downloader now no longer uses BASH scripting. it should now work with both macOS and Linux. Windows is still pending. there's also a log screen so you can see what is going on. and a Clear button.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/267)

Improvement: eSpeak Text-to-Speech now has a "Which Row" valuebox, meaning you can either use 0 - which renders everything, or a specific row.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/263)

Improvement: "Populate Sends to All Tracks / Selected Track" will now consider if the Sends have already been added. if the SendTrack name has changed, then, instead of adding a new duplicate send, it will rename the currently existing one. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/256)
Improvement: YT-DLP downloader will now, at the end of having downloaded the whole sample, normalize it.
Feature: Match Current Sub Column Selection. This lets you fill the current pattern content with Instrument, Volume, Panning, Delay, SampleFX(01) and SampleFX(02) and works for selected note column.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/130)

Improvement: Added a Normalize flavor to Paketti PitchBend Multiple Sample Loader. this will normalize the samples being loaded.

Improvement: if you ran PitchStep external editor shower with no sample, you would get an error. fixed.
for the sake of clarity, here

Improvement: There's now two flavors of "Replicate at Cursor". one that replicates above+cursor and one that replicates above only.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/495)

Feature: Loop Set Texture, Loop Set Percussion. This takes the current sample
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/560)

Improvement: "Save Notes" for Paketti Track Dater & Titler
if you find a cool name, you can save it to your selected note file.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/337)

Improvement: Flood Fill Note and Instrument, will, now when there's no selection, fill from current row onwards instead of all rows in pattern. Also errors fixed (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/359)
Improvement: Paketti Gater "Insert Commands" shortcut + midimapping added
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/517)

Feature: 3 shortcuts:

Improvement: Added one more "Delay Column Increase/Decrease +1 -1 +10 -10". This one does current row, or current selection.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/366)


Improvement: eSpeak now has "Generate Row 00-32" shortcuts. 00 will generate all the rows. 1 will generate 1st.. and so on.
(Closes yet another checkbox in https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307 )

(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/564)
Feature: Smart Beatsync from Selection This reads selection in pattern and imprints it on selected sample beatsync. meaning: select 4 rows, run shortcut - sample Beatsync lines is now 4. select 64 rows, run shortcut - sample Beatsync line is now 64. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/561)
it's a +1 -1 effort.

Improvement: Added -1 protection, so can't go lower than instrument 1 (00)
Improvement: Coluga / YT-DLP now has a textfield for storing the location of the yt-dlp executable. This, along with the heavy plumbing i did, converting the bash script (which was macOS only, really) to full LUA, should allow yt-dlp to successfully download YouTube videos in full and add them as samples into a new instrument, complete with the Default XRNI Instrument (and it's macros) automatically added, on macOS, Linux and Windows.
It's been a long time in coming
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/570)
Sidequest: In case you're wondering about the drop-off on updates on this channel, it's because I've been reworking the Sononymph tool so that it has more and better features, and improve the Configuration file detection. here's a screenshot or two. Sononymph is a tool that allows for a deep integration between Sononym and Renoise, and I've added certain features to it that "made sense" to have. If I include this in Paketti, I'll have to do a complete rewrite of it, so that it fits into how Paketti has been coded. I'm in contact with danoise about these features and hoping to see some, shall we say, official progress, further down the line. If he has abandoned it, I'll rewrite it and include it in Paketti.


Another sidequest: I've received permission from Martblek to take his "Simple Beat Detector" tool, which uses a lowpass filter to detect low-end beats and create slices, and modify it. I've been working on it, and now it has both lowpass and highpass filters for detecting beats, and therefore it now detects hihats too, not only bassdrums. It's still a work in progress, though - I want it to be better than the Renoise transient detection, before I will ship it in Paketti. Here's a rudimentary video.
https://www.loom.com/share/8908487817cc4c888ce00657afed9d8b?sid=629daeb8-01d8-4e97-ae84-a6837371556d
Improvement: I've added three TouchOSC specific shortcuts, designed for switching to Pattern Editor, or to Sample Editor, and the third one starts sampling and stops it. So press a button and hold it down on TouchOSC - Renoise samples a new sample. Let go -> stops sampling.

Plumbing: Finally removed all the four separate Load VST, Load VST3, Load AU, Load LADSPA/DSSI, Load Native device dialogs from the code since there's only one preferred dialogs that loads all 6 things.
Improvement: Added Graphite RC1 and Yellow Harmony to Paketti Theme Selector


Plumbing: Moved features around in codebase
Feature: Expose and Select New Column
Hide Current and Select Previous Column
these are slightly smarter shortcut replacements for the Renoise "Add New Column" .. It not only adds the new column (effect or note column) but also selects the column. if you're on the 12th note column and remove one, then you're on the 11th note column. same for if you're on the 8th effect column and remove one, then you're on the 7th effect column.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/567 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/505)


Improvement: When loading a Plugin using a shortcut, the Middle Frame would change from "Midi tab" to "Sample tab" - mostly to Sample Editor. Added some logic to avert that, and also made sure that if you're in the Plugin Phrase Editor, you are no longer transported to Sample Phrase Editor. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/551)
Improvement: Expose and Select New Column & Hide Current and Select Previous Column are now available as MidiMappings
Feature: Select Sample Next/Previous shortcut + midimapping:
it also communicates at the bottom status row, which sample has been selected and if there's no more to move to
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/571)

Improvement: Osionik has sent four more themes to me.
Osi-BladeRunner
Osi-Moss1
Osi-TheBlueBrandy
Osi-TrackerHacker
they've been added to the Themes. Now there's a total of 516 themes in the Paketti Theme Selector. If you have any additional themes, please send them my way via DM.
Feature: "Flood Fill Column with Row". if you are on effect column 1 and what's on the row you wanna fill the pattern with, then run this. or note column.

Feature: Toggle Note Off on All Tracks on Current Row
it will write a Note Off (or turn it off) on the current row of all tracks.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/568)

Improvement: The "Selected Instrument Macros1-8" generation has been simplified so it is no longer so over-the-top.
they're no longer dynamically created, they just exist. this should avert an error caused in a newer version of Renoise that's currently in alpha.

Improvement: Added noby's "Mango theme" to Paketti Theme Selector
Feature: Double Double LPB & Halve Halve LPB.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/581)

Feature: Double Double Beatsync, Halve Halve Beatsync (Selected Sample or All)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/582)


Feature: Double BPM, Halve BPM, Double Double BPM, Halve Halve BPM.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/580)

Update: Removed "Gainer Exponential Curve" from Pattern Matrix, KeyBindings, Track Automation etc. this can be done properly with other Paketti Automation shortcuts + menu entries. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/471)
Improvement: Flood Fill Note and Instrument with Step will now also Flood Fill the Effect Column content. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/398)
Improvement: Launch App Selection added to Sample Navigator + Sample Editor dropdown menus
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/516)


Improvement: If you use ALT-Y Swap Block to swap the selected block, and have the cursor on the first row of the selection - Renoise would become unresponsive, end up in a loop and eventually either crash or ask you to stop the tool. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/513)
Improvement: ALT-Y Swap Block now correctly swaps Volume, Panning, Delay, SampleFX Columns and makes them visible in the new track.
Improvement: If you are on Master track and load samples using the Paketti PitchBend Multiple Sample Loader / Paketti PitchBend Drumkit Sample Loader, the *Instr. Macros device will not be created to the Master channel and an error will now be shot.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/501)

Improvement: ALT-Y Swap Block now finally, correctly, also swaps the effect column content, and makes the correct amount of effect columns visible in the track where they are being swapped to.

Feature: Set Pattern Length to LPB*001 to Set Pattern Length to LPB*512 added
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/420)

Improvement: Pattern Editor context menu reorganizations - submenus, no longer scrollbar galore. and somewhat better organized anyway
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/330)

Improvement: Pattern Editor CheatSheet now looks like this, so more optimized. almost 100% there with the Randomize buttons - they will only randomize the rows that do have content. volume, panning, delay, samplefx already work. just effect columns to go.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/316)

Improvement: Effect Columns now get properly randomized - ignoring the empty rows.

Improvement: Pattern CheatSheet no longer writes to each pattern in the song, only the one you're on. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/474)
Improvement: Pattern CheatSheet now follows "Randomize whole track if nothing is selected", otherwise reads selection in pattern, and if no selection, and "randomize whole track" is off -> then it just outputs to current row. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/589)
Improvement: Paketti Preferences now (again) closes and opens without issues multiple times. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/587)
Improvement: Wipe Effects from Selection will now only wipe the selected effect columns, not all effect columns of the track. and if there's multiple effect columns selected across multiple tracks, it'll still continue working and only wipe the effect columns that were selected.
Improvement: Added 2nd keybinds for "Impulse Tracker Pattern (Next)" / "Impulse Tracker Pattern (Previous)" (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/202)
Feature: Impulse Tracker ALT-X (interpolate, or, if already interpolated, wipe)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/205)

Improvement: The Center-to-Bottom & Center-to-Top automation drawing while in Automation, from menu entry, now properly starts from 0.5 instead of "slightly off". (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/124)
Feature: Toggle Match EditStep with Note Placement. This is meant for Effect Column use. If you are on the Effect Column and you toggle this off, the EditStep will dynamically change to match the "next note".
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/128)

Improvement: Paketti PitchBend Multiple Sample Loader had regressed to no longer working due to Coluga changes. Fixed. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/590)
Improvement: added Autofade to Paketti Preferences for Wipe&Slice
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/566)

Feature: Device Control 01-34 Bypass, Enable, Toggle.
These shortcuts+midimappings will let you bypass, or enable, or toggle, all the 34 devices of the Track DSP Chain.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/583)




Improvement: Normalize no longer worked with Coluga or eSpeak or Audio Processing Dialog - due to a regression. fixed.
Improvement: eSpeak now has a brand new checkbox, called "Add Render to Current Instrument" - which will add a new slot and add the render there.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/307)

Improvement: After a ton of plumbing, I got eSpeak dialog to open and close and open without erroring out.
also some tweaks to how it looks.

Improvement: Player Pro Note Dialog is now a Global shortcut and takes you to the Pattern Editor so it "immediately makes sense"
Plumbing: in preparation for making it possible to set a user-defined key for closing a dialog, I've modified the following dialogs to follow the forthcoming user-defined key: 8. Paketti Preferences 9. Paketti Theme Selector 10. eSpeak 11. Dialog of Dialogs 12. About/Donations 13. Paketti Gater 14. Paketti Phrase Init Dialog 15. Oblique Strategies 16. Track Dater & Titler 17. Track Routings 18. Select or Add Convolver Device 19. User Preferences for Show/Hide Slots 20. ImpulseTracker New Song CTRL-N 21. Effect Column CheatSheet 22. Midi Populator 23. OctaMED Pick/Put Dialog 24. Paketti KeyBindings 25. Renoise KeyBindings 26. Paketti Midi Mappings 27. Paketti Track Renamer 28. Paketti Coluga YT-DLP 29. Beat Detector Dialog 30. Launch App Selection 31. Player Pro Note Dialog 32. Load Devices (VST,VST3,AU,Native,LADSPA,DSSI) 33. Load Plugins (VST,VST3,AU,LADSPA,DSSI) 34. Debug: Available Plugin Information 35. Debug: Available Device Information 36. Audio Processing Tools Dialog 37. Player Pro Effects Dialog 38. Player Pro Tools Dialog
Improvement: Track Routings dialog ui has been tweaked, so the dropdown menus will show a longer output channel name, and margins have been removed.

Feature: Output Routing (Serial, Continual) & (Serial, Non-Continual) - this maps the Outputs for all tracks including master + sends. it is serial. continual will go through the list continually, non-continual will map as many outputs as you have, and the rest of the tracks will have the same output channel, if output channels have been exhausted.
there are "omit Master & include Master" flavors of each.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/542)


Improvement: the "Selected Track Send 01-64" has been changed from volume control to On/Off toggle. and the placement can be anywhere in the selected track. first send is first send. doesn't matter where it is.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/428)

Improvement: added the "Master is in Loop" too flavors for Output Routing:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/597)

Feature: Play current line + step forwards & Play current line + step backwards shortcuts. These will toggle follow pattern off, and step forwards, or backwards. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/599)
Feature: Set Output Routings to Master, and Master to 1 & 2
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/600)

Improvement: added "Play Current Line&Step Random" which steps to a random step in the current pattern.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/602)

Feature: Clean Render Seamless Track/Group.. this will take your <256 row pattern, duplicate it to max 512 rows, i.e. play it "twice", then render it, select the first half of the sample, and add a loop from the end of the first half to the end of the second half. meaning, seamless loops with reverb tails.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/280)

Feature: Rotate Sample by 1/2, 1/4, 1/18, 1/16
this will flip your beat by a fraction of the whole beat.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/362)

Feature: Play at Random Line in Current Pattern, 2, 4 or LPB.
this will either, if follow pattern off, move the cursor to a random line in the pattern-space, or if set to 2, move to a matching.. or 4, move to a matching, or LPB, move to a matching LPB space. so if you have 64 row pattern and LPB is 8, then it'll only randomize all the "8th" rows if that makes sense. also available for midimapping.
and if follow pattern is on, it will actually kick you to play the random line it picks. and no duplicate lines will be hit - so if you're already on row 48, pressing a randomizer will not accidentally kick you to row 48. enjoy (and remember to use autoseek! if you're working with loops)


Feature: Play at Row 001-512 (Shortcut + midimapping)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/603)

Feature: Stepper Dialog for Volume, Delay, Panning - Auto-Grab will also automatically grab the current track's settings.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/340)

Improvement: OctaMED Pick/Put Dialog now



Improvement: Renoise KeyBindings Dialog now, again, correctly opens in the right context - open it in Sample Editor? -> Shows Sample Editor selection. open it in Pattern Editor ? -> Shows Pattern Editor selection. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/407)
Feature: Paketti Macro 01 - this is designed for setting your own preferred middle frame views. so meaning, you have one shortcut that cycles through the ones you have selected.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/379)

Feature: "Wipe All Columns of Selected Track" - fully wipes the whole track all note columns all effect columns and all columns.

Improvement: "Play at Row 001-512" now also includes HEX next to it.


Improvement: "Play at Row 000-511" makes more sense π

Improvement: Play at Row will now default to "Play Current Line" and move to that Line, if playback is not on. if playback is on, then it just plays from that line. (Both this and the above two close https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/606)
Improvement: while eSpeak dialog is open, and no textfield is selected, pressing ctrl-R will refresh (reload) the textfile. ctrl-enter will "Generate Sample". alt-enter will "Generate Selection" (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/264)
Feature: Dynamic MidiMapping for Compressor (Threshold, Ratio, Release, Makeup), RingMod (Note, Transpose, Dry/Wet), CombFilter (Note, Transpose, Feedback, Dry/Wet) meaning, once you bind them, you can modify them no matter where they are in the Selected Track.
https://www.loom.com/share/e7360634fec44795bd8ace4ebafccc01?sid=4b7073bb-4bfa-4654-8fde-a26700fa35a9 (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/410)
Improvement: EQ10 now also Dynamically MidiMapped
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/608)

Feature: Start/Stop Sample Recording and Pakettify it.
This means you have one shortcut, that immediately creates a new instrument slot, selects it, writes onto it .. and injects the Macros, Paketti Loader default autofade, autoseek, oneshot, interpolation, mutegroup, new note action, oversample, beatsync, interpolation into it.
(but detail: you have to have "Create a new instrument on each take" off). this way anything you sample using the function, will always be Pakettified.

Feature: Inverter Device. This is a Gainer device with Invert set for both channels.
(idea was touched upon on the Facebook Renoise "Workflows/Painpoints" chatgroup - seems valid, here it is)
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/613)

Update: If you're wondering about the lack of updates, I've been working on a quite massive dialog + Dynamic View script which started around thursday-friday as (image1).. then changed to (image2).., and kept ballooning up until we're now at:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/379 &
https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/605)
it's still WIP so I'll describe it better, just an update so you know that it's coming and that's why it's been tumbleweed town on this channel.
(i was also on a trip to play a gig on friday and only returned last night at 9pm). there's updates coming, that's for sure.



Feature: Paketti Dynamic View Dialog + 8 Shortcuts. There's 4 Cycle slots per Dialog (1-4 Dialog & 5-8 Dialog).
This lets you fully configure a cycle-based shortcut (Dynamic View 01 to Dynamic View 08) with full control over Upper Frame, Middle Frame, Lower Frame and Visibility (Disk Browser, Instrument Box, Sample Recorder, Pattern Matrix, Pattern Advanced Edit). you can set up your own preferred shortcut for the controls. I believe this is the maximum control that the Renoise API allows for ViewModes, and they are dynamic, so you can set a maximum of 8 cycles, i.e. one shortcut will start from the first slot, then proceed to the next and next and next.
there's also a system for saving and loading the presets. Enjoy.

Feature: Select 00...F0 in Instrument Box. if the Slot/Chunk does not exist, it creates it.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/585)


Improvement: Added BPM +1 -1 +0.1 -0.1 +0.5 -0.5 as MidiMappings
This comes from the Renoise Forum request from October 2012 - https://forum.renoise.com/t/bpm/37363
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/615)

Feature: Wipe&Slice now has a Paketti Preference for "Off". this means that even if the original sample that you want to wipe&slice DOES have a beatsync set up, the slices will NOT have beatsync set up.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/611)

Feature: Create New Track&Load Random Device Chain/Preset
this takes the DeviceChains/ folder already available in Paketti, creates a new track, and loads either a random .XRNT or a random .XRDP inside Paketti, onto the track.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/358)

Improvement: Paketti Preferences now correctly loads and displays the Default Filter Type (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/591)
Improvement: Paketti Preferences now has "Random Device Chain Loader Path".

Improvement: Change Selected Track volume is now in dB.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/554)

Feature: "Clear all Track DSPs from Selected Track".
This will, well, wipe all the TrackDSPs from the Selected Track. that was simple.

Sidequest: In order to make it easier for me to "pick something to do" from the 120+ tickets on Paketti, I improved this script that picks a random ticket:
so running this resulted in me working on one long-standing ticket that i've been now tweaking for 1,5 days. Embedded Link
Update: I'm working on the same large new feature that i started yesterday morning and am hopefully gonna be able to finish it before Wednesday. Am making great progress with it. stay tuned. send a DM if interested in previews
Improvement: There's a theoretically-working-with API5 build Paketti (older version), which might work with Renoise v3.1.1. I don't have it available to me right now so can't check. it disables eSpeak, BeatDetector and removes all font styling.
Improvement: more alterations to API5 Older build, this should now evade certain errors encountered
Feature: Paketti Groovebox 8120. this is a 8 row groovebox, 16 steps per row. each step count can be modified between 1-16. it will, in realtime, output to the pattern editor. youcan load instruments into it using Browse - meaning, one instrument can have max 120 samples. so you can load 120 kicks, 120 snares, 120 hihats, 120 claps, 120 rimshots, 120 rides, 120 toms and 120 randompercs in, and use the Selection Slider or Random button to immediately change to one of them. there's also direct routing for automating pitchbend / cutoff / the Paketti Macro works. there's a Random Gate which will fill the 16 steps across all 8 rows in such a way that only one of the 8 instruments will be playde on that row. there's Global Groove controls. there's mute buttons for muting them. there's a Random Fill which will modify the Step counts and fill randomly. you can control bpm, play, follow pattern. when you move Select or Random slider, it shows the Sample Editor. when you click on Step-count of on Follow or Play, or a checkbox in the stepsequencer, it shows the pattern editor. when you click on Random Groove, or enable Global Groove, or Global Groove sliders, it shows you the Global groove. when you click on Show Automation, it shows you the automation. Here's a little video demo of it:
https://www.loom.com/share/a6866eb0d331409ab092a7c13c5b357e?sid=2d20a67e-0d3b-4c63-810b-903ad21f1c99
I'm still improving on this, but this is the thing i've been working on for 3-4 days. Will keep cracking away at it until it does everything I want and when using it in a jam session type deal, i don't get any additional ideas. I'm open to any suggestions, out of interest, but let's please not blow this out of proportion by demanding lots of more rows etc. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/448)
Improvement: Here's three ways of booting up the Paketti Groovebox 8120 - a shortcut, a midimapping and a menu entry

Improvement: Groovebox 8120 has been improved in these ways in the past 3 days: bug: Checkboxes should update Pattern bug: Random Gate&Fill Empty steps functions missing feature: Select Button that shows the sample currently playing in sample editor for quick edits feature: buttons return focus to Renoise instead of dialog feature: clicking on Random will select the instrument in Sample Editor feature: moving slider for Drum Sample selection will select the instrument and show the Sample Editor feature: global groove sliders + random groove should select master track and show global groove bug: Browse does not trigger Refresh bug: Random fill slider at 0, clears all rows bug: Select slider does now select a sample bug: Samplename now properly changes when pressing Random bug: Global Groove checkbox is not checked for, i.e. shows as off even though ON in settings bug: when fetching, dialog lurches + overwrites destructively. bug: Select Slider should set the correct samplename Improvement: When clicking on 1...16 Global Steps, display Pattern Editor Improvement: Global Groove is now correctly updated - i.e. if master has it on-> then it reads it. if master has it off -> then it reads it. Improvement: When opening the dialog, the correct steps are fetched from Pattern Editor, without overwriting Pattern Editor content Improvement: "Randomize All" will randomize each of the 8 rows Improvement: "Random All" will random pick a sample of each instrument. Improvement: Selected Slider now selects the correct samplename Improvement: Select Row1-Row8 Automation Device for pitchbend working Improvement: Dynamically rename Tracks upon Loading Improvement: "Show Automation" shows automation for easy pitchbending Feature: Clicking on Follow Pattern should show the Pattern Editor Clicking on Play should show Pattern Editor 1st sample should be selected - and the rest muted, after adding instrument. Random All now sets random samples for each row. Random Gate resets steps to 16
Improvements: Paketti Groovebox 8120
Improvements: Paketti Groovebox 8120







Improvement: Added all buttons to midimappings:

Improvement: now each row in 8120 has Reverse and there's a Reverse All which reverses all the selected samples for each row
Improvement: Paketti Preferences now only runs the XRNI Default search once instead of running it twice.
Improvement: GitHub plumbing now means that "choose random theme" Paketti Theme Selector is not run by default when installing Paketti. There was an issue with GitHub inputting all the preferences (aka my settings) to any user who downloaded the build. this is not so in private builds. I've also set EditMode blend highlight so that it is not Selected Track by default. working on a few other things. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/467)
here's something quite simple but with possibilities that might be really useful: "selection in pattern to selection in automation"


Improvement: ALT-D / ALT-U (Doubleselect, unmark) now read if automation is displayed, and provide selection/deselection there, too.

Improvement: Windows Paketti no longer opens up two CMD.exe's to query default XRNIs, instead does it without using terminal / cmd.
Plumbing: all mentions of "ReSpeak" removed and replaced with "eSpeak" everywhere. Improvement: Randomize Settings will now render the textfield content, instead of just randomizing the settings and doing nothing.
Improvement: "Bypass all Devices on Track" & "Enable all Devices on Track" weren't available as shortcuts. now they are
Improvement: Three Bypass/Enable&Toggle menu entries are now sorted correctly in Mixer Menu Entry for better discoverability

Feature: Bypass All Devices on All Tracks / Enable All Devices on All Tracks
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/630)

Improvement: moved Clean&Render features in Pattern Editor to be next to eachother instead of all over the place in the menu.
also did the same thing for Mixer menus, all 5 are shown in their own correct place.


Improvement: Groovebox 8120 "BPM" text is no longer a text, it's a button that randomizes the BPM between 20-300

Improvement: Inverter device can now be loaded (and gets renamed) in both Sample FX Chain and Track DSP Chain:


Improvement: Groovebox 8120 now has probability Yxx setting below every actual step - each instrumentbank can have it's own Yxx set for the probability checkbox

Improvement: "Yxx ProbabilitY" now listed next to the valuebox for better discoverability

Improvement: eSpeak error from Menu Entries: it was still referring to ReSpeak so fixed it to eSpeak
Improvement: "Load Random Chain" button added to Paketti Preferences:
so you can immediately start testing out your device chain loading.

Improvement: Grabbed Renoise subforums 10 (Tips & Tricks), 18 (Renoise Tools) and 19 (Renoise Tool Development) to PDFs - a total of 4209 posts (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/413)
Improvement: Yxx now starts at FF (so "always play". that way you can start dropping it down from there to where you like it
Improvement: 8120 now has Clear for each probability row - and also buttons for quickly setting them.

Improvement: added MidiMappings for "Random Gate", "Random All", "Randomize All"," "Reverse All" and steps 1,2,4,6,8,12,16 and << >> global controls
Improvement: Added "No Selected Sample" error protection for "Set Selected Sample Velocity Tracking On/Off" shortcuts
Update: I've finally reached a milestone, i've gone through 30% of the "Ideas and Suggestions" Renoise subforum (2002-2024 posts). i've picked 346 tickets from the 30% (there were 7361 in total). some of them are already done, but some are just "oh, look at this and eventually do it". if i were to add these to the GitHub we'd probably jump to 500 open tickets or so. but work is being done to filter through the ideas and suggestions, beginners questions, tips and tricks, tool development, renoise tools discussion threads. there's i believe in total over 16000 threads i need to filter through and make decisions. just wante dto let you know i'm at 30% of 7361 now. (only 5130 to go through left on Ideas and Suggestions)
EDIT: and i just got through all 2002 Ideas and Suggestions, now it's upwards from 2023
Feature: Show/Hide Selected Track Device 1...32 - this shows or hides the Selected Track's device x if it has an external editor.

Improvement: Plaid Zap XRNI loads on Paketti Preferences again Also Lackluster Pale Theme button loads on Paketti Preferences (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/643)
Improvement: "isolate Slices to new Samples" now sets the octave correctly so "q" is C-4 (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/639)
Improvement: "Set Selected Instrument Panning / Interpolation" shortcuts are now global instead of stuck in Sample Editor (joining the rest of the Global "Set Selected Instrument" settings. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/637)
Improvement: when using "Create New Instrument & Loop" and Paketti PitchBend Multiple Sample Loader, if Master is selected, you'll get told "Did not add *Instr. Macros device to Master track" (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/641)
Improvement: Player Pro Note Dialog now returns cursor focus to Pattern Editor - meaning, you can edit the editstep with shortcuts while clicking on the note dialog. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/646)
Improvement: Unison Generator Sample Slot names now accurately say what the pan is (such as L50 or R50 for hard pan left, hard pan right) for each unison sample.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/640)

Improvement: Send and MultiSend now no longer have this: - it's off from now on.

Improvement: When loading the Maximizer device, the "Boost" parameter is automatically displayed in the Mixer.

Improvement: Gater now updates the pattern immediately on every checkbox click.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/642)

Improvement: I've been tweaking the Instrument Box and Tools Menu Entries and organizing them in a better way. also moved the WIP/Unfinished stuff to "Xperimental/Work in Progress" submenu, for better discoverability. also some copywrite tweaks ("..." = Dialog, ".." = Submenu). removed Clean Render menu entries from Instrument Box because they're Pattern Editor/Mixer specific, and just in general doing more discoverability/readability tweaks. aka "instrument box shouldn't talk about samples too much when they can be in sample editor/sample navigator"


Improvement: Removed "Add 64 slices to instrument" since 84 already exists. Added 84 to Instrument Box, Sample Editor, Sample Navigator.
Some Menu Entries were tied to "Sample Navigation" instead of "Sample Navigator" so they did not get shown
Removed Unison Generator from Instrument Box Menu Entries
Tweaked Sample Mappings Menu Entries look and organization
Added "Configure Launch App Selection..." to Sample Editor and Sample Navigator submenus
Hid Coluga/yt-dlp (since it's WIP) from Sample Navigator, Sample Editor and Instrument Box
Added 7F/00 switcher to Keyzones tab



(Mentioned in https://forum.renoise.com/t/set-interpolation-of-every-sample-in-song-to-none/74220)


Improvement: the Paketti Donation / About dialog buttons for opening urls now.. open the url again.
Improvement: OctaMED Pick / Put Dialog keybindings are now under "Paketti:" instead of "Paketti..:" for better discoverability
Improvement: more organization for Main Menu -> Tools -> Paketti -> Instruments

Improvement: Additional tweaks - all menus in menu entry now end with ".." and they are better organized

I pretty much ended up using most of today trying to get the Paketti Manual GitHub page working, didn't make much headway, the markdown is not correctly parsed. but also filtered through tons of Renoise Threads
Improvement: Moved the path of these so there's no "Global:Paketti" for MidiMappings, instead Paketti: for these

Improvement: Path changes for MidiMappings for these

Improvement: Path changes (easier to show the before fix)

Improvement: Fixed the numbering order of these so they start from 01 instead of 1 - better discoverability
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/666)

Improvement: Unison Generator will no longer error out if being run on an instrument with multiple samples. it will instead make a copy of the selected sample, and start the unison generator process. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/662)
Updates: I've merged the paketti manual work with the brickwall of text into one article instead of multiple pages. and wrote some more stuff to the brickwall and did the first rudiments of organizing it a bit better. i'll need to split it into little pieces and group them by themes and areas. It's a longform project, would probably take me a month to get it done fully and properly Added some more Loom videos to it
Improvement: Added shortcuts and midimappings for controlling Automation playmode - so you can set it to Points, Lines or Curves at will.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/667)


Improvement: "Show External Editor for Selected Device" in Automation will no longer error if there is no External Editor π instead shows an informative error.

Improvement: "Show External Editor for Selected Plugin" now also shows an informative error

Improvement: Track Titler now has different date formats for those who want them:
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/657)

Feature: Midi Mapping for changing Selected Instrument Transpose
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/638)

Improvement: I've added 8 midiknobs that fit the 0...127 values into 1...8 for cycling through the Dynamic Views. if there's only two cycles configured for a dynamic view - then 0-64 will change to cycle1, and 65-127 to cycle2.
this means, you can configure a max of 8 different dynamic view states as per one Dynamic View number, and use one knob to switch between these views.
so if you have a situation where you absolutely must quickly run from pattern editor to sample editor to sample editor with sample recorder showing to mixer to pattern editor with automation, to.. sample phrases.. to.. something - you can do it with the twist of a knob.
(closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/656)

Improvement: Paketti Groovebox 8120 now has a slider for Yxx probability, a Randomize for each row's Yxx, and a Randomize all Yxx.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/623)

Feature: "Populate Sends to all Selected Tracks"
select a few tracks in the song and run script -> sends added to all tracks.
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/614)
this was from a post on the Ideas and Suggestions Renoise forum made in 2004 ( https://forum.renoise.com/t/strapping-a-send-across-several-tracks/15087 )

Improvement: added MPReverb 2 controls (dynamic midimappings that find where the device is in the selected track) for Color, Duration, WetMix

Improvement: the Paketti Edit Mode Signaler no longer reverts "Song Set Track Blend Values" for all tracks to off, if EditMode Signaler is set to "None" and you toggle Edit Mode on or off.. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/386)
Improvement: Now when you use the Paketti loaders to load #Send or #Multiband send - it will always be added to the end of the track dsp device chain or sample fx device chain. (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/426)
Plumbing: I've removed 30 duplicate themes (different namings) and added grymmjack themes - there's now a total of 502 themes.
Feature: "Load new sample with current slice markers". select a sample with slice markers. run it via shortcut, or two menu entries (sample editor, or instrument box). prompt comes up, for loading the sample. load the sample -> markers from previous sample are applied to it. if there's less sampleframes, only the markers that fit inside the sample length are applied.
https://www.loom.com/share/f8a4d31abb1643459ca58389357fc78a?sid=546bd950-8176-45fc-b9a7-2617e349cf49 (Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/668)
Improvement: the #Send and #MultiSend XML loaders were calling "PakettiSend.XML" and "PakettiMultiSend.XML" instead of "PakettiSend.xml" and "PakettiMultiSend.xml". fixed.
Feature: Duplicate Selection with padding & Move Cursor 1 & 2: select 4 rows. press shortcut. introduces 4 rows of silence, duplicates the 4 rows, another 4 rows of silence, and moves the cursor accordingly. will also resize pattern if you're at the end of the pattern.
video only of "padding clearing" flavor (1)
https://www.loom.com/share/7dc5d7710ad844f081e4af89a8d85af8?sid=d601b232-ea0e-44f5-a508-24a8023416ca



Feature: "Duplicate Pattern & Clear Muted Tracks" ->
you're on a pattern. you have a bunch of muted tracks. you maybe have some automation, and also some pattern matrix muted tracks.
you run the shortcut.
now, below the selected pattern, there's a newly created (and selected) pattern, with the muted tracks(notes+automation) cleared, the pattern matrix mutes retained. and if the pattern had a name, then the name is repeated, with (mutes cleared) added, and if the pattern had no name, then the name is printed as pattern <number> (mutes cleared)
got the suggestion from a thread in Trackercorps Discord.
https://www.loom.com/share/d5a591475e7c407ea25d43ebce1d9d9b?sid=20ff4b86-2014-4edc-b141-b64d84d6f946
Feature: "Nudge and Paste Selection"
This will, instead of adding the padding of silence, instead, read the selection on the track, move the rest of the track down by the selection row count, then paste in the content.

Improvement: "Switch to Automation" will now actually switch to the Automation view, if you're in the Sample Editor and you already had Automation displaying elsewhere (such as pattern editor, mixer, etc). so it will cleanly, reliably, always move you to the track automation.
Feature: Duplicate Selected Sample at -12/-24/+12/+24 menu entries, shortcuts and midimappings added.
This will take the current sample, duplicate it, and set the transpose of the duplicate to one of those.
good for doubling up a sample.

the Above will place the duplicate+muted track above the original pattern, and the Below will paste it below.

Improvement: Nudge Paste now has two flavors, one that moves the selection, and one that deselects.

Feature: Randomize Automation Parameter.
this is a global shortcut that will run anywhere, without needing you to focus automation just to randomize. if there's no envelope, it creates a new one. if there's a selection in envelope, it randomizes that. if you have pattern editor + automation displaying, and use ALT-D *2 to select, you get to select an amount of automation rows and randomize that. at the end of the gif i use the Paketti loader shortcuts to shoot in some track dsp fx and then start automating them
(Closes https://github.com/esaruoho/org.lackluster.Paketti.xrnx/issues/665)

Feature: Invert Volume, Delay, Panning Column content across selection in pattern
as requested on the trackercorps discord

Improvement: There's now three flavors of it. Invert Volume, Delay, Panning, SampleFX Columns on Note Columns,
Invert Effect Columns
Invert Effect + Note Column content
and they work with selection in pattern, or no selection in pattern.

Improvement: PitchStep now has a Clear, a Random and a Octave up / Octave Down shortcut.

Feature: Randomize Automation Envelopes for Device - this will write randomized automation for each and every parameter of selected device. it's available in Track DSP frame, Mixer and as a shortcut. Write utterly wild randomized automations to your devices of choice and see what happens.

Improvement: ALT-L will now also select the automation lane, if automation frame is displayed.
Improvement: the PitchStep modifiers made yesterday now have protection against if the Pitch Stepper device is not even there. They no longer error out.
Improvement: "Pakettify Current Instrument" now puts in the original instrument volume after doing the Pakettification (loading the macros, modulations and samplefx)
Improvement: ALT-U now has a Global shortcut so you can unmark pattern selection while in Mixer or anywhere. This fixes the issue where you, unknowingly, have something selected in the pattern editor, and try to mute/solo the selected track, and the selection in pattern is muted/solod
Improvement: Added four XRDPs (Device Chain presets) created by NPC1
Track Compressor (NPC1).xrdp
Low - High Cut (steep) (NPC1).xrdp
Low - High Cut (halfsteep) (NPC1).xrdp
Low - High Cut (flat) (NPC1).xrdp
Feature: added the AKWF waveforms to Paketti at +2 pitch and -35 finetune - there's loaders now that incorporate the default XRNI Instrument in the mix:
a random file will be selected, with the correct pitch and finetune, and loop mode enabled.
and you can stack them, i.e. load a max of 12 samples in and the volume will be reduced so it does not clip. same with "random 1...12" or just random 1. let me know if you need more changes and tweaks.

Feature: Sample Offset (dialog and shortcuts)
requested on https://forum.renoise.com/t/gain-offset-in-sample-editor/74279/






Improvement: Display Note Column is now 2 digits instead of 1
Column Cycle Keyjazz 2 digits instead of 1


Feature: Switch to Automation Dynamic Yes. this will cycle through the Automation envelopes that exist in your track.
https://www.loom.com/share/dbc1113a5c4b45a1a8f66b6381f72808?sid=926aeaea-d037-4f10-99f7-2a820dd54c66
Improvements to the Manual: just rewrote + added gifs of Loading, Saving Samples, Sending Samples to other Apps, Loading Devices and Plugins with Shortcuts & MidiMappings and Wipe&Slice (Mathematical slicing), Isolate Slices and the MPC-like start/endpoint changing via viewing slice itself.. still a lot to do to https://esaruoho.github.io/paketti-manual/#loading-samples
Plumbing: Removed all .DS_Store files from the GitHub repo for Paketti
Improvement: the AKWF loaders will now add a new instrument slot and select it - so you can run the loaders as many times as you like and start chiptuning away.
Update: am now at 3568 out of 7361 left on "Ideas and Suggestions" filtering (=picking/deleting)
Feature: "Select Loop Range" for Sample Editor:

Update: GitHub has now been switched around so Ko-Fi, Patreon and GitHub Sponsors are visible directly from the repository:


Update: GitHub url has been shortened to esaruoho/paketti to better match esaruoho/paketti-manual
Feature: Set Random EditStep 0-64
Set Random EditStep 1-64

Feature: Jump Backwards Within Pattern by 0...128 Jump Backwards Within Pattern by Random Jump Forwards Within Pattern by 0...128 Jump Forwards Within Pattern by Random Jump Backwards Within Song by 0...128 Jump Backwards Within Song by Random Jump Forwards Within Song by 0...128 Jump Forwards Within Song by Random
shortcuts + midimappings added
(Closes https://github.com/esaruoho/paketti/issues/682)


Improvement: Paketti Gater had a bug where it would touch the notes and instruments i.e. if you had a 16 step gater, the first 16 steps would be repeated with notes. this no longer happens.
Improvement: Paketti Load Devices shortcuts + midimappings were no longer read when renoise was started - they are now read and applied. (Closes https://github.com/esaruoho/paketti/issues/679)
Improvement: I lately modified the Capture Nearest Instrument and Octave so that it would jump, on second run, to sample editor, on third run to pattern editor+automation and on fourth run to pattern editor + track dsp (this in case the nearest instrument is already selected).
i've now made two flavors, one that jumps around like that and one that doesn't

Improvement: I've probably fixed the Paketti PitchBend Drumkit Loader which is instrumental for Paketti Groovebox 8120 to work, so, that it will work directly from first install onwards. It was a path issue. Waiting for feedback from 7 people on whether it works. π€
EDIT: Ok, got 1 confirmation that it works.. waiting for the others to ping in
Plumbing: Paketti Titler Dialog preferences are now saved to the general Paketti preferences, not a secondary file.
Plumbing: Paketti MIDI Populator preferences are getting ready to be saved to Paketti preferences, but not 100% there yet. i'm really trying.
Improvement: Paketti MIDI Populator now has preferences that are loaded and saved (from Note Columns to Open External Editor). also changed from switchboxes to dropdown menus for midi input device + midi output device.

Improvement: Added "Set Keyboard Velocity" 00, 10, 20, 30, 40, 50, 60, 70, 7F shortcuts + midimappings:

Improvement: Max Amp DC Kick Generator shortcut now also renames the instrument + sample, just like the Audio Processing Dialog one already did.

Feature: Open Automation Value Dialog.
This will.. Open a dialog (sets Pattern Editor + Automation frames displaying)-> focus the textfield
you type in a number between 0...1
press enter twice - writes to automation line. if no automation envelope, creates it.
and the textfield is re-focused again.
(Closes https://github.com/esaruoho/paketti/issues/685)

Improvement: Write Automation Value 0.0 ... 1.0
these shortcuts will do much of what the above does, but always to "that value".

Improvement: Added more pattern lengths to "Resize all non-empty Patterns to.." shortcuts.
(Closes https://github.com/esaruoho/paketti/issues/698)

Improvement: AKWF Random Loading did not work on Windows. Fixed.
Improvement: added Duplicate Selected Sample to +12 +24 -12 -24 to Sample Mappings.

Feature: GlobalGainer - adds a GlobalGainer to each track - and the same midi knob that controls the volume of each GlobalGainer device. and if you add more tracks, the same midi knob will add more GlobalGainers to the new tracks.
https://www.loom.com/share/41c362b9a8c44ff79bd869f49cbbdab1?sid=e1d0548a-28bb-4633-a000-e8ba7deef9fc as requested by Patreon subscriber number two
Feature: A/B Shortcuts for adding A or B - Gainer device to selected track -- and a midiknob that does a crossfade between A & B.
https://www.loom.com/share/4d19d732f7f643c69da83c50dc402103?sid=c7dd1de9-206a-4f22-b894-a4c97a69f832 as requested by Patreon subscriber number one
(Closes https://github.com/esaruoho/paketti/issues/700 )
Feature: Load 1.. or 32.. random samples from any subfolder in selected folder.
https://www.loom.com/share/fe011e3d56d441918a9eb70659c22c79?sid=bd9dc155-1f9d-44b1-b163-db983fd51631 Embedded Link
Improvement: Show Automation Value Dialog now writes directly to automation lane and closes.. one single enter required only
repost since gif added

https://www.loom.com/share/fe011e3d56d441918a9eb70659c22c79?sid=bd9dc155-1f9d-44b1-b163-db983fd51631 (Closes https://github.com/esaruoho/paketti/issues/701 )
Video with some audio:
https://www.loom.com/share/9dba2e74146c45dfa1299b9af6cb6686?sid=80a48602-e0d3-4b47-b22c-c922b7c2ef88 [Embedded Link](https://www.loom.com/share/9dba2e74146c45dfa1299b9af6cb6686?sid=80a
Feature: Save Song with Timestamp - saves yyyy-mm-dd-hh-mm-ss timestamp - shortcut + menu entry.
(Closes https://github.com/esaruoho/paketti/issues/702)

Plumbing: Renoise Tools, GitHub + Gumroad Paketti builds updated
Improvement: Clean Render was no longer correctly soloing, and now it correctly solos the channel and unsolos, and also it should remember which tracks were muted before the specific track was rendered. proof

Plumbing: Been working on a Selection In Pattern Pro improvement which should help with all future tooling relating to pattern editor
Improvement: 12st_ does not bring anything especially important to the Sample Navigator Sample Filename, so removed the 12st_ automatic addition for pitchbend drumkit loader for easier readability

Feature: Wipe Random Notes (Random Amount of Notes from Selection) - this will replace notes with Note Offs in selection in pattern across multiple tracks.

Improvement: Initialize for 8120 - this is a menu entry and a global shortcut that adds 8 new tracks to the beginning of the song so you can immediately start using Groovebox 8120.

Improvement: Initialize for 8120 now correctly sets the editmode off while doing the tracks, then re-enables it so there's no two tracks with editmode blend on.
Improvement: Mixer Paketti.. menu now has the Add Gainer A & B menu entries for preparing for crossfade.

Improvement: Open VolDelayPan Slider Dialog... seems to have slipped through the cracks. I've added it to the Main Menu and to the Pattern Editor submenu for Paketti. Easier to remember it exists.

Improvement: It made no sense for the Sliders to have those < > buttons which did nothing. this looks better.

Improvement: Now when you change the valuesteps value, the content is automatically printed.
Improvement: Added "Populate Global Gainers" to Mixer menu

Improvement: Moved "Write Automation value 0.0 - 1.0" menu entries from Main Menu Paketti to Main Menu Paketti: Automation..:

Improvement: Repeater Divisor is now shown in Mixer, when using the midimapping to modify Repeater.
(Closes https://github.com/esaruoho/paketti/issues/710)

Plumbing effort: Still trying to move loadPlugins from one preference to global preference - it's been harrowing but not making much progress π¦ even with assistance
Feature: Paketti User-Defined Sample Folders:
This lets you define specific folders (10 in total), then use the Load 32 (32 samples, one per instrument), Load 12( 12 samples within one instrument) and load Drumkit (120 samples) from the folders. they're all randomized.
(Closes https://github.com/esaruoho/paketti/issues/669)

Feature: Clear Below Current Row - this clears the rest of the pattern of the selected track below the current row.

Improvement: Clear All Tracks Below Current Row

Feature: XY Audio Mixer for 4 AKWF + 4 random samples in same instrument
https://www.loom.com/share/7ed3c942a53241b58a43fceabb932dc2

Feature: Generate Track Automation Points out of Notes in Pattern Editor:

Plumbing: "Load Plugins" now writes to the correct preferences file, not a secondary file. and works.
Improvement: Added "Wipe Selected Track Track DSP Devices" to Mixer + Track DSP Layer.


Plumbing: "Load Devices" now writes to the correct preferences file, not a secondary file. and works.
Plumbing: Dynamic Views are no longer overwritten when being given local builds - you just gotta save your current dynamic views, and load them in after reinstalling new Paketti version - this should now help.
Feature: Automation Selection Flood Fill.
Takes your selected Automation segment, and fills the rest of the pattern with it.

better gif for the above

Improvement: Automation Menu sorting might now be better organized

Improvement: Flip Selected Automation Horizontally (menu, midimap, shortcut), + Flip Selected Automation Vertically (menu, midimap, shortcut)

Feature: Set All Tracks to Center - this sets the prefx + postfx of all tracks (including master + send) to Center.
it's in Track DSP, Mixer and Pattern Editor now


Crisis: Dynamic Views needs to be reverted to the non-preferences.xml situation - it just doesn't work. returning back to how it used to be. sorry. i really tried to get this going but can't seem to write it properly.
Improvement: Added Stereo->Mono (end of chain / beginning of chain) as menu entry to Track DSP Device area & Mixer.


Improvement: "Capture Nearest Instrument & Octave with Jump" now will detect the sample key you are on, and show that specific sample in the sample editor. if you are in the sample editor and run the script, it returns back to pattern editor. suggested key: "Enter".
Improvement: Impulse Tracker "Next Track / Previous Track" jumpers would fail if trying to move from Note Column to a track that is a Group, a Send or a Master. fixed.
Improvement: Added amigaos3 4k and amegas 4k created by ffx themes
Improvement: I'm down to 1934 PDFs left in "Ideas and Suggestions" folder. -- slowly progressing through all of these
Feature: Load XRNI + Wipe Phrases menu entries, keybindings, midimappings Load XRNI + Keep Phrases menu entries, keybindings, midimappings. These open a fileprompt, you can load a .XRNI, and either retain or wipe Phrases. from https://forum.renoise.com/t/when-loading-instrument-presets-phrase-playback-should-be-disabled-by-default/74519/
Feature: "Load Recently Saved Song" shortcut + menu entry. loads the newest saved song idea from 2007 https://forum.renoise.com/t/open-recently-saved-song/20253
Improvement: YT-DLP now correctly lets you select yt-dlp if it's not set originally
also tweaked some of the dialogs and am slowly removing Coluga from the naming since this is a YT-DLP tool.
update, i'm down to 1460 left
Improvement: added "User-Defined Samples Folders" Dialog opener as shortcut

Improvement: Automation Value Dialog now with EditStep - it follows the EditStep and re-highlights the textfield so you can quickly input more automation values at your desired editstep.
(from B-Complex requests on the Renoise Forum https://forum.renoise.com/t/automation-edit-step/24186)

Improvement: Changed "Basenote Transpose" to "Instrument Transpose" - same location for menu entries + shortcuts.

Improvement: moved Randomize Automation Device Parameter / All Parameters + Flood Fill menu entries inside Automation for better Main Menu Tools clarity

Feature: Roll the Dice on Notes
this will take the selection in pattern and roll the dice on all the notes aka randomly place them to the current rows there are notes on.

Improvement: Roll the Dice on Notes now works on multi-track selection

There are now 996 PDFs left in this folder.
slowly getting there for "Ideas and Suggestions" EDIT: 862
Improvement: Fixed ImpulseTracker "F5" to start from the beginning of the song! (As per mention in Forum thread https://forum.renoise.com/t/playback-from-start-of-song/29692 Beginners Questions)
improvement: wrote a script that picks a folder, (Ideas and Suggestions, Beginners and Questions, Tool Discussions, Tool Releases) and starts running through it, so i can get a completely random subforum PDF start. there's quite a bit to go through, about 980 Tool discussions, 5600 or so Beginners Questions, still 840 Ideas and Suggestions, and then the Tool Help discussions which i think is 1300 or so discussions. this is gonna be a big goldmine
There are now 5127 PDFs left in the folder Beginners Questions Renoise Forum
There are now 853 PDFs left in the folder Ideas and Suggestions Renoise Forum
There are now 1560 PDFs left in the folder Renoise Tool Development Renoise Forum.
There are now 928 PDFs left in the folder Renoise Tools Renoise Forum.
Feature: Nudge Up / Down by Delay Values +1 -1
another Ideas and Suggestions post - this allows for - when you get to FF delay value, nudging the note down (when pressing nudge down one more time).. and when you get to 00 delay value, nudging the note up (when pressing nudge up)

Improvement: now the nudge by delay value will actually also nudge them to the last row notes to the beginning row.

Improvement: Did the same last night for non-delay-value-nudges, instead nudging notes down without delay values being modified

Improvement: AKWF Random Loader now sets instrument volume also, so it no longer blares at you at full volume. also, each loaded sample has -10 or +10 finetune auto-set to it, for widening the sound
Feature: Paketti Device Chain Dialog.
this lets you go to a track, and save the slot.. and use a shortcut to load it to another track.
or the dialog itself.
enjoy.




Improvement: The Device Chain Dialog is now a Device Chain (.XRNT) & Instrument (.XRNI) Dialog. you can load both, or either.

Feature: Hide All Effect Columns:
this .. hides all effect columns for all regular tracks.


Improvement: Hide All Effect Columns doesn't error out if you have a Group-track in the mix
Feature: Switch Upper Frame (Track Scopes/Master Spectrum)
(Closes https://github.com/esaruoho/paketti/issues/739)

Feature: Set Selected Track or Master Panning to Hard Left, Hard Right, Center
(Closes https://github.com/esaruoho/paketti/issues/715)


Feature: Isolate Slices to New Instrument - takes the slices in your instrument, and creates a new instrument with samples instead of slices.
(Closes https://github.com/esaruoho/paketti/issues/735)

Improvement: "Load XRNI & Disable Phrases" - for those who don't want to wipe phrases but also don't want them to play. (Addresses https://forum.renoise.com/t/when-loading-instrument-presets-phrase-playback-should-be-disabled-by-default/74519)
I've been making a lot of progress last night and during the flight on the Ideas and Suggestions folder - we're below 600 threads now. I've also been implementing some extra stuff from there, and maintaining a changeslog which is getting to be pretty huge. am also assisting a friend with a tool they have made.
Feature: Create New Pattern from Selection (with Automation) - resizes pattern to selection length and duplicates the pattern for those selected rows for all tracks.
Feature: Set Selected Instrument Overlap Mode "Play All"/"Cycle"/"Random" Cycle Overlap Mode between all 3
Feature: Load Drumkit with Overlap Mode Cycle or Random (two shortcuts + menu entries)
Feature: Midi Mapping for Clearing current Track content
Feature: Duplicate Selected Track & Name (Drums01 -> Drums02, f.ex.)
Feature: Hide All Effect Columns - hides all effect columns for each and every track!
Improvement: tweaked the naming so Isolate Slices to New Instrument as Samples hopefully makes more sense as a naming

Feature: Automatically Open Selected Track's Devices if they have External Editors. - close them when changing to the next track - and open that one's devices.
https://www.loom.com/share/5f55296e885e42b3825f7a4a840516d5?sid=472e4800-95a5-4394-aa73-da074420d6f5
Improvement: the Transpose Octave Up (Selection/Track) now fully works as expected - even if you have 12 note columns displaying, no longer erroring out in a weird edgecase where it tries to also modify a 13th note column which does not exist.
Improvement: F7 ImpulseTracker "Play Pattern from current row" would not work because I had commented away the experimental SBx code. I've reinstated the code so F7 + F5 & F6 properly work
Improvement: Fixed F8 so when you run it for the first time to stop playback, your cursor stays on the line you are on. Second F8 jumps the cursor to current pattern first row. Third F8 jumps the cursor to first pattern first row.
Improvement: Menu Entry for setting all Samples in current Instrument to Loop Forward, PingPong, Reverse or Off.
Improvement: "Insert Track (2nd)" Global shortcut now adds the new track behind the current one, and selects it.
Improvement: Set all samples inside selected instrument Autofade ON & Autoseek ON menu entries in Sample Navigator
Feature: Expand Selection Twice, Shrink Selection Twice shortcuts

update: out of 7361 threads from 2002 to may 2024 - i picked 1736. i also started processing through which tool discussions / tool ideas / tool releases are worth looking into and either hijacking if they're abandoned, or rewriting with Paketti in mind.
also now that 7361->1736, i'll be working on sorting them into threefour distinct categories, aka
42. already done and in Paketti
43. not yet in Paketti, do
44. not yet in Paketti, could be done but very complex (further down the todo stream)
45. wait for API changes to allow the feature
Improvement: Made ALT-F Expand Selection & Flood Fil and ALT-G Shrink Selection & Flood Fill. these will basically let you expand or shrink the selection and then fill the rest of the pattern with the content.
Improvement: when running "Replicate above Cursor" - if you're on the first row, it'll start replication from first row π (Closes https://github.com/esaruoho/paketti/issues/730)
Update: I've started to rewrite the Paketti Documentation in Obsidian, hopefully this'll result in me being able to better organize information cohesively.
so far, so good. just need to work it into getting it directly into readme.md on the pakettimanual repository, so that it will 100% work. with the gifs and the screenshot assets.

Update: I've also done a 2 hour Twitch stream of the new feature Paketti Stacker, which I'm slowly finetuning and working out the kinks to make it work even faster and in a more userfriendly way. I have a long todo-list of things to do for this, it's a pretty big feature.
Improvement: I've added the missing menu entries + midimappings for both Automation Selection Flood Fill and Automation Value Dialog
Update: Slowly adding more Automation stuff while preparing for wikilinks to markdown conversion.

Improvement: While writing the documentation, I realized that the Pattern Matrix Automation menu entries were confusing, so organized & titled them slightly better. Also, the "Original" Automations (i.e. "current pattern, or if selection then selection within pattern") are grouped inside "Automation Curves.." for better discoverability.

Update: More Automation documentation progress

Feature: "Duplicate Pattern, Wipe Notes in Pattern Matrix Selected Tracks" == Retain Automation, lose notes "Duplicate Pattern, Wipe Automation in Pattern Matrix Selected Tracks" == Wipe Automation, keep notes (closes https://github.com/esaruoho/paketti/issues/750)
Feature: Volume Interpolation, Delay Interpolation, Panning Interpolation. select anything in the track, any columns, and interpolate those. (Closes https://github.com/esaruoho/paketti/issues/327)
Feature: Move Track Left / Move Track Right - these are global shortcut that work everywhere (Closes https://github.com/esaruoho/paketti/issues/753 )
Improvement: "Note Interpolation" is now called "Interpolate Notes"
Improvement: Renamed / Reorganized all of these into one easily findable place

Improvement: Paketti Groovebox 8120 - fixed an error when pressing Randomize All
Improvement: added ALT-X there too so they are in the right places

Feature: Duplicate All Samples at -36 -24 -12 +12 +24 +36 Transpose menu entries + shortcuts added. this will read the current keymappings of the selected instrument, duplicate the slots, and pitch the duplicated slots by the amount you picked. EDIT: added protection so that it does not duplicate the already duplicated samples, creating a feedback loop EDIT: added volume controls so it will drop the volume slowly so you don't get blaring sounds
https://www.loom.com/share/15e01283dd5843869ece3c3e1b2d3891?sid=2374bdee-801f-4ebc-97f9-be3fe7a06b5e
Feature: Random Selected Notes Octave Up 25% - 50% - 75% Probability

Improvement: If you add a *Instr. Macros while in Automation, you stay in Automation view, so you don't get kicked to Track DSP View.
Improvement: I've been cleaning the Xperimental/Work in Progress features to reside in their own folder again
Feature: Global Reduce Instrument Volume -4.5dB Global Reduce Sample Volume -4.5dB Global Instrument/Sample Reduction dialog:
Let's you reduce the instrument or sample+slice volumes as you need.

Feature: Paketti Tuplet Generator - a very WIP feature based on the tuplet calculator website. http://tridentloop.com/renoisecalc/ still needs some more work. but here's a little video + gif (the gif is pretty outdated, check the video)
https://www.loom.com/share/454f3cdb1ccf402dbbc15fda6e7c508b

Improvement: Added Clone and Expand Pattern to LPB*2 and Shrink Pattern to LPB/2 to Pattern Sequencer for better discoverability.

Improvement: Moved Section/Sequence -related menu entries to a subfolder in Pattern Sequencer

Improvement: Sorted Resize all non-empty Patterns to xxx so the numbering makes sense
Improvement: Resizes moved to subfolder in Pattern Editor and in Pattern Sequencer. for better discoverability


Improvement: added Clone Pattern and LPB*2 / LPB/2 to Pattern Matrix for better discoverability

Feature: Edit Step Dialog. focuses the textfield, lets you write something between 0-64 (or larger-than 64, then capped to 64), and sets editstep.

Improvement: Clone Current Pattern & LPB*2 used to read the wrong pattern row length and would error out with over 256 row pattern duplication. fixed.
Improvement: Paketti Default Phrase Init Dialog LPB was limited to 64 - can now be set to max 256.
Feature: Paketti Timestretch Dialog
https://www.loom.com/share/e7189db45e514446aa90de4742c3bf61?sid=e8dca846-9fd3-4ca1-b682-d3e74df42b35
https://www.loom.com/share/6ead19c0c7384a81977f2e5d664a5ee6?sid=ee2d3f62-285d-4cc4-81ce-d9908ab22b72
(No text)
Improvement: Paketti Timestretch Dialog now: lets you have 512 row pattern (two repeats of the same sample) lets you write pitch to current row-and-below, meaning you can create a render with varied note pitch and the -24 -12 c-4 +12 +24 buttons also follow the "print notes" many improvements incoming
Improvement: ChordsPlus has now been added as menu entries like this:


Improvement: Paketti Timestretch Dialog now makes it possible to have AHDSR envelope for clipping the sounds really quickly (fast gate).. has controls for changing to sample editor for better wave display visibility, or modulation mappings to see the pitch settings and the pitch envelope has default Release and Scale for Release for the AHDSR sliders protection against going below C-0 and higher than B-9, no errors there anymore. various Reversed checkbox fixes
Improvement: Paketti Timestretch Dialog now correctly shows the millisecond/second value of the Release slider checks whether the instrument has been pakettified or not (i.e. ahdsr envelope release will not work), and suggests to run Pakettify on the sample. has a Pakettify button that makes an identical copy, but with instrument macros. which correctly sets the instrument valuebox in the interface to the new, Pakettified, instrument. no longer errors out if there's over LPB32 (such as LPB56). correctly sets a 64 row pattern to 256 rows in order to print in the sampleoffset numbers. sets forward loop mode ON when enabling AHDSR, sets it off when disabling AHDSR.
Improvement: Paketti Timestretch Dialog will now write BPM+LPB to Master track.

Improvement: Fixed error on start of Renoise / script
Improvement: Paketti Timestretch Dialog will now output the LPB into the instrumentname + samplename too, like this:
137BPM 16LPB A-3
Improvement: Paketti Timestretch Dialog < and > for BPM, LPB, ComboTempo + Note now all move by -1/+1
I have been writing down the main unfinished features and bugs on s piece of paper while planning on what to do this January to be able to start February from a Clean slate
Improvement: Tweaked Chordsplus so it says what it did and how

Improvement: Chordsplus menu entry now also shows a related function, which is Randomize Phrasing. this changes the octaves of the notes on the row randomly

Improvement: Chordsplus shortcuts now match the basenote velocity column volume amount (

Improvement: the EZMaximizeSpectrum easter egg features that worked for Renoise v2.8, has been reintroduced, but hidden - only available if you happen to run Paketti with v2.8 Renoise π
Improvement: some additional tweaks to menu entries and better organization

Improvement: Added "Paketti Init Phrase" to the Main Menu !Preferences segment
tweaked the repetition of "Dialog..." out of some of the menu entries

Improvement: "Available Routings for Selected Track" had stopped opening due to regression - dialog works again.

Improvement: The Debug content has now been aptly named so people don't wonder why nothing showed (if it's only for (Console) )

Improvement: tweaked all Clean Render menu entries to be inside Pattern Editor.. in Main Menu .. also moved the VolDelayPan dialog to be in the main menu tools Paketti subfolder

Feature: Normalize Slices Independently (apparently this was a feature in Propellerheads ReCycle - aka Normalize Each Slice) Before:
After:

Improvement: Paketti KeyBindings dialog now has a dropdown menu for sorting, much like the Renoise KeyBindings dialog.
Renoise KeyBindings dialog now properly sorts the subcategories together (so "all Edit subcategories are together" etc instead of all over the place)

Improvement: Due to all the above KeyBindings fixes, noticed a bunch of "Paketti..:" format keybindings, tweaked them so they're Paketti: instead.
Improvement: Sorting of Paketti + Renoise KeyBindings fixed
(Closes https://github.com/esaruoho/paketti/issues/763, https://github.com/esaruoho/paketti/issues/760)

Improvement: slowly renaming everything related to Coluga to YTDLP since that's what it is and that's how people are going to understand what it is and what it does
Feature: PitchStep Hard Detune, this creates 16 steps of PitchStep content, ranging between -0.05 to +0.05

Improvement: Added the same above (but 64 steps of PitchStep with -0.05 to +0.05 to Unison Generator, meaning:
after creating an unison generator sound, a random pitchstep of 64 step length is added for further detuning

Improvement: I've added "Send Selected Sample" to the Main Menu Entries and finally introduced the separator for better readability in the sample editor


Improvement: Saw this request for "Menu Entry for Randomize Device Parameters in Mixer" at here so here it is:

Improvement: The "Sample NOW and F3" shortcuts have been renamed to
Start Sampling and Sample Editor (Record)
What this does:
simple shortcut starts the sample recorder, and starts sampling. same shortcut stops the sample recording. after the sample has finished being saved and made available to Renoise, the Sample Editor is displayed.
Improvement: Added the above feature to Pattern Editor, Sample Editor, Instrument Box & Mixer, and it now has Autoseek set to On.
Removal: I have commented away the "Select Next / Previous ReWire channel" or ReWire features. if you want them back, please ping me.
Improvement: The Contour Shuttle Record Prototype has been renamed and is no longer considered a prototype. this is now called Contour Shuttle Record On/Off. all it does is display the Sample Recorder dialog, start sampling.. and if you run it again, it stops sampling. no extras.
Improvement: Contour Shuttle Record On/Off now sets Autoseek+Autofade to True. same for Start Sampling and Sample Editor.
Improvement: Contour Shuttle Record Off, Follow On, Record On, Follow Off shortcuts have been clarified. this is not a sample recorder feature. so the names have been changed too.

Feature: Record & Follow Flip. this shortcut + menu entry will enable Editmode. but disable follow pattern. if you run it again with editmode on, then it disables editmode, but enables follow pattern. so one shortcut will let you follow, until you're ready to quit following and instead edit. same for midimapping button.
Improvement: Added "Set Track Volume Level (L00)" as a MidiMapping too
Improvement: Added "Effect Column B00 Reverse Sample Effect On/Off" as a MidiMapping too
Improvement: Effect Column B00 On/Off will now read the first free Effect Column and write the 0B00 effect there. and make more effect columns visible if all currently visible ones are filled.
Improvement: I've resurrected the "Record to Current Track+Plus" feature and renamed it as Paketti Overdub . this allows, while Sample Recorder is set to these settings:
(sync start stop: Pattern, Create a new instrument set to OFF)
for recording max 12 new instruments per track, and auto-inputs the instrument at c-4 note and with 0G01 (glide) meaning you can record say 30 minutes of pads, and then have it play in your 16-64 row pattern (or any size pattern) and right at the end, restart the playback from the beginning. i.e. flawless loops.
i've got two more improvements for this on my todo-list, after which it's video-time.

Improvement: Overdub now has a 12 note column per track and 1 note column per track flavor.
so one instrument per track, or 12 instruments per track.
(Closes https://github.com/esaruoho/paketti/issues/769)

Improvement: Overdub now returns cursor focus to middle frame so that you can reverse or normalize what you recorded and also cuts the sample by 3500frames so that it definitely loops
Feature: Tempo Calculator for IT2/ST3/Schism etc stuff

More work on Overdub including bugreports to Renoise devs - they're looking at the bugs
Feature: Nudge Delay Output Delay +1ms -1ms and set to 0ms - shortcuts, menu entries and midimapping

^^

Feature: Global Groove 2&4 - this midi mapping will let you modify the 2nd + 4th shuffle with one knob.

Improvement: +05 -05 +10 -10 as menu entries, keybindings

Improvements: Retitled some Midi Mappings for easier discoverability:
these focus on being able to clear or wipe a specific column, track, selected track below, or all tracks below current row

https://forum.renoise.com/t/editstep-jumping/75076/2

New Sample 02 (Unison 7 [-2] (50R)) (Unison 7 [-2] (50L)) (Unison 7 [7] (50L)) etc and other such mess) - now, no longer.
Fixes https://github.com/esaruoho/paketti/issues/748Improvement: Pakettify Current Instrument now correctly assigns the pakettified instrument to FX01 samplechain instead of keeping it unassigned.
Improvement: Shortcut + Menu Entry for turning Pakettified instrument to Mono or non-Mono:
Closes https://github.com/esaruoho/paketti/issues/655
If the Instrument is not Pakettified, it suggests the Pakettification of the Instrument.

Feature: Note Switch Dialog
this shows the notes in a dialog, and lets you select the instrument. meaning if you have 100 E-4 notes at instrument 3 and want to change them all to instrument 5, now you can.
Closes https://github.com/esaruoho/paketti/issues/363

Improvement: Finally!! I've figured out the difference between Windows and macOS/Linux when it comes to Loading Paketti Presets. Windows now properly loads them when loading with "Paketti PitchBend Multiple Sample Loader" or "Paketti PitchBend DrumKit Loader".
Improvement: In light of the above - I've removed all of the custom code + user-definable XRNI preset code from Paketti Preferences. since load_instrument doesn't work in the same way with windows / macOS - and nobody has volunteered any details of what kinds of 3rd party .XRNI instruments they use for this -- let's just keep it in a functional state by defaulting to the Paketti specified XRNI templates.

Feature: Select Sample x[Knob] will now kick you to the sample editor, and show you the sample you've selected. same for Select Sample Next & Select Sample Previous (both midi mappings and shortcuts).
Improvement: Now, hidden inside the Paketti PitchBend 12st_ instrument, there's a Panning LFO that is deactivated until you activate it.


Feature: Wipe&Slice now has a Paketti Preferences setting for adding a Loop for the second half of each slice.
finally put in the checkbox for Wipe&Slice LoopEndHalf
(Closes https://github.com/esaruoho/paketti/issues/777)

(Closes https://github.com/esaruoho/paketti/issues/770)
(Closes https://github.com/esaruoho/paketti/issues/596)

Fixes https://github.com/esaruoho/paketti/issues/694

Fixes https://github.com/esaruoho/paketti/issues/749
Closes https://github.com/esaruoho/paketti/issues/650
this is a menu entry that adds some extra spaces to match the "Chain" icon for better readability

Improvement: Groovebox 8120 now has Output Delay for each of the 8 tracks!
Closes https://github.com/esaruoho/paketti/issues/779

Feature: Wipe All Automation in All Tracks on Current Pattern
Wipe All Automation in All Tracks on Whole Song
Wipe All Automation in Track on Current Pattern
Wipe All Automation in Track on Whole Song
Wipe All Effect Columns in All Tracks on Current Pattern
Wipe All Effect Columns in All Tracks on Song
Wipe All Effect Columns in Selected Track on Current Pattern
Wipe All Effect Columns in Selected Track on Song
Menu Entries + Shortcuts added.
Closes https://github.com/esaruoho/paketti/issues/555
EDIT: (screenshots that mention "Delete" are outdated, i renamed to "Wipe" for easier discoverability

Improvement: Paketti Pattern Cheatsheet Dialog now has "Clear Effect Columns"
Closes https://github.com/esaruoho/paketti/issues/746

Improvement: Automation Exp Up Exp Down Linear Up Linear Down now detects if you're in Volume and goes from -INF to 0dB instead of -INF to MAXdB (not desired) same for Pattern Matrix Selection Automation Fixes https://github.com/esaruoho/paketti/issues/447 & https://github.com/esaruoho/paketti/issues/472
Improvement: Added Wipe All Automation in track in pattern, in track in song, in all tracks in pattern, in all tracks in song to Pattern Matrix Fixes https://github.com/esaruoho/paketti/issues/696
Improvement: Wipe All Automation in track/tracks,pattern,song now also wipes Volume,Width,Panning if they exist.
Feature: Double BPM&Halve LPB.. & Halve BPM&Double LPB
Menu Entry in Pattern Matrix + Pattern Editor, and global shortcuts.



Feature: Normalize All Samples in Current Instrument
Feature: Move Beginning Silence to End of Sample for all Samples in Current Instrument
Added to Sample Editor, Sample Navigator and as shortcuts

Improvement: Paketti DrumKit Loader will now offer the possibility of Move Benning Silence to End + Normalize All Samples.

Improvement: Load Plugins now shows the favorited Plugins, and lets you select from those only with the slider, if you enabled the "Favorites Only" checkbox.

Improvements: Load Plugins & Load Devices both now have Favorited Plugins, and you have a checkbox for "Favorites Only" for Load Devices too. Closes https://github.com/esaruoho/paketti/issues/549
Feature: Invert Random Samples in Instrument
Invert Entire Sample
this helps with the Unison Generator

Improvement: Unison Generator will now correctly read the Paketti Loader settings such as Autofade, Oversampling, Interpolation mode, and apply them to each of the 8 Unison Generator samples.
Improvement: Column Cycle Keyjazz (Special) will fill the current track with note delays, and let you input a note per each "tick" and when you get 12th note column and input a note, you are moved to 1st note column but next row.

Improvement: eSpeak now has "Don't Pakettify" for those who need it
Closes https://github.com/esaruoho/paketti/issues/738

Improvement: the Dynamic Views now no longer forces Sample Recorder to be hidden while recording! And all the (instrument box, disk browser, adv. edit, pattern matrix, sample recorder stuff) can now be set to <change nothing>, <show>, <hide>
Closes https://github.com/esaruoho/paketti/issues/687 & https://github.com/esaruoho/paketti/issues/620
this unfortunately means that your settings will need to be re-created.

Closes https://github.com/esaruoho/paketti/issues/132 this introduces midimappings + shortcuts for +1 -1 metronome volume, "default metronome volume" & "metronome volume OFF" and a midimapping for 0...127 knob control of metronome volume. This will be shipped with the current Paketti - but only available for those who are on V3.5 Beta (i'm not so i'm working in the blind here)
Updates: Due to v3.5 beta updates (which i still don't have access to, I've resurrected certain tickets which i had marked as BlockedByAPI and will be taking care of them due to the API updates.
This introduces menu entries + shortcuts for setting the Sync Mode to one of the four. This will be shipped with the current Paketti - but only available for those who are on V3.5 (Beta/Release) - I'm not, so I'm working in the blind here.
Feature: Paketti CapsLock feature now works in Phrase Editor (V3.5 Only!) I'm protecting nonv3.5 beta/release users from seeing errors - while still working in the blind (with no access to v3.5) (Closes https://github.com/esaruoho/paketti/issues/2)
Improvement: if using "Capture Nearest Instrument" while in Phrase Editor with no Phrase existing in the Instrument -> pressing enter in Phrase Editor will create a new phrase and select the phrase.
Feature: Reintroducing Increase Delay +1/+10/-1/-10 to Phrase Editor.. it was waiting for V3.5 API functions. (V3.5 Only!)
Feature: Show/Hide Right Frame (Disk Browser & Instrument Box?) (V3.5 Only!)
Improvement: (V3.5 Only!) Expose and Select Next Column (for Effect Columns or Note Columns in Phrase Editor) Hide Current and Select Previous Column (for Effect Columns or Note Columns in Phrase Editor)
Feature: Introduce "Instrument Box Slot Size" True/False shortcuts (show/hide, true, false) with a check whether the function works. (V3.5 Only!)
Feature: Show/Hide Disk Browser (Shortcuts) (V3.5 Only!)
Feature: Fill Effect Column with 0G01+0D00 & Fill Effect Column with 0G01+0U00 this will fill the first row with 0G01 and the second row to end row with 0D00.. or 0U00. after doing it, the cursor is moved to second row, effect column 1, and editstep is 0, so you can easily set the effect to what you want
Improvement to Impulse Tracker F8 - first press will stop playing, second press will move you to current pattern first row. third press will move you to song first row.. fourth press will abort&cut the audio.
Improvement to Impulse Tracker "8" - (V3.5 Only!) if using 8, the whole row will be played, and advance by editstep. Without using "start playback stop playback" tricks. (Closes https://github.com/esaruoho/paketti/issues/607)
Improvement: Some minor improvements to Pattern Editor Menu entries - sorting Column Cycle Keyjazz into it's own subfolder, same for the above 0D00/0U00/0G01 stuff to Effect Columns..:

Improvement: Moved Paketti Overdub functions to be within Record.. to de-clutter the Mixer Menu Entries

Improvement: Added Renoise Native devices loading methods to Sample FX Chain.

Improvement: OctaMED Note Spread 01 - 12 - this takes the current track and spreads the notes on the note columns from 1 to 12 note columns. you can also go back. note off is taken into consideration.
also increment + decrement shortcuts added:

Feature: Sort Notes Ascending/Descending
this will take the notes on current row and sort them to ascending or descending order

Feature: "Shift Notes to the Right" - frees up the first note column and highlights it, so you can add "lower notes".
Improvement: 12st_Pitchbend (aka default Paketti instrument) - now has a disabled DC Offset command at the end of the effect chain. + same for drumkit. (Closes https://github.com/esaruoho/paketti/issues/810)
Improvement: Paketti Offset Dialog / Shortcuts no longer error out if no sample selected (Closes https://github.com/esaruoho/paketti/issues/805)
Feature: Isolate Selected Sample to New Instrument (Closes https://github.com/esaruoho/paketti/issues/804)
Improvement: PitchSteppers will now just detect the Pitch Stepper device, instead of being hardcoded to a specific device number which might not be true. This means that all the +1 +2 +1 0 -1 -2 -1 0 pitchsteppers, the randomized pitchsteppers, 0 +1 0 -1 0 pitchsteppers etc now work, even with the added panning device. and should continue working till perpetuity. (Closes https://github.com/esaruoho/paketti/issues/796)
Improvement: Reset Output Delay to 0ms no longer errors out if trying to run it on Send, Master or a Group Track "Reset Output Delay to 0ms (ALL)" now will set the 0ms for all valid tracks in one go same for +1 +5 +10 -1 -5 -10 - no longer error on master,send,group (Closes https://github.com/esaruoho/paketti/issues/792)
Improvement: Paketti Groovebox 8120's Groove Controls / Randomize Groove now no longer force you to Mixer view - in case you wanted to be in Pattern Editor view. (Closes https://github.com/esaruoho/paketti/issues/799)
Feature: Insert 0B00 (play sample backwards) onto each row that has a note, in selection), Menu Entry & Shortcut.
if the notes in the selection already have 0B00, then the 0B00 is removed.
(Closes https://github.com/esaruoho/paketti/issues/807)

Improvement: "Nudge Delay Output Delay" shortcuts + menu entries + midimappings now have a rename feature which renames the name of the track so you can easier see what the ms delay is.
(Closes https://github.com/esaruoho/paketti/issues/794)

Improvement: User-defined sample folders now have shortcuts + menu entries
(Closes https://github.com/esaruoho/paketti/issues/803)


Feature: Delete (=Hide) Unused Columns (Note Columns / Effect Columns) (Closes https://github.com/esaruoho/paketti/issues/288)
Improvement: "Isolate Selected Sample to New Instrument" now sets the instrument name to sample name, for better discoverability. (it used to be instrumentname (selected samplename) )
Improvement: Introduced Changeslog to http://esaruoho.github.io/paketti-manual/ and moved the whole repository to be editable via Obsidian.
Feature: Added Transpose +3 -3 +4 -4 +7 -7 +11 -11 to ChordsPlus as Menu Entries + Shortcuts. This will transpose the current row, or the selection.

Added the Automation features to the Paketti Manual - Not necessarily all, but it's a good start.

Improvement: I've fixed the AutomationAssets so all the animated .gifs and Automation-related screenshots are fully displayed. EDIT: and also fixed the text / image line feeds so they no longer collide.
Improvement: Set Selected Sample Velocity Range to 7F will now tell you, with an informative message of
The Velocity Range of this Sample is already set to 0-127. - if there is nothing to do.
Feature: Global:Paketti:Set All Samples Velocity Range 00 introduced - this will set all the Samples in the Selected Instrument to Velocity Range 0-0.
Improvement: Global:Paketti:Set All Samples Velocity Range 7F now correctly sets all of the samples in the Selected Instrument to 0-127.
Feature: Decrease All Track Volumes by 3dB / Increase All Track Volumes by 3dB
These are available as Shortcuts, Menu Entries for Mixer, Pattern Editor and on the Main Menu.
Feature: Global:Paketti:Shift Notes Left - this will shift all the notes in the selection to the left, or if no selection, then all the notes on the current row, to the left.
Improvement: Global:Paketti:Shift Notes Right - this will also now shift all the notes in the selection to the right, and if no selection, then all notes on the current row.
(Closes https://github.com/esaruoho/paketti/issues/787)

Improvement: Create Identical Track has been modified to
Improvement: Chordsplus Transposer now has a "Row Only" flavor in addition to the "Row/Selection" flavor.

Feature: Replace FCxx with 0Lxx across the whole song, for those that need this conversion to be done.

Feature: Clever Note Off (Right After/Half Before/Right Before) This inserts Note Off commands to each of the note columns on the selected track - in case they have notes on them. The Right After will put a Note Off right after each note. Half Before, will put a Note Off right in the middle of "played note" & "next note". The Right Before, puts a Note Off right before the next note plays. (Closes https://github.com/esaruoho/paketti/issues/812)

Feature: Bypass/Enable all Sample FX Chain Devices in current Instrument
Feature: Bypass/Enable all Sample FX Chain Devices in all Instrument in Song
(Closes https://github.com/esaruoho/paketti/issues/784)

Feature: Match EditStep to Notes This will change the EditStep so that every time you input a note, it will jump to the row with the next note. (Closes https://github.com/esaruoho/paketti/issues/592)

Feature: Reset every PitchStep on Playback Stop (Impulse Tracker F8), on Playback Start (Impulse Tracker F7&Impulse Tracker F5) There's also an extra shortcut + menu entry for this use (Closes https://github.com/esaruoho/paketti/issues/536)

Improvement: Fixed "Reverse Notes in Selection" to work properly across multiple tracks
(Closes https://github.com/esaruoho/paketti/issues/298)

Improvement: Paketti Groovebox 8120: Each of the 8 stepsequencers can be set to max 64 steps, with 16 steps containing checkboxes aka playable notes, and when they get played, then if you have it set to 64 steps, there will be 48 steps of silence until replay happens again. This is good for offsetting things and maintaining a kind of "shape" of stepsequences repeating over the course of time.
(Closes https://github.com/esaruoho/paketti/issues/648)
Feature: Clear Selected Track Below Current Row / Clear All Tracks Below Current Row
Clear Selected Track Above Current Row / Clear All Tracks Above Current Row
I've made these available as Menu Entries, Shortcuts and Midi Mappings.
(Closes https://github.com/esaruoho/paketti/issues/584)
Feature: Insert Random Device (AU/Native), Insert Random Device (All), Insert Random Plugin (AU), Insert Random Plugin (All)
The inserted device's or plugin's External Editor will be opened, if available. The inserted device, if not a Native device, will be opened in minimized mode.
(Closes https://github.com/esaruoho/paketti/issues/711)

Feature: Generate Delay Value on Note Columns This will read the amount of Note Columns and fit the delay values so they play evenly.
(Closes https://github.com/esaruoho/paketti/issues/811)

Improvement: "Switch Note Dialog" now has a "Whole Song" version which will change the note instrument across all patterns in the song.
(Closes https://github.com/esaruoho/paketti/issues/776)

Improvement: PlayerPro Effect Column Dialog now shows both the hexadecimal and the decimal values.
(Closes https://github.com/esaruoho/paketti/issues/813)

Feature: Slice DrumKit (Percussion) / Slice DrumKit (Texture) These shortcuts + menu entries do the following thing: Original Sample:
Slices:
(Closes https://github.com/esaruoho/paketti/issues/565)

Feature: Normalize Selected Slice or Sample
This is a follow-up to the "Reverse Selected Slice or Sample" - it just hits the Slice (or Sample) and normalizes it.
Available on the Sample Editor, Sample Navigator and as Midi Mappings + Shortcuts (same for Reverse Selected Slice or Sample, so, slight improvements there)

Improvement: Both Normalize & Reverse Selected Slice or Sample now correctly reverse or normalize the last slice.
Improvement: Edit Mode Blend Value is now settable via the Paketti Preferences
(Closes https://github.com/esaruoho/paketti/issues/425)

Feature: Note Off with EditStep
(Closes https://github.com/esaruoho/paketti/issues/806)

Improvement: Impulse Tracker Home*2 and End*2 functionality for Phrase Editor V3.5 Only
These detect if you're in the Phrase Editor and then run the same functionality (go to the top of the current note column, if pressed again, go to the first note column.. and.. go to the end of the current note column, if pressed again, go to the last note column.)
(Closes https://github.com/esaruoho/paketti/issues/819)
Feature: Phrase Follow Pattern Hack V3.5 Only This tries to follow the pattern, but in the phrase. i.e. if phrase is 64rows and LPB4, and pattern is 64 rows and LPB4 - it will detect: oh, pattern is playing, let's adjust the selected phrase line index of the phrase.
This is considered highly experimental and might not work at all. Waiting for V3.5 access.
Improvement: Audio Processing Dialog should be openable and reopenable (Closes https://github.com/esaruoho/paketti/issues/595)
Improvement: OctaMED Pick/Put Dialog now reads Selection in Pattern in Selected Track and writes to Selection, while following EditStep.

Feature: Cycle Chord Inversion Down / Up
This will take either current row, or selection in Pattern, and modify, per each row, the lowest note to be lifted an octave higher - and then re-organizes the notes by ascending order (lowest first, highest last)

Improvement: Note Sorter (Ascending) / (Descending) now also follow the "Change Selection if exists, otherwise only current row" thinking.
Improvement: Tweaked "Randomize Phrasing for Notes on Current Row" to actually be "Randomize Phrasing for Notes in Row/Selection" - this means the Menu + Shortcut + MidiMapping have been renamed and should be re-assigned.
Also, it now reads the selection in pattern, or if no selection, then just current row.
And no longer randomizes between -3 octaves and +3 octaves, instead -2 octaves and +2 octaves.

Improvement: Fixed 12st_Pitchbend.xrni so that it uses * instead of + for AHDSR device, for less buggy / blaring Envelopes.

Am going through a ChangesLog I was maintaining and realized I've neglected to mention bunches of things I've done last year. Here's a catchup:
Feature: Set Quantization to 01...32 (Global, Pattern Editor, Phrase Editor)

Feature: XLN Audio XO opener - checks where XO is in the track, VST,VST3,AudioUnit - if it is found, opens the External Editor. If not, loads it to a new instrument and opens. If already showing external editor, closes it. Reason for being? because you can alt-drag a selected drum into renoise (!!!) and load it.
Improvement: If "Replicate at Cursor All Above Current Track", and you're on the first row, then it defaults to repeating that low.
Continuing with the "Didn't I talk to anyone about this??" changeslog: The Paketti Stacker. This loads a sample, then lets you divide it mathematically into slices, then stacks them into a new instrument with velocity controlling which slice is played, then you can output a rising ramp (first to last), downwards ramp (last to first), then random ramp (any hit).
To make this more sensible, I've added "Expand + Flood Fill" & "Shrink + Flood Fill", Pitch Stepper controls (-24, -12, 0, +12, +24), and Instrument Pitching, Loop Modes to the Dialog.
This enables you to scretch valid loops into little pieces and have them tick tick tick tick through the pattern.
Give it a try.
Feature: Set All Instruments All Samples Autoseek Off / On This queries all the Instruments - and sets all samples in each Instrument Autoseek state On or Off.
Feature: Set All Instruments All Samples Autofade Off/On
Same as Autoseek

Feature: Insert Random Note-Offs in Empty Rows
Feature: Randomize Note-Offs in Selection
(Closes https://github.com/esaruoho/paketti/issues/820)

Feature: Create Group & Move DSPs..
This inserts the current Track into a Group, and moves the Track DSPs of the Track to the Group, and inserts a new Track and selects the new Track within the Group.
Available in Pattern Editor + Mixer as Shortcut & Menu Entry

Feature: Move DSPs to Next / Previous Track
This will move the current track's Track DSP Devices to the Next or the Previous Track.
Improvement: Can move DSPs between Tracks, Groups, Master.. and Sends. Also remembers Maximized/Minimized status.

Feature: Flood Fill within Selection with Arp This will create a Delay Value, and then read the current row's Chord, replicate it to the rest of the Selection, and then alter the Voicing, and sort it ascending / descending, resulting in, well, arpeggios.
Improvement: Sort Notes (Ascending) / (Descending) now no longer changes the Delay Values around, if it detects that you've been using Generate Delay Values within ChordPlus.
Improvement: ChordsPlus now has a "Random Chord" Midi Mapping, Menu Entry + Shortcut.

Improvement: Move "Selected Track DSP Device" to Next / Previous Track

Improvement: Renamed "Randomize Phrasing for Notes in Row/Selection" to "Randomize Voicings for Notes in Row/Selection" since it is Voicing, not Phrasing. Sorry.
Feature: ChordsPlus Extract Bassline to Next Track

Feature: ChordsPlus Extract Highest Note to Next Track

Plumbing: Native Device loading / VST/AU/LADSPA/DSSI loading can now change the name of the device and load a specific preset (XML format) (Closes https://github.com/esaruoho/paketti/issues/622)
Improvement: When loading the ValhallaDelay AU - it will now boot up with LowCut at 200Hz.
Feature: Load Random IR from folder set in Paketti IR Folder Settings in Paketti Preferences This will add a Convolver to the Track if there is no such device, or, modify the current Convolver device with a random IR from user-defined folder.
(Closes https://github.com/esaruoho/paketti/issues/824)

Improvement: Plaid Zap (gift) update: Now has a deactivated DC Offset at the end of the Sample FX Chain, and I've added Autofade / Sinc Interpolation + Oversampling to the last sample, which was missing it. (Closes https://github.com/esaruoho/paketti/issues/814)
Feature: M00/MFF control - this sets the individual Note Column Sample Effect Column, for selected Note Column, to MFF, and the rest to M00 - meaning, the others don't play, but the selected Note Column does play.
(Closes https://github.com/esaruoho/paketti/issues/766)

Improvement: "Hide Current and Select Previous Column" would error out if you try to hide the Effect Column of a Group, Master of Send Track. No longer happens.
Improvement: Added a "Notes Only" version for Generate Delay Value, meaning, the Delay Values will be added only to the notes, to fit the note content onto delay, not based on Note Column amount, but based on Note amount.

Improvement: When loading the ValhallaShimmer AU - it will now boot up with LowCut at 200Hz.
Feature: "Duplicate Track & Duplicate Instrument" this handles: visible note columns, effect columns, visible delay,panning,volume,sample effects columns whether instrument external editor is visible or not and duplicates the track in mixer, pattern editor or pattern matrix - and selects the new instrument and the new track. (Closes https://github.com/esaruoho/paketti/issues/809)
Feature: "Save Unused Samples" This will save the unused samples as wav and unused instruments as .XRNI. and if the instruments have unused samples, those are saved too. (Closes https://github.com/esaruoho/paketti/issues/800)
Feature: "Save All Samples to Folder" Prompts for a folder and then saves all the samples in the whole song to the folder. Added to Sample Navigator, Instrument Box, and Main Menu.
Improvement: When loading D16 Repeater, it will now boot up with Mix volume at 0dB (i.e. no reduction), and Left Mix & Right Mix percentage at 15%.

Added "Save Unused Samples" & "Save All Samples" to Main Menu: File:

Improvement: Added "Analog Filter" (Type,Cutoff,Resonance,Drive) to Midi Mappings. Search for "Selected Track Dev Analog Filter". The idea here is: If you're on a track with an Analog Filter on it, the specific Midi Knobs will change the settings of these specific parameters, no matter where the Analog Filter is.
EDIT: Also added Inertia, and the "Filter Type" (which required XML injection to work)

Feature: OctaMED Note Echo
(Closes https://github.com/esaruoho/paketti/issues/454)

Feature: OctaMED NumPad Mute/Unmute Shortcuts
For tracks 1...16
https://forum.renoise.com/t/numpad-to-control-track-on-off/13334

Feature: Dialog DSP Device List with Dropdown Menu
(Closes https://github.com/esaruoho/paketti/issues/773)

Improvement: the "App Selection & Backup Folder" dialog can now be opened and closed with the same shortcut (i.e. the same shortcut no longer opens multiple dialogs), and "OK" will no longer error - instead will close as expected. (Closes https://github.com/esaruoho/paketti/issues/827)
Improvement: Paketti Stacker dialog can now be opened and closed with the same dialog, and the same shortcut / Menu Entry no longer opens multiple dialogs.
Feature: Paketti Action List
This dialog dynamically creates all the Shortcuts / Menu Entries into a dialog with a dropdown menu (50 slots) - so you can boot up the Paketti Action List and pick your favorite Paketti features and click "Run" next to them.
(Closes https://github.com/esaruoho/paketti/issues/273)

Improvement: Paketti Rotate Sample Buffer Fine / Coarse - in the Paketti Preferences Settings
(Closes https://github.com/esaruoho/paketti/issues/385)

Improvement: Strip Silence / Move Silence will show the currently selected sample, so you can see what the settings you are making are gonna look like for the example sample.
(Closes https://github.com/esaruoho/paketti/issues/789)

Improvement: Clean Render Selected Group/Track now introduces DC Offset - if chosen from Paketti Preferences. It is added to the Group or the Track, and then removed post-render.
(Closes https://github.com/esaruoho/paketti/issues/469)

Improvement: The Clean Render Selected Group/Track will now also unmute all the tracks, when rendering a Group, instead of leaving "the rest of the tracks" muted. (Closes https://github.com/esaruoho/paketti/issues/828)
Improvement: Phrase Follow Pattern Hack V3.5 Only now fully integrated to Record+Follow Toggle so if you are in Phrase Editor, pressing the shortcut will start following the Pattern Editor while in the Phrase Editor. If elsewhere, kicks the user to the Pattern Editor.
Improvement: Added "Width" to mpReverb2 MIDI controls

Improvement: Added Phaser 2 parameters for Selected Track Dev - Ceiling, Depth, Feedback, Floor, Rate, Stages

Improvement: Added LofiMat 2 parameters for Selected Track Dev - Bit Crunch, Dry Mix, Noise, Rate, Wet Mix

Improvement: Added Delay parameters for Selected Track Dev - L Delay, L Feedb., L Sync Time, R Delay, R Feedb., R Sync Time, Send

Feature: Write ZLxx via Midi Mapping to Pattern Selection or Current Row.
(Closes https://github.com/esaruoho/paketti/issues/795)

Feature: Write 0Sxx via Midi Mapping to Pattern Selection or Current Row - Modifies to Slices 0...127 if Slices exist, otherwise stays at S00 to SFF.

Improvement: Random Slice/Offset now works faster, never hits S00 (always S01 until S(slicecount)), and has a shortcut.

Improvement: Paketti Pattern Editor CheatSheet will now read, on dialog-open, the Max Value to be Slicecount. And if using Randomize, the SliceCount 01-SliceCount will be applied automatically.
Improvement: "Only Write to Rows with Effects"
(Addresses https://github.com/esaruoho/paketti/issues/317)

Feature: Insert Mono to each Track (Track, Group, Send, Master)

Feature: Set All Tracks Hard Left / Hard Right

Improvement: Paketti Pattern Effect Command Cheatsheet now has a "Rows with Notes Only" for Randomize

(Closes https://github.com/esaruoho/paketti/issues/839)
Improvement: Paketti Gater respects the step valueboxes correctly again, fixing a regression. Improvement: Paketti Gater does not wipe Retrig column content, if Receiving from Playback. Improvement: Paketti Gater now auto-receives current track content when opening the Dialog. (Closes https://github.com/esaruoho/paketti/issues/838 & https://github.com/esaruoho/paketti/issues/837)
Improvement: Paketti Volume/Delay/Pan Slider Controls Dialog will now
<< and >> for Global use
(Closes https://github.com/esaruoho/paketti/issues/836 & https://github.com/esaruoho/paketti/issues/835)

<< and >> for Global Moving< and > rotation of individual Gaters are noticeably fasterFeature: Write Notes Ascending / Descending / Random
This will write to the current Track. Perfect for checking out "Random DrumKit Loader" for instance.
(Closes https://github.com/esaruoho/paketti/issues/834)

Feature: "Show All Instrument Properties" / "Hide All Instrument Properties" V3.5 Only (Closes https://github.com/esaruoho/paketti/issues/833)
Improvement: The Paketti PitchBend Drumkit Sample Loader (Random) is now fully random.
Improvement: "Move Beginning Silence to End of All Samples" used to ruin the keymappings. Now it no longer does so. Also optimized the speed of it so it first detects minimum 50 frames of silence, and only out of those, moves the Beginning Silence to the End.

Feature: "Save Unused Instruments (.XRNI)" Saves Unused Instruments to a user-specified folder in XRNI format.

Feature: Show Largest Samples (Top 30)

Improvement: Write Notes Ascending/Descending/Random now only write the notes that exist in the sample mapping, instead of C-0 to B-9 even though no samples from "last sample of instrument" onwards till B-9. Also reports in Status bar how many were written and what the last row is.
Improvement: Added "Hide All Effect Columns" to Main Menu:Tools:Paketti..:Pattern Editor..:Visible Columns..
and Main Menu:View:Visible Columns..

Feature: Toggle Sample Selection Info
This shows the samples/frame count and the millisecond count of the selection in the Sample Editor.

Improvement: Unison Generator will now retain Phrases Improvement: Pakettify Instrument will now retain Phrases, and remove the last "Placeholder sample" slot from the Instrument. (Closes https://github.com/esaruoho/paketti/issues/843)



This will delete Instruments that aren't in use, but also samples that aren't in use in drumkit instruments, and if you have a velocity mapped instrument, the unused velocity samples will be deleted.

(Closes https://github.com/esaruoho/paketti/issues/309)

Improvement: Largest Sample Finder now has a method for showing which samples are not used, and a button for removing the Unused Samples with a single button.


This takes the tracks that have notes in them, and reads which samples are in use on the notes, and names the tracks accordingly.
(Closes https://github.com/esaruoho/paketti/issues/845)


(Closes https://github.com/esaruoho/paketti/issues/844)
(Closes https://github.com/esaruoho/paketti/issues/846)
This will output the parameter names, and the values, of each of the parameters of the selected device, to the Terminal.
(Closes https://github.com/esaruoho/paketti/issues/569)

(Closes https://github.com/esaruoho/paketti/issues/519)


Shift but instead Dontdonothingwhich will make sure that nothing ever closes the dialog, no keypress, that is.
Improvement: Re-wrote the Formula "Manual", included some forum links where there is discussion of the device, and added Inertial slider + Spring Slider and a Placeholder for another.

Improvement: Updated the Formula Device Manual with more functions from the Help

Improvement: Added a brand new Formula Device to the Formula Device Manual, it's called "Playcount/Silentcount/Tremolo" - It will let the current track play audio for a specific amount of Beats, and then be silent for a specific amount of Beats. You can also use the C-slider to switch it to an experimental Tremolo mode.
Improvement: Added "Input Inertia" Formula Device preset as Shortcut + Menu Entry for Main Menu & Mixer.

Improvement: Tweaked "Play/Silent/Tremolo" device to automatically hook up to Mixer Volume so it's ready to go.

Improvement: Modified the Formula Device Dialog so it is less wide

Improvement: Added "Input Inertia" shortcut. (Closes https://github.com/esaruoho/paketti/issues/848)

Improvement: Added Wipe&Slice 256 slices since FF is the maximum.
Improvement: Added Formula "Presets" such as:
"Input Line Quantize" (by danoise, originally), "LFO Beat Sync", "LFO Chaotic", "Mixer Equal Weight" to Formula Dialog presets
Improvement: Made the correct amount of sliders visible in the Mixer View

Improvement: Added more Formula "Presets" such as: kRAkEn/gORe The Stepper, Cas Super Formula , Martblek Lorenz LFO, Bit_Arts Meta Modulator, Cas Sample & Hold. and Afta8 Slew Limiter

Improvement: Added "Paketti Fadeout (Instant)" & "Paketti Fadeout (Manual)" to Formula Device Manual.
(Closes https://github.com/esaruoho/paketti/issues/849)

Feature: LFO Automation Parameter Writer WIP
This takes a specific LFO which is modulated by another LFO's Amp+Freq settings, and writes the LFO Amp to the selected automation parameter.

Improvement: Fixed the GitHub Release pipelines + tagging + local deployment for easier Paketti Releases at http://github.com/esaruoho/paketti/releases
Feature: LFO Write to Effect Column
This will create a LFO, patch it to another LFO, make the required elements visible in the Master Track, and let you write to the currently selected track's effect column.
There are S00, Y00, R00, U00, D00, G00 flavors and a 00 flavor that doesn't write anything to the Effect Number, only to the Effect Value.

Improvement: Added "Toggle Note Off on All Tracks in current row / Selected track / Selected Column" to MidiMappings as buttons.
Improvement: Added "KapsLock Note Off (With Step / Without Step)" to Midi Mappings as buttons.

Improvement: Renamed all of the LFO Write -specific hack tools into LFO Write for easier discoverability.

Improvement: Wipe/Clear/Delete Row, Current Note Column, Current Note Column with EditStep, and Current Row and Current Row without EditStep now available as Midi Mappings and as Shortcuts, and have been renamed to match the format.

Improvement: LFO Writer Delete/Keep Preference added to Paketti Preferences - this will keep the devices existing, or delete them, if so desired.

Improvement: LFO Writer Single Parameter Write to Automation - Initializes a singular LFO device, which's Amplitude directly writes to a selected automation parameter. This for those who don't have a midicontroller available, or desire to just quickly draw some automation.

Improvement: LFO Writer for Selected Phrase LPB - this modifies the LPB of the selected phrase - allowing for, well, madness. Enjoy.
Improvement: Separated LFO Writer Single Parameter from the trio of "LFO Writer for Selected Phrase LPB", "LFO Writer for Automation Parameter" and "LFO for Effect Column" so these two flavors can peacefully coexist.
Feature: Paketti .XRNS Probe
This will show the Midi Input, Midi Output, Plugin, Sample, Sample FX Chain, Track Devices of the currently open track. You can also save it as a textfile.

Improvement: "Query Missing Device Parameters"
This Menu Entry & Shortcut will show you the Device Parameters for a missing Device. They are outputted to the Scripting Terminal & Editor, and formatted so that they're ready to be pasted to the next Device you select, which might or might not be 100% compatible.

Improvement: Legacy plugin OhmForce Hematohm will now initialize with 50% mix and phase 0.00 instead of auto-pitched. Improvement: Legacy plugin OhmForce Predatohm will now initialize without full-on blast of distortion, instead allowing you to dial in the dial in the distortion you want.
Improvement: Renamed Paketti PitchBend instrument + drumkit "GlideInertia" Knob/Device to "PB Inertia" for better discoverability.
Improvement: Organized Instrument Box Menu Entries for better discoverability
Improvement: Random AKWF Wavetable now works even without a loop (the whole sample becomes a loop instead of doing nothing), and the Sample + Instrument names are correctly set.

Improvement: Reinstated Paketti Default Instrument & Drumkit choosers

(Closes https://github.com/esaruoho/paketti/issues/852)

Feature: Find Note (Next/Previous) (Track/Pattern)
(Closes https://github.com/esaruoho/paketti/issues/831)


Improvement: Added more AKWF Loader content to the Instrument Box Context Menu

Improvement: Load Random AKWF Samples features now obey the Paketti Loader settings, so if you have Autofade set to On, and Oversampling set to On, and Interpolation sent to Sinc (or anything) - the samples you load will also have the same settings.
Improvement: AutoFade -> Autofade everywhere. Improvement: Beatsync -> Beatsync everywhere. This might mean that you need to re-bind some shortcuts.
Improvement: Capture Nearest Instrument & Octave (jump) will now jump from Pattern Editor to Phrase Editor and then back to Pattern Editor - if a Phrase exists. If you are in the Sample Editor, and there are no notes on the Selected Track, the same shortcut will jump you to Phrase Editor, and then back to Pattern Editor.
Improvement: Random AKWF & Random AKWF Wavetable Loaders will now also apply the same
"Minor flurry" randomized PitchStep each time you load an AKWF.

Improvement: Selection in Pattern Matrix to Group now works as expected. (Fixes https://github.com/esaruoho/paketti/issues/853 & https://github.com/esaruoho/paketti/issues/752)
This will read the current instrument's empty note ranges and fill them with randomly selected samples - prompting the user for a folder.
Before/After:

will now reliably delete the correct amount of unused samples and not wreck the sample mapping order.
Improvement: Record+Follow Toggle will now automatically detect if you're not-in Pattern Editor, and send you to Pattern Editor with Record = On and Follow = On.
Feature: Flip Device 1&2 On/Off - if Device1=On, Device2=Off, then it'll flip their active state. If both devices are on, Dev2 will be flipped Off. If both devices are off, Dev1, will be flipped On.
Improvement: Flip Gainers A/B shortcut This will simply switch Gainer A to -INF and Gainer B to 0.0dB - and if run again, it'll switch B to -INF and A to 0.0dB. So no longer will your Gainer devices hit maximum volume (too loud).
Improvement: Gainer Crossfade A/B MidiMapping now also maps between -INF and 0.0dB, instead of -INF + max.
Improvement: Fill Empty Sample Slots (Randomized Folder) now available as a shortcut too.

Improvement: Added "Delete Unused Samples..." to Sample Navigator + Sample Mappings.
Improvement: Organized Sample Modulation Matrix menu entries to include PitchStepper devices organized in a better way.

(Closes https://github.com/esaruoho/paketti/issues/670)

Feature: Snapshot Device Parameters to Automation
Feature: FX Column Device Parameter Automation to Automation
Improvement: Automation Format settings for FX Column + Snapshot, Lines, Points, Curves.
Improvement: Automation Wipe after Switch setting: Keep / Clear

Feature: Volume Interpolation Looper dialog (Closes https://github.com/esaruoho/paketti/issues/494)

Improvement: Volume Interpolation Looper is now Value Interpolation Looper - controlling Volume, Panning and Delay.

Feature: Toggle Native Devices On/Off (Shortcuts / MidiMappings) & Hold MidiMapping to Activate, Release to Deactivate for Native Devices (Starts https://github.com/esaruoho/paketti/issues/535)
Feature: Paketti Fuzzy Search Track
This lets you search for a trackname or a snippet of a trackname, and in case of singular result, it gets selected, and in case of more than one result, use cursor keys + enter to select.

Improvement: Paketti Groovebox 8120 will now correctly initialize the correct amount of tracks (and no longer, f.ex., sends, if you're not on track1), will name them accordingly (8120_01 to 8120_02), and the tracks will be collapsed.

Improvement: Paketti Groovebox 8120 "Random" button will now also update the Sample Selection Slider - thus easier to continue and control. Improvement: "Fill Empty Steps" percentage will no longer resize the Dialog window. Improvement: Paketti Groovebox 8120: Output Delay, Random Fill, Probability, Sample Selection mini-arrows left and right on Sliders will now add +1 or -1, thus working as expected. Improvement: Added "RandomLoad" for each part, which will prompt the user for a folder, load 120 random samples from the folder and all it's subfolders. Improvement: Global Groove percentages are now listed with Bold & Strong font. Same for "Fill Empty Steps" Improvement: Heavily optimized Global Step Count modification so the update is much faster. Also added 24, 32, 48, 64 as buttons. Improvement: Optimized "Random Gate", "Randomize All" so they run faster. Improvement: Renamed "Show Automation" to "Automation" Improvement: Added "Macros" for taking you to Sample Editor to view Macros Improvement: StepCount maximum is now 512. So 16 steps will only be played once in a 512 row pattern. Improvement: Added 128, 192, 256, 384, 512 buttons for setting Global StepCounts Improvement: Random Gate will no longer fill the same steps for beat triggering AND probability - instead separated.
Improvement: Impulse Tracker CTRL-N Dialog will now correctly close, if triggered again while dialog is open.
Improvement: 8120: Added "Reset Output Delay" which resets all the Output Delays.
Improvement: 8120: StepCount is now stored when closing the dialog, and re-fetched when opening the dialog.
Improvement: 8120: Moved "Random All" / "Randomize All" / "Reverse All" / "Randomize all Yxx" / "Reset Output Delay" to their own separate row.
Improvement: 8120: Added some spacing between all parts, for better readability. Removed "Print to Pattern" for readability, since nobody uses it :)
Improvement: 8120: If you're already viewing an Automation Frame, opening the Groovebox no longer kicks you to 1st track and to "some other automation".
Improvement: 8120: When clicking on Automation, immediately takes you to Pitchbend automation.
Improvement: 8120: When clicking on Macros, focuses the correct instrument and correct sample.

Improvement: Tweaked Valhalla VintageVerb Reverb Dry/Wet to be 30.4% instead of 47.4%.
Improvement: Moved "Show" right next to Automation & Macros, for easier discoverability.
Improvement: Merged "Show" and "Macros" to "Sample" for better discoverability.

Improvement: 8120: Sequential Load will let you select max 120 samples per part, manually, instead of Randomly.
Improvement: 8120: Random & Slider for selecting sample will now select the last sample instead of only the second last.
Improvement: 8120: Sample Slider will now correctly select the 120th sample too
Improvement: 8120: Upon opening the Dialog, the Sample Slider will be correctly set to the correct sample.
Improvement: 8120: Global Groove Control Sliders will now correctly set 99% to 99% in Global Groove settings in the song, instead of 99% = 100%.

Improvement: 8120: Tweaked the interface once more - reintroduced the missing global steps controls and made sure there is no extra spacer at the end of the interface.

Improvement: Modified "Record+Follow Toggle" so that if playback is on, and follow pattern is on, pressing the shortcut will turn editmode back on.
Improvement: 8120: When clicking on Sample, the correct Track is selected.
Improvement: 8120: When changing Stepcounts, the track title is modified - and then, the titles are used to fetch the Stepcounts when opening the dialog. This saves them in the best possible way (simplest way, too)
Improvement: 8120: When changing a Sample (Slider or Valuebox), the correct Track is selected.

Improvement: Added "Set All Beatsync values for Instrument" & renamed "Set Beatsync Value for Selected Sample"
Improvement: "Random 12" will now result in an Instrument named "12 Random Samples"
Improvement: Moved certain WIP/Experimental tools under the Xperimental/Work in Progress -subfolder.
Improvement: Paketti TimeStretch "Reverse" button no longer overwrites notes, instead only flips the Sxx commands. Even at 512 rows.
Improvement: Selected Track Dev MidiMappings no longer force the Middle Frame to Pattern Editor.
Improvement: Retitled the Wipe&Slice numbers so they are 002-256 instead of 2-256. You will need to re-bind your keybinds.
Improvement: Fixed Track Dater & Titler to correctly open from Dialog.
Improvement: Added Doofer to Selected Track Dev MidiMappings.

Improvement: EQ10 and Mixer EQ are now automatically set to -9dB to 9dB visualization.
Improvement: Menu Entries for Transpose Shift -12 to +12 for All Instruments or Current Instrument are now better organized for easier discoverability:


Improvement: Paketti Gater will now resume Lxx volume of Selected Track to "Regular volume" if you switch from L00 to C00.
Improvement: Combined BPM&LPB related content into a BPM&LPB subfolder in Pattern Editor and Main Menu Paketti.
Improvement: Added "Toggle Automatically Open Selected Track Device Editors ON/OFF" to Mixer, Pattern Matrix and better discoverability on Main Menu.
Improvement: Removed shortcuts + menu entries for "24st Pitchbend" to "96st Pitchbend" Default XRNI Instruments since they no longer worked (the .xrni files have been renamed).
Improvement: Paketti Stacker will now correctly and accurately print a 128 part sample into 128 rows. (Slice at 128). Improvement: Paketti Stacker will no longer error out if trying to print 128 rows into a 64 row pattern. Improvement: The RampUp / RampDown / RampRandom will write to selected Note Column, or the first Note Column if you're on an Effect Column. Improvement: When running the Stack Slices, the Instr Macro device will be removed and re-added so it will control the current Slices.
Improvement: 8120: Fixed an issue with 512 row pattern and automation finding.
Improvement: Normalize Selected Sample or Slice - if there's a selection, then normalize that, if no selection, then selected sample or slice.

Improvement: Edited the manual page somewhat and updated the Table of Content hierarchy to work again - which meant renaming some of the titles heavily. Also removed outdated information.
Improvement: Reverse Selected Sample or Slice or Selection in Sample or Slice now works.
Feature: Paketti REX Import NOTE: this is .REX not .RX2 This rewrites, from scratch, the REX Import tool originally available for Renoise V2.8 only, which has been abandoned for the past 14 years or so, and adds additional features.
*Instr. Macros device will have the instrument slot number in hex and the name of the imported REX file. so 1F 507_COOK.REX will be the name.Improvement: Paketti Loader Preferences now has a "Skip Automation Device", if you set it to On, the *Instr. Macros device will not be added for Paketti PitchBend DrumKit Loader, Multiple Sample Loader, Render, etc.
Improvement: Always Open Selected Track TrackDSPs added as a Paketti Preference - if you set it on, and go to the next track, it's Track DSP External Editors will be opened. Next track? Close previous Track DSPs, open current track TrackDSPs.
Improvement: Wipe Exploded Track -> If exploding a track, the original track content is wiped. Or kept, depending on the Paketti Preference. Improvement: Wipe Exploded Track -> if exploding a track with multiple same-notes on the same row but different note columns, correctly add note columns to newly created same-note track. Improvement: Wipe Exploded Track -> Edit Mode Color Blend will be off during track creation, and then set back on, if originally on.
Improvement: Load Random (12) & (4) will now also input an Instrument name instead of leaving it empty.

Feature: .PTI Import (PolyEnd Tracker Instrument). Much like the .REX Import, this will also:
*Instr. Macros device will have the instrument slot number in hex and the name of the imported PTI file. so 1F test.pti will be the name.Improvement: .PTI Import will now, based on two examples of sliced instruments, work with both examples.
Improvement: .PTI Import now successfully and correctly sets Forward, Reverse or PingPong Loop and uses the correct Start and End points. Improvement: .PTI Import now recognizes if there's 50% audio and 50% silence - then trims the sample and rescales the slices. This fixes PTIBreaks loading. Improvement: .PTI Wavetable support (detects window, position, reads position markers and adjusts loop to that, and trims the beginning of the sample until the start of the loop. Improvement: .PTI Wavetable Support now trims the end of the sample to the end of the loop. And creates Position Count amount of sample slots at 00-7F for the selected position, and 00-00 velocity for the rest of them. You can then cycle through them using the Random 7F or +/- 7F shortcuts.
Improvement: Added "Show Sample Selection" as a setting in Paketti Preferences - meaning that if you set it to On, then Sample Editor will show you the details of the selection automatically without having to toggle it on continually.
Improvement: .PTI Wavetable detection will now also print the full sample as sample slot 1, thus allowing for accessing the full waveform instead of only the window size chunks.
Improvement: Paketti Stretch Step Size Slider is now between 1-64, instead of a limited table.
Improvement: Paketti Stretch 512 pattern size checkbox will now, when unchecked, resize pattern back to 256 rows.
Improvement: Paketti Stretch Fill All checkbox will now fill each row with the same Sample Offset as the Step Size count has.
Improvement: "Enable Envelopes" / "Scale" / "Release" checkboxes + sliders now find the Volume AHDSR device dynamically (it was hardcoded previously).
Improvement: When Pakettifying an instrument, the selected view (Pattern Editor, Sample Editor, Modulation Mappings) will be retained insted of transported to a different middle frame.
Improvement: When opening the dialog on a pre-populated track, the note does not get destructively re-rendered as C-4.
Improvement: When there are multiple different notes in the track, then enable "Record notes below cursor" automatically.
Improvement: When there are multiple different notes in the track, and user clicks on Fill All, the previous notes are used.
Improvement: Toggling Fill All off should now clear the notes that have been added between Step Sizes.

Improvement: Duplicate and Reverse Instrument will no longer attempt to duplicate and reverse an instrument with no sample. And "Placeholder sample" is cleanly removed.
Feature: Added taktik's Process Slicer script so that large tasks that make the script time out, can be split.
Improvement: Paketti TimeStretch Dialog will now open and close with the same shortcut, instead of spawning endless amounts of copies.
Improvement: Select Specific Track 01-16 will now select the nearest instrument if in Sample Editor - allowing for easily jumping across playing samples across tracks.
Improvement: Paketti MIDI Populator will not error out if you select no MIDI Input Device.
Improvement: Paketti MIDI Populator Instrument naming changed, so:
TR01 InputDeviceName:InputChannel> (PluginName) >OutputDeviceName:OutputChannel

Improvement: Paketti 8120 Groovebox will now do Sequential RandomLoad using the taktik Process Slicer - meaning you can pick 8 folders, then watch the dialog update and load all 960 samples without "Script becoming unresponsive" and requiring you to press "No" to not stop but to continue.

Improvement: Capture Nearest Instrument & Octave with Jump to Sample Editor -> will now also accept and find the sample with 00-7F velocity.
Improvement: Delete Unused Samples will now correctly delete any samples with velocity at 00 - meaning, they never trigger. So just wipe them. Improvement: taktik Process Slicer applied to Delete Unused Samples so that the process will finish deleting without requiring you to click "No, please don't stop the Script".
Paketti Groovebox 8120 tweaks:
Improvement: When clicking on a step, select the track, but don't move to Pattern Editor.
Improvement: When changing StepCount, select the track.
Improvement: When clicking on Automation, the notes are automatically added to the PitchBend Automation Envelope, for easier visibility.
Improvement: Clicking on Clear, Random Steps, and multiple other buttons will no longer force you to the Pattern Editor.
Improvement: If you're in the Sample Editor and click on a checkbox to enter a step trigger for another instrument and it's sample, get transported directly to that sample.
Improvement: The 1-16 buttons above each part's stepsequencers can now be used to set the StepCount for that part.
Improvement: Pitch knob added (-36 to +36) to the left of each part

Improvement: The Polyend Tracker Instrument .PTI format will now correctly import a Stereo sample, too.
Improvement: 8120: Clicking on a Yxx probability checkbox while in Sample Editor will also display the selected track, instrument and sample.
Improvement: 8120: Mute button moved to be below the Pitch knob

Improvement: 8120: If clicking on "Random Samples" while only having 1 instrument slot, gracefully error out with a message to the user.
Improvement: Added "Reverse Selected Sample or Slice" to Sample Keyzones Improvement: Added "Delete Unused Samples" to Sample Keyzones
Improvement: 8120: Pressing Random Steps no longer forcibly takes you to Pattern Editor.
Feature: Very rudimentary + Alpha state .SF2 import. Please send feedback.
Improvement: The shortcut for Select Nearest Instrument & Octave will now (again) correctly create a Phrase if you're in the Phrase Editor and have no Phrase.
Improvement: Extract Bassline to New Track will now correctly create a new track instead of overwriting "the next track" Improvement: Extract Highest notes to New Track will now correctly create a new track instead of overwriting "the next track"
Feature: Extract Bassline to New Track with Duplicated Instrument Feature: Extract Bassline to New Track with Selected Instrument Feature: Extract Highest Notes to New Track with Duplicated Instrument Feature: Extract Highest Notes to New Track with Selected Instrument (Closes https://github.com/esaruoho/paketti/issues/856)
Improvement: eSpeak will no longer error out if path to it has spaces in it (looking at you, Windows) (Closes https://github.com/esaruoho/paketti/issues/825)

*XY Pad X-axis Y-Axis "Find device, set parameter" Midi MappingImprovement: *XY Pad X-Axis Y-Axis Selected Device Midi Mapping
Improvement: Normalize all Slices Individually uses Process Slicing.
Feature: Change Selected Sample Device Chain (Direct & Scaled)
These are both Absolute and Relative (0..127 or -63 +63/incremental). These will let you change the Sample FX Chain of the selected sample or the whole instrument.

Improvement: Midi Mappings for Change Selected Sample Volume and Delay Column (DEPRECATED) x[Slider] now respond to both absolute + relative values.


This will let you drag in a .RX2 format file into Windows or macOS Renoise. Linux is not supported due to ReCycle SDK not being available for Linux, yet (I have requested it). Unfortunately the addition of rex2decoder_mac, rex2decoder_win.exe, REX Shared Library.bundle, REX Shared Library.dll, REX Shared Library.lib adds a total of 16.5mb to the size of the tool, meaning that I can no longer ship to the Renoise Tool forum due to it's size limitations. There are certain .RX2 files that still refuse to render, possibly due to volume issues in the .RX2 settings, but please get in touch if you have a .RX2 that should work but doesn't, mail it to me via Discord or send via wetransfer to my email. Thanks!




Feature: Decrease current Pattern length by -8 (Shortcut)
Feature: Increase current Pattern length by +LPB (Shortcut)
Feature: Decrease current Pattern length by -LPB (Shortcut)



This will set a selection loop for each of the samples, or each of the slices, in the selected instrument, by 10, 20, 40 or 80 (or any user-input number.)

Improvement: Volume/Delay Pan Slider dialog will now say "Volume" "Panning" or "Delay" in capital first letters instead of lowercase.
Improvement: eSpeak will correctly rename the instrument + sample after successful eSpeak render.
Improvement: Paketti Sample Selection preference will now automatically always work if you set it to On - instead of toggling off every time you restart Renoise.
Paketti File Import Tool is now it's own separate tool that has the same features as Paketti, but is for those who cannot stomach the whole Paketti. https://github.com/esaruoho/paketti-importer/releases
This will merge Source Instrument's samples with Target Instrument's samples, creating sampleslots.
Closes https://github.com/esaruoho/paketti/issues/860


Improvement: .SF2 import now correctly initializes the first sample instead of it being shown as 2 frames and bugging out when duplicating.
Improvement: Increase EditStep by +1 +2 +4 +8, Decrease EditStep by -1 -2 -4 -8, Double EditStep, Halve EditStep added as shortcuts

Improvement: Show Length Dialog will now let you edit Pattern or Phrase length. Improvement: Added Length + LPB changing for Phrase Editor.


Moved Clone & Duplicate menu entries to be next to eachother for better discoverability
Also moved Automation Curve drawing related menu entries to the Automation Curves.. submenu

Added ReCycle .RX2 Import, ReCycle .REX Import, Polyend Tracker Instrument .PTI import, Soundfont .SF2 Import, AKWF loaders, Paketti Stacker Dialog and previously missing Paketti PitchBend Loaders, including Fill Empty Sample Slots, and of course User-Defined Sample Folders...

Added missing Section, Sequence and Selection menu entries, further organizing.

Added Looping as a setting Changed the widths of LPB + Phrase length valueboxes
They are now identical and organized in the same way - with no sample processes missing from Sample Navigator or from Sample Mappings.
for better discoverability

Also tweaked the dialog design



BeatDetector Modified, OctaMED Note Echo, OctaMED Pick/Put Row, PlayerPro Note Dialog, PlayerPro Main Dialog, PlayerPro Effect Dialog.

Set Selection by Hex Offset, Paketti Tuplet Writer, Speed and Tempo to BPM, AKWF Load 04 Samples (XY), Debug tools: Available Plugin Information, Plugin Details, Effect Details


This will show the 16 step External Editors for Volume Stepper, Cutoff Stepper, Drive Stepper, Resonance Stepper, just like the Show/Hide PitchStep shows the Pitch Stepper.
Also added the required shortcuts for showing them.
(Closes https://github.com/esaruoho/paketti/issues/508)

This will no longer collapse + mute the original track.

.. And makes the Delay Column visible
and prints Global Groove 0&1: 60% (66), 2&3: 44% (4C), 4&5: 17% (1D), 6&7: 49% (53) -> Track 01 (Rendered)



Also if you are on a Group Tracks with no Tracks, it will no longer error out.

This will create a Section in the Pattern Sequencer, from the Selection.
This is used for Clone Current Sequence + Clone Selected Sequences:

&.This Keybind and Menu Entry will pick any Random Instrument (except the current one), which either has Samples, a Plugin or MIDI Output properties.
One button "Set Pitch" to set the finetune + note. Another to Calculate or to Recalculate.

if you got 0 slices, it'll slice in half. if you try to halve slice count when there's only 1 slice, then it'll just clear the slices. can easily go from 2 slices to 256 slices.


Distribute Always Next Row, Even 2, Even 4, Uneven, Across Selection (Even, Even2, Even4, Uneven)



When you have an Amigo Plugin loaded, and the sample is Embedded (Embed is selected within the plugin interface), you are able to export it to Renoise, and it'll be injected with the 8 Macro Knobs and other details (such as Pitch, Volume, Panning, Drive, Cutoff, Resonance Steppers, PitchBend control etc).
This flips the sample in that very specific "ALT-A Convert Signed to/from Unsigned samples", for that nice little crunchy mayhem. There are three shortcuts + menu entries. One that wrap-signs, one that wrap-unsigns, and one that toggles the signing/unsigning state.

IYKYK.
Improvement: added .dll .dylib .sys .bin.

This lets you load the legacy .IFF samples such as OctaMED or ProTracker/SoundTracker samples. If you come across any files that don't work, let me know. There's also a "Load Random 128 .IFFs" menu entry in the Instrument Box. Also added .8svx + .16sv support
This will load a .MOD as sample and sign it so you can get both the header and the samples. Also strips the header from the start

This will load a .MOD - analyze it's settings, and load each sample, with the loop content, as a new instrument, with the Paketti default instrument.
These menu entries will do a mirror effect of a sample to create a loop, or just hit LoopStart + LoopEnd to create a loop
Example of whistle sample crossfaded, Before & After:



This simple feature replaces the Renoise Native one by making it a toggle. If you've got no loop, but have a selection range, then Forward Loop is set, Loop Mode is set On, and that's the selection. If you now run the shortcut again, then Loop Mode is set to Off. If some other range is selected, and you select a new range, then that new range is looped with Forward + LoopMode On.

Examples:

This will unmark the selection range, thus clearing it. Same logic as with Unmark ALT-U in Pattern and Phrase Editors.
This will let you choose which Stepper to view (Volume, Panning, Pitch, Cutoff, Resonance, Drive), and also reads and updates to how long the stepsize is (16, 32, 64, 128, 256)


This prompts for a .RX2 and then prompts for the name & folder of the .PTI to save.
This shortcut runs through 1...9 of Middle Frames. They are: Pattern Editor, Mixer, Phrase Editor, Sample Keyzones, Sample Editor, Sample Modulation, Sample Effects, Plugin Editor, Midi Editor.


This is V3.5 only - will start working for everyone when Public V3.5 is out. Based on API 6.2 updates listed on the Renoise Definitions GitHub.
This shortcut cycles between Pattern Editor and Midi Editor.

This is an old Paketti method I wrote for creating a specific type of Body of Note Offs.



Successfully loads a mono .RX2 instead of showing silence. Successfully retains a 24bit .RX2 as 24bit instead of forcing it to 16bit. Gives you a nice status bar message if you are trying to load a .RX2 with more slices than 256 (Renoise limit is 256 slices per Instrument)

Extracts the original wavefile instead of combining slices (thus no longer causing data loss and clicks) Adjusts for latency, so slices are exactly where they should be.
Player Pro Main Dialog will now open and close with the same shortcut
Added EditStep to Main Dialog
Added Notifiers to both Note Dialog & Main Dialog that follow manual Instrument changes
EditStep is now taken into consideration with the 00-80 Volume controls and 00-FF Effect controls.
Added all Renoise-specific Effect commands to Dropdown menu
Tweaked the general design and sizes of the dialogs



This is for those who use LFO with Custom Envelope, you can now store and carry them with your installation of Paketti.
Added more Step sizes (4, 8), added buttons for setting specific types of "envelopes" for the External Editor
Added Flip, Mirror and Humanize, too.




So if you Pakettify an instrument, it will no longer create a new instrument.

This hides Volume, Panning, Delay, Sample FX, Effect Columns and unused Note Columns.
This will read the Pattern length (let's say, 64), and divide the selected sample to 64 slices, and then write the slices to the selected track.
As requested on the Renoise Forum - this will convert a 3 note chord into an arpeggio. First it'll sort notes by ascending, then wipe the 2nd and 3rd note (with Note Off), and output 0AXY to the first Effect Column. If the 2nd or 3rd note is higher than F then there will be a clean error.

Added to Sample Editor Ruler menu entry + shortcut.

four shortcuts (Decrease, Increase, Next Parameter, Previous Parameter) for controlling exposed-in-Mixer parameters
MAJOR thanks to ptdc for the original idea, i just did my thing to add additional logic and protections

This opens up a File Browser for loading an .IFF, .8SVX or .16SV
This lets you run a -128 to +127 modulation on the sample, just like in the Protracker Edit Op.

(Fixes https://github.com/esaruoho/paketti/issues/870)

will now write till it sees a note on any note column of selected track, thus enabling:


This will take the Slices in the current Instrument and start outputting them to a new pattern per slice.
https://www.loom.com/share/e06f2d3ee5414a9d8e6600eff1b01d30
This will eventually provide a lot of usefulness when finished, it's just a lot of plumbing to get through first.
This is a long-form project which will enable many configuration possibilities when done. Turns out there are over 3300 menu entries in Paketti.
Basically wipes the Pattern Sequence part of the song.

This lets you prepare a sample (slice at 1, slice at end of sample) and then start modifying BPM, LPB, Pattern Length so that you're able to find 4 bars or 8 bars, and then continuously slice it up and write one slice per pattern until end of slices

Now no longer errors out, instead works as expected.
Now no longer errors out, instead works as expected.
It used to quit the conversion if it found a sample of that Bit Depth. Now it continues till the end.
will no longer error out when trying to set a pitch that goes outside of Renoise limits
will no longer print D#-7, instead D#7
And there was a faulty reference to the wrong middle frame name.
Will no longer suggest that an Instrument with Samples, used in an Instrument, has unused samples and is deletable
Will no longer error out if going lower than 20bpm or higher than 999bpm.


Pitch Rotaries now go up to -64 and +64 Transpose instead of erroring out - thus matching the transpose of the Instrument. Pitch Rotaries can be controlled via Midi Mapping, and they update the interface. Selected Sample can be controlled via Midi Mapping, and they update the interface Expand + Shrink Midi Mappings will both expand or shrink, and update the interface, and select the track AND pick the instrument Pitch Midi Mappings will change the selected Instrument and selected Track Midi Mappings introduced for changing 8120 Instrument selected Sample
Both Name Tracks + regular versions, and 2nd Midi Mappings binds for both. They also change the selected instrument to match the track number.

This sets the Beatsync, LPB and BPM by calculating the length based on length of sample + LPB and Beatsync value.

No longer force-switches you to Pattern Editor, if you're in Sample Editor or Phrase Editor
Added 32 steps (0-16 are filled, 16-32 are silence)
Added "Print Once" which prints the stepcount amount of each of them, then nothing else
Added "Selection Only" which only prints the content to the selection across patterns.

Added buttons for changing LPB, for updating Beatsync, for converting Beatsync to Pitch
Added Calculated BPM for Beatsync and calculated BPM for pitch
Added elements for controlling Transpose and Finetune -> which update the BPM calculation
Other minor tweaks

.PTI Export now no longer saves a -inf dB volume setting and Hard Left Pan setting. Instead, 0.0dB volume and Center Pan.
.PTI Export will name the .PTI instrument name as filename-you-save-it-as (so 002_try.pti instead of originalsamplename)
Both .PTI and .RX2->.PTI Export will now correctly set to Beat Slice instead of 1-Shot.
No longer tries to hit over Renoise limits (B-9 note), fixed.
.. at the end, removedI've improved and tweaked this dialog quite a bit ever since Hotelsinus sent it my way. It now supporst 16 steps and 32 steps. If there's interest, I can continue tweaking it further.

Now 75 dialogs deep:




Now correctly duplicates, clears slices without erroring, and reinstates the slices - and names the instrument + sample slices accordingly.
Now has "05" and "OFF" as possibilities Now has a slider for controlling 0-100% Now has a LFO Writer for controlling the looplength
Added "Auto Stack from Pattern" - this means, if you've used slices to create sequences, and suddenly want to transpose the slices, you can turn them from Slices into a Stacked instrument, and the selected track will be duplicated but written with velocity stacking.
This will take a sliced instrument and create a new Instrument where all the slices play together C-0 to B-9.

This seems to recognize slices - but I'm very interested in finding out what else this should know how to do.

Can now export 64 drumchain kit where each slice plays till the end of the sample
This allows for resampling a oneshot sample to fit 7 octaves and export .OT out of it

This loads a simple textfile with the format of
CC name
CC name
in, and then creates an *Instr. Midi Control device and maps them.
Added a Dialog for opening Paketti presets, or your own.
There's also a detection for maximum 34 CCs, and added Pitchbend too.

Now has a dropdown menu for adding CCizer textfiles from Paketti folder, and for browsing for new ones
Added dynamic Menu Entries that show the textfiles in question, and allows for writing to Selected Device - or creating a new device with the settings - fixed pagination too so the correct amount of pages are displayed.
Now there's a method for sorting the Changeslog from oldest to newest, and from newest to oldest. There's also a split between README.md + CHANGESLOG.md - so that the small fledgling manual does not get destroyed by the huge (1 year) changeslog.
I've made it dynamically create the donations-list, so I don't need to manually create another row every time. Thanks for keeping the donations coming in!
This will 1. disable block loop 2. disable pattern loop 3. read the current pattern length 4. create a brand new pattern with the same length below it 5. start playback of current pattern from row01, then enable follow pattern. when it hits the next pattern, a new pattern is created with the original pattern length applied. and so on, until you toggle the feature off. Mad props to Phill Tew for asking for something like this, then me having a think about it and creating it the Paketti way. Thanks!
As pointed out by danoise originally - adopted into Paketti
As pointed out by danoise originally - adopted into Paketti.
This will let you load multiple files as "EXE load", so Raw load.

Sononymph - modified and rewritten with additional features and improvements.

I've been toying with this and tweaking it slowly for a few months now.
This started with "Oh yay, v3.5 has a Phrase Script Editor", followed by "But I don't want to use it. Can I script the script?". This is basically a system for creating, and always-rendering, the Phrase Script Editor output, and having it play, without needing to look at the Phrase Script Editor. It lets you decide how long the sequence of notes is, how many notes there are, and which scale the notes conform to, and what the note order is. When you drag the Length and Note Count sliders, new sequences are randomly created, new note orders, etc. Volume Range controls the minimum and maximum Velocity. Octave Range is, for the range of Octaves covered. You can Randomize the Voicings, Randomize the Velocity, or Randomize All. You're able to control the Instrument Transposition, the Shuffle, Step Size and LPB. And access all the Steppers dialogs. The Status bar will show you what you created, and it will automatically start playing. Experiment and enjoy!
Here's what it looks like currently.

Shortcuts, Midi Mappings and Menu Entries.
I've also improved this so that this beams directly to the Enhanced Phrase Generator
Uses the same Paketti Steppers code, so they stay in sync visually (I make a change to Paketti Steppers dialog, and the Phrase Generator dialog updates, too). Pressing Duplicate will now both duplicate the instrument, and create a new track, and arm the track for playback, AND set "Always Render"&"Play Until End" to ON - meaning you immediately hear the changes you make. When hitting the Instrument transpose buttons, the C-4 + 0G01 is printed to the selected Track in Pattern Editor.


Now shows a Status Bar message to inform the user what happened. There's also a Menu Entry for all 3 features on the Pattern Matrix Menu.
Ableton11Dark theme to Theme SelectorThis will read the currently selected device's parameters and display them on a single canvas, named accordingly. If you select a different device, the dialog will auto-update. You can also randomize parameters by percentage, can toggle External Editor on/off, can just draw to the Array aka create a completely new way of modifying parameters quickly.. Any ideas welcome.

There's a dropdown menu with multiple waveforms - there's a randomizer for creating random waveforms, you can have Wave A and Wave B and crossfade between them, there's a Hex Editor there so you can input the code in yourself. You can save a .CSV and load a .CSV - you can drag in a .CSV into Renoise and it'll get loaded. There's a "Create 12 random instrument" -> meaning, an instrument will pop up with 12 randomized waveforms pre-loaded, and Pakettified. There's the usual simplistic Sample Tools, Invert, Normalize, Fade In, Fade Out, Reverse, Scale 150% Scale 50%. You can pick up the waveform on your current Selected Sample - or have a Live Pickup Mode - which means, whichever Selected Sample you pick, the minute you draw, it is beamed back to the Sample. And a few other things. Any ideas welcome.



(Closes https://github.com/esaruoho/paketti/issues/878)

Unknown Pleasures (tkna).xrnc to the Paketti Theme Selector
(Closes https://github.com/esaruoho/paketti/issues/311)



---
This shortcut will detect whether the LFO Device has an External Editor available, and let you toggle showing it on&off.
Shortcut that loads LFO in Custom mode with External Editor exposed. If LFO Custom already exists, same shortcut will hide or expose the External Editor.

yes. you can now script within Notepad and run it.





Apparently this is a feature in ModPlugTracker.

This will detect that you're in a new fully empty song, and randomize the BPM across 60-220.


Closes https://github.com/esaruoho/paketti/issues/881


This will allow you to both import multiple .SFZs and export them as .XRNI to the folder the .SFZs are on. They are exported Pakettified. Then loaded as Pakettified. - Props to ryrun for the original gist github snippet.
This will: Halt playback and disable Follow Pattern - when triggered. - Stores the Follow Pattern + Row that was playing Then enter a mode of, whichever row your cursor is on, that whole row gets played. After you disable the Audition Mode, returns back to playing from the Row that was stored and re-enable Follow Pattern.

123[456] becomes [123]456. And the other will flip the samplerange forwards by selection range.

For setting the maximum minimum detune, and whether the detune fluctuates, or whether it's "hard sync" (surely the wrong term - but meaning if you set the finetune slider to 96, then all unison'd up samples are -96 to 96. And the original sample finetune is taken into consideration and calculated against.
Will now halt "Live Pickup Mode" for the duration of "Morph Sample" generation and "Export Wavetable to Instrument", to evade overwriting.
Also fixed a crash bug when "Export Wavetable to Sample" while on an Instrument that already has a sample.



Benefits: If set to True, and, you have a Plugin on the Instrument, the Plugin is duplicated. If set to True, and you have a bunch of Stepper settings or Volume AHDSR - the content is duplicated. If set to True, and you have the 8 macros set up already with user-preferred settings, all are retained.
Highly experimental Render with tail - take your sample, run Experimental Render and the Macros, Selected Track TrackDSP and Sample FX Chain content is all rendered to the sample using a throwaway pattern - with extra silence padding added to the end of the sample so the tail is correctly rendered. The output is pakettified by default, so you're ready to go. Also compensates for headroom, and restores the headroom afterwards. (Closes https://github.com/esaruoho/paketti/issues/709, https://github.com/esaruoho/paketti/issues/248, https://github.com/esaruoho/paketti/issues/356)






You can now use Single Cycle Waveform Writer to create "a type of wavetable" - The newly added "Write A&B" button will create Wave A as Sample Slot 1, Wave B as Sample Slot 2. The Wave A will be in Sample FX Chain 1, the Wave B will be in Sample FX Chain 2. The FX Chain 1 will have a LFO connected to Gainer, and the FX Chain 2 will also have a LFO connected to a Gainer. After the Gainer, for both FX Chains, there will be a Send device to FX Chain 3 - which is the "regular" Paketti FX Chain (followed by FX Chain 4 for Parallel Compression). After this, the Live Pickup Mode is enabled in the Single Cycle Waveform Writer - but with additional tweaks: Now, after this change, the Wave A Waveform drawing will write to Sample Slot 1, and Wave B Waveform drawing will write to Sample Slot 2. The Instrument is configured like so: The Modwheel controls the Reset of both LFO devices in Sample Chain 1 & Sample Chain 2. Both LFOs are set to "Infinite" Frequency - meaning, only the Modwheel will change the location of the LFO step. The Selected Track also gets a LFO, connected to Instr. Macro device's Modwheel. The Selected Track LFO Amplitude, Offset and Frequency, are exposed in the Mixer for easier availability, and the Dialog is automatically updated with three additional sliders - you guessed it, Amplitude, Offset and Frequency. This means that you can automate the LFO on the Selected Track - the device is helpfully renamed to Wavetable Mod *LFO, and thusly you can automate the crossfade / oscillation between the Wave A and Wave B waveforms. When the Single Cycle Waveform Writer is opened on an Instrument such as this - the Live Pickup Mode is automatically set, and the Three sliders on the Dialog are shown to the User.
Additional bonus: Since you now have a FX Chain for Wave A, and a FX Chain for Wave B, the Wave A Chain1 and Wave B Chain2 can have effects loaded in and there will be automatable crossfading between the actual Chain output (such as effects) of the Waves.

This lets you create a song's sections, pattern row counts and pattern names.

Iβm a big fan of the age-old, 32-bit only, never-made-available for macOS, DiscoDSP EQ30. You can just draw with a mouse and get a bunch of sliders moved around. Hold the left mouse button down and paint β a max of 30 EQ Bands are within your grasp with a single click + drag. So hereβs a Renoise v3.5 only hack for making it happen, using 4 EQ10βs. If you have any ideas, do let me know. If you can think of other Renoise Native devices I could tweak and hack like this, do let me know, too.

So now with V3.5 Canvas flavor - and I've added SubColumn improvements too - meaning, you can write to Pan, Delay, Volume + Sample FX Columns. Enjoy.

C#0 -> Now it detects the actual slicemarker correctly.

-, +, # which were all missing.Wavetable Mod *Lfo on the Selected Track.
<do nothing> as an option for the Device Loader, in addition to External Editor / Parameter Editor. in Paketti Preferences. - so now you can load devices but not have the ExtEditor or Parameter Editor auto-open.


Default Pink Auto, Easily Embarrassed type, Neosponge, realp`

---


ÀâΓ₯!"?#%/()=Β§ and glyphs for shift, control, option, command, cursor updown left right.

74 Cutoff
71 Resonance
75 Decay
12 EnvMod
18 DelayTime
19 DelayFeedback
17 Overdrive
16 AccentLevel
102 SlideStatus
104 Tuning
This will let you have the dialog open, play notes on the Computer Keyboard, press enter and the played notes are saved as a chord, which you can then output anywhere. The Smart Note Off feature is also there, adding a Smart Note Off to the end of the pattern. And if you have 4 or 8 chords put to Dump Slots, then you can also spread them across the pattern. I can think of no method that would be as fast - and as dynamic. If you have a 512 row pattern, and have 8 chords, you can slam them in, automatically, without thinking, every 64 rows. 64 row and 4 chords? every 16 steps. If you made an error, you can always use backspace to remove the newest note, or shift-backspace to wipe the whole Currently Pressed Notes. You can modify the Slot Phrasing (shifting them by octaves randomly) or do the very same thing for the current Selected Track's Pattern content for Selected Pattern. And you can access the Paketti Gater directly.


For those Reverse Cymbals - you can now have Paketti calculate the position + delay value for you, so you don't have to think about it. If there's something to tweak, tweak a bit. Enjoy!




This feature will import the samples, loop-points and keymappings, for now. More incoming.











PERC WAV [2025-05-14 221922]_16beats_slice25-tmpSave.wav


will now read the sample region selection and normalize only the selected channel selection, or, if nothing selected, the whole sample or slice.
This is a soft take / impression of the Anvil Studio: Audio Lab feature which allows you to draw a waveform, draw a pitch envelope and a volume envelope. Press enter, and you've got a sample.

Added more waveforms (2 octave steps, 1 octave steps), tweaked the 2X / 1/2X to be less buggy, improved the interface, added Invert button for inverting, added a Live Audition mode, so basically, draw and let go of drawing and it is rendered. Added Paketti Loader Settings (Interpolation, Oversampling, Autofade, other settings).. Added Random Steps for pitch loops, tweaked the Fade out to be less clicky. Also tunes the sample to a440hz so it'll, if using Octave Steps, for instance, match with a plugin played on the same instrument. Also added Process Slicing to the 25 Random samples, and made it less random (not random,random,random for 25 samples - instead, randomly pick something from the dropdown menus for Waveform, Pitch and Volume.)
This will clear the current EQ30 automation across all envelopes, and Randomize by EditStep - and set the envelopes to Points so they don't interpolate, but instead step by EditStep.

This will clear the current Selected Device Automation Parameters, read EditStep and randomize Steps to all Parameters of the Device.

This shortcut will insert a Note Off 0C00 command to the selected Effect Column, or, if on Note Column, it'll appear on the first Effect Column.

This allows you to pick your favorite 8 slices, or the 8 sample offset values of your choice, and start stepsequencing with them. There's also mute / pitch control for each slice - the pitch is disabled if you hit Sample Offset. And re-enabled when you move back to Slice. It will flood the pattern full (so 16 steps? 512 row pattern? Fills it all). Also you can offset, just like with Paketti Gater + Paketti Groovebox 8120 + Paketti VolDelayPan - them so they keep going against eachother causing all kinds of polyrhythmic fun.

When going from 16 steps to 32 steps, duplicate the content instead of forcing the user to re-do it. Switching from using Sample FX Column for ZZ04 for defining StepCount, to. using Note Column naming for defining StepCount. Maximum Slice was off by one (C#4 to A#4? - allowed picking B-4 which did nothing), fixed. Writing "16step or 32step view?" to first note column (32_32) would mean StepCount 32 and View 32 Steps upon Dialog opening Changing tracks will update the Dialog to that track's settings.
Sample Editor will now show the Sample Offset you're modifying. Added +1 -1 Octave control for Sample Offset mode.
When opening the dialog with a non-sliced sample, default to Sample Offset. When opening the dialog with a sliced sample, default to Slice mode.


Selecting a row will now highlight that, just like with Groovebox 8120
Selecting a row, while on the Sample Editor, will show the Slice you've selected, so you can easily edit the length of it with other Paketti shortcuts
Selecting a row, while on the Sample Editor, while in Sample Offset mode, will dynamically show you where the Sample Offset starts the playback from.
Duplicate Pattern will duplicate the current pattern to a new one and continue playback from that.
Changing a pattern without changing the track, will result in the stepsequence being updated.
Show Velocity in an extra area of the dialog.
Velocity Draw










Automatic BPM-based Beat-slicing/audio preparing of your remix stens. Set BPM, decide the beat lengths (64, 32, 16, 8, 4) - Start the Process - and Paketti StemSlicer will do your automatic cutting for you. Afterwards, click on Load as Drumkit - and they appear sorted by original sample and length. The silence ones are skipped from being loaded.





and if you're drawing to a canvas and press Space, the external editor will appear.























Wavetable Mod *Lfo device Slider changes.








Wavetable Mod *LFO device is loaded, so it points to the correct instrument instead of the non-Unison'd instrument.








*Instr. Macros device with the same care, i.e., minimize it, just like the "First" order device of same name.






T# to S#if such is set.





0Sxx to trigger the slices - this enables you to have 128-256 slices triggered. If less than 119 slices, then it defaults to using the keymapping notes instead of 0Sxx.


*Instr. Macros device to the tracks that are Sequentially Loaded.




[ and ] format, so if you want to loop [] single pattern, that's what gets looped, if you have a multiple bunch of patterns, start with [ in the name and finish with ] in the name somewhere else.*Instr. Macros devices for each track, and read the BPM from the Wavefile header, or read the BPM from the folder the files are in, then calculate the length of the samples, and add the correct amount of patterns to the pattern sequence, and print, automatically, C-4 (instrumentnumber) 0G01 to every track that has been created, and enable Autoseek for each of the tracks.

*Instr. Automation device to the newly created track, assigned to the newly created instrument.*Instr. Automation to the end of the Track DSP Chain for directly automating the device.*Instr. Automation Track DSP Device for editing + automating.








Global:Paketti:Toggle Metronome PrecountPaketti:Toggle Metronome PrecountGlobal:Paketti:Enable Metronome PrecountGlobal:Paketti:Disable Metronome PrecountPaketti:Enable Metronome PrecountPaketti:Disable Metronome PrecountGlobal:Paketti:Toggle Mute/Unmute All TracksPaketti:Toggle Mute/Unmute All TracksGlobal:Paketti:Toggle Mute/Unmute Remembered TracksPaketti:Toggle Mute/Unmute Remembered TracksGlobal:Paketti:Set EditStep & Quantization to 00 through ...to 32Global:Paketti:Increase EditStep & Quantization by 1Global:Paketti:Decrease EditStep & Quantization by 1Global:Paketti:EditStep & Quantization Power of Two AboveGlobal:Paketti:EditStep & Quantization Power of Two BelowPaketti:Set EditStep & Quantization to 00 through ...to 32Paketti:Increase EditStep & Quantization by 1Paketti:Decrease EditStep & Quantization by 1Paketti:EditStep & Quantization Power of Two AbovePaketti:EditStep & Quantization Power of Two BelowPattern Editor:Paketti:Jump to Pattern Fraction 01/02 through 16/16Paketti:Jump to Pattern Fraction 01/02 through 16/16Pattern Editor:Paketti:Save Cursor PositionPattern Editor:Paketti:Jump to Previous PositionGlobal:Paketti:Jump to Previous PositionPaketti:Save Cursor PositionPaketti:Jump to Previous PositionGlobal:Paketti:Move Section Loop (Next)Global:Paketti:Move Section Loop (Previous)Paketti:Move Section Loop (Next)Paketti:Move Section Loop (Previous)Pattern Editor:Paketti:Note Off All Columns in GroupPaketti:Note Off All Columns in GroupPattern Editor:Paketti:Mute Playing Note (Insert Note Off)Paketti:Mute Playing Note (Insert Note Off)Global:Paketti:Clone Sequence Without AutomationPattern Sequencer:Paketti:Clone Sequence Without AutomationPattern Matrix:Paketti:Clone Sequence Without AutomationPaketti:Clone Sequence Without AutomationGlobal:Paketti:Wipe Drumkit Sample FX AssignmentsPaketti:Wipe Drumkit Sample FX AssignmentsPattern Editor:Paketti:Invert Volume OnlyPattern Editor:Paketti:Invert Panning OnlyPattern Editor:Paketti:Invert Delay OnlyPattern Editor:Paketti:Invert Sample FX OnlyPaketti:Invert Volume OnlyPaketti:Invert Panning OnlyPaketti:Invert Delay OnlyPaketti:Invert Sample FX OnlyPattern Editor:Paketti:BPM Switcher Dialog...Paketti:BPM Switcher DialogPattern Editor:Paketti:Write Track Mute (0L00)Pattern Editor:Paketti:Write Track Unmute (0L80)Pattern Editor:Paketti:Write Track Solo via 0L00 (Mute All Others)Pattern Editor:Paketti:Write Track Unsolo via 0L80 (Unmute All)Paketti:Write Track Mute (0L00)Paketti:Write Track Unmute (0L80)Paketti:Write Track Solo via 0L00Paketti:Write Track Unsolo via 0L80Global:Paketti:Step Sequencer FX Randomizer Dialog...Paketti:Pattern Editor:Step Sequencer FX RandomizerMain Menu:Tools:Paketti:Pattern Editor:Step Sequencer FX Randomizer...Pattern Editor:Paketti:Step Sequencer FX Randomizer...Pattern Editor:Paketti:Interpolate Current Subcolumn ValuesPattern Editor:Paketti:Interpolate Column Values (Effect Column)Paketti:Interpolate Current Subcolumn ValuesPaketti:Interpolate Column Values (Effect Column)Pattern Editor:Paketti:Fill Effect Column Between NotesPattern Editor:Paketti:Fill Sample Effects Between NotesPaketti:Fill Effect Column Between NotesPaketti:Fill Sample Effects Between NotesPattern Editor:Paketti:Play Next Note LinePattern Editor:Paketti:Play Previous Note LinePaketti:Play Next Note LinePaketti:Play Previous Note LinePattern Editor:Paketti:Clever Note Off Wipe & Replace (Right After)Pattern Editor:Paketti:Clever Note Off Wipe & Replace (Right Before)Pattern Editor:Paketti:Clever Note Off Wipe & Replace (Half Before)Paketti:Clever Note Off Wipe & Replace (Right After)Paketti:Clever Note Off Wipe & Replace (Right Before)Paketti:Clever Note Off Wipe & Replace (Half Before)Pattern Editor:Paketti:Clever Note Off Delay +1Pattern Editor:Paketti:Clever Note Off Delay -1Pattern Editor:Paketti:Clever Note Off Delay +10Pattern Editor:Paketti:Clever Note Off Delay -10Paketti:Clever Note Off Delay +1Paketti:Clever Note Off Delay -1Paketti:Clever Note Off Delay +10Paketti:Clever Note Off Delay -10Pattern Editor:Paketti:Clever Note Off Reset DelayPaketti:Clever Note Off Reset DelayPattern Editor:Paketti:OctaMED Note Echo Dialog...Paketti:OctaMED Note Echo DialogPakettiSetEditStepAndQuantization() forcing quantize enabled when changing values. Now saves and restores the record_quantize_enabled state so changing EditStep/Quantization values no longer toggles quantize on/off. Status bar shows enabled state: EditStep: 8, Quantize: 8 (On) or (Off).Global:Paketti:Increase EditStep & Quantization by 1, Global:Paketti:Decrease EditStep & Quantization by 1, Global:Paketti:EditStep & Quantization Power of Two Above/Below, Global:Paketti:Set EditStep & Quantization to 00 through 32nudge_with_delay() now sets delay_column_visible = true for ALL tracks in the selection, not just the currently selected track.Pattern Editor:Paketti:Nudge with Delay (Down), Pattern Editor:Paketti:Nudge with Delay (Up)Pattern Editor:Paketti:Interpolate Column Values Exponential (Volume), Pattern Editor:Paketti:Interpolate Column Values Exponential (Panning), Pattern Editor:Paketti:Interpolate Column Values Exponential (Delay), Pattern Editor:Paketti:Interpolate Column Values Exponential (Sample FX), Pattern Editor:Paketti:Interpolate Column Values Exponential (Effect Column), Pattern Editor:Paketti:Interpolate Current Subcolumn Values ExponentialPaketti:Interpolate Column Values Exponential (...)Pattern Editor:Paketti:Jump to Pattern Position Dialog...Paketti:Jump to Pattern Position DialogGlobal:Paketti:Clone and Expand Pattern to LPB*2 (existing, now handles large patterns)visible_note_columns to match (minimum 1). Cleans up tracks with excess empty columns.Global:Paketti:Remove Unused Note ColumnsPaketti:Remove Unused Note ColumnsMain Menu:Tools:Paketti:Pattern Editor:Remove Unused Note ColumnsGlobal:Paketti:Remove Unused Effect ColumnsPaketti:Remove Unused Effect ColumnsMain Menu:Tools:Paketti:Pattern Editor:Remove Unused Effect ColumnsGlobal:Paketti:Remove Unused Columns (Note + Effect)Paketti:Remove Unused Columns (Note + Effect)Main Menu:Tools:Paketti:Pattern Editor:Remove Unused Columns (Note + Effect)Global:Paketti:Clear Unreferenced PatternsPaketti:Clear Unreferenced PatternsMain Menu:Tools:Paketti:Pattern Editor:Clear Unreferenced PatternsGlobal:Paketti:Contract Section Loop (Remove Last Section)Paketti:Contract Section Loop (Remove Last Section)Main Menu:Tools:Paketti:Pattern Sequencer:Contract Section Loop (Remove Last Section)Global:Paketti:Contract Section Loop (Remove First Section)Paketti:Contract Section Loop (Remove First Section)Main Menu:Tools:Paketti:Pattern Sequencer:Contract Section Loop (Remove First Section)Global:Paketti:Sequence Selection (Next)Global:Paketti:Sequence Selection (Previous)Paketti:Sequence Selection (Next)Paketti:Sequence Selection (Previous)Global:Paketti:Sequence Loop Selection (Next)Global:Paketti:Sequence Loop Selection (Previous)Paketti:Sequence Loop Selection (Next)Paketti:Sequence Loop Selection (Previous)Global:Paketti:Section Sequence Selection (Next)Global:Paketti:Section Sequence Selection (Previous)Paketti:Section Sequence Selection (Next)Paketti:Section Sequence Selection (Previous)Global:Paketti:Select, Add Entire Section to Schedule and Loop Section XXPaketti:Select&Add Entire Section to Schedule&Loop Section XXPattern Sequencer:Paketti:Sequences/Sections:Select, Add Entire Section to Schedule and Loop:Select, Add Entire Section to Schedule and Loop Section XXSample Editor:Paketti:Sample Buffer Selection Shift LeftSample Editor:Paketti:Sample Buffer Selection Shift RightSample Editor:Paketti:Sample Buffer Selection Shift LeftSample Editor:Paketti:Sample Buffer Selection Shift RightSample Editor:Paketti:Rotate Audio in SelectionSample Editor:Paketti:Rotate Audio in SelectionSample Editor:Paketti:Select 1 BarSample Editor:Paketti:Select 2 BarsSample Editor:Paketti:Select 4 BarsSample Editor:Paketti:Select 8 BarsSample Editor:Paketti:Select 1 BarSample Editor:Paketti:Select 2 BarsSample Editor:Paketti:Select 4 BarsSample Editor:Paketti:Select 8 Barsamplitude property that doesn't exist on AHDSR devices (it only exists on LFO devices). AHDSR envelope shape is fully defined by its Attack/Hold/Duration/Sustain/Release parameters.Global:Paketti:Batch Convert RX2 to XRNISample Editor:Paketti:Batch Convert RX2 to XRNI...Main Menu:File:Paketti Import:Batch Convert RX2 to XRNI...PakettiAutoSamplify.luaSample Editor:Paketti:Batch Convert SF2 to XRNI (Per Preset)...Main Menu:File:Paketti Export:Batch Convert SF2 to XRNI (Per Preset)...renoise.song() returns nil. Fixed by deferring the call through app_new_document_observable so it only runs after a song is fully loaded and ready.Paketti35.luaSlicing a sample via Paketti's Rough slicer would sometimes crash Renoise with std::logic_error: invalid slice sample_position index '0'. Two root causes in slicerough() (PakettiSamples.lua): a duplicate insert_slice_marker(1) call that attempted to place a marker at position 0, and slice marker positions calculated as tw * i that could round down to 0 on small samples. Fixed by removing the duplicate insert and clamping all slice marker positions to a minimum of 1.
Every entry above represents real development time β design, testing, debugging, refinement.
Paketti's continued development is sustained by supporters who believe in open-source music tools.
Thank you for using Paketti. β Esa