Autopan improvements#10
Merged
Be-ing merged 3 commits intoBe-ing:autopan_improvementsfrom Oct 3, 2017
Merged
Conversation
Be-ing
reviewed
Oct 3, 2017
| double beats = std::max(roundToFraction(period, 2), 0.25); | ||
| // NOTE: Assuming engine is working in stereo. | ||
| period = beats * groupFeatures.beat_length_sec * sampleRate * 2; | ||
| period = beats * groupFeatures.beat_length_sec * sampleRate; |
Owner
There was a problem hiding this comment.
I hear that this cycles the sound around the stereo field in the correct amount of time, but I do not understand why it was wrong to multiply by the channel count.
Author
There was a problem hiding this comment.
The stereo assumption is already handled in the loop below i += 2
Be-ing
pushed a commit
that referenced
this pull request
Apr 19, 2020
update Novation Launchpad controller scripts
Be-ing
pushed a commit
that referenced
this pull request
Jan 11, 2021
Fix reading/writing of library.last_played_at
Be-ing
pushed a commit
that referenced
this pull request
Apr 8, 2022
…h sync
When loading a track that is not yet present in the library (and thus
doesn't have any BPM because it hasn't been analyzed yet) while another
deck is playing and both decks have sync enabled, a debug assertion is
triggered:
DEBUG ASSERT: "isValid()" in function double mixxx::Bpm::value() const at src/track/bpm.h:53
Aborted (core dumped)
The backtrace looks as follows:
#0 0x00007f175c87234c in __pthread_kill_implementation () at /usr/lib/libc.so.6
#1 0x00007f175c8254b8 in raise () at /usr/lib/libc.so.6
#2 0x00007f175c80f534 in abort () at /usr/lib/libc.so.6
#3 0x00007f175cf05ee4 in qt_assert(char const*, char const*, int) () at /usr/lib/libQt5Core.so.5
#4 0x000055deb2e67e1c in mixxx::(anonymous namespace)::handleMessage(QtMsgType, QMessageLogContext const&, QString const&) (type=<optimized out>, context=<optimized out>, input=<optimized out>) at src/util/logging.cpp:355
#5 0x00007f175cf47128 in () at /usr/lib/libQt5Core.so.5
#6 0x00007f175cf3fd8a in () at /usr/lib/libQt5Core.so.5
#7 0x00007f175cf06526 in QMessageLogger::critical(char const*, ...) const () at /usr/lib/libQt5Core.so.5
#8 0x000055deb2e5c720 in mixxx_debug_assert(char const*, char const*, int, char const*) (assertion=assertion@entry=0x55deb39bd0db "isValid()", file=file@entry=0x55deb39bbf30 "src/track/bpm.h", line=line@entry=53, function=function@entry=0x55deb39bbf08 "double mixxx::Bpm::value() const") at gsrc/util/assert.h:9
#9 0x000055deb2ee7e7e in mixxx_debug_assert_return_true(char const*, char const*, int, char const*) (function=0x55deb39bbf08 "double mixxx::Bpm::value() const", line=53, file=0x55deb39bbf30 "src/track/bpm.h", assertion=0x55deb39bd0db "isValid()") at gsrc/util/assert.h:18
#10 mixxx::Bpm::value() const (this=<synthetic pointer>) at src/track/bpm.h:53
#11 mixxx::operator*(mixxx::Bpm, double) (multiple=1, bpm=...) at src/track/bpm.h:160
#12 SyncControl::setLocalBpm(mixxx::Bpm) (this=<optimized out>, localBpm=...) at src/engine/sync/synccontrol.cpp:567
#13 0x000055deb34c7ba3 in EngineBuffer::postProcess(int) (this=0x55deb56eb060, iBufferSize=2048) at src/engine/enginebuffer.cpp:1318
#14 0x000055deb3139023 in EngineMaster::processChannels(int) (this=0x55deb5449440, iBufferSize=<optimized out>) at src/engine/enginemaster.cpp:383
#15 0x000055deb31394f7 in EngineMaster::process(int) (this=0x55deb5449440, iBufferSize=iBufferSize@entry=2048) at src/engine/enginemaster.cpp:410
#16 0x000055deb2f91d0b in SoundManager::onDeviceOutputCallback(long) (this=<optimized out>, iFramesPerBuffer=iFramesPerBuffer@entry=1024) at src/soundio/soundmanager.cpp:596
#17 0x000055deb32dd794 in SoundDevicePortAudio::callbackProcessClkRef(long, float*, float const*, PaStreamCallbackTimeInfo const*, unsigned long) (this=0x55deb553e6b0, framesPerBuffer=1024, out=<optimized out>, in=<optimized out>, timeInfo=<optimized out>, statusFlags=<optimized out>) at src/soundio/sounddeviceportaudio.cpp:965
This happens because `newLocalBpm` is invalid when `localBpm` is
invalid. Trying to do sync decks while no tempo information is available
does not make sense, so we only synchronize decks if the local BPM is
available.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Original, I had still some issues with moving out of phase.
This fixes most of my issues.
It would be nice to have a real phase sync here using groupFeatures.beat_fraction.
But this is quite complicated, because of the uneven beat fractions we allow, so I have decided to postpone the work.
Once this is merged to your branch, we can merge your PR to master.