Source: https://guthlabs.ai/docs/instruments/semitone-cents-ratio-playback-speed-pitch-time-calculator/

instrument / verified-clean

# Semitone/Cents Ratio ↔ Playback Speed (Pitch/Time) Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/semitone-cents-ratio-playback-speed-pitch-time-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/semitone-cents-ratio-playback-speed-pitch-time-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/semitone-cents-ratio-playback-speed-pitch-time-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/semitone-cents-ratio-playback-speed-pitch-time-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Audio, Music, Photography & Color

**Tranche**: tranche-5

**Evidence ID**: t5-124

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core semitone-to-speed formula is standard and correct, but the catalog entry is incomplete for its stated semitone/cents and bidirectional functionality. Add explicit cents and inverse formulas, define the speed-percentage convention, and enforce speedRatio>0. The honest-label limitation to simple speed-based pitch shifting is appropriate.

### Formula and scope findings

- speedRatio=2^(semitones/12) is correct for equal-tempered, speed-based pitch shifting when semitones are measured relative to the source.

- The stated formula does not directly support cents, despite the instrument name and description. Cents require speedRatio=2^(cents/1200), or semitones=cents/100 before applying the stated formula.

- The vice-versa calculation is not specified. For a positive speed ratio, the inverse is semitones=12*log2(speedRatio) and cents=1200*log2(speedRatio).

- Resulting BPM requires the additional formula resultingBPM=sourceBPM*speedRatio, which is not stated.

- The input specification says semitone shift or speed percentage but does not explicitly define cents as an accepted input.

### Unit assumptions

- One octave equals 12 equal-tempered semitones and 1200 cents.

- A speed percentage is interpreted as percentage change from nominal speed: speedRatio=1+speedPercentage/100. Thus +100% means 2.0x speed, while 150% absolute speed would also mean 1.5x but is a different convention.

- Source BPM is in beats per minute and resulting BPM is sourceBPM multiplied by the speed ratio.

- The formula models turntable, tape, or other speed-based pitch shifting, not independent time-stretching.

- Logarithms in inverse formulas are base 2.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A speed input of -100% produces speedRatio = 0, making the inverse logarithm undefined. The instrument must reject this input or explicitly report an undefined semitone shift.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "semitone_shift": 0,
    "source_bpm": 120
  },
  "expected_outputs": {
    "speed_ratio": 1,
    "speed_percentage": 0,
    "resulting_bpm": 120
  },
  "working": "speedRatio=2^(0/12)=2^0=1. speedPercentage=(1-1)*100=0%. resultingBPM=120*1=120 BPM."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
