В настоящее время я использую FDWaveFormView , чтобы с большим успехом отображать сигналы, представляющие звук, который я записываю с AKMicrophone
или AKAudioFile
.
Я успешно могу выделить определенные области в форме сигнала, а FDwaveForm
возвращает диапазон выборок из аудиофайла.
Моя проблема сейчас в том, что я не могу найти подходящий метод в AKPlayer
, который позволил бы мне играть от начального семпла до конечного семпла.
Я заметил, что AKSamplePlayer
теперь устарел, но у него есть метод: play(from: Sample, to: Sample)
Я предполагаю, что я мог бы сделать некоторую математику, чтобы перевести Положение образца во время (как Double
, как предписано в AKPlayer
), однако я не нашел подходящей математики или функций для этого, любой намеки?
Чтобы быть очень четким в том, что я пытаюсь сделать, пожалуйста, обратитесь к изображению ниже:
![How to get AKPlayer to play from start and end samples](https://i.stack.imgur.com/gTGaS.png)
примечание для всех основных членов AudioKit, которые могут видеть этот вопрос, я знаю, что существует множество компонентов AudioKitUI, которые могут сделать это проще, однако только FDWaveFormView
дал мне функциональность, которая мне нужна для Это конкретное приложение, я рад обсудить его в автономном режиме, еще раз большое спасибо.
EDIT
Я придумал какой-то код, который, как мне кажется, решил его:
let startingSampleIndex = self.waveformPlot.highlightedSamples!.min()
let endingSampleIndex = self.waveformPlot.highlightedSamples!.max()
let millisecondsPerSample : Double = 1000 / 44100
let startingDuration : Double = (startingSampleIndex! * millisecondsPerSample) / 1000
let endingDuration : Double = (endingSampleIndex! * millisecondsPerSample) / 1000
print("StartSample:\(startingSampleIndex!) | EndSample:\(endingSampleIndex!) | milliPerSample:\(millisecondsPerSample) | StartDuration:\(startingDuration) | EndDuration:\(endingDuration)")
player.play(from: startingDuration, to: endingDuration)
Основное уравнение: numberOfSamples * millisecondsPerSample = timeInMilliseconds
путем деления на 1000, я могу нормализовать все до секунд, чего и хочет AKPlayer
. Если кто-то видит здесь что-то проблематичное, я бы с радостью посоветовался, но, думаю, это удалось! Извините, я все еще новичок в DSP и так благодарен за то, что AudioKit - невероятный Шепард в этом мире!