summaryrefslogtreecommitdiff
path: root/libs/ardour/meter.cc
AgeCommit message (Collapse)Author
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
2013-07-10midi meter updates..Robin Gareus
2013-07-05reset meters when changing metering-point or portsRobin Gareus
2013-03-27Squashed commit of the following:Paul Davis
commit fdbae82077db53add90df7448a06869dac89acc6 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 21:45:28 2013 -0400 mammoth changes in basic signal flow, total redesign of MIDI channel filtering and more. commit 59343a8283698e02bc0f622313b29e98f449e4c8 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 01:58:53 2013 -0400 initial working version after changes to MIDI channel filtering. may affect metering input too. testing not yet finished this commit merges many deep changes in ardour's internal architecture, combined with a total redesign of how MIDI channel filtering works. data in a track used to flow from JACK port buffers to diskstream's ringbuffers and was then copied from the ringbuffers into a BufferSet for use during Route::process_output_buffers(). The butler thread would handle the movement of data between the ringbuffers and disk. with this commit, data now flows from JACK port buffers into the BufferSet used for Route processing, and is copied from the BufferSet into the diskstream's ringbuffers (the butler thread continues to handle interactions with disk as usual). this change allowed a dramatic consolidation of code and simplification of most aspects of Track/Route::roll() and Track/Route::no_roll(). in particular, see Route::fill_buffers_with_input() which now concisely describes how we move data from JACK port buffers into the BufferSet for all Route types (including Tracks). this work was initially motivated by changing MIDI channel filtering so that we can process capture and playback independently. there is now a very clean pathway for this - see MidiTrack::roll() (NOTE: This needs implementing in the no-roll case too - a TODO item). the channel selector for MIDI tracks has been moved out of the track header and is now accessible via the context menu. more work is likely here, to make it (more) obvious to the user when filtering is going on.
2012-05-24Remove over 500 unnecessary includes (including 54 of session.h).David Robillard
It's slightly possible that this causes trivial build failures on different configurations, but otherwise shouldn't cause any problems (i.e. no actual changes other than include/naming/namespace stuff). I deliberately avoided removing libardour-config.h since this can mysteriously break things, though a few of those do seem to be unnecessary. This commit only targets includes of ardour/*.h. There is also a very large number of unnecessary includes of stuff in gtk2_ardour; tackling that should also give a big improvement in build time when things are modified. git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-08-19Emit ConfigurationChanged when meter setup bypasses theCarl Hetherington
general configure_io; fixes remainder of #4233. git-svn-id: svn://localhost/ardour2/branches/3.0@10012 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-04Fix broken whitespace (no functional changes).David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9288 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-02-22Add AFLFrom... enums as counterpart to PFLFrom ; add Output metering as a ↵Paul Davis
new fixed meter point; clean up logic in Route::setup_invisible_processors() to correctly place meters and monitor sends in various modes git-svn-id: svn://localhost/ardour2/branches/3.0@8923 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-01-09Fix setup of route meter point on load, and fix intermittent ↵Carl Hetherington
left-channel-only metering (#3699). git-svn-id: svn://localhost/ardour2/branches/3.0@8486 d708f5d6-7413-0410-9779-e7cbd77b26cf