<?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>Trnsfrmr &#187; Apple</title>
	<atom:link href="http://trnsfrmr.com/tag/apple/feed/" rel="self" type="application/rss+xml" />
	<link>http://trnsfrmr.com</link>
	<description>only fools &#38; horses work.</description>
	<lastBuildDate>Tue, 24 Aug 2010 14:48:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Mac Pro Noise Culprit x1900Xt Dust.</title>
		<link>http://trnsfrmr.com/2010/02/13/mac-pro-noise-culprit-x1900xt-dust/</link>
		<comments>http://trnsfrmr.com/2010/02/13/mac-pro-noise-culprit-x1900xt-dust/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 03:06:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=172</guid>
		<description><![CDATA[So it turns out all the fan noise that has been driving me nuts for the last couple of months was caused by dust clogging the vents on my ATI X1900XT.  It took more than a few squirts from the compressed air can to get the card sorted. I&#8217;m I cheap or is$6.99 a bit [...]]]></description>
			<content:encoded><![CDATA[<p>So it turns out all the fan noise that has been driving me nuts for the last couple of months was caused by dust clogging the vents on my ATI X1900XT.  It took more than a few squirts from the compressed air can to get the card sorted. I&#8217;m I cheap or is$6.99 a bit much for a can of air? I ended up spending $4.99 in target on a can that went tepid before i was even done dusting the graphics card.</p>
<p>Update:</p>
<p>It turns out these cans do not contain air but hydroflurocarbons which are heavily taxed ozone depleting gases.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/en/thumb/9/95/Aliphatic_Fluorocarbon.jpg/325px-Aliphatic_Fluorocarbon.jpg" alt="" /></p>
<p>&#8220;In Europe 10 % of all electricity used by industry is used to produce compressed air. This amounts to 80 <a title="Terawatt hour" href="/wiki/Terawatt_hour">terawatt hours</a> per year.<sup><a href="#cite_note-0">[1]</a></sup><sup><a href="#cite_note-1">[2]</a>&#8220;</sup></p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/02/13/mac-pro-noise-culprit-x1900xt-dust/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Who needs flash?</title>
		<link>http://trnsfrmr.com/2010/01/29/who-needs-flash/</link>
		<comments>http://trnsfrmr.com/2010/01/29/who-needs-flash/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 23:36:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gizmo]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=164</guid>
		<description><![CDATA[Who needs flash? If you read the engadget &#38; gizmodo forums, you would think flash is the oxygen of the interwebnet and the iPad&#8217;s lack of support was some sort of digital sacrilege. There are other voices in the blogosphere though and they chime a resounding NO to flash. Vimeo &#38; Youtube both offer their [...]]]></description>
			<content:encoded><![CDATA[<p>Who needs flash? If you read the engadget &amp; gizmodo forums, you would think flash is the oxygen of the interwebnet and the iPad&#8217;s lack of support was some sort of digital sacrilege. There are other voices in the blogosphere though and they chime a resounding NO to flash. Vimeo &amp; Youtube both offer their videos using HTLM5, hulu doesn&#8217;t but is turning into a paid service anyway so Horton doesn&#8217;t give a hoot.</p>
<p>Read the comments section for yourself. <a title="No To flash" href="http://blogs.adobe.com/flashplatform/2010/01/apples_ipad_--_a_broken_link.html">http://blogs.adobe.com/flashplatform/2010/01/apples_ipad_&#8211;_a_broken_link.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/01/29/who-needs-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who needs multitasking!</title>
		<link>http://trnsfrmr.com/2010/01/29/162/</link>
		<comments>http://trnsfrmr.com/2010/01/29/162/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 18:13:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gizmo]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=162</guid>
		<description><![CDATA[Enough clamoring for multitasking already! What most people care about is fast application switching. Most people can only handle iTunes plus another app simultaneously and the iPad delivers on that front. Guess what else doesn&#8217;t multitask? Nikon D9000KZX w/ 1.0 &#8211; 9000 VR zoom lens. Playstation 3. Steinway Piano. In car navigation system. Xbox 360 [...]]]></description>
			<content:encoded><![CDATA[<p>Enough clamoring for multitasking already!</p>
<p>What most people care about is fast application switching. Most people can only handle iTunes plus another app simultaneously and the iPad delivers on that front.</p>
<p>Guess what else doesn&#8217;t multitask?</p>
<ol>
<li>Nikon D9000KZX w/ 1.0 &#8211; 9000 VR zoom lens.</li>
<li>Playstation 3.</li>
<li>Steinway Piano.</li>
<li>In car navigation system.</li>
<li>Xbox 360 elite.</li>
<li>Desk Lamps.</li>
<li>Nintento Wii/DS.</li>
<li>Movie Theatre. (Don&#8217;t count eating popcorn. We both know you aren&#8217;t kissing anyone nerdlinger).</li>
<li>TVs(If you count the lame widgets, I&#8217;ll count the iPad&#8217;s clock)</li>
<li>Even the Batmobile wasn&#8217;t a tank and a bike at the same time. The bat dude had to switch modes!!!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/01/29/162/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iPad is a winner!!!</title>
		<link>http://trnsfrmr.com/2010/01/28/ipad-is-a-winner/</link>
		<comments>http://trnsfrmr.com/2010/01/28/ipad-is-a-winner/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 06:22:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gizmo]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=160</guid>
		<description><![CDATA[All you whiners on gizmodo and engadget, please use your imagination people!!! The iPad isn’t here to help you do things the same old way. You need to use your imagination a tad bit to appreciate it. I think its greatest attribute is the fact that it makes computing a lot more casual. One also [...]]]></description>
			<content:encoded><![CDATA[<p>All you whiners on gizmodo and engadget, please use your imagination people!!!</p>
<p>The iPad isn’t here to help you do things the same old way. You need to use your imagination a tad bit to appreciate it. I think its greatest attribute is the fact that it makes computing a lot more casual. One also has to understand that at the moment, it is a blank canvas but by the time it hits the shelves, there will be utterly brilliant software available for it.</p>
<p>Imagine reading to your 4 year old as s/he sits on your lap? Oh look thats a liger, lets click it to hear what sound it makes. Now dear, circle the the odd elephant out of these 3. Ok now lets play a game of tic tac toe and then watch yo gabba gabba. You cannot do any of that on a netbook.</p>
<p>I reckon anytime you need to read, surf, play a game, review a document or watch a movie without being tethered to a desk or one of those victorian pillow + miniature desk combos, the iPad will trounce a netbook.  So think train, plane, airport, bathroom, armchair, bed, coffee shop, exercise bike.</p>
<p>Also imagine the following:</p>
<p>A waiter coming up to you in a restaurant and showing you the specials on an iPad. Just wouldn’t be the same on a dell mini.  A presenter reading prepared speeches from an iPad rather than a netbook.</p>
<p>A car sales person checking availability, showing options and working out finance rates right away from the desk.  How about a real estate agent giving a tour of a house? She can dump all the paper in her car and walk in with just an iPad. Oh you want to me to verify the property taxes? Ok, I’ll make a note of that. Let me show you this new listing that has the kind of kitchen you are looking for right on Witherspoon.</p>
<p>The lack of multi-tasking isn’t a hindrance in any of these use cases. I’m getting one of these the day they are made available. I’ll hand it down to my kids when the 3rd generation comes out and get that as well.</p>
<div><span style="font-family: helvetica, arial, sans-serif; color: #333333; font-size: medium;"><span style="line-height: 21px; white-space: pre-wrap;"><br />
</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/01/28/ipad-is-a-winner/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Getting started with CoreMidi</title>
		<link>http://trnsfrmr.com/2009/01/12/getting-started-with-coremidi/</link>
		<comments>http://trnsfrmr.com/2009/01/12/getting-started-with-coremidi/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 04:35:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[CoreFoundation]]></category>
		<category><![CDATA[CoreMidi]]></category>
		<category><![CDATA[MIDI]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/blog/?p=113</guid>
		<description><![CDATA[So I finally started on Octopussy. I&#8217;ve always found CoreMidi and procedural APIs in general a bit puzzling so I thought I would start with the simplest of tasks to help me demystify it all. My goal was simply to send a MIDI note on message from the Mac to the blofeld. After perusing MIDIService.h, [...]]]></description>
			<content:encoded><![CDATA[<p>So I finally started on <a href="/blog/octopussy">Octopussy</a>. I&#8217;ve always found CoreMidi and procedural APIs in general a bit puzzling so I thought I would start with the simplest of tasks to help me demystify it all. My goal was simply to send a MIDI note on message from the Mac to the blofeld.</p>
<p>After perusing MIDIService.h, I gathered that I had to ultimately use the MIDISend().</p>
<pre><span class="keyword">extern</span> <a class="type" href="file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/Carbon/Reference/ErrorHandler/Reference/reference.html#//apple_ref/c/tdef/OSStatus" target="_top"><span class="type">OSStatus</span></a> <a class="function" href="file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDISend"><span class="function">MIDISend</span></a>(
    <a class="type" href="file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/tdef/MIDIPortRef"><span class="type">MIDIPortRef</span></a> <span class="param">port</span>,
    <a class="type" href="file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/tdef/MIDIEndpointRef"><span class="type">MIDIEndpointRef</span></a> <span class="param">dest</span>,
    <span class="keyword">const</span> <a class="type" href="file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/tag/MIDIPacketList"><span class="type">MIDIPacketList</span></a> *<span class="param">pktlist</span>);</pre>
<p>When it was time to create a MIDIEndpointRef, I was presented with numerous paths. My initial instinct was to traverse some hierachy to get to the Blofeld MIDI Out but it turns out that each MIDIEntity can be reference using a unique id. I was hoping that this info would be available in the Audio MIDI Setup utility but it turns out you can only get at it via code. So I created a foundation tool with the following code.</p>
<pre><span>#import </span>&lt;Foundation/Foundation.h&gt;

<span>#import </span>&lt;CoreMIDI/CoreMIDI.h&gt;

<span>int</span> main (<span>int</span> argc, <span>const</span> <span>char</span> * argv[]) {

<span>    </span>NSAutoreleasePool<span> * pool = [[</span>NSAutoreleasePool<span> </span><span>alloc</span><span>] </span><span>init</span><span>];</span>

<span>	</span><span>MIDIDeviceRef</span> midiDevice;

<span><span>	</span></span><span>int</span><span> numOfDevices = </span>MIDIGetNumberOfDevices<span>();</span>

<span>	</span><span>int</span> numOfBlofeldEntities;

<span>	</span><span>for</span>(<span>int</span> i=<span>0</span>; i&lt; numOfDevices; i++ ){

<span>		</span>midiDevice = <span>MIDIGetDevice</span>(i);

<span>		</span><span>NSDictionary</span> *midiDeviceProperties;

<span>		</span><span>MIDIObjectGetProperties</span>(midiDevice, (<span>CFPropertyListRef</span> *)&amp;midiDeviceProperties, <span>YES</span>);

<span><span>		</span></span>NSLog(@"midiDeviceProperties:%@", midiDeviceProperties);

<span>	</span>}

    [pool <span>drain</span>];

    <span>return</span> <span>0</span>;

}</pre>
<p>After running the tool, I get the ff output. I need to run this on multiple Macs to verify that the uniqueID is actually the same regardless of which machine I run it on.</p>
<pre><strong>2009-01-11 23:24:31.273 MidiProperties[4198:10b] midiDeviceProperties-5:{</strong>

<strong>    SerialNumber = "8290071532-023547011532";</strong>

<strong>    USBLocationID = -46923776;</strong>

<strong>    USBVendorProduct = 317063187;</strong>

<strong>    "apple.midi.audiomidisetup.widget.xPosition" = 385;</strong>

<strong>    "apple.midi.audiomidisetup.widget.yPosition" = 203;</strong>

<strong>    driver = "com.apple.AppleMIDIUSBDriver";</strong>

<strong>    entities =     (</strong>

<strong>                {</strong>

<strong>            destinations =             (</strong>

<strong>                                {</strong>

<strong>                    name = "Blofeld MIDI out";</strong>

<strong>                    uniqueID = -934632258;</strong>

<strong>                }</strong>

<strong>            );</strong>

<strong>            embedded = 0;</strong>

<strong>            maxSysExSpeed = 3125;</strong>

<strong>            name = "Waldorf Blofeld";</strong>

<strong>            sources =             (</strong>

<strong>                                {</strong>

<strong>                    name = "Blofeld MIDI in";</strong>

<strong>                    uniqueID = 1439776402;</strong>

<strong>                }</strong>

<strong>            );</strong>

<strong>            uniqueID = -1524681845;</strong>

<strong>        }</strong>

<strong>    );</strong>

<strong>    image = "/Library/Audio/MIDI Devices/Access Music/Images/Virus TI Snow.tiff";</strong>

<strong>    manufacturer = "Waldorf Music GmbH";</strong>

<strong>    model = "Waldorf Blofeld";</strong>

<strong>    name = Blofeld;</strong>

<strong>    offline = 0;</strong>

<strong>    "receives MTC" = 0;</strong>

<strong>    "receives clock" = 0;</strong>

<strong>    "supports General MIDI" = 0;</strong>

<strong>    "supports MMC" = 0;</strong>

<strong>    "transmits MTC" = 0;</strong>

<strong>    "transmits clock" = 0;</strong>

<strong>    uniqueID = 1111148707;</strong>

<strong>}</strong></pre>
<p>Finally armed with the blofeld&#8217;s MIDI Out uniqueID, the rest was cake. Here is the code I used to send the note on message.</p>
<pre><span>#import </span>&lt;Foundation/Foundation.h&gt;

<span>#import </span>&lt;CoreMIDI/CoreMIDI.h&gt;

MIDIEndpointRef getEndpointWithUniqueID(<span>MIDIUniqueID</span> <span>id</span>){

<span><span>	</span></span>MIDIObjectRef<span> endPoint;</span>

<span><span>	</span></span>MIDIObjectType<span> foundObj;</span>

<span>	</span><span>MIDIObjectFindByUniqueID</span>(<span>id</span>, &amp;endPoint, &amp;foundObj);

<span><span>	</span></span><span>return</span><span> (</span>MIDIEndpointRef<span>) endPoint;</span>

}

MIDIClientRef getMidiClient(){

<span>	</span><span>MIDIClientRef</span> midiClient;

<span>	</span><span>NSString</span> *outPortName =<span>@"blofeldOut"</span>;

<span>	</span><span>MIDIClientCreate</span>((<span>CFStringRef</span>)outPortName, <span>NULL</span>, <span>NULL</span>, &amp;midiClient);

<span>	</span><span>return</span> midiClient;

}

MIDIPortRef getOutPutPort(){

<span><span>	</span></span>MIDIPortRef<span> outPort;</span>

<span>	</span><span>NSString</span> *outPortName =<span>@"blofeldOut"</span>;

<span>	</span><span>MIDIOutputPortCreate</span>(<span>getMidiClient</span>(), (<span>CFStringRef</span>)outPortName, &amp;outPort);

<span>	</span><span>return</span> outPort;

}

MIDIPacketList getMidiPacketList(){

<span><span>	</span></span>MIDIPacketList<span> packetList;</span>

<span>	</span>packetList.<span>numPackets</span> = <span>1</span>;

<span>	</span><span>MIDIPacket</span>* firstPacket = &amp;packetList.<span>packet</span>[<span>0</span>];

<span>	</span>firstPacket-&gt;<span>timeStamp</span> = <span>0</span>;<span>	</span><span>// send immediately</span>

<span>	</span>firstPacket-&gt;<span>length</span> = <span>3</span>;

<span>	</span>firstPacket-&gt;<span>data</span>[<span>0</span>] = <span>0x90</span>;

<span>	</span>firstPacket-&gt;<span>data</span>[<span>1</span>] = <span>60</span>;

<span>	</span>firstPacket-&gt;<span>data</span>[<span>2</span>] = <span>64</span>;

<span><span>	</span></span>// TODO: add end note sequence

<span>	</span><span>return</span> packetList;

}

<span>void</span> play_note(<span>void</span>) {

<span><span>	</span></span>NSAutoreleasePool<span> * pool = [[</span>NSAutoreleasePool<span> </span><span>alloc</span><span>] </span><span>init</span><span>]; </span>

<span><span>	</span></span><span>MIDIPacketList</span><span> packetList=</span>getMidiPacketList<span>();</span>

<span>	</span><span>MIDIUniqueID</span> blofeldEndpointID = -<span>934632258</span>;

<span>	</span><span>MIDIEndpointRef</span> blofeldEndpoint = <span>getEndpointWithUniqueID</span>(blofeldEndpointID);

<span>	</span><span>MIDISend</span>(<span>getOutPutPort</span>(), blofeldEndpoint, &amp;packetList);

<span>	</span><span>MIDIEndpointDispose</span>(blofeldEndpoint);

<span>	</span>[pool <span>drain</span>];

}

<span>int</span> main (<span>int</span> argc, <span>const</span> <span>char</span> * argv[]) {

<span>    </span>play_note<span>();</span>

    <span>return</span> <span>0</span>;

}</pre>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2009/01/12/getting-started-with-coremidi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
