Commit Graph

35253 Commits

Author SHA1 Message Date
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
6f7adbda59 Do not invoke git when installing a build (amend f935324) 2022-05-17 17:49:03 +02:00
Robin Gareus
6f973e09d1 Add readme for udev files 2022-05-17 03:52:36 +02:00
Robin Gareus
c10c3ed64f Show I/O Plugins on Recorder Page 2022-05-17 02:26:28 +02:00
Robin Gareus
5c85695362 Add Input Port meters for I/O Pre-Plugin outputs 2022-05-17 02:26:28 +02:00
Robin Gareus
cdf3b5209e Generalize input-meters 2022-05-17 02:26:28 +02:00
Paul Davis
4c1506e50e add copyright notices 2022-05-16 15:41:56 -06:00
Paul Davis
9758e6280f use new event loop callback to ensure that all surface/control protocol threads have tempo map ptr set 2022-05-16 15:24:52 -06:00
Paul Davis
968533cc23 (re)add mechanism for a callback in any glib event loop executed before the loop "executes"
This is based on code from earlier commits that were later reversed, but we need some mechanism
to ensure that threads have a thread local tempo map ptr set. The big difference is that this
time we do not implement this for all instances of an AbstractUI - implementation is left to
each thread/event loop
2022-05-16 15:24:52 -06:00
Paul Davis
2079a150dd probable fix for Mackie vpot press/release misbehavior in sends (and plugin) subview
The accessed control needs to reflect the current subview banking
2022-05-16 15:24:52 -06:00
Robin Gareus
e528c4df92 Fix export-processor position, include triggerbox output 2022-05-16 14:32:47 +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
Ben Loftis
cd332a2af0 when pasting a Range of automation, first add guard points,
so the automation data before and after this range is retained
2022-05-16 07:16:25 -05:00
Ben Loftis
3a174ff914 add support for 'positive' guard points in ControlList 2022-05-16 07:16:25 -05:00
Ben Loftis
c98561e95c when cutting or clearing an automation range, always add boundary points
* these guard points are necessary to retain the automation that existed
 before and after the selected range is removed
2022-05-16 07:16:24 -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
44e273d713 Overhaul export channel state save/load
This allows to properly save/restore Route and Port
channel config states.
2022-05-16 04:54:17 +02:00
Robin Gareus
f6e67875f4 Implement MIDI ExportGraph processing 2022-05-16 04:54:17 +02:00
Robin Gareus
aa09a445e3 Bootstrap MIDI export writer
This leans on the AudioGrapher API for IdentityVertex.
2022-05-16 04:54:17 +02:00
Robin Gareus
719dda7701 Implement MIDI ExportChannel
Since MIDI Export is limited to Stem-Export, only a port-reader
and ExportProcessor have to be implemented.
2022-05-16 04:54:17 +02:00
Robin Gareus
4c4ab9cf51 Prepare PortExportChannel API for MIDI export 2022-05-16 04:54:17 +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
Paul Davis
7c2cb31b63 temporal: use boost::intrusive ::iterator_to to improve efficiency of ::next/previous_tempo() 2022-05-15 17:49:09 -06: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
a522a98118 Add API to query fixed delay line's delay time 2022-05-15 19:32:46 +02:00
Robin Gareus
ae0aa50b6f Fix MIDI delay-line (amend 25098ed)
Events in the delay-buffer must be shifted back every cycle.
Also in case of fixed-delay-lines events may not be in sequence
since events are only sorted at backend port-level.
2022-05-15 19:20:32 +02:00
Robin Gareus
576f10b6f1 Template [file]names cannot have dir-separators 2022-05-15 04:37:22 +02:00
Robin Gareus
d55d3a7360 Save/load export timespan realtime setting 2022-05-15 02:20:19 +02:00
Robin Gareus
4577f86aa0 NO-OP: clang-format 2022-05-15 02:19:46 +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
Robin Gareus
86597d7e1c NO-OP: re-indent, and cleanup 2022-05-14 23:32:26 +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
Ben Loftis
0cfbc64e54 triggerbox: given no other info, assume a clip is 1,2,4,8 or 16 bars at 4/4
this solves the oft-recurring problem where we assign
 a beat-count of '3' or '7' because minipm  mis-detected the tempo,
 and that situation is vanishingly rare.  it's better to assume 4 or 8

the user always has the option to change the number of beats (and
 therefore the detected tempo) manually, for those clips that are
 in a different time signature.  but minibpm cannot be expected
 to help us there.

NOTE: this is a fallback to make things 'just work' lacking any other context.

* if the tempo is detected in the filename, we use that instead
* clips that were recorded to the timeline use that bpm+timesig
* in the future we can use file-metadata (acidized wave?) instead
* this is audio-only: midi files can have an embedded timesignature

but... given no other information, experience says the vast majority
of downloaded/purchased clips will be 1,2 or 4 bars at 4/4.
2022-05-14 14:16:21 -05:00
Paul Davis
be5c64f737 temporal: NOOP - add blank line 2022-05-13 19:05:13 -06: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
1ccda17504 temporal: add a new version of tempo twist based on pre-nutempo code 2022-05-13 19:05:13 -06:00
Paul Davis
60159acd33 temporal: slightly change const positioning in definition of ::stretch_tempo() 2022-05-13 19:05:13 -06:00
Paul Davis
b0ff612572 temporal: add DEBUG_TRACE message 2022-05-13 19:05:13 -06:00
Paul Davis
4defa3ae8f temporal: fix logic bug in TempoMap::reset_starting_at() 2022-05-13 19:05:13 -06:00
Paul Davis
c9b7f012e4 temporal: helpful comment for future readers 2022-05-13 19:05:13 -06:00
Paul Davis
f0f8f15cce temporal: missing change from 072a7b17a22f 2022-05-13 19:05:13 -06:00
Paul Davis
51980b15cd temporal: split _omega into two values, for each time domain
omega can be computed from Beat or superclock duration. This gives rise to
different units for omega, and we must use the correct value in a given
context.

This commit also changes the way that the audio time omega is computed during
TempoMap::reset_starting_at()
2022-05-13 19:05:13 -06:00
Paul Davis
f679cd6eab temporal: remove Rampable, change name of method to set end note types per minute
Rampable only existed to provide exclusive access to ::set_end() for the
TempoMap. More idiomatic C++ but now that _type has also gone away, so has
::set_ramped() and it really was not worth keeping it around.
2022-05-13 19:05:13 -06:00