Created
July 23, 2018 13:10
-
-
Save lloydroc/06a765611fb7b1d565cb763d3dc96322 to your computer and use it in GitHub Desktop.
AIFFCreate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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