Commit Graph

907 Commits

Author SHA1 Message Date
Paul Davis 468731c14b goodbye Profile->...trx 2019-09-25 13:02:31 -06:00
Paul Davis 401ace0c67 don't bother following playhead priority during session loading 2019-09-18 10:08:42 -06:00
Robin Gareus e0d5c1426c
NO-OP: fix some Wimplicit-fallthrough
gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.

see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2019-09-18 17:37:54 +02:00
Paul Davis bd229936ec add finite state machine to control/manage transport state 2019-09-17 18:26:03 -06:00
Robin Gareus 65ec8fe65a
Clarify splash-screen boot messages
Parsing MIDNAM is what takes the most time.

"Reset Remote Controls" message is misleading (it means MMC), not
control-surfaces, which a user may have none.
2019-09-16 23:08:01 +02:00
Robin Gareus 51b2e305c4
Skip duplicate early session-save for new sessions
Identical code is called unconditionally at the end of
the Session c'tor via Session::session_loaded()
2019-09-05 17:00:14 +02:00
Robin Gareus ae2b6e6b09
Further tweaks to .pending file removal
* only delete it after successful save
* show unlink notification in debug-builds
2019-08-16 05:31:50 +02:00
Robin Gareus 6dc8f5ed1d
Fix periodic backup saves
Retain ".pending" files until explicit save or session destruction.
Previously every transport-stop deleted them :(
2019-08-16 01:54:21 +02:00
Robin Gareus a22f918d9d
Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Ben Loftis edde5d64a2 (Source List) Clean up the natural_position implementation (libardour part). 2019-08-01 12:11:31 -05:00
Paul Davis 6f506962a7 Revert "fix use of session-creation via template, when just template name is given"
This reverts commit ce7add1481.
2019-07-18 13:38:43 -06:00
Paul Davis ce7add1481 fix use of session-creation via template, when just template name is given 2019-07-18 12:27:16 -06:00
Robin Gareus 6cfb164d7c
Backport backup folder creation
Other parts for auto-backup is already in ardour-git.
2019-04-12 18:32:34 +02:00
Robin Gareus ff8bd935cf
Remove chicken/egg d'tor
Session::Controllables is a shared_ptr<> list. As long
as the session exists the Controllables will be around. Destroyed(*)
can only be called after the session is destroyed and releases the
shared_ptr<>

NB. this code had a nice hack to construct a "shared_from_this"
workaround. For future reference:

struct null_deleter { void operator()(void const *) const {} };
boost::shared_ptr<Controllable>(c, null_deleter())
2019-03-23 14:31:00 +01:00
Paul Davis fd3b8f79af do not create a (throwaway) playlist during track creation 2019-03-19 15:43:06 -07:00
Robin Gareus 50604d83de
Fix incorrectly saved un-used playlists
This addresses issues with session-cleanup and region-cleanup in
some sessions.

The root-cause why some unused playlists were saved in the session XML
under <Playlists> and not <UnusedPlaylists> is not known.

Early 6.0-pre did incorrect reference counting, but also older sessions
had this issue. Perhaps due to ambiguities of matching playlists
by name in 5.x or session-format changes 3.x .. 5.x.
2019-03-19 22:05:06 +01:00
Robin Gareus cf11e11fc5
Remove global Session::playlists variable, use getter method (1/2)
Global variables that can written by anyone are to be avoided.
This also simplifies exposing SessionPlaylists as Lua bindings.
2019-03-19 05:14:00 +01:00
Robin Gareus 4706201425
NO-OP: Use API to set/test state-of-the-state 2019-03-18 15:36:58 +01:00
Robin Gareus b890cf73ad
Prepare to configure procs only once - fix missing panners
During session load, all earlier configure_processors() calls
were useless and not taking I/O into account! The Delivery ::pan_out()
needs _output I/O ports in order to correctly report the correct
port-count!

This worked in earlier versions because Config->map_parameters()
triggered [two] processor re-configs via ::listen_position_changed().
That behavior was changed in 1af123465c
2019-03-17 17:19:02 +01:00
Robin Gareus 1854a72b80
Revert Monitor-Section to be per session
This partially reverts 639dff3a7c. When loading a session,
the monitor-bus that was saved with the session is used.

This changes semantics of the monitor-section/config.

Config::set_use_monitor_bus(bool) is used to initiate a change!
Notification about the change is sent asynchronously by
Session::MonitorBusAddedOrRemoved

It is no longer possible to directly call add/remove_monitor_section()
and leave the session + config in an inconsistent state.
2019-03-01 16:45:42 +01:00
Robin Gareus e48fe0fd42
Remove more cruft (unused rf-scale) 2019-02-21 00:24:56 +01:00
Ben Loftis 688bd28458 Session-range behavior (libardour part) 2019-02-12 11:35:48 -06:00
Paul Davis 1be3301342 new approach to handling Transport Masters when engine is restarted
Trust that ::reset() works for all transport masters, and call it when engine is stopped. This way
the transport masters are ready to be called again as soon as the engine restarts.
2019-01-25 09:23:08 -07:00
Paul Davis 639dff3a7c make session/Config now responsible for adding/removing a monitor section 2018-12-11 12:22:28 -05:00
Robin Gareus c2652437da
Skip silent sources on session-archive -- fixes #7699 2018-12-05 16:54:13 +01:00
Robin Gareus f443626daa
Fix a tiny memory leak, add_instant_xml() copies the node 2018-11-29 14:25:52 +01:00
Paul Davis 4c7e5dbc74 move away from "sync source" concepts 2018-10-05 14:15:02 -04:00
Robin Gareus b6b353d452 Handle generic-midi bindings per session.
This allows to special-cases session-specific control-surface state.
e.g. midi-learn.

Only restore midi-learned, session-specific, bindings when loading a
session with generic-midi enabled.

Also dis/re-enable generic-midi resets midi-learned, but no other
session-independent settings.

This also handles the edge case:
 1) load global config, generic-midi = ON, w/ bindings.
    state is remembered as cpi->state
 2) load session-condig, generic-midi = OFF, cpi->state is retained
 3) user enables the surface, cpi->state from (1) is applied.
 -> invalid bindings applied -> fail
2018-10-04 02:30:21 +02:00
Paul Davis e6915e01de new transport slave/master implementation, libs/ edition 2018-09-18 19:06:04 -04:00
Robin Gareus e951a55d02 Ignore state-changes during deletion
Closing a session removes tracks, which triggers set_dirty().
There is no need to inform the UI or change the session's state.
2018-07-30 17:47:29 +02:00
Ben Loftis ffc5d1474a auto-backup: libardour part. (from mixbus) 2018-07-14 12:46:49 -05:00
Robin Gareus bee09ac9e1 Remove unused CubicInterpolation from session 2018-07-09 17:30:38 +02:00
Paul Davis 8a18929d57 remove Session::controllable_by_descriptor() and move code into GenericMIDI code (the only user).
This also removes enums introduced to describe well-known parameters for Mixbus. Lookup now involves string
parsing every time, but this is not likely to be a notable cost.
2018-06-21 13:05:58 -04:00
Paul Davis a5e8a69dec add well known controls to list accessible via a MIDI binding map (or OSC?) 2018-05-04 09:40:28 -04:00
Paul Davis 2e41652e61 internally, ControllableDescriptors (used by MIDI binding maps) should use enums for automation types, rather than something custom 2018-05-04 08:25:04 -04:00
Robin Gareus d3a74d3c70 Fix some small memory leak (libardour) 2018-01-27 15:45:12 +01:00
Robin Gareus 2fec64f0bd Fix another duplicate if from session/system config consolidation
Found by PVS-Studio - https://www.viva64.com/en/b/0540/
2017-11-23 09:53:50 +01:00
Robin Gareus 9c3983a7a5 Fix various edge-cases with session-archives
* prevent duplicate names when pulling-in external sources
* drop "origin" after including external sources
* don't include unused playlists
  (they may reference sources that are not included)
* likewise exclude unused regions
2017-10-04 05:06:47 +02:00
Robin Gareus e31f5d9998 Clean up State API:
* Processor implement get_state(), classes derived from Processor
  implement protected ::state() -- as documented in processor.h
* likewise for Route, Track: make ::state() a protected interface
* removal of "full_state", use explicit "template_save"
* use RAII/Unwind to skip saving automation-state
2017-10-04 00:54:55 +02:00
Robin Gareus 0802a0872f API change: expose session-archive compression-level 2017-10-03 02:24:16 +02:00
Robin Gareus 7613c9cb34 Fix session-archive edge-cases, prepare uncompressed archives
* don't fork/clone midi regions (default snapshot)
* properly handle encoding embedded/external multi-channel files
* use dedicated file-extension (prepare for uncompressed archive)
2017-10-03 02:24:10 +02:00
Paul Davis 3f48d00081 use new CubicInterpolation API 2017-10-02 12:46:12 -04:00
Robin Gareus 45336723f9 Re-initialize MMC devices when the preference is enabled 2017-09-30 16:48:30 +02:00
Robin Gareus 72fb8a5342 Align punch in/out recording with latency-compensation 2017-09-30 02:45:13 +02:00
Paul Davis 7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
Paul Davis 30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Paul Davis 6f553ce988 changes required to operate with the Evoral::Beats ticktime commit 2017-09-18 11:40:53 -04:00
Paul Davis ac8dc40035 fix for loading older sessions, where the rest for "is-track" was "has-diskstream", rather than "has-playlist" 2017-09-18 11:40:53 -04:00
Paul Davis 1f53c861b8 remove Track::hidden(); replace with Stripable::is_private_route() 2017-09-18 11:40:53 -04:00
Paul Davis 5a52925695 NO-OP explanatory comment 2017-09-18 11:40:53 -04:00
Paul Davis fe8c70e6fc remove debug output 2017-09-18 11:40:53 -04:00
Paul Davis e2f33cdc8b correctly create Tracks, not Busses 2017-09-18 11:40:53 -04:00
Paul Davis 361cab503b random changes required to get an audio track created and transport functional 2017-09-18 11:40:53 -04:00
Paul Davis 35c7274cc9 remove Diskstream from Track and derivatives; get ardour to actually startup 2017-09-18 11:40:53 -04:00
Paul Davis a4a87f56e9 mega-commit to save state of first "it compilesand links" state for separated disk i/o changes.
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
2017-09-18 11:40:52 -04:00
Robin Gareus f15fc38bd8 Fix a tiny memory leak 2017-08-20 22:23:10 +02:00
Johannes Mueller bd4db1e151 Remove the template description XMLNode before saving the template
... to avoid that the new template description is concatenated to the old one.
2017-08-20 21:09:30 +02:00
Johannes Mueller ae51d5fd4e Let the user add a template description on saving session templates 2017-08-20 21:09:30 +02:00
Robin Gareus fb745cc5a8 Lua may call C++ functions with throw. Catch them 2017-08-19 01:06:44 +02:00
Robin Gareus 5f0279ab06 Catch some exceptions during session loading. 2017-08-17 19:28:14 +02:00
Robin Gareus 22055a07c0 Check major session file format version.
Don't allow to load sessions created with a newer version of Ardour
with an old one (no forward compatibility).
2017-08-17 18:32:49 +02:00
Robin Gareus 6ec133ebde Separate "add master bus" (and add Lua bindings)
This is in preparation for "advanced session setup" allow a SessionSetup
Lua script to create the master-bus.
2017-08-16 00:51:20 +02:00
Robin Gareus 1d8c7ef37a Clean up BusProfile:
* requested_physical_in/out was unused
 * input/output Autoconnect just overrides Preference/Config
   (can be done by a template script)
 * master_out_channels is kept for compatibility (allow to create
   new empty session)
2017-08-16 00:51:20 +02:00
Robin Gareus 1f5013b4a8 Distinguish error-messages.
The vast majority of errors reported by users as
  "Cannot configure audio/midi engine with session parameters"
have nothing to do with engine-parameters.
2017-06-27 20:28:45 +02:00
Robin Gareus de99d7c528 Allow saving state w/o backend
Connections are remembered by ARDOUR::Port to re-establish at load.
2017-06-25 22:03:42 +02:00
Robin Gareus cc7ff53e1f Create a deep-copy of MIDI sources when saving snapshots 2017-06-25 01:57:19 +02:00
Tim Mayberry 6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
Tim Mayberry 5c5cfac4a3 Remove LocaleGuard from Session::load_options
PBD::ConfigVariable uses PBD::to_string/string_to methods so this LocaleGuard
is no longer necessary.
2017-06-22 10:48:38 +10:00
Tim Mayberry def9e110b7 Update Session::writable() during Session::save_as() when switching to copy
Loading a read only Session then making a copy with Save As and switch was
not allowing new Session to be saved as writable state was not updated.

Resolves: #7352
2017-05-13 09:02:02 +10:00
Paul Davis 0c035778e1 libardour now has CoreSelection object to manage selection status of Stripables and AutomationControls 2017-05-05 18:56:25 +01:00
Robin Gareus 0d7e9987b3 fix/amend previous commit. 2017-05-04 23:06:52 +02:00
Robin Gareus 3af9fdad0a Don't save "end-is-free" with templates 2017-05-04 23:00:21 +02:00
Tim Mayberry 4b4d64dd7f Use a const iterator for sorted RouteList in Session::state 2017-04-26 17:36:58 +10:00
Tim Mayberry 3589740d69 Sort Route xml node order by PBD::ID instead of by PresentationInfo
This prevents the node order from changing when the display order of the Routes
changes, which helps to reduce the amount of Session file change.

This is useful for testing and if keeping sessions under version control.

Resolves: #7327
2017-04-26 17:36:58 +10:00
Tim Mayberry 384478a745 Use XMLNode::get_property in Session::restore_history
Avoid using std::stringstream due to potential future issues with C++ locale.

Also avoids potential NULL pointer dereferences.
2017-04-21 12:46:04 +10:00
Robin Gareus f913d5b9f6 NO-OP: whitespace 2017-04-20 23:47:39 +02:00
Tim Mayberry 23d8c41f01 Use XMLNode::get/set_property API in ARDOUR::Session class 2017-04-19 09:36:53 +10:00
Tim Mayberry 334ec95e43 Use ID::to_s() in libardour instead of ID::print() 2017-04-19 07:49:58 +10:00
Robin Gareus 5ebe6fcde8 Add option for record-only metronome. 2017-04-01 23:52:43 +02:00
Robin Gareus f2c0b0ee3f Add an API to query if the audible frame is latent pending a locate
eg. at the end of a loop, the session may already be playing the
beginning of the loop. The TransportLooped signal was emitted.
Yet due to playback latency, the audible frame is still at the end of
the loop.

To interpolate the playhead position the UI needs to be able to know:
Relying on the TransportLooped signal is not sufficient because it
does not take playback latency into account.
2017-03-31 14:01:50 +02:00
Robin Gareus 37bcbcad41 Optimize Session::set_dirty() 2017-03-12 02:36:33 +01:00
Robin Gareus cdc8807728 Prepare re-locating missing external files. 2017-02-22 10:51:08 +01:00
Robin Gareus 6616330531 NO-OP; whitespace 2017-02-22 10:47:59 +01:00
Paul Davis b572f1a617 fix save_as()' inadvertent marking a session as dirty during the process of saving state to disk 2017-02-09 12:40:59 +01:00
Paul Davis 3dbea92519 NO-OP: whitespace removal 2017-02-09 12:40:59 +01:00
Paul Davis 2f0dc08844 when adding a default start/end range to a Location while saving a template, do not mark the current session dirty 2017-02-09 12:40:59 +01:00
nick_m 7b9784fff4 mark session dirty when dragging tempo markers. 2017-01-27 03:05:32 +11:00
Robin Gareus 2dc392b517 update bbe62da55a - use last-modified-with, strip git-rev 2017-01-21 01:19:19 +01:00
Robin Gareus bbe62da55a Extract program version that a session was created with 2017-01-20 18:15:44 +01:00
Robin Gareus 4ee8a0e9fc Plug a memory leak (recent session list, session info) 2017-01-20 01:49:23 +01:00
Robin Gareus 88d797bd64 Prepare session-wide implicit monitoring overrides 2017-01-16 19:54:42 +01:00
Robin Gareus d0596d815f prototype track/bus sharing: state-export 2017-01-08 01:23:01 +01:00
Dobroslav Slavenskoj 5f0857620e Fixing LV2_SUPPORT #ifdefs 2017-01-05 09:24:40 +00:00
Robin Gareus 3afe3f32df Remove cruft (old MIDI feedback API) 2016-12-30 17:29:08 +01:00
nick_m d0580ecfbc allow all types of range location (loop, start, end etc.) to be glued to bars and beats. 2016-12-29 01:39:31 +11:00
Robin Gareus fe01666475 Normalize audio when archiving to fixed-point format. 2016-12-27 18:33:41 +01:00
Robin Gareus e1ca4b2887 Speed up recent session display (for many large sessions)
- don't parse XML into XMLTree
- only read the file, extract relevant elements
- don't read session-template contents, only test file
2016-12-08 10:36:12 +01:00
Robin Gareus 7f9befae2d Add Lua bindings to manage Groups 2016-12-05 23:49:19 +01:00
Robin Gareus a994fd30bd extend Mixbus' "Safe Mode" 2016-10-30 22:25:18 +01:00
Paul Davis 235c1f9adb infrastructure for save/restore of MIDI port user-provided information 2016-10-20 16:34:52 -04:00
Paul Davis f96b698234 infrastructure for MIDI-input-follows-selection 2016-10-19 17:49:35 -04:00
Robin Gareus eae567bd9e Allow opening sessions with files embedded from removable drives
Otherwise Windows shows a critical error for files embedded from
removable devices.
2016-10-13 02:07:34 +02:00
Kamil Rytarowski 5b1b3a76b5 Detect free space on NetBSD 2016-10-04 22:16:35 +02:00
Robin Gareus 75f9a7cf11 don't include session-search paths with templates 2016-09-30 00:11:24 +02:00
Paul Davis e25a4371cb output more stuff to the error channel if/when a session fails to load/be created 2016-09-28 11:28:45 -05:00
Robin Gareus 8018bed0de add an option to exclude unused Audio Sources when archiving the session 2016-09-23 20:34:28 +02:00
Robin Gareus f7cb5b1a6b fix a typo.
Really a no-op, AudioSource::length() ignores the position, and
for regular regions > 0 is equivalent to != 0
2016-09-23 18:46:34 +02:00
nick_m 080e7755a6 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
2016-09-23 03:39:05 +10:00
Robin Gareus c80e8727df report archive encoding progress 2016-09-21 13:04:25 +02:00
Robin Gareus aeb1c71211 Add option to flac encode audio when archiving 2016-09-21 04:05:45 +02:00
Robin Gareus 20ebf10ba3 initial support for archiving sessions 2016-09-20 19:52:56 +02:00
Tim Mayberry ff53fa9806 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.
2016-09-15 21:27:55 +10:00
Tim Mayberry 304b491a29 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).
2016-09-15 21:27:55 +10:00
Tim Mayberry 36d1d842df 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).
2016-09-15 21:27:55 +10:00
John Emmas 83b48f5cc4 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!!
2016-09-14 09:58:10 +01:00
nick_m ab21b241f7 Fix incorrect estimate of future revision. 2016-09-07 00:32:02 +10:00
nick_m 3f4d49fd2f Load midi region length and start correctly in sessions modified by v5.0 -> 5.3-41 2016-09-07 00:18:35 +10:00
Paul Davis 41cc35cf6e do not allow undo/redo while actively recording 2016-08-17 19:22:26 -04:00
Paul Davis cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis 472ef8c55c once the user has explicitly set the session range end, playlist/range changes do not move it.
The user may drag the marker, edit in the Location UI, or use nudge, to set the end
2016-07-12 11:19:49 -04:00
Paul Davis 54d5f36311 changes in logic used by source cleanup to avoid endless recursion in sessions with deeply nested/recursive compound regions.
This also fixes some potentially dangerous cleanup logic related to two sources with the same name (but different paths)
2016-06-28 15:05:56 -04:00
Robin Gareus 86763cba90 Enable build for FreeBSD (part 1/2)
Adopted from Michael Beer -- GH pull-request #232 with minor changes:

*   rebased on master,
*   removed trailing whitespace,
*   don't explicitly change saved configuration defaults (wscript)
*   moved sys/wait (WNOHANG) to header include
*   separate changes in GUI and lib
2016-06-26 16:43:07 +02:00
Paul Davis 49011ea146 noop: comment fix. 2016-06-10 13:57:19 -04:00
Paul Davis 3c0fd1a115 remove incorrect allocation of a second VCAManager in a session.
Fixes warning about a SessionHandleRef at session close
2016-06-06 16:15:25 -04:00
Robin Gareus 0531d0dd0c save version string with session for informational purposes 2016-06-01 22:43:40 +02:00
Paul Davis 28afaebdc4 fix SNAFU in which Stripable::rec_enable_control() was incorrectly defined as ::recenable_control()
Make Mackie support code use the Stripable to access the rec-enable control while we're here
2016-05-31 15:30:45 -04:00
Paul Davis d31527f2e6 improve/extend Session::controllable_by_descriptor() 2016-05-31 15:30:43 -04:00
Paul Davis 201c5825ac remove debug output 2016-05-31 15:30:42 -04:00
Paul Davis d5127001bb move ControllableDescriptor from libpbd to libardour; add support for describing VCAs 2016-05-31 15:30:42 -04:00
Paul Davis e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis 1e9b2abe73 save and restore vca assignments 2016-05-31 15:30:41 -04:00
Paul Davis 5531c83496 change API of Controllable::Changed signal to include (from_self, GroupControlDisposition)
This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
2016-05-31 15:30:40 -04:00
Paul Davis c3afeab49c don't increment actual VCA counter when saving session state 2016-05-31 15:30:39 -04:00
Paul Davis 7b62e08233 add required header 2016-05-31 15:30:39 -04:00
Paul Davis 0dca11cb47 save+restore VCA counter value across instances 2016-05-31 15:30:39 -04:00
Paul Davis d2c405416c save/restore VCAManager state 2016-05-31 15:30:38 -04:00
Paul Davis c61a5cabc7 Session HAS-A VCAManager 2016-05-31 15:30:38 -04:00
nick_m 885f1fd684 Tempo ramps - update midi regions and locations when dragging tempo.
- also make locations and regions use a double beat rather than bbt for musical position.
2016-05-27 23:38:10 +10:00
Paul Davis a232673454 make boost shared_ptr debugging a little easier to turn on/off 2016-05-07 13:36:04 -04:00
Robin Gareus e59ab55831 a few strategic LocaleGuards..
..to prevent switching forth and back during  individual
::state(), ::set_state() when loading/saving the session or locating.
2016-05-07 17:16:59 +02:00
Robin Gareus a6e4494482 Revert "Add a global state localeguard (and one for route templates)"
This reverts commit 2b7a047e92.
2016-05-07 12:20:40 +02:00
Robin Gareus 6d343ba3c6 fix LocaleGuard contstructor (3dc77280) 2016-05-07 12:19:41 +02:00
Robin Gareus 2b7a047e92 Add a global state localeguard (and one for route templates) 2016-05-07 01:11:28 +02:00
Robin Gareus 3dc7728038 we always only use the "C" locale when saving. 2016-05-05 21:49:56 +02:00
Paul Davis 17ace643e4 OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one) 2016-05-04 23:09:45 -04:00
Robin Gareus e3607a4c8b plug some memory leaks in libardour 2016-04-24 14:43:18 +02:00
Robin Gareus b2149de37b add notification if Engine Rate changes and mismatches session's SR 2016-04-18 15:16:27 +02:00
Robin Gareus 888614b714 never ever change sample-rate saved with the session after creation. 2016-04-18 14:50:09 +02:00
Robin Gareus 29543a5dcd add a new counter (for sidechain numbering) 2016-04-12 13:49:50 +02:00
Robin Gareus 0e70b779b4 expose Undo Commands to Lua
Some trickery is needed here to manage object lifetimes and
multiple inheritance.
2016-04-10 01:45:41 +02:00
Robin Gareus 024cf58c05 improve elapsed time readability for large numbers. 2016-04-08 21:50:02 +02:00
Robin Gareus 94ebad3854 Profile Session::save_state 2016-04-08 21:45:32 +02:00
Robin Gareus f4553880f6 Implement Lua session-scripts 2016-02-23 15:41:21 +01:00
Paul Davis e9234c856a add syntax and scaffolding for MIDI binding maps to refer to selected tracks/busses.
THIS DOES NOT WORK YET. Selection information is not available in libardour at this time
2016-02-22 15:31:25 -05:00
Paul Davis 2cb3343eec when looking up controllables via descriptors (e.g. generic MIDI control) use the new "well-known" route controllables 2016-02-02 16:42:50 -05:00
Paul Davis fe3d85b204 Revert "mackie: still respond to route groups visibility changes"
This reverts commit a9ec547457.
2016-01-19 14:16:49 -05:00
Paul Davis a9ec547457 mackie: still respond to route groups visibility changes 2016-01-19 13:38:29 -05:00
Paul Davis 1948b50a68 working version of new gain control design 2016-01-18 12:11:08 -05:00
Robin Gareus d9eb5e00c5 cont'd work on plugin-state templates - #6709
Refactor and consolidate code and re-use it for session-templates.
This avoids recursive copying of the plugin-dir()
2015-12-19 14:46:15 +01:00
Paul Davis 41b2de41d6 change API for accessing session MIDI ports so that (1) boost::shared_ptr<> is used all the time (2) we avoid using multiple functions to return different subclass versions of some ports 2015-12-07 12:38:17 -05:00
Robin Gareus 4c04e8028a add API to read snapshot name from instant.xml 2015-11-20 03:22:41 +01:00
Robin Gareus c4084932fa remember in-use snapshot/session name in instant.xml 2015-11-20 03:22:41 +01:00
Tim Mayberry 689862cafb Decouple Session from MidiPatchManager and reduce parsing of midnam xml files
The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.

For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.

There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.

This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).
2015-10-22 11:51:03 -04:00
André Nusser 67f557b1f4 Add overwrite option to save_template. (default = false)
Before it could not overwrite.
2015-10-21 23:28:44 -04:00
Robin Gareus f53dc5945e extend session-save dirty-flag logic
Snapshot and continue working on current session incorrectly marks 
the session as clean.
2015-10-16 20:54:15 +02:00
Robin Gareus 2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
Robin Gareus dc36b063bf remove unused fstream includes 2015-10-05 22:15:18 +02:00
Paul Davis 297e80e020 attempt to stop transport, finish butler work, and close all files as part of Session > Cleanup 2015-10-04 14:18:04 -04:00
Paul Davis e63de172d5 NOOP: delete trailing whitespace 2015-10-04 14:18:04 -04:00
John Emmas c68736bc02 Change a few instances of 'stat()' to use 'g_stat()' (for UTF8 compatibility on Windows) 2015-10-04 14:18:54 +01:00
Robin Gareus fedec84d3b fix iterator after map::erase().
The iterator referring to the removed element is invalidated.
Other iterators remain valid.
2015-09-23 22:26:44 +02:00
Robin Gareus 7ac691ec82 use pbd's gstdio compatibility wrapper 2015-09-17 14:37:57 +02:00
Robin Gareus 04e7cfabbe prepare peak-file cleanup/recreate. 2015-09-15 14:44:05 +02:00
John Emmas 551e20b926 Remove ifstream / ofstream when accessing session template files (or creating a new session from a template file)
On Windows, the above classes don't support UTF-8 so let's get rid of them and use g_fopen / stringstream / fwrite() etc.
2015-09-15 13:17:22 +01:00
Robin Gareus cb6c975417 remove cruft 2015-09-12 17:55:04 +02:00
Robin Gareus 390ea007c5 rework peakfile handling:
- copy old peak-files to new (do not require re-calc)
- keep old peak-files (for now, backwards compat)
- fix cleanup-sources to remove *new* peak-file
- include channel-number in hash (like it was done before)

see also 624f76b

TODO: add Session > Cleanup > remove/re-create peaks
2015-09-10 00:55:58 +02:00
Mathias Buhr 624f76b229 Fixes case where audiofiles used wrong peakfiles 2015-09-03 09:54:23 +02:00
Tim Mayberry b4e13cbbb7 Add undo history related debug output for debugging Undo/Redo issues 2015-08-19 13:56:11 +10:00
Paul Davis b8b5d0b4c7 alternative fix for the same problem that 9e2048decf was addressing 2015-07-02 14:15:11 -04:00
Robin Gareus 9e2048decf Don’t use invalid iterator during cleanup. fixes #6403 2015-07-02 19:46:38 +02:00
Paul Davis 205f9bca96 push seek-after-state-loaded into butler thread, to avoid multiple threads doing disk i/o related stuff 2015-06-29 14:18:16 -04:00
Paul Davis 8e9bb12f92 no-op: fix whitespace/indentation 2015-06-29 14:18:15 -04:00
GZharun dd0a73e2d4 Fixed use case when session is being replaced with new session with the same name.
We should check session state file (*.ardour) presence to determine if the session is new for TracksLive as TracksLive has a use case which gives user a possibility to replace existing session by clicking on it's state file when new session is being created.
[To be Reviewed by] Paul Davis
2015-06-29 14:18:15 -04:00
Paul Davis 6bdac56998 some more information output to log during save-as, for debugging 2015-06-29 14:18:15 -04:00
Paul Davis 8ac5ef15f0 add more directory names to set managed via various APIs (automation, analysis, plugins, externals) 2015-06-29 14:18:14 -04:00
Paul Davis 68aab0153c rename Session::add_session_range_location() to ::set_session_range_location() 2015-06-29 14:18:14 -04:00
Paul Davis ab2e23db9a follow various events related to playhead priority (loop changes, parameter changes); remove debug output 2015-06-29 14:18:13 -04:00
Paul Davis e2a76746e6 fix accidentally deleted return value 2015-06-29 14:18:13 -04:00
Paul Davis 5927fb4997 fix timing of Butler mapping config parameters to avoid crash.
Amazing that this didn't show up on Linux at all, or on the first run after build. Computers ... sigh.

Conflicts:
	libs/ardour/butler.cc
2015-06-29 14:18:13 -04:00
Paul Davis 5f4f40205b clean up cherry-pick of varifill tweaks from Waves Tracks 2015-06-29 14:18:12 -04:00
Paul Davis ca09a4a355 more tweaks for varifill model, and avoid filling playback buffers during session loading
Conflicts:
	libs/ardour/diskstream.cc
	libs/ardour/session.cc
	libs/ardour/session_state.cc

Conflicts:
	libs/ardour/session.cc
2015-06-29 14:18:12 -04:00
Valeriy Kamyshniy 8505c16057 [Summary] Just adding comment for better code-maintaining. 2015-06-29 14:18:12 -04:00
Paul Davis f116455280 after changing session SR, reset all write sources to use new rate 2015-06-29 14:18:12 -04:00
Paul Davis 32224ee608 add in more Tracks-related auto-(re)connect changes 2015-06-29 14:18:11 -04:00
Paul Davis bebb03a0a4 add in more Tracks-related auto-(re)connect changes, all conditionalized by Profile 2015-06-29 14:18:11 -04:00
nikolay ed291ee8d0 [Summary] Changed function name update_route_active_state() on update_route_record_state()
[Reviewed] GZharun

Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
	libs/ardour/session_state.cc
2015-06-29 14:18:10 -04:00
Paul Davis 4235367acd fixed previous commit from Tracks to work correctly in all cases 2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 07c81a763f [Summary] BUG FIXED: New name of a session saved with “save as”, was not stored in the session recent list.
[Reviewed] YPozdnyakov
2015-06-29 14:18:10 -04:00
Valeriy Kamyshniy 1f98535b52 [Summary] Adding informative message to failed file copy exception in Session::save_as.
[Review required] Paul Davis
2015-06-29 14:18:10 -04:00
Paul Davis 445d742af1 save recent templates analogously to recent sessions 2015-06-29 14:18:10 -04:00