13
0
Commit Graph

228 Commits

Author SHA1 Message Date
75829d20f2
Overhaul export loudness normalization
* Fix exporting multiple formats with different
  normalization settings or demo-noise settings
* Add true-peak limiter (based on x42-limiter dpl.lv2)
* Optionally use a limiter for loudness normalization
* Fall back to short-term loudness when normalizing
  material too short for integrating loudness.
2021-04-12 23:15:30 +02:00
c1d98ca3c8
Export analysis: log loudness / time 2021-04-07 01:46:02 +02:00
cc7b8b1bc5
gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
e6dcc47d4a
Fix export-analysis true-peak display offset when stripping silence #8578 2021-03-21 14:36:10 +01:00
516a1b0d2e
Use unique target names for unit-test build rules 2020-10-16 02:31:39 +02:00
d794f39e20
Update post-export analysis to report max short/mom loudness 2020-07-20 05:16:51 +02:00
John Emmas
743a3b1842 Add/remove source(s) in our MSVC project (audiographer) 2020-06-05 12:41:55 +01:00
25169d239d
Relax initial export-noise to 1/3 of interval 2020-06-05 03:19:47 +02:00
820165d238
Add export demo noise watermarking 2020-06-04 21:20:32 +02:00
fe1f8effb9
Don't crash if ardour vamp plugins are n/a #8161
This still assert()s in debug builds. Since those plugins
should always be available.
2020-05-30 05:20:50 +02:00
c365c6cdb2
Set thread-names (libs) 2020-03-29 14:56:22 +02:00
7c6eadd84a
Fix some doxygen warnings 2020-03-02 17:58:03 +01:00
bca825e515
NO-OP: whitespace 2020-01-14 00:52:24 +01:00
551702b9e9
Fix for-loop condition (comma has no effect) 2019-12-05 18:23:49 +01:00
38b36d2ea5
Engage thread-safe fftw planner in libardour
This way initialization happens constently, and independent from the GUI,
for session-utils, lua, headless..
2019-09-10 03:06:21 +02:00
98c65406e3
Prefer std::vector<> over C-style malloc/free**
This fixes a potential out of bounds read `if (_dbtp_plugin[c])`
if c is larger than the allocated channel count.
2019-08-12 15:02:24 +02:00
c1bd70d8b0
Update audiographer GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
d3657a8944 Add/remove source(s) in our MSVC project (audiographer) 2019-03-04 12:16:47 +00:00
8b2a8fa42a
Remove another unused include 2019-03-02 14:32:54 +01:00
959947e7f8
NO-OP: whitespace (remove vi modelines) 2019-02-28 20:56:23 +01:00
9131cd17a0
Consolidate gdither noise code 2019-02-28 20:40:45 +01:00
afee22d5fa Add/remove source(s) in our MSVC project (audiographer) 2018-11-23 07:27:32 +00:00
e4cbd5115e Add Pipe-to-command export backend
A first step towards allowing external encoders without intermediate
temporary file.
2018-11-19 03:30:40 +01:00
8ed33f1bc7 remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
9506a294c7 Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
Stage 1 of 3 (more to follow)
2018-09-30 08:56:12 +01:00
79f01bc889 Initial changes needed for building Mixbus (with MSVC) as version 5
(Mixbus itself will probably need extra changes)
2018-09-10 07:14:59 +01:00
16ef78ade0 Clarify error message when file cannot be created,
The default error is "Not a valid SNDFILE* pointer." which is rather
obscure to end-users.
2018-07-25 17:46:15 +02:00
b0373598d7 Fix a typo (thanks to IOhannes/debian for reporting) 2018-02-28 20:40:38 +01:00
b9c9777b9a When building with MSVC, allow for the fact that Mixbus and Ardour can be using different versions of the SESSION_FILE format 2018-02-15 09:03:32 +00:00
6f019faaa0 Accommodate the change from libtimecode to libtemporal 2018-02-14 10:02:11 +00:00
7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
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-09-18 12:39:17 -04:00
7258c6334d Namespace PBD::RingBuffer
class RingBuffer<> is a very generic name and should not pollute the
global namespace.
2017-09-16 16:37:29 +02:00
4985f0d7ae Include last sample in reverse test for nonsilence in end trim during export 2016-12-06 20:55:17 +10:00
bd52d4e328 Fix issues in export with trim enabled
A complete reimplementation of AudioGrapher::SilentTrimmer::process to support
trimming the beginning and end in the same processing block

Fix export with trim end enabled to actually trim silent frames

Only add silence to beginning or end of export data if data was written

Should resolve: #6412
2016-12-06 13:44:19 +10:00
568cf861f9 Rename AudioGrapher::SilentTrimmer method to reflect behaviour
Unlike many of the other uses of the term "frame" this is actually returning
the index to the first sample in the interleaved frame that contains
non-silence.
2016-12-06 13:43:10 +10:00
2c67e71e98 Always signal writing to file is complete at end of the export process
With end trim enabled, the only case that would successfully export was if
there was at least some samples above the silence threshold in the last export
processing block.

The issue was that the EndOfInput flag was not being passed to
AudioGrapher::SndFileWriter::process which would then call sf_write_sync and
emit the FileWritten signal to start post processing. Fix that by always
passing the EndOfInput flag in the last export process cycle.

Related: #6412
2016-12-06 13:43:09 +10:00
9e794af3ea Add script to run audiographer tests 2016-12-06 13:20:54 +10:00
69cbcb84a6 spelling corrections from Jaromír Mikeš <mira.mikes@seznam.cz>
Corresponds to https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/tree/debian/patches/0070-spelling.patch
2016-10-17 17:57:39 -04:00
b55975a861 consistent VAMP includes
This resolves an ambiguity VampHost::Vamp::Plugin and Vamp::Plugin
2016-10-03 05:13:12 +02:00
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
21bb604fc1 fix build of test suite
Fix build of audiographer tests after changes to TmpFile in 77687519.
2016-07-17 17:04:35 +01:00
77687519b6 Refactor TmpFile into an abstract base class
This allows a TmpFile pointer to be either a Sync or Async (Threaded)
writer. As result we must be able to handle both RT and non RT processing.

Still, post-processing (normalization and encoding) should always
happen faster than realtime (freewheeling).

Since jack does not allow a client to change to freewheeling from within
the process-callback, the async-writer disk-thread FileFlushed is used
to initiate post-processing.
2016-07-16 02:14:13 +02:00
e55ef88ee9 refactoring to prepare for real-time export
* add a threaded TmpFile Writer
* update API calls to that process_export_fw() can be used as
  process_function

The idea is to re-use export infrastructure from normalization:
export to a tmp-file and then encode target formats after that.
2016-07-14 04:35:48 +02:00
b0200b23f2 Accommodate the fact that 'msvc_resources.rc.in' got moved to a new path 2016-05-21 10:33:18 +01:00
a12288d9b5 Accommodate newly introduced source(s) in our MSVC project (audiographer) 2016-05-03 17:26:41 +01:00
7547f02c07 prepare loudness normalization 2016-05-02 15:44:13 +02:00
40aa4cfe06 Modify our MSVC projects to build liblua as a DLL rather than a static lib 2016-04-04 16:40:20 +01:00
f00342b2d8 Some AudioGrapher classes need to be exportable now, to support newly introduced 'AnalysisGraph' class
(not entirely sure why - but it might be because 'ProcessContext<Sample>' is now used in multiple sources within libardour).
2016-03-12 13:59:44 +00:00
8ab60f3297 fix port-export analysis for > 2 channels. 2016-03-07 23:36:05 +01:00
ba78359129 prepare for update to waf 1.8
uselib is no longer implicit (inherited by .use). This is still incomplete,
some uselibs for non-linux variants may be missing.

bld.is_defined("HAVE_XXX") also no longer works and will have to be
changed (I think to bld.env["HAVE_XXX"]) in countless places.
2016-02-28 21:16:44 +01:00
Adrian Knoth
6fa88273aa Spelling correction patch from Debian
Patch taken (and forward-ported to HEAD) from
<https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/plain/debian/patches/0100-fix-typos.patch>
2016-02-22 15:13:01 -05:00
67d99a3c5b help clang static analyzer 2016-02-20 20:36:58 +01:00
f30d1d6073 fix normalize + trim silence at end. 2016-02-16 22:24:01 +01:00
0ce4113dbb prepare threshold for silence trim 2016-02-16 21:25:54 +01:00
c1910351a5 Revert "proper debug prints for Analyser"
This reverts commit 9a281963e1.

audiographer cannot use symbols from libardour (cyclic dependency)
(only headers only are ok)
"DebugBits ExportAnalysis" symbol break windows and unit-test builds.
2016-02-16 15:13:12 +01:00
240daf95f5 re-bin analysis results to take silence striping into account. 2016-02-16 15:09:31 +01:00
c52854fd3d Analysis: 1 sample slack (for resampling rounding) 2016-02-16 14:24:08 +01:00
a929b8b872 fix Export SRC buffer report:
the resampler is always fed with N channels, it won't output half channels
2016-02-16 14:00:31 +01:00
e18e765c75 Fix Analysis duration for added silence 2016-02-16 13:22:12 +01:00
9ab061c6cb don't re-use variable names 2016-02-16 13:21:45 +01:00
9a281963e1 proper debug prints for Analyser 2016-02-16 13:21:28 +01:00
1355d186cb extend analysis spectral range to -120dB 2016-02-15 18:55:04 +01:00
e6ea35c3de Add normalization gain factor to Export Analysis 2016-02-15 15:46:49 +01:00
f23bb163a8 Ensure export starts with a clean state 2016-02-14 13:23:45 +01:00
52ebf94c1e Class 'AudioGrapher::Analyser' needs to be exportable for building with MSVC 2016-02-12 12:31:24 +00:00
48fd05c391 Accommodate newly introduced source(s) in our MSVC project (audiographer) 2016-02-12 12:31:23 +00:00
50145a93e6 export analysis: include true-peak positions. 2016-02-12 12:42:51 +01:00
4fd47182f2 Help clang static analyzer. 2016-02-11 23:12:20 +01:00
f9e526dab8 tweak spectrum logscale 2016-02-11 16:09:34 +01:00
4b17bcb8b8 update export analyser for dBTP 2016-02-11 14:14:01 +01:00
df0f1b5ced stereo waveform, prepare spectrum faceplate 2016-02-11 02:22:54 +01:00
8bc7ff85fb audiographer unit-test libs 2016-02-10 19:28:43 +01:00
d8b04d3124 cleanup: unhardcode spectrum size, logscale, whitespace fixes 2016-02-10 19:28:21 +01:00
4928d53f8d Add VAMP SDK to audiographer deps. 2016-02-10 17:08:06 +01:00
6c8a062be9 move export-analysis implementation into cc-file.
lib/libfftw3f.a(apiplan.o):apiplan.c:(.text+0x430): multiple definition of `fftwf_destroy_plan'

This is because static symbols in a .dll have no fixed address and
are mapped when loading the dll. Static functions in .exe do have a fixed
address.
With a header-only implementation the functions are provided
libardour.dll and ardour.exe
2016-02-10 15:11:45 +01:00
7c3d3031dc Fix for undefined references to fftw lib when using gcc/mingw 2016-02-10 23:10:17 +10:00
dd431de07d Add newly introduced source(s) to our MSVC project (audiographer) 2016-02-10 10:55:42 +00:00
c1642fead8 Post-export Analysis 2016-02-10 03:01:05 +01:00
b985f87a77 Use proper UTF8 file-names during export. 2016-01-27 22:58:59 +01:00
2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
7ac691ec82 use pbd's gstdio compatibility wrapper 2015-09-17 14:37:57 +02:00
ec06f2c49f spelling error fixes (notably "overriden" => "overidden") from IOhannes m zmölnig 2015-09-11 09:23:43 -04:00
f5f11158aa another hint for clang static analysis. 2015-09-06 10:42:58 +02:00
bea9bf5387 initialize private variable (unit-test) 2015-09-05 19:16:50 +02:00
482bd4b51c leave a hint for clang scan-build 2015-09-05 19:16:50 +02:00
7fae6bcd87 copy all XCode project files from Tracks.
Rationale: the Waves team maintains the XCode project files, the Ardour crew doesn't. Thus, the Waves'
version is more canonical
2015-06-29 14:18:10 -04:00
dd9e646b40 fix static library build 2015-06-29 14:16:42 -04:00
801af5df9e Add the new (UINTSDEFINED) preprocessor directive to all out MSVC projects (just to be on the safe side) 2015-06-09 13:18:42 +01:00
729bc00f13 no need to close a file that will not be removed (and has no name) 2015-04-29 15:01:33 -04:00
fbe673d9c7 fix #6208, negative broadcast timestamps 2015-03-22 16:12:40 +01:00
5cfa389978 explicitly close tmpfiles before unlink.
fixes issue on export tmpfiles remaining on windows
2015-03-02 23:12:06 +01:00
a5eb3bae87 add an explicit close function to sndfile
NB. if someday we want to switch back to upstream
SndfileHandle, we need to subclass wrap it.
(not sure what else is different, anyway)
2015-03-02 23:11:04 +01:00
36bbd14113 towards fixing #5711
Don’t call ::output() [here: SilenceTrimmer::process()] 
with no data to process. 

If (position + N * period-size) % chunksize == 0;
frames_left == 0 before the last call to ::output().
chunker.h:60 keeps the ProcessContext<T>::EndOfInput
flag and the SilenceTrimmer will already have done ‘in_end’ processing.
2015-01-27 23:13:55 +01:00
973d40e3ac Add support for USE_CAIRO_IMAGE_SURFACE when building with MSVC
(new preprocessor directive - greatly improves CPU loading)
2014-10-29 17:36:30 +00:00
65715dd298 Make sure all our VC projects agree that the product is called 'Mixbus3' (as opposed to just 'Mixbus')
It'd be nice if we could use 'ARDOUR::config_dir_name' for this purpose (or perhaps 'PROGRAM_VERSION'). However, neither is implemented widely enough at present to make this practical. Keep an eye on them though, as possible future strategies.
2014-08-28 07:57:20 +01:00
45afed5e9a Modify our VC project files to work with msvc32-fixup.pl 2014-08-04 09:02:17 +01:00
928881b24a Update vcproj files for changed LILV config define. 2014-07-15 15:50:12 -04:00