[ardour-dev] ardour-0.9beta30 released
Paul Davis
paul at linuxaudiosystems.com
Mon Sep 12 07:45:31 PDT 2005
After months and months of delay, I am pleased to release
ardour-0.9beta30.
http://ardour.org/releases/ardour-0.9beta30.tar.bz2
While most of my ardour-centered time was focused on getting the
devilish problems with plugin latency compensation and its interaction
with aligning captured material, others stepped up to help fix a
metric ton of bugs major and minor. Major credit must go to Sampo
Savolainen who stepped in as I stepped out to work on many, many bug
fixes since the last release, and then pulled the SSE optimization
work out of his left sleeve (or somewhere). The work that he has done
over the last few months has really kept Ardour development
moving. Thanks! Also thanks to Nick Mainsbridge who has also kept a
steady trickle of important fixes and changes coming.
If there are no major issues reported with this release (there may,
for example, be a problem with some versions of gcc4), we will move
rapidly to repackage this as 0.99, and then 1.0. No more bugfixes are
planned on that path, but if they are minor and clearly correct, I
will accept and apply them.
MAJOR CHANGES
* plugin latency compensation now working correctly (we believe)
This really requires JACK 0.100.0 or above to work
properly, but even without that, they result in notable improvements
in the way Ardour aligns newly recorded material.
* new ardour_ui.rc file: Ardour has a new skin (its been on
ardour.org/index.php for a while now, so many of you have seen it).
Many thanks to Doug Mclain for his efforts with the mind-numbing work
involved in this change.
* SSE optimization (Sampo Savoleinen) - under some circumstances,
almost a 50% drop in JACK "DSP load". *NOT* enabled by default,
see notes at end on how to build and use them.
* alignment options for newly captured material are now per-track.
NOTE: they may not be set correctly for existing sessions.
To change, context click in the track controls area. See
the "Alignment" submenu. 90%+ of the time, Ardour will
select the correct answer by itself.
* mixer window does not appear by default (we may change this for 0.99)
OTHER CHANGES
* DEBIAN scons option renamed SYSLIBS
* MMC shuttle fix from CKG (corrects error in parsing MMC speed
specification)
* massively increase speed of moving end marker (and probably
other markers)
* add option to control -12dB gain reduction during ffwd/rew
* end marker does not reset when overdubbing "early" in a session
* removed redundant "source" info from state files
* fix for the displayed sizes of horizontal meters (e.g. in some
plugin GUIs)
* update info on gettext version required (done online too)
* waveform color is now controllable via ardour_ui.rc
* fix for potential crash bug in canvas-waveview,
caused by rounding a float incorrectly.
* fix for occasional waveform wobbling induced by the playhead or
other "object" moving over the regions. this was
caused by the opposite rounding error for waveviews :)
* shift-button1 click on faders once again restores to unity gain
* mousewheel now shifts by approx +/- 3dB/click, as before the
new pix scrollbars. remember that control and alt-control will
provide finer and much finer control, respectively.
* correct saving of automation track heights
NOTE: the new code ignores old "shown" settings for
automation tracks. when used on sessions where automation
tracks were saved in a visible state, they will be
invisible now.
* remove + 0.5 rounding expressions from waveform renderers
(believed to be unnecessary)
* fix persistence of hidden automation tracks
* generate ardour.rc from ardour.rc.in, reflecting
platform-specific options
* very small fix so that the right shift button also works for keyboard
shortcuts
* when switching clock modes, drop keyboard focus (prevents
losing keyboard focus after accidentally starting a
clock edit)
* fix up labelling of automation mode buttons when a track
has ended up with no outputs (e.g. after a h/w interface
switch)
* major fixes for waveform display (ardour <3 thomas
charbonnel :)
- NOTE: some peakfiles generated by ardour in the past are
incorrect. this only affects recordings of extremely
low level signals (in my and thomas's case, signals
generated by the noise in our on-board soundcards).
- fixes concern primarily near-end-of-file conditions,
and variations in the display when changing zoom level
* avoid needless malloc/free during waveform cache filling
* generalize import thread to "inter-thread information" handling
and use for track freeze progress bar/dialog
* if a crossfade is the only one present at a context click,
its entry in the context menu says "Crossfade", rather than
"Region Name 1 -> Region Name 2"
* widen the Snap To combo to take stupid "FUDGE" size into account
* begin work on using mouse-click to select control points (instead
of just rubber-band drag)
* fix incorrect positioning of region "zero line" that causes odd
overwriting of the thin black line between tracks
* normalize to 1.0 - FLT_EPSILON, not 1.0
* prevent leak (and eventual "Critical: MIDI pool out of memory"
error) caused by unconditionally allocating a new MIDIRequest
for MMC messages that are never sent
* new ffwd/rew bindings:
<in mixer>
Left -> ffwd
Shift-Left -> rapid ffwd
Ctrl-Left -> slow ffwd
Right -> rew
Shift->Right -> rapid rew
Ctrl-Right -> slow rew
* start of global RGBA color map for all canvas items
(doug plans to finish filling it out)
* fix for "ghost" waveforms in automation tracks that were not
in sync with their parent waveforms
* complete inversion of in/out counts for port inserts. for a
a port insert, the desired number of *outputs* is the number
of inputs it is expected to receive, and the desired number
of *inputs* is the number of outputs of the track/bus, more
or less.
* alter left/right ordering of port insert GUI so that the
outputs are on the left ("first" for most users), and
inputs ("returns") are on the right ("second" for most users).
* hide the "use N of available h/w input/outputs" options
for stereo audio hardware
* fully expose the auto-connect model in the Misc. tab of the
options editor, just as it is done in the new session dialog.
* add tooltips for automation track control buttons
* fix design problem with Locations state
* prevent crash when attempt to cut a range from a bus track
* more changes to export to avoid crashes when upsampling (e.g. 48kHz->88.2kHz)
* make region non-opacity work again
* final fix for waveform display issues (??)
- while recording, "flat-lining" was occuring
due to mistakenly copying zero-filled
areas of the cache.
* "follow playhead" button now gets its state
stored/restored across ardour invocations
as intended (note: this is not session-specific)
* dragging region gain control points activates the
gain line (thanks Sampo)
* undo/redo works correctly for region gain line
active state (thanks Sampo)
* "crash recovery" dialog centered in screen
* port inserts now return the correct number of inputs+outputs
thus causing their "owner" routes to have the correct
number of panners
* LADSPA plugin parameter default values handled "better"
(HINT_SAMPLE_RATE is applied as intended, i think)
* partially fix duplication-selection operation
* change keybindings:
- keyboard range definition is now on keypad-{up,down}
- regular up,down now step the track display up/down one
"line"
* slider_position_to_gain() function (widely used) now
returns zero rather than 2.32e-10 when the slider
position is zero.
* remove pathetic attempt to cache the first and last
positions of control points in automation event lists.
This fixes aberrant behaviour of automation when
the last point is moved, but the "cached last"
position is not (any attempt to read automation
values after the cached position would return
the final value).
* do not attempt to use gain value in
Route::deliver_outputs_no_pan() if it was already
applied during automation. this fixes another
odd behaviour for automation, where moving the playhead
backwards after reaching a given automation point
would cause the gain to be stuck at that point's value.
This only applied to tracks with no panner (i.e. 1in/1out)
* add a handler for WM-delete events to the popup objects
used for MIDI binding, and other things. this should
stop one category of crashes caused by "WM-deleting"
these windows.
* set widget name on all (?) menus to get them to use theme
coloring
* patch from Sampo to properly track and control automation
track visibility
* fix for crashing TimeFX bug
* compress space consumed by plugin GUIs
* put plugin author names in title bar of plugin GUIs
* fix mis-ordering between alignment options and enum
(switched the apparent choice that the user made. dang!)
* reset diskstream capture_offset's more often
* compute capture alignment more accurately
* use new jack_recompute_total_latencies () function
* get correct plugin latency after LadspaPlugin::set_state()
* xfade state restore fix (thanks!)
* fix interaction of plugin latency compensation, alignment models
input and output latencies and the phase of the moon.
* #undef cache memmove optimizations in waveview code
* prevent connection modifications if not connected to JACK
* add some new widget names to help with style file
* fix some compile time warnings from printf format types
* use new click sounds from nick mainsbridge
* recompute track i/o latencies more often
* add sigc++config.h to the tarball release so that people
building from it do not require auto* tools
* plugin editors become bound to the window (editor/mixer) in which
they were first created, instead of always being bound to the
editor.
* important fix to prevent crackles and noise when plugin
latency compensation is in effect.
* ensure that declicks applied when the transport start up
are applied to tracks that are delayed by plugin latency compensation.
* prevent mousewheel (or buttons 2 & 3) from having any effect in
Input/Output dialog connected port lists.
* removing a location marks the session dirty
* several important fixes to prevent clicks and crackles during
transport operations, event handling and more
* make polarity work even during a declick
* post-fader redirects get zeroed signal if gain is zero
* gain control (fader) now operational during recording
* automation gain playback during recording possible
* SConstruct update from Kito for better linking on MacOSX and better
flags for non-osx PPC platforms.
* stop auditioning when a file is selected in the
library/filesystem browser.
* fix an unreported buglet with restoring state to audio track
views
* prevent automation gain levels propagating across a mix group
when the transport comes to a stop
* fix problems with trimming regions which have been moved so that
position zero of their source files is at a negative position.
* fix problem with trimming not paying attention to trim direction
when snap mode is set to anything except None
* a few printf-format-arg fixes
* a couple of x86_64 fixes
* fix for audio track pink "recording rectangles" so that they are
in the correct location even when PLC is in effect
* location window improvements from Markus Schwarzenberg
* templates no longer reference automation data, and all
automation states are set to Off.
* normalization does nothing to a region that already has
a maximum sample value of +/- 1.0.
* plugin addition/removal does nothing if not connected to JACK
* Shuttle bug fix by Markus Schwarzenberg, thanks!
[ from Sampo Savoleinen ]
* Fix for mantis #920. Fixes deleting a range selection where
the selection starts at the same frame as the region starts.
This fix is in the global ARDOUR::coverage() method, thus
it might introduce problems in other places in ardour where
the method is used.
* Fix for mantis #991. Fixes playing gain automation from a
point where gain automation value is -inf
* Fix for trimming the region end. +1/-1 problem, trimming left
always trimmed 1 frame too many, trimming right trimmed 1
frame less.
* When moving the gain fader on a track beloging to a mix group
from -inf, the gain of other tracks in the mix group will
only raise a little bit instead of going through the roof.
* IO's have now a max gain so that you can't fiddling huge
gain values using mix groups. This maximum is about +30dB.
This limit is NOT the limit visble on mixer strips.
* When dragging files to create new tracks, the new tracks will
respect the output configuration.
* Dialog for editing meter marks (this is 4/4, 3/4:ths etc.)
the dialog will show the currently selected note type.
* Fix for ardour locking when playlist range in splice mode
is cut.
* Gain envelopes with 2 points (start & end) which don't have default
values are now correctly saved. Previously they were saved as
"default" envelopes regardless of the envelope point values.
* Fix for rounding errors in zooming which resulted in
"zoom to session" not to start from frame 0.
* Fixed "Center to playhead" and "Center to edit cursor" to work
even when the playhead / edit cursor is visible.
* Fixed programming error in removing redirects
(Thanks: Valgrind & Paul)
* Fixed noise when activating a newly created ladspa
plugin which reports latency.
* Initialize quieten_at_speed_is_user in ARDOUR::Configuration
* Ladspa output meters are now displayed correctly:
Omitted ladspa bounds are now respected and output meter
values aren't allowed to go over bounds (of bounds are set)
* New global keybinding for remove last capture,
default key is Ctrl-Delete
* Remove last capture verify dialog is now controllable
via an option in Options->Misc )
* Configuration XML element <recording-plugins> was read
and written two times, fixed.
* Removed ancient "meter bridge" key binding
* Corrected memory leak in Source::read_peaks()
(Thanks Geoff!)
* Prohibit the fake regions visible while recording from
saving state and thus stop it from leaking memory.
* Few UI tweaks to "Zero lines" (blank line that represent
the height at which a signal is at 0.0, visible when track
size is larger or large or largest).
* Fade ins & outs will be the correct colour depending on their
activated / deactivated state when a new session is loaded.
* Fade in & out handles will now be only visible when the
mouse is on top of that region.
* Rec boxes will now behave correctly even when the zoom
level is changed while recording.
* Applied patch by Christopher K. George which fixes the
"separate region" function for tracks where speed != 1.0
* Dialog for playlist destruction confirmation in session
cleanup is now centered.
* Track speed selector fixes:
- Fixed rounding errors which caused the speed factor to be at
values really close to 1.0 but not quite
(Thanks Wolfgang!)
- The mouse grab initiated when clicking on the selector is now
ended even when the grab was started with the mousewheel
- Fixed set_bounds() which didn't set the "initial" value
as it's supposed to
* Fixed uninitialized variable in CrossfadeEditor::audition_both()
(Thanks Aad!)
* Fixed some non-errors which made valgrind angry
* Removed accidentally committed debug output
* Regions now store the state of _first_edit (Thanks Valgrind!)
* Fixed rubberband selection for tracks with speed != 1.0
* Fixed unset object field in Editor
* Fixed uninitialized variable in Crossfade XML constructor
* Cut selection is now cleared when session is closed. This fixes
a segfault when doing copy/cut operations in a session after closing
a session where you had performed some copy/cut operations.
* Frozen tracks will now have both rec button and playlist switch
button inactive when loading a frozen track from disk.
* The next operations on tracks where speed != 1.0 will work properly
now: Cut/copy, paste, find next region (used for example in
playhead-to-next-region-start)
* Snapping to region start/end/boundaries/sync point works
for tracks where speed != 1.0
* Context menu crash from right clicking regions on
varispeed tracks fixed.
* Imported fix for "shaped dither" algorithm from libgdither-0.6
(Thanks Wolfgang & Steve!)
* Fixed trimming regions using the edit cursor for varispeed tracks
* Cleared up an issue with the gain meter which was caused by an
earlier commit to fix the varispeed click box. Setting gain to
unity by middle-clicking on the gain display set gain to -0.1dB
instead of 0.0dB.
* move global transport declick to correct location in the route
signal flow
* ensure that gains are stored with sufficient resolution in the
session file
* make all versions of gcc use the same fastlog code (nick/sampo)
* "brickwall" mixgroup gain patch
- if a mixgroup is active, changing the gain of any
member of the group is barred if it would change
the relative gain levels within the group.
- because of the nonlinear motion of the faders, this
can cause visually odd behaviour if you have a group
that includes tracks with extremely low gain settings
along with others at 0dB or above. however, the audible
results are what you would really be expecting.
* Fix for region export. Resulting files are now
properly closed and memory allocated for export
is freed properly.
* Fix 32-bit integer export for sample values < 0.0
* SSE optimized functions for peak computation, buffer mixing and
applying gain. These functions can be used on any x86 processor
(except those running in 64 bit mode).
* New command line parameter which enables the HW specific
optimizations:
-o / --use-hw-optimizations
[ From Nick Mainsbridge ]
* Fix for artefacts in the BBT ruler
* Added patch from nickm for gcc4 support.
Added virtual destructors that gcc4 warned about, correcting memory leak in Stateful in the process.
* place choice dialogs at center of screen, not mouse position, to
avoid issues with dialogs that show up near edge of long menus
* fix for mantis 770: editing tempo location doesn't change its
location
* changing the click to an existing soundfile sets both emphasis
and regular click sounds to the same file; fixed.
* remove port button never set back to insensitive if it was ever
sensitive; fixed.
* no more seamless loop button; choice is now made automagically
based on slave setting
* fastlog.h fix for gcc4
* fix for type in xfade initialization
* fix for loading/not rewriting instant.xml during session loading
Quick HOWTO on the SSE optimizations
=====================================
When the routines are built in, ardour will check the processor
features run-time and select them if the processor supports
SSE. Look for a message "Enabling SSE optimized routines" in
the console when starting up Ardour. If you do NOT see this
message, it means that these optimizations have not enabled.
There are two scons flags related to SSE:
* USE_SSE_EVERYWHERE=1 (scons flag)
This means that gcc is supposed to optimize all compiled code with SSE
instructions. This should be used if the built binary will be used only
on computers with SSE.
* BUILD_SSE_OPTIMIZATIONS=1 (scons flag)
The hand-written assembler functions will be built in and will be
selected run-time if the parameter "-o" is given AND the current
processor supports SSE.
Everyone "rolling their own" ardour executables on x86 platforms
should use both of these options.
Note to packagers who need to produce binaries which will work on a
variety of platforms: to make your life easier, we have tried to make
it possible to compile ardour in whole without SSE BUT include these
routines. To do this, set:
BUILD_SSE_OPTIMIZATIONS=1
USE_SSE_EVERYWHERE=0
This builds ardour without SSE instructions overall, but it builds the
optimized routines, checks for SSE at run-time and selects them
if the current architecture can run them.
People building Ardour for OS X can ignore both options (for several
months, at least ;)
More information about the Ardour-Dev
mailing list