On Thursday 18 Dec 2003 5:07 pm, Chris Cannam wrote:
> On Thursday 18 Dec 2003 10:21 am, Chris Cannam wrote:
> > Today I'm working on doing MIDI thru/filters at the sequencer and
> > on improving recording performance.
> Generally done, although I need to do a bit more testing in heavy
> load on the slow machine and see how it holds up.
Not well, so I did a bit more work on it. I've got rid of the DCOP
sends to get events back to the GUI, replacing them with a mmapped
ring buffer. With a bit more work on the sequencer main loop, I can
now record as I play on the laptop and I can't get the timing to go
wrong at all. The GUI has real trouble keeping up, but it doesn't
cause any problems for the sequencer.
Some remaining troubles (or new troubles caused by this work):
* There is one remaining set of DCOP calls during record/playback,
and that's for audio monitoring. At the moment playing or recording
audio will still generate a flurry of DCOP and generally screw things
up if the GUI's bogging down. We need to get the levels into the
sequencer mapper really.
* Relatedly, I realise that by cleverly sending the absolute minimum
of pitch information back to the GUI for transport monitoring during
playback, I've also thrown away all the information we were using for
the track level meters. Doh. So perhaps we should combine this and
the previous point and have a nice array of levels-per-track in the
sequencer mapper that we just keep updated as we go along.
* The sequencer mapper code is getting grottier -- it's still a proof
of concept masquerading as something more. It should be reorganised
like the control block mmapper, with a separate class to hold the
data that the sequencer instantiates and writes and the GUI just
creates with a placement new.
Anyway, I don't have time today to do any more on this. So if anyone
else does, feel free.