Commit graph

11650 commits

Author SHA1 Message Date
Damien Zammit
6bf40e3a44 a-Reverb: Fixed bug with the reverb all pass filters causing bad sound 2016-08-18 00:41:43 +10:00
Julien "_FrnchFrgg_" RIVAUD
08df4e1920 Fix anchored popups with separators in them
The code computing the position of the popup menu used to compare the
given string to each MenuItem::get_label() result, but that method
actually replaces the content (child) of the MenuItem if that child is
not already a Gtk::Label. In particular, this breaks menu separators.

Avoid the issue by checking by hand if the only child of the MenuItem is
a Label, and directly compare the label text.
2016-08-17 01:45:47 +02:00
Julien "_FrnchFrgg_" RIVAUD
6a985df81e Replace positioning function with popup helper
Because all uses of the function positioning menus anchored to a widget
were as callback argument to Gtk::Menu::popup() where the caller needed
to correctly bind arguments, this led to repeated and a bit obscure code.

Wrap the logic into an helper function that takes care of all that, and
update the callers.
2016-08-17 01:45:47 +02:00
Robin Gareus
18af0dc4cd Also send lv2:timePosition whenever BBT or Tempo changes
This mostly fixes an issue with notifying plugins about tempo-ramps
and BPM changes.

remaining to be fixed (in tempo.h):
```
_session.tempo_map().metric_at(frame_position).tempo().beats_per_minute()
```
currently returns the most recent *fixed* tempo at or before
`frame_position`. All other Plugin types are affected by this as well.
2016-08-16 13:11:49 +02:00
Robin Gareus
7b993ef138 turn comments into doxygen doc 2016-08-16 00:26:06 +02:00
Robin Gareus
bc0bb6cae9 extend lua-doc to show properties 2016-08-16 00:25:59 +02:00
Robin Gareus
29feb8dec7 add some missing enum bindings (for config variables) 2016-08-16 00:20:36 +02:00
Robin Gareus
11da4a83e4 expose SessionConfiguration as lua bindings 2016-08-15 22:25:56 +02:00
Robin Gareus
3b7dbdfeb8 Re-enable luabridge addProperty()
In preparation to expose ARDOUR::SessionConfiguration.
Also change the return-type to bool to match Ardour's set/get API
2016-08-15 22:25:56 +02:00
nick_m
4848cb6d42 Enforce rounding to beat as >= 0.0 2016-08-16 00:43:08 +10:00
Robin Gareus
46cbb9084e Expose Stripable Color & Ordering API to Lua
We can't easily use C++ references with Lua closures, so
new API (pointer to PresentationInfo) was added.
2016-08-15 16:37:44 +02:00
Paul Davis
09ed9c44e7 change PBD::Transmitter code to use PBD::Signal<> not sigc::signal<>, since the latter is not thread safe 2016-08-14 08:33:23 -04:00
Robin Gareus
f77d1e0a36 Don't call any Transmitter from realtime context
This fixes a crash when TempoMap::bbt_at_frame_rt() is called
for a latent effect at position 00:00:00:00 and frame is < 0.
2016-08-14 00:47:03 +02:00
nick_m
c62026b567 Ensure RelevantModifierKeyMask is updated on each modifier change.
- fixes bug where changing prefs in User Interaction
	  only took effect on restart.
2016-08-14 03:04:54 +10:00
nick_m
3f24d5d96e Always send start property changes when a midi region trim alters position.
- ensures gui updates correctly.
2016-08-14 03:04:53 +10:00
nick_m
172bcc8165 Audio-locked midi region fixes.
- don't alter region frame length on tempo change or position change.

	- set region _start correctly (see comments) on tempo map change.

	- ensure audio-locked region's beat is set on tempo map change
2016-08-14 03:04:53 +10:00
nick_m
5c2ccc4f3e Allow negative return in TempoMap::beat_at_frame() and its exact_ variant.
- audio-locked midi regions can be start-trimmed properly
	  when close to 1|1|0
	- a midi region placed before the first meter
	  will continue the tempo curve and first meter.

Only a couple of callers require change, as bbt_at_beat() already
deals with this.
2016-08-14 03:04:53 +10:00
Robin Gareus
613ae0c110 Nobody expects the LV2 inquisition! 2016-08-13 14:51:57 +02:00
Paul Davis
0fa106ef4b check for null pointer in Locations::remove() 2016-08-12 12:48:35 -04:00
Robin Gareus
c8c6bca658 fix crash when copy'ing latent plugins 2016-08-10 16:32:34 +02:00
Paul Davis
e9752ff93e remove debug output 2016-08-09 21:26:27 -04:00
Robin Gareus
2b7a89ecff prefix blessed scripted DSP plugins with a-* 2016-08-10 03:11:49 +02:00
Robin Gareus
dd88461942 clean up plugin ttls - always add semicolon for compatibility 2016-08-09 22:00:38 +02:00
nick_m
00f12dc395 Fix test compilation error. 2016-08-10 03:16:49 +10:00
nick_m
13413c0b0f BBTTest::addTest() should add a meter rather than replacing the first one. 2016-08-10 01:56:55 +10:00
nick_m
9acfdb31a2 Make tempo tests use the api more correctly.
- TempoMap initially contains a tempo and meter.
	  using add_tempo/meter() using the position of an
	  existing section does the right thing, but prints a warning.
	  Use replace_tempo/meter().
2016-08-10 01:46:05 +10:00
nick_m
4ddb6b74f5 Allow -ve framepos handling in TempoMap::framepos_plus_beats()
- also handles frame positions previous to the initial
	  meter (beat_at_frame() would return 0 in this case).
2016-08-10 00:48:53 +10:00
Paul Davis
b9cab93fb1 fix definition of PrimaryModifier for Keyboard for OS X 2016-08-08 17:59:11 -04:00
Paul Davis
3d400f97dd fix display of modifiers on OS X in the bindings editor 2016-08-08 17:47:11 -04:00
Julien "_FrnchFrgg_" RIVAUD
a51cd8689f Move anchored menu placement strategy to Gtkmm2ext utils
So that it can be used by others.
2016-08-08 16:44:40 +02:00
Paul Davis
448902f870 fix race condition when dropping Ports
Jack2 calls back from a notification thread and the callback (PortManager::connect_callback())
could end up holding the final reference on 1 or more ports. The ports would then be
unregistered as we leave the callback scope, which is illegal (no server calls from
a notification thread)
2016-08-08 09:27:21 -04:00
Paul Davis
fdf63ace6a add explanatory comment 2016-08-08 09:27:21 -04:00
Julien "_FrnchFrgg_" RIVAUD
c803b81a2b Remove a no longer true comment
It should have been removed as part of 539c062ed2
(Make the configuration penalty subtler about inputs).
2016-08-07 10:00:26 +02:00
Robin Gareus
d04ca6d414 a few more Location related lua bindings 2016-08-06 22:12:39 +02:00
Julien "_FrnchFrgg_" RIVAUD
43cd3fd760 Use a default configuration instead of bailing out
If the script doesn't provide a dsp_ioconfig() function, or if it does
not return a table of tables, provide an empty table of table as
default, which means a single configuration with default values.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
66470b96b7 Remove dsp_has_midi_*() in favor of dsp_ioconfig()
_has_midi_*put members of LuaProc will be set according to the actual
configuration chosen, for configure_io() and run() to use.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
82e1ef5fb0 Refuse more configs with unmatched midi in if !imprecise
Since MIDI in should be
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
79f66a36b4 Take midi into account for penalty computation
Demote configurations if they have mismatched midi in or out with the
same mechanism as for audio, but with lower coefficients so that
mismatched midi has less influence than mismatched audio in selecting
the best configuration.

POLICY CHANGE.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
5691abdf03 Remove ad-hoc handling of possible_out == 0
Just refuse configurations without any output at all, and let the
remaining logic take care of selecting configurations with no audio
output if they make sense and there are no better configurations.

POLICY CHANGE: configurations with no output might now be considered
even if they have audio inputs (e.g. a pure pitch detector without audio
passthrough), whereas they were skipped before.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
539c062ed2 Make the configuration penalty subtler about inputs
Instead of uniformly demote configurations with a non-matching audio
input count (using a penalty offset of 1000), also grade the
impreciseness of the configuration so that those with the nearest input
count are preferred. As for outputs, give a slightly higher handicap to
configuration with too many inputs with regard to the actual audio
inputs that can be fed to the plugin.

POLICY CHANGE: when only imprecise configurations are found the actually
selected one can be different (better) than before this commit.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
0f64e5ce84 Remove ad-hoc handling of possible_in == 0
Just make the code responsible for possible_in > 0 also handle
possible_in == 0 since it nearly does the same thing.

The only difference is that the possible_in == 0 case didn't check at
all for audio_in, essentially acting as if possible_in was audio_in.
There is thus a small POLICY CHANGE, but the selected configuration will
stay the same unless a better matching configuration is available.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
93aa03ee2a Change column width in macros 2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
8b2c2df840 Set \midi_out when selecting a configuration...
...instead of at the very beginning, so that it can depend on the loop
iteration.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
2dc7b5189c Merge pass 2 (imprecise) into pass 1
Still no policy change, since when a configuration is chosen that would
have belonged to the second pass, then its penalty will be increased by
1000 and it will be selected only as last recourse.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
b90baf2176 Move MIDI filters imprecise handling from 2nd pass to 1st
This doesn't change the policy since configurations are given an
additional 1000 penalty if audio_in != possible_in, and will thus be
trumped by any "precise" configuration (unless the latter has 1000
excess or missing outputs which should be less than likely).
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
946a99f554 Rearrange condition for pure midi plugins 2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
19b82b8a83 Use FOUNDCFG* instead of setting the configuration by hand 2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
8311607e5c Enable overriding the configuration penalty
This is useful for exact matches that would otherwise need to duplicate
the bookeeping done by FOUNDCFG()
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
80541de283 Introduce a macro for imprecise configurations
It enables only setting the imprecise audio channel count if the
configuration is indeed selected.
2016-08-06 19:38:09 +02:00
Julien "_FrnchFrgg_" RIVAUD
961b9c8be8 Set \imprecise midi channel count in FOUNDCFG
So that it can depend on the actual configuration selected.
2016-08-06 19:38:09 +02:00