7d559de3d0
fix boolean logic for roll_delay vs. disk_samples_to_consume
2017-09-19 21:39:46 -04:00
0a4b9ffba5
do not advance DiskReader's idea of playback_sample while waiting for _roll_delay to expire
2017-09-19 21:38:59 -04:00
bda2e9738f
clearer catastrophic error message, rather than assert()
2017-09-19 21:38:59 -04:00
48d11000e5
attempt to fix roll delay logic by moving it into DiskReader (the only place it matters)
2017-09-19 18:53:27 -04:00
59ccf91eea
Revert some more frame/sample API issues
2017-09-19 18:40:29 +02:00
ebf6856579
Revert "remove unusued roll_delay member of DiskReader"
...
This reverts commit 92c2e06eb72950f91ca943a5219e2caeaeecda9f.
2017-09-19 11:15:22 -04:00
e44ae422eb
remove unusued roll_delay member of DiskReader
2017-09-19 11:15:22 -04:00
21aa2f529f
Fix nightly typos'n'thinkos: initial-delay calculation
2017-09-19 17:03:28 +02:00
R. Mattes
f7e35024b6
Fixed typo
2017-09-19 08:34:04 -04:00
2c31867c8a
Accommodate newly added/removed source(s) in our MSVC project (libardour)
2017-09-19 12:22:06 +01:00
16f9f58057
More s/frame/sample/ - fixes unit-test compilation
...
"frame" in #include file-names was replaced, this actually renames
the files to follow suit.
2017-09-19 05:37:58 +02:00
666aa5a557
More Coreaudio SDK fixes, after 30b087ab3
2017-09-19 05:20:05 +02:00
29e553ab86
Amend c8a9b28d3
and 40aebce
. Fix gain automation edge-cases:
...
* drop Trim/Fader automation for bypassed processor
* Trim/Fader automation for Busses is always active when rolling
2017-09-19 04:54:42 +02:00
1ec471c961
partially revert 30b087ab3
, CoreAudio SDK uses "Frames"
2017-09-19 04:47:10 +02:00
c8a9b28d3b
remove getter for Amp::_apply_automation_gain; reset member to false after use, and true after ::setup_automation_gain
...
runs successfully
2017-09-18 22:21:27 -04:00
40aebce699
consolidate roll methods into Route::roll()
...
We want Track to shrink, and logic consolidation is always good. Route already knew about
disk_reader and disk_writer, now it knows about _monitoring_control too
2017-09-18 21:28:02 -04:00
10b76ae631
Various updates and fixes for Latency Compensation
...
* centralize signal_latency_at_***_position to processors
* update initial-delay/roll-delay when processor order changes
* consolidate signal-latency calculation: use the same method
for processor-changes and session's post_playback_latency.
* include relative output-delay in roll-delay
* fix capture processor position & optimize stem-export latency
(roll-delay fixes pending Route:roll() update)
2017-09-19 02:11:22 +02:00
013088ca5f
remove debug output
2017-09-18 14:59:11 -04:00
d381714510
amend prev. commit
2017-09-18 20:41:43 +02:00
d36e909ad4
Tweak default config
...
* disable MMC by default
* auto-detect audition-synth at first run (prefer gmsynth if available)
2017-09-18 20:30:40 +02:00
0a53b13de5
Disk IO "pre-fader" means pre-trim, not post-trim
2017-09-18 13:41:28 -04:00
c755a6c12c
NO-OP: reindent
2017-09-18 13:24:04 -04:00
7a477fb9d6
manually fix up comments in libs/timecode/src/time.cc that got edited by f2s
2017-09-18 13:19:12 -04:00
30b087ab3d
globally change all use of "frame" to refer to audio into "sample".
...
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
cb956e3e48
fix issue with initialization of a BBT_Time variable.
2017-09-18 11:53:47 -04:00
cba53a2023
add _locked() variants to new tempo experiment
2017-09-18 11:40:54 -04:00
6f553ce988
changes required to operate with the Evoral::Beats ticktime commit
2017-09-18 11:40:53 -04:00
5ef0135283
remove Evoral types.cpp since it is no longer required
2017-09-18 11:40:53 -04:00
89f105892c
new header file for superclock stuff
2017-09-18 11:40:53 -04:00
176cdecd03
extend/fix/improve operator overloads and methods for Timecode::BBT_Time
2017-09-18 11:40:53 -04:00
9ea43bd5ad
extend/fix/improve operator overloads and methods for Evoral::Beats
2017-09-18 11:40:53 -04:00
f4f0e70320
NOOP: formatting
2017-09-18 11:40:53 -04:00
3f50ace767
::find_next_event() does not need to be a pure virtual in ControlSet (it can originate in AutomatableSequence)
2017-09-18 11:40:53 -04:00
789b98e6f2
remove locate debugging output
2017-09-18 11:40:53 -04:00
ac8dc40035
fix for loading older sessions, where the rest for "is-track" was "has-diskstream", rather than "has-playlist"
2017-09-18 11:40:53 -04:00
de7963941d
Don't build ni-maschine support by default
...
While the pads work, overall integration is still not present, mainly
because the device does not lend itself for editing & mixing in a
DAW environment.
2017-09-18 11:40:53 -04:00
a71171786f
Maschine2 UI: basic widgets
2017-09-18 11:40:53 -04:00
0a6d1ab06e
Skeleton for NI Maschine2 Surface
2017-09-18 11:40:53 -04:00
eeeb8563c2
sort of no-op ... remove debug output ... just basically put it in git so that i can fetch it on another machine
2017-09-18 11:40:53 -04:00
f8de3e0c6e
reinstate "restart seek" behaviour but use a new Session::_seek_counter member variable for this
2017-09-18 11:40:53 -04:00
828b95b526
no more locate-restart based on mismatch transport_frame and locate target
2017-09-18 11:40:53 -04:00
8033fd9912
remove tests for locate_pending() before deciding whether to increment transport position
2017-09-18 11:40:53 -04:00
9836cd3943
more verbose debug output for slave debugging
2017-09-18 11:40:53 -04:00
7149d72625
verbose debug output for slave debugging
2017-09-18 11:40:53 -04:00
b5e1877297
attempt fix for LTC slave when locating
2017-09-18 11:40:53 -04:00
b61146365f
delete slave during Session::destroy
2017-09-18 11:40:53 -04:00
d3404f3684
fix logic error that prevent input monitoring during slave wait states
2017-09-18 11:40:53 -04:00
2212403431
don't attempt MIDI playback if there are no MIDI buffers provided for processing
2017-09-18 11:40:53 -04:00
b115a04bab
additional DEBUG_TRACE output for slave/diskreader
2017-09-18 11:40:53 -04:00
5c0ce7311a
reset DiskReader "no disk output" flag in a couple of exceptional cases
2017-09-18 11:40:53 -04:00
9d423bb12c
remove debug output
2017-09-18 11:40:53 -04:00
650953ed14
Non-layered MIDI recording
...
hand-adapted version of d977cc3238
from master
This does not merge MIDI data, but trims MIDI regions at rec-stop like
non-layered audio-recording does.
2017-09-18 11:40:53 -04:00
2a192dbbd6
remove debug output
2017-09-18 11:40:53 -04:00
38e9487564
when calculating average slave/master delta, use absolute value.
...
We're interested in average distance between slave/master, the direction is irrelevant and
using sign as direction causes the computed average to be absurd
2017-09-18 11:40:53 -04:00
e9dd575ca5
remove all code related to "silent roll" concept. some debug output added
2017-09-18 11:40:53 -04:00
24df2b5594
NO-OP: mark various state property names as explicitly non-translated
2017-09-18 11:40:53 -04:00
13d44c4d76
move disk_{writer,reader} into Route to allow for simple, sensible implementation of DiskIOPoint
2017-09-18 11:40:53 -04:00
9d355f1390
don't (re)create disk reader/writer if they already exist
2017-09-18 11:40:53 -04:00
6038ef44f9
auditioner always runs at normal speed, independent of transport speed
2017-09-18 11:40:53 -04:00
fb430a7738
add to LUA API (new Stripable API)
2017-09-18 11:40:53 -04:00
9da08b5f19
use const
2017-09-18 11:40:53 -04:00
2c0b35fbb1
remove unused + commented line
2017-09-18 11:40:53 -04:00
29d2754c9a
subtle change to _need_butler logic to ensure correct result in mixed-type contexts
2017-09-18 11:40:53 -04:00
59be854f79
reinstate use of a MidiTrack's MIDI filter when reading from disk
2017-09-18 11:40:53 -04:00
8f4d432d73
channel config changes during ::configure_io() must be scoped to ensure they are complete before signals are sent
2017-09-18 11:40:53 -04:00
ece52d3278
move _file_frame from DiskIOProcessor into DiskReader (only place where it is needed); split into by-type array to deal with different rate of audio & MIDI i/o
2017-09-18 11:40:53 -04:00
4dc5be0936
MidiTrack needs to set it's "need butler" status
2017-09-18 11:40:53 -04:00
8b8ce09e9f
use a more useful and accurate heuristic to get ::input_streams() for the auditioner
2017-09-18 11:40:53 -04:00
7a0b53f75e
clear regions from "other" playlist type in auditioner when starting a new audition
2017-09-18 11:40:53 -04:00
6c14f96ddc
auditioner does not care about the state of its diskwriter processor
2017-09-18 11:40:53 -04:00
aaac1e489b
change callers of changed Track::use_new_playlist() API and its implementation
2017-09-18 11:40:53 -04:00
a7431e21db
remove Auditioner::prepare_playlist() - not used
2017-09-18 11:40:53 -04:00
6bc95465d6
add Track::use_default_new_playlist()
2017-09-18 11:40:53 -04:00
1f53c861b8
remove Track::hidden(); replace with Stripable::is_private_route()
2017-09-18 11:40:53 -04:00
838655bd39
emit required signal
2017-09-18 11:40:53 -04:00
4bfc5ddf71
mechanism to allow Track (or other Route-derived type) to add its own processors at the right time
2017-09-18 11:40:53 -04:00
e5ea6d81d8
add enum registration for DiskIOPoint
2017-09-18 11:40:53 -04:00
9885f04fe6
tweaks to disk io point mechanisms
2017-09-18 11:40:53 -04:00
dc4f730ac9
initial (incomplete) framework for DiskIOPoint manipulation
2017-09-18 11:40:53 -04:00
03e99e9866
fix longstanding compiler warning
2017-09-18 11:40:53 -04:00
c431b527ec
new enums for disk i/o positioning
2017-09-18 11:40:53 -04:00
66c5fe41ee
framework for silent-roll-while-slave-syncing
2017-09-18 11:40:53 -04:00
144f95c305
do not queue multiple Locate or LocateRoll events
2017-09-18 11:40:53 -04:00
3d183dc462
debug instrumentation for locate time
2017-09-18 11:40:53 -04:00
e6576e2934
probable fix for out-of-sync issue across tracks after locate
2017-09-18 11:40:53 -04:00
646d6bec7e
when DiskReader checks to see if a locate is in progress, it must be atomic with respect to all DiskReaders
2017-09-18 11:40:53 -04:00
fb9dd1a411
DiskWriter needs to drop source refs in its destructor.
...
SerializedRCUManager can't do this by itself
2017-09-18 11:40:53 -04:00
f76c05851f
change visible name of disk i/o processors
2017-09-18 11:40:53 -04:00
871428576c
do not change Session::_transport_frame is a locate is pending
2017-09-18 11:40:53 -04:00
6fb212a6f6
restart non-RT locate if a new request has been processed by RT context since we started
2017-09-18 11:40:53 -04:00
58ea3d3d8c
adjust debug trace output message
2017-09-18 11:40:53 -04:00
bdf3067a59
comment out debug trace output
2017-09-18 11:40:53 -04:00
5ec3e036ff
comment out debug trace output
2017-09-18 11:40:53 -04:00
8101d9884f
don't bother to re-seek/locate/refill buffers when disk IO processor config changes unless it actually changed
2017-09-18 11:40:53 -04:00
b0c6273f90
add new debug trace output
2017-09-18 11:40:53 -04:00
3dd6144ff5
comment out debug trace output
2017-09-18 11:40:53 -04:00
9edfe24399
fix logic bug in deciding if there is outstanding disk i/o work in butler
2017-09-18 11:40:53 -04:00
0c51230b9f
comment out debug trace output
2017-09-18 11:40:53 -04:00
9df314d6d5
add new debug trace output
2017-09-18 11:40:53 -04:00
04c43ffd7e
NOOP: remove line split for conditional
2017-09-18 11:40:53 -04:00
d9b456163c
change debug trace output
2017-09-18 11:40:53 -04:00
3be9659637
do not advance pointer; avoids illegal over-read during mix_buffers_no_gain()
2017-09-18 11:40:53 -04:00
30c6096d20
locating no longer interrupts process()
2017-09-18 11:40:53 -04:00
1c603682b7
since Session::fail_roll() just calls ::no_roll() make that more explicit when there's actually no failure
2017-09-18 11:40:53 -04:00
feaabcb6c9
missing file from previous commit
2017-09-18 11:40:53 -04:00
cb0d9f5607
remove InputConfigurationChange from session events, since it is a no-op in this development branch
2017-09-18 11:40:53 -04:00
274726084d
fix up error in manual rebase correction
2017-09-18 11:40:53 -04:00
c6bd033523
update disk writer input latency at transport stop
2017-09-18 11:40:53 -04:00
79abf3dfa6
set + store signal chain latency for all processors; DiskWriter sets its capture_offset appropriately
2017-09-18 11:40:53 -04:00
d4280997fb
the return of MIDI recording, plus refactor to move post-capture playlist manipulations into Track
2017-09-18 11:40:53 -04:00
5ac7d733c2
more DEBUG::Destruction messages
2017-09-18 11:40:53 -04:00
d0faa8e0d6
drop references to disk reader and writer objects in Track destructor
2017-09-18 11:40:53 -04:00
1b058a6ab9
force auditioner to emit GoingAway at the right time, so that its disk reader/writer objects drop their reference
2017-09-18 11:40:53 -04:00
302d15d2c0
drop route shared_ptr when Route::GoingAway is emitted
2017-09-18 11:40:53 -04:00
6827dfe832
fix inadvertent run of Interpolation object when transport speed is zero, leading to a single sample being written when nothing should be.
...
Also, rename "outgoing" as "disk_signal" to be more clear.
2017-09-18 11:40:53 -04:00
341a6f3c00
fix uninitialized variables causing DiskWriters to think they were in some incorrect state(s)
2017-09-18 11:40:53 -04:00
645f68276b
rename a method to be more clear; remove an unused method from DiskReader
2017-09-18 11:40:53 -04:00
8c04457be1
cue monitoring for MIDI
2017-09-18 11:40:53 -04:00
26b13ed5f1
get sdio branch working with MIDI tracks
2017-09-18 11:40:53 -04:00
480b6b81cd
NO-OP: comment
2017-09-18 11:40:53 -04:00
982d173b57
cue monitoring for audio (libardour aspects)
2017-09-18 11:40:53 -04:00
eb24353cad
move channel-count setting for DiskReader so that it actually reflects the correct numbers
2017-09-18 11:40:53 -04:00
51865535b1
fix various naming issues with Disk{Reader,Writer}
2017-09-18 11:40:53 -04:00
0aa5abe6aa
uncomment existing machinery to deal with playlist modifications
2017-09-18 11:40:53 -04:00
3f243303a6
NO-OP: remove placeholder comment
2017-09-18 11:40:53 -04:00
5a52925695
NO-OP explanatory comment
2017-09-18 11:40:53 -04:00
b0d7d6f9fd
NO-OP explanatory comment
2017-09-18 11:40:53 -04:00
94bf944acd
alignment choice now owned by Track, as a proxy for DiskWriter
...
DiskWriter is a processor and as such has no Input object. This means
that the "Automatic" setting must be handled by the Track, which
does have an Input object to check for port connections to physical
or non-physical sources
2017-09-18 11:40:53 -04:00
d5ccc7ba98
NO-OP: whitespace inside #if 0
2017-09-18 11:40:53 -04:00
6c29bc1f55
fix iterator initialization
2017-09-18 11:40:53 -04:00
bf973f76e0
set up DiskWriter sources at an appropriate time
2017-09-18 11:40:53 -04:00
690c02c31a
don't crash when recording due to null midi_write_source
2017-09-18 11:40:53 -04:00
1046657a58
manual fixes for various XML API changes in master, required after rebase on master
2017-09-18 11:40:53 -04:00
e24ca13394
remove all remaining vestiges of per-track varispeed from libardour
2017-09-18 11:40:53 -04:00
2a1dccabc9
get diskreader working, and remove per-track varispeed API and mechanism
2017-09-18 11:40:53 -04:00
fe8c70e6fc
remove debug output
2017-09-18 11:40:53 -04:00
e2f33cdc8b
correctly create Tracks, not Busses
2017-09-18 11:40:53 -04:00
5f7798c05a
save processor type for Disk{Reader,Writer}
2017-09-18 11:40:53 -04:00
53e6f13852
addd more DEBUG_TRACE for DiskIO; set DiskIOProcess::_need_butler more appropriately; other minor adjustments
2017-09-18 11:40:53 -04:00
462711b23a
nothing to do anymore at the Track level when input config changes
2017-09-18 11:40:53 -04:00
5642dd4496
reinstate input monitoring function
2017-09-18 11:40:53 -04:00
68e57101ad
fully remove diskstream code
2017-09-18 11:40:53 -04:00
361cab503b
random changes required to get an audio track created and transport functional
2017-09-18 11:40:53 -04:00
35c7274cc9
remove Diskstream from Track and derivatives; get ardour to actually startup
2017-09-18 11:40:53 -04:00
d16ae875be
remove now-non-existent method from Lua
2017-09-18 11:40:52 -04:00
3e33b0642d
add DEBUG::DiskIO
2017-09-18 11:40:52 -04:00
11baba0275
remove Session::track_by_diskstream_id()
2017-09-18 11:40:52 -04:00
a4a87f56e9
mega-commit to save state of first "it compilesand links" state for separated disk i/o changes.
...
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
2017-09-18 11:40:52 -04:00
94604c6979
merge almost all audio & midi diskstream code, redistribute between DiskIOProcessor, DiskReader,DiskWriter; compile and link
2017-09-18 11:40:52 -04:00
f8ef82fceb
remove duplicated (in heirarchy) loop location from DiskReader
2017-09-18 11:40:52 -04:00
c6dd3045d1
move need-butler from DiskReader to DiskIOProcessor
2017-09-18 11:40:52 -04:00
bcd7a21510
move ChannelInfo structure from DiskReader into DiskIOProcessor
2017-09-18 11:40:52 -04:00
7fb6807ed3
merge MidiDiskstream into DiskReader (playback parts)
2017-09-18 11:40:52 -04:00
074ab1e508
two additional AudioDiskstream methods, partially commented out now
2017-09-18 11:40:52 -04:00
c05cfe3328
merge AudioDiskstream playback code into DiskReader
2017-09-18 11:40:52 -04:00
46366541b1
crawling towards the APIs for separate disk i/o
2017-09-18 11:40:52 -04:00
36046cccc1
add basic data members and methods for adding an explicit size allocation for Canvas::Item
2017-09-18 11:40:52 -04:00
934f1a0476
totally crude mockup of new disk_io.h header
2017-09-18 11:40:52 -04:00
5cfb5dbd4c
Bump session file format (pre 6.0)
...
* latch automation
* logarithmic interpolation option
2017-09-18 11:40:52 -04:00
dc83dc7b58
Add TouchChanged signal (and re-indent)
2017-09-18 11:40:52 -04:00
c4a5ad33a5
Initial support of Latch for some ctrl-surfaces
2017-09-18 11:40:52 -04:00
1d587592ca
Add support for Latch Automation
2017-09-18 11:40:52 -04:00
1545c426d9
Revert "Temporary session-format compatibility (revert before release)"
...
This reverts commit 8cd8cb1650
.
2017-09-18 11:40:52 -04:00
766113a024
FP8: call directly into session.
2017-09-18 17:24:57 +02:00
8337982766
Prototype using additional ALSA devices (w/resampling).
2017-09-18 16:13:55 +02:00
128a985361
ALSA Backend: Separate Device Reservation into its own class
2017-09-18 14:50:31 +02:00
71424c9db5
NO-OP: whitespace
2017-09-18 06:47:01 +02:00
eb71eddbc8
Add libzita-resampler as lib
...
This simplifies x-compiling and x-platform builds as well
allows to statically link, if needed.
2017-09-16 18:31:54 +02:00
7258c6334d
Namespace PBD::RingBuffer
...
class RingBuffer<> is a very generic name and should not pollute the
global namespace.
2017-09-16 16:37:29 +02:00
14fcf86f03
MSVC uses a slightly smaller value for HUGE
2017-09-11 19:25:13 +01:00
019f664356
Fix a-fluidsynth bank/program restore (during session load)
...
* set program in work-response, synchronous to run()
* properly store bank per channel (for replay)
2017-09-11 16:48:54 +02:00
fdbe22d005
a-fluidsynth: query current bank/program after loading .sf2
2017-09-10 16:06:16 +02:00
057fd9259e
FP8: add mode to reset gain to unity
...
Re-selecting the most recently selected (blinkig select button) strip
returns gain to unity (0dB)
2017-09-09 21:46:26 +02:00
ba2114644d
Only emit InstrumentInfo::Changed() on actual change
...
Ignore plugin re-order, meter-pos changes and other cases where
Route calls reset_instrument_info()
2017-09-09 18:21:06 +02:00
b9f2a2ab3f
Fix signal-emission order (first re/set instrument info)
2017-09-09 18:21:00 +02:00
5637bdd29b
Prepare for singleton patch-selector per midi-track UI (mixer, editor,..)
2017-09-09 18:20:36 +02:00
7872e4033f
LV2/midnam tweaks - fix race conditions
...
* Emit signal once midnam was actually updated
* only re-read midnam if was it changed. This allows idempotent calls to
read_midnam() - from the same thread.
At session-load a synth-plugin may load a soundfont in the background
and emit midnam_update() after the synth was initialized but before the
GUI thread connects to the signal. By making the call idempotent the
GUI can call read_midnam() after connecting to the signal to catch up.
2017-09-09 03:08:46 +02:00
2ca3009143
Allow to send MIDI data directly to a plugin
2017-09-09 03:08:46 +02:00
483ad807ce
fix crashing thinko in push2 code
2017-09-08 18:36:26 -04:00
b7227415ad
a-fluidsynth mark session as modified if .sf2 changes
2017-09-08 23:35:00 +02:00
ba7bbd1d51
a-fluidsynth: implement LV2_BANKPATCH__notify
2017-09-08 23:35:00 +02:00
e452ba0fe1
Add LV2 extension to notify host about midi-bank/pgm state.
2017-09-08 23:35:00 +02:00
8bc2bf0155
Non-numeric Properties are not automatable
...
Fixes a crash, when the Generic-UI tries to access the AutomationList
of LV2 URID or String Properties.
2017-09-08 23:35:00 +02:00
e15d9202a5
Emit Changed() signal when MIDI bank/pgm changes
2017-09-08 04:35:06 +02:00
6654c53760
Fix bumping .mid file name (snapshots & playlist copy)
...
When forking regions, copying playlists or saving snapshots we do not
have a reference to the track and cannot use the track's name as basis
for the new filename like Editor::fork_region() does.
A cloned midi region's name is based on the original region name.
This prevents endless addition "name-1-1-1-1-1-1-1-1.mid", adding
to the region's basename.
2017-09-07 06:05:26 +02:00
db7ae81f07
Call curl_global_init() exactly only once (2/2)
2017-08-31 20:08:54 +02:00
03f77792dd
Remove over-protection
...
The queued resize will only happen trigger a size-request when the
widget is realized, and on_size_request() calls ensure_layout().
Moreover, this over protection meant that sometimes a resize wasn't
noticed by the button containers.
2017-08-30 20:11:17 +02:00
d11d8b8a96
Catch new exception in other places.
2017-08-30 17:53:31 +02:00
3d9a0a1f98
Don't use API definition as namespace & fix whitespace
2017-08-30 17:53:08 +02:00
1f6c54a2f0
Gracefully handle templates that lack contents in their description or created_with node.
2017-08-30 10:23:34 -05:00
7d88091229
Avoid assert() when loading xml: Throw an XMLerror if attribute_value fails.
2017-08-30 10:23:34 -05:00
35fcb622bc
Accommodate recently removed source(s) in our MSVC project (portaudio_audiobackend)
2017-08-30 09:53:33 +01:00
467c801ce8
Abstract definition of rt-scheduler policy
...
pthread-w32 does not support pthread_setschedparam() with
SCHED_FIFO and bails out. While pthread_create() simply ignores the policy
and sets the priority regadless.
This only affects ctrl-surface event-loops & AutomationWatch on Windows.
2017-08-29 20:35:36 +02:00
df659e91f1
Consolidate _realtime_pthread_create() into libpbd.
2017-08-29 17:25:23 +02:00
6ab00534c0
Set Automationwatch thread priority (needs to be higher than GUI)
...
This fixes an issue with sparse automation touch/write when the CPU is
busy (stationary playhead, waveform rendering, or just high DSP load)
2017-08-29 17:25:23 +02:00
229c9584bf
Add a PBD API to set pthread priority
2017-08-29 17:25:23 +02:00
d4c211ef6f
Compare bundle ports per-type
...
This addresses the XXX comment in Bundle::has_same_ports()
2017-08-29 10:53:41 +02:00
41c5913b91
Make Bundle::disconnect() more robust
...
Instead of asserting or crashing if the number of channels of both
bundles don't match, just try to disconnect as much as possible.
2017-08-29 10:53:41 +02:00
50c6a90d24
Make Bundle::connected_to() optionally check for exclusivity
...
If the new optional argument is true, then the first bundle will also
check if it has other connections than to the given bundle.
2017-08-28 17:54:32 +02:00
6039b44c0a
Make Bundle::connected_to() able to check only a single DataType
...
Also use the same iteration logic than in Bundle::connect to avoid
mismatched port types.
2017-08-28 14:10:22 +02:00
e07bb07899
OSC: Change jog mode should not stop transport
...
unless started by scrub or shuttle.
2017-08-27 14:15:34 -07:00
dbab25f537
OSC: same fix for /select/*
2017-08-25 10:22:42 -07:00
d7fcdbfe1d
OSC: account for user sending the wrong number of paramters gracefully
2017-08-25 09:45:06 -07:00
9c793759c8
Remove all manual accounting of connected user bundles
...
IO used to manually keep a list of user bundles it was connected to, but
it didn't work correctly: sometimes it didn't notice that a bundle
wasn't connected anymore, and the list wasn't correctly persisted across
save/reloads among other things.
Moreover, it wasn't needed at all, since the user bundles are correctly
listed by _session.bundles() and IO already notices they are connected !
Remove all occurrences of |_bundles_connected| and |check_bundles_connected|.
2017-08-24 15:41:40 +02:00
1aa3a3f4d6
Make IO::connect_ports_to_bundle able to partially connect
...
Forward the optional |allow_partial| boolean to |Bundle::connect|.
2017-08-23 23:31:28 +02:00
8cb40ab25b
Make Bundle::connect able to connect only some DataTypes
...
When |allow_partial| is true, only when the number of channels of a
given DataType is the same for both bundles are the corresponding
channels connected together.
When |allow_partial| is false (the default), the number of channels must
match for each DataType (the ChanCounts must be equal) for the
connection to be attempted.
This also fixes the logic in case two bundles have the same number of
channels, or even the same ChanCounts, but not with the DataTypes in the
same order (so connecting the ith channel of the bundle to the ith
channel of the other bundle makes no sense).
2017-08-23 23:31:28 +02:00
96a6529e2e
Improve getting a Bundle total channel count
...
|Bundle::nchannels()| creates a ChanCount on demand, by iterating over
the |_channel| member variable. The sum of all |nchannels().n(t)| over
all non-NIL DataTypes |t| is thus equal to |_channel.size()|.
Consequently, calling |nchannels().n_total()| is a convoluted (and slow)
way of getting |_channel.size()|. Add a method |Bundle::n_total()| that
directly returns the latter.
2017-08-23 23:31:28 +02:00
db28d652ca
Add a method to get the first DataType
...
Also put a comment about the ordering of DataTypes.
2017-08-23 22:58:05 +02:00
e8e1b81177
Use DataType iteration instead of assuming integers
2017-08-23 22:10:51 +02:00
ad9551e548
Update "separate_by_channel" API & add Lua bindings
...
This breaks compilation (GUI)
2017-08-23 21:33:29 +02:00
2961db3b6f
Use literal for compatibility
2017-08-23 12:43:48 +02:00
Stefan Müller-Klieser
587a2dee55
backends: jack: display playback only devices
...
When starting ardour using the jack backend, playback only devices
currently do not get displayed. Mixing and Mastering only workspaces
with e.g. a single USB Dac should be a common use case. Take this use
case into account by adding them to the device list. Tested on Linux
with jack-alsa.
2017-08-23 02:17:51 +02:00
180cbb0af9
Remove cruft
2017-08-22 15:06:43 +02:00
ca2d254fdb
OSC cue button up events should not be errors, fixed
2017-08-21 20:08:19 -07:00
ab621b550d
OSC: /cue/enable feedback not changing fixed
2017-08-21 12:10:27 -07:00
6b810b67d9
OSC: aux bus detection fixed for mixbus
2017-08-21 08:40:22 -07:00
5a8bdf40f2
Catch Lua exception when scanning scripts
2017-08-21 17:07:54 +02:00
Paul Hedderly
18060e597e
prh: Small fix to /cue/send/enable feedback string
2017-08-21 16:23:23 +02:00
f15fc38bd8
Fix a tiny memory leak
2017-08-20 22:23:10 +02:00
Johannes Mueller
d2c163e788
Make literals in libs/ardour/template_utils.cc translatable
2017-08-20 21:09:30 +02:00
Johannes Mueller
bd4db1e151
Remove the template description XMLNode before saving the template
...
... to avoid that the new template description is concatenated to the old one.
2017-08-20 21:09:30 +02:00
Johannes Mueller
419b1c1cfd
Extract the route template descriptions
...
... and put them into the template info list.
2017-08-20 21:09:30 +02:00
Johannes Mueller
245154d06a
Let user add a route template description on saving route templates
2017-08-20 21:09:30 +02:00
Johannes Mueller
ae51d5fd4e
Let the user add a template description on saving session templates
2017-08-20 21:09:30 +02:00
Johannes Mueller
908369ab3e
Save template description at toplevel rather than in <Metadata/>
2017-08-20 21:09:30 +02:00
c399954148
Don't use references for constant c-types
...
This fixes various Lua-scripts: There are no explicit bindings to
turn int64_t, uint64_t into a const reference.
Besides it doesn't make sense to use a reference for constant _t that can
be directly loaded in CPU register or on the stack.
2017-08-20 19:02:17 +02:00
fb745cc5a8
Lua may call C++ functions with throw. Catch them
2017-08-19 01:06:44 +02:00
be6abce398
Add Lua binding to un/assign VCAs
2017-08-18 22:00:24 +02:00
08c1300718
Remove old destructive API (non layered is a dynamic mode) 2/2
2017-08-18 21:12:45 +02:00
e0a83a758e
Redesign Session+Route Template Meta Script API
...
Remove special-cased script types. Allow Action-Scripts to be re-used
for session-setup or route-templates.
2017-08-18 20:42:55 +02:00
e951e68780
Add luaRef is Boolean
2017-08-18 20:42:55 +02:00
3421c6e814
NO-OP: whitespace
2017-08-18 09:42:04 -04:00
f84bebbb30
strip <Actions>/ from displayed path when printing bindings to HTML
2017-08-18 09:42:04 -04:00
5ed68fd2f8
NO-OP: whitespace
2017-08-18 00:11:55 +02:00
38a029c069
Expose Lua bindings to create/delete VCAs
2017-08-18 00:11:55 +02:00
6c49d9555a
Track Templates: initial lua backend support.
2017-08-17 13:31:45 -05:00
5f0279ab06
Catch some exceptions during session loading.
2017-08-17 19:28:14 +02:00
22055a07c0
Check major session file format version.
...
Don't allow to load sessions created with a newer version of Ardour
with an old one (no forward compatibility).
2017-08-17 18:32:49 +02:00
a4ee2d3c17
Expose enums used in RCConfig and other missing classes to Lua.
2017-08-17 01:13:39 +02:00
76036ae0f3
Fix unit-test data (XML attributes changed)
2017-08-17 01:13:36 +02:00
11aa1d60ae
Add RCConfiguration Lua Bindings
2017-08-16 00:51:20 +02:00
9f87805d95
The Auditioner is not in the Session's RouteList
...
Remove various checks, add assert() for now (perhaps some old sessions?)
This fixes an off-by one issue when adding tracks (presentation
info order in add_routes_inner)
2017-08-16 00:51:20 +02:00
6ec133ebde
Separate "add master bus" (and add Lua bindings)
...
This is in preparation for "advanced session setup" allow a SessionSetup
Lua script to create the master-bus.
2017-08-16 00:51:20 +02:00
1d8c7ef37a
Clean up BusProfile:
...
* requested_physical_in/out was unused
* input/output Autoconnect just overrides Preference/Config
(can be done by a template script)
* master_out_channels is kept for compatibility (allow to create
new empty session)
2017-08-16 00:51:20 +02:00
47d86cf54d
Change the template pulldown menu into a tree list. Populate the Description view when a template is selected.
2017-08-14 16:14:42 -05:00
0a0eec2adc
Session Metadata: add a Description field.
...
* This is a multi-line text field.
* If the session is a template, we might show this in the New Session dialog.
2017-08-14 14:08:17 -05:00
8402537493
use a lock to set/get AutomationList automation state
...
It isn't 100% clear that we should use the list's data lock, but it seems quite likely
that this is the correct design, because of the interlock between data being present
and automation state
2017-08-12 14:40:21 -04:00
acd73a9bf8
yet another Windows build fix (LV2 preset 89475b2c9
)
2017-08-11 17:33:44 +02:00
ee839bda3d
Fix Windows builds (amend 89475b2c
)
2017-08-11 17:19:45 +02:00
89475b2c95
Fix LV2 Preset path for window
2017-08-11 16:54:39 +02:00
62ce5465ca
Prepare for templates w/description
2017-08-11 15:24:05 +02:00
e3edbcb806
Add a new script type for meta-templates: SessionSetup
2017-08-11 15:24:05 +02:00
6ad4379b4d
OSC: fix issue #7444 send fader position/gain even when 0.
2017-08-10 08:50:46 -07:00
d2d660521e
Save sample-rate for sessions created from templates
2017-08-10 02:26:19 +02:00
e983e08f1d
remove old PBD::SystemExec bindings (Windows classkeys)
2017-08-10 02:26:14 +02:00
8eb3b9d34b
Add a Lua SetSession signal/hook
2017-08-10 02:25:58 +02:00
0191a9c4c2
Centralize Lua sandboxing
2017-08-10 02:25:49 +02:00
bbc8c1354e
Separate set_toggleaction_state () API
...
Prepare for a method consistent with access_action():
* separate group + action names
* no action string parsing overhead.
* no fatal, abort () call for invalid actions
2017-08-09 16:29:24 +02:00
e1a29c4e46
Fix windows builds (amend 0c4e0503
)
2017-08-09 16:22:23 +02:00
0c4e0503b4
SystemExec Lua bindings (vfork, fire+forget)
2017-08-08 23:27:47 +02:00
26dc287c00
Fix non-buffered PA backend. Wait for backend to become active
...
This hopefully fixes an issue with port-registration (new session)
being skipped because PortAudioBackend::available() still false
until the first callback.
2017-08-07 23:23:39 +02:00
7235d9751b
Add debug-msg for port-handle registration
2017-08-07 23:03:08 +02:00
fd6377a5af
PortAudio: skip process callbacks until ports are established
2017-08-07 19:27:37 +02:00
518cf6045c
Revert "Work around a Windows crash (for now)"
...
This reverts commit 4f2dc77f6f
.
2017-08-07 19:26:06 +02:00
4f2dc77f6f
Work around a Windows crash (for now)
...
The root-cause is likely PortAudio backend specific async
port-registration, re-establish ports after session creation and
after the first callback and it's apparently a race-condition:
crash is not 100% reproducible.
#10 0x00007ffb156df18a in msvcrt!abort () from C:\Windows\System32\msvcrt.dll
#11 0x0000000012597832 in _wassert (_Message=_Message@entry=0x2eaf96f0 L"_port_handle",
_File=0x2 <error: Cannot access memory at address 0x2>, _File@entry=0x346a1430 L"../libs/ardour/audio_port.cc",
_Line=80) at ../../mingw-w64-crt/misc/wassert.c:54
#12 0x00000000125978e8 in _assert (_Message=0x1282f7e9 "_port_handle",
_File=0x1282f7a0 "../libs/ardour/audio_port.cc", _Line=80) at ../../mingw-w64-crt/misc/wassert.c:30
#13 0x00000000120d1a51 in ARDOUR::AudioPort::get_audio_buffer (this=0x34a95a70, nframes=256)
at ../libs/ardour/audio_port.cc:80
#14 0x00000000126724f9 in ARDOUR::AudioPort::get_buffer (this=<optimized out>, nframes=<optimized out>)
at ../libs/ardour/ardour/audio_port.h:43
#15 0x0000000012435421 in ARDOUR::Session::ltc_tx_send_time_code_for_cycle (this=this@entry=0x37666310,
start_frame=0, end_frame=end_frame@entry=256, target_speed=0, current_speed=0, nframes=nframes@entry=256)
at ../libs/ardour/session_ltc.cc:180
#16 0x000000001245209f in ARDOUR::Session::no_roll (this=this@entry=0x37666310, nframes=256)
at ../libs/ardour/session_process.cc:145
#17 0x0000000012453051 in ARDOUR::Session::fail_roll (this=this@entry=0x37666310, nframes=<optimized out>)
at ../libs/ardour/session_process.cc:128
#18 0x0000000012459ebd in ARDOUR::Session::process_without_events (this=this@entry=0x37666310,
nframes=nframes@entry=256) at ../libs/ardour/session_process.cc:897
#19 0x000000001245a462 in ARDOUR::Session::process_with_events (this=0x37666310, nframes=256)
at ../libs/ardour/session_process.cc:425
#20 0x0000000012451bc5 in ARDOUR::Session::process (this=0x37666310, nframes=nframes@entry=256)
at ../libs/ardour/session_process.cc:78
#21 0x00000000120e79fd in ARDOUR::AudioEngine::process_callback (this=0x23316e30, nframes=256)
at ../libs/ardour/audioengine.cc:376
#22 0x00000000285390fe in ARDOUR::PortAudioBackend::blocking_process_main (this=this@entry=0x29e67750,
interleaved_input_data=interleaved_input_data@entry=0x115e8790,
interleaved_output_data=interleaved_output_data@entry=0x115e0050)
at ../libs/backends/portaudio/portaudio_backend.cc:1962
#23 0x0000000028539b75 in ARDOUR::PortAudioBackend::process_callback (this=this@entry=0x29e67750, input=0x115e8790,
output=0x115e0050, frame_count=<optimized out>, timeInfo=0x3d17fd70, statusFlags=statusFlags@entry=0)
at ../libs/backends/portaudio/portaudio_backend.cc:775
#24 0x0000000028539c16 in ARDOUR::PortAudioBackend::portaudio_callback (input=<optimized out>,
output=<optimized out>, frame_count=<optimized out>, time_info=<optimized out>, status_flags=0,
user_data=0x29e67750) at ../libs/backends/portaudio/portaudio_backend.cc:721
#25 0x00000000632c528f in NonAdaptingProcess () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll
#26 0x00000000632c73b2 in PaUtil_EndBufferProcessing () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll
#27 0x00000000632d129c in ProcessingThreadProc () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll
2017-08-07 17:39:28 +02:00
ffcb0af8bc
Fix Windows builds (amend 7009ff03
)
2017-08-07 13:58:56 +02:00
7e3a286627
fix a -Wattributes
2017-08-07 13:58:05 +02:00
4994bc4fb1
Explicitly initialize parent in the copy constructor
2017-08-07 13:57:49 +02:00
29cc1f06b6
space matters
2017-08-07 05:07:19 +02:00
e3690cf653
Add Lua Bindings to clone/copy regions
2017-08-07 03:08:36 +02:00
771a4a4e0c
Add Lua bindings for RegionMap and region list
2017-08-07 02:40:52 +02:00
fff9a3cc7f
Allow FaderPort to select VCAs
2017-08-06 22:18:01 +02:00
d18a43422c
Emit SelectionChange when VCA is removed
...
chicken/egg:
Stripable d'tor which calls remove_stripable_by_id() will only be called
when the Stripable is destroyed. But as long as the GUI selection holds a
shared-ptr reference to the Stripable, it won't be destroyed.
2017-08-06 22:17:05 +02:00
2f1405db5a
Broadcast info according to EBU tech-specs
2017-08-06 17:56:59 +02:00
515bd5ad4d
Remove some debug output
2017-08-06 14:48:18 +02:00
f25824ed28
"Selected" is a PresentationInfo Property.
...
This fixes MIDI Input follows MIDI track selection (and maybe other
issues) and hopefully breaks nothing else (most places subscribe to
both Stripable::PropertyChanged and PresentationInfo::PropertyChanged).
2017-08-05 21:12:52 +02:00
fde07d4f4f
amend bc46a7e2e9; fix blind coding typos
2017-08-05 16:17:31 +02:00
8c61c7f14a
amend f4c76f89d3a; fix blind coding typos
2017-08-05 16:06:15 +02:00
bc46a7e2e9
PortAudio backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +02:00
f4c76f89d3
Coreaudio backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +02:00
59a63a08f9
ALSA backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +02:00
2b7c585dba
Update backend API: read-only MIDI input buffers
2017-08-05 15:36:36 +02:00
f21a66797a
Revert 542d021f
, fix number of DSP threads
...
The main process-callback does not participate in DSP computation
2017-08-05 03:02:17 +02:00
2d60a69c2d
Consolidate ctrl surface code
2017-08-05 01:28:11 +02:00
8374e23014
Add API to set thread-priority (for ctrl-surfaces)
2017-08-05 01:28:11 +02:00
c125cd2647
Reduce DSP thread priority (main-i/o > midi i/o > computation)
2017-08-05 01:28:11 +02:00
cec84d242d
NO-OP: whitespace
2017-08-04 16:26:37 +02:00
1ed9564ffd
Graph profiling: allow to override max DSP thread count & calc avg.
2017-08-04 16:26:26 +02:00
38c5e9de6d
CoreAudio: Set MachThread RT Priority
2017-08-04 06:25:23 +02:00
4ec72b5c76
DummyBackend: allow changing SPP
2017-08-04 03:53:51 +02:00
9036f89311
Fix typo in Lua Vamp API
2017-08-04 01:27:46 +02:00
34936f3654
Allow calling IO::silence for yet unregistered ports (Click)
2017-08-03 23:54:26 +02:00
6b5d374352
Some more assert() debugging
2017-08-03 23:46:05 +02:00
1937c74191
Ignore cycle-start/end for unregistered ports
...
Should fix a race during Session::destroy(), Port::PortDrop
which unregisters ports with the backend, but the actual port instance
will still exist.
The engine does no longer have a session-pointer and only calls
CycleStart(); CycleEnd() to clear port-buffers. Trying to clear
and already unregistered Port will crash.
2017-08-03 19:25:14 +02:00
8b380a423a
improve 1a288ddd
, destroy IO after disconnecting from signals.
...
This does not completely fix the race-condition. The GUI
(e.g. connection-manager) may still hold a shared-ptr reference.
2017-08-03 19:25:14 +02:00
d0c934a9de
Fix crash when cleaning up w/o destroying session
...
- Control-protocols may transmit data during cleanup
(e.g. reset surface), and need the Audio-engine to do so.
- destroying the ControlProtocolManager w/o the Session calling
::drop_protocols(), lead to a double free.
2017-08-03 19:25:14 +02:00
81f12f602b
OSC: Fix to make sure buses created with Ardour 4.7 sessions show up
2017-08-03 09:09:02 -07:00
4e1772425d
prevent duplicate playlist-names when re-naming #7438
2017-08-03 02:04:57 +02:00
d1558dcab5
OSC: Add command to select Master
2017-08-02 10:43:13 -07:00
1a288ddd95
Fix some more crashes at session-close
...
PortDrop unregisters backend ports, the backend will return a NULL
buffer-pointer, but the I/O object still exists (Metronome, LTC)
AudioBuffer::_data == 0
#0 msvcrt!memset () from C:\Windows\System32\msvcrt.dll
#1 ARDOUR::AudioBuffer::silence (this=0x2c410710, len=256, offset=0) at ../libs/ardour/audio_buffer.cc:88
#2 ARDOUR::AudioPort::cycle_end (this=0x34918730, nframes=256) at ../libs/ardour/audio_port.cc:66
#3 ARDOUR::PortManager::cycle_end (this=this@entry=0x23342770, nframes=nframes@entry=256)
[process callback w/o session]
2017-08-01 23:27:34 +02:00