fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Soundfont banks


From: David Henningsson
Subject: Re: [fluid-dev] Soundfont banks
Date: Wed, 11 Jul 2012 11:29:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

2012-07-10 22:26, jimmy skrev:
Oops, I hit "reply" instead of "reply all".  Trying again to post to the 
mailing list.


--- On Tue, 7/10/12, David Henningsson<address@hidden>  wrote:

In your emails, I sometimes have a hard time separating the
facts you provide from the opinions you also provide. This
might be part of why you feel you don't get an answer for
some of the stuff you say. Another is lack of time on my
part.
My opinions are my interpretation of the MIDI specs.  XG-mode does not break 
the MIDI specs in any way.  In fact, I think of it as one decent interpretation 
of the MIDI Specs, which handles 128x128 soundbanks.  Just that the XG-specs is 
hard to obtain, and is obsoleted by MIDI-2.  If there's any movement toward 
MIDI-2 in FluidSynth, I wouldn't care much at all with XG stuff.

The XG spec is the easy one to find:

http://web.archive.org/web/20060926124939/http://www.yamaha.co.uk/xg/reading/pdf/xg_spec.pdf

The GM1 and GM2 specs are AFAIK not available for free online, but can be bought from MMA:

http://www.midi.org/techspecs/gm.php

I have not bought these specs, and nobody in this community has either, which might also be part of the problem here. Maybe I should buy them - it might save us some discussions...

I don't know if GS specs are available at all, and if so, where you can find them.

Apart from GM1, GM2, XG and GS, I don't know of any other specification or standard, so I'm not sure exactly what you mean with "MIDI-1", "MIDI-2", or "Full MIDI specs" which you talk about below. Could you explain these three terms, where you find specifications for them, and so on?


You and Pedro seem to stick with only what you prefer with the Soundfont specs 
and GS-specs, both of which only deal with 128 soundbanks.

Again, I'm open to extending FluidSynth to load several soundfont files and place them at different places in the MSB/LSB address space, if we figure out a good scheme for how that would work. Let's start there.

I'm also open to extending the XG mode to make use of that feature, once that feature is complete.

Of course, I don't expect you to waste your time on XG-stuff if that's not your area of 
interest, or expertise.  I have done some homework with regarding to XG stuff and 
provided my patch(es) for my "observation" of the vairous XG implementations 
(via Yamaha hardware instrument tables).

No, I don't speak with any authority on XG, no I don't even have the official XG specs.  Does that make me 
"wrong"?  I doubt it.  People can look up the hardware manuals for Yamaha keyboards and find out if 
my "observation" and "interpretation" is way off-base, or not.  I also had references to 
some of those manual when I brought up the point in supporting my patch(es).

I don't mind figuring out a system for mapping several
soundfont files to different MSB's and LSB's, through some
kind for soundfont bank offset functionality. It is not
clear to me how that will work out in the different modes,
especially not in combination with drum channels, drum
presets and drum banks.
Which is why my patches only touch the XG-mode, it won't break GM, GS or any 
other modes.  It should work the same way MIDI and MIDI-2 allow hardwares to 
do, too.  But I'm not risking breaking MIDI and MIDI-2 stuff at the moment.  If 
other people have other ideas, or want to adopt the functions I use in XG mode 
for other modes, it's up to them.

It took me several years to read up and understand bit by bit the XG stuff, 
just because I deal with some Yamaha keyboard stuff, and want to work with 
XG-MIDI messages and XG-MIDI files.  It's also painful, because I can't find 
much info on XG-specs.  I can only peek at the various implementations via 
their numerous specific keyboard manuals.
Hopefully the above link to the XG specification will be helpful for you. It does contain some interesting information on bank selection and how to fall back if a current preset/bank is not available.

In fact, again my own opinion, I think that the MIDI-2 specs adopts the multi 
drum channels feature from the various XG implementations.  This particular 
feature doesn't clash with the original full MIDI specs at all, just brought 
forward a specific recommendation for implementing it.


But before we actually have that system figured out, patches
written and committed for how to do this, it does not make
sense to me to commit an XG bank selection patch that just
causes the total value (MSB*128 + LSB) to go out of range.
Especially when we have an mma mode that already does just
that, and is perfectly possible to use, if you desperately
want values that point nowhere.
With existing code, the MMA mode in the MSB handling completely ignored 
drum-channels.  I'm not well versed in the MMA arena, so I won't speak on that. 
 But for XG to piggy-back that specific code, it is broken for XG-drum channels.

Ok, fair point.

  That's what my patch in the MSB function tries to fix.

In other words, the MMA style is only partially working with regards to 
XG-mode, and currently that's short-circuited in the logical flow of the code 
so it doesn't handle it properly in XG-mode.


The General Midi (GM1) spec does not include bank selection
messages at all. Therefore all bank changes are ignored in
GM mode. That method is compliant with the General Midi
(GM1) spec, but maybe not "how you think things should
work".
Here you are either confused between GM and full MIDI specs, or you are 
bastardize the MIDI specs again.  I'm talking full MIDI specs which include CC0 
and CC32.  You are refering to the GM-mode, which is even tinier subset of the 
Soundfont specs, or GS specs.  GM-mode has something like one soundbank, and 
one drumbank, right?


As previously stated, the GM bank selection mode (i e,
ignore all bank selection messages) is compliant with the
GM1 spec. Please stop saying that it isn't.
I'm not talking about GM-mode, I'm talking full MIDI specs with CC0 and CC32 
support.  I'm not work talking about one soundbank, one drumset that GM-mode 
provides.


Patches are more likely to be accepted if we first agree on
what should be implemented.
Only if you realize GM-mode and full MIDI are like a drop of water compare to a 
cup of water.


As for your other email about what you think is wrong with
the current patch, let's get back to that when we have the
soundfont bank offset functionality in place.
Sure, do what you want.  I'm pointing out that the current code is wrong.  I also know 
that my patch is logically sound, but won't fix anything functionally at the moment.  But 
I'd rather having the correct code in place, instead of saying "we know the current 
code is wrong, but it doesn't make any difference, so we won't change the code".

Hey, if I won't be around, at least the correct code is in there, saving 
someone else the trouble of understanding the XG stuff and code it years down 
the road.  Heck it's been almost 1.5 years since I submitted that patch and 
nothing has been mentioned.  I might see Harley's Comet swing by before I see 
anything new in FluidSynth at this pace.

Jimmy






reply via email to

[Prev in Thread] Current Thread [Next in Thread]