Damien Zammit [Sun, 15 Oct 2017 06:16:27 +0000 (17:16 +1100)]
editor_pt_import: Process wav indexes once only
Damien Zammit [Sun, 15 Oct 2017 06:12:38 +0000 (17:12 +1100)]
Update ptformat to upstream
72bd66b
- Fix a wrong assumption in the xor code
- Find start of wav list more consistently
- Fix long long constants
Len Ovens [Thu, 12 Oct 2017 20:18:21 +0000 (13:18 -0700)]
OSC: fix crash for wrong number of parameters in set_surface
Robin Gareus [Wed, 11 Oct 2017 23:49:05 +0000 (01:49 +0200)]
Fix pre-roll cycle-split
previously this worked as long as the cycle was only
needed to be split once.
Robin Gareus [Tue, 10 Oct 2017 20:12:37 +0000 (22:12 +0200)]
add missing lock (for audition + mon section)
Len Ovens [Sun, 8 Oct 2017 03:23:34 +0000 (20:23 -0700)]
OSC clean up route observer
John Emmas [Sat, 7 Oct 2017 09:11:12 +0000 (10:11 +0100)]
For 'Route::send_pan_azi_controllable()' (when building non-Mixbus) I'm assuming the intention was to return an empty object
(i.e. similar to 'Route::send_enable_controllable()')
Ben Loftis [Thu, 5 Oct 2017 15:54:46 +0000 (10:54 -0500)]
US2400: add us2400 files to repository.
Ben Loftis [Thu, 5 Oct 2017 15:47:32 +0000 (10:47 -0500)]
US2400: add us2400 to surfaces path, in ardev
Ben Loftis [Thu, 5 Oct 2017 15:03:09 +0000 (10:03 -0500)]
US2400: add us2400 to surfaces.
Ben Loftis [Thu, 5 Oct 2017 14:59:03 +0000 (09:59 -0500)]
US2400: send_pan_azimuth lookup function (currently mb-only)
Ben Loftis [Thu, 5 Oct 2017 14:55:32 +0000 (09:55 -0500)]
US2400: add debug bits
Robin Gareus [Wed, 4 Oct 2017 03:06:47 +0000 (05:06 +0200)]
Fix various edge-cases with session-archives
* prevent duplicate names when pulling-in external sources
* drop "origin" after including external sources
* don't include unused playlists
(they may reference sources that are not included)
* likewise exclude unused regions
Robin Gareus [Tue, 3 Oct 2017 22:35:29 +0000 (00:35 +0200)]
Clean up State API:
* Processor implement get_state(), classes derived from Processor
implement protected ::state() -- as documented in processor.h
* likewise for Route, Track: make ::state() a protected interface
* removal of "full_state", use explicit "template_save"
* use RAII/Unwind to skip saving automation-state
Robin Gareus [Tue, 3 Oct 2017 16:03:40 +0000 (18:03 +0200)]
Fix another hardcoded "tar.xz" -> ARDOUR::session_archive_suffix
Robin Gareus [Tue, 3 Oct 2017 01:09:25 +0000 (03:09 +0200)]
Fix session-archive file extension filter
Robin Gareus [Tue, 3 Oct 2017 00:20:33 +0000 (02:20 +0200)]
Update Session-Archive Dialog: add compression-option
Robin Gareus [Mon, 2 Oct 2017 23:56:17 +0000 (01:56 +0200)]
API change: expose session-archive compression-level
Robin Gareus [Mon, 2 Oct 2017 23:06:07 +0000 (01:06 +0200)]
Fix session-archive edge-cases, prepare uncompressed archives
* don't fork/clone midi regions (default snapshot)
* properly handle encoding embedded/external multi-channel files
* use dedicated file-extension (prepare for uncompressed archive)
Robin Gareus [Mon, 2 Oct 2017 18:40:44 +0000 (20:40 +0200)]
Prepare support for compression levels (archive + flac)
Robin Gareus [Mon, 2 Oct 2017 17:43:55 +0000 (19:43 +0200)]
Fix MIDI Automation interpolation options
Paul Davis [Mon, 2 Oct 2017 16:43:20 +0000 (12:43 -0400)]
use new CubicInterpolation API
Paul Davis [Mon, 2 Oct 2017 16:42:44 +0000 (12:42 -0400)]
change API and implementation for CubicInterpolation and Interpolation.
Also remove LinearInterpolation which is not used
Paul Davis [Mon, 2 Oct 2017 16:42:07 +0000 (12:42 -0400)]
remove cruft
Paul Davis [Mon, 2 Oct 2017 16:41:42 +0000 (12:41 -0400)]
DiskReader should do nothing at all if there are no channels
Paul Davis [Mon, 2 Oct 2017 16:41:17 +0000 (12:41 -0400)]
remove cruft
Paul Davis [Mon, 2 Oct 2017 16:40:15 +0000 (12:40 -0400)]
remove midi_interpolation member of DiskIOProcessor (was used only to call ::distance() method
Paul Davis [Mon, 2 Oct 2017 16:38:56 +0000 (12:38 -0400)]
NO-OP: comment format change and whitespace
Paul Davis [Mon, 2 Oct 2017 16:38:29 +0000 (12:38 -0400)]
remove cruft from DiskIOProcessor header
Paul Davis [Mon, 2 Oct 2017 16:37:20 +0000 (12:37 -0400)]
use constructor syntax
Paul Davis [Mon, 2 Oct 2017 16:36:52 +0000 (12:36 -0400)]
remove leftover cruft related to wrap buffers from DiskIOProcessor
Paul Davis [Mon, 2 Oct 2017 16:35:32 +0000 (12:35 -0400)]
tracks no longer need to be notified about speed changes
Robin Gareus [Sun, 1 Oct 2017 18:54:40 +0000 (20:54 +0200)]
set owner or disk-i/o processors
This fixes a race-condition. These plugins may be run w/o being
re-configured which sets the ownershi. currently debug msgs use
owner()->name()
Robin Gareus [Sun, 1 Oct 2017 02:00:50 +0000 (04:00 +0200)]
These are "Frames" :)
Robin Gareus [Sun, 1 Oct 2017 01:30:02 +0000 (03:30 +0200)]
Fix MIDI rec-region display
gui_feed_buffer is used for DiskWriter -> GUI notifications.
It was wrongly migrated from MidiDiskstream to DiskReader in
7fb6807
Robin Gareus [Sun, 1 Oct 2017 01:03:44 +0000 (03:03 +0200)]
Fix recording MIDI
- Fix API call to add region(midi_region) -- set count to "1"
- Forward DataRecorded() signal
- remove botched merge/rebase"
a4a87f56 accidentally brought back code from old-destructive API
which was removed in
af103cf3 and
08c13007
There is no per track NonLayered record mode anymore, it's session global.
- set can_record correctly to not accidentally clear last capture sources
for cont'd recording (toggle track's rec-arm)
Robin Gareus [Sat, 30 Sep 2017 21:38:41 +0000 (23:38 +0200)]
Disk-writer: don't record immediate/oob events
Robin Gareus [Sat, 30 Sep 2017 21:30:52 +0000 (23:30 +0200)]
Make MIDI disk-reader a bit less buggy :)
* use start/end frame
* differentiate nframes and disk_samples_to_consume
* add global Port::port_offset () when writing data.
* add a note about b0rked vari-speed ..
Robin Gareus [Sat, 30 Sep 2017 21:16:04 +0000 (23:16 +0200)]
Immediate-event/out-of-band injection update & tweak clearing buffers
Immediate events are used for MIDI-Panic and to inject GUI generated
events e.g. patch-changes, note-events from the track-header
(scroomer-keyboard) and patch-change audition.
Current behavior:
- snapshot copy immediate events from ringbuffer into a buffer at
the beginning of each the cycle.
- Inject immediate events into input-buffer directly after reading the input
- process "normally"
- pass immediate event-buffer to disk-writer, so it can skip them
(don't write immediate events to disk)
- if the Route is not monitoring input: clear buffer before disk-reader
and re-inject (original) immediate events after the disk-reader
- immediate events process normally and are also sent to outputs.
Robin Gareus [Sat, 30 Sep 2017 20:44:44 +0000 (22:44 +0200)]
MIDI debugging.
Robin Gareus [Sat, 30 Sep 2017 16:56:54 +0000 (18:56 +0200)]
Remove unused IO::process_input() API
This was only needed in order to run the meter on inputs when Ardour did
no processing at all.
Robin Gareus [Sat, 30 Sep 2017 16:54:47 +0000 (18:54 +0200)]
NO-OP, re-order code, put all *roll() methods next to each other.
Robin Gareus [Sat, 30 Sep 2017 16:53:02 +0000 (18:53 +0200)]
First part of consolidating ::roll(), ::no_roll()
This moves common code (get and fill buffers) into ::passthru()
and renames ::passthru() to ::run_route().
passthru_silence() is no longer used (it was only needed A5 style
Track::no_roll_unlocked for no-roll + disk-monitoring)
Robin Gareus [Sat, 30 Sep 2017 16:46:24 +0000 (18:46 +0200)]
remove unused Route::_silent
Robin Gareus [Sat, 30 Sep 2017 16:01:45 +0000 (18:01 +0200)]
Remove Input-meter special-case
Now that disk is no longer topper-most but a processor, the special
case is no longer needed.
Robin Gareus [Sat, 30 Sep 2017 14:48:30 +0000 (16:48 +0200)]
Re-initialize MMC devices when the preference is enabled
Robin Gareus [Sat, 30 Sep 2017 14:45:45 +0000 (16:45 +0200)]
Towards fixing no_roll()
Currently ::roll() may actually be a ::no_roll() under some circumstances.
This can also happen during count-in:
transport_stopped () == transport_rolling()
and during latency-preroll:
Global session-transport speed != 0, some tracks already roll,
read data from disk and feed latent plugins.
but other non-latent tracks or busses don't roll and still have to
behave like the switch from no_roll() to roll() has not yet happened.
This changes the game WRT to monitoring as well, previously, Route:roll()
called Route::no_roll_unlocked () for conditions outlined above.
Now Track::no_roll_unlocked is called and in some cases wrongly clears
the buffers before the signal hits the disk-writer. (more work is needed
related to
61f8e53b)
On the upside this also fixes an issue with MidiTrack::no_roll not keeping
a lock while pushing data into the step-edit-ringbuffer.
This is also a step towards consolidating all entry points:
::roll(), ::no_roll(), ::silent_roll() in the Route class.
Robin Gareus [Sat, 30 Sep 2017 11:10:17 +0000 (13:10 +0200)]
Fix thinko in
8139becb -- route split cycle
Individual Routes cannot split the process-cycle in no_roll(); roll()
by themselves. Each of the calls will flush output buffers (and offset
port-buffers). If a route feeds another route the inputs of the other
route will only see partial data.
Robin Gareus [Sat, 30 Sep 2017 03:35:12 +0000 (05:35 +0200)]
Disk-reader don't silence buffers when not rolling
Doing so may clear out-of-band data which is injected into the
data-stream.
Robin Gareus [Sat, 30 Sep 2017 03:25:27 +0000 (05:25 +0200)]
Fix MIDI port offsets.
AudioPort::get_audio_buffer() can offset the buffer simply by offsetting
a pointer. This allows to get an offset buffer for a given port.
For MIDI there's no such concept. A method writing to a MIDI buffer
which is backed by a Port can at best offset it by the global port-buffer
offset (static Port::port_offset), but not by the individual target port's
offset.
Robin Gareus [Sat, 30 Sep 2017 00:45:13 +0000 (02:45 +0200)]
Align punch in/out recording with latency-compensation
Robin Gareus [Fri, 29 Sep 2017 19:15:51 +0000 (21:15 +0200)]
Robin Gareus [Fri, 29 Sep 2017 19:05:46 +0000 (21:05 +0200)]
remove cruft
Robin Gareus [Fri, 29 Sep 2017 19:05:39 +0000 (21:05 +0200)]
git ignore patch-error/orig files
Robin Gareus [Fri, 29 Sep 2017 19:05:06 +0000 (21:05 +0200)]
remove *.orig files (accidentally added in
cba53a202)
Robin Gareus [Fri, 29 Sep 2017 19:01:50 +0000 (21:01 +0200)]
Remove unused punch+preroll API
This API was not used, also superseded by record w/preroll.
Robin Gareus [Fri, 29 Sep 2017 04:48:27 +0000 (06:48 +0200)]
Convert Diskstream/Playlist from A5 session format
Robin Gareus [Fri, 29 Sep 2017 04:32:04 +0000 (06:32 +0200)]
remove cruft
Robin Gareus [Thu, 28 Sep 2017 02:25:50 +0000 (04:25 +0200)]
Add DiskIOProc & Latency related Lua bindings & scripts
Robin Gareus [Fri, 29 Sep 2017 02:17:16 +0000 (04:17 +0200)]
Aux-Send Latency compensation, part 2 & code-consolidation
Robin Gareus [Fri, 29 Sep 2017 02:06:40 +0000 (04:06 +0200)]
Update Send: Include internal 'thru' delay-line
This allows to push latency upstream and delay the source
in case the destination has a longer latency.
Also add a signal to notify the Session in case this happens, intended
to queue a latency-recompute.
Robin Gareus [Thu, 28 Sep 2017 14:06:57 +0000 (16:06 +0200)]
Aux-Send Latency compensation, part 1: latent sources
Robin Gareus [Fri, 29 Sep 2017 02:13:57 +0000 (04:13 +0200)]
Update Timecode Generator/Slave alignment
Robin Gareus [Fri, 29 Sep 2017 02:07:20 +0000 (04:07 +0200)]
Delayline: report if set_delay() actually changed the delay
Robin Gareus [Thu, 28 Sep 2017 13:45:12 +0000 (15:45 +0200)]
Delayline naming -- for debug purposes
Robin Gareus [Tue, 26 Sep 2017 15:49:24 +0000 (17:49 +0200)]
Properly aligned export (Stem + Session)
Delay ports being exported by their playback latency.
Robin Gareus [Thu, 28 Sep 2017 04:12:31 +0000 (06:12 +0200)]
Remove unused mechanism
Robin Gareus [Fri, 29 Sep 2017 02:44:00 +0000 (04:44 +0200)]
Update the Metronome, align to output
Robin Gareus [Thu, 28 Sep 2017 04:31:12 +0000 (06:31 +0200)]
Ongoing work on latency compensation
The general goal is to align transport-sample to be the audible frame
and use that as "anchor" for all processing.
transport_sample cannot become negative (00:00:00:00 is the first audible
frame).
Internally transport pre-rolls (read-ahead) before the transport starts
to move. This allows inputs and disk to prefill the pipeline.
When starting to roll, the session counts down a global "remaning preroll"
counter, which is the worst-latency from in-to-out.
Each route in turn will start processing at its own output-latency.
Route::process_output_buffers() - which does the actual processing
incl disk i/o - begins by offsetting the "current sample" by the
route's process-latency and decrements the offset for each latent
processor. At the end of the function the output will be aligned
and match transport-sample - downstream-playback-latency (if any).
PS. This commit is a first step only: transport looping & vari-speed have
not yet been implemented/updated.
Robin Gareus [Thu, 28 Sep 2017 04:08:30 +0000 (06:08 +0200)]
Add API to query IO latencies
IO::connected_latency() is relevant once Ardour publishes individual
per Port latency.
IO::public_latency() is only for debug purposes.
Robin Gareus [Thu, 28 Sep 2017 04:04:58 +0000 (06:04 +0200)]
Add Processor API for global session-transport alignment
These are only relevant for DiskIO Processors, however more
use-cases may present themselves (e.g. LuaDSP)
Robin Gareus [Thu, 28 Sep 2017 03:57:57 +0000 (05:57 +0200)]
Prepare removal of initial_delay
Robin Gareus [Thu, 28 Sep 2017 03:54:42 +0000 (05:54 +0200)]
clean up route header, NO-OP (except variable re-order)
Robin Gareus [Wed, 20 Sep 2017 21:12:03 +0000 (23:12 +0200)]
NO-OP: Whitespace
Robin Gareus [Thu, 28 Sep 2017 02:42:13 +0000 (04:42 +0200)]
Remove code related to capture-offset.
Robin Gareus [Sat, 23 Sep 2017 22:54:26 +0000 (00:54 +0200)]
No more disk-reader roll-delay
It was not working in sdio/6.0-pre anyway and with upcoming changes to
latency compensation the concept of per disk[stream/reader] will go away.
John Emmas [Thu, 28 Sep 2017 11:23:53 +0000 (12:23 +0100)]
Check in a few MSVC projects to accommodate the change from libtimecode to libtemporal
This is mostly to see if there'll be any problems when merging these changes into Mixbus. I'm guessing there'll be some conflicts in these projects (and a lot more to follow...)
John Emmas [Thu, 28 Sep 2017 11:19:34 +0000 (12:19 +0100)]
Accommodate newly added/removed source(s) in our MSVC project (libwidgets)
John Emmas [Thu, 28 Sep 2017 11:19:10 +0000 (12:19 +0100)]
Accommodate newly added/removed source(s) in our MSVC project (libtemporal)
John Emmas [Thu, 28 Sep 2017 09:21:54 +0000 (10:21 +0100)]
Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to 'libs/temporal/MSVCtemporal/temporal.vcproj'
John Emmas [Thu, 28 Sep 2017 09:18:53 +0000 (10:18 +0100)]
Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal'
Robin Gareus [Thu, 28 Sep 2017 11:14:11 +0000 (13:14 +0200)]
Propagate Latency to backend/system ports (Dummy backend)
amend
ab3889ff (which implements this for other backends)
Robin Gareus [Wed, 27 Sep 2017 18:03:08 +0000 (20:03 +0200)]
Update session-utils Readme
Robin Gareus [Wed, 27 Sep 2017 16:50:24 +0000 (18:50 +0200)]
Minor refinement of new session util
Robin Gareus [Wed, 27 Sep 2017 16:22:49 +0000 (18:22 +0200)]
Add session-util to create a new empty session
Robin Gareus [Wed, 27 Sep 2017 03:03:10 +0000 (05:03 +0200)]
More s/frame/sample/ -- Lua Scripts
Sadly this breaks existing loaded scripts. C'est la vie.
Robin Gareus [Tue, 26 Sep 2017 18:49:50 +0000 (20:49 +0200)]
Another Lua example script
* Track template
* MIDI track creation
* Adding plugins and setting parameters
* Dialogs
Robin Gareus [Tue, 26 Sep 2017 15:39:42 +0000 (17:39 +0200)]
Export needs to offset buffers when processing partial cycle
Robin Gareus [Tue, 26 Sep 2017 15:39:00 +0000 (17:39 +0200)]
Fix FixedDelayline, default configuration increased set max-delay
Paul Davis [Mon, 25 Sep 2017 16:13:46 +0000 (12:13 -0400)]
change libtemporal to be versioned like all others
Paul Davis [Mon, 25 Sep 2017 15:12:32 +0000 (11:12 -0400)]
additional changes to follow library name change from timecode -> temporal
Robin Gareus [Mon, 25 Sep 2017 03:21:53 +0000 (05:21 +0200)]
Retire ClickBox + AutoSpin
After over 17 years of honorable service to the Ardour Codebase.
ClickBox and AutoSpin are retiring into the git nirvana.
We're glad for the duty, decency, reliability, dignity, respect which
these classes brought to Arodur and look back in gratitude on their years
of service.
PS. First one to say "cruft" will be fired.
Robin Gareus [Mon, 25 Sep 2017 03:22:05 +0000 (05:22 +0200)]
Remove unused ClickBox
Julien "_FrnchFrgg_" RIVAUD [Sun, 24 Sep 2017 19:37:19 +0000 (21:37 +0200)]
Simplify the logic of on_scroll_event
Julien "_FrnchFrgg_" RIVAUD [Sun, 24 Sep 2017 19:20:20 +0000 (21:20 +0200)]
Make ArdourFader's scroll handler obey to Alignment increments
Currently, the scroll handler obeys to the page increment, but instead
of using the step increment for more precise scroll, it uses an
hardcoded one tenth of the page increment.
Use the step increment instead since it has been filled with sensible
values by ArdourFader's users.
Robin Gareus [Sun, 24 Sep 2017 19:10:31 +0000 (21:10 +0200)]
Fix computation of AutomationController steps
smallstep (resp. largestep) is intended to be the interface delta
corresponding to a desc.smallstep (resp. largestep) in internal scale,
and is computed by incrementing from desc.lower.
But ac->internal_to_interface(desc.lower) isn't necessarily zero. In
fact it currently is 0.5 / (M - m + 1) for integer parameters where M is
the maximum and m is the minimum possible value since it is the center
of the [0,1/(M-m+1)] interval.
Since the lower bound of the delta isn't always zero, don't ignore it
when computing the actual increment.
Paul Davis [Sun, 24 Sep 2017 20:13:07 +0000 (16:13 -0400)]
fix ardev and friends to use new libtemporal
Paul Davis [Sun, 24 Sep 2017 16:57:27 +0000 (12:57 -0400)]
fix header order and space alignment
Paul Davis [Sun, 24 Sep 2017 16:03:54 +0000 (12:03 -0400)]
convert codebase to use Temporal for various time types
Paul Davis [Sun, 24 Sep 2017 16:03:13 +0000 (12:03 -0400)]
new header file for audio-based time types