From mailserv@gaia.ucs.orst.edu Thu Nov 10 14:03:47 1994
Precedence: Bulk
Date: Thu Nov 10 11:58:51 PST 1994
From: gus-music-request@gaia.ucs.orst.edu (GUS Musician's Server)
Reply-To: gus-music@gaia.ucs.orst.edu (GUS Musician's Digest)
Subject: GUS Musician's Digest V10 #9

GUS Musician's Digest       Thu, 10 Nov 94 11:58 PST     Volume 10: Issue   9 

Today's Topics:
                            Bank switching
                          Extracting samples
                     GUS Musician's Digest V10 #8
                        Upgrade to MAX offer?
              Using lots of patches with a sequencer II

Standard Info:
	- Meta-info about the GUS can be found at the end of the Digest.
	- Before you ask a question, please READ THE FAQ.

----------------------------------------------------------------------

Date: Thu, 10 Nov 94 09:35:07 EST
From: ivan@molson.ho.att.com (Ivan Strom)
Subject: Bank switching

My posting on bank loading has generated a couple of comments in the
last digest, where I suggested that if we, as users, can agree on a standard,
it would be easier to persuade sequencer authors to implement the standard.

What I am doing here is incorporating some of the received comments and
reorganizing the discussion into a set of issues as follows:

	1) Mapping CC0/CC32 into bank numbers
	2) Selection of drum channels
	3) Use of multiple banks
	4) Bank organization

Note these comments should only apply to tracks mapped to a GUS synthesizer
port, for those sequencers that can handle multiple output ports.
 ----------------------------------------------------------
Mapping CC0/CC32 into bank numbers:
Bank number is determined normally by (controller 0 * 128 + controller 32),
i.e. CC0 is MSB, CC32 is LSB, the standard MIDI bank select.  Since Roland
uses the reverse (controller 0 + 128 * controller 32) sequencer authors
should permit the user to select which convention they wish to use for their
sequences (since both formats are de-facto standards).  I would propose the
convention that if only one of CC0/CC32 were set, that the
bank number equal the value set in the single register.  I have also
proposed that for drum channel 10, if CC0/CC32 is unused, then a sequencer
may use a program change on channel 10 as the bank number (for consistency
with the many synths that choose a drumset based on program change).
Each track may have its own bank select (but see the limitation in section 3).
Since the sequencer (if it supports patch caching) will do a
midiOutCachePatches before playing a sequence, all patches are preloaded
(anticipated) before the sequence begins, rather than loaded on the fly
(the driver does NOT interpret CC0/CC32 - these are only interpreted by the
sequencer and converted to wBank arguments).
 ----------------------------------------------------------
Selection of drum channels:
I believe GUS only permits drums on channel 10.  One comment suggested
allowing drums on multiple channels, but these would need to be remapped
to channel 10 by the sequencer or midimapper.
 ----------------------------------------------------------
Use of multiple banks:
Unless Gravis has an undocumented way of doing this (Gravis - any comment),
you can only use 1 melodic bank and 1 percussive bank (with fallback to
bank 0 for patches not in the designated bank), since subsequent calls
to midiOutCachePatches reloads all patches in lpPatchArray from wBank
(i.e. the call appears to clear all patches, then reload).  This is a
limitation which can only be cleared by Gravis, or thru clever programming
techniques such as in PatchEze where patches get easily moved to bank 0.

Note that the current windows drivers DO support bankswitching,
but do not support incremental patch loading, thus only one bank
may be specified (with fallback to bank 0 for patches not in the
specified bank).  The melodic/drum banks are specified via the wBank
argument of midiOutCachePatches and the wPatch argument of
midiOutCacheDrumPatches, not by direct interpretation of controllers 0/32
nor by interpretation of a channel 10 program change.
Thus, for example, a sequencer could call midiOutCachePatches with a bank
of 128 (127?) to get a MT-32 mapping if someone wrote the correct mapping
into ultrasnd.ini.

The problem is that a sequencer needs to know what bank to request.
If, for example, I ask for bank 128 on channel 1, but don't specify
a bank for channel 2 (or specify a different bank number), what should
the sequencer assume?  Even within a single channel, what should the
sequencer assume if the bank is changed in the middle of a piece?
Proposal: the first non-zero bank encountered for melodics becomes the
"controlling" bank, and is mapped into the wBank argument of the
midiOutCachePatches call.  (Similar logic for channel 10 drums).

Note a caution in the above:  If a sequence has the following:
       Track 1: Channel 1, Bank 0, ProgCh 0
       Track 2: Channel 2, Bank 128, ProgCh 32
then the progch 0 will be loaded out of bank 128, not bank 0, if progch 0
is defined in bank 128.  There is no way to avoid this with the present driver,
because of unimplemented incremental patch loading.

Robert Coleman suggests that "maybe something should be thrown in, between
the Gus driver , and the sequencer, or whatever uses the patches: a kind of
Patch Daemon, who has the smarts and so-forth to manage the Gus in the Best
Possible Way.  After all, sequencer authors can't be expected to become
Master Of All Soundcards' Peculiar Operating Rules, now can they !!!??!!"

This could in fact be possible, written as a windows pseudo-midi device
(just as midimapper is a pseudo-midi device which in turn invokes another
device).  The user could set their sequencer to talk to the pseudo-device,
which would sit between the sequencer and the ultrasound.  Such a pseudo-device
might utilize a "temporary bank" (say bank 1024) for its own use, dynamically
constructing the contents of the "temporary bank" based on the initial
midiOutCachePatches call and subsequent interpretation of CC0/CC32, and
with calls to the actual driver to load from the "temporary bank".  This
could create song play delays, which however may be acceptable for some uses.

 ----------------------------------------------------------
Bank organization:
Banks 0-511 can be "standardized".  Suggest using GS bank numbers where
applicable.  E.g. bank 127 (Roland counts 1-128 etc., so then it would be
bank 128) is the MT-32 mapping 

Banks 512+, which we can call USER banks, can be song-specific.  These might
be used where necessary to load patches across multiple banks.

Albert Pauw suggest that the thing to do would to make a `standardized'
ULTRASND.INI file, containing the banks and patches. Every bank has its own
directory. Since he doesn't have some many Patches more than the
standard ones, how are we going to define the other patches?
Better (other instrument patches) like piano etc. can be used in
the different banks. Thinking about it, it would be nice to have
all banks on a CD-ROM. Ok, it takes some time to load them in
the GUS, but you can keep them together and everyone has the
same patches in the same banks.

My thanks to Albert Pauw and Robert Coleman for their first set of comments.
Perhaps after a couple of discussion iterations, we can use some kind of
"voting" mechanism to come to closure on a proposal.  Anyone know how to
to this?

					Ivan Strom

------------------------------

Date: Wed, 9 Nov 1994 14:25:17 -0500 (EST)
From: "K.S. Holly" <u8843389@muss.CIS.McMaster.CA>
Subject: Extracting samples

I know this is old news but I've only recently gotten into making music 
with the GUS.

How can I extract samples from midi files or mod files?

Oh, and one more question. If I was not going to be doing any sampling, 
is it worth is to take advantage of the 'upgrade to the MAX' offer?

All help appreciated.

Kevin

------------------------------

Date: Wed, 9 Nov 1994 14:22:23 -0800 (PST)
From: George!!! <gmontem@mercury.sfsu.edu>
Subject: Re: GUS Musician's Digest V10 #8

<EOT>

> Now, the thing to do would to make a `standardized' ULTRASND.INI
> file, containing the banks and patches. Every bank has its own
> directory. Since I don't have some many Patches more than the
> standard ones, how are we going to define the other patches?
> Better (other instrument patches) like piano etc. can be used in
> the different banks. Thinking about it, it would be nice to have
> all banks on a CD-ROM. Ok, it takes some time to load them in
> the GUS, but you can keep them together and everyone has the
> same patches in the same banks.

I vote YES for the "proposed" plan for bank switching.  I also had in 
mind that Advanced Gravis release a CD-ROM with patches for the extra 
banks.  Users would just install which banks they want to use to the hard 
disk, and the installer simply adds in the proper names to the 
ultrasnd.ini file.  That way, musicians can make better music, listeners 
would hear midi files more closely to what it was supposed to sound like 
(with the correct patches),  and makes another reason to buy a CD-ROM!  
Also, just as a joke, Advanced Gravis can make a chart on their sound 
card ads, with in big print, 300+ patches, compared to the other sound 
card's 196 patches.

Another change Gravis will have to make once this is proposed is a new 
Patch Manager.  The current one only displays one bank at a time.  It 
will not show patches used from other banks.

By the way, besides windows, playmidi will need to be capable of Bank 
Switching.   Hope a Bank switching standard for the GUS comes out soon.  

-= George!!! =-

------------------------------

Date: Wed, 9 Nov 1994 23:59:05 +0100 (MET)
From: BlackFunk <black@xs4all.nl>
Subject: Upgrade to MAX offer?

Someone recently wrote about a upgrade to MAX offer. I was considering 
selling my GUS and buying a GUS MAX so I was wondering if this offer is 
also possible in Europe (esp. the Netherlands).

ANy info is welcome

------------------------------

Date: Thu, 10 Nov 94 09:18:44 GMT
From: bhs@utep.eltn.utwente.nl (Thijs Bolhuis)
Subject: Re: Using lots of patches with a sequencer II

Yes it seems like a fine idea to get all the the patches available in 
a set of directories on a cd-rom. But what I really want is to get a 
more space efficient way to store all the patches. I don't want to 
fill up a complete patchbank in every directory. I would like to be 
able to add for every patch in a bank the path where to find it. So 
the Idea is put a default directory in the ultrasnd.ini for every 
bank and every patch in that bank which is not in the default 
directory set the path for that patch.




 --------------------------------------------------------------------
--
Thijs Bolhuis

email: t.bolhuis@el.utwente.nl
 --------------------------------------------------------------------
---

------------------------------

End of GUS Musician's Digest V10 #9
***********************************

To post to tomorrow's digest:                        <gus-music@mail.orst.edu>
To (un)subscribe or get help:                <gus-music-request@mail.orst.edu>
To contact a human (last resort):              <gus-music-owner@mail.orst.edu>

                       FTP Sites                     Archive Directories
                       ---------                     -------------------
Main N.American Site:  archive.orst.edu              pub/packages/gravis
                       wuarchive.wustl.edu           systems/ibmpc/ultrasound
Main Asian Site:       nctuccca.edu.tw               PC/ultrasound
Main European Site:    src.doc.ic.ac.uk              packages/ultrasound
Main Australian Site:  ftp.mpx.com.au                /ultrasound/general
                                                     /ultrasound/submit
South African Site:    ftp.sun.ac.za                 /pub/packages/ultrasound
Submissions:           archive.epas.utoronto.ca      pub/pc/ultrasound/submit
Newly Validated Files: archive.epas.utoronto.ca      pub/pc/ultrasound

Mirrors:               garbo.uwasa.fi                mirror/ultrasound
                       ftp.st.nepean.uws.edu.au      pc/ultrasound
                       ftp.luth.se                   pub/msdos/ultrasound

                       Gopher Sites                  Menu directory
                       ------------                  --------------
Main Site:             src.doc.ic.ac.uk              packages/ultrasound

                       WWW Pages
                       ---------
Main Site:             http://www.cs.utah.edu/~debry/gus.html

Main European Site:    http://src.doc.ic.ac.uk/packages/ultrasound/
Main Australian Site:  http://ftp.mpx.com.au/archive/ultrasound/general/
                       http://ftp.mpx.com.au/archive/ultrasound/submit/
                       http://ftp.mpx.com.au/gravis.html
                       
Mirrors:               http://www.st.nepean.uws.edu.au/pub/pc/ultrasound/

MailServer For Archive Access: Email to <mail-server@nike.rz.uni-konstanz.de>
                               Email to <ftpmail@doc.ic.ac.uk>

New Submit Files Mailing List: Email to <listproc@uni-konstanz.de>
                         with content "subscribe epas-list <your-name-here>"

Hints:
      - Get the FAQ from the FTP sites or the request server.
      - Mail to <gus-music-request@mail.orst.edu> for info about other
	GUS related mailing lists (general use, programmers, etc.).


