13
0
Commit Graph

14479 Commits

Author SHA1 Message Date
863a6ade9e
Prevent endless read of silent files
This fixes issues with analysis and archiving that rely on a readable
to return 0.

Note however that createSilent() uses max_samplecnt (INT64_MAX) by
default. This relies on a region setting the length of its missing
source.
2018-12-05 16:04:29 +01:00
5f3672eef0
Use atomic read for an atomic variable
This probably no real world effect since there is a mutex in the
loop that acts as a memory barrier.
2018-12-04 22:12:43 +01:00
aa8128cdf5
Fix logic-error in d1cf2163: hide info for optimized builds 2018-12-04 17:06:13 +01:00
d1cf21634f
Special case Mixbus Chanstrip for load calculation
These processors don't have a UI, so their load stats are not easily
visible. The stats can still be queried via Lua API or DSP-load
overview window, so we retain this for debug builds.
2018-12-03 22:43:02 +01:00
b285559767
Consistent AU factory Preset IDs
Use AU's preset->presetNumber as identifier since std::map are sorted
this also indirectly sorts presets by preset-number. (user presets
start with a '/' and are listed first, sorted by name).

Since Presets are now identified by URI on session load (53a0199a0)
and AU user-presets can added/be removed (since ae4604a24b), simple
sequential numbering is no longer an option.
2018-12-03 20:45:06 +01:00
6877ac820b
Don't invalidate AU preset on load
This works around async parameter-changed signal emission when loading
an AU preset. A simple timeout is used to delay making the preset
as modified.
2018-12-02 02:04:21 +01:00
ae4604a24b
Implement AU plugin-preset removal 2018-12-02 01:37:33 +01:00
53a0199a06
Restore actual plugin-preset on session-load
This checks if the preset is actually available on the given system
and also sets the user-flag correctly.
2018-12-02 01:36:32 +01:00
3c7dea43af
Towards fixing AU preset invalidation
This is a step in the right direction: first load the preset and
only if preset-loading was successful mark it as loaded.

This still does not properly unset "parameter_changed_since_last_preset".
AU signals "kAudioUnitEvent_ParameterValueChange" later in the event-loop.
2018-12-02 00:26:57 +01:00
d53af10c92
AU: mark preset dirty when parameter changes 2018-12-01 05:36:33 +01:00
b66726fdc1
Fix AU preset handling
load_property_list() takes a file-path (not URI). Actually it's not
clear why we've ever used a `file:///` URI internally.
2018-12-01 05:33:26 +01:00
f443626daa
Fix a tiny memory leak, add_instant_xml() copies the node 2018-11-29 14:25:52 +01:00
fc24b9f0b7
Fix uninitialized variable 2018-11-29 02:10:08 +01:00
a22a501537
NO-OP: whitespace 2018-11-29 02:07:29 +01:00
1759d1c9c9
Fix a tiny memory-leak when calling vfork 2018-11-29 02:06:42 +01:00
6fc2804414
Disk I/O: only allocate midi-buffer if needed
This fixes a memory-leak (_midi_buf was allocated in DiskIOProc
but only delete in DiskReader). Also skip midi-refill early on
2018-11-29 02:05:26 +01:00
dfbda9e0f6
Fix a potential memory-corruption
Disk-writer run() can concurrently use the ringbuffer after it was
free()ed by the butler thread.
2018-11-28 21:41:30 +01:00
076e9fddd4
Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper

Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
81857a947c
Consolidate ambiguous engine API calls
available(), connected(), running() were ill-defined and
used interchangeably.
2018-11-28 15:24:47 +01:00
5531a440c9
Fix stuck connection block when template load fails.
Session::new_route_from_template() unconditionally calls
IO::disable_connecting(), and needs to be reverted likewise
(no RAII here).
2018-11-26 21:45:06 +01:00
dce81aecc5
Prevent deadlock when removing routes w/o engine 2018-11-26 03:31:02 +01:00
ae2a6175cc
Don't allow to add/remove monitor-section w/o engine
Adding/removing the Monitor section changes port-connections,
a port-engine is needed to establish connections.

Ideally we'd allow this and queue for connection changes. This
will however require deep changes.

Also toggling the monitor-section on/off/on w/o engine can later
result in failure to register ports. Due to lack of engine-signals
not all shared_ptr<> port references are dropped.
2018-11-26 03:15:14 +01:00
13c984c216
Fix various issues when the engine disconnects:
Previously Port::PortDrop was never handled.
The signal was disconnected directly when the connection
is re-used by Port::PortSignalDrop.

Ports::drop() was not called when the engine was stopped
or disconnected, and port-handles were not invalidated.

This lead to crashes whenever a port-related operation was performed
while the engine was stopped. e.g. adding/removing tracks or plugins
(latency recompute, notify port-engine) and various other operations.
2018-11-26 02:39:55 +01:00
cf98a75558
Do not allocate MIDI buffers for signal analysis
At this point in time MIDI buffers are vastly over-sized.
They include VST and LV2 event structure. This added about a MB per
plugin for no benefit.
2018-11-25 17:43:15 +01:00
5273c636ab
Fix Linux/PPC64 runtime
This fixes an error while loading shared libraries: libardour.so

  R_PPC64_ADDR32 reloc at 0x... for symbol `' out of range

Treating a local as an immediate value in asm code makes the library
non-relocatable.
2018-11-25 16:57:51 +01:00
3fd8dad9d6
Allow compilation with winpthreads -- closes #7691 2018-11-25 16:51:24 +01:00
01e0472481 Auditioner: check if removing synth succeeds
remove_processor() also calls drop_references, when successful.
2018-11-24 02:01:16 +01:00
948c5d0706 Handle some midnam edge-cases
Whitespace between XML nodes can result in "text" children.
Those need to be skipped in the patch-name list.
2018-11-23 22:43:26 +01:00
771ddcc86f NO-OP: whitespace and re-organization 2018-11-23 22:09:13 +01:00
2e3e183204 Load audition synth on demand
This saves some memory (gmsynth loads a 30MB soundfont), and also
re-initializes the synth every time to gm defaults in case some
.mid changes patches or parameters.
2018-11-23 22:00:04 +01:00
8c4c97d1e2 Update Fluidsynth to v2.0.2 2018-11-23 16:05:19 +01:00
afee22d5fa Add/remove source(s) in our MSVC project (audiographer) 2018-11-23 07:27:32 +00:00
b7317eb1b3 Add/remove source(s) in our MSVC project (libardour) 2018-11-23 07:25:54 +00:00
04fe6d6fb4 Amend prev. commit, actually remove (1.0 - x) as was documented 2018-11-22 21:05:03 +01:00
7ed37d67ff Backwards compatible sndfile support
SFC_SET_COMPRESSION_LEVEL was only added in 2012 and only available in
libsndfile 1.0.26 or later.
2018-11-22 20:36:41 +01:00
f795462100 Save LV2 Port Property values locally
This keeps track of lv2:Parameter properties modified with Port:Set,
currently file-paths.
2018-11-22 14:58:44 +01:00
9326ced760 Allow to revert export-format from disk
This allows to restore ProfileManager's ExportFormatSpec without
re-instantiating the ProfileManager.
2018-11-21 23:14:52 +01:00
3d366053e2 Set encoder quality for existing ExportFormatSpecs 2018-11-21 21:19:01 +01:00
d6a92dc521 Include session-metadata in external/ffmpeg export 2018-11-21 00:03:36 +01:00
d169864b5b Prepare session-metadata export to external command 2018-11-20 23:56:12 +01:00
7b709b3cea Implement vorbis encoder quality
This also prepares for codec-quality defaults, but
ExportFormatSpecification does not yet set those for previously unset
or new formats/presets.
2018-11-20 03:21:17 +01:00
27e0e78e1d Implement FFMPEG/MP3 export-format spec and profile 2018-11-20 00:21:01 +01:00
5fa05b403c Prepare export-format codec-quality setting 2018-11-19 22:26:16 +01:00
d18b247a05 Fix Windows and Mac Builds
* missing include for locale_to_utf8 (amend 4c6ff5f7e7)
* avoid void* arithemtic (amend 103ef2ba)
2018-11-19 12:54:07 +01:00
df72e1ba4f Initial backend support for external export encoder
This adds an experimental pipe to ffmpeg to encode mp3. Currently
quality is hardcoded and various aspects remain to be implemented.
However, it is sufficient for initial testing.
2018-11-19 05:21:17 +01:00
e4cbd5115e Add Pipe-to-command export backend
A first step towards allowing external encoders without intermediate
temporary file.
2018-11-19 03:30:40 +01:00
4c6ff5f7e7 Move video-tool paths to libardour (1/2)
This is in preparation to allow calling ffmpeg, or similar (sox, lame,..)
directly from libardour.
2018-11-19 03:18:48 +01:00
103ef2ba08 Add API to write raw data to child processes. 2018-11-19 02:26:43 +01:00
e14694bfa3 Update classkeys to match new total LuaSignal count (windows only) 2018-11-17 00:12:43 +01:00
9b2612f686 Make foldback bus match foldback sends namewise
to avoid confusion with listener sends or monitor bus
2018-11-12 22:30:32 -08:00
f27ca29d6c Changed send/deliver role "Personal" to "Foldback" so bus type can match 2018-11-12 22:30:32 -08:00
e9013c0f99 OSC: New personal monitor buses no longer need to be hidden 2018-11-12 22:30:32 -08:00
1b2b3452cb OSC: logic thinko fix 2018-11-12 22:30:32 -08:00
Jan Lentfer
fb1fe5ce30 LCXL: some final fixes 2018-11-11 19:52:37 +01:00
894145c527 OSC: specify which stiripable type we want 2018-11-07 17:00:16 -08:00
80fd215a5c get_stripables and get_routelist are now presentationinfo aware 2018-11-07 17:00:16 -08:00
41abf75077 Consolidate VST Plugin Info
This unifies common PluginManager VST code to construct *VSTPluginInfo
and also provides a dedicated is_instrument() method for VST plugins.
2018-11-07 23:37:10 +01:00
bc83e6f753 Force VST category to be "Instrument" for instruments.
This way it is picked up by the default PluginInfo::is_instrument()
method.
2018-11-07 23:05:54 +01:00
0b9c648e49 Honor effFlagsIsSynth and always assume those VSTs are instruments
This will incorrectly list some vocders or reaktor and the likes of
plugins with audio + midi input as Instruments IFF they also announce
effFlagsIsSynth flag.

NB. this is a first step only. we still need to override PluginInfo
2018-11-07 21:39:52 +01:00
2991afaf0d Add support for recording to .flac 2018-11-07 19:21:39 +01:00
1ca76c4e18 NO-OP: whitespace 2018-11-07 19:21:10 +01:00
197a1e4446 Close files at rec-stop (re-open as needed)
This is in preparation to allow recording .flac files which are either
read or write not cannot be in read/write mode
2018-11-07 19:13:03 +01:00
8a4518d76f Remove C++11'ism
While gnu-gcc had `std::map:at const` as non-standard extension
it is n/a for older gcc on OSX.

Surprisingly this const& p() const; performs a tad better as well, likely
due to different exception handling.

Perhaps it is also worth investigating boost::flat_map<> as replacement
for std::map<>, here. Our common case is just a single entry, so using
a std::vector emulated mapping might help.
2018-11-04 15:37:46 +01:00
c9bf89392f Fix AudioUnit, missing const in cbef72b8a1 2018-11-04 04:10:07 +01:00
8d6d0b3232 Prefer const references for Pin/Channel maps
Another micro-optmization shaving off some ten microseconds for every
plugin. Also copying maps isn't RT-safe.

This may however cause issue if const map references can change
while a plugin is running.
2018-11-04 03:25:36 +01:00
e4c7cb1e75 Plugin pin-mapping micro-optimization
Prefer std::map::at() over std::map::operator[] to allow const maps.
For debug builds, there should probably some try{} catch{} along with this.
2018-11-04 02:21:53 +01:00
cbef72b8a1 Optimize Plugin connect & run API, use const maps 2018-11-04 02:16:34 +01:00
51e33796f1 Optimize Parameter Control Loop
For plugins with 10000 Control Inputs, dynamic_pointer_cast<> overhead
is significant, here ~2msec (~0.2usec per cast, optimized build, i7-5600U,
2.60GHz)
2018-11-04 02:16:34 +01:00
6bd583803e rename TransportMasterManager::init() to ::set_default_configuration() to make its purpose more clear 2018-11-02 21:52:00 -04:00
bf2d9e7a34 fix crash during first-run configuration of the application, caused by using an incomplete TransportMasterManager 2018-11-02 21:52:00 -04:00
Johannes Mueller
fe318c0cd5 Create sidechain ports when created from template (#0007680)
When a route with a sidechain is created from a template or by route
duplication the number of ports of the sidechain are set according to the
XMLNode defining the sidechain. Then the names are set according to the name of
the newly created route.

Thus all the pin connections defined in the template are replicated in the
newly created route.
2018-11-01 22:17:01 +01:00
Johannes Mueller
732fd75f9b Update names of sidechains.
When a PluginInsert is created it does not have an owner right away. That's why
a we need to set the sidechains name once the owner is known, in order to
include owner's name into the name.

Furthermore we need to follow renames of the owner.
2018-11-01 18:53:27 +01:00
694c5fcfa6 Skip VST version check to detect MIDI inputs
Some plugins return 0 from effGetVstVersion and are hence not detected
as instruments. e.g. VeeSeeVSTRack (VCV). This may also explain why MIDI
port of some other VSTs are not exposed.

Most VST2.4 return 2400, so checking  [effGetVstVersion] >=2 (and not 2000)
was incorrect to begin with.
2018-11-01 15:27:08 +01:00
fd832d9d1a Add option to limit automatable control parmaters
VCVRack VST currently exposes 9999 automatable-control parmaters.
This slows down various GUI dropdown lists and dialogs.
(even worse: those parameters are not mapped to anything by default).

This change allows to limit automatable parameters to a reasonable number,
without loosing state of already automated parameters in existing sessions.
2018-10-31 23:44:04 +01:00
befa339d4b Remove duplicate call
Automatable::add_control() already does insert a given parameter
to the _can_automate_list list if it's automatable.
2018-10-31 23:44:04 +01:00
f7b67501a9 OSC: Allow non-cue surfaces to create personal send and ListenBus 2018-10-30 12:15:28 -07:00
be5a89aa22 Add ListenBus to stripable types 2018-10-30 12:15:28 -07:00
5bd9bf868f Safe-guard non-rt-safe sidechain operations
This is required by 7d8b93ad for showing error when actively recording.
It also prevents other UIs (OSC, Lua,..) to change re-configuring
sidechain ports/plugins while recording.
2018-10-29 21:52:47 +01:00
383bd2526c Fix incorrect VST callback fall-though (effective NOOP) 2018-10-27 10:33:58 +02:00
c1e68c91b5 Fix another compiler warning 2018-10-27 10:33:07 +02:00
c98fc1099d Fix some Wimplicit-fallthrough
A "fall through" comment is most portable way to indicate
"no break, fallthru" cases.

 * __attribute__ ((fallthrough))  // is not portable
 * [[fallthrough]]; // is C++17
2018-10-26 14:53:44 +02:00
08d205c533 Fix some compiler warnings (exception catches) 2018-10-26 14:25:55 +02:00
7c3fd2fe79 Glib throws a const FileError exception 2018-10-26 13:40:03 +02:00
770a1a8a36 Fix Lua bindings (music-time, mapping) 2018-10-26 13:38:28 +02:00
5599cdb911 Fix race-condition/deadlock, plugin-copy while rolling
lili93's session (#ardour) triggered this w/jackd 512fpp:
Drag/Drop copy a latent plugin from one track to another while rolling.
The GUI-thread as well as the auto-connect thread concurrently call
jack_recompute_total_latencies(). The auto-connect thread holds
a process lock while doing so. The GUI does not use any mutexes.
This randomly deadlocks in libjack.

backtrace: https://pastebin.com/6m3KGhWS
2018-10-25 02:00:08 +02:00
d53f49acf4 Fix typo in binding, amend 9bbbc7fbe 2018-10-24 00:16:05 +02:00
c1626bee39 Add some missing link libs to MSVC zita-convolver 2018-10-23 09:55:31 +01:00
4e4c6e7d1e Fix an edge-case in Dummy backend's random generator
INT_MAX == 2^31 is not a valid random seed for this LCG.
2018-10-22 15:46:59 +02:00
4e1464e70f Sort VST factory presets
This is more of a workaround than a fix. Simply by forcing the
URI to be sortable (VST-user presets are sorted at the end).


This eventually needs a deeper cleanup and API consolidation

PluginInfo::get_presets(bool) returns an ordered std::vector.
However this API is only used in a few cases where the plugin is
not instantiated. PluginInfo::get_presets(bool).

The problem is Plugin::get_presets(). The method returns
information that was previously cached by Plugin::find_presets() in
std::map<URI, ...>
2018-10-22 15:46:59 +02:00
947f6c78b2 Remaining changes needed to build zita-convolver with MSVC 2018-10-22 08:56:22 +01:00
16927d747f Add MSVC support for building the 'zita-convolver' library (which is now needed by libardour) 2018-10-22 08:53:20 +01:00
5003bef0e3 Accommodate newly introduced source(s) in our MSVC project (fluidsynth) 2018-10-22 08:46:59 +01:00
504ba49c6d Potential fix for lost VST MIDI events
Ardour's VST MIDI buffer API does not yet implement offsets and limits.
When a cycle is split, the same midi-buffer is used for all sub-divisions
leading to duplicate, offset, events.
2018-10-21 20:48:11 +02:00
1229d50e45 MSVC compatibility for zita-convolver 2018-10-21 17:02:14 +02:00
Christopher Arndt
47d341434e Avoid use of 'std::to_string
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2018-10-21 01:08:09 +02:00
Christopher Arndt
8e25b4d193 Add plugin version and parameter count to VST user presets
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2018-10-21 01:08:09 +02:00
83a0b1e3a8 Personal monitor now saves and restores 2018-10-19 16:59:44 -07:00
4c02780262 Lua bindings for convolution DSP 2018-10-20 00:24:38 +02:00
087b8d7f33 Implement basic libardour convolution DSP 2018-10-20 00:24:38 +02:00
fec787c8f4 zita-convolver windows/mingw build fix
- semaphore is available,
- pthread_t is not a pointer type (but here it's not used anyway)
2018-10-20 00:24:38 +02:00
8e78827deb NO-OP: clang-format whitespace 2018-10-20 00:24:38 +02:00
876e780e4d zita-convolver: add namespace & visibility, remove global externs 2018-10-20 00:24:38 +02:00
e554d1fad5 Add upstream libzita-convolver 4.0.3 2018-10-20 00:24:38 +02:00
c6955d4994 Allow Lua DSP processors to report latency 2018-10-20 00:24:38 +02:00
777fe3c68f Add personal monitor sends 2018-10-19 08:51:29 -07:00
070f370e40 Fix copy/edit in e047b01aa2 2018-10-18 15:07:45 +02:00
897258f5f1 Fix scalar initialization of shared_ptr<>. 2018-10-18 04:15:47 +02:00
2de7ee24a8 Fluidsynth 2.0 uses anonymous unions (added in c11, or gnu99) 2018-10-18 04:09:25 +02:00
Andreas Müller
5b03c41f6c Follow fluidsynth's API changes introduced with 2.0.0
Updated patch from Andreas Müller <schnitzeltony@gmail.com>
2018-10-18 01:43:43 +02:00
abf7905d5f Update Fluidsynth to 2.0.1 2018-10-18 01:43:43 +02:00
5b280463ce Noop: fix white space 2018-10-17 16:25:49 -07:00
5e21b6633d Option to hide send if aux is hidden 2018-10-17 15:59:00 -07:00
Andreas Müller
d2aa57af3b Prevent excessive meter redraws for inactive meters at zero II
Same as be826f3635

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
2018-10-17 22:35:29 +02:00
0e55f33f38 correct comment 2018-10-17 14:13:52 -04:00
e047b01aa2 add new API for retrieving port flags from backend 2018-10-17 14:11:37 -04:00
70c0e34c4d when calling Session::engine_halted() after a user-driven engine stop, make sure Engine::running() will be false 2018-10-17 13:15:52 -04:00
Jan Lentfer
05d3539591 LCXL: complete overhaul and Mixbus support 2018-10-17 15:14:59 +02:00
Térence Clastres
a33a5cdeaf LCXL: Assign one callback function per Knob/Fader 2018-10-17 15:14:59 +02:00
1b7cb8aec4 OSC: personal monitor can hide the aux bus 2018-10-16 13:56:52 -07:00
87ab15c862 OSC: personal monitor send hidden follows aux hidden 2018-10-16 13:56:52 -07:00
8160fd1348 OSC: personal monitor should only send signal present on change 2018-10-16 13:56:52 -07:00
5e27b6de2f indentation fix 2018-10-15 16:38:21 -04:00
f7f5a096d5 #include tidy-up 2018-10-15 16:38:07 -04:00
e31bae4d09 Remove a #include and substitute a forward declaration (to simplify and speed up compilation) 2018-10-15 10:21:45 +01:00
20cd325f4e Adapt some MSVC projects to accommodate the changes to 'ptformat' library 2018-10-15 10:19:26 +01:00
b35283caa1 OSC: allow personal monitor to add a send. 2018-10-14 21:20:57 -07:00
8ed33f1bc7 remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
d7fca7c828 fix mixup with previous commit 2018-10-14 21:22:39 -04:00
0cf27fd2cd fix several inter-related problems with libptformat 2018-10-14 20:35:29 -04:00
a5a5ba1ace Clarify where the file 'ptfformat.h' can be found 2018-10-13 13:49:50 +01:00
8d3312990c Accommodate newly introduced source(s) in our MSVC project (libardour) 2018-10-13 13:46:30 +01:00
0e6d88f39a PT import: Fix circular dependency with libptformat <-> libardour 2018-10-12 19:09:40 +11:00
3fd7f9478f PT import: Minor changes to session 2018-10-12 19:09:40 +11:00
244098cb40 PT import: Add new import_pt.cc session methods 2018-10-12 19:09:40 +11:00
ca6c11dbca libptformat: Update lib to upstream e75320e (+source lengths) 2018-10-12 19:09:40 +11:00
2a9af2d2f6 Always use internal, modified, zita-resampler
zita-resampler was modified from the original:

 * a dedicated mono variable-resampler version was added
 * full-cycle no-resampling was optimized into a delayline
2018-10-11 15:30:28 +02:00
78a3683233 Consolidate relative sched_get_priority computation 2018-10-11 15:29:50 +02:00
3a776b58ce Use new RT-priority API 2018-10-11 15:29:43 +02:00
94e6164bc3 Add API to query backend realtime thread priority 2018-10-11 15:29:40 +02:00
5c47ce32ec Fix master_send_enable_controllable for Mixbusses 2018-10-10 22:41:49 +02:00
19bbbc7fbe Fix inconsistent controllable Lua binding names
This also fixes incorrectly mapped send_level/enable
2018-10-10 22:32:08 +02:00
96b4a85fed Fix well-known control Lua bindings 2018-10-10 22:16:08 +02:00
b27a8169d2 Ignore small (or negative) radii.
Some calls use e.g. (corner_radius - 1.5). With small radii or boxy
layout the radius can become negative.
2018-10-09 19:31:01 +02:00
b32b9ceb58 Constant radian/degree factor 2018-10-09 19:31:01 +02:00
425c54883a Remove unused variable 2018-10-09 19:31:01 +02:00
970c8939d4 some rather simple code to allow MIDI Clock to set the tempo of the session.
This is only allowed if the session has only 1 tempo marker
2018-10-08 12:59:51 -04:00
ad4dc4460d fix duplicate name check for new transport master 2018-10-07 12:43:28 -04:00
a4692389b8 fix return value and avoid unnecessary extra conditional 2018-10-07 12:29:37 -04:00
1168ffecad remove crazy thinko 2018-10-07 12:28:53 -04:00
0f6e67a32f Faderport(Classic): Add Record-PreRoll and Record-CountIn actions to the footswitch selections. Could make this menu access -any- action, but I think a short useful list of transport items is better in this case. 2018-10-07 10:10:03 -05:00
16dc3a1613 Properly disable looping when deleting loop-range 2018-10-05 21:50:55 +02:00
32b7343927 NO-OP: whitespace 2018-10-05 21:50:55 +02:00
e4a914e26e make remove work for transport masters (bug fix, really) 2018-10-05 14:29:15 -04:00
f0a395e7cd stop MIDIClock transport master reporting continued timestamps 2018-10-05 14:15:02 -04:00
4c7e5dbc74 move away from "sync source" concepts 2018-10-05 14:15:02 -04:00
67ba0bd992 laying the groundwork for adding/removing transport masters 2018-10-05 14:15:02 -04:00
ccccac7a10 Fix the User button for Mixbus; we use it as a button, not a modifier. 2018-10-04 19:29:14 -05:00
e6aeb9d6e8 remove LTC port parameter, since it's no longer a thing.
This commit does not remove this concept from the libs/ardour/engine_state_controller code,
which is used exclusively by Waves Track Live (to the extent that this can be said to
be "used").
2018-10-04 10:17:40 -04:00
22061310c0 add new ::update_interval() method for transport masters, and use in shared ::speed_and_position() implementation 2018-10-04 00:42:14 -04:00
1dc35d157e fix error introduced in MTC transport master 2018-10-04 00:42:14 -04:00
59b789d2bb Sort Session templates alphabetically 2018-10-04 03:36:14 +02:00
b6b353d452 Handle generic-midi bindings per session.
This allows to special-cases session-specific control-surface state.
e.g. midi-learn.

Only restore midi-learned, session-specific, bindings when loading a
session with generic-midi enabled.

Also dis/re-enable generic-midi resets midi-learned, but no other
session-independent settings.

This also handles the edge case:
 1) load global config, generic-midi = ON, w/ bindings.
    state is remembered as cpi->state
 2) load session-condig, generic-midi = OFF, cpi->state is retained
 3) user enables the surface, cpi->state from (1) is applied.
 -> invalid bindings applied -> fail
2018-10-04 02:30:21 +02:00
9df6e334fc Persistent ctrl-surface state
Keep latest surface configuration, regardless if surface is active
or being deactivated. Current state after de-activation is retained.

Currently state loaded from a session overrides global state from
global preferences, if the surface is marked active in the session.
This is to allow midi-learn.

generic-midi and session-specific midi-learn will require additional
work.
2018-10-04 01:36:51 +02:00
be826f3635 Prevent excessive meter redraws for inactive meters at zero 2018-10-03 20:54:14 +02:00
cdc64358ec Properly initialize midi-meters
Midi meters are using linear 0..1 range, (not decibels, no log-scale
falloff).

If a track is deactivated, run() is never called. the queued reset never
executed and the meter remained at the initialization default -inf
(visually it looked like a pegged meter).
2018-10-03 20:22:30 +02:00
e01582dd9a Prepare a boxy, no round borders, button-style 2018-10-02 21:28:49 +02:00
62cd539143 Fix false-positive duplicate format detection
Previously, stem-exports of more than 1 channel always included
the export-format, even if only one format was exported.
2018-10-02 21:28:49 +02:00
feb2763a8a libptformat: Add ability to reuse object && add path to ptf to api 2018-10-02 20:14:04 +10:00
b60e9f7df9 Remove a call to 'fst_audio_master_idle()'
Nobody seems quite sure why it's needed but it seems to be crashing a lot of plugins:-

http://tracker.ardour.org/view.php?id=7668
2018-10-02 09:17:32 +01:00
87559a6054 Fix Mixbus master-bus tape-saturation controllable 2018-09-30 15:34:59 +02:00
cf652331ad Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
Stage 3 of 3
2018-09-30 09:19:28 +01:00
b519434744 Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
Stage 2 of 3 (more to follow)
2018-09-30 09:06:25 +01:00
9506a294c7 Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
Stage 1 of 3 (more to follow)
2018-09-30 08:56:12 +01:00
097176696b Add support (in our MSVC projects) for using 'boost::atomic'
(only done "where necessary" for the moment - more to follow...)
2018-09-29 12:22:47 +01:00
d76589d90f FP8/16: include makeup gain control 2018-09-28 16:19:40 +02:00
Albert Graef
65693a72a2 MCP: Fix up the feedback for the view selection buttons. 2018-09-27 11:31:13 -04:00
Albert Graef
38bccabeca MCP: Allow the current bank to move right one channel even if this results in a partial bank.
Rationale: This change is trivial, but Ardour's behavior of refusing to move right one channel unless a full bank remains has been there for a long time, and there are probably good reasons for it. This design was likely conceived when all MCP-compatible devices had banks of 8 faders anyway. However, with the advent of affordable single-strip devices like the X-Touch ONE it becomes a real issue.

Single-strip devices can only access the first channel in the current bank, so relaxing this restriction is the easiest way to enable such devices to access all strips, while still maintaining the usual bank size of 8. Note that maintaining a bank size of 8 is beneficial even with single-strip devices for several reasons:

- It allows use of the bank switch buttons to flip through a large number of strips more quickly.

- It maintains compatibility with existing device descriptions. E.g., the X-Touch ONE can be used with the existing X-Touch device description without any ado.

- Most importantly, it maintains compatibility with other MCP-compatible controllers which do have 8 strips and may be connected to Ardour at the same time. E.g., one might want to use an X-Touch Mini, or even a full-size X-Touch along with the X-Touch ONE in some use cases. Changing the bank size to 1 affects all connected MCP devices, so you'd rather keep the bank size to 8 in such scenarios. (Ardour should preferably have separate bank size settings for each connected MCP device, but that isn't possible right now since only one MCP device description can be active at the same time.)
2018-09-27 11:31:13 -04:00
Albert Graef
936f6814ac MCP: Fix up the feedback for the bank left/right buttons. 2018-09-27 11:31:13 -04:00
c4fcd0c268 consolidate all transport masters on a SafeTime object that is a member of the TransportMaster base class.
This seems to have broken some aspects of chasing/locking
2018-09-27 11:31:13 -04:00
147d456dbd change type of MIDI::Parser::position signal to include timestamp 2018-09-27 11:31:13 -04:00
0f7123d33a more objectification for SafeTime 2018-09-27 11:31:13 -04:00
b6aefaf100 initial hacks towards a truly thread-safe SafeTime object, using boost::atomic 2018-09-27 11:31:13 -04:00
3c11660d2a VST-state, set/restore program before loading chunk.
This may fix some issues with VST state being restored incorrectly
when a plugin-preset was loaded.
2018-09-25 21:46:59 +02:00
99a8899c2d Add Lua bindings to query DSP load statistics 2018-09-25 18:01:22 +02:00
6ca8ec5141 remove debug output 2018-09-23 13:48:19 -04:00
12d5eb9a34 remove debug output 2018-09-23 13:48:19 -04:00
d48dd0ccd5 defer creating a visibility tracker for a window until the window is mapped
Without this, the visibility tracker will report that the window is not visible at startup, and
this overrides the XML _visible property which denotes that the window should be made visible
2018-09-23 13:48:19 -04:00
b9d8f75119 emit property change for "collect" on a TransportMaster 2018-09-23 13:48:19 -04:00
fd23f89b35 Accommodate newly added/renamed source(s) in our MSVC project (libardour) 2018-09-22 16:55:43 +01:00
Jan Lentfer
e52c8e376a LCXL: fix off by one cause by fader8master 2018-09-22 15:12:26 +02:00
Jan Lentfer
7d6c9c3085 LCXL: Fix a crash on exit 2018-09-22 15:12:26 +02:00
3b151c8cfb no more slave.h 2018-09-22 09:03:50 -04:00
c83d5add7b use abs() instead of fabs() on integers 2018-09-22 08:51:58 -04:00
f39bcaa4bf Revert "MSVC complains because we're using 'fabs()' to compare 2 x integers"
You can't remove an abs() conversion and keep the same semantics.

This reverts commit d89b8cc0ad.
2018-09-22 08:50:16 -04:00
62f29d6c44 remove old slave files 2018-09-22 08:49:24 -04:00
736b6a3e57 Replace a namespace brace deleted by accident 2018-09-22 09:08:44 +01:00
a3a156520d Remove some namespace ambiguity
There are a couple of places where we're using both MIDI namespace as well as ARDOUR namespace (both of which declare 'pframes_t)
2018-09-22 08:48:41 +01:00
0354dbdfe9 Remove 2 x unneeded functions in 'SlaveSessionProxy'
I assume they're not needed now because their declarations got removed in commit #e6915e01de
2018-09-22 08:44:42 +01:00
d89b8cc0ad MSVC complains because we're using 'fabs()' to compare 2 x integers 2018-09-22 08:39:34 +01:00
6dd6f6bb16 Fix typo: emit signal (don't construct an object) 2018-09-21 21:35:28 +02:00