Thanks to a new feature of iOS 6, I will be adding significantly improved audio visualization features to Tunemark Radio. Specifically, I am referring to Audio Queue taps, which Apple mentions in their iOS 6 SDK release note, but provide no documentation at all, other than comments in the AudioQueue.h file. If you are looking for the technical details, search for AudioQueueProcessingTapCallback in the AudioQueue.h file. I’ll write up a more detailed description of how it can all be used, along with the hooks I added to RadioKit to support it, in a future post.
Anyhow, once you get over the hurdle of the lack of documentation, you can do some pretty nice things with an Audio Queue Tap. It provides a way to get the raw PCM audio right before it is played, perform adjustments to the audio (apply echo effects, etc.) or just monitor the audio for visualizations.
In my case, I’m interested in using it for adding better visualizations to Tunemark Radio. Since Tunemark Radio is playing Internet radio station streams, it is generally dealing with MP3 or AAC audio, which is in a compressed format and short of implementing your own MP3 or AAC decoder, there’s no easy non-CPU intensive method to get actual waveforms. Instead, in the past I had to resort to just querying the audio queue gain (i.e volume) information and do some rudimentary visualizations with that.
Now that I have real-time access to the raw audio waveforms thanks to the Audio Queue tap, I can do more more dynamic and responsive visualizations. The first one I’ll be adding (which will be available in the next upcoming Tunemark Radio update) is a waveform visualizer. It will look something like this, although it’s a lot more engaging when it’s actually moving:
Basically, the waveform will move in time to the music.
Future updates will include more dynamic visualizers that have various visual effects based on different frequency changes (such as part of an image changing based on bass notes and another part changing based on high frequency notes).
Wednesday, November 21, 2012
Saturday, September 15, 2012
RadioKit for iOS 6
A version of the RadioKit SDK is now available with support for XCode 4.5 and iOS 6. If you already have an app using RadioKit and are just looking for the library so you can target the new iPhone 5, the library can be found here:
http://stormyprods.com/Libs/RadioKitLib-XCode4.5.zip
If you would like a full XCode 4.5, iOS 6 demo project, it can be found here:
http://stormyprods.com/Demos/RadioKitARC-4.5-Demo.zip
Full details about the RadioKit SDK can be found here:
http://www.stormyprods.com/products/radiokit.php
Please note: with XCode 4.5, Apple has removed support for armv6 and will only allow builds targeting iOS 4.3 and higher. So, if you still have projects targeting armv6, or want to use XCode 4.4 or lower, you will want to use the older RadioKit library.
Also note that existing apps already using an earlier version of RadioKit will work just fine under iOS 6 as-is. You only need to get this new update if you specifically want to build an app using RadioKit and XCode 4.5.
http://stormyprods.com/Libs/RadioKitLib-XCode4.5.zip
If you would like a full XCode 4.5, iOS 6 demo project, it can be found here:
http://stormyprods.com/Demos/RadioKitARC-4.5-Demo.zip
Full details about the RadioKit SDK can be found here:
http://www.stormyprods.com/products/radiokit.php
Please note: with XCode 4.5, Apple has removed support for armv6 and will only allow builds targeting iOS 4.3 and higher. So, if you still have projects targeting armv6, or want to use XCode 4.4 or lower, you will want to use the older RadioKit library.
Also note that existing apps already using an earlier version of RadioKit will work just fine under iOS 6 as-is. You only need to get this new update if you specifically want to build an app using RadioKit and XCode 4.5.
Friday, July 27, 2012
RadioKit SDK, now with Recording!
I'm happy to announce the RadioKit™ SDK for iOS now includes an API for recording the audio from a stream.
Here's a simple example demonstrating the API’s syntax:
NSString *filename = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp/test.audio"];
[radioKit startRecording:filename appendToFile:NO];
[radioKit setStreamUrl:@“http://enteryourstreamhere.pls” isFile:NO];
And when you want to stop recording:
[radioKit stopRecording];
Then, you can simply play back the saved file at a later time via the RadioKit local-file playback support:
[radioKit playLocalFile:filename];
It’s that simple.
To read more about all the features of the RadioKit SDK and how it greatly simplifies the process of creating a full-featured iOS radio app, check out http://www.stormyprods.com/products/radiokit.php
Monday, March 12, 2012
The 2.2.1 Artificial Life update for iPhone/iPod Touch that was recently released contains a bug which causes the screen to flicker terribly when you have a protozoa selected and you are using a non-retina display device, such as iPhone 3GS or older.
I've located the cause of the problem and it is now pending review with Apple. Hopefully it will be available for download about a week from today.
NOTE: this problem does not occur on the Artificial Life HD (i.e. iPad) version.
Sorry for the inconvenience.
Subscribe to:
Posts (Atom)