13
0
Commit Graph

12350 Commits

Author SHA1 Message Date
bbe62da55a Extract program version that a session was created with 2017-01-20 18:15:44 +01:00
de2612f7b4 remove cruft 2017-01-20 17:36:18 +01:00
99d284930d fix a -Wformat 2017-01-20 17:36:09 +01:00
8f8d0a70d8 Reap invalidation records 2017-01-20 13:54:03 +01:00
fbae5f5ffd Free dead request-buffers
This partially plugs a memory leak of event-loops.
2017-01-20 13:53:59 +01:00
f05a07837b MIDI leaks -- the Controllergate conspiracy debunked 2017-01-20 11:40:53 +01:00
02d484de8a Plug some libardour memory leaks 2017-01-20 11:32:55 +01:00
6b5dce2c66 Yet another pane pain: allow deleting children using forall_vfunc
We not only need to make sure the iterator remains valid, but also
the object pointed to.

Valgrind trace:
Invalid read of size 8
 Gtkmm2ext::Pane::forall_vfunc(int, void (*)(_GtkWidget*, void*), void*) (pane.cc:617)
 Gtk::Container_Class::forall_vfunc_callback(_GtkContainer*, int, void (*)(_GtkWidget*, void*), void*)
 gtk_container_destroy (gtkcontainer.c:1073)
 g_closure_invoke (gclosure.c:804)
...
 g_object_run_dispose (gobject.c:1084)
2017-01-20 03:13:41 +01:00
4ee8a0e9fc Plug a memory leak (recent session list, session info) 2017-01-20 01:49:23 +01:00
7e766be2cb Add a note. 2017-01-20 00:50:29 +01:00
b084036c87 Fix oddities when replacing VST-presets.
VST used the count of available of presets as URI:
 - add 2 presets (1,2)
 - remove first, add another one -> two presets with same URI (2,2)

PluginInfo::get_presets() simply lists all (name only) in a vector.
Plugin::find_presets() uses the URI in a map (unique by URI).

..various ensuing bugs: eg. Plugin::remove_preset() looked up by name,
but didn't check for NULL.
2017-01-20 00:50:14 +01:00
7617477609 Scale default Atom Ringbuffer size with samplerate
This increases the safe-margin for plugins producing more messages
sent to the plugin GUI (usually fixed ~25Hz updates)
2017-01-19 21:35:22 +01:00
5d7b6fdd62 ancillary change related to removal of boost::optional<Rect> 2017-01-19 20:55:38 +01:00
4fa4b9a135 remove use of boost::optional to define "undefined" Canvas::Rect, and use Rect::empty instead.
This commit includes Rect::operator bool() which might be a candidate for removal in a future commit, in an attempt
to make the meaning clearer
2017-01-19 20:54:54 +01:00
dc11651694 Relax monitor-section processor channel restriction 2017-01-19 18:32:45 +01:00
8fba1cacd7 Add some comment 2017-01-19 13:05:54 +01:00
9c08a403c4 Add alternative preroll record mode:
* Start recording at preroll, trim region to skip preroll at rec-stop
* Keep old punch-in rec-at-preroll API for tape-tracks (later)
2017-01-19 13:05:54 +01:00
e959a762b5 Rework preroll-rec API:
* rename: indicate that recording happens after preroll, punch-in
* move API into libardour: rec+roll (no separate setup, seek, roll APIs)
2017-01-19 13:05:54 +01:00
0f020e59b8 Move preroll duration calc into libardour 2017-01-19 13:05:54 +01:00
b4cf8cfc49 fix up Canvas::Grid child layout 2017-01-19 00:24:54 +01:00
73acd5b413 correct translation matrix for Canvas::Widget 2017-01-19 00:24:54 +01:00
c91c028c37 do not add items twice to their canvas parent! 2017-01-19 00:24:54 +01:00
efd10abdfb Implement record with preroll 2017-01-18 15:15:48 +01:00
a6e02c0d71 Implement Count-In (before recording), fixed BPM, up to 2 bars 2017-01-17 20:43:55 +01:00
fcbed9c1dc Split metronome methods into re-usable parts (for count-in) 2017-01-17 20:20:34 +01:00
88d797bd64 Prepare session-wide implicit monitoring overrides 2017-01-16 19:54:42 +01:00
88b3aa926a Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2017-01-16 15:21:47 +00:00
09a8ec534f canvas::grid: get padding and margin to work; remove some debug output 2017-01-15 21:40:42 +00:00
Hiroki Inagaki
777647259e Add Japanese translation 2017-01-15 15:37:38 +01:00
7c17327f56 get grid layout working 2017-01-15 12:13:03 +00:00
04e346a3d8 tweak Grid repositioning code to be a little more O(N) 2017-01-15 12:13:03 +00:00
99b86f0f05 basic (and probably wrong) Canvas::Grid child placement 2017-01-15 12:13:03 +00:00
0d1a083a5d include Canvas::Grid in build script 2017-01-15 12:13:03 +00:00
9ed87f6693 initial skeleton for a Grid canvas item 2017-01-15 12:13:03 +00:00
126dd02c85 Set rate and blocksize for multi-instance VSTs 2017-01-13 11:29:30 +01:00
38e47c2f5f Accommodate newly introduced source(s) in our MSVC project (ardour_osc) 2017-01-13 10:18:38 +00:00
cd14e8f2e1 add API to query name of bound action 2017-01-12 20:53:20 +01:00
c9715af5d9 OSC: We want to see aux buses even if the gui has them hidden 2017-01-11 19:57:19 -08:00
19e6273502 OSC: Fix aux mute to check stripable exists first 2017-01-10 22:09:30 -08:00
bcbe8424ad fix nested templates for ye ancient compilers of the worlde 2017-01-10 09:58:26 +00:00
74e38365e9 Fix MTC slave implicit return on transport-stop
MTC returns not-locked (no flywheel) when the signal is lost, in which case
Session::follow_slave() jumps to no_roll and ignores the slave-position.
The MTC slave does explicitly request a transport-locate and transport-stop.

Yet, Session::realtime_stop() honors _requested_return_frame for whatever
reason
2017-01-10 10:39:22 +01:00
27773ed1b3 OSC: Fix cue observer stop to zero controls 2017-01-09 19:05:38 -08:00
b073328700 OSC: Add Talent individual monitor controls 2017-01-09 18:56:22 -08:00
23076f3fc4 add XML names/handling for additional Parameter types.
This is still incomplete and really not generic. Ought to be revisited, but has backwards compatibility issues that make it more complex
2017-01-09 15:01:55 +00:00
726d862613 save state of an automation list, even if empty, because it might exist in the history state 2017-01-09 15:01:55 +00:00
129708ad85 add clamp for adding points to a ControlList from a (G)UI 2017-01-09 12:42:08 +00:00
8e9851e527 tweak previous commit to make desc.max_unbound "more correct" 2017-01-09 12:29:04 +00:00
ad97a069d9 fix ranges for LADSPA unbounded toggle parameters.
Used to be 0..4, now 0..1. The 4 is still used as an arbitrary
upper bound for non-toggled parameters
2017-01-09 11:59:02 +00:00
c590b540b0 NO-OP: whitespace 2017-01-08 17:48:57 +01:00
66e580d683 Fix Pane size allocation:
* Skip calling allocate on recently hidden children.
* Don't [temporarily] call size_allocate with negative sizes
2017-01-08 17:48:21 +01:00
cbf5f3d622 Fix crash when changing Pane widgets -- #7198
Gtkmm2Ext::Pane::on_add() uses a pointer to a std::vector<> element
in the destroy notify callback. If the vector is modified, that pointer
becomes invalid.

Add 2 widgets "A", "B". remove "B", add another one "C".
Now if A is destroyed, notify_child_destroyed(PTR) points to
invalid memory and not to "A".
2017-01-08 12:39:07 +01:00
d0596d815f prototype track/bus sharing: state-export 2017-01-08 01:23:01 +01:00
134b69f267 Fix shared-pointer list creation from Lua 2017-01-08 00:30:41 +01:00
nick_m
9e048851c1 amend massive thinko in last commit (actually works). 2017-01-07 05:28:56 +11:00
nick_m
bacb93493d fix incorrect _start after a split.
- when splitting a region where quantized notes start on the
	  split point, the notes would sometimes vanish due to us deriving
	  an exact quarter-note from the supplied frame.
	  this only affects midi regions, as other region types
	  have contents which are completely frame-based.
2017-01-07 05:18:45 +11:00
nick_m
45a8cc7563 TempoMap - do frame conversion outside the lock when possible. 2017-01-07 02:59:07 +11:00
nick_m
66b060df67 remove some excessive methods from TempoMap.
- the beginning of what hopefully will be a saner 'pulse' definition
2017-01-07 02:52:02 +11:00
nick_m
a740cd73dd more no-op renaming - TempoSection::compute_c_func_* -> compute_c_ 2017-01-07 02:34:24 +11:00
nick_m
ce54a23a36 clear up _initial vs _locked_to_meter TempoSection ambiguity. 2017-01-07 02:29:14 +11:00
nick_m
28058f6302 more inactive tempi fixes. 2017-01-07 02:25:42 +11:00
nick_m
a3c009015a actually make import of tempo maps at selected point work (missed line from 3060a458eb) 2017-01-07 01:46:52 +11:00
nick_m
d855ad2856 rename TempoSection::c_func() -> c(). ensure constant tempi have this set to 0. 2017-01-07 01:27:06 +11:00
nick_m
4cb0090583 fix some inactive tempi bugs
- no tempo curve for inactive tempi

	- inactive and meter-locked tempi cannot be deleted.
2017-01-07 01:12:09 +11:00
nick_m
521ae30beb warn when adding / replacing a tempo fails. 2017-01-06 02:26:02 +11:00
nick_m
ade582a1bb make previous commit compile (lua) 2017-01-06 02:22:33 +11:00
nick_m
7138a0baa0 prevent meter-locked tempi from being moved directly when replacing.
- the audio-locked meter owns it.
2017-01-06 02:20:45 +11:00
nick_m
a196ce68fd ensure tempo lines use correct tempo type (constant/ramped) 2017-01-06 01:59:47 +11:00
d42202dfca variation of a PR from ngeiwei that adds MIDI channel info to controller names 2017-01-05 09:56:45 +00:00
7c2f978a68 fix assumed typo from LV2_SUPPORT PR recently committed 2017-01-05 09:56:07 +00:00
Olivier Humbert
ac562c1093 Undo (bad) fix 2017-01-05 09:31:09 +00:00
Olivier Humbert
117e80d3f0 One fix 2017-01-05 09:31:09 +00:00
Olivier Humbert
fda770eed0 French translation update 2017-01-05 09:31:09 +00:00
Olivier Humbert
7f5fcd4789 French translation update 2017-01-05 09:31:09 +00:00
Olivier Humbert
3119545407 French translation update 2017-01-05 09:31:09 +00:00
Dobroslav Slavenskoj
04b515d535 syncing with upstream 2017-01-05 09:24:40 +00:00
Dobroslav Slavenskoj
5f0857620e Fixing LV2_SUPPORT #ifdefs 2017-01-05 09:24:40 +00:00
Julien ROGER
481334ae2a Proposed fix managing shared playlists (see #7150)
Actually, when duplicating a track with "share playlist", the current
playlist is owned by the new created track(orig-track-id). The sharing
mecanism is made by diskstreams pointing on the same(shared) playlist.
Since playlist now owned by the new track, selecting another playlist in
the original track "forgets" the playlist for this track.You can't
select the shared playlist anymore from the original track.

This commit adds a way to keep trace of shared playlist between tracks.
2017-01-05 09:20:50 +00:00
0eedb7f866 Add missing function call in error message when compiling for windows 2017-01-05 10:06:17 +10:00
nick_m
7674ef1c2c add Meter::operator==. 2017-01-05 03:48:35 +11:00
nick_m
4a56b92b13 disallow tempi of 0 ntpm or less. 2017-01-05 00:15:14 +11:00
0f4d61ab30 MidiRegion::clone() needs to ensure that the model is loaded before calling MidiSource::write_to() 2017-01-03 22:10:05 +00:00
7785389e50 Extend/update LV2 license interface 2017-01-03 13:26:48 +01:00
c33f94f686 Enforce minimum pane sizes
* enforce minimum size of child widgets
* honor manually set child-minsize in size-requests
* ignore hidden children (eg. VCA)
* clamp divider position (instead of just ignoring out-of-bounds moves)
2017-01-02 17:13:56 +01:00
2ed145cfd4 allow Lua session scripts to inject [immediate] RT-events 2017-01-02 17:03:33 +01:00
ead84f75a5 Whitelist bit32 Lua library for session rt-scripts 2017-01-02 00:46:01 +01:00
e3050d144a Match API: add rt_context option for en/disable_record()
This allows to call maybe_enable_record () from Lua session or DSP scripts
2017-01-02 00:26:21 +01:00
564d6c4e3c OSC: remove unused overall feedback calls and variables 2016-12-31 08:01:23 -08:00
49d53bc98d OSC: remove feedback enable from GUI (unused) 2016-12-31 07:42:51 -08:00
81123a774a amend 3afe3f32df (remove unused global feedback option)
That commit accidentally removed unrelated code in generic-midi surface
which just happened to have the same name (get/set_midi_feedback) as the
unused preference.

Regardless, there was more cruft there. GMCP midicontrollables now use
the control surfaces' feedback option.
2016-12-31 15:20:07 +01:00
3afe3f32df Remove cruft (old MIDI feedback API) 2016-12-30 17:29:08 +01:00
c8d0015986 Tear down OSC settings GUI, when the protocol is disabled 2016-12-28 22:59:49 +01:00
d1e869f96d Move "Feedback" option to control-portocol settings 2016-12-28 22:59:15 +01:00
e1846c79a9 Fix AudioRegion RMS calc for multi-channel 2016-12-28 22:19:37 +01:00
a02aeb025b Add Lua bindings for AudioRegion RMS+Peak calc 2016-12-28 22:19:37 +01:00
nick_m
3129370bc5 add ArdourCanvas::Flag::width() 2016-12-29 04:16:09 +11: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
27ee53bf8f Emit signal for special cased configuration variable 2016-12-28 13:38:49 +01:00
3120270d87 Add enum for locale-config 2016-12-28 13:38:49 +01:00
6df001e9e1 Some operators need to have different visibility (as they're now used outside of libardour) 2016-12-28 09:14:51 +00:00
bbbf8e6127 Add backend support to extract session-archives 2016-12-27 22:24:24 +01:00
fe01666475 Normalize audio when archiving to fixed-point format. 2016-12-27 18:33:41 +01:00
54a79639df Allow gain factor for audio sources.
In preparation for archiving files as .flac (fixed point),
normalized with gain factor.
2016-12-27 18:20:02 +01:00
Nil Geisweiller
6431c4a6d9 More 8 whitespace to tab indentation fixes 2016-12-22 14:20:13 +02:00
Nil Geisweiller
c1127c245b Fix minor typo in comment 2016-12-21 23:09:40 +01:00
Nil Geisweiller
4c66e36b91 Fix indentation 8 whitespaces to tab 2016-12-21 23:09:40 +01:00
nick_m
ef8187662a check audio-locked meter ordering by frame. 2016-12-22 05:36:40 +11:00
de04da27ee Fix crash when unpacking or deleting pane
Gtk::Widget_Class::dispose_vfunc_callback calls hide() which invokes
Pane::handle_child_visibility which calls Pane::reallocate which
tries to get the allocation of the widget being destroyed.
2016-12-21 17:10:37 +01:00
nick_m
109cd269b4 fix yet another meter-locked tempo ordering thinko. 2016-12-21 05:56:07 +11:00
377b357afb Add Zoom/Expand icon 2016-12-20 18:48:10 +01:00
6941d0b74d Fix the case of jump-to-next-Subdivision 2016-12-19 17:25:59 -06:00
22bc091c37 Fix the case of jump-to-next{prev}-Bar 2016-12-19 17:25:59 -06:00
0a167f5c99 Fix minimum/maximum discovery for integer params (from Hanspeter Portner) 2016-12-19 23:10:36 +00:00
7b9d3f94d4 make solo button on faderport actually work 2016-12-19 22:56:37 +00:00
53be243f6a Session::_ac_thread_active should be used with atomics to create memory barriers, even though lock ordering is likely correct now 2016-12-19 15:33:54 +00:00
3d1eb9a6e5 Session::auto_connect_thread_terminate() cannot use ::auto_connect_thread_wakeup() because that method is allowed to "fail".
Should fix hangs when closing a session with the ALSA backend (and perhaps others too).
2016-12-19 14:36:39 +00:00
004431426d Towards packing CairoWidgets on ArdourCanvas. 2016-12-19 13:36:42 +01:00
218d376154 vertically center text in time rulers 2016-12-19 13:27:22 +01:00
6bbb2c72f0 NO-OP: whitespace 2016-12-19 13:27:22 +01:00
bd0fc8cafc Shorten sync-button label/size 2016-12-18 23:17:29 +01:00
nick_m
d4f7f5ffa2 TempoMap - rename some methods.
gui_move_tempo   -> gui_set_tempo_position
	gui_move_meter   -> gui_set_meter_position
	gui_dilate_tempo -> gui_stretch_tempo
2016-12-19 04:13:17 +11:00
nick_m
27b95300e2 add frame parameter for Meter ctor and TempoMap::replace_meter(). allow for various failures. 2016-12-19 04:02:01 +11:00
nick_m
741df6e6ef there is no curve for identical note_types_per_minute values. 2016-12-19 03:23:33 +11:00
ecc2348ecc should not really bind a shared_ptr<Port> to a sigc slot, so don't do that 2016-12-18 00:07:59 +00:00
1223c8d1cd move termination of auto connect thread till after control protocols are destroyed.
Otherwise, control protocol ports don't actually get deleted
2016-12-18 00:07:59 +00:00
f80fb029e2 Prepare configurable mini-timeline time-span 2016-12-18 00:06:39 +01:00
8ba7e8f4ef Hide/remove per-track record-mode in favor of global setting. 2016-12-17 02:43:42 +01:00
73f8ffce63 add copy constructor, operator= and a clean ::dump() method for TempoMap 2016-12-16 16:49:27 +00:00
e487014e56 add arguments (unusued) to control whether or not SMF tempo map is used during import 2016-12-16 14:57:10 +00:00
6a0ea65885 "toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo 2016-12-16 13:45:43 +00:00
c0aa738395 expose SMF tempo information in Evoral::SMF 2016-12-16 10:43:52 +00:00
2378e7b60c add function to get number of tempos found in SMF tempo map 2016-12-16 10:43:41 +00:00
fe0761d404 unused but slightly tricky code to add track name/instrument to an SMF file when saved 2016-12-16 09:36:52 +00:00
76dca432f0 add comments about limitations for Evoral::SMF and tracks 2016-12-16 09:36:52 +00:00
462c3eeb84 MIDI tracer actually changes the event-loop 2016-12-16 01:56:15 +01:00
6c88f339ca some further invalidation details:
Prevent double unref during when the EventLoop terminates:
deleting the ringbuffer deletes all requests, some of which may
contain stale invalidation

remove the buffer_map_lock, now that signals ref-count the IR.
2016-12-15 18:19:38 +01:00
529b91828d store InvalidationRecord in a Connection object and ref/unref it as appropriate 2016-12-15 16:36:50 +00:00
342c112ae3 add ::use_count() method to InvalidationRecord 2016-12-15 16:36:50 +00:00
nick_m
d118a60090 fix unused Outside filled framed curve for constant points outside the draw area. 2016-12-16 02:54:10 +11:00
nick_m
49c6d13386 revert c3ab67dd now that this misbehaviour is understood. 2016-12-16 02:52:39 +11:00
nick_m
d3ad6dc001 fix issue with disappearing tempo curve at constant tempi. 2016-12-16 02:50:07 +11:00
nick_m
9add5ed480 tempo before the initial section is always constant. 2016-12-16 02:15:56 +11:00
nick_m
9afe719827 amend incomplete change in previous commit. 2016-12-16 02:01:50 +11:00
nick_m
a99331a4e9 more work on patch change redisplay.
- fixes just-introduced undo crash.
2016-12-16 01:58:58 +11:00
nick_m
2a79bcd6b2 fix thinko in TempoMap::framepos_plus_qn.
- affects region relative time conversion when
	  initial meter is non-zero.
2016-12-16 01:04:22 +11:00
cf4668a11e std::list::erase() needs a non-const iterator.;
at least for some versions of gcc.
2016-12-15 11:40:22 +00:00
714da0f68e and now with erase 2016-12-15 10:57:40 +01:00
71bfe79e2c C++98 compatible iterator erase 2016-12-15 10:40:45 +01:00
a95be76741 rework request invalidation
This kills 2 birds with 1 stone: Removes the necessity of locks
and makes call_slot() realtime safe (req->invalidation->requests list
push_back). On object destruction, the invalidation-record (IR) itself is
invalidated.

Invalidated IRs are pushed onto a trash-pool and deleted in the event-loop
of the invalidated object (GUI thread) once all requests that reference it
have been processed.

One last detail remains: PBD::signal connect should reference the IR
and disconnect unreference it. This will guarantee that signal emission
will not reference the IR while the pool trash is dropped.
2016-12-15 06:11:30 +01:00
62b06fa427 Add a trash pool for invalidation requests.
While EventLoop::invalidate_request() does invalidate request in the
request-list. It does *not* invalidate requests in the
per-thread-request-ringbuffer(s).
The invalidation record cannot be deleted in EventLoop::invalidate_request
see 6b5891a78f.
2016-12-14 22:39:25 +01:00
07bcdc7f0a NO-OP: re-indent 2016-12-14 22:39:22 +01:00