13
0
Commit Graph

12232 Commits

Author SHA1 Message Date
4985f0d7ae Include last sample in reverse test for nonsilence in end trim during export 2016-12-06 20:55:17 +10:00
b7bee5c903 Fix Multi Duplicate for a Range Selections
As mentioned in the previous commit
2016-12-06 14:06:18 +10:00
bd52d4e328 Fix issues in export with trim enabled
A complete reimplementation of AudioGrapher::SilentTrimmer::process to support
trimming the beginning and end in the same processing block

Fix export with trim end enabled to actually trim silent frames

Only add silence to beginning or end of export data if data was written

Should resolve: #6412
2016-12-06 13:44:19 +10:00
568cf861f9 Rename AudioGrapher::SilentTrimmer method to reflect behaviour
Unlike many of the other uses of the term "frame" this is actually returning
the index to the first sample in the interleaved frame that contains
non-silence.
2016-12-06 13:43:10 +10:00
2c67e71e98 Always signal writing to file is complete at end of the export process
With end trim enabled, the only case that would successfully export was if
there was at least some samples above the silence threshold in the last export
processing block.

The issue was that the EndOfInput flag was not being passed to
AudioGrapher::SndFileWriter::process which would then call sf_write_sync and
emit the FileWritten signal to start post processing. Fix that by always
passing the EndOfInput flag in the last export process cycle.

Related: #6412
2016-12-06 13:43:09 +10:00
6784923a05 Fix export silence threshold by using a constant value for now
All float values defined in the CONFIG_VARIABLE macro seem like they are cast
to at some stage before writing (another issue that needs addressing). The
default value for export-silence-threshold (-INFINITY) is converted to a value
of 0 and as a result nothing is exported with trim enabled.

Use the same fixed silence threshold as Mixbus until proper bounds checking and
GUI is in place.

Related: #6412
2016-12-06 13:41:17 +10:00
9e794af3ea Add script to run audiographer tests 2016-12-06 13:20:54 +10:00
62672fa259 add another useful PluginInsert binding 2016-12-06 00:22:24 +01:00
ed5a46d214 Fixup 08fffef (consistent class name) 2016-12-05 23:49:19 +01:00
7f9befae2d Add Lua bindings to manage Groups 2016-12-05 23:49:19 +01:00
3cc644b467 set AtomObject body ID to zero (as per spec when unused) 2016-12-05 15:43:54 +01:00
388765e8ce Remove boost_system test kludge 2016-12-04 19:15:29 -05:00
5ab2e34b2c Update evoral test suite 2016-12-04 18:49:56 -05:00
9a848d5ba6 Fix configuration 2016-12-04 18:26:30 -05:00
1438191938 Improve coverage of evoral tests 2016-12-04 15:40:21 -05:00
9dbc524060 Improve coverage of evoral tests 2016-12-04 15:17:08 -05:00
9aac954744 Add missing include 2016-12-04 15:16:08 -05:00
b51321bd7d Make libpbd and evoral capable of standalone build
Just an update to slightly rotten wscripts, shouldn't be any changes during an
ardour build.  Motivation being a short development cycle for working on evoral
and/or its test suite.
2016-12-04 15:15:11 -05:00
7d2ed46b63 Remove dead/annoying/unsafe code
Note the old Note::operator= was unsafe, since it made shallow copies of the on
and off events, which results in a double delete of events when the notes are
destructed.
2016-12-04 15:10:05 -05:00
11464bfb18 Skip testing example lua scripts which are not bundled 2016-12-04 17:50:34 +01:00
454df30ae5 Fix Sequence test 2016-12-03 15:49:13 -05:00
d17f58e531 Remove dead code 2016-12-03 15:28:23 -05:00
398a318934 Fix event type and parameter type confusion
I'm not sure if this is really the best way to do event types (should it
just be a completely static enum in evoral, or completely dynamic and
provided by the type map, or a mix like currently?), but previously the
event type was frequently set to either total garbage, or parameter
types, which are a different thing.

This fixes all those cases, and makes Evoral::EventType an enum so the
compiler will warn about implicit conversions from int.
2016-12-03 15:28:19 -05:00
bfbc4566ad Fix warnings 2016-12-03 15:27:38 -05:00
08fffeffec Remove Evoral::MIDIEvent
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions.  However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).

In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
2016-12-03 15:18:21 -05:00
875b1367b2 Factor out and extend MIDIXML implementation 2016-12-03 15:18:20 -05:00
0f5a73a7fd Fix Sequence/Event const-correctness issues 2016-12-03 15:18:20 -05:00
b433874019 update summary & connection-matrix colors when route-color changes 2016-12-01 15:51:25 +01:00
Olivier Humbert
e44e1f6227 One fix. 2016-11-30 22:25:46 +01:00
Olivier Humbert
059bbbf23f French translation update 2016-11-30 20:31:32 +01:00
Olivier Humbert
193a0c7671 French translation update
more translation + fixes
2016-11-30 20:24:52 +01:00
f1f47664ff fix compilation with newer version of *mm and gcc-6.2 (RefPtr<> cast) 2016-11-30 16:00:05 +01:00
24c799cde3 prefer bool operator 2016-11-30 12:15:35 +01:00
David Carlier
be7c6225c8 moving POSIX_VISIBLE to the waf script part 2016-11-29 13:18:46 +00:00
David Carlier
28435d1a30 Making buildable under OpenBSD. 2016-11-29 13:18:46 +00:00
5f1d94a7b2 Protect a-comp's display/state against NaN/Inf. 2016-11-29 09:04:13 +01:00
0fe62a34da protect a-delay again Inf, NaN, HUGE and stuff. 2016-11-29 08:41:10 +01:00
7b687d08a1 properly handle FS pitch-bend - closes #7140 2016-11-28 12:53:20 +01:00
2614b0df43 OSC: Solo toggle should maintain state when locked, rec and rec_safe should show true state. 2016-11-27 20:52:14 -08:00
e9eea8de9d Fix Duplicate Track with Copy Playlist option selected
Previously two new empty playlists were created.

Related to and mentioned in issue #7141
2016-11-28 12:38:58 +10:00
8ddeca133b OSC: Squelch select feedback when no feedback is configured. 2016-11-27 18:32:50 -08:00
f50ab8ccec Fix duplicate track with new playlist so only one playlist is created
Instead of 2 empty playlists, thanks to elgoun for the patch

Resolves: #7141
2016-11-28 10:57:06 +10:00
1de584961a NO-OP; Backport changes from Mixbus branch 2016-11-27 22:54:23 +01:00
2f30d763ed Fix loading, recording & saving MIDI with PolyKeyPressure events.
GUI still does not handle this (neither automation lane, nor List Editor),
but the file loads, plays and exports correctly.
2016-11-27 17:25:42 +01:00
9bf4f339b9 revert 335debfa for the PA backend
The same device may have different names for input + output
2016-11-27 00:42:08 +01:00
d26aac9020 OSC: no op, white space cleanup 2016-11-26 10:23:36 -08:00
c7f8471d52 OSC: Make plugin and plugin parameter numbering 1 based to match everything else. 2016-11-26 09:18:36 -08:00
842c33fba8 Add [hidden] option to list "Dummy" backend with optmized bundles 2016-11-26 15:31:21 +01:00
335debfa2f Add API to enforce valid device selection. 2016-11-26 15:31:21 +01:00
5bf8a5537b OSC: Add patch from 7137 and make it work for manual port selection. 2016-11-25 10:10:49 -08:00
4d81e3ec07 RAII to postpone processor changes/graph recalculation 2016-11-25 18:16:08 +01:00
98f1cb76ed OSC: Patch from 7136 added cleaned and tested. 2016-11-25 07:26:18 -08:00
174d5e05c9 when duplicating tracks and copying playlists, use a new name for the copied playlist 2016-11-25 13:19:38 +00:00
fa642e0e9d Fix forwarding of output-buffers.
fbc8504f9e swapped the iterators: Instead of iterating over output
buffers like BufferSet::read_from(), the new code iterates over
the current buffers. In case of 1 in -> 2 out, only the 1st channel
was be copied.  Also unlike BufferSet::read_from() the ChanCount was
not updated.

Processors after a Delivery e.g. out-meter, AFL processor did not see
all channels.
2016-11-25 13:26:38 +01:00
0d9030cee1 make the session do the right thing when clearing solo state during non-loading conditions 2016-11-25 11:50:39 +00:00
bb8ddc4322 remove redundant (identical) 2nd conditional, and improve comment 2016-11-25 11:50:08 +00:00
4ecb48b055 when clearing route solo state, do the required update 2016-11-25 11:49:30 +00:00
17e803fef4 Do not try to restore Route solo state after clearing all solo state 2016-11-25 11:48:58 +00:00
9f3bcf968d fix implementation of SoloControl::clear_all_solo_state()
This no longer emits Changed() unless a change was made, and more
importantly, calls AutomationControl::actually_set_value() if
the self-soloed value needs to be changed
2016-11-25 11:48:18 +00:00
c5eda4cfe1 provisional changes to speed up solo changes to large numbers of routes.
Moves global update of solo state and emission of Session::SoloChanged to
a single point after 1 to N solo controls are changed.

Also avoid unnecessarily emitted Activated() signal for listen controls,
though Process::{activate,deactive}() should probably be redesigned to
avoid this in a "deeper" way
2016-11-25 10:29:42 +00:00
e35ce4c002 Speed up AFL/PFL changes for large sessions
update_latency_compensation() and resort_routes() are expensive and
were called for every individual change.
2016-11-25 10:41:23 +01:00
a7210d256e _maps_from_state is legal after unfreeze (restore state) 2016-11-24 21:58:50 +01:00
bc0fa4d689 Fix mysterious crashes such as #7049
Fixes an issue with corrupted std::lists<> due to concurrent writes
to the invalidation list which eventually resulted in
EventLoop::invalidate_request() not invalidating requests.
Concurrency sucks rocks hard.
2016-11-24 09:02:47 +01:00
Edgar Aichinger
dbd8909fad catch up with .de translation 2016-11-23 14:12:57 +01:00
nick_m
3a362563a4 constify some TempoMap functions. 2016-11-23 01:45:43 +11:00
nick_m
11090b2e01 remove set but not used variable in tempo.cc 2016-11-22 22:51:10 +11:00
nick_m
b53ea4ea0e amend 66488e117 - BBT clock scrolling handles multiple audio-locked meters. 2016-11-22 03:17:01 +11:00
nick_m
66488e1174 TempoMap::bbt_duration_at() handles an audio-locked meter.
- fixes some odd results when scrolling down/up over the BBT clock display.
2016-11-22 00:29:53 +11:00
Edgar Aichinger
979d5d12f3 update german translation 2016-11-20 23:29:03 +01:00
nick_m
5b8e213ff9 fix typo in tempo.cc 2016-11-21 07:08:04 +11:00
33a67c26be Allow to call ARDOUR.DSP Lua functions from UI scripts 2016-11-19 21:56:52 +01:00
97f81479d3 fix ambiguity 2016-11-19 01:36:34 +01:00
b4b600a7b8 Generally speaking we use Glib::usleep() now in preference to standard ::usleep() 2016-11-18 20:01:43 +00:00
ed7b6fee0c Remove the MSVC 'poll()' emulation now that Ardour's stopped using poll() 2016-11-18 18:19:08 +00:00
3e3791b72e OSC: mark session dirty if setup changes 2016-11-18 08:43:58 -08:00
1015e19ad3 OSC: issue 7116 fix send enable not working 2016-11-18 07:53:40 -08:00
d624bac38e Recursively scan for MacVSTs 2016-11-18 02:36:04 +01:00
nick_m
c37d31054b remove thinko in MidiRegion::post_set().
- should fix incorrect midi region length on split.
2016-11-18 06:48:44 +11:00
cbd1a25f8c Fix track-templates with sidechains -- closes #7117 2016-11-17 16:31:40 +01:00
9298ad856a fix type in prev. commit 2016-11-17 14:08:26 +01:00
170380fda9 Add runtime option to disable MacVST 2016-11-17 14:06:45 +01:00
08f94c0878 Allow to migrate sessions with VST plugins 2016-11-17 14:06:41 +01:00
cc72cff504 try VST2.4's VSTPluginMain first
This fixes a crash with loading u-he Diva on windows.
2016-11-17 13:03:36 +01:00
cd5a319e48 fix mingw64 debug build 2016-11-17 12:58:28 +01:00
4c8380ce75 fix 32bit+PPC OSX builds 2016-11-16 17:25:02 +01:00
f6bdb4bb3c update MSVC project in the wake of cf1651e6 2016-11-15 23:11:50 +01:00
nick_m
586882f86c a better fix for 6ed8c113a2 (scope) 2016-11-16 05:18:35 +11:00
nick_m
6ed8c113a2 Region:;set_state() should always set quarter_note.
- fix for 4.x sessions showing notes stacked at session start.
2016-11-16 05:03:14 +11:00
cf1651e6d7 consolidate VSTState functions 2016-11-15 17:10:13 +01:00
f944c24c4b Accommodate a newly introduced source file in our MSVC project (libardour)
(although I'm not sure if it's actually used yet in the Windows build).
2016-11-15 11:12:25 +00:00
15161d641d really fix windows compilation. 2016-11-15 03:25:32 +01:00
694de29953 amend 5dc2497100 ...get the windows version to compile.
eventually vststate_init() needs cleaning up, but not tonight.
2016-11-15 03:21:02 +01:00
5dc2497100 rework 8e3b6c9ac (fstwin is C code, not C++) 2016-11-15 02:49:41 +01:00
4e8d705d99 fix another typo (f30fbcaaf) 2016-11-15 01:18:10 +01:00
3e7d620c9c Fix some typo. 2016-11-15 00:44:13 +01:00
d10913e2de Fix intermittent hang when stopping PortaudioBackend
This issue is not always reproducible but when it does occur it happens
somewhat consistently on both 32bit and 64bit builds(Tested on Windows 7).

The midiOutReset call does not return (or it takes so long that it might as
well be indefinite) and as it is not strictly necessary just remove it.

Resolves: http://tracker.ardour.org/view.php?id=7095
2016-11-15 09:36:52 +10:00
35de5080a6 add signal for VST state load
MacVST has no dedicated VST event-loop to directly handle this.
2016-11-15 00:32:59 +01:00
f30fbcaaf9 Fix VST state-lock SNAFU (effSetChunk and process are exclusive) 2016-11-14 21:06:18 +01:00
8e3b6c9ac6 consolidate VSTState initialization 2016-11-14 21:06:18 +01:00
48c470d51d Pass const references to plugin-list 2016-11-14 21:06:18 +01:00
63f86b1314 Later code depends on prev_t not being NULL, use an assert() 2016-11-14 16:47:22 +01:00
e4e2d92649 tempo map cannot be empty (help static analyzer) 2016-11-14 16:47:19 +01:00
37137d5b3c fix LV2 state versioning with session-templates 2016-11-14 01:40:57 +01:00
1d60986283 const'ness FTW 2016-11-14 01:14:11 +01:00
8975f6c8d2 register some missing enums 2016-11-14 01:14:06 +01:00
aee2606b28 VST set defaults only once (initially)
Opening the generic plugin UI or re-opening the GUI will call
get_parameter_descriptor() again, and replace the defaults with
current values.
2016-11-13 18:48:33 +01:00
ec31741ee6 copy VST state on copy construction
This fixes issues with replicate instances & plugin-analysis instances
not using the same set of parameters.
2016-11-13 16:35:06 +01:00
8b93fb02f3 Mac VST-2.x support 2016-11-13 16:35:06 +01:00
43bd7f5db1 fix const-cast 2016-11-12 16:20:43 +01:00
a32a272709 VST buffer paranoia 2016-11-11 16:40:01 +01:00
nick_m
50d12abeab fix compilation on osx 2016-11-11 21:35:13 +11:00
2f8ccb5732 Remove a group when the last track in the group is removed 2016-11-10 23:57:47 +01:00
ddd79819dc Correct the #includes for 'ardour/midi_cursor.h' (see commit #ec12fccf08)
There are a couple of header files where we use a reference to class ARDOUR::MidiCursor (rather than a pointer). To keep MSVC happy we need to #include its header file, rather than simply using a forward reference.
2016-11-10 19:31:26 +00:00
nick_m
bf416cb91e remove debugging output 2016-11-11 03:37:08 +11:00
nick_m
425fe93fde remove unused variable and debugging. 2016-11-11 03:37:08 +11:00
nick_m
d9dea0a3aa rename Region pos_beats -> quarter_note 2016-11-11 03:37:08 +11:00
nick_m
3816ee4e92 more tempo documentation. 2016-11-11 03:37:08 +11:00
nick_m
4e41b71a4e ensure non-zero midi region length when tempo map changes. 2016-11-11 03:37:08 +11:00
nick_m
a5dc7a01d3 TempoSection note-types-per-minute node name goes back to beats-per-minute for now. 2016-11-11 03:37:08 +11:00
nick_m
e8042f5843 use note_type explicitly when constructing a Tempo in the hope that others follow.
- should be a no-op
2016-11-11 03:37:08 +11:00
nick_m
5aafb0b534 remove recently added xml nodes. 2016-11-11 03:37:08 +11:00
nick_m
43f79cb00c use frame interval api for empoMap::framepos_plus_qn() 2016-11-11 03:37:08 +11:00
nick_m
35ec9b33cf clarify bbt_at_frame() warning. 2016-11-11 03:37:08 +11:00
nick_m
b025f8e42a rename note_divisions_per_minute -> ote_types_per_minute (double note_type) 2016-11-11 03:37:08 +11:00
nick_m
0b7db6ebbb add empoMap::quarter_notes_between_frames().
- in an ideal world, this wouldn't be here at all,
	  but is required to support framewalk_to_qn().
	  if Beats are at tick resolution, the frame-induced
	  temporal rounding is acceptable.
2016-11-11 03:37:08 +11:00
nick_m
a432f6585c TempoSection::tempo_at methods return a Tempo, document the opposite direction. 2016-11-11 03:37:08 +11:00
nick_m
3ee59cf499 audio units uses quarter_notes_per_minute(). 2016-11-11 03:37:08 +11:00
nick_m
33e95a1577 rename Tempo _beats_per_minute to _note_types_per_minute, provide pulse helpers.
- adds quarter_notes_per_minute(), note_divisions_per_minute (double)
	  pulses_per_minute() and frames_per_quarter_note()

	- this should be a no-op except for the use of tempo by
	  the vst callback which definitely uses quarter notes per minute.

	- the XML node for TempoSection named 'beats-per-minute'
	  has been renamed.
2016-11-11 03:37:08 +11:00
nick_m
e52f90357e tempo doc explains that currently Tempo::beats_per_minute means something else.
- Tempo beats_per_minute() is currently implemented as note types per minute.
	  a further patch will change Tempo to reflect this and provide some helpers.
2016-11-11 03:37:08 +11:00
nick_m
2f593e3af9 remove commented code. 2016-11-11 03:37:08 +11:00
nick_m
9df27844fc more tempo documentation. 2016-11-11 03:37:08 +11:00
nick_m
5788f42438 fix lock error in empoMap::quarter_note_at_bbt_rt(), expand constant tempo test. 2016-11-11 03:37:08 +11:00
nick_m
93ca7b42fb remove unused TempoMap::tempo_at_beat(). implement unused tempo_at_quarter_note(). 2016-11-11 03:37:08 +11:00
nick_m
99e707217b tempo.h reorganization. should be a no-op 2016-11-11 03:37:08 +11:00
nick_m
9674b15358 more documentation in tempo.cc, fix constant bug in pulse_at_tempo_locked() 2016-11-11 03:37:08 +11:00
nick_m
1fa7c0d829 remove remaining frame api from TempoSection. 2016-11-11 03:37:08 +11:00
nick_m
594137f5cc remove public pulse methods from TempoMap.
- the only object whose musical position is not expressed in
	  quarter notes is MetricSection.
	  there is now no need to expose this.
2016-11-11 03:37:08 +11:00
nick_m
3db68b4f9e add some documentation for TempoMap. 2016-11-11 03:37:08 +11:00
nick_m
dca96d8b5d rename Region pulse to pos_beats. use new beat distance api where required.
- add more debugging output detecting regions whose
	  beat and frame position do not align on a playlist.
	  this is required as a check as we have never used
	  frame rounding on constant tempi before 8884a5723dc
2016-11-11 03:37:08 +11:00
nick_m
ac23496b40 MidiRegion _start/_length beats are frame based only when lock style is Audiotime 2016-11-11 03:37:08 +11:00
nick_m
0e867b544b Refactor tempo api, include quarter-note distance in frames method.
- moves frame rounding up to TempoMap, which is needed
	  in order to calculate pulse distance without frame rounding.

	- the time unit for tempo is still minute, but this now also
	  applies to meter sections. (new audio locked meter sections no
	  longer require a frame position).

	- there is no longer a discontinuity
	  in the pulse for audio-locked meter/tempi.

	- temporarily add debugging output in Region::set_position()
	  to test for region beat not matching region frame.
2016-11-11 03:37:08 +11:00
ec12fccf08 #include <ardour/midi_cursor.h> in a couple of places
I'm not entirely sure why it's needed in 'smf_source.cc' but MSVC fails to link the compiled module if I don't #include it ?!?
2016-11-10 12:20:53 +00:00
8b5fad0cf9 Use better debug output in PortaudioBackend
When failing to open audio stream in callback mode
2016-11-10 15:23:43 +10:00
ed09a68f24 Fix for conflicting definition of _xgetbv with mingw-w64 >= 5
Simplify the #ifdef logic so it is easier to follow and add exceptions in the
future if necessary.
2016-11-10 15:23:43 +10:00
781d88e4ed Add AU support for output-channel/bus grouping 2016-11-10 05:02:31 +01:00
d253d49739 NO-OP, explanatory comments 2016-11-10 01:45:00 +01:00
da937cf1a4 Grow luabindings
* expose Route IOs, Panner and Instrument
* add plugin + processor ChanCount
* bind IOPortDescription
* remove Port::**(Port*) API because there's no Port* but only
boost::shared_ptr<Port>
2016-11-10 01:32:02 +01:00
ef3fa314f0 Parse PortGroups into Plugin::IOPortDescription 2016-11-10 01:31:56 +01:00
c61373212a Support multiple readers for MIDI source/model
Fixes the multiple reader issue #6541 properly without resorting to a
linear search kludge.

All the read state has been pulled out into a MidiCursor which the
caller is required to pass.  The playlist keeps cursors for all the
regions it is reading, any number of cursors are allowed at a time.

MidiCursor should probably be made a smarter and more fool-proof
object (and/or possibly merged with some of the other tracker/fixer
stuff) but for now I wanted to keep it simple.
2016-11-08 20:34:45 -05:00
72297c0ca3 Remove dead code 2016-11-08 13:52:44 -05:00
5438c94765 Honor VST "Synth" Category for now...
..until we find a backwards compatible way to save/load effFlagsIsSynth
in the cache info files.
2016-11-08 13:30:09 +01:00
6fb099a88b make auto track naming make a bit more sense 2016-11-07 11:08:00 -08:00
ea10a896c6 Fix LV2 state:StateChanged URI 2016-11-07 07:10:08 -05:00
91c2527f5c OSC: Fix default strip types to include Auxes. 2016-11-04 12:10:37 -07:00
8fb8e1bbde make ControlProtocolManager actually handle control protocols that fail to activate 2016-11-03 20:24:09 +00:00
3abdef2637 fix LTC-generator 24h wraparound 2016-11-02 19:24:46 +01:00
77c9106769 OSC: Make Aux buses able to be separate. 2016-10-30 17:50:38 -07:00
3f0130f8ea Fix crash when instrument instantiation fails on track creation. 2016-10-31 00:35:53 +01:00
a994fd30bd extend Mixbus' "Safe Mode" 2016-10-30 22:25:18 +01:00
e08c80370c Fix midnam replacement:
Unloading before update may otherwise reset the patch to
generic midi (when the current patch is no longer available)
2016-10-30 21:24:26 +01:00
2a0aadfd97 remove debug output 2016-10-30 17:39:55 +01:00
db2d238cec Update prototype API (3f739738) for windows/dll compat
memory allocated by a .dll must be free()d by the given dll.
2016-10-30 17:39:55 +01:00
0ea9270a4b avoid C++11 (and remove debug output) 2016-10-30 04:51:31 +01:00
3f73973806 Prototype LV2 extension for plugins to provide Midnams 2016-10-29 19:57:43 +02:00
f8167ebe20 Prepare for the day when MTAV does no longer force-override InstrumentInfo 2016-10-29 19:57:43 +02:00
0332c127cd Allow to dynamically un/load Midnam Patches 2016-10-29 19:57:43 +02:00
06700cb2f4 Allow to construct a XML tree from a text buffer 2016-10-29 19:57:43 +02:00
5ed764178a Fix crash with empty patch-names.
An empty text will not produce a bounding box.
2016-10-29 19:57:43 +02:00
c5d4900ea4 a-fluidsynth: fix off-by one. Assign all MIDI channels if possible 2016-10-29 19:57:43 +02:00
9d63002d2f OSC: Slow down data storm at surface refresh 2016-10-29 10:56:44 -07:00
82d3842656 OSC: Add names/fader value to master and monitor. 2016-10-28 17:34:17 -07:00
e631119092 OSC: simplify int sends too. 2016-10-28 15:05:40 -07:00
d802c982cb OSC: More simplification - floats this time. 2016-10-28 14:42:56 -07:00
4eb2da491f OSC: simplify Global feedback (remove repetitive code) 2016-10-28 13:45:30 -07:00
8de0788f7b yet another waf/HIDAPI tweak 2016-10-27 15:57:47 +02:00
8d70b76059 Fix restoration of key bindings assigned to Windows+key, bug #7037
Windows key generates Mod4+Super (at least with the version of Gdk we use on
linux) so for bindings using the Windows key to work, GDK_SUPER_MASK has to be
added to modifier mask.
2016-10-26 12:03:17 +10:00
0e65852901 Desperate hack to align master-bus on export.
Another 90% solution which hopefully gives us another year :(
see comments Session::start_audio_export() for explanation.
2016-10-25 22:33:37 +02:00
nick_m
927b16aa53 don't mix framepos with quarter notes when calculating _start frames.
- quarter note precision is greater than the frame-based
	  _position. using it as a reference may cause a rounding error
	  if the region is locked to MusicTime.

	- also fixes a _start position bug when trimming midi regions.

	- we really need a better api for this kind of thing.

	- in combination with the previous two patches, this should fix
	  various missing first note issues.
2016-10-25 04:36:34 +11:00
nick_m
dfb0868847 make MidiRegion::start/length_beats() const. 2016-10-25 04:15:50 +11:00
nick_m
ce3ae4cdc9 remove unnecessary rounding from MidiSource::midi_read()
- we already have start_beats, so don't try to recalculate
	  something similar for the position comparison.
2016-10-25 04:14:14 +11:00
nick_m
20d02c4c68 expand on existing tempo tests. 2016-10-25 04:02:58 +11:00
nick_m
509d938b04 Don't recalculate region beat position on session load, fix AudioTime thinko. 2016-10-25 03:59:13 +11:00
5743013ae4 OSC fix debug logic for catchall messages 2016-10-23 19:00:20 -07:00
dd015e09a7 OSC Accept int in first parameter in path commands as well as float. 2016-10-23 18:45:25 -07:00
53e9337eba Fix HIDAPI optional (python: False vs 'False') 2016-10-24 00:51:51 +02:00
c78824aef5 Include hidapi library 2016-10-23 22:53:10 +02:00
57d1f68cd6 Introduce "virtual" async MIDI ports
This allows to flush an async MIDI port's ringbuffer at cycle-start,
to makes its data available as "input/source" during process(), while
collecting data in the background for the next cycle.

This facilitates virtual MIDI Ports for eg. Control Surface Pads:
output from a surface, input to Ardour channels.
2016-10-23 22:25:40 +02:00
7e861bd12e NO-OP: whitespace 2016-10-23 22:18:07 +02:00
7c8ab05c09 Don't add initial points for MIDI-CC
eg. import a .mid that has a CC later in the file.
Arodur wrongly added an initial point, effectively moving the event
backwards to "0" (no virgin territory)
2016-10-23 14:21:24 +02:00
6866359c48 when fetching MIDI ports for bundles and auto-connection, ignore control-only (and "virtual") MIDI ports
"virtual" is a placeholder name for ALSA sequencer MIDI through ports
2016-10-21 16:32:46 -04:00
fb200cfbb9 remove debug output 2016-10-21 16:31:53 -04:00
235c1f9adb infrastructure for save/restore of MIDI port user-provided information 2016-10-20 16:34:52 -04:00
12c558f62e tweak logic for MIDI input follows selection 2016-10-20 16:34:52 -04:00
8ac97d55c9 slight improvements in logic for midi-input-follows-selection 2016-10-19 23:17:39 -04:00
72c8ab0103 add PortManager::disconnect (std::string const&) 2016-10-19 23:17:08 -04:00
f96b698234 infrastructure for MIDI-input-follows-selection 2016-10-19 17:49:35 -04:00
0a8ab08e5f basics of following MIDI track selection and rewiring input 2016-10-19 17:49:35 -04:00
d0b2767856 NOOP: whitespacing tweak 2016-10-19 17:49:35 -04:00
8c911234e6 basics of managing a list of port names for MIDI-input-follows-selection 2016-10-19 17:49:35 -04:00
1cc561bf74 Use official LV2 state:StateChanged URI
http://lv2plug.in/git/cgit.cgi/lv2.git/commit/?id=dbb18d82136d43eec435e321bffa835ba5776d6e
2016-10-19 19:45:53 +02:00
56711b99c9 Work around OSX MIDI devices that send no timestamps 2016-10-19 19:45:53 +02:00
d29d93f4cd fix retrieval of port properties (metadata) when the value has no type 2016-10-18 16:46:33 -04:00
nick_m
715b178130 Improve bbt ruler drawing performance for large time ranges.
- when the timeline displays many bars, zoom/autoscroll
	  speed is improved by calculating the bbt ruler scale first
	  then requesting a suitably scaled grid.
2016-10-19 03:56:43 +11:00
208cb967e5 Warn about skipped MIDI events
This can occur when the MIDI readahead time is too low and events get
pushed into the MidiRingBuffer after the corresponding read.  In this
case, skip_to() gets called (as it does before every read) and the
events are silently dropped.

This is a Very Bad Thing(TM), so warn about it.  I am not sure which
other scenarios can skip events that aren't problematic, but there's
probably some.  A more sophisticated detection/reporting (or maybe even
dynamic reconfiguration) scheme would be nice here, but some false
positive messages are at least better than silently failing to play
notes and the like.
2016-10-17 20:22:26 -04:00
94f8b7b8f2 Clean up MIDI debugging output 2016-10-17 20:22:26 -04:00
69cbcb84a6 spelling corrections from Jaromír Mikeš <mira.mikes@seznam.cz>
Corresponds to https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/tree/debian/patches/0070-spelling.patch
2016-10-17 17:57:39 -04:00
c43046320b reset peak meters used in push2 when stripable goes away 2016-10-17 15:58:39 -04:00
687ac2d294 remove unused variable 2016-10-17 15:58:39 -04:00
Nathan Stewart
84c66c75db Initialize uninitialized member variables in ctor - warning suppression 2016-10-17 15:58:39 -04:00
3e32a00a52 fast region export -- don't call process() 2016-10-17 21:35:00 +02:00
8519677a24 fix potentially crash-inducing race condition by removing event loops' x-thread channel from an event loop when it is destroyed 2016-10-17 14:48:15 -04:00
157253c2c6 remove debug output 2016-10-17 13:41:22 -04:00
9a3c1dbfe7 fix thinko in d2835bc80 (re-enables mute, solo and likely other automation controls) 2016-10-17 13:20:03 -04:00
5b22e67387 add more DEBUG_TRACE statements for port/destruction debugging 2016-10-17 11:16:07 -04:00
2c2ce7aa55 convert cerr<< to DEBUG_TRACE 2016-10-17 11:16:07 -04:00
1fd7ec58cd use existing method rather than inline code for pending port deletions 2016-10-17 11:16:07 -04:00
nick_m
46d137414b Initialize TempoMetric _pulse in sonstructor. 2016-10-18 02:14:15 +11:00
nick_m
0585393989 Music locked regions stay positive after tempo map change. 2016-10-18 02:12:33 +11:00
466141229f ignore send buffers for which there's no return
This fixes an issue with Audio+Midi sends feeding into an audio only return.
2016-10-17 00:33:02 +02:00
d2835bc802 improved and hopefully correct fix for "setting AutomationControl marks session dirty even when it should not, if in playback mode"
Hopefully comment is more explanatory as well.
2016-10-16 15:51:50 -04:00
nick_m
92920307ae Tempo curve cleanup, now also works on optimized builds. 2016-10-17 01:28:33 +11:00
f52443e17e Increase range of a-comp release time.
This facilitates ducking music for voice-overs w/o hold-time.
2016-10-15 21:27:29 +02:00
07ee9b6164 Source and AudioSource Lua bindings 2016-10-15 21:27:29 +02:00
nick_m
8ae0c1b36c Minor cleanup (don't set pulse twice in Region::set_position()). 2016-10-16 03:50:14 +11:00
nick_m
3a0a628a75 Rework duration clock and TempoMap::insert_time to include meter at offset.
- should fix 7072

	- also fixes scroll behavior over multiple tempi.
2016-10-16 02:33:49 +11:00
102547089b remove debug output 2016-10-14 11:50:27 -04:00
9066dd731b much simpler implementation of fix originally in c104c9d472: don't call Session::set_dirty() or emit Changed() unless AutomationControl actually changes value 2016-10-14 11:42:41 -04:00
92f1eb6be9 Revert "change return type of AutomationControl::actually_set_value() from void to bool, to indicate if value was changed."
This reverts commit c104c9d472.
2016-10-14 11:42:41 -04:00
c21a0760a4 allow feedback (loops) from internal sends
This facilitates custom "Echo" chains:

  Bus 1 [FX] [aux-send to Bus 2] -> master
  Bus 2 [FX] -> Bus 2
2016-10-14 15:06:49 +02:00
88dedfcbdb fix math ambiguity & OSX compilation
cc121.cc: In member function 'void ArdourSurface::CC121::encoder_handler(MIDI::Parser&, MIDI::EventTwoBytes*)':
cc121.cc:413: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
/usr/include/architecture/i386/math.h:343: note: candidate 1: double pow(double, double)
/usr/include/c++/4.2.1/cmath:357: note: candidate 2: float std::pow(float, float)
2016-10-13 23:41:49 +02:00
8f9a9523d2 new scheme for managing port deletion
shared_ptr<Port> now uses a deleter functor which pushes Port* to a lock-free FIFO so that the Port is
always deleted (and thus unregistered with the PortEngine/backend) in a safe context w.r.t. various
callbacks in the host. Currently the auto_connect_thread in Session has been tasked with doing these
deletions.
2016-10-13 17:18:54 -04:00
1552547f65 stop using gkd_pango_context_get() in ArdourCanvas::Canvas and require concrete instances to supply a Pango::Context; do this for GtkCanvas and Push2Canvas 2016-10-13 17:18:54 -04:00
228556ab9c fix panner reset when switching to aux-sends -- fixes #6893 2016-10-13 19:57:50 +02:00
W.P. van Paassen
279b19258b Small improvement and change to comply with coding standard 2016-10-13 12:10:39 -04:00
W.P. van Paassen
5a3fe4aa20 Inital support for Steinberg's CC121 control surface 2016-10-13 12:10:39 -04:00
Michiel de Roo
bbb20272d5 OSC added plugin activate/deactivate 2016-10-13 12:08:31 -04:00
215d88ac87 Allow a LV2 plugin to mark the session dirty
If some plugin-internal state changes (GUI <> Plugin e.g. load a sample)
no ports change and the host does not know that the plugin state has
changed. The session may be closed without save.

This is a prototype using an ardour.org URI, pending upstream lv2plug.in
2016-10-13 16:04:28 +02:00
nick_m
c09e467595 Improve check in tempoAtPulseTest 2016-10-13 14:26:54 +11:00
nick_m
d824e696c0 Fix ramp test, add tempoAtPulseTest. 2016-10-13 14:14:27 +11:00
eae567bd9e Allow opening sessions with files embedded from removable drives
Otherwise Windows shows a critical error for files embedded from
removable devices.
2016-10-13 02:07:34 +02:00
c104c9d472 change return type of AutomationControl::actually_set_value() from void to bool, to indicate if value was changed.
Don't call Session::set_dirty() when no change occurs
2016-10-12 17:26:46 -04:00
Nathan Stewart
0df00465fd Fixed array index out of bounds in Push2Menu::set_active() 2016-10-12 14:50:03 -04:00
Nathan Stewart
ca98c7a051 map::clear() calls erase. Cleans up cpp check warning 'iterator used after element has been erased' 2016-10-12 14:50:02 -04:00
0b51d760ad cleaner version of feed9648 -- fixes #7067 2016-10-11 22:57:38 +02:00
6c933c7789 Revert "Allow loading sessions with missing external files #7067"
This reverts commit feed9648e1.
2016-10-11 22:54:21 +02:00
feed9648e1 Allow loading sessions with missing external files #7067
The issue was introduced in dbf86a495b, forcing must_exist = true
for *all* files that have a absolute _origin, including stub
SilentFileSources.

If an external file is no longer available and a user chooses to
"ignore, skip" an SilentFile is created instead of the actual source,
The SilentFileSource has the same XML state which includes _origin.

ARDOUR::SilentFileSource::SilentFileSource () c'tor calls
AudioFileSource::AudioFileSource (,.., must_exit = false)
but since the file has an absolute _origin, the AudioFileSource c'tor sets
must_exist = true; throws and the session cannot be loaded.
2016-10-11 22:05:27 +02:00
c60b4ff4cb add missing symbol for windows compile 2016-10-11 19:55:35 +02:00
78fef4a253 cater for Note translations. e.g. "Ré ♯" UTF-8 2016-10-11 14:09:54 +02:00
74ba1b2691 Hide Dummy backend from optimized release builds
Prepare to bundle session-utils with releases.
Session-utils use libardour which needs an Engine. "Dummy" is the only
engine that always works
2016-10-11 00:29:56 +02:00
b997232aad skip Push2 unit-test for now:
The test segfaults due to missing screen and prevents other libardour
unit tests from running.
2016-10-11 00:05:08 +02:00