Commit Graph

15508 Commits

Author SHA1 Message Date
Paul Davis e2e6274956 libardour: change API of Session::request_locate() to include "force" argument (GUI edition) 2022-05-27 18:49:23 -06:00
Paul Davis 69ee83e6ce require explicit time domain for most region-centric drags
This removed one #warning nutempo line.
2022-05-27 15:57:14 -06:00
Paul Davis 73a6cb7957 editor: add method to get time domain from any object with a ::time_domain() method 2022-05-27 15:56:41 -06:00
Paul Davis 399a5b3f25 convert use of operator* for tim::line types with ::scale(ratio_t) (GUI edition) 2022-05-27 12:47:44 -06:00
Paul Davis ffda4b867e temporal: remove dangerous muldiv methods and use explicit method name not cast (GUI edition) 2022-05-27 12:47:44 -06:00
Colin Fletcher 0eb8b6aa85 freesound: cosmetic tweaks
Disable the "More" button when search parameters change.  The button is
supposed to continue the current search, but if any of the search
parameters (tags, sort, or licence) have changed, that doesn't really
make sense. Just disable it if the user changes any of them.

Make sure that filenames in the freesound results list are escaped
properly for the tooltip, and append the full licence URL returned to the
tooltip too.

Make the filename column Gtk::TREE_VIEW_COLUMN_FIXED, so that it doesn't
expand to the width of the longest filename in the results and push the
columns to the right out of view. Resizing the import dialogue larger
still allows longer file names to be seen, and it's still possible to
manually resize the filename column as well.

Only show the hours & minutes in the duration column if they're non-zero,
and justify them right.
2022-05-27 16:17:55 +01:00
Colin Fletcher eae1673ff1 freesound: filter results by licence
Add a drop-down list to the freesound import tab, to optionally restrict
search results to "CC-BY", "CC-BY-NC", or "PD" only licensed sound
files. Defaults to "Any", which will return sounds with any licence.
2022-05-26 17:38:10 +01:00
Mads Kiilerich cc6a1e2d6f gtk2_ardour/editor_drag.cc: fix confusing newline 2022-05-24 17:15:37 -06:00
Paul Davis 62bcaf2191 for now (at least) do not show tempo/meter markers for MusicTimePoints
This policy may change in the future
2022-05-24 17:10:25 -06:00
Paul Davis 2ec6d45d6d temporal: remove the concept of a time domain for the tempo map (GUI edition) 2022-05-24 17:10:25 -06:00
Paul Davis bd3fdaeb67 clean up editor's set_ramped() and set_continuing() code
Now that the libardour methods return bool, we can identify whether or not any
change actually took place, and act appropriately.
2022-05-24 17:10:25 -06:00
Paul Davis 12bf8279e8 better undo/redo command names for tempo/timesig edits 2022-05-24 17:10:25 -06:00
Paul Davis 1a44e612e9 ctrl-dragging a tempo mark uses horizontal, not vertical motion to adjust tempo 2022-05-24 17:10:25 -06:00
Robin Gareus 89a85da52c
Overhaul vari-speed shuttle control display
* keep shuttle and mouse position in sync when dragging
* do not show speed options above max-transport-speed
* use quadratic deflection with speed percentage
* reduce knob width since the slider is rather narrow these days
2022-05-25 00:21:56 +02:00
Robin Gareus 00bd50882e
Mark speed UI controls insensitive if varispeed is not available 2022-05-24 20:41:59 +02:00
Colin Fletcher 1e0d14f429 freesound: don't exclude mp3s
Ardour can import MP3s nowadays: no need to exclude them from Freesound
search results any more.
2022-05-23 18:15:43 +01:00
Colin Fletcher 1516dcc529 freesound: handle https:// licence URLs
Relax the check for matching licence URLs so that https:// as well as
http:// (and indeed any protocol at all) URLs match.
2022-05-23 18:15:02 +01:00
Robin Gareus 14cf7e4c23
Add UI actions to save/recall mixer-scenes 2022-05-23 16:13:04 +02:00
Paul Davis d8ba73f542 temporal: change "clamped" terminology to "continuing" (since that's what the GUI calls it) (GUI edition) 2022-05-23 08:07:08 -06:00
Robin Gareus fcbe6aab49
Fix crash when time stretching
```
#3  in __assert_fail
#4  in Temporal::TempoMap::use
#5  in Temporal::timepos_t::_superclocks
#6  in Temporal::timepos_t::superclocks
#7  in Temporal::timepos_t::samples
#8  in ARDOUR::Region::position_sample
#9  in ARDOUR::RBEffect::run
#10 in Editor::do_timefx
#11 in Editor::timefx_thread
```
2022-05-22 15:26:19 +02:00
Robin Gareus 411e031bab
Hide I/O Plugins for Mixbus for now 2022-05-20 23:56:20 +02:00
Robin Gareus 7fa207d9ee
Add UI config-option for freesound download cache
This also invalidates any prior libardour rc-config
(which was not previously exposed as config).

Note: old existing cache is not moved or invalidated
when the path changes.
2022-05-20 22:03:14 +02:00
Robin Gareus f925dd675e
Setup Freesound certificates for bundled builds 2022-05-20 22:03:14 +02:00
Robin Gareus 5f1a06f2aa
NO-OP sort includes - fixes macOS and --no-nls builds
Ardour's "pbd/i18n.h" needs to be included last,
after all template specialization, otherwise there will be
an ambiguity:

```
boost/function_types/detail/class_transform.hpp:23:26:
  error: ‘boost::mpl::placeholders::_’ has not been declared
  using mpl::placeholders::_;
```
2022-05-20 22:03:14 +02:00
Robin Gareus 3caa58ba78
ArdourHttp, export API to set CA paths
Ideally all https requests would pass via ArdourCurl, instead
of custom libcurl usage, but that will require some major refactoring
2022-05-20 22:03:13 +02:00
Colin Fletcher 40f8dc69dd freesound: handle sounds with '/' & \' in their names better
Should fix #5943
2022-05-20 14:33:57 +01:00
Colin Fletcher 9fe0a4f4dd freesound: update to API v2
Add a new client id & token for Ardour 7, and update to Freesound's API
v2.

Implement OAuth authentication for Freesound downloads, as described at:
https://freesound.org/docs/api/authentication.html#oauth-authentication

Open the Freesound login page in the default browser, so that the user
can log in and get an authorization code, to copy-&-paste from the
browser. Exchange this authorization code for an access token, and use
it in a custom 'Authorization: Bearer $TOKEN' http header.

If logging in to Freesound to download a file fails or is cancelled,
clear the 'downloading' flag for that file in the list so that a
subsequent click on it will try to log in again.

Show login progress in download progress bar, and disable preview if
file hasn't yet been downloaded.

If a download fails for any reason (except the user cancelling it),
report an error in the Log window.

Use curl_free() for pointers returned by curl_easy_escape(), as per the
curl documentation, rather than plain free().

Also, don't use the www. sub-domain of freesound.org: although it
appears to work for most things, it returns an empty document from
https://freesound.org/apiv2/oauth2/access_token/

Remove default empty token value from Mootcher constructor, to make it
explicit when we construct a Mootcher that doesn't require
authorisation, by requiring an empty token parameter in that case.
2022-05-20 14:33:57 +01:00
Colin Fletcher 84267cfa32 freesound: "Samplerate" isn't a real word 2022-05-20 14:33:57 +01:00
Colin Fletcher ffa36cf6f4 freesound: show correct duration for files exactly 99 hours long 2022-05-20 14:33:57 +01:00
Colin Fletcher ff14591719 Revert "hide Freesound tab (until it gets fixed)"
This reverts commit f42fc3e45d.
2022-05-20 14:33:57 +01:00
Robin Gareus 5c18e64616
Fix I/O Plugin meter without session - amend c10c3ed6
The RecoderUI can show device input meters as long as a backend is
running regardless of a session. I/O Plugins are however
part of a specific session.
2022-05-18 21:07:30 +02:00
Robin Gareus c10c3ed64f
Show I/O Plugins on Recorder Page 2022-05-17 02:26:28 +02:00
Ben Loftis cb85a0a521 fix for automation control point drags: prevent overlapping points in time.
* control points that were already closer than one_tick_in_pixels
 were able to move beyond adjacent points, resulting in out-of-order lines

* prior code was using 'one tick' as the smallest spacing between two
 CPs, but that is larger than the default 'guard point' spacing.  this
 resulted in odd behavior because of the dxt calculation when you moved
 a point that was created as a 'guard point'

For now, use the same 64 samples we use for 'guard points'.  And change
 the 'dxt' calculation logic to more aggressively limit the points from
 overlapping.

TODO:  we might decide that 'one tick' should be the minimum automation
 period throughout ardour.  In that case we should change guard-points.
2022-05-16 07:16:25 -05:00
Ben Loftis e0f9f11dfc automation-range-drag: if lane is empty, use current value for guard points
* in the case where there are no existing automation points, then
 initiating an automation range drag  (select range, switch to Draw)
 should initialize the line at the current knob position
2022-05-16 07:16:25 -05:00
Robin Gareus e739191ae2
Display last export channel state 2022-05-16 04:54:18 +02:00
Robin Gareus 5d590a1ca7
List MIDI tracks in the Stem-Export Channel Selector 2022-05-16 04:54:18 +02:00
Robin Gareus b11f76d748
Do not select re-imported tracks
Stem-export defaults to use selected tracks. This retains
the selection, so focus remains. Repeat stem export will use
previously exported tracks if the selection is empty, or the
current selection (again).
2022-05-16 04:54:14 +02:00
Robin Gareus a742228463
Use "Wav (tagged)" as default export profile
Otherwise the first, alphabetically sorted, format is used,
which is currently (Amazon Music, normalize loudness).
2022-05-15 21:48:35 +02:00
Robin Gareus 8a927cc522
Only list tracks with audio-ports when exporting audio files 2022-05-15 21:48:28 +02:00
Robin Gareus d513d8b876
Do not allow dir-separators in session-template names
See also: 576f10b6f1
2022-05-15 19:53:12 +02:00
Robin Gareus 576f10b6f1
Template [file]names cannot have dir-separators 2022-05-15 04:37:22 +02:00
itmuckel 498a3d90c5
Modernize region_view 2022-05-14 23:33:21 +02:00
itmuckel 13836bde44
Give muted regions cancelled speaker instead of '!' 2022-05-14 23:33:21 +02:00
Ben Loftis 4339e3c729 temporarily remove effective_ripple_mark_start behavior
citations are needed to explain when&how this is useful

the definition of Ripple is "accommodate cut/insert/moves by moving all
 regions to the 'right' (later) of the operation by the same amount".

moving markers to the 'left' of the grabbed_region explicitly breaks the
 definition of ripple. it makes documentation hard.

furthermore, in a more complicated session with multiple tracks, this behavior
 ignores the regions on other tracks and the markers that still might be
 associated with them  (consider the case where you move the first region
 on track A but there are many prior regions on track B with markers over
 them)
2022-05-14 14:47:54 -05:00
Ben Loftis f7abe8dacd fix: RegionMotionDrag actions are always rippling to other tracks
* if we aren't in RippleAll, you should only ripple the regions
 on the same track as the grabbed region
2022-05-14 14:16:21 -05:00
Paul Davis 6f973af1e1 tempo end drag: make this work with new implementation 2022-05-13 19:05:13 -06:00
Paul Davis db17a46498 tempo twist drag: changes to work with new (old) implementation 2022-05-13 19:05:13 -06:00
Paul Davis a60412373a tempo map editing: re-enable stretch tempo drag 2022-05-13 19:05:13 -06:00
itmuckel 2a4ebd17d6
Save last route type 2022-05-13 23:07:49 +02:00
itmuckel 77356c0ebb
Reformat and remove unused imports 2022-05-13 23:07:49 +02:00