Skip to content

Commit c9bf9a0

Browse files
committed
Rename pitch -> rate
1 parent 5023ff1 commit c9bf9a0

File tree

9 files changed

+22
-20
lines changed

9 files changed

+22
-20
lines changed

CHANGELOG.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
# 29.2.0
1+
# 29.3.0
22

33
## Major
44

55
## Features
6-
- Restore `--audio-normalize` feature.
6+
- Implement actions: `--when-silent`, `--when-normal`.
7+
- Example: `--when-silent speed:2`, `--when-normal rate:1.25`
78

89
## Fixes
9-
- Correct the default codec for WAV files.
10+
- Fix SMPTE timecode parsing for semi-colons.
11+
- Fix high speeds causing crash

src/exports/json.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ func effectToString(act: Action): string =
1010
of actNil: "nil"
1111
of actCut: "cut"
1212
of actSpeed: "speed:" & $act.val
13-
of actPitch: "pitch:" & $act.val
13+
of actRate: "rate:" & $act.val
1414
of actVolume: "volume:" & $act.val
1515

1616
func `%`(self: v1): JsonNode =
@@ -100,7 +100,7 @@ proc exportJsonTl*(tlV3: v3, `export`: string, output: string) =
100100
let effect = tlV3.effects[clip2.effect]
101101
if effect.kind == actCut:
102102
speed = 99999.0
103-
elif effect.kind == actSpeed or effect.kind == actPitch:
103+
elif effect.kind == actSpeed or effect.kind == actRate:
104104
speed = effect.val.float64
105105

106106
chunks.add (clip2.start, clip2.`end`, speed)

src/imports/json.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ proc parseEffect(val: string): Action =
2020
case effectType
2121
of "speed": return Action(kind: actSpeed, val: effectVal)
2222
of "volume": return Action(kind: actVolume, val: effectVal)
23-
of "pitch": return Action(kind: actPitch, val: effectVal)
23+
of "rate": return Action(kind: actRate, val: effectVal)
2424
else: error &"unknown action: {effectType}"
2525

2626
error &"unknown action: {val}"

src/log.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ type
4646
t*: float32 # -99.0 to 0.0, default -8.0
4747

4848
ActionKind* = enum
49-
actNil, actCut, actSpeed, actPitch, actVolume
49+
actNil, actCut, actSpeed, actRate, actVolume
5050

5151
Action* = object
5252
case kind*: ActionKind
5353
of actNil, actCut:
5454
discard
55-
of actSpeed, actPitch, actVolume:
55+
of actSpeed, actRate, actVolume:
5656
val*: float32
5757

5858
func `==`*(a, b: Action): bool =
@@ -61,7 +61,7 @@ func `==`*(a, b: Action): bool =
6161
case a.kind
6262
of actNil, actCut:
6363
return true
64-
of actSpeed, actPitch, actVolume:
64+
of actSpeed, actRate, actVolume:
6565
return a.val == b.val
6666

6767
type mainArgs* = object

src/main.nim

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Options:
4444
speed (val: float)
4545
; Change the speed while preserving pitch.
4646
; val: between (0-99999)
47-
pitch (val: float)
47+
rate (val: float)
4848
; Change the speed by varying pitch.
4949
; val: between [0.2-100]
5050
-ex, --export EXPORT:ATTRS? Choose the export mode.
@@ -276,9 +276,9 @@ proc parseAction(val: string): Action =
276276
if val.startsWith("speed:"):
277277
let val = parseFloat(val[6 ..< val.len])
278278
return Action(kind: actSpeed, val: val)
279-
if val.startsWith("pitch:"):
280-
let val = parseFloat(val[6 ..< val.len])
281-
return Action(kind: actPitch, val: val)
279+
if val.startsWith("rate:"):
280+
let val = parseFloat(val[5 ..< val.len])
281+
return Action(kind: actRate, val: val)
282282
if val.startsWith("volume:"):
283283
let val = parseFloat(val[7 ..< val.len])
284284
return Action(kind: actVolume, val: val)

src/preview.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func allCuts(tl: v3, inLen: int): seq[int] =
6666

6767
for clip in tl.a[0].clips:
6868
let effect = tl.effects[clip.effects]
69-
let speed = (if effect.kind == actSpeed or effect.kind == actPitch: effect.val else: 1.0)
69+
let speed = (if effect.kind in [actSpeed, actRate]: effect.val else: 1.0)
7070
let oldOffset = clip.offset.float64 * speed
7171
clipSpans.add((round(oldOffset), round(oldOffset + clip.dur.float64)))
7272

src/render/audio.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ proc createFilterGraph(effect: Action, sr: int, layout: string): (ptr AVFilterGr
299299
remainingSpeed = remainingSpeed / maxAtempo
300300
if remainingSpeed > 1.0 or remainingSpeed < 1.0:
301301
filters.add &"atempo={remainingSpeed}"
302-
of actPitch:
302+
of actRate:
303303
let clampedSpeed = max(0.2, min(100.0, effect.val))
304304
filters.add &"asetrate={sr}*{clampedSpeed}"
305305
filters.add &"aresample={sr}"
@@ -350,7 +350,7 @@ proc processAudioClip(ef: seq[Action], clip: Clip, data: seq[int16], sourceSr: c
350350
var processedData = data
351351

352352
let effect = ef[clip.effects]
353-
let needsFiltering = effect.kind in [actSpeed, actPitch, actVolume]
353+
let needsFiltering = effect.kind in [actSpeed, actRate, actVolume]
354354

355355
if needsFiltering:
356356
# Data is interleaved: [L, R, L, R, ...] so always stereo
@@ -604,7 +604,7 @@ proc makeAudioFrames(fmt: AVSampleFormat, tl: v3, frameSize: int, layerIndices:
604604
let key = (clip.src[], clip.stream)
605605

606606
let effect = tl.effects[clip.effects]
607-
let speed = (if effect.kind in [actSpeed, actPitch]: effect.val else: 1.0)
607+
let speed = (if effect.kind in [actSpeed, actRate]: effect.val else: 1.0)
608608

609609
if key in samples:
610610
let getter = samples[key]

src/render/video.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ proc makeNewVideoFrames*(output: var OutputContainer, tl: v3, args: mainArgs):
292292
let sourceFramePos = int(round(float(timelinePos) * srcTb.float / tl.tb.float))
293293

294294
let effect = tl.effects[obj.effects]
295-
let speed = (if effect.kind in [actSpeed, actPitch]: effect.val else: 1.0)
295+
let speed = (if effect.kind in [actSpeed, actRate]: effect.val else: 1.0)
296296

297297
let i = int(round(float(sourceFramePos) * speed))
298298
objList.add VideoFrame(index: i, src: obj.src)

src/timeline.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ proc initLinearTimeline*(src: ptr string, tb: AvRational, bg: RGBColor, mi: Medi
115115
for chunk in pseudoChunks:
116116
# Make normal chunks
117117
let speed = (
118-
if chunk[3].kind in [actSpeed, actPitch]: chunk[3].val
118+
if chunk[3].kind in [actSpeed, actRate]: chunk[3].val
119119
elif chunk[3].kind == actCut: 99999.0
120120
else: 1.0
121121
)
@@ -261,7 +261,7 @@ proc toNonLinear2*(src: ptr string, tb: AVRational, bg: RGBColor, mi: MediaInfo,
261261
continue
262262

263263
var speed = 1.0
264-
if effect.kind == actSpeed or effect.kind == actPitch:
264+
if effect.kind == actSpeed or effect.kind == actRate:
265265
speed = effect.val
266266

267267
dur = int64(round(float64(clip2.`end` - clip2.start) / speed))

0 commit comments

Comments
 (0)