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