summaryrefslogtreecommitdiff
path: root/libs/ardour/meter.cc
AgeCommit message (Collapse)Author
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
2010-12-03Remove all use of nframes_t.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@8166 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-08-19forward port automation handling changes from 2.x, upto and including about ↵Paul Davis
rev 6981 (will need full testing in the 3.X context). as on 2.x, this removes real-time visual updates to automation curves during write/touch automation recording git-svn-id: svn://localhost/ardour2/branches/3.0@7653 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-06-30Improve behaviour of MIDI metering.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@7337 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-16make sure that meters are configured to handle the right number of channels, ↵Paul Davis
and allow internal returns to be restored from XML in non-monitor busses git-svn-id: svn://localhost/ardour2/branches/3.0@6917 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-03-24remove XML-based constructors for several types of Processors; less debuggingPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@6790 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-23Fix assertion failure on dropping a track out of rec-arm.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@6393 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-19use new syntax for connecting to backend signals that enforces explicit ↵Paul Davis
connection scope, plus a few other related matters git-svn-id: svn://localhost/ardour2/branches/3.0@6376 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-17switch to using boost::signals2 instead of sigc++, at least for libardour. ↵Paul Davis
not finished yet, but compiles, loads sessions, records and can close a session without a crash git-svn-id: svn://localhost/ardour2/branches/3.0@6372 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-07Route::set_meter_point() is now conceptually RT safe, although it still ↵Paul Davis
takes a write lock on the processor list. this allows it to be called when setting rec-enable status on a route. not thoroughly tested, and still incomplete - single route rec-enables should probably use this pathway, and there is still no cross-thread cleanup from an RT route op request git-svn-id: svn://localhost/ardour2/branches/3.0@6320 d708f5d6-7413-0410-9779-e7cbd77b26cf