<?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; Cocoa</title>
	<atom:link href="http://trnsfrmr.com/category/code/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://trnsfrmr.com</link>
	<description>only fools &#38; horses work.</description>
	<lastBuildDate>Mon, 21 Feb 2011 15:28:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Adobe Flash vs Apple</title>
		<link>http://trnsfrmr.com/2010/04/10/adobe-flash-vs-apple/</link>
		<comments>http://trnsfrmr.com/2010/04/10/adobe-flash-vs-apple/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 17:32:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=177</guid>
		<description><![CDATA[In response to Apple&#8217;s decision to limit iPhone OS app development to C, C++, objective-c and JavaScript. The Flash Blog I think that by restricting Developers to a specific set of languages, Apple can somewhat ensure that developers target their platform specifically rather than have developers submit apps that are built for the lowest common [...]]]></description>
			<content:encoded><![CDATA[<p>In response to Apple&#8217;s decision to limit iPhone OS app development to C, C++, objective-c and JavaScript. <a href="http://theflashblog.com/?p=1888">The Flash Blog</a><br/></p>
<p>I think that by restricting Developers to a specific set of languages, Apple can somewhat ensure that developers target their platform specifically rather than have developers submit apps that are built for the lowest common denominator of mobile devices. I guess they don’t want to foster an environment that mirrors what’s on the web today. Most websites leave out a ton of features just because IE6 cannot support those features. I do believe that developers produce their best work when they target a specific platform and take advantage of the unique features that platform has to offer.</p>
<p>It is also good business for Apple to maintain a base of developers that are “married” to their platform. Imagine an environment where most iPhone developers migrate to Flash CS5. In such an environment, if Apple releases enhancements to their frameworks, developers would have to wait for Adobe to integrate those changes into Flash before the developers could take advantage of Apple’s improvements.</p>
<p>What if Google buys Adobe and decides CS6 will only come out on google chrome and Flash will only support Android? Apple and all developers that target iPhone OS get left in the dust!</p>
<p>Let’s face it, we always have a choice of mobile phones but when it comes to graphics applications, Adobe is a very strong monopoly. I’d be cautious siding with them on an issue such as this. It may not end well. How much is the web premium suite again? Do you think we would have to pay that much if Adobe and Macromedia never merged?</p>
<p>Adobe is a behemoth. IPhone devs may not be able to use Flash but I’ll bet my last dollar that 99.9999999876% of all graphic content you’ll see on Apple, Sony, Microsoft, Palm &#038; Android devices as well as the web will be created using Adobe’s tools. Isn’t that enough?</p>
<p>I don&#8217;t necessarily have an issue with Adobe&#8217;s goal of making flash an indispensable tool but I do think that a lot of comments in the blogosphere wrongly suggest that Adobe may have altruistic motives. Adobe&#8217;s goal isn&#8217;t to give developers choice; it is to maintain and extend the dominance Flash currently enjoys. Apple&#8217;s goal isn&#8217;t to limit developers choice but rather to ensure that their platform doesn&#8217;t become just another deployment target for Flash.</p>
<p>Consider the following: <br />
If a developer uses Flash, who becomes responsible for performance tuning? The developer or Flash? <br />
My guess is Flash.</p>
<p>If Flash achieves 65% penetration into the iPhone development market? Who becomes responsible for how efficient Flash generated byte code runs on iPhone?<br />
My guess is Apple because end users will not attribute sucky performance to Adobe but to Apple. </p>
<p>Both companies are right so there really is no need for Adobe evangelists to pretend this is a fight about open vs closed.</p>
<p>I bet the blogs on here will have a totally different tone if MS/Google/Apple release free tools that allow developers to deploy their apps as Flash files. We will not hear all the clamoring for choice on the developers behalf.</p>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/04/10/adobe-flash-vs-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bytes, Nibbles &amp; Bits for CoreMidi</title>
		<link>http://trnsfrmr.com/2010/03/12/bytes-nibbles-bits-for-coremidi/</link>
		<comments>http://trnsfrmr.com/2010/03/12/bytes-nibbles-bits-for-coremidi/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 19:37:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Synth]]></category>
		<category><![CDATA[CoreMidi]]></category>
		<category><![CDATA[MIDI]]></category>

		<guid isPermaLink="false">http://trnsfrmr.com/?p=174</guid>
		<description><![CDATA[So I&#8217;m working on YAMP (yet another midi project and it took me a while to recollect all the binary arithmetic required to parse MIDI packets. Take a midi packet with 3 bytes in hexadecimal notation such as 99 3C 64. This stream encapsulates the following instructions: Play middle C on channel 10 at velocity [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m working on YAMP (yet another midi project <img src='http://trnsfrmr.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  and it took me a while to recollect all the binary arithmetic required to parse MIDI packets.</p>
<p>Take a midi packet with 3 bytes in hexadecimal notation such as <strong>99 3C 64</strong>. This stream encapsulates the following instructions:</p>
<p>Play middle C on channel 10 at velocity 100. Now lets strip it down to nibbles &amp; bits.</p>
<p>9 -&gt; Note on message. (Examples of other status messages are: 0xB for controller change, 0x C for program change &amp; 0xE for pitch-bend)</p>
<p>9 -&gt; Middle channel 10. (Range 0 -15)</p>
<p>3C -&gt;Middle C -&gt; Note 60</p>
<p>64 -&gt; 100 in decimal</p>
<p><strong>Determining if a stream begins with a status byte.</strong></p>
<p>A set high-bit on the first byte identifies the byte as a status message. This can be accomplished visually by converting <strong>99</strong> from hex to binary <strong>10011001</strong>,  and seeing if the first bit is 1. This can be tested mathematically with the following condtion:</p>
<p><strong>0&#215;99 &gt; 0x7F</strong></p>
<p>Once you have determined that the byte actually sets a status, you need to identify the actual status that is set. Some examples of status messages are: <strong>0xB</strong> for controller change, <strong>0xC</strong> for program change &amp; <strong>0xE</strong> for pitch-bend. To get the value of the left nibble, you can use the following expression.</p>
<p><strong>0&#215;99 &gt;&gt; 4</strong> (Shift the 4 places) or <strong>0&#215;99 / 0&#215;10</strong></p>
<p><strong>Determining the midi transmission channel.</strong></p>
<p>The second nibble (9<strong>9</strong>) of the first byte in the stream, represents the midi transmission channel. Channels are 0 indexed so they range from 0-F in hex or 0-15 in decimal. So we can tell quite easily that the transmission channel in our stream is 10 just by adding 1 to the second nibble. We can extract the 2nd nibble using the following expression:</p>
<p><strong>0&#215;99 % 0&#215;10</strong> (% = modulo)</p>
<p>and get the midi channel by adding 1 to the result</p>
<p><strong>(0&#215;99 % 0&#215;10) + 1</strong></p>
<p><strong><br />
</strong></p>
<p><strong>Determining the note number and velocity. </strong></p>
<p><strong><span style="font-weight: normal;">These are pretty simple. Just convert the Hex values to a decimal values</span></strong></p>
<p><strong><span style="font-weight: normal;">0x3c = 60</span></strong></p>
<p><strong><span style="font-weight: normal;">0&#215;64 = 100</span></strong></p>
<p>I&#8217;ll post my parser here when I&#8217;m done with it this weekend.</p>
]]></content:encoded>
			<wfw:commentRss>http://trnsfrmr.com/2010/03/12/bytes-nibbles-bits-for-coremidi/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

