fix missing opening notes on non-first play per session (!)
parent
d95e6ce1d5
commit
f430ebab00
7
notes
7
notes
|
@ -33,11 +33,6 @@ parameters {
|
||||||
TODO {
|
TODO {
|
||||||
settings dialog {
|
settings dialog {
|
||||||
about-license info
|
about-license info
|
||||||
|
|
||||||
probably some audio engine settings {
|
|
||||||
working sample rate
|
|
||||||
buffer sizes and such
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
revert-to-saved menu action
|
revert-to-saved menu action
|
||||||
|
@ -87,8 +82,6 @@ TODO {
|
||||||
does NOT break preview mode??
|
does NOT break preview mode??
|
||||||
seems to be only with the Maybe sample??? idk
|
seems to be only with the Maybe sample??? idk
|
||||||
}
|
}
|
||||||
playback after stopping immediately after a note in the first pattern played sometimes skips that note
|
|
||||||
^ probably due to note IDs; randomize starting point on each playback start? or fix something in InstrumentCore
|
|
||||||
things can apparently be hooked up cyclically, which completely breaks the queue
|
things can apparently be hooked up cyclically, which completely breaks the queue
|
||||||
|
|
||||||
pattern switching is slow when changing (especially increasing) number of rows; set fixed page size to avoid reallocation?
|
pattern switching is slow when changing (especially increasing) number of rows; set fixed page size to avoid reallocation?
|
||||||
|
|
|
@ -168,6 +168,10 @@ void AudioEngine::play(std::shared_ptr<Project> p, int fromPos) {
|
||||||
tempo = project->tempo;
|
tempo = project->tempo;
|
||||||
tickAcc = 0;
|
tickAcc = 0;
|
||||||
|
|
||||||
|
// properly initialize note tracking to prevent
|
||||||
|
chTrack.clear(); // overwritten starting notes
|
||||||
|
chTrack.resize(findPattern()->channels.size());
|
||||||
|
|
||||||
startOutput();
|
startOutput();
|
||||||
|
|
||||||
mode = Playing;
|
mode = Playing;
|
||||||
|
@ -271,6 +275,10 @@ void AudioEngine::render(std::shared_ptr<Project> p, QString fileName) {
|
||||||
tempo = project->tempo;
|
tempo = project->tempo;
|
||||||
tickAcc = 0;
|
tickAcc = 0;
|
||||||
|
|
||||||
|
// properly initialize note tracking to prevent
|
||||||
|
chTrack.clear(); // overwritten starting notes
|
||||||
|
chTrack.resize(findPattern()->channels.size());
|
||||||
|
|
||||||
initAudio(); // we actually need the period size. whoops.
|
initAudio(); // we actually need the period size. whoops.
|
||||||
|
|
||||||
QFileInfo fi(fileName);
|
QFileInfo fi(fileName);
|
||||||
|
|
|
@ -209,7 +209,7 @@ void InstrumentCore::process(CommandPort* i, AudioPort* o) {
|
||||||
// then do the thing
|
// then do the thing
|
||||||
if (o) o->pull();
|
if (o) o->pull();
|
||||||
|
|
||||||
double tickTime = smpTime * audioEngine->curTickSize();
|
double tickTime = smpTime * static_cast<double>(audioEngine->curTickSize());
|
||||||
|
|
||||||
if (processNote) {
|
if (processNote) {
|
||||||
for (auto p = activeNotes.begin(); p != activeNotes.end(); ) {
|
for (auto p = activeNotes.begin(); p != activeNotes.end(); ) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
||||||
|
|
||||||
// audio page
|
// audio page
|
||||||
QStringList sampleRates = { qs("44100Hz"), qs("48000Hz"), qs("96000Hz") };
|
QStringList sampleRates = { qs("44100Hz"), qs("48000Hz"), qs("96000Hz") };
|
||||||
const constexpr int minBufMs = 5, maxBufMs = 250;
|
const constexpr int minBufMs = 25, maxBufMs = 250;
|
||||||
const QString ms = qs("ms");
|
const QString ms = qs("ms");
|
||||||
|
|
||||||
bind(ui->playbackSampleRate, AudioConfig::playbackSampleRate, sampleRates);
|
bind(ui->playbackSampleRate, AudioConfig::playbackSampleRate, sampleRates);
|
||||||
|
|
Loading…
Reference in New Issue