βœ‚οΈ Sample Chopper Pro
MPC-style sampling for the browser β€” Works with any audio source: files, vinyl, or microphone
2
Workflow Modes
22
Pro Features
βœ…
All Phases Complete
+8
Bonus Features

πŸ“‹ Executive Summary

The Sample Chopper Pro upgrade transforms FlowState's sample slicer into a professional-grade sampling workstation. It works for everyone β€” whether you're chopping samples from files you download, or recording directly from a turntable.

πŸ’‘ Key Insight

Vinyl recording is an optional enhancement, not a requirement. All core features work with drag-and-drop files. We're adding hardware recording for users who want it β€” but the Chopper is powerful even without any external gear.

🎯 Two Workflow Paths

The Sample Chopper Pro supports two distinct workflows β€” choose what fits your setup:

πŸ“
File-Based Workflow
Perfect for: Most producers

  • Downloaded samples from Splice, Looperman, etc.
  • Audio files from YouTube converters
  • Samples shared by collaborators
  • Any WAV/MP3/FLAC file on your computer
No hardware needed β€” just drag & drop
πŸŽ™οΈ
Hardware Recording Workflow
Perfect for: Vinyl diggers, live samplers

  • USB turntables (Audio-Technica, Numark)
  • Audio interfaces (Scarlett, Apollo)
  • Cassette decks, CD players
  • Microphones for field recording
Requires USB audio device β€” Phase 1 feature
πŸ”„ Both Workflows β†’ Same Powerful Tools

Once audio is loaded (whether from file or recording), you get the same pro features: pitch shift, reverse, time-stretch, choke groups, BPM detection, groove templates, and WAV export. The source doesn't matter β€” the Chopper treats all audio equally.

πŸ“Š Feature Comparison

How FlowState Sample Chopper compares to professional tools:

Feature FlowState Serato Sample Maschine
Record from turntable βœ… βœ… βœ…
Transient detection βœ… βœ… βœ…
Grid divide βœ… βœ… βœ…
Manual slicing βœ… βœ… βœ…
Pitch shift per slice βœ… βœ… βœ…
Reverse/half-speed βœ… βœ… βœ…
Choke groups (A-D) βœ… βœ… βœ…
Export individual WAVs βœ… βœ… βœ…
Batch export as ZIP βœ… Bonus ❌ βœ…
BPM detection βœ… βœ… βœ…
Time-stretch slices βœ… βœ… βœ…
Swing/groove templates βœ… βœ… βœ…
Slice layering βœ… ❌ βœ…
ADSR Envelope per slice βœ… Bonus ❌ βœ…
Crossfade options βœ… Bonus ❌ βœ…
Warp markers βœ… Bonus ❌ βœ…
Bake FX to export βœ… Bonus βœ… βœ…
Runs in browser βœ… ❌ ❌
AI Producer Assist βœ… Bonus ❌ ❌

πŸ”¬ Research Findings

A specialized research swarm analyzed five key areas before development:

πŸ”Œ
Hardware Integration Specialist
Turntable β†’ Browser connectivity
  • βœ“ USB turntables and audio interfaces work with Web Audio via getUserMedia()
  • βœ“ Device selection possible via enumerateDevices() API
  • βœ“ RIAA equalization handled by hardware phono preamps (no software needed)
  • βœ“ Ground hum mitigated with 80Hz high-pass filter option
  • βœ“ Browser latency 30-50ms acceptable; hardware monitoring recommended
🌐
Web Audio 2025 Technology Researcher
Browser API assessment
  • βœ“ Web Audio API remains the best choice β€” no replacement needed
  • βœ“ AudioWorklet now universal (including Safari iOS 15+)
  • βœ“ WebCodecs emerging but not ready for real-time recording
  • βœ“ 44.1kHz and 48kHz universally supported; 96kHz hardware-dependent
  • βœ“ Safari sampleRate bug exists β€” use ideal not exact constraint
🎨
UX Design Specialist
Audio input selection workflow
  • βœ“ Hybrid approach: Global default + per-track override
  • βœ“ Zero-click workflow for repeat sessions (remembers USB Turntable)
  • βœ“ Auto-detection toast when new audio devices connect
  • βœ“ Peak + RMS meters with -6dBFS target line
  • βœ“ Vinyl sampling flow: Arm β†’ Record β†’ Stop β†’ Chop (4-5 clicks)
πŸ”—
Integration Architect
Recording β†’ Chopper flow
  • βœ“ Recommended: "Send to Chopper" toast (scored 26/30 vs alternatives)
  • βœ“ Record button directly in Chopper (bypass timeline option)
  • βœ“ Add initialAudioUrl prop to SampleChopper component
  • βœ“ Handle long recordings with duration warning (>3 min)
  • βœ“ Future: Context menu on timeline clips β†’ "Send to Chopper"
🎚️
Audio Engineer Specialist
Vinyl recording quality specs
  • βœ“ 48kHz / 24-bit recommended (96kHz for archival)
  • βœ“ Disable all processing: echoCancellation, noiseSuppression, autoGainControl = false
  • βœ“ Target peak: -6dBFS (6dB headroom for transients)
  • βœ“ WAV codec for recording (not Opus) β€” preserve vinyl character
  • βœ“ Optional 20Hz high-pass for subsonic rumble removal

🎚️ Audio Quality Specifications

Voice Mode (Current)

Sample Rate16kHz
ChannelsMono
CodecWebM Opus
echoCancellationtrue
noiseSuppressiontrue
autoGainControltrue

Vinyl Mode (New)

Sample Rate48kHz (96kHz optional)
Bit Depth24-bit
ChannelsStereo
CodecWAV PCM (uncompressed)
echoCancellationfalse βœ“
noiseSuppressionfalse βœ“ (preserve crackle)
autoGainControlfalse βœ“ (preserve dynamics)
Target Peak-6dBFS
Rumble Filter20Hz high-pass (optional)

πŸš€ Implementation Status

βœ… Phase 1: Record Into Chopper
COMPLETE

Vinyl sampling fully implemented

  • βœ“ Record button directly in Chopper UI β€” ChopperRecorder.tsx
  • βœ“ Device selector dropdown β€” DeviceSelector.tsx
  • βœ“ Vinyl Mode preset (disable all processing)
  • βœ“ Live input level meters β€” InputMeter.tsx
  • βœ“ Auto-load into waveform when recording stops
βœ… Phase 2: Slice Manipulation
COMPLETE

MPC-style control implemented

  • βœ“ Pitch shift per slice (+/- 12 semitones) β€” SliceControls.tsx
  • βœ“ Reverse toggle per slice
  • βœ“ Half-speed / double-speed per slice
  • βœ“ Export individual WAVs + Batch ZIP export β€” ExportPanel.tsx
  • βœ“ Choke groups (A, B, C, D) β€” ChokeGroupSelector.tsx
βœ… Phase 3: Time & Groove
COMPLETE

Pro features fully implemented

  • βœ“ BPM detection β€” useBPMDetection.ts
  • βœ“ Time-stretch slices β€” TimeStretchControls.tsx
  • βœ“ Swing/groove templates β€” grooveAmount in store
  • βœ“ Slice layering β€” SliceLayer[] in store
🎁 Bonus Features (Beyond Spec)
+8 EXTRAS

Additional pro features not in original spec

  • βœ“ ADSR Envelope per slice β€” Attack, Decay, Sustain, Release with presets
  • βœ“ Crossfade options β€” Linear, Exponential, Equal-power curves
  • βœ“ Warp markers β€” Non-uniform time-stretching like Ableton
  • βœ“ Bake FX to export β€” Apply pitch/reverse/effects to exported WAVs
  • βœ“ Volume control per slice β€” 0-100% gain
  • βœ“ Pan control per slice β€” L/C/R positioning
  • βœ“ Batch ZIP export β€” Export all slices in one download
  • βœ“ AI Producer Assist context β€” AI knows what panel you're in

🎨 UI Design

Target interface for the upgraded Sample Chopper:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸŽ›οΈ SAMPLE CHOPPER [πŸŽ™οΈ Record] [⬇️ Export All] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Input: [USB Turntable β–Ό] Mode: [Vinyl β–Ό] β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘ -6dB β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆβ–‡β–†β–…β–„β–ƒβ–‚β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆβ–‡β–†β–…β–„β–ƒβ–‚β– [BPM: 94.2] [πŸ” Detect] β”‚ β”‚ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | β”‚ β”‚ β”‚ β”‚ Chop Mode: [🎯 Auto] [πŸ“Š Grid: 8] [βœ‚οΈ Manual] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ SLICE CONTROLS: Selected: Slice 3 β”‚ β”‚ Pitch: [-12 ────●──── +12] Speed: [Β½x] [1x] [2x] β”‚ β”‚ [πŸ”„ Reverse] [Choke: A β–Ό] [⬇️ Export WAV] [πŸ—‘οΈ Delete] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ GROOVE: [None β–Ό] [MPC 54%] [MPC 71%] [Dilla] [SP-1200] [Custom] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” Layer: [+] Add sound to pad β”‚ β”‚ β”‚ 1 β”‚ β”‚ 2 β”‚ β”‚ β–Ά3β—€ β”‚ β”‚ 4 β”‚ Choke Groups: β”‚ β”‚ β”‚ A β”‚ β”‚ A β”‚ β”‚ B β”‚ β”‚ B β”‚ [A] Kicks [B] Snares β”‚ β”‚ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ [C] Hi-hats [D] Other β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ 5 β”‚ β”‚ 6 β”‚ β”‚ 7 β”‚ β”‚ 8 β”‚ [Send to Drum Machine] β”‚ β”‚ β”‚ C β”‚ β”‚ C β”‚ β”‚ D β”‚ β”‚ D β”‚ [Send to Timeline] β”‚ β”‚ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ€– SPARC Development Swarm

Six specialized agents will build the Sample Chopper Pro in parallel:

πŸŽ™οΈ Recording Agent
β€’ Record button in Chopper UI
β€’ Device enumeration & selection
β€’ Vinyl mode constraints
β€’ Live input meters
🎚️ Slice FX Agent
β€’ Per-slice pitch shift
β€’ Reverse toggle
β€’ Playback rate (Β½x, 2x)
β€’ Slice state management
πŸ“¦ Export Agent
β€’ Individual WAV export
β€’ Batch export all slices
β€’ 24-bit/48kHz encoding
β€’ File naming convention
πŸ”‡ Choke Groups Agent
β€’ Choke group logic (A-D)
β€’ Stop others on trigger
β€’ Visual group indicators
β€’ Group assignment UI
⏱️ BPM/Groove Agent
β€’ BPM detection (essentia.js)
β€’ Swing templates (MPC, Dilla)
β€’ Custom groove editor
β€’ Quantize triggers
πŸŽ›οΈ Time-Stretch Agent
β€’ Granular time-stretch
β€’ Length without pitch
β€’ Slice layering
β€’ GrainPlayer integration

πŸ“ File Structure

New and modified files for Sample Chopper Pro:

src/ β”œβ”€β”€ components/ β”‚ └── SampleChopper/ β”‚ β”œβ”€β”€ SampleChopper.tsx # Main component (modify) β”‚ β”œβ”€β”€ ChopperWaveform.tsx # Waveform display (modify) β”‚ β”œβ”€β”€ SlicePads.tsx # Pad grid (modify) β”‚ β”œβ”€β”€ ChopperRecorder.tsx # NEW: Recording UI β”‚ β”œβ”€β”€ SliceControls.tsx # NEW: Pitch/reverse/speed β”‚ β”œβ”€β”€ GrooveSelector.tsx # NEW: Swing templates β”‚ β”œβ”€β”€ DeviceSelector.tsx # NEW: Audio input picker β”‚ └── InputMeter.tsx # NEW: Level meters β”‚ β”œβ”€β”€ hooks/ β”‚ β”œβ”€β”€ useMicrophoneRecording.ts # Modify for vinyl mode β”‚ β”œβ”€β”€ useSlicePlayback.ts # NEW: Per-slice audio β”‚ β”œβ”€β”€ useBPMDetection.ts # NEW: Tempo analysis β”‚ └── useChokeGroups.ts # NEW: Choke logic β”‚ β”œβ”€β”€ stores/ β”‚ └── chopperStore.ts # NEW: Slice state, settings β”‚ β”œβ”€β”€ utils/ β”‚ β”œβ”€β”€ transientDetection.ts # Existing (keep) β”‚ β”œβ”€β”€ grooveTemplates.ts # NEW: MPC/Dilla presets β”‚ └── timeStretch.ts # NEW: Granular stretch β”‚ └── audio/ └── encoders/ └── wavEncoder.ts # Existing (use for export)

πŸ“¦ Technical Dependencies

Feature Technology Status
Device selection navigator.mediaDevices.enumerateDevices() Native API βœ“
Audio recording MediaRecorder + getUserMedia() Already using βœ“
Pitch shift Tone.PitchShift Already using βœ“
Reverse/speed Tone.Player (reverse, playbackRate) Already using βœ“
WAV export wavEncoder.ts Already have βœ“
BPM detection essentia.js or web-audio-beat-detector essentia worker exists βœ“
Time-stretch Tone.GrainPlayer or soundtouch-js Need to add
Groove templates Custom algorithm (offset arrays) Need to build

πŸ“ˆ Success Metrics

⏱️
Time to First Chop
Record β†’ first slice playing
Target: < 10 seconds
πŸ–±οΈ
Click Count
Arm β†’ Record β†’ Chop flow
Target: 4-5 clicks max
πŸ”„
Repeat Sessions
Device remembered between visits
Target: Zero config
πŸ“Š
Audio Quality
Preserve vinyl character
Target: 48kHz/24-bit WAV

πŸ“… Development Timeline

1
Phase 1: Record Into Chopper
1-2 days β€” Device selection, vinyl mode, live meters, auto-load
2
Phase 2: Slice Manipulation
2-3 days β€” Pitch, reverse, speed, export WAVs, choke groups
3
Phase 3: Time & Groove
3-5 days β€” BPM detection, time-stretch, swing templates, layering

πŸ“š Research Documents

Detailed research created by the specialist swarm: