<?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>drobilla.net</title>
	<atom:link href="http://drobilla.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://drobilla.net</link>
	<description></description>
	<lastBuildDate>Sun, 09 Jun 2013 03:02:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Ingen as LV2 in Ardour</title>
		<link>http://drobilla.net/2013/06/08/ingen-as-lv2-in-ardour/</link>
		<comments>http://drobilla.net/2013/06/08/ingen-as-lv2-in-ardour/#comments</comments>
		<pubDate>Sun, 09 Jun 2013 03:02:02 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1052</guid>
		<description><![CDATA[I found some time today to make Ingen&#8216;s support for running as an LV2 more solid. I have posted about this before, but it now works at RT appropriate buffer sizes, and several other bugs have been fixed. Here&#8217;s the &#8230; <a href="http://drobilla.net/2013/06/08/ingen-as-lv2-in-ardour/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I found some time today to make <a href="http://drobilla.net/software/ingen/">Ingen</a>&#8216;s support for running as an LV2 more solid.  I have posted about this before, but it now works at RT appropriate buffer sizes, and several other bugs have been fixed.  Here&#8217;s the obligatory contrived screenshot:</p>
<p><a href="http://drobilla.net/blog/wp-content/uploads/2013/06/ardour_ingen.png"><img src="http://drobilla.net/blog/wp-content/uploads/2013/06/ardour_ingen-150x109.png" alt="ardour_ingen" width="150" height="109" class="alignnone size-thumbnail wp-image-1053" /></a></p>
<p>People are sometimes confused about how Ingen works as an LV2 (I need to write proper documentation One of These Days): you don&#8217;t load an &#8220;Ingen&#8221; plugin so much (it wouldn&#8217;t do anything), as you <em>save</em> an Ingen graph as an LV2 plugin.  The idea is that Ingen is a tool for visually building plugins.  Since LV2 does not support dynamically adding ports, it&#8217;s easiest to do your building as a Jack app, so the basic work flow is something like:</p>
<ol>
<li>Run Ingen as a Jack app: <code>ingen -eg</code></li>
<li>Build a graph, adding ports, plugins, etc.</li>
<li>Save the graph to somewhere in your <code>LV2_PATH</code>, e.g. <code>~/.lv2</code> (which happens to be the default directory of the save dialog for this reason).</li>
<li>Voila, your graph should now show up in any LV2 host (its URI will simply be its local filesystem path, unless you explicitly set a stable one).  You can check with <code>lv2ls</code>.</li>
</ol>
<p>There is no export or compilation involved, Ingen&#8217;s native format is LV2 compatible (graphs are always saved in the same format).  If you saved a graph elsewhere you can simply copy it to <code>~/.lv2</code> to use it as a plugin, though for now you may have to create or fix the symlink to the engine binary manually to do this.</p>
<p>Note that you can edit the graph while it&#8217;s running as an LV2 plugin, including adding new nodes and connections, you just can&#8217;t add top-level ports because the host doesn&#8217;t know about them.  There is still some work to be done polishing this up to be ready for prime-time, but for the brave, it&#8217;s more or less good to go.</p>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1052&amp;md5=982c7f762efa9d3a52f5b2ecf861f20c" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/06/08/ingen-as-lv2-in-ardour/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F06%2F08%2Fingen-as-lv2-in-ardour%2F&amp;language=en_GB&amp;category=text&amp;title=Ingen+as+LV2+in+Ardour&amp;description=I+found+some+time+today+to+make+Ingen%26%238216%3Bs+support+for+running+as+an+LV2+more+solid.+I+have+posted+about+this+before%2C+but+it+now+works+at+RT+appropriate+buffer...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Jalv 1.4.0</title>
		<link>http://drobilla.net/2013/02/22/jalv-1-4-0/</link>
		<comments>http://drobilla.net/2013/02/22/jalv-1-4-0/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 04:54:30 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1043</guid>
		<description><![CDATA[Jalv 1.4.0 is out. Jalv is a simple but fully featured LV2 host for Jack. It runs LV2 plugins and exposes their ports as Jack ports, essentially making any LV2 plugin function as a Jack application. Changes: Send time information &#8230; <a href="http://drobilla.net/2013/02/22/jalv-1-4-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://download.drobilla.net/jalv-1.4.0.tar.bz2">Jalv 1.4.0</a> is out.  <a href="http://drobilla.net/software/jalv">Jalv</a> is a simple but fully featured <a href="http://lv2plug.in">LV2</a> host for <a href="http://jackaudio.org">Jack</a>.  It runs LV2 plugins and exposes their ports as Jack ports, essentially making any LV2 plugin function as a Jack application.</p>
<p>Changes:</p>
<ul>
<li>Send time information to plugin when Jack tempo changes</li>
<li>Group controls under headings if port group information is available</li>
<li>Add spinbuttons for precisely setting control values</li>
<li>Use a more efficient dense layout for controls</li>
<li>Make URI map thread-safe, fixing occasional crashes for plugins with UIs</li>
<li>Add menu bar and pass parent widget in Qt version for true UI embedding</li>
<li>Support state:loadDefaultState</li>
<li>Update to waf 1.7.8 and autowaf r90</li>
</ul>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1043&amp;md5=fcd71684d017d78d55b24c7f8a7396cb" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/22/jalv-1-4-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F22%2Fjalv-1-4-0%2F&amp;language=en_GB&amp;category=text&amp;title=Jalv+1.4.0&amp;description=Jalv+1.4.0+is+out.+Jalv+is+a+simple+but+fully+featured+LV2+host+for+Jack.+It+runs+LV2+plugins+and+exposes+their+ports+as+Jack+ports%2C+essentially+making+any+LV2...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Suil 0.6.12</title>
		<link>http://drobilla.net/2013/02/22/suil-0-6-12/</link>
		<comments>http://drobilla.net/2013/02/22/suil-0-6-12/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 04:52:54 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1040</guid>
		<description><![CDATA[Suil 0.6.12 is out. Suil is a lightweight C library for loading and wrapping LV2 plugin UIs. Suil transparently presents UIs written in any toolkit as the desired widget type of host programs, so hosts do not have to depend &#8230; <a href="http://drobilla.net/2013/02/22/suil-0-6-12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://download.drobilla.net/suil-0.6.12.tar.bz2">Suil 0.6.12</a> is out.  <a href="http://drobilla.net/software/suil">Suil</a> is a lightweight C library for loading and wrapping <a href="http://lv2plug.in">LV2</a> plugin UIs.  Suil transparently presents UIs written in any toolkit as the desired widget type of host programs, so hosts do not have to depend on foreign toolkits.</p>
<p>Changes:</p>
<ul>
<li>Fix key events for X11 in Gtk without using a troublesome event filter</li>
<li>Fix crash when a broken UI returns a NULL descriptor</li>
<li>Fix compilation on BSD</li>
</ul>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1040&amp;md5=b4fba6aed37940bb27b3ff2f8a5039d9" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/22/suil-0-6-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F22%2Fsuil-0-6-12%2F&amp;language=en_GB&amp;category=text&amp;title=Suil+0.6.12&amp;description=Suil+0.6.12+is+out.+Suil+is+a+lightweight+C+library+for+loading+and+wrapping+LV2+plugin+UIs.+Suil+transparently+presents+UIs+written+in+any+toolkit+as+the+desired+widget+type...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Lilv 0.16.0</title>
		<link>http://drobilla.net/2013/02/18/lilv-0-16-0/</link>
		<comments>http://drobilla.net/2013/02/18/lilv-0-16-0/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 22:10:27 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1036</guid>
		<description><![CDATA[Lilv 0.16.0 is out. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. This release fixes many bugs and adds several convenient functions to the API. Upgrading is recommended. Changes: Add &#8230; <a href="http://drobilla.net/2013/02/18/lilv-0-16-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://download.drobilla.net/lilv-0.16.0.tar.bz2">Lilv 0.16.0</a> is out.  <a href="http://drobilla.net/software/lilv">Lilv</a> is a C library to make the use of <a href="http://lv2plug.in">LV2</a> plugins as simple as possible for applications.</p>
<p>This release fixes many bugs and adds several convenient functions to the API.  Upgrading is recommended.</p>
<p>Changes:</p>
<ul>
<li>Add lilv_world_ask() for easily checking if a statement exists</li>
<li>Add lilv_world_get() and lilv_port_get() for easily getting one value</li>
<li>Add lilv_nodes_merge()</li>
<li>Make lilv_plugin_get_port_by_designation() return a const pointer</li>
<li>Require a URI for lilv_state_to_string() and fail gracefully otherwise</li>
<li>Fail gracefully when lilv_state_new_from_string() is called on NULL</li>
<li>Make state loading functions fall back to lv2:default for port values, so a plugin description can be loaded as default state</li>
<li>Ignore state ports with no value instead of printing an error</li>
<li>Support atom:supports in lilv_port_supports_event()</li>
<li>Add va_list variant of lilv_plugin_get_num_ports_of_class()</li>
<li>Fix several plugin functions that failed to load data if called first</li>
<li>Correctly depend on serd at build time (fix compilation in odd cases)</li>
<li>Disable timestamps in HTML documentation for reproducible build</li>
<li>lilvmm.hpp: Support varargs for Plugin::get_num_ports_of_class()</li>
<li>lilvmm.hpp: Add several missing methods</li>
<li>Update to waf 1.7.8 and autowaf r90 (install docs to versioned directory)</li>
</ul>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1036&amp;md5=65b4ef64fc97fde7bda7325c5dc28f7a" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/18/lilv-0-16-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F18%2Flilv-0-16-0%2F&amp;language=en_GB&amp;category=text&amp;title=Lilv+0.16.0&amp;description=Lilv+0.16.0+is+out.+Lilv+is+a+C+library+to+make+the+use+of+LV2+plugins+as+simple+as+possible+for+applications.+This+release+fixes+many+bugs+and+adds+several...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Sratom 0.4.2</title>
		<link>http://drobilla.net/2013/02/18/sratom-0-4-2/</link>
		<comments>http://drobilla.net/2013/02/18/sratom-0-4-2/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 21:40:37 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1031</guid>
		<description><![CDATA[Sratom 0.4.2 is out. Sratom is a small C library for serialising LV2 atoms to/from Turtle. This releases fixes a few minor bugs and memory leaks, and shrinks the code slightly by making of the new sord_get() function. Changes: Fix &#8230; <a href="http://drobilla.net/2013/02/18/sratom-0-4-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://download.drobilla.net/sratom-0.4.2.tar.bz2">Sratom 0.4.2</a> is out. <a href="http://drobilla.net/software/sratom">Sratom</a> is a small C library for serialising <a href="http://lv2plug.in/ns/ext/atom">LV2 atoms</a> to/from <a href="http://www.w3.org/TR/turtle/">Turtle</a>.</p>
<p>This releases fixes a few minor bugs and memory leaks, and shrinks the code slightly by making of the new sord_get() function.</p>
<p>Changes:</p>
<ul>
<li>Fix serialisation of nested tuples</li>
<li>Fix memory leaks</li>
<li>Use new sord API to clean up and shrink code</li>
<li>Disable timestamps in HTML documentation for reproducible build</li>
<li>Update to waf 1.7.9 and autowaf r90 (install docs to versioned directory)</li>
</ul>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1031&amp;md5=9cf9802d5c02e640d43ec2b89afaa729" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/18/sratom-0-4-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F18%2Fsratom-0-4-2%2F&amp;language=en_GB&amp;category=text&amp;title=Sratom+0.4.2&amp;description=Sratom+0.4.2+is+out.+Sratom+is+a+small+C+library+for+serialising+LV2+atoms+to%2Ffrom+Turtle.+This+releases+fixes+a+few+minor+bugs+and+memory+leaks%2C+and+shrinks+the+code...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Sord 0.12.0</title>
		<link>http://drobilla.net/2013/02/18/sord-0-12-0/</link>
		<comments>http://drobilla.net/2013/02/18/sord-0-12-0/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 21:29:09 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=1026</guid>
		<description><![CDATA[Sord 0.12.0 is out. Sord is a lightweight C library for storing RDF statements in memory. Changes: Add sord_get() for easily getting single property values sord_validate: Pass type check when range is xsd:anyURI and value is a URI sord_validate: Support &#8230; <a href="http://drobilla.net/2013/02/18/sord-0-12-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://download.drobilla.net/sord-0.12.0.tar.bz2">Sord 0.12.0</a> is out.  <a href="http://drobilla.net/software/sord">Sord</a> is a lightweight C library for storing RDF statements in memory.</p>
<p>Changes:</p>
<ul>
<li>Add sord_get() for easily getting single property values</li>
<li>sord_validate: Pass type check when range is xsd:anyURI and value is a URI</li>
<li>sord_validate: Support any subClassOf rdf:Property, not just baked-in ones</li>
<li>sordmm.hpp: Add convenient constructors for decimal and integer literals</li>
<li>sordmm.hpp: Add Node::to_serd_node()</li>
<li>sordmm.hpp: Don&#8217;t automatically add RDF namespace prefix to world</li>
<li>Update to waf 1.7.9 and autowaf r90 (install docs to versioned directory)</li>
</ul>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=1026&amp;md5=5407deb723935dd0e40578290ae697cc" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/18/sord-0-12-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F18%2Fsord-0-12-0%2F&amp;language=en_GB&amp;category=text&amp;title=Sord+0.12.0&amp;description=Sord+0.12.0+is+out.+Sord+is+a+lightweight+C+library+for+storing+RDF+statements+in+memory.+Changes%3A+Add+sord_get%28%29+for+easily+getting+single+property+values+sord_validate%3A+Pass+type+check+when...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Better stock LV2 plugin UIs</title>
		<link>http://drobilla.net/2013/02/10/better-stock-lv2-plugin-uis/</link>
		<comments>http://drobilla.net/2013/02/10/better-stock-lv2-plugin-uis/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 03:11:32 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=999</guid>
		<description><![CDATA[Today I implemented better UI generation for LV2 plugin controls in Jalv, particularly grouping controls under headings which makes a big difference. Unfortunately few plugins group their controls currently, but hopefully more host support will provide the incentive to do &#8230; <a href="http://drobilla.net/2013/02/10/better-stock-lv2-plugin-uis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Today I implemented better UI generation for LV2 plugin controls in <a href="http://drobilla.net/software/jalv">Jalv</a>, particularly grouping controls under headings which makes a big difference.  Unfortunately few plugins group their controls currently, but hopefully more host support will provide the incentive to do so.</p>
<p>Other improvements:</p>
<ul>
<li>Added a spinbutton to slider controls for precisely setting values numerically</li>
<li>Much more efficient layout to pack more controls on the screen at once</li>
<li>Support for named scale points (&#8220;ticks&#8221;) on non-enumeration ports</li>
</ul>
<p>Here is the UI generated for <a href="http://code.google.com/p/amsynth/">Amsynth</a> (after I added the necessary metadata):</p>
<p><a href="http://drobilla.net/blog/wp-content/uploads/2013/02/jalv_amsynth.png"><img src="http://drobilla.net/blog/wp-content/uploads/2013/02/jalv_amsynth-112x150.png" alt="Generic Jalv UI for Amsynth LV2" width="112" height="150" class="alignnone size-thumbnail wp-image-1000" /></a></p>
<p>Still pretty utilitarian, but much more usable, which is the important thing.  Of course, this plugin is quite large, and has a pretty good custom UI, but I happened to be polishing up its metadata anyway and the controls group nicely so I used it as my test case.</p>
<p>Maybe some day this code will get smarter and evolve into a library that can be used by other Gtk hosts.  Better group layout is the obvious &#8220;next level&#8221; advancement, a flat linear list of controls is pretty limited.  Unfortunately there&#8217;s no stock Gtk container which can do text-like reflow, which would be ideal.  Perhaps a simpler scheme based on a maximum reasonable width for a controller would do, where the table will expand to have more columns if the window is wide enough for several.</p>
<p>Most of the metadata required to generate a good UI is also useful for other purposes, for example groups make building a decent menu of many controls feasible (e.g. to add automation lanes in <a href="http://ardour.org">Ardour</a>), and some types of host UIs like a <a href="http://drobilla.net/software/ingen">modular patcher</a> inherently need to generate their own &#8220;UI&#8221; of sorts.</p>
<p>Good metadata is not at odds with custom UIs, they each have their uses, but it is important to remove the burden of custom UIs for simple plugins with just a few controls that really don&#8217;t need them.  It&#8217;s a waste of that most precious of all resources &#8211; developer time &#8211; to have to code UIs for a few sliders and toggles.  Hopefully better host generated UIs and support for more advanced controls like <a href="http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/">file selectors</a> free up developers to spend more time making useful plugins and less time wrestling with GUI toolkits.</p>
<p>It is, after all, all about the sound.</p>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=999&amp;md5=b8978766ef197b5700292761192acf77" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/02/10/better-stock-lv2-plugin-uis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F02%2F10%2Fbetter-stock-lv2-plugin-uis%2F&amp;language=en_GB&amp;category=text&amp;title=Better+stock+LV2+plugin+UIs&amp;description=Today+I+implemented+better+UI+generation+for+LV2+plugin+controls+in+Jalv%2C+particularly+grouping+controls+under+headings+which+makes+a+big+difference.+Unfortunately+few+plugins+group+their+controls+currently%2C+but...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Ardour MIDI Patch, Controller, and Note Names</title>
		<link>http://drobilla.net/2013/01/20/ardour-midi-patch-controller-and-note-names/</link>
		<comments>http://drobilla.net/2013/01/20/ardour-midi-patch-controller-and-note-names/#comments</comments>
		<pubDate>Sun, 20 Jan 2013 05:50:13 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Ardour]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[MIDI]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=973</guid>
		<description><![CDATA[Ardour has supported displaying MIDI patch names loaded from a MIDINameDocument (or &#8220;midnam&#8221; file) for a while, though only patches, and even that was pretty flaky. Since this has become an itch for me and it&#8217;s time for Ardour MIDI &#8230; <a href="http://drobilla.net/2013/01/20/ardour-midi-patch-controller-and-note-names/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ardour has supported displaying MIDI patch names loaded from a <a href="http://www.midi.org/dtds/midi_xml.php">MIDINameDocument</a> (or &#8220;midnam&#8221; file) for a while, though only patches, and even that was pretty flaky.  Since this has become an itch for me and it&#8217;s time for Ardour MIDI to reach release quality, I took some time to give it a serious overhaul.  In this case, a picture or two is indeed worth a thousand words:</p>
<p><a href="http://drobilla.net/blog/wp-content/uploads/2013/01/ardour_midi_note_names.png"><img src="http://drobilla.net/blog/wp-content/uploads/2013/01/ardour_midi_note_names-150x119.png" alt="Human readable MIDI note names in Ardour 3" width="150" height="119" class="alignnone size-thumbnail wp-image-975" /></a></p>
<p><a href="http://drobilla.net/blog/wp-content/uploads/2013/01/ardour_midi_control_names.png"><img src="http://drobilla.net/blog/wp-content/uploads/2013/01/ardour_midi_control_names-150x104.png" alt="Human readable MIDI controller menu in Ardour" width="150" height="104" class="alignnone size-thumbnail wp-image-994" /></a></p>
<p>The note names are mainly useful for doing percussion.  Several of the bundled midnam files have note names defined, and I have added one for General MIDI drums, which more or less corresponds to a lot of instruments, including <a href="http://www.hydrogen-music.org/">Hydrogen</a>.</p>
<p>Controller names, to my surprise, were not present in any of the existing midnam files at all.  I wanted to sequence a hardware synth (the Moog Minitaur) without constantly referring to the manual and trying to remember which CC is which, so I wrote a new midnam file for the device and implemented support in Ardour.  I am very disappointed to learn that there is no ability to group controllers, which really is the best way to do things, so I may embrace and extend (in a completely backwards compatible way) the format in the future to provide a better interface.</p>
<p>The quality of midnam files scattered around the &#8216;net is atrocious.  The MMA actually hosts a DTD for it, but most files use the wrong DOCTYPE (usually with a broken link), among other problems.  I fixed and cleaned up all the bundled ones in Ardour, validated them against the DTD, and left a README in that directory about how to do so.  Hopefully this, along with incentive added by these features, encourages the community to grow a nice set of quality midnam files.</p>
<p>So, MIDI name support in Ardour is now in pretty good shape.  Now we just need to add the corresponding LV2 support&#8230;</p>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=973&amp;md5=266b92f1b0a997934872250f689fec38" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/01/20/ardour-midi-patch-controller-and-note-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F01%2F20%2Fardour-midi-patch-controller-and-note-names%2F&amp;language=en_GB&amp;category=text&amp;title=Ardour+MIDI+Patch%2C+Controller%2C+and+Note+Names&amp;description=Ardour+has+supported+displaying+MIDI+patch+names+loaded+from+a+MIDINameDocument+%28or+%26%238220%3Bmidnam%26%238221%3B+file%29+for+a+while%2C+though+only+patches%2C+and+even+that+was+pretty+flaky.+Since+this+has+become...&amp;tags=MIDI%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Reviving Machina</title>
		<link>http://drobilla.net/2013/01/14/reviving-machina/</link>
		<comments>http://drobilla.net/2013/01/14/reviving-machina/#comments</comments>
		<pubDate>Mon, 14 Jan 2013 08:26:35 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=958</guid>
		<description><![CDATA[In the past few years of hammering on my repository while moulding Ingen into the modular of my dreams, my poor little generative sequencer Machina was often left to rot. That&#8217;s a shame, because it&#8217;s a fun tool to play &#8230; <a href="http://drobilla.net/2013/01/14/reviving-machina/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the past few years of hammering on my repository while moulding <a href="http://drobilla.net/software/ingen">Ingen</a> into the modular of my dreams, my poor little generative sequencer <a href="http://drobilla.net/software/machina">Machina</a> was often left to rot.  That&#8217;s a shame, because it&#8217;s a fun tool to play with if you&#8217;re into generative gadgets and pretty graphs.</p>
<p>So, I spent the weekend working on turning Machina back into a usable app.  It&#8217;s come a very long way in two days, from a mess that doesn&#8217;t even compile to most functionality working pretty well:</p>
<p><a href="http://drobilla.net/blog/wp-content/uploads/2013/01/machina.png"><img src="http://drobilla.net/blog/wp-content/uploads/2013/01/machina.png" alt="A small Machina machine created by step recording" width="623" height="430" class="alignnone size-full wp-image-956" /></a></p>
<p>Aside from rewriting a lot of the code, testing, and fixing things that were broken, I&#8217;ve changed the conceptual model a bit.  There is now always just one start node for a machine.  This tends to create more manageable structures, especially when recording several takes into the same machine.</p>
<p>Step recording has also been significantly improved.  You can build machines entirely in the UI, but this is pretty tedious.  It&#8217;s much more effective to record, or step record if you want regular timing and no delays in-between notes.  The above pictured machine was created by step recording MIDI, though I have tweaked the edge probabilities with the mouse.  You can also import a MIDI file, which is an easy way to get a big machine to work with.</p>
<p>Hopefully I can find the time to turn this into an LV2 plugin and release it, but for now it is an unreleased Jack application.  Give it a try if you&#8217;re feeling adventurous, I would appreciate any feedback.</p>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=958&amp;md5=4120256a73d662583cd2fc7ee22f885c" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/01/14/reviving-machina/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F01%2F14%2Freviving-machina%2F&amp;language=en_GB&amp;category=text&amp;title=Reviving+Machina&amp;description=In+the+past+few+years+of+hammering+on+my+repository+while+moulding+Ingen+into+the+modular+of+my+dreams%2C+my+poor+little+generative+sequencer+Machina+was+often+left+to+rot....&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Host-generated LV2 file choosers</title>
		<link>http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/</link>
		<comments>http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 05:29:56 +0000</pubDate>
		<dc:creator>David Robillard</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[LAD]]></category>
		<category><![CDATA[LV2]]></category>

		<guid isPermaLink="false">http://drobilla.net/?p=935</guid>
		<description><![CDATA[LV2 has been slowly but surely moving towards message-based control to overcome the limitations of static ports. The required low level facilities have been available for a while now, but the lack of a standard way to document message-based parameters &#8230; <a href="http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>LV2 has been slowly but surely moving towards message-based control to overcome the limitations of static ports.  The required low level facilities have been available for a while now, but the lack of a standard way to document message-based parameters and host UI support has been a sticking point.  One particularly pressing need is file parameters.  The current sample example has a stop-gap UI to enable sample loading, but parameters really should be host controllable and simple plugins should not need a custom UI to be usable.  Today I did some work towards resolving that situation.</p>
<p>Here is <a href="https://github.com/x42/convoLV2">ConvoLV2</a> running in <a href="http://drobilla.net/software/jalv">Jalv</a>:<br />
<a href="http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/jalv_file_chooser/" rel="attachment wp-att-936"><img src="http://drobilla.net/blog/wp-content/uploads/2013/01/jalv_file_chooser.png" alt="jalv_file_chooser" width="367" height="106" class="alignnone size-full wp-image-936" /></a></p>
<p>Note this is the built-in UI generated by Jalv and not a custom plugin UI.  Unlike traditional LADSPA style controls, the impulse parameter is not a port, but is set by sending a message to an event port.  The plugin lists parameters with the new patch:writable property, so the host knows which controls to display (or which parameters it can automatically set).  Parameters are described as normal RDF properties, so any existing property can be used, or plugins can define them as needed in their data files (don&#8217;t let the &#8220;RDF&#8221; scare you, the description of a Property is as simple as LV2 ports).  One nice advantage of this over ports is that a project can describe a parameter once and use it in many plugins, without having to describe the parameter every time.  This really adds up when you have hundreds of plugins with, say, an identical gain parameter.</p>
<p>These conventions will be established in the next LV2 release (1.4.0), and the sampler example will serve as a test case.  When host support becomes established, we can also move towards using messages for numeric parameters, which will finally allow for dynamic parameters, control ramps, and so on.</p>
 <p><a href="http://drobilla.net/blog/?flattrss_redirect&amp;id=935&amp;md5=caeb5bdca3b48b93f1ae28387f932f22" title="Flattr" target="_blank"><img src="http://drobilla.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://drobilla.net/2013/01/10/host-generated-lv2-file-choosers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=drobilla&amp;popout=1&amp;url=http%3A%2F%2Fdrobilla.net%2F2013%2F01%2F10%2Fhost-generated-lv2-file-choosers%2F&amp;language=en_GB&amp;category=text&amp;title=Host-generated+LV2+file+choosers&amp;description=LV2+has+been+slowly+but+surely+moving+towards+message-based+control+to+overcome+the+limitations+of+static+ports.+The+required+low+level+facilities+have+been+available+for+a+while+now%2C+but...&amp;tags=blog" type="text/html" />
	</item>
	</channel>
</rss>
