Skip to content

Instantly share code, notes, and snippets.

@lloydroc
Created July 23, 2018 13:10
Show Gist options
  • Save lloydroc/06a765611fb7b1d565cb763d3dc96322 to your computer and use it in GitHub Desktop.
Save lloydroc/06a765611fb7b1d565cb763d3dc96322 to your computer and use it in GitHub Desktop.
AIFFCreate
import Cocoa
import AudioToolbox
import CoreAudio
let fileType = kAudioFileAIFFType;
let sampleRate = 44100.0;
var pcm = AudioStreamBasicDescription(mSampleRate: sampleRate,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger,
mBytesPerPacket: 2,
mFramesPerPacket: 1,
mBytesPerFrame: 2,
mChannelsPerFrame: 1,
mBitsPerChannel: 16,
mReserved: 0)
var fileId:AudioFileID?;
let audioFileUrl = NSURL(fileURLWithPath: "/Users/lloyd/macOS/audiofilecrud.playground/hello.aiff", isDirectory: false)
var code:OSStatus = AudioFileCreateWithURL(audioFileUrl,
fileType,
&pcm,
.eraseFile,
&fileId)
func printError(result:OSStatus) {
switch(result) {
case kAudioFileUnspecifiedError:
print("kAudioFileUnspecifiedError")
case kAudioFileUnsupportedFileTypeError:
print("kAudioFileUnsupportedFileTypeError")
case kAudioFileUnsupportedDataFormatError:
print("kAudioFileUnsupportedDataFormatError")
case kAudioFileUnsupportedPropertyError:
print("kAudioFileUnsupportedPropertyError")
case kAudioFileBadPropertySizeError:
print("kAudioFileBadPropertySizeError")
case kAudioFilePermissionsError:
print("kAudioFilePermissionsError")
case kAudioFileNotOptimizedError:
print("kAudioFileNotOptimizedError")
case kAudioFileInvalidChunkError:
print("kAudioFileInvalidChunkError")
case kAudioFileDoesNotAllow64BitDataSizeError:
print("kAudioFileDoesNotAllow64BitDataSizeError")
case kAudioFileInvalidPacketOffsetError:
print("kAudioFileInvalidPacketOffsetError")
case kAudioFileInvalidFileError:
print("kAudioFileInvalidFileError")
case kAudioFileOperationNotSupportedError:
print("kAudioFileOperationNotSupportedError")
case kAudioFileNotOpenError:
print("kAudioFileNotOpenError")
case kAudioFileEndOfFileError:
print("kAudioFileEndOfFileError")
case kAudioFilePositionError:
print("kAudioFilePositionError")
case kAudioFileFileNotFoundError:
print("kAudioFileFileNotFoundError")
default:
print("unknown error")
}
}
if(code>0) {
printError(result:code);
}
let duration = 3.0;
let numSamples = UInt32(sampleRate*duration);
var numBytes = 2*numSamples;
var buffer:[UInt32] = []
for index in 0...numSamples {
let arg = 2.0*Double.pi*Double(index)/Double(numSamples);
let samp = 255*sin(arg);
buffer.append(UInt32(samp));
}
code = AudioFileWriteBytes(fileId!, false, 0, &numBytes, buffer)
if(code>0) {
printError(result:code);
}
AudioFileClose(fileId!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment