<?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>Create Digital Music &#187; Ruby</title>
	<atom:link href="http://createdigitalmusic.com/tag/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://createdigitalmusic.com</link>
	<description>The latest gear, software, and techniques for electronic music production and performance</description>
	<lastBuildDate>Fri, 20 Nov 2009 17:06:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Code Your Own Sequencer? Archaeopteryx Generates MIDI with Ruby</title>
		<link>http://createdigitalmusic.com/2009/01/13/code-your-own-sequencer-archaeopteryx-generates-midi-with-ruby/</link>
		<comments>http://createdigitalmusic.com/2009/01/13/code-your-own-sequencer-archaeopteryx-generates-midi-with-ruby/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 21:58:10 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Ableton-Live]]></category>
		<category><![CDATA[alternative-sequencers]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[interactive-music]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[oddities]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[propellerhead]]></category>
		<category><![CDATA[Reason]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sequencers]]></category>

		<guid isPermaLink="false">http://createdigitalmusic.com/2009/01/13/code-your-own-sequencer-archaeopteryx-generates-midi-with-ruby/</guid>
		<description><![CDATA[    Archaeopteryx: Ruby Self-Generating Pattern Sequencer from giles goat boy on Vimeo. 
Who needs NAMM? Well, sure, you could wait 48 hours for the mind-bogglingly awesome announcements I&#8217;m sure we&#8217;ll be scooping on this site know absolutely nothing about. But that&#8217;s 48 hours you could be spending right now, coding your own [...]]]></description>
			<content:encoded><![CDATA[<p><object width="579" height="386"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=720761&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=720761&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="579" height="386"></embed></object>    <br /><a href="http://vimeo.com/720761">Archaeopteryx: Ruby Self-Generating Pattern Sequencer</a> from <a href="http://vimeo.com/giles">giles goat boy</a> on <a href="http://vimeo.com">Vimeo</a>. </p>
<p>Who needs NAMM? Well, sure, you could wait 48 hours for the mind-bogglingly awesome announcements <strike>I&rsquo;m sure we&rsquo;ll be scooping on this site</strike> know absolutely nothing about. But that&rsquo;s 48 hours you could be spending right now, coding your own sequencer. And unless Ableton and Steinberg and Apple and Digidesign and all are reading your thoughts, it may just do something they haven&rsquo;t imagined yet.</p>
<p>Ah, you say, but wouldn&rsquo;t that mean learning something ancient and arcane like C?</p>
<p>No, I&rsquo;d say. You can do it Ruby, and impress that cute Web developer at the local indie coffee shop with the hip, new programming languages you&rsquo;re using. (The Ruby developers in this crowd, I&rsquo;m sure, have already skipped to the juicy bits, so let&rsquo;s continue with this absurd role play.)</p>
<p>Ah, you say, but I need to learn to play an instrument and I&rsquo;ve never coded before.</p>
<p>Fine, I say. But you can still rest easy at night knowing Giles Bowkett is doing it for you.</p>
<p> <span id="more-4734"></span>
<p>Giles Bowkett was seen, well, earlier today on this site using Ruby to create his own callbacks in the <a href="http://createdigitalmusic.com/2009/01/13/alternative-sequencers-elysium-generative-mac-app-and-the-joy-of-hex/">hexagonal grid generative sequencer Elysium</a>. But he has a project of his own, coding something called Archaeopteryx. Coded in Ruby, which aside from being hip really does do a lot in a tiny amount of code, Archaeopteryx creates systems for &ldquo;auto-generating, self modifying music.&rdquo; Using inter-app MIDI on the Mac (possible via other methods on Linux and Windows), he drives traditional sound sources like Reason. That means the really ugly work of coding your own DSP is left to the professionals, while the compositional and creative work of figuring out which notes to play is entirely in his hands. And he evidently plans to open source the whole thing &ndash; giving entertaining talks on Ruby coding along the way at events like RubyFringe.</p>
<p>I think this is fantastic, and it demonstrates that making programming more accessible helps people who otherwise would never try coding their own projects do just that. That should inject more creativity and difference into the world of computer music-making, which is good for even the people who don&rsquo;t ever touch this stuff. And if you&rsquo;re learning Ruby as your day job, it gives you something really cool to do with it at night &ndash; provided you can stand at looking at still more code until you quit your day job, of course.</p>
<p>More on the topic:</p>
<p><a href="http://gilesbowkett.blogspot.com/2008/01/drive-propellerhead-reason-with-ruby.html">Drive Propellerhead Reason With Ruby</a></p>
<p><a href="http://gilesbowkett.blogspot.com/2008/02/archaeopteryx-ruby-midi-generator.html">Archaeopteryx: A Ruby MIDI Generator</a></p>
<p>And a full RubyFringe presentation with slides and all (can&rsquo;t embed it, but worth a look if you&rsquo;re into Ruby):</p>
<p><a href="http://www.infoq.com/presentations/archaeopteryx-bowkett">Archaeopteryx: A Ruby MIDI Generator</a> [InfoQ]</p>
<p> <object width="579" height="388"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2008229&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2008229&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="579" height="388"></embed></object>  <br /><a href="http://vimeo.com/2008229">Archaeopteryx Activating/Deactivating Clips In Live</a> from <a href="http://vimeo.com/giles">giles goat boy</a> on <a href="http://vimeo.com">Vimeo</a>.
<p>He also goes into some thoughts about open source, business models, funding, and why Sasha should have open sourced the commissioned controller project. I stay out of things involving money or business models, though, because money sees me and goes off to cry itself to sleep in a corner.</p>
<p>Great stuff, Giles! I&rsquo;m still partial to Java because I think it&rsquo;s a more versatile platform overall &ndash; and I&rsquo;m looking into ways of using Groovy to avoid the fingers-falling-off amount of code Java tends to require. But this gives me still more incentive to keep working. Thanks to composer Ted Pallas for the tip!</p>
<p>And I still think there&rsquo;s a great argument for having simple scripting capabilities in tools like Ableton Live. Sometimes writing out code is better than assembling graphical patches. As code becomes more prevalent in our society, I expect it will pop up &ndash; and as Giles proves, there&rsquo;s nothing stopping you from making it happen yourself. Even Giles took a space of a couple of years to get his project along. Spare time, no matter how tiny and fragmented, can be a powerful thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://createdigitalmusic.com/2009/01/13/code-your-own-sequencer-archaeopteryx-generates-midi-with-ruby/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Alternative Sequencers: Elysium Generative Mac App and the Joy of Hex</title>
		<link>http://createdigitalmusic.com/2009/01/13/alternative-sequencers-elysium-generative-mac-app-and-the-joy-of-hex/</link>
		<comments>http://createdigitalmusic.com/2009/01/13/alternative-sequencers-elysium-generative-mac-app-and-the-joy-of-hex/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 17:08:13 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[alternative-interfaces]]></category>
		<category><![CDATA[alternative-sequencers]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[brian-eno]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[downsampled]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[geometry]]></category>
		<category><![CDATA[hexagonal]]></category>
		<category><![CDATA[interface-design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sequencers]]></category>

		<guid isPermaLink="false">http://createdigitalmusic.com/2009/01/13/alternative-sequencers-elysium-generative-mac-app-and-the-joy-of-hex/</guid>
		<description><![CDATA[ 
Switching tools isn&#8217;t a panacea, but it can inspire new ideas, by changing the way you structure your music. Elysium is a powerful new sequencer in development for the Mac the creates generative patterns on a beehive-shaped hexagonal grid. For the hardcore, you can even extend the tool with Ruby and JavaScript.
Elysium is a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.createdigitalmedia.net/cdmu/images/2009/01/elysium_screen.jpg" /> </p>
<p>Switching tools isn&rsquo;t a panacea, but it can inspire new ideas, by changing the way you structure your music. Elysium is a powerful new sequencer in development for the Mac the creates generative patterns on a beehive-shaped hexagonal grid. For the hardcore, you can even extend the tool with Ruby and JavaScript.</p>
<p>Elysium is a MIDI sequencer only: it has no sound generation facility of its own. But that makes it an ideal complement to your existing tools and favorite synths; the creator shows it off with Apple Logic Studio (Sculpture physical modeling, anyone?) and Native Instruments Kore.</p>
<p><a href="http://lucidmac.com/products/elysium/">Elysium</a> [Mac-only public beta, PPC/Intel; 10.5 required]</p>
<p>Most sequencers work like a variation on a score: you compose events in time and it renders those events in precisely the same order each time. Elysium is generative: instead of creating a score, you create a system, and events are determined by the rules of the system. That means the exact deployment of events in time is variable, and things may not sound the same way &ndash; or over the same span of time &ndash; twice.</p>
<p>To do this, Elysium employs layers, cells, tokens, and callbacks. Huh?</p>
<ul>
<li><strong>Layers </strong>are roughly equivalent to a track in a traditional sequencer; it&rsquo;s a single grid of cells, each containing a note, transmitted on one MIDI channel. That means, most likely, you&rsquo;ll use a different layer for each sound you want to generate in your synth or host. </li>
<li><strong>Cells</strong> are arrayed in a 17&#215;12 honeycomb (a hexagonal grid), each transmitting one MIDI note. They&rsquo;re organized in a harmonic table &ndash; the three adjacent hexagons around a single vertex, for instance, form a triad. </li>
<li><strong>Tokens </strong>are the things that actually do stuff &ndash; they&rsquo;re what make Elysium generative and interactive. Functions currently include Start/Stop, Note (plays an actual note), Rebound (changes direction), Absorb, Split, and Spin (impact movement). Arrange these on the grid, and instead of playing left-to-right as a traditional sequencer would, playback will navigate the spaces on the grid &ndash; potentially in unusual and interesting ways. To edit tokens, Elysium uses floating inspector palettes for setting parameters. </li>
<li><strong>Callbacks</strong> give you the power to define your own musical behaviors by scripting them, making your musical world more variable. Elysium uses the same JavaScript interpreter as the Safari/WebKit browser, so you can code in JavaScript. Ruby lovers can even work in MacRuby. These code snippets don&rsquo;t have to be complex: on the contrary, they&rsquo;re quite simple and friendly to non-programmers, tantamount to saying &ldquo;Hey, sequencer, I command you to do THIS!&rdquo; </li>
</ul>
<p> <span id="more-4733"></span>
<p>Side note: I love the idea of scripting engines. Back in the day, HyperCard&rsquo;s HyperTalk had simple, scriptable events that even kids could learn. There&rsquo;s some real potential there, as we&rsquo;ve seen in Native Instruments&rsquo; Kontakt sampler. If you&rsquo;re afraid of code, <strong>don&rsquo;t be</strong>. Even if you do nothing but copy and paste some useful code borrowed from someone else, you can benefit from a scripting engine. Change one variable to suit your purposes &ndash; even one number in that code &ndash; and you&rsquo;ve just become a programmer. (Ableton? Ableton Live scripting? Please?)</p>
<p>Anyway, the resulting sequencer navigates through musical materials interactively. Add some layers, and you can create something quite dynamic. If that sounds as though it could become monotonous, consider this: you could use Elysium to trigger a sampler as well as notes on a synth, and you could modulate a synth&rsquo;s timbres while Elysium drives notes. There&rsquo;s some serious potential.</p>
<h3>Musical Applications</h3>
<p><object width="579" height="326"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2424852&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2424852&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=CC0000&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="579" height="326"></embed></object>    <br /><a href="http://vimeo.com/2424852">Elysium: Probabilistic Arp</a> from <a href="http://vimeo.com/giles">giles goat boy</a> on <a href="http://vimeo.com">Vimeo</a>. </p>
<p>Giles Bowkett has a fantastic hands-on feature where he couple Elysium with some hardware sound sources:</p>
<p><a href="http://gilesbowkett.blogspot.com/2008/12/driving-korg-hardware-with-elysium.html">Driving Korg Hardware With Elysium</a> [Giles Bowkett Blog]</p>
<p>He also makes note of the similarity to the wonderful-looking <a href="http://technabob.com/blog/2007/09/08/reactogon-interactive-sequencer-reminds-me-of-star-trek/">reactOgon</a> interface, which took this concept to a tangible table. That means that the actions were actually physical objects placed on the grid that controlled movement &ndash; brilliant, though apparently no one knows what happened to the project. (Too bad. I can imagine people playing Warhammer and performing music at the same time.)</p>
<p>There&rsquo;s a separate hands-on employing <a href="http://mmi-music.blogspot.com/2008/11/glockenfunmachine.html">Ableton Live, by mmi</a>.</p>
<p>If you want to try this yourself, visit the Elysium project site and be sure to try the:</p>
<p><a href="http://lucidmac.com/screencasts/elysium/intro1/index.html">Introductory screencast</a></p>
<h3>Going Hexagonal</h3>
<p>All of this brings us to the question of why hexagonal grids are so cool. It&rsquo;s been on my mind lately as I just read a fantastic chapter in the book <a href="http://www.amazon.com/gp/product/1584505273?ie=UTF8&amp;tag=createdigital-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1584505273">Game Programming Gems 7</a><img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=createdigital-20&amp;l=as2&amp;o=1&amp;a=1584505273" width="1" border="0" />, a book that could easily be titled &ldquo;A Collection of Really Cool Ideas from Game Programmers.&rdquo; Check out the chapter &ldquo;For Bees and Gamers: How to Handle Hexagonal Tiles.&rdquo; Basically, the advantages of a hexagonal grid as opposed to our usual square one:</p>
<ul>
<li>It&rsquo;s the most efficient regular tessellation &ndash; it has the highest packing density and uses the least perimeter, making for an elegant, organic pattern </li>
<li>Adjacent tiles can be described as defining a vertex (a point) or a whole edge, and you still get the same number of tiles &ndash; six. On a grid of squares, there are only four squares that are adjacent based on side (the ones above, to the right, to the left, an below), but eight squares sharing a vertex (the ones on the diagonal). That makes navigation through the grid somewhat confusing &ndash; though it does enable the games of chess and checkers. </li>
<li>The distance from one tile to an adjacent tile is the same, whichever direction you go. </li>
</ul>
<p>This comes up in game design because hexagonal grids work well for mapping movements of &hellip; well, little dudes fighting in strategy games. The advantage is the inverse of what you get in checkers and chess: you can define one kind of movement from a tile to an adjacent tile.</p>
<p>You can perhaps already see what this means for music. It means hex grids are efficient, they allow unambiguous movement to adjacent tiles, and they form neat little triads and dyads that can make sense harmonically when we&rsquo;re talking pitch.</p>
<p>At the same time, these seem advantages pose some challenges. The hex grid is so regular, it&rsquo;s a little hard to look at. There&rsquo;s a reason pianos use keys of different sizes and colors. It would be possible to use clever coloring schemes to help with this, though the shape would remain regular (and thus a little hard to look at). Elysium does have a color scheme applied, but it certainly requires some adjustment; perhaps the ability to shift on-the-fly to see pitch relationships could help.</p>
<p>I do also wonder if there aren&rsquo;t ways of using these kinds of grids aside from just putting a note on each tile. Elysium does have more going on, but you can&rsquo;t see it. It&rsquo;s all hidden behind the tiles in scripts and slightly hard-to-recognize icons. It&rsquo;d be great to see more visual representation of movement and interaction. This app is new, so perhaps there&rsquo;s still time.</p>
<p>That said, I think the capabilities here are already amazing. I was a skeptics of hexagonal grids when I first saw them, feeling as though I&rsquo;d just been dropped on an alien starship. (Greetings, fellow Cardassians!) But there is something behind the geometries we use. And I have no doubt that a lot of future experimentation with sequencers will involve more than just grids that read, as piano rolls and notation once did, in linear fashion from left to right.</p>
<h3>Related</h3>
<p>Giles Bowkett also investigates <a href="http://gilesbowkett.blogspot.com/2008/12/erratic-probabilistic-vst-drum-machine.html">the Erratic probabilistic VST drum machine</a> for Windows, which he says is better suited to drum parts than Elysium is. (Erratic is the plug-in&rsquo;s name &ndash; not that I haven&rsquo;t occasionally encountered an erratic plug-in.)</p>
<p><a href="http://createdigitalmusic.com/2008/08/13/nodal-generative-music-software-for-mac-free-for-non-commercial-use/">Nodal</a>, like Elysium, is Mac only, free, and uses a graphical interface to create interactive rules. Interestingly, it uses square grids to Elysium&rsquo;s hex grid and provides schematic-like flow diagrams of movement. Each approach, I think, has some advantages and tradeoffs.</p>
<p><a href="http://createdigitalmusic.com/2009/01/08/generative-music-interfaces-of-the-future-look-to-games/">Kodu by Microsoft Research</a> uses interactive rules for game design, not music, but I can see the interface working well for musical applications, too. What really makes it work is that you have immediate visual feedback as to what you&rsquo;ve created, which makes the kid doing the driving very pleased, indeed.</p>
<p><a href="http://createdigitalmusic.com/2008/12/23/intermorphic-mixtikl-arrives-mobile-and-desktop-generative-creative-music-suite/">Intermorphic&#8217;s own generative suite</a> draws upon a lineage that includes Eno&rsquo;s landmark <em>Ambient Music I</em>. It&rsquo;s far less graphical,but can be used to create sophisticated systems, interfaces with mobile devices, and provides deployment options (so other people can hear your generative work and not just a recorded take).</p>
<p>And be sure to check out the <a href="http://createdigitalmusic.com/tag/generative/">generative tag on CDM</a>.</p>
<p>For a hardware device using this scheme (and with a nice solution to the color / mapping challenges), check out the C-THRU Axis.</p>
<p><a href="http://www.c-thru-music.com/cgi/?page=prod_axis-64">The AXiS-64 pro MIDI controller</a> [Product Page @ C-THRU MUSIC]</p>
<p><a href="http://createdigitalmusic.com/2007/01/31/zillion-keyed-keyboards-new-musical-layouts-and-microtonal-gadgets/">Zillion-Keyed Keyboards, New Musical Layouts, and Microtonal Gadgets</a> [CDM, on NAMM 07]</p>
<p>(thanks, MattH, for the reminder to get this bit in, too!)</p>
<p><img src="http://www.createdigitalmusic.com/images/2007/jan/cthruaxis2.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://createdigitalmusic.com/2009/01/13/alternative-sequencers-elysium-generative-mac-app-and-the-joy-of-hex/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
