@@ -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