Age | Commit message (Collapse) | Author |
|
|
|
|
|
The GUI thread may modify fade-in/out while the butler-thread
reads audio.
e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_pthread.dylib 0x00007fffd45924fc pthread_mutex_lock + 0
1 libglib-2.0.0.dylib 0x00000001085a9d2a g_mutex_lock + 26
2 libevoral.dylib 0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3 libevoral.dylib 0x0000000107fd486d Evoral::ControlList::clear() + 253
4 libardour.dylib 0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5 libardour.dylib 0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6 libpbd.dylib 0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7 libardour.dylib 0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8 libardour.dylib 0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9 libardour.dylib 0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10 Ardour.bin 0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11 Ardour.bin 0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12 Ardour.bin 0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587
Thread 20 Crashed:
0 libardour.dylib 0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1 libardour.dylib 0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2 libardour.dylib 0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3 libardour.dylib 0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4 libardour.dylib 0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5 libardour.dylib 0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6 libardour.dylib 0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7 libardour.dylib 0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
|
|
Incorrect iterators were used for user-transients.
|
|
|
|
|
|
|
|
|
|
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
|
|
This breaks compilation (GUI)
|
|
float <=> string conversions are performed using PBD::to_string/string_to via
XMLNode
|
|
|
|
|
|
- should fix 7283
|
|
snap now fills in a struct (MusicFrame) which contins a snapped frame
along with a music divisor.
this gives useful information wrt magnetic snap which may or may not
have rounded to an exact musical position.
region position may now be set musically (using quarter notes for now).
this patch fixes several problems in the current code:
- dragging a list of music-locked regions now maintains correct
musical offsets within the list.
- splitting regions using magnetic snap works correctly (#7192)
- cut drag should now work correctly with magnetic snap.
- musical length of split midi regions is no longer frame based.
|
|
|
|
|
|
|
|
this simplifies lua-bindings and also let's the compiler worry about
constant primitive types.
|
|
- for those not in the know, this series provides a way to
remove the temporal distortion introduced when using an
audio frame-based gui for music-locked objects.
In short, the gui uses an audio frame representation to move
objects. It displays the object using frame_at_beat(), quantizing
the time value to audio frames. This is fine until the user selects
that frame but expects it to be interpreted as a beat.
Thus beat_at_frame() would not produce the user-expected beat
(temporal quantization error of up to 0.5 audio samples).
This is one method of mapping audio time to music time accurately.
|
|
|
|
|
|
|
|
* all API calls use session-time (allow region-lists)
* per-region transients are separated in
- Onset (Rhythm Rodent, Aubio)
- User-added
- internal/source (QM), used as fallback for next/prev (read-only)
|
|
|
|
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|
|
Fades must be outside of regions above threshold in order
to properly split drum-hits or fast transients in general.
|
|
Ensure that non-silent regions are at least
as long as the selected fade-duration.
|
|
|
|
|
|
the number of samples
|
|
|
|
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
|
|
The real problem is: libardourvampplugins:* cannot
be instantiated this remains to be fixed.
|
|
|
|
operation is undefined. C works on all platforms
|
|
Among other things, this means that automation controls/lists have the actual
min/max/normal/toggled of parameters, and not those inferred from the Parameter
ID, which is not correct for things like plugin parameters.
Pushing things down to the Evoral::ParmeterDescriptor may be useful in the
future to have lists do smarter things based on parameter range, but currently
I have just pushed down the above-mentioned currently used attributes.
|
|
|
|
|
|
|
|
32 steps is sufficient for all practical musical purposes.
|
|
Extra steps are all below -20dB vs inverse signal being over -2dB.
linear interpolation -6dB steps is sufficient for the tail.
|
|
|
|
|
|
|
|
|
|
|
|
Some users always want the same fade in/out style, e.g., constant power,
symmetric, fast etc.
To avoid having them change the fade style manually for each fade, use a
global configuration variable instead.
|