Hi Will, CC'ing others...
> On Mon, 23 May 2016 16:20:39 -0400
> "Tim E. Real" <[email protected]> wrote:
>
> On Monday, May 23, 2016 6:56:48 PM EDT Will wrote:
>
> > Unfortunately Muse seems to choke if presented with very high levels
> > of these midi messages.
> > This is with yoshimi 1.3.9 as an LV2 plugin.
> Is it possible to send me the file?
> It would be important to use the actual file in question
> because there may be some weird interaction between
> notes and controllers for example, which might not
> show up in some other test file.
Oh yeah! Unbelievable, see below.
> Thanks! Built yoshimi master.
> Opened and played med file with current MusE git master.
> Yep, it sure seems to chug and stutter along.
> Having some difficulty playing, eh?
> > As a matter of interest, we convert several messages to pseudo CCs and
> > operate on them like that. Pitchwheel we convert to CC 1000, channel
> > pressure becomes CC 901 and key pressure is CC 900
> >
> > Also in Yoshimi->Settings->MIDI there is an option to log incoming CCs. >
> > This happens after this conversion and after NRPNs/Banks/Program have
> > been split out but before any real processing takes place so gives a good
> > idea of what Yoshimi thinks it's getting. It all looks rather a mess :(
>
> Will.
Will, mucho *thanks* for the tips, they saved time and were spot on.
I have /not/ committed yet, but I have fixed some problems locally:
1) My fault: We were composing the Pitch, Aftertouch and PolyAftertouch
messages wrong, causing the plugin to interpret /values/ as CC numbers,
causing rapidly changing random crap in the plugin. Ugly, yes Will.
This error crept in when I added LinuxVST support, and unfortunately
was propagated to LV2 support as well.
2) My fault, I think, sort of: When seeking the playhead cursor,
/redundant/ Program Changes were unfortunately being sent out
/all/ the time with each little movement. Since it seems yoshimi
takes a fair bit of time to switch patches, this slowdown was really
killing things. Note: Yoshimi seems to want to set the patch even
if it is redundant. Should it be ignored - or maybe that's intentional?
Will's test song plays and seeks just fine now :-)
3) Now, this is where things get *really* weird. During testing,
I played Will's midi parts with MDA Piano (or friends) instead of yoshimi.
Crashes immediately. Plays fine in Ardour and QTractor.
I have whittled Will's test song down to just one track (the first one)
containing just one part with just one controller graph: The Aftertouch.
No notes. Nothing but this one graph.
Still crashes!
I made my own part with hand-drawn similar wild-looking aftertouch graph.
No crash! I made several more controller graphs. No crash!
Will, what did I tell you, eh? "Weird interaction..." ;-)
Can you believe it? Only *your* aftertouch graph on MDA piano
causes this crash. Play the lottery today, my friend.
It is the mere /timing/ of your graph events triggering this, I think.
I have not committed my fixes for 1) and 2) because I am seeing
still /other/ crashes, so far at least with yoshimi. In stop mode,
when I change the Program on our midi strip, sometimes it crashes.
----------
OK, so first, I need to say what I've found:
I can stop the crash in 3) above by commenting out this line in :
LV2Synth::lv2audio_preProcessMidiPorts():
{
...
state->midiInPorts [j].buffer->resetBuffer(true);
...
}
I'm trying to investigate further but...
Andrew, it gets pretty scary from here. The evBufs are pretty complex
to understand, I wonder if you can offer any suggestions, as I dig deeper?
I will try to commit, and post my example song file in question, as well,
so that you will have proper aftertouch operation to observe this problem...
-----
OK, next I need all of your input here, folks!
While fixing 2) above, I revisited an old problem:
Midi supports High Bank, Low Bank, and Program.
But synthesizer plugin frameworks only support Bank and Program.
We support 128 banks using either the High Bank or Low Bank midi value.
(Oddly, I just noticed in our MESS Fluidsynth we use the High Bank
but in LV2 and all others we use the Low Bank. Hm, why did I leave it like
that... Maybe simple oversight when I added DSSI and LinuxVST support?
I'm am thinking of correcting this!)
So I want to /combine/ our midi High Bank and Low Bank values
into a 14-bit synth plugin Bank value, for a total of 16384 synth Banks.
But, now I see a problem.
Yoshimi supports High and Low Bank and can do very special things
with them separately, yet the LV2 plugin only supports Bank.
Question: Do you all think this is a good idea, combining H+L midi Bank
for 16384 total synth Banks?
Using Yoshimi as an example then, Will, how would you like me to combine
the midi High Bank and Low Bank values into a single Bank value?
Should I do it
(HBank << 7) + LBank (16384 consecutive values), or
(HBank << 8) + LBank (16384 values arranged as two 8-bit-wide 7-bit
midi High | Low Bank values)?
The DSSI specs and the LV2 specs (which are word-for-word identical)
on Program and Bank are kind of vague. We can use any values
but what plugin supports more than 128 Programs?
IIUC, I think Yoshimi does, right? Extended midi?
And how do we support that in a midi host?
I can play with bits moving them around to make any combination we desire,
but... there's no standard - for example should I take one bit from the midi
Low Bank and shift it into the synth Program to make 256 total synth
Programs? Or shift even more bits for 1024 synth Programs and so on?
Any input here from all is much appreciated!
Thanks.
Tim.
------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer