How to record sound using the iPhone microphone

From $1
    Table of contents

    How-to by Jim Bentley, Portland Maine - james.bentley@live.com

    This is a quick tutorial on how to record sound using the iPhone microphone/headset microphone.  There are a lot of possible variables to sound recording - File output types, bit rates, channels are just a few.

    For more information on recording sound and the various formats available, you should see the following page on the AVAudiorecorder class:


    http://developer.apple.com/iphone/library/documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html

    Below is the 'main' class of a quick and dirty application to create sound files (uncompressed PCM Wav Files to be exact) inside the application's tmp directory.

     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using MonoTouch.Foundation;
    using MonoTouch.UIKit;
    using MonoTouch.AudioToolbox;
    using MonoTouch.AVFoundation;
    using System.IO;


    namespace TestRecord
    {
        public class Application
        {
            static void Main (string[] args)
            {
                UIApplication.Main (args);
            }
        }
        
        // The name AppDelegate is referenced in the MainWindow.xib file.
        public partial class AppDelegate : UIApplicationDelegate
        {
            //declare AVAudioRecorder recorder
            public AVAudioRecorder recorder;
           
            // This method is invoked when the application has loaded its UI and its ready to run
            public override bool FinishedLaunching (UIApplication app, NSDictionary options)                
               
            {
                // If you have defined a view, add it here:
                // window.AddSubview (navigationController.View);
               
                window.MakeKeyAndVisible ();
                
            //Record Button Delegate
            recordButton.TouchUpInside += delegate {
                   
                    StartRecording();
                                               
            };
           
            //Stop Button Delegate
            stopButton.TouchUpInside += delegate {
                   
                    StopRecording();    
                   
                };
                       
                return true;
            }
           
            //public void start Recording
            public void StartRecording ()
            {
                NSObject[] values = new NSObject[]
                {    
                    NSNumber.FromFloat(44100.0f),
                    NSNumber.FromInt32((int)AudioFileType.WAVE),
                    NSNumber.FromInt32(1),
                    NSNumber.FromInt32((int)AVAudioQuality.Max)
                };

                NSObject[] keys = new NSObject[]
                {
                    AVAudioSettings.AVSampleRateKey,
                    AVAudioSettings.AVFormatKey,
                    AVAudioSettings.AVNumberOfChannelsKey,
                    AVAudioSettings.AVEncoderAudioQualityKey
                };

                NSDictionary settings = NSDictionary.FromObjectsAndKeys (values, keys);
               
                //Declare string for application temp path and tack on the file extension
                string fileName = testTextField.Text + ".wav";
                string basedir = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), "..");
                string tmpdir = Path.Combine(basedir, "tmp");
                string audioFilePath = Path.Combine(tmpdir, fileName);
                string tempRecording = audioFilePath;
               
               
                Console.WriteLine(audioFilePath);
                NSUrl url = NSUrl.FromFilename(tempRecording);
               
               
                NSError error = new NSError ();
               
                //Set recorder parameters
                recorder = new AVAudioRecorder (url, settings, error);
               
                //Set Metering Enabled so you can get the time of the wav file
                recorder.MeteringEnabled = true;
                
                recorder.PrepareToRecord();            
                recorder.Record();
                                   
            }
        
            //public void stop Recording
            public void StopRecording ()
            {
                recorder.Stop();
               
                 recorder.FinishedRecording += delegate {
                    recorder.Dispose();
                    Console.WriteLine("Done Recording");
                };
               
            }
           
            // This method is required in iPhoneOS 3.0
            public override void OnActivated (UIApplication application)
            {
            }
               
        }
    }

     

    Tag page
    • No tags

    Files (0)

     
    Page last modified 02:55, 17 Feb 2010 by Gdi_Jim