I am working on an iPhone application where I want to change the Beats Per Minute (BPM) of the selected song. I am using AVAsset classes for that.
How it can be implemented? Any code help would be appreciated.
I recently started toying with this, what you need to do is use AudioToolbox to read audio data, AudioToolbox allows you to get the data of most popular file types.
Then use something like "SoundTouch" ( just google this, its opensource ), a C++ library that allows you to stretch soundfiles, it even comes with an example that shows you how to do exactly this. Tried it, works on iOS.
You will need AVAssetReader if you want to access iPod songs and you can only test that code with a real world device and not with the simulator as the simulator has no iPod library.
Related
I am working for Music app in that one of the feature is recording user voice and playback the same. So far all things are in control. Yesterday I got a thought and straight away I started Googling, the idea is adding artist names and album image to my recorded audio using AVAudioRecorder, But there is not much success in it.
I also seen AV Foundation Audio Settings Constants to set the AVAudioRecorder settings, failed in this also.
You probably can use an existing audio tagging library, so after creating the file, you can use it to add the required data. I did a quick search and found this libraries:
SonatinaTag: It was made for OSX but it may work for iOS (The project state that has very few external requirements). Not sure if support writing.
TagLib-ObjC: A wrapper for the popular TagLib. Seems to be in development.
TagLib: TagLib, I know is just pure C pain, but maybe is not that hard to use.
Good luck!
I want to record audio that is played by my application in a file. does somebody have any idea to do that? it is also achieved in talking tomcat application.
There are two ways to record and play an audio file on an iPhone:
You could use the standard Core Audio Framework which is provided in Objective-C and C Code.
Or what probably would be easier is using the only in IOS available AVAudio* Classes.
Have a look at the AVAudioRecorder class. Its pretty simple to use and if you google for this class name you will find plenty of example code:
API - AVAudioRecorder
I know that the MediaPickerConroller can be used to access the iPod library, however I'm not sure that it can play two songs at the same time. AVFoundation would allow this, but then how do you get AVFoundation to access the library? Is there an easier way of doing this? Any help appreciated, thanks.
One way - though not exactly an easy way - to play more than one audio files at the same time is to use an Audio Processing Graph. "MixerHost", the example app by Apple, is a good starting point. "AudioGraph" (https://github.com/tkzic/audiograph) has more functionality than you want, but the manual is helpful to understand the basics of audio processing graphs.
The MediaPickerConroller will allow you to select more than one item from the iTunes library. You will have to get the list of URLs from the media picker and connect them to the graph yourself.
I am trying to understand the concept of Beat Detektion and I found that it works on the basis of detecting sound through Microphone. So, my first question is will it not be a disadvantage if i am detecting sound from Microphone? Because when we are using the device it happens that other sound from environment is also there so the actual beat will not produce for sound.
My second question (actually where i got stuck) I found that this Beat Detektion is not able to access iPod Library. Will i be able to play beats if i fetch the song from ipod Library in my app and then i use with beat detektion.
http://www.cubicproductions.com/index.php?option=com_content&view=article&id=67&Itemid=82
http://www.gearslutz.com/board/product-alerts-older-than-2-months/457617-beatdetektor-iphone-app-open-source-algorithm-bpm-detection.html
I will be very thankful if any reference/link other then above provided to understand Beat Detektion more...
Edit 1
I have got the code for the above from this link But this code is in C++ and there it is written that we have to convert the code to XCODE project using CMAKE software. I am somehow able to convert the code to xcode project but then i am only having cpp files then how should i run the program in iphone???
ok I am somehow able to solve my problem with the Apple's sample code : AurioTouch
I have implemented song in that example and produced the beats of the song on the basis of the beats.. In Iphone we can access sound beat using mic only. So aurioTouch uses same for beat detection
Well, I will try best not to make it as a 'I just want the code' question...
I'm recently working on a project which requires some audio signal processing from local music files (e.g. iTunes Library). The whole work includes:
Get the PCM data of an audio file (normally from iTunes library); <--AudioQueue (?)
Write the PCM data to a new file (it seems that Apple does not allow direct modification on music tracks); <--CoreAudio(?)
Do some processing and modification, like filters, manipulators, etc. <-- Will be developed in C++
Play the processed track. <--RemoteIO
The problem is, after going through some blogs and discussions:
http://lists.apple.com/archives/coreaudio-api/2009/Aug/msg00100.html, http://atastypixel.com/blog/using-remoteio-audio-unit/
http://osdir.com/ml/coreaudio-api/2009-08/msg00093.html
as well as the official sample codes, I got a feeling that the CoreAudio SDK allow us to apply audio processing only on voice demos recorded from Mic.
My question is that:
Can I get raw data from iTunes library tracks instead of Mic input?
If the first question is 'No', is there a way to 'fool' the SDK to let it think it is getting data from Mic input, not from iTunes? (I have done some similar 'hacking' stuff in C# before XD)
If the whole processing just doesn't work, can anyone provide some alternative ideas?
Any help will be appreciated. Thank you very much :-)
Thanks.
Just found something really cool yesterday.
From iPhone Media Library to PCM Samples in Dozens of Confounding, Potentially Lossy Steps
(http://www.subfurther.com/blog/?p=1103
And also a class library by MIT:
TSLibraryImport: Objective-C class + sample code for importing files from user's iPod Library in iOS4.
(http://bitbucket.org/artgillespie/tslibraryimport/changeset/a81838f8c78a
Hope they help!
Cheers,
Manca
1) No. Apple does not allow direct access to PCM data of songs. Otherwise you could create music-sharing apps, which is not in Apple's interests.
2) No. Hacking and getting approved is impossible due to Apple's code approval mechanism.
3) The only alternative I could think of is that you have to do the processing part on PC/Mac and then transfer it to the iPhone. Or you would have to store the files in your own applications folder - you should be able to load and process these via CoreAudio.
I know this thread is old but... did this work for you, Manca? And did this app get approved?
EDIT: just discovered the AVAssetReader class, introduced since iOS 4.1, should help