<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div class="gmail-cooked"><p>(because not everybody checks <a href="http://discourse.ardour.org">discourse.ardour.org</a>!)</p><p>Development Update, October 2019<br></p><p>Many people have asked about an update to the 
post from June 2018. I’m sorry things have been so quiet here regarding 
development, but be assured that plenty has been going on, at least from
 a programming perspective.</p>
<p>Development was definitely impacted by Paul’s move to near Santa Fe, 
New Mexico, but now that is largely done and settling in there is well 
underway, he is now back in action. Here’s a photo of the current state 
of the new Ardour HQ, in Galisteo, NM (soon to be radically different 
due to a new self-built desk/console).</p>
<div class="gmail-lightbox-wrapper"><a class="gmail-lightbox" href="https://community.ardour.org/files/images/5cstudio.jpg" title="5cstudio.jpg" rel="nofollow noopener"><img src="https://community.ardour.org/files/images/5cstudio.jpg" alt="" class="gmail-d-lazyload" width="666" height="500"><div class="gmail-meta">
<span class="gmail-filename">5cstudio.jpg</span><span class="gmail-informations">4608×3456</span>
</div></a></div>
<p>Robin, as usual, has been insanely active working on an almost 
countless series of features and bug fixes. This summer, he redesigned 
our processing code to use lock-free queues, an important improvement 
for our realtime code. In the recent past, he added progress 
notification for Lua scripts execution and introduced support for new 
LV2 extensions (backgroundColor, foregroundColor, and scaleFactor) that 
allow a host to inform plugins on host color theme and UI scale factor 
to play better with non-default themes and on HiDPI displays. Most 
recently, Robin has also been nerd-sniped into a very full virtual MIDI 
keyboard implementation that can be used to deliver complex MIDI to any 
part of Ardour (it shows up as a port just like a hardware device would,
 and you can connect it just like a hardware device).</p>
<div class="gmail-lightbox-wrapper"><a class="gmail-lightbox" href="https://discourse.ardour.org/uploads/default/original/1X/23956dca4459871c5f570b33e7ccf8d1f317c477.png" title="ardour-virtual-keyboard-azerty.png"><img src="https://discourse.ardour.org/uploads/default/optimized/1X/23956dca4459871c5f570b33e7ccf8d1f317c477_2_690x232.png" alt="ardour-virtual-keyboard-azerty" class="gmail-d-lazyload" width="690" height="232"><div class="gmail-meta">
<span class="gmail-filename">ardour-virtual-keyboard-azerty.png</span><span class="gmail-informations">788×265 24.6 KB</span>
</div></a></div>
<p>Harrison Consoles sponsored the development of a new plugin manager 
that provides easy access to favorite plugins and favorite presets. They
 also collected many more MIDNAM files (used to describe various MIDI 
equipment and their programs) and tagged hundreds of plugins with 
semantic information. Ben Loftis at Harrison also made some useful 
changes to the information presented in the Source list (with more 
planned for the future).</p>
<p>Since the last update, there have been several significant 
development branches undertaken. The first two don’t have much impact 
for users in terms of visible functionality, but make ongoing 
development easier. The first added a formal design known as a “Finite 
State Machine” to help manage transport state. Before this, it was more 
or less impossible to explain or logically reason about the state of the
 transport (start, stop, locate etc.) We now have a much cleaner 
implementation here that allows us to think more clearly about how this 
all works (and it is a lot more complex than you would imagine!).</p>
<p>The second development branch to be worked on was a similar “logic 
cleanup” of the entire startup process. This too was a huge mess at the 
code level before, and it was extremely hard to reason about where 
things happened and why. If you wanted to change them, even in a small 
way, it was a very daunting task. Even fixing a bug such as “why doesn’t
 the window close button work with this dialog?” was a deep 
headscratcher. Although the startup process should be identical to the 
way it has been for 4.x and 5.x, internally it’s now much cleaner and 
more understandable, again making future changes easier.</p>
<p>Another branch changed the way that Ardour handles timecode (MTC, LTC
 etc). This is now done by dedicated objects that run all the time 
during the life of the program (they can be disabled, of course). This 
means that you can see the current time data being delivered by an MTC 
or LTC source at all times, regardless of whether you are actually using
 it. There’s a much more powerful GUI for presenting this data and 
choosing (and naming) timecode sources. You can also have multiple 
timecode sources of the same type - not particular useful for a typical 
home studio setup, but if you’re working with lots of video gear, quite 
handy.</p>
<p>Finally, the most recent development has been to completely change 
how we handle managing MIDI data for playback. We have eventually 
concluded that although theoretically MIDI data could be as large as 
audio data, in practice it is never even close in size. Since MIDI was 
first added, we have used the same design as for audio to move data from
 disk into a track or bus and then on out of the program (when 
appropriate). This has turned out to be overly complex and unnecessary. 
We do still have a data structure model for MIDI that is designed 
specifically for editing. But for playback, we now “render” a MIDI track
 into a very simple form whenever it is changed, and use this in-memory 
representation directly. Although it was not the original intent, this 
should help various MIDI related issues, because the entire playlist for
 the track is rendered at once, using a single starting point (zero). We
 are hopeful it will fix some problems with missing and stuck notes.</p>
<p>Len Ovens has been doing some cool work on “foldback busses”. 
Foldback is a slightly obscure term for what is more typically called 
“monitor mixes” - sending performers in-ear or on-stage submixes for 
them to listen to while performing. You’ll be able to do very 
sophisticated monitor mix configurations in 6.0.</p>
<p><strong>What You’ve Really Been Waiting For</strong></p>
<p>The big news, however, is that we are now getting very close to an 
alpha state. There are a few architectural issues still to solve, but we
 don’t plan to do any more feature development before 6.0.</p>
<p>We expect there to be many, many subtle bugs because of all the 
changes we’ve made to basic architecture over the last 2 years and more.
 We will be asking for as much help as possible (though not too much - 
this is still a very small development group!) to discover, analyze and 
resolve these bugs. Obviously we test along the way, but our testing is 
guaranteed not to have the wide coverage that our user community can 
provide.</p>
<p>If things go well with the remaining architectural issues, we might 
get to an alpha version within a couple of weeks. From there, it’s hard 
to say how long until the actual release of 6.0 - that will depend on 
the magnitude and scope of the bugs discovered during testing. But we 
are modestly optimistic that at least a beta version of 6.0 might appear
 before the end of this year.</p></div></div></div>