[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

[coco8] Recording Audio from Bluetooth mic

This chunks of code are examples of simple audio recording on iOS devices using bluetooth mic.

Set Audio Session

"Set current session for audio play and recording"
| session |
session := AVAudioSession sharedInstance.
session setCategory: #AVAudioSessionCategoryPlayAndRecord
	withOptions: 4 error: nil.
session	setMode: #AVAudioSessionModeDefault error: nil.
session setActive: true error: nil.


Get available audio inputs

| session inputs |
session := AVAudioSession sharedInstance.
inputs := (session availableInputs
 asArrayOf: AVAudioSessionPortDescription)
 collect: [:each| each portName -> each portType ].
inputs asLiteral


Get current audio source

| session port |
session := AVAudioSession sharedInstance.
port := (session currentRoute inputs
 asArrayOf: AVAudioSessionPortDescription) first
 "portType"portName
 toString


Initializing a recorder to save audio in a file

| url settings recorder pError pathName |
pError := # #outArgument.
pathName := '*record.m4a' asLocalPathName.
#audio outputToFile: pathName. "the destination file must exist"
url := NSURL withPath: pathName.
settings := #AVFormatIDKey -> 16r61616320 "'aac ' = kAudioFormatMPEG4AAC"
	,(#AVSampleRateKey -> 44100) "44100 Hz"
	,(#AVNumberOfChannelsKey -> 1)
	,(#AVEncoderAudioQualityKey -> 16r7F000002). "AVAudioQualityHigh"
recorder := AVAudioRecorder
	withURL: url
	settings: settings
	error: pError.

R := recorder.


Prepare and start recoding

R prepareToRecord; record.


Stop recoding

R stop


Reading the audio contents

self note: 'Size of audio file =' ,'*record.m4a' fileContents size ,'bytes.' 


Clean the globals we have used in this page

 Smalltalk removeKey: #R ifAbsent: [].