π 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.
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:
- Downloaded samples from Splice, Looperman, etc.
- Audio files from YouTube converters
- Samples shared by collaborators
- Any WAV/MP3/FLAC file on your computer
- USB turntables (Audio-Technica, Numark)
- Audio interfaces (Scarlett, Apollo)
- Cassette decks, CD players
- Microphones for field recording
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:
- β 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 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
idealnotexactconstraint
- β 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)
- β Recommended: "Send to Chopper" toast (scored 26/30 vs alternatives)
- β Record button directly in Chopper (bypass timeline option)
- β Add
initialAudioUrlprop to SampleChopper component - β Handle long recordings with duration warning (>3 min)
- β Future: Context menu on timeline clips β "Send to Chopper"
- β 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 Rate | 16kHz |
|---|---|
| Channels | Mono |
| Codec | WebM Opus |
| echoCancellation | true |
| noiseSuppression | true |
| autoGainControl | true |
Vinyl Mode (New)
| Sample Rate | 48kHz (96kHz optional) |
|---|---|
| Bit Depth | 24-bit |
| Channels | Stereo |
| Codec | WAV PCM (uncompressed) |
| echoCancellation | false β |
| noiseSuppression | false β (preserve crackle) |
| autoGainControl | false β (preserve dynamics) |
| Target Peak | -6dBFS |
| Rumble Filter | 20Hz high-pass (optional) |
π Implementation Status
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
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
Pro features fully implemented
- β BPM detection β
useBPMDetection.ts - β Time-stretch slices β
TimeStretchControls.tsx - β Swing/groove templates β
grooveAmountin store - β Slice layering β
SliceLayer[]in store
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:
π€ SPARC Development Swarm
Six specialized agents will build the Sample Chopper Pro in parallel:
β’ Device enumeration & selection
β’ Vinyl mode constraints
β’ Live input meters
β’ Reverse toggle
β’ Playback rate (Β½x, 2x)
β’ Slice state management
β’ Batch export all slices
β’ 24-bit/48kHz encoding
β’ File naming convention
β’ Stop others on trigger
β’ Visual group indicators
β’ Group assignment UI
β’ Swing templates (MPC, Dilla)
β’ Custom groove editor
β’ Quantize triggers
β’ Length without pitch
β’ Slice layering
β’ GrainPlayer integration
π File Structure
New and modified files for Sample Chopper Pro:
π¦ 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
π Development Timeline
π Research Documents
Detailed research created by the specialist swarm:
- π
/docs/web-audio-technology-research-2025.mdβ Full Web Audio API assessment - π
/docs/browser-compatibility-matrix.mdβ Browser support tables - π
/docs/ux-research-audio-input-selection.mdβ UX design patterns