13
0
Commit Graph

7938 Commits

Author SHA1 Message Date
32e23db665 In libpbd the sources 'localeguard.cc/.h' and 'locale_guard.cc/.h' are essentially identical now - so let's remove the former pair which were only ever needed when building with MSVC
(should hopefully avoid future confusion !!)
2015-02-28 12:59:00 +00:00
3c3586a4e1 AU presets: allow to save & directly use. 2015-02-28 08:04:14 +01:00
60c39849cf include AU control outputs (as meters on generic UI) 2015-02-28 07:24:33 +01:00
1b0574540f automated toggles? yes we can! 2015-02-28 07:24:13 +01:00
b362f45738 fix AU generic GUI and automation lanes
Don’t include non-automatable params.
2015-02-28 07:23:45 +01:00
105ecfa464 fix routing midi data on export:
MidiPort::cycle_end() was never called, hence after the 
first cycle all midi buffers were assumed to be 
“mixed down” already.

this fixes 
Midi-track 1 -[midi]-> Midi-track2 synth -[audio]-> out
on export.
2015-02-28 05:49:16 +01:00
933e9c2919 Fix unnecessary const violation. 2015-02-27 14:21:45 -05:00
24efaa2992 likely fix for broken fades (imported from v2 sessions) 2015-02-27 11:31:56 -06:00
763a7c8161 potential fix for the_CLA reported problem: v2 fader values are lost if you are using a non-US locale 2015-02-27 11:31:55 -06:00
b11a18d226 fix generic GUI for AU.
Ardour only queries AU writable (or read+writable)
parameters, hence announce them as such.
2015-02-26 23:57:09 +01:00
7f27d658e1 annotate prev commit. 2015-02-25 00:43:58 +01:00
e38eb0613e no more AU warnings…
Ardour calls input_streams(), output_streams() to determine
if the plugin is about to be re-configured (old stream I/O count
!= new I/O count) and emit PluginIoReConfigure() if that’s true.

If the plugin has not been initialized (no format set), we can
safely assume that it will need to be reconfigured.

Forcing Audio=Midi=0 will do so.

The only time where the format is not yet set and hence the actual
channel count is still unknown) is during the first call to 
PluginInsert::configure_io().

At the time of writing, this all is a NOOP anyway! The only user
of the PluginIoReConfigure() signal is the GUI to update connection
lines…  and since the first PluginInsert::configure_io() happens 
during insertion before the plugin is painted and subscribed to 
PluginIoReConfigure(), this function could return any value.

Still 0,0 is just more appropriate than assuming mono audio in/out
and no midi.
2015-02-25 00:42:54 +01:00
6774aef412 AU synth. prefer stereo variant if available. 2015-02-24 18:31:35 +01:00
acd6810860 AU: fix return value reference 2015-02-23 02:49:37 +01:00
b75a826b9a fix return value on AU error in e070701 2015-02-22 23:44:23 +01:00
9359a157fa fix logical-op-parentheses 2015-02-22 23:38:42 +01:00
e070701f14 support AudioUnit Generators without global Channel Info 2015-02-22 23:37:18 +01:00
10e183f518 fix two other potential issues with leftover 32 bit integers when reading from sndfilesource.
It is less likely that these would cause issues because the
variables involved define the size of the data read, which
is almost certainly less than the 32 bit limit (i.e. they are
not positional). But to keep things clean and to keep questions
at bay, make them 64 bit values.
2015-02-22 11:12:11 -05:00
b40a305b5a fix incorrect use of int32_t for current position in file while writing to non-destructive sndfilesources 2015-02-22 11:12:11 -05:00
bf1d12708d dummy: add square wave frequency sweep generators 2015-02-21 05:05:48 +01:00
a2e4d6260c fix logic of Session::audio_source_name_is_unique() 2015-02-20 14:12:40 -05:00
7024232855 ensure that stub audio file sources are removed when we destroy a track 2015-02-20 14:12:40 -05:00
dcf69ab3e6 fix erroneous merge for wavesaudio backend 2015-02-20 13:21:44 -05:00
Valeriy Kamyshniy
d5e375f784 [Summary] In internal Waves backend API, switching sample time from 32 bits to 64 bits.
Conflicts:
	libs/backends/wavesaudio/wavesapi/devicemanager/WCMRCoreAudioDeviceManager.cpp
2015-02-20 13:05:43 -05:00
VKamyshniy
3b5da657af [Summary] In internal Waves backend API, switching sample time from 32 bits to 64 bits. Fixing logical inconsistency: None device always brought sample time=0 to the audio engine callback. 2015-02-20 13:03:09 -05:00
nick_m
5d5f83c56b The commit 3da9c3b740
wasn't the no-op it claimed to be.
2015-02-20 23:30:48 +11:00
b68a4e5cdc Normalize notes on all channels.
Probably.
2015-02-19 20:23:11 -05:00
450291adfc Fix record/import of note ons with velocity 0.
Best to just do this as early as possible to avoid having to deal with this
situation all over the code.

Also fixes violation of LV2 MIDI specification, which requires no such events
are delivered to plugins.
2015-02-19 18:38:30 -05:00
6fb4bd578e Don't allocate then discard notes on note off.
Silly to make a junk Note just to pass to append_note_off_unlocked, which just
uses the fields that are on the MIDIEvent anyway then throws it away.

Also explicitly dispatch to append_note_off_unlocked in the caller for note ons
with velocity 0 rather than make append_note_on_unlocked deal with it.
2015-02-19 18:38:30 -05:00
6a033a093b Remove unused ifdef gunk. 2015-02-19 18:38:30 -05:00
76f6ff178e fix incorrect type for Waves' backend's _sample_time_at_cycle_start 2015-02-19 18:23:17 -05:00
582138f280 change Audio backend sample time methods to use a 64 bit timeline 2015-02-19 17:44:01 -05:00
e148ee52ab add a nonsense-midi test sequence:
system:midi_capture_6 
duplicate on/off, zero-velocity note-on
2015-02-19 21:58:30 +01:00
b489385bf1 fix some static-analysis warnings 2015-02-19 20:37:58 +01:00
aea700fbc4 fix transport issues when loop-is-mode is off.
Session::unset_play_loop() needed to be a no-op if play loop was
already false, and this was exacerbated now that it potentially
schedules butler transport work.
2015-02-19 10:33:33 -05:00
3a63b785a9 rsynth: map note-on with zero velocity to note-off 2015-02-19 00:54:30 +01:00
c24bb4a8ee fix initialization order (sigh) 2015-02-18 12:00:36 -05:00
8c812a6df4 Revert "[Summary] Eliminated redundant marker update notification which lead to creation of huge amount of redundant session events"
This reverts commit 3dde9e969c.
2015-02-18 12:00:36 -05:00
2067163f7a Revert "fix indentation from previous commit and previous edits"
This reverts commit 449c9b675d.
2015-02-18 12:00:36 -05:00
58137b8326 try to restore original semantics for scheduling butler transport work in Session::locate() 2015-02-17 11:21:41 -05:00
b72d37a45f another required fix following recent cherry-picks from waves 2015-02-17 11:10:29 -05:00
GZharun
297ebd33bb [Summary] Blocked redundant skip marker (during skip ranges consolidation) updates which used to lead to unnecessary overhead and redundant session events
Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
2015-02-17 10:57:56 -05:00
48fdb28153 mark session dirty when loop location is changed 2015-02-17 10:50:54 -05:00
449c9b675d fix indentation from previous commit and previous edits 2015-02-17 10:47:22 -05:00
GZharun
3dde9e969c [Summary] Eliminated redundant marker update notification which lead to creation of huge amount of redundant session events 2015-02-17 10:43:05 -05:00
GZharun
5a8270373a [Summary] Fixed loop processing in cases when loop is moved/resized
[Reviewed by] REQUIRED REVIEW FROM PAUL DAVIS
2015-02-17 10:37:35 -05:00
b3e7c88988 fixes for desirable playback when using seamless looping.
Try to make sure that we appropriately reset and refill track
buffers whenever we enter/leave loop playback,and whenever
we locate. In addition, if we start playing somewhere other
than the loop range while loop is enabled, then the first
time we hit the loop end, set up the track buffers.

Conflicts:
	libs/ardour/session_transport.cc
2015-02-16 19:35:37 -05:00
8a93a87db0 remove lib versioning for internal plugins
Those objects do not have a versioned API by themselves.
This fixes issues with duplicate deployment (OSX, Linux bundles: cp) and
ardour listing control-surfaces multiple times (file index plugin dir).
2015-02-16 17:32:56 +01:00
2a04ff8641 Add TestUI class to properly handle EventLoop invalidation
This fixes the programming error: Session RT event... warnings
while running ardour tests
2015-02-15 15:05:22 +10:00
964c04eec5 Move TestReceiver class in libardour tests into own header file 2015-02-15 13:48:53 +10:00
d9b4c6be6a Add a few test util functions and refactor existing test code 2015-02-15 12:53:41 +10:00
deb4687d5d fix testPathIsWithin unit-test:
* use absolute path
* fix copy/paste typo: bar->jim for symlink test
2015-02-14 05:50:40 +01:00
7f0cdc3967 hide terminal window for windows vst scanner 2015-02-14 05:50:40 +01:00
5b3ff655f1 Fix LV2 UIs with spacey paths (e.g. Pianoteq). 2015-02-13 22:00:38 -05:00
7a99bc5373 fix seamless looping after a locate out of the loop.
Something, somewhere has to tell tracks to refill their buffers with
the special loop-data-only magic
2015-02-13 18:42:41 -05:00
aa5cf04ca6 correctly set track loop status when locating away from loop range (and later, when coming back to the loop)
Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
	libs/ardour/session_transport.cc
2015-02-13 17:23:50 -05:00
cb3961d953 Add a test for the constrained cubic interpolation of Evoral::Curve
Add a test, based on the worked example in www.korf.co.uk/spline.pdf, for
the constrained cubic spline interpolation.

The delta values for the float comparisons are rather arbitrary, I'm sorry
to say: they're basically chosen so that everything passes.
2015-02-13 12:25:51 +00:00
bd6ef95989 add accessor methods for single_exposure 2015-02-12 11:35:35 -06:00
b8ec035b24 _single_exposure is now a member variable for each GtkCanvas.
Gtk coalesces multiple exposes into a single combined rect.
If _single_exposure is disabled, we break apart the individual expose rects for the canvas rendering.
2015-02-12 11:35:35 -06:00
180b705643 Fix whitespace in pbd/debug.h 2015-02-12 22:10:51 +10:00
0550ec31bc Add local PwdReset class to reset pwd in event of test failure
This fixes subsequent tests that rely on pwd but not PBD::path_is_within
breakage caused by commit 2689848e
2015-02-12 20:06:47 +10:00
9a7ae1ad99 Add some more test assertions so that tests fail when they should 2015-02-12 20:06:47 +10:00
0f0aebf26b remove naive attempt to avoid drawing first vertical pixel line of Canvas::WaveView
And add commented out attempt at more subtle attempt to get it right
2015-02-11 21:59:38 -05:00
a992a2e6e0 simplify Canvas::Rectangle rendering to avoid unnecessary nonsense, and remove TimeRectangle 2015-02-11 21:59:38 -05:00
2a5921ecf1 Canvas::Rect::contains() should treat its right/left coordinates as exclusive 2015-02-11 21:59:38 -05:00
e8c24f1efd fix midi-capture filter
diskstream reads directly from port, Route
use prefilled buffer-set.
2015-02-12 01:05:16 +01:00
eddcd7128f infrastructure to allow tracing of all MIDI ports 2015-02-10 19:48:47 -05:00
34779ee81e add a sort-of hack to allow us to avoid drawing the first pixel of a waveview when necessary 2015-02-10 19:48:47 -05:00
6cad07fc11 fix boot message always sticking on the last loaded route; it looked like an error 2015-02-10 14:43:16 -06:00
c679d616f6 correct drawing of rectangle borders.
They need to use fractional coordinates, and the border position needed
generalizing for other border widths. See verbose comment for details
2015-02-09 16:41:28 -05:00
736038556f canvas items must be able to use fractional positions when rendering.
This is required to be able to draw precise single pixel lines, as described
in the Cairo FAQ
2015-02-09 16:40:10 -05:00
6dbc0c0919 put function into namespace 2015-02-09 14:46:20 -05:00
429da16b60 Fix sending out of bounds events to LV2 plugins. 2015-02-09 13:45:37 -05:00
nick_m
b1dafe9a31 Properly deallocate memory when clearing selection_op_history and
before XMLNode*s.
Improve some comments.
2015-02-07 23:33:09 +11:00
ae09d7132d fix 192k rate 2015-02-06 13:57:22 -06:00
63a1b56560 fix (and comment) on subtle bug with audio file data width function 2015-02-06 10:33:01 -05:00
nick_m
6b9415aedb Make undo/redo work for:
undo (n) where n > 1
redo (m) where m < n
new transaction.

Previously the redo list was left untouched.
This would lead to utter nonsense in the redo list.

AFAICT this never worked.
2015-02-06 21:54:27 +11:00
78e245d0b5 do not attempt to call an empty/null boost functor in clear_events() 2015-02-05 18:03:40 -05:00
c76523aeaa fix bad fix for cherry-pick conflict 2015-02-05 16:49:14 -05:00
e8b6f852f6 make two obvously const methods actually be const 2015-02-05 16:36:09 -05:00
e72a4ec850 modify behaviour of session when updating skips to use new SessionEvent API
Conflicts:
	libs/ardour/ardour/session.h
	libs/ardour/session.cc
2015-02-05 16:35:56 -05:00
ec9c6a58e2 add SessionEvent::Action to libs/ardour enums registration 2015-02-05 16:32:33 -05:00
6790f8342a expand SessionEvent API to allow ::clear_events() to work correctly.
clear_events() must run in realtime context, which is likely to be asynchronous
with respect to the thread that calls it. So allow caller to pass in a functor
that will be executed (also in realtime context) after the clear is done.

Additionally, allow for a cross-thread callback to the event loop/thread which
initiated/allocated the clear event request so that it can flush its own pending
loop. This part probably isn't necessary but doesn't hurt and is a useful model.
The event would be placed back in the free list at the next event allocation
by the calling thread anyway.
2015-02-05 16:32:21 -05:00
4010884a5b expand PBD::Pool API and add additional DEBUG_TRACE output.
Expanded API splits apart some CrossThreadPool functionality, and provides
access to current pool status information (available(), total(), used(), pending_size())
2015-02-05 16:32:10 -05:00
7152634104 set name of GUI event loop thread 2015-02-05 16:31:59 -05:00
nick_m
63935a86a4 Rework previous commit to avoid extra property lookup (fwiw). 2015-02-06 01:09:04 +11:00
nick_m
2d8b7c352b Make sure we have the property rather than the value of patch change id.
(don't crash whenever someone adds a patch change and reloads the session).
2015-02-06 00:53:12 +11:00
nick_m
ff13ac8b4f Clean up Session's _current_trans when aborting a drag. 2015-02-05 23:32:57 +11:00
b4a0136155 tweak to help with uncoalesced renders 2015-02-03 17:35:37 -06:00
9fab39358a render canvas using the GDK region rather than the GDK area.
The region is the un-coalesced set of rectangles that were requested for redraw. The area
is the coalesced single rectangle. In the worst cases, the coalesced rectangle could span
the entire window even though just two pixels in opposite corners were to be redrawn.

There is a problem with the verbose cursor as it is dragged across MIDI tracks. TO BE
FIXED.
2015-02-03 15:38:14 -05:00
2689848ed7 Add an extra test to prevent 'PBD::path_is_within()' from looping infinitely on Windows
The infinite loop would happen if the 2 supplied paths were on different Windows drives - for example if one was on drive C:\ and the other on drive E:\

I don't think this new test will be detrimental to the other platforms but if it is, we could easily separate it out with a '#ifdef PLATFORM_WINDOWS' directive.
2015-02-03 11:57:38 +00:00
e874bc0be1 If 'force' is TRUE (when using 'Location::set_start()' or 'Location::set_end()') make sure we do actually force the value to get set.
This gets us around a problem when converting a session from the old (Ardour2) format - where the Session Range (start) value was getting incorrectly set if we hadn't already set the end value.
2015-01-30 14:55:23 +00:00
0018ee2b02 fix “invalid use of incomplete type jack_client_t”
introduced in 66eef25
2015-01-30 11:02:07 +01:00
fe0254344f clarify sync-lock and disable it by default. 2015-01-30 10:43:56 +01:00
f15236b9a0 amend 070818f 2015-01-30 10:43:56 +01:00
bdfe32c086 stop transport when process_routes fails, even when using the parallel graph execution model 2015-01-29 22:00:05 -05:00
de8a8272bc fix incorrect return value from sndfile_data_width() 2015-01-29 21:59:55 -05:00
070818f884 take down backend specific threads with backend 2015-01-30 01:28:52 +01:00
66eef257d8 fix jack thread joining
at the time the graph gets around to takes down 
client threads, the jack-backend’s jack_client has been reset.
But never mind: libjack does not care about it, anyway.
2015-01-30 01:28:52 +01:00
55ba5208b9 return to old default disk chunk read size 2015-01-29 18:49:04 -05:00