ich, damit ich eine App zu füllen, die EZAudio Bibliothek verwendet, und es hat Daten vom Mikrofon zu erhalten und speichern sie in Variable (ich habe dies bereits getan):wie Audiobuffer mit Float in Swift
func microphone(microphone: EZMicrophone!,
hasAudioReceived buffer: UnsafeMutablePointer<UnsafeMutablePointer<Float>>,
withBufferSize bufferSize: UInt32,
withNumberOfChannels numberOfChannels: UInt32)
{
let new = (buffer[0].memory)
audioStack.append(new)
}
Wie Sie können sehen, ich bin mit EZMicrophoneDelegate und func oben, um Pufferdaten vom Mikrofon zu erhalten.
Die zukünftige Idee ist, die Werte von WebSocket zu senden und sofort nacheinander zu spielen.
ich das Array wiedergeben möchten, EZOuput und EZOuputDataSource`s Methode:
func output(output: EZOutput!,
shouldFillAudioBufferList audioBufferList: UnsafeMutablePointer<AudioBufferList>,
withNumberOfFrames frames: UInt32,
timestamp: UnsafePointer<AudioTimeStamp>) -> OSStatus
{
if audioStack.count > 0 {
let data = audioBufferList.memory.mBuffers.mData
// "data" = is pointer to mData, that i want to fill with float
// and I have do it here
return noErr
}
Aber die Art der „mdata“ ist UnsafeMutablePointer, und ich weiß nicht, wie es zu füllen, sah ich einige Beispiele in Objective-C wie this, genau diese Zeile:
Float32 *buffer = (Float32 *)audioBufferList->mBuffers[0].mData;
und ich kann leider nicht verstehen, wie ich meinen Float Typen von Array mdata mit Void-Typ in einem schnellen und speichern muß?
Casting wie:
(audioBufferList.memory.mBuffers.mData) as Float = audioStack[0]
versagt ..