Commit Graph

34892 Commits

Author SHA1 Message Date
Robin Gareus 0b5e502546
Video import/export overhaul and ffmpeg-5.0 compat
* Update commandline parameters for ffmpeg 5.0
* Simplify video-export, allow only standard settings
* Check ffmpeg exit code and parse errors
* Fix SessionhandleRef on audio-import (clear import status)
* Cleanup and reformat sourcecode
2022-04-01 01:35:08 +02:00
Robin Gareus 391c3e96b3
Clarify stop-at-session-end preference tooltip 2022-03-31 21:51:32 +02:00
Robin Gareus 66a3d727cd
Process rt-tasks (resample ports) in parallel (again).
This was changed to single-thread execution in
in bd229936ec
and likely accidentally committed.
2022-03-31 21:51:28 +02:00
Robin Gareus 9c9f1dbf82
Fix nudge-playhead-backward 2022-03-30 03:08:16 +02:00
Damien Zammit 6bbe684304 import_pt: Simplify region to track mapping
This allows regions to be correctly imported to their
actual track number now that they are numbered from zero
without any gaps by ptformat, removing the need for a lookup table.
2022-03-29 19:02:19 +11:00
Damien Zammit 1532f218ab ptformat: Update to upstream c1c6475
This changes region to track entries to make importing easier.
Entries are now sequential, gapless and numbered from zero.
2022-03-29 18:59:46 +11:00
Robin Gareus 5d7ff24130
Hide scroomer when using layered mode
In layered mode the scroomer is not usable with stacked MIDI regions.

Ideally we'd only hide it if there is more than one layer
but that is for another day.
2022-03-29 01:30:51 +02:00
Robin Gareus 08acf42676
Correctly restore mixer-ui pane sizes
Pane::set_divider() constrains the divider so that widget
minimum sizes are honored.

Initially the mixer is empty and the tab has width of ~110px
(just scroll window). Pane::on_size_allocate() calls set_divider()
before actual mixer-strips are added and before the mixer window
size was restored. This incorrectly constrained pane sizes.
2022-03-29 00:31:15 +02:00
Robin Gareus d841b13673
Fix moving automation with region
This issue was introduced in
eae9d276fe
by using the incorrect new nutempo methods for the case at hand.
2022-03-28 19:39:45 +02:00
Robin Gareus 22220c215a
Keep export-format dialog on top of export dialog 2022-03-28 18:55:29 +02:00
Robin Gareus 3f37d54d85
Fix path to user-clip library
This is only used when the path is initially unset (`@default@`),
existing config paths are left as-is.
2022-03-28 18:55:27 +02:00
Robin Gareus 66c71512c7
Add tooltip for non/layered button 2022-03-28 18:55:22 +02:00
Paul Davis bf2618e97b temporal: fix crash during reset_starting_at() 2022-03-23 18:03:42 -06:00
Paul Davis 857856431e temporal: remove debug output and stacktrace 2022-03-23 17:42:52 -06:00
Paul Davis 74a4678c04 temporal: NOOP add explanatory comment 2022-03-23 17:42:52 -06:00
Paul Davis 214c291e55 temporal: fix ::set_state() for old sessions where initial meter was moved to non-zero location 2022-03-23 17:42:52 -06:00
Robin Gareus b14acfc3dd
Fix permissions of bundled content 2022-03-22 21:31:21 +01:00
Robin Gareus edc94c5213
VST3: allow to query presets via PluginInfo
This fixes an issue with the mixer-sidebar treeview
not listing VST3 user-presets.
2022-03-22 04:06:31 +01:00
Paul Davis b3ccccb48f add #warning to code that should be fixed ASAP but not pre-Mixbus8 release 2022-03-21 13:00:01 -06:00
Robin Gareus fead587a5a
Remove debug output 2022-03-21 18:47:53 +01:00
Robin Gareus f6646eaa2d
Fix undo/redo when moving regions to a different track
This was broken during development of ripple-all.
First explicit rdiff_and_add_command() was used, but
when that was reverted later, the original stateful_diff
was not restored.

989408626d
1ccf272d58
2022-03-21 18:47:53 +01:00
Paul Davis b4cf61304c fix meter point removal
std::upper_bound() was not the correct tool to find the existing point,
it should have been std::lower_bound(). For code consistency, this
change doesn't use either but like ::remove_tempo() and similar methods,
just iterates over the whole list
2022-03-21 11:35:34 -06:00
Ben Loftis ea4a6f6215 triggerbox: d+d: follow count should be carried over as part of the arrangement 2022-03-21 12:07:43 -05:00
Ben Loftis 333e19a2cf triggerbox: patch_changes must also use the ui_state API 2022-03-20 15:36:07 -05:00
Ben Loftis 8cba60bfd4 triggerbox: used_channels must use ui_state API (see prior commits) 2022-03-20 15:36:07 -05:00
Ben Loftis 1b08fa1581 triggerbox: commenting the ui_state process 2022-03-20 15:36:07 -05:00
Ben Loftis ca94b63a55 triggerbox: allow-patch-changes should use DIRECT_SET 2022-03-20 15:36:07 -05:00
Ben Loftis 1a3b82a12e triggerbox: TRIGGER_DIRECT_SET should also set ui_state
bugfix: changing the FA state can overwrite the clip's name and color

Some params (like gain) can and should take effect immediately
by directly setting the properties.  TRIGGER_DIRECT_SET does that.
But we still, ALSO have to set the ui_state, because when the
triggerbox imports ui_state via update_properties() it will
overwrite your changes.

Said another way:  since we use a queued ui_state to set the properties,
you ALWAYS have to set and use the ui_state mechanism, even if you want
to short-circuit the process for specific properties.
2022-03-20 15:36:07 -05:00
Robin Gareus 40744c672a
Fix VST2 callbacks querying tempo-map
Some VST2 use a custom thread to make callbacks, in this case
the corresponding thread will not have fetched a thread-local
tempo-map.
2022-03-20 15:42:47 +01:00
Robin Gareus 6bcc0163cd
Fix VST3 processor refcount
This fixes an issue with JUCE plugins remaining alive
after closing the session (and causing issues at exit).
see also 789949ed8e
2022-03-20 15:42:43 +01:00
Ben Loftis 0aabdc0849 remove errant stacktrace 2022-03-19 17:00:09 -05:00
Ben Loftis 11a0617cff Revert trigger_ui: 'Inhibit' change
This reverts commit c814726dc0.
2022-03-19 16:56:28 -05:00
Paul Davis 9f91747ac5 triggerbox: improve speed of TriggerBox::fast_forward() and handle a couple of logic errors
Having identified the trigger that will be running at a given transport position, we determine its effective
length (not necessarily its own length) and last start, then "jump" forward to the next-earliest start
point prior to the transport position. This greatly reduces the amount of actual audio processing we
need to do to prepare the trigger to run in sync at the transport position.

This commit also adjusts the targetted transport position by the processor's playback offset, so that
it is correctly prepared to run() once the transport starts again.

Logic errors when using cue-isolated or empty triggers were also fixed.
2022-03-19 15:25:14 -06:00
Paul Davis d29c70a2a2 temporal: add new variant of TempoMap::bbtwalk_to_quarters() 2022-03-19 15:25:14 -06:00
Ben Loftis c8afda0116 add config-var for insert_at and show_on_cue_page
* store the user's selection in the configu
2022-03-18 18:37:37 -05:00
Ben Loftis b25aa18c80 add_route_dialog: add a checkbox to show Tracks on the Cue page 2022-03-18 18:36:06 -05:00
Ben Loftis c814726dc0 trigger_ui: FA:None did not convey the meaning; try 'Inhibit'
* Inhibit prevents any FAs, FA Count, Probability, etc ... but leaves settings intact
* Removed Inhibit from the Right FA menu ... it only needs to be set on the Left
* Removed Inhibit from the clip context menu, we only want shortcuts to explicit actions there
2022-03-18 09:03:12 -05:00
Robin Gareus 139d54ac9b
Fix automation range drag guard points
This addresses an issue with missing guard points at the
beginning of a range drag when the range is not snapped to
a musical grid.

Note that the code below "same thing for the end" does not use
.beats() either.
2022-03-18 02:31:31 +01:00
Paul Davis a4459ebf9c avoid double-locates when locate-while-rolling
We know when we call non_realtime_stop() if we will be subsequently
locating. If so, do not do an additional non_realtime_locate() from
within the stop.
2022-03-17 17:43:43 -06:00
Paul Davis 8ebd097df9 move #includes so that they are only used if needed 2022-03-17 17:43:43 -06:00
Ben Loftis d32796d695 trigger_ui: selection rules prevent loading a slot from selection menu item
* the Slot *is* the Selection, you can't also have a Range or Region selected
* perhaps this will change someday
2022-03-17 18:12:04 -05:00
Ben Loftis c2243d8b1c ruler markers: consolidate range-marker shapes
* if the same color is used for the marker and the flag, some range markers looked odd
* now that rulers are highlighted when you hover, it's less necessary to disambiguate by shape
2022-03-17 18:12:04 -05:00
Robin Gareus 176c41a485
Fix region-gain when region-start is trimmed
Region-gain (unlike other automation) is specific to the
region and independent of the source. Region::start() offset
does not apply. When region-start is trimmed the region's
envelope is modified (not just offset). The event-list is truncated.

Any audio-region envelope does (and must) have a point exactly
at the start and end of the region.

truncate_start() can thus calculate the earliest position of
valid events with the new length relative to the last event.

The mathematical operator for that is subtraction, not distance.
2022-03-17 23:46:55 +01:00
CalebJPotter e64fdcfb55 fixes issue where monitor section gets stuck on mute
This mute button wasn't meant to mute the monitor section in the first
place.
2022-03-17 15:37:07 -06:00
Caleb Potter 643342995d fixes issue where MCP controller strips got stranded switching banks
This commit fixes an issue where if your controller was currently on a
bank not near the first few tracks, and you then deleted tracks, the
controller bank buttons would appear unresponsive because of the
"if (initial >= sorted.size())" check in switch_banks().
This would occur when the difference between the _initial_bank and
whatever sorted.size() returns was greater than or equal to strip_cnt.
For example, if your _initial_bank was 48, your strip_cnt was 24 and you
had 24 tracks after the deletion, then the above conditional would evaluate
to true and exit out of switch_banks BEFORE actually switching the bank,
effectively stranding the controller unless you added enough tracks back.
2022-03-17 15:37:07 -06:00
Caleb Potter e89d85f776 remaps button handlers specific to iCon QCon ProG2
If the QCon ProG2 is selected as the device profile, then the button map
will be built with handlers that map specific to the iCon QCon ProG2
controller.
2022-03-17 15:37:07 -06:00
Caleb Potter ad4475fe7a adds iCon QCon ProG2 specific MCP button handlers
Adds function to clear solo and (with shift) mute all channels.Adds
function to save and (with shift) save as. Adds function to toggle all
processors on selected track. Adds functions to select track to the
left/right. Adds function to add marker and (with shift) remove marker at
playhead. Adds function to undo without needing shift modifier.
2022-03-17 15:37:07 -06:00
Caleb Potter b846356f87 adds MCP button to toggle between master fader and monitor fader
Adds an MCP button function to switch the master fader on the controller
between the session master fader and (if enabled) monitor fader.
2022-03-17 15:37:07 -06:00
Caleb Potter b6a1144472 adds a few general purpose MCP button functions
Adds a function to go to the next and previous marker. Adds a function to
redo (without requiring a shift modifier). Adds a function to open a
project.
2022-03-17 15:37:07 -06:00
Caleb Potter 381276e862 adds support for iCon QCon ProG2 controller
This commit does no remapping, but it adds the Pro G2 as a value in the
device profiles.
2022-03-17 15:37:07 -06:00