<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Of Recordings</title>
	
	<link>http://www.ofrecordings.com</link>
	<description>An unhealthy obsession with square waves.</description>
	<lastBuildDate>Sun, 22 Jan 2012 22:30:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/OfRecordings" /><feedburner:info uri="ofrecordings" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>A JavaScript spectrum analyzer</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/eOtaPTOs_ZY/</link>
		<comments>http://www.ofrecordings.com/2012/01/22/a-javascript-spectrum-analyzer/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 21:19:04 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[audio data api]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[dsp]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[the y axes]]></category>
		<category><![CDATA[web audio api]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=319</guid>
		<description><![CDATA[My friend asked me if I could make a music player with a spectrum analyzer for his web page. I&#8217;m like, I dunno? Can I? I can make a spectrum analyzer in my sleep, and browsers can do some audio stuff these days, right? So, maybe? I can make a spectrum analyzer in my sleep [...]]]></description>
			<content:encoded><![CDATA[<p>My friend asked me if I could make a music player with a spectrum analyzer for his web page. I&#8217;m like, I dunno? Can I?</p>
<p>I can make a spectrum analyzer in my sleep, and browsers can do some audio stuff these days, right? So, maybe?</p>
<h4>I can make a spectrum analyzer in my sleep</h4>
<p>Here&#8217;s how you make a spectrum analyzer. First, run your original signal through a few parallel bandpass filters. The range of human hearing spans about 10 octaves, from 20 Hz to 20k. If we want a 5-band display, we&#8217;ll place our bandpass filters at 2-octave intervals. This gives us centers at 40 Hz, 160 Hz, 640 Hz, 2.5k, and 10k.</p>
<p><a href="https://ccrma.stanford.edu/~jos/fp/">Filter design</a> is super interesting and fairly complex, but implementing a basic bandpass filter is <a href="http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt">shockingly simple</a>.</p>
<p>Now we&#8217;ve got five (or whatever) new audio signals. We compute the power of each band and draw a bar for each one. There are some details around how you compute the actual size of the bars to make them look good, but that&#8217;s the main idea.</p>
<p>Easy! NEXT</p>
<h4>Browsers can do some audio stuff these days, right?</h4>
<p>Yes, but with difficulty. Dropping in an audio player is straightforward with the <code>audio</code> tag. Codecs are a bit muddled&#8211; Firefox won&#8217;t play MP3; Safari won&#8217;t play Vorbis. But in the grand scheme of browser quirks, this one is charmingly easy to deal with.</p>
<p>Here&#8217;s how you implement it:</p>
<blockquote>
<pre>&lt;audio controls preload="auto"&gt;
&lt;source src="/spectest/metal_star.ogg"&gt;
&lt;source src="/spectest/metal_star.mp3"&gt;
&lt;/audio&gt;</pre>
</blockquote>
<p>We specify both sources so that all browsers can play at least one. And presto:</p>
<p><audio width="300" height="32" controls="controls" preload="auto" src="/spectest/metal_star.ogg"><source src="/spectest/metal_star.mp3" /></audio></p>
<p>This is cute, but to add a spectrum analyzer to our player, we need access to the raw PCM stream. The problem is thorny.</p>
<h4>In Firefox</h4>
<p>Firefox&#8217;s <a href="https://wiki.mozilla.org/Audio_Data_API">Audio Data API</a> makes it easy. Your <code>audio</code> element will fire a <code>MozAudioAvailable</code> event for each little chunk of sound it plays. Create an event listener, and your callback can process the stream however you like. Like this (I use <a href="http://justintulloss.github.com/cobra/">Cobra</a> cause I like it):</p>
<blockquote>
<pre>var Biquad = new Cobra.Class({
  __init__: function(self, freq, q) {
    var omega = 2*Math.PI*freq/44100.0;
    var alpha = Math.sin(omega)*(2*q);

    self.b0 = alpha;
    self.b1 = 0.0;
    self.b2 = -alpha;
    self.a0 = 1 + alpha;
    self.a1 = -2*Math.cos(omega);
    self.a2 = 1 - alpha;

    self.y1 = self.y2 = self.x1 = self.x2 = 0.0;
  },

  next: function(self, x) {
    var y = (self.b0 / self.a0)*x +
      (self.b1 / self.a0)*self.x1 +
      (self.b2 / self.a0)*self.x2 -
      (self.a1 / self.a0)*self.y1 -
      (self.a2 / self.a0)*self.y2;
    self.y2 = self.y1;
    self.y1 = y;
    self.x2 = self.x1;
    self.x1 = x;
    return y;
  }
});

var bands = [
  new Biquad(40.0, 1.0),
  new Biquad(160.0, 1.0),
  new Biquad(640.0, 1.0),
  new Biquad(2560.0, 1.0),
  new Biquad(10240.0, 1.0)
];

function updateSpectrum(ev) {
  var fb = ev.frameBuffer;
  var sumsq = [0.0, 0.0, 0.0, 0.0, 0.0];

  for (var i = 0; i &lt; fb.length/2; ++i) {
    /* average to get mono channel */
    var center = (fb[2*i] + fb[2*i+1])/2.0;

    /* feed to bp filters */
    for (var j = 0; j &lt; 5; ++j) {
      var out = bands[j].next(center);
      sumsq[j] += out*out;
    }
  }

  for (var i = 0; i &lt; 5; ++i) {
    /* calculate rms power */
    var rms = Math.sqrt(2.0 * sumsq[i] / fb.length);

    /* update bar */
    var db = 6.0 * Math.log(rms) / Math.log(2.0);
    var length = 450 + 10.0*db;
    if (length &lt; 1) {
      length = 1;
    }
    var bar = document.getElementById("bar" + i);
    bar.style.width = length + "px";
  }
}

var audio = document.getElementById("player");
audio.addEventListener("MozAudioAvailable", updateSpectrum, false);</pre>
</blockquote>
<p>You can <a href="http://www.ofrecordings.com/spectest/index-ffx.html">see it in action here</a>.</p>
<p>Brilliant! Hopefully WebKit provides an equally easy solution.</p>
<h4>In WebKit</h4>
<p>Nope! WebKit is implementing the <a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">Web Audio API</a>. This API sorta works like a modular. You create chains of <code>AudioNode</code> objects which act as sound sources or processors. There are a bunch of prefab <code>AudioNode</code>s, or you can write your own.</p>
<p>Chrome implements at least part of the Web Audio API. So do <a href="http://nightly.webkit.org/">Safari nightlies</a>, and I presume Safari 6 will as well.</p>
<p>My plan was to connect an <code>audio</code> element to a custom <code>AudioNode</code>, which would use the same spectrum analyzer code from the Firefox example. This plan was foiled when I discovered that the <code>MediaElementAudioSourceNode</code>, designed to provide integration with the <code>audio</code> and <code>video</code> tags, is silently unimplemented in Chrome. You can create one, but it will just feed you a steady stream of zeroes.</p>
<p>For now, it appears that the preferred solution is to re-implement the <code>audio</code> tag yourself using an XHR and an <code>AudioBufferSource</code>. Which is insane.</p>
<p>Our <code>updateSpectrum</code> only changes slightly:</p>
<blockquote>
<pre>function updateSpectrum(ev) {
  var fb = ev.inputBuffer;
  var outb = ev.outputBuffer;
  var sumsq = [0.0, 0.0, 0.0, 0.0, 0.0];
  var inputL = fb.getChannelData(0);
  var inputR = fb.getChannelData(1);
  var outputL = outb.getChannelData(0);
  var outputR = outb.getChannelData(1);

  for (var i = 0; i &lt; inputL.length; ++i) {
    /* average to get mono channel */
    var center = (inputL[i] + inputR[i])/2.0;

    /* copy to output */
    outputL[i] = inputL[i];
    outputR[i] = outputR[i];

    /* feed to bp filters */
    for (var j = 0; j &lt; 5; ++j) {
      var out = bands[j].next(center);
      sumsq[j] += out*out;
    }
  }

  for (var i = 0; i &lt; 5; ++i) {
    /* calculate rms amplitude */
    var rms = Math.sqrt(sumsq[i] / inputL.length);

    /* update bar */
    var db = 6.0 * Math.log(rms) / Math.log(2.0);
    var length = 450 + 10.0*db;
    if (length &lt; 1) {
      length = 1;
    }
    var bar = document.getElementById("bar" + i);
    bar.style.width = length + "px";
  }
}</pre>
</blockquote>
<p>But we need a bunch of new rigmarole to wire up the sound:</p>
<blockquote>
<pre>var context = new webkitAudioContext();

var processor = context.createJavaScriptNode(512, 1, 1);
processor.onaudioprocess = updateSpectrum;

/* get the sound via http */
var req = new XMLHttpRequest();
req.open("GET", "/spectest/metal_star.mp3", true);
req.responseType = "arraybuffer";
req.onload = function() {
  var audio = context.createBuffer(req.response, false);
  var source = context.createBufferSource();
  source.buffer = audio;
  source.noteOn(0.0);
  source.connect(processor);
  processor.connect(context.destination);
}
req.send();</pre>
</blockquote>
<p>And here&#8217;s <a href="http://www.ofrecordings.com/spectest/index-chrome.html">the Chrome edition of the demo</a> (warning: autoplays).</p>
<h4>Opinions</h4>
<p>I quite like the Mozilla Audio Data API. The Web Audio API strikes me as overdesigned.</p>
<p>I hate Flash with the fury of a thousand suns scorned, but given this Byzantine thicket, I understand why developers use it.</p>
<h4>Also</h4>
<p>If you like the song in the demos, <a href="http://theyaxes.bandcamp.com/album/winter-bones-metal-star-single">download it here</a>.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/eOtaPTOs_ZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2012/01/22/a-javascript-spectrum-analyzer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2012/01/22/a-javascript-spectrum-analyzer/</feedburner:origLink></item>
		<item>
		<title>The oxygen’s too heavy</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/Ugufnu7o3Go/</link>
		<comments>http://www.ofrecordings.com/2012/01/15/the-oxygens-too-heavy/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 19:47:40 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Of music]]></category>
		<category><![CDATA[discopocalypse]]></category>
		<category><![CDATA[hotel utah]]></category>
		<category><![CDATA[microkorg]]></category>
		<category><![CDATA[op-1]]></category>
		<category><![CDATA[space pop]]></category>
		<category><![CDATA[spaceman]]></category>
		<category><![CDATA[teenage engineering]]></category>
		<category><![CDATA[the y axes]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=315</guid>
		<description><![CDATA[in your lungs to be let out: www.youtube.com/watch?v=xXdJaIce8vI]]></description>
			<content:encoded><![CDATA[<p>in your lungs to be let out:</p>
<p><a href="http://www.youtube.com/watch?v=xXdJaIce8vI">www.youtube.com/watch?v=xXdJaIce8vI</a></p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/Ugufnu7o3Go" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2012/01/15/the-oxygens-too-heavy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2012/01/15/the-oxygens-too-heavy/</feedburner:origLink></item>
		<item>
		<title>New songs: Winter Bones + Metal Star</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/7hHFD-YxLcE/</link>
		<comments>http://www.ofrecordings.com/2011/12/29/new-songs-winter-bones-metal-star/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 18:59:37 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Of music]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[space pop]]></category>
		<category><![CDATA[y axes]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=307</guid>
		<description><![CDATA[Here are two hot new space-pop tunes from my band, The Y Axes. If &#8220;Winter Bones&#8221; doesn&#8217;t move your butt, I will give you a full refund. (link in case the player doesn&#8217;t show up in your reader) Share and enjoy!]]></description>
			<content:encoded><![CDATA[<p>Here are two hot new space-pop tunes from my band, <a href="http://theyaxes.bandcamp.com">The Y Axes</a>. If &#8220;Winter Bones&#8221; doesn&#8217;t move your butt, I will give you a full refund.</p>
<p><iframe style="position: relative; display: block; width: 400px; height: 100px;" src="http://bandcamp.com/EmbeddedPlayer/v=2/album=1594311236/size=venti/bgcol=F5F5E4/linkcol=4285BB/" frameborder="0" width="400" height="100"></iframe></p>
<p>(<a href="http://theyaxes.bandcamp.com/album/winter-bones-metal-star-single">link</a> in case the player doesn&#8217;t show up in your reader)</p>
<p>Share and enjoy!</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/7hHFD-YxLcE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2011/12/29/new-songs-winter-bones-metal-star/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2011/12/29/new-songs-winter-bones-metal-star/</feedburner:origLink></item>
		<item>
		<title>2 sounds 1 kit</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/1nhVpbShXT0/</link>
		<comments>http://www.ofrecordings.com/2011/09/26/2-sounds-1-kit/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 05:28:34 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Of music]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[50s]]></category>
		<category><![CDATA[ambience]]></category>
		<category><![CDATA[discopocalypse]]></category>
		<category><![CDATA[drums]]></category>
		<category><![CDATA[mixing]]></category>
		<category><![CDATA[toneboosters forex]]></category>
		<category><![CDATA[voxengo drumformer]]></category>
		<category><![CDATA[y axes]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=300</guid>
		<description><![CDATA[I&#8217;m mixing my band&#8216;s record. Most of our songs are pretty upbeat pop, but we have one that&#8217;s more relaxed with almost a country feel to it. I thought it would be cool to have a kind of 50s feel for the drums on that one, while the other tracks had a more processed, butt-moving [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m mixing <a title="The Y Axes" href="http://www.facebook.com/theyaxes">my band</a>&#8216;s record. Most of our songs are pretty upbeat pop, but we have one that&#8217;s more relaxed with almost a country feel to it. I thought it would be cool to have a kind of 50s feel for the drums on that one, while the other tracks had a more processed, butt-moving vibe.</p>
<p>Obviously the best way to achieve this would be to tune and mic the drums in the 50s style. But in reality, we have a tiny budget; we recorded all the drums basically in one day with no time to adjust things in between songs. So I challenged myself to come up with two ways to mix the same drums and get very different sounds.</p>
<p>The first thing I did was listen to some reference tracks. Like this one:</p>
<p><a href="http://www.youtube.com/watch?v=c9OcPzjpXnk">www.youtube.com/watch?v=c9OcPzjpXnk</a></p>
<p>Now that song was actually recorded in 1969, and in fact all my reference tracks actually came from the late 60s. Which is fine; I&#8217;m after a sound, not a date. At any rate, I took note of a few things:</p>
<ul>
<li>The snare is thin and tight.</li>
<li>The kick has almost no boom, but you can really hear the pedal.</li>
<li>The hihats are nice and crisp. (In my head the sound was super warm, but that&#8217;s not really the case at all. It&#8217;s easy to overdo those things, so it was good to check.)</li>
</ul>
<p>With that in mind I got to work.</p>
<p>I wasn&#8217;t alive then, but reading up a bit it seems like close-micing individual drums didn&#8217;t become common until the 70s. Basically you&#8217;d just throw one mic up in the middle of the room. With that in mind, I attempted to work entirely off the overheads. The first thing I noticed was the overheads were suuuper bright, probably because they were placed so close to the cymbals. Listen:</p>
<p><code><a href="http://www.ofrecordings.com/drums/drums_01_orig.wav.mp3">Download audio file (drums_01_orig.wav.mp3)</a><br /></code></p>
<p>I thought a little multiband would help so I fired up <a href="http://www.voxengo.com/product/drumformer/">Voxengo Drumformer</a>. I set it in two-band mode with the cutoff at 3k. For the lows, I added a moderate amount of compression, but actually only a tiny bit on the highs. I set the cutoff just barely below where the hihat peaks. Mostly I just rolled the high band a lot lower. Even that wasn&#8217;t enough so I added a little bit of high shelf as well.</p>
<div id="attachment_302" class="wp-caption aligncenter" style="width: 463px"><a href="http://www.ofrecordings.com/wp-content/uploads/2011/09/voxengo-drumformer-screenshot.png"><img class="size-full wp-image-302 " title="voxengo drumformer screenshot" src="http://www.ofrecordings.com/wp-content/uploads/2011/09/voxengo-drumformer-screenshot.png" alt="voxengo drumformer screenshot" width="453" height="447" /></a><p class="wp-caption-text">Applying two-band compression to the overheads</p></div>
<p><code><a href="http://www.ofrecordings.com/drums/drums_02_compressed.wav.mp3">Download audio file (drums_02_compressed.wav.mp3)</a><br /></code></p>
<p>Now the balance sounds pretty good and I&#8217;m liking the way the crash tails fade away. I wanted to add a touch of saturation to give it that retro feel. My favorite tool for this is the Buzz plugin Zu Tube Head, but since I&#8217;ve switched to Mac I need to find a new one. I first tried <a href="http://www.nomadfactory.com/products/magnetic/index.html">Magnetic</a> from Nomad Factory; it sounded good, but I didn&#8217;t really want to drop $129 at the moment. I auditioned a few more before finding <a href="http://www.toneboosters.com/trackessentials/">Forex</a> from ToneBoosters. The sound is nice and it&#8217;s a bargain at under $35 for the whole bundle of plugs.</p>
<p><code><a href="http://www.ofrecordings.com/drums/drums_03_saturated.wav.mp3">Download audio file (drums_03_saturated.wav.mp3)</a><br /></code></p>
<p>For the last step, I reasoned that recording with a single mic placed farther away, you&#8217;d pick up a bit more room, so I added just a hint of reverb to the whole thing. Naturally I used the amazing freebie <a href="http://magnus.smartelectronix.com/#Ambience">Ambience</a> by Magnus of Smartelectronix.</p>
<p><code><a href="http://www.ofrecordings.com/drums/drums_04_verb.wav.mp3">Download audio file (drums_04_verb.wav.mp3)</a><br /></code></p>
<p>That&#8217;s it! The only further processing is to cut a hole for the vocals at 2.8k.</p>
<p>That&#8217;s my attempt at a 50s (but really 60s) drum sound. I&#8217;m still fiddling with the pop sound, but if I feel inspired I&#8217;ll write that up as well.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/1nhVpbShXT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2011/09/26/2-sounds-1-kit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>

<enclosure url="http://www.ofrecordings.com/drums/drums_02_compressed.wav.mp3" length="259551" type="audio/mpeg" />
<enclosure url="http://www.ofrecordings.com/drums/drums_03_saturated.wav.mp3" length="259551" type="audio/mpeg" />
<enclosure url="http://www.ofrecordings.com/drums/drums_04_verb.wav.mp3" length="259551" type="audio/mpeg" />
		<feedburner:origLink>http://www.ofrecordings.com/2011/09/26/2-sounds-1-kit/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/OfRecordings/~5/RNzDAiupvP0/drums_01_orig.wav.mp3" length="259551" type="audio/mpeg" /><feedburner:origEnclosureLink>http://www.ofrecordings.com/drums/drums_01_orig.wav.mp3</feedburner:origEnclosureLink></item>
		<item>
		<title>Ikea-hacking a better workspace</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/VsQs0r4hQ78/</link>
		<comments>http://www.ofrecordings.com/2011/06/26/ikea-hacking-a-better-workspace/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 20:10:54 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[besta]]></category>
		<category><![CDATA[desk]]></category>
		<category><![CDATA[ikea]]></category>
		<category><![CDATA[jerker]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=289</guid>
		<description><![CDATA[What&#8217;s better than slightly improving your workspace? Not much! Inspired by this Ikea hack, I tore down my old Jerker desk and set upon building a new one. &#160; The original hacker&#8217;s basic idea was to start with a Besta shelf unit, which has all kinds of add-ons. Saw your shelves down a little and [...]]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s better than slightly improving your workspace? Not much! Inspired by <a title="Hidden music desk (ikeahackers.net)" href="http://www.ikeahackers.net/2010/07/hidden-music-desk.html">this Ikea hack</a>, I tore down <a href="http://www.ofrecordings.com/2009/05/24/that-actually-went-pretty-well/">my old Jerker desk</a> and set upon building a new one.</p>
<p style="text-align: center;">&nbsp;</p>
<div id="attachment_291" class="wp-caption aligncenter" style="width: 570px"><a href="http://www.ofrecordings.com/wp-content/uploads/2011/06/IMAG0341.jpg"><img class="size-full wp-image-291 " title="New Ikea-hacked music desk" src="http://www.ofrecordings.com/wp-content/uploads/2011/06/IMAG0341.jpg" alt="" width="560" height="420" /></a><p class="wp-caption-text">Goodbye Jerker, hello Besta</p></div>
<p style="text-align: left;">The original hacker&#8217;s basic idea was to start with a Besta shelf unit, which has all kinds of add-ons. Saw your shelves down a little and mount them on rails from a matching drawer unit. I added a keyboard stand to mine, made out of a wall shelf and some Vika Kaj adjustable table legs. I also installed some Dioder multicolored LEDs, just cause they&#8217;re awesome.</p>
<p style="text-align: left;">The brilliant part is that, while you need to be able to reach all your controllers, you don&#8217;t need to reach them all <em>at the same time</em>. You can store them compactly tucked into the unit and just slide out the ones you want.  As awesome as my Jerker desk was, this setup has a significantly smaller footprint while keeping all my gadgets accessible.</p>
<p style="text-align: left;">If you are considering building this hack yourself, here are some tips:</p>
<ul>
<li>Sawing the shelves down to size was surprisingly easy, although it takes a while and my arm got kind of tired. You can use the bottom of the drawer from which you took the rails as a sizing guide&#8211; it&#8217;s exactly the right width. Since the shelves are fiberboard, the side facing down as you saw is going to get a little ugly, so plan accordingly.</li>
<li>Mounting the rails on the shelves was slightly more difficult than I anticipated.  First, it&#8217;s easy to get confused about how to orient the rails.  Second, it&#8217;s a little tricky to drill holes in such a thin piece.</li>
<li>The most difficult part was installing the other half of the rails into the shelf&#8211; it&#8217;s really hard to operate a screwdriver around the rear holes. Ironically, this is the part actually sanctioned by Ikea.</li>
<li>Binder clips can keep your cables neat as you slide stuff in and out.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/VsQs0r4hQ78" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2011/06/26/ikea-hacking-a-better-workspace/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2011/06/26/ikea-hacking-a-better-workspace/</feedburner:origLink></item>
		<item>
		<title>The new Beatport UI is fantastic.</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/Stb9_xbN8pk/</link>
		<comments>http://www.ofrecordings.com/2011/06/07/the-new-beatport-ui-is-fantastic/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 02:57:35 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[beatport]]></category>
		<category><![CDATA[good ui]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=284</guid>
		<description><![CDATA[Many years ago I wrote up a little rant on the awful Beatport user interface, so it&#8217;s only fair that I praise their new look. It&#8217;s fantastic: They fixed nearly every problem with the original. It&#8217;s made in HTML5 instead of Flash. Text is far more readable. Forward/back buttons and bookmarks work. It uses your [...]]]></description>
			<content:encoded><![CDATA[<p>Many years ago I wrote up <a href="http://www.ofrecordings.com/2008/04/04/dear-beatport-please-be-slightly-less-terrible/">a little rant</a> on the awful Beatport user interface, so it&#8217;s only fair that I praise their new look. It&#8217;s fantastic:</p>
<div id="attachment_286" class="wp-caption aligncenter" style="width: 695px"><a href="http://www.ofrecordings.com/wp-content/uploads/2011/06/new_beatport.png"><img class="size-full wp-image-286 " title="new Beatport" src="http://www.ofrecordings.com/wp-content/uploads/2011/06/new_beatport.png" alt="new Beatport" width="685" height="367" /></a><p class="wp-caption-text">The new Beatport design is fabulous.</p></div>
<p>They fixed nearly every problem with the original. It&#8217;s made in HTML5 instead of Flash. Text is far more readable. Forward/back buttons and bookmarks work. It uses your browser&#8217;s scrolling instead of the proprietary Flash widget scrolling. And although it&#8217;s labeled &#8220;beta,&#8221; it&#8217;s far less buggy than the official Flash-based interface.</p>
<p>I should also mention that it&#8217;s beautiful: clean, modern, and stylish. Everyone involved with the redesign, you deserve a big old high-five.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/Stb9_xbN8pk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2011/06/07/the-new-beatport-ui-is-fantastic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2011/06/07/the-new-beatport-ui-is-fantastic/</feedburner:origLink></item>
		<item>
		<title>Ohm64 Live remote script for DJing</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/zhhSWcYzk9Q/</link>
		<comments>http://www.ofrecordings.com/2010/12/29/ohm64-live-remote-script-for-djing/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 23:32:54 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Gear]]></category>
		<category><![CDATA[ableton live]]></category>
		<category><![CDATA[djing]]></category>
		<category><![CDATA[livid]]></category>
		<category><![CDATA[mixer]]></category>
		<category><![CDATA[ohm64]]></category>
		<category><![CDATA[remote script]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=270</guid>
		<description><![CDATA[I got an Ohm64!  Dang it&#8217;s pretty. There&#8217;s an Ableton Live remote script for the Ohm64 kicking around, and it&#8217;s pretty good.  But I wanted a slightly different setup, so I created an alternate script.  The basic idea is this: the left is like a DJ mixer.  The middle launches clips.  The right is for [...]]]></description>
			<content:encoded><![CDATA[<p>I got an Ohm64!  Dang it&#8217;s pretty.</p>
<p style="text-align: center;"><a href="http://www.ofrecordings.com/wp-content/uploads/2010/12/ohm64.jpg"><img class="aligncenter size-full wp-image-276" title="Ohm 64" src="http://www.ofrecordings.com/wp-content/uploads/2010/12/ohm64.jpg" alt="" width="614" height="367" /></a></p>
<p>There&#8217;s an <a href="http://max4live.info/content/max4liveinfo-ohm64live-journey-live-midi-remote-scripts-controls-and-components">Ableton Live remote script </a>for the Ohm64 kicking around, and it&#8217;s pretty good.  But I wanted a slightly different setup, so I created an alternate script.  The basic idea is this: the left is like a DJ mixer.  The middle launches clips.  The right is for effects.</p>
<p>Specifically:</p>
<ul>
<li>The <strong>faders and knobs on the left control the levels and EQ</strong> on the first four tracks.  I wanted dedicated EQ knobs for each track, like a DJ mixer, so I could do tricks like bass swapping.  If you drop an EQ3 on your track, the knobs will map to low/mid/high just like you&#8217;d expect.  If you drop in an EQ8, I think they&#8217;ll map to the first three EQs.</li>
<li>The <strong>buttons on the left cue the first four tracks</strong>, so you can easily cue any combination of tracks.  To enable cuing multiple tracks at once, you need to go to Preferences &gt; Record Warp Launch, find &#8220;Exclusive,&#8221; and disable &#8220;Solo.&#8221;</li>
<li>The<strong> knobs and faders on the right control the current selected effect</strong>, except for</li>
<li>The <strong>last fader</strong>, which <strong>controls master volume</strong>.  I decided that I needed to adjust master volume more often than I needed all eight controls in a rack.</li>
<li>The <strong>buttons on the right select the active track</strong> from the first four tracks.  My reasoning for putting this on the right was so that the light would indicate which track&#8217;s effects you&#8217;re controlling.</li>
<li>The <strong>first two transport buttons control tempo</strong>. The F4 button decreases tempo by 1 BPM and F5 increases tempo.  I never hit start and stop during performance, but I often want to gradually change tempo.</li>
</ul>
<p>Everything else is the same as the original remote script:</p>
<ul>
<li>The <strong>grid launches clips</strong>.</li>
<li>The <strong>crossfader crossfades</strong>.</li>
<li>The remaining four <strong>transport buttons move the active rectangle</strong>.</li>
</ul>
<p>Download the script here: <a href="http://www.ofrecordings.com/scripts/Ohm64DJ.zip">Ohm64DJ.zip</a></p>
<p>To install:</p>
<ul>
<li>Unzip the file.</li>
<li>Find and open your Live app bundle.</li>
<li>Go to Contents -&gt; App-Resources -&gt; MIDI Remote Scripts.</li>
<li>Drop the &#8220;Ohm64DJ&#8221; directory there.</li>
</ul>
<p>My alternate remote script shows up as &#8220;Ohm64DJ,&#8221; so you can keep both around and switch between them as needed.  (It&#8217;s actually really annoying to open up preferences in order to switch.)</p>
<p>Since this script controls only four tracks, there are 24 unmapped buttons in the grid, which seems sort of silly.  But I&#8217;m sure I&#8217;ll come up with something useful for them.</p>
<p>Finally, huge thanks to <a href="http://max4live.info/content/max4liveinfo-ohm64live-journey-live-midi-remote-scripts-controls-and-components">Michael at Max4live.info</a> and <a href="http://remotescripts.blogspot.com/">Hanz at _Framework</a> for publishing their scripts and findings.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/zhhSWcYzk9Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2010/12/29/ohm64-live-remote-script-for-djing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2010/12/29/ohm64-live-remote-script-for-djing/</feedburner:origLink></item>
		<item>
		<title>Echo AudioFire2 mini-review, plus bonus NI rant</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/DzYj60WbJ3w/</link>
		<comments>http://www.ofrecordings.com/2010/11/07/echo-audiofire2-mini-review-plus-bonus-ni-rant/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 01:30:27 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Gear]]></category>
		<category><![CDATA[audio kontrol 1]]></category>
		<category><![CDATA[audiofire2]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[grado]]></category>
		<category><![CDATA[native instruments]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=258</guid>
		<description><![CDATA[I just picked one up last week.  Here&#8217;s what I like so far: Firewire.  This leaves both USB ports free (Apple&#8217;s pretty stingy with the connectivity).  Also, I&#8217;ve heard rumors that the MacBook Pro underpowers the USB port.  Maybe I&#8217;m making this up, but I think the more stringent power requirements for Firewire encourage reliability. [...]]]></description>
			<content:encoded><![CDATA[<p>I just picked one up last week.  Here&#8217;s what I like so far:</p>
<ul>
<li><strong>Firewire</strong>.  This leaves both USB ports free (Apple&#8217;s pretty stingy with the connectivity).  Also, I&#8217;ve heard rumors that the MacBook Pro underpowers the USB port.  Maybe I&#8217;m making this up, but I think the more stringent power requirements for Firewire encourage reliability.</li>
<li><strong>Balanced TRS outs</strong>.  Seems mundane, but lots of portable audio interfaces in this price range have RCA outs, which boggles the mind.</li>
<li><strong>Independent headphone out</strong>, which is crucial for performance.</li>
<li><strong>Stable drivers</strong>&#8211; so far at least.  I haven&#8217;t had it long, but I&#8217;ve used it a lot without a glitch.  Contrast that with the nightmare that was the Audio Kontrol 1 drivers (on that more below)</li>
<li><strong>Hopelessly sexy packaging.</strong> It&#8217;s tiny and light with a sturdy yet pretty aluminum case.</li>
</ul>
<p style="text-align: center;">
<div id="attachment_262" class="wp-caption aligncenter" style="width: 512px"><a href="http://www.ofrecordings.com/wp-content/uploads/2010/11/echo_audiofire2.jpg"><img class="size-full wp-image-262   " title="Echo AudioFire2" src="http://www.ofrecordings.com/wp-content/uploads/2010/11/echo_audiofire2.jpg" alt="Echo AudioFire2" width="502" height="265" /></a><p class="wp-caption-text">Left bad, right good.</p></div>
<p>Here&#8217;s what&#8217;s not so awesome:</p>
<ul>
<li><strong>1/8&#8243; headphone jack</strong>.  All my headphones are 1/4&#8243;.  Every 1/4&#8243; &#8211; 1/8&#8243; adapter I&#8217;ve ever had fell apart in weeks.  But Grado makes <a href="http://www.amazon.com/Grado-Mini-Adaptor-Cable-Inch/dp/B001DK1ZVO">this nice long one</a>; seems like that should relieve some of the strain.</li>
<li><strong>Awkward breakout cable</strong> for MIDI (and S/PDIF, but who uses that?)</li>
</ul>
<p>It&#8217;s early yet, but I&#8217;m very happy so far and would recommend the AudioFire2 to any performer.</p>
<p>Some background: I got a Native Instruments Audio Kontrol 1 about four years ago.  Feature-wise, it&#8217;s pretty hot, but it&#8217;s been total driver hell.  On my old laptop, it tooks weeks of tweaking settings to get it stable; I even had to uninstall my network drivers.  On my new laptop, no amount of tweaking worked. I&#8217;d get hard freezes randomly.</p>
<p>Writing application software, which Native is good at, is very dissimilar from writing drivers.  The AK1 was, I believe, Native&#8217;s first hardware audio interface.  I guess I should have anticipated some rockiness early on, but after four years of driver updates it&#8217;s as bad as ever.  Echo, on the other hand, literally <a href="http://www.echoaudio.com/audio_interfaces_allproducts.htm">make nothing but audio interfaces</a>.  That was a big factor for me when shopping around.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/DzYj60WbJ3w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2010/11/07/echo-audiofire2-mini-review-plus-bonus-ni-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2010/11/07/echo-audiofire2-mini-review-plus-bonus-ni-rant/</feedburner:origLink></item>
		<item>
		<title>Soccius – “Africana” remix</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/kltwSDBRMhw/</link>
		<comments>http://www.ofrecordings.com/2010/10/25/soccius-africana-remix/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 05:40:15 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Of music]]></category>
		<category><![CDATA[bad shoes records]]></category>
		<category><![CDATA[remix]]></category>
		<category><![CDATA[soccius]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=254</guid>
		<description><![CDATA[Check out my remix of &#8220;Africana&#8221; by Soccius, recently released by Bad Shoes Records.  Actually, the whole thing is pretty dang tasty.]]></description>
			<content:encoded><![CDATA[<p>Check out my remix of &#8220;Africana&#8221; by Soccius, <a href="http://www.badshoesrecords.com/2010/10/zoocolorsremixes/">recently released by Bad Shoes Records</a>.  Actually, the whole thing is pretty dang tasty.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/kltwSDBRMhw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2010/10/25/soccius-africana-remix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2010/10/25/soccius-africana-remix/</feedburner:origLink></item>
		<item>
		<title>My latest band-crush</title>
		<link>http://feedproxy.google.com/~r/OfRecordings/~3/eeGZKXBsSSA/</link>
		<comments>http://www.ofrecordings.com/2010/09/25/my-latest-band-crush/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 22:28:54 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[band-crush]]></category>
		<category><![CDATA[no.mad records]]></category>
		<category><![CDATA[shape of fear and bravery]]></category>
		<category><![CDATA[suz]]></category>

		<guid isPermaLink="false">http://www.ofrecordings.com/?p=248</guid>
		<description><![CDATA[It&#8217;s Suz: www.youtube.com/watch?v=svnAGMyNB4A Information seems to be scarce and in Italian.  I&#8217;m not even sure if Suz is the name of the band or the singer.  But I&#8217;m quite enjoying this record.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s Suz:</p>
<p><a href="http://www.youtube.com/watch?v=svnAGMyNB4A">www.youtube.com/watch?v=svnAGMyNB4A</a></p>
<p>Information seems to be scarce and <a href="http://www.shapeofsuz.it/">in Italian</a>.  I&#8217;m not even sure if Suz is the name of the band or the singer.  But I&#8217;m quite enjoying <a title="Shape Of Fear And Bravery (Amazon)" href="http://www.amazon.com/Fear-Feat-Alessiomanna/dp/album-redirect/B002U0AYCM/ref=sr_1_album_1?ie=UTF8&amp;qid=1285453598&amp;sr=1-1">this record</a>.</p>
<img src="http://feeds.feedburner.com/~r/OfRecordings/~4/eeGZKXBsSSA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ofrecordings.com/2010/09/25/my-latest-band-crush/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ofrecordings.com/2010/09/25/my-latest-band-crush/</feedburner:origLink></item>
	</channel>
</rss>

