<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Indie iPhone Development Blog &#187; sounds</title>
	<atom:link href="http://blog.indieiphonedev.com/tag/sounds/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.indieiphonedev.com</link>
	<description>The musings of an independent iPhone developer</description>
	<lastBuildDate>Mon, 20 Jun 2011 18:48:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to batch change volume of aif files</title>
		<link>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/</link>
		<comments>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 17:42:12 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[iPhone app]]></category>
		<category><![CDATA[sounds]]></category>
		<category><![CDATA[sox]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=265</guid>
		<description><![CDATA[After creating aif files that tells the distance of upto 100 miles in both miles and kilometers (around 50 individual files) I tested the distance announcement while playing music and found that the volume of all my files was too low.  Now I could go in and manually increase the volume on each file &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>After creating aif files that tells the distance of upto 100 miles in both miles and kilometers (around 50 individual files) I tested the distance announcement while playing music and found that the volume of all my files was too low.  Now I could go in and manually increase the volume on each file &#8211; but that would be a bit of a pain and possibly not very consistent.  Besides one of the things computers are good at is doing the same task over and over again.  So I looked for a software solution.  Luckily there is a great open source command line sound manipulation software called &lt;a href=&#8221;http://sox.sourceforge.net/&#8221;&gt;SOX&lt;/a&gt;.  This tool has a function for gain which lets you set the gain of any files in decibels (dB).</p>
<p>To run this program on all files in a folder run the following command from the terminal after copying the sox program to the folder:</p>
<pre class="brush: objc; title: ; notranslate">
for i in *.aif; do ./sox $i ${i%.*}.aiff gain -n 8; done;
</pre>
<p>In the instance above the original files are .aif and they were converted to have the file extension .aiff.  I tried to overwrite the original file &#8211; but that did not work well.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2011%2F01%2F15%2Fhow-to-batch-change-volume-of-aif-files%2F&amp;title=How%20to%20batch%20change%20volume%20of%20aif%20files" id="wpa2a_2"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2011/01/15/how-to-batch-change-volume-of-aif-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using audio services to play alert sound</title>
		<link>http://blog.indieiphonedev.com/2010/03/22/using-audio-services-to-play-alert-sound/</link>
		<comments>http://blog.indieiphonedev.com/2010/03/22/using-audio-services-to-play-alert-sound/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 04:24:36 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iPhone app]]></category>
		<category><![CDATA[objective-C]]></category>
		<category><![CDATA[sounds]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blog.indieiphonedev.com/?p=150</guid>
		<description><![CDATA[Some times it your application may inadvertently quit with out the user meaning to quit your app.  For example people run with the running/GPS app and the iPhone may be in a pocket / arm band / hand where the square button could be pressed unintentionally.  If the app quits while running it will not [...]]]></description>
			<content:encoded><![CDATA[<p>Some times it your application may inadvertently quit with out the user meaning to quit your app.  For example people run with the running/GPS app and the iPhone may be in a pocket / arm band / hand where the square button could be pressed unintentionally.  If the app quits while running it will not collect running data for the rest of the run and the user will be very disappointed.  To avoid this I have setup an alert which will make a sound if the user quits the app while the app is collecting running data.  I was able to find the original apple alert aiff files via Google and I chose to implement the Indigo sound as the alert &#8211; the cricket is not really loud enough to be an alert sound.</p>
<p>By implementing the playback of the sound as an alert sound the sound will be played even on the 1st gen iPod Touch which does not have a speaker.  Alert sounds can also be set to finish playback after the app finishes &#8211; which is an important feature for this use.  I was able to find how to set this property on <a href="http://nagano.monalisa-au.org/?p=721">Nagano&#8217;s blog</a>.  Not sure what most of the page says but the language of Objective C is universal. Remember to add the audiotoolbox to your project.</p>
<pre class="brush: objc; title: ; notranslate">

#include &amp;lt;AudioToolbox/AudioToolbox.h&amp;gt;
</pre>
<p>I then load the sound in the viewDidLoad init function for the view controller where I want to play the sound &#8211; this way you are not trying to load the sound as the app is quitting.  The soundFileObject isa global for this VC.</p>
<pre class="brush: objc; title: ; notranslate">
// SOUNDS
 NSString *path = [[NSBundle mainBundle] pathForResource:@&amp;quot;Indigo&amp;quot; ofType:@&amp;quot;aiff&amp;quot;];
 NSURL *fileURL = [NSURL fileURLWithPath:path];

 OSStatus err;
 err = AudioServicesCreateSystemSoundID((CFURLRef)fileURL, &amp;amp;soundFileObject);
 if(err) {
   DLog(@&amp;quot;AudioServicesCreateSystemSoundID err = %d&amp;quot;,err);
   exit(1);
 }

 UInt32 flag = 1;
 err = AudioServicesSetProperty(kAudioServicesPropertyCompletePlaybackIfAppDies,
     sizeof(UInt32),
     &amp;amp;soundFileObject,
     sizeof(UInt32),
     &amp;amp;flag);
 if(err){
   DLog(@&amp;quot;AudioServicesSetProperty err = %d&amp;quot;,err);
 }
</pre>
<p>Then under viewWillDisappear I have the following:</p>
<pre class="brush: objc; title: ; notranslate">
 if (runActivity.isStarted) {
   // play alert sound if exiting while running
   AudioServicesPlayAlertSound (self.soundFileObject);
 }
</pre>
<p>This way the sound will play if the view is unloading while the user is expecting the app to be collecting data.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.indieiphonedev.com%2F2010%2F03%2F22%2Fusing-audio-services-to-play-alert-sound%2F&amp;title=Using%20audio%20services%20to%20play%20alert%20sound" id="wpa2a_4"><img src="http://blog.indieiphonedev.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.indieiphonedev.com/2010/03/22/using-audio-services-to-play-alert-sound/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

