<?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; git</title>
	<atom:link href="http://createdigitalmusic.com/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://createdigitalmusic.com</link>
	<description>Making music with technology</description>
	<lastBuildDate>Thu, 09 Feb 2012 18:27:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Ethereal Dialpad Touch App, Development Experience on Android and Beyond</title>
		<link>http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/</link>
		<comments>http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/#comments</comments>
		<pubDate>Wed, 05 May 2010 18:00:28 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[chuck]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[ethereal-dialpad]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[free-software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[interface-design]]></category>
		<category><![CDATA[kaossilator]]></category>
		<category><![CDATA[Korg]]></category>
		<category><![CDATA[live-coding]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[Pd]]></category>
		<category><![CDATA[platforms]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[touch]]></category>

		<guid isPermaLink="false">http://createdigitalmusic.com/?p=10873</guid>
		<description><![CDATA[Google&#8217;s Android has been a relatively slow starter for mobile music software, but a gem like Adam Smith&#8217;s free Ethereal Dialpad proves it&#8217;s a viable option, and the app is an inspiring musical toy, to boot. Perhaps more important than that, behind the scenes, Adam is employing a really beautifully audio engine of his own &#8230; <a class="btn read-more" href="http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/">Continue &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p><object width="580" height="465"><param name="movie" value="http://www.youtube.com/v/E3BrnbEl9_c&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/E3BrnbEl9_c&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="465"></embed></object></p>
<p>Google&#8217;s Android has been a relatively slow starter for mobile music software, but a gem like Adam Smith&#8217;s free Ethereal Dialpad proves it&#8217;s a viable option, and the app is an inspiring musical toy, to boot. Perhaps more important than that, behind the scenes, Adam is employing a really beautifully audio engine of his own design with an elegant approach to coding sound.</p>
<p>Ethereal Dialpad features a set of basic modules for using touch to produce synthesized sound with real-time effects. The concept isn&#8217;t new &#8211; Adam says he was inspired by the pitch mapping on KORG&#8217;s Kaossilator &#8211; but it&#8217;s nicely executed, and the software is fun and responsive. I&#8217;ve tested it with some non-musician Android owners, and they were simply delighted. And yes, you can plug it into external effects and go absolutely wild &#8211; see the video below for one example.</p>
<p>Of course, these sorts of applications are relative commonplace on the iPhone, but few and far between on Android. So it seemed the perfect time to ask Adam to share his thoughts on developing for the platform.</p>
<p>Along the way, Adam has some great thoughts on live coding and sharing in the development community that go well beyond any one platform.</p>
<p>Mobile applications in general have often been self-contained, limited-lifespan creations; the simpler ones are almost like bubblegum &#8211; suck out the sugar and move on. But by sharing code, these simpler applications can have a greater life, as they&#8217;re extended and incorporated into other projects. That could suggest greater longevity over time for unusual interactive musical software creations in general. And with this application fitting into just 35K &#8211; yes, amazingly, even with all the packaged Android assets and Java code &#8211; the emerging landscape could even begin to resemble the demoscene of old.</p>
<p><object width="580" height="465"><param name="movie" value="http://www.youtube.com/v/k0brUxxHto4&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/k0brUxxHto4&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="465"></embed></object><span id="more-10873"></span></p>
<p>Adam writes with some of the behind-the-scenes details of coding audio on Android:</p>
<blockquote><p>The whole Ethereal Dialpad project started as an experiment with the AudioTrack api in the Android framework and, without any real planning, it evolved into a reimplementation of one of the presets on Korg&#8217;s Kaossilator synth toy (which I&#8217;ve enjoyed playing in the past). At one point, I was thinking of adding more Kaossilator-like features (loop recording, more synths, etc.), but interest in starting new projects instead of improving old ones won out.</p>
<p>The synthesis core of the app is hand written in Java. You can see an example of working with my DSP library edited down from the real source here: <a href="http://gist.github.com/376028#file_usage.java">http://gist.github.com/376028#file_usage.java</a> The design of the library was strongly inspired by that in ChucK, a programming language for musical livecoding that I&#8217;ve used for a few other silly projects (<a href="http://chuck.cs.princeton.edu/">http://chuck.cs.princeton.edu/</a>). Using the library, the app sets up a little modular synthesizer on startup and uses touch events to tweak parameters. It is possible for the synthesizer to be reconfigured a run-time (adding or rewiring components), but I didn&#8217;t end up using this functionality anywhere in Ethereal Dialpad. Perhaps someday I could expose the live synth construction process to users with some graphical interface &#8212; right now you have to edit the source to change the synth.</p>
<p>Devices like the G1 I was working with have terrible floating point performance (improved none by running code in a virtual machine!), but going ahead with the simplest solution turned out to work just fine. In another free Android app, Iteration, I used fixed-point arithmetic in C via the NDK to get the performance I wanted (<a href="http://github.com/rndmcnlly/iteration/blob/master/jni/iteration.c#L279">http://github.com/rndmcnlly/iteration/blob/master/jni/iteration.c#L279</a>). At one point I was having trouble with the audio stream in Ethereal Dialpad when some background processing (such as Twidroid waking up to refresh tweets) took too much processor time, but simply cutting the audio sample rate in half was an effective fix (with little effect on my output which didn&#8217;t have too much in the high frequencies at the time).</p>
<p>I suppose it would normally be overkill to build a synthesizer from scratch like this to get the output I did. If I knew I were really going for what Ethereal Dialpad is now from the start, I could have simply embedded a fixed set of pre-recorded tones and not mucked about with sines and cosines. One fun result of doing it the hard way is that the package you download is only 35KB (with a lot of that space dedicated to the silly icons for each dialpad). Doing as much as possible with code instead of bulk data is in line with the demoscene aesthetic which I&#8217;ve enjoyed for a long time. Generative art has long been a passion of mine, but playing with real electronic music hardware during the past few years has convinced me to try more tangible projects, exploiting the touchscreen in this case.</p>
<p>As an aside, there seems to be a really positive, sharing-oriented culture in the hobbyist Android programmers that I have run into. I got the idea to make Ethereal Dialpad (or at least play around with audio on Android) after seeing the Synthesizer 2 application. I could tell, just by using the application, that the developer must have been using some API for live streaming that I hadn&#8217;t noticed in the documentation yet. In response to a email to the developer I got a pointer to the exact API I was seeking, and we&#8217;ve sent Java snippets back and forth since. Another developer emailed me to figure out how my app worked and, several source-filled emails later, Ethereal Dialpad contains the &#8220;Moonblink&#8217;s Grid&#8221; dialpad, a volunteered submission.</p></blockquote>
<p>I asked for some reflections on Android, in general, as a platform, as well, although that discussion quickly turns more generally to tools for quickly coding creative sound on computer platforms, too.</p>
<blockquote><p>Regarding inspiring Android music apps, it was actually the (I suppose I&#8217;m qualified to say this) disappointing experience I had with Synthesizer 2 that really pushed me to think &#8220;Man, I could make something that sounds better (after I ask him how he pushed an array of floats through the speakers, that is).&#8221; After finding the right API, it was just one dusk-till-dawn hacksession before I produced CurveSlinger (<a href="http://adamsmith.as/typ0/k/CurveSlinger.apk">http://adamsmith.as/typ0/k/CurveSlinger.apk</a>), which is essentially the core of audio Ethereal Dialpad with no graphics. The idea of mapping both axes of the touchpad to two synths was lifted directly from the L.12 patch on the Kaossilator. I didn&#8217;t think to attempt to bolting on a pluggable GUI system for another month perhaps. Plug-ins are a whole story of their own &#8212; turns out there is a section of the Android userbase that universally ignores update notifications. <em>[Ed.: If rumored "auto-update" features finally get baked into Market apps, I would expect that situation to improve, though it hasn't happened yet. -PK]</em></p>
<p>In the larger context, the drive to create a synth toy from scratch was inspired by participating in the culture around livecoding languages like <a href="http://chuck.cs.princeton.edu/">ChucK</a>, <a href="http://impromptu.moso.com.au/">Impromptu</a> [Mac audiovisual livecoding environment], and <a href="http://puredata.info">Pd</a> (<a href="http://www.toplap.org/index.php/Main_Page">TOPLAP</a> is the name I feel compelled to drop here). In livecoding I can bridge the gap between the otherwise sometimes cold, engineering practice of programming and the artistic, improvisational practice of live music performance. I&#8217;m overwhemled by how easy it was to make a mini trance sequencer (<a href="http://www.youtube.com/watch?v=lVOtH5Uiatc">http://www.youtube.com/watch?v=lVOtH5Uiatc</a>), a tangible controller for wave playback (<a href="http://www.youtube.com/watch?v=DhDeYxhnKkY">http://www.youtube.com/watch?v=DhDeYxhnKkY</a>), and an infinite random claim generator (<a href="http://www.toplap.org/index.php/User:Adamsmith#.22endless_interesting_claim_generator.22">http://www.toplap.org/index.php/User:Adamsmith#.22endless_interesting_claim_generator.22</a> &#8212; <a href="http://adamsmith.as/typ0/k/voxbox/claims.html">http://adamsmith.as/typ0/k/voxbox/claims.html</a>). How can I convince the general population that being a healthy consumer is not a healthy state of being and that programming is an amazingly underappreciated approach to being a creative producer? Well, I&#8217;ll hack something nifty stuff really quick and tag a note onto the app description: &#8220;Like what you feel? Consider learning to program. It&#8217;s some serious magic.&#8221;. I&#8217;ve gotten maybe 15 email responses to this last note, but it is hard to get people who have no experience into a position where they can do the same thing.</p>
<p>The drive to use the touchpad for something interesting draws directly from playing the Korg EMX-1 which uses a linear touch sensor to control the arpeggiator. Sure, I&#8217;ve fun with Kaossilator, but that two inch strip on the EMX-1 sucked me in for hours at a time. It was magical, and I wanted to make that kind of magic too.</p>
<p>I suppose I have to acknowledge the Internet at large as a major, implicit inspiration. It is impossible to remember which video here or there lead to this or that other idea. I&#8217;m sure, running your site (which I didn&#8217;t know of until you contacted me), you experience the same thing.
</p></blockquote>
<p>For your viewing pleasure, here are two of those quick audio creations. At top is a demo of livecoding in Pd (Pure Data). At bottom, in what must be a geek singularity powerful enough to actually create a depression in the fabric of space time, &#8220;a YTMND dramatic reading of some Half-Life fan fiction&#8221; with a Nintendo 64 controller and the rapid audio coding environment <a href="http://chuck.cs.princeton.edu/">ChucK</a>. </p>
<p><object width="580" height="465"><param name="movie" value="http://www.youtube.com/v/lVOtH5Uiatc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lVOtH5Uiatc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="465"></embed></object></p>
<p><object width="580" height="465"><param name="movie" value="http://www.youtube.com/v/DhDeYxhnKkY&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DhDeYxhnKkY&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="465"></embed></object></p>
<p>Android I think is overdue for a round-up of available audio software. (Honestly, I had put it off partly because the landscape was somewhat scarce.) Candidates so far include <a href="http://www.youtube.com/watch?v=H9SHxsUKfVc&#038;feature=related">Sonorox</a>, <a href="http://www.youtube.com/watch?v=Pqtbgmmfb0U&#038;feature=related">Beatpad</a>, <a href="http://uloops.net/umc/index.php">Uloops</a>, Musical, and <a href="http://thesundancekid.net/blog/fingerplay-midi/">FingerPlay</a>.  Got nominees? Let us know in comments.</p>
<p>The &#8220;killer&#8221; apps for Android may turn out to be in-progress ports of Pd and <a href="http://groups.google.com/group/supercollider-android-developers">SuperCollider</a>. More on that topic soon; if you&#8217;re interested in contributing, or in learning more about Android music software development, you should check out the <a href="http://groups.google.com/group/android-music-developers">Android Music Developers Google Group</a>.</p>
<p>And since so much geektastic material comes up in the interview, let Adam know if you have other questions for him.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/&via=cdmblogs&text=Ethereal Dialpad Touch App, Development Experience on Android and Beyond&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/&via=cdmblogs&text=Ethereal Dialpad Touch App, Development Experience on Android and Beyond&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://createdigitalmusic.com/2010/05/ethereal-dialpad-touch-app-development-experience-on-android-and-beyond/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Version Control and Sharing for Patching: Keep Those Max, Pd Patches in Order with Git</title>
		<link>http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/</link>
		<comments>http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 19:00:15 +0000</pubDate>
		<dc:creator>Peter Kirn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[monome]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[version-control]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://createdigitalmusic.com/?p=5115</guid>
		<description><![CDATA[Patches serve as the glue for performing with open controllers like the monome. With proper version control, you can manage their evolution &#8211; and share your creative process more easily. Photo by me. If you&#8217;ve worked at all with patching your own creations for music, visuals, and control, this has probably happened to you: you&#8217;ve &#8230; <a class="btn read-more" href="http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/">Continue &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/p_kirn/1218991319/in/set-72157601621529176/"><img src="http://farm2.static.flickr.com/1199/1218991319_cc36f50ec7.jpg?v=0"></a></p>
<div class="imgcaption">Patches serve as the glue for performing with open controllers like the monome. With proper version control, you can manage their evolution &#8211; and share your creative process more easily. Photo by <a href="http://flickr.com/photos/p_kirn/">me</a>.</div>
<p>If you&#8217;ve worked at all with patching your own creations for music, visuals, and control, this has probably happened to you: you&#8217;ve made some change, and forgot what you did. You think of something you did some time ago &#8211; and forget what it was. Or you want to be able to easily collaborate with other people, and that means a lot of files flying around and no idea which file has which change. All of these problems are familiar to programmers. The solution: a technique called version control. Sounds fancy, but it&#8217;s really accessible to anyone, not just advanced programmers. And once you try it, you&#8217;ll never go back.</p>
<p><a href="http://git-scm.com/">Git</a> is a popular version control system that&#8217;s all the rage these days &#8211; aided by the star power of Linus Torvalds, its creator (who uses it for Linux kernels, not Max patches, sadly).  Mormo aka Tomasz comes to the rescue of patchers with a complete guide to applying Git to patch management. Now, I&#8217;m a big fan of Subversion (&#8220;svn&#8221;) myself &#8212; but even then, you can follow the basic guidelines here and get something going.</p>
<p>Aside from the technical details of how this works, Tomasz gets into some of the deeper issues of what this is really about: <strong>sharing, collaboration, and openness</strong>. </p>
<p><a href="http://www.basementhum.com/2009/02/version-control-and-maxmsp-part-1.html">Basement Hum: Version Control and Max/Msp. Part 1: Delegate Versioning to Git</a><br />
<a href="http://www.basementhum.com/2009/02/version-control-and-maxmsp-part-2.html">Basement Hum: Version Control and Max/Msp. Part 2: Fragmentation vs Collaboration</a></p>
<p>Before you get scared away, just trust me on this: if you make patches, even simple ones, if you have zero programming experiment, you&#8217;re going to wind up loving version control. Naturally, this kind of version control could eventually be applied to musical materials and not just code and patches &#8211; and that&#8217;s when things get really interesting.</p>
<p><img src="http://createdigitalmusic.com/files/2009/02/github.jpg"><span id="more-5115"></span></p>
<p>This works well for Max (and Pd) because it uses text-based patches. (Code will work nicely, too, lovers of Processing or Csound or SuperCollider or Chuck.) If you have binary files, it&#8217;s going to be tougher to do things like merges &#8212; sorry, Reaktor.</p>
<p>Tomasz writes:</p>
<blockquote><p>Hi, I posted the first two parts of a three part series on why and how a version control system (git) can be relevant to musicians creating software devices for their music. The monome application-creating community and its use of max/msp form the case in point.</p>
<p>SVN would work fine too. I chose git partly because i&#8217;ve started using git lately at my day job (web development) and i&#8217;m interested to get to know it better. Also i really like that its trivial to put an existing project under git control, just a couple of command line instructions and no need to explicitly configure a repository.</p></blockquote>
<p>There have been complaints lately from certain bloggers that Git makes it harder to share a repository online. I asked about that specifically, and Tomasz responded:</p>
<p>From your git managed directory it can be as easy as running:<br />
git push</p>
<p>This will work if you&#8217;ve cloned a github repository as described here:</p>
<p>http://www.basementhum.com/2009/02/version-control-and-maxmsp-part-2.html</p>
<p>(though in the article i typed a more verbose version)</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/&via=cdmblogs&text=Version Control and Sharing for Patching: Keep Those Max, Pd Patches in Order with Git&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/&via=cdmblogs&text=Version Control and Sharing for Patching: Keep Those Max, Pd Patches in Order with Git&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://createdigitalmusic.com/2009/02/version-control-and-sharing-for-patching-keep-those-max-pd-patches-in-order-with-git/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

