Age | Commit message (Collapse) | Author |
|
mechanism away from a 64bit integer and toward std::bitset.
Clean up a few minor related PBD::DEBUG issues along the way
|
|
|
|
Loading a session with a loop-range, or setting
a loop-range adds LoopDeclick events.
Normal play back (no loop) never processes/clears the events.
Ardour was constantly doing split cycles for nothing.
This lead to stuck midi-notes: Split cycle calls
increment_global_port_buffer_offset() but the midi_diskstream
itself was not aware of any loop positions or offsets.
Entering loop playback adds those events explicitly
in Session::set_play_loop(). auto_loop_changed() only
needs to add/replace session-events when actively looping.
|
|
(just to be on the safe side)
|
|
cdrdao seems to want the CATALOG field to be enclosed in double-quotes.
|
|
toc_escape_text() already encloses its result in ""s, and if album_artist
is empty, the resulting PERFORMER """" line makes cdrdao upset. Just remove
the extra quotes.
|
|
necessary.
|
|
sure to reset expected_peaks and scale to match the corrected values
|
|
|
|
|
|
the number of samples
|
|
The integer steps min/max are inclusive.
e.g the integer range -1 to +1 has three possible values (not two).
|
|
|
|
Used spaces instead of tabs for whitespace consistancy with rest of header
|
|
|
|
Always copy MIDI files, they are small and they get rewritten for lots of reasons, which can cause confusion
if the user elected to NOT "copy media" since the file ends up existing in both the new and old (but in use)
session.
Avoid copying analysis files on Windows, where for now the files contain illegal colon characters
|
|
Session::peak_path() a little.
If given a full path that points outside the current session but is within another ardour session,
attempt to use the peakfiles present in that other session.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Currently we don't do anything special on layering prefs change
(relayer only occurs when each playlist is first edited). The idea here is
that "undo" is still available to restore previous layering in case of any
surprises.
|
|
|
|
save-as
|
|
|
|
|
|
|
|
|
|
fixes crash in PortManager::silence_outputs()
|
|
perspective of Ardour: signal sinks are outputs
|
|
|
|
|
|
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
|
|
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.
|
|
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.
|
|
|
|
…to tell the UI to not redraw.
|
|
in case $HOME/Library/Caches/Ardour4/au_crashlog.txt
is not writeable, just log to stderr.
|
|
|
|
|
|
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.
|
|
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.
|
|
parent Track::set_state() sets the diskstream
and ::set_diskstream() depends on the track mode.
fixes Tape tracks on session load
|
|
2nd attempt.
|
|
|
|
realtime processor re-ordering does not require
a route resort nor latency compensation update.
(which were done as callback in same thread)
|