13
0
Commit Graph

9535 Commits

Author SHA1 Message Date
14fe7a0ae8 add (N)RPN handling to libmidi++ 2015-11-23 10:44:40 -05:00
Nils Philippsen
e25ddc39f8 make copies of global lists before extending
Not doing so can make source or object files appear multiple times in
the list of files to be compiled or linked, e.g. when doing './waf build
install', subsequently leading to linker errors.
2015-11-23 08:43:19 -05:00
8a26e561c5 cont'd 20262abe (keep all playlists) 2015-11-21 22:45:26 +01:00
20262abe7f prepare "delete all playlists" cleanup option 2015-11-21 21:11:45 +01:00
65d3f6523f fix playlist refcount on track un-freeze. 2015-11-21 18:36:05 +01:00
6b79bd5e42 remove cruft 2015-11-21 11:09:51 +01:00
619727ef73 prevent deletion of playlists on frozen tracks:
bug:
1) freeze a track
2) Session Cleanup > Cleanup unused sources
2a) confirm playlist deletion
3) quit, reload ->  track is no longer frozen
  because _freeze_record.playlist is missing.
  session is in an odd state.
2015-11-20 22:58:00 +01:00
4c04e8028a add API to read snapshot name from instant.xml 2015-11-20 03:22:41 +01:00
c4084932fa remember in-use snapshot/session name in instant.xml 2015-11-20 03:22:41 +01:00
489622bdb6 remove cruft 2015-11-20 03:22:41 +01:00
ca381a908e provide user preference for pre-roll 2015-11-19 16:56:09 -06:00
ceab8cf313 remove debug message 2015-11-19 17:24:00 +01:00
a5b2965cf5 line-wrap fatal message (that's not done automatically) 2015-11-19 17:04:02 +01:00
03518b90a2 allow to rename the session root folder - fixes #6557 2015-11-19 16:11:59 +01:00
07b2518979 Fix windows build when using pthreads-win32 library 2015-11-19 20:54:38 +10:00
ac301b998a Use a range of values for ASIO buffer sizes if provided by driver
This has been tested on four devices:

- A RME HDSP Multiface
- A Yamaha AG06
- A Focusrite 2i2
- A built-in soundcard running ASIO4ALL

The HDSP and the AG06 only return one buffer size when queried so the preferred
size is used as before.

The Focusrite returns a min corresponding to the position of the slider in the
control dialog and the max is 1024. The granularity is 1 so this means that the
number of values needs to be reduced for the current UI design with a combo
box so the granularity is increased until there are around 8-9 buffer sizes to
choose from evenly spaced between min and max(but we could easily change this
if the UI changes etc).

The ASIO4ALL driver returns a min of 64 and a max of 2048 and a granularity of
8. So where the minimum buffer size and granularity is a power of 2 use only
buffer sizes that are power of 2.

If the driver returns different values for min and max it is not currently
possible to indicate which is the driver preferred value. A checkbox or other
UI element could be added to the AudioSetup dialog to only use the preferred
value but that is more work and perhaps not necessary.
2015-11-19 10:23:26 +10:00
f1b336b01e Add support for callback API to portaudio backend but keep blocking API as default
Don't use the callback API for now until further and wider testing.
2015-11-19 10:23:26 +10:00
9d867cfd87 add dedicated API to check plugin class 2015-11-18 18:11:19 +01:00
1c83df80db reduce math weirdness (thanks to Steven Yi) 2015-11-18 14:29:13 +01:00
81103d822a use thread private data **pointer** correctly for Stateful::ID regeneration 2015-11-17 08:53:29 -05:00
d2cba4d7ac fix inadvertently commit error related to at-process-exit deletion for thread private variable 2015-11-16 21:55:57 -05:00
e1dc2d4604 correct value testing for Stateful thread-private variable controlling ID regeneration 2015-11-16 21:24:10 -05:00
108634c3f3 get PlaylistDisposition argument of Session::new_route_from_template() working 2015-11-14 16:01:24 -05:00
fb96170178 Fix fader in mackie control to work with groups. 2015-11-14 10:39:53 -08:00
b6925e274f substantial part of infrastructure required for track/bus duplication
This includes removing the removal of ID values in XML, and its replacement with
thread-local forcing of ID resets, implemented in a previous commit
2015-11-13 16:14:49 -05:00
f5e71fd817 fix return value from Route::save_as_template() 2015-11-13 16:14:49 -05:00
nick_m
6210b63a13 Ardour::Region - add method required to fix #6673. 2015-11-14 03:05:53 +11:00
4b25c80cb9 fix edge-case in Dummy-backend random number generator initialization 2015-11-12 09:49:40 -06:00
92fe47bdee provide a mechanism to force ID regeneration/reset in PBD::Stateful when settingthe ID object from XML or string sources 2015-11-12 10:24:41 -05:00
487a2563a6 remove requirement for transport speed to be 1.0 when generating click (metronome)
This is experimental and may not work
2015-11-12 09:46:25 -05:00
a4daf93f2f Use XMLNode::remove_child_and_delete in Stateful::add_extra_xml
As the node being replaced has been added with XMLNode::add_child_nocopy the
node also needs to be deleted or a memory leak occurs.
2015-11-10 23:14:17 +10:00
4e6cdb4daa Use constructor initialization list in Stateful class 2015-11-10 23:14:16 +10:00
9e4dc284ee Replace spaces with tabs in pbd/stateful.h 2015-11-10 23:14:16 +10:00
3c4e9cb64e more correct semantics for reserved IO name checking 2015-11-09 08:24:35 -05:00
647a60d35d slightly improved fix for reserved name handling 2015-11-07 22:23:23 -05:00
3d5bdbbe66 don't force rename of reserved route/IO names if the name isn't taken yet 2015-11-07 22:16:07 -05:00
09672f4a50 Mackie Control: Initialize vpot assignment on start-up. 2015-11-06 19:28:24 -08:00
ace771bc91 Mackie Control: Add send functionality to vpot assign section. 2015-11-06 16:18:13 -08:00
9013f1afe6 Add some newly introduced sources to our MSVC project (libardour) 2015-11-06 08:22:58 +00:00
André Nusser
f048eb7d02 Make duplicate start at position, not position + 1. (libs part) 2015-11-04 17:50:12 -05:00
02124c0d16 add required header 2015-11-04 07:58:10 -05:00
5eaaa5fcae libardour wrapper for EBUr128 VAMP plugin 2015-11-03 19:21:32 +01:00
72ec5e9a01 add basic VAMP plugin for EBUr128 analysis
FeatureSet will be extended to report detailed analysis.
2015-11-03 19:21:32 +01:00
nick_m
3b0f068fe9 AutomationList::set_automation_state () only needs a memento for toggled. 2015-11-03 04:18:09 +11:00
66f39ddcd0 Class 'PhaseControllable' needs to be importable since it gets referenced outside of libardour
Specifically, 'PhaseControllable::channel()' and 'PhaseControllable::set_channel()' get called from 'mackie/strip.cc'

At some point we might also need to do this for the related classes (SoloControllable and MuteControllable) although it doesn't seem to be needed right at this moment.
2015-11-02 11:27:43 +00:00
160b24b137 fix crash when cleaning up canvas items
Backport from Mixbus. In Ardour this does not currently matter
since there is no top-level canvas destroyed top-down.

...
Editor::session_going_away
MixerStrip::~MixerStrip
MixbusStripCanvas::~MixbusStripCanvas
ArdourCanvas::GtkCanvas::~GtkCanvas
ArdourCanvas::Canvas::~Canvas
ArdourCanvas::Root::~Root
ArdourCanvas::Container::~Container
ArdourCanvas::Item::~Item
ArdourCanvas::Item::clear_items
GtkCanvas::item_going_away()
queue_draw_item_area()

..expose can take place async to garbage collection: crash in one of the
items.
2015-11-02 05:15:55 +01:00
84d44eb5a3 Don't handle possible phase change if no audio channels in mackie control 2015-11-01 19:25:45 -08:00
8ae23c6952 Fix Mackie surface phase control for flip and more than one audio channel. 2015-11-01 15:30:36 -08:00
2e9de2def0 Added Phase control mackie controls as part of the Trim (track) vpot assignment. 2015-11-01 13:35:02 -08:00
nick_m
e709512f14 Fix missing undo for record mute automation. 2015-11-02 05:34:09 +11:00
nick_m
7ade596c92 Clean up _before XMLNode in AutomationList if no automation write occurred. 2015-11-02 02:12:54 +11:00
nick_m
2d47196f43 Automation watch sets position for new write pass when transport stopped. 2015-11-01 23:21:08 +11:00
nick_m
be47c84508 Revert starting write pass only in write mode when transport located. 2015-11-01 23:13:40 +11:00
nick_m
fcc626132e Handle paste from non-toggled to boolean automation track.
- sort-of fixes #6431
2015-10-31 03:54:18 +11:00
7abfe85498 add API to suspend timers signal emission. 2015-10-30 15:55:26 +01:00
661ffe7576 fix JACK/windows compilation 2015-10-28 14:11:17 +01:00
997f47360d use weak-jack's jack_port_rename wrapper
This avoids "[ERROR]: JACK: jack_port_set_name: deprecated".

if libjack does not have jack_port_rename(), weak_libjack.def provides
a fallback using jack_port_set_name().
2015-10-28 01:21:24 +01:00
3e3a5e1cff and another LV2-1.0.0 compat ifdef 2015-10-26 13:32:51 +01:00
677531addb amend 311adde (LV2-1.0.0 compat) 2015-10-26 13:24:23 +01:00
8ab69cba58 properly translatable plural forms 2015-10-25 17:46:39 +01:00
7c24957d30 Changed MCP trim detection to match method used in GUI. 2015-10-25 08:22:02 -07:00
eb6b4f4b15 fix crash on SystemExec::Terminate
if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.
2015-10-23 23:29:04 +02:00
311adde023 add ifdefs for LV2-1.0.0 compat 2015-10-23 18:58:55 +02:00
96c6da0804 Make mackie control view mode save bank for all modes.
Also moved duplicated code to one function.
2015-10-22 15:30:34 -07:00
55e8f6ac30 Enable i18n for info/error messages in MidiPatchManager 2015-10-22 11:51:03 -04:00
e93ba53309 Only parse additional Session midnam files on Session load
When loading a Session add the Session patchfiles directory to the
MidiPatchManager search path and only process/parse the files for that
directory rather than refreshing/reparsing all the files. Similarly for unload,
just unload the devices that are from the Session specific midnam files instead
of removing the path and refreshing/reparsing all the files.

This will not remove the "system" midnam files as they are always added first
and duplicates from the session patchfiles directory are ignored.
2015-10-22 11:51:03 -04:00
efc26a0490 Store the file path when constructing MidiNameDocument
This is so we can compare and see if we have already parsed the file
2015-10-22 11:51:03 -04:00
689862cafb Decouple Session from MidiPatchManager and reduce parsing of midnam xml files
The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.

For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.

There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.

This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).
2015-10-22 11:51:03 -04:00
3bd928591b Add PBD::Searchpath::contains method to check if a Searchpath contains a path 2015-10-22 11:51:03 -04:00
c07ea1bc73 Expose protected PBD::Searchpath API
I prefer to use these as they are more explicit than using the overloaded
operators.
2015-10-22 11:51:03 -04:00
76d43487da Don't parse midnam patch files contained in Session twice
MidiPatchManager::refresh already adds the patch files contained in the session
folder
2015-10-22 11:51:03 -04:00
ee9f369e38 Refactor common code in MidiPatchManager class into new method 2015-10-22 11:51:02 -04:00
9fd75e33fe Don't call MidiPatchManager::refresh when creating MidiPatchManager instance
Currently when loading a session for the first time MidiPatchManager::instance
creates the MidiPatchManager singleton which calls MPM::refresh and all the
midnam files are parsed etc. MPM::set_session is then immediately called and
all the MPM state that has just been set when parsing all the midnam files is
cleared and the parsing of all the files is performed again but this time with
any session specific midnam patch files.

MPM::instance and MPM::set_session consume about 55% of the time spent in the
Session ctor according to kcachegrind and removing the double call to refresh
brings Session construction time for a particular test session down from 7.5s
to 5.5s
2015-10-22 11:51:02 -04:00
3c4f899a4f Fix a small buffer issue which could sometimes prevent sessions from being able to load
In the function 'LV2Plugin::add_state()' the snprintf() call can easily print 19 or even 20 bytes - so a 16-byte buffer wasn't large enough.
2015-10-22 16:37:00 +01:00
5bdc869e49 remove invalid assertion - #6634
There is a highly unlikely case where the render thread can have zero
requests in the queue, but it is not supposed to be terminated.

 1) WaveView::queue_get_image(); 
wake up thread, *but* the thread does not start yet
 2) WaveView::cancel_my_render_request(); 
and now the thread starts.

1,2 are initiated by user actions from the GUI thread and are normally
orders of magnitude slower than scheduler-thread wakeup.
2015-10-22 12:20:42 +02:00
d31ac095e0 Add some newly introduced sources to our MSVC project (libardour) 2015-10-22 09:19:02 +01:00
André Nusser
67f557b1f4 Add overwrite option to save_template. (default = false)
Before it could not overwrite.
2015-10-21 23:28:44 -04:00
e4570242f3 fix automation update at transport stop when in automation Play mode 2015-10-21 23:06:40 -04:00
d4227faaee fix mute automation in Play automation state 2015-10-21 23:06:05 -04:00
8d3a8ca913 Add AutomationControl::set_value_unchecked() and AutomationControl::writable() and use them.
Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they
do not attempt to overwrite data sent to them while automation playback is underway.
2015-10-21 22:31:35 -04:00
6ca3a1593e add commentary and clean up blank lines 2015-10-21 22:31:35 -04:00
ea95bef27b variable name change: percent is 0..100, 0..1.0 is a fraction 2015-10-21 08:09:40 -04:00
6e7ca06f63 ensure that mutator function for CONFIG_VARIABLE_SPECIAL is used when assigning initial value during construction 2015-10-21 07:53:26 -04:00
7a453d2329 Make sure Mackie Control view modes start with route 1 except Mixer mode goes to last position. 2015-10-20 19:31:04 -07:00
81f6ad0d0c Added "Selected" view mode to Mackie Control. 2015-10-20 18:54:56 -07:00
f84798ff75 Fix crash in new CoreaudioSource code (on invalid file) 2015-10-21 03:12:45 +02:00
6ec32a70c1 fix AudioUnit parameter listening to work with new ParameterChangedExternally semantics 2015-10-20 10:25:36 -04:00
f806f059b3 rename Plugin::ParameterChanged to ParameterChangedExternally to reflect its intent, and clean up the libardour side of result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.
2015-10-20 10:23:49 -04:00
7804a524dc Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit 336b2eb9a4.
2015-10-20 10:23:49 -04:00
740c4dd134 possible fix for invalid cleanup space calc on win32. 2015-10-20 15:50:00 +02:00
af3ffc8610 NOOP, re-indent 2015-10-20 15:49:59 +02:00
52e75f5a45 remove cruft 2015-10-20 15:49:59 +02:00
336b2eb9a4 rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.

Significant modification of LV2 GUI updating was required.

Still to be tested for feedback loop issues: AudioUnits
2015-10-20 09:07:58 -04:00
f1a6d7816d remove unused "copy modifier hint" 2015-10-20 11:12:36 +02:00
nick_m
9df1232feb Legatize::name () reflects its type. Fixes confusing undo record name. 2015-10-20 00:53:30 +11:00
nick_m
9511c9c86f Add tooltips to user config preferences. clean up combo ordering. 2015-10-20 00:53:30 +11:00
nick_m
4dcd22fadf Update ContrilList debug output. 2015-10-20 00:53:29 +11:00
nick_m
cc7de475f2 Amend last connit - don't use a bool to represent a double. 2015-10-20 00:53:28 +11:00
nick_m
ff2f934977 Fix incorrect initial point when recording toggled automation. 2015-10-20 00:53:28 +11:00
nick_m
ffed94d89b Automation - more toggled controller twiddling. 2015-10-20 00:53:28 +11:00
nick_m
1648000108 Automation - fix occasional inverted bool state after write. 2015-10-20 00:53:28 +11:00
nick_m
9c102fa8d2 Make automation record undo per pass rather than per touch. 2015-10-20 00:53:28 +11:00
nick_m
877b258c74 Toggled automation fixes.
- don't attempt to insert two points on toggle.
	- remove forced touch->write mode change on toggle
	- initial state still wrong, but works much better overall.
2015-10-20 00:53:27 +11:00
nick_m
17294ab9ec Make control point selection more consistent.
- disallow simultaneous events via ControlList::editor_add ()
	- clicking on an automation line selects the points that define it.
	- don't 'flash' a region selection when using mousedraw mode.
	- cp click selection resembles region selection.
	- region gain points respect snap modifier (a la automation points).
2015-10-20 00:53:27 +11:00
03df442d0e remove cruft 2015-10-19 15:44:46 +02:00
48f91c6ef4 Add Audio Tracks and Busses too. 2015-10-18 19:55:56 -07:00
0185c9f25a Added Midi Tracks View mode. 2015-10-18 18:13:16 -07:00
6ff50d2140 fix OS X system detection (amend 66704ee) 2015-10-18 23:19:52 +02:00
38efd580b2 libs/* changes use new AppleUtility Library 2015-10-18 23:03:13 +02:00
66704eefcb alternative new version of the AppleUtility library 2015-10-18 23:03:13 +02:00
f7e3117c3b Only display Trim for tracks that have Trim. On the way:
-fixed flip mode.
	-fixed no controlable for vpot or fader
2015-10-18 07:38:40 -07:00
André Nusser
a958770abd Remove all the now unused functions in the MidiModel class. 2015-10-17 22:12:55 -04:00
André Nusser
bd02a7f817 Add Transpose class that can be used by apply_midi_note_edit_op. 2015-10-17 22:12:55 -04:00
André Nusser
66f18914b2 Split transpose in MidiModel into two functions. 2015-10-17 22:12:54 -04:00
a5dcccae60 disable auto-return with external sync #6577 2015-10-18 02:03:40 +02:00
5461b50cdb Assign Global view to get back to Mixer. 2015-10-17 16:23:46 -07:00
f53dc5945e extend session-save dirty-flag logic
Snapshot and continue working on current session incorrectly marks 
the session as clean.
2015-10-16 20:54:15 +02:00
2c9666e0ee API to add system-specific file chooser shortcuts 2015-10-16 19:06:21 +02:00
a51ea6cf2e fix crash when creating subgroup-bus - fixes #6642
the actual issues is in the connection management:
bundle.cc:323: void ARDOUR::Bundle::connect(): Assertion `N == other->nchannels().n_total()' failed.

That could be resolved. However, combining tracks without panners will
almost never do what the user really wants, so this case has been 
disabled for now.
2015-10-15 17:47:02 +02:00
b00d75adf6 add safety checking when setting up DEBUG bits 2015-10-15 08:59:11 -04:00
159d23be9f fix deadlock when removing subgroup bus w/sends.
...and potentially other route removals that involve
processor changes.
2015-10-15 13:50:19 +02:00
79142a262e prepare better solution of Glib's << operator 2015-10-15 11:22:35 +02:00
8d46cc99fe Fix a problem where VST automation data wasn't getting written (if the adjustments were made from the plugin's own controls) 2015-10-14 14:54:27 +01:00
334cc37e1b Reduced delay in last commit/10 2015-10-14 05:55:10 -07:00
1f85691870 fix MCP ports hang on device change and multi-surface device reconnect. 2015-10-13 22:19:36 -07:00
53a28c230a mackie support omnibus patch
Fixes all kinds of miscellaneous issues with MCP. Also removes several theoretical pan modes, replace "Tracks"
pan mode with "Trim", and takes a tiny step towards view modes
2015-10-13 15:34:53 -04:00
2d27009410 fix registration of automation type enums 2015-10-13 15:33:39 -04:00
0043dc38a3 introduce separate-meters concept for Mackie.
Devices like the SSL Nucleus have meters displayed separately from their 55x2 display
2015-10-13 10:04:58 -04:00
3169ac0444 fix the design of Mackie XML state management 2015-10-13 07:33:27 -04:00
fbdb4c602e more corrections for mackie GUI layout 2015-10-13 07:33:27 -04:00
ef08cd6e4a move incorrectly packed touch sensitivity slider for Mackie GUI 2015-10-13 07:33:27 -04:00
6ec38e9193 remove last ofstream 2015-10-13 09:55:53 +02:00
8e83ca5753 Only flip if not already in desired state. Fixes fader jerk on banking. 2015-10-12 13:52:10 -07:00
1eb1391cfd expose terminal, rather than just physical, MIDI ports in Mackie GUI 2015-10-12 14:42:49 -04:00
d4e0e8e963 make MCP port buttons work 2015-10-12 13:36:22 -04:00
79113144ef Correct wrong value on LCD strip when fader is touched (fixs #6619 from Petr Vejsada) 2015-10-11 23:24:14 -07:00
796e404819 Don't use old session connections on MCP device change, Solves crash on device change. 2015-10-11 22:27:13 -07:00
104f43ad37 Fix MCP extension number and get master on right surface. 2015-10-11 21:37:04 -07:00
27f57cde9a fix crashes due to glib ignored EDEADLK.
Taking a readlock after a writelock in the same thread should result
in a deadlock, yet pthread on Linux returns EDEADLK and continues.
glib-2.42.0 ignores EDEADLK and assumes the lock was taken. Releasing
the lock later causes issues: "Calling g_rw_lock_writer_unlock() on a 
lock that is not held by the current thread leads to undefined behaviour."

The issue at hand: 
 AudioStreamView::redisplay_track()
 -> foreach_region()                       #<< WriteLock
 -> add_region_view()
 ...
 -> AudioRegionView::create_one_wave()
 -> RegionView::update_coverage_frames 
 -> Playlist::top_unmuted_region_at()      #<< ReadLock

All current users of Playlist::foreach_region() are in the GUI
and AFAICT read-only (display regions, update visuals)
2015-10-12 02:11:04 +02:00
f8875df18f Several changes to Mackie support. Breaks existing Mackie state on disk but not
in any way that causes problems, just loss of pre-existing connectivity.

1. retain state of current device (and serialize to disk) when switching
devices, and restore that state when switching back to it.
2. fix port and surfacenaming.
3. fix bundle assembly so that all ports (for multi-surface combos) work.
4. rationalize master position numbering
5. add small sleep before starting device handshake after reconnection. This
is ugly but seems to be necessary, unfortunately.
2015-10-11 12:01:27 -04:00
6faec91dd9 Force Flip normal before Bank (fixes #6630) 2015-10-10 19:59:29 -07:00
7535947eb1 Display parameter that matches mode. 2015-10-10 19:40:28 -07:00
965b135842 numerous changes to Mackie support, generally offering better robustness 2015-10-10 17:14:30 -04:00
7c58b4de5f coreaudio: reset freewheeling after export
fixes lively with session-fadeout
2015-10-10 02:42:13 +02:00
9b5a071c33 varied and wide changes to get input and output combos closer to working 2015-10-09 14:01:22 -04:00
7e771c9fdc move location where port handling stops during Mackie::Surface destructor 2015-10-09 11:12:28 -04:00
6acd51d48e NOOP: whitespace/indent fix 2015-10-09 11:11:36 -04:00
03018aeefb add TrimAutomation to list of possible pot parameters for routes 2015-10-09 11:11:15 -04:00
d700576171 remove unused and useless stuff relating to bundles inside Mackie::Strip
What was someone (Paul? John ?) thinking?
2015-10-09 11:10:44 -04:00
9c7139e505 set up control_by_parameter map in a Mackie::Strip so that subsequent array-syntax lookup does not crash 2015-10-09 11:09:47 -04:00
f74eab854a fix behaviour of AsyncMIDIPort so that large amounts of data are handled well.
Increased the size of the FIFO that acts as the intermediate between writers and the MidiBuffer. Changed
implementation of ::write() to notice if MidiBuffer::push_back() fails, and then just leave data queued
for subsequent calls to ::flush_output_fifo().

Note: the logic here will be broken by invalid events/data, which ALSO cause MidiBuffer::push_back() to
return false. That needs fixing
2015-10-09 11:08:33 -04:00
cdd415cdaf tweaks to MidiBuffer::push_back() variants
1. there's no reason to make the same logic checks in both the Event and 3-arg variants when the Event
version simply calls the 3-arg variant

2. the Event version returned true under all conditions, even if the 3-arg part had failed to push
the Event data into the buffer. It now returns true or false, as intended.

3. remove debug output if a MidiBuffer is full during ::push_back(). The cases where this matters
emit output of their own, or simply remain silent and queue data later
2015-10-09 11:05:55 -04:00
268d53f502 remove unused PortManager::port_name_prefix_is_unique() method 2015-10-09 07:39:08 -04:00
6bcbace73a add device-info specific component to Mackie GUI to allow direct wiring of MIDI ports (non-functional) 2015-10-08 21:55:38 -04:00
8338fd8ac6 add DeviceChanged signal to MCP and make surface lock mutable for use in const methods.
Also add nth_surface() API to MackieControlProtocol
2015-10-08 21:55:38 -04:00
36088b53b1 add new API to access AsyncMIDIPort members of Mackie Surface port 2015-10-08 21:55:38 -04:00
bda0ba173c for an ipMIDI surface, make the GSource used for input hold the only reference on the GUIChannel. 2015-10-08 21:55:37 -04:00
7e10c21468 make Mackie::Surface keep a reference to the input source+channel and clean up in destructor 2015-10-08 21:55:37 -04:00
ce03b02a79 in a CrossThread object, ensure destruction of the channel and source used on Posix
The source holds a reference to the channel; both must be unref'ed/destroyed in order to
fully clean up resources
2015-10-08 21:55:37 -04:00
fcc7595882 remove declaration of undefined (and necessarily unused) method from PortManager 2015-10-08 21:55:37 -04:00
33fe33f268 fix initialization sequence for ipMIDI Mackie surfaces 2015-10-08 15:28:37 -04:00
0c448c387b fix crash when switching from regular MIDI to ipMIDI Mackie surface 2015-10-08 15:28:21 -04:00
d3efef7f5c fix logic to reshow strip "name" after a message display 2015-10-08 14:58:28 -04:00
02181174c3 remove debugging display of message on MCP device 2015-10-08 14:51:27 -04:00
49be513bfa fix rebase conflicts left over after pull 2015-10-08 13:40:00 -04:00
0cb1c7b58c lots of changes to try to get the Mackie Control display be more useful and usable 2015-10-08 12:51:44 -04:00
4677d047a5 more mackie strip redisplay renames, and add a global block to redisplays\n 2015-10-08 12:51:18 -04:00
0f978a90f4 subtle rework/rename of per-strip revert-to-vpot-display code 2015-10-08 12:50:05 -04:00
4a1790b75e remove unused per-surface button timer 2015-10-08 12:50:05 -04:00
ffe06f7d3e fix region "valid-transient" property 2015-10-08 18:24:45 +02:00
014f8a582f windows compatible paths for analysis 2015-10-08 18:21:07 +02:00
ef169ce2ff fix Vamp Onset Detector. 2015-10-08 16:18:39 +02:00
4e39f13991 fix return value for transient load 2015-10-08 15:26:38 +02:00
fc6b965ad0 renice DLL info messages 2015-10-08 13:43:32 +02:00
d1d5f7f311 use g_open for DLL arch test 2015-10-08 13:43:32 +02:00
b5ea1b23b4 detect VST arch only during discovery (not scan) 2015-10-08 13:43:31 +02:00
6899bd7c15 Add Trim to Mackie controls. 2015-10-07 21:36:16 -07:00
c9658134ce add button time and explicit bank switching to MCP support 2015-10-07 15:13:03 -04:00
bcbb14f581 Added use click emphasis toggle (libs/ardour) 2015-10-07 19:34:39 +02:00
ce9b271a92 track Mackie MIDI port connection status as primary trigger for handshake with device 2015-10-07 13:17:49 -04:00
7675739f45 use C++ for PortManager::make_port_name_relative() 2015-10-07 13:17:49 -04:00
14932d1b86 allow to load huge VST plugin states -fixes #6623
by default libxml has a XML_MAX_TEXT_LENGTH of 10M
with base64 encoding that allows at most 2.5MB state.

set XML_PARSE_HUGE to read large sessions
2015-10-07 14:36:32 +02:00
44f1f0caf4 fix exclusive solo group-override 2015-10-07 14:21:30 +02:00
96b45d4909 only subdivide plugin-cycle when automation is playing
PluginInsert::automation_run() subdivides plugin-run on every
control-port automation event (without splitting the process cycle).

libevoral has no automation-control context, hence this function
must be implemented by Automatable.
2015-10-07 14:21:29 +02:00
5fd4ee3ef1 Fix handling of Sysex messages with WinMME midi driver 2015-10-07 21:48:56 +10:00
2e8fb9207e print VST blacklist filename (for good measure) 2015-10-07 03:28:02 +02:00
477d1f3f42 implement solo group override 2015-10-07 01:44:02 +02:00
87026c871a add missing include 2015-10-06 21:32:55 +02:00
2237389112 renice code. RAII rocks. 2015-10-06 20:18:02 +02:00
e78f0fe526 CPPUNIT workaround for mingw/wine/windows 2015-10-06 20:10:42 +02:00
e73fa8413e add a "reset all solo state" safeguard 2015-10-06 20:05:38 +02:00
ce30132a89 fix initial AFL/PFL state after session-load 2015-10-06 19:10:25 +02:00
83d8db3925 add missing semicolon 2015-10-06 18:55:49 +02:00
2af78143c1 more debugging for MIDI input via WinMME 2015-10-06 12:42:01 -04:00
ef35ee5d43 detect windows DLL architecture 2015-10-06 18:16:12 +02:00
96720089cf remove newly unused code 2015-10-06 18:16:12 +02:00
0cfb898802 propagate solo/iso when disconnecting ports. 2015-10-06 18:16:12 +02:00
89156be67a add more debugging to portaudio/MME MIDI backend 2015-10-06 11:01:58 -04:00
b1609b53bd more solo propagation fixes.
handle cases  Track(s) -> Bus1 -> Bus2
2015-10-06 14:14:44 +02:00
139cb23ab9 fix implicit mute display 2015-10-06 12:21:40 +02:00
fb2e8387dd "Solo Lock" only locks explicit solo (not implicit).
fixes issue:

Track -> Bus
1) solo track -> implicit Bus solo 
2) Solo-Lock Bus
3) un-solo track -> Bus is stuck w/implicit solo on
2015-10-06 12:21:40 +02:00
f04b95c42e Solo-Isolate has no effect on solo propagation.
'Isolate' means that when another track is solo'd the isolated
track won't mute.
2015-10-06 12:21:40 +02:00
4ebc6ef0b4 Fix WinMME midi driver shutdown with sysex enabled
midiInReset triggers the sysex callback to tell the application that it has
finished with the buffer. Calling midiInAddBuffer results in an infinite loop
so just return during shutdown.
2015-10-06 13:29:57 +10:00
1c0265e27c Include button number in canvas button press/release debug info 2015-10-06 13:29:57 +10:00
34d9b2148e Remove an unnecessary boolean argument in jack utils
Specify latency in JackCommandLineOptions instead
2015-10-06 13:29:57 +10:00
3eb4b43fa6 Initialize AudioEngine::last_backend_error() to the default error string
Currently the last backend error string is only set when calling
AudioBackend::start. Errors that occur when calling other AudioBackend methods
like AudioBackend::set_buffer_size do not set the last backend error string.
So until all the required AudioBackend methods return an ErrorCode and
last_backend_error() can be removed just set it to a default string.

Until all errors that occur are correctly indicated by returning an error code
there will still be situations where last_backend_error() is not indicative of
the true error. For instance AudioEngine::start is called and it fails but
returns a valid error code so last_backend_error() is set, then some other
engine/backend method is called that fails and as last_backend_error is not
set the GUI will display the incorrect error message.
2015-10-06 13:29:57 +10:00
da46df6225 Show DSP/CPU load of 0.0% when AudioEngine isn't running 2015-10-06 13:29:57 +10:00
b99d833028 fix implicit solo on disconnect - fixes #6308 2015-10-06 02:53:06 +02:00
09bad018f4 forward "disconnect all", partial fix for #6308 2015-10-06 01:28:33 +02:00
53c14f86c9 fix typo in prev. commit 2015-10-05 22:42:01 +02:00
168212b864 fix typo 2015-10-05 22:37:41 +02:00
2397429e99 use quotes for in-tree pbd/glib wrapper include 2015-10-05 22:15:18 +02:00
dc36b063bf remove unused fstream includes 2015-10-05 22:15:18 +02:00
97bd6db2b7 remove i/ofstream from libardour
except: 
 * audio-unit (ifstream is known to work on OSX)
 * evoral curve algorithm debugger
 * cycle-timer debug code
 * export_handler's CDMarker  -> TODO
2015-10-05 22:15:17 +02:00
b9c8814959 replace i/ofstream for plugin statues 2015-10-05 22:15:17 +02:00
c3b2cc46c5 remove unused API (and ifstream) 2015-10-05 22:15:17 +02:00
eb4c9b022a try enabling windows MME MIDI sysex support 2015-10-05 12:24:15 -04:00
33d614359a only use HUI heartbeat with HUI devices 2015-10-05 12:24:15 -04:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
e11ba7b79d SiP and "solo overrides mutes" tweak:
Only Explicit solos should override mutes.
2015-10-05 14:19:32 +02:00
c4a3291b80 allow grouped AFL/PFL with excl. solo 2015-10-05 00:27:48 +02:00
58d59177bb fix various stuck-solo cases:
* solo groups
* cancel-solo
* SIP <> AFL/PFL changes

The optimized plural-form route_solo_changed() relied on the false
premise that solo-groups and port-connections are disjoint sets.

-=-

e.g. "cancel all solo" calls set_solo(get_routes(), false);
Since All routes are affected, the "non_solo_change" set is empty, and
no changes were propagated up/downstream.

Routes that indirectly change state as group-members, wrongly end up in
the "non_solo_change" list instead of the "solo_change" list.

If a route feeds another in the same group, no changes were propagated.
2015-10-05 00:08:55 +02:00
e21e7f7040 fix AFL/PFL/SIP "stuck solo" - fixes #5803
monitor_send are only active when listening (AFL, PFL).
don't activate them when re-configuring processors.
2015-10-04 23:28:08 +02:00
4178db5f63 globally remove all trailing whitespace from .cpp and .hpp files missed by previous commit 2015-10-04 15:11:15 -04: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
297e80e020 attempt to stop transport, finish butler work, and close all files as part of Session > Cleanup 2015-10-04 14:18:04 -04:00
e63de172d5 NOOP: delete trailing whitespace 2015-10-04 14:18:04 -04:00
b3ace2e4c8 namespace fix. 2015-10-04 18:43:44 +02:00
2fbed9e41f replace std::ifstream with g_fopen for portability 2015-10-04 18:23:21 +02:00
ac814da4be correct error message 2015-10-04 17:53:02 +02:00
c68736bc02 Change a few instances of 'stat()' to use 'g_stat()' (for UTF8 compatibility on Windows) 2015-10-04 14:18:54 +01:00
cf33204e35 always use session rt-event to un/set solo 2015-10-04 02:04:59 +02:00
a333edcb28 Initialize variable every loop so MCP devices don't accumulate too. 2015-10-03 13:15:18 -07:00
4b69495f82 Initialize variable every loop so MCP profiles don't accumulate. 2015-10-03 13:06:34 -07:00
2dddf6504b NOOP: delete trailing whitespace 2015-10-03 14:03:29 -04:00
1e5672de98 reset IP MIDI port when deleting a mackie surface port 2015-10-03 13:51:17 -04:00
9d7b5f6df9 reset shared_ptr to master surface when clearing surfaces, to ensure Surface destructor is called 2015-10-03 13:50:59 -04:00
7d2dd9db0c Click: Normalized then dropped by 6dB
Applied gain to both emph click and default click using sox.
This results in louder click sound by default and user is
able to boost click to 0dBFS using the fader on the pref pane.

Signed-off-by: Damien Zammit <damien@zamaudio.com>
2015-10-03 13:14:25 -04:00
4403ce4bd4 make a start on providing direct choice of MIDI ports where an MCP device can be reached 2015-10-03 13:13:58 -04:00
29c484cd95 NOOP: reformat indentation 2015-10-03 13:13:58 -04:00
91d3aabf53 NOOP: reformat indentation 2015-10-03 13:13:58 -04:00
76398911d4 more code-control when laying out Mackie Control GUI panel 2015-10-03 13:13:58 -04:00
6bf0d4f627 add basic support for HUI heartbeat, only used for HUI devices 2015-10-03 13:13:58 -04:00
4ef45aacc1 add DeviceType specifier for mackie devices.
Incomplete, because we need a way to handle multiple devices of different types
2015-10-03 13:13:58 -04:00
13765d41e3 NOOP: reformat indentation 2015-10-03 13:13:58 -04:00
c8448cb0dd add device type to Mackie device info 2015-10-03 13:13:57 -04:00
53c47e0ccd add support to display and set key aliases in mackie GUI 2015-10-03 13:13:57 -04:00
6357770588 additional check for DSP falloff. 2015-10-03 17:46:55 +02:00
20038fedf4 less verbose unit-tests 2015-10-03 17:46:39 +02:00
01105dc971 DSP load fall-off from 100%.
get_dsp_load_unbound() will return large values >100% for testing, 
but actual fall-off is from 100%.
2015-10-03 17:46:19 +02:00