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
ed5cd83c63
experimental support for AU sidechain busses
...
some plugins include a sidechain bus which is not explicitly
listed under "Reported Channel Capabilities" list,
nor the "Input/Output Channel Handling"
2016-07-04 03:57:04 +02:00