<?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>Crayolon &#187; code</title>
	<atom:link href="http://crayolon.net/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://crayolon.net</link>
	<description></description>
	<lastBuildDate>Tue, 31 Aug 2010 13:16:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PortaMod &#8211; MOD/XM/S3M library for Processing</title>
		<link>http://crayolon.net/portamod-modxms3m-library-for-processing/</link>
		<comments>http://crayolon.net/portamod-modxms3m-library-for-processing/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 21:15:25 +0000</pubDate>
		<dc:creator>brendan</dc:creator>
				<category><![CDATA[Demoscene]]></category>
		<category><![CDATA[amiga]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[cool shit]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://crayolon.net/?p=183</guid>
		<description><![CDATA[FINALLY, I&#8217;ve got a release-worthy build of my MOD/XM/S3M replayer library for Processing! PortaMod is based on a very high-quality (but bare-bones) pure Java replayer engine by Martin Cameron called IBXM. IBXM had been around for a few years, but I wanted to implement it for Processing and make it available to that lovely little [...]]]></description>
			<content:encoded><![CDATA[<a href="http://crayolon.net/portamod-modxms3m-library-for-processing/"><p><em>Click here to view the embedded video.</em></p></a>
<p>FINALLY, I&#8217;ve got a release-worthy build of my MOD/XM/S3M replayer library for Processing! <a href="http://crayolon.net/portamod/">PortaMod</a> is based on a very high-quality (but bare-bones) pure Java replayer engine by Martin Cameron called IBXM. IBXM had been around for a few years, but I wanted to implement it for <a href="http://processing.org">Processing</a> and make it available to that lovely little sketching language that&#8217;s been so helpful to me in my effort to learn OOP.</p>
<p>I&#8217;ve been working on this in a couple of different &#8217;strands&#8217;, and if you&#8217;re following my sporadically-documented, mad-scientist crap to any degree, you&#8217;ll know that they include:</p>
<ul>
<li>Chipdisco (a dual-deck module DJ application with MIDI control, headphone cue-mix, module-loading from URL and dual playlists) &#8211; <a href="http://crayolon.net/chipdisco/chipdiscodj/">click here for a work-in-progress</a></li>
<li>PortaMod Player (a single-deck player with scrolling tracker-style patterndata display and various other nice features &#8211; interface similar to Chipdisco)</li>
<li>PortaMod Single (a very very compact single-tune player intended for embedding on websites, particularly websites that archive modules)</li>
<li>PortaMod itself &#8211; the library which will make projects like these easy for others to make. Usage can be basic, e.g. doing a soundtrack for a sketch when you want to avoid bundling a massive mp3 file, or more complex, e.g. driving a series of visual effects triggered by note-events in the music.</li>
</ul>
<p>Anyway, just click <a href="http://crayolon.net/portamod">here</a> to get all the details.<br />
Please discuss it or ask any questions you might have using the comments on this thread &#8211; it&#8217;s probably the easiest way to get an answer to a question and it&#8217;s good to have discourse that&#8217;s publicly visible (especially when bugtesting!).</p>
<p>Updates (10th December 2009):</p>
<ul>
<li>Fixed the transpose function so that it works only on each PortaMod instance&#8217;s channels, rather than on the static Channel (and therefore all instances globally) at the same time. The transpose function will also allow transposition for individual channels!</li>
<li>loopAdjust and loopReset do just that, for specific samples/instruments, following a feature-request from goto80.  As well as the instrument number, you pass the desired loop start-point and the desired loop length as percentage values: start-point is a percentage of the entire sample size, while length is a percentage of the size that remains once the start-point has been set. To cut a long story short, mapping these to X/Y mouse values in Processing allows for crazy amounts of glitchtastic fun <img src='http://crayolon.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Oh, and loopReset resets it&#8230;either to zero, if there was no loop to begin with, or to whatever it was originally set to in the MOD. Coming soon: bidirectional (ping-pong) looping.</li>
<li>Improved the still-experimental notedata override thingy. Now you can pass certain hex effects, as well as custom notes to cause specified instruments to play on specified channels at specified volumes. It&#8217;s based on a keydown/keyup idea, where you can set the state per-channel. There&#8217;s a lot of bug-ironing to be done with that, as I haven&#8217;t decided the best way of doing the various things it does. It does E9X (retrigger) commands pretty well, though!</li>
<li>sampleDump &#8211; does what it says. Dumps RAW 8-bit/mono/22050hz samples to your sketch&#8217;s data directory, ready to be loaded into a tracker of your choice. This is a bit buggy &#8211; mysterious extra bytes appear from nowhere, and I haven&#8217;t figured out how to handle 16-bit XM samples properly yet, plus loop-data and finetuning info is lost, but we live and we learn. I did this as a by-product of trying to learn how to write MODs to disk, which could be cool for saving messed up versions of extant mods &#8211; with samples replaced and new loop-points set, etc. &#8211; or maybe even for writing new ones, if I was ever able to write a tracker. But, er, that&#8217;s hardly on the horizon&#8230;it&#8217;d be vastly complicated and would waste *all* of my time, instead of just half of my time like PortaMod is <img src='http://crayolon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  In the meantime, this could be fun either for wholesale ripping or maybe to save from a MOD that&#8217;s being played in one PortaMod instance and load it into the MOD being played in the other PortaMod instance.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://crayolon.net/portamod-modxms3m-library-for-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting there&#8230;</title>
		<link>http://crayolon.net/getting-there/</link>
		<comments>http://crayolon.net/getting-there/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 18:31:35 +0000</pubDate>
		<dc:creator>brendan</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[grumbles]]></category>

		<guid isPermaLink="false">http://echolevel.tumblr.com/post/53344833</guid>
		<description><![CDATA[Next thing I think I need to do is write a little conversion script in PHP or something, that
]]></description>
			<content:encoded><![CDATA[<p>Next thing I think I need to do is write a little conversion script in PHP or something, that</p>
]]></content:encoded>
			<wfw:commentRss>http://crayolon.net/getting-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
