ardour.git
7 years agouse existing method rather than inline code for pending port deletions
Paul Davis [Fri, 14 Oct 2016 16:28:38 +0000 (12:28 -0400)]
use existing method rather than inline code for pending port deletions

7 years agoInitialize TempoMetric _pulse in sonstructor.
nick_m [Mon, 17 Oct 2016 15:14:15 +0000 (02:14 +1100)]
Initialize TempoMetric _pulse in sonstructor.

7 years agoMusic locked regions stay positive after tempo map change.
nick_m [Mon, 17 Oct 2016 15:12:33 +0000 (02:12 +1100)]
Music locked regions stay positive after tempo map change.

7 years agoignore send buffers for which there's no return
Robin Gareus [Sun, 16 Oct 2016 22:32:35 +0000 (00:32 +0200)]
ignore send buffers for which there's no return

This fixes an issue with Audio+Midi sends feeding into an audio only return.

7 years agoimproved and hopefully correct fix for "setting AutomationControl marks session dirty...
Paul Davis [Sun, 16 Oct 2016 19:50:41 +0000 (15:50 -0400)]
improved and hopefully correct fix for "setting AutomationControl marks session dirty even when it should not, if in playback mode"

Hopefully comment is more explanatory as well.

7 years agorefine 29f604418, move selected track to left-edge (if possible)
Robin Gareus [Sun, 16 Oct 2016 19:27:07 +0000 (21:27 +0200)]
refine 29f604418, move selected track to left-edge (if possible)

7 years agoAmend previous commit.
nick_m [Sun, 16 Oct 2016 17:33:48 +0000 (04:33 +1100)]
Amend previous commit.

7 years agoSet note colour of new MidiGhostRegions corrctly.
nick_m [Sun, 16 Oct 2016 17:23:43 +0000 (04:23 +1100)]
Set note colour of new MidiGhostRegions corrctly.

7 years agoPerformance: store NoteBase UIConfiguration colors between config changes.
nick_m [Sun, 16 Oct 2016 16:19:02 +0000 (03:19 +1100)]
Performance: store NoteBase UIConfiguration colors between config changes.

Cumulative time in percent while wiggling the tempo lines rapidly.

Before:

MidiRegionview::update_sustained 12.02

 NoteBase::base_color             6.43
 MidiGhostRegion::update_note     3.12
 Note::set                        1.27
 TempoMap::frame_at_quarter_note  0.59
 _dynamic_cast                    0.13

After:

MidiRegionview::update_sustained  10.49

 MidiGhostRegion::update_note      5.57
 Note::set                         2.52
 TempoMap::frame_at_quarter_note   1.13
 NoteBase::base_color              0.17
 _dynamic_cast                     0.17

7 years agoFix region colors not updating on theme change.
nick_m [Sun, 16 Oct 2016 15:25:16 +0000 (02:25 +1100)]
Fix region colors not updating on theme change.

7 years agoTempo curve cleanup, now also works on optimized builds.
nick_m [Sun, 16 Oct 2016 14:28:33 +0000 (01:28 +1100)]
Tempo curve cleanup, now also works on optimized builds.

7 years agoMixer strip list: click to move strip into view
Robin Gareus [Sat, 15 Oct 2016 21:16:09 +0000 (23:16 +0200)]
Mixer strip list: click to move strip into view

7 years agoIncrease range of a-comp release time.
Robin Gareus [Sat, 15 Oct 2016 19:24:53 +0000 (21:24 +0200)]
Increase range of a-comp release time.

This facilitates ducking music for voice-overs w/o hold-time.

7 years agoSource and AudioSource Lua bindings
Robin Gareus [Sat, 15 Oct 2016 19:16:57 +0000 (21:16 +0200)]
Source and AudioSource Lua bindings

7 years agoBBT duration clock can only compare musical times.
nick_m [Sat, 15 Oct 2016 18:09:49 +0000 (05:09 +1100)]
BBT duration clock can only compare musical times.

7 years agoMinor cleanup (don't set pulse twice in Region::set_position()).
nick_m [Sat, 15 Oct 2016 16:50:14 +0000 (03:50 +1100)]
Minor cleanup (don't set pulse twice in Region::set_position()).

7 years agoFix various snap issues when dragging control points (AutomationRegionView).
nick_m [Sat, 15 Oct 2016 16:47:10 +0000 (03:47 +1100)]
Fix various snap issues when dragging control points (AutomationRegionView).

7 years agoFix incorrect musical position in NoteDrag::total_dx.
nick_m [Sat, 15 Oct 2016 16:41:58 +0000 (03:41 +1100)]
Fix incorrect musical position in NoteDrag::total_dx.

7 years agoAudioClock: remove duplicated code. amends 3a0a628a7
nick_m [Sat, 15 Oct 2016 16:26:30 +0000 (03:26 +1100)]
AudioClock: remove duplicated code. amends 3a0a628a7

7 years agoSlightly improve note update performance, fix note resizing for non-4.0 meter divisors.
nick_m [Sat, 15 Oct 2016 16:11:05 +0000 (03:11 +1100)]
Slightly improve note update performance, fix note resizing for non-4.0 meter divisors.

7 years agoRework duration clock and TempoMap::insert_time to include meter at offset.
nick_m [Sat, 15 Oct 2016 15:33:49 +0000 (02:33 +1100)]
Rework duration clock and TempoMap::insert_time to include meter at offset.

- should fix 7072

- also fixes scroll behavior over multiple tempi.

7 years agoNote selection state uses note event_id_t.
nick_m [Sat, 15 Oct 2016 12:50:02 +0000 (23:50 +1100)]
Note selection state uses note event_id_t.

7 years agoEnsure correct initial automation region view position.
nick_m [Sat, 15 Oct 2016 12:17:19 +0000 (23:17 +1100)]
Ensure correct initial automation region view position.

7 years agoEditor up/down arrow keys: snap to track (not 60px)
Robin Gareus [Sat, 15 Oct 2016 02:13:30 +0000 (04:13 +0200)]
Editor up/down arrow keys: snap to track (not 60px)

7 years agoInclude session-utils with OSX bundles
Robin Gareus [Fri, 14 Oct 2016 23:41:40 +0000 (01:41 +0200)]
Include session-utils with OSX bundles

7 years agomixer left/right: snap to track
Robin Gareus [Fri, 14 Oct 2016 20:58:59 +0000 (22:58 +0200)]
mixer left/right: snap to track

7 years agoinclude session-utils with windows bundles
Robin Gareus [Fri, 14 Oct 2016 16:33:16 +0000 (18:33 +0200)]
include session-utils with windows bundles

7 years agoremove debug output
Paul Davis [Fri, 14 Oct 2016 15:50:27 +0000 (11:50 -0400)]
remove debug output

7 years agomuch simpler implementation of fix originally in c104c9d4726f3: don't call Session...
Paul Davis [Fri, 14 Oct 2016 15:42:35 +0000 (11:42 -0400)]
much simpler implementation of fix originally in c104c9d4726f3: don't call Session::set_dirty() or emit Changed() unless AutomationControl actually changes value

7 years agoRevert "change return type of AutomationControl::actually_set_value() from void to...
Paul Davis [Fri, 14 Oct 2016 15:16:42 +0000 (11:16 -0400)]
Revert "change return type of AutomationControl::actually_set_value() from void to bool, to indicate if value was changed."

This reverts commit c104c9d4726f3ba1ecd352d13b88a57f2f964510.

7 years agoGUI to allow aux-send feedback loops
Robin Gareus [Fri, 14 Oct 2016 14:07:30 +0000 (16:07 +0200)]
GUI to allow aux-send feedback loops

7 years agoallow feedback (loops) from internal sends
Robin Gareus [Fri, 14 Oct 2016 13:06:49 +0000 (15:06 +0200)]
allow feedback (loops) from internal sends

This facilitates custom "Echo" chains:

  Bus 1 [FX] [aux-send to Bus 2] -> master
  Bus 2 [FX] -> Bus 2

7 years agofix math ambiguity & OSX compilation
Robin Gareus [Thu, 13 Oct 2016 21:41:49 +0000 (23:41 +0200)]
fix math ambiguity & OSX compilation

cc121.cc: In member function 'void ArdourSurface::CC121::encoder_handler(MIDI::Parser&, MIDI::EventTwoBytes*)':
cc121.cc:413: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
/usr/include/architecture/i386/math.h:343: note: candidate 1: double pow(double, double)
/usr/include/c++/4.2.1/cmath:357: note: candidate 2: float std::pow(float, float)

7 years agonew scheme for managing port deletion
Paul Davis [Thu, 13 Oct 2016 21:18:42 +0000 (17:18 -0400)]
new scheme for managing port deletion

shared_ptr<Port> now uses a deleter functor which pushes Port* to a lock-free FIFO so that the Port is
always deleted (and thus unregistered with the PortEngine/backend) in a safe context w.r.t. various
callbacks in the host. Currently the auto_connect_thread in Session has been tasked with doing these
deletions.

7 years agostop using gkd_pango_context_get() in ArdourCanvas::Canvas and require concrete insta...
Paul Davis [Thu, 13 Oct 2016 21:11:38 +0000 (17:11 -0400)]
stop using gkd_pango_context_get() in ArdourCanvas::Canvas and require concrete instances to supply a Pango::Context; do this for GtkCanvas and Push2Canvas

7 years agofix panner reset when switching to aux-sends -- fixes #6893
Robin Gareus [Thu, 13 Oct 2016 17:57:50 +0000 (19:57 +0200)]
fix panner reset when switching to aux-sends -- fixes #6893

7 years agoSmall improvement and change to comply with coding standard
W.P. van Paassen [Wed, 12 Oct 2016 18:58:40 +0000 (20:58 +0200)]
Small improvement and change to comply with coding standard

7 years agoInital support for Steinberg's CC121 control surface
W.P. van Paassen [Tue, 11 Oct 2016 17:21:21 +0000 (19:21 +0200)]
Inital support for Steinberg's CC121 control surface

7 years agoOSC added plugin activate/deactivate
Michiel de Roo [Thu, 15 Sep 2016 17:05:18 +0000 (19:05 +0200)]
OSC added plugin activate/deactivate

7 years agohandle blink-rec-arm change without application restart
Robin Gareus [Thu, 13 Oct 2016 16:07:18 +0000 (18:07 +0200)]
handle blink-rec-arm change without application restart

7 years agoAdd region position to note start in the midi list editor
Nil Geisweiller [Wed, 28 Sep 2016 20:09:46 +0000 (23:09 +0300)]
Add region position to note start in the midi list editor

7 years agoDon't reset the audio tracks name when changing the channel configuration.
Robert Scott [Thu, 6 Oct 2016 22:15:57 +0000 (17:15 -0500)]
Don't reset the audio tracks name when changing the channel configuration.

7 years agoUpdate cubasish-ardour.colors
cooltehno [Wed, 12 Oct 2016 22:11:39 +0000 (02:11 +0400)]
Update cubasish-ardour.colors

file:///home/cooltehno/DATA/ARDOUR_EXP/.темы/3_cubasish/cor_131016.jpg
This commit changes the clip indicator from white to red coloured (from "color 9" to "color 55"). Also the "color 55" is changing from orange (f85813) to maximum bright red color (ff0009)

7 years agoAllow a LV2 plugin to mark the session dirty
Robin Gareus [Thu, 13 Oct 2016 14:04:28 +0000 (16:04 +0200)]
Allow a LV2 plugin to mark the session dirty

If some plugin-internal state changes (GUI <> Plugin e.g. load a sample)
no ports change and the host does not know that the plugin state has
changed. The session may be closed without save.

This is a prototype using an ardour.org URI, pending upstream lv2plug.in

7 years agoImprove check in tempoAtPulseTest
nick_m [Thu, 13 Oct 2016 03:26:54 +0000 (14:26 +1100)]
Improve check in tempoAtPulseTest

7 years agoFix ramp test, add tempoAtPulseTest.
nick_m [Thu, 13 Oct 2016 03:14:27 +0000 (14:14 +1100)]
Fix ramp test, add tempoAtPulseTest.

7 years agoAllow opening sessions with files embedded from removable drives
Robin Gareus [Thu, 13 Oct 2016 00:07:08 +0000 (02:07 +0200)]
Allow opening sessions with files embedded from removable drives

Otherwise Windows shows a critical error for files embedded from
removable devices.

7 years agochange return type of AutomationControl::actually_set_value() from void to bool,...
Paul Davis [Wed, 12 Oct 2016 21:26:46 +0000 (17:26 -0400)]
change return type of AutomationControl::actually_set_value() from void to bool, to indicate if value was changed.

Don't call Session::set_dirty() when no change occurs

7 years agopeak level numeric display now uses "clip indicator" for base color, not "bright...
Paul Davis [Wed, 12 Oct 2016 19:50:30 +0000 (15:50 -0400)]
peak level numeric display now uses "clip indicator" for base color, not "bright indicator"

Should address #7010

7 years agoadd gtk_clip_indicator as a separate color from gtk_bright_indicator
Paul Davis [Wed, 12 Oct 2016 19:43:47 +0000 (15:43 -0400)]
add gtk_clip_indicator as a separate color from gtk_bright_indicator

7 years agoFixed array index out of bounds in Push2Menu::set_active()
Nathan Stewart [Sun, 9 Oct 2016 12:26:59 +0000 (08:26 -0400)]
Fixed array index out of bounds in Push2Menu::set_active()

7 years agoFixes minor memory leak found in color_theme_manager.cpp:326
Nathan Stewart [Tue, 11 Oct 2016 15:07:17 +0000 (11:07 -0400)]
Fixes minor memory leak found in color_theme_manager.cpp:326

7 years agomap::clear() calls erase. Cleans up cpp check warning 'iterator used after element...
Nathan Stewart [Wed, 12 Oct 2016 03:07:52 +0000 (23:07 -0400)]
map::clear() calls erase. Cleans up cpp check warning 'iterator used after element has been erased'

7 years agoClarify documentation of Lua inter-processor communication
Robin Gareus [Wed, 12 Oct 2016 18:08:39 +0000 (20:08 +0200)]
Clarify documentation of Lua inter-processor communication

7 years agocleaner version of feed9648 -- fixes #7067
Robin Gareus [Tue, 11 Oct 2016 20:57:38 +0000 (22:57 +0200)]
cleaner version of feed9648 -- fixes #7067

7 years agoRevert "Allow loading sessions with missing external files #7067"
Robin Gareus [Tue, 11 Oct 2016 20:54:21 +0000 (22:54 +0200)]
Revert "Allow loading sessions with missing external files #7067"

This reverts commit feed9648e19f5750b102a161a1028bb143ea16c5.

7 years agoAllow loading sessions with missing external files #7067
Robin Gareus [Tue, 11 Oct 2016 20:05:27 +0000 (22:05 +0200)]
Allow loading sessions with missing external files #7067

The issue was introduced in dbf86a495b, forcing must_exist = true
for *all* files that have a absolute _origin, including stub
SilentFileSources.

If an external file is no longer available and a user chooses to
"ignore, skip" an SilentFile is created instead of the actual source,
The SilentFileSource has the same XML state which includes _origin.

ARDOUR::SilentFileSource::SilentFileSource () c'tor calls
AudioFileSource::AudioFileSource (,.., must_exit = false)
but since the file has an absolute _origin, the AudioFileSource c'tor sets
must_exist = true; throws and the session cannot be loaded.

7 years agoadd missing symbol for windows compile
Robin Gareus [Tue, 11 Oct 2016 17:55:35 +0000 (19:55 +0200)]
add missing symbol for windows compile

7 years agocater for Note translations. e.g. "Ré ♯" UTF-8
Robin Gareus [Tue, 11 Oct 2016 12:09:54 +0000 (14:09 +0200)]
cater for Note translations. e.g. "Ré ♯" UTF-8

7 years agoBundle session-scripts for linux builds
Robin Gareus [Tue, 11 Oct 2016 00:20:26 +0000 (02:20 +0200)]
Bundle session-scripts for linux builds

7 years agoHide Dummy backend from optimized release builds
Robin Gareus [Mon, 10 Oct 2016 22:29:56 +0000 (00:29 +0200)]
Hide Dummy backend from optimized release builds

Prepare to bundle session-utils with releases.
Session-utils use libardour which needs an Engine. "Dummy" is the only
engine that always works

7 years agoskip Push2 unit-test for now:
Robin Gareus [Mon, 10 Oct 2016 22:05:08 +0000 (00:05 +0200)]
skip Push2 unit-test for now:

The test segfaults due to missing screen and prevents other libardour
unit tests from running.

7 years agoallow to run single tests from ./artest
Robin Gareus [Mon, 10 Oct 2016 22:03:18 +0000 (00:03 +0200)]
allow to run single tests from ./artest

7 years agomake raw-midi script pass unit-tests (no midi port on track)
Robin Gareus [Mon, 10 Oct 2016 22:01:27 +0000 (00:01 +0200)]
make raw-midi script pass unit-tests (no midi port on track)

7 years agoUnit-tests to check Lua session+DSP scripts
Robin Gareus [Mon, 10 Oct 2016 22:00:52 +0000 (00:00 +0200)]
Unit-tests to check Lua session+DSP scripts

7 years agoadd const'ness (allowing LuaScriptList::const_iterator)
Robin Gareus [Mon, 10 Oct 2016 21:49:19 +0000 (23:49 +0200)]
add const'ness (allowing LuaScriptList::const_iterator)

7 years agoExample Lua script for inter-plugin communication
Robin Gareus [Mon, 10 Oct 2016 15:30:51 +0000 (17:30 +0200)]
Example Lua script for inter-plugin communication

7 years agoAdd Lua-bindings for inter-processor communication
Robin Gareus [Mon, 10 Oct 2016 15:03:31 +0000 (17:03 +0200)]
Add Lua-bindings for inter-processor communication

7 years agoForward "owner" from Processor to Plugin
Robin Gareus [Mon, 10 Oct 2016 14:58:38 +0000 (16:58 +0200)]
Forward "owner" from Processor to Plugin

7 years agoAllow to get a route reference from SessionObject*
Robin Gareus [Mon, 10 Oct 2016 14:57:20 +0000 (16:57 +0200)]
Allow to get a route reference from SessionObject*

The motivation is to allow a Processor (here Lua) to get a pointer
to the owning Route without resorting to iterative lookup.

7 years agoWrong iterator used with IDSortedList
John Emmas [Mon, 10 Oct 2016 13:10:39 +0000 (14:10 +0100)]
Wrong iterator used with IDSortedList

7 years agoadd missing #include
Robin Gareus [Mon, 10 Oct 2016 12:37:03 +0000 (14:37 +0200)]
add missing #include

7 years agoconvert VST parameter names to UTF8
Robin Gareus [Mon, 10 Oct 2016 12:04:23 +0000 (14:04 +0200)]
convert VST parameter names to UTF8

Another fix for "µ-iness" (ec8cf4e4f58ad121e6bf15cbf6f57b9dab27cb05d)
this time for Windows.

7 years agoFix order of Playlist XML nodes changing on Session save, bug #7053
Tim Mayberry [Mon, 3 Oct 2016 02:41:42 +0000 (12:41 +1000)]
Fix order of Playlist XML nodes changing on Session save, bug #7053

Playlists in SessionPlaylists are sorted by pointer/address which means the
order they are written in the Session XML file usually changes the first time
the Session is re-saved.

Sort the Playlists by PBD::ID before iterating and writing XML so that
playlists are always written in the same order.

7 years agoFix indentation in SessionPlaylists::add_state()
Tim Mayberry [Mon, 3 Oct 2016 01:24:34 +0000 (11:24 +1000)]
Fix indentation in SessionPlaylists::add_state()

7 years agoUse std::vector::reserve to improve performance of adding properties
Tim Mayberry [Fri, 23 Sep 2016 13:01:18 +0000 (23:01 +1000)]
Use std::vector::reserve to improve performance of adding properties

The number of properties per node roughly corresponds to the number of members
of the class the node is representing and should be fairly low.

Use std::vector::reserve to prevent reallocation on insert for most node types,
there are exceptions like Region(~40 properties).

This seems worth it as part(maybe 1/10th of the total time) of saving a Session
is a combination of what occurs in "Create" and "Write" in this test.

Perf results before 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)

Perf results after changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 30375 Max: 48253 Total: 431727 Avg: 43172 (43 msecs)
   Write : Count: 10 Min: 42553 Max: 49163 Total: 453353 Avg: 45335 (45 msecs)
   Read : Count: 10 Min: 70307 Max: 75987 Total: 734923 Avg: 73492 (73 msecs)
XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 154486 Max: 307856 Total: 2678989 Avg: 267898 (267 msecs)
   Write : Count: 10 Min: 304273 Max: 343274 Total: 3169158 Avg: 316915 (316 msecs)
   Read : Count: 10 Min: 496920 Max: 541394 Total: 5260410 Avg: 526041 (526 msecs)

7 years agoRemove PropertyMap from XMLNode class
Tim Mayberry [Fri, 23 Sep 2016 12:56:36 +0000 (22:56 +1000)]
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)

7 years agoUse references rather than copying containers in libpbd xml code
Tim Mayberry [Thu, 22 Sep 2016 12:38:12 +0000 (22:38 +1000)]
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)

7 years agoAdd test of pbd/xml++.h API performance with three file sizes
Tim Mayberry [Fri, 23 Sep 2016 22:31:20 +0000 (08:31 +1000)]
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

7 years agoAdd XMLNode::operator==/!=() for comparing XMLNode instances
Tim Mayberry [Mon, 26 Sep 2016 02:16:01 +0000 (12:16 +1000)]
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.

7 years agoChange position of average in PBD::timing_summary and add msecs
Tim Mayberry [Mon, 26 Sep 2016 02:35:27 +0000 (12:35 +1000)]
Change position of average in PBD::timing_summary and add msecs

7 years agoAdd PBD::Timing::elapsed_msecs() as convenience API
Tim Mayberry [Sun, 25 Sep 2016 04:32:14 +0000 (14:32 +1000)]
Add PBD::Timing::elapsed_msecs() as convenience API

7 years agoInterpret start & length_beats properties as double rather than Evoral::Beats.
nick_m [Sun, 9 Oct 2016 16:39:57 +0000 (03:39 +1100)]
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.

7 years agoAudio->MIDI script: properly handle MIDI-region start-offset
Robin Gareus [Sun, 9 Oct 2016 14:42:47 +0000 (16:42 +0200)]
Audio->MIDI script: properly handle MIDI-region start-offset

7 years agoAdd some more midi-region BBT lua-bindings
Robin Gareus [Sun, 9 Oct 2016 14:33:09 +0000 (16:33 +0200)]
Add some more midi-region BBT lua-bindings

7 years agoEnsure midi region start trim always sets _start_beats.
nick_m [Sun, 9 Oct 2016 12:40:54 +0000 (23:40 +1100)]
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).

7 years agoTempoSection methods deal in beats rather than pulses per minute.
nick_m [Sat, 8 Oct 2016 16:46:50 +0000 (03:46 +1100)]
TempoSection methods deal in beats rather than pulses per minute.

- removes note type from curve function for a slightly more
  accurate result.

7 years agoEnsure we have a region _beat for legacy sessions, set _pulse unconditionally when...
nick_m [Sat, 8 Oct 2016 16:34:13 +0000 (03:34 +1100)]
Ensure we have a region _beat for legacy sessions, set _pulse unconditionally when loading from xml.

7 years agoFix logic fail when setting midi region position, rework midi region start trimming.
nick_m [Sat, 8 Oct 2016 16:31:21 +0000 (03:31 +1100)]
Fix logic fail when setting midi region position, rework midi region start trimming.

7 years agoUse double comparison in MidiRegionView::note_in_region_range().
nick_m [Sat, 8 Oct 2016 16:24:14 +0000 (03:24 +1100)]
Use double comparison in MidiRegionView::note_in_region_range().

7 years agolibqm-dsp is now a static library
Robin Gareus [Sat, 8 Oct 2016 15:04:49 +0000 (17:04 +0200)]
libqm-dsp is now a static library

7 years agoprepare for proper VST synth categorization
Robin Gareus [Fri, 7 Oct 2016 21:52:44 +0000 (23:52 +0200)]
prepare for proper VST synth categorization

7 years agoClean up is_instrument vs needs-midi-in API
Robin Gareus [Fri, 7 Oct 2016 18:55:21 +0000 (20:55 +0200)]
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)

7 years agofix namespace inconsistency
Robin Gareus [Fri, 7 Oct 2016 18:01:04 +0000 (20:01 +0200)]
fix namespace inconsistency

7 years agoClean up cppcheck warnings about handling of allocated memory in SysEx class
Nathan Stewart [Fri, 7 Oct 2016 16:38:00 +0000 (12:38 -0400)]
Clean up cppcheck warnings about handling of allocated memory in SysEx class

7 years agoproper C++ const API (possible fix for MSVC builds)
Robin Gareus [Fri, 7 Oct 2016 17:07:15 +0000 (19:07 +0200)]
proper C++ const API (possible fix for MSVC builds)

7 years agoAllow 'qm-dsp' to build again with MSVC
John Emmas [Fri, 7 Oct 2016 16:56:42 +0000 (17:56 +0100)]
Allow 'qm-dsp' to build again with MSVC

7 years agoadd BBT offsets to Audio->MIDI script
Robin Gareus [Fri, 7 Oct 2016 14:33:50 +0000 (16:33 +0200)]
add BBT offsets to Audio->MIDI script

7 years agoArrrgh Ardour starts counting at 1 :(
Robin Gareus [Fri, 7 Oct 2016 12:54:54 +0000 (14:54 +0200)]
Arrrgh Ardour starts counting at 1 :(

7 years agofix script now that block + step size are set correctly
Robin Gareus [Fri, 7 Oct 2016 12:42:11 +0000 (14:42 +0200)]
fix script now that block + step size are set correctly