Skip to content

Commit cf39334

Browse files
committed
[feat] prepare song for practise
1 parent d2f8dbd commit cf39334

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Sources/ScriptToolkit/FileExtension.swift

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,50 @@ public extension File {
169169
return try File(path: newName)
170170
}
171171

172+
func prepareSongForPractise(outputFolder: Folder) throws {
173+
print(name + ":")
174+
175+
let originalWavFile: File
176+
if let ext = `extension`, ext.lowercased() != "wav" {
177+
print(" Converting to wav")
178+
originalWavFile = try convertToWav(newName: "wav-file.wav")
179+
}
180+
else {
181+
originalWavFile = self
182+
}
183+
184+
print(" Converting to 75% speed")
185+
let file75 = try originalWavFile.slowDownAudio(newName: "tempo-75.wav", percent: 0.75)
186+
print(" Converting to 90% speed")
187+
let file90 = try originalWavFile.slowDownAudio(newName: "tempo-90.wav", percent: 0.9)
188+
189+
print(" Adding initial silence to 75% speed file")
190+
let silencedFile75 = try file75.addSilence(newName: "silence-75.wav")
191+
print(" Adding initial silence to 90% speed file")
192+
let silencedFile90 = try file90.addSilence(newName: "silence-90.wav")
193+
print(" Adding initial silence to 100% speed file")
194+
let silencedFile100 = try originalWavFile.addSilence(newName: "silence-100.wav")
195+
196+
print(" Converting to M4A")
197+
let silencedM4AFile75 = try silencedFile75.convertToM4A(newName: nameExcludingExtension + "@75.m4a")
198+
let silencedM4AFile90 = try silencedFile90.convertToM4A(newName: nameExcludingExtension + "@90.m4a")
199+
let silencedM4AFile100 = try silencedFile100.convertToM4A(newName: nameExcludingExtension + "@100.m4a")
200+
201+
// Move result to output dir
202+
print(" Moving to destination folder")
203+
try silencedM4AFile75.move(to: outputFolder)
204+
try silencedM4AFile90.move(to: outputFolder)
205+
try silencedM4AFile100.move(to: outputFolder)
206+
207+
// Clean up
208+
try originalWavFile.delete()
209+
try file75.delete()
210+
try file90.delete()
211+
try silencedFile75.delete()
212+
try silencedFile90.delete()
213+
try silencedFile100.delete()
214+
}
215+
172216
////////////////////////////////////////////////////////////////////////////////
173217
// MARK: - PDF
174218

0 commit comments

Comments
 (0)