On 01/19/2013 01:56 PM, Tom Breton (Tehom) wrote:

> I was curious about how it ever miraculously squeezed into 16 channels, so
> I looked at it in RG 11.11.  11.11 can apparently accomplish this miracle,
> but only because we are messing up reading MIDI programs in.

Right.  I deleted a whole lot of discussion blather.  Here's the point:

Splitting on silence isn't a real solution, and let's not bother with 
any of that.  The real problem is the file obviously needs more than 16 
channels.  (Don't know how I missed that.  BLIND!  The name is DuMass.)

When you load this file in MusE, you have to go down the Ports column 
and take all the stuff from the second bank of 16 channels and route it 
to a different port from the first bank.  You have to do this manually 
in MusE too.

We don't expose ports to the user directly.  Instead, we have devices.

The way we need to handle this kind of scenario is something like:

1. Determine that more than 16 channels are needed
2. Create a new device in the Studio for every multiple of 16 required
3. Leave user to make the devices point to something

We could determine 1 by noting the number of program changes at the 
start of the file on a given channel.  Three program changes on channel 
1, three banks of 16, make three devices, allocate the events to #1 on 
each device in series.  (I know your channel allocator might obviate the 
need to create all three devices, but it's simpler to go with a 
structure that could contain everything if all three banks of 16 
channels were full.)

What to do for these extra devices we'd have to create is a really ugly 
problem though.  Saving a lot of discussion, the gist of it is that it 
has the potential to clobber all the program and controller information.

I guess the only practical thing to do is:

1. Map the first 16 channels to device 0
2. If device n exists (starting with 1), map the next 16 to device n
3. If no device n, clone device 0 as n, map to n
4. GOTO 2 until everything is mapped to a device and all parts imported

It's not perfect, but since Rosegarden doesn't expose ports to the user 
directly, there's no other way to go without completely reworking 
Rosegarden, which we ain't gonna do at this late date.  This is all part 
of that "mostly a MIDI sequencer" thing.

I spent way more time than I had to allocate on this, so I have to leave 
it here and go.  If this whole idea isn't clear, please, let's discuss 
more before doing anything.
-- 
D. Michael McIntyre

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122912
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to