13
0
Commit Graph

22469 Commits

Author SHA1 Message Date
e84fbfe6e5 Remove PropertyMap from XMLNode class
It appears that there is no performance benefit from storing properties in a
map for faster lookup or it is counteracted by the penalty of storing and
maintaining the additional data structure.

Timing results before changes with an optimized build:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 41293 Max: 63746 Total: 564448 Avg: 56444 (56 msecs)
   Write : Count: 10 Min: 42932 Max: 49221 Total: 453955 Avg: 45395 (45 msecs)
   Read : Count: 10 Min: 80160 Max: 84678 Total: 824506 Avg: 82450 (82 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 228759 Max: 420236 Total: 3587597 Avg: 358759 (358 msecs)
   Write : Count: 10 Min: 307095 Max: 348767 Total: 3205704 Avg: 320570 (320 msecs)
   Read : Count: 10 Min: 572400 Max: 657219 Total: 5959630 Avg: 595963 (595 msecs)

Perf results after changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 30610 Max: 42656 Total: 376672 Avg: 37667 (37 msecs)
   Write : Count: 10 Min: 42804 Max: 54277 Total: 460455 Avg: 46045 (46 msecs)
   Read : Count: 10 Min: 70364 Max: 85484 Total: 750909 Avg: 75090 (75 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 164360 Max: 356995 Total: 3064482 Avg: 306448 (306 msecs)
   Write : Count: 10 Min: 308655 Max: 372953 Total: 3226707 Avg: 322670 (322 msecs)
   Read : Count: 10 Min: 517243 Max: 541839 Total: 5289950 Avg: 528995 (528 msecs)
2016-10-10 08:45:34 +10:00
97752e6a51 Use references rather than copying containers in libpbd xml code
It is slightly surprising but there seems to be little difference to
performance with these changes. Possibly a slight improvement in "Create" test
with a large xml document(~5%).

Timing results before these changes with an optimized build using new XML perf tests:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 38656 Max: 63827 Total: 571228 Avg: 57122 (57 msecs)
   Write : Count: 10 Min: 43594 Max: 49279 Total: 459907 Avg: 45990 (45 msecs)
   Read : Count: 10 Min: 80247 Max: 84912 Total: 827207 Avg: 82720 (82 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 230706 Max: 456054 Total: 3850998 Avg: 385099 (385 msecs)
   Write : Count: 10 Min: 312322 Max: 353789 Total: 3264211 Avg: 326421 (326 msecs)
   Read : Count: 10 Min: 573556 Max: 610865 Total: 5951908 Avg: 595190 (595 msecs)

Timing results after these changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 41293 Max: 63746 Total: 564448 Avg: 56444 (56 msecs)
   Write : Count: 10 Min: 42932 Max: 49221 Total: 453955 Avg: 45395 (45 msecs)
   Read : Count: 10 Min: 80160 Max: 84678 Total: 824506 Avg: 82450 (82 msecs)

XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 228759 Max: 420236 Total: 3587597 Avg: 358759 (358 msecs)
   Write : Count: 10 Min: 307095 Max: 348767 Total: 3205704 Avg: 320570 (320 msecs)
   Read : Count: 10 Min: 572400 Max: 657219 Total: 5959630 Avg: 595963 (595 msecs)
2016-10-10 08:45:34 +10:00
a4b65212c9 Add test of pbd/xml++.h API performance with three file sizes
Generate, write and then read three Session like XML files to test the
performance of changes made to pbd/xml++.h API
2016-10-10 08:45:34 +10:00
4b2987d0f2 Add XMLNode::operator==/!=() for comparing XMLNode instances
Implemented to be able to test that when writing an XML document via XMLTree
and then reading back into another XMLTree the structure is equivalent as a
general API test of pbd/xml++.h to check for breakage when changing
implementation.
2016-10-10 08:45:34 +10:00
734a4c10e4 Change position of average in PBD::timing_summary and add msecs 2016-10-10 08:45:34 +10:00
116dace033 Add PBD::Timing::elapsed_msecs() as convenience API 2016-10-10 08:45:33 +10:00
nick_m
4faf44588f Interpret start & length_beats properties as double rather than Evoral::Beats.
- Evoral::Beats operator!= would prevent an increment
	  of start_beats by intervals of less than a tick,
	  so its possible that other subtle problems
	  existed due to this kind of thing.
2016-10-10 03:39:57 +11:00
631c8afc66 Audio->MIDI script: properly handle MIDI-region start-offset 2016-10-09 16:42:47 +02:00
f58cf226e0 Add some more midi-region BBT lua-bindings 2016-10-09 16:33:46 +02:00
nick_m
a6b3c4048e Ensure midi region start trim always sets _start_beats.
- Property::set() requires that new_val != current for a change
	  to occur, but Beats::operator!= has tick resolution.
	  i think this is pretty good evidence that _start/_length_beats
	  should actually be double rather than Evoral::Beats
	  (adjusting a region by increments of less than a tick
	  is desirable).
2016-10-09 23:40:54 +11:00
nick_m
2f72b42385 TempoSection methods deal in beats rather than pulses per minute.
- removes note type from curve function for a slightly more
	  accurate result.
2016-10-09 03:46:50 +11:00
nick_m
b1df56d531 Ensure we have a region _beat for legacy sessions, set _pulse unconditionally when loading from xml. 2016-10-09 03:34:13 +11:00
nick_m
d8ef412089 Fix logic fail when setting midi region position, rework midi region start trimming. 2016-10-09 03:31:21 +11:00
nick_m
a54d105107 Use double comparison in MidiRegionView::note_in_region_range(). 2016-10-09 03:24:14 +11:00
d17336c4a8 libqm-dsp is now a static library 2016-10-08 17:04:49 +02:00
40a57f2a8a prepare for proper VST synth categorization 2016-10-07 23:52:44 +02:00
97111b0ec2 Clean up is_instrument vs needs-midi-in API
The latter is only really relevant for Audio Units.

This fixes an issue with vocoders or audio-plugins that simply have
a MIDI input for other purposes to be wrongly categorized as Instruments..
.. and thereby override strict-i/o rules (prefer stereo)
2016-10-07 20:55:21 +02:00
b497bb9db4 fix namespace inconsistency 2016-10-07 20:01:04 +02:00
Nathan Stewart
59cc0a11ca Clean up cppcheck warnings about handling of allocated memory in SysEx class 2016-10-07 19:49:00 +02:00
712440a48c proper C++ const API (possible fix for MSVC builds) 2016-10-07 19:08:39 +02:00
17b6f45819 Allow 'qm-dsp' to build again with MSVC 2016-10-07 17:58:28 +01:00
d6453cf534 add BBT offsets to Audio->MIDI script 2016-10-07 16:33:50 +02:00
39653830dc Arrrgh Ardour starts counting at 1 :( 2016-10-07 14:54:54 +02:00
d988a4b978 fix script now that block + step size are set correctly 2016-10-07 14:42:11 +02:00
d4229da4cf honor Vamp Plugin preferred step+block sizes. 2016-10-07 14:37:09 +02:00
485e31f082 Build qm-dsp & kissfft as static lib w/hidden symbols
...as precaution for plugins which may potentially use a different
version of the library.
2016-10-07 14:28:36 +02:00
5c06e3199c fix typo in 0cf75054 2016-10-07 13:54:20 +02:00
a7d724d980 avoid more C++11 - fixes OSX/PPC & MSVC builds 2016-10-07 13:52:25 +02:00
9f342ceef7 remove cruft 2016-10-07 13:51:58 +02:00
2ac7c5d3e2 Document version of bundled qm-dsp library 2016-10-07 03:59:38 +02:00
5e63206216 prototype polyphonic audio to midi script 2016-10-07 03:45:59 +02:00
86bfe4eff6 Lua binding for std::map<>::at() 2016-10-07 03:39:22 +02:00
bf6b8d76f4 Add tempo-map Lua bindings 2016-10-07 02:38:56 +02:00
9c2d0cb8f7 avoid C++11 - fixes OSX/PPC builds 2016-10-07 00:42:36 +02:00
0cf75054a6 Add Lua bindings for basic MIDI model editing 2016-10-07 00:23:33 +02:00
392972fb50 Lua Script Example for Audio to Midi Transcription (work in progress) 2016-10-06 18:49:46 +02:00
f71ad74ca7 update LuaWindow output on-the-go (allow progress print) 2016-10-06 18:35:29 +02:00
c2c5062539 Add Lua snippet to list and describe Vamp Plugins 2016-10-06 17:50:57 +02:00
5915f8dac0 cont'd work on Vamp/Lua bindings 2016-10-06 17:49:16 +02:00
70b580a4b4 Hold ctrl + click "open" session -> safe mode
This allows to hide the "Safe Mode" checkbox.
2016-10-06 17:42:46 +02:00
b63babbc3d sort instrument list alphabetically 2016-10-06 13:57:58 +02:00
344728551d remove more unused qm-dsp code (fixes windows compile no LAPACK) 2016-10-06 01:54:21 +02:00
a543ae329c Thin out qm-dsp code: no threading 2016-10-06 00:58:20 +02:00
ee2a1b7bea update/include Queen Mary Vamp plugin set 2016-10-06 00:58:16 +02:00
72060df884 update OnsetDetector for updated QM-DSP 2016-10-06 00:58:13 +02:00
f68d2e06bc update qm-dsp library 2016-10-06 00:57:53 +02:00
2a27cc4758 GUI support for type-0/1 SMF import (display channel/track count)
This needs further work:

Type-1 SMF are always
   "One [Ardour] track per [MIDI] track"

Only type-0 SMF have the option
   "One [Ardour] track per [MIDI] channel"
and
   "One [Ardour] track per [MIDI] file"


This is ambiguous with multi-channel audio or multiple selection,
mixed audio+midi and worse with mixed type0/1 .mid selection.

This calls for a dedicated dropdown to select MIDI Import Disposition
for type-0 SMF.
2016-10-05 21:01:21 +02:00
aa4343a18c Add option to separate type-0 SMF channels to tracks 2016-10-05 20:53:22 +02:00
1aafc16955 split type-0 SMF files by channel on import 2016-10-05 20:09:36 +02:00
4d66c89b83 SMF add support for type-0 files (count channels, not tracks) 2016-10-05 20:08:26 +02:00