Android Audio effect on wav file and save it
Asked Answered
B

1

8

Requirement

Android open a .wav file in sd card, play it , add some effect (like echo, pitch shift etc), save the file with effect. Simple :(

What I know

  1. I can open and play file using Soundpool or MediaPlayer.
  2. I can give some effect while playing using both. ie for Media Player I can set Environmental Reverb effect. Using SoundPool I can set playing rate, which is kind of like pitch shift. I am successful in implementing these right now.
  3. But either of this classes doesn't have any method to save the played file. So I can only play, I cannot save the music with effect.

What I want to know

  1. Is there any other classes of interest, other than MediaPlayer or SoundPool. Never mind about saving, you just mention the class, I will do the research about saving file with them.
  2. Any 3rd party libraries where I can add effects and save? Happy if it is open source and free. But mention them even if it is proprietary.
  3. Any other areas where I can look into. Does OpenAL support voice filtering along with voice positioning? Will it work with Android?

Ready to do the dirty work. You please lend me the path..

EDIT:

Did some more searching, and come across AudioTrack. But it also won't support saving to a file. So no luck there also..

EDIT

Ok, what if I do it myself? Get raw bytes from a wav file, and work on that. I recorded a wav file using AudioRecord, got a wav file. Is there any resource describing low level audio processing (I mean at the bytes level).

EDIT

Well bounty time is up, and I am giving bounty to the only answer that I got. After 7 days, what I understood is
  1. We can't save what we play using MediaPlayer, AudioTrack etc.
  2. There is no audio processing libraries available to use.
  3. You can get raw wav files, and do the audio processing yourself. The answer gave a good wrapper class for reading/writing wav files. A good java code to read and change pitch of wav files is here.
Boelter answered 22/11, 2012 at 7:13 Comment(9)
You will certainly need to get hold of Byte buffer of processed Audio and write to file.Chrominance
@VipulShah any idea about how to do it?Boelter
May this helps you. I don't know if you can add effects in this way: stealthcopter.com/blog/2010/01/…Parenteral
@viperbone are you sure you linked correctly. I can't open the linkBoelter
Yes, at my place the link works. May you open this and view the third entry: stealthcopter.com/blog/2010/01Parenteral
Hmm strange.. I can't open the new link as well.. might be a firewall issue..Boelter
Is it possible to add effects to live stream coming from the mic?Homochromatic
@Boelter : did you finished add effects after save it. if yes can you share code you will save my life :)Inchoate
@PradeepBishnoi Sorry friend, I have done this around 5 years back. I no longer have access to that code.Boelter
C
5

The WavFile class http://www.labbookpages.co.uk/audio/javaWavFiles.html claims to read and write wav files and allow per-sample manipulation through arrays of sample values. It's certainly reasonably small, 23kbytes total source code.

I did struggle for a while to build an android app with the Wavfile Class included. This turned out to be because both WavFile and ReadExample (from the above link) were intended as standalone java programs, so include a method main(String [] args){}. Eclipse sees this and thinks the Class is a standalone runnable program, and, when I click the run button, tries to execute just the one Class with the java in the development machine, instead of launching the whole app to my phone. When I take care to run the whole app with the little drop-down menu on the run button, I don't have any trouble, and the WavFile Class and examples drop straight in, give zero warnings in the IDE, and work as advertised running on my phone.

Ciscaucasia answered 30/11, 2012 at 21:40 Comment(2)
is it possible to add effects to the live stream coming from the mic?Homochromatic
Sorry, I have no idea.Ciscaucasia

© 2022 - 2024 — McMap. All rights reserved.