quicklevel: thread safety (oops), don't run if no UI instance
parent
d4a12647d2
commit
80c90451f3
15
notes
15
notes
|
@ -41,15 +41,17 @@ TODO {
|
|||
add ,XX support to global tempo
|
||||
}
|
||||
|
||||
- actual config file loading/saving
|
||||
solo gadget {
|
||||
interprets incoming commands as monophonic with portamento
|
||||
probably not super useful for tracked things but good for playing live
|
||||
}
|
||||
|
||||
color scheme load/save
|
||||
|
||||
- indexer abstraction for audioports (assign/add std::pair<float, float>)
|
||||
maybe a similar abstraction for processing notes to what commandreader does
|
||||
|
||||
maybe interpolate between LUT levels
|
||||
|
||||
|
||||
bugs to fix {
|
||||
PLAYBACK BREAKS AFTER FIRST PLAY??? {
|
||||
doesn't happen in Lovely Storm; only where Capaxitor is used??
|
||||
|
@ -58,6 +60,7 @@ TODO {
|
|||
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?
|
||||
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?
|
||||
|
@ -86,13 +89,15 @@ TODO {
|
|||
(the simple things:)
|
||||
- gain and panning gadget
|
||||
- note transpose
|
||||
volume meter
|
||||
- volume meter
|
||||
|
||||
"wrap clipper" (gain up, then wrap around +-1.0, then gain down)
|
||||
|
||||
Polyplexer (splits a single command input into several monophonic outputs and keeps track of individual notes between them)
|
||||
|
||||
probably three sorts of sampler (quick drum sequencer, quick single-sample "wavetable", then the full-on tracker sampler later on)
|
||||
- quick drum sequencer (BeatPad)
|
||||
- quick single-sample "wavetable" (Capaxitor)
|
||||
full-fat tracker sampler at some point
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,10 +64,11 @@ void QuickLevel::release() {
|
|||
lv[1][0] = 0;
|
||||
lv[1][1] = 0;
|
||||
|
||||
if (obj) obj->scene()->update();
|
||||
if (obj) QMetaObject::invokeMethod(obj->scene(), "update", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void QuickLevel::process() {
|
||||
if (!obj) return;
|
||||
auto in = std::static_pointer_cast<AudioPort>(port(Port::Input, Port::Audio, 0));
|
||||
in->pull();
|
||||
size_t ts = audioEngine->curTickSize();
|
||||
|
@ -90,7 +91,7 @@ void QuickLevel::process() {
|
|||
lv[1][1] = std::max(lv[1][1], f.r);
|
||||
}
|
||||
|
||||
if (obj) obj->scene()->update();
|
||||
if (obj) QMetaObject::invokeMethod(obj->scene(), "update", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
// clear levels on port disconnect
|
||||
|
|
Loading…
Reference in New Issue