13
0
Commit Graph

11094 Commits

Author SHA1 Message Date
nick_m
c6f2095fb7 Improve the performance of TempoMap::frame_at_beat ().
- should be a no-op
2016-07-10 02:18:36 +10:00
nick_m
0e63fa65b5 Remove frame conversion for MidiRegionView::note_in_region_range(), speed up tempo dilation 2016-07-10 02:18:36 +10:00
nick_m
93c24e4433 Paste uses exact beats. rework _start_beats calculation in copy-with-offset ctor. 2016-07-10 02:18:36 +10:00
nick_m
94e0a15325 Exact beat - provide audio->music mapping for region split.
- for those not in the know, this series provides a way to
	  remove the temporal distortion introduced when using an
	  audio frame-based gui for music-locked objects.

	  In short, the gui uses an audio frame representation to move
	  objects. It displays the object using frame_at_beat(), quantizing
	  the time value to audio frames. This is fine until the user selects
	  that frame but expects it to be interpreted as a beat.
	  Thus beat_at_frame() would not produce the user-expected beat
	  (temporal quantization error of up to 0.5 audio samples).
	  This is one method of mapping audio time to music time accurately.
2016-07-10 02:18:36 +10:00
nick_m
2d5238d875 Make some musical operations on music-locked regions operate in beats.
- use exact beats to determine frame position.
	- see comments in tempo.cc for more.
	- this hasn't been done for split yet, but dragging and
	  trimming are supported.
2016-07-10 02:18:36 +10:00
0d050de94e move latency-recompute into dedicated thread.
this fixes an issue with jack1 and jack_latency_recompute() since must not
send a server request from inside the server callback.
2016-07-09 17:42:58 +02:00
b64a6b658e handle internal-sends from audio to midi busses 2016-07-09 13:51:52 +02:00
20e216afcc commence testing 2016-07-09 11:55:05 +02:00
56c4eebfdd move LatencyChanged detection from Plugin to Processor (plugin-insert)
* support all Plugin APIs (not implementation specific)
* also check for latency changes when plugins are hard en/disabled
2016-07-09 04:42:21 +02:00
49c9569039 Make MIDI busses possible targets of internal sends
The session only added an internal return to new audio busses, and so
only those were proposed in the "New Aux Send" list. Also add the return
to new midi busses, now that internal sends know how to deal with midi.
2016-07-09 02:17:00 +02:00
09c4c51335 Make internal sends aware of non-audio data
When most internal sends are created, they are given a panner shell
which is then responsible for audio dispatch. Other data types were left
there without handling them at all. Ensure that all available data is
sent provided the internal send has enough outgoing buffers.
2016-07-09 02:00:27 +02:00
820f99d484 Make Delivery::run more Datatype-agnostic
Note that checking the number of output ports is not needed because
IO::copy_to_outputs() will stop if there are less ports of the right
type than buffers (or even none).
2016-07-09 01:21:27 +02:00
d6534eb143 Assert that nobody calls IO::copy_to_output with empty bufs
IO::copy_to_output() crashed if there was no channel to copy from. Since
all callers seem to check before calling, just assert() that it is not
the case.
2016-07-09 01:21:27 +02:00
ac923be7af fix port-sort order for good.
TODO find out how to make std::set::find() work with custom sort order,
as std::find may only be O(N) and not O(log (N)).
2016-07-08 21:37:42 +02:00
97b1725023 OSC: Add well known controls for pan and compressor 2016-07-08 11:54:37 -07:00
f84a7605d8 pre-sort port-names 2016-07-08 20:44:21 +02:00
b7dc66c903 untested hack for AU multi-bus outputs which are not explicitly listed 2016-07-08 20:29:39 +02:00
1228faf2cf fix thinko 2016-07-08 13:34:52 -04:00
db564a03c7 add an plugin API to query generic-gui grid-layout 2016-07-08 18:19:31 +02:00
24b514797a make route group master a real property.
Required for state save/restore to know about the master
2016-07-08 11:46:01 -04:00
965def3caf signed VCA numbers 2016-07-08 11:46:01 -04:00
b37ec38d86 change VCA number to signed.
Allows for more robust out-of-band (negative) value
2016-07-08 11:46:01 -04:00
b7a7c1bbd8 a-EQ: Tweak default values and inline display scale +-20dB 2016-07-09 00:29:59 +10:00
2cc33684c7 treat VCA assign as a RouteGroup property.
Newly added routes,removed routes etc. all correctly assign or
unassign to the group's VCA.
2016-07-08 09:25:18 -04:00
295a7dfcf3 OSC: Add feedback for known pan controls and known compressor controls 2016-07-07 11:36:31 -07:00
b68c28986c fix AU bus sidechaining 2016-07-07 18:18:06 +02:00
266ecfbeec implement designated enable/bypass port for lua-proc 2016-07-07 16:44:41 +02:00
91ab5e3175 add LuaTableRef to DSP API as alternative to shared-mem 2016-07-07 15:37:11 +02:00
ef1e20f6a2 some more lua-bindings
* allow C memory allocation with lua-lifetime
* expose some ChanMapping methods
2016-07-07 15:37:11 +02:00
44a3f042a7 prepare sharing C++ class instances across lua-interpreters
in particular: lua-lifefime (!) C++ instances.
This allows for dynamic allocation of custom user-data, bound to
the lifetime of the allocating lua-context.
2016-07-07 15:37:11 +02:00
225a8a47a4 lua PBD ringbuffer bindings 2016-07-07 15:37:11 +02:00
44de8560a6 Add a-EQ (basic 4 band EQ) with inline display based on SVF filters 2016-07-07 22:15:44 +10:00
d40cc6f6f9 OSC: Make sure selected strip is corrected when it's stripable vanishes 2016-07-06 19:28:41 -07:00
44fcbd988c mackie: ensure that the strip where select was pressed ends up as the first_selected_stripable 2016-07-06 21:40:29 -04:00
77a8da9010 set ControlProtocol::_first_selected_stripable at the right time only 2016-07-06 20:58:33 -04:00
6911702f21 Don't add audio outs to non-audio routes with strict I/O
If a route has strict I/O then the main delivery follows the output of
the last processor, but libardour ensures it has at least as many
outputs as inputs in the master strip. A good consequence is that mono
tracks get their expected panner.

An akward side-effect is that MIDI-only routes (e.g. midi tracks or busses
without a synth) get two audio channels that have no use (and indeed no
panner is added because there is nothing to pan).

Skip the completion of audio outs if there was no audio out to begin
with.
2016-07-07 01:33:42 +02:00
db3223478c quick checks on empty control lists, to avoid unnecessary work 2016-07-06 15:20:17 -04:00
cf9706974c a few post-rebase cleanups 2016-07-06 14:03:24 -04:00
2047ee527c restore/extend/simplify ControlProtocol API to allow tracking of selection 2016-07-06 13:39:10 -04:00
eed3ea5047 remove a bunch of code that will no longer be used 2016-07-06 13:38:13 -04:00
d514cd2fbf remove a bunch of code that will no longer be used 2016-07-06 13:38:13 -04:00
a2f249d1d7 tweak lua gc
lua C++ bindings require ~400KB worth of tables now; so bump memory
available to rt-safe scripts (full interpreter) to 2MB.

Also switch to incremental GC.
2016-07-06 03:32:08 +02:00
6cff31c878 update route/processor semantics
* active(): hard bypass: en/disable. When disabled, run() is not called.
* enabled(): plugin run()s but may do nothing (or only be latent)
2016-07-05 23:30:21 +02:00
ac325cea25 implement lv2:designation processing#enable (for bypass ports) 2016-07-05 23:30:21 +02:00
e845b9f935 add API to use a plugin provided bypass control port
* new separate API: en/disable
* old API remains in place for hard bypass
* PluginInsert::enable() falls back to activate/deativate if a plugin
  does not provided designated bypass control port
2016-07-05 23:30:21 +02:00
860ffed6d1 OSC: Clear expand Lamp on strip observer destroy 2016-07-05 14:11:16 -07:00
f2f7414751 a-delay: Fix compiler warning 2016-07-06 02:18:10 +10:00
de4cb2f8af Add a-Delay plugin 2016-07-06 01:53:59 +10:00
83e1d9fff3 tweak a-series plugin names 2016-07-05 17:17:59 +02:00
e542e501a0 add support for http://lv2plug.in/ns/ext/port-props/#rangeSteps 2016-07-05 16:21:09 +02:00