94a136a6bf
Amp is the one place where we generate a per-sample vector for automation playback. Scale this by the masters' value(s) if appropriate
2017-01-21 15:02:29 +00:00
2f530d4fd8
SlavableAutomationControl::get_value(), if doing automation playback, should still scale the returned value by the masters' value(s)
2017-01-21 15:01:16 +00:00
2dc392b517
update bbe62da55a
- use last-modified-with, strip git-rev
2017-01-21 01:19:19 +01:00
7a36ce4925
Instrument insert options:
...
* allow to directly fan-out when adding a multi-channel instrument
* Mixbus: move multi-channel instruments after Comp & EQ.
2017-01-21 00:38:43 +01:00
b588be2dea
Instrument channel option when adding track
...
By setting strict-io on the Instrument plugin early during track
creation, adding the plugin will trigger a PluginSetup Dialog for
multi-out instruments in a strict i/o track.
2017-01-20 21:46:47 +01:00
b25cd7683b
Allow Lua bindings up to 10 args
2017-01-20 21:23:05 +01:00
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
77845f6019
Atomically to invalidate request
...
Yet another slightly overkill approach, but it /may/ explain crashes.
2016-12-14 22:39:18 +01:00
7dbdf6cc6d
Add some more invalidation debug messages.
2016-12-14 19:43:12 +01:00
6b5891a78f
The threading anecdotes - Episode 7
...
When do_request() destroys the receiver object, the receiver will
free the invalidation record. So the IR needs to be removed from the list
before executing the request.
Invalid read of size 8
at: AbstractUI<Gtkmm2ext::UIRequest>::handle_ui_requests() (abstract_ui.cc:242)
by: BaseUI::request_handler(Glib::IOCondition) (base_ui.cc:141)
by: sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (mem_fun.h:2066)
by: sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::deduce_result_type<Glib::IOCondition const&, void, void, void, void, void, void>::type sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::operator()<Glib::IOCondition const&>(Glib::IOCondition const&) const (adaptor_trait.h:89)
by: sigc::internal::slot_call1<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>, bool, Glib::IOCondition>::call_it(sigc::internal::slot_rep*, Glib::IOCondition const&) (slot.h:148)
by: sigc::slot1<bool, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (slot.h:643)
by: cross_thread_channel_call_receive_slot(_GIOChannel*, GIOCondition, void*) (crossthread.cc:49)
by: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
by: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
by: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
by: gtk_main (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.31)
by: Gtkmm2ext::UI::run(Receiver&) (gtk_ui.cc:286)
by main (main.cc:408)
Addrd1b8 is 24 bytes inside a block of size 48 free'd
at: operator delete(void*) (vg_replace_malloc.c:576)
by: PBD::EventLoop::invalidate_request(void*) (event_loop.cc:98)
by: sigc::internal::trackable_callback_list::~trackable_callback_list() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
by: sigc::trackable::notify_callbacks() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1757)
by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1760)
by: ProcessorEntry::~ProcessorEntry() (processor_box.cc:251)
2016-12-14 18:46:01 +01:00
518c31eeb7
skip dead threads (if the event remains, it'll be cleaned up below)
2016-12-14 17:48:44 +01:00
036390f4c2
fix potential invalid lock
2016-12-14 17:31:31 +01:00
7a1ff7ce8f
rework locking ( fa07233a
, 112fba182
)
...
For now: use a single lock, which should fix all related crashes.
optimize (with less contended partial locks) if this works.
2016-12-14 13:43:20 +01:00
f3b3a411d0
use SMF track or instrument names in imported MIDI track names, if requested
2016-12-14 11:46:26 +00:00
6ea7f37c6b
add new member to ImportStatus object to allow specifying how to name new MIDI tracks
2016-12-14 11:46:26 +00:00
721f3270c3
add a new enum to identify how SMF data should be used when naming imported MIDI tracks
2016-12-14 11:46:26 +00:00
d2fd01c241
add API to Evoral::SMF to retrieve all track/instrument names for use when importing
2016-12-14 11:46:26 +00:00
7e0dbd06db
extract track and instrument names from SMF while loading
2016-12-14 11:46:26 +00:00
24160a3b85
add braces and warning for unlikely error
2016-12-14 11:46:26 +00:00
ff6f8ca6c4
fix incorrect test for textual meta events in libsmf
2016-12-14 11:46:26 +00:00
54ef5fadc2
braces please
2016-12-14 11:46:26 +00:00
d5074be4f1
braces, please
2016-12-14 11:46:26 +00:00
8002a0c66e
free track name/instrument string memory when necessary
2016-12-14 11:46:26 +00:00
28caef7d81
add track and instrument name members to smf_track_t
2016-12-14 11:46:26 +00:00
dd525d1613
release locks before deleting record
2016-12-14 02:25:13 +01:00
112fba182f
amend prev commit
2016-12-14 00:51:40 +01:00
fa07233a17
mutex 'er up
...
Some overzealous locking to track down RequestObject related crashes.
bc0fa4d689
wrongly locked the current event loop's
request_invalidation_lock instead of the invalidation's list lock.
Also Abstract UI is able to delete requests concurrently with with
EventLoop invalidation.
e.g. PortManager::PortRegisteredOrUnregistered and GlobalPortMatrixWindow
so the lock needs to be exposed.
If this solves various issues, mutexes should to be consolidated
(request_buffer_map_lock + request_invalidation_lock) and be chosen
such that there is as little contention as possible.
2016-12-13 23:47:07 +01:00
545f5bee87
changes to adapt to modified version of GTK/Quartz which uses only MOD2 for Command, everywhere.
...
The default version of GTK2/Quartz uses MOD2+META for keys and MOD2 for scroll, which is
basically insane
2016-12-13 07:02:08 -05:00
989f934c38
Fix layered-record undo, include changes to existing region(s)
2016-12-13 02:33:07 +01:00
8276a4658a
Fix possible crash when removing ports with jack1
2016-12-12 22:47:16 +01:00
e37bfffca5
Add Slavable::AssignmentChanged signal to notify when a slavable is assigned/unassigned to/from a master
2016-12-12 18:43:55 +00:00
nick_m
e9deb82ef6
only update MidiRegion length_beats in partial copy ctor if there is an offset.
2016-12-13 04:36:07 +11:00
nick_m
a4d8cc2e04
only recalculate MidiRegion start_beats if there is an offset in the 'part-of' ctor.
...
- when drag-copying MIDI regions, a partial region ctor is used
which can lead to _start_beats being off by a sample.
this in turn leads to 7168 happening, but only if magnetic snap
is used and the regions are copied as a group.
this should fix 7168, but the magnetic snap part is not yet addressed.
2016-12-13 02:15:34 +11:00
d3803c54de
Fix a potential deadlock/crash (here tape-track peak-file)
...
read_peaks_with_fpp() already holds _lock, build_peaks_from_scratch()
takes the _lock again.
Depending on glib[mm] and the threading lib it may either result in a
deadlock, or with EDEADLK in undefined behavior when a
non-recursive lock is released twice.
2016-12-12 03:13:16 +01:00
b52bf1a42c
Fix potential deadlock on session-load
2016-12-12 00:09:38 +01:00
nick_m
e4d6e4a87f
disallow placement of audio-locked tempi within a frame of any other.
2016-12-12 02:37:26 +11:00
nick_m
9598f2a811
fix loop/crash when dragging an audio-locked tempo over a music-locked one while snapped to grid.
2016-12-12 02:07:00 +11:00
nick_m
0d7b298fbe
no-op - rename TempoMap::set_active_tempos -> TempoMap::set_active_tempi
2016-12-12 02:07:00 +11:00
nick_m
4d625d35b6
clean up some odd logic.
2016-12-12 02:07:00 +11:00
nick_m
34e41a3ca6
rename MetricSection movable -> initial, but of course initial is !movable..
2016-12-12 02:07:00 +11:00
0c54e56f96
Add support for MacVST hidden/favorites
2016-12-11 15:52:56 +01:00
nick_m
c3ab67ddb6
go back to always interpolating framed curve points.
2016-12-11 23:54:03 +11:00
nick_m
00eef2e000
make TempoMap::dump slightly more readable.
2016-12-11 23:51:00 +11:00
nick_m
d8cabc67d9
fix incorrect audio-locked tempo position when setting bbt via tempo dialog.
2016-12-11 23:49:02 +11:00
nick_m
08cec2350e
fix bar renumbering for audio-locked metrum.
2016-12-11 23:42:26 +11:00
cdbf49b873
Revert "Pixel hunt cairo-packer (status-bar, selection-clock border)"
...
This reverts commit 6015481377
.
2016-12-11 02:19:10 +01:00
6015481377
Pixel hunt cairo-packer (status-bar, selection-clock border)
2016-12-11 01:32:27 +01:00
39903a0023
Check for reserved i/o that are not routes, fixes #7171
2016-12-11 00:04:08 +01:00
642b357376
CairoPacker draws outside of its widget allocation
...
This fixes fixes TimeInfoBox packing when the InfoBox position changes.
2016-12-10 21:30:33 +01:00
1468e270de
Tweak transport icons
2016-12-10 15:56:47 +01:00
61693a318a
Add LIBPBD_API to a function declaration
...
The new specialisation for ConfigVariable<float>::set_from_string() needs to be exportable (it gets used somehow by ARDOUR::SessionConfiguration).
If adding LIBPBD_API causes a problem for gcc, we could change it to LIBPBD_TEMPLATE_MEMBER_API
2016-12-08 17:29:49 +00:00
3fe99b0c7c
remove dups.
2016-12-08 15:41:21 +01:00
975f959adb
For building with MSVC, std::strtof() didn't get introduced until VS2013
...
(use std::strtod() in earlier versions)
2016-12-08 13:57:23 +00:00
f04c1ca4db
I can't find a source file called MIDIXML.cpp (??)
2016-12-08 13:55:11 +00:00
4992ed1211
Add missing enum bindings
2016-12-08 13:21:00 +01:00
61c7af141d
Clarify "frames" (video, timecode) vs "samples" (audio)
2016-12-08 12:45:44 +01:00
f05f19bdd4
add Lua bindings for Timecode conversion
2016-12-08 12:45:44 +01:00
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
9a46d593cb
a-fluidsynth process events even when no sf2 is loaded.
...
Keep track of program-changes, re-apply Bank/PGM once the
soundfont is loaded. fluidsynth itself keeps track of CCs.
2016-12-07 19:48:52 +01:00
bb30d92814
amend 581c7b6
-Wparentheses
2016-12-07 19:47:29 +01:00
295562dd52
Save/Restore MIDI Automation Controls (current CC, PGM)
2016-12-07 19:47:04 +01:00
581c7b6b10
Speed up unloading large sessions.
2016-12-07 12:50:35 +01:00
fe45f9bc21
Set MidiPgmChangeAutomation control value
2016-12-07 12:45:01 +01:00
28ab1f1f74
Add Lua bindings to inspect MidiTrack::MidiControl
2016-12-07 11:30:40 +01:00
f521bdb9dc
Fix another crash at exit.
2016-12-07 01:58:58 +01:00
22ff03ff60
fix copy/paste typo in prev. commit
2016-12-07 01:06:22 +01:00
b14ece32c2
Work around silence-trim config 0dBFS ( 7b1f97bf
)
2016-12-07 01:03:46 +01:00
230fa064b2
Revert "Fix export silence threshold by using a constant value for now"
...
This reverts commit 6784923a05
.
2016-12-07 00:56:14 +01:00
7b1f97bffa
fix parsing "-inf" in config variables
...
The default for export-silence-threshold is -INFINITY, written
as "-inf" (by cfgtool) into system_config. Yet parsing the config using
a std::stringstream results in "0" (due to bugs in various libc++).
2016-12-07 00:50:00 +01:00
1ef1734e76
Allow sparse CC lists.
2016-12-06 22:56:04 +01:00
2d37392f1a
a-fluid synth: label Reverb & Chorus sends.
...
Also globally enable Reverb + Chorus FX (so that sends work by default)
2016-12-06 22:56:04 +01:00
f26ed23fd9
a-fluid synth: list all bank/programs
2016-12-06 17:00:12 +01:00
9c20892c27
Turn a-fluidsynth into C++
2016-12-06 17:00:12 +01:00
8d8132aa3c
rough-in a-fluid synth midnam support
2016-12-06 17:00:12 +01:00
Julien ROGER
0356d64195
Fix #6753
...
Fix "Illegal instruction" due to recursive acquisition/multi release on a RWLock
See #6753 notes
2016-12-06 22:41:25 +10:00
4985f0d7ae
Include last sample in reverse test for nonsilence in end trim during export
2016-12-06 20:55:17 +10:00
b7bee5c903
Fix Multi Duplicate for a Range Selections
...
As mentioned in the previous commit
2016-12-06 14:06:18 +10:00
bd52d4e328
Fix issues in export with trim enabled
...
A complete reimplementation of AudioGrapher::SilentTrimmer::process to support
trimming the beginning and end in the same processing block
Fix export with trim end enabled to actually trim silent frames
Only add silence to beginning or end of export data if data was written
Should resolve : #6412
2016-12-06 13:44:19 +10:00
568cf861f9
Rename AudioGrapher::SilentTrimmer method to reflect behaviour
...
Unlike many of the other uses of the term "frame" this is actually returning
the index to the first sample in the interleaved frame that contains
non-silence.
2016-12-06 13:43:10 +10:00
2c67e71e98
Always signal writing to file is complete at end of the export process
...
With end trim enabled, the only case that would successfully export was if
there was at least some samples above the silence threshold in the last export
processing block.
The issue was that the EndOfInput flag was not being passed to
AudioGrapher::SndFileWriter::process which would then call sf_write_sync and
emit the FileWritten signal to start post processing. Fix that by always
passing the EndOfInput flag in the last export process cycle.
Related: #6412
2016-12-06 13:43:09 +10:00
6784923a05
Fix export silence threshold by using a constant value for now
...
All float values defined in the CONFIG_VARIABLE macro seem like they are cast
to at some stage before writing (another issue that needs addressing). The
default value for export-silence-threshold (-INFINITY) is converted to a value
of 0 and as a result nothing is exported with trim enabled.
Use the same fixed silence threshold as Mixbus until proper bounds checking and
GUI is in place.
Related: #6412
2016-12-06 13:41:17 +10:00
9e794af3ea
Add script to run audiographer tests
2016-12-06 13:20:54 +10:00
62672fa259
add another useful PluginInsert binding
2016-12-06 00:22:24 +01:00
ed5a46d214
Fixup 08fffef
(consistent class name)
2016-12-05 23:49:19 +01:00
7f9befae2d
Add Lua bindings to manage Groups
2016-12-05 23:49:19 +01:00
3cc644b467
set AtomObject body ID to zero (as per spec when unused)
2016-12-05 15:43:54 +01:00
388765e8ce
Remove boost_system test kludge
2016-12-04 19:15:29 -05:00
5ab2e34b2c
Update evoral test suite
2016-12-04 18:49:56 -05:00
9a848d5ba6
Fix configuration
2016-12-04 18:26:30 -05:00
1438191938
Improve coverage of evoral tests
2016-12-04 15:40:21 -05:00
9dbc524060
Improve coverage of evoral tests
2016-12-04 15:17:08 -05:00
9aac954744
Add missing include
2016-12-04 15:16:08 -05:00
b51321bd7d
Make libpbd and evoral capable of standalone build
...
Just an update to slightly rotten wscripts, shouldn't be any changes during an
ardour build. Motivation being a short development cycle for working on evoral
and/or its test suite.
2016-12-04 15:15:11 -05:00
7d2ed46b63
Remove dead/annoying/unsafe code
...
Note the old Note::operator= was unsafe, since it made shallow copies of the on
and off events, which results in a double delete of events when the notes are
destructed.
2016-12-04 15:10:05 -05:00
11464bfb18
Skip testing example lua scripts which are not bundled
2016-12-04 17:50:34 +01:00
454df30ae5
Fix Sequence test
2016-12-03 15:49:13 -05:00
d17f58e531
Remove dead code
2016-12-03 15:28:23 -05:00
398a318934
Fix event type and parameter type confusion
...
I'm not sure if this is really the best way to do event types (should it
just be a completely static enum in evoral, or completely dynamic and
provided by the type map, or a mix like currently?), but previously the
event type was frequently set to either total garbage, or parameter
types, which are a different thing.
This fixes all those cases, and makes Evoral::EventType an enum so the
compiler will warn about implicit conversions from int.
2016-12-03 15:28:19 -05:00
bfbc4566ad
Fix warnings
2016-12-03 15:27:38 -05:00
08fffeffec
Remove Evoral::MIDIEvent
...
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions. However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).
In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
2016-12-03 15:18:21 -05:00
875b1367b2
Factor out and extend MIDIXML implementation
2016-12-03 15:18:20 -05:00