From alsa-devel-owner@alsa.jcu.cz  Thu Feb 25 12:48:06 1999
Received: from entry.jcu.cz (IDENT:perex@entry.jcu.cz [160.217.1.111])
	by marvin.jcu.cz (8.9.1a/8.9.1) with SMTP id MAA21520;
	Thu, 25 Feb 1999 12:45:53 +0100
Date: Thu, 25 Feb 1999 12:45:53 +0100 (CET)
From: Jaroslav Kysela <perex@jcu.cz>
To: Paul Barton-Davis <pbd@op.net>
cc: alsa-devel@alsa.jcu.cz
Subject: Re: Instrument abstract layer 
In-Reply-To: <199902242004.PAA07486@renoir.op.net>
Message-ID: <Pine.LNX.3.96.990225123513.6433B-100000@entry.jcu.cz>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

On Wed, 24 Feb 1999, Paul Barton-Davis wrote:

> is there a good reason for not using the same kind of model that
> several synths do ? Components:
> 
> 	SAMPLES - take up memory
> 	PATCHES - modulations of samples
> 	INSTRUMENTS - 1 or more patches combined
> 	PROGRAMS - instruments selected based on:
> 	               (1) note number and/or
> 		       (2) on velocity and/or
> 		       (3) other
> 
> another model:
> 
> 	SAMPLES - take up memory, 
> 	MULTISAMPLES - aliases for samples accessed via note number
> 	PATCHES - modulations of multisamples
> 	INSTRUMENTS - as above
> 	PROGRAMS as above		     
> 
> I'm not sure I've explained this clearly, but the idea works well for
> both my WaveFront card, my Kawai K5000S and several other devices I
> have or have written.

The instrument abstraction layer will cover only a basic access to
instruments (in you example to PROGRAMS). I don't want design some
universal instrument format. This isn't possible.

I only need to design some unique identifiers for these instruments.
These identifiers must be accessible over standard MIDI events (program
change, bank change and note-key for the drum channel).

Other information (groups of patches and samples) will be specific for
the lowlevel driver (or hardware). I don't know if the sequencer must
cover with some universal way to control of these things. For
example things like sample (wave) sharing must be done in the lowlevel
driver.

I want basicaly from ALSA instrument interface:

	1) unique instrument identification
		(MIDI: cluster, emulation, bank, program, note-key)
		(Otherwise: cluster, bank, program)
	2) instrument download to the synthesizer
	3) instrument download from the synthesizer
	4) access to list of instruments in the synthesizer

						Jaroslav

-----
Jaroslav Kysela <perex@jcu.cz>
Academic Computer Centre, University of South Bohemia
Branisovska 31, C. Budejovice, CZ-370 05 Czech Republic


