Skip to main content

Upgrade and migration notes

This page highlights the upgrades most likely to affect existing users.

DJ pitch-range migration

Saved DJ pitch-range values of 20 migrate automatically to the REV7-native 16. The supported ranges are ±8%, ±16%, and ±50%. No manual configuration change is required. The saved value is one global default for the next track load on either deck. Active decks keep their current range until their own next track load. See DJ Mode and Settings.

Pack management and persisted assets

The server migration adds structured redeem copy, creator attribution, accent color, explicit asset ordering, durable management audit events, and retryable storage cleanup jobs. Existing packs and object keys are preserved automatically. No manual data conversion is required. Pack status changes now pass through publish readiness. A pack needs customer copy, artwork, an audio preview, and exactly one primary ZIP before it can become live. Permanent deletion is limited to an unused draft. Archive any pack that has issued cards, entitlements, or customer history. Pack Description and Supporting copy values are stored as Markdown and safely rendered on customer pages and previews. Existing plain-text copy remains valid Markdown, so no data migration or manual conversion is required. Titles, headlines, labels, prices, and button text remain plain text. Creators and administrators should preview all seven customer states before publishing. Preview pages are read-only and do not affect funnel analytics.

Turntablism scratch motion and Humanize

Twiddle, Prism, the Tear family, and the chirp portion of Joe Cooley now follow constant-speed TTM lines. Existing assignments keep their selected Pattern, Grid, and other saved values, but these strokes may sound steadier in pitch than earlier builds that used eased curves. FX Params adds a Humanize control to every Turntablism assignment. Existing scratch control sets are completed from the preset defaults when opened. Humanize defaults range from 10% for precise click routines to 30% for looser hand textures; set it to 0% for exact authored geometry. Pattern choices are migrated by raw append-only index, so extending the twenty-seven-stroke catalog does not remap older selections. Rate, Gate, and Swing rows now follow the selected Pattern. Hidden values remain saved and return if you switch back. Rate appears only for hand rubs and Transformer, Gate only for Transformer, and Swing for non-Transformer patterns.

Vim-style navigation key remaps

The addition of h/j/k/l as arrow key alternatives required remapping several shortcuts that previously used those bare keys: If you have muscle memory for any of these shortcuts, update your habits to the shifted or new key. Arrow keys continue to work exactly as before — the vim keys are purely additive alternatives. Both kitty-protocol terminals (which send Shift+lowercase) and legacy terminals (which send uppercase) are supported. Trim view movement semantics changed: Previously, bare h was fine (small-step) movement and Shift+H was coarse. Now bare h/l are coarse (matching the arrow keys) and Shift+H/Shift+L are fine. If you relied on h for precision trimming, use Shift+H instead.

PerformFX CLAP A/B audition controls removed

The PerformFX CLAP A/B audition controls have been removed. The [SHIFT+A], [SHIFT+B], [SHIFT+N], and [SHIFT+S] audition/notes/export shortcuts and the “CLAP” FX Library group no longer exist — they drove a non-functional experiment (the candidate lane was never wired to audio). No user data or bindings are affected: no settings ever persisted CLAP references. The unshifted [b] bank toggle is unchanged. Effect-quality work now lands directly in the built-in engines.

PerformFX fixed slots and FX Params

The Perform tab now uses ten fixed slots per bank. [1] through [9] and [0] trigger those slots directly when focus is on a fixed slot bank. When focus is in the FX Library, number keys no longer assign Bank A first, assign Bank B second, and then fall through to fixed-slot triggering. The shown preview keys audition the focused library preset. Most presets use [1] through [4]; DJFX Looper uses [1] through [6] for 1/2, 1/4, 1/8, 1/16, 1/32, and 1/64 grid captures. Press [A] to open the Assign dialog, choose Effect, Preset, and FX Slot, then press [1] through [0] to place the selected variant. [ENTER] now opens FX Params for the focused slot or FX Library preset. The old [E] shortcut is removed. Use [DELETE] or [BACKSPACE] on a focused assigned slot to clear it after confirmation. Legacy PerformFX bank arrays are migrated into fixed slots by order when they used letter keys, while numeric legacy keys still map to their matching fixed slots.

PerformFX timing, release, and tail controls

PerformFX slot timing is now split into Quantize Start and Quantize End. Existing saved start quantize settings continue as Quantize Start, while Quantize End defaults to Off. Quantize End only applies when One Shot is Off; one-shot slots use Length as the total engaged duration and can run up to 20,000 ms. The active bank row now shows Quantize Bank: Default when it is using each slot’s saved Quantize Start value. Press [q] to force the active bank to Current Grid, Next Grid, Next Bar, or Next 2 Bars without rewriting the individual slot settings. Tail-bearing echo, delay, throw, and reverb presets now expose Tail and default to Ring Out, so stopping transport lets the existing tail decay. Other PerformFX types hide Tail and keep the Cut behavior. Echo and delay presets also expose Throw for feeding only a selected tempo window into the delay before switching to wet-only repeats. Engage now includes Always On for slots that should activate automatically and ignore triggers while assigned. Built-in library presets default to Smart Hold, but saved fixed slots and custom presets keep their explicit saved engagement mode.

Tempo moved out of Project in Settings

The project tempo editor lives in its own Tempo category in the Settings sidebar instead of being a row inside Project. Open it with Settings → Tempo. The behavior is unchanged — type a value, nudge with arrows (hold Shift for fine adjustment), tap Space for tap tempo, apply with Enter, reset with R or Delete while editing. The page still requires at least one recorded loop to establish a timing source. Before the first loop, pressing [R] now opens First Loop Setup instead of arming immediately. The default Fixed mode applies a fixed 1 BAR first-loop Length, auto-stops at that bar boundary, sets 90.00 BPM, initializes Quantize from Settings with OFF as the default, enables a 4 BEATS count-in, and uses a REC + PLAY click. Highlight Tempo to type a BPM directly, or press [SPACE] anywhere in the dialog to tap tempo with an audible click, return to Fixed mode, and focus Tempo. Pressing [ENTER] during a Fixed take can end recording early, but the loop remains the configured fixed Length and queues as OVR+ until the next fixed interval so overdub continues as the loop cycles. Switch Mode to Auto for free recording where the loop ending defines project tempo; pressing [ENTER] to end that first take now continues directly into overdub. [ESC] cancels the dialog without arming. If you start an ARMED loop by pressing a pad or chop while record count-in is enabled, that key now plays immediately. Pad and chop hits during the final count-in beat are recorded at 0:00, so slightly early playing still lands on the loop downbeat. Earlier count-in hits are consumed as unrecorded start-signal updates.

Settings promoted to a top-level tab

Settings is now a dedicated top-level tab instead of a modal overlay. Open it with , or Tab cycling through Create → Perform → MIDI → Settings. The tab uses a two-pane layout: a sidebar listing categories on the left and a content pane showing fields on the right. Use Up/Down in the sidebar to switch categories, Enter or Right to enter the content pane, and Esc or H to return to the sidebar. What moved:
  • Project save, open, and new actions are in the Project category (the default). Separate project save/load modals have been replaced by inline controls within Settings.
  • Audio host, output device, buffer size, sample rate, quantization, and MIDI settings are in the Audio category.
  • Stem separation and factory sounds are in the Addons category.
  • Tutorial, account, analytics, video encoder, version/updates, and factory reset are in the General category.
Global shortcuts (Ctrl+S, Ctrl+Shift+S, Ctrl+O, Ctrl+N) continue to work from anywhere. The , shortcut still opens Settings. Settings are saved automatically when leaving the tab.

F1-F4 navigation shortcuts removed

F1, F2, F3, and F4 no longer jump directly to top-level tabs. Use Tab to cycle through available tabs and , to open Settings directly. If your PerformFX configuration contains bindings assigned to F-keys, those unsupported bindings are removed automatically on the first launch after upgrade. The cleaned configuration is saved immediately so the migration warning appears only once.

Linked and copied sample playback

Assigning the same local sample to another channel now opens a choice:
  • Link keeps loop, trim, chop, chop-gate, and pattern-end settings shared through the file defaults.
  • Copy snapshots the source channel’s playback settings into the target channel so later edits stay independent.
  • Browser and details preview still edit file-level defaults.
  • Assigning a different file to a channel resets that channel back to linked behavior for the new sample.
See Per-Channel Playback for the full guide.

Time-stretch engine migration

The time-stretch engine was replaced with a new formant-preserving spectral stretcher. This is a quality improvement with no workflow changes. What to expect on first launch after updating:
  • Legacy stretch cache purged automatically. Cached .wav files from the previous engine (schema versions before v4) are deleted on startup. This is a one-time cleanup.
  • First stretch after update takes longer. Because the cache was cleared, the first time you play a stretched loop it will be re-processed. Subsequent plays use the new cache.
  • No action required. The migration is fully automatic. If you notice any stretch-related issues, see Audio And Playback Problems.

Loop loads can auto-enable Sync

Samples that load with Loop: ON now automatically receive the best-fit Sync value when a session clock exists. This is enabled by default at Settings → Audio → Stretch Loops on Load. Turn it OFF if you prefer to set Sync manually after loading loops. Existing projects keep their saved Sync values. Pads from older project files that already had an active Sync value are treated as auto-assigned so future Loop: ON sample loads can recalculate the best-fit value. Pads that had Loop: ON with Sync set to Off are still eligible for automatic Sync the next time a sample loads while the setting is on.

Auto-normalized project tempo

Projects saved by pre-release builds can contain an auto-normalized tempo override where bpm_override_is_manual is false. These projects keep their displayed project BPM on load, but playback uses the raw recorded timing until you manually change the project tempo.

0.15 project workflow changes

If you are coming from older session-only workflows:
  • explicit .meiji project files are now part of the normal save/load flow
  • dirty-state and overwrite confirmation are more prominent

Persistence hardening

Recent releases improved:
  • atomic writes
  • backup recovery
  • corruption fallback behavior
That is good news, but it also means state and project handling now have clearer expectations. Save a real project for anything important.

macOS path migration

The codebase includes migration logic for older macOS path variants, including:
  • legacy ~/.config/meiji-sampler/
  • lowercase ~/Library/Application Support/meiji-sampler/
Current macOS docs should assume:
  • ~/Library/Application Support/Meiji Sampler/

Terminal compatibility

Recent releases also improved behavior for older Apple Terminal builds that lack full true-color support. If the UI looked corrupt in older Apple Terminal versions, update first before troubleshooting layout issues in depth.

Linux audio changes

Recent releases added or improved:
  • JACK backend support
  • ALSA device handling
  • Linux release compatibility work
If you are upgrading on Linux, re-check your audio host and device settings.