Commit Graph

5314 Commits

Author SHA1 Message Date
Robin Gareus 38c613cd9a Towards arranging sections
This allows to move or copy whole sections of the timline (everything
you hear) to a differnt position on the timeline.

NB. Markers and tempo-map are not yet moved, and interpolated MIDI
events are lost.
2023-01-23 04:07:46 +01:00
Robin Gareus e6230bfd98 Add enum to configure Apple NSGLView mode 2023-01-20 21:46:11 +01:00
Robin Gareus 1cbd2d3468
VST3: support VST I/O busses
This unconditionally enable all busses with connected pins.
It does not provide re/configurable I/O (like Audio Unit), nor
implement dynamic Vst::kIoChanged callbacks. But regardless
this allows for plugins with multiple I/O busses (e.g. drum synths).
2023-01-17 22:02:10 +01:00
Robin Gareus 617ec6f54f
Include bus number in IOPortDescription 2023-01-17 22:02:10 +01:00
Robin Gareus 0083c8fb9f Remove "using namespace" from header (part 2) 2023-01-12 19:19:41 +01:00
Robin Gareus 3a6f822381
Remove "using namespace" from header 2023-01-12 19:01:48 +01:00
Robin Gareus b27467157b
VST3: synchronize parameter-changes
IParameterChanges (_input_param_changes) queue should not be
modified while the plugin processes. Doing so can lead to invalid
iterators.

Also activate/deactivate and state restore must not happen
concurrently with processing.
2023-01-06 03:31:07 +01:00
Robin Gareus a6107fc1af
Fix preference name/variable mismatch #9192 2023-01-05 19:00:56 +01:00
Robin Gareus 4bb7e43008
x-platform LADSPA user preset files
This fixes saving/loading custom user presests on Windows
2022-12-29 18:22:48 +01:00
Robin Gareus 140b373cac
Clean up ExportAnalysis code
* only zero limiter_pk array on initialization
  (other data is explicitly initialized)
* resize peak-data vector to at least 800 bins
2022-12-26 14:34:25 +01:00
Robin Gareus f058f910f4
Actually use overloaded get_presets() implementations 2022-12-19 16:43:42 +01:00
Robin Gareus 10d12599dd
Sort plugin presets by default 2022-12-19 16:41:41 +01:00
Robin Gareus 3b9a253a84 Bind weak pointers to rt_slot events
This fixes a crash when deleting routes, while there are still
automation events queued for the route.

Specifically, SoloControl has a reference Soloable& _soloable; which
points to the parent route. A rt-event can still hold a valid shared
pointer to the SoloControl, even if the route is destroyed.
Calling SoloControl::actually_set_value is fine (the control still
exists due to the shared ptr), but then checking the parent route:
```
if (_soloable.is_safe() || !can_solo())
```
accesses the already deleted route, which causes a crash.

The solution implemented here is to not bind a shared_ptr to the
realtime event. However, since deletion of the route happens in the main
UI thread, there may or may not still be a race.
2022-12-16 00:12:48 +01:00
David Robillard 27dfd8a7e3 Fix loading LV2 presets with non-float port values
In practice, this mostly means integers when presets leave off the ".0", but we
implement all the numeric types here for good measure.

Also while we're at it, warn about unknown types now so it doesn't take three
people a half an hour to figure out what's going on the next time something
like this happens.
2022-12-13 22:03:48 -05:00
Robin Gareus e28e079c9f
Consolidate Export Format/Spec comparision 2022-12-07 17:56:07 +01:00
Robin Gareus 85a1c463e5
Add Lua method to show system env
`for v in ARDOUR.LuaAPI.env():iter() do print(v) end`
2022-12-07 00:28:21 +01:00
Robin Gareus d2212cbfb9
Add 24kHz as export rate, and limit opus to 8,24,48 per spec 2022-12-06 06:35:44 +01:00
Robin Gareus c8b39094ca
Opus has no sample-formats 2022-12-06 06:35:40 +01:00
Robin Gareus 4d05c7add9
Map sndfile/opus quality to bitrate 2022-12-06 06:35:15 +01:00
Robin Gareus 211ff64e7d
Prepare for ogg/opus encoding 2022-12-05 23:43:34 +01:00
Robin Gareus c53b19c039
Add zeroconf/mdns support 2022-12-02 17:32:11 +01:00
Robin Gareus 842f4517de
Fix session-archive of stereo files #9122
Archiving creates a dedicated mono file for each Source.
When the original session has (embedded) stereo files, the
channel needs to be temporarily set to 0.
2022-11-28 00:40:17 +01:00
Robin Gareus a63e1add6d Remove unused config variables 2022-11-25 20:10:33 +01:00
Robin Gareus 4f4b931ccc
Add import_markers option (1/4) 2022-11-22 01:44:53 +01:00
Robin Gareus 4448b3a2a9
Prevent crash when running unconfigured meter processor
If Route::configure_processors fails at session start,
meters are not configured (#9106), leading to a crash when
::run() is called (insufficient peak/max/midi buffers).
2022-11-20 15:07:07 +01:00
Paul Davis d7895ab1d2 triggers: remove sidechain and use global port for trigger control 2022-11-19 10:22:16 -07:00
Paul Davis c8e3d95109 add new Session global MIDI input port for trigger control 2022-11-19 10:22:16 -07:00
Robin Gareus a6f8f2dd9e
Consolidate search/file-system paths (fixes vst builds)
Keep file-system paths and PBD::Searchpath mostly separate.
This amends 58c2b0a848 libs/fst directly includes relevant
ardour C++ code, so lib/fst must not link against libardour.

The problem was that 58c2b0a848 introduced additional
dependencies on other libardour functions.
2022-11-19 00:48:11 +01:00
Paul Davis fc611232d2 redesign and reimplement save/restore of MIDI learn for triggers 2022-11-18 14:04:59 -07:00
Paul Davis 58c2b0a848 move midi maps folders and file extension out of control surfaces library 2022-11-18 14:04:59 -07:00
Paul Davis 5a07da9255 triggers: code to dump MIDI learn-ed bindings as a binding map 2022-11-16 16:25:09 -07:00
Paul Davis 730064277d a start at custom MIDI learn for trigger slots 2022-11-16 08:37:57 -07:00
Paul Davis 99712e7585 surfaces; convert push2 to inherit from MIDISurface 2022-11-16 08:37:57 -07:00
Robin Gareus 235d51a723
Revert "MixerScenes: implement 'undo' function for mixer scene recalls (libardour)"
This reverts commit a40c8d8e9a.
This reverts commit 01c7e14c6e.
This reverts commit 162a8c00b3.
2022-11-10 20:54:12 +01:00
Ben Loftis a40c8d8e9a MixerScenes: implement 'undo' function for mixer scene recalls (libardour)
* this allows the session to better report which scene was last recalled
* this potentially allows controllers (like OSC) to momentarily recall
2022-11-10 09:13:50 -06:00
Ben Loftis 3b49422277 Policy change: hiding a group should not affect its enablement
* in the past, the default behavior was: hiding a group would disable it,
    and then showing the group would re-enable it

* problem occurs when user has disabled a group; hiding and showing it
    unexpectedly re-enable the group

* there was a config variable to disable this behavior, but it was never
    shown on the GUI and therefore not discoverable

Despite the longstanding policy, there's really no reason for
  group visibility and enablement to be intertwined.

If this chnage causes a big problem for someone, they can revert to
  the prior behavior by setting the new config variable in the text file
2022-11-08 18:17:44 -06:00
Ben Loftis 44ff0e46ba MixerScenes: show last-selected scene (libardour part) 2022-11-08 17:29:40 -06:00
Mads Kiilerich 5ff1f28af8
Introduce internal MP3 support using libsndfile 1.1.0+ 2022-11-04 21:22:02 +01:00
Mads Kiilerich 886fe364b3
Add enums for handling libsndfile mp3 encoding
MP3 support was introduced in libsndfile 1.1.0 . It will be a simple
alternative to using external ffmpeg.

To avoid dependency on the new libsndfile or config-time checking,
hardcode the constants from sndfile.h . The actual availability will
have to be checked at runtime.
2022-11-04 19:51:26 +01:00
Mads Kiilerich 3fb90523cc Remove unused code in sndfile_helpers
No need to worry about maintaining this code with missing formats like
mp3.
2022-11-04 03:52:45 +01:00
Robin Gareus 7b86ef8eff
Fix region gain for various edit operations
When deriving regions (split, cut), the Region Gain curve
must not be inherited as-is.

See also 8b0ab38675 and e40f58c106
2022-11-03 21:22:32 +01:00
Ben Loftis 4f5106ae82 triggers: add convenience function to report # of trigger channels 2022-11-01 13:52:54 -05:00
Ben Loftis 756e0beb1b triggers: more session:: functions to access Triggers by index 2022-11-01 13:52:54 -05:00
Robin Gareus 5599e136c0
Implement "vicanek" matched biquad filters 2022-10-31 22:47:30 +01:00
Paul Davis d93c8d64bc MIDI region combine: fix conceptual errors 2022-10-31 14:22:17 -06:00
David Robillard bdacfb8724 Fix invalid use of Doxygen "@param" command
This is never for inline references to parameters, only for starting parameter
documentation blocks.  The "@p" command is for this, although unfortunately
Doxygen doesn't actually do anything with it and it's just an alias for code
text.
2022-10-30 20:44:28 -04:00
Paul Davis 6449bf5464 source: provide a little syntactic sugar via ::time_since_capture_start() 2022-10-28 16:38:46 -06:00
Robin Gareus 0504db2a67 Update region delta-time API
This is the first step to fix various MIDI edit issues for sessions with
tempo-changes.

The old code, using .earlier returned an absolute position when
calculating a relative distance. This is only valid if the session has a
fixed tempo, and the origin is irrelevant when converting the timepos.

This resulted in follow up issues since there is a difference when
summing two positions (each with an origin) vs adding an offset to a
position.

Note: this API changes breaks compilation until the GUI is updated.
2022-10-23 19:05:48 +02:00
Robin Gareus e9bafde628
Catch manual removal of subgroup bus (#9022) 2022-10-21 20:40:27 +02:00
Robin Gareus 2e860cd10d
Move SimpleExport to libardour, add Lua bindings
This allows to export a session from the commandline tool

```Lua
AudioEngine:set_backend("None (Dummy)", "", "")
s = load_session ("/path/to/session", "snapshot")
assert (s);
e = s:simple_export()
assert (e:check_outputs ())
e:run_export ()
e = nil
```
2022-10-21 19:50:26 +02:00