Skip to content

MIXI-CUT Protocol Specification v0.3.0

Overview

MIXI-CUT is an open-source timecode protocol for DVS (Digital Vinyl System) vinyl, designed from scratch for artisanal lathe cutting. Not reverse-engineered from Serato or Traktor.

v0.3.0 is optimized for EDM (100-200 BPM) with DJ resilience features: Barker-13 sync word, CRC-16 fast-reject, multi-rate encoding, velocity subcarrier, vinyl brake detection, tonearm bounce recovery, PLL integral drain, and low-speed dead zone. Validated with 1000+ Monte Carlo tonearm bounce simulations.

Signal Design

Carrier: Stereo Quadrature at 3000 Hz

  • Left channel: sin(2 * pi * 3000 * t)
  • Right channel: cos(2 * pi * 3000 * t)
  • Amplitude: -1.4 dBFS (0.85 linear)

The 90-degree phase offset provides:

  • Instantaneous direction detection without waiting for a full cycle
  • 2.5x spatial resolution vs Serato's 1 kHz mono
  • 0 ms PLL re-lock after needle skip — validated across 1000 tonearm bounce scenarios

Why 3 kHz: high enough to triple resolution vs legacy systems, low enough to survive vinyl wear, dust, and cheap phono preamps. At 33 1/3 RPM, one groove revolution at the inner radius (~60mm) contains ~5400 cycles.

Position Encoding: Missing Cycle Modulation

Every 50 carrier cycles (~16.7 ms), one cycle's amplitude is modulated to encode a bit:

  • Bit 0: Full amplitude (no change)
  • Bit 1: Amplitude reduced to 25% via raised-cosine envelope
Parameterv1v0.1/v0.2Why
Position bits16 (max 655s)24 (max 167772s)v1 overflowed at 10:55
Cycle interval100 cycles50 cycles2x denser, faster lock
Frame period1.6s0.93sPosition acquired in < 1s
Transition shapeHard cutRaised cosineNo spectral splatter
RS parity4 bytes4 bytesSufficient for 50ms dropout

Position Frame Format (v0.3)

[13-bit Barker-13 sync][24-bit position][16-bit CRC-16][32-bit RS parity]
  • 13-bit Barker sync: Frame preamble with sidelobe ≤ 1/13 for fast acquisition
  • 24-bit position: Centisecond resolution (0.01s), range 0-167772s
  • 16-bit CRC-16: Fast-reject of corrupted frames (CRC-16/ARC, init=0xFFFF)
  • 32-bit Reed-Solomon parity: 4 parity bytes (GF(2^8), poly 0x11D)
  • Total: 85 bits per frame, 4250 carrier cycles (1.417 seconds)
Parameterv0.1v0.2v0.3Why
Position bits16242446 hours range
Cycle interval10050502x denser
Sync wordBarker-13Fast acquisition <500ms
CRCCRC-16O(1) frame rejection
Frame period1.6s0.93s1.42sRoom for sync+CRC
Inner grooveNormalNormal2x denseBetter SNR compensation
Velocity channel500 Hz AMBypasses mass-spring lag

Multi-Rate Encoding (v0.3)

Frame density varies by position to compensate for groove velocity:

  • Outer groove (0-300s): Normal rate — 1 frame / 1.417s
  • Inner groove (>300s): Double rate — 1 frame / 0.708s

Rationale: inner groove has lower linear velocity → lower SNR → needs more redundancy.

Velocity Subcarrier (v0.3)

A 500 Hz AM-modulated envelope on the carrier encodes instantaneous speed:

  • At speed=1.0x: No modulation (envelope = 1.0)
  • At speed≠1.0x: ±15% amplitude modulation at 500 Hz
  • Decoder can extract speed from the envelope without waiting for mass-spring

Lead-in / Lead-out

RegionDurationPurpose
Lead-in2.0sDigital silence for safe needle placement
Fade-in10msQuadratic ramp (no click)
Signalconfigurable (8/10/12/15 min)Timecode carrier + position encoding
Fade-out10msQuadratic ramp (no click)
Lead-out1.0sRun-out groove protection

Loop Mode (Locked Groove)

With --loop flag, signal duration is snapped to an exact number of carrier cycles so the last sample's phase connects seamlessly to the first. This enables locked-groove cutting where the stylus loops infinitely without phase discontinuity.

Phase error: 0.0000 degrees (verified).

File Format

mixi_timecode_v2.wav
  Duration:    ~903s (15 min signal + 3s silence)
  Sample rate: 44100 Hz
  Bit depth:   16-bit PCM
  Channels:    2 (stereo)
  Level:       -1.4 dBFS peak
  DC offset:   removed (< 0.001)

Decoder Architecture (v0.2)

The reference decoder uses a 3-stage pipeline with v0.2 DJ resilience features:

Stage 1: Bandpass Filter

Biquad centered at 3 kHz, Q=2.5. Rejects rumble, hum (50/60 Hz), and hiss.

Stage 2: PLL Demodulator

  • Bandwidth: 8% of carrier (240 Hz)
  • PI ratio: kp/ki ~ 20:1
  • Amplitude gate: PLL coasts on silence (< -46 dBFS)
  • Lock detection: EMA of cos(phase_error), tau = 50 ms
  • v0.2: Integral drain — 2%/sample decay when unlocked, prevents bias accumulation during needle drops for faster re-lock

Stage 3: Mass-Spring-Damper Filter

Simulates Technics SL-1200 platter physics:

  • Normal play: inertia=0.95, traction=0.05 — absorbs wow/flutter
  • Scratch detected (delta > 0.3): instant snap to vinyl speed
  • Spinback detected (speed < -2.0x for > 230ms): triggers digital FX
  • v0.2: Adaptive stop — 10x traction when vinyl near-stopped (stop response: 3ms vs 2003ms in v2)
  • v0.2: Vinyl brake detection — gradual deceleration triggers responsive tracking
  • v0.2: Low-speed dead zone — snaps to 0.0 below 2% speed (prevents PLL noise oscillation)
  • v0.2: Signal-aware pipeline — feeds 0.0 to mass-spring when signal disappears (prevents PLL coast drift)

Tonearm Bounce Physics (v0.2)

The protocol is validated against a physics model of the SL-1200 MK2-7 tonearm:

Physical Model

  • Effective mass: ~18-22g (with DJ cartridge)
  • Tracking force: 2-5g (DJ use range)
  • Coefficient of restitution: 0.2-0.6 (vinyl surface)
  • Gravity: 9.81 m/s^2
  • Groove spacing: 200 lines/inch

Bounce Sequence

  1. Normal play at 1.0x
  2. External shock causes skip (bass, bump, DJ pinky nudge)
  3. Stylus leaves groove — zero signal (free-fall airtime)
  4. Landing impact — impulse spike
  5. Brief groove contact (partial/distorted signal)
  6. Re-bounce with lower amplitude (energy loss per bounce)
  7. Repeat 2-6 times with decaying height
  8. Settle into new groove at different absolute position

Skating Bias

90% of skips are inward (toward center) due to the tangential force of the groove on the stylus. This matches real-world observations where skating force biases the tonearm toward the center.

Validated Scenarios

ScenarioGrooves SkippedPosition JumpBouncesRecovery
Gentle bump23.6s20ms
Kick drum skip59.0s30ms
Table bump1527.0s40ms
Dancer crash4072.0s40ms
1cm skip80144.0s50ms
Catastrophic200360.0s60ms
DJ pinky nudge35.4s20ms
Dirty vinyl11.8s60ms
Worn stylus1018.0s50ms

Monte Carlo Results (1000 random scenarios)

MetricResult
P50 recovery0 ms
P95 recovery0 ms
P99 recovery0 ms
Success rate100.0%
Skating inward P950 ms
Skating outward P950 ms

RIAA Compensation

Generate with --riaa for PHONO input. v0.2 uses cascaded IIR sections (constant memory). Alternatively, use LINE input (RIAA bypass).

Lathe Cutting Parameters

ParameterValueNotes
Speed33 1/3 RPMStandard DJ turntable
Groove spacing200 lines/inchWider than music vinyl
Level+3 dB above nominalCompensates artisanal noise floor
Duration per side4-7.5 min8-15 min available
MaterialPVC / polycarbonateLathe cut compatible
Inner radius> 60 mmBelow this, groove velocity too low

Comparison

FeatureSerato CV02.5Traktor MK2MIXI-CUT v0.3
Frequency1.0 kHz2.5 kHz3.0 kHz
ChannelsMonoMonoStereo quadrature
Position bitsPSKPSK24-bit + CRC-16 + RS(4)
Sync wordUnknownUnknownBarker-13
Frame period~2s~1.5s1.42s (0.71s inner)
Scratch resolution~1.0 ms~0.4 ms~0.33 ms
Velocity channelNoNo500 Hz AM subcarrier
Skip recovery~500 ms~300 ms0 ms
Tonearm bounceNot testedNot tested1000 MC, 100% pass
Stop responseUnknownUnknown3 ms
Noise toleranceUnknownUnknownSNR = -24 dB
ADC bits16-bit16-bit4-bit minimum
Hum rejectionUnknownUnknown+6 dB immune
Channel crosstalkUnknownUnknown70% tolerated
Beat drift (64 bars)UnknownUnknown< 1.2 ms
Loop modeNoNoPhase-continuous
Multi-rateNoNo2x inner groove
DC offsetUncontrolledUncontrolledRemoved
Lead-inNoneNone2s silence
LicenseProprietaryProprietaryMIT
Vinyl cost~40 EUR~40 EUR~8 EUR (lathe cut)

License

MIT. No DRM, no vendor lock-in, free forever.

Released under the MIT License.