Robin Gareus [Fri, 23 Sep 2016 16:46:34 +0000 (18:46 +0200)]
fix a typo.
Really a no-op, AudioSource::length() ignores the position, and
for regular regions > 0 is equivalent to != 0
Robin Gareus [Thu, 22 Sep 2016 22:47:33 +0000 (00:47 +0200)]
Make bundle DSP URI configurable and version/variant independent
nick_m [Thu, 22 Sep 2016 19:06:03 +0000 (05:06 +1000)]
Fix bug where drawing long notes placed the new note on the previous snap line.
- NoteCreateDrag already applies this shift, so it was
always applied twice to the note start frame.
nick_m [Thu, 22 Sep 2016 17:39:05 +0000 (03:39 +1000)]
Remove _midi_regions_use_bbt_beats from Session, _start_pulse and _length_pulse from MidiRegion.
- _start/length_beats are now quarter notes regardless
of loaded session version.
- also restores note colour update
John Emmas [Thu, 22 Sep 2016 09:54:48 +0000 (10:54 +0100)]
Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour)
Paul Davis [Thu, 22 Sep 2016 04:02:38 +0000 (23:02 -0500)]
PortManager::silence() should not clear data in AsyncMIDIPorts
This data was generated asynchronously and is not required to be "silenced"
the way that session data would be. Compare also to the similar tests for
sync-related MIDI ports
Paul Davis [Wed, 21 Sep 2016 22:18:48 +0000 (17:18 -0500)]
gain controls are supposed to be "gain-like"
Robin Gareus [Wed, 21 Sep 2016 10:56:20 +0000 (12:56 +0200)]
Update Archive GUI: expose audio-encoding, set progress text
Robin Gareus [Wed, 21 Sep 2016 11:04:25 +0000 (13:04 +0200)]
report archive encoding progress
Robin Gareus [Wed, 21 Sep 2016 02:06:23 +0000 (04:06 +0200)]
GUI updates for archiving sessions
Robin Gareus [Wed, 21 Sep 2016 02:05:45 +0000 (04:05 +0200)]
Add option to flac encode audio when archiving
Robin Gareus [Wed, 21 Sep 2016 01:45:57 +0000 (03:45 +0200)]
add a static flag to force writing LV2 state
This is needed for save-as and archiving, LV2 state may not be saved
otherwise if lilv_state_equals() returns true.
Also if thestate is saved as part of save-as or archiving or
template, the state-version did increase.
Upcoming normal save will reference a plugin state that does not exist
in the current session bundle.
Robin Gareus [Wed, 21 Sep 2016 01:42:06 +0000 (03:42 +0200)]
add API to change FileSource path in-place
This allows to retain IDs and References of a FileSource, while
changing the actual file under the hood (e.g. from .wav to .flac)
Robin Gareus [Wed, 21 Sep 2016 01:40:48 +0000 (03:40 +0200)]
add a SndFileSource c'tor to create .flac encoded file for archiving
Robin Gareus [Wed, 21 Sep 2016 01:34:43 +0000 (03:34 +0200)]
fix LV2 State Flags for Atom:Path
state-restore does not set the same flag, so lilv_state_equals()
returns false even for identical states and a new state is saved regardless
actual fix also depends on http://dev.drobilla.net/ticket/1145
Robin Gareus [Tue, 20 Sep 2016 18:07:56 +0000 (20:07 +0200)]
add missing files
Robin Gareus [Tue, 20 Sep 2016 17:46:49 +0000 (19:46 +0200)]
GUI support to archive session
Robin Gareus [Tue, 20 Sep 2016 17:46:07 +0000 (19:46 +0200)]
initial support for archiving sessions
Tim Mayberry [Tue, 20 Sep 2016 05:44:38 +0000 (15:44 +1000)]
Restore ARDOUR::MuteControl state, fixes bug #7025
This should be the final part of a fix for bug #7025, which means the id
property of PBD::Controllable is restored and a new id is not generated at
first save.
I'm assuming this was a typo, comparing with the wrong name meant the state of
the MuteControl was never being restored. This also fixes restoring bindings
associated MuteControl instances.
Tim Mayberry [Tue, 20 Sep 2016 05:39:10 +0000 (15:39 +1000)]
Fully restore ARDOUR::SoloSafeControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.
Tim Mayberry [Tue, 20 Sep 2016 05:37:00 +0000 (15:37 +1000)]
Fully restore ARDOUR::SoloIsolateControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.
Tim Mayberry [Tue, 20 Sep 2016 05:12:36 +0000 (15:12 +1000)]
Fully restore ARDOUR::SoloControl state
This is part of a fix for bug #7025 which means the id property of
PBD::Controllable is restored and a new id is not generated at first save.
This also fixes restoring bindings associated SoloControl instances, which is a
bit surprising hasn't been noticed/reported.
Robin Gareus [Mon, 19 Sep 2016 09:29:11 +0000 (11:29 +0200)]
add API to create [tar.xz] archives
Tim Mayberry [Mon, 19 Sep 2016 05:47:15 +0000 (15:47 +1000)]
PBD::canonical_path will no longer throw so change test
Tim Mayberry [Mon, 19 Sep 2016 00:11:59 +0000 (10:11 +1000)]
Move PBD::canonical_path to pbd/file_utils.h/cc and reimplement for Windows
This fixes the libpbd testCanonicalPathUTF8 and libardour
open_session_utf8_path unit tests
You can now have Sessions with localized names containing characters that
aren't in the system codepage on Windows.
It also fixes the issue where a Session would not open when it was moved into a
path with characters that aren't in the system codepage.
The only use case for calling canonical_path/realpath on the session path
AFAICT is for resolving relative paths that are passed via the command
line/terminal. I'm doubtful that works correctly on Windows because of
character encoding issues with the current API we use for that(not glib), so it
is slightly ironic that this issue was caused by an incorrect implementation of
a function that is not really necessary on Windows at this point in time.
Tim Mayberry [Mon, 19 Sep 2016 00:10:23 +0000 (10:10 +1000)]
Add test to create new Sessions with localized names and reopen them
This test is successful on Linux but fails on Windows currently because of the
incorrect realpath implementation for windows in pbd/path_expand.cc
Tim Mayberry [Sun, 18 Sep 2016 11:38:41 +0000 (21:38 +1000)]
Copy UTF-8 test strings from libpbd tests into libardour test utils
Ideally these would be shared.
Tim Mayberry [Sun, 18 Sep 2016 04:59:20 +0000 (14:59 +1000)]
Add test for PBD::canonical_path on Windows using utf8 strings
This currently fails because the windows only realpath implementation in
pbd/pathexpand.cc, which is called from PBD::canonical_path to resolve the path
uses Glib::locale_from/to_utf8. As I demonstrated in the
testOpenFileUTF8Filename test case Glib::locale_from/to_utf8 are not the
correct functions to use for this use case as it converts to/from utf-8 to the
locale's current character encoding. On Windows this is most often a single
byte encoding such as Windows-1252 and conversion will fail if the path
contains any characters that are not in system codepage.
Tim Mayberry [Sun, 18 Sep 2016 03:29:53 +0000 (13:29 +1000)]
Give the Windows MMTimer test a better chance of passing
The default scheduling on windows seems fairly erratic or is at least in the
VM that I'm running these tests on, so increase the timing slack a bit so the
test has a better chance of passing. It is still quite easy for it to fail
though, especially if you for instance manipulate the terminal window somehow
while running the tests but it does not really matter in any case as this test
serves its purpose in testing the PBD::MMTimers API.
Robin Gareus [Sun, 18 Sep 2016 17:07:49 +0000 (19:07 +0200)]
update a-plugins to use official lv2plug.in URI
Robin Gareus [Sun, 18 Sep 2016 17:06:59 +0000 (19:06 +0200)]
add support for LV2 #coarseBlockLength and #enabled
this deprecated previously non-standard extensions
Robin Gareus [Sun, 18 Sep 2016 08:03:37 +0000 (10:03 +0200)]
fix another crash at exit #7033
Don't construct the bindings editor only to disconnect its signals
Robin Gareus [Sun, 18 Sep 2016 07:55:59 +0000 (09:55 +0200)]
update script to follow libardour API change
Robin Gareus [Sat, 17 Sep 2016 23:10:53 +0000 (01:10 +0200)]
ensure that Lua DSP scripts are configured (even with 0 channels)
This fixes an issue with dsp_configure not being when there are
only MIDI signals at the given insertion point.
Robin Gareus [Sat, 17 Sep 2016 22:52:23 +0000 (00:52 +0200)]
match ID of Inline Scope following
2b7a89e
Tim Mayberry [Sat, 17 Sep 2016 10:28:34 +0000 (20:28 +1000)]
Save changes when toggling checkboxes in ExportDialog
I used the Widget::on_hide method in the ExportFileDialog to defer the saving
of changes in state of the analysis and soundcloud-upload checkboxes as it was
not possible to save the format xml state directly from the
ToggleButton::toggled() signal as it created a recursive loop and also to
prevent saving the state more than once.
Even though the ExportProfileManager::FormatListChanged signal is no longer
emitted when saving format state and the crash no longer occurs without this
change. I think it is worth saving explicitily from in the toggle callbacks to
reduce the complexity of understanding what is taking place and when even if it
is less efficient.
There is definitely more opportunity for refactoring and redesign.
Tim Mayberry [Sat, 17 Sep 2016 09:20:06 +0000 (19:20 +1000)]
Fix crash when ExportDialog is hidden
The issue is that when ExportDialog is destroyed
ExportFileNotebook::FilePage::on_hide is called which in turn calls
ExportProfileManager::save_format_to_disk() in order to save changes to the
analysis and soundcloud upload checkboxes. This then causes the
ExportProfileManager::FormatListChanged signal to be emitted, which in all
other cases is emitted when the format list is modified so that the GUI can
rebuild the format selector menu in ExportFormatSelector::update_format_list
when a format is added or removed.
The problem when doing this in the destructor is that some of the widgets have
already been destroyed, specifically the issue was in
ExportFileNotebook::update_soundcloud_upload trying to access the
soundcloud_selector member that had already had its destructor called.
As it is not necessary to call this signal in the first place and it just
causes unnecessary GUI updates remove the signal emission.
Tim Mayberry [Sat, 17 Sep 2016 07:59:59 +0000 (17:59 +1000)]
Fix indentation in ARDOUR::ExportProfileManager source file
Robin Gareus [Sat, 17 Sep 2016 11:46:30 +0000 (13:46 +0200)]
VST threading: prevent concurrent effSetChunk and process()
This is a potential fix for unreliable preset load/restore.
(http://mixbus.harrisonconsoles.com/forum/thread-1970-post-21486.html#pid21486)
Since a Glib Mutex can't be copy-constructed an explicit copy c'tor
is needed.
Robin Gareus [Fri, 16 Sep 2016 20:38:14 +0000 (22:38 +0200)]
NO-OP: whitespace
Robin Gareus [Fri, 16 Sep 2016 20:35:27 +0000 (22:35 +0200)]
re-do previous commit
* do not include _by_name() API. Port names are locale dependent
* proper whitespace (after comma, before bracket) and styleguide
Robin Gareus [Fri, 16 Sep 2016 20:31:43 +0000 (22:31 +0200)]
Revert "Add convenience Lua bindings to access plugin controls"
This reverts commit
faf44386460b6cdda0aa249eb138e8fd82700194.
Thomas Brand [Fri, 16 Sep 2016 20:09:05 +0000 (22:09 +0200)]
Add convenience Lua bindings to access plugin controls
Robin Gareus [Fri, 16 Sep 2016 20:05:43 +0000 (22:05 +0200)]
remove cruft - don't pollute global namespace
* remove unused functions
* don't globally export C functions that are only used locally
Robin Gareus [Thu, 15 Sep 2016 23:39:04 +0000 (01:39 +0200)]
Allow to query HTTP headers
John Emmas [Thu, 15 Sep 2016 13:46:33 +0000 (14:46 +0100)]
Modify our MSVC project to use the newly introduced 'libarchive' library (libardour)
John Emmas [Thu, 15 Sep 2016 13:38:58 +0000 (14:38 +0100)]
Modify our MSVC project to use the newly introduced 'libarchive' library (libpbd)
Robin Gareus [Thu, 15 Sep 2016 13:32:23 +0000 (15:32 +0200)]
Skip pin-management for MB channelstrip plugins
Guido Aulisi [Sun, 27 Sep 2015 16:53:54 +0000 (18:53 +0200)]
Do not delete selected MIDI notes while dragging. (See #6602)
This is not caused by commit_reversible_command, but because
NoteDrag::total_dx calls Evoral::Note<Evoral::Beats>::time()
with invalid MIDI note (deleted).
Robin Gareus [Thu, 15 Sep 2016 11:59:22 +0000 (13:59 +0200)]
Fix passing ctrl-output data to lua inline display thread
Robin Gareus [Thu, 15 Sep 2016 11:48:45 +0000 (13:48 +0200)]
Fix links to manual in windows installer
Tim Mayberry [Wed, 14 Sep 2016 11:48:33 +0000 (21:48 +1000)]
Send/show error message if g_stat fails in Session::cleanup_sources
let the user/developer know if this does occur rather than just silently
skipping the file.
Fix some whitespace issues while we are changing indentation.
Tim Mayberry [Wed, 14 Sep 2016 11:31:31 +0000 (21:31 +1000)]
Use g_strerror() instead of ::strerror() in Session::cleanup_sources
The error is generated by a glib function so use the glib version of this
function(it also consistent with usage in the rest the file).
Tim Mayberry [Wed, 14 Sep 2016 11:23:02 +0000 (21:23 +1000)]
Use g_rename() instead of ::rename() in Session::cleanup_sources
The paths are in UTF-8 encoding and ::rename expects paths in the system
codepage encoding so ::rename will fail for any paths that contain characters
that aren't in the system codepage.
This fixes Flush Wastebasket on Windows where paths contain characters that
aren't in the system codepage(usually most non-ascii characters).
Tim Mayberry [Thu, 15 Sep 2016 10:17:44 +0000 (20:17 +1000)]
Use g_strerror instead of strerror in ARDOUR::FileSource
For consistency when calling glib functions and to get UTF-8 strings for
display.
Tim Mayberry [Wed, 14 Sep 2016 11:58:19 +0000 (21:58 +1000)]
Use ::g_rename instead of ::rename in ARDOUR::FileSource class
The path is in UTF-8 encoding so use Glib functions to properly support paths
containing characters that aren't in the system codepage.
This fixes Clean-up Unused Sources on Windows where paths contain characters
that aren't in the system codepage(usually most non-ascii characters).
Tim Mayberry [Tue, 15 Dec 2015 04:56:54 +0000 (14:56 +1000)]
Add defines necessary for successful gcc/mingw compile with --cxx11 option
_USE_MATH_DEFINES is required for M_PI
WIN32 is no longer defined by gcc/mingw with --cxx11 option enabled(of course
_WIN32 still is) but as it is used in a liblo header(even though it is probably
incorrect to do so) define it.
Robin Gareus [Thu, 15 Sep 2016 11:11:43 +0000 (13:11 +0200)]
Allow to bunde demo session(s)
Robin Gareus [Thu, 15 Sep 2016 11:05:31 +0000 (13:05 +0200)]
bundle embeddable/nativeUI Harrison plugins
Robin Gareus [Thu, 15 Sep 2016 10:51:32 +0000 (12:51 +0200)]
remove cruft from packaging scripts
Robin Gareus [Wed, 14 Sep 2016 21:10:24 +0000 (23:10 +0200)]
implement file-[un]archive progress report
Tim Mayberry [Wed, 14 Sep 2016 10:00:29 +0000 (20:00 +1000)]
Restore state of analyze and soundcloud upload checkboxes in ExportDialog
This should be a proper fix for bug #7003, now that I've spent a bit more time
reading the code. The options are now stored as part of the export format
state.
Tim Mayberry [Wed, 14 Sep 2016 09:56:26 +0000 (19:56 +1000)]
Add analyse and soundcloud-upload properties of ExportFormatSpecification to xml state
John Emmas [Wed, 14 Sep 2016 08:57:11 +0000 (09:57 +0100)]
Check a return value from 'g_stat()'
Some Mixbus users (on Windows) have reported seeing ludicrously high figures for the amount of disk space that'll be recovered if they choose to clean up unused sources. I can't see anything obviously wrong in Ardour's code - except for one situation where we don't check a return value after calling 'g_stat()'.
On Windows, the relevant path should be (hopefully!) in UTF8 format and the first thing that g_stat() does is to convert it to UTF16. If that conversion fails for some reason, g_stat() will return an error status and statbuf will be uninitialized - but at the moment, we're not checking this. As an experiment, let's check the returned value and find out if these user reports go away.
Unfortunately, if it does fix the problem then we've got an even bigger problem - because somehow, a Windows user can create source files with invalid names which can't be later deleted!!
Nathan Stewart [Wed, 7 Sep 2016 00:14:25 +0000 (20:14 -0400)]
Fixes 7004 - Ardour crash on Just Quit when AudioEngine is stopped. AudioEngine::stop() if running() is not true and _backend->stop() is true, mutex was being unlocked without being locked.
Paul Davis [Tue, 13 Sep 2016 19:10:04 +0000 (14:10 -0500)]
change all MIDI read-from-source to map all events into the loop-range for seamless looping (if using)
Paul Davis [Tue, 13 Sep 2016 19:02:48 +0000 (14:02 -0500)]
debug output formatting
Paul Davis [Tue, 13 Sep 2016 19:01:38 +0000 (14:01 -0500)]
do not call MidiRingBuffer::skip_to() when getting a MidiDiskstream's playback buffer, and do not use port offset to shift data in time either (it should be correct)
Paul Davis [Tue, 13 Sep 2016 18:59:30 +0000 (13:59 -0500)]
make MidiBuffer::read_from() use "dst_offset" correctly to alter the time of events read from the MidiBuffer
Paul Davis [Tue, 13 Sep 2016 18:54:02 +0000 (13:54 -0500)]
extend Evoral::Range<T> to offer ::length() and ::squish()
The latter maps a T into a range, using loop semantics
Paul Davis [Tue, 13 Sep 2016 18:51:00 +0000 (13:51 -0500)]
add back event offsetting into MidiRingBuffer::read() (even if we never really use it)
Paul Davis [Tue, 13 Sep 2016 18:50:18 +0000 (13:50 -0500)]
NOOP: spacing and indentation
Paul Davis [Tue, 13 Sep 2016 18:49:26 +0000 (13:49 -0500)]
show "this" in MidiRingBuffer::dump()
Paul Davis [Tue, 13 Sep 2016 18:47:21 +0000 (13:47 -0500)]
slight DEBUG_TRACE enhancement for MidiPort::flush_buffers() output
Paul Davis [Tue, 13 Sep 2016 18:41:06 +0000 (13:41 -0500)]
NO-OP: indentation
Paul Davis [Tue, 13 Sep 2016 18:40:02 +0000 (13:40 -0500)]
Delivery::run() now offsets data delivered to MIDI ports by the global port offset
if the output is then re-used, MIDI data is readjusted to not use the global port offset
Paul Davis [Tue, 13 Sep 2016 18:36:00 +0000 (13:36 -0500)]
use class-static method rather than pretend there is a per-member value for Port::port_offset()
Paul Davis [Tue, 13 Sep 2016 18:34:42 +0000 (13:34 -0500)]
provide Session::declick_out_pending()
Paul Davis [Tue, 13 Sep 2016 18:32:46 +0000 (13:32 -0500)]
second part of: change offset arguments to various <T>Buffer::read/merge methods from framecnt_t to frameoffset_t
Paul Davis [Tue, 13 Sep 2016 18:31:58 +0000 (13:31 -0500)]
change offset arguments to various <T>Buffer::read/merge methods from framecnt_t to frameoffset_t
Paul Davis [Mon, 12 Sep 2016 14:08:01 +0000 (10:08 -0400)]
add a new DEBUG enum for MidiRingBuffer
Robin Gareus [Tue, 13 Sep 2016 17:31:38 +0000 (19:31 +0200)]
copy demo sessions
Robin Gareus [Tue, 13 Sep 2016 16:53:29 +0000 (18:53 +0200)]
add option to skip unzipping bundled demo sessions
Robin Gareus [Tue, 13 Sep 2016 14:14:08 +0000 (16:14 +0200)]
Add support for built-in file/url unzip/untar
This introduces new build-dependency: libarchive
(http://www.libarchive.org/)
Tim Mayberry [Tue, 13 Sep 2016 04:24:28 +0000 (14:24 +1000)]
Rename Struct defined in freesound header to be less generic
This could potentially conflict with a struct declared in the
ardour/soundcloud_upload.h file.
Tim Mayberry [Mon, 7 Dec 2015 22:12:01 +0000 (08:12 +1000)]
Remove duplicate header includes in gtk2_ardour
Tim Mayberry [Tue, 13 Sep 2016 04:20:29 +0000 (14:20 +1000)]
Remove duplicate header include from libardour source file
Tim Mayberry [Mon, 7 Dec 2015 22:08:19 +0000 (08:08 +1000)]
Add missing header include guards in various gtk2_ardour headers
Tim Mayberry [Mon, 7 Dec 2015 22:05:24 +0000 (08:05 +1000)]
Add missing header include guards in canvas library
Tim Mayberry [Mon, 7 Dec 2015 09:30:48 +0000 (19:30 +1000)]
Put ARDOUR::SystemExec implementation inside ARDOUR namespace in source file
Tim Mayberry [Mon, 7 Dec 2015 04:10:55 +0000 (14:10 +1000)]
Add missing include guards in libardour header files
Robin Gareus [Mon, 12 Sep 2016 10:05:03 +0000 (12:05 +0200)]
Tweak PR 269 for portable file-path
Johannes Mueller [Thu, 8 Sep 2016 21:12:19 +0000 (23:12 +0200)]
Cleaned up messed indents (tabs vs. spaces)
Johannes Mueller [Thu, 8 Sep 2016 20:34:39 +0000 (22:34 +0200)]
Lua script to export markers as mp4 chapters
Location markers, that are not xruns are exported as mp4 chapter
marks. This requires `Location::name()` to be exposed to Lua.
Johannes Mueller [Wed, 7 Sep 2016 20:56:56 +0000 (22:56 +0200)]
Expose Location::name() to Lua
Robin Gareus [Mon, 12 Sep 2016 10:02:07 +0000 (12:02 +0200)]
Add a Lua wrapper to Glib::build_filename()
Robin Gareus [Mon, 12 Sep 2016 10:01:07 +0000 (12:01 +0200)]
allow running from src-tree using system-wide gtk-themes w/color defs
Johannes Mueller [Sat, 10 Sep 2016 20:38:07 +0000 (22:38 +0200)]
Example script to prepare the session to record
Often one needs to make sure that all the relevant settings are made
before one actually starts recording. The Lua interface can take care of
this task easily, that the operater by just one action can make sure
that the relevant settings (e.g. recenables, playhead position, etc.)
are ready for recording. This example was written with a quasi live
podcast scenario in mind.
See `scripts/prepare_record_example.lua` for details.
Johannes Mueller [Sun, 4 Sep 2016 13:29:41 +0000 (15:29 +0200)]
Expose `Locations::remove()` to Lua
Clearing location markers is a frequent task and should be automizable. For
example it is handy to clear all the markers when restarting the recording
from scratch after a failed recording.
Thomas Brand [Sat, 10 Sep 2016 21:28:00 +0000 (23:28 +0200)]
add request_play_loop() & get_play_loop() to luabindings