← Back to HSK Skrew Lab

HSK SKREW LAB — MANUAL

Holy Savior King · Texas Chopped & Screwed Audio Lab

1. What HSK Skrew Lab does

HSK Skrew Lab is a browser-based chopped-and-screwed processor. You load one song; the engine decodes it, detects the BPM and musical grid, and lets you skrew it down, chop it with the Future Catch engine, run effects, and render the result to a WAV — all in the browser, no upload to a server. One decoded audio buffer is the single source for everything.

Core rule: one source, one clock. Skrew slows playback. Chop (Future Catch) retriggers future material and catches the timeline. They are separate systems and never rewrite each other.

2. Getting started

Tap ⬆ LOAD AUDIO (or the upload zone on the empty state) and pick a file. On iPhone this opens the Files app — you can choose from On My iPhone, iCloud Drive, or any location the Files app reaches. On desktop you can also drag a file onto the zone. Supported formats are shown honestly per device: MP3, WAV, M4A, and AAC everywhere; FLAC/OGG only where your browser can actually play them (iOS hides them).

After loading, the engine decodes, analyzes for BPM, builds the beat grid, and starts with Skrew ON at the lab default. You can load a second song at any time — it fully replaces the first with no page refresh (see Mobile).

3. BPM — automatic detection

On load, the engine runs a multi-window onset-autocorrelation analysis: it samples several points in the song, picks the most rhythmically active window (so intros, outros, and silence don't dominate), autocorrelates the onset envelope across a wide tempo range, then scores candidate tempos. Each candidate's half/double relatives are evaluated, weak spurious peaks are filtered, and a gentle tempo prior breaks ties. The winner becomes the canonical sourceBpm.

SOURCE BPM shows the detected tempo. BPM · ADJUST is the working project tempo, which you can correct manually or with Tap Tempo. Effective BPM is the tempo after Skrew. Skrew does not change the detected BPM.

BPM is the foundation: the beat grid, bar/beat position, chop timing, Future Catch, capture/look-ahead durations, region snapping, effect automation, and render all derive from this one value and the grid phase.

4. Musical grid & phase

Tempo alone isn't enough — the grid must also start at the right place. The detector estimates the beat-grid phase (the buffer position of the first beat) with a comb filter, so bars and chops align to real downbeats, not an arbitrary time zero. The shared BAR : BEAT : TICK clock displays your musical position; click it to prioritize normal time. AUDIO ALIGN changes one project audio offset in both views: drag the waveform left/right, nudge, snap its start to grid, center, or reset. Choose SELECT to create a playback region instead. Alt/Shift bypasses snap on desktop; FREE does so on touch. GRID PHASE moves the grid, not audio, and is separate from audio offset.

5. Manual BPM & ½× / 2×

If the detector's interpretation is wrong (common with genuine half/double ambiguity, e.g. a 174 BPM trap felt at 87), use ½× or 2× to correct instantly, or type a value into the BPM field. Manual entry switches the engine to manual mode and the entire grid, chop scheduler, Future Catch, effects automation, and render follow the new BPM immediately.

The BPM field selects its entire value when you tap it (on mobile too): tap → the old number is selected → type the new one → it replaces cleanly. You can also delete to empty and type a new value; it validates when you press Enter or tap away.

5b. Tap BPM

Tap BPM is a third way to set the tempo, alongside automatic detection and manual numeric entry. Tap the TAP chip in the transport in time with the song — with a mouse, a finger, or the Space key while the tap panel is open. After 4 taps the reading stabilizes; keep tapping to refine it.

The calculation uses the intervals between taps, median-filtered with outlier rejection, so one early or late tap won't wreck the result. The current reading and tap count are shown live. RESET TAPS clears the session.

If your tapped BPM is about half or double the current source BPM, a ½× / 1× / 2× chooser appears so you can intentionally pick the right interpretation. Press APPLY BPM to commit.

Apply feeds the same canonical BPM path as typing a manual value: the grid, Skrew, Chop, Future Catch, effect automation, and render all follow the applied tempo. Tap BPM does not create a second clock.

6. Transport — Play / Pause / Stop

▶ plays from the current position. ❚❚ pauses and keeps the position — pressing play again resumes from there, it never restarts. STOP stops at your intentional playback start. Double-click STOP or press the RETURN TO START icon to return to the beginning; neither action resets edits, alignment, BPM, Skrew, effects or EQ. The button reflects real engine state (mirrored from the audio clock), not a decorative toggle. Pause/resume preserves the master musical position and creates no duplicate chop events or orphaned nodes.

The waveform playhead is driven by the actual audio clock, not a UI timer.

7. Skrew

The SKREW knob sets the slowdown: 0% = original tempo/pitch, 100% = half-speed / one octave down. The mapping is rate = 1 − (amount/100)×0.5, so 35% ≈ 0.825× (a Texas skrew). Skrew changes the effective BPM shown beside it but never rewrites sourceBpm. The lab default is 35%; RESET SKREW and RESET ALL both return to 35% (never to 0%).

7b. Smooth

SMOOTH is a standalone artifact-reduction control, separate from Effects Lab. It reduces the clicks, pops, and harsh discontinuities that slowing, screwing, and Future Catch transitions can create — for example when a chop catches in the middle of a word.

At 0% it is fully bypassed: no processing is added and the engine behaves exactly as before. Raising it applies short gain fades at chop/catch boundaries and short gain dips at Skrew/region rate-step boundaries — micro-crossfades, not an EQ. It does not dull the whole mix or remove high frequencies.

Low values give subtle cleanup; medium values noticeably smooth chop transitions; high values aggressively suppress artifacts while preserving the musical character of the chop. It works identically in preview and render — the rendered file uses the same Smooth setting you hear.

RESET SMOOTH returns it to 0%. RESET ALL also returns it to 0% (and keeps your loaded audio and BPM).

Extra Smooth (the X-SMOOTH knob) is a stronger variant: longer fade windows and deeper boundary dips for stubborn clicks at Future Catch entry/rejoin and rate steps. At 0% it is a full bypass — identical to Smooth off — so the engine is unchanged until you raise it. RESET SMOOTH returns both Smooth and Extra Smooth to 0%.

8. Processing region

Three draggable markers on the waveform define where processing applies:

  • SKREW START — before this: original 1.0× playback. After: screwed.
  • CHOP START — before this: screwed, no chop. After: skrew + chop + effects.
  • PROC END — after this: returns to original 1.0×, no processing.

Drag the marker tabs (finger-sized on touch). SNAP TO BEAT snaps marker positions to the musical grid when on; off allows free placement. Region shading shows ORIGINAL / SCREWED / SCREWED+CHOPPED zones. Short gain ramps avoid clicks at boundaries.

9. Chop Engine

Three modes:

  • Auto — deterministic: a chop every INTERVAL bars on the TRIGGER BEAT. Default every 2 bars on beat 8.
  • Random — the interval varies between RANDOM RANGE bars (e.g. 2→3→4), but every event stays locked to the trigger beat.
  • Manual — automatic scheduling off; ⚡ CHOP NOW triggers a catch from the current position.

REPEATS = extra repeats (total plays = 1 + repeats). CAPTURE = length of the captured slice in beats. LOOK AHEAD = how far into the future to jump. All musical — never milliseconds. Interval 1–8 bars; trigger beat 1–8.

10. Future Catch

At a chop event the engine looks ahead by the look-ahead amount, captures that future material, repeats it for the repeat count, then catches the original timeline so the song continues in exact sync — no drift. The main timeline keeps advancing (muted) during the catch and lands precisely at the rejoin point. The original timeline never permanently moves.

If a repeat would spill past the processing end, the smallest necessary time-stretch squeezes it into the available window rather than overflowing. Future Catch is scheduled on the Web Audio clock (ahead of time), not by polling, so timing is sample-accurate and doesn't drift.

Future Catch uses the musical grid (beats/bars/source BPM). It does not require snare or transient detection, so it works on drumless music, vocals, and acapellas too.

11. Chop status

The shared musical clock and waveform playhead display position from the existing audio engine. Chop settings remain in Chop Engine; moving or scrolling the editor viewport does not control transport.

12. Effects Lab

Four effect "flasks", each with an amount knob, an ON/OFF button, and an AUTO toggle:

  • SWIRL — phaser movement (4-stage allpass + slow LFO).
  • TAPE — tape saturation (waveshaper) + wow/flutter (modulated delay). Flutter is a delay modulation, never a playback-rate wobble, so Skrew stays locked.
  • SPACE — wide allpass sweep + delay for an ambient "space" feel.
  • REVERB — the existing convolution reverb send, with Mix, Decay, Pre-delay, Damping / High Cut and Low Cut under REVERB · TONE & SPACE. Lower high cut for a darker tail. Neutral defaults retain the original tonal path.

The amount knob is each effect's dry/wet mix — there is no separate Dry/Wet control. OFF bypasses the effect entirely; the knob with effect OFF does nothing.

The existing 5-band EQ has a frequency/gain graph and bell, shelf, high/low pass, notch and bandpass shapes. RESET BAND restores only the selected band; FLAT restores all bands. HPF/LPF/Notch/Bandpass use frequency and Q, not gain; shelf Q is not used by the underlying filter. EQ and a COMP compressor (threshold/ratio/attack/release/makeup) sit in the last flask. The signal chain order is: input → EQ → compressor → swirl → tape → space → reverb blend → master → limiter → out.

13. Effect modes

  • Manual — you set every amount; nothing automates.
  • Auto All — every enabled effect is randomized, in musical time (every 2 bars).
  • Auto Individual — only effects with their AUTO toggle on are randomized.

Automation is beat/bar-synchronized, not arbitrary milliseconds. It works in preview and render identically (same chain, same settings).

14. Effects + Skrew + Chop

Effects process the main signal after Skrew — changing Skrew does not bypass or disconnect effects. Both the main voice and the Future Catch temporary voice feed the same effects bus, so catches are processed consistently. Preview and render use the identical chain.

15. Master

MASTER volume runs from 0% (silence) to 100% (unity), with MUTE and LIMITER. The existing MASTER, LOW, MID, HIGH and LUFS meters remain in the upper-right area. RESET MASTER restores the project default of 45%, mute off and limiter on.

16. Reset system

A reset row under the transport: SKREW, SMOOTH, CHOP, EFFECTS, REGION, MASTER, and ALL. Each restores both the UI and the engine (the change flows through the same state the engine syncs from). RESET ALL resets all processing (including Smooth → 0%) but keeps the loaded audio and the detected/overridden BPM — it never unloads your song. No reset requires a page refresh.

17. Render & Download

⤓ RENDER bounces the whole processed result to a 16-bit WAV using an offline render that follows the same grid, Skrew region rate steps, Future Catch events, effects, automation, and master as the live preview — so the file matches what you hear. A progress percentage shows during render. When complete, a RENDER COMPLETE card appears with the filename, duration, and format, and a ⤓ DOWNLOAD button. The file is named ProjectName_HSK_ScrewLab.wav.

Render does not auto-download; press DOWNLOAD so you control when the save happens. Download works on desktop and mobile browsers.

18. Mobile / iPhone

The layout stacks vertically on phones; the waveform, transport, chop, effects, and render stay reachable. Knobs respond to finger drag; marker tabs are finger-sized; buttons are touch-sized. One shared AudioContext is resumed from your first Play/Load tap (required by iOS Safari) and is reused — never recreated.

Loading a second song without refreshing: tap LOAD AUDIO, pick the new file. The engine stops playback, cancels every scheduled chop and Future Catch, disconnects the old source, decodes the new file, detects its BPM and grid, rebuilds the scheduler, and initializes fresh Skrew/Chop/Effects/Region/Master — all on the same AudioContext, no page refresh.

The BPM field selects its whole value on tap so you can type to replace it (see Manual BPM).

19. Pattern Mode

PATTERN MODE opens the shared timeline editor: waveform, ruler, playhead, and CHOP, REPEAT, REVERB, SWIRL, TAPE SPACE, REVERSE, TAPE STOP, SCRATCH and EQ lanes. FRONT PAGE returns without discarding edits. Project EQ & REVERB offers the same core sound controls in Pattern.

Double-click an empty lane or use INSERT EVENT to add an event at the playhead. Click an event to select/edit; drag its body to move it, or its right edge to resize it. DELETE SELECTED affects selected unlocked events. SPLIT SELECTED divides duration events; instant chops are not split. LOCK / UNLOCK protects selections from movement and deletion. RESET SELECTED clears overrides without changing event placement.

SNAP is shared between views. NUDGE EVENTS applies the chosen distance only to selected events; AUDIO ALIGN moves only the audio offset. Wheel scrolls lanes vertically; Shift-wheel or the bottom scrollbar travels through time; Ctrl/⌘-wheel and pinch zoom. Hover marks an editor cursor, not the audio playhead. Empty lane dragging pans unless SELECT or DRAW is active.

Ctrl/⌘Z and Ctrl/⌘Shift+Z undo/redo; Ctrl/⌘C/X/V copies/cuts/pastes; Ctrl/⌘D duplicates; Ctrl/⌘Q snaps selected events; Delete removes selections. SAVE PROJECT uses the same account save or project export as the Front Page, preserving alignment, BPM, Skrew, events, effects, EQ, master and editor state.

SETTINGS offers Color Theme 1 (the existing Front Page palette) and Color Theme 2 (the existing Pattern palette) for either view, remembered in this browser. Theme changes never change project audio. FULLSCREEN has an EXIT FULLSCREEN button and Escape exit; mobile uses the available full viewport when native fullscreen is unavailable.

Verification status: these controls are connected to the shared production engine; browser/device interaction and listening checks must still be performed before treating playback and render parity as audio-verified.

20. Troubleshooting

  • Unsupported file: iPhone can't play OGG/FLAC — use MP3/WAV/M4A/AAC. The format list shown is honest per device.
  • BPM looks wrong: a half/double interpretation may be off — press ½× or 2×, type the known BPM, or use TAP BPM to tap along with the song.
  • No sound: press Play (iOS needs the tap to unlock audio); check MASTER isn't muted.
  • Chops not firing: mode is Manual (Auto/Random schedule them), or Future Catch is off, or the playhead is past PROC END.
  • Render problems: very long files take longer; if a render fails, try a shorter clip.
  • Can't load a second song: you should not need to refresh — if it hangs, that's a bug; the engine stops and clears the old source first.