> On 4/11/2012 8:35 PM, Tom Breton (Tehom) wrote:
>> Here's a long shot, but easily tested: Does it depend on whether the
>> "bank" and "program" boxes on Instrument parameters are checked? Does
>> it either cause the same problem for "fixed" or fix it for "auto"?
>
> This has no effect. I tried every possible combination (pretty sure).
Thanks, Ted.
>> I just looked over ChannelManager again and that is the only thing I
>> can see that might plausibly interact with setup.
>
> Ok, I put a few SEQUENCER_DEBUG statements in
> ChannelManager::doInsert(). In every case, every time doInsert() is
> called, even the very first time, m_triedToGetChannel is found to be
> true which causes the routine to exit. Thus, the channel never gets
> allocated.
>
> Am I on the right track? Or is this behavior (m_triedToGetChannel
> always true in doInsert())correct?
It is usually true, and you wouldn't see it false unless you did something
obvious like moving a segment across tracks. We allocate and set it true
at map time except for muted tracks so we don't waste channels on them.
Right track in general. m_channel.validChannel() would reveal more.
DEBUG_CHANNEL_ALLOCATOR in AllocateChannels.cpp should reveal at least
whether we're trying to get a channel and failing, or not trying.
It sounds very much like it doesn't have a valid channel so it doesn't try
to play.
Here's the main thing that's puzzling me: The channel allocation logic
shouldn't vary by setup; at least, I was sure it didn't and I just don't
see anything I missed. It initially creates channels; that shouldn't vary
by MIDI instrument, it's just "for (int i = 0; i < 16; ++i)" . At that
point ISTM nothing can vary by setup, given that one has a MIDI instrument
at all.
So what happens afterwards? There are two ways channel intervals get
removed: Fixed instruments grab entire channels, and segments (et al) grab
intervals.
How could that vary by setup? A savefile could remove fixed instruments'
channels from the pool, but then you'd have fixed instruments, which
works.
Can they do this allocation wrong based on setup? The segments allocation
logic shouldn't vary by setup. The nitty-gritty is entirely inside
AllocateChannels, which knows nothing about setup. Mappers ask for
intervals under fairly simple logic which we've already looked at.
We've ruled out the bank/program Instrument parameters. That leaves
SoftSynth, but then you wouldn't see auto/fixed in instrument parameters.
And that leaves nothing varying by setup - except obviously there's
something. So something I "know" about this is just wrong.
Just to be sure, you have got my DSSI fix, right? fluidsynth-dssi + no
fix would explain the missing notes but should be ruled out because you
see auto/fixed in instrument parameters.
Another long shot hypothesis: You said earlier that you had set
instruments to fixed and that worked. On the document you're working on,
how many instruments are fixed? Rather, how many channels do they occupy?
If it's close to 15, that would spend all the channels on fixed
instruments, and the allocator would be empty, so auto instruments would
get nothing which would give the behavior you see.
Tom Breton (Tehom)
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel