<?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>trystan.org</title>
	<atom:link href="http://trystan.org/press/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://trystan.org/press</link>
	<description>Trystan Larey-Williams</description>
	<lastBuildDate>Sun, 22 Aug 2010 18:43:52 +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>A/D and D/A Conversions</title>
		<link>http://trystan.org/press/?p=202</link>
		<comments>http://trystan.org/press/?p=202#comments</comments>
		<pubDate>Sun, 22 Aug 2010 18:40:49 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=202</guid>
		<description><![CDATA[A point often overlooked by home recording engineers is that for every digital unit in an analog instrument chain an A/D and D/A conversion is being performed. Doing this once or twice with high quality converters is probably not very noticeable, but chaining several digital pedals together is probably not wise. Each pedal will do [...]]]></description>
			<content:encoded><![CDATA[<p>A point often overlooked by home recording engineers is that for every digital unit in an analog instrument chain an A/D and D/A conversion is being performed. Doing this once or twice with high quality converters is probably not very noticeable, but chaining several digital pedals together is probably not wise. Each pedal will do a full round of conversion and introduce their own &#8216;flavor&#8217; of signal degradation.</p>
<p>Most home recorders are already converting twice by necessity, getting the sound in and out of the computer. Intuitively, it makes sense to leverage analog processing whenever they&#8217;re appropriate to avoid these additional conversions prior to the sound interface. The other option is to record dry and use digital processing &#8216;in the box&#8217; as there are no additional conversions in this case. There are no shortage of high quality software DSPs.</p>
<p>Most folks, including myself, likely have more pressing problems to address in their home studio. However, A/D conversion is certainly a factor to consider before mindlessly stacking another gadget on the signal chain. Think about where in the chain the gadget is being placed. Could the number of conversions be reduced by rearranging the chain? Could this gadget be placed in a digital loop with the sound interface, thus avoiding another conversion entirely? Most modern rack-mount DSPs do indeed have this capability.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=202</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guitar Cabinet Simulation</title>
		<link>http://trystan.org/press/?p=194</link>
		<comments>http://trystan.org/press/?p=194#comments</comments>
		<pubDate>Wed, 18 Aug 2010 23:22:21 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=194</guid>
		<description><![CDATA[The amount of &#8216;color&#8217; imparted to a distorted guitar sound by the speaker cabinet is often understated. Guitar speakers are not high fidelity. Rather they&#8217;re designed to roll off high frequencies, typically those over 8khz or so, and usually have poor response to frequencies under 120hz. The high frequency attenuation is particularly important for high [...]]]></description>
			<content:encoded><![CDATA[<p>The amount of &#8216;color&#8217; imparted to a distorted guitar sound by the speaker cabinet is often understated. Guitar speakers are not high fidelity. Rather they&#8217;re designed to roll off high frequencies, typically those over 8khz or so, and usually have poor response to frequencies under 120hz. The high frequency attenuation is particularly important for high gain distorted styles. If absent, listeners will suffer fizz and sizzle.</p>
<p>However cabinets present problems. They&#8217;re expensive, heavy, and need to be driven loud to impart the impulse characteristics associated with modern metal and rock. This doesn&#8217;t gel with living in a 900 sqft house in a major metropolitan area. Many home recorders and musicians need an alternative.</p>
<p>One alternative is to simply record via the line out on a pre-amp&#8230;this sucks big time. You can compensate a bit with high and low cuts on an EQ but it will sound very thin and fizzy. Leaving the power amp in the chain and brining the signal back down to line level through a load box and speaker simulator is better. Many of these units feature adjustable high cut and voicing controls. Additionally, you retain the color of the power amp section. But the results are usually still disappointing. There&#8217;s something missing, speaker impulse response.</p>
<p>The sound heard on most rock and metal recordings of guitar is the result of miking a speaker cabinet. Without a cabinet in the chain, it&#8217;s virtually impossible to reproduce certain dynamics captured by the microphone. Enter speaker impulse samples. Thanks to Prof. Fourier, it is possible to tease apart the speaker impulse data for all possible tones given any guitar speaker. These impulse &#8216;deconvolutions&#8217; may then be convolved with any digital audio track to replace the otherwise missing impulse dynamics. Several &#8216;convolution reverb&#8217; plug-ins are available for the task.</p>
<p>With well captured data from a good cabinet and microphone, the results are amazing compared against the unprocessed track. Many free guitar speaker impulse deconvolutions can be found via Google. At least one free convolution engine exists for Linux platforms, jconv, and can be integrated with Ardour via the Jack protocol. I highly recommend anyone recording guitars direct-to-console check these tools out.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=194</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Song Demo 1</title>
		<link>http://trystan.org/press/?p=189</link>
		<comments>http://trystan.org/press/?p=189#comments</comments>
		<pubDate>Mon, 09 Aug 2010 16:05:01 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=189</guid>
		<description><![CDATA[Here&#8217;s a song created using the Ubuntu Studio tool chain discussed in previous posts. The drums are programmed using Hydrogen but the guitar and bass are real instruments. Both were recorded &#8216;direct to console&#8217; with the bass going through a Sansamp NYC. The guitar chain is Engl 530 -&#62; VHT 2/90/2 -&#62; Palmer ADIG-LB (load [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a song created using the Ubuntu Studio tool chain discussed in previous posts. The drums are programmed using Hydrogen but the guitar and bass are real instruments. Both were recorded &#8216;direct to console&#8217; with the bass going through a Sansamp NYC. The guitar chain is Engl 530 -&gt; VHT 2/90/2 -&gt; Palmer ADIG-LB (load box).</p>
<p><a href="http://www.trystan.org/res/music/untitled_demo1.mp3">Untitled_demo1.mp3</a></p>
<p>This was after spending about a month&#8217;s worth of solid weekends learning the tools and reading some advice from professional metal producers/engineers. In the field of sound engineering, I&#8217;m still very green.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=189</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.trystan.org/res/music/untitled_demo1.mp3" length="9382815" type="audio/mpeg" />
		</item>
		<item>
		<title>Gear Research Syndrome</title>
		<link>http://trystan.org/press/?p=180</link>
		<comments>http://trystan.org/press/?p=180#comments</comments>
		<pubDate>Sun, 01 Aug 2010 19:24:39 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=180</guid>
		<description><![CDATA[I&#8217;ve been reading a series of informative and entertaining articles on home recording by Brandon Drury. The articles say less about what &#8216;to do&#8217; and more about what &#8216;not to do&#8217;. This is not a criticism, rather it&#8217;s very appropriate for this craft. One particular pitfall illustrated, under which I&#8217;ve self diagnosed, is Gear Research [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading a series of informative and entertaining articles on home recording by Brandon Drury. The articles say less about what &#8216;to do&#8217; and more about what &#8216;not to do&#8217;. This is not a criticism, rather it&#8217;s very appropriate for this craft. One particular pitfall illustrated, under which I&#8217;ve self diagnosed, is Gear Research Syndrome. Countless hours studying details of amplifier design, tube characteristics and other issues that have much less impact on an overall mix than many non-gear related issues.</p>
<p>Symptoms of the disorder include attention on manufacturing differences between Russian KT88 tubes and various knock-offs at opposed to important factors such as the instrument, skill, and the physical recording and monitoring environment.</p>
<p>Cognitive behavioral therapy is indicated in any instance of this disorder. The individual must be trained to recognize the excessive research behavior and reduce the amount of gear research. The additional attention redirected to more important issues will result in sound improvement and reinforce the behavioral change.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=180</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sweetening Metal Drum Tracks</title>
		<link>http://trystan.org/press/?p=172</link>
		<comments>http://trystan.org/press/?p=172#comments</comments>
		<pubDate>Mon, 19 Jul 2010 00:33:54 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=172</guid>
		<description><![CDATA[Contemporary metal drum tracks sound pretty far from natural, they usually sound more like heavy grade pyrotechnics. When one first sits down to reproduce this sound it can be fairly daunting. Whether mic&#8217;ing a drum set or using software samples, raw drums are going to sound thin compared to what ends up on modern metal [...]]]></description>
			<content:encoded><![CDATA[<p>Contemporary metal drum tracks sound pretty far from natural, they usually sound more like heavy grade pyrotechnics. When one first sits down to reproduce this sound it can be fairly daunting. Whether mic&#8217;ing a drum set or using software samples, raw drums are going to sound thin compared to what ends up on modern metal albums or in concert acts that mic the set and apply processing on a per channel basis. I&#8217;ve found a couple tricks that seem to work well for getting closer to the &#8216;over the top&#8217; punch and smack adored by metal fans. My experimentation has all been performed on <a href="http://www.hydrogen-music.org/">Hydrogen</a> with <a href="http://www.ladspa.org/">LADSPA</a> effects.</p>
<p><strong>The Kick<br />
</strong>Metal mixes will often synchronize the kick attack, a bass guitar attack, and a staccato attack on guitar simultaneously for a super non-syncopated punch effect. The kick is often on top of all this in the mix and that takes a &#8216;big&#8217; kick that&#8217;s &#8216;perceived&#8217; as &#8216;deep&#8217;. There are a couple do&#8217;s and don&#8217;ts here.</p>
<p>First, chorus works miracles on kicks. Apply it to the kick and only to the kick. Play with the settings until you achieve the desired size of balls. I&#8217;ve successfully used a multi-voice chorus LADSPA plugin to this end. The A-B difference is extreme. Mixing the chorused signal with the dry signal will help preserve the kick punch/attack. A 50/50 mix has worked well for me.</p>
<p>Next, I think it&#8217;s generally good to avoid reverb on a kick as it can kill the attack. I&#8217;ve heard it used effectively on older &#8217;80s metal but it seems uncommon in modern metal, where the &#8216;fist in the face&#8217; punch takes precedence. If it is used then the wet signal should be mixed with the dry as to preserve attack.</p>
<p><strong>Snare<br />
</strong>The snare seems much more variable, even amongst a sample of closely related metal bands. Tuning can vary quite a bit as can the level with respect to the overall mix. However, I&#8217;ve found that the careful application of plate reverb can effectively spice up a snare hit, specifically in sampled kits. I&#8217;ve used a LADSPA plate reverb that includes some filtering allowing for adjustment of sonic characteristics as well. A formerly &#8216;stock&#8217; sounding snare blast now possesses an almost &#8216;gunshot&#8217; like quality. And that&#8217;s what we metal folks like; the drums that sound like the 4th of July.</p>
<p><strong>Cymbals and Hats<br />
</strong>Thus far it&#8217;s my experience that cymbals sounds good relatively unprocessed. Some EQ may be in order depending on the situation, but I don&#8217;t see much point in toying with the natural resonance with reverb or anything else per say.</p>
<p><strong>Toms</strong><br />
Toms are still a bit of a mystery to me. I&#8217;m not particularly happy with results I&#8217;ve achieved thus far. The toms seem to lack in pitch characteristics and sound &#8216;flat&#8217;. I&#8217;ve experimented with reverbs, which didn&#8217;t provide good results. Perhaps something to broaden the frequencies like pitch shifting would help. It&#8217;s also possible that I simply have poor tom samples. Anyone who would like to chime in is certainly welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=172</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ultimate &#8216;Free&#8217; Music Home Studio</title>
		<link>http://trystan.org/press/?p=156</link>
		<comments>http://trystan.org/press/?p=156#comments</comments>
		<pubDate>Sun, 18 Jul 2010 04:40:41 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=156</guid>
		<description><![CDATA[Certainly, there are many approaches to building a home studio depending on goals, stylistic constraints and monetary resources. My aim is to configure a digital tool chain capable of professional grade digital and analog source recording, whether I have the skill to produce a professional grade master is another matter entirely. This article shall focus [...]]]></description>
			<content:encoded><![CDATA[<p>Certainly, there are many approaches to building a home studio depending on goals, stylistic constraints and monetary resources. My aim is to configure a digital tool chain capable of professional grade digital and analog source recording, whether I have the skill to produce a professional grade master is another matter entirely. This article shall focus on the tool chain, not the sound engineer&#8217;s skill. My personal music taste is &#8216;wall of sound&#8217;, classically infused, progressive metal. This style, and many others, requires a sophisticated chain allowing an arbitrary number of tracks from a variety of sources and the ability to manipulate tracks in a complex manner. This can all be accomplished at minimal cost using the tool chain outlined here.</p>
<p>I will take a &#8216;big-picture&#8217; approach and outline how a number of different software applications are used together to achieve a sophisticated tool chain for recording music. I will not cover the operating details of each individual tool. However, I will reference external resources such as documentation and tutorials. Each individual tool has a learning curve of its own and will require time investment.</p>
<p><strong><span style="color: #ffffff;">The Foundation</span><br />
</strong>A personal computer running a <a href="http://ubuntustudio.org/">Ubuntu Studio</a>; a &#8216;mostly free&#8217; distribution of the Linux OS geared toward multimedia production. It features a low-latency kernel that allows real-time monitoring while recording an analog source. Unless otherwise specified, it includes all the software discussed below. A reasonable quality sound interface is also required. Generally, a consumer grade sound card geared toward gaming is not appropriate. A sound interface designed for recording music with support for multiple balanced line inputs will save a tremendous amount of hassle and preserve fidelity. Many &#8216;pro&#8217; and &#8216;prosumer&#8217; grade interfaces use firewire to communicate with the PC. For a list of all supported firewire devices, <a href="http://www.ffado.org/?q=devicesupport/list">click here</a>. I personally use a Focusrite Saffire 4-in/10-out. Beware of Motu interfaces. They have a poor reputation with regards to supporting the Linux community.</p>
<p><strong><span style="color: #ffffff;">The Plumbing</span><br />
</strong>Browse the Ubuntu Studio menu and become familiar with it&#8217;s layout and contents. One of the items is &#8216;jackcontrol&#8217; or &#8216;qjackcontrl&#8217;, a software version of a studio patch-bay. Consult the <a href="http://www.64studio.com/quickstart_jack">Jack Quick Start</a> guide for an overview of basic functionality. Ensure that your sound interface inputs and outputs are visible from within jackcontrol before continuing. This application allows all other components of the studio to communicate with each other. It is the cables running from box to box in a physical studio.</p>
<p><strong><span style="color: #ffffff;">The Kitchen</span><br />
</strong>This is where it all happens. The <a href="http://ardour.org/">Ardour</a> application is a muti-track audio mixer/recorder with extensive track editing facilities. It communicates with your sound interface via Jack and can synchronize with all other sound applications, such as drum machines and sequencers, over the Jack protocol. Besides mouse and keyboard, Ardour can be controlled via external surfaces such as Mackie or Tascam mixing consoles. Enough information to get productive with Ardour is available through their <a href="http://en.flossmanuals.net/ardour/">online documentation</a>.</p>
<p>Ardour supports LADSPA (Linux Audio Developer&#8217;s Plugin API) for effects processing modules. For most users, <a href="http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html">Steve Harris&#8217;s library</a> will be more than enough to meet processing requirements. Effects can be added and removed from individual tracks via Ardour&#8217;s mixer console.</p>
<p>If you plan to record mostly &#8216;real&#8217; audio sources, i.e. non-midi, then your sound interface + Ardour may be all you need. However, most folks don&#8217;t have a fully mic&#8217;ed drum set handy and many will want to emulate instruments they don&#8217;t actually play or own themselves. For these purposes, some additional software is required.</p>
<p><strong><span style="color: #ffffff;">Instrument Sampler</span><br />
</strong><a href="http://www.linuxsampler.org/">Linuxsampler </a>is capable of playing &#8216;.gig&#8217; or &#8216;giga&#8217; format instrument samples which was the format of some of the highest quality sample libraries. I say &#8216;was&#8217; since Tascam discontinued in-house development of the format. However, development continues within the open source community. Regardless, giga samples are still widely revered in terms of quality today and many libraries remain available. Although the tool is free for non-commercial use, one generally must pay for the instrument libraries, which can run in the hundreds to thousands of dollars. However, a fantastic concert grand piano is available on the Linuxsampler site free of cost. Due to the software license, Linuxsampler is not included with Ubuntu Studio and must be downloaded from the Linuxsampler site.</p>
<p>The caveats aside, it&#8217;s the best sampler I&#8217;ve been able to find for the platform. Linuxsampler is a command line interface, so I recommend installing JSampler as well (also on the Linuxsampler site). This provides a graphical interface to the sampler engine. Consult the <a href="http://www.linuxsampler.org/jsampler/manual/html/jsampler.html">Jsampler documentation</a> for installation and usage details. <strong> </strong></p>
<p><strong><span style="color: #ffffff;">Midi Sequencer/Tracker</span><br />
</strong>Alright, we now have a nifty sampler that can be patched to Ardour either via the &#8216;mixer&#8217; window or Jack directly, but there&#8217;s a catch. Ardour does not currently support midi-tracks. That is, the recording of midi data rather than the raw audio coming from the sampler. Capturing the midi data is ideal because Ardour can play back the track, using it as a midi source, into the sampler allowing different instrument setups to be substituted. If the audio is recorded then we&#8217;re stuck with that audio. Preserving the original midi-data provides extensive flexibility for re-mixing at a later time.</p>
<p>Enter the application <a href="http://www.muse-sequencer.org/index.php/Main_Page">Muse</a>, a midi/audio sequencer. Rather than directly recording the audio output of the sampler with Ardour, we&#8217;ll patch the midi controller (i.e. a midi keyboard) to Muse, patch the output of the muse midi track to the sampler, and patch the sampler output to Ardour. Muse is responsible for capturing the midi-data while Ardour optionally records the audio simultaneously. If we&#8217;re unsatisfied with the instrument or sampler settings, the midi track can simply be played back in Muse with different sampler settings and re-recorded in Ardour. Muse also provides editing facilities for midi data.</p>
<p>The documentation for Muse is sparse. However, there are some <a href="http://www.muse-sequencer.org/index.php/Tutorials">decent tutorials</a> to gain quick productivity. In particular, see <a href="http://www.muse-sequencer.org/index.php/Tutorial2">Tutorial 2</a> that is relevant to patching Muse to an external sampler.</p>
<p><strong><span style="color: #ffffff;">Drum Machine</span><br />
</strong>Traditional hardware based drum machines are about as fun as drilling into concrete. To track a sophisticated song takes so long you just end up not doing it; the interfaces just stink. At least from my perspective, this all changed with <a href="http://www.hydrogen-music.org/">Hydrogen</a>. I don&#8217;t recall even needing documentation to begin using it, but a good manual is available on the site. A number of alternative <a href="http://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/">drum kits</a> are available, including a &#8216;death metal&#8217; kit. Hydrogen will synchronize with Ardour over Jack. Mixing and panning of each individual drum piece can be performed through Hydrogen&#8217;s mixer. Like Ardour, Hydrogen also supports LADSPA plugins. When satisfied with the drum track and mix, just patch the output of Hydrogen to  Ardour using jackcontrol and lay down the track.</p>
<p><strong><span style="color: #ffffff;">Mastering</span><br />
</strong>Personally, I consider &#8216;mastering&#8217; the art of &#8216;pulling the tracks together&#8217; to sound like a cohesive performance rather than x-consecutive weekends in front of a computer. Many people would actually classify this as part of the mixing process. Either way, it can be accomplished by &#8216;mixing down&#8217; tracks in Ardour, possibly with some EQ or reverb plugins.</p>
<p>The other side of mastering involves loudness control and saturation of the dynamic range; &#8216;filling the sound space&#8217; to produce a sonic perception of &#8216;fullness&#8217;. The tool for this job is <a href="http://jamin.sourceforge.net/en/about.html">JAMin</a>. It provides a suite of filters, limiters, EQs, analyzers and other processors. Tracks are routed from Ardour to JAMin and then back to Ardour. Tutorials are available on the site.</p>
<p><strong><span style="color: #ffffff;">Delivery</span><br />
</strong>One part of the chain excluded from this discussion is tools to take the final master track from Ardour and publish it to one of many formats, mp3, CD, etc. This is because I&#8217;ve not yet reached this phase myself as of this writing. I&#8217;ll be sure to report my findings in a future update to this post.</p>
<p>The best of luck and satisfaction on your own musical endeavors!</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=156</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CarbonSilicon Content Merge</title>
		<link>http://trystan.org/press/?p=148</link>
		<comments>http://trystan.org/press/?p=148#comments</comments>
		<pubDate>Sun, 18 Jul 2010 01:28:31 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trystan.org/press/?p=148</guid>
		<description><![CDATA[As I&#8217;m no longer a student, the carbonsilicon blog was rarely receiving updates. I decided to roll the content of that blog into this personal blog and let the carbonsilicon domain expire. Most of the carbonsilicon content can be found under the Cognitive Science category of this blog.]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;m no longer a student, the carbonsilicon blog was rarely receiving updates. I decided to roll the content of that blog into this personal blog and let the carbonsilicon domain expire. Most of the carbonsilicon content can be found under the Cognitive Science category of this blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=148</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming, A Cognitive Systems Perspective</title>
		<link>http://trystan.org/press/?p=132</link>
		<comments>http://trystan.org/press/?p=132#comments</comments>
		<pubDate>Sat, 10 Oct 2009 23:39:20 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Cognitive Science]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://carbonsilicon.org/?p=51</guid>
		<description><![CDATA[Computer science pioneer Edsger Dijkstra published a set of  aphorisms that reflected his solid belief that one&#8217;s choice of programming language affects the cognitive capabilities of the programmer. The more colorful phrases included, &#8220;The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense&#8221; and &#8220;The tools we use [...]]]></description>
			<content:encoded><![CDATA[<p>Computer science pioneer Edsger Dijkstra published a set of  aphorisms that reflected his solid belief that one&#8217;s choice of programming language affects the cognitive capabilities of the programmer. The more colorful phrases included, &#8220;The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense&#8221; and &#8220;The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities&#8221; (Dijkstra 1982). Although never directly referenced by Dijkstra, the comments imply a belief in a &#8220;language is thought&#8221; hypothesis such as those championed by Benjamin Whorf  (Carroll 1997)<span> </span>.</p>
<p>The degree to which spoken language influences thought is intensely debated, with Steven Pinker amongst the most outspoken of Whorfian hypothesis critics. Daniel Casasanto (2008) refutes the popular anti-Whorfian stance proclaimed by Pinker on the grounds that Pinker&#8217;s claims are too broad in scope. Casasanto argues that one must distinguish between an Orwellian flavor of the hypothesis, where language and thought are formal equivalences, and linguistic relativism where language and thought simply influence one another. Although Pinker&#8217;s assertions may successfully challenge an Orwellian interpretation of Whorf, extending the argument to &#8216;weaker&#8217; forms of the hypothesis, such as linguistic relativism, is logically fallacious (Casasanto 2008).</p>
<p>The degree to which programming languages in particular influence cognition has received little attention. An informal survey conducted by Richard Wexelblat (1980) revealed that  some programmers believe certain languages can interfere with abstract forms of reasoning such as data-structure design and high level engineering activities. Wexelblat expressed his personal concern over the popularity of &#8220;do it quick and dirty&#8221; languages, such as BASIC, and the generation of students indoctrinated to them. Although interesting, the usefulness of such self-reports is extremely limited. Accordingly, Wexelblat concludes with a call for controlled studies on the subject. Unfortunately, to my knowledge no such study has ever been conducted. Indeed, it&#8217;s likely that an experimental approach to such research is not yet sufficiently developed.</p>
<p>A strong version of the Whorfian hypothesis is likely an inappropriate foundation for considering the interaction between the mind of a programmer and a programming language. The language is not the programmer&#8217;s thought. Minimally, the language is the cumulative thoughts of many contributors under many transformations. However, a weaker version of the hypothesis may provide a starting point for the study of how programming languages influence the cognition of the programmer. However, significant definition needs to occur prior to applying a Whorfian-like hypothesis to programming languages. Here are some points I&#8217;ve identified.</p>
<p>1. Definition and scope of the term &#8216;language&#8217;. Certainly, programming languages are simpler than natural languages. There are closed definitions for the syntax and semantics for programming languages. One may assert that the set of all closed language definitions is the definition of language in the context of programmer-machine interactions. However, this definition is far too narrow as the programmer rarely interacts with the language specification itself. Rather, the interactive elements include emergent properties of the language, such as graphical and syntactical abstractions. Therefore, a useful definition of language in this domain must include all abstractions that carry meaning for the programmer including atomic elements such as keywords up to highly composite elements like user interface components. Developing a clear and agreeable definition will be challenging.</p>
<p>2. Capturing differences in state or state changes. This involves some method of objectively measuring changes in the programmer&#8217;s behavior due to changes in the &#8216;language&#8217;; using the broader form of definition above. These could be changes in the structure of the language that influences adaptive behavior on the part of the programmer or changes in the &#8216;behavior of the language&#8217;. Therefore, operationalized metrics must be established that represent an abstract measure of machine/language state and human state.</p>
<p>One could begin with high level programming language qualities such as type system, syntactical style, binding style, etc. and measure how a programmer&#8217;s approach to problem solving changes after continued exposure and use of a language that sits at a particular point on this qualitative coordinate system. One method that may be used to examine changes in the programmer&#8217;s state, in order to infer changes in problem solving strategy, is examination of their semantic network via lexical decision tasks at different intervals of language exposure time. Such tasks are used to measure word or concept availability in the domain of natural language (McNamara 2005).</p>
<p>If such experiments demonstrated a link between semantic network changes in the programmer that appeared programming language specific then Dijkstra&#8217;s intuition that a programming language influences a programmer&#8217;s thought processes gains validity. It follows that such influences would form a loop between the programmer and the machine/language forming a cognitive system where the behavior of the programmer influences the language behavior which influences the programmers behavior and so forth. The practical applications of such findings would include renewed appreciation of programming language diversity and help elucidate the relative strengths and weaknesses of language properties with respect to how they combine with the programmer to solve problems.</p>
<p>Carroll J.B.<span> (Ed.). (1997). <em>Language, Thought, and Reality: Selected Writings of Benjamin Lee Whorf</em>. Cambridge, Mass.: MIT Press.</span></p>
<p>Casasanto D. (2008). Who&#8217;s afraid of the big bad Whorf? Crosslingual Differences in Temporal Language and Thought<em>. Language Learning</em>. 58(Suppl. 1), 63-79.</p>
<p>Dijkstra E.W. (1982). <em>Selected Writings on Computing: A Personal Perspective</em><em>. </em>(pp. 129-131). New York, NY.: Springer-Verlag.</p>
<p>McNamara T.P. (2005). <em>Semantic Priming, perspectives from memory and word recognition. </em>New York, NY.: Taylor &amp; Francis Group.</p>
<p>Wexelblat R.L. (1980). The consequences of one&#8217;s first programming language.<span> </span><em><span>Proceedings of the 3rd ACM SIGSMALL symposium and the first SIGPC symposium on Small systems</span></em><span><em>. </em>52-55.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=132</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mental Rotation Replication in Matlab</title>
		<link>http://trystan.org/press/?p=129</link>
		<comments>http://trystan.org/press/?p=129#comments</comments>
		<pubDate>Tue, 08 Sep 2009 22:22:56 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Cognitive Science]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://carbonsilicon.org/?p=31</guid>
		<description><![CDATA[I recently replicated a Shepard and Metzler (1971) style experiment in order to explore OpenGL programming under Matlab. Additionally, I wanted to manipulate certain variables, such as the type(class) of object, to verify predictions made by emerging models of top-down processes of human vision such as those mentioned in the previous post. This replication provided [...]]]></description>
			<content:encoded><![CDATA[<p>I recently replicated a Shepard and Metzler (1971) style experiment in order to explore OpenGL programming under Matlab. Additionally, I wanted to manipulate certain variables, such as the<br />
type(class) of object, to verify predictions made by emerging models of<br />
top-down processes of human vision such as those mentioned in the previous post. This replication provided a convenient point to start.</p>
<p>In this implementation, the participant is shown a series of 3D object pairs. On some trials, the two objects are different. On other trials, one object is simply a rotation on the xy plane of the other object by a variable multiple of 20 degrees. The participant responds by pressing &#8217;1&#8242; to indicate the same object or &#8217;2&#8242; to indicate different objects while their response time is measured. Previous research shows that response time increases linearly relative to the number of degrees one object is rotated from the other (Shepard, Metzler 1971).</p>
<p>The image to the right below shows the stimuli for one trial. The image to the left depicts my own results for 100 trials. My response time is far less than the typical Shepard (1971) subject but I have years of experience working with 3D graphics and, of course, wrote the code for this experiment. I&#8217;ve posted the code as I think it provides a decent example of accessing OpenGL from Matlab and a good starting point for related experiments. The code is available for download <a href="http://trystan.org/press/wp-content/uploads/2009/09/Shepard.zip">here.</a></p>

<a href='http://trystan.org/press/?attachment_id=130' title='myfunc'><img width="150" height="150" src="http://trystan.org/press/wp-content/uploads/2009/09/myfunc-150x150.png" class="attachment-thumbnail" alt="myfunc" title="myfunc" /></a>
<a href='http://trystan.org/press/?attachment_id=33' title='shepscrn'><img width="150" height="150" src="http://trystan.org/press/wp-content/uploads/2009/09/shepscrn-150x150.png" class="attachment-thumbnail" alt="shepscrn" title="shepscrn" /></a>

<p>Shepard R., Metzler J. (1971). Mental Rotation of Three-Dimensional Objects. <em>Science. </em>171.3972, 701-703.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=129</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visual Object Models, Mental Object Rotation</title>
		<link>http://trystan.org/press/?p=13</link>
		<comments>http://trystan.org/press/?p=13#comments</comments>
		<pubDate>Thu, 06 Aug 2009 21:47:06 +0000</pubDate>
		<dc:creator>Trystan</dc:creator>
				<category><![CDATA[Cognitive Science]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://carbonsilicon.org/?p=13</guid>
		<description><![CDATA[One of the toughest problems in the domain of biologically inspired models of vision is explaining how one can properly categorize objects while recognizing novel instances of objects within a category. For example, there are an infinite number of things that you could categorize as a rectangle, yet you have no problems deciding if something [...]]]></description>
			<content:encoded><![CDATA[<p>One of the toughest problems in the domain of biologically inspired models of vision is explaining how one can properly categorize objects while recognizing novel instances of objects within a category. For example, there are an infinite number of things that you could categorize as a rectangle, yet you have no problems deciding if something is rectangular. The problem becomes fiendish when considering more complex objects such as faces.</p>
<p>It is exceedingly unlikely that visual information is stored in memory for all angles of all objects encountered, as this would require virtually incalculable storage space. Therefore, object recognition is probably not based on rote comparison against stored images. An interesting and demonstrable model described over a series of papers from researchers at MIT proposes that top-down components of object recognition involves a set of 2D prototype objects from which a set of object transforms are learned. These learned transforms can be applied to novel concrete instances from the same object class (Poggio, Vetter 1997).</p>
<p>The best way to illustrate this is by example. I implemented the Poggio and Vetter (1997) model in Matlab and tested it on a set of cuboid prototypes. One can think of these as representing the cube like objects of prior experience. For this implementation, the 3D cuboid vertices were randomly generated. The 3D representations were tilted by a few degrees to avoid an accidental perspective and then projected to 2D space using a perspective projection. The resulting 2D cuboids are rendered in figure 1.</p>
<p><img class="size-medium wp-image-15 alignright" title="flex1" src="http://trystan.org/press/wp-content/uploads/2009/08/flex1-300x225.jpg" alt="flex1" /></p>
<p>Of course, one rarely observes an object from just one angle, so we&#8217;ll add another angle. In reality, there would be many, but not all, possible transformation of the object class. For simplicity, we&#8217;ll consider one rotation about the x-axis by 20 degrees. The resulting object class is rendered in figure 2.</p>
<p>Upon this rotation, the model learns how to transform the set of 2D vertices defining the non-rotated object into the 2D vertices defining the rotated objects. In this implementation, the transform is learned by a single layer neural network. However, an analytic solution also exists if the vertices form a linearly independent set; for details see Poggio &amp; Vetter (1997). At this point, we have a single function that will transform any 2D cuboid into the same, or at least very close (if class is not linearly independent), cuboid rotated by 20 degrees.</p>
<p><img class="size-medium wp-image-17 alignright" title="flex2" src="http://trystan.org/press/wp-content/uploads/2009/08/flex2-300x225.jpg" alt="Figure 2" /></p>
<p>This can be demonstrated by generating a new random cuboid, one that is not in the prototype class, and using the learned transformation function to rotate the novel cuboid. Figure 3 depicts the random cuboid in red rendered in the same location as the rotated version in blue. This is intended to assist in recognizing a successful transformation.</p>
<p>It is key to recognize that a traditional rotation in 3D space is not being performed on the novel cuboid. The novel object is projected into 2D space and <em>then </em>rotated via the learned 2D-&gt;2D transform.</p>
<p><img class="size-medium wp-image-18 alignright" title="flex3" src="http://trystan.org/press/wp-content/uploads/2009/08/flex3-300x225.jpg" alt="Figure 3" /></p>
<p>An interesting prediction implied by this model is that when an individual mentally rotates an object, their performance should degrade relative to the number of degrees they are trying to rotate due to repeated applications of learned transforms. For instance, if we wanted to rotate the novel cuboid 40 degrees then we could simply apply the learned transform twice and this should take twice the amount of time. It also follows that the performance should degrade linearly, as the transform is a linear function. In fact, this is exactly what was reported in the classic mental rotation study by Shepard and Metzler (1971). They found a linear increase in reaction time when deciding whether or not two objects observed from different angles were the same object as the degrees of rotation between the two objects increased.</p>
<p>It would be interesting to see if performance holds for rotations of different increments. Shepard and Metzler tested only one increment; all rotations were in increments of 20 degrees. Differences in performance would be expected if individuals stored more than one rotation transform for an object class. For instance, if asked to rotate something by 40 degrees one may apply two iterations of 20 or several iterations of a more granular transform. However, one may be able to jump strait to a 45 or 90 degree rotation, especially for cubes.</p>
<p>Furthermore, experiments investigating the effects of different object classes would provide additional insight. Although Shepard and Metzler argued their objects were novel, they were all composed of cubes. It&#8217;s possible that the visual system may be able to apply the cube transforms to the cubes composing the object individually. What would happen if pyramids were used as the atomic component as opposed to cubes? The Poggio and Vetter model examined here couples transforms to an object class. Therefore, differences should be expected when manipulating object class. More specifically, one may not expect performance increases due to learning effects to carry over to a new class.</p>
<p>Poggio T., Vetter T. (1997). Linear Object Classes and Image Synthesis From a Single Example Image. <em>IEEE Transactions on Pattern Matching and Machine Intelligence. </em>19.7, 733-741.</p>
<p>Shepard R., Metzler J. (1971). Mental Rotation of Three-Dimensional Objects. <em>Science. </em>171.3972, 701-703.</p>
]]></content:encoded>
			<wfw:commentRss>http://trystan.org/press/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
