I was working on a video edit, and came up with a Smalltalk script for Kyma that can export markers and marker times to SRT format, for further editing and importing into software like DaVinci Resolve as subtitles. Maybe its useful for someone at some point…
| times r count s s2 m m2 stream formatted sf padding padding2 padding3 padding4 |
sf := ‘CristianVogel_vs_Myceliyum_BirdsAreGettingLouderMasterMix_1632-01-CUES.wav’.
stream := ‘/Users/cristianvogel/AUDIO DATA/Birds are getting louder/KymaOutput.srt’ asFilename writeStream.
count := 0.
padding :=”. padding2 :=”. padding3 := ”. padding4 := ”.
m := -1. m2 := 0.
times := sf asSamplesFile markersToTimes.
formatted := times collect: [:i |
count := count + 1.
s := (i roundTo: 1) removeUnits mod: 60.
s2 := (s + 3) mod: 60.
(s = 0) ifTrue: [ m:=m+1 ].
(s2 = 0) ifTrue: [ m2 := m2 + 1].
(s < 10) ifTrue: [ padding := ‘0’] ifFalse: [ padding := ” ].
(m < 10) ifTrue: [ padding2 := ‘0’] ifFalse: [ padding2 := ” ].
(m2 < 10) ifTrue: [ padding3 := ‘0’] ifFalse: [ padding3 := ” ].
(s2 < 10) ifTrue: [ padding4 := ‘0’] ifFalse: [ padding4 := ” ].
r := ‘\’& count &’\’&’01:’&padding2&m&’:’ &padding&s
&’,000 –> ‘
&’01:’&padding3&m2&’:’ &padding4&s2&’,000\’&’ \’.
r withCRs
].
stream nextPutAll: formatted printString.
stream flush.
stream close.
A valid SRT file looks like this…
1
01:01:01,000 –> 01:01:03,000
Text
2
01:01:04,000 –> 01:01:06,000
Text
3
01:01:07,000 –> 01:01:09,000
Text
4
01:01:10,000 –> 01:01:12,000
Text
5
01:01:13,000 –> 01:01:15,000
Text