<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-24698885</id><updated>2009-08-18T04:41:00.746-07:00</updated><title type='text'>White Noise - Audio, Programming and Multitouch</title><subtitle type='html'>News on all my various projects related to audio, 3d, games, music and more.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.whitenoiseaudio.com/blog/atom.xml'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>228</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24698885.post-7492773866310714375</id><published>2009-08-18T04:39:00.000-07:00</published><updated>2009-08-18T04:41:00.756-07:00</updated><title type='text'>Bleep!BOX Released</title><content type='html'>&lt;div class="entry"&gt; &lt;p&gt;contact@bleepboxapp.com&lt;br /&gt;www.bleepboxapp.com&lt;/p&gt; &lt;p&gt;&lt;strong&gt;White Noise Audio Software Releases iPhone App bleepBOX!, an Analogue Synthesizer / Drum Machine Combo that Fits in Your Pocket&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;KENNETT SQUARE, PA – August 17, 2009 – The beat box just got pocket sized. &lt;strong&gt;bleep!BOX&lt;/strong&gt;, an analog syth/drum machine debuted in Apple’s iPhone App Store on Saturday, August 15, 2009. bleep!BOX allows users to arrange synthesizer melodies, program drum beats and edit dozens of parameters in real time. Unlike other music apps, bleep!BOX does not limit users with fixed sample sets or pre-made loops. It does not use any samples, only tweakable, analog-style sounds.&lt;/p&gt; &lt;p&gt;Developer Dave Wallin, owner of White Noise Audio Software created bleep!BOX after becoming frustrated with music apps available for the iPhone. “Only two types of music apps were available: simple music toys and music makers. The simple music toys become boring fast and had limited usefulness and the music makers didn’t offer enough options to make a song interesting. bleepBOX! strikes that balance between simplicity and creative potential.”&lt;/p&gt; &lt;p&gt;Similar to the controls on a vintage analog synthesizer, bleep!BOX gives users creative license over waveforms, filters, effects and modulation. It features 50+ parameters and can play up to 10 instruments simultaneously.&lt;/p&gt; &lt;p&gt;“There are a lot of musicians who don’t like using already-made loops,” said Wallin. With bleep!BOX you can program all of your own sounds and make the melodies you want instead of using canned loops or samples. Now users can produce real music on their iPhones.”&lt;/p&gt; &lt;p&gt;bleepBOX!, sold solely in Apple’s app store, costs $9.99 USD and requires iTunes. &lt;a onclick="javascript:pageTracker._trackPageview('/outgoing/itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=325451639&amp;amp;mt=8&amp;amp;s=143441');" href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=325451639&amp;amp;mt=8&amp;amp;s=143441"&gt;Click here&lt;/a&gt; for the iTunes store link for bleep!BOX.&lt;/p&gt; &lt;p&gt;White Noise Audio Software produces innovative computer based instrument plugins. Founded in 2003, the company is best known for 3 products: Additive, an additive synthesizer, Doppelmangler, a spectral resynthesizer and Zero Vector, a virtual analog synthesizer. bleep!BOX is the company’s first iPhone app. Dave Wallin is the founder and sole proprietor of White Noise Audio Software. www.whitenoiseaudio.com&lt;/p&gt; &lt;p style="text-align: center;"&gt;# # #&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-7492773866310714375?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/7492773866310714375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=7492773866310714375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7492773866310714375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7492773866310714375'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/08/bleepbox-released.html' title='Bleep!BOX Released'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-9130954696696694804</id><published>2009-08-06T08:35:00.000-07:00</published><updated>2009-08-06T08:40:59.525-07:00</updated><title type='text'>Next Project..</title><content type='html'>&lt;p&gt;Now that bleep!BOX has been submitted to the app store, I've been relaxing a bit and thinking about my next project. Some of my old plugin users have asked when Doppelmangler or Zero Vector will see an update. Honestly, I haven't touched those plugins for years and some of the code is pretty bad or difficult to maintain (esp. in Doppelmangler's case). Those plugins were compiled for vst 2.3 and we're up to 64-bit and vst 3.0 at this point, so some updates definately are in order. With Doppelmangler, I've always wanted to do a full re-write since I've never been totally satisfied with the quality of the resynthesis and the amount of CPU it consumes. I've actually been brainstorming about how to revamp it for quite a while now.&lt;/p&gt;&lt;p&gt;Zero Vector also presents some challenges. I would love to port all my plugins to the Mac, now that I've gotten comfortable with XCode. However, Zero Vector contains massive amounts of SSE assembly code and I'm not sure how well that will port (maybe it will be fine.). &lt;/p&gt;&lt;p&gt;In general, I've developed my own audio framework for writing portable modules. This is used in Genome Studio and also in bleep!BOX. I'd like to port both those plugins into the new framework.&lt;/p&gt;&lt;p&gt;Finally, I do want to get back to working on Genome Studio. I've put way too much work into it to not finish it (plus I'm getting fairly close to being able to beta test it). Genome will need some more instruments built into it, and I always intended to include some variant of Zero Vector and Doppelmangler. So, maybe now is the time to update those plugins, rebuild them in my new audio framework so they are ready to include in Genome. At the same time I can produce up-to-date plugins for them. &lt;/p&gt;Doppelmangler is the most interesting problem to solve, so I think I'm gonna tackle it first. ZV will be a more straightforward port (though not trivial..). The direction I want to take Doppelmangler is to focus on high quality sample manipulation rather than all the crazy spectral stuff. Warping and modulating sounds is still the focus too (just that DM2 won't use spectral resynthesis per se). It may be something that is more like specialized granular resynthesis synthesis (not wacky artsy fartsy granular ;). As always, the motto is to be able get greater control over your samples and to use them in new and creative ways. More soon - need to do some experiments. ;)&lt;br /&gt;&lt;br /&gt;Oh, and I nearly forgot. I have a few updates planned for bleep!BOX. Those will happen first and they will mainly be centered around performance features, patch sharing, and synchronization (read: DSMI - wifi midi).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-9130954696696694804?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/9130954696696694804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=9130954696696694804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9130954696696694804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9130954696696694804'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/08/next-project.html' title='Next Project..'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-1378164389800511118</id><published>2009-07-26T08:26:00.000-07:00</published><updated>2009-07-26T08:27:09.532-07:00</updated><title type='text'>bleep!BOX video posted</title><content type='html'>Posted a video overview of bleep!BOX - check it out:&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="560" height="340"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/55JQK5300D4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/55JQK5300D4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Apologies for my spastic mouse movements. ;) Gonna work on finishing up the new website today and hopefully get this bad boy submitted.. Gotta do some more testing today too just to make sure everything is good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-1378164389800511118?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/1378164389800511118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=1378164389800511118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1378164389800511118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1378164389800511118'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/07/bleepbox-video-posted.html' title='bleep!BOX video posted'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-2999270016411517488</id><published>2009-07-21T11:03:00.000-07:00</published><updated>2009-07-21T11:06:35.764-07:00</updated><title type='text'>bleep!Box almost finished</title><content type='html'>My iPhone Application, bleep!BOX is almost finished. It's an electronic drum / synth box and I'm pretty pleased with how it's come out. More info and sounds are at &lt;a href="http://www.bleepboxapp.com/"&gt;http://www.bleepboxapp.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;BTW, in case anyone is interested, I'm on twitter now. My personal twitter is &lt;a href="http://twitter.com/davewallin"&gt;here&lt;/a&gt; and bleep!BOX now has it's own twitter &lt;a href="http://twitter.com/bleepboxapp"&gt;here&lt;/a&gt;. Follow me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-2999270016411517488?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/2999270016411517488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=2999270016411517488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2999270016411517488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2999270016411517488'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/07/bleepbox-almost-finished.html' title='bleep!Box almost finished'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-6160536170295013654</id><published>2009-07-21T10:43:00.000-07:00</published><updated>2009-07-21T10:46:15.713-07:00</updated><title type='text'>Just had an awesome idea</title><content type='html'>Just had a great idea for an augumented reality application. What if you were an architect and wanted to pitch some people on a building. They could wear VR goggles and see the building in the spot you intend to build it, as it would look (rendered in 3d of course). Could be really useful for selling clients on a concept. I would think that being able to picture how the building would fit in with the surrounding buildings to be very useful. They already do renderings like this - being able to walk around it and stand in front of it would be even better ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-6160536170295013654?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/6160536170295013654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=6160536170295013654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/6160536170295013654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/6160536170295013654'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/07/just-had-awesome-idea.html' title='Just had an awesome idea'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-8004384514274701903</id><published>2009-02-06T10:17:00.001-08:00</published><updated>2009-02-06T10:19:04.526-08:00</updated><title type='text'>Future Genome Posts</title><content type='html'>All future Genome posts will now be put on &lt;a href="http://www.genomestudio.net/"&gt;http://www.genomestudio.net/&lt;/a&gt; . This blog may be used for my personal interests or I may just switch everything over there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-8004384514274701903?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/8004384514274701903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=8004384514274701903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8004384514274701903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8004384514274701903'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2009/02/future-genome-posts.html' title='Future Genome Posts'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-2086322350139117074</id><published>2008-12-13T09:21:00.000-08:00</published><updated>2008-12-13T09:31:13.078-08:00</updated><title type='text'>Genome Work Log</title><content type='html'>Been quietly plugging away on the Piano roll / Parameter Automation portion of Genome. Note patterns are pretty far along - you can input notes, drag, tweak length, transpose, copy, cut, paste, etc. One nice thing is full keyboard control - something sorely lacking in a lot of big name studio software. Keyboard and mouse commands are 100% the same. Bi-manual editing is much faster than mouse only. Also, no toolbars are needed for editing notes. There is no 'eraser mode', 'selection mode' or 'note mode' - having to switch modes only slows you down. A simple grid-based cursor system is very intuitive and gives you all you need without having to juggle different editing modes.&lt;br /&gt;&lt;br /&gt;Working on the automation half of the interface next, and I'll be looking to keep it just as simple and intuitive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-2086322350139117074?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/2086322350139117074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=2086322350139117074' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2086322350139117074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2086322350139117074'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/12/genome-work-log.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-739634459717125379</id><published>2008-10-27T10:56:00.000-07:00</published><updated>2008-10-27T11:02:54.409-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;img src="http://www.whitenoiseaudio.com/genome/logo2.jpg" style="float: left; margin-right: 20px;" /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Began working on coding new Input interfaces (such as piano rolls, drum editors, etc). These will have a more generic data type which can be re-used between interfaces. The data type has been created now - next I will write the Module (the actual note generator), and then start working on the various interfaces.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I also plan on generalizing the input components so they can be swapped out (ie, the standard Keyboard can be swapped out with the &lt;a href="http://www.c-thru-music.com/cgi/?page=layout"&gt;Hex style&lt;/a&gt; interface). I may even allow people to build their own interfaces and musical scales using an xml based format. More info to come..&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-739634459717125379?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/739634459717125379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=739634459717125379' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/739634459717125379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/739634459717125379'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/10/genome-work-log_27.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-7755447221484219722</id><published>2008-10-14T14:45:00.000-07:00</published><updated>2008-10-14T14:53:27.823-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;img src="http://www.whitenoiseaudio.com/genome/logo2.jpg" style="float: left; margin-right: 20px;" /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Working on adding 'Objects' to my DNA programming language. Objects are very crude built in classes with member variables / functions. This will be a nice way for me to implement Tables (memory buffers), and other simple helper classes such as filters, oscillators, etc, without having to add any additional instructions to my instruction set. My goal is to keep the language stripped down to the bare necessities for maximum speed. Still working on finishing this feature.&lt;/li&gt;&lt;li&gt;Once that is done, I am eager to get started building some real interfaces, such as paino rolls, drum rolls (?), and automation curves. I think it will feel a lot more complete once those are in there.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-7755447221484219722?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/7755447221484219722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=7755447221484219722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7755447221484219722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7755447221484219722'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/10/genome-work-log.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-1405297929349027705</id><published>2008-09-22T08:48:00.000-07:00</published><updated>2008-09-22T09:03:47.372-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;img src="http://www.whitenoiseaudio.com/genome/logo2.jpg" style="float: left; margin-right: 20px;" /&gt;&lt;ul&gt;&lt;li&gt;Fixed 'control' issue&lt;/li&gt;&lt;li&gt;Minor fixes&lt;/li&gt;&lt;li&gt;Tested DNA scripting module. Works well so far, and it's cool to be able to drop DNA modules into the graphical 'builder' environment. I have a simple FM module written in .DNA and easily created a synth out of it with very little effort. I would like to add a little more functionality to the language in the form of 'tables'. A table could be a waveform, a delay line or used for a waveshaper (anything involving a block of memory). Not too sure on the syntax of it yet, but I will definately be looking to keep my instruction set small. Looking forward to running these programs on the graphics card, a table would correlate to a 'texture'.  I also need to add some more syntax checking to the language, since there really isn't any to speak of right now. It might also be nice to have a little standalone application for testing and writing DNA modules. It could include a simple text editor and enable you to test the code right away.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-1405297929349027705?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/1405297929349027705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=1405297929349027705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1405297929349027705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1405297929349027705'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/09/genome-work-log_22.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-7788650755719539608</id><published>2008-09-20T13:38:00.000-07:00</published><updated>2008-09-20T13:42:32.343-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;DNA modules are now loaded automatically, you can create custom UI's for them. Added some new language features. &lt;/li&gt;&lt;li&gt;Broke note events.. need to fix&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-7788650755719539608?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/7788650755719539608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=7788650755719539608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7788650755719539608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7788650755719539608'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/09/genome-work-log.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-4819147934078564234</id><published>2008-09-13T06:42:00.000-07:00</published><updated>2008-09-13T07:13:30.401-07:00</updated><title type='text'>Hiatus</title><content type='html'>I took a few weeks break from Genome to work on a Flash game for the &lt;a href="http://www.e4.com/joystick/"&gt;Grand Master Flash competition&lt;/a&gt;. Unfortunately, I don't think I'll be able to finish the game on time since I didn't find out about the contest until 3 weeks in and I ended up having to work a decent amount of overtime at my job. The deadline for the contest is monday.&lt;br /&gt;&lt;br /&gt;Here's the site that I've been working on at work: &lt;a href="http://www.wawacoffeetopia.com/"&gt;www.wawacoffeetopia.com&lt;/a&gt;. I think it came out pretty well, and I am happy with the coding work that went into it (especially considering that I only had 2 weeks to code the entire site). I definately learned some things that I will take into my next project. It uses Tweener very heavily. I am finding more and more uses for that thing and relying less and less on timeline animation. I also used SWFAddress for deep linking, and Google Analytics for tracking.&lt;br /&gt;&lt;br /&gt;In other news, I got an iPhone. It's the type of device I've been waiting for since I got my first PDA. The fact that it brings together so many technologies really allows for some interesting potential for applications - GPS, wireless internet anywhere, camera, accelerometer, multitouch, and mp3 playing. Small games, 'dashboard' applications that allow you to monitor your online presence and apps that allow you to find information you need quickly are all big wins on this platform. I will probably be looking into developing some apps for the iphone at some point - Genome on the iphone would rock :) Hopefully Jules is hard at work on porting Juce to the iphone.&lt;br /&gt;&lt;br /&gt;I'm going to be getting back into Genome a bit now - picking up where I left off rewriting some of the plugin system and getting my DSP coding languages working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-4819147934078564234?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/4819147934078564234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=4819147934078564234' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4819147934078564234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4819147934078564234'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/09/hiatus.html' title='Hiatus'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-8088417991038761648</id><published>2008-08-11T09:14:00.000-07:00</published><updated>2008-08-11T09:20:17.107-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Made a few minor changes to the DNA programming language. It now pretty closely mirrors &lt;a href="http://en.wikipedia.org/wiki/ARB_%28GPU_assembly_language%29"&gt;ARB GPU assembly language&lt;/a&gt; (sans dot product and some other things which aren't terribly useful for audio). I'm leaving the door open to someday running plugins on the GPU. I may also do some naive tests to see how well it works and what cpu usage looks like (even though it won't be terribly optmized).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Refactored my 'Plugin' classes a bit. Elimited about a dozen classes and replaced them with one class that uses C++ 'templating'.&lt;/li&gt;&lt;li&gt;Restructured my plugin directories to make more sense in light of my new scripting languages.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Next step will be to automatically read .EEL and .DNA programs and create plugins for them.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-8088417991038761648?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/8088417991038761648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=8088417991038761648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8088417991038761648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8088417991038761648'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/08/genome-work-log.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-7691184468059078012</id><published>2008-08-09T06:26:00.000-07:00</published><updated>2008-08-09T08:41:54.311-07:00</updated><title type='text'>General Purpose GPU roundup</title><content type='html'>&lt;p&gt;I spent quite a few hours yesterday researching what's currently available utilizing graphics cards to do processing. Graphics cards are essentially stream processors - meaning they are well suited to doing repeated operations on arrays of data. Audio processing is a stream process and could benefit from being run on a GPU. Since GPU's are used to tailored for graphics, essentially we would be using textures as our audio buffers. Currently there are several options available for exploiting GPU's that help make it more like regular programming and hide the complexities of dealing with textures and other strictly graphics based idioms. Here's what I've found:&lt;/p&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://graphics.stanford.edu/projects/brookgpu/"&gt;Brook&lt;/a&gt;. Brook takes programs written in a special language and converts them into C++ code. That code generates custom GPU instructions at runtime, which are&lt;br /&gt;tailored to your specific hardware.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nvidia.com/object/cuda_home.html#"&gt;CUDA&lt;/a&gt;. Specific to NVidia GPU's, but a very nice package overall. Uses a custom compiler to compile special programs which are linked into your code. You can call these functions right from your code.&lt;/li&gt;&lt;li&gt;&lt;a href="http://libsh.org/"&gt;Sh&lt;/a&gt;. A library that allows you to create GPU programs by interacting with objects just as you would in a regular C++ program (adding, multiplying, etc). It uses overloaded operators and other tricks in order to leverage C++ as a language, rather than making it's own custom language like CUDA and Brook. The advantage of SH is that it's all done in realtime - there is no need for compilation of special programs (like with Brook and CUDA). Sh also does graphics programming if you want to use it for that.&lt;/li&gt;&lt;li&gt;And while not really a general purpose library, there's also nvidia Cg which can compile programs in realtime.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;Now for my needs, I was looking for something that doesn't require me to compile programs ahead of time. I'd like to be able to take my intermediate audio language (DNA) and either run it on the CPU or on the GPU at runtime. This leaves out Brook and CUDA. Sh might kind of be OK for this, but isn't really aimed at this sort of thing and I would probably be circumventing a lot of stuff to get it to work how I want. Plus it's probably not worth the extra overhead and dependencies if I am just stripping out a lot of the functionality. So, that really leaves me with writing my own backend.&lt;/p&gt;&lt;p&gt;Now the other big downside to using the GPU is that there is a lot of overhead getting data on and off the graphics card. It's best to use the GPU when you can offload all or most of your processing to the card. It's not worth it to process little chunks, one at a time. So, for an audio system what would be cool is if I can offload the entire song (all modules) to the GPU card. This would require a significant reworking of Genome's internals so I am not sure I want to go this route just yet. Plus, it remains to be seen how many people have GPU's worth taking advantage of and how many people would be interested in buying such a product. It might be better suited to a research project some day. For now, it might be better to target Multi-core CPU's as opposed to GPU's. &lt;/p&gt;&lt;p&gt;In the near term though, I can think of a couple audio applications that might be suited to using CUDA (or another of the above libs):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;My planned Doppelmangler rewrite. Doppelmangler uses FFT's for analysis. CUDA already has an optimized FFT written for it. The Doppelmangler of my dreams is able to take audio samples and manipulate them in fantastic ways without loss of quality. If it can do that in realtime, with low CPU usage then it would be awesome.&lt;/li&gt;&lt;li&gt;Physical modelling. True 'physical' modelling using actual 3d models might be interesting (and might be possible to do using Vertex programs), in addition to the more traditional numerical models using waveguides and such (fragment programs). I think it would be awesome if someday I can actually 'build' an instrument in 3D (rather than just dealing with DSP processes). In theory anyway..&lt;/li&gt;&lt;li&gt;Reverbs and convolution effects (already been done, I know)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Looking ahead, Stream processing promises to make it's way into everyone's machines eventually. Intel is working on the &lt;a href="http://en.wikipedia.org/wiki/Intel_Larrabee"&gt;Larrabee&lt;/a&gt; processor which will perform GPU functions in addition to General Purpose streaming functions. Multicore is great for the average user who is running several programs at once, but difficult to program efficiently for. Stream processing can be orders of magnitude faster for the kinds of tasks I'm interested in. Future processors will probably include multiple cores and multiple stream processors - essentially everyone will have a supercomputer on their desk.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-7691184468059078012?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/7691184468059078012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=7691184468059078012' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7691184468059078012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7691184468059078012'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/08/general-purpose-gpu-roundup.html' title='General Purpose GPU roundup'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-5887408144687819848</id><published>2008-08-07T14:41:00.000-07:00</published><updated>2008-08-07T14:54:53.160-07:00</updated><title type='text'>Audio Scripting Experiments</title><content type='html'>I got the first run of my DSP scripting language (which I am calling DNA) up and running. Initial results were pretty encouraging. The same script that took 15% cpu in EEL only took a couple percent in DNA script. The code is very similar to assembly language, so it would be possible to make a higher level version of the language that compiles down to DNA assembly. Assembly code is very efficient and also is easy to parse/compile - it only took me two days to get the parser and the core VM up and running. It should also be possible to take the same code and run it on on a GPU which would be very cool. I'll be working on optimizing the DNA VM and investigating GPU stuff this weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-5887408144687819848?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/5887408144687819848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=5887408144687819848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/5887408144687819848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/5887408144687819848'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/08/audio-scripting-experiments.html' title='Audio Scripting Experiments'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-8967865063831343590</id><published>2008-08-06T10:55:00.000-07:00</published><updated>2008-08-06T11:01:00.974-07:00</updated><title type='text'>Elgg 1.0 Due August 18th</title><content type='html'>&lt;a href="http://www.elgg.org/"&gt;Elgg&lt;/a&gt; one of the Social Networking platforms I've been watching is due to be released august 18th. Elgg is one of the few free / open source options out there for doing a social networking site and it promises to offer a much improved interface and a very nice API for developing plugins and widgets for new types of user generated content. The 18th will be the first day that the new code is available to download, and I expect that lots of user made plugins and mods will follow. There's still a lot of features lacking, but I think the base has been laid down with this new version is pretty strong and it promises to be a good platform to build on. Plus it's free. :) I'll post my impressions of the API once the 18th rolls around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-8967865063831343590?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/8967865063831343590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=8967865063831343590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8967865063831343590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/8967865063831343590'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/08/elgg-10-due-august-18th.html' title='Elgg 1.0 Due August 18th'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-4715548860179736886</id><published>2008-08-04T10:48:00.000-07:00</published><updated>2008-08-06T13:41:41.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Genome'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>EEL Scripting for audio</title><content type='html'>I did my first test getting an &lt;a href="http://eel.olofson.net/"&gt;EEL&lt;/a&gt; DSP script up and running under &lt;a href="http://www.whitenoiseaudio.com/genome/"&gt;Genome&lt;/a&gt;. Only a few minor syntax changes were necessary to get the script to compile under Visual Studio (though it did take the better part of a day to get it working). Overall I am happy with the features of the language and the fact that it has so few dependencies (and is generally written in ansii C, which hopefully means it's fairly fast). Initial speed tests were a bit disappointing. A simple FM synth (one operator, one modulator) ended up taking about 15-20% of my cpu time. Ideally I'd like a simple EEL module to take a percent or two. A C++ version of the same synth would take 0.1% or less of the cpu. So, I am currently looking into optimizing eel to tailor it to my needs a bit more. The eel core is fairly easy to understand (despite it's overly aggressive use of macros). These days I have been using &lt;a href="http://developer.amd.com/cpu/CodeAnalyst/codeanalystwindows/Pages/default.aspx"&gt;AMD Code Analyst,&lt;/a&gt; which is a nice, free version of VTune, for my optimization needs. The latest version runs right inside visual studio and doesn't require any special instrumentation. You just run the app and it starts collecting results. For those unfamiliar with these kinds of applications, basically they can tell you which functions are consuming cpu resources and then allow you to go line by line and see which lines are taking up the most time.  This is essential for helping decide how to go about optimizing a large and complicated program. Obviously it doesn't make sense to optimize everything. Your code will become a mess. You want to target your optimizations to the inner loops - the things that are done the most often.&lt;br /&gt;&lt;br /&gt;Most of the EEL execution time is spent looping through instructions, computing arithmetic operations and copying variables. I spotted some areas that could see huge gains in the arithmetic function. Basically there is a gigantic case statement which checks every possible combination of operation and variable type. Instead of one monolithic case statement I could see this being broken down into several nested comparisons and have at most 5 or 6 comparisons per operation, instead of the dozens that an average operation would take now. I also plan on moving up common operations and moving down uncommon ones. I am debating whether the instruction set can be simplified. The smaller the instruction set, the less time I'll be spending figuring out which instruction to execute. For my audio/dsp needs I am going to be operating on floating point numbers most of the time. Some variable types or operations might be removable. So, it should be interesting work to try to speed this up. Already I am learning a lot about VM's and the internals of scripting languages just by going through the code.&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;In my searches I found that some compilers will convert a case statement into a what is known as a 'jump table' or 'branch table', which is basically an table of jump locations keyed by the variable you are evaluating in your switch statement. This is much faster than evaluating a huge case statement. Not sure if my compiler is doing that - if it is, then my optimization hopes are dimmed.&lt;br /&gt;&lt;br /&gt;Right now I am toying around with making my own ASM-style scripting language with a very reduced opcode and ability set which. The language would be very specifically focused on processing streams of floating point audio data. I am hoping that these two things will make it a lot faster than EEL, which is fairly high level and provides a lot of functionality that isn't important for processing a stream of audio. It might be possible to combine EEL and this ASM language to cover both the high-level and low level bases. The language follows what I &lt;a href="http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_27.html"&gt;posted previously&lt;/a&gt;. I coded the 'compiler' last night and I'll work on the VM tonight. I'll post when I get some results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-4715548860179736886?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/4715548860179736886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=4715548860179736886' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4715548860179736886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4715548860179736886'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/08/eel-scripting-for-audio.html' title='EEL Scripting for audio'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-4452475979117906218</id><published>2008-07-27T14:17:00.000-07:00</published><updated>2008-07-27T14:34:22.608-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Investigated Realtime-suitable scripting languages (for use in audio plugins). So far, not too many options exist. There is &lt;a href="http://llvm.org/"&gt;LLVM&lt;/a&gt; / &lt;a href="http://faust.grame.fr/"&gt;FAUST&lt;/a&gt; (both of which generate and compile C++ code). There is also &lt;a href="http://eel.olofson.net/"&gt;EEL&lt;/a&gt; which seems a little promising, and I will be digging into it more. I am tempted to try to write a compiler and VM solution myself. What I think is needed is something very similar to Shaders (used in the graphics domain). It's a simple program that defines inputs and ouputs (and any variables or parameters needed) then processes the inputs and generates outputs. I shouldn't need any of the additional overhead of garbage collection. Variables should be strongly typed for speed. Function calling will be minimal. Also it will need to compile to byte code (not be interpreted).  Mirroring shaders could also make it easier to offload plugin processing to a graphics card (or use &lt;a href="http://en.wikipedia.org/wiki/CUDA"&gt;CUDA&lt;/a&gt;?) which is also of interest to me. Anyway, it's an interesting topic and I'll be investigating it more.&lt;/li&gt;&lt;li&gt;Fixed numerous bugs with control surface and builder module..&lt;/li&gt;&lt;li&gt;Fixed broken Reverb module&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-4452475979117906218?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/4452475979117906218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=4452475979117906218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4452475979117906218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4452475979117906218'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_27.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-4197485500517719183</id><published>2008-07-26T08:44:00.000-07:00</published><updated>2008-07-26T12:10:58.501-07:00</updated><title type='text'>Reactogon - ooh</title><content type='html'>Saw this on youtube today. This is a really cool example of the kinds of alternative interfaces I would love to experiment with in the future for Genome. Also, it uses Reactivision.&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AklKy2NDpqs&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/AklKy2NDpqs&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-4197485500517719183?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/4197485500517719183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=4197485500517719183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4197485500517719183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/4197485500517719183'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/reactogon-ooh.html' title='Reactogon - ooh'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-7451489295352206480</id><published>2008-07-25T11:58:00.000-07:00</published><updated>2008-07-25T12:01:35.122-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Fixed a couple bugs with the builder module(s)&lt;/li&gt;&lt;li&gt;Fixed some Module menu items&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-7451489295352206480?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/7451489295352206480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=7451489295352206480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7451489295352206480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/7451489295352206480'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_25.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-9069540631348148942</id><published>2008-07-23T10:33:00.000-07:00</published><updated>2008-07-23T10:54:43.228-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Identified several bugs with the Builder module&lt;/li&gt;&lt;li&gt;Fixed Knob control&lt;/li&gt;&lt;li&gt;fixed SVF module config file&lt;/li&gt;&lt;li&gt;Other misc fixes&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Will need to spend some time fixing the Builder before working on a new Piano roll style module (which will also make way for an automation module). I'm making it my practice to fix all bugs as soon as I find them, rather than waiting for later (even if they don't affect what I'm working on).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Would like to come up with a system where people can write module plugins in a shader/scripting type fashion and still have them run fairly efficiently - advantages being that the plugin can be included in the song, shared, sold, etc, and that it is cross-platform. &lt;a href="http://www.llvm.org/"&gt;Some options already exist&lt;/a&gt;. Will need to do more research on the topic.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-9069540631348148942?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/9069540631348148942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=9069540631348148942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9069540631348148942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9069540631348148942'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_23.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-2829615136373567384</id><published>2008-07-20T06:52:00.000-07:00</published><updated>2008-07-20T07:03:23.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genome'/><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;More event refactoring&lt;/li&gt;&lt;li&gt;Container control inputs now possible&lt;/li&gt;&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;friendlier names for container inputs / outputs..&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-2829615136373567384?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/2829615136373567384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=2829615136373567384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2829615136373567384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2829615136373567384'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_20.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-1502612631292632355</id><published>2008-07-18T15:02:00.000-07:00</published><updated>2008-07-18T15:09:32.530-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Bug fixes. Fixed some things that have been broken for a while&lt;/li&gt;&lt;li&gt;Internal improvments to the song module&lt;/li&gt;&lt;li&gt;Events changes now complete&lt;/li&gt;&lt;li&gt;designed pianoroll and automation editor modules&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-1502612631292632355?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/1502612631292632355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=1502612631292632355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1502612631292632355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/1502612631292632355'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_18.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-2790431386794458072</id><published>2008-07-15T06:59:00.000-07:00</published><updated>2008-07-15T07:06:19.089-07:00</updated><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Added 'audio settings' dialog box and saved current settings to xml file&lt;/li&gt;&lt;li&gt;Finished fixing up some stuff with Control Events.. wasted a lot of time tracking down a bug (multithreaded programming can be a pain..)&lt;/li&gt;&lt;li&gt;Next I will be making some more changes for Automation and OSC control.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-2790431386794458072?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/2790431386794458072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=2790431386794458072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2790431386794458072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/2790431386794458072'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_15.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24698885.post-9139500635155535925</id><published>2008-07-10T10:42:00.000-07:00</published><updated>2008-07-10T11:00:37.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Elgg'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='Genome'/><title type='text'>Genome Work Log</title><content type='html'>&lt;ul&gt;&lt;li&gt;Working on modifying some low level stuff with Genome's Control Events. When the dust settles, Genome will have hooks for automation.&lt;/li&gt;&lt;li&gt;Part of this change will also allow for 'meta patterns'.. Ie, a pattern that may be composed of several different sub patterns patterns.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As per the comments in my last post, Ben from Curverider was kind enough to inform me that Elgg is in fact close to it's 1.0 release (though no specifics yet on when that will be, and  they haven't set me up as a beta tester.. *cries* :) I am very closely watching developments with both Elgg (which is hitting 1.0) and Social Engine (which is hitting 3.0). Based on Screenshots of Elgg 1.0, they have definately made some great UI improvements. Also, the underlying code changes promise to make writing plugins even easier and allow for easier sharing and displaying of user generated artifacts.  The new social engine is also looking extremely sexy over at it's &lt;a href="http://72.47.252.45/home.php"&gt;public beta site&lt;/a&gt; even though no plugins have made available yet (elgg people: put up a public beta!).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24698885-9139500635155535925?l=www.whitenoiseaudio.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/9139500635155535925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24698885&amp;postID=9139500635155535925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9139500635155535925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24698885/posts/default/9139500635155535925'/><link rel='alternate' type='text/html' href='http://www.whitenoiseaudio.com/blog/2008/07/genome-work-log_10.html' title='Genome Work Log'/><author><name>David Wallin</name><uri>http://www.blogger.com/profile/17019117869067171775</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07897647659681400933'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>