<?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; javascript</title>
	<atom:link href="http://createdigitalmusic.com/tag/javascript/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, 19 Mar 2010 20:05:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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>
		<item>
		<title>Lily: Browser Beatboxes and the Rebirth of Max-Like Patching</title>
		<link>http://createdigitalmusic.com/2007/08/23/lily-browser-beatboxes-and-the-rebirth-of-max-like-patching/</link>
		<comments>http://createdigitalmusic.com/2007/08/23/lily-browser-beatboxes-and-the-rebirth-of-max-like-patching/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 14:39:21 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[Max/MSP]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[trends]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://createdigitalmusic.com/2007/08/23/lily-browser-beatboxes-and-the-rebirth-of-max-like-patching/</guid>
		<description><![CDATA[Visual programming or &#8220;patching&#8221;, producing custom software by connecting on-screen objects with patch cords, until recently had only niche appeal. The domain largely of academic computer musicians, patching was scoffed at by computer science departments and unknown to everyone else. Lately, though, something very strange has been happening: this technique, popularized by experimental music synthesists, [...]]]></description>
			<content:encoded><![CDATA[<p>Visual programming or &#8220;patching&#8221;, producing custom software by connecting on-screen objects with patch cords, until recently had only niche appeal. The domain largely of academic computer musicians, patching was scoffed at by computer science departments and unknown to everyone else. Lately, though, something very strange has been happening: this technique, popularized by experimental music synthesists, is being reborn in the Web age.</p>
<p><B>Patching for the Web</b></p>
<p>Patching software goes back to the 1980s, best known in its incarnation in Max (later Max/MSP, later Max/MSP/Jitter and Pure Data), software for making music and multimedia. Max is well known in these parts, not so well among the general public. But its basic patching metaphor, itself inspired by early hardware synthesizers like the Moog and Buchla, has filtered into other software.</p>
<p>First, Apple quietly acquired the developer of a little-known live visual/VJ app called Pixelshox, transformed it into a new app called Quartz Composer, made it part of the Mac OS X developer tools, and made it central to their UI efforts. One day, a tiny VJ app with a cult following, the next, central to Cupertino&#8217;s OS strategy? Interesting.</p>
<p><img id="image2447" src="http://media.createdigitalmedia.net/cdmu/images//2007/08/yahoopipes.jpg" alt="Yahoo Pipes" /></p>
<div class="imgcaption"><B>Patching cords together mimics the flow of Web data:</b> Yes, the patching interface is intuitive, even for Web development beginners. The source: music software, and before that, vintage hardware synthesizers. Who would have imagined Moogs and Buchlas would some day spawn Web apps? Here: Yahoo Pipes.</div>
<p>Quartz Composer didn&#8217;t exactly take the world by storm, but it did update Max&#8217;s taking on patching with a pretty, zoomable patching interface. Someone must have noticed, because more recently mighty Yahoo unveiled <a href="http://pipes.yahoo.com/pipes/">Yahoo Pipes</a>, an online tool for creating Web remixes, with an almost pixel-perfect, color-exact clone of the QC interface. (Imitation is the sincerest form of Web 2.0, apparently.) Microsoft&#8217;s <a href="http://www.popfly.ms/">Popfly</a> tool is a bit different, but even it uses an object and patch-cord metaphor.</p>
<p><B>Lily, JavaScript Patching</b></p>
<p><img id="image2446" src="http://media.createdigitalmedia.net/cdmu/images//2007/08/lilybeatbox.jpg" alt="Lily JavaScript development environment, Beat box" /></p>
<div class="imgcaption">The Lily interface is unlikely to replace Max/MSP any time soon, but the inspiration is very clear &#8212; and the fact that a simple Max clone with Web functionality could be produced with JavaScript says a lot about the future of even Max.</div>
<p>Enter Lily: Lily is a JavaScript-powered patching environment. Lily-created software can run standalone, as a Firefox plug-in, or even in a browser. Much of the functionality is Web-focused, as you&#8217;d expect: modules for mashing-up data from Amazon, Flickr, Wikipedia, Yahoo, and the like, widget support for popular JavaScript library elements, SQLite database storage and file system access &#8212; all good stuff, but primarily Web-based.</p>
<p><a href="http://www.lilyapp.org/about/">Lily</a></p>
<p>Where things get especially interesting is that Lily has some multimedia support:</p>
<p><UL><LI><B>Graphics:</b> SVG, canvas elements.</li>
<p><LI><B>Multimedia:</b> Audio and video file support.</li>
<li><B>Connectivity:</b> <a href="http://blog.lilyapp.org/2007/05/lily_osc_1.html">OpenSoundControl</a> support, which in turn could be used to connect to tools like Max/MSP, Flash, Processing, Reaktor, Traktor DJ, and others.</li>
<p><LI><B>Custom modules:</b> Code your own modules in JavaScript.</li>
</ul>
<p>There&#8217;s even a demo of Lily <a href="http://blog.lilyapp.org/2007/04/beatbox_demo.html">being used as a Beatbox</a>.<span id="more-2445"></span></p>
<p>So, will there be a Web-based Max killer? Quite the opposite. As patching interfaces spread, they only serve to validate the idea of patching in the first place. Web developers get introduced to the concept, and meanwhile, musicians schooled in Max have new, more accessible Web tools. Lily could be useful for Web-based, simple patches that complement software like Max and Reaktor: speedy beat calculators, or, via OSC, perhaps even control apps. (Hmm&#8230; your Flickr stream, controlling a Max/MSP patch?) And meanwhile, this also validates the Max approach of blending patching with coding in languages like JavaScript and Java, both of which are possible in the current release. We also have a new version of Max to look forward to, as confirmed by Cycling &#8216;74, which should continue to expand on these ideas.</p>
<p>Lily looks really interesting, but I&#8217;d like to see more. The feature set in JavaScript is woefully limited compared even to Flash, let alone what&#8217;s possible in Java. It&#8217;s too bad these other environments haven&#8217;t developed toolkits that allow patching for modular combinations, but still let you easily code when you like. Even Max falls short here: much of Max&#8217;s capabilities require messy coding in C, so once you get to that point, you probably don&#8217;t want to be using Max unless you&#8217;ve got a Cycling &#8216;74 paycheck coming. (On the Pure Data side, even, where coding is open source, efforts to integrate Ruby and Python have proven less fruitful for multimedia than simpling coding in something like Java or C#. And all of these tend to separate coding from patching; we haven&#8217;t seen a good combination.)</p>
<p>Lily is still in development, with a pre-release beta coming soon, so we have plenty of time to think about what it&#8217;s for. But one thing&#8217;s for certain: patching is here to stay.</p>
<p>Thanks to Ronnie at the wonderful <a href="http://rekkerd.org/">Rekkerd.org</a> and to <a href="http://www.marcoraaphorst.nl/2007/08/23/muziek-via-de-browser-lily/">Marco Raaphorst, who has a write-up in Dutch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://createdigitalmusic.com/2007/08/23/lily-browser-beatboxes-and-the-rebirth-of-max-like-patching/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
