I must have just gotten the parameters wrong.  I can create a mono
file.  But I used AudioFormat.CHANNEL_IN_MONO, not
AudioFormat.CHANNEL_CONFIGURATION_MONO.

On May 1, 9:41 am, niko20 <nikolatesl...@yahoo.com> wrote:
> Yes its a bug, sounds like the WAV header is wrong. You'll have to
> hack at that source to fix it..
>
> On Apr 29, 5:51 pm, pac <patty.c...@gmail.com> wrote:
>
>
>
> > I'm developing with Android 2.1 on a Nexus One with firmware 2.1
> > update 1.
>
> > I'm using the RehearsalAudioRecorder class from here:
>
> >http://rehearsalassist.svn.sourceforge.net/viewvc/rehearsalassist/and...
>
> >         public RehearsalAudioRecorder(boolean uncompressed, int audioSource,
> > int sampleRate, int channelConfig,
> >                         int audioFormat)
> >         {
> >                 try
> >                 {
> >                         rUncompressed = uncompressed;
> >                         if (rUncompressed)
> >                         { // RECORDING_UNCOMPRESSED
> >                                 if (audioFormat == 
> > AudioFormat.ENCODING_PCM_16BIT)
> >                                 {
> >                                         bSamples = 16;
> >                                 }
> >                                 else
> >                                 {
> >                                         bSamples = 8;
> >                                 }
>
> >                                 if (channelConfig == 
> > AudioFormat.CHANNEL_CONFIGURATION_MONO)
> >                                 {
> >                                         nChannels = 1;
> >                                 }
> >                                 else
> >                                 {
> >                                         nChannels = 2;
> >                                 }
>
> >                                 aSource = audioSource;
> >                                 sRate   = sampleRate;
> >                                 aFormat = audioFormat;
>
> >                                 framePeriod = sampleRate * TIMER_INTERVAL / 
> > 1000;
> >                                 bufferSize = framePeriod * 2 * bSamples * 
> > nChannels / 8;
> >                                 if (bufferSize < 
> > AudioRecord.getMinBufferSize(sampleRate,
> > channelConfig, audioFormat))
> >                                 { // Check to make sure buffer size is not 
> > smaller than the
> > smallest allowed one
> >                                         bufferSize = 
> > AudioRecord.getMinBufferSize(sampleRate,
> > channelConfig, audioFormat);
>
> >                                         // Set frame period and timer 
> > interval accordingly
> >                                         framePeriod = bufferSize / ( 2 * 
> > bSamples * nChannels / 8 );
> >                                         
> > Log.w(RehearsalAudioRecorder.class.getName(), "Increasing buffer
> > size to " + Integer.toString(bufferSize));
> >                                 }
>
> >                                 aRecorder = new AudioRecord(audioSource, 
> > sampleRate,
> > channelConfig, audioFormat, bufferSize);
> >                                 if (aRecorder.getState() != 
> > AudioRecord.STATE_INITIALIZED)
> >                                         throw new Exception("AudioRecord 
> > initialization failed");
> > //                              
> > aRecorder.setRecordPositionUpdateListener(updateListener);
> >                                 
> > aRecorder.setPositionNotificationPeriod(framePeriod);
> >                         } else
> >                         { // RECORDING_COMPRESSED
> >                                 mRecorder = new MediaRecorder();
> >                                 
> > mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
> >                                 
> > mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
> >                                 
> > mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
> >                         }
> >                         cAmplitude = 0;
> >                         fPath = null;
> >                         state = State.INITIALIZING;
> >                 } catch (Exception e)
> >                 {
> >                         if (e.getMessage() != null)
> >                         {
> >                                 
> > Log.e(RehearsalAudioRecorder.class.getName(), e.getMessage());
> >                         }
> >                         else
> >                         {
> >                                 
> > Log.e(RehearsalAudioRecorder.class.getName(), "Unknown error
> > occurred while initializing recording");
> >                         }
> >                         state = State.ERROR;
> >                 }
> >         }
>
> > Here's how I'm instantiating it:
> >                         RehearsalAudioRecorder recorder = new 
> > RehearsalAudioRecorder(
> >                                                 
> > RehearsalAudioRecorder.RECORDING_UNCOMPRESSED,
> >                                                 
> > MediaRecorder.AudioSource.MIC,
> >                                                 16000,
> >                                                 
> > AudioFormat.CHANNEL_IN_FRONT,
> >                                                 
> > AudioFormat.CHANNEL_CONFIGURATION_MONO);
>
> > I write a .wav file to the SD card.  I specified mono, and I checked
> > that CHANNEL_CONFIGURATION_MONO is indeed set in the AudioRecord
> > object.  But when I try to play the file, it's treated as if it's
> > stereo, and voices sound like chipmunks.  Apparently the header
> > information is wrong.  For instance, I open the .wav file in Audacity,
> > and Audacity says it's stereo.
>
> > Is this a bug?  What can I do?
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com
> > For more options, visit this group 
> > athttp://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group 
> athttp://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to