13
0
Commit Graph

8335 Commits

Author SHA1 Message Date
f082e45298 extend save-as API to allow for new empty sessions based on current 2015-05-07 22:35:35 -04:00
0038820f47 copy contents of analysis, plugins, automation and externals folders during save-as 2015-05-07 17:10:14 -04:00
e902029b26 fix Session::rename() 2015-05-07 12:06:49 -04:00
31acba8305 debugging rename/save-as 2015-05-05 21:30:00 -04:00
fbea6c2542 API to reset plugin parameters to default 2015-05-04 20:35:23 +02:00
54fe093371 add signal for automation state changes per plugin 2015-05-04 20:35:14 +02:00
59067d3568 clear port-list before query.
fixes crash in PortManager::silence_outputs()
2015-05-04 02:06:59 +02:00
9ec3085d71 fix thinko in 2e4428b
perspective of Ardour: signal sinks are outputs
2015-05-04 00:29:15 +02:00
aee658ef96 no more noise during startup. 2015-05-03 23:17:15 +02:00
2e4428bc97 add an API to silence buffers (without session) 2015-05-03 23:06:21 +02:00
56cc3e2407 fix portengin get_ports() flags API
require all flags to be present (same as jack)
2015-05-03 22:34:52 +02:00
Christopher Arndt
a9bc95a911 Fix mixed spaces/tabs in wscripts 2015-05-03 19:52:38 +02:00
Nils Philippsen
1e5c5e6bdf don't install static library libsmf.a 2015-05-03 19:50:36 +02:00
198c4d1d88 gfx-card & performance testing 2015-05-02 04:54:59 +02:00
8f333acb80 log(0) - who would have guessed.
marginal improvement on x86_64 for zero, 5-10% for tiny numbers;
100% time improvement (half the time) on i686 with zero.

#/bin/sh
g++ -x c++ -O3 -ffast-math -o /tmp/a.out - << EOF

#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <limits>

static inline float accurate_coefficient_to_dB (float coeff) {                                                                                                                                                                               
#if 1 // try me
  if (coeff < 1e-15) return  -std::numeric_limits<float>::infinity();
#endif
  return 20.0f * log10f (coeff);
}

int main (int argc, char **argv) {
  long long int i;
  float f = 0;
  if (argc  < 3) return -1;
  long long int end = atoll (argv[1]);
  for (i = 0; i < end; ++i) {
    f += accurate_coefficient_to_dB (atof (argv[2]));
  }
  printf ("%f\n",f);
  return 0;
}
EOF

time /tmp/a.out 100000000000 0.0
time /tmp/a.out 100000000000 0.0
time /tmp/a.out 100000000000 0.0
2015-05-02 04:19:54 +02:00
ce259edbcd professionalize peak-meters
The peak meter needs to withstand various test-signals
without visual jitter (in particular 1kHz sine) regardless
of settings (period-size, sample-rate, custom fall-off).

This needs to be done in sync (and not by a random non-rt
‘smoothing’ thread).

On the downside this voids the ‘visual smoothing’ particularly 
with large buffersizes - but then again exactly this “always 
fall-off no matter what [the next real data will be]” is the
problem.

One the upside, there’s one less high-frequency (100Hz) thread
(Yay!) PS. it probably never worked on windows, anyway.

Only peak-meters are affected by his change.
K-meters, IEC I/II and VU were never visually smoothed.
2015-05-02 03:46:49 +02:00
2f432c3be7 dummy: ignore first cycle timing. 2015-05-01 15:58:17 +02:00
d0dca7daf0 constrain initial custom meter positions.
The processor-box GUI only allows to move the
custom meter position between trim and main_out/panner.

Previously an initial switch from In -> custom or Out -> Custom
left the meter at a position that can otherwise not be reached
by manually repositioning the custom meter.
2015-05-01 14:45:45 +02:00
840b871245 don’t count silent [x]runs if there’s no session. 2015-04-30 22:55:42 +02:00
2b294f0b43 add a sanity check 2015-04-30 21:15:35 +02:00
a3209b9b91 Correctly dereference 'fxbuf' when building with MSVC 2015-04-30 18:17:24 +01:00
fe3aafec1c When testing for x86 / x64 architecture, don't forget the symbols that MSVC can understand 2015-04-30 18:17:23 +01:00
ae38128f88 session: add signal to indicate batch updates
…to tell the UI to not redraw.
2015-04-30 17:58:33 +02:00
49ffcd0d9d clamp DSP load displsy 100% & relax LPF. 2015-04-30 02:00:50 +02:00
e3cd57ecb6 DSP load calculation: favor peak over average. 2015-04-29 21:27:37 +02:00
729bc00f13 no need to close a file that will not be removed (and has no name) 2015-04-29 15:01:33 -04:00
89f5e22896 fix double precision abs value computation 2015-04-29 19:56:35 +02:00
84aab564b4 enable fade-out display by default in A4.
..because fade outs are implicit in A4.
Eventually the GUI needs to set_show_background_fade() as needed.
2015-04-29 19:55:53 +02:00
8ed04e2155 remove AU crashlog assert.
in case $HOME/Library/Caches/Ardour4/au_crashlog.txt
is not writeable, just log to stderr.
2015-04-29 18:43:32 +02:00
c36504f2ec NOOP: fix indentation 2015-04-29 09:05:15 -04:00
GZharun
1a84fa3c42 [Summary] Should have been committed with previous: made background fade optional and not shown by default 2015-04-29 08:59:24 -04:00
80ae2bbe23 fix issue with manual merge conflict 2015-04-29 08:23:13 -04:00
2828dcaaf9 make computation of OS X pango text width correction less intrusive/more efficient.
Compute the correction only once after each font specification setting.

Conflicts:
	libs/canvas/canvas/text.h
2015-04-29 08:20:31 -04:00
a83050a255 manually apply grygorii's API to manage a correction for pango errors in text size computation on OS X 2015-04-29 08:19:22 -04:00
5ab699f898 manually apply grygorii's waveform amplitude implementation 2015-04-29 07:54:21 -04:00
GZharun
96371c8327 [Summary] Fixed issue when width request from Cavas text returned old width value
[Reviewed by] Paul Davis

Conflicts:
	libs/canvas/canvas/text.h
2015-04-29 07:27:34 -04:00
84cb8913b0 change placement of ruler divider so that the lower line is at the specified height, rather than the upper 2015-04-29 07:26:29 -04:00
697d8a2732 do the right thing when TrackingText::offset is changed 2015-04-29 07:26:18 -04:00
d9cb8a807e Fix method hiding in Canvas::Text 2015-04-29 07:25:58 -04:00
2673ef4af4 change ruler rendering to change tick heights and move text down 2015-04-29 07:23:36 -04:00
065c6d813e add missing API 2015-04-29 07:22:48 -04:00
4cf402bdcf add API to Ruler to optionally draw a divider (2 single pixel horizontal lines) at some position within the vertical extent of the ruler 2015-04-29 07:22:36 -04:00
38728f0835 correct implementation for Rectangle::vertical_fraction() 2015-04-29 07:22:21 -04:00
59ce8663f9 add Rectangle::vertical_fraction() as a convenience method
Conflicts:
	libs/canvas/rectangle.cc
2015-04-29 07:22:05 -04:00
cd63d97f65 add xrun counter API to session 2015-04-29 03:09:17 +02:00
c4696fe2d5 emit an xrun if the process_lock is taken 2015-04-29 01:33:23 +02:00
f410705c3a delegate signal emission to dedicated thread.
This works around abysmal performance (~.15ms) of
boost::function and boost::bind (in PBD::Signal).

The overall load is probably higher but the realtime
thread remains unaffected.
2015-04-29 00:35:35 +02:00
e9bb1dc2bf tape-track diskstream fixes
Due to the change to use a 64bit timeline (int64 as opposed
to previously [unsigned] pframes_t) many cases special to tape-tracks
no longer work.
e.g. region->length() can returns -1, rather than INT64_MAX.
which breaks ‘overlap’ in Evoral::Coverage. which in turn
breaks tape track’s use of ::find_next_region().

This commits begins the slow process to move away from relying
on integer overflow to wrap negative numbers for tape tracks and
restores basic functionality.

Still various edge cases pertaining tape tracks remain. particularly
when changing the session start-time and moving destructive regions.
2015-04-28 16:08:19 +02:00
e3a2bc6a36 Track mode needs to be set before loading Track state
parent Track::set_state() sets the diskstream
and ::set_diskstream() depends on the track mode.

fixes Tape tracks on session load
2015-04-28 16:08:19 +02:00
5291400878 case insensitive VST plugin file extension - fixes #6285
2nd attempt.
2015-04-27 18:23:51 +02:00
d75b27f6dc allow to compile PBD::Signals w/o connection debugging 2015-04-27 17:19:58 +02:00
9687c756a6 const iterators 2015-04-27 17:19:57 +02:00
36ee1681fe special case [optimize] RT processor reorder.
realtime processor re-ordering does not require
a route resort nor latency compensation update.
(which were done as callback in same thread)
2015-04-27 17:19:57 +02:00
b7a711e385 click-less processor re-ordering. 2015-04-27 17:19:57 +02:00
1fdb3560e8 enable trim on master bus 2015-04-27 10:03:49 -05:00
3f2306c4fb Revert "case insensitive ".dll" for VST plugins - fixes #6285"
This reverts commit c2f84af73d.

strcasestr() is not compatible with mingw nor MSVC.
different approach is needed.
2015-04-27 00:40:07 +02:00
c2f84af73d case insensitive ".dll" for VST plugins - fixes #6285
TODO: check portability of strcasestr()
2015-04-26 21:26:12 +02:00
27dac7c31f Expose “/route/trim” midi binding. 2015-04-26 19:07:45 +02:00
397b473e45 allow to update meter position w/o engine 2015-04-26 06:24:57 +02:00
6ac8588cd8 clickless meter-point changes 2015-04-26 06:00:08 +02:00
c0437aed47 wrap midi negative gain for midi-velocity
ignore polarity invert,
scale_velocity() otherwise claps the factor to zero.
2015-04-26 02:51:40 +02:00
f9b364c515 don’t assume compilers cast the way we want. 2015-04-26 02:48:21 +02:00
fe7cb07c7f relax gain LPF to 25Hz. 2015-04-26 02:48:15 +02:00
1b54b85da0 update amp for negative (polarity-invert) gain
fixes monitor-section “inv”
2015-04-26 02:48:00 +02:00
a43901ead9 Fix crash when switching backends.
cycle_end() can write to invalid buffers.
2015-04-26 01:36:09 +02:00
850964fde3 midi velocity [fader] automation 2015-04-25 22:02:02 +02:00
3f281dc2c1 Amp: allow to disable midi velocity 2015-04-25 21:25:56 +02:00
517467f297 prepare trim automation 2015-04-25 21:24:58 +02:00
1e5be9ebfd add OSC trim control 2015-04-25 21:23:37 +02:00
5f7cee5bfe prepare trim remote control 2015-04-25 21:23:03 +02:00
75087f5c62 prepare 0dBFS peak meter 2015-04-25 06:46:29 +02:00
fd76f87ae1 Revert API to explicitly show tooltips:
gdk pointer grab offers a better solution.
2015-04-25 05:37:37 +02:00
d40ad1f6ff fixup stuck persistent tooltips. 2015-04-25 03:00:57 +02:00
50a0748c2b trim typo and details 2015-04-25 01:17:25 +02:00
7565ebd4ed API to set tooltip y-margin 2015-04-25 01:16:39 +02:00
a33cc51176 tweak persistent tooltip:
* don’t show empty tooltips
* “smaller” widgets may receive a leave event before the timeout
can show the tooltip (knobs in particula)
2015-04-25 01:02:53 +02:00
28f3f2d78c input trim busses. 2015-04-24 23:42:31 +02:00
3cdd8fa221 add Input Trim (just after disk i/o) to Audio Tracks 2015-04-24 22:37:03 +02:00
b07373fba2 Amp control: power-scale (fader) and dB-scale (knob) 2015-04-24 22:37:03 +02:00
6e66b0e9db define Trim Parameter Type. 2015-04-24 22:37:03 +02:00
4e36760bac send LTC during process_with_events()
fixes #6277

This indicates a deeper problem though. Even removing a punch-range never
clears out the events. and  ession::process_with_events() does not use
process_without_events() until re-start.
2015-04-24 04:44:28 +02:00
6cb742c289 windows 32bit asm/fpu support.
This still leaves cache_aligned_malloc() in
libs/pbd/malign.cc pending _aligned_free (windows crashes when using
free() on memory allocated with _aligned_malloc()).

So far however there seems to be no issue with default malloc
for audio+midi buffers on win32…
2015-04-24 02:43:52 +02:00
63b3d06fd7 add missing regexp support to pbd/wscript 2015-04-24 00:41:23 +02:00
91b9d6c063 separate build host & target (fix win32 asm) 2015-04-24 00:33:34 +02:00
82cc394705 fix jack-metadata for weak-jack linking 2015-04-23 20:19:22 +02:00
52a58f1ad2 fix JACK metadata configure check.
Trying to explicitly specify linkflags is (a) not portable (b) doesn't honor order-sensitive linkers
2015-04-23 13:48:18 -04:00
f755185825 add a real check for functioning JACK metadata API; remove configure time option for this 2015-04-23 09:29:45 -04:00
27b64e481a Remove a 'no longer needed' source from our MSVC project (libpbd)
(FPU functionality was recently merged into a single source file)
2015-04-22 10:44:23 +01:00
9b1089089e coefficients are floating-point.
fixes use of overloaded operator '==' is ambiguous (with operand types 'MPControl<gain_t>' and 'double') in previous commit.
2015-04-22 00:36:10 +02:00
46f97e8d92 Initial Gain Coefficient tweaks
1)  Disambiguate 1.0 to GAIN_COEFF_UNITY, and 0.0 to GAIN_COEFF_ZERO
2)  Add GAIN_COEFF_SMALL which replaces SMALL_SIGNAL (-140dB)
3)  GAIN_COEFF_SMALL can used to avoid interpolating towards -inf on a db scale
4)  GAIN_COEFF_SMALL is used to detect very small (denormal?) gains and memset to zero
2015-04-22 00:22:43 +02:00
187ddb3bad more windows related SSE build fixes 2015-04-21 13:28:17 -04:00
140e437313 typo 2015-04-21 13:04:22 -04:00
8c52662ac0 use compiler target to determine whether to use 64 bit windows assembler, not the build host CPU type 2015-04-21 13:01:54 -04:00
126b3c2417 Revert "as an experiment, try original asm on windows."
This reverts commit c37dc461b3.
2015-04-21 12:34:14 -04:00
c37dc461b3 as an experiment, try original asm on windows.
Grygorii's new intel-syntax code didn't work on first try
2015-04-21 12:32:59 -04:00
e015c57663 <intrin.h> is for windows only 2015-04-21 12:31:02 -04:00
e3156c2cc4 add required header for windows compile of FPU code 2015-04-21 12:25:21 -04:00
Johannes Mueller
9ba98ae2d3 Remove filename extension for chapter mark file
The tool mp4chaps by the following command

$ mp4chaps -i test.mp4

looks for the file "test.chapters.txt" to read the chapter marks
from. So removing the original file name extension (e.g. wav or flac)
makes it slightly more convenient for the user.
2015-04-21 18:15:29 +02:00
Johannes Mueller
ca8ff95420 Put an Intro chapter at position 00:00:00.000
Players like vlc seem to stumble, if there es no chapter at the zero
position. As Ardour wouldn't let us put a track mark at the zero
position we can just use our header_func to put some kind of dummy intro
chapter. If a future version of Ardour allows track marks at zero, we
need to do a bit more work.
2015-04-21 18:15:29 +02:00
Johannes Mueller
acd1ee1989 Added support for exporting mp4 chapter marks
The mp4 file format supports chapter marks using the so called
mp4chaps format to enable chapter wise navigation in an mp4 file. The
format is like

hh:mm:ss.sss Chapter Title

This commit adds the ability to export those kind of chapter marks
along with TOC and CUE marks. The filename extension for the chapter
mark file is "chapters.txt". The format specification description is
"MP4ch".
2015-04-21 18:15:29 +02:00
9241f58188 fix build of FPU code on OS X by reverting to use of _LP64 to identify 32/64 bit situation 2015-04-21 12:13:00 -04:00
a5d7e8446b merge all mingw and msvc specific code for FPU information into libs/pbd/fpu.cc and remove msvc-specific version 2015-04-21 11:39:31 -04:00
63b3967724 improve logic flow 2015-04-21 11:39:31 -04:00
84f0dceefb Port 'Cut time' code from Mixbus
Copy the 'Cut time' code from Mixbus, making a few obvious fixes to work in
A3 (e.g. nframes_t => framepos_t / framecnt_t).

Seems to work to move & remove markers, tempo & meter markers, and regions on
selected tracks.

Still TODO:
 - use existing A3 'Insert time' dialogue
 - make it respect 'No selection = all tracks'
 - rename the command to something like 'Remove time' or 'Delete time': 'Cut'
   sounds to me as if the removed range should end up on the clipboard ready
   to be pasted somewhere, which of course it doesn't.
2015-04-21 10:22:27 -05:00
Greg Zharun
17546f47b6 [Summary] Fixed bug in Ardour SSE assembler function. Wrong register was decreased in LP_SSE: block of float x86_sse_compute_peak function
[Details] This bug does not show up when buffers are 16 byte aligned, but when they are not - this bug will lead to crash.
I tested all these functions with non-aligned buffers as well as long they do handle the situation with unaligned buffers.
[To be reviewed by] Paul Davis
2015-04-21 10:49:00 -04:00
Greg Zharun
8af992c449 [Summary] Added SSE sound processing functions support for Windows. Version 1.
Conflicts:
	wscript
2015-04-21 10:49:00 -04:00
7ee9726c89 another merge fix 2015-04-21 08:37:54 -05:00
91fac4c96d merge fix for tempo branch 2015-04-21 08:35:20 -05:00
f44e2e55fd merge monitor_section branch 2015-04-21 08:18:10 -05:00
ab4b4934b9 Merge branch 'master' into saveas 2015-04-21 00:19:29 -04:00
847c9de7be do not reset paths for sources that are still outside the session after save-as 2015-04-21 00:18:49 -04:00
88f7c76134 allow coreaudio backend to build on OS X Lion 2015-04-20 23:12:35 -04:00
63ac1b1464 SMF::end_write() is a no-op if there is no _smf structure 2015-04-20 22:46:39 -04:00
d5be54080f add a pure virtual FileSource::close() method so that FileSource::set_path() can ensure we no longer have a handle open 2015-04-20 16:31:06 -04:00
d263cf7ded remove _file_path member from Evoral::SMF 2015-04-20 15:44:20 -04:00
ced4378d09 Merge branch 'master' into saveas
Conflicts:
	gtk2_ardour/ardour.menus.in
	libs/ardour/session_state.cc
2015-04-20 15:10:41 -04:00
bb4576b700 Dummy: fix sine/square frequency sweep 2015-04-17 17:09:52 +02:00
nick_m
dff83c77cf Amend ac1f7e0b 2015-04-17 05:36:13 +10:00
nick_m
ac1f7e0b9f Indicate all clips on rectified view. 2015-04-17 05:26:57 +10:00
nick_m
7f41de7427 Improve waveview height and scaling.
The top line of the selection rect is arguably 1 px too low, but
waveviews seem centered on the area properly.
2015-04-17 05:03:51 +10:00
d24195c41e VST: fix a copy/paste typo and possible segfault
fix by Drumfix.
2015-04-16 18:29:08 +02:00
4512d013eb put all of the Mackie control surface code into the ArdourSurface namespace 2015-04-15 20:37:20 -04:00
d65bf920fd update russian translation 2015-04-15 20:18:26 -04:00
7f659a0463 add ArdourSurface to OSC class to help reduce global namespace pollution 2015-04-15 17:21:55 -04:00
2d227a03a3 fix for memory overrun during read_peaks(), from sebastian reichelt 2015-04-15 13:32:34 -04:00
96ce9c304e Replace control list locks with RWLocks
towards fixing #6238 and #6096.


GUI thread:
#2  Glib::Threads::Mutex::Lock::Lock
#3  Evoral::ControlList::eval 
#4  Evoral::Control::get_double 
#5  ARDOUR::AutomationControl::get_value
#6  ProcessorEntry::Control::control_changed
..
#15 PBD::Timer::timeout_handler


at the same time: Audio Thread (try-lock, fails)

#0  Evoral::Curve::rt_safe_get_vector
#1  ARDOUR::Amp::setup_gain_automation
#2  ARDOUR::Route::process_output_buffers

Due to the failed try-lock.. AMP::_apply_gain_automation
is false. and Amp::run() uses a different gain factor.
-> click.
2015-04-15 18:13:56 +02:00
9391da0c24 portaudio backend: allow Pa_GetDeviceInfo to fail. 2015-04-15 03:05:09 +02:00
d00ab0221a allow to set/change loop-range via OSC 2015-04-12 23:40:35 +02:00
d0e636e1a8 remove unused local variable 2015-04-11 10:57:42 -04:00
nick_m
5ce8551576 Fix dangling location on new location -> undo. 2015-04-11 04:45:45 +10:00
30d95bbb8c Merge branch 'uk-english'
Merge the UK English localisation.
2015-04-10 18:25:58 +01:00
b3fb73812c Position (and size) canvas tooltips such that they better resemble Gtk tooltips
Mixbus in particular uses both types of tooltip so we might as well make them look the same.

N.B. The appearance is fine now on Windows but needs to be tested on the other platforms (i.e. some tweaking might be necessary).
2015-04-09 15:46:12 +01:00
2234fd4b8a Delete a canvas tooltip after we've finished with it
All canvas objects share just one tooltip object which is based around Gtk::Label. The Label expands if the current tooltip text is wider than the previous text. However, it doesn't shrink again if the next tooltip has shorter text. Eventually, this results in some very strange looking tooltips (especially in Mixbus where they're used quite extensively).

Deleting the object after use will force a new object to get generated next time (at the correct size). There's still only ever one object per canvas but it's no longer persistent.
2015-04-09 15:42:00 +01:00
0ffde76e59 Revert "prevent double declicks (click after RecStop)"
This reverts commit 6ba555c2f5.
which does not yet take monitoring states into account.

Ideally the case handled here should not happen in the
first place, It should be fixed in session_transport
transport_sub_state.
2015-04-07 15:05:00 +02:00
6ba555c2f5 prevent double declicks (click after RecStop)
If there's port-latency > period-size, there is a
split cycle with (this_event->action_frame - _transport_frame).
Yet Session::check_declick_out() keeps PendingDeclickOut if
StopPendingCapture is set. The route declick’ed twice:
Once with the period-size and one with the remaining frames,
which resulted in a click.
2015-04-07 05:25:18 +02:00
a306968283 linear declick 2015-04-07 05:25:12 +02:00
83519faffb low-pass filter gain-fader.
fixes various fader zipper noise issues.
It voids sample accuate fader automation (the fader-gain
is low-pass filtered at 10Hz). Yet all musical purposes this
makes a lot more sense than sample accuracy anyway.
2015-04-07 05:21:57 +02:00
528f945ba3 fix crash during new session creation when sync-to-JACK is enabled as a preference 2015-04-06 21:19:51 -04:00
6dea7ebfb0 changes related to resetting source paths during save-as.
This does NOT work with MIDI files at present, because of SNAFU in SMF class, where end_write()
opens the file on its own, without _file_path being set. Needs some careful work, because basically
the SMF<=>SMFSource relationship is not tenable
2015-04-06 21:18:52 -04:00
b2da3bccc0 after save-as, if switching to new session, reset all track write sources to use new session path 2015-04-06 12:05:36 -04:00
a83305169a fix ambiguous use of pow() 2015-04-05 15:13:59 -04:00
2f02b921f1 bump default silent-after-seconds duration to 10 minutes 2015-04-05 14:04:28 -04:00
8a5b5145cc add libardour code for going completely silent after a compile-time defined number of seconds 2015-04-05 14:02:30 -04:00
6a7cb8f4e8 AU preset debuging 2015-04-05 18:05:32 +02:00
cb94afa9b9 removed unusued value_as_string.cc source file 2015-04-05 11:16:17 -04:00
f0231766d7 session rename details:
* don’t allow to rename read-only sessions
* prevent periodic save (while rename is in progress)
* no renaming while actively recording (peak files
  among other things will mess things up)
2015-04-05 16:02:07 +02:00
4b485332ce fix renaming renamed session. 2015-04-05 16:01:08 +02:00
5694509bdf fix rename error message 2015-04-05 15:40:25 +02:00
1395125283 update peak filename when renaming session, fixes #5869 2015-04-05 14:55:19 +02:00
a8d9014215 add missing include
hopefully fixes string collection
2015-04-05 03:13:12 +02:00