summaryrefslogtreecommitdiff
path: root/libs/ardour/meter.cc
AgeCommit message (Collapse)Author
2020-04-10Sync reset meter, report zero until the meter is actually resetRobin Gareus
2020-04-07NO-OP: whitespaceRobin Gareus
2020-04-07Atomically reset peak meters #7465Robin Gareus
2020-04-03Consistent processor labels "Meter"Robin Gareus
Track name is implicit, so instead of "meter-<name>", showing a translatable label "Meter" is sufficient and consistent with "Fader". Under the hood, for introspection, the processor name remains as is.
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-06-09Consolidate meter-type state and APIRobin Gareus
In theory different UIs can show different meter-types, so it can make sense to maintain the type in different places. MeterType is a bit-set and PeakMeter implementation provides for this. However, this is not being used, and the current implementation was rather fragmented, cross-connected signals to keep types in sync, allowed inconsistent meter-types in GUI and backend. MeterType is now kept by meter itself, however it is still saved/restored as part of the Route state. N.B. This change breaks the API, various methods have been renamed for consistency.
2019-06-04Fix async peak-meter resetRobin Gareus
2018-10-03Properly initialize midi-metersRobin Gareus
Midi meters are using linear 0..1 range, (not decibels, no log-scale falloff). If a track is deactivated, run() is never called. the queued reset never executed and the meter remained at the initialization default -inf (visually it looked like a pegged meter).
2017-10-04Clean up State API:Robin Gareus
* Processor implement get_state(), classes derived from Processor implement protected ::state() -- as documented in processor.h * likewise for Route, Track: make ::state() a protected interface * removal of "full_state", use explicit "template_save" * use RAII/Unwind to skip saving automation-state
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-04-19Use XMLNode::set_property in ARDOUR::Meter classTim Mayberry
2016-12-03Remove Evoral::MIDIEventDavid Robillard
It is slightly questionable whether type specific methods like velocity() belong on Event at all, these may be better off as free functions. However the code currently uses them as methods in many places, and it seems like a step in the right direction, since, for example, we might some day have events that have a velocity but aren't stored as MIDI messages (e.g. if Ardour uses an internal musical model that is more expressive). In any case, the former inheritance and plethora of sloppy casts is definitely not the right thing.
2016-07-22properly handle meter channel count changesRobin Gareus
* reset peak when switching type (audio/midi) or total count * clamp to +40dBFS to prevent endless falloff for HUGE signals
2016-06-25major internal plugin & processor API change:Robin Gareus
Pass current (latency compensated) cycle times to plugin. This fixes time-reporting to plugins and also fixes automation and when bouncing (the session->transport* is not valid) etc.
2016-05-31Surfaces: Metering could only handle one surface at a time.Len Ovens
2015-09-28Fix Mackie control metering (fixes #6608).Len Ovens
2015-09-06libardour: initialize some uninitialized vars..Robin Gareus
2015-06-16-Wsign-compareRobin Gareus
2015-05-02professionalize peak-metersRobin Gareus
The peak meter needs to withstand various test-signals without visual jitter (in particular 1kHz sine) regardless of settings (period-size, sample-rate, custom fall-off). This needs to be done in sync (and not by a random non-rt ‘smoothing’ thread). On the downside this voids the ‘visual smoothing’ particularly with large buffersizes - but then again exactly this “always fall-off no matter what [the next real data will be]” is the problem. One the upside, there’s one less high-frequency (100Hz) thread (Yay!) PS. it probably never worked on windows, anyway. Only peak-meters are affected by his change. K-meters, IEC I/II and VU were never visually smoothed.
2015-04-29delegate signal emission to dedicated thread.Robin Gareus
This works around abysmal performance (~.15ms) of boost::function and boost::bind (in PBD::Signal). The overall load is probably higher but the realtime thread remains unaffected.
2015-04-25prepare 0dBFS peak meterRobin Gareus
2014-11-20Reduce unnecessary non-const MIDI buffer access.David Robillard
2014-01-10Merge windows+cc branch into cairocanvas branch. Not finished, need to now ↵Paul Davis
merge windows branch to get changes from there
2013-12-30optimize peak calculation of silent buffersRobin Gareus
2013-12-22add K12/RMS meter typeRobin Gareus
2013-08-07use std::numeric_limits<float>::infinity() rather than INFINITY to try to ↵Paul Davis
get compilers to agree on the type
2013-08-04'libs/ardour' - Main body of changes required for building with MSVCJohn Emmas
2013-08-02rework MIDI [processor|plugin] chainRobin Gareus
* forward midi-data around plugins that have no MIDI-out * allow to insert plugins with no MIDI-input at a point with one MIDI-channel This works because excess ports (both plugin and route) remain unconnected and use scratch-buffers. Tested with LV2, LXVST and LADSPA. (AU plugins with variable in/out retain the old behavior, no bypass) fixes http://tracker.ardour.org/view.php?id=5630
2013-07-31fix typo in c212c16ebRobin Gareus
2013-07-31initialize some uninitialized valuesRobin Gareus
2013-07-31catch assert()Robin Gareus
2013-07-28fix compiler warnings.Robin Gareus
2013-07-25Don't allow to deactivate meter.Robin Gareus
before this change: 1) switch to 'custom' meter point, 2) deactivate meter processor. -> meters does not run regardless of meter-point -> meter can only be re-nabled in 'custom' mode
2013-07-25reset meters only when *really* necessaryRobin Gareus
..and continue to calculate fall-off in audio-cycle (rather than UI thread) TODO: check if this works properly when switching between audio/midi meter modes on a midi-track. One of the motivations to always reset meters when the meter-point changes was to resolve peak-hold & fall-off issues when a midi-meter replaces an audio-meter and vice versa.
2013-07-25fix compiler warningRobin Gareus
2013-07-23use fixed fall-off time for k-meterRobin Gareus
2013-07-22restore session backwards compatibility to 3.3Robin Gareus
2013-07-22implement new meter typesRobin Gareus
2013-07-22Revert "Revert new meter types (postponed until after 3.3 release)"Robin Gareus
This reverts commit d80f672e8487f459d76ab291958bffcded08f0fd.
2013-07-18reset meter when meter-point changesRobin Gareus
2013-07-16zero meters for inactive tracksRobin Gareus
2013-07-15Revert new meter types (postponed until after 3.3 release)Robin Gareus
This reverts commit ce621d1c8a600853be0020942a9664ccee0ab165. This reverts commit 80aa2574819e947668092c660d767e25a661c6f1.
2013-07-15add VU and IEC meter DSP (from jmeters)Robin Gareus
2013-07-10use accurate log10 for meter (fast_log2 is unsuitable inaccurate)Robin Gareus
fast_coefficient_to_dB() returns a lower bound value, unsuitable to catch audio peaks. The difference to 20*log10 is as large as 0.4 dB! The effective speedup of fast_log10 compared to log10f is marginal (sweep of all 24bit values) i686 (1.6GHz Intel core): 2.36 [times faster] x86_64 (core2 2.4GHz): 1.63 x86_64 (I3 2.80GHz): 2.03 the execution time of one log10f() averaged over a sweep of all 24 bit values i686 (1.6GHz Intel core): 0.131 usec x86_64 (core2 2.4GHz): 0.033 usec x86_64 (I3 2.80GHz): 0.044 usec PeakMeter::run() is called from dedicated non-rt, no harm done.
2013-07-10fix RMS+Peak meter for MIDI-tracksRobin Gareus
2013-07-10ignore state-changes during [meter] context-menu popup (gtkmm bug?)Robin Gareus
2013-07-10prepare meter type unificationRobin Gareus
2013-07-10fix meterbridge metric display switchRobin Gareus
2013-07-10remember meter type with sessionRobin Gareus
2013-07-10experimental RMS-meter and peak-signal (vs peak-power) queryRobin Gareus