[ardour-dev] Ardour 0.9beta22 released

Paul Davis paul at linuxaudiosystems.com
Sun Dec 19 04:18:52 PST 2004

I am happy to announce the release of Ardour 0.9beta22. With over a
hundred notable new items, and only a handful of bug fixes between
this and 0.99, this is a significant release of Ardour.

Ardour's bug tracking database continues to have 260+ live bug reports
and feature requests, and there are likely twice that number still
present in the program, but we identified those that will be fixed for
the 1.0 release in order to try to gain control of the release

0.99, which just might make it out by Christmas (December 25th, but
don't hold your breath), will be the endpoint of code development for
1.0 per se - the difference between 0.99 and 1.0rc will be related to
release engineering (making sure that the install of Ardour does all
that it should).

Fetch it here:



 * Added support for midi parameter feedback.  When enabled, controls
   that are bound to incoming midi events will send out that event
   when modified.  This lets you control generic midi control surface
   with motor faders and/or led encoders (like the incredibly
   affordable Behringer BCF2000, which was used for testing), to match the internal
   state.  Note the extra/changed options in the option editor's midi
   tab. Also note that automation playback does not yet send midi feedback.
   Reminder: to bind a fader or bar-control to midi, do a Control-Middle-Click
   on it, then send some midi control.

 * Added generic midi bindability for mute, solo, and rec-enable controls.
   to do it, you can do Control-RIGHT-click on the mute and solo
   buttons (the normal binding click is taken on these buttons for other functions).  
   For the Record-enable button, it is the normal ctrl-middle-click.   
   You can also  pick it from the context menu of the mute button.  A menu
   will be added to other buttons later.

 * fixed some midi prompter dialog issues
 * fixed some midi binding state saving issues

 * change entire buffer management scheme to be (more) RT-safe

 * add -V/--novst flag to avoid using VST even if it 
       was compiled in

 * templates are mpeinstalled

 * major changes in thread handling to fix some serious errors in the
   way ardour handles threads when exiting. 

 * make export work when sync'ed with JACK

 * add "timecode-source-is-synced" option to ardour.rc(.in)

 * new playlist selector (uses a tree structure in a scrolled
           window, instead of menus)

 * fix bug with MMC rec-enable handling (only odd-numbered tracks
        could be enabled)

 * make region export progress bar move in the right direction

 * more MTC slaving fixes and improvements (not done yet)

 * remove wrong-thread-calling of Session::clear_event_type(),
        which should help a number of loop-related crashes

 * remove erroneous use of "abort" in function call

 * new playlist selector

 * Automake-1.7 or higher is required for libmidi++ now.  Should be pretty 
    standard on distributions by now.

 * add "nudge by capture offset" operation for regions

 * enlarge playhead/edit cursor arrows a bit

 * avoid duplicate keyboard target registration

 * pay attention to "virtual" window enter/leave events,
        but continue to ignore "inferior" ones (fixes many
	keyboard focus issues)

 * cancelling tempo/meter create dialog doesn't insert
        a default tempo/meter marker

 * tempo/meter create dialogs have minimal WM decor, and
        use standard ArdourDialog API

 * 2d panner fixed in many ways (still not to my taste and
        not really correct)

 * context-click on panner shows context menu (Bypass is the only
        entry so far) 

 * general panner state load/restore fixes

 * master outs added to connections menu

 * added optimizations for peak metering (use of fabsf, flag
        constants as floats, avoid implicit double/float casting)

 * handle disk over- and under-run errors in the GUI, and be more
      comprehensible to regular users.

 * remove zoom changes from the undo/redo history

 * fix panning bypass for 2d panner

 * fix stereo panner "mute" menu item so that it doesn't
        toggle panner mute state every time it pops up

 * add "OK" button and remove window decoration from "can't
      connect to JACK" dialog

 * sessions still load when audio files are missing or corrupt

 * complete redesign of slave-following design

 * stop disk-(over|under)run handler from executing in the
      wrong thread

 * fix appalling C/C++ bug preventing proper use of
      MIDI port tags

 * make solo/mute button mouse bindings more consistent
      with rest of interface (Ctrl-middle click is now
      used for MIDI learn here as well)

 * add solo button context menu

 * add new MessageWithConfirmation object to libgtkmmext

 * fix crash in handling DiskOverrun or DiskUnderrun messages

 * correct region fade in/fade out curves after split

 * fix complete loss of all optimization flags

 * added patch to allow snap-to-SMPTE-frames

 * add redo-ability of automation track "clear" operation

 * add optimization to AutomationList::_eval, and use	
        same design in Curve::_eval

 * fix failure to use a search path when looking for templates

 * fix inserting zero-input plugins (divide-by-zero error)

 * improve sync-with-JACK after MTC slaving breakage

 * session events are no longer queued during session loading,
        which should reduce or eliminate JACK kicking ardour
	during startup. instead, these events are now processed 
	by the GUI thread as the session is loaded. this stops
	the process() callback from potentially having a long
	list of things to do when its first called, thus causing
	JACK zombification.

 * recover-from-crash functionality

         a) all audio files get a header written into them at creation
	 b) when session rec-enable is turned on, we store information
	           about the files we'll be using for recording
         c) if ardour (or the computer) crashes during capture, ardour
                   discovers this information, and uses the actual
		   size of the audio files to modify their headers.
		   new regions are then created and added that 
		   correspond to this data.
         d) there is GUI dialog to check on the user's wishes as to
	           whether or not to use this "pending capture"

 * clear-all-markers and clear-all-ranges no longer crash
       with no session

 * "duplicate client/no jack server" dialog grabs focus
       for its "OK" button

 * change all of libardour + gtk_ardour to use <stdint.h> types
      (uint32_t etc.) and <inttypes.h> for printf-style tags. a few
      "int" declarations remain.
 * redesign + reimplement plugin input/output count handling. try
      it and see. i think its way better. your mileage may vary.

      A note on the new scheme:

 a) sends are ignored entirely in figuring out
     plugin configuration. they send a signal
     *out* of the route, and have no effect
     on the flow within the route, so this
     seemed right to me.

 b) the first insert (plugin or port insert)
     is configured the match the input count
     of the route

 c) then we work *backwards* through the inserts
     to make them match the configuration of
     the previous insert. the output configuration
     of the last insert is left "free".

 d) we recompute in/out counts whenever we	
       - add an insert
       - remove an insert
       - reorder inserts
       - change the input configuration of the 

 e) if the computation "fails" (i.e. no
      way can be found to make them work),
      the order is left as is, and an error
      is delivered via the GUI.

 * fix ancient bug in computing lengths of overlaps under 1 of 
      the 4 possible types of overlaps. this fixes problems
      with chunks (and possible range ops) that extended to 
      the end of the session (and beyond)

 * automation tracks now have some modest logic for handling
      height changes. alas, i can't hide the "expansion arrow"
      when i want to.

 * there is now a context menu for the region list display,
      complete with "Hide", which will move the region into 
      a special subtree titled "hidden". I am still working
      on what a "Remove" option should actually do.
 * selecting a region in the region list selects all
      regionviews that are considered "region-list-equivalent"

 * mouse mode buttons never end up with 2 active at the
      same time

* fix for new insert in/out counting scheme
       as it affects port inserts
 * libardour: 0.843.2

 * fix deep order-of-operations problem that prevented
      Session->{Open,Recent,New} working with new plugin in/out code.
 * delete failed redirect, not just plugin, when adding a new plugin
 * fix for crash at session close caused by list iterator botchups
      (thanks to nick murtagh for discovering this one)
 * (in previous un-announced commit) patch from nick mainsbridge
       for crashing bug induced by tempo change

 * JACK sync is mostly working again

 * new, not necessarily improved Route::_reset_plugin_counts()
        (still a work in progress, debug output generated)

 * fix for crashing bug when deleting a plugin-based redirect

 * every use of the %f specification is now
       bracketed by enforced use of the POSIX
       locale (for libardour; GUI is still 100%

 * main transport clocks shown meter+tempo in BBT mode

 * CD markers+CD TOC/CUE patch from Nick Mainsbridge

 * all connections to Session signals made by editor
       are dropped when session is closed (avoids
       title bar being reset to show session name)  

 * add new "mtc_qtr" signal to libmidi++, emitted every time
      an MTC quarter frame message is received.
 * redesign MTC slaving to sample apparent master speed
      from the process callback, rather than set it
      from the MIDI signal handlers.

 * attempt to use jack_client_open(), if its available.

 * alter --jack-client-name argument to be just --name, in
      keeping with some other JACK clients.

 * Ardour now handles JACK buffer size changes
      - note: VST plugins are likely not correctly handled 
              at this time
 * move JACK related material to its own top-level menu bar item
 * better handling of JACK multiple disconnect/reconnect actions

 * add control for JACK buffer setting to that menu

 * make reconnect/disconnect to/from JACK sensitive at the
      right times.

 * finally (?) fix mouse mode buttons to work correctly
         at startup AND change default bindings of "r"
	 and "g"

 * remove "disk rate" metering stuff from GUI

 * modularized mixer strip components internally
 * renamed the Route Parameters window to Track/Bus Inspector,
       redesigned to use tabs and the same context menu as 
       the mixer strips.

 * rectified the plugin list handling in the mixer strip and
    the inspector window.

 * ardour_ui.rc is modified, so you might need to take action to get
        it used. The simplest way is to copy the new one to

 * fix long standing bug where closing+saving a snapshot saved
        to the base version of the session. Thanks to Doug Mclain 
	sticking with this bug until we finally got to the
	bottom of it.

 * make the "ask about saving" dialog use the snapshot, not
        session, name.

 * new metering design paves the way for 1.0 work on multiple
        meter points. the "pre" button is no longer a toggle, but
	a N-state button, where N is currently 3 (input/pre/post).
	Rec-enabling a track automatically switches to input

 * if a diskstream cannot be rec-enabled because it has
       no known connections, check with JACK in case it was
       connected by starting from another JACK port.

 * catch "no more port" errors when using "Connections"

 * don't try to unregister non-Ardour JACK ports

 * encapsulate and rationalize the way diskstreams
         switch between audio files before capturing,
	 and how they store capture pending info. This
	 fixes several crashing bugs reported by Doug
	 over the last 10 days.

 * handle block size changes for VST plugins. Note: some
         VST plugins do not handle this correctly, and will
	 cause crashes.
 * remove call to VST "resume" method from process() thread.
         This *may* have some ramifications for certain
	 plugins that don't understand the intended thread
	 relationships for a VST host. Haven't seen them
	 yet myself.

 * fix ordering of creating the "Master Outs" "Connection"
         and the Master bus ports. This bug has led to some
	 potentially nasty stuff happening with session
	 files that appear to drop all connections from
	 tracks to the master bus. [ Not totally solved. ]

 * Ardour will build on macosx out of CVS now, with the right
      toolset installed on OSX and recent JACK CVS.

 * playlists now have "frozen" property.
          - frozen playlists cannot be selected by any track. they are
            accessible only by freezing or re-freezing a track.
  * rec-enable buttons and playlist selector buttons start out
           insensitive if a track is frozen at load time

  * some modifications to ArdourMessage to make it even easier and
     more consistent to use.
  * make "cannot record - no inputs" message more useful,
     informative, explanatory and use ArdourMessage.
  * remove middle click mutes regions behaviour (for safety)
  * add behaviour to the meter button that is similar to
       the mute/solo buttons:
          shift-ctrl-click adjusts all metering
          ctrl-button2-click is momentary
          ctrl-button1-click affects mix group
  * cleanup improvements (SIGNIFICANT)
        - fix stupid bug that led to sources having paths
              with "//" in them. this meant that string
              comparisons between paths found using
              a directory scanner and the source paths
              would fail to see them as identical,
              and would conclude that the file was not
              being used withing the session.
        - remove peakfiles for files that are moved
              into dead_sounds
        - actually unlink files when the wastebasket
              is cleaned out

        - search all snapshots to ensure that cleanup
	      does not remove files used by one snapshot
	      and not another.

  * sample rate indicator now includes period size
      indicator in msecs

More information about the Ardour-Dev mailing list