Commit Graph

11467 Commits

Author SHA1 Message Date
69752813db OSC: Make sends work for MB. Add pan to /path/strip 2016-07-26 14:11:06 -07:00
9079a6002c Call Plugin::load_preset() from LuaProc::load_preset()
So that the plugin knows that a preset has been loaded, and can send the
signal accordingly.
2016-07-26 18:35:28 +02:00
c2f5abc91e OSC: Fix forward detection to include >0 and <1 2016-07-26 08:02:03 -07:00
b36192aba8 OSC: Remove redux control 2016-07-26 08:00:04 -07:00
ca7d4447de Add missing locale guard for luadsp preset loading
That caused truncation of parameters to int when the decimal separator
is not a period in the user's locale.
2016-07-26 09:52:42 +02:00
43e20fd3e8 add Sidechain change handler for automatically added initial SC ports 2016-07-26 04:20:18 +02:00
7cc2e8c969 add initial midi sidechain if plugin has one. 2016-07-26 04:20:18 +02:00
5f994c07a8 32bit compat (amend 90a67d04) 2016-07-26 02:26:42 +02:00
90a67d04d5 another attempt to fix playhead position with varispeed. 2016-07-25 19:46:19 +02:00
eec294a97e the endless quest to plug memory leaks -- episode 378 2016-07-25 17:16:32 +02:00
3953879d4d add a timeout to flush_pending()
In some circumstances UI::flush_pending never returns, and all UI
interactive ends up being driven by
   while (gtk_events_pending()) { gtk_main_iteration(); }
This has various implications depending on the caller and usually results
in a crash at session-close or exit.
2016-07-25 14:13:52 +02:00
23a2cc4b71 prepare region RMS (loudness) normalization 2016-07-24 20:30:23 +02:00
80bd3e7279 OSC: Make pan controls work properly with MB too. 2016-07-24 09:06:59 -07:00
c21ba6f457 libs/ardour: update UK English localisation 2016-07-24 16:11:46 +01:00
85746c528f export rate formatting:
* use the locale (44.1 vs 44,1)
* do not encourage translating SI units and prefixes)
2016-07-24 16:54:08 +02:00
a76607486c kilo is a lower-case 'k' 2016-07-24 16:54:08 +02:00
bcee4e1518 add a lua timer callback signal 2016-07-24 13:00:15 +02:00
nick_m
299709cbbc Make Region's _beat a PBD::Property.
- fixes incorrect beat setting on undo for various region operations.
2016-07-23 02:23:08 +10:00
87c38e1a26 properly handle meter channel count changes
* reset peak when switching type (audio/midi) or total count
* clamp to +40dBFS to prevent endless falloff for HUGE signals
2016-07-22 12:57:24 +02:00
d53d0faf93 a more reliable/robust/less complex version of previous commit 2016-07-21 14:00:18 -04:00
3bf7c4ef49 do not delete MIDIControllable* when dealing with pending MIDI Control requests - the MIDIControllable belongs to the surface code in controllables 2016-07-21 13:42:11 -04:00
bd80b2f144 fix issue with solo-in-place
Monitor outs cannot be muted by other soloing. Duh.
2016-07-21 13:16:05 -04:00
78296d2c18 tentative fix for a crash that occurs when switching backends.
Session::process() returns early with Session::_silent set to true. AudioBuffer::set_data()
was never set for (at least) the LTC output port. PortManager::cycle_end() calls
AudioBuffer::silence() which used to assume that get_buffer() must have been called. But it
was not, because that should have happened in Session::process().

So check AudioBuffer::data() and call get_buffer() if required.
2016-07-20 23:26:50 -04:00
9c323c59ef messages sent to info/warning/error/fatal should end with endmsg, not endl 2016-07-20 16:34:00 -04:00
54730c2aa5 remove long-lived debug output related to RT-setting of controls 2016-07-20 16:21:03 -04:00
52d746c5fb MuteMaster should (a) use a Muteable's own ::muted_by_others_soloing() (b) not try to use its own _solo_ignore to track Muteable::can_solo() or solo isolate state 2016-07-20 16:10:11 -04:00
316562ee9e ensure that Route::_phase_control has its state restored, and also re-arrange Route::set_state() to avoid duplicated control set_state() calls 2016-07-20 14:47:24 -04:00
b502d689e2 OSC: comp mode control text needs to be changed by signal too. 2016-07-20 08:59:06 -07:00
72a91ae274 add LocaleGuard while restoring RC configuration.
Should fix issues with reloading various RC variables that use float
2016-07-20 10:48:07 -04:00
81211a91b1 minor safety fix for the Pane 2016-07-20 10:48:07 -04:00
82d3afb851 Gtkmm2ext::Pane: attempt to track child lifetime, since Gtkmm 2.4 doesn't do this correctly 2016-07-20 10:48:07 -04:00
541e6aaeb1 Fix previous commit
A spurious space change was included by mistake.
2016-07-20 14:01:13 +02:00
522b288526 Make bus's trim control also affect sends to the bus
The trim processor was moved to the front after the internal return was,
so the trim setting was applied before the signal coming from other
tracks/busses sends was mixed in. Change the order so that trim applies
to audio from internal sends as well.
2016-07-20 13:58:42 +02:00
b648ad9cc7 a-Delay: Smooth transition on LPF changes and set max feedback 100 2016-07-20 21:17:51 +10:00
62cd4d43bf a-Comp: Fix bug with DSP in the knee processing region 2016-07-20 20:10:46 +10:00
f371ac1beb Add a dedicated export method to MidiRegion
To export a MIDI region to a file, the code used MidiRegion::clone()
since it takes care of creating a new file-backed source with the wanted
contents. Nevertheless, it had several side-effects:
- it created and registered a new region which is confusing to users
- it only exported notes that were in the region range, but didn't
  remove the region start offset from MIDI events, essentially producing
  a spurious silence at the beginning of the exported file (this is not
  a problem for region cloning because the newly created region is made
  aware of the offset and caters for it).

Add a dedicated code path for export, that uses the new offsetting
capabilities of MidiModel::write_section_to().
2016-07-20 02:01:40 +02:00
728e6027d1 Make MidiModel::write_section_to able to offset event times
MidiModel::write_section_to() only wrote events to the given source if
those events had a time in the given range. Make it able to optionally
offset event times so that the start of the written range corresponds to
time 0 in the source.
2016-07-20 02:01:40 +02:00
2bad0e5c55 Make MidiModel::write_section_to() more type-independant
Replace hard-coded Evoral::Beats by TimeType which is currently the same
thing but might change in the future.
2016-07-20 02:01:40 +02:00
8338c1ccf5 save/restore track monitoring, rec-enable and rec-safe states 2016-07-19 18:56:37 -04:00
0fd2d82a6d add missing header include 2016-07-19 20:33:36 +02:00
55bd8ff4d8 and now with "d" 2016-07-19 16:33:48 +02:00
96ac896db0 revert inadvertently committed debug settings 2016-07-19 15:49:55 +02:00
ae2ce3053f and plain realloc (not mlocked) as baseline 2016-07-19 15:34:06 +02:00
cf89f645ab another TLSF vs realloc-pool shootout
..since memory-size and segmentation increased.
(large sizes favor TLSF, smaller segments are in favor realloc-pool)
2016-07-19 15:06:20 +02:00
c1aef0084a tweak realloc-pool realloc behavior.
* ignore provided old-size from lua, use internal segment size.
* fix behavior on OOM (leave memory untouched)
2016-07-19 15:05:16 +02:00
d13435a4e1 re-add TLSF 2016-07-19 15:03:51 +02:00
f8207524e9 a-Delay: Add feedback control 0 to 90 percent 2016-07-19 14:43:43 +10:00
0017837b02 OSC: check if pan exists, fixes MB crash. 2016-07-18 15:57:27 -07:00
a09fec0213 add a const - just because. 2016-07-18 23:52:40 +02:00
520dcf8cdf rework lua-bridge C++ variable references
Since lua functions are closures, C++ methods that pass arguments by
reference cannot be used directly. The previous approach (boost::ref)
failed with clang. Assume the following:

  void foo (float&) { }
  static inline float& bar () {
    boost::reference_wrapper<float> r (42);
    return r.get ();
  }

  foo ( bar () );

With gcc, "r" goes out of scope after foo's arguments are processed
and all is well.
But with clang,  "r" already leave scope when *inlined* bar() returns.

Solution: allocate some user-data on the lua-stack to hold the reference.
There is no reference to this user-data so lua will eventually
garbage collect it.

(theoretically, creating the table which holds the return-values
could trigger an emergency garbage collection when memory is low and
free the reference just while they're being pushed to the table, then
gain FuncArgs<Params> already dereferenced them all as variable on the
C stack -- probably again compiler specific)
2016-07-18 23:52:40 +02:00
bb29478aa2 stop using Gestalt() on OS X (deprecated and no longer operating correctly)
The incorrect behaviour was documented and did not cause issues in Ardour, but we should
still stop using this ancient call.
2016-07-18 15:56:28 -04:00
727613b4b7 fix a compile of annoying compiler warnings with elcap clang 2016-07-18 14:42:34 -04:00
9f3a9ef02d before pushing keybindings to GTK for menu display, make sure that we add back the META modifer that GTK expects 2016-07-18 14:42:13 -04:00
1a55e83e98 move show_gdk_event_state() utility function from gtk2_ardour to libs/gtkmm2ext 2016-07-18 14:41:25 -04:00
b8f5306d5b fix incorrect restoration of pane positions on Apple.
Code to check if we were to close to an edge (for window resizing) blocked all divider setting,
because it would be called with a current widget allocation of 1x1
2016-07-18 12:49:36 -04:00
1364cd6a30 OSC: Get rid of meter noise in MB. 2016-07-18 09:47:33 -07:00
8c944c08ea Normalize API rename part 2 2016-07-18 17:37:13 +02:00
b64dcac17e No-Op: rename Normalizer to Intermediate
post-processing is no longer just Normalization. RealtimeExport
does Encoding - faster than realtime - using the same infrastructure.
2016-07-18 17:37:13 +02:00
ee2d7a2d0c add exception handling in LocaleGuard, to try to cover more OS X wierd/corner cases 2016-07-18 10:56:43 -04:00
855618eb5f amend previous commit (forgotten checkin) 2016-07-18 13:11:18 +02:00
c5fb7e1d83 update to lua-5.3.3 2016-07-18 12:28:36 +02:00
062712c691 Remove 'i18n.h' from some VC projects where it's no longer needed 2016-07-18 09:41:46 +01:00
defb46d0fd Add a newly introduced source file to our MSVC project (libpbd) 2016-07-18 09:39:36 +01:00
nick_m
5f2ee3328f Fix stored type confusion in Meter/TempoSection::get_state(). 2016-07-18 02:58:59 +10:00
21bb604fc1 fix build of test suite
Fix build of audiographer tests after changes to TmpFile in 77687519.
2016-07-17 17:04:35 +01:00
7d7755ffb6 expose PBD::open_uri bindings to lua 2016-07-17 17:04:02 +02:00
dd9c99026d Another translation pass 2016-07-17 02:10:09 +02:00
8e48655981 handle no audio-output AUs 2016-07-16 18:44:05 +02:00
faefc3ba9a improve AU Latency PropertyChange Events 2016-07-16 18:43:10 +02:00
b7d730433b add a note to self 2016-07-16 14:48:49 +02:00
25a4cae8ad AU: install latency listener
Don't query after every cycle, some plugins inject license checks
when a host queries latency (!)
2016-07-16 05:05:52 +02:00
8219fdee07 AU: remove cruft, fix parameter initialization 2016-07-16 05:01:26 +02:00
19a9d8415f allow inserts to connect it itself - #6924 2016-07-16 04:14:27 +02:00
bd50bfa967 add a realtime-export session property 2016-07-16 02:14:54 +02:00
9eaced4c9d allow to query export profile type 2016-07-16 02:14:27 +02:00
f8a6213454 libardour support for timespan realtime export 2016-07-16 02:14:18 +02:00
77687519b6 Refactor TmpFile into an abstract base class
This allows a TmpFile pointer to be either a Sync or Async (Threaded)
writer. As result we must be able to handle both RT and non RT processing.

Still, post-processing (normalization and encoding) should always
happen faster than realtime (freewheeling).

Since jack does not allow a client to change to freewheeling from within
the process-callback, the async-writer disk-thread FileFlushed is used
to initiate post-processing.
2016-07-16 02:14:13 +02:00
6626723880 NO-OP session-property comments 2016-07-16 02:13:50 +02:00
dade1f39b7 OSC: LFE is a control not a position. 2016-07-15 11:44:49 -07:00
4203e7c903 fix file-name reported to analyzer when stem-exporting 2016-07-15 16:58:51 +02:00
8c3551341c Make Route and Track ::silent_roll() also flush out ports buffers
So that MIDI in the ports is really made silent.
2016-07-14 21:55:49 -04:00
9ba6e938d8 Also flush buffers of the inner delivery of inserts
When flushing the buffers of Delivery processors owned by a Route/Track,
inner deliveries of PortInsert processors were missed since PortInsert
is not a Delivery subclass, but rather owns a Delivery as a private
member. Expose a flush_buffers() for PortInsert and call it too.

This is correct since (external) Send is a Delivery subclass, so that
just makes the send part of inserts behave as external sends do.
2016-07-14 21:55:49 -04:00
8af589b322 Consolidate delivery buffer flushing of all route types
Route::no_roll(), Route::roll(), Track::no_roll(), AudioTrack::roll()
and MidiTrack::roll() all had the exact same loop for flushing buffers
of their Delivery processors. That was a lot of replicated code that had
to be kept synchronised by hand. Put that code into a protected method
Route::flush_processor_buffers_locked() which is called instead.
2016-07-14 21:55:49 -04:00
82828bd7a6 prevent duplicate symbols (fix OSX compilation) 2016-07-14 23:11:11 +02:00
f71fdd4143 clean up a-comp, remove old prototype UI 2016-07-14 21:41:16 +02:00
941339bdde fix a -Wsign-compare 2016-07-14 21:41:16 +02:00
6f80b40630 OSC: Fix Soloing to disable all solos in SIP mode as well 2016-07-14 12:06:37 -07:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
2b262dbfdd fix a-eq interpolation 2016-07-14 20:44:47 +02:00
b620e5ab3f OSC: Add surface save and restore 2016-07-14 11:41:53 -07:00
1d78150d45 refine a-eq inline display size + grid 2016-07-14 19:44:03 +02:00
fdfff81850 a-EQ: Remove LPF/HPF completely from this plugin 2016-07-15 01:54:50 +10:00
d8a97789c1 fix plugin analysis for variable i/o plugins 2016-07-14 17:47:22 +02:00
205fbb99ad canvas HSV color serialization needs LocaleGuard 2016-07-14 11:46:02 -04:00
58657edfb3 redesign PBD::LocaleGuard to work correctly (i.e. not break translations) 2016-07-14 11:37:48 -04:00
8444837b71 properly sort port-names 2016-07-14 16:52:43 +02:00
311a5f1462 add a natural sort algorithm 2016-07-14 16:52:43 +02:00
1970a8d4de OSC: Fix off by one error 2016-07-14 06:52:09 -07:00
09bd7a4bca another i18n/.po update 2016-07-14 06:21:03 -04:00
bbc3447005 another i18n/.po update 2016-07-14 06:19:20 -04:00
81a10a26e0 regenerate and manually fix all PO files so that ./waf i18n doesn't generate unnecessary errors 2016-07-14 06:19:19 -04:00
22de00b247 Remove a (no longer needed) source file from our MSVC project (evoral) 2016-07-14 09:42:55 +01:00
b64fab95e0 a-EQ, a-Reverb: Tweaks to parameter smoothing 2016-07-14 16:41:26 +10:00
e55ef88ee9 refactoring to prepare for real-time export
* add a threaded TmpFile Writer
* update API calls to that process_export_fw() can be used as
  process_function

The idea is to re-use export infrastructure from normalization:
export to a tmp-file and then encode target formats after that.
2016-07-14 04:35:48 +02:00
02852c1980 fix CUE/TOC file creation with non ISO-8859-1 chars in source text (substitute underscores) 2016-07-13 16:39:26 -04:00
7a1084d349 a-EQ: Tweak bandwidth range on parametric eq and use log controls 2016-07-14 05:44:14 +10:00
08bd0da509 use Session::cancel_all_solo() 2016-07-13 14:33:43 -04:00
9766cc7d8b a better, deeper fix for "cancel all solo", as Session::cancel_all_solo() 2016-07-13 14:33:23 -04:00
3c58a674c5 mackie: fix behaviour of clear solo button 2016-07-13 13:43:20 -04:00
08f9fc40dc a-EQ: Fixed transfer functions, now boost/cut cancel out correctly 2016-07-14 03:06:47 +10:00
b77b3cbe22 OSC: Add global soloing indicator/cancel 2016-07-13 09:56:35 -07:00
0fdbbac99d a-EQ: Tidy transfer function calculation 2016-07-14 02:03:08 +10:00
0b3d09b011 a-Reverb: Interpolate parameters, stable version 2016-07-13 23:58:07 +10:00
7dc6c0fc08 a-Reverb: Revert some of previous changes, sound of reverb much improved 2016-07-13 19:30:03 +10:00
5965fedc51 a-Reverb: Using new algorithm based on FreeVerb 2016-07-13 18:08:28 +10:00
81ba187b1a use aligned malloc for luaDSP 2016-07-13 04:31:34 +02:00
a66ad18402 initialize some uninitialized variables 2016-07-13 04:31:34 +02:00
a6ee94ac52 remove old midi-note name API 2016-07-12 23:02:46 +02:00
6b5be3d892 Add a new API to format midi-note-names with translation: Do Re Mi...
This deprecates Evoral::midi_note_name(). we don't maintain i18n
for libevoral.
2016-07-12 23:02:46 +02:00
cd5e86c24a add a safe-guard 2016-07-12 23:02:46 +02:00
577140c0dd OSC: Add /path/band extension for eq_* bands 2016-07-12 13:33:28 -07:00
9d4506716c OSC: Added EQ control, use interface_to_internal to normalize control range 2016-07-12 09:13:53 -07:00
625c589d80 a-Reverb: fix typo in plugin name 2016-07-13 01:27:23 +10:00
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
49fbb6fa15 a-Reverb: Fix ttl and tweak maximum input gain 2016-07-13 01:16:08 +10:00
af69fd6850 a-EQ: Transfer function curves improvement 2016-07-13 00:55:38 +10:00
c612cea5ea fix a-eq library extension 2016-07-12 16:43:10 +02:00
43f8d2503c a-reverb prototype (based on setBfree b_reverb) 2016-07-12 16:43:10 +02:00
2afaa51717 remove pointless version of Stripable::set_presentation_order() 2016-07-12 09:20:50 -04:00
d9f19ad1fe fix a a-eq ttl typo 2016-07-12 14:38:28 +02:00
8de675d699 fix simple but fatal mistake in defining PBD::Controllable::Flags enums.
This error caused the flags to be saved as an empty string, thus losing all state when the session is reloaded
2016-07-12 08:34:35 -04:00
1f02dd2a85 fix compilation with lv2 < 1.10 (lv2 extended) 2016-07-12 13:44:55 +02:00
157564947b a-eq tweaks:
* shorten e-eq Hz display (no decimals)
* use 16:9 aspect inline display
* fix a compiler warning
2016-07-12 04:01:56 +02:00
e8cd2949bd update MIDIEvent lua bindings/example 2016-07-12 01:46:58 +02:00
3ab200acaa OSC: finish feedback for well known controls. Simplify some others. 2016-07-11 16:00:14 -07:00
db72830691 remove debug output 2016-07-11 22:53:13 +02:00
57df370e2a add a convenient lua forward mapped buffers method 2016-07-11 22:36:00 +02:00
4537f5fb20 proper semantics for variable port-count
Ardour takes the closest pin/port match yet still offers a plugin with
variable i/o access to all port-buffers.

the "reported" (user visible) pin-count now defaults to the actual
selected configuration (precise) and lua_dsp_configure() can
override it.
2016-07-11 22:22:17 +02:00
1f7f7f8597 remove implicit labels from a-eq 2016-07-11 16:58:53 +02:00
b65cb37d24 add a MTC/sysex test sequence 2016-07-11 16:58:53 +02:00
a1bff57695 lua MidiBuffer bindings 2016-07-11 03:04:29 +02:00
5156b8aeb5 White space fix only. (Spaces to tabs) 2016-07-10 08:20:05 -07:00
7dfd39e708 add a single-element ring-buffer write function 2016-07-10 15:56:18 +02:00
140258d8ab remove reference "const int32_t&" -> const int32_t"
this simplifies lua-bindings and also let's the compiler worry about
constant primitive types.
2016-07-10 15:30:41 +02:00
cb2c459302 complete ringbuffer bindings 2016-07-10 15:01:29 +02:00
5780e44993 add raw midi buffer binding 2016-07-10 14:45:58 +02:00
509ce07c28 fix plugin bypass -- thinko in 54d8def6 2016-07-10 04:02:02 +02:00
a4a246b41d towards export latency compensation 2016-07-10 03:21:29 +02:00
0a52b325f4 align stem-export (raw track outputs (with and w/p processing) 2016-07-10 03:21:29 +02:00
7c13a16589 possible fix for off-by-one issue with MIDI binding maps etc. 2016-07-09 18:19:27 -04:00
1f3e49e8ee fix initialization order 2016-07-09 17:53:17 -04:00
57f74fbf13 const bool METHOD() const makes no sense 2016-07-09 17:15:17 -04:00
0c2a5dc0b2 better safe than sorry 2016-07-09 18:34:27 +02:00
nick_m
703150d365 Always set the musical position in Region::recompute_position_from_lock_style(). 2016-07-10 02:18:38 +10:00
nick_m
8a676d2bd4 Fix missing note divisor when creating regions, ensure an existing musical time is not altered. 2016-07-10 02:18:38 +10:00
nick_m
33dab757ee Tempo map updates.
- cleanup audio-locked meter removal code

	- recompute and warn if map is left unsolved due to adding a metric

	- handle corner case wrt overlapping audio-locked musical sections.
2016-07-10 02:18:38 +10:00
nick_m
49159e9585 Fix long-standing spelling bug.
- should be a no-op.
2016-07-10 02:18:37 +10:00
nick_m
7a6f8abc1d Fix missing tempi recompute, improve adding meter/tempo failure. 2016-07-10 02:18:37 +10:00
nick_m
828cb52f86 Fail properly when adding a new audio locked meter's tempo. 2016-07-10 02:18:37 +10:00
nick_m
f4ec7f12d1 Fix broken meter manipulation in exact_beat. 2016-07-10 02:18:37 +10:00
nick_m
e40604f6bd Back to using exact beats for midi region start_beats calculation when trimming.
- seems to work quite well, but not tested on live recording.
2016-07-10 02:18:37 +10:00
nick_m
e4a163e2fa Fix bad comment. 2016-07-10 02:18:37 +10:00
nick_m
6612b73033 Use frame-based (non-exact) beat calculation to set new start in midi region trim. 2016-07-10 02:18:37 +10:00
nick_m
f1802667ba Experimental patch to ensure playback buffer bounds use minimal beat->frame rounding. 2016-07-10 02:18:37 +10:00
nick_m
4acd365e42 AudioPlaylist doesn't double-notify that contents have changed if bounds have changed. 2016-07-10 02:18:37 +10:00
nick_m
5afe2993bd Remove extra ContentsChanged signal on tempo map change. 2016-07-10 02:18:37 +10:00
nick_m
447f9ee062 Exact beat for added regions. 2016-07-10 02:18:37 +10:00
nick_m
3b4a406ba1 Only update midi regions having a playlist after tempo map change, fix 0 length regions from drawing tool. 2016-07-10 02:18:37 +10:00
nick_m
4bdbe77414 Avoid the use of dynamic_cast in TempoMap for performance improvement.
- review / comment would be appreciated here.
2016-07-10 02:18:37 +10:00
nick_m
8e99b59af5 Make TempoMap::bbt_at_frame() more efficient.
- should be a no-op
2016-07-10 02:18:37 +10:00
nick_m
95ba43916f Improve performance of automation range moves. 2016-07-10 02:18:37 +10:00
nick_m
7a6efaaf3d Quick fix to get trim working again (bahaving oddly during trim right now) 2016-07-10 02:18:37 +10:00
nick_m
9f61f8a5b0 Complete the task of Playlist::flush_notifications () 2016-07-10 02:18:36 +10:00
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
5966612a4f consistent use of fmaxf() in a-comp 2016-07-05 15:38:24 +02:00
54d8def68c amend d9de72215 - bypass replicated instances w/sidechain inputs 2016-07-05 15:37:59 +02:00
a16c0c445a a-comp: Use input signal x as cutoff for inline comp curve 2016-07-05 18:36:04 +10:00
2a7bd996cd a-comp: Fix inline comp curve shading 2016-07-05 18:19:00 +10:00
bf7c4c7d60 a-comp: Fix peak level on both stereo and mono plugins 2016-07-05 15:07:06 +10:00
fef79d46bb OSC: Signal for editor mixer change. (Selected or not) 2016-07-04 20:07:38 -07:00
bc1f571954 OSC: /strip/select * should set new selected strip not toggle what is there. 2016-07-04 18:34:48 -07:00
d9de72215b fix bypassing plugins with sidechain i/o 2016-07-05 00:39:46 +02:00
17b162c5da add fill-area feature to poly-line 2016-07-05 00:39:39 +02:00
b6ccf0e223 fix AU sidechain busses 2016-07-04 21:46:01 +02:00
8507d2c9dd add required check for cairo in a-comp 2016-07-04 15:10:35 -04:00
27d06075a7 remove temporarily added signal 2016-07-04 13:42:47 -04:00
291aec468f use session stripable selection API
and remove old ControlProtocol signals to talk to GUI etc.
2016-07-04 12:45:53 -04:00
57ee61772b add session-scope selection ops for Stripables 2016-07-04 12:45:53 -04:00
5c32fc3bab fix another logic error in PresentationInfo::flag_match() 2016-07-04 12:45:53 -04:00
2f7c167fc9 a-comp: Make ratio control logarithmic 2016-07-05 02:32:05 +10:00
46bfe2b51a a-comp: Add stereo version 2016-07-05 02:15:47 +10:00
b27d9bb02a OSC: select is global not per surface. 2016-07-04 08:27:16 -07:00
a1a6dd3865 a-comp display is getting fancy :) 2016-07-04 15:50:05 +02:00
14c50b317c operate directly on realtime controls, not via Session 2016-07-04 09:27:33 -04:00
97f0415130 2nd part of previous commit 2016-07-04 09:27:33 -04:00
2e3c25eca7 make sure that rec-enable changes get to do their non-RT stuff before being queued for RT-context execution 2016-07-04 09:27:33 -04:00
d2f20120b7 display level in a-comp display 2016-07-04 14:26:37 +02:00
49294644fb con't work on a-comp inline-display 2016-07-04 14:07:05 +02:00
ebdb8dc2ce add C99 flags for lv2 plugin 2016-07-04 13:08:23 +02:00
d9ba78d594 basic inline display for a-comp 2016-07-04 12:59:04 +02:00
da5ab866c2 a-comp: Tweak control bounds and clear state on deactivate 2016-07-04 19:43:06 +10:00