ardour.git
6 years agoLog-scale/relative automation point dragging
Robin Gareus [Wed, 21 Jun 2017 11:03:00 +0000 (13:03 +0200)]
Log-scale/relative automation point dragging

6 years agoupdate GUI to use new APIs
Robin Gareus [Mon, 19 Jun 2017 14:51:17 +0000 (16:51 +0200)]
update GUI to use new APIs

6 years agoSet default interpolation type (for new lanes)
Robin Gareus [Mon, 19 Jun 2017 14:47:02 +0000 (16:47 +0200)]
Set default interpolation type (for new lanes)

6 years agoAdd API to compute parameter delta, depending on AutomationType
Robin Gareus [Tue, 20 Jun 2017 21:41:05 +0000 (23:41 +0200)]
Add API to compute parameter delta, depending on AutomationType

6 years agoCentralize Parameter scaling
Robin Gareus [Mon, 19 Jun 2017 14:34:29 +0000 (16:34 +0200)]
Centralize Parameter scaling

This exposes an AutomationType dependent abstract version of
inteface_to_internal(), internal_to_interface().

6 years agoRemove duplicates from ControlList
Robin Gareus [Wed, 21 Jun 2017 10:07:12 +0000 (12:07 +0200)]
Remove duplicates from ControlList

6 years agoClamp values in ControlList
Robin Gareus [Wed, 21 Jun 2017 10:08:12 +0000 (12:08 +0200)]
Clamp values in ControlList

6 years agoImplement additional ControlList interpolation methods.
Robin Gareus [Mon, 19 Jun 2017 13:45:47 +0000 (15:45 +0200)]
Implement additional ControlList interpolation methods.

The Control and ControlList uses the raw value (eg. coefficient for gain,
Hz for frequencies) and those Lists are stored in existing sessions.

In the vast majority of cases interpolating automation values using exp/log
scale for dB, freq makes more sense -- it's also what the fader does.

Adding additional interpolation methods is future proof (we might at allow
to even add different methods per automation point (to the next) like other
DAWs do.

Currently it's mainly used in preparation for consistent GUI automation-
lanes. Between 2 points there's always a visual straight line.

6 years agoRemove separate ControlList min/max/default, use ParameterDescriptor.
Robin Gareus [Wed, 21 Jun 2017 11:40:41 +0000 (13:40 +0200)]
Remove separate ControlList min/max/default, use ParameterDescriptor.

6 years agoremove min/max unbound -- LADSPA special case.
Robin Gareus [Mon, 19 Jun 2017 10:40:51 +0000 (12:40 +0200)]
remove min/max unbound -- LADSPA special case.

This explicit case should never have existed in the first place.

Plugins can always implicitly exceed the range and are expected to
cope with out-of-range values (e.g. meters when fed with a peaking signal
may return an out-of-bounds value)

6 years agoGUI: prepare for API changes
Robin Gareus [Mon, 19 Jun 2017 10:33:43 +0000 (12:33 +0200)]
GUI: prepare for API changes

remove use of
- unbound_min/max
- list->default_value and min/max_y

6 years agoMove logarithmic property into Evoral, add rangesteps
Robin Gareus [Mon, 19 Jun 2017 07:52:11 +0000 (09:52 +0200)]
Move logarithmic property into Evoral, add rangesteps

This allows complete mathematical description of a given parameter
and parameter values.

Semantic type abstraction is reserved for Ardour::ParameterDescriptor.

6 years agoRemove old API
Robin Gareus [Sun, 18 Jun 2017 22:58:10 +0000 (00:58 +0200)]
Remove old API

6 years agoFix/update maximum gain computation
Robin Gareus [Mon, 19 Jun 2017 15:00:57 +0000 (17:00 +0200)]
Fix/update maximum gain computation

6 years agoSwitch to PBD control-math and prefer Controllable API
Robin Gareus [Sun, 18 Jun 2017 22:57:53 +0000 (00:57 +0200)]
Switch to PBD control-math and prefer Controllable API

Note: Control-surfaces should always use interface_to_internal()
and internal_to_interface().

6 years agoCentralize control-parameter math functions in libpbd.
Robin Gareus [Sun, 18 Jun 2017 22:28:43 +0000 (00:28 +0200)]
Centralize control-parameter math functions in libpbd.

Functions formerly in ardour/util.h and some more functions.
The main motivation is libevoral which can use libpbd but not libardour.

The eventual goal is to consolidate various different interpolation,
scaling and deflection methods.

6 years agoFormat boolean parameter values
Robin Gareus [Wed, 21 Jun 2017 15:09:31 +0000 (17:09 +0200)]
Format boolean parameter values

6 years agoTweak value-as-string dB and float decimals printing
Robin Gareus [Wed, 21 Jun 2017 00:31:45 +0000 (02:31 +0200)]
Tweak value-as-string dB and float decimals printing

6 years agoRemove Cruft -- AutomationStyle never did anything.
Robin Gareus [Mon, 19 Jun 2017 15:40:32 +0000 (17:40 +0200)]
Remove Cruft -- AutomationStyle never did anything.

Trim automation is planned via SlavableAC as normal AutomationMode.
Some of this code have a revival (a special "Trim+Preview" state
before merging Automation but that has to be more general than Pan & Gain.

6 years agoFix duplicate Gain+Trim AutomationLists in session file.
Robin Gareus [Wed, 21 Jun 2017 10:18:57 +0000 (12:18 +0200)]
Fix duplicate Gain+Trim AutomationLists in session file.

6 years agoOSC: value not initialized soon enough
Len Ovens [Tue, 20 Jun 2017 20:11:19 +0000 (13:11 -0700)]
OSC: value not initialized soon enough

6 years agoAdd option add automation-lane points on the line -- #7397
Robin Gareus [Sat, 17 Jun 2017 20:53:58 +0000 (22:53 +0200)]
Add option add automation-lane points on the line -- #7397

6 years ago'ARDOUR::Stripable::Sorter()' needs to be exportable (since it gets used outside...
John Emmas [Sun, 18 Jun 2017 11:05:48 +0000 (12:05 +0100)]
'ARDOUR::Stripable::Sorter()' needs to be exportable (since it gets used outside of libardour)

6 years agoAccommodate newly introduced source(s) in our MSVC project (gtk2_ardour)
John Emmas [Sun, 18 Jun 2017 11:02:44 +0000 (12:02 +0100)]
Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour)

6 years agoUpdate Japanese translation, including a fix for an issue that translation for a...
Hiroki Inagaki [Sun, 11 Jun 2017 09:28:14 +0000 (02:28 -0700)]
Update Japanese translation, including a fix for an issue that translation for a certain string leads failure to launch the application on Windows 10

6 years agoNO-OP, just cleanup & scope
Robin Gareus [Sat, 17 Jun 2017 16:26:59 +0000 (18:26 +0200)]
NO-OP, just cleanup & scope

6 years agoFix TrackView selection after re-order.
Robin Gareus [Sat, 17 Jun 2017 16:26:35 +0000 (18:26 +0200)]
Fix TrackView selection after re-order.

because reordering a TreeView [pragmatically] does not retain selection.

6 years agoRemove delayed selection which causes duplicate selection actifacts.
Robin Gareus [Sat, 17 Jun 2017 15:13:06 +0000 (17:13 +0200)]
Remove delayed selection which causes duplicate selection actifacts.

The first click to select a new stripable may actually un-select strip.
counting and ignoring this leads to strange behavior.
Also when the selection_counter hit zero, VCAs were not ignored.

whatever this workaround was good for, it's more trouble than it's worth.
As side-effect this also improves DnD + Gtk::Entry behavior with stock GTK.

6 years agoSimplify route-display TreeView.
Robin Gareus [Sat, 17 Jun 2017 14:48:25 +0000 (16:48 +0200)]
Simplify route-display TreeView.

There's no TargetEntry receiver for the custom DnDTreeView<Route> object.
We can just use a default Gtk::TreeView.

6 years agoDon't de-select tracks when order changes
Robin Gareus [Sat, 17 Jun 2017 13:49:01 +0000 (15:49 +0200)]
Don't de-select tracks when order changes

6 years agoIgnore Selection::set() without actual changes
Robin Gareus [Sat, 17 Jun 2017 13:51:40 +0000 (15:51 +0200)]
Ignore Selection::set() without actual changes

6 years agoRemove Cruft
Robin Gareus [Sat, 17 Jun 2017 12:55:32 +0000 (14:55 +0200)]
Remove Cruft

6 years agoMove implementation out of header file
Robin Gareus [Sat, 17 Jun 2017 12:50:28 +0000 (14:50 +0200)]
Move implementation out of header file

6 years agoAdd Lua bindings to query all stripables
Robin Gareus [Sat, 17 Jun 2017 02:35:48 +0000 (04:35 +0200)]
Add Lua bindings to query all stripables

6 years agoFix adding tracks/busses at the top
Robin Gareus [Sat, 17 Jun 2017 02:31:18 +0000 (04:31 +0200)]
Fix adding tracks/busses at the top

6 years agoFix stripable order for new strips & master-order
Robin Gareus [Sat, 17 Jun 2017 02:23:55 +0000 (04:23 +0200)]
Fix stripable order for new strips & master-order

6 years agoRemove Cruft
Robin Gareus [Fri, 16 Jun 2017 21:45:25 +0000 (23:45 +0200)]
Remove Cruft

6 years agoNO-OP: whitespace
Robin Gareus [Sat, 17 Jun 2017 00:40:46 +0000 (02:40 +0200)]
NO-OP: whitespace

6 years agoUse Stripable::Sorter in GUI consistently.
Robin Gareus [Fri, 16 Jun 2017 21:45:16 +0000 (23:45 +0200)]
Use Stripable::Sorter in GUI consistently.

6 years agoAdd method to ensure Stripable sort constrains (for UI use)
Robin Gareus [Sat, 17 Jun 2017 00:31:03 +0000 (02:31 +0200)]
Add method to ensure Stripable sort constrains (for UI use)

6 years agoUse Stripable::Sorter in libs
Robin Gareus [Fri, 16 Jun 2017 21:44:29 +0000 (23:44 +0200)]
Use Stripable::Sorter in libs

6 years agoMove StripableSorter into libardour
Robin Gareus [Fri, 16 Jun 2017 21:44:09 +0000 (23:44 +0200)]
Move StripableSorter into libardour

6 years agoFix engine-state history.
Robin Gareus [Fri, 16 Jun 2017 20:32:10 +0000 (22:32 +0200)]
Fix engine-state history.

Remove old code to remove duplicate engine state which was used to
work-around a bug since 3.x saved duplicates but broke with 4.x separate
i/o devices.

Add a new variant to purge old unused states per backend (after sorting).

6 years agoOSC: plugin feedback mathfix - 0 param (meter) checked for.
Len Ovens [Fri, 16 Jun 2017 18:32:00 +0000 (11:32 -0700)]
OSC: plugin feedback mathfix - 0 param (meter) checked for.

6 years agoPrepare VCA Automation Lanes -- refactor TAV
Robin Gareus [Fri, 9 Jun 2017 12:48:33 +0000 (14:48 +0200)]
Prepare VCA Automation Lanes -- refactor TAV

* add an abstract StripableTimeAxisView (Route TAV + VCA TAV)
* move common strip-methods into STAV
* Add Automation Lanes to VCA TAV
* Allow ATAV without Automatable for VCA Controls

6 years agoRemove another explicit Close button.
Robin Gareus [Thu, 15 Jun 2017 14:05:45 +0000 (16:05 +0200)]
Remove another explicit Close button.

6 years agoFix region-gain offset when separating ranges 5.10
Robin Gareus [Wed, 14 Jun 2017 20:47:22 +0000 (22:47 +0200)]
Fix region-gain offset when separating ranges

6 years agoSquelch error message when toggling master-bus visibility.
Robin Gareus [Wed, 14 Jun 2017 19:22:08 +0000 (21:22 +0200)]
Squelch error message when toggling master-bus visibility.

6 years agoOSC: Add send/plugin page values to GUI
Len Ovens [Wed, 14 Jun 2017 17:28:45 +0000 (10:28 -0700)]
OSC: Add send/plugin page values to GUI

6 years agoOSC: save and restore send/plugin page size.
Len Ovens [Wed, 14 Jun 2017 15:18:02 +0000 (08:18 -0700)]
OSC: save and restore send/plugin page size.

6 years agoFix range-separate for musically-locked MIDI regions
Robin Gareus [Wed, 14 Jun 2017 13:21:02 +0000 (15:21 +0200)]
Fix range-separate for musically-locked MIDI regions

Cloning a region retains the region-lock style.
Playlist partitioning set the region start-property only (audio-time).
If a MIDI region is locked to musical-time, Properties::start is ignored
and overwritten by Properties::start_beats.

6 years agoSpecial-case VCA at 0 (-inf dB), force gain slaves to -inf dB
Robin Gareus [Wed, 14 Jun 2017 13:14:56 +0000 (15:14 +0200)]
Special-case VCA at 0 (-inf dB), force gain slaves to -inf dB

7 years agoMerge event control lists when disconnecting a master-ctrl
Robin Gareus [Wed, 14 Jun 2017 00:39:15 +0000 (02:39 +0200)]
Merge event control lists when disconnecting a master-ctrl

7 years agoAdd infrastructure to merge ControlLists
Robin Gareus [Wed, 14 Jun 2017 00:38:32 +0000 (02:38 +0200)]
Add infrastructure to merge ControlLists

7 years agoOSC: Allow set_surface to set send and plugin page sizes.
Len Ovens [Tue, 13 Jun 2017 23:55:13 +0000 (16:55 -0700)]
OSC: Allow set_surface to set send and plugin page sizes.

7 years agoApply master-value to automation on disconnect.
Robin Gareus [Tue, 13 Jun 2017 18:57:01 +0000 (20:57 +0200)]
Apply master-value to automation on disconnect.

7 years agoWrite inverse master automation.
Robin Gareus [Tue, 13 Jun 2017 16:09:22 +0000 (18:09 +0200)]
Write inverse master automation.

 * The UI and ctrl-surface controls use and display the combined value,
including control-masters.

 * The Automation lane of a control is the raw value of the control
without masters.

When touching (or writing) automation, the control-master needs to be
factored out (or subtracted). e.g press+hold a control -> write inverse
master automation.

7 years agoamend 11ba1854 -- locked curve-evaluation is not public
Robin Gareus [Tue, 13 Jun 2017 15:57:58 +0000 (17:57 +0200)]
amend 11ba1854 -- locked curve-evaluation is not public

7 years agoFP8: use proper API to detect automation-playback
Robin Gareus [Tue, 13 Jun 2017 14:07:20 +0000 (16:07 +0200)]
FP8: use proper API to detect automation-playback

The custom code didn't take touch + touching into account when
another surface was touching automation.

7 years agoFix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)
Robin Gareus [Tue, 13 Jun 2017 14:05:33 +0000 (16:05 +0200)]
Fix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)

This went unnoticed because: VCA gain automation was always applied
(regardless of automation state) but when it was not playing
master_ratio() factored it out again (per block).

7 years agoFix nasty duplicate XML node
Robin Gareus [Mon, 12 Jun 2017 23:08:08 +0000 (01:08 +0200)]
Fix nasty duplicate XML node

7 years agoRemember subgroup-bus
Robin Gareus [Mon, 12 Jun 2017 23:07:48 +0000 (01:07 +0200)]
Remember subgroup-bus

7 years agoAllow group gain sharing + VCA again
Robin Gareus [Mon, 12 Jun 2017 20:37:09 +0000 (22:37 +0200)]
Allow group gain sharing + VCA again

7 years agoOSC: select channel plugin support with paging.
Len Ovens [Mon, 12 Jun 2017 19:29:58 +0000 (12:29 -0700)]
OSC: select channel plugin support with paging.

7 years agoFix Monitor Group override
Robin Gareus [Mon, 12 Jun 2017 18:47:11 +0000 (20:47 +0200)]
Fix Monitor Group override

7 years agoFix relative grouped + VCA slaved gain
Robin Gareus [Mon, 12 Jun 2017 15:15:07 +0000 (17:15 +0200)]
Fix relative grouped + VCA slaved gain

7 years agoConsistent "cancel/close" button position on the left.
Robin Gareus [Mon, 12 Jun 2017 10:48:53 +0000 (12:48 +0200)]
Consistent "cancel/close" button position on the left.

"Add and Close" is an odd one out and this button should really be
removed for consistency. Still it allows for a 2-click or
2-keyboard-shortcut very common action.

7 years agoFix a compiler warning (optimized builds)
Robin Gareus [Mon, 12 Jun 2017 10:47:48 +0000 (12:47 +0200)]
Fix a compiler warning (optimized builds)

7 years agoRestore the state of the autoplay button in the import dialog
Tim Mayberry [Mon, 12 Jun 2017 13:59:11 +0000 (23:59 +1000)]
Restore the state of the autoplay button in the import dialog

7 years agoMake Import the default action in the Import Dialog
Tim Mayberry [Mon, 12 Jun 2017 12:52:11 +0000 (22:52 +1000)]
Make Import the default action in the Import Dialog

Double clicking on a file or pressing the Return key will now import it.

This means with autoplay enabled you can navigate a directory of audio files
using the up and down arrow keys and import the wanted files (with Return)
without having to touch the mouse.

Being able to use double click to import a file means you don't have to move
the mouse back and forth between the file browser and the import button.

You can still manually audition the file with space as before.

7 years agoRemove unnecessary temporary variables in MasterRecord::set_state
Tim Mayberry [Mon, 12 Jun 2017 11:19:25 +0000 (21:19 +1000)]
Remove unnecessary temporary variables in MasterRecord::set_state

XMLNode::get_property only modifies the argument if the property is found and
conversion is successful.

7 years agoVCA/SlavableAutomationCtrl re-design:
Robin Gareus [Mon, 12 Jun 2017 00:25:20 +0000 (02:25 +0200)]
VCA/SlavableAutomationCtrl re-design:

* remember master-ctrl value on assignment & save with session
* Control/AutomationCtrl only stores ctrl's own value (w/o master)
* virtual AutomationControl::get_value () -> use SlavableAC method
* MasterRecord uses weak-ptr (fixes recursive ~Controllable() deadlock)

7 years agoa-EQ: Tweak knob layout to be less confusing
Damien Zammit [Sun, 11 Jun 2017 06:24:34 +0000 (16:24 +1000)]
a-EQ: Tweak knob layout to be less confusing

7 years agoFix thinko in 9581cb26 - scratch-buffer can't be used recursively.
Robin Gareus [Sat, 10 Jun 2017 23:57:28 +0000 (01:57 +0200)]
Fix thinko in 9581cb26 - scratch-buffer can't be used recursively.

7 years agoOSC: add option to send /reply instead of #reply (OSC1.0 compat)
Len Ovens [Sat, 10 Jun 2017 14:28:15 +0000 (07:28 -0700)]
OSC: add option to send /reply instead of #reply (OSC1.0 compat)

7 years agoEmit Session::Located only if _engine.transport_frame() is up to date
Johannes Mueller [Fri, 9 Jun 2017 19:31:15 +0000 (21:31 +0200)]
Emit Session::Located only if _engine.transport_frame() is up to date

If _engine.transport_frame() is not up to date, we emit Located in
Session::backend_sync_callback() because that's when audible_frame() is up to
date. We don't want to emit it twice, because then, the playhead jumps back and
forth.

* mouse click in the ruler -> jump to requested location
* mouse release -> jump to old location (because audible_frame has to catch up)
* backend_sync_callback() called -> jump to new location

7 years agoMake Session::backend_sync_callback() emit Session::Located
Johannes Mueller [Fri, 9 Jun 2017 19:24:57 +0000 (21:24 +0200)]
Make Session::backend_sync_callback() emit Session::Located

If we sync to jackd AudioEngine::transport_frame() is not yet updated when
Session emits Located. Then the playhead ends up in an obsolete
position. Therefore we emit Session::Located() also from within
Session::backend_sync_callback() as that is called when AudioEngine is done
with the relocation.

7 years agosemantically more correct ordering of previous commit
Paul Davis [Sat, 10 Jun 2017 16:04:27 +0000 (12:04 -0400)]
semantically more correct ordering of previous commit

7 years agolinker-agnostic version of recent commit to get ControlProtocol selection state set...
Paul Davis [Sat, 10 Jun 2017 15:53:21 +0000 (11:53 -0400)]
linker-agnostic version of recent commit to get ControlProtocol selection state set correctly

7 years agoImplement slaved boolean automation and update mute special-case
Robin Gareus [Sat, 10 Jun 2017 12:36:03 +0000 (14:36 +0200)]
Implement slaved boolean automation and update mute special-case

7 years agoRestore VCA Automation state
Robin Gareus [Sat, 10 Jun 2017 12:37:23 +0000 (14:37 +0200)]
Restore VCA Automation state

7 years agoamend a1b4f9b8ab - handle disconnecting from all masters
Robin Gareus [Sat, 10 Jun 2017 12:37:05 +0000 (14:37 +0200)]
amend a1b4f9b8ab - handle disconnecting from all masters

7 years agoset first selected stripable for control protocols before they are instantiated
Paul Davis [Fri, 9 Jun 2017 21:54:10 +0000 (17:54 -0400)]
set first selected stripable for control protocols before they are instantiated

7 years agoNO-OP: whitespace
Robin Gareus [Fri, 9 Jun 2017 21:24:37 +0000 (23:24 +0200)]
NO-OP: whitespace

7 years agoFix deletion of VCA with slaved controls.
Robin Gareus [Fri, 9 Jun 2017 20:54:09 +0000 (22:54 +0200)]
Fix deletion of VCA with slaved controls.

The crashed previously because:
 A VCA is-a Automatable is-a Evoral::ControlSet

 After VCA's d'tor completes ~Automatable runs and emits signal to
 DropReferences of all master-controls.

 This in turn calls SlavableAutomationControl::master_going_away()
 for slaved parameters for the given master-control

 In ::master_going_away() the weak-pointer reference to the master's
 AutomationControl (owned by the destroyed VCA) is still valid.

 Execution is in the d'tor of Automatable which is-a ControlSet and
 the ContolSet keeps a reference to the Control and hence also to the
 AutomationControl which is-a Evoral::Control.

 So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
 which is actually the MuteControl owned by the VCA.
 It calls SlavableAutomationControl::remove_master() which
 in turn calls MuteControl::pre_remove_master() which uses the
 MuteMaster API to retrieve the value. The MuteMaster however is the
 VCA that has just been destroyed.

The solution is twofold:
 1) emit "drop_references" from the VCA d'tor itself,
    before the VCA is destroyed.

 2) disconnect a slaved control from the master's drop_references signal
    when un-assigning a master-control.

7 years agoNoteCreateDrag - Fix incorrect note length due to use of region-relative position
nick_m [Fri, 9 Jun 2017 17:49:01 +0000 (03:49 +1000)]
NoteCreateDrag - Fix incorrect note length due to use of region-relative position

7 years agoRemove Automatable::value_as_string API from libardour
Robin Gareus [Fri, 9 Jun 2017 12:47:27 +0000 (14:47 +0200)]
Remove Automatable::value_as_string API from libardour

Keep Pannable::value_as_string() for now. That is another inconsistency
which needs cleaning up. GUI StereoPanner and MonoPanner print
the value as they see fit, the panner-plugin provided formatting
is not used.

7 years agoUpdate GUI, drop Automatable::value_as_string() API
Robin Gareus [Fri, 9 Jun 2017 12:46:11 +0000 (14:46 +0200)]
Update GUI, drop Automatable::value_as_string() API

7 years agoPrepare to eventually drop Automatable::value_as_string()
Robin Gareus [Fri, 9 Jun 2017 11:41:04 +0000 (13:41 +0200)]
Prepare to eventually drop Automatable::value_as_string()

Probably due to historical reasons, there are two APIs to format a
control's value. In all both variants end up calling either
ARDOUR::value_as_string() or the Controllable's formatting function
(except for panners).

7 years agoPrepare AutomationTimeAxisView for non-route (VCA) automation
Robin Gareus [Thu, 8 Jun 2017 21:45:07 +0000 (23:45 +0200)]
Prepare AutomationTimeAxisView for non-route (VCA) automation

7 years agoa-EQ: Revert one of the previous changes
Damien Zammit [Fri, 9 Jun 2017 13:06:53 +0000 (23:06 +1000)]
a-EQ: Revert one of the previous changes

One of the previous changes was not a typo, revert it.

7 years agoFix incorrect positioning of tempo line subdivisions if first meter is non-zero
nick_m [Fri, 9 Jun 2017 01:05:56 +0000 (11:05 +1000)]
Fix incorrect positioning of tempo line subdivisions if first meter is non-zero

Commit cebefe6 assumed that frame 0 was the music origin.
Silly me.

7 years agoAdd a method for obtaining the frame position of beat/whatever zero
nick_m [Fri, 9 Jun 2017 01:01:30 +0000 (11:01 +1000)]
Add a method for obtaining the frame position of beat/whatever zero

7 years agoFix crash when showing plugin-UI in safe-mode
Robin Gareus [Thu, 8 Jun 2017 19:21:13 +0000 (21:21 +0200)]
Fix crash when showing plugin-UI in safe-mode

7 years agoTempoLines deletes its bfc on destruction
nick_m [Thu, 8 Jun 2017 15:56:28 +0000 (01:56 +1000)]
TempoLines deletes its bfc on destruction

7 years agoTempo lines display subdivisions correctly over a tempo change
nick_m [Thu, 8 Jun 2017 15:44:48 +0000 (01:44 +1000)]
Tempo lines display subdivisions correctly over a tempo change

TempoMap::get_grid() supplies a list of beat positions, leaving the lines
to work out any subdivision positions.
This is fine, unless a tempo section falls in between beats.
Use a BeatsFramesConverter along with a quarter note position
(in the BBTPointsList) to make this easier.

7 years agoFix reversed logic in legacy tempo secton detection
nick_m [Thu, 8 Jun 2017 15:34:14 +0000 (01:34 +1000)]
Fix reversed logic in legacy tempo secton detection

7 years agoDelete tempo lines when session goes away
nick_m [Thu, 8 Jun 2017 15:08:59 +0000 (01:08 +1000)]
Delete tempo lines when session goes away

7 years agoDo not duplicate note id in copy constructor
nick_m [Thu, 8 Jun 2017 13:11:56 +0000 (23:11 +1000)]
Do not duplicate note id in copy constructor

This fixes selection undo after copy-dragging notes, but there
are probably other cases where duplicate note ids may cause problems.

7 years agoRemove debugging from TempoTest::qnDistanceTestRamp ()
nick_m [Thu, 8 Jun 2017 12:39:41 +0000 (22:39 +1000)]
Remove debugging from TempoTest::qnDistanceTestRamp ()